@animalabs/agent-framework 0.26.2 → 0.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +56 -6
- package/dist/src/agent.d.ts +263 -22
- package/dist/src/agent.d.ts.map +1 -1
- package/dist/src/agent.js +531 -54
- package/dist/src/agent.js.map +1 -1
- package/dist/src/api/server.d.ts.map +1 -1
- package/dist/src/api/server.js +1 -2
- package/dist/src/api/server.js.map +1 -1
- package/dist/src/auto-continue.d.ts +33 -0
- package/dist/src/auto-continue.d.ts.map +1 -0
- package/dist/src/auto-continue.js +35 -0
- package/dist/src/auto-continue.js.map +1 -0
- package/dist/src/code-execution/isolate/scripts.d.ts +11 -0
- package/dist/src/code-execution/isolate/scripts.d.ts.map +1 -1
- package/dist/src/code-execution/isolate/scripts.js +5 -1
- package/dist/src/code-execution/isolate/scripts.js.map +1 -1
- package/dist/src/framework.d.ts +759 -129
- package/dist/src/framework.d.ts.map +1 -1
- package/dist/src/framework.js +3482 -928
- package/dist/src/framework.js.map +1 -1
- package/dist/src/gate/event-gate.d.ts +309 -46
- package/dist/src/gate/event-gate.d.ts.map +1 -1
- package/dist/src/gate/event-gate.js +2117 -395
- package/dist/src/gate/event-gate.js.map +1 -1
- package/dist/src/gate/index.d.ts +2 -2
- package/dist/src/gate/index.d.ts.map +1 -1
- package/dist/src/gate/index.js +1 -1
- package/dist/src/gate/index.js.map +1 -1
- package/dist/src/gate/recipe-reconcile.d.ts +103 -0
- package/dist/src/gate/recipe-reconcile.d.ts.map +1 -0
- package/dist/src/gate/recipe-reconcile.js +325 -0
- package/dist/src/gate/recipe-reconcile.js.map +1 -0
- package/dist/src/gate/types.d.ts +68 -8
- package/dist/src/gate/types.d.ts.map +1 -1
- package/dist/src/index.d.ts +6 -4
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +5 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcpl/channel-registry.d.ts +433 -113
- package/dist/src/mcpl/channel-registry.d.ts.map +1 -1
- package/dist/src/mcpl/channel-registry.js +1152 -434
- package/dist/src/mcpl/channel-registry.js.map +1 -1
- package/dist/src/mcpl/conversation-router.d.ts +16 -8
- package/dist/src/mcpl/conversation-router.d.ts.map +1 -1
- package/dist/src/mcpl/conversation-router.js +29 -15
- package/dist/src/mcpl/conversation-router.js.map +1 -1
- package/dist/src/mcpl/convert-block.d.ts.map +1 -1
- package/dist/src/mcpl/convert-block.js +14 -2
- package/dist/src/mcpl/convert-block.js.map +1 -1
- package/dist/src/mcpl/hook-orchestrator.d.ts +7 -1
- package/dist/src/mcpl/hook-orchestrator.d.ts.map +1 -1
- package/dist/src/mcpl/hook-orchestrator.js +32 -7
- package/dist/src/mcpl/hook-orchestrator.js.map +1 -1
- package/dist/src/mcpl/index.d.ts +5 -1
- package/dist/src/mcpl/index.d.ts.map +1 -1
- package/dist/src/mcpl/index.js +4 -0
- package/dist/src/mcpl/index.js.map +1 -1
- package/dist/src/mcpl/inference-router.d.ts +14 -2
- package/dist/src/mcpl/inference-router.d.ts.map +1 -1
- package/dist/src/mcpl/inference-router.js +73 -28
- package/dist/src/mcpl/inference-router.js.map +1 -1
- package/dist/src/mcpl/prose-grammar.d.ts +4 -0
- package/dist/src/mcpl/prose-grammar.d.ts.map +1 -1
- package/dist/src/mcpl/prose-grammar.js +6 -0
- package/dist/src/mcpl/prose-grammar.js.map +1 -1
- package/dist/src/mcpl/protocol-family.d.ts.map +1 -1
- package/dist/src/mcpl/protocol-family.js +3 -0
- package/dist/src/mcpl/protocol-family.js.map +1 -1
- package/dist/src/mcpl/push-coalescer.d.ts +20 -2
- package/dist/src/mcpl/push-coalescer.d.ts.map +1 -1
- package/dist/src/mcpl/push-coalescer.js +33 -11
- package/dist/src/mcpl/push-coalescer.js.map +1 -1
- package/dist/src/mcpl/reference-fetcher.d.ts +63 -42
- package/dist/src/mcpl/reference-fetcher.d.ts.map +1 -1
- package/dist/src/mcpl/reference-fetcher.js +177 -145
- package/dist/src/mcpl/reference-fetcher.js.map +1 -1
- package/dist/src/mcpl/references.d.ts +380 -46
- package/dist/src/mcpl/references.d.ts.map +1 -1
- package/dist/src/mcpl/references.js +736 -77
- package/dist/src/mcpl/references.js.map +1 -1
- package/dist/src/mcpl/server-connection.d.ts +82 -3
- package/dist/src/mcpl/server-connection.d.ts.map +1 -1
- package/dist/src/mcpl/server-connection.js +132 -7
- package/dist/src/mcpl/server-connection.js.map +1 -1
- package/dist/src/mcpl/tool-lifecycle.d.ts +11 -0
- package/dist/src/mcpl/tool-lifecycle.d.ts.map +1 -1
- package/dist/src/mcpl/tool-lifecycle.js +21 -0
- package/dist/src/mcpl/tool-lifecycle.js.map +1 -1
- package/dist/src/mcpl/tool-presence.d.ts +259 -0
- package/dist/src/mcpl/tool-presence.d.ts.map +1 -0
- package/dist/src/mcpl/tool-presence.js +628 -0
- package/dist/src/mcpl/tool-presence.js.map +1 -0
- package/dist/src/mcpl/tool-result-normalize.d.ts +9 -3
- package/dist/src/mcpl/tool-result-normalize.d.ts.map +1 -1
- package/dist/src/mcpl/tool-result-normalize.js +14 -6
- package/dist/src/mcpl/tool-result-normalize.js.map +1 -1
- package/dist/src/mcpl/tool-signature.d.ts +39 -0
- package/dist/src/mcpl/tool-signature.d.ts.map +1 -0
- package/dist/src/mcpl/tool-signature.js +292 -0
- package/dist/src/mcpl/tool-signature.js.map +1 -0
- package/dist/src/mcpl/toolset-host.d.ts +200 -0
- package/dist/src/mcpl/toolset-host.d.ts.map +1 -0
- package/dist/src/mcpl/toolset-host.js +621 -0
- package/dist/src/mcpl/toolset-host.js.map +1 -0
- package/dist/src/mcpl/toolsets-module.d.ts +80 -0
- package/dist/src/mcpl/toolsets-module.d.ts.map +1 -0
- package/dist/src/mcpl/toolsets-module.js +431 -0
- package/dist/src/mcpl/toolsets-module.js.map +1 -0
- package/dist/src/mcpl/transport.d.ts +2 -2
- package/dist/src/mcpl/transport.d.ts.map +1 -1
- package/dist/src/mcpl/transport.js +3 -2
- package/dist/src/mcpl/transport.js.map +1 -1
- package/dist/src/mcpl/types.d.ts +21 -1
- package/dist/src/mcpl/types.d.ts.map +1 -1
- package/dist/src/mcpl/types.js.map +1 -1
- package/dist/src/mcpl/visible-content.d.ts +7 -9
- package/dist/src/mcpl/visible-content.d.ts.map +1 -1
- package/dist/src/mcpl/visible-content.js +21 -9
- package/dist/src/mcpl/visible-content.js.map +1 -1
- package/dist/src/module-registry.d.ts +23 -8
- package/dist/src/module-registry.d.ts.map +1 -1
- package/dist/src/module-registry.js +68 -15
- package/dist/src/module-registry.js.map +1 -1
- package/dist/src/modules/discord/index.js +1 -1
- package/dist/src/modules/discord/index.js.map +1 -1
- package/dist/src/modules/history/index.d.ts +2 -1
- package/dist/src/modules/history/index.d.ts.map +1 -1
- package/dist/src/modules/history/index.js +51 -17
- package/dist/src/modules/history/index.js.map +1 -1
- package/dist/src/modules/history/semantic.d.ts +108 -6
- package/dist/src/modules/history/semantic.d.ts.map +1 -1
- package/dist/src/modules/history/semantic.js +273 -57
- package/dist/src/modules/history/semantic.js.map +1 -1
- package/dist/src/modules/workspace/direct-write.d.ts +181 -0
- package/dist/src/modules/workspace/direct-write.d.ts.map +1 -0
- package/dist/src/modules/workspace/direct-write.js +384 -0
- package/dist/src/modules/workspace/direct-write.js.map +1 -0
- package/dist/src/modules/workspace/edit-text.d.ts +26 -12
- package/dist/src/modules/workspace/edit-text.d.ts.map +1 -1
- package/dist/src/modules/workspace/edit-text.js +58 -28
- package/dist/src/modules/workspace/edit-text.js.map +1 -1
- package/dist/src/modules/workspace/effects.d.ts +10 -0
- package/dist/src/modules/workspace/effects.d.ts.map +1 -1
- package/dist/src/modules/workspace/effects.js +1 -1
- package/dist/src/modules/workspace/effects.js.map +1 -1
- package/dist/src/modules/workspace/index.d.ts +246 -27
- package/dist/src/modules/workspace/index.d.ts.map +1 -1
- package/dist/src/modules/workspace/index.js +1216 -236
- package/dist/src/modules/workspace/index.js.map +1 -1
- package/dist/src/modules/workspace/read-page.d.ts +41 -0
- package/dist/src/modules/workspace/read-page.d.ts.map +1 -0
- package/dist/src/modules/workspace/read-page.js +213 -0
- package/dist/src/modules/workspace/read-page.js.map +1 -0
- package/dist/src/modules/workspace/result-text.d.ts +67 -0
- package/dist/src/modules/workspace/result-text.d.ts.map +1 -0
- package/dist/src/modules/workspace/result-text.js +94 -0
- package/dist/src/modules/workspace/result-text.js.map +1 -0
- package/dist/src/modules/workspace/text.d.ts +29 -12
- package/dist/src/modules/workspace/text.d.ts.map +1 -1
- package/dist/src/modules/workspace/text.js +35 -33
- package/dist/src/modules/workspace/text.js.map +1 -1
- package/dist/src/modules/workspace/types.d.ts +41 -17
- package/dist/src/modules/workspace/types.d.ts.map +1 -1
- package/dist/src/modules/workspace/types.js.map +1 -1
- package/dist/src/sent-rows.d.ts +59 -0
- package/dist/src/sent-rows.d.ts.map +1 -0
- package/dist/src/sent-rows.js +145 -0
- package/dist/src/sent-rows.js.map +1 -0
- package/dist/src/silent-heartbeat.d.ts +17 -10
- package/dist/src/silent-heartbeat.d.ts.map +1 -1
- package/dist/src/silent-heartbeat.js.map +1 -1
- package/dist/src/stable-hash.d.ts +3 -0
- package/dist/src/stable-hash.d.ts.map +1 -0
- package/dist/src/stable-hash.js +15 -0
- package/dist/src/stable-hash.js.map +1 -0
- package/dist/src/stored-injections.d.ts +99 -0
- package/dist/src/stored-injections.d.ts.map +1 -0
- package/dist/src/stored-injections.js +106 -0
- package/dist/src/stored-injections.js.map +1 -0
- package/dist/src/text-as-stored.d.ts +4 -3
- package/dist/src/text-as-stored.d.ts.map +1 -1
- package/dist/src/text-as-stored.js +4 -3
- package/dist/src/text-as-stored.js.map +1 -1
- package/dist/src/thinking-drops.d.ts +81 -0
- package/dist/src/thinking-drops.d.ts.map +1 -0
- package/dist/src/thinking-drops.js +103 -0
- package/dist/src/thinking-drops.js.map +1 -0
- package/dist/src/tool-image-ledger.d.ts +9 -8
- package/dist/src/tool-image-ledger.d.ts.map +1 -1
- package/dist/src/tool-image-ledger.js +9 -8
- package/dist/src/tool-image-ledger.js.map +1 -1
- package/dist/src/tool-presentation.d.ts.map +1 -1
- package/dist/src/tool-presentation.js +3 -1
- package/dist/src/tool-presentation.js.map +1 -1
- package/dist/src/tool-result-guard.d.ts +4 -2
- package/dist/src/tool-result-guard.d.ts.map +1 -1
- package/dist/src/tool-result-guard.js +21 -6
- package/dist/src/tool-result-guard.js.map +1 -1
- package/dist/src/tool-result-history.d.ts +176 -24
- package/dist/src/tool-result-history.d.ts.map +1 -1
- package/dist/src/tool-result-history.js +411 -91
- package/dist/src/tool-result-history.js.map +1 -1
- package/dist/src/tune-out/coordinator.d.ts +17 -9
- package/dist/src/tune-out/coordinator.d.ts.map +1 -1
- package/dist/src/tune-out/coordinator.js +84 -37
- package/dist/src/tune-out/coordinator.js.map +1 -1
- package/dist/src/types/agent.d.ts +186 -7
- package/dist/src/types/agent.d.ts.map +1 -1
- package/dist/src/types/events.d.ts +15 -1
- package/dist/src/types/events.d.ts.map +1 -1
- package/dist/src/types/framework.d.ts +24 -3
- package/dist/src/types/framework.d.ts.map +1 -1
- package/dist/src/types/module.d.ts +90 -7
- package/dist/src/types/module.d.ts.map +1 -1
- package/dist/src/types/trace.d.ts +57 -2
- package/dist/src/types/trace.d.ts.map +1 -1
- package/package.json +4 -3
- package/src/agent.ts +593 -60
- package/src/api/server.ts +1 -2
- package/src/auto-continue.ts +42 -0
- package/src/code-execution/isolate/scripts.ts +11 -3
- package/src/framework.ts +3601 -967
- package/src/gate/event-gate.ts +2315 -389
- package/src/gate/index.ts +2 -1
- package/src/gate/recipe-reconcile.ts +355 -0
- package/src/gate/types.ts +70 -8
- package/src/index.ts +7 -4
- package/src/mcpl/channel-registry.ts +1220 -467
- package/src/mcpl/conversation-router.ts +34 -16
- package/src/mcpl/convert-block.ts +14 -1
- package/src/mcpl/hook-orchestrator.ts +33 -6
- package/src/mcpl/index.ts +6 -1
- package/src/mcpl/inference-router.ts +79 -34
- package/src/mcpl/prose-grammar.ts +7 -0
- package/src/mcpl/protocol-family.ts +2 -0
- package/src/mcpl/push-coalescer.ts +51 -13
- package/src/mcpl/reference-fetcher.ts +201 -162
- package/src/mcpl/references.ts +851 -77
- package/src/mcpl/server-connection.ts +145 -7
- package/src/mcpl/tool-lifecycle.ts +21 -0
- package/src/mcpl/tool-presence.ts +650 -0
- package/src/mcpl/tool-result-normalize.ts +18 -6
- package/src/mcpl/tool-signature.ts +285 -0
- package/src/mcpl/toolset-host.ts +637 -0
- package/src/mcpl/toolsets-module.ts +451 -0
- package/src/mcpl/transport.ts +3 -2
- package/src/mcpl/types.ts +22 -1
- package/src/mcpl/visible-content.ts +22 -9
- package/src/module-registry.ts +77 -24
- package/src/modules/discord/index.ts +1 -1
- package/src/modules/history/index.ts +48 -18
- package/src/modules/history/semantic.ts +308 -54
- package/src/modules/workspace/direct-write.ts +425 -0
- package/src/modules/workspace/edit-text.ts +82 -35
- package/src/modules/workspace/effects.ts +1 -1
- package/src/modules/workspace/index.ts +1274 -241
- package/src/modules/workspace/read-page.ts +222 -0
- package/src/modules/workspace/result-text.ts +119 -0
- package/src/modules/workspace/text.ts +58 -32
- package/src/modules/workspace/types.ts +41 -17
- package/src/sent-rows.ts +162 -0
- package/src/silent-heartbeat.ts +17 -10
- package/src/stable-hash.ts +14 -0
- package/src/stored-injections.ts +131 -0
- package/src/text-as-stored.ts +4 -3
- package/src/thinking-drops.ts +141 -0
- package/src/tool-image-ledger.ts +9 -8
- package/src/tool-presentation.ts +3 -1
- package/src/tool-result-guard.ts +19 -6
- package/src/tool-result-history.ts +471 -90
- package/src/tune-out/coordinator.ts +80 -37
- package/src/types/agent.ts +189 -7
- package/src/types/events.ts +15 -1
- package/src/types/framework.ts +21 -3
- package/src/types/module.ts +86 -7
- package/src/types/trace.ts +58 -2
|
@@ -12,7 +12,11 @@
|
|
|
12
12
|
* so a message stamped slightly out of order is still picked up; the
|
|
13
13
|
* service dedups by id + text hash, so re-sending is free. Summaries are
|
|
14
14
|
* watermarked by `createdMs` (a fresh L3 spans months of old timestamps —
|
|
15
|
-
* its creation time is the only monotonic signal).
|
|
15
|
+
* its creation time is the only monotonic signal). Both watermarks are
|
|
16
|
+
* kept in the module's state, which follows the store's branches, so each
|
|
17
|
+
* branch sends its own messages and summaries. A branch made at an earlier
|
|
18
|
+
* point, as an undo makes one, mints summary ids its parent already used,
|
|
19
|
+
* so a summary is keyed `sum:<id>@<created>`.
|
|
16
20
|
*
|
|
17
21
|
* What gets embedded per message: text blocks verbatim, plus the string
|
|
18
22
|
* arguments of the agent's private-prose tools (think / journal / skip_reply
|
|
@@ -29,6 +33,7 @@
|
|
|
29
33
|
*/
|
|
30
34
|
import { safeSlice } from '../../safe-slice.js';
|
|
31
35
|
import { SEND_TOOLS, bareToolName } from '../../send-tools.js';
|
|
36
|
+
import { storedInjectionMarkOf } from '../../stored-injections.js';
|
|
32
37
|
const PRIVATE_PROSE_TOOLS = new Set(['think', 'journal', 'skip_reply', 'private_note']);
|
|
33
38
|
/**
|
|
34
39
|
* Tools whose message argument is what the resident said: the send tools,
|
|
@@ -157,7 +162,12 @@ export class SemanticIndexClient {
|
|
|
157
162
|
}
|
|
158
163
|
}
|
|
159
164
|
async upsert(items) {
|
|
160
|
-
return this.call('POST', `/v1/index/${this.ns}/upsert`, { items }, {
|
|
165
|
+
return this.call('POST', `/v1/index/${this.ns}/upsert`, { items }, {
|
|
166
|
+
// A pass's budget spends the counts, so an answer without them isn't
|
|
167
|
+
// taken as one.
|
|
168
|
+
what: 'counts of the items inserted and updated', is: (json) => isObject(json)
|
|
169
|
+
&& Number.isFinite(json.inserted) && Number.isFinite(json.updated),
|
|
170
|
+
});
|
|
161
171
|
}
|
|
162
172
|
async delete(ids) {
|
|
163
173
|
return this.call('POST', `/v1/index/${this.ns}/delete`, { ids });
|
|
@@ -221,6 +231,11 @@ function authorOf(msg) {
|
|
|
221
231
|
return typeof a === 'string' ? a : null;
|
|
222
232
|
}
|
|
223
233
|
export function messageToItem(msg, cfg) {
|
|
234
|
+
// A stored context injection (stored-injections.ts) is a source's context,
|
|
235
|
+
// such as retrieval's lessons, not something that happened: indexed, it
|
|
236
|
+
// would come back to a search as history.
|
|
237
|
+
if (storedInjectionMarkOf(msg.metadata))
|
|
238
|
+
return null;
|
|
224
239
|
const text = messageIndexText(msg, cfg.includePrivateTools ?? true);
|
|
225
240
|
if (!text)
|
|
226
241
|
return null;
|
|
@@ -239,11 +254,37 @@ export function messageToItem(msg, cfg) {
|
|
|
239
254
|
export function summaryIndexText(s, cfg) {
|
|
240
255
|
return safeSlice(s.content.trim(), 0, cfg.maxChars ?? 32_000);
|
|
241
256
|
}
|
|
257
|
+
/**
|
|
258
|
+
* A summary's index key, `sum:<id>@<created>`. A branch made at an earlier
|
|
259
|
+
* point mints ids its parent already used, so the id alone names two
|
|
260
|
+
* summaries; its creation time, set when it was minted and kept by a branch
|
|
261
|
+
* that inherits it, tells them apart.
|
|
262
|
+
*/
|
|
263
|
+
export function summaryKey(id, createdMs) {
|
|
264
|
+
return `sum:${id}@${createdMs}`;
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* A `sum:` key read back: its summary id, and its creation time, or null for
|
|
268
|
+
* a key in the form written before summaries were keyed by it (`sum:<id>`).
|
|
269
|
+
* Null for a key that isn't a summary's. A finite number written as a string
|
|
270
|
+
* reads back as the same number, so the time compares equal to the
|
|
271
|
+
* summary's own.
|
|
272
|
+
*/
|
|
273
|
+
export function parseSummaryKey(key) {
|
|
274
|
+
if (!key.startsWith('sum:'))
|
|
275
|
+
return null;
|
|
276
|
+
const rest = key.slice(4);
|
|
277
|
+
const at = rest.lastIndexOf('@');
|
|
278
|
+
if (at > 0 && /^-?\d+(?:\.\d+)?(?:e[+-]?\d+)?$/.test(rest.slice(at + 1))) {
|
|
279
|
+
return { id: rest.slice(0, at), createdMs: Number(rest.slice(at + 1)) };
|
|
280
|
+
}
|
|
281
|
+
return rest ? { id: rest, createdMs: null } : null;
|
|
282
|
+
}
|
|
242
283
|
export function summaryToItem(s, cfg) {
|
|
243
284
|
if (!s.content.trim())
|
|
244
285
|
return null;
|
|
245
286
|
return {
|
|
246
|
-
id:
|
|
287
|
+
id: summaryKey(s.id, s.createdMs),
|
|
247
288
|
text: summaryIndexText(s, cfg),
|
|
248
289
|
ts: s.startMs / 1000,
|
|
249
290
|
kind: 'summary',
|
|
@@ -258,6 +299,8 @@ export class SemanticIndexer {
|
|
|
258
299
|
cfg;
|
|
259
300
|
log;
|
|
260
301
|
inFlight = null;
|
|
302
|
+
/** The branch each pass read, by its report, for a search that joined it. */
|
|
303
|
+
passBranch = new WeakMap();
|
|
261
304
|
consecutiveFailures = 0;
|
|
262
305
|
backoffUntil = 0;
|
|
263
306
|
lastError = null;
|
|
@@ -298,6 +341,53 @@ export class SemanticIndexer {
|
|
|
298
341
|
deleteUnsupported = false;
|
|
299
342
|
/** Called whenever the pending edit/remove sets change. */
|
|
300
343
|
onPendingChange = null;
|
|
344
|
+
/**
|
|
345
|
+
* Where the sync cursors are kept, set by the host. Without one, as
|
|
346
|
+
* before the host wires module state or after it unwires it, this indexer
|
|
347
|
+
* goes on from the cursors it last wrote for each branch, which it keeps
|
|
348
|
+
* in memory. A branch it wrote none for starts with none.
|
|
349
|
+
*/
|
|
350
|
+
cursorStore = null;
|
|
351
|
+
/** The cursors this indexer last wrote, by branch id ('' for a store without branches). */
|
|
352
|
+
ownCursors = new Map();
|
|
353
|
+
/** The store's current branch, by id ('' for a store without branches). */
|
|
354
|
+
branchId() {
|
|
355
|
+
return this.cm.currentBranch?.()?.id ?? '';
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* The current branch's cursors for this indexer's index. Cursors kept for
|
|
359
|
+
* another namespace, as before the host's index setting changed, are none
|
|
360
|
+
* here.
|
|
361
|
+
*/
|
|
362
|
+
syncCursors() {
|
|
363
|
+
const c = this.cursorStore ? this.cursorStore.read() : this.ownCursors.get(this.branchId()) ?? null;
|
|
364
|
+
return c && c.namespace === this.cfg.namespace ? c : { summaries: null, messages: null };
|
|
365
|
+
}
|
|
366
|
+
/** Writes the current branch's cursors, which must be `branch`'s. */
|
|
367
|
+
setSyncCursors(c, branch) {
|
|
368
|
+
const cursors = { namespace: this.cfg.namespace, summaries: c.summaries, messages: c.messages };
|
|
369
|
+
this.ownCursors.set(branch, cursors);
|
|
370
|
+
this.cursorStore?.write(cursors);
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* Deletes ids from the index. A 404 in a pass whose /stats answered with
|
|
374
|
+
* stats shows the index is made, so it means a service build without the
|
|
375
|
+
* route: that sets deleteUnsupported and answers the 404's message. Null
|
|
376
|
+
* when the ids are deleted; any other failure throws.
|
|
377
|
+
*/
|
|
378
|
+
async deleteIds(ids, stats) {
|
|
379
|
+
try {
|
|
380
|
+
await this.client.delete(ids);
|
|
381
|
+
return null;
|
|
382
|
+
}
|
|
383
|
+
catch (e) {
|
|
384
|
+
if (e instanceof EmbedServiceError && e.status === 404 && stats !== null) {
|
|
385
|
+
this.deleteUnsupported = true;
|
|
386
|
+
return e.message;
|
|
387
|
+
}
|
|
388
|
+
throw e;
|
|
389
|
+
}
|
|
390
|
+
}
|
|
301
391
|
pendingSnapshot() { return { edited: [...this.editedIds], removed: [...this.removedIds] }; }
|
|
302
392
|
restorePending(p) {
|
|
303
393
|
for (const id of p?.removed ?? []) {
|
|
@@ -335,9 +425,14 @@ export class SemanticIndexer {
|
|
|
335
425
|
}
|
|
336
426
|
dispose() { this.detach?.(); this.detach = null; }
|
|
337
427
|
get backingOff() { return Date.now() < this.backoffUntil; }
|
|
428
|
+
/** The branch the pass that gave this report read, or null if it read none. */
|
|
429
|
+
passedOn(report) { return this.passBranch.get(report) ?? null; }
|
|
338
430
|
/**
|
|
339
|
-
* Push what the index is missing,
|
|
340
|
-
*
|
|
431
|
+
* Push what the index is missing, writing at most `maxItems` items by the
|
|
432
|
+
* service's own count (edits one each), and stopping where that runs out,
|
|
433
|
+
* inside a millisecond or a message page too.
|
|
434
|
+
* Coalesces: a call while a sync is already running returns that run's
|
|
435
|
+
* promise instead of racing it.
|
|
341
436
|
*/
|
|
342
437
|
catchUp(maxItems) {
|
|
343
438
|
if (this.inFlight)
|
|
@@ -359,11 +454,10 @@ export class SemanticIndexer {
|
|
|
359
454
|
let notStats = null;
|
|
360
455
|
try {
|
|
361
456
|
// A 2xx that isn't stats, such as a web page from a wrong route, gives no
|
|
362
|
-
// watermark
|
|
363
|
-
//
|
|
364
|
-
//
|
|
365
|
-
//
|
|
366
|
-
// answer.
|
|
457
|
+
// service watermark, and lastError names the answer. A branch with no
|
|
458
|
+
// message cursor of its own then walks its messages from the beginning,
|
|
459
|
+
// as for a namespace that doesn't exist yet, so a pass whose budget
|
|
460
|
+
// runs out fails on that answer.
|
|
367
461
|
let stats = null;
|
|
368
462
|
try {
|
|
369
463
|
stats = await this.client.stats();
|
|
@@ -376,9 +470,57 @@ export class SemanticIndexer {
|
|
|
376
470
|
// /stats answered 404, which stats() reads as a namespace that doesn't
|
|
377
471
|
// exist: there's no index to remove from.
|
|
378
472
|
const noIndex = stats === null && notStats === null;
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
473
|
+
// This branch's cursors, read at each pass so a switch between passes is
|
|
474
|
+
// seen. They're written only when every read this pass made of the
|
|
475
|
+
// store was on the branch read here, so one branch's pass can't move
|
|
476
|
+
// another's cursor past what that branch hasn't sent. A branch with no
|
|
477
|
+
// message cursor starts from the service's watermark, as before cursors
|
|
478
|
+
// were kept per branch, so an upgrade doesn't walk every history again.
|
|
479
|
+
const branch = this.branchId();
|
|
480
|
+
this.passBranch.set(report, branch);
|
|
481
|
+
// Set when a read of the store finds it on another branch.
|
|
482
|
+
let strayed = false;
|
|
483
|
+
// Set when a delete of summaries' old items fails.
|
|
484
|
+
let oldItemsOwed = false;
|
|
485
|
+
const reading = () => { if (this.branchId() !== branch)
|
|
486
|
+
strayed = true; };
|
|
487
|
+
let kept = this.syncCursors();
|
|
488
|
+
// A namespace that doesn't exist holds nothing of this branch's, as after
|
|
489
|
+
// an index is deleted, so the cursors start over, at once, so a pass
|
|
490
|
+
// that fails partway through sending everything again still finds them
|
|
491
|
+
// over.
|
|
492
|
+
if (noIndex && (kept.summaries !== null || kept.messages !== null)) {
|
|
493
|
+
kept = { summaries: null, messages: null };
|
|
494
|
+
this.setSyncCursors(kept, branch);
|
|
495
|
+
}
|
|
496
|
+
// A branch's cursor is its own while the index holds what it sent, and
|
|
497
|
+
// the index's when it doesn't. Every branch's items are in the one
|
|
498
|
+
// index, so an index whose newest item of a kind is older than the
|
|
499
|
+
// cursor may have lost what this branch sent, as a restore from an
|
|
500
|
+
// older backup leaves it, and the pass walks from the index's newest,
|
|
501
|
+
// as the service's watermark did before cursors were kept. Nothing is
|
|
502
|
+
// lost when the newest the branch walked had nothing to index, such as
|
|
503
|
+
// a summary that's blank once trimmed, or was removed since, and then
|
|
504
|
+
// the pass re-sends what lies between, which the service finds
|
|
505
|
+
// unchanged. A kind the stats don't list has no items left.
|
|
506
|
+
const held = (cursor, kind) => {
|
|
507
|
+
if (cursor === null || stats === null)
|
|
508
|
+
return cursor;
|
|
509
|
+
const newest = stats.by_kind[kind]?.max_cursor ?? null;
|
|
510
|
+
return newest === null ? null : Math.min(cursor, newest);
|
|
511
|
+
};
|
|
512
|
+
const sumCursor = held(kept.summaries, 'summary');
|
|
513
|
+
const msgWm = held(kept.messages, 'message') ?? stats?.by_kind.message?.max_cursor ?? null;
|
|
514
|
+
let sumNext = sumCursor;
|
|
515
|
+
let msgThrough = null;
|
|
516
|
+
// What the pass may still write. Edits spend one each; summaries and
|
|
517
|
+
// messages spend what the service says each upsert wrote (inserted or
|
|
518
|
+
// updated), so a re-send it finds unchanged, such as the overlap's
|
|
519
|
+
// behind the message cursor, spends no budget and can't freeze a pass.
|
|
520
|
+
// A budget of 1.5 writes one item. One that isn't a number is no limit,
|
|
521
|
+
// as it was before the budget counted writes, and chunks stay a batch.
|
|
522
|
+
const floored = Math.floor(maxItems);
|
|
523
|
+
let budget = Number.isNaN(floored) ? Infinity : floored;
|
|
382
524
|
let pending = [];
|
|
383
525
|
const flush = async () => {
|
|
384
526
|
if (pending.length === 0)
|
|
@@ -388,8 +530,12 @@ export class SemanticIndexer {
|
|
|
388
530
|
report.inserted += r.inserted;
|
|
389
531
|
report.updated += r.updated;
|
|
390
532
|
report.unchanged += r.unchanged;
|
|
533
|
+
budget -= r.inserted + r.updated;
|
|
391
534
|
pending = [];
|
|
392
535
|
};
|
|
536
|
+
/** Pending items are sent once they could write all the budget left,
|
|
537
|
+
* so a pass never writes more than its budget. */
|
|
538
|
+
const full = () => pending.length >= Math.min(batchSize, budget);
|
|
393
539
|
// Edits and removals first: they never come back round in the time walk.
|
|
394
540
|
// This phase fails on its own: a failure re-queues its ids, is logged
|
|
395
541
|
// and reported via lastError, and the tick falls through to summaries
|
|
@@ -438,37 +584,32 @@ export class SemanticIndexer {
|
|
|
438
584
|
// search-time checks (on-branch, still indexable) keep them out of
|
|
439
585
|
// results.
|
|
440
586
|
if (toDelete.length > 0 && !noIndex && !this.deleteUnsupported) {
|
|
587
|
+
// What the delete held, by kind, for a warning.
|
|
588
|
+
const what = [
|
|
589
|
+
removed.length > 0 ? `${removed.length} removal(s)` : null,
|
|
590
|
+
blanked.length > 0 ? `${blanked.length} edit(s) down to nothing indexable` : null,
|
|
591
|
+
].filter((s) => s !== null).join(' and ');
|
|
441
592
|
try {
|
|
442
|
-
await this.
|
|
443
|
-
|
|
444
|
-
catch (e) {
|
|
445
|
-
const msg = e instanceof Error ? e.message : String(e);
|
|
446
|
-
// What the delete held, by kind, for the warning.
|
|
447
|
-
const what = [
|
|
448
|
-
removed.length > 0 ? `${removed.length} removal(s)` : null,
|
|
449
|
-
blanked.length > 0 ? `${blanked.length} edit(s) down to nothing indexable` : null,
|
|
450
|
-
].filter((s) => s !== null).join(' and ');
|
|
451
|
-
if (e instanceof EmbedServiceError && e.status === 404 && stats !== null) {
|
|
452
|
-
// This pass's /stats answered with stats, so the index is made
|
|
453
|
-
// and the 404 is the route's: a service build without /delete.
|
|
454
|
-
this.deleteUnsupported = true;
|
|
593
|
+
const missing = await this.deleteIds(toDelete, stats);
|
|
594
|
+
if (missing !== null) {
|
|
455
595
|
this.warn(`/delete answered 404, so the service lacks that route; dropping ${what}. Later removals and edits `
|
|
456
596
|
+ `down to nothing indexable are dropped too, until the host restarts or binds the history module `
|
|
457
|
-
+ `again: ${
|
|
458
|
-
}
|
|
459
|
-
else {
|
|
460
|
-
// Any other failure, and a 404 in a pass whose /stats answered
|
|
461
|
-
// with something that isn't stats, which doesn't show the index
|
|
462
|
-
// is made: re-queued, for a later pass.
|
|
463
|
-
for (const id of removed)
|
|
464
|
-
this.removedIds.add(id);
|
|
465
|
-
for (const id of blanked)
|
|
466
|
-
if (!this.removedIds.has(id))
|
|
467
|
-
this.editedIds.add(id);
|
|
468
|
-
phaseErrors.push(msg);
|
|
469
|
-
this.warn(`delete failed, ${what} re-queued: ${msg}`);
|
|
597
|
+
+ `again: ${missing}`);
|
|
470
598
|
}
|
|
471
599
|
}
|
|
600
|
+
catch (e) {
|
|
601
|
+
// Any other failure, and a 404 in a pass whose /stats answered
|
|
602
|
+
// with something that isn't stats, which doesn't show the index
|
|
603
|
+
// is made: re-queued, for a later pass.
|
|
604
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
605
|
+
for (const id of removed)
|
|
606
|
+
this.removedIds.add(id);
|
|
607
|
+
for (const id of blanked)
|
|
608
|
+
if (!this.removedIds.has(id))
|
|
609
|
+
this.editedIds.add(id);
|
|
610
|
+
phaseErrors.push(msg);
|
|
611
|
+
this.warn(`delete failed, ${what} re-queued: ${msg}`);
|
|
612
|
+
}
|
|
472
613
|
}
|
|
473
614
|
try {
|
|
474
615
|
for (let i = 0; i < toUpsert.length; i += batchSize) {
|
|
@@ -493,27 +634,78 @@ export class SemanticIndexer {
|
|
|
493
634
|
// Summaries before messages: they are few, and a message backlog that
|
|
494
635
|
// exceeds every tick's budget must not keep new summaries out forever.
|
|
495
636
|
{
|
|
637
|
+
const cursor = sumCursor;
|
|
638
|
+
reading();
|
|
496
639
|
const all = this.cm.getSummariesInRange({ fromMs: 0, toMs: Number.MAX_SAFE_INTEGER });
|
|
497
640
|
report.summariesScanned = all.length;
|
|
498
|
-
// `>=`:
|
|
499
|
-
//
|
|
500
|
-
//
|
|
501
|
-
|
|
641
|
+
// `>=`: a summary minted in the cursor's millisecond after the pass
|
|
642
|
+
// that wrote it read the store is sent by the next one. Re-sending
|
|
643
|
+
// the others there is a dedup no-op for the service and costs no
|
|
644
|
+
// budget.
|
|
645
|
+
const fresh = all.filter((s) => cursor === null || s.createdMs >= cursor).sort((a, b) => a.createdMs - b.createdMs);
|
|
646
|
+
// Through which creation time this pass sent every summary it read.
|
|
647
|
+
// A pass whose budget runs out inside a millisecond leaves the cursor
|
|
648
|
+
// at the one before, so the next pass sends the rest of that
|
|
649
|
+
// millisecond, re-sending what this one wrote of it at no cost, and
|
|
650
|
+
// counts all of it as new for the old keys below.
|
|
651
|
+
let through = null;
|
|
652
|
+
// The millisecond of the summaries being sent.
|
|
653
|
+
let at = null;
|
|
654
|
+
let finished = true;
|
|
655
|
+
// Each newly sent summary's key in the form written before keys
|
|
656
|
+
// carried the creation time, for deleting once its new item is in.
|
|
657
|
+
const oldKeys = [];
|
|
502
658
|
for (const s of fresh) {
|
|
659
|
+
if (s.createdMs !== at) {
|
|
660
|
+
through = at;
|
|
661
|
+
at = s.createdMs;
|
|
662
|
+
}
|
|
503
663
|
if (budget <= 0) {
|
|
504
664
|
report.more = true;
|
|
665
|
+
finished = false;
|
|
505
666
|
break;
|
|
506
667
|
}
|
|
507
668
|
const item = summaryToItem(s, this.cfg);
|
|
508
669
|
if (!item)
|
|
509
670
|
continue;
|
|
510
671
|
pending.push(item);
|
|
511
|
-
if (
|
|
512
|
-
|
|
513
|
-
if (
|
|
672
|
+
if (cursor === null || s.createdMs > cursor)
|
|
673
|
+
oldKeys.push(`sum:${s.id}`);
|
|
674
|
+
if (full())
|
|
514
675
|
await flush();
|
|
515
676
|
}
|
|
516
677
|
await flush();
|
|
678
|
+
if (finished)
|
|
679
|
+
through = at;
|
|
680
|
+
// The index's old items go once their summaries' new ones are in, a
|
|
681
|
+
// batch of ids to a request. On a service without /delete they stay,
|
|
682
|
+
// and search leaves them out. A failed delete leaves the cursor, so
|
|
683
|
+
// the next pass sends those summaries again, which the service finds
|
|
684
|
+
// unchanged, and deletes again.
|
|
685
|
+
let deleted = true;
|
|
686
|
+
if (oldKeys.length > 0 && !noIndex && !this.deleteUnsupported) {
|
|
687
|
+
try {
|
|
688
|
+
let missing = null;
|
|
689
|
+
for (let i = 0; i < oldKeys.length && missing === null; i += batchSize) {
|
|
690
|
+
missing = await this.deleteIds(oldKeys.slice(i, i + batchSize), stats);
|
|
691
|
+
}
|
|
692
|
+
if (missing !== null) {
|
|
693
|
+
this.warn(`/delete answered 404, so the service lacks that route; any items these ${oldKeys.length} summaries had `
|
|
694
|
+
+ `from before keys carried the creation time stay, and search leaves them out. Later removals and edits `
|
|
695
|
+
+ `down to nothing indexable are dropped too, until the host restarts or binds the history module `
|
|
696
|
+
+ `again: ${missing}`);
|
|
697
|
+
}
|
|
698
|
+
}
|
|
699
|
+
catch (e) {
|
|
700
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
701
|
+
deleted = false;
|
|
702
|
+
oldItemsOwed = true;
|
|
703
|
+
phaseErrors.push(msg);
|
|
704
|
+
this.warn(`deleting ${oldKeys.length} summaries' items from before they were keyed by creation time failed; the next pass tries again: ${msg}`);
|
|
705
|
+
}
|
|
706
|
+
}
|
|
707
|
+
if (deleted && through !== null)
|
|
708
|
+
sumNext = through;
|
|
517
709
|
}
|
|
518
710
|
// Messages: walk forward from (watermark - overlap) via the time index.
|
|
519
711
|
// Sound because rows are stamped at append time (CM addMessage takes no
|
|
@@ -527,31 +719,43 @@ export class SemanticIndexer {
|
|
|
527
719
|
// of more than a page within one millisecond is walked, not jumped.
|
|
528
720
|
let offset = 0;
|
|
529
721
|
const pageSize = 256;
|
|
530
|
-
|
|
722
|
+
// The walk starts with the overlap's re-sends, which spend no budget, but
|
|
723
|
+
// like every chunk go out no bigger than the budget left, so a pass
|
|
724
|
+
// whose summaries left little sends them a few at a time.
|
|
725
|
+
for (let stopped = false; !stopped;) {
|
|
531
726
|
if (budget <= 0) {
|
|
532
727
|
report.more = true;
|
|
533
728
|
break;
|
|
534
729
|
}
|
|
730
|
+
reading();
|
|
535
731
|
const page = this.cm.queryMessagesByTime({ fromMs, offset, limit: pageSize });
|
|
536
732
|
const msgs = page.messages;
|
|
537
733
|
report.messagesScanned += msgs.length;
|
|
538
734
|
for (const m of msgs) {
|
|
735
|
+
// Only what the service writes spends the budget (flush). The
|
|
736
|
+
// overlap re-walk behind the watermark is a dedup no-op for the
|
|
737
|
+
// service, and it must be one for the budget too: when the overlap
|
|
738
|
+
// window held more messages than a tick's budget, every tick spent
|
|
739
|
+
// it all re-sending the same indexed items and never reached the
|
|
740
|
+
// first new one — the index froze at the watermark while reporting
|
|
741
|
+
// merely `more: true`. A pass stops inside a page once the budget
|
|
742
|
+
// is spent; the next one's overlap sends the rest of the
|
|
743
|
+
// millisecond it stopped in.
|
|
744
|
+
if (budget <= 0) {
|
|
745
|
+
report.more = true;
|
|
746
|
+
stopped = true;
|
|
747
|
+
break;
|
|
748
|
+
}
|
|
539
749
|
const item = messageToItem(m, this.cfg);
|
|
540
750
|
if (!item)
|
|
541
751
|
continue;
|
|
542
752
|
pending.push(item);
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
// than a tick's budget, every tick spent it all re-sending the same
|
|
547
|
-
// indexed items and never reached the first new one — the index
|
|
548
|
-
// froze at the watermark while reporting merely `more: true`.
|
|
549
|
-
if (msgWm === null || item.cursor === undefined || item.cursor > msgWm)
|
|
550
|
-
budget--;
|
|
551
|
-
if (pending.length >= batchSize)
|
|
753
|
+
if (item.cursor !== undefined && (msgThrough === null || item.cursor > msgThrough))
|
|
754
|
+
msgThrough = item.cursor;
|
|
755
|
+
if (full())
|
|
552
756
|
await flush();
|
|
553
757
|
}
|
|
554
|
-
if (msgs.length < pageSize)
|
|
758
|
+
if (stopped || msgs.length < pageSize)
|
|
555
759
|
break;
|
|
556
760
|
const lastMs = msgs[msgs.length - 1].timestamp.getTime();
|
|
557
761
|
const atLast = msgs.filter((m) => m.timestamp.getTime() === lastMs).length;
|
|
@@ -559,8 +763,20 @@ export class SemanticIndexer {
|
|
|
559
763
|
fromMs = lastMs;
|
|
560
764
|
}
|
|
561
765
|
await flush();
|
|
766
|
+
// Every send of this pass is in, so its cursors stand, unless the store
|
|
767
|
+
// left the branch the pass read during it: what it read may then be
|
|
768
|
+
// another branch's. A pass that moves neither cursor writes no state.
|
|
769
|
+
const msgNext = msgThrough ?? msgWm;
|
|
770
|
+
const left = strayed || this.branchId() !== branch;
|
|
771
|
+
if ((sumNext !== kept.summaries || msgNext !== kept.messages) && !left) {
|
|
772
|
+
this.setSyncCursors({ summaries: sumNext, messages: msgNext }, branch);
|
|
773
|
+
}
|
|
562
774
|
if (notStats && report.more)
|
|
563
775
|
throw notStats;
|
|
776
|
+
// The current branch may then have items this pass didn't send, and
|
|
777
|
+
// old items a failed delete left are still to go.
|
|
778
|
+
if (left || oldItemsOwed)
|
|
779
|
+
report.more = true;
|
|
564
780
|
this.consecutiveFailures = 0;
|
|
565
781
|
this.lastError = named(notStats?.message ?? null, ...phaseErrors);
|
|
566
782
|
this.lastSyncAt = Date.now();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semantic.js","sourceRoot":"","sources":["../../../../src/modules/history/semantic.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"semantic.js","sourceRoot":"","sources":["../../../../src/modules/history/semantic.ts"],"names":[],"mappings":"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"}
|