bikky 0.3.8 → 0.3.9
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/README.md +21 -5
- package/dist/config.d.ts +6 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +15 -0
- package/dist/config.js.map +1 -1
- package/dist/config.test.js +30 -0
- package/dist/config.test.js.map +1 -1
- package/dist/daemon/capture-policy.d.ts +1 -1
- package/dist/daemon/capture-policy.d.ts.map +1 -1
- package/dist/daemon/capture-policy.js +14 -9
- package/dist/daemon/capture-policy.js.map +1 -1
- package/dist/daemon/capture-policy.test.js +6 -4
- package/dist/daemon/capture-policy.test.js.map +1 -1
- package/dist/daemon/consolidation.d.ts.map +1 -1
- package/dist/daemon/consolidation.js +19 -12
- package/dist/daemon/consolidation.js.map +1 -1
- package/dist/daemon/entity-typing.test.js +1 -1
- package/dist/daemon/entity-typing.test.js.map +1 -1
- package/dist/daemon/episode-summary.js +1 -1
- package/dist/daemon/episode-summary.js.map +1 -1
- package/dist/daemon/extraction-quality.test.js +4 -4
- package/dist/daemon/extraction-quality.test.js.map +1 -1
- package/dist/daemon/extraction-rules.d.ts +8 -8
- package/dist/daemon/extraction-rules.d.ts.map +1 -1
- package/dist/daemon/extraction-rules.js +57 -14
- package/dist/daemon/extraction-rules.js.map +1 -1
- package/dist/daemon/extraction-rules.test.js +32 -12
- package/dist/daemon/extraction-rules.test.js.map +1 -1
- package/dist/daemon/extraction.d.ts +5 -1
- package/dist/daemon/extraction.d.ts.map +1 -1
- package/dist/daemon/extraction.js +56 -12
- package/dist/daemon/extraction.js.map +1 -1
- package/dist/daemon/extraction.test.js +31 -6
- package/dist/daemon/extraction.test.js.map +1 -1
- package/dist/daemon/qdrant.test.js +6 -6
- package/dist/daemon/qdrant.test.js.map +1 -1
- package/dist/daemon/relations.js +1 -1
- package/dist/daemon/relations.js.map +1 -1
- package/dist/daemon/relations.test.js +1 -1
- package/dist/daemon/relations.test.js.map +1 -1
- package/dist/daemon/session-index.js +1 -1
- package/dist/daemon/session-index.js.map +1 -1
- package/dist/daemon/session-summary.d.ts.map +1 -1
- package/dist/daemon/session-summary.js +4 -2
- package/dist/daemon/session-summary.js.map +1 -1
- package/dist/daemon/session-summary.test.js +2 -2
- package/dist/daemon/session-summary.test.js.map +1 -1
- package/dist/daemon/staleness.js +1 -1
- package/dist/daemon/staleness.js.map +1 -1
- package/dist/daemon/staleness.test.js +2 -2
- package/dist/daemon/staleness.test.js.map +1 -1
- package/dist/daemon/workstream-summary.js +1 -1
- package/dist/daemon/workstream-summary.js.map +1 -1
- package/dist/mcp/helpers.d.ts +39 -0
- package/dist/mcp/helpers.d.ts.map +1 -1
- package/dist/mcp/helpers.js +53 -0
- package/dist/mcp/helpers.js.map +1 -1
- package/dist/mcp/helpers.test.js +35 -35
- package/dist/mcp/helpers.test.js.map +1 -1
- package/dist/mcp/index.js +1 -1
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/taxonomy.d.ts +54 -54
- package/dist/mcp/taxonomy.d.ts.map +1 -1
- package/dist/mcp/taxonomy.js +162 -143
- package/dist/mcp/taxonomy.js.map +1 -1
- package/dist/mcp/taxonomy.test.js +38 -22
- package/dist/mcp/taxonomy.test.js.map +1 -1
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.integration.itest.js +4 -4
- package/dist/mcp/tools.integration.itest.js.map +1 -1
- package/dist/mcp/tools.js +125 -49
- package/dist/mcp/tools.js.map +1 -1
- package/dist/mcp/tools.test.js +159 -23
- package/dist/mcp/tools.test.js.map +1 -1
- package/dist/prompts/brief.d.ts +2 -2
- package/dist/prompts/brief.d.ts.map +1 -1
- package/dist/prompts/brief.js +5 -7
- package/dist/prompts/brief.js.map +1 -1
- package/dist/prompts/distill.js +3 -3
- package/dist/prompts/extraction.d.ts.map +1 -1
- package/dist/prompts/extraction.js +70 -31
- package/dist/prompts/extraction.js.map +1 -1
- package/dist/prompts/prompts.test.js +4 -4
- package/dist/prompts/prompts.test.js.map +1 -1
- package/dist/provenance/actor.d.ts +17 -0
- package/dist/provenance/actor.d.ts.map +1 -0
- package/dist/provenance/actor.js +82 -0
- package/dist/provenance/actor.js.map +1 -0
- package/dist/provenance/actor.test.d.ts +2 -0
- package/dist/provenance/actor.test.d.ts.map +1 -0
- package/dist/provenance/actor.test.js +49 -0
- package/dist/provenance/actor.test.js.map +1 -0
- package/dist/render.test.js +4 -4
- package/dist/render.test.js.map +1 -1
- 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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"}
|
package/dist/mcp/tools.d.ts.map
CHANGED
|
@@ -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;
|
|
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;AAgQzE,wBAAgB,aAAa,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CA0/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: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EACL,YAAY,EACZ,eAAe,EACf,QAAQ,EACR,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,SAAS,GACV,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,OAAO,GACX,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,GAAG;IACrC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,UAAU,EAAE,CAAC,UAAU,CAAC;IAC1D,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,UAAU,EAAE,CAAC,cAAc,CAAC,CAAC;AAQrE,SAAS,cAAc;IACrB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC5C,MAAM,MAAM,GAAe;QACzB,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO;YAChC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC9B,CAAC;KACF,CAAC;IACF,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAC9B,CAAC;AAED,IAAI,QAA8B,CAAC;AACnC,IAAI,cAAsB,CAAC;AAE3B,SAAS,MAAM,CAAC,MAA0D;IACxE,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;AACvC,CAAC;AAED,KAAK,UAAU,MAAM,CAAC,IAAY,EAAE,IAA6B;IAC/D,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,kBAAkB,CAAC,CAAC;IAC5D,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;AACjB,CAAC;AAED,QAAQ,CAAC,gCAAgC,EAAE,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE;IAClE,MAAM,CAAC,KAAK,IAAI,EAAE;QAChB,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,CAAC;QACrD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,GAAG,CAAC,cAAc,CAAC;QAChE,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAErE,cAAc,GAAG,YAAY,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACxD,YAAY,CAAC,GAAG,CAAC,CAAC;QAClB,eAAe,CAAC,MAAM,CAAC,CAAC;QACxB,aAAa,CAAC,cAAc,CAAC,CAAC;QAE9B,aAAa,CAAC;YACZ,QAAQ,EAAE,GAAG,CAAC,SAAS,CAAC,QAAQ;YAChC,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC,QAAQ;YAC/B,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,KAAK;YAC1B,UAAU,EAAE,GAAG,CAAC,SAAS,CAAC,UAAU;YACpC,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC,OAAO;SAC9B,CAAC,CAAC;QAEH,MAAM,gBAAgB,CAAC,cAAc,CAAC,CAAC;QACvC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEf,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;QAC9B,aAAa,CAAC,IAAI,CAAC,MAAwD,CAAC,CAAC;QAC7E,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,KAAK,IAAI,EAAE;QACf,IAAI,CAAC;YACH,IAAI,cAAc,EAAE,CAAC;gBACnB,MAAM,SAAS,CAAC,QAAQ,EAAE,gBAAgB,cAAc,EAAE,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,QAAQ,CAAC,KAAK,CAAC,CAAC;YAChB,YAAY,CAAC,IAAI,CAAC,CAAC;YACnB,eAAe,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,mDAAmD;IACnD,IAAI,OAAe,CAAC;IACpB,IAAI,OAAe,CAAC;IAEpB,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;QAC1C,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,MAAM,CAAC,cAAc,EAAE;YACxD,OAAO,EAAE,0EAA0E;YACnF,QAAQ,EAAE,
|
|
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,10 @@ 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) {
|
|
29
32
|
return {
|
|
30
33
|
workspaceId: workspaceId?.trim() || undefined,
|
|
34
|
+
actorId: normalizeActorId(actorId),
|
|
31
35
|
includeLegacy: includeLegacyWorkspace,
|
|
32
36
|
};
|
|
33
37
|
}
|
|
@@ -38,11 +42,21 @@ function scopedFilter(scope, extra = {}) {
|
|
|
38
42
|
includeLegacyWorkspace: scope.includeLegacy,
|
|
39
43
|
});
|
|
40
44
|
}
|
|
41
|
-
function addWorkspacePayload(payload, scope) {
|
|
45
|
+
function addWorkspacePayload(payload, scope, actor) {
|
|
42
46
|
if (scope.workspaceId)
|
|
43
47
|
payload["workspace_id"] = scope.workspaceId;
|
|
44
|
-
|
|
45
|
-
|
|
48
|
+
const actorId = actor?.actor_id ?? scope.actorId;
|
|
49
|
+
if (actorId)
|
|
50
|
+
payload["actor_id"] = actorId;
|
|
51
|
+
if (actor?.actor_label) {
|
|
52
|
+
const metadata = payload["metadata"] && typeof payload["metadata"] === "object" && !Array.isArray(payload["metadata"])
|
|
53
|
+
? payload["metadata"]
|
|
54
|
+
: {};
|
|
55
|
+
metadata["actor_label"] = actor.actor_label;
|
|
56
|
+
if (actor.source)
|
|
57
|
+
metadata["actor_source"] = actor.source;
|
|
58
|
+
payload["metadata"] = metadata;
|
|
59
|
+
}
|
|
46
60
|
}
|
|
47
61
|
async function getPointForWorkspaceWrite(factId, _scope) {
|
|
48
62
|
const existing = await qdrantGetPoints([factId]);
|
|
@@ -88,12 +102,19 @@ function buildMemoryNudge() {
|
|
|
88
102
|
// session typically produces. The agent picks the best fit.
|
|
89
103
|
return `🧠 Memory nudge: No memory_store calls in ${mins} minutes. ` +
|
|
90
104
|
"Reflect on what's worth persisting:\n" +
|
|
91
|
-
" •
|
|
92
|
-
" •
|
|
93
|
-
" •
|
|
94
|
-
" •
|
|
105
|
+
" • engineering — codebase maps, architecture, infra, ops, troubleshooting?\n" +
|
|
106
|
+
" • product — requirements, decisions, workflows, roadmap, metrics, market insight?\n" +
|
|
107
|
+
" • human — preferences, owners, working agreements, durable activity events?\n" +
|
|
108
|
+
" • system — session, episode, workstream, or quality-rollup memory?\n" +
|
|
95
109
|
"If yes, call memory_store now so future sessions inherit the knowledge.";
|
|
96
110
|
}
|
|
111
|
+
function clampRecallLimit(limit) {
|
|
112
|
+
const rawLimit = limit ?? MEMORY_RECALL_DEFAULT_LIMIT;
|
|
113
|
+
const integerLimit = Math.trunc(rawLimit);
|
|
114
|
+
if (!Number.isFinite(integerLimit))
|
|
115
|
+
return MEMORY_RECALL_DEFAULT_LIMIT;
|
|
116
|
+
return Math.min(Math.max(integerLimit, 1), MEMORY_RECALL_MAX_LIMIT);
|
|
117
|
+
}
|
|
97
118
|
/**
|
|
98
119
|
* Entity-graph traversal for memory_recall.
|
|
99
120
|
*/
|
|
@@ -108,7 +129,7 @@ async function graphTraversal(primaryResults, limit, scope) {
|
|
|
108
129
|
}
|
|
109
130
|
}
|
|
110
131
|
if (primaryEntities.size === 0)
|
|
111
|
-
return [];
|
|
132
|
+
return { points: [] };
|
|
112
133
|
const relatedEntities = new Set();
|
|
113
134
|
for (const entity of primaryEntities) {
|
|
114
135
|
const outgoingFilter = scopedFilter(scope, { excludeKinds: MEMORY_RECALL_EXCLUDED_KINDS }) ?? { must: [] };
|
|
@@ -129,7 +150,7 @@ async function graphTraversal(primaryResults, limit, scope) {
|
|
|
129
150
|
for (const e of primaryEntities)
|
|
130
151
|
relatedEntities.delete(e);
|
|
131
152
|
if (relatedEntities.size === 0)
|
|
132
|
-
return [];
|
|
153
|
+
return { points: [] };
|
|
133
154
|
const relatedFacts = [];
|
|
134
155
|
const maxPerEntity = Math.max(2, Math.floor(limit / relatedEntities.size));
|
|
135
156
|
for (const entity of relatedEntities) {
|
|
@@ -144,12 +165,10 @@ async function graphTraversal(primaryResults, limit, scope) {
|
|
|
144
165
|
if (relatedFacts.length >= limit)
|
|
145
166
|
break;
|
|
146
167
|
}
|
|
147
|
-
return relatedFacts
|
|
148
|
-
.slice(0, Math.ceil(limit / 2))
|
|
149
|
-
.map((r) => formatFact(r));
|
|
168
|
+
return { points: relatedFacts.slice(0, Math.ceil(limit / 2)) };
|
|
150
169
|
}
|
|
151
170
|
catch (e) {
|
|
152
|
-
return [
|
|
171
|
+
return { points: [], error: e instanceof Error ? e.message : String(e) };
|
|
153
172
|
}
|
|
154
173
|
}
|
|
155
174
|
// ---------------------------------------------------------------------------
|
|
@@ -328,7 +347,7 @@ export function registerTools(mcp) {
|
|
|
328
347
|
mcp.tool("memory_store", [
|
|
329
348
|
"Persist one atomic fact to long-term memory.",
|
|
330
349
|
"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'.",
|
|
350
|
+
"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
351
|
"To create a typed edge between two entities at the same time, set the optional 'relation' field — no separate tool call needed.",
|
|
333
352
|
"Do NOT use for ephemeral state (current cursor, in-flight todo). Use the harness task folder instead.",
|
|
334
353
|
].join(" "), {
|
|
@@ -339,6 +358,7 @@ export function registerTools(mcp) {
|
|
|
339
358
|
kind: z.enum(kindValues()).default(DEFAULT_KIND).describe(kindEnumDescription()),
|
|
340
359
|
memory_subtype: z.enum(memorySubtypeValues()).optional().describe(memorySubtypeEnumDescription()),
|
|
341
360
|
workspace_id: z.string().optional().describe("Workspace namespace for team-shared memory. Omit to use the default workspace from config."),
|
|
361
|
+
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
362
|
episode_id: z.string().optional().describe("Coherent activity-segment ID. Group facts captured during the same coherent task or transcript."),
|
|
343
363
|
workstream_key: z.string().optional().describe("Durable continuity key for a long-running objective (survives across sessions)."),
|
|
344
364
|
task_key: z.string().optional().describe("Task or issue key (e.g. GitHub issue number, JIRA key)."),
|
|
@@ -355,13 +375,14 @@ export function registerTools(mcp) {
|
|
|
355
375
|
to: z.string().describe("Target entity (lowercase)."),
|
|
356
376
|
}).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
377
|
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, }) => {
|
|
378
|
+
}, 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
379
|
const guard = requireReady();
|
|
360
380
|
if (guard)
|
|
361
381
|
return guard;
|
|
362
382
|
lastStoreTime = Date.now();
|
|
363
383
|
const now = nowISO();
|
|
364
384
|
const scope = resolveScope(workspace_id);
|
|
385
|
+
const actor = resolveActorIdentity({ actorId: actor_id, config: loadConfig() });
|
|
365
386
|
const normalizedKind = normalizeKind(kind);
|
|
366
387
|
let normalizedSubtype = null;
|
|
367
388
|
try {
|
|
@@ -545,13 +566,13 @@ export function registerTools(mcp) {
|
|
|
545
566
|
payload["repo"] = repo;
|
|
546
567
|
if (branch)
|
|
547
568
|
payload["branch"] = branch;
|
|
548
|
-
if (review_status)
|
|
549
|
-
payload["review_status"] = review_status;
|
|
550
|
-
addWorkspacePayload(payload, scope);
|
|
551
|
-
addRedactionPayload(payload, factRedactionSummary);
|
|
552
569
|
if (metadata && Object.keys(metadata).length > 0) {
|
|
553
570
|
payload["metadata"] = metadata;
|
|
554
571
|
}
|
|
572
|
+
if (review_status)
|
|
573
|
+
payload["review_status"] = review_status;
|
|
574
|
+
addWorkspacePayload(payload, scope, actor);
|
|
575
|
+
addRedactionPayload(payload, factRedactionSummary);
|
|
555
576
|
await qdrantUpsert(factId, vector, payload);
|
|
556
577
|
// 7. Insert relation point if provided
|
|
557
578
|
let relationId = null;
|
|
@@ -579,7 +600,7 @@ export function registerTools(mcp) {
|
|
|
579
600
|
relation_type: sanitizedRelation.type.toLowerCase(),
|
|
580
601
|
to_entity: sanitizedRelation.to.toLowerCase(),
|
|
581
602
|
};
|
|
582
|
-
addWorkspacePayload(relPayload, scope);
|
|
603
|
+
addWorkspacePayload(relPayload, scope, actor);
|
|
583
604
|
addRedactionPayload(relPayload, relationRedactionSummary);
|
|
584
605
|
await qdrantUpsert(relationId, relVector, relPayload);
|
|
585
606
|
}
|
|
@@ -588,6 +609,8 @@ export function registerTools(mcp) {
|
|
|
588
609
|
fact_id: factId,
|
|
589
610
|
workspace_id: scope.workspaceId,
|
|
590
611
|
};
|
|
612
|
+
if (actor.actor_id)
|
|
613
|
+
result["actor_id"] = actor.actor_id;
|
|
591
614
|
if (relationId)
|
|
592
615
|
result["relation_id"] = relationId;
|
|
593
616
|
if (redactionSummary.redacted)
|
|
@@ -608,9 +631,10 @@ export function registerTools(mcp) {
|
|
|
608
631
|
"Three main uses:",
|
|
609
632
|
" 1. Session-start briefing — broad query like 'session briefing: user preferences, active projects, recent decisions'.",
|
|
610
633
|
" 2. Per-prompt contextual recall — focused query derived from what the user just asked.",
|
|
611
|
-
" 3.
|
|
634
|
+
" 3. Conflict/replacement check — recall similar facts when you suspect new information may supersede an older fact. Deduplication during memory_store is automatic.",
|
|
612
635
|
"Combine the natural-language query with structured filters (category, domain, entity, date range, metadata) for tighter results.",
|
|
613
636
|
"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.",
|
|
637
|
+
`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
638
|
].join("\n"), {
|
|
615
639
|
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
640
|
category: z.string().optional().describe("Filter by category (same vocabulary as memory_store.category). Optional."),
|
|
@@ -618,6 +642,7 @@ export function registerTools(mcp) {
|
|
|
618
642
|
kind: z.string().optional().describe("Filter by kind: fact, summary, distilled, relation. Optional. Telemetry is excluded by default."),
|
|
619
643
|
memory_subtype: z.string().optional().describe("Filter by memory subtype (must be valid for the chosen kind). Optional."),
|
|
620
644
|
workspace_id: z.string().optional().describe("Filter to facts in this workspace namespace. Omit to use the default workspace from config."),
|
|
645
|
+
actor_id: z.string().optional().describe("Filter to facts captured by or associated with this stable actor identity. Optional."),
|
|
621
646
|
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
647
|
entity: z.string().optional().describe("Restrict to facts mentioning this entity (case-insensitive). For full entity context prefer memory_entity."),
|
|
623
648
|
episode_id: z.string().optional().describe("Filter by coherent episode ID."),
|
|
@@ -628,15 +653,18 @@ export function registerTools(mcp) {
|
|
|
628
653
|
review_status: z.string().optional().describe("Filter by review lifecycle status (candidate / reviewed / approved / rejected)."),
|
|
629
654
|
since: z.string().optional().describe("Only facts created on or after this ISO 8601 date or datetime."),
|
|
630
655
|
until: z.string().optional().describe("Only facts created on or before this ISO 8601 date or datetime."),
|
|
631
|
-
limit: z.number().optional().default(
|
|
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?')."),
|
|
656
|
+
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.`),
|
|
657
|
+
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."),
|
|
658
|
+
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
659
|
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, }) => {
|
|
660
|
+
}, 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
661
|
const guard = requireReady();
|
|
636
662
|
if (guard)
|
|
637
663
|
return guard;
|
|
638
|
-
const requestedLimit = limit ??
|
|
639
|
-
const
|
|
664
|
+
const requestedLimit = limit ?? MEMORY_RECALL_DEFAULT_LIMIT;
|
|
665
|
+
const effectiveLimit = clampRecallLimit(limit);
|
|
666
|
+
const actorFilter = resolveActorIdentity({ actorId: actor_id, useGitFallback: false });
|
|
667
|
+
const scope = resolveScope(workspace_id, include_legacy_workspace, actorFilter.actor_id);
|
|
640
668
|
const redactedQuery = redactStorageText(query);
|
|
641
669
|
const vector = await embed(redactedQuery.text);
|
|
642
670
|
const normalizedKind = kind ? normalizeKind(kind) : undefined;
|
|
@@ -669,27 +697,64 @@ export function registerTools(mcp) {
|
|
|
669
697
|
metadata: metadata_filter,
|
|
670
698
|
excludeKinds: MEMORY_RECALL_EXCLUDED_KINDS,
|
|
671
699
|
});
|
|
672
|
-
const results = await qdrantSearch(vector, filter,
|
|
700
|
+
const results = await qdrantSearch(vector, filter, effectiveLimit * 2);
|
|
673
701
|
if (!results.result?.length) {
|
|
674
702
|
const nudge = buildMemoryNudge();
|
|
703
|
+
if (output_format === "json") {
|
|
704
|
+
return { content: [{ type: "text", text: JSON.stringify({
|
|
705
|
+
query: redactedQuery.text,
|
|
706
|
+
requested_limit: requestedLimit,
|
|
707
|
+
effective_limit: effectiveLimit,
|
|
708
|
+
max_limit: MEMORY_RECALL_MAX_LIMIT,
|
|
709
|
+
limit_clamped: effectiveLimit !== requestedLimit,
|
|
710
|
+
graph_depth: graph_depth ?? 0,
|
|
711
|
+
result_count: 0,
|
|
712
|
+
related_count: 0,
|
|
713
|
+
results: [],
|
|
714
|
+
related: [],
|
|
715
|
+
...(nudge ? { nudge } : {}),
|
|
716
|
+
...(redactedQuery.redacted ? { query_redaction: redactedQuery } : {}),
|
|
717
|
+
}, null, 2) }] };
|
|
718
|
+
}
|
|
675
719
|
const text = nudge ? `No matching facts found.\n\n${nudge}` : "No matching facts found.";
|
|
676
720
|
return { content: [{ type: "text", text }] };
|
|
677
721
|
}
|
|
678
722
|
const ranked = results.result
|
|
679
723
|
.map((r) => ({ ...r, _combinedScore: computeCombinedScore(r) }))
|
|
680
724
|
.sort((a, b) => b._combinedScore - a._combinedScore)
|
|
681
|
-
.slice(0,
|
|
725
|
+
.slice(0, effectiveLimit);
|
|
682
726
|
const lines = ranked.map((r) => formatFact(r));
|
|
727
|
+
let related = { points: [] };
|
|
683
728
|
if ((graph_depth ?? 0) >= 1) {
|
|
684
|
-
|
|
685
|
-
if (
|
|
729
|
+
related = await graphTraversal(ranked, effectiveLimit, scope);
|
|
730
|
+
if (related.points.length > 0) {
|
|
686
731
|
lines.push("", "── Related (1-hop) ──");
|
|
687
|
-
lines.push(...
|
|
732
|
+
lines.push(...related.points.map((r) => formatFact(r)));
|
|
733
|
+
}
|
|
734
|
+
else if (related.error) {
|
|
735
|
+
lines.push("", `(graph traversal failed: ${related.error})`);
|
|
688
736
|
}
|
|
689
737
|
}
|
|
690
738
|
const nudge = buildMemoryNudge();
|
|
691
739
|
if (nudge)
|
|
692
740
|
lines.push("", nudge);
|
|
741
|
+
if (output_format === "json") {
|
|
742
|
+
return { content: [{ type: "text", text: JSON.stringify({
|
|
743
|
+
query: redactedQuery.text,
|
|
744
|
+
requested_limit: requestedLimit,
|
|
745
|
+
effective_limit: effectiveLimit,
|
|
746
|
+
max_limit: MEMORY_RECALL_MAX_LIMIT,
|
|
747
|
+
limit_clamped: effectiveLimit !== requestedLimit,
|
|
748
|
+
graph_depth: graph_depth ?? 0,
|
|
749
|
+
result_count: ranked.length,
|
|
750
|
+
related_count: related.points.length,
|
|
751
|
+
results: ranked.map((r) => structuredFact(r)),
|
|
752
|
+
related: related.points.map((r) => structuredFact(r)),
|
|
753
|
+
...(related.error ? { graph_error: related.error } : {}),
|
|
754
|
+
...(nudge ? { nudge } : {}),
|
|
755
|
+
...(redactedQuery.redacted ? { query_redaction: redactedQuery } : {}),
|
|
756
|
+
}, null, 2) }] };
|
|
757
|
+
}
|
|
693
758
|
return { content: [{ type: "text", text: lines.join("\n") }] };
|
|
694
759
|
});
|
|
695
760
|
// ── memory_entity ───────────────────────────────────────────────────────
|
|
@@ -839,6 +904,7 @@ export function registerTools(mcp) {
|
|
|
839
904
|
const now = nowISO();
|
|
840
905
|
try {
|
|
841
906
|
const scope = resolveScope(workspace_id);
|
|
907
|
+
const _actor = resolveActorIdentity({ config: loadConfig() });
|
|
842
908
|
const existing = await getPointForWorkspaceWrite(fact_id, scope);
|
|
843
909
|
if (existing.error) {
|
|
844
910
|
return { content: [{ type: "text", text: JSON.stringify(existing.error, null, 2) }], isError: true };
|
|
@@ -882,6 +948,7 @@ export function registerTools(mcp) {
|
|
|
882
948
|
const now = nowISO();
|
|
883
949
|
try {
|
|
884
950
|
const scope = resolveScope(workspace_id);
|
|
951
|
+
const _actor = resolveActorIdentity({ config: loadConfig() });
|
|
885
952
|
const writable = await getPointForWorkspaceWrite(fact_id, scope);
|
|
886
953
|
if (writable.error) {
|
|
887
954
|
return { content: [{ type: "text", text: JSON.stringify(writable.error, null, 2) }], isError: true };
|
|
@@ -927,6 +994,7 @@ export function registerTools(mcp) {
|
|
|
927
994
|
const now = nowISO();
|
|
928
995
|
try {
|
|
929
996
|
const scope = resolveScope(workspace_id);
|
|
997
|
+
const actor = resolveActorIdentity({ config: loadConfig() });
|
|
930
998
|
const writable = await getPointForWorkspaceWrite(fact_id, scope);
|
|
931
999
|
if (writable.error) {
|
|
932
1000
|
return { content: [{ type: "text", text: JSON.stringify(writable.error, null, 2) }], isError: true };
|
|
@@ -948,7 +1016,7 @@ export function registerTools(mcp) {
|
|
|
948
1016
|
const redactedEvent = redactStorageText(eventContent);
|
|
949
1017
|
const eventPayload = {
|
|
950
1018
|
content: redactedEvent.text,
|
|
951
|
-
category: "
|
|
1019
|
+
category: categoryForMemorySubtype("feedback_event") ?? "system",
|
|
952
1020
|
domain: "software_engineering",
|
|
953
1021
|
kind: "telemetry",
|
|
954
1022
|
memory_subtype: "feedback_event",
|
|
@@ -963,7 +1031,7 @@ export function registerTools(mcp) {
|
|
|
963
1031
|
created_at: now,
|
|
964
1032
|
updated_at: now,
|
|
965
1033
|
};
|
|
966
|
-
addWorkspacePayload(eventPayload, scope);
|
|
1034
|
+
addWorkspacePayload(eventPayload, scope, actor);
|
|
967
1035
|
addRedactionPayload(eventPayload, redactedEvent);
|
|
968
1036
|
try {
|
|
969
1037
|
const eventVector = await embed(redactedEvent.text);
|
|
@@ -1002,6 +1070,7 @@ export function registerTools(mcp) {
|
|
|
1002
1070
|
const now = nowISO();
|
|
1003
1071
|
try {
|
|
1004
1072
|
const scope = resolveScope(workspace_id);
|
|
1073
|
+
const actor = resolveActorIdentity({ config: loadConfig() });
|
|
1005
1074
|
const target = await getPointForWorkspaceWrite(fact_id, scope);
|
|
1006
1075
|
if (target.error) {
|
|
1007
1076
|
return { content: [{ type: "text", text: JSON.stringify(target.error, null, 2) }], isError: true };
|
|
@@ -1013,7 +1082,7 @@ export function registerTools(mcp) {
|
|
|
1013
1082
|
const redactedEvent = redactStorageText(eventContent);
|
|
1014
1083
|
const eventPayload = {
|
|
1015
1084
|
content: redactedEvent.text,
|
|
1016
|
-
category: "
|
|
1085
|
+
category: categoryForMemorySubtype("outcome_event") ?? "system",
|
|
1017
1086
|
domain: "software_engineering",
|
|
1018
1087
|
kind: "telemetry",
|
|
1019
1088
|
memory_subtype: "outcome_event",
|
|
@@ -1028,7 +1097,7 @@ export function registerTools(mcp) {
|
|
|
1028
1097
|
created_at: now,
|
|
1029
1098
|
updated_at: now,
|
|
1030
1099
|
};
|
|
1031
|
-
addWorkspacePayload(eventPayload, scope);
|
|
1100
|
+
addWorkspacePayload(eventPayload, scope, actor);
|
|
1032
1101
|
addRedactionPayload(eventPayload, redactedEvent);
|
|
1033
1102
|
const eventVector = await embed(redactedEvent.text);
|
|
1034
1103
|
await qdrantUpsert(eventId, eventVector, eventPayload);
|
|
@@ -1058,7 +1127,8 @@ export function registerTools(mcp) {
|
|
|
1058
1127
|
task_key: z.string().optional().describe("Task or issue key (e.g. GitHub issue number, JIRA key)."),
|
|
1059
1128
|
repo: z.string().optional().describe("Repository or project surface this summary relates to."),
|
|
1060
1129
|
workspace_id: z.string().optional().describe("Workspace namespace. Omit to use the default from config."),
|
|
1061
|
-
|
|
1130
|
+
actor_id: z.string().optional().describe("Stable actor identity associated with this session summary. Overrides identity config/env/Git fallback."),
|
|
1131
|
+
}, async ({ content, entities, episode_id, workstream_key, task_key, repo, workspace_id, actor_id }) => {
|
|
1062
1132
|
const guard = requireReady();
|
|
1063
1133
|
if (guard)
|
|
1064
1134
|
return guard;
|
|
@@ -1066,13 +1136,14 @@ export function registerTools(mcp) {
|
|
|
1066
1136
|
const now = nowISO();
|
|
1067
1137
|
try {
|
|
1068
1138
|
const scope = resolveScope(workspace_id);
|
|
1139
|
+
const actor = resolveActorIdentity({ actorId: actor_id, config: loadConfig() });
|
|
1069
1140
|
const normalizedEntities = (entities ?? []).map((e) => e.trim().toLowerCase()).filter(Boolean);
|
|
1070
1141
|
const summaryId = newId();
|
|
1071
1142
|
const redactedContent = redactStorageText(content);
|
|
1072
1143
|
const vector = await embed(redactedContent.text);
|
|
1073
1144
|
const payload = {
|
|
1074
1145
|
content: redactedContent.text,
|
|
1075
|
-
category: categoryForMemorySubtype("session_index") ?? "
|
|
1146
|
+
category: categoryForMemorySubtype("session_index") ?? "system",
|
|
1076
1147
|
domain: "software_engineering",
|
|
1077
1148
|
kind: "summary",
|
|
1078
1149
|
memory_subtype: "session_index",
|
|
@@ -1097,7 +1168,7 @@ export function registerTools(mcp) {
|
|
|
1097
1168
|
payload["task_key"] = task_key;
|
|
1098
1169
|
if (repo)
|
|
1099
1170
|
payload["repo"] = repo;
|
|
1100
|
-
addWorkspacePayload(payload, scope);
|
|
1171
|
+
addWorkspacePayload(payload, scope, actor);
|
|
1101
1172
|
addRedactionPayload(payload, redactedContent);
|
|
1102
1173
|
await qdrantUpsert(summaryId, vector, payload);
|
|
1103
1174
|
return {
|
|
@@ -1105,6 +1176,7 @@ export function registerTools(mcp) {
|
|
|
1105
1176
|
status: "summary_stored",
|
|
1106
1177
|
summary_id: summaryId,
|
|
1107
1178
|
workspace_id: scope.workspaceId,
|
|
1179
|
+
actor_id: actor.actor_id,
|
|
1108
1180
|
}) }],
|
|
1109
1181
|
};
|
|
1110
1182
|
}
|
|
@@ -1124,7 +1196,8 @@ export function registerTools(mcp) {
|
|
|
1124
1196
|
task_key: z.string().optional().describe("Task or issue key associated with this learning, if relevant."),
|
|
1125
1197
|
repo: z.string().optional().describe("Repository or project surface this learning applies to."),
|
|
1126
1198
|
workspace_id: z.string().optional().describe("Workspace namespace. Omit to use the default from config."),
|
|
1127
|
-
|
|
1199
|
+
actor_id: z.string().optional().describe("Stable actor identity associated with this distillation. Overrides identity config/env/Git fallback."),
|
|
1200
|
+
}, async ({ content, entities, supersedes, task_key, repo, workspace_id, actor_id }) => {
|
|
1128
1201
|
const guard = requireReady();
|
|
1129
1202
|
if (guard)
|
|
1130
1203
|
return guard;
|
|
@@ -1132,6 +1205,7 @@ export function registerTools(mcp) {
|
|
|
1132
1205
|
const now = nowISO();
|
|
1133
1206
|
try {
|
|
1134
1207
|
const scope = resolveScope(workspace_id);
|
|
1208
|
+
const actor = resolveActorIdentity({ actorId: actor_id, config: loadConfig() });
|
|
1135
1209
|
const normalizedEntities = entities.map((e) => e.trim().toLowerCase()).filter(Boolean);
|
|
1136
1210
|
const distilledId = newId();
|
|
1137
1211
|
const redactedContent = redactStorageText(content);
|
|
@@ -1148,7 +1222,7 @@ export function registerTools(mcp) {
|
|
|
1148
1222
|
}
|
|
1149
1223
|
const payload = {
|
|
1150
1224
|
content: redactedContent.text,
|
|
1151
|
-
category: categoryForMemorySubtype("convention") ?? "
|
|
1225
|
+
category: categoryForMemorySubtype("convention") ?? "engineering",
|
|
1152
1226
|
domain: "software_engineering",
|
|
1153
1227
|
kind: "distilled",
|
|
1154
1228
|
memory_subtype: "convention",
|
|
@@ -1169,7 +1243,7 @@ export function registerTools(mcp) {
|
|
|
1169
1243
|
payload["task_key"] = task_key;
|
|
1170
1244
|
if (repo)
|
|
1171
1245
|
payload["repo"] = repo;
|
|
1172
|
-
addWorkspacePayload(payload, scope);
|
|
1246
|
+
addWorkspacePayload(payload, scope, actor);
|
|
1173
1247
|
addRedactionPayload(payload, redactedContent);
|
|
1174
1248
|
await qdrantUpsert(distilledId, vector, payload);
|
|
1175
1249
|
return {
|
|
@@ -1178,6 +1252,7 @@ export function registerTools(mcp) {
|
|
|
1178
1252
|
distilled_id: distilledId,
|
|
1179
1253
|
supersedes: supersedes ?? null,
|
|
1180
1254
|
workspace_id: scope.workspaceId,
|
|
1255
|
+
actor_id: actor.actor_id,
|
|
1181
1256
|
}) }],
|
|
1182
1257
|
};
|
|
1183
1258
|
}
|
|
@@ -1273,6 +1348,7 @@ export function registerTools(mcp) {
|
|
|
1273
1348
|
const correctionScope = origPayload?.workspace_id
|
|
1274
1349
|
? resolveScope(origPayload.workspace_id, false)
|
|
1275
1350
|
: scope;
|
|
1351
|
+
const actor = resolveActorIdentity({ config: loadConfig() });
|
|
1276
1352
|
const vector = await embed(redactedCorrected.text);
|
|
1277
1353
|
const correctedId = crypto.randomUUID();
|
|
1278
1354
|
const origCategory = normalizeCategory(origPayload?.category ?? DEFAULT_CATEGORY);
|
|
@@ -1302,7 +1378,7 @@ export function registerTools(mcp) {
|
|
|
1302
1378
|
updated_at: now,
|
|
1303
1379
|
metadata: { ...(origPayload?.metadata ?? {}), corrected_from: fact_id },
|
|
1304
1380
|
};
|
|
1305
|
-
addWorkspacePayload(correctedPayload, correctionScope);
|
|
1381
|
+
addWorkspacePayload(correctedPayload, correctionScope, actor);
|
|
1306
1382
|
addRedactionPayload(correctedPayload, redactedCorrected);
|
|
1307
1383
|
await qdrantUpsert(correctedId, vector, correctedPayload);
|
|
1308
1384
|
await qdrantSetPayload([fact_id], {
|
|
@@ -1329,7 +1405,7 @@ export function registerTools(mcp) {
|
|
|
1329
1405
|
const staleThreshold = new Date(Date.now() - STALENESS_DAYS * 86400000).toISOString();
|
|
1330
1406
|
const scope = resolveScope();
|
|
1331
1407
|
const staleFilter = scopedFilter(scope) ?? { must: [] };
|
|
1332
|
-
staleFilter.must.push({ key: "category", match: { any: ["
|
|
1408
|
+
staleFilter.must.push({ key: "category", match: { any: ["engineering", "product", "human", "system"] } });
|
|
1333
1409
|
staleFilter.should = [
|
|
1334
1410
|
{ key: "last_reinforced_at", range: { lte: staleThreshold } },
|
|
1335
1411
|
{ is_null: { key: "last_reinforced_at" } },
|
|
@@ -1354,10 +1430,10 @@ export function registerTools(mcp) {
|
|
|
1354
1430
|
}
|
|
1355
1431
|
}
|
|
1356
1432
|
sections.push("🔍 Reflect: think about the LAST 10 minutes of work and answer in your head:\n" +
|
|
1357
|
-
" 1. Did you touch
|
|
1358
|
-
" 2. Did you
|
|
1359
|
-
" 3. Did you
|
|
1360
|
-
" 4. Did the
|
|
1433
|
+
" 1. Did you touch engineering context: code, infra, ops, access, troubleshooting, or conventions?\n" +
|
|
1434
|
+
" 2. Did you capture product context: a requirement, decision, workflow, roadmap item, metric, or market insight?\n" +
|
|
1435
|
+
" 3. Did you learn human context: a preference, owner, working agreement, person profile, or durable activity event?\n" +
|
|
1436
|
+
" 4. Did the work produce system context: session, episode, workstream, recall, feedback, outcome, or rollup state?\n" +
|
|
1361
1437
|
"If any answer is yes, call memory_store now — one atomic fact per item, with category/domain/entities.");
|
|
1362
1438
|
return { content: [{ type: "text", text: sections.join("\n\n") }] };
|
|
1363
1439
|
});
|