pilotswarm-sdk 0.1.35 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent-loader.d.ts +9 -0
- package/dist/agent-loader.d.ts.map +1 -1
- package/dist/agent-loader.js +3 -0
- package/dist/agent-loader.js.map +1 -1
- package/dist/child-notifications.d.ts +10 -0
- package/dist/child-notifications.d.ts.map +1 -1
- package/dist/child-notifications.js +15 -1
- package/dist/child-notifications.js.map +1 -1
- package/dist/client.d.ts +2 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +14 -20
- package/dist/client.js.map +1 -1
- package/dist/cms-migrations.d.ts.map +1 -1
- package/dist/cms-migrations.js +321 -0
- package/dist/cms-migrations.js.map +1 -1
- package/dist/cms.d.ts +132 -8
- package/dist/cms.d.ts.map +1 -1
- package/dist/cms.js +142 -6
- package/dist/cms.js.map +1 -1
- package/dist/duroxide-schema-migration.d.ts +19 -0
- package/dist/duroxide-schema-migration.d.ts.map +1 -0
- package/dist/duroxide-schema-migration.js +122 -0
- package/dist/duroxide-schema-migration.js.map +1 -0
- package/dist/facts-migrations.d.ts.map +1 -1
- package/dist/facts-migrations.js +923 -0
- package/dist/facts-migrations.js.map +1 -1
- package/dist/facts-store.d.ts +278 -28
- package/dist/facts-store.d.ts.map +1 -1
- package/dist/facts-store.js +262 -32
- package/dist/facts-store.js.map +1 -1
- package/dist/facts-tools.d.ts +8 -1
- package/dist/facts-tools.d.ts.map +1 -1
- package/dist/facts-tools.js +458 -25
- package/dist/facts-tools.js.map +1 -1
- package/dist/graph-store.d.ts +243 -0
- package/dist/graph-store.d.ts.map +1 -0
- package/dist/graph-store.js +63 -0
- package/dist/graph-store.js.map +1 -0
- package/dist/graph-tools.d.ts +47 -0
- package/dist/graph-tools.d.ts.map +1 -0
- package/dist/graph-tools.js +554 -0
- package/dist/graph-tools.js.map +1 -0
- package/dist/horizon-env.d.ts +61 -0
- package/dist/horizon-env.d.ts.map +1 -0
- package/dist/horizon-env.js +120 -0
- package/dist/horizon-env.js.map +1 -0
- package/dist/index.d.ts +15 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -2
- package/dist/index.js.map +1 -1
- package/dist/inspect-tools.d.ts +2 -2
- package/dist/inspect-tools.d.ts.map +1 -1
- package/dist/inspect-tools.js +303 -6
- package/dist/inspect-tools.js.map +1 -1
- package/dist/knowledge-index.d.ts +33 -2
- package/dist/knowledge-index.d.ts.map +1 -1
- package/dist/knowledge-index.js +90 -19
- package/dist/knowledge-index.js.map +1 -1
- package/dist/managed-session.d.ts.map +1 -1
- package/dist/managed-session.js +61 -2
- package/dist/managed-session.js.map +1 -1
- package/dist/management-client.d.ts +81 -3
- package/dist/management-client.d.ts.map +1 -1
- package/dist/management-client.js +97 -20
- package/dist/management-client.js.map +1 -1
- package/dist/orchestration/agents.d.ts +4 -1
- package/dist/orchestration/agents.d.ts.map +1 -1
- package/dist/orchestration/agents.js +27 -4
- package/dist/orchestration/agents.js.map +1 -1
- package/dist/orchestration/index.d.ts +2 -2
- package/dist/orchestration/index.js +1 -1
- package/dist/orchestration/lifecycle.d.ts +3 -0
- package/dist/orchestration/lifecycle.d.ts.map +1 -1
- package/dist/orchestration/lifecycle.js +6 -1
- package/dist/orchestration/lifecycle.js.map +1 -1
- package/dist/orchestration/queue.d.ts.map +1 -1
- package/dist/orchestration/queue.js +10 -1
- package/dist/orchestration/queue.js.map +1 -1
- package/dist/orchestration/runtime.d.ts +1 -1
- package/dist/orchestration/state.d.ts +1 -0
- package/dist/orchestration/state.d.ts.map +1 -1
- package/dist/orchestration/state.js +1 -0
- package/dist/orchestration/state.js.map +1 -1
- package/dist/orchestration/turn.d.ts +2 -2
- package/dist/orchestration/turn.d.ts.map +1 -1
- package/dist/orchestration/turn.js +42 -12
- package/dist/orchestration/turn.js.map +1 -1
- package/dist/orchestration-registry.d.ts.map +1 -1
- package/dist/orchestration-registry.js +4 -2
- package/dist/orchestration-registry.js.map +1 -1
- package/dist/orchestration-version.d.ts +1 -1
- package/dist/orchestration-version.js +1 -1
- package/dist/orchestration.d.ts +2 -2
- package/dist/orchestration.js +1 -1
- package/dist/orchestration_1_0_46.d.ts +1 -1
- package/dist/orchestration_1_0_47.d.ts +1 -1
- package/dist/orchestration_1_0_48.d.ts +1 -1
- package/dist/orchestration_1_0_49.d.ts +1 -1
- package/dist/orchestration_1_0_50.d.ts +1 -1
- package/dist/orchestration_1_0_52/agents.d.ts +38 -0
- package/dist/orchestration_1_0_52/agents.d.ts.map +1 -0
- package/dist/orchestration_1_0_52/agents.js +735 -0
- package/dist/orchestration_1_0_52/agents.js.map +1 -0
- package/dist/orchestration_1_0_52/index.d.ts +24 -0
- package/dist/orchestration_1_0_52/index.d.ts.map +1 -0
- package/dist/orchestration_1_0_52/index.js +13 -0
- package/dist/orchestration_1_0_52/index.js.map +1 -0
- package/dist/orchestration_1_0_52/lifecycle.d.ts +38 -0
- package/dist/orchestration_1_0_52/lifecycle.d.ts.map +1 -0
- package/dist/orchestration_1_0_52/lifecycle.js +504 -0
- package/dist/orchestration_1_0_52/lifecycle.js.map +1 -0
- package/dist/orchestration_1_0_52/queue.d.ts +7 -0
- package/dist/orchestration_1_0_52/queue.d.ts.map +1 -0
- package/dist/orchestration_1_0_52/queue.js +635 -0
- package/dist/orchestration_1_0_52/queue.js.map +1 -0
- package/dist/orchestration_1_0_52/runtime.d.ts +29 -0
- package/dist/orchestration_1_0_52/runtime.d.ts.map +1 -0
- package/dist/orchestration_1_0_52/runtime.js +190 -0
- package/dist/orchestration_1_0_52/runtime.js.map +1 -0
- package/dist/orchestration_1_0_52/state.d.ts +124 -0
- package/dist/orchestration_1_0_52/state.d.ts.map +1 -0
- package/dist/orchestration_1_0_52/state.js +104 -0
- package/dist/orchestration_1_0_52/state.js.map +1 -0
- package/dist/orchestration_1_0_52/turn.d.ts +6 -0
- package/dist/orchestration_1_0_52/turn.d.ts.map +1 -0
- package/dist/orchestration_1_0_52/turn.js +834 -0
- package/dist/orchestration_1_0_52/turn.js.map +1 -0
- package/dist/orchestration_1_0_52/utils.d.ts +22 -0
- package/dist/orchestration_1_0_52/utils.d.ts.map +1 -0
- package/dist/orchestration_1_0_52/utils.js +226 -0
- package/dist/orchestration_1_0_52/utils.js.map +1 -0
- package/dist/resourcemgr-tools.d.ts +2 -2
- package/dist/resourcemgr-tools.d.ts.map +1 -1
- package/dist/resourcemgr-tools.js +1 -1
- package/dist/resourcemgr-tools.js.map +1 -1
- package/dist/session-dumper.d.ts +2 -2
- package/dist/session-dumper.d.ts.map +1 -1
- package/dist/session-dumper.js.map +1 -1
- package/dist/session-manager.d.ts +8 -2
- package/dist/session-manager.d.ts.map +1 -1
- package/dist/session-manager.js +86 -4
- package/dist/session-manager.js.map +1 -1
- package/dist/session-messages.d.ts +2 -2
- package/dist/session-messages.d.ts.map +1 -1
- package/dist/session-messages.js +0 -6
- package/dist/session-messages.js.map +1 -1
- package/dist/session-proxy.d.ts +47 -2
- package/dist/session-proxy.d.ts.map +1 -1
- package/dist/session-proxy.js +79 -59
- package/dist/session-proxy.js.map +1 -1
- package/dist/storage-config.d.ts +62 -0
- package/dist/storage-config.d.ts.map +1 -0
- package/dist/storage-config.js +138 -0
- package/dist/storage-config.js.map +1 -0
- package/dist/storage-providers.d.ts +25 -0
- package/dist/storage-providers.d.ts.map +1 -0
- package/dist/storage-providers.js +150 -0
- package/dist/storage-providers.js.map +1 -0
- package/dist/sweeper-tools.d.ts +2 -2
- package/dist/sweeper-tools.d.ts.map +1 -1
- package/dist/system-agents.d.ts +2 -2
- package/dist/system-agents.d.ts.map +1 -1
- package/dist/types.d.ts +103 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/worker.d.ts +5 -4
- package/dist/worker.d.ts.map +1 -1
- package/dist/worker.js +108 -33
- package/dist/worker.js.map +1 -1
- package/package.json +3 -1
- package/plugins/mgmt/agents/agent-tuner.agent.md +56 -4
- package/plugins/mgmt/agents/facts-manager.agent.md +81 -3
- package/plugins/mgmt/skills/graph-debug/SKILL.md +133 -0
package/dist/facts-tools.js
CHANGED
|
@@ -5,6 +5,25 @@ const TUNER_AGENT_ID = "agent-tuner";
|
|
|
5
5
|
const RESERVED_WRITE_PREFIXES = ["skills/", "asks/", "config/facts-manager/"];
|
|
6
6
|
const RESERVED_READ_PREFIXES = ["intake/"];
|
|
7
7
|
const RESERVED_DELETE_PREFIXES = ["intake/", "skills/", "asks/", "config/facts-manager/"];
|
|
8
|
+
function boundedPreview(value, max = 80) {
|
|
9
|
+
const text = typeof value === "string" ? value.trim() : "";
|
|
10
|
+
if (!text)
|
|
11
|
+
return undefined;
|
|
12
|
+
return text.length > max ? text.slice(0, max) : text;
|
|
13
|
+
}
|
|
14
|
+
function normalizeNamespace(value) {
|
|
15
|
+
const text = typeof value === "string" ? value.trim().replace(/\/+$/g, "") : "";
|
|
16
|
+
return text.length > 0 ? text : null;
|
|
17
|
+
}
|
|
18
|
+
function clampTags(tags) {
|
|
19
|
+
if (!Array.isArray(tags))
|
|
20
|
+
return undefined;
|
|
21
|
+
const out = tags
|
|
22
|
+
.map((tag) => typeof tag === "string" ? tag.trim() : "")
|
|
23
|
+
.filter(Boolean)
|
|
24
|
+
.slice(0, 20);
|
|
25
|
+
return out.length > 0 ? out : undefined;
|
|
26
|
+
}
|
|
8
27
|
function checkNamespaceWrite(key, agentIdentity) {
|
|
9
28
|
if (agentIdentity === TUNER_AGENT_ID) {
|
|
10
29
|
return "Error: agent-tuner sessions are read-only and cannot store facts.";
|
|
@@ -17,6 +36,12 @@ function checkNamespaceWrite(key, agentIdentity) {
|
|
|
17
36
|
}
|
|
18
37
|
return null;
|
|
19
38
|
}
|
|
39
|
+
function patternTouchesPrefix(pattern, prefix) {
|
|
40
|
+
const normalized = pattern.replace(/\*/g, "%");
|
|
41
|
+
const wildcardIndex = normalized.search(/[%_]/);
|
|
42
|
+
const literalPrefix = wildcardIndex === -1 ? normalized : normalized.slice(0, wildcardIndex);
|
|
43
|
+
return prefix.startsWith(literalPrefix) || literalPrefix.startsWith(prefix);
|
|
44
|
+
}
|
|
20
45
|
function checkNamespaceRead(keyPattern, agentIdentity) {
|
|
21
46
|
if (!keyPattern)
|
|
22
47
|
return null;
|
|
@@ -42,8 +67,27 @@ function checkNamespaceDelete(key, agentIdentity) {
|
|
|
42
67
|
}
|
|
43
68
|
return null;
|
|
44
69
|
}
|
|
70
|
+
function checkNamespaceDeletePattern(keyPattern, agentIdentity) {
|
|
71
|
+
if (agentIdentity === TUNER_AGENT_ID) {
|
|
72
|
+
return "Error: agent-tuner sessions are read-only and cannot delete facts.";
|
|
73
|
+
}
|
|
74
|
+
for (const prefix of RESERVED_DELETE_PREFIXES) {
|
|
75
|
+
if (patternTouchesPrefix(keyPattern, prefix) && agentIdentity !== FACTS_MANAGER_AGENT_ID) {
|
|
76
|
+
return `Error: the '${prefix}' key namespace is reserved. Only the Facts Manager can delete from it.`;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
45
81
|
export function createFactTools(opts) {
|
|
46
|
-
const { factStore, getDescendantSessionIds, getLineageSessionIds, agentIdentity, recordEvent, onSharedIntakeFactStored } = opts;
|
|
82
|
+
const { factStore, getDescendantSessionIds, getLineageSessionIds, agentIdentity, recordEvent, onSharedIntakeFactStored, enhancedFactStore } = opts;
|
|
83
|
+
const recordRetrievalEvent = (sessionId, eventType, data) => {
|
|
84
|
+
if (!recordEvent || !sessionId)
|
|
85
|
+
return;
|
|
86
|
+
recordEvent(sessionId, eventType, {
|
|
87
|
+
...data,
|
|
88
|
+
callerAgentId: agentIdentity ?? null,
|
|
89
|
+
}).catch(() => { });
|
|
90
|
+
};
|
|
47
91
|
const filterReservedReadFacts = (result) => {
|
|
48
92
|
if (agentIdentity === FACTS_MANAGER_AGENT_ID || agentIdentity === TUNER_AGENT_ID)
|
|
49
93
|
return result;
|
|
@@ -60,9 +104,10 @@ export function createFactTools(opts) {
|
|
|
60
104
|
};
|
|
61
105
|
};
|
|
62
106
|
const storeTool = defineTool("store_fact", {
|
|
63
|
-
description: "Store
|
|
107
|
+
description: "Store one fact or a batch of facts in the facts table for durable structured memory. " +
|
|
64
108
|
"Facts are session-scoped by default, visible to every session in the same spawn tree (ancestors, descendants, siblings, cousins — anything spawned from a common root), and are deleted when the session is deleted. " +
|
|
65
|
-
"Set shared=true to create shared durable memory visible across all sessions globally; shared facts persist until explicitly deleted."
|
|
109
|
+
"Set shared=true to create shared durable memory visible across all sessions globally; shared facts persist until explicitly deleted. " +
|
|
110
|
+
"For large ingestion, pass facts=[{key,value,tags?,shared?}, ...] instead of a single key/value.",
|
|
66
111
|
parameters: {
|
|
67
112
|
type: "object",
|
|
68
113
|
properties: {
|
|
@@ -82,31 +127,57 @@ export function createFactTools(opts) {
|
|
|
82
127
|
type: "boolean",
|
|
83
128
|
description: "If true, store as shared global knowledge visible across sessions. Default: false.",
|
|
84
129
|
},
|
|
130
|
+
facts: {
|
|
131
|
+
type: "array",
|
|
132
|
+
items: {
|
|
133
|
+
type: "object",
|
|
134
|
+
properties: {
|
|
135
|
+
key: { type: "string" },
|
|
136
|
+
value: {},
|
|
137
|
+
tags: { type: "array", items: { type: "string" } },
|
|
138
|
+
shared: { type: "boolean" },
|
|
139
|
+
},
|
|
140
|
+
required: ["key", "value"],
|
|
141
|
+
},
|
|
142
|
+
description: "Optional batch of facts to store. When provided, top-level key/value are ignored.",
|
|
143
|
+
},
|
|
85
144
|
},
|
|
86
|
-
required: ["key", "value"],
|
|
87
145
|
},
|
|
88
146
|
handler: async (args, ctx) => {
|
|
89
|
-
const
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
147
|
+
const factInputs = Array.isArray(args.facts) && args.facts.length > 0
|
|
148
|
+
? args.facts
|
|
149
|
+
: (typeof args.key === "string" && "value" in args ? [{ key: args.key, value: args.value, tags: args.tags, shared: args.shared }] : []);
|
|
150
|
+
if (factInputs.length === 0)
|
|
151
|
+
return { error: "Error: store_fact requires either { key, value } or facts=[{ key, value }, ...]." };
|
|
152
|
+
for (const fact of factInputs) {
|
|
153
|
+
const nsError = checkNamespaceWrite(fact.key, agentIdentity);
|
|
154
|
+
if (nsError)
|
|
155
|
+
return { error: nsError };
|
|
156
|
+
}
|
|
157
|
+
const result = await factStore.storeFact(factInputs.map((fact) => ({
|
|
158
|
+
key: fact.key,
|
|
159
|
+
value: fact.value,
|
|
160
|
+
tags: fact.tags,
|
|
161
|
+
shared: fact.shared,
|
|
97
162
|
sessionId: ctx?.sessionId ?? null,
|
|
98
163
|
agentId: ctx?.agentId ?? null,
|
|
99
|
-
});
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
164
|
+
})));
|
|
165
|
+
for (const fact of result.facts) {
|
|
166
|
+
if (fact.shared && fact.key.startsWith("intake/") && agentIdentity !== FACTS_MANAGER_AGENT_ID) {
|
|
167
|
+
await onSharedIntakeFactStored?.({
|
|
168
|
+
key: fact.key,
|
|
169
|
+
sourceSessionId: ctx?.sessionId ?? null,
|
|
170
|
+
agentId: ctx?.agentId ?? null,
|
|
171
|
+
}).catch(() => { });
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
if (result.facts.length === 1) {
|
|
175
|
+
const fact = result.facts[0];
|
|
176
|
+
return { ...fact, scope: fact.shared ? "shared" : "session" };
|
|
106
177
|
}
|
|
107
178
|
return {
|
|
108
|
-
|
|
109
|
-
|
|
179
|
+
stored: result.stored,
|
|
180
|
+
facts: result.facts.map((fact) => ({ ...fact, scope: fact.shared ? "shared" : "session" })),
|
|
110
181
|
};
|
|
111
182
|
},
|
|
112
183
|
});
|
|
@@ -221,8 +292,9 @@ export function createFactTools(opts) {
|
|
|
221
292
|
},
|
|
222
293
|
});
|
|
223
294
|
const deleteTool = defineTool("delete_fact", {
|
|
224
|
-
description: "Delete
|
|
225
|
-
"Set shared=true to delete the shared durable fact with that key instead."
|
|
295
|
+
description: "Delete facts. By default this deletes the current session's fact for the given exact key. " +
|
|
296
|
+
"Set shared=true to delete the shared durable fact with that key instead. " +
|
|
297
|
+
"For pattern deletes, set pattern=true and pass a key glob such as 'a/b/*'. Pattern deletes are explicit and never enabled by accident.",
|
|
226
298
|
parameters: {
|
|
227
299
|
type: "object",
|
|
228
300
|
properties: {
|
|
@@ -234,13 +306,37 @@ export function createFactTools(opts) {
|
|
|
234
306
|
type: "boolean",
|
|
235
307
|
description: "If true, delete the shared fact. Otherwise delete the current session's fact.",
|
|
236
308
|
},
|
|
309
|
+
pattern: {
|
|
310
|
+
type: "boolean",
|
|
311
|
+
description: "Required true to treat key as a pattern. Supports '*' globs or SQL '%' wildcards.",
|
|
312
|
+
},
|
|
313
|
+
scope: {
|
|
314
|
+
type: "string",
|
|
315
|
+
enum: ["session", "shared", "all"],
|
|
316
|
+
description: "Pattern-delete scope. session=current session only, shared=shared facts only, all=Facts Manager unrestricted cleanup.",
|
|
317
|
+
},
|
|
237
318
|
},
|
|
238
319
|
required: ["key"],
|
|
239
320
|
},
|
|
240
321
|
handler: async (args, ctx) => {
|
|
241
|
-
const nsError =
|
|
322
|
+
const nsError = args.pattern
|
|
323
|
+
? checkNamespaceDeletePattern(args.key, agentIdentity)
|
|
324
|
+
: checkNamespaceDelete(args.key, agentIdentity);
|
|
242
325
|
if (nsError)
|
|
243
326
|
return { error: nsError };
|
|
327
|
+
if (args.pattern) {
|
|
328
|
+
const scope = args.scope ?? (args.shared === true ? "shared" : "session");
|
|
329
|
+
if (scope === "all" && agentIdentity !== FACTS_MANAGER_AGENT_ID) {
|
|
330
|
+
return { error: "Error: delete_fact scope='all' is reserved for the Facts Manager." };
|
|
331
|
+
}
|
|
332
|
+
return factStore.deleteFact({
|
|
333
|
+
key: args.key,
|
|
334
|
+
pattern: true,
|
|
335
|
+
scope,
|
|
336
|
+
sessionId: ctx?.sessionId ?? null,
|
|
337
|
+
unrestricted: agentIdentity === FACTS_MANAGER_AGENT_ID,
|
|
338
|
+
});
|
|
339
|
+
}
|
|
244
340
|
return factStore.deleteFact({
|
|
245
341
|
key: args.key,
|
|
246
342
|
shared: args.shared,
|
|
@@ -248,6 +344,343 @@ export function createFactTools(opts) {
|
|
|
248
344
|
});
|
|
249
345
|
},
|
|
250
346
|
});
|
|
251
|
-
|
|
347
|
+
const managerTools = [];
|
|
348
|
+
if (agentIdentity === FACTS_MANAGER_AGENT_ID) {
|
|
349
|
+
managerTools.push(defineTool("facts_tombstone_stats", {
|
|
350
|
+
description: "Read soft-deleted fact tombstone backlog stats. Use during Facts Manager maintenance to monitor " +
|
|
351
|
+
"whether graph reconciliation is keeping up before the TTL backstop purges unresolved tombstones.",
|
|
352
|
+
parameters: {
|
|
353
|
+
type: "object",
|
|
354
|
+
properties: {
|
|
355
|
+
ttlSeconds: { type: "number", description: "Tombstone TTL in seconds. Default 21600 (6h)." },
|
|
356
|
+
},
|
|
357
|
+
},
|
|
358
|
+
handler: async (a) => factStore.getFactsTombstoneStats(a.ttlSeconds),
|
|
359
|
+
}));
|
|
360
|
+
managerTools.push(defineTool("facts_purge_tombstones", {
|
|
361
|
+
description: "Hard-delete soft-deleted facts that are either already reconciled (last_crawled_at set) or older than the TTL. " +
|
|
362
|
+
"Use during the Facts Manager maintenance pass. ttlSeconds=0 purges all tombstones on this pass.",
|
|
363
|
+
parameters: {
|
|
364
|
+
type: "object",
|
|
365
|
+
properties: {
|
|
366
|
+
ttlSeconds: { type: "number", description: "Tombstone TTL in seconds. Default 21600 (6h). Use 0 only when no crawler is running." },
|
|
367
|
+
limit: { type: "number", description: "Maximum rows to purge in this call. Default 1000." },
|
|
368
|
+
},
|
|
369
|
+
},
|
|
370
|
+
handler: async (a) => ({
|
|
371
|
+
purged: await factStore.purgeExpiredFacts(a.ttlSeconds ?? 21_600, a.limit),
|
|
372
|
+
}),
|
|
373
|
+
}));
|
|
374
|
+
managerTools.push(defineTool("facts_force_purge", {
|
|
375
|
+
description: "Dangerous operator-directed cleanup: hard-delete soft-deleted facts older than a cutoff, regardless of TTL or graph reconciliation. " +
|
|
376
|
+
"This can strand graph evidence for unreconciled tombstones. Requires confirm=true and never deletes live facts.",
|
|
377
|
+
parameters: {
|
|
378
|
+
type: "object",
|
|
379
|
+
properties: {
|
|
380
|
+
cutoff: { type: "string", description: "ISO timestamp. Tombstones older than this are eligible." },
|
|
381
|
+
onlyUnreconciled: { type: "boolean", description: "If true, purge only tombstones with last_crawled_at IS NULL." },
|
|
382
|
+
keyPrefix: { type: "string", description: "Optional literal fact-key prefix to bound the purge." },
|
|
383
|
+
limit: { type: "number", description: "Maximum rows to purge in this call. Default 1000." },
|
|
384
|
+
confirm: { type: "boolean", description: "Must be true to execute this destructive bypass." },
|
|
385
|
+
},
|
|
386
|
+
required: ["cutoff", "confirm"],
|
|
387
|
+
},
|
|
388
|
+
handler: async (a) => {
|
|
389
|
+
if (a.confirm !== true) {
|
|
390
|
+
return { error: "facts_force_purge requires confirm=true because it can strand graph evidence." };
|
|
391
|
+
}
|
|
392
|
+
const cutoff = new Date(a.cutoff);
|
|
393
|
+
if (!Number.isFinite(cutoff.getTime())) {
|
|
394
|
+
return { error: "facts_force_purge cutoff must be a valid ISO timestamp." };
|
|
395
|
+
}
|
|
396
|
+
return {
|
|
397
|
+
purged: await factStore.forcePurgeFacts({
|
|
398
|
+
cutoff,
|
|
399
|
+
onlyUnreconciled: a.onlyUnreconciled,
|
|
400
|
+
keyPrefix: a.keyPrefix,
|
|
401
|
+
limit: a.limit,
|
|
402
|
+
}),
|
|
403
|
+
};
|
|
404
|
+
},
|
|
405
|
+
}));
|
|
406
|
+
}
|
|
407
|
+
const enhancedTools = [];
|
|
408
|
+
if (enhancedFactStore && enhancedFactStore.capabilities.search) {
|
|
409
|
+
const isTuner = agentIdentity === TUNER_AGENT_ID;
|
|
410
|
+
// Resolve the SAME lineage visibility read_facts uses: the tuner is an
|
|
411
|
+
// unrestricted investigator; everyone else sees their own session plus
|
|
412
|
+
// granted lineage sessions (ancestors/descendants). FAIL CLOSED — with
|
|
413
|
+
// no lineage resolver, a non-tuner sees only its own session.
|
|
414
|
+
const resolveSearchAccess = async (ctx) => {
|
|
415
|
+
if (isTuner)
|
|
416
|
+
return { readerSessionId: ctx?.sessionId ?? null, grantedSessionIds: [], unrestricted: true };
|
|
417
|
+
let granted = [];
|
|
418
|
+
if (ctx?.sessionId && getLineageSessionIds) {
|
|
419
|
+
const raw = await getLineageSessionIds(ctx.sessionId);
|
|
420
|
+
granted = [...new Set((raw || []).filter((sid) => Boolean(sid) && sid !== ctx.sessionId))];
|
|
421
|
+
}
|
|
422
|
+
else if (ctx?.sessionId && getDescendantSessionIds) {
|
|
423
|
+
const raw = await getDescendantSessionIds(ctx.sessionId);
|
|
424
|
+
granted = [...new Set((raw || []).filter((sid) => Boolean(sid) && sid !== ctx.sessionId))];
|
|
425
|
+
}
|
|
426
|
+
return { readerSessionId: ctx?.sessionId ?? null, grantedSessionIds: granted, unrestricted: false };
|
|
427
|
+
};
|
|
428
|
+
// Reserved-namespace gate for SEARCH — the same rule read_facts enforces.
|
|
429
|
+
// Without this, facts_search/facts_similar would be a hole around the
|
|
430
|
+
// intake/* (and skills/asks-write) ACL: a task agent could query
|
|
431
|
+
// namespace:"intake" or a broad term and receive reserved values.
|
|
432
|
+
// Note: the `namespace` arg is a bare key PREFIX (e.g. "intake", not
|
|
433
|
+
// "intake/*"), so match it against the reserved prefixes' leading
|
|
434
|
+
// segment as well as the slash form checkNamespaceRead expects.
|
|
435
|
+
const blockReservedSearch = (namespace) => {
|
|
436
|
+
if (!namespace || agentIdentity === FACTS_MANAGER_AGENT_ID || agentIdentity === TUNER_AGENT_ID)
|
|
437
|
+
return null;
|
|
438
|
+
const ns = namespace.replace(/\/+$/, "");
|
|
439
|
+
const hitsReserved = RESERVED_READ_PREFIXES.some((p) => {
|
|
440
|
+
const seg = p.replace(/\/+$/, "");
|
|
441
|
+
return ns === seg || ns.startsWith(seg + "/") || seg.startsWith(ns + "/");
|
|
442
|
+
});
|
|
443
|
+
if (hitsReserved) {
|
|
444
|
+
return `Error: the '${ns}' key namespace is not readable by task agents. ` +
|
|
445
|
+
`Search curated skills (namespace 'skills') or open asks (namespace 'asks') instead.`;
|
|
446
|
+
}
|
|
447
|
+
// Fall back to the shared slash-form check for any other shape.
|
|
448
|
+
return checkNamespaceRead(namespace, agentIdentity);
|
|
449
|
+
};
|
|
450
|
+
const stripReserved = (result) => {
|
|
451
|
+
if (agentIdentity === FACTS_MANAGER_AGENT_ID || agentIdentity === TUNER_AGENT_ID)
|
|
452
|
+
return result;
|
|
453
|
+
if (!result || !Array.isArray(result.facts))
|
|
454
|
+
return result;
|
|
455
|
+
const facts = result.facts.filter((f) => !RESERVED_READ_PREFIXES.some((p) => String(f?.key || "").startsWith(p)));
|
|
456
|
+
return { ...result, count: facts.length, facts };
|
|
457
|
+
};
|
|
458
|
+
enhancedTools.push(defineTool("facts_search", {
|
|
459
|
+
description: "Search your durable facts/memory by relevance (lexical / semantic / hybrid) — often more effective " +
|
|
460
|
+
"than read_facts, which only matches literal keys. Mode selection is independent of graph namespace " +
|
|
461
|
+
"discovery: semantic = natural-language questions; hybrid = a one-shot recheck when semantic hits " +
|
|
462
|
+
"are weak; lexical = exact identifiers, error codes, proper nouns, quoted phrases, or single exact terms. " +
|
|
463
|
+
"If a namespace is already known, pass it here. Returned scopeKey values can seed graph_search_nodes.",
|
|
464
|
+
parameters: {
|
|
465
|
+
type: "object",
|
|
466
|
+
properties: {
|
|
467
|
+
query: { type: "string", description: "Keywords for lexical, natural language for semantic, keyword-rich phrase for hybrid." },
|
|
468
|
+
mode: { type: "string", enum: ["lexical", "semantic", "hybrid"], description: "Default semantic when semantic search is available; use hybrid as a weak-semantic recheck and lexical for exact tokens." },
|
|
469
|
+
namespace: { type: "string", description: "Key-prefix filter over fact keys, matched as '<prefix>/%'. Accepts ANY number of '/'-delimited segments: a reserved namespace ('skills', 'asks') or a domain root ('acme', 'acme/services') to scope a multi-domain corpus to one domain/sub-domain before lexical/semantic/hybrid ranking." },
|
|
470
|
+
tags: { type: "array", items: { type: "string" } },
|
|
471
|
+
limit: { type: "number", description: "Max results (default 20)." },
|
|
472
|
+
},
|
|
473
|
+
required: ["query"],
|
|
474
|
+
},
|
|
475
|
+
handler: async (a, ctx) => {
|
|
476
|
+
const nsError = blockReservedSearch(a.namespace);
|
|
477
|
+
if (nsError)
|
|
478
|
+
return { error: nsError };
|
|
479
|
+
const startedAt = Date.now();
|
|
480
|
+
const access = await resolveSearchAccess(ctx);
|
|
481
|
+
const result = stripReserved(await enhancedFactStore.searchFacts(a.query, { mode: a.mode, namespace: a.namespace, tags: a.tags, limit: a.limit }, access));
|
|
482
|
+
recordRetrievalEvent(ctx?.sessionId, "facts.searched", {
|
|
483
|
+
operation: "facts_search",
|
|
484
|
+
queryPreview: boundedPreview(a.query),
|
|
485
|
+
mode: a.mode ?? null,
|
|
486
|
+
namespace: normalizeNamespace(a.namespace),
|
|
487
|
+
tags: clampTags(a.tags),
|
|
488
|
+
limit: a.limit ?? 20,
|
|
489
|
+
resultCount: Number(result?.count ?? result?.facts?.length ?? 0),
|
|
490
|
+
durationMs: Date.now() - startedAt,
|
|
491
|
+
});
|
|
492
|
+
return result;
|
|
493
|
+
},
|
|
494
|
+
}));
|
|
495
|
+
enhancedTools.push(defineTool("facts_similar", {
|
|
496
|
+
description: "Given a fact you already have, return the semantically nearest other facts (vector kNN over the " +
|
|
497
|
+
"fact's stored embedding — no query text, no re-embedding). Use for clustering, dedup hunting, or " +
|
|
498
|
+
"expanding context around a known fact. Pass namespace to restrict candidates to a fact key-prefix " +
|
|
499
|
+
"subtree before nearest-neighbour ranking, using the same semantics as facts_search.",
|
|
500
|
+
parameters: {
|
|
501
|
+
type: "object",
|
|
502
|
+
properties: {
|
|
503
|
+
scopeKey: { type: "string", description: "The anchor fact's scopeKey." },
|
|
504
|
+
namespace: {
|
|
505
|
+
type: "string",
|
|
506
|
+
description: "Optional key-prefix filter over candidate fact keys, matched as '<prefix>/%'. Accepts any number of '/'-delimited segments, e.g. 'skills' or 'corpus/acme/services'.",
|
|
507
|
+
},
|
|
508
|
+
k: { type: "number", description: "Top-k neighbours (default 8)." },
|
|
509
|
+
minScore: { type: "number", description: "Drop neighbours below this cosine score (0..1)." },
|
|
510
|
+
},
|
|
511
|
+
required: ["scopeKey"],
|
|
512
|
+
},
|
|
513
|
+
handler: async (a, ctx) => {
|
|
514
|
+
const nsError = blockReservedSearch(a.namespace);
|
|
515
|
+
if (nsError)
|
|
516
|
+
return { error: nsError };
|
|
517
|
+
const startedAt = Date.now();
|
|
518
|
+
const access = await resolveSearchAccess(ctx);
|
|
519
|
+
const result = await enhancedFactStore.similarFacts(a.scopeKey, { k: a.k, minScore: a.minScore, namespace: a.namespace }, access);
|
|
520
|
+
// Post-filter reserved keys — similarFacts has no namespace arg, so
|
|
521
|
+
// a kNN from an accessible anchor could still surface reserved
|
|
522
|
+
// near-neighbours for a task agent when namespace is broad/omitted.
|
|
523
|
+
const filtered = stripReserved(result);
|
|
524
|
+
recordRetrievalEvent(ctx?.sessionId, "facts.similar", {
|
|
525
|
+
operation: "facts_similar",
|
|
526
|
+
scopeKey: a.scopeKey,
|
|
527
|
+
namespace: normalizeNamespace(a.namespace),
|
|
528
|
+
k: a.k ?? 8,
|
|
529
|
+
minScore: a.minScore ?? null,
|
|
530
|
+
resultCount: Number(filtered?.count ?? filtered?.facts?.length ?? 0),
|
|
531
|
+
durationMs: Date.now() - startedAt,
|
|
532
|
+
});
|
|
533
|
+
return filtered;
|
|
534
|
+
},
|
|
535
|
+
}));
|
|
536
|
+
// search_skills — skills-scoped pull (07 §1.6). The facts-manager owns the
|
|
537
|
+
// skills namespace and curates it directly, so it does not get this tool.
|
|
538
|
+
if (agentIdentity !== FACTS_MANAGER_AGENT_ID) {
|
|
539
|
+
enhancedTools.push(defineTool("search_skills", {
|
|
540
|
+
description: "Find the curated skills most relevant to your current task (ranked semantic + lexical search " +
|
|
541
|
+
"over the shared 'skills' namespace). Call this at the start of a turn with a task-derived query " +
|
|
542
|
+
"(e.g. 'azure deployments', 'horizondb connection errors', 'terraform s3 backend') — as many times " +
|
|
543
|
+
"as needed for different facets. Returns ranked skill hints; load a skill's full instructions with " +
|
|
544
|
+
"read_facts(key_pattern=\"<key>\", scope=\"shared\") before applying it.",
|
|
545
|
+
parameters: {
|
|
546
|
+
type: "object",
|
|
547
|
+
properties: {
|
|
548
|
+
query: { type: "string", description: "What the task is about (natural language or keywords)." },
|
|
549
|
+
limit: { type: "number", description: "Max skill hints (default 8)." },
|
|
550
|
+
},
|
|
551
|
+
required: ["query"],
|
|
552
|
+
},
|
|
553
|
+
handler: async (a, ctx) => {
|
|
554
|
+
const startedAt = Date.now();
|
|
555
|
+
// Skills are SHARED + curated; access is the shared scope (no
|
|
556
|
+
// private-session leakage possible — namespace is pinned to
|
|
557
|
+
// 'skills' and scope to 'shared').
|
|
558
|
+
const access = await resolveSearchAccess(ctx);
|
|
559
|
+
const res = await enhancedFactStore.searchFacts(a.query, { mode: "hybrid", namespace: "skills", scope: "shared", limit: a.limit ?? 8 }, access);
|
|
560
|
+
// Hint shape only — the agent loads full content via read_facts.
|
|
561
|
+
const out = {
|
|
562
|
+
count: res.count,
|
|
563
|
+
skills: res.facts.map((f) => {
|
|
564
|
+
const v = typeof f.value === "string" ? safeParse(f.value) : f.value;
|
|
565
|
+
return { key: f.key, name: v?.name ?? f.key, description: v?.description ?? "", score: f.score };
|
|
566
|
+
}),
|
|
567
|
+
};
|
|
568
|
+
recordRetrievalEvent(ctx?.sessionId, "skills.searched", {
|
|
569
|
+
operation: "search_skills",
|
|
570
|
+
queryPreview: boundedPreview(a.query),
|
|
571
|
+
mode: "hybrid",
|
|
572
|
+
namespace: "skills",
|
|
573
|
+
limit: a.limit ?? 8,
|
|
574
|
+
resultCount: Number(out.count ?? 0),
|
|
575
|
+
durationMs: Date.now() - startedAt,
|
|
576
|
+
});
|
|
577
|
+
return out;
|
|
578
|
+
},
|
|
579
|
+
}));
|
|
580
|
+
}
|
|
581
|
+
}
|
|
582
|
+
// ── manage_embedder — durable embedder lifecycle (CONTROL PLANE) ─────────
|
|
583
|
+
// The embedder is the single eternal in-DB batch loop that fills the
|
|
584
|
+
// `embedding` column so semantic/hybrid search and facts_similar work.
|
|
585
|
+
// It is a SHARED, durable, fleet-wide resource (one loop per facts schema,
|
|
586
|
+
// advisory-locked across workers), so its lifecycle is an OPERATOR action,
|
|
587
|
+
// not a per-task tool. Restrict it to the Facts Manager — the singleton
|
|
588
|
+
// curator that already owns the knowledge-base control surface. Gate on
|
|
589
|
+
// `capabilities.embedder` (NOT `.search`): a store can have search without
|
|
590
|
+
// an embedder (lexical-only), and vice versa.
|
|
591
|
+
if (enhancedFactStore &&
|
|
592
|
+
enhancedFactStore.capabilities.embedder &&
|
|
593
|
+
agentIdentity === FACTS_MANAGER_AGENT_ID) {
|
|
594
|
+
enhancedTools.push(defineTool("manage_embedder", {
|
|
595
|
+
description: "Inspect and control the durable embedding loop that powers semantic/hybrid facts_search and " +
|
|
596
|
+
"facts_similar. This is a SHARED, fleet-wide resource (one loop per facts schema) — changes affect " +
|
|
597
|
+
"all agents and all sessions, so use it deliberately. Actions: 'status' (current running state — " +
|
|
598
|
+
"always safe), 'start' (idempotently ensure the loop is running; optionally tune batch size / poll " +
|
|
599
|
+
"interval), 'stop' (halt embedding fleet-wide — semantic search degrades to lexical until restarted), " +
|
|
600
|
+
"'configure' (replace the embedding endpoint; rejects a model whose vector dimension differs from the " +
|
|
601
|
+
"column, since that needs a schema migration + full re-embed). Prefer 'status' first; only 'stop' when " +
|
|
602
|
+
"an operator explicitly asks, because new and updated facts stop getting embeddings while it is stopped.",
|
|
603
|
+
parameters: {
|
|
604
|
+
type: "object",
|
|
605
|
+
properties: {
|
|
606
|
+
action: {
|
|
607
|
+
type: "string",
|
|
608
|
+
enum: ["status", "start", "stop", "configure"],
|
|
609
|
+
description: "status = read-only; start/stop = lifecycle; configure = replace endpoint.",
|
|
610
|
+
},
|
|
611
|
+
intervalSeconds: {
|
|
612
|
+
type: "number",
|
|
613
|
+
description: "start only: seconds between embed passes (loop poll interval).",
|
|
614
|
+
},
|
|
615
|
+
batch: {
|
|
616
|
+
type: "number",
|
|
617
|
+
description: "start only: rows embedded per pass.",
|
|
618
|
+
},
|
|
619
|
+
reason: {
|
|
620
|
+
type: "string",
|
|
621
|
+
description: "stop only: human-readable reason recorded for the cancellation.",
|
|
622
|
+
},
|
|
623
|
+
endpoint: {
|
|
624
|
+
type: "object",
|
|
625
|
+
description: "configure only: OpenAI/Azure-compatible embeddings endpoint. `dim` MUST match the " +
|
|
626
|
+
"column dimension fixed at migration time.",
|
|
627
|
+
properties: {
|
|
628
|
+
url: { type: "string", description: "Embeddings endpoint URL." },
|
|
629
|
+
model: { type: "string", description: "Model / deployment name." },
|
|
630
|
+
dim: { type: "number", description: "Vector dimension (must match the column)." },
|
|
631
|
+
apiKey: { type: "string", description: "API key (optional)." },
|
|
632
|
+
apiKeyHeader: { type: "string", description: "Auth header name (default 'api-key')." },
|
|
633
|
+
bearer: { type: "boolean", description: "Send the key as 'Bearer <key>' (default false)." },
|
|
634
|
+
},
|
|
635
|
+
required: ["url", "model", "dim"],
|
|
636
|
+
},
|
|
637
|
+
},
|
|
638
|
+
required: ["action"],
|
|
639
|
+
},
|
|
640
|
+
handler: async (a) => {
|
|
641
|
+
try {
|
|
642
|
+
switch (a.action) {
|
|
643
|
+
case "status":
|
|
644
|
+
return { action: "status", ...(await enhancedFactStore.embedderStatus()) };
|
|
645
|
+
case "start":
|
|
646
|
+
return {
|
|
647
|
+
action: "start",
|
|
648
|
+
...(await enhancedFactStore.startEmbedder({
|
|
649
|
+
intervalSeconds: a.intervalSeconds,
|
|
650
|
+
batch: a.batch,
|
|
651
|
+
})),
|
|
652
|
+
};
|
|
653
|
+
case "stop":
|
|
654
|
+
return { action: "stop", ...(await enhancedFactStore.stopEmbedder(a.reason)) };
|
|
655
|
+
case "configure": {
|
|
656
|
+
if (!a.endpoint) {
|
|
657
|
+
return { error: "configure requires an 'endpoint' object with url, model, and dim." };
|
|
658
|
+
}
|
|
659
|
+
return {
|
|
660
|
+
action: "configure",
|
|
661
|
+
...(await enhancedFactStore.configureEmbedder(a.endpoint, { restartIfRunning: true })),
|
|
662
|
+
};
|
|
663
|
+
}
|
|
664
|
+
default:
|
|
665
|
+
return { error: `Unknown action '${a.action}'. Use status, start, stop, or configure.` };
|
|
666
|
+
}
|
|
667
|
+
}
|
|
668
|
+
catch (err) {
|
|
669
|
+
// Surface the provider's error to the agent (e.g. dim mismatch on
|
|
670
|
+
// configure) rather than throwing out of the tool call.
|
|
671
|
+
return { error: err instanceof Error ? err.message : String(err) };
|
|
672
|
+
}
|
|
673
|
+
},
|
|
674
|
+
}));
|
|
675
|
+
}
|
|
676
|
+
return [storeTool, readTool, deleteTool, ...managerTools, ...enhancedTools];
|
|
677
|
+
}
|
|
678
|
+
function safeParse(s) {
|
|
679
|
+
try {
|
|
680
|
+
return JSON.parse(s);
|
|
681
|
+
}
|
|
682
|
+
catch {
|
|
683
|
+
return undefined;
|
|
684
|
+
}
|
|
252
685
|
}
|
|
253
686
|
//# sourceMappingURL=facts-tools.js.map
|
package/dist/facts-tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facts-tools.js","sourceRoot":"","sources":["../src/facts-tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"facts-tools.js","sourceRoot":"","sources":["../src/facts-tools.ts"],"names":[],"mappings":"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"}
|