hippo-memory 1.31.0 → 1.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/dag.js CHANGED
@@ -79,53 +79,86 @@ export async function generateDagSummary(label, factContents, opts) {
79
79
  export async function buildDag(hippoRoot, facts, opts) {
80
80
  const result = { candidateClusters: 0, summariesCreated: 0, factsLinked: 0, rejected: 0 };
81
81
  const unparented = facts.filter((f) => f.dag_level === 1 && !f.dag_parent_id && f.tags.includes('extracted'));
82
- const clusters = clusterFacts(unparented);
83
- const eligibleClusters = clusters.filter((c) => c.members.length >= 3);
84
- result.candidateClusters = eligibleClusters.length;
85
- for (const cluster of eligibleClusters) {
86
- const summary = await generateDagSummary(cluster.label, cluster.members.map((m) => m.content), opts);
87
- if (!summary)
88
- continue;
89
- const memberCreatedAts = cluster.members.map((m) => m.created).sort();
90
- const summaryEntry = createMemory(summary, {
91
- layer: Layer.Semantic,
92
- tags: [...cluster.entityTags, 'dag-summary'],
93
- confidence: 'inferred',
94
- dag_level: 2,
95
- });
96
- // Schema v25: cache descendant_count + earliest/latest_at on the summary
97
- // row so DAG-aware recall (docs/plans/2026-05-05-dag-recall.md Task 2)
98
- // can reason about scope without walking the children.
99
- summaryEntry.descendant_count = cluster.members.length;
100
- summaryEntry.earliest_at = memberCreatedAts[0];
101
- summaryEntry.latest_at = memberCreatedAts[memberCreatedAts.length - 1];
102
- // AT1 (plan §3 containment): a refused LLM-synthesized summary skips
103
- // ONLY this cluster — the sleep cycle continues to the next one. The
104
- // member re-parenting writes below never run for a skipped cluster
105
- // (there is no summary id to parent them under).
106
- try {
107
- writeEntry(hippoRoot, summaryEntry);
108
- }
109
- catch (err) {
110
- if (err instanceof RejectedValueError) {
111
- result.rejected++;
112
- console.error(`[buildDag] cluster "${cluster.label}" skipped: summary matches a rejected value`);
82
+ // Hardening follow-up (mirrors consolidate.ts's mergeCandidatesByTenant,
83
+ // T1): partition unparented facts by tenantId BEFORE clustering so a
84
+ // cluster can never mix facts from different tenants into one
85
+ // LLM-synthesized summary. Map preserves insertion order, so
86
+ // single-tenant stores (every row 'default') get exactly one partition
87
+ // and iterate in the same order as before this fix — byte-identical
88
+ // behavior there.
89
+ const unparentedByTenant = new Map();
90
+ for (const fact of unparented) {
91
+ const bucket = unparentedByTenant.get(fact.tenantId);
92
+ if (bucket)
93
+ bucket.push(fact);
94
+ else
95
+ unparentedByTenant.set(fact.tenantId, [fact]);
96
+ }
97
+ for (const [factTenant, tenantFacts] of unparentedByTenant) {
98
+ const clusters = clusterFacts(tenantFacts);
99
+ const eligibleClusters = clusters.filter((c) => c.members.length >= 3);
100
+ result.candidateClusters += eligibleClusters.length;
101
+ for (const cluster of eligibleClusters) {
102
+ const summary = await generateDagSummary(cluster.label, cluster.members.map((m) => m.content), opts);
103
+ if (!summary)
113
104
  continue;
105
+ const memberCreatedAts = cluster.members.map((m) => m.created).sort();
106
+ // Every member of `cluster` shares factTenant by construction (the
107
+ // tenant partition above), so the summary lands in the same tenant
108
+ // as the facts it summarizes instead of always 'default'
109
+ // (memory.ts:535 defaults tenantId when the option is omitted).
110
+ const summaryEntry = createMemory(summary, {
111
+ layer: Layer.Semantic,
112
+ tags: [...cluster.entityTags, 'dag-summary'],
113
+ confidence: 'inferred',
114
+ dag_level: 2,
115
+ tenantId: factTenant,
116
+ });
117
+ // Schema v25: cache descendant_count + earliest/latest_at on the summary
118
+ // row so DAG-aware recall (docs/plans/2026-05-05-dag-recall.md Task 2)
119
+ // can reason about scope without walking the children.
120
+ summaryEntry.descendant_count = cluster.members.length;
121
+ summaryEntry.earliest_at = memberCreatedAts[0];
122
+ summaryEntry.latest_at = memberCreatedAts[memberCreatedAts.length - 1];
123
+ // AT1 (plan §3 containment): a refused LLM-synthesized summary skips
124
+ // ONLY this cluster — the sleep cycle continues to the next one. The
125
+ // member re-parenting writes below never run for a skipped cluster
126
+ // (there is no summary id to parent them under).
127
+ //
128
+ // The tombstone check itself is tenant-scoped for free: writeEntry ->
129
+ // writeEntryDbOnly -> upsertEntryRow calls
130
+ // checkRejectionGuard(db, entry.tenantId ?? 'default', ...)
131
+ // (store.ts:1172), reading tenantId off the entry being written. Now
132
+ // that summaryEntry carries factTenant instead of the implicit
133
+ // 'default', the guard consults that tenant's tombstones — no
134
+ // separate check needed here (unlike consolidate.ts's merge pass,
135
+ // which pre-checks via findRejectedValue because it writes through
136
+ // batchWriteAndDelete's bypassRejectionGuard path instead of
137
+ // writeEntry).
138
+ try {
139
+ writeEntry(hippoRoot, summaryEntry);
114
140
  }
115
- throw err;
116
- }
117
- result.summariesCreated++;
118
- for (const member of cluster.members) {
119
- const updated = { ...member, dag_parent_id: summaryEntry.id };
120
- writeEntry(hippoRoot, updated);
121
- result.factsLinked++;
141
+ catch (err) {
142
+ if (err instanceof RejectedValueError) {
143
+ result.rejected++;
144
+ console.error(`[buildDag] cluster "${cluster.label}" skipped: summary matches a rejected value`);
145
+ continue;
146
+ }
147
+ throw err;
148
+ }
149
+ result.summariesCreated++;
150
+ for (const member of cluster.members) {
151
+ const updated = { ...member, dag_parent_id: summaryEntry.id };
152
+ writeEntry(hippoRoot, updated);
153
+ result.factsLinked++;
154
+ }
155
+ // v0.30 / E3 — cancel the cascade of dirty-marks fired by member
156
+ // writeEntry calls (E2 hook on writeEntryDbOnly at store.ts:1214).
157
+ // The summary we just built IS fresh, no rebuild needed. Without this,
158
+ // E3 in the SAME sleep cycle would re-rebuild every new summary
159
+ // (2x LLM cost). plan-eng-r1 HIGH must-fix.
160
+ clearSummaryDirtyAfterBuild(hippoRoot, summaryEntry.id, summaryEntry.tenantId, 'buildDag');
122
161
  }
123
- // v0.30 / E3 — cancel the cascade of dirty-marks fired by member
124
- // writeEntry calls (E2 hook on writeEntryDbOnly at store.ts:1214).
125
- // The summary we just built IS fresh, no rebuild needed. Without this,
126
- // E3 in the SAME sleep cycle would re-rebuild every new summary
127
- // (2x LLM cost). plan-eng-r1 HIGH must-fix.
128
- clearSummaryDirtyAfterBuild(hippoRoot, summaryEntry.id, summaryEntry.tenantId, 'buildDag');
129
162
  }
130
163
  return result;
131
164
  }
@@ -139,7 +172,12 @@ export async function buildDag(hippoRoot, facts, opts) {
139
172
  *
140
173
  * Race-loser handling: applyRebuildResult's UPDATE WHERE includes
141
174
  * AND summary_dirty=1, so concurrent sleep's second writer returns
142
- * changed=false. Silent skip (neither rebuilt++ nor failed++).
175
+ * changed=false. Silent skip (neither rebuilt++ nor refused++ nor failed++).
176
+ *
177
+ * T4: applyRebuildResult returns { changed, refused } — a tombstone hit
178
+ * (rebuild content matches a previously-rejected value) increments
179
+ * `refused`, not `rebuilt`. Dirty still clears either way; only the stat
180
+ * split changed (docs/plans/2026-08-15-hardening-at1-followups.md T4).
143
181
  */
144
182
  export async function rebuildDirtySummaries(hippoRoot, opts) {
145
183
  const cap = opts.cap ?? 20;
@@ -149,6 +187,7 @@ export async function rebuildDirtySummaries(hippoRoot, opts) {
149
187
  const result = {
150
188
  attempted: queue.length,
151
189
  rebuilt: 0,
190
+ refused: 0,
152
191
  zeroChildSkipped: 0,
153
192
  failed: 0,
154
193
  capped,
@@ -167,7 +206,7 @@ export async function rebuildDirtySummaries(hippoRoot, opts) {
167
206
  const children = loadChildrenOfSummary(hippoRoot, summary.id, summary.tenantId);
168
207
  if (children.length === 0) {
169
208
  // Zero-child case: clear dirty + zero counts, no LLM call, no rebuild_count bump.
170
- const changed = applyRebuildResult(hippoRoot, summary, {
209
+ const { changed } = applyRebuildResult(hippoRoot, summary, {
171
210
  content: summary.content,
172
211
  descendant_count: 0,
173
212
  earliest_at: null,
@@ -178,7 +217,9 @@ export async function rebuildDirtySummaries(hippoRoot, opts) {
178
217
  });
179
218
  if (changed)
180
219
  result.zeroChildSkipped++;
181
- // changed=false → race lost / row vanished; silently skip
220
+ // changed=false → race lost / row vanished; silently skip. `refused`
221
+ // is always false here — applyRebuildResult only checks the
222
+ // tombstone when bumpRebuildCount is true (store.ts:3398).
182
223
  continue;
183
224
  }
184
225
  // Derive label from summary's existing entity tags (mirrors clusterFacts)
@@ -193,7 +234,7 @@ export async function rebuildDirtySummaries(hippoRoot, opts) {
193
234
  continue;
194
235
  }
195
236
  const childCreatedAts = children.map((c) => c.created).sort();
196
- const changed = applyRebuildResult(hippoRoot, summary, {
237
+ const { changed, refused } = applyRebuildResult(hippoRoot, summary, {
197
238
  content: newContent,
198
239
  descendant_count: children.length,
199
240
  earliest_at: childCreatedAts[0],
@@ -202,9 +243,14 @@ export async function rebuildDirtySummaries(hippoRoot, opts) {
202
243
  zeroChildren: false,
203
244
  actor: 'sleep',
204
245
  });
205
- if (changed)
246
+ if (refused) {
247
+ result.refused++;
248
+ }
249
+ else if (changed) {
206
250
  result.rebuilt++;
207
- // changed=false → race lost; not failure, not success, silently skip
251
+ }
252
+ // changed=false (refused also false) → race lost; not failure, not
253
+ // success, silently skip
208
254
  }
209
255
  catch (err) {
210
256
  // Per-summary failure isolation — one throw doesn't abort the queue.
package/dist/dag.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"dag.js","sourceRoot":"","sources":["../src/dag.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dag.js","sourceRoot":"","sources":["../src/dag.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../src/extract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAS,gBAAgB,EAAgB,MAAM,aAAa,CAAC;AAIjF,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE,gBAAgB,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CACxB;AAeD,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,aAAa,EAAE,CAAC,CAsD1B;AAID,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,aAAa,EAAE,GACrB,WAAW,EAAE,CAuCf"}
1
+ {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../src/extract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAS,gBAAgB,EAAgB,MAAM,aAAa,CAAC;AAIjF,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE,gBAAgB,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CACxB;AAeD,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,aAAa,EAAE,CAAC,CAsD1B;AAID,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,aAAa,EAAE,GACrB,WAAW,EAAE,CA6Cf"}
package/dist/extract.js CHANGED
@@ -80,6 +80,12 @@ export function storeExtractedFacts(hippoRoot, source, facts) {
80
80
  confidence: 'inferred',
81
81
  source: source.source,
82
82
  extracted_from: source.id,
83
+ // T1 executor check (2026-08-15 hardening pass): same defect as the
84
+ // consolidate.ts merge/trace passes — createMemory with no tenantId
85
+ // option stamps 'default' (memory.ts:535) regardless of the source
86
+ // entry's own tenant. Thread it through so extracted facts land in
87
+ // the same tenant as the episodic memory they were extracted from.
88
+ tenantId: source.tenantId,
83
89
  });
84
90
  // AT1 containment: a refusal is per-VALUE — one rejected fact must not
85
91
  // drop the rest of this batch. writeEntry has already audited the
@@ -1 +1 @@
1
- {"version":3,"file":"extract.js","sourceRoot":"","sources":["../src/extract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extract.js","sourceRoot":"","sources":["../src/extract.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG;AA4CH,kFAAkF;AAClF,wBAAgB,8BAA8B,IAAI,IAAI,CAErD;AAyBD,UAAU,UAAU;IAClB,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,UAAU,WAAW;IACnB,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C;AAED,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;AAExC;;;;;;;;;GASG;AACH,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA+jCD;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,UAAU,EACf,GAAG,CAAC,EAAE,UAAU,GACf,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CA2C7B;AAyBD;;;;;GAKG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAmBrC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG;AA4CH,kFAAkF;AAClF,wBAAgB,8BAA8B,IAAI,IAAI,CAErD;AAyBD,UAAU,UAAU;IAClB,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,UAAU,WAAW;IACnB,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C;AAED,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;AAExC;;;;;;;;;GASG;AACH,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAmkCD;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,UAAU,EACf,GAAG,CAAC,EAAE,UAAU,GACf,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CA2C7B;AAyBD;;;;;GAKG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAmBrC"}
@@ -406,7 +406,7 @@ async function executeTool(name, args, ctx) {
406
406
  const apiCtx = {
407
407
  hippoRoot,
408
408
  tenantId,
409
- actor: adminActor('mcp'),
409
+ actor: adminActor(ctx?.actor ?? 'mcp'),
410
410
  };
411
411
  // Route through api.recall for audit + (when requested) continuity block.
412
412
  // api.recall already applies the same default-deny / exact-match rules
@@ -510,7 +510,7 @@ async function executeTool(name, args, ctx) {
510
510
  // flag; ids below stay populated for outcome attribution.
511
511
  if (!isRecallBoostAblated()) {
512
512
  for (const entry of retrieved)
513
- writeEntry(hippoRoot, entry);
513
+ writeEntry(hippoRoot, entry, { actor: ctx?.actor ?? 'mcp' });
514
514
  }
515
515
  lastRecalledIds.set(resolveClientKey(ctx), retrieved.map((e) => e.id));
516
516
  // v0.33 / J1 — MCP per-pipeline anchoring detector. UNLIKE J3.2's
@@ -535,7 +535,7 @@ async function executeTool(name, args, ctx) {
535
535
  try {
536
536
  appendAuditEvent(dbForAudit, {
537
537
  tenantId,
538
- actor: 'mcp',
538
+ actor: ctx?.actor ?? 'mcp',
539
539
  op: 'recall_anchor_detected_memory_dominance',
540
540
  targetId: mcpAnchoringHint.memoryId,
541
541
  metadata: {
@@ -553,7 +553,7 @@ async function executeTool(name, args, ctx) {
553
553
  try {
554
554
  appendAuditEvent(dbForAudit, {
555
555
  tenantId,
556
- actor: 'mcp',
556
+ actor: ctx?.actor ?? 'mcp',
557
557
  op: 'recall_anchor_detected_query_repeat',
558
558
  targetId: mcpAnchoringHint.memoryId,
559
559
  metadata: { memory_id: mcpAnchoringHint.memoryId },
@@ -574,7 +574,7 @@ async function executeTool(name, args, ctx) {
574
574
  try {
575
575
  appendAuditEvent(dbForAudit, {
576
576
  tenantId,
577
- actor: 'mcp',
577
+ actor: ctx?.actor ?? 'mcp',
578
578
  op: 'recall_anchor_skipped_no_session',
579
579
  targetId: undefined,
580
580
  metadata: {
@@ -591,7 +591,8 @@ async function executeTool(name, args, ctx) {
591
591
  // v0.32 / J3.2 — auto-injection of reference-class baserate hint
592
592
  // when the query carries a forward-prediction phrase. Read from
593
593
  // apiResult.planningFallacyHint (already computed inside api.recall
594
- // with actor='mcp' threaded through ctx.actor.subject). The hint is
594
+ // with the caller identity threaded through ctx.actor.subject -
595
+ // auth-resolved actor under HTTP-MCP, 'mcp' for stdio). The hint is
595
596
  // pipeline-INVARIANT — same (hippoRoot, tenantId, query) inputs
596
597
  // produce the same hint regardless of which downstream search
597
598
  // pipeline (api.recall band vs physics/hybrid) renders the memory
@@ -627,7 +628,8 @@ async function executeTool(name, args, ctx) {
627
628
  // planningFallacyHint), this depends on MCP's OWN returned top-K and the
628
629
  // scope-filtered candidate pool (entries) it was drawn from, so MCP
629
630
  // computes its own hint here. Soft warning only. Gated by
630
- // HIPPO_AVAILABILITY=off; audit emission is pipeline-local (actor='mcp').
631
+ // HIPPO_AVAILABILITY=off; audit emission is pipeline-local (actor =
632
+ // auth-resolved ctx.actor under HTTP-MCP, 'mcp' for stdio).
631
633
  let mcpAvailabilityHint = null;
632
634
  if (process.env.HIPPO_AVAILABILITY !== 'off') {
633
635
  mcpAvailabilityHint = detectAvailabilityBias({
@@ -639,7 +641,7 @@ async function executeTool(name, args, ctx) {
639
641
  try {
640
642
  appendAuditEvent(dbForAudit, {
641
643
  tenantId,
642
- actor: 'mcp',
644
+ actor: ctx?.actor ?? 'mcp',
643
645
  op: 'recall_availability_detected',
644
646
  metadata: {
645
647
  recent_fraction: mcpAvailabilityHint.recentFraction,
@@ -751,7 +753,7 @@ async function executeTool(name, args, ctx) {
751
753
  const apiCtx = {
752
754
  hippoRoot,
753
755
  tenantId,
754
- actor: adminActor('mcp'),
756
+ actor: adminActor(ctx?.actor ?? 'mcp'),
755
757
  };
756
758
  const explicitScope = typeof args.scope === 'string' && args.scope.length > 0
757
759
  ? String(args.scope)
@@ -790,7 +792,7 @@ async function executeTool(name, args, ctx) {
790
792
  const apiCtx = {
791
793
  hippoRoot,
792
794
  tenantId,
793
- actor: adminActor('mcp'),
795
+ actor: adminActor(ctx?.actor ?? 'mcp'),
794
796
  };
795
797
  const r = apiDrillDown(apiCtx, summaryId, {
796
798
  ...(Number.isFinite(limit) && limit > 0 ? { limit } : {}),
@@ -826,7 +828,7 @@ async function executeTool(name, args, ctx) {
826
828
  const classTag = String(args.class_tag || '').trim();
827
829
  if (!classTag)
828
830
  return 'No class_tag provided. Usage: pass class_tag matching a class used in past predictions (e.g. "migration-effort").';
829
- const baserate = computePredictionBaserate(hippoRoot, tenantId, classTag, 'mcp');
831
+ const baserate = computePredictionBaserate(hippoRoot, tenantId, classTag, ctx?.actor ?? 'mcp');
830
832
  if (baserate.nClosed === 0) {
831
833
  return `No closed predictions in class "${classTag}" yet. Create one via hippo_predict (or 'hippo predict ...' CLI) and close it with hippo_predict_close once the actual outcome is known. Base rates need closed predictions with numeric actual_value to compute.`;
832
834
  }
@@ -854,14 +856,15 @@ async function executeTool(name, args, ctx) {
854
856
  tags.push('error');
855
857
  if (args.tag)
856
858
  tags.push(String(args.tag));
857
- // Route through api.ts so audit_log captures actor='mcp' uniformly with
858
- // CLI/REST. api.ts.remember writes the memory + audit row in one
859
- // transaction-friendly path; we re-read the entry to surface the
860
- // half-life used in the MCP human-readable response.
859
+ // Route through api.ts so audit_log captures the caller identity
860
+ // uniformly with CLI/REST: the auth-resolved ctx.actor under HTTP-MCP,
861
+ // 'mcp' for stdio (no ctx). api.ts.remember writes the memory + audit
862
+ // row in one transaction-friendly path; we re-read the entry to surface
863
+ // the half-life used in the MCP human-readable response.
861
864
  const apiCtx = {
862
865
  hippoRoot,
863
866
  tenantId,
864
- actor: adminActor('mcp'),
867
+ actor: adminActor(ctx?.actor ?? 'mcp'),
865
868
  };
866
869
  const result = apiRemember(apiCtx, {
867
870
  content: text,
@@ -895,13 +898,14 @@ async function executeTool(name, args, ctx) {
895
898
  const ids = lastRecalledIds.get(clientKey) ?? [];
896
899
  if (ids.length === 0)
897
900
  return 'No recent recalls to apply outcome to.';
898
- // Route through src/api.ts so audit_log captures actor='mcp' and
899
- // tenant scoping is enforced uniformly (same surface as recall/remember).
901
+ // Route through src/api.ts so audit_log captures the caller identity
902
+ // (auth-resolved ctx.actor under HTTP-MCP, 'mcp' for stdio) and tenant
903
+ // scoping is enforced uniformly (same surface as recall/remember).
900
904
  // outcome() also handles cross-tenant id skip silently.
901
905
  const apiCtx = {
902
906
  hippoRoot,
903
907
  tenantId,
904
- actor: adminActor('mcp'),
908
+ actor: adminActor(ctx?.actor ?? 'mcp'),
905
909
  };
906
910
  const { applied } = apiOutcome(apiCtx, ids, good);
907
911
  return `Applied ${good ? 'positive' : 'negative'} outcome to ${applied} memories`;
@@ -984,7 +988,7 @@ async function executeTool(name, args, ctx) {
984
988
  // flag; ids below stay populated for outcome attribution.
985
989
  if (!isRecallBoostAblated()) {
986
990
  for (const entry of retrieved)
987
- writeEntry(hippoRoot, entry);
991
+ writeEntry(hippoRoot, entry, { actor: ctx?.actor ?? 'mcp' });
988
992
  }
989
993
  lastRecalledIds.set(resolveClientKey(ctx), retrieved.map((e) => e.id));
990
994
  const rawSnapshot = loadActiveTaskSnapshot(hippoRoot, tenantId);
@@ -1059,7 +1063,7 @@ async function executeTool(name, args, ctx) {
1059
1063
  // AT1 (plan §3 containment): a refused lesson must not crash the
1060
1064
  // MCP learn call or lose the rest of the git log scan.
1061
1065
  try {
1062
- writeEntry(hippoRoot, entry);
1066
+ writeEntry(hippoRoot, entry, { actor: ctx?.actor ?? 'mcp' });
1063
1067
  }
1064
1068
  catch (err) {
1065
1069
  if (err instanceof RejectedValueError) {