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.
- 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.js +1 -1
- package/dist/daemon/qdrant.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 +129 -50
- 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;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: "
|
|
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,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:
|
|
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
|
-
|
|
45
|
-
|
|
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
|
-
" •
|
|
92
|
-
" •
|
|
93
|
-
" •
|
|
94
|
-
" •
|
|
106
|
+
" • engineering — codebase maps, architecture, infra, ops, troubleshooting?\n" +
|
|
107
|
+
" • product — requirements, decisions, workflows, roadmap, metrics, market insight?\n" +
|
|
108
|
+
" • human — preferences, owners, working agreements, durable activity events?\n" +
|
|
109
|
+
" • system — session, 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 [
|
|
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.
|
|
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(
|
|
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 ??
|
|
639
|
-
const
|
|
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,
|
|
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,
|
|
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
|
-
|
|
685
|
-
if (
|
|
732
|
+
related = await graphTraversal(ranked, effectiveLimit, scope);
|
|
733
|
+
if (related.points.length > 0) {
|
|
686
734
|
lines.push("", "── Related (1-hop) ──");
|
|
687
|
-
lines.push(...
|
|
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: "
|
|
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: "
|
|
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
|
-
|
|
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") ?? "
|
|
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
|
-
|
|
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") ?? "
|
|
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: ["
|
|
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
|
|
1358
|
-
" 2. Did you
|
|
1359
|
-
" 3. Did you
|
|
1360
|
-
" 4. Did the
|
|
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
|
});
|