fleet-memory/hindsight-api-slim/hindsight_api/engine
Chris Bartholomew d38ecdb9ec
fix(billing): mark reflect's internal recall calls as internal (#972)
Reflect's tool functions (tool_search_observations, tool_recall) call
recall_async with the user's original request_context, which has
internal=False. The usage metering extension sees these as user-facing
recall operations and bills them separately — double-charging the
customer for recalls that are already included in the reflect operation
cost.

Fix: wrap request_context with dataclasses.replace(internal=True) before
passing to recall_async. This matches the pattern used by consolidation,
which already creates an internal RequestContext for its sub-operations.

The internal flag causes the metering extension to:
- Record the usage as "internal_recall" (tracked but not billed)
- Skip credit deduction entirely

Observed impact: a single reflect call was generating 2 extra billed
recall entries (one from tool_search_observations, one from tool_recall),
inflating the customer's recall token count by ~26 tokens per reflect.
2026-04-10 14:45:20 -04:00
..
consolidation fix(consolidation): improve observation quality with structured processing rules (#814) 2026-04-01 12:44:52 +02:00
directives feat: introduce hindsight-api-slim and hindsight-all-slim packages (#560) 2026-03-13 13:50:03 +01:00
parsers feat: introduce hindsight-api-slim and hindsight-all-slim packages (#560) 2026-03-13 13:50:03 +01:00
providers feat: add built-in llama.cpp LLM provider for local inference (#933) 2026-04-08 15:22:10 +02:00
reflect fix(billing): mark reflect's internal recall calls as internal (#972) 2026-04-10 14:45:20 -04:00
retain fix(retain): run _ann_seeds temp table inside a transaction (#954) 2026-04-10 18:36:03 +02:00
search feat: include occurred_end and mentioned_at in think-prompt fact serialization (#929) 2026-04-08 10:33:14 +02:00
storage feat: introduce hindsight-api-slim and hindsight-all-slim packages (#560) 2026-03-13 13:50:03 +01:00
__init__.py feat: introduce hindsight-api-slim and hindsight-all-slim packages (#560) 2026-03-13 13:50:03 +01:00
audit.py feat: add audit log for feature usage tracking (#717) 2026-03-27 09:52:03 +01:00
cross_encoder.py feat: add OpenRouter support for LLM, embeddings, and reranking (#930) 2026-04-08 11:24:21 +02:00
db_budget.py feat: introduce hindsight-api-slim and hindsight-all-slim packages (#560) 2026-03-13 13:50:03 +01:00
db_utils.py feat: introduce hindsight-api-slim and hindsight-all-slim packages (#560) 2026-03-13 13:50:03 +01:00
embeddings.py feat: add OpenRouter support for LLM, embeddings, and reranking (#930) 2026-04-08 11:24:21 +02:00
entity_resolver.py perf: 3-phase retain pipeline — fix deadlocks, cap temporal links, query-time entity expansion (#722) 2026-04-01 12:52:49 +02:00
interface.py fix(api): clear memories endpoint no longer deletes the bank profile (#837) 2026-04-01 18:34:39 +02:00
jina_mlx_reranker.py feat: introduce hindsight-api-slim and hindsight-all-slim packages (#560) 2026-03-13 13:50:03 +01:00
llm_interface.py feat: introduce hindsight-api-slim and hindsight-all-slim packages (#560) 2026-03-13 13:50:03 +01:00
llm_wrapper.py feat: add built-in llama.cpp LLM provider for local inference (#933) 2026-04-08 15:22:10 +02:00
memory_engine.py feat: add HINDSIGHT_API_DEFAULT_BANK_TEMPLATE env var (#966) 2026-04-10 16:41:28 +02:00
operation_metadata.py feat: introduce hindsight-api-slim and hindsight-all-slim packages (#560) 2026-03-13 13:50:03 +01:00
query_analyzer.py fix(query_analyzer): handle dateparser internal crashes gracefully (#893) 2026-04-07 09:26:27 +02:00
response_models.py fix(retain): preserve normalized experience fact types (#848) 2026-04-02 12:20:37 +02:00
task_backend.py fix(ci): resolve all CI failures (#847) 2026-04-02 17:17:42 +02:00
utils.py feat: introduce hindsight-api-slim and hindsight-all-slim packages (#560) 2026-03-13 13:50:03 +01:00