bikky 0.3.8 → 0.3.10

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.
Files changed (97) hide show
  1. package/README.md +21 -5
  2. package/dist/config.d.ts +6 -1
  3. package/dist/config.d.ts.map +1 -1
  4. package/dist/config.js +15 -0
  5. package/dist/config.js.map +1 -1
  6. package/dist/config.test.js +30 -0
  7. package/dist/config.test.js.map +1 -1
  8. package/dist/daemon/capture-policy.d.ts +1 -1
  9. package/dist/daemon/capture-policy.d.ts.map +1 -1
  10. package/dist/daemon/capture-policy.js +14 -9
  11. package/dist/daemon/capture-policy.js.map +1 -1
  12. package/dist/daemon/capture-policy.test.js +6 -4
  13. package/dist/daemon/capture-policy.test.js.map +1 -1
  14. package/dist/daemon/consolidation.d.ts.map +1 -1
  15. package/dist/daemon/consolidation.js +19 -12
  16. package/dist/daemon/consolidation.js.map +1 -1
  17. package/dist/daemon/entity-typing.test.js +1 -1
  18. package/dist/daemon/entity-typing.test.js.map +1 -1
  19. package/dist/daemon/episode-summary.js +1 -1
  20. package/dist/daemon/episode-summary.js.map +1 -1
  21. package/dist/daemon/extraction-quality.test.js +4 -4
  22. package/dist/daemon/extraction-quality.test.js.map +1 -1
  23. package/dist/daemon/extraction-rules.d.ts +8 -8
  24. package/dist/daemon/extraction-rules.d.ts.map +1 -1
  25. package/dist/daemon/extraction-rules.js +57 -14
  26. package/dist/daemon/extraction-rules.js.map +1 -1
  27. package/dist/daemon/extraction-rules.test.js +32 -12
  28. package/dist/daemon/extraction-rules.test.js.map +1 -1
  29. package/dist/daemon/extraction.d.ts +5 -1
  30. package/dist/daemon/extraction.d.ts.map +1 -1
  31. package/dist/daemon/extraction.js +56 -12
  32. package/dist/daemon/extraction.js.map +1 -1
  33. package/dist/daemon/extraction.test.js +31 -6
  34. package/dist/daemon/extraction.test.js.map +1 -1
  35. package/dist/daemon/qdrant.js +1 -1
  36. package/dist/daemon/qdrant.js.map +1 -1
  37. package/dist/daemon/qdrant.test.js +6 -6
  38. package/dist/daemon/qdrant.test.js.map +1 -1
  39. package/dist/daemon/relations.js +1 -1
  40. package/dist/daemon/relations.js.map +1 -1
  41. package/dist/daemon/relations.test.js +1 -1
  42. package/dist/daemon/relations.test.js.map +1 -1
  43. package/dist/daemon/session-index.js +1 -1
  44. package/dist/daemon/session-index.js.map +1 -1
  45. package/dist/daemon/session-summary.d.ts.map +1 -1
  46. package/dist/daemon/session-summary.js +4 -2
  47. package/dist/daemon/session-summary.js.map +1 -1
  48. package/dist/daemon/session-summary.test.js +2 -2
  49. package/dist/daemon/session-summary.test.js.map +1 -1
  50. package/dist/daemon/staleness.js +1 -1
  51. package/dist/daemon/staleness.js.map +1 -1
  52. package/dist/daemon/staleness.test.js +2 -2
  53. package/dist/daemon/staleness.test.js.map +1 -1
  54. package/dist/daemon/workstream-summary.js +1 -1
  55. package/dist/daemon/workstream-summary.js.map +1 -1
  56. package/dist/mcp/helpers.d.ts +39 -0
  57. package/dist/mcp/helpers.d.ts.map +1 -1
  58. package/dist/mcp/helpers.js +53 -0
  59. package/dist/mcp/helpers.js.map +1 -1
  60. package/dist/mcp/helpers.test.js +35 -35
  61. package/dist/mcp/helpers.test.js.map +1 -1
  62. package/dist/mcp/index.js +1 -1
  63. package/dist/mcp/index.js.map +1 -1
  64. package/dist/mcp/taxonomy.d.ts +54 -54
  65. package/dist/mcp/taxonomy.d.ts.map +1 -1
  66. package/dist/mcp/taxonomy.js +162 -143
  67. package/dist/mcp/taxonomy.js.map +1 -1
  68. package/dist/mcp/taxonomy.test.js +38 -22
  69. package/dist/mcp/taxonomy.test.js.map +1 -1
  70. package/dist/mcp/tools.d.ts.map +1 -1
  71. package/dist/mcp/tools.integration.itest.js +4 -4
  72. package/dist/mcp/tools.integration.itest.js.map +1 -1
  73. package/dist/mcp/tools.js +129 -50
  74. package/dist/mcp/tools.js.map +1 -1
  75. package/dist/mcp/tools.test.js +159 -23
  76. package/dist/mcp/tools.test.js.map +1 -1
  77. package/dist/prompts/brief.d.ts +2 -2
  78. package/dist/prompts/brief.d.ts.map +1 -1
  79. package/dist/prompts/brief.js +5 -7
  80. package/dist/prompts/brief.js.map +1 -1
  81. package/dist/prompts/distill.js +3 -3
  82. package/dist/prompts/extraction.d.ts.map +1 -1
  83. package/dist/prompts/extraction.js +70 -31
  84. package/dist/prompts/extraction.js.map +1 -1
  85. package/dist/prompts/prompts.test.js +4 -4
  86. package/dist/prompts/prompts.test.js.map +1 -1
  87. package/dist/provenance/actor.d.ts +17 -0
  88. package/dist/provenance/actor.d.ts.map +1 -0
  89. package/dist/provenance/actor.js +82 -0
  90. package/dist/provenance/actor.js.map +1 -0
  91. package/dist/provenance/actor.test.d.ts +2 -0
  92. package/dist/provenance/actor.test.d.ts.map +1 -0
  93. package/dist/provenance/actor.test.js +49 -0
  94. package/dist/provenance/actor.test.js.map +1 -0
  95. package/dist/render.test.js +4 -4
  96. package/dist/render.test.js.map +1 -1
  97. package/package.json +4 -1
@@ -1 +1 @@
1
- {"version":3,"file":"taxonomy.test.js","sourceRoot":"","sources":["../../src/mcp/taxonomy.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taxonomy.test.js","sourceRoot":"","sources":["../../src/mcp/taxonomy.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAwOzE,wBAAgB,aAAa,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CAo7ClD"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAiQzE,wBAAgB,aAAa,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CA4/ClD"}
@@ -91,14 +91,14 @@ describe("mcp/tools — Qdrant integration", { skip: !enabled }, () => {
91
91
  it("inserts two distinct facts", async () => {
92
92
  const r1 = JSON.parse(textOf(await invoke("memory_store", {
93
93
  content: "Qdrant Cloud free tier provides 1GB storage with no credit card required",
94
- category: "infrastructure",
94
+ category: "engineering",
95
95
  entities: ["qdrant", "qdrant-cloud"],
96
96
  })));
97
97
  assert.equal(r1.action, "inserted");
98
98
  fact1Id = r1.fact_id;
99
99
  const r2 = JSON.parse(textOf(await invoke("memory_store", {
100
100
  content: "OpenAI text-embedding-3-small produces 1536-dimensional vectors",
101
- category: "infrastructure",
101
+ category: "engineering",
102
102
  entities: ["openai", "embeddings"],
103
103
  })));
104
104
  assert.equal(r2.action, "inserted");
@@ -108,7 +108,7 @@ describe("mcp/tools — Qdrant integration", { skip: !enabled }, () => {
108
108
  it("reinforces on exact content-hash match", async () => {
109
109
  const r = JSON.parse(textOf(await invoke("memory_store", {
110
110
  content: "Qdrant Cloud free tier provides 1GB storage with no credit card required",
111
- category: "infrastructure",
111
+ category: "engineering",
112
112
  entities: ["qdrant"],
113
113
  })));
114
114
  assert.equal(r.action, "reinforced");
@@ -119,7 +119,7 @@ describe("mcp/tools — Qdrant integration", { skip: !enabled }, () => {
119
119
  // Paraphrase of fact 1 — same meaning, different wording.
120
120
  const r = JSON.parse(textOf(await invoke("memory_store", {
121
121
  content: "Qdrant Cloud's free plan offers 1GB of storage and does not require a credit card",
122
- category: "infrastructure",
122
+ category: "engineering",
123
123
  entities: ["qdrant"],
124
124
  })));
125
125
  // Either reinforced (preferred — proves the 0.92 threshold) or inserted
@@ -1 +1 @@
1
- {"version":3,"file":"tools.integration.itest.js","sourceRoot":"","sources":["../../src/mcp/tools.integration.itest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.integration.itest.js","sourceRoot":"","sources":["../../src/mcp/tools.integration.itest.ts"],"names":[],"mappings":"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"}
package/dist/mcp/tools.js CHANGED
@@ -4,16 +4,19 @@
4
4
  import crypto from "node:crypto";
5
5
  import { z } from "zod";
6
6
  import { STALENESS_DAYS, THRESHOLD_DUPLICATE, THRESHOLD_RELATED, QDRANT_INDEXES, categoryValues, categoryEnumDescription, domainValues, domainEnumDescription, kindValues, kindEnumDescription, memorySubtypeValues, memorySubtypeEnumDescription, sourceValues, sourceEnumDescription, DEFAULT_CATEGORY, DEFAULT_DOMAIN, DEFAULT_KIND, DEFAULT_SOURCE, categoryForMemorySubtype, layerForMemorySubtype, normalizeCategory, normalizeDomain, normalizeKind, validateMemorySubtype, } from "./taxonomy.js";
7
- import { contentHash, daysSince, lastActivityDate, computeCombinedScore, buildFilter, formatFact, MEMORY_RECALL_EXCLUDED_KINDS, } from "./helpers.js";
7
+ import { contentHash, daysSince, lastActivityDate, computeCombinedScore, buildFilter, formatFact, structuredFact, MEMORY_RECALL_EXCLUDED_KINDS, } from "./helpers.js";
8
8
  import { ready, qdrantUrl, qdrantApiKey, setupError, setQdrantUrl, setQdrantApiKey, setReady, getCollection, log, embed, getEmbeddingConfig, qdrantReq, ensureCollection, qdrantUpsert, qdrantSearch, qdrantScroll, qdrantSetPayload, qdrantGetPoints, } from "./api.js";
9
9
  import { saveConfig, loadConfig, EXTRACTION_HEALTH_PATH } from "../config.js";
10
10
  import { existsSync, readFileSync } from "node:fs";
11
11
  import { inspectWatcherPaths, formatIssue, repairSuspiciousWatcherPaths } from "../daemon/watcher-health.js";
12
+ import { normalizeActorId, resolveActorIdentity } from "../provenance/actor.js";
12
13
  import { addRedactionPayload, combineRedactions, redactStorageText, } from "../privacy/redaction.js";
13
14
  // ---------------------------------------------------------------------------
14
15
  // Runtime state
15
16
  // ---------------------------------------------------------------------------
16
17
  const NUDGE_INTERVAL_MS = 10 * 60 * 1000;
18
+ const MEMORY_RECALL_DEFAULT_LIMIT = 10;
19
+ const MEMORY_RECALL_MAX_LIMIT = 50;
17
20
  let lastStoreTime = Date.now();
18
21
  let heartbeatCount = 0;
19
22
  // ---------------------------------------------------------------------------
@@ -25,9 +28,11 @@ function nowISO() {
25
28
  function newId() {
26
29
  return crypto.randomUUID();
27
30
  }
28
- function resolveScope(workspaceId, includeLegacyWorkspace = false) {
31
+ function resolveScope(workspaceId, includeLegacyWorkspace = false, actorId) {
32
+ const resolved = workspaceId?.trim() || process.env.BIKKY_WORKSPACE?.trim() || undefined;
29
33
  return {
30
- workspaceId: workspaceId?.trim() || undefined,
34
+ workspaceId: resolved,
35
+ actorId: normalizeActorId(actorId),
31
36
  includeLegacy: includeLegacyWorkspace,
32
37
  };
33
38
  }
@@ -38,11 +43,21 @@ function scopedFilter(scope, extra = {}) {
38
43
  includeLegacyWorkspace: scope.includeLegacy,
39
44
  });
40
45
  }
41
- function addWorkspacePayload(payload, scope) {
46
+ function addWorkspacePayload(payload, scope, actor) {
42
47
  if (scope.workspaceId)
43
48
  payload["workspace_id"] = scope.workspaceId;
44
- if (scope.actorId)
45
- payload["actor_id"] = scope.actorId;
49
+ const actorId = actor?.actor_id ?? scope.actorId;
50
+ if (actorId)
51
+ payload["actor_id"] = actorId;
52
+ if (actor?.actor_label) {
53
+ const metadata = payload["metadata"] && typeof payload["metadata"] === "object" && !Array.isArray(payload["metadata"])
54
+ ? payload["metadata"]
55
+ : {};
56
+ metadata["actor_label"] = actor.actor_label;
57
+ if (actor.source)
58
+ metadata["actor_source"] = actor.source;
59
+ payload["metadata"] = metadata;
60
+ }
46
61
  }
47
62
  async function getPointForWorkspaceWrite(factId, _scope) {
48
63
  const existing = await qdrantGetPoints([factId]);
@@ -88,12 +103,19 @@ function buildMemoryNudge() {
88
103
  // session typically produces. The agent picks the best fit.
89
104
  return `🧠 Memory nudge: No memory_store calls in ${mins} minutes. ` +
90
105
  "Reflect on what's worth persisting:\n" +
91
- " • infrastructurenew services, ports, configs touched?\n" +
92
- " • decisionsarchitectural choices made (with rationale)?\n" +
93
- " • observationdebugging findings, gotchas, workarounds?\n" +
94
- " • projectswork-in-progress, blockers, completions?\n" +
106
+ " • engineeringcodebase maps, architecture, infra, ops, troubleshooting?\n" +
107
+ " • productrequirements, decisions, workflows, roadmap, metrics, market insight?\n" +
108
+ " • humanpreferences, owners, working agreements, durable activity events?\n" +
109
+ " • systemsession, episode, workstream, or quality-rollup memory?\n" +
95
110
  "If yes, call memory_store now so future sessions inherit the knowledge.";
96
111
  }
112
+ function clampRecallLimit(limit) {
113
+ const rawLimit = limit ?? MEMORY_RECALL_DEFAULT_LIMIT;
114
+ const integerLimit = Math.trunc(rawLimit);
115
+ if (!Number.isFinite(integerLimit))
116
+ return MEMORY_RECALL_DEFAULT_LIMIT;
117
+ return Math.min(Math.max(integerLimit, 1), MEMORY_RECALL_MAX_LIMIT);
118
+ }
97
119
  /**
98
120
  * Entity-graph traversal for memory_recall.
99
121
  */
@@ -108,7 +130,7 @@ async function graphTraversal(primaryResults, limit, scope) {
108
130
  }
109
131
  }
110
132
  if (primaryEntities.size === 0)
111
- return [];
133
+ return { points: [] };
112
134
  const relatedEntities = new Set();
113
135
  for (const entity of primaryEntities) {
114
136
  const outgoingFilter = scopedFilter(scope, { excludeKinds: MEMORY_RECALL_EXCLUDED_KINDS }) ?? { must: [] };
@@ -129,7 +151,7 @@ async function graphTraversal(primaryResults, limit, scope) {
129
151
  for (const e of primaryEntities)
130
152
  relatedEntities.delete(e);
131
153
  if (relatedEntities.size === 0)
132
- return [];
154
+ return { points: [] };
133
155
  const relatedFacts = [];
134
156
  const maxPerEntity = Math.max(2, Math.floor(limit / relatedEntities.size));
135
157
  for (const entity of relatedEntities) {
@@ -144,12 +166,10 @@ async function graphTraversal(primaryResults, limit, scope) {
144
166
  if (relatedFacts.length >= limit)
145
167
  break;
146
168
  }
147
- return relatedFacts
148
- .slice(0, Math.ceil(limit / 2))
149
- .map((r) => formatFact(r));
169
+ return { points: relatedFacts.slice(0, Math.ceil(limit / 2)) };
150
170
  }
151
171
  catch (e) {
152
- return [`(graph traversal failed: ${e instanceof Error ? e.message : String(e)})`];
172
+ return { points: [], error: e instanceof Error ? e.message : String(e) };
153
173
  }
154
174
  }
155
175
  // ---------------------------------------------------------------------------
@@ -162,6 +182,7 @@ export function registerTools(mcp) {
162
182
  "Use this when memory tools return a 'setup_required' error, or once at session start if you're not sure bikky is wired up. Reports which credentials are missing and includes onboarding instructions if anything is incomplete.",
163
183
  "Read-only — safe to call any time.",
164
184
  ].join(" "), {}, async () => {
185
+ const activeWorkspace = process.env.BIKKY_WORKSPACE?.trim() || null;
165
186
  const status = {
166
187
  ready,
167
188
  qdrant_url: !!qdrantUrl,
@@ -172,6 +193,7 @@ export function registerTools(mcp) {
172
193
  embedding_provider: getEmbeddingConfig().provider,
173
194
  embedding_model: getEmbeddingConfig().model,
174
195
  embedding_dimensions: getEmbeddingConfig().dimensions,
196
+ ...(activeWorkspace ? { active_workspace: activeWorkspace } : {}),
175
197
  ...(setupError ? { setup_error: setupError } : {}),
176
198
  };
177
199
  const missing = status["missing"];
@@ -328,7 +350,7 @@ export function registerTools(mcp) {
328
350
  mcp.tool("memory_store", [
329
351
  "Persist one atomic fact to long-term memory.",
330
352
  "Call this whenever you learn something a future session would need: a service detail, a decision rationale, a workaround, a user preference, an ownership fact, a task-resume pointer. One fact per call — split compound observations into separate calls.",
331
- "Dedup is automatic (content hash + vector similarity), so you do NOT need to recall first. The tool returns one of: inserted (new fact), reinforced (exact or near-duplicate found — counters bumped), or — if there are similar-but-different facts — a list of potential conflicts so you can decide whether to use 'supersedes'.",
353
+ "Dedup is automatic (content hash + vector similarity), so you do NOT need to recall first for deduplication. Recall first only when you intentionally need broader context to decide whether a new fact supersedes an older one. The tool returns one of: inserted (new fact), reinforced (exact or near-duplicate found — counters bumped), or — if there are similar-but-different facts — a list of potential conflicts so you can decide whether to use 'supersedes'.",
332
354
  "To create a typed edge between two entities at the same time, set the optional 'relation' field — no separate tool call needed.",
333
355
  "Do NOT use for ephemeral state (current cursor, in-flight todo). Use the harness task folder instead.",
334
356
  ].join(" "), {
@@ -339,6 +361,7 @@ export function registerTools(mcp) {
339
361
  kind: z.enum(kindValues()).default(DEFAULT_KIND).describe(kindEnumDescription()),
340
362
  memory_subtype: z.enum(memorySubtypeValues()).optional().describe(memorySubtypeEnumDescription()),
341
363
  workspace_id: z.string().optional().describe("Workspace namespace for team-shared memory. Omit to use the default workspace from config."),
364
+ actor_id: z.string().optional().describe("Stable actor/person/agent identity associated with this capture. Overrides identity config/env/Git-derived fallback for this write."),
342
365
  episode_id: z.string().optional().describe("Coherent activity-segment ID. Group facts captured during the same coherent task or transcript."),
343
366
  workstream_key: z.string().optional().describe("Durable continuity key for a long-running objective (survives across sessions)."),
344
367
  task_key: z.string().optional().describe("Task or issue key (e.g. GitHub issue number, JIRA key)."),
@@ -355,13 +378,14 @@ export function registerTools(mcp) {
355
378
  to: z.string().describe("Target entity (lowercase)."),
356
379
  }).optional().describe("Optional typed edge between two entities — created in the same call. Use this whenever the fact also expresses a relationship; no separate tool call needed."),
357
380
  metadata: z.record(z.string(), z.string()).optional().describe("Arbitrary key-value metadata. Stored with the fact and exact-match filterable via memory_recall.metadata_filter (all key/value pairs must match — AND logic)."),
358
- }, async ({ content, category, entities, domain, kind, memory_subtype, workspace_id, episode_id, workstream_key, task_key, repo, branch, review_status, source, confidence, importance, supersedes, relation, metadata, }) => {
381
+ }, async ({ content, category, entities, domain, kind, memory_subtype, workspace_id, actor_id, episode_id, workstream_key, task_key, repo, branch, review_status, source, confidence, importance, supersedes, relation, metadata, }) => {
359
382
  const guard = requireReady();
360
383
  if (guard)
361
384
  return guard;
362
385
  lastStoreTime = Date.now();
363
386
  const now = nowISO();
364
387
  const scope = resolveScope(workspace_id);
388
+ const actor = resolveActorIdentity({ actorId: actor_id, config: loadConfig() });
365
389
  const normalizedKind = normalizeKind(kind);
366
390
  let normalizedSubtype = null;
367
391
  try {
@@ -545,13 +569,13 @@ export function registerTools(mcp) {
545
569
  payload["repo"] = repo;
546
570
  if (branch)
547
571
  payload["branch"] = branch;
548
- if (review_status)
549
- payload["review_status"] = review_status;
550
- addWorkspacePayload(payload, scope);
551
- addRedactionPayload(payload, factRedactionSummary);
552
572
  if (metadata && Object.keys(metadata).length > 0) {
553
573
  payload["metadata"] = metadata;
554
574
  }
575
+ if (review_status)
576
+ payload["review_status"] = review_status;
577
+ addWorkspacePayload(payload, scope, actor);
578
+ addRedactionPayload(payload, factRedactionSummary);
555
579
  await qdrantUpsert(factId, vector, payload);
556
580
  // 7. Insert relation point if provided
557
581
  let relationId = null;
@@ -579,7 +603,7 @@ export function registerTools(mcp) {
579
603
  relation_type: sanitizedRelation.type.toLowerCase(),
580
604
  to_entity: sanitizedRelation.to.toLowerCase(),
581
605
  };
582
- addWorkspacePayload(relPayload, scope);
606
+ addWorkspacePayload(relPayload, scope, actor);
583
607
  addRedactionPayload(relPayload, relationRedactionSummary);
584
608
  await qdrantUpsert(relationId, relVector, relPayload);
585
609
  }
@@ -588,6 +612,8 @@ export function registerTools(mcp) {
588
612
  fact_id: factId,
589
613
  workspace_id: scope.workspaceId,
590
614
  };
615
+ if (actor.actor_id)
616
+ result["actor_id"] = actor.actor_id;
591
617
  if (relationId)
592
618
  result["relation_id"] = relationId;
593
619
  if (redactionSummary.redacted)
@@ -608,9 +634,10 @@ export function registerTools(mcp) {
608
634
  "Three main uses:",
609
635
  " 1. Session-start briefing — broad query like 'session briefing: user preferences, active projects, recent decisions'.",
610
636
  " 2. Per-prompt contextual recall — focused query derived from what the user just asked.",
611
- " 3. Pre-store conflict check — recall similar facts before storing, so you can use 'supersedes' if the new fact replaces an older one.",
637
+ " 3. Conflict/replacement check — recall similar facts when you suspect new information may supersede an older fact. Deduplication during memory_store is automatic.",
612
638
  "Combine the natural-language query with structured filters (category, domain, entity, date range, metadata) for tighter results.",
613
639
  "If you have a known entity name and want everything about it, prefer memory_entity. For 'what does X own/use?' style questions, prefer memory_relations.",
640
+ `By default output is human-readable text. Use output_format=json for machine-parseable results with separate results and related arrays. Default limit is ${MEMORY_RECALL_DEFAULT_LIMIT}; maximum effective limit is ${MEMORY_RECALL_MAX_LIMIT}.`,
614
641
  ].join("\n"), {
615
642
  query: z.string().describe("Natural-language description of what you're looking for. Embedded and matched semantically — full sentences work better than keyword lists."),
616
643
  category: z.string().optional().describe("Filter by category (same vocabulary as memory_store.category). Optional."),
@@ -618,6 +645,7 @@ export function registerTools(mcp) {
618
645
  kind: z.string().optional().describe("Filter by kind: fact, summary, distilled, relation. Optional. Telemetry is excluded by default."),
619
646
  memory_subtype: z.string().optional().describe("Filter by memory subtype (must be valid for the chosen kind). Optional."),
620
647
  workspace_id: z.string().optional().describe("Filter to facts in this workspace namespace. Omit to use the default workspace from config."),
648
+ actor_id: z.string().optional().describe("Filter to facts captured by or associated with this stable actor identity. Optional."),
621
649
  include_legacy_workspace: z.boolean().optional().describe("Backwards-compatibility flag: also include legacy facts that have no workspace_id. Default false. Only set this if you suspect pre-migration data is missing from results."),
622
650
  entity: z.string().optional().describe("Restrict to facts mentioning this entity (case-insensitive). For full entity context prefer memory_entity."),
623
651
  episode_id: z.string().optional().describe("Filter by coherent episode ID."),
@@ -628,15 +656,18 @@ export function registerTools(mcp) {
628
656
  review_status: z.string().optional().describe("Filter by review lifecycle status (candidate / reviewed / approved / rejected)."),
629
657
  since: z.string().optional().describe("Only facts created on or after this ISO 8601 date or datetime."),
630
658
  until: z.string().optional().describe("Only facts created on or before this ISO 8601 date or datetime."),
631
- limit: z.number().optional().default(10).describe("Max results to return (default 10)."),
632
- graph_depth: z.number().optional().default(0).describe("Entity-graph traversal depth. 0 = vector search only (fast, default). 1 = also surface 1-hop entity-related facts (slower; use when the user asks 'what's connected to X?')."),
659
+ limit: z.number().optional().default(MEMORY_RECALL_DEFAULT_LIMIT).describe(`Max primary results to return (default ${MEMORY_RECALL_DEFAULT_LIMIT}, maximum ${MEMORY_RECALL_MAX_LIMIT}). Values above the maximum are clamped.`),
660
+ graph_depth: z.number().optional().default(0).describe("Entity-graph traversal depth. 0 = vector search only (fast, default). 1 = also surface up to ceil(limit / 2) extra 1-hop entity-related facts (slower; use when the user asks 'what's connected to X?'). In JSON output these are returned separately as related."),
661
+ output_format: z.enum(["text", "json"]).optional().default("text").describe("Response format. text = backward-compatible human-readable lines (default). json = parseable object with query, limit metadata, results, related, counts, and optional nudge."),
633
662
  metadata_filter: z.record(z.string(), z.string()).optional().describe("Exact-match filter on the metadata map stored with each fact. All key/value pairs must match (AND logic)."),
634
- }, async ({ query, category, domain, kind, memory_subtype, workspace_id, include_legacy_workspace, entity, episode_id, workstream_key, task_key, repo, branch, review_status, since, until, limit, graph_depth, metadata_filter, }) => {
663
+ }, async ({ query, category, domain, kind, memory_subtype, workspace_id, actor_id, include_legacy_workspace, entity, episode_id, workstream_key, task_key, repo, branch, review_status, since, until, limit, graph_depth, output_format, metadata_filter, }) => {
635
664
  const guard = requireReady();
636
665
  if (guard)
637
666
  return guard;
638
- const requestedLimit = limit ?? 10;
639
- const scope = resolveScope(workspace_id, include_legacy_workspace);
667
+ const requestedLimit = limit ?? MEMORY_RECALL_DEFAULT_LIMIT;
668
+ const effectiveLimit = clampRecallLimit(limit);
669
+ const actorFilter = resolveActorIdentity({ actorId: actor_id, useGitFallback: false });
670
+ const scope = resolveScope(workspace_id, include_legacy_workspace, actorFilter.actor_id);
640
671
  const redactedQuery = redactStorageText(query);
641
672
  const vector = await embed(redactedQuery.text);
642
673
  const normalizedKind = kind ? normalizeKind(kind) : undefined;
@@ -669,27 +700,64 @@ export function registerTools(mcp) {
669
700
  metadata: metadata_filter,
670
701
  excludeKinds: MEMORY_RECALL_EXCLUDED_KINDS,
671
702
  });
672
- const results = await qdrantSearch(vector, filter, requestedLimit * 2);
703
+ const results = await qdrantSearch(vector, filter, effectiveLimit * 2);
673
704
  if (!results.result?.length) {
674
705
  const nudge = buildMemoryNudge();
706
+ if (output_format === "json") {
707
+ return { content: [{ type: "text", text: JSON.stringify({
708
+ query: redactedQuery.text,
709
+ requested_limit: requestedLimit,
710
+ effective_limit: effectiveLimit,
711
+ max_limit: MEMORY_RECALL_MAX_LIMIT,
712
+ limit_clamped: effectiveLimit !== requestedLimit,
713
+ graph_depth: graph_depth ?? 0,
714
+ result_count: 0,
715
+ related_count: 0,
716
+ results: [],
717
+ related: [],
718
+ ...(nudge ? { nudge } : {}),
719
+ ...(redactedQuery.redacted ? { query_redaction: redactedQuery } : {}),
720
+ }, null, 2) }] };
721
+ }
675
722
  const text = nudge ? `No matching facts found.\n\n${nudge}` : "No matching facts found.";
676
723
  return { content: [{ type: "text", text }] };
677
724
  }
678
725
  const ranked = results.result
679
726
  .map((r) => ({ ...r, _combinedScore: computeCombinedScore(r) }))
680
727
  .sort((a, b) => b._combinedScore - a._combinedScore)
681
- .slice(0, requestedLimit);
728
+ .slice(0, effectiveLimit);
682
729
  const lines = ranked.map((r) => formatFact(r));
730
+ let related = { points: [] };
683
731
  if ((graph_depth ?? 0) >= 1) {
684
- const relatedLines = await graphTraversal(ranked, requestedLimit, scope);
685
- if (relatedLines.length > 0) {
732
+ related = await graphTraversal(ranked, effectiveLimit, scope);
733
+ if (related.points.length > 0) {
686
734
  lines.push("", "── Related (1-hop) ──");
687
- lines.push(...relatedLines);
735
+ lines.push(...related.points.map((r) => formatFact(r)));
736
+ }
737
+ else if (related.error) {
738
+ lines.push("", `(graph traversal failed: ${related.error})`);
688
739
  }
689
740
  }
690
741
  const nudge = buildMemoryNudge();
691
742
  if (nudge)
692
743
  lines.push("", nudge);
744
+ if (output_format === "json") {
745
+ return { content: [{ type: "text", text: JSON.stringify({
746
+ query: redactedQuery.text,
747
+ requested_limit: requestedLimit,
748
+ effective_limit: effectiveLimit,
749
+ max_limit: MEMORY_RECALL_MAX_LIMIT,
750
+ limit_clamped: effectiveLimit !== requestedLimit,
751
+ graph_depth: graph_depth ?? 0,
752
+ result_count: ranked.length,
753
+ related_count: related.points.length,
754
+ results: ranked.map((r) => structuredFact(r)),
755
+ related: related.points.map((r) => structuredFact(r)),
756
+ ...(related.error ? { graph_error: related.error } : {}),
757
+ ...(nudge ? { nudge } : {}),
758
+ ...(redactedQuery.redacted ? { query_redaction: redactedQuery } : {}),
759
+ }, null, 2) }] };
760
+ }
693
761
  return { content: [{ type: "text", text: lines.join("\n") }] };
694
762
  });
695
763
  // ── memory_entity ───────────────────────────────────────────────────────
@@ -839,6 +907,7 @@ export function registerTools(mcp) {
839
907
  const now = nowISO();
840
908
  try {
841
909
  const scope = resolveScope(workspace_id);
910
+ const _actor = resolveActorIdentity({ config: loadConfig() });
842
911
  const existing = await getPointForWorkspaceWrite(fact_id, scope);
843
912
  if (existing.error) {
844
913
  return { content: [{ type: "text", text: JSON.stringify(existing.error, null, 2) }], isError: true };
@@ -882,6 +951,7 @@ export function registerTools(mcp) {
882
951
  const now = nowISO();
883
952
  try {
884
953
  const scope = resolveScope(workspace_id);
954
+ const _actor = resolveActorIdentity({ config: loadConfig() });
885
955
  const writable = await getPointForWorkspaceWrite(fact_id, scope);
886
956
  if (writable.error) {
887
957
  return { content: [{ type: "text", text: JSON.stringify(writable.error, null, 2) }], isError: true };
@@ -927,6 +997,7 @@ export function registerTools(mcp) {
927
997
  const now = nowISO();
928
998
  try {
929
999
  const scope = resolveScope(workspace_id);
1000
+ const actor = resolveActorIdentity({ config: loadConfig() });
930
1001
  const writable = await getPointForWorkspaceWrite(fact_id, scope);
931
1002
  if (writable.error) {
932
1003
  return { content: [{ type: "text", text: JSON.stringify(writable.error, null, 2) }], isError: true };
@@ -948,7 +1019,7 @@ export function registerTools(mcp) {
948
1019
  const redactedEvent = redactStorageText(eventContent);
949
1020
  const eventPayload = {
950
1021
  content: redactedEvent.text,
951
- category: "observations",
1022
+ category: categoryForMemorySubtype("feedback_event") ?? "system",
952
1023
  domain: "software_engineering",
953
1024
  kind: "telemetry",
954
1025
  memory_subtype: "feedback_event",
@@ -963,7 +1034,7 @@ export function registerTools(mcp) {
963
1034
  created_at: now,
964
1035
  updated_at: now,
965
1036
  };
966
- addWorkspacePayload(eventPayload, scope);
1037
+ addWorkspacePayload(eventPayload, scope, actor);
967
1038
  addRedactionPayload(eventPayload, redactedEvent);
968
1039
  try {
969
1040
  const eventVector = await embed(redactedEvent.text);
@@ -1002,6 +1073,7 @@ export function registerTools(mcp) {
1002
1073
  const now = nowISO();
1003
1074
  try {
1004
1075
  const scope = resolveScope(workspace_id);
1076
+ const actor = resolveActorIdentity({ config: loadConfig() });
1005
1077
  const target = await getPointForWorkspaceWrite(fact_id, scope);
1006
1078
  if (target.error) {
1007
1079
  return { content: [{ type: "text", text: JSON.stringify(target.error, null, 2) }], isError: true };
@@ -1013,7 +1085,7 @@ export function registerTools(mcp) {
1013
1085
  const redactedEvent = redactStorageText(eventContent);
1014
1086
  const eventPayload = {
1015
1087
  content: redactedEvent.text,
1016
- category: "observations",
1088
+ category: categoryForMemorySubtype("outcome_event") ?? "system",
1017
1089
  domain: "software_engineering",
1018
1090
  kind: "telemetry",
1019
1091
  memory_subtype: "outcome_event",
@@ -1028,7 +1100,7 @@ export function registerTools(mcp) {
1028
1100
  created_at: now,
1029
1101
  updated_at: now,
1030
1102
  };
1031
- addWorkspacePayload(eventPayload, scope);
1103
+ addWorkspacePayload(eventPayload, scope, actor);
1032
1104
  addRedactionPayload(eventPayload, redactedEvent);
1033
1105
  const eventVector = await embed(redactedEvent.text);
1034
1106
  await qdrantUpsert(eventId, eventVector, eventPayload);
@@ -1058,7 +1130,8 @@ export function registerTools(mcp) {
1058
1130
  task_key: z.string().optional().describe("Task or issue key (e.g. GitHub issue number, JIRA key)."),
1059
1131
  repo: z.string().optional().describe("Repository or project surface this summary relates to."),
1060
1132
  workspace_id: z.string().optional().describe("Workspace namespace. Omit to use the default from config."),
1061
- }, async ({ content, entities, episode_id, workstream_key, task_key, repo, workspace_id }) => {
1133
+ actor_id: z.string().optional().describe("Stable actor identity associated with this session summary. Overrides identity config/env/Git fallback."),
1134
+ }, async ({ content, entities, episode_id, workstream_key, task_key, repo, workspace_id, actor_id }) => {
1062
1135
  const guard = requireReady();
1063
1136
  if (guard)
1064
1137
  return guard;
@@ -1066,13 +1139,14 @@ export function registerTools(mcp) {
1066
1139
  const now = nowISO();
1067
1140
  try {
1068
1141
  const scope = resolveScope(workspace_id);
1142
+ const actor = resolveActorIdentity({ actorId: actor_id, config: loadConfig() });
1069
1143
  const normalizedEntities = (entities ?? []).map((e) => e.trim().toLowerCase()).filter(Boolean);
1070
1144
  const summaryId = newId();
1071
1145
  const redactedContent = redactStorageText(content);
1072
1146
  const vector = await embed(redactedContent.text);
1073
1147
  const payload = {
1074
1148
  content: redactedContent.text,
1075
- category: categoryForMemorySubtype("session_index") ?? "projects",
1149
+ category: categoryForMemorySubtype("session_index") ?? "system",
1076
1150
  domain: "software_engineering",
1077
1151
  kind: "summary",
1078
1152
  memory_subtype: "session_index",
@@ -1097,7 +1171,7 @@ export function registerTools(mcp) {
1097
1171
  payload["task_key"] = task_key;
1098
1172
  if (repo)
1099
1173
  payload["repo"] = repo;
1100
- addWorkspacePayload(payload, scope);
1174
+ addWorkspacePayload(payload, scope, actor);
1101
1175
  addRedactionPayload(payload, redactedContent);
1102
1176
  await qdrantUpsert(summaryId, vector, payload);
1103
1177
  return {
@@ -1105,6 +1179,7 @@ export function registerTools(mcp) {
1105
1179
  status: "summary_stored",
1106
1180
  summary_id: summaryId,
1107
1181
  workspace_id: scope.workspaceId,
1182
+ actor_id: actor.actor_id,
1108
1183
  }) }],
1109
1184
  };
1110
1185
  }
@@ -1124,7 +1199,8 @@ export function registerTools(mcp) {
1124
1199
  task_key: z.string().optional().describe("Task or issue key associated with this learning, if relevant."),
1125
1200
  repo: z.string().optional().describe("Repository or project surface this learning applies to."),
1126
1201
  workspace_id: z.string().optional().describe("Workspace namespace. Omit to use the default from config."),
1127
- }, async ({ content, entities, supersedes, task_key, repo, workspace_id }) => {
1202
+ actor_id: z.string().optional().describe("Stable actor identity associated with this distillation. Overrides identity config/env/Git fallback."),
1203
+ }, async ({ content, entities, supersedes, task_key, repo, workspace_id, actor_id }) => {
1128
1204
  const guard = requireReady();
1129
1205
  if (guard)
1130
1206
  return guard;
@@ -1132,6 +1208,7 @@ export function registerTools(mcp) {
1132
1208
  const now = nowISO();
1133
1209
  try {
1134
1210
  const scope = resolveScope(workspace_id);
1211
+ const actor = resolveActorIdentity({ actorId: actor_id, config: loadConfig() });
1135
1212
  const normalizedEntities = entities.map((e) => e.trim().toLowerCase()).filter(Boolean);
1136
1213
  const distilledId = newId();
1137
1214
  const redactedContent = redactStorageText(content);
@@ -1148,7 +1225,7 @@ export function registerTools(mcp) {
1148
1225
  }
1149
1226
  const payload = {
1150
1227
  content: redactedContent.text,
1151
- category: categoryForMemorySubtype("convention") ?? "observations",
1228
+ category: categoryForMemorySubtype("convention") ?? "engineering",
1152
1229
  domain: "software_engineering",
1153
1230
  kind: "distilled",
1154
1231
  memory_subtype: "convention",
@@ -1169,7 +1246,7 @@ export function registerTools(mcp) {
1169
1246
  payload["task_key"] = task_key;
1170
1247
  if (repo)
1171
1248
  payload["repo"] = repo;
1172
- addWorkspacePayload(payload, scope);
1249
+ addWorkspacePayload(payload, scope, actor);
1173
1250
  addRedactionPayload(payload, redactedContent);
1174
1251
  await qdrantUpsert(distilledId, vector, payload);
1175
1252
  return {
@@ -1178,6 +1255,7 @@ export function registerTools(mcp) {
1178
1255
  distilled_id: distilledId,
1179
1256
  supersedes: supersedes ?? null,
1180
1257
  workspace_id: scope.workspaceId,
1258
+ actor_id: actor.actor_id,
1181
1259
  }) }],
1182
1260
  };
1183
1261
  }
@@ -1273,6 +1351,7 @@ export function registerTools(mcp) {
1273
1351
  const correctionScope = origPayload?.workspace_id
1274
1352
  ? resolveScope(origPayload.workspace_id, false)
1275
1353
  : scope;
1354
+ const actor = resolveActorIdentity({ config: loadConfig() });
1276
1355
  const vector = await embed(redactedCorrected.text);
1277
1356
  const correctedId = crypto.randomUUID();
1278
1357
  const origCategory = normalizeCategory(origPayload?.category ?? DEFAULT_CATEGORY);
@@ -1302,7 +1381,7 @@ export function registerTools(mcp) {
1302
1381
  updated_at: now,
1303
1382
  metadata: { ...(origPayload?.metadata ?? {}), corrected_from: fact_id },
1304
1383
  };
1305
- addWorkspacePayload(correctedPayload, correctionScope);
1384
+ addWorkspacePayload(correctedPayload, correctionScope, actor);
1306
1385
  addRedactionPayload(correctedPayload, redactedCorrected);
1307
1386
  await qdrantUpsert(correctedId, vector, correctedPayload);
1308
1387
  await qdrantSetPayload([fact_id], {
@@ -1329,7 +1408,7 @@ export function registerTools(mcp) {
1329
1408
  const staleThreshold = new Date(Date.now() - STALENESS_DAYS * 86400000).toISOString();
1330
1409
  const scope = resolveScope();
1331
1410
  const staleFilter = scopedFilter(scope) ?? { must: [] };
1332
- staleFilter.must.push({ key: "category", match: { any: ["infrastructure", "projects", "decisions"] } });
1411
+ staleFilter.must.push({ key: "category", match: { any: ["engineering", "product", "human", "system"] } });
1333
1412
  staleFilter.should = [
1334
1413
  { key: "last_reinforced_at", range: { lte: staleThreshold } },
1335
1414
  { is_null: { key: "last_reinforced_at" } },
@@ -1354,10 +1433,10 @@ export function registerTools(mcp) {
1354
1433
  }
1355
1434
  }
1356
1435
  sections.push("🔍 Reflect: think about the LAST 10 minutes of work and answer in your head:\n" +
1357
- " 1. Did you touch a service, port, config, or file path you hadn't seen before?\n" +
1358
- " 2. Did you make a choice (library, pattern, approach) you'd want a future session to know about?\n" +
1359
- " 3. Did you hit an error and find a workaround?\n" +
1360
- " 4. Did the user state a preference or constraint?\n" +
1436
+ " 1. Did you touch engineering context: code, infra, ops, access, troubleshooting, or conventions?\n" +
1437
+ " 2. Did you capture product context: a requirement, decision, workflow, roadmap item, metric, or market insight?\n" +
1438
+ " 3. Did you learn human context: a preference, owner, working agreement, person profile, or durable activity event?\n" +
1439
+ " 4. Did the work produce system context: session, episode, workstream, recall, feedback, outcome, or rollup state?\n" +
1361
1440
  "If any answer is yes, call memory_store now — one atomic fact per item, with category/domain/entities.");
1362
1441
  return { content: [{ type: "text", text: sections.join("\n\n") }] };
1363
1442
  });