@animalabs/agent-framework 0.32.0 → 0.34.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 +340 -22
- package/dist/src/admission/admit.d.ts +18 -0
- package/dist/src/admission/admit.d.ts.map +1 -1
- package/dist/src/admission/admit.js +16 -3
- package/dist/src/admission/admit.js.map +1 -1
- package/dist/src/agent.d.ts +208 -80
- package/dist/src/agent.d.ts.map +1 -1
- package/dist/src/agent.js +345 -113
- package/dist/src/agent.js.map +1 -1
- package/dist/src/api/mcp-server-core.d.ts.map +1 -1
- package/dist/src/api/mcp-server-core.js +50 -12
- package/dist/src/api/mcp-server-core.js.map +1 -1
- package/dist/src/api/server.d.ts.map +1 -1
- package/dist/src/api/server.js +4 -20
- package/dist/src/api/server.js.map +1 -1
- package/dist/src/append-all.d.ts +5 -0
- package/dist/src/append-all.d.ts.map +1 -0
- package/dist/src/append-all.js +8 -0
- package/dist/src/append-all.js.map +1 -0
- package/dist/src/code-execution/isolate/scripts.d.ts +12 -8
- package/dist/src/code-execution/isolate/scripts.d.ts.map +1 -1
- package/dist/src/code-execution/isolate/scripts.js +24 -0
- package/dist/src/code-execution/isolate/scripts.js.map +1 -1
- package/dist/src/config-checks.d.ts +7 -0
- package/dist/src/config-checks.d.ts.map +1 -1
- package/dist/src/config-checks.js +14 -0
- package/dist/src/config-checks.js.map +1 -1
- package/dist/src/context-manager-errors.d.ts +25 -0
- package/dist/src/context-manager-errors.d.ts.map +1 -0
- package/dist/src/context-manager-errors.js +31 -0
- package/dist/src/context-manager-errors.js.map +1 -0
- package/dist/src/context-options.d.ts +70 -0
- package/dist/src/context-options.d.ts.map +1 -0
- package/dist/src/context-options.js +90 -0
- package/dist/src/context-options.js.map +1 -0
- package/dist/src/cut-off-round.js +4 -4
- package/dist/src/deferred-import.d.ts +93 -0
- package/dist/src/deferred-import.d.ts.map +1 -0
- package/dist/src/deferred-import.js +177 -0
- package/dist/src/deferred-import.js.map +1 -0
- package/dist/src/dendrite/audience.d.ts +223 -0
- package/dist/src/dendrite/audience.d.ts.map +1 -0
- package/dist/src/dendrite/audience.js +202 -0
- package/dist/src/dendrite/audience.js.map +1 -0
- package/dist/src/dendrite/index.d.ts +5 -3
- package/dist/src/dendrite/index.d.ts.map +1 -1
- package/dist/src/dendrite/index.js +2 -1
- package/dist/src/dendrite/index.js.map +1 -1
- package/dist/src/dendrite/presets.d.ts +10 -5
- package/dist/src/dendrite/presets.d.ts.map +1 -1
- package/dist/src/dendrite/presets.js +17 -5
- package/dist/src/dendrite/presets.js.map +1 -1
- package/dist/src/dendrite/registry.d.ts +62 -7
- package/dist/src/dendrite/registry.d.ts.map +1 -1
- package/dist/src/dendrite/registry.js +183 -12
- package/dist/src/dendrite/registry.js.map +1 -1
- package/dist/src/dendrite/types.d.ts +91 -8
- package/dist/src/dendrite/types.d.ts.map +1 -1
- package/dist/src/failure-text.d.ts +36 -0
- package/dist/src/failure-text.d.ts.map +1 -0
- package/dist/src/failure-text.js +89 -0
- package/dist/src/failure-text.js.map +1 -0
- package/dist/src/foreign-rounds.d.ts +69 -0
- package/dist/src/foreign-rounds.d.ts.map +1 -0
- package/dist/src/foreign-rounds.js +152 -0
- package/dist/src/foreign-rounds.js.map +1 -0
- package/dist/src/framework.d.ts +2064 -842
- package/dist/src/framework.d.ts.map +1 -1
- package/dist/src/framework.js +8586 -3739
- package/dist/src/framework.js.map +1 -1
- package/dist/src/gate/event-gate.d.ts +125 -21
- package/dist/src/gate/event-gate.d.ts.map +1 -1
- package/dist/src/gate/event-gate.js +487 -72
- package/dist/src/gate/event-gate.js.map +1 -1
- package/dist/src/gate/index.d.ts +1 -1
- package/dist/src/gate/index.d.ts.map +1 -1
- package/dist/src/gate/index.js.map +1 -1
- package/dist/src/gate/reply-judge.d.ts +4 -0
- package/dist/src/gate/reply-judge.d.ts.map +1 -1
- package/dist/src/gate/reply-judge.js +12 -3
- package/dist/src/gate/reply-judge.js.map +1 -1
- package/dist/src/gate/rule-scope.d.ts +30 -0
- package/dist/src/gate/rule-scope.d.ts.map +1 -0
- package/dist/src/gate/rule-scope.js +41 -0
- package/dist/src/gate/rule-scope.js.map +1 -0
- package/dist/src/gate/suppress-script-worker.d.ts +2 -0
- package/dist/src/gate/suppress-script-worker.d.ts.map +1 -0
- package/dist/src/gate/suppress-script-worker.js +103 -0
- package/dist/src/gate/suppress-script-worker.js.map +1 -0
- package/dist/src/gate/suppress-scripts.d.ts +105 -0
- package/dist/src/gate/suppress-scripts.d.ts.map +1 -0
- package/dist/src/gate/suppress-scripts.js +403 -0
- package/dist/src/gate/suppress-scripts.js.map +1 -0
- package/dist/src/gate/suppression-review.d.ts +143 -0
- package/dist/src/gate/suppression-review.d.ts.map +1 -0
- package/dist/src/gate/suppression-review.js +463 -0
- package/dist/src/gate/suppression-review.js.map +1 -0
- package/dist/src/gate/suppression-stats.d.ts +125 -0
- package/dist/src/gate/suppression-stats.d.ts.map +1 -0
- package/dist/src/gate/suppression-stats.js +214 -0
- package/dist/src/gate/suppression-stats.js.map +1 -0
- package/dist/src/gate/types.d.ts +142 -7
- package/dist/src/gate/types.d.ts.map +1 -1
- package/dist/src/gate/wake-onboarding.d.ts +119 -0
- package/dist/src/gate/wake-onboarding.d.ts.map +1 -0
- package/dist/src/gate/wake-onboarding.js +277 -0
- package/dist/src/gate/wake-onboarding.js.map +1 -0
- package/dist/src/heartbeat/heartbeat.js +1 -1
- package/dist/src/heartbeat/heartbeat.js.map +1 -1
- package/dist/src/held-writes.d.ts +31 -23
- package/dist/src/held-writes.d.ts.map +1 -1
- package/dist/src/held-writes.js +44 -59
- package/dist/src/held-writes.js.map +1 -1
- package/dist/src/index.d.ts +6 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +4 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/inference-bounds.d.ts +2 -1
- package/dist/src/inference-bounds.d.ts.map +1 -1
- package/dist/src/inference-bounds.js +9 -6
- package/dist/src/inference-bounds.js.map +1 -1
- package/dist/src/jsonrpc-envelope.d.ts +69 -0
- package/dist/src/jsonrpc-envelope.d.ts.map +1 -0
- package/dist/src/jsonrpc-envelope.js +66 -0
- package/dist/src/jsonrpc-envelope.js.map +1 -0
- package/dist/src/mcpl/channel-registry.d.ts +188 -28
- package/dist/src/mcpl/channel-registry.d.ts.map +1 -1
- package/dist/src/mcpl/channel-registry.js +426 -70
- package/dist/src/mcpl/channel-registry.js.map +1 -1
- package/dist/src/mcpl/checkpoint-manager.d.ts +2 -4
- package/dist/src/mcpl/checkpoint-manager.d.ts.map +1 -1
- package/dist/src/mcpl/checkpoint-manager.js.map +1 -1
- package/dist/src/mcpl/feature-set-manager.d.ts +2 -4
- package/dist/src/mcpl/feature-set-manager.d.ts.map +1 -1
- package/dist/src/mcpl/feature-set-manager.js.map +1 -1
- package/dist/src/mcpl/inbound-source.d.ts +2 -1
- package/dist/src/mcpl/inbound-source.d.ts.map +1 -1
- package/dist/src/mcpl/inbound-source.js +2 -1
- package/dist/src/mcpl/inbound-source.js.map +1 -1
- package/dist/src/mcpl/inference-router.d.ts +6 -6
- package/dist/src/mcpl/inference-router.d.ts.map +1 -1
- package/dist/src/mcpl/inference-router.js.map +1 -1
- package/dist/src/mcpl/modern-connection.d.ts +109 -15
- package/dist/src/mcpl/modern-connection.d.ts.map +1 -1
- package/dist/src/mcpl/modern-connection.js +593 -86
- package/dist/src/mcpl/modern-connection.js.map +1 -1
- package/dist/src/mcpl/protocol-family.d.ts +3 -1
- package/dist/src/mcpl/protocol-family.d.ts.map +1 -1
- package/dist/src/mcpl/protocol-family.js +15 -9
- package/dist/src/mcpl/protocol-family.js.map +1 -1
- package/dist/src/mcpl/push-coalescer.d.ts +132 -22
- package/dist/src/mcpl/push-coalescer.d.ts.map +1 -1
- package/dist/src/mcpl/push-coalescer.js +105 -15
- package/dist/src/mcpl/push-coalescer.js.map +1 -1
- package/dist/src/mcpl/push-handler.d.ts +9 -7
- package/dist/src/mcpl/push-handler.d.ts.map +1 -1
- package/dist/src/mcpl/push-handler.js.map +1 -1
- package/dist/src/mcpl/server-connection.d.ts +50 -28
- package/dist/src/mcpl/server-connection.d.ts.map +1 -1
- package/dist/src/mcpl/server-connection.js +165 -72
- package/dist/src/mcpl/server-connection.js.map +1 -1
- package/dist/src/mcpl/tool-classes.d.ts.map +1 -1
- package/dist/src/mcpl/tool-classes.js +3 -0
- package/dist/src/mcpl/tool-classes.js.map +1 -1
- package/dist/src/mcpl/tool-presence.d.ts.map +1 -1
- package/dist/src/mcpl/tool-presence.js +10 -6
- package/dist/src/mcpl/tool-presence.js.map +1 -1
- package/dist/src/mcpl/toolset-host.d.ts.map +1 -1
- package/dist/src/mcpl/toolset-host.js +7 -6
- package/dist/src/mcpl/toolset-host.js.map +1 -1
- package/dist/src/mcpl/toolsets-module.d.ts.map +1 -1
- package/dist/src/mcpl/toolsets-module.js +2 -1
- package/dist/src/mcpl/toolsets-module.js.map +1 -1
- package/dist/src/mcpl/types.d.ts +33 -6
- package/dist/src/mcpl/types.d.ts.map +1 -1
- package/dist/src/mcpl/types.js.map +1 -1
- package/dist/src/module-registry.d.ts +24 -1
- package/dist/src/module-registry.d.ts.map +1 -1
- package/dist/src/module-registry.js +68 -18
- package/dist/src/module-registry.js.map +1 -1
- package/dist/src/modules/discord/index.d.ts +45 -8
- package/dist/src/modules/discord/index.d.ts.map +1 -1
- package/dist/src/modules/discord/index.js +238 -87
- package/dist/src/modules/discord/index.js.map +1 -1
- package/dist/src/modules/health/index.js +2 -2
- package/dist/src/modules/health/index.js.map +1 -1
- package/dist/src/modules/history/index.d.ts +59 -0
- package/dist/src/modules/history/index.d.ts.map +1 -1
- package/dist/src/modules/history/index.js +432 -67
- package/dist/src/modules/history/index.js.map +1 -1
- package/dist/src/modules/history/semantic.d.ts +6 -5
- package/dist/src/modules/history/semantic.d.ts.map +1 -1
- package/dist/src/modules/history/semantic.js +18 -25
- package/dist/src/modules/history/semantic.js.map +1 -1
- package/dist/src/modules/workspace/disk-agreement.d.ts +1 -1
- package/dist/src/modules/workspace/disk-agreement.js +1 -1
- package/dist/src/modules/workspace/index.d.ts +28 -7
- package/dist/src/modules/workspace/index.d.ts.map +1 -1
- package/dist/src/modules/workspace/index.js +80 -25
- package/dist/src/modules/workspace/index.js.map +1 -1
- package/dist/src/modules/workspace/observe.d.ts.map +1 -1
- package/dist/src/modules/workspace/observe.js +2 -1
- package/dist/src/modules/workspace/observe.js.map +1 -1
- package/dist/src/modules/workspace/reconcile.d.ts.map +1 -1
- package/dist/src/modules/workspace/reconcile.js +3 -2
- package/dist/src/modules/workspace/reconcile.js.map +1 -1
- package/dist/src/notice-tags.d.ts +20 -9
- package/dist/src/notice-tags.d.ts.map +1 -1
- package/dist/src/notice-tags.js +20 -9
- package/dist/src/notice-tags.js.map +1 -1
- package/dist/src/operator-log.d.ts +36 -3
- package/dist/src/operator-log.d.ts.map +1 -1
- package/dist/src/operator-log.js +2 -2
- package/dist/src/operator-log.js.map +1 -1
- package/dist/src/presentation.d.ts +747 -0
- package/dist/src/presentation.d.ts.map +1 -0
- package/dist/src/presentation.js +1437 -0
- package/dist/src/presentation.js.map +1 -0
- package/dist/src/prose-drafts.d.ts +15 -11
- package/dist/src/prose-drafts.d.ts.map +1 -1
- package/dist/src/prose-drafts.js +16 -12
- package/dist/src/prose-drafts.js.map +1 -1
- package/dist/src/read-marks.d.ts +192 -0
- package/dist/src/read-marks.d.ts.map +1 -0
- package/dist/src/read-marks.js +242 -0
- package/dist/src/read-marks.js.map +1 -0
- package/dist/src/reasoning-loss.d.ts +5 -0
- package/dist/src/reasoning-loss.d.ts.map +1 -0
- package/dist/src/reasoning-loss.js +8 -0
- package/dist/src/reasoning-loss.js.map +1 -0
- package/dist/src/recovery/offline-branch.d.ts +91 -6
- package/dist/src/recovery/offline-branch.d.ts.map +1 -1
- package/dist/src/recovery/offline-branch.js +277 -32
- package/dist/src/recovery/offline-branch.js.map +1 -1
- package/dist/src/recovery/recover-cli.js +24 -4
- package/dist/src/recovery/recover-cli.js.map +1 -1
- package/dist/src/send-tools.d.ts +5 -9
- package/dist/src/send-tools.d.ts.map +1 -1
- package/dist/src/send-tools.js +40 -7
- package/dist/src/send-tools.js.map +1 -1
- package/dist/src/sent-rows.js +1 -1
- package/dist/src/stored-injections.d.ts +2 -2
- package/dist/src/stored-injections.js +2 -2
- package/dist/src/stored-removal.d.ts +17 -4
- package/dist/src/stored-removal.d.ts.map +1 -1
- package/dist/src/stored-removal.js +29 -5
- package/dist/src/stored-removal.js.map +1 -1
- package/dist/src/supplied-text.d.ts +1 -1
- package/dist/src/supplied-text.js +3 -3
- package/dist/src/supplied-text.js.map +1 -1
- package/dist/src/thinking-drops.d.ts +2 -0
- package/dist/src/thinking-drops.d.ts.map +1 -1
- package/dist/src/thinking-drops.js.map +1 -1
- package/dist/src/tool-presentation.d.ts.map +1 -1
- package/dist/src/tool-presentation.js +38 -9
- package/dist/src/tool-presentation.js.map +1 -1
- package/dist/src/tool-result-guard.d.ts +12 -1
- package/dist/src/tool-result-guard.d.ts.map +1 -1
- package/dist/src/tool-result-guard.js +42 -8
- package/dist/src/tool-result-guard.js.map +1 -1
- package/dist/src/tune-out/coordinator.d.ts +1170 -81
- package/dist/src/tune-out/coordinator.d.ts.map +1 -1
- package/dist/src/tune-out/coordinator.js +3732 -369
- package/dist/src/tune-out/coordinator.js.map +1 -1
- package/dist/src/tune-out/tools.d.ts +114 -17
- package/dist/src/tune-out/tools.d.ts.map +1 -1
- package/dist/src/tune-out/tools.js +89 -28
- package/dist/src/tune-out/tools.js.map +1 -1
- package/dist/src/tune-out/window-anchor.d.ts +143 -0
- package/dist/src/tune-out/window-anchor.d.ts.map +1 -0
- package/dist/src/tune-out/window-anchor.js +202 -0
- package/dist/src/tune-out/window-anchor.js.map +1 -0
- package/dist/src/types/agent.d.ts +121 -25
- package/dist/src/types/agent.d.ts.map +1 -1
- package/dist/src/types/events.d.ts +2 -0
- package/dist/src/types/events.d.ts.map +1 -1
- package/dist/src/types/framework.d.ts +72 -17
- package/dist/src/types/framework.d.ts.map +1 -1
- package/dist/src/types/inference-log.d.ts +1 -0
- package/dist/src/types/inference-log.d.ts.map +1 -1
- package/dist/src/types/module.d.ts +180 -69
- package/dist/src/types/module.d.ts.map +1 -1
- package/dist/src/types/trace.d.ts +573 -39
- package/dist/src/types/trace.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/admission/admit.ts +32 -3
- package/src/agent.ts +392 -132
- package/src/api/mcp-server-core.ts +54 -17
- package/src/api/server.ts +4 -23
- package/src/append-all.ts +6 -0
- package/src/code-execution/isolate/scripts.ts +28 -3
- package/src/config-checks.ts +14 -0
- package/src/context-manager-errors.ts +37 -0
- package/src/context-options.ts +106 -0
- package/src/cut-off-round.ts +4 -4
- package/src/deferred-import.ts +239 -0
- package/src/dendrite/audience.ts +315 -0
- package/src/dendrite/index.ts +14 -2
- package/src/dendrite/presets.ts +18 -6
- package/src/dendrite/registry.ts +213 -14
- package/src/dendrite/types.ts +92 -8
- package/src/failure-text.ts +88 -0
- package/src/foreign-rounds.ts +199 -0
- package/src/framework.ts +8796 -3813
- package/src/gate/event-gate.ts +518 -91
- package/src/gate/index.ts +3 -0
- package/src/gate/reply-judge.ts +12 -3
- package/src/gate/rule-scope.ts +45 -0
- package/src/gate/suppress-script-worker.ts +89 -0
- package/src/gate/suppress-scripts.ts +414 -0
- package/src/gate/suppression-review.ts +517 -0
- package/src/gate/suppression-stats.ts +314 -0
- package/src/gate/types.ts +148 -7
- package/src/gate/wake-onboarding.ts +309 -0
- package/src/heartbeat/heartbeat.ts +1 -1
- package/src/held-writes.ts +49 -60
- package/src/index.ts +10 -2
- package/src/inference-bounds.ts +11 -6
- package/src/jsonrpc-envelope.ts +81 -0
- package/src/mcpl/channel-registry.ts +513 -116
- package/src/mcpl/checkpoint-manager.ts +3 -2
- package/src/mcpl/feature-set-manager.ts +2 -1
- package/src/mcpl/inbound-source.ts +2 -1
- package/src/mcpl/inference-router.ts +7 -4
- package/src/mcpl/modern-connection.ts +629 -91
- package/src/mcpl/protocol-family.ts +15 -9
- package/src/mcpl/push-coalescer.ts +193 -34
- package/src/mcpl/push-handler.ts +10 -5
- package/src/mcpl/server-connection.ts +169 -75
- package/src/mcpl/tool-classes.ts +3 -0
- package/src/mcpl/tool-presence.ts +10 -5
- package/src/mcpl/toolset-host.ts +7 -6
- package/src/mcpl/toolsets-module.ts +2 -1
- package/src/mcpl/types.ts +33 -6
- package/src/module-registry.ts +73 -17
- package/src/modules/discord/index.ts +230 -82
- package/src/modules/health/index.ts +2 -2
- package/src/modules/history/index.ts +439 -70
- package/src/modules/history/semantic.ts +18 -24
- package/src/modules/workspace/disk-agreement.ts +1 -1
- package/src/modules/workspace/index.ts +89 -26
- package/src/modules/workspace/observe.ts +2 -1
- package/src/modules/workspace/reconcile.ts +3 -2
- package/src/notice-tags.ts +21 -9
- package/src/operator-log.ts +36 -3
- package/src/presentation.ts +1678 -0
- package/src/prose-drafts.ts +16 -12
- package/src/read-marks.ts +328 -0
- package/src/reasoning-loss.ts +7 -0
- package/src/recovery/offline-branch.ts +350 -35
- package/src/recovery/recover-cli.ts +23 -4
- package/src/send-tools.ts +40 -7
- package/src/sent-rows.ts +1 -1
- package/src/stored-injections.ts +2 -2
- package/src/stored-removal.ts +31 -7
- package/src/supplied-text.ts +3 -3
- package/src/thinking-drops.ts +2 -0
- package/src/tool-presentation.ts +34 -9
- package/src/tool-result-guard.ts +41 -7
- package/src/tune-out/coordinator.ts +4121 -472
- package/src/tune-out/tools.ts +162 -44
- package/src/tune-out/window-anchor.ts +277 -0
- package/src/types/agent.ts +122 -25
- package/src/types/events.ts +2 -0
- package/src/types/framework.ts +73 -17
- package/src/types/inference-log.ts +1 -0
- package/src/types/module.ts +181 -68
- package/src/types/trace.ts +607 -43
|
@@ -1,20 +1,25 @@
|
|
|
1
|
+
import { suppressionRecordOf } from '../gate/suppression-stats.js';
|
|
1
2
|
import { JsStore } from '@animalabs/chronicle';
|
|
2
3
|
import { ContextManager, continuesBody } from '@animalabs/context-manager';
|
|
3
4
|
import { removeStoredInterval } from '../stored-removal.js';
|
|
4
5
|
import { firstFreeBranchName } from '../branch-names.js';
|
|
5
6
|
import { DEFAULT_DISCORD_AWARENESS_EMOJI, DiscordAwarenessOutbox, boundDiscordAwarenessText, defaultDiscordAwarenessOutboxPath, checkedDiscordAwarenessMarks, extractDiscordAwarenessRefs, selectDiscordAwarenessRefs, } from './discord-awareness-outbox.js';
|
|
7
|
+
import { appendAll } from '../append-all.js';
|
|
6
8
|
/**
|
|
7
9
|
* Create a safe Chronicle branch while the normal agent host is stopped.
|
|
8
10
|
*
|
|
9
|
-
* History is scanned in bounded windows and blobs are not re-inlined
|
|
10
|
-
*
|
|
11
|
-
* the
|
|
11
|
+
* History is scanned in bounded windows and blobs are not re-inlined, but a
|
|
12
|
+
* presented window (#291) is read whole where its order counts: for a
|
|
13
|
+
* `messages` count, and for the rows after the anchor that the cut returns
|
|
14
|
+
* to the arrivals or keeps (windowAfterCut). The affected messages are never
|
|
15
|
+
* compiled and their content is never written to the recovery outbox; only
|
|
16
|
+
* Discord addressing metadata leaves Chronicle.
|
|
12
17
|
*/
|
|
13
18
|
export async function createOfflineRecoveryBranch(options) {
|
|
14
19
|
const anchorCount = Number(!!options.messageId)
|
|
15
20
|
+ Number(!!options.contextId)
|
|
16
21
|
+ Number(options.messages !== undefined);
|
|
17
|
-
if (anchorCount !== 1) {
|
|
22
|
+
if (anchorCount !== 1 && !(anchorCount === 0 && options.removeSuppressed === true)) {
|
|
18
23
|
throw new Error('Specify exactly one of messageId, contextId, or messages');
|
|
19
24
|
}
|
|
20
25
|
const count = options.messages === undefined ? undefined : Math.floor(options.messages);
|
|
@@ -40,6 +45,16 @@ export async function createOfflineRecoveryBranch(options) {
|
|
|
40
45
|
let targetIndex;
|
|
41
46
|
let removedCount;
|
|
42
47
|
let carriers;
|
|
48
|
+
// Once the agent's window was presented (#291), the branch cut is the
|
|
49
|
+
// write that presented the anchor (branchSequenceOf), not the anchor's
|
|
50
|
+
// own place in the record: the rows stored after the anchor and before
|
|
51
|
+
// that write stay on the branch, and those the window took after the
|
|
52
|
+
// anchor are arrivals again there. Only the rows stored after the cut
|
|
53
|
+
// are removed, and only they are counted, carried and checked.
|
|
54
|
+
const presented = contextManager.windowMode() === 'presented';
|
|
55
|
+
const firstRemovedAfter = (index, anchor) => presented
|
|
56
|
+
? firstIndexAfterCut(contextManager, index, total, contextManager.branchSequenceOf(anchor.id))
|
|
57
|
+
: index + 1;
|
|
43
58
|
if (options.messageId) {
|
|
44
59
|
// Search backward in bounded windows: recovery anchors are normally near
|
|
45
60
|
// the tail, and even a very large Chronicle is never materialized all at
|
|
@@ -52,8 +67,9 @@ export async function createOfflineRecoveryBranch(options) {
|
|
|
52
67
|
}
|
|
53
68
|
target = located.message;
|
|
54
69
|
targetIndex = located.index;
|
|
55
|
-
|
|
56
|
-
|
|
70
|
+
const firstRemoved = firstRemovedAfter(targetIndex, target);
|
|
71
|
+
removedCount = total - firstRemoved;
|
|
72
|
+
carriers = collectDiscordCarriers(contextManager, firstRemoved, total);
|
|
57
73
|
}
|
|
58
74
|
else if (options.contextId) {
|
|
59
75
|
const located = findInternalMessageFromTail(contextManager, total, options.contextId.trim());
|
|
@@ -62,30 +78,71 @@ export async function createOfflineRecoveryBranch(options) {
|
|
|
62
78
|
}
|
|
63
79
|
target = located.message;
|
|
64
80
|
targetIndex = located.index;
|
|
65
|
-
|
|
66
|
-
|
|
81
|
+
const firstRemoved = firstRemovedAfter(targetIndex, target);
|
|
82
|
+
removedCount = total - firstRemoved;
|
|
83
|
+
carriers = collectDiscordCarriers(contextManager, firstRemoved, total);
|
|
84
|
+
}
|
|
85
|
+
else if (presented && count !== undefined) {
|
|
86
|
+
// Counted back in the agent's window, whose order isn't the record's:
|
|
87
|
+
// the anchor is the window's row `count` before its newest. Only the
|
|
88
|
+
// rows of the context's own slot count, as the live undo counts them:
|
|
89
|
+
// the anchor is looked for in that slot, and a window index can name
|
|
90
|
+
// a row of a slot the agent observed (the residents' rows in a
|
|
91
|
+
// persistent subconscious's window). The one context opened here
|
|
92
|
+
// merges no other slot, so its listing holds none of those today; the
|
|
93
|
+
// count doesn't lean on that.
|
|
94
|
+
const window = contextManager.getPresentedMessages().filter((row) => contextManager.getMessage(row.id) !== null);
|
|
95
|
+
if (count >= window.length) {
|
|
96
|
+
throw new Error(`Cannot remove ${count} message(s) — history has ${window.length}; at least one must remain.`);
|
|
97
|
+
}
|
|
98
|
+
const anchor = window[window.length - 1 - count];
|
|
99
|
+
const located = findInternalMessageFromTail(contextManager, total, String(anchor.id));
|
|
100
|
+
if (!located) {
|
|
101
|
+
throw new Error(`The recovery anchor ${String(anchor.id)}, ${count} back in the window, is not in this context's record.`);
|
|
102
|
+
}
|
|
103
|
+
target = located.message;
|
|
104
|
+
targetIndex = located.index;
|
|
105
|
+
const firstRemoved = firstRemovedAfter(targetIndex, target);
|
|
106
|
+
removedCount = total - firstRemoved;
|
|
107
|
+
carriers = collectDiscordCarriers(contextManager, firstRemoved, total);
|
|
67
108
|
}
|
|
68
109
|
else {
|
|
69
110
|
// Count mode remains for compatibility. Read only the target plus suffix,
|
|
70
111
|
// avoiding full-history materialization and attachment blob inflation.
|
|
71
|
-
|
|
112
|
+
// With no anchor (removeSuppressed alone), the target is the newest row,
|
|
113
|
+
// on a presented window too: nothing is cut, the branch starting at the
|
|
114
|
+
// head.
|
|
115
|
+
const dropping = count ?? 0;
|
|
116
|
+
const window = contextManager.getMessageWindow(total - dropping - 1, dropping + 1, {
|
|
72
117
|
resolveBlobs: false,
|
|
73
118
|
}).messages;
|
|
74
119
|
const countTarget = window[0];
|
|
75
120
|
const discarded = window.slice(1);
|
|
76
|
-
if (!countTarget || discarded.length !==
|
|
121
|
+
if (!countTarget || discarded.length !== dropping) {
|
|
77
122
|
throw new Error('Could not read the requested recovery window from Chronicle');
|
|
78
123
|
}
|
|
79
124
|
target = countTarget;
|
|
80
|
-
targetIndex = total -
|
|
81
|
-
removedCount =
|
|
125
|
+
targetIndex = total - dropping - 1;
|
|
126
|
+
removedCount = dropping;
|
|
82
127
|
carriers = discarded.map(addressingOnly);
|
|
83
128
|
}
|
|
84
129
|
validateAnchorBoundary(contextManager, targetIndex, total, target);
|
|
85
|
-
|
|
130
|
+
// The rows the branch keeps are the record's first `total -
|
|
131
|
+
// removedCount`: a suppression may name any of them, those stored after
|
|
132
|
+
// the anchor and kept by a presented window's cut too (in the record
|
|
133
|
+
// before a presentation, the last kept row is the anchor).
|
|
134
|
+
const suppression = buildSuppressionPlan(contextManager, total - removedCount - 1, options.suppressMessageIds ?? [], options.suppressRanges ?? [], options.removeSuppressed === true);
|
|
135
|
+
// A run with no anchor cuts nothing, so there is no anchor to name and
|
|
136
|
+
// nothing returns: one with nothing to suppress makes a branch at the
|
|
137
|
+
// head, as on a legacy window.
|
|
138
|
+
const afterCut = presented && anchorCount > 0 ? windowAfterCut(contextManager, target) : undefined;
|
|
139
|
+
const returnedToArrivals = afterCut?.returned.filter((id) => !suppression.ids.has(String(id))).length;
|
|
140
|
+
if (afterCut && removedCount === 0 && suppression.intervals.length === 0 && afterCut.returned.length === 0) {
|
|
141
|
+
refuseIneffectiveCut(target, afterCut.kept, options.agentName, contextManager.getPresentedMessages());
|
|
142
|
+
}
|
|
86
143
|
validateRemovalIntegrity(contextManager, total, [
|
|
87
144
|
...(removedCount > 0 ? [{
|
|
88
|
-
start:
|
|
145
|
+
start: total - removedCount,
|
|
89
146
|
end: total - 1,
|
|
90
147
|
fromId: '',
|
|
91
148
|
toId: '',
|
|
@@ -115,6 +172,7 @@ export async function createOfflineRecoveryBranch(options) {
|
|
|
115
172
|
targetBranch,
|
|
116
173
|
messagesRemoved: removedCount,
|
|
117
174
|
messagesSuppressed: suppression.messageCount,
|
|
175
|
+
...(presented ? { returnedToArrivals: returnedToArrivals ?? 0 } : {}),
|
|
118
176
|
discordAddressable: addressable,
|
|
119
177
|
marksScope: marks === 'none' ? 'none' : marks.scope,
|
|
120
178
|
discordMarkersQueued: refs.length,
|
|
@@ -147,11 +205,15 @@ export async function createOfflineRecoveryBranch(options) {
|
|
|
147
205
|
});
|
|
148
206
|
let createdBranch;
|
|
149
207
|
try {
|
|
150
|
-
// branchAt uses the target message's origin sequence.
|
|
151
|
-
//
|
|
152
|
-
//
|
|
153
|
-
//
|
|
154
|
-
|
|
208
|
+
// branchAt uses the target message's origin sequence. With no anchor
|
|
209
|
+
// nothing is rewound, so the branch starts at the head instead: what
|
|
210
|
+
// was written after the newest message, a removal or a summary, stays.
|
|
211
|
+
// No message content is compiled or submitted to Membrane during this
|
|
212
|
+
// operation. Creating the branch is part of the body: a failure here
|
|
213
|
+
// settles the batch like a failed switch or redaction.
|
|
214
|
+
createdBranch = anchorCount === 0
|
|
215
|
+
? store.createBranchAt(targetBranch, sourceBranch, store.currentSequence()).name
|
|
216
|
+
: contextManager.branchAt(target.id, targetBranch);
|
|
155
217
|
await contextManager.switchBranch(createdBranch);
|
|
156
218
|
// Each interval is removed by its messages' ids, so the order doesn't
|
|
157
219
|
// change the result. removeStoredInterval takes a single message outside
|
|
@@ -311,6 +373,162 @@ function findInternalMessageFromTail(contextManager, total, contextId) {
|
|
|
311
373
|
}
|
|
312
374
|
return null;
|
|
313
375
|
}
|
|
376
|
+
/**
|
|
377
|
+
* The first slot index after `targetIndex` whose row was stored after
|
|
378
|
+
* `cut`, or `total` when none was: the rows a branch cut at `cut` leaves
|
|
379
|
+
* behind, the slot being in store order, start there. Read in bounded,
|
|
380
|
+
* blob-free windows.
|
|
381
|
+
*/
|
|
382
|
+
function firstIndexAfterCut(contextManager, targetIndex, total, cut) {
|
|
383
|
+
for (let offset = targetIndex + 1; offset < total; offset += RECOVERY_SCAN_WINDOW) {
|
|
384
|
+
const messages = contextManager.getMessageWindow(offset, Math.min(RECOVERY_SCAN_WINDOW, total - offset), { resolveBlobs: false }).messages;
|
|
385
|
+
const at = messages.findIndex((message) => message.sequence > cut);
|
|
386
|
+
if (at >= 0)
|
|
387
|
+
return offset + at;
|
|
388
|
+
}
|
|
389
|
+
return total;
|
|
390
|
+
}
|
|
391
|
+
/**
|
|
392
|
+
* The rows after `target` in a presented window, as the live rollback reads
|
|
393
|
+
* them (windowAfterCut): those the write that presented the target
|
|
394
|
+
* presented too (`kept`, which no branch cut separates from it), and those
|
|
395
|
+
* presented after that write but stored at or before it (`returned`, which
|
|
396
|
+
* the cut keeps in the record and makes arrivals again). Read from the
|
|
397
|
+
* window's newest row back to the target or the first row presented before
|
|
398
|
+
* the cut (every row's cut grows in window order).
|
|
399
|
+
*/
|
|
400
|
+
function windowAfterCut(contextManager, target) {
|
|
401
|
+
const cut = contextManager.branchSequenceOf(target.id);
|
|
402
|
+
const window = contextManager.getPresentedMessages();
|
|
403
|
+
const returned = [];
|
|
404
|
+
const kept = [];
|
|
405
|
+
for (let i = window.length - 1; i >= 0; i--) {
|
|
406
|
+
const row = window[i];
|
|
407
|
+
if (row.id === target.id)
|
|
408
|
+
break;
|
|
409
|
+
const at = contextManager.branchSequenceOf(row.id);
|
|
410
|
+
if (at < cut)
|
|
411
|
+
break;
|
|
412
|
+
if (at === cut)
|
|
413
|
+
kept.unshift(row);
|
|
414
|
+
else if (row.sequence <= cut)
|
|
415
|
+
returned.unshift(row.id);
|
|
416
|
+
}
|
|
417
|
+
return { returned, kept };
|
|
418
|
+
}
|
|
419
|
+
/**
|
|
420
|
+
* Refuses a recovery on a presented window that would change nothing, as
|
|
421
|
+
* the live rollback refuses one: the cut at the write that presented the
|
|
422
|
+
* anchor removes no row, and no row the window took after that write
|
|
423
|
+
* becomes an arrival again (windowAfterCut). The rows that write presented
|
|
424
|
+
* after the anchor (`kept`) name the way to take them out. A row holding a
|
|
425
|
+
* result of a call at or before the anchor (`window`, the agent's window:
|
|
426
|
+
* a tool boundary presents a round's reply and its results in one write)
|
|
427
|
+
* isn't to be suppressed, which would leave that call without its result:
|
|
428
|
+
* the advice is to anchor before the call. The others are suppressed: in
|
|
429
|
+
* the same recovery a row by its Discord message id, each one named, which
|
|
430
|
+
* takes every copy of that message; and by its row id with the live
|
|
431
|
+
* `suppressMessages` a row with none (an agent's round, a tool row) or one
|
|
432
|
+
* sharing the anchor's Discord id (a retried write's copy), which the
|
|
433
|
+
* offline suppression would take with the anchor. No range is offered: it
|
|
434
|
+
* takes every record row between its ends, any agent's, rows the window
|
|
435
|
+
* never held among them. Each refusal says the recovery reads the agent's
|
|
436
|
+
* own slot alone: a row of a slot it observes, which the live rollback
|
|
437
|
+
* weighs, isn't weighed here.
|
|
438
|
+
*/
|
|
439
|
+
function refuseIneffectiveCut(target, kept, agentName, window) {
|
|
440
|
+
const anchorDiscordId = discordIdOf(target);
|
|
441
|
+
const anchor = `${String(target.id)}${anchorDiscordId ? ` (Discord message ${anchorDiscordId})` : ''}`;
|
|
442
|
+
const ownSlotOnly = `. Offline, only ${agentName}'s own slot is read: a row of a slot it observes, which the live rollback weighs, isn't weighed here.`;
|
|
443
|
+
if (kept.length > 0) {
|
|
444
|
+
const n = kept.length;
|
|
445
|
+
const first = kept[0];
|
|
446
|
+
const firstDiscordId = discordIdOf(first);
|
|
447
|
+
const named = `${String(first.id)}${firstDiscordId ? `, Discord message ${firstDiscordId}` : ''}`;
|
|
448
|
+
const split = resultsOfAnchoredCalls(window, target.id, kept);
|
|
449
|
+
const suppressible = split ? kept.filter((row) => !split.rows.includes(row)) : kept;
|
|
450
|
+
const copies = suppressible.filter((row) => anchorDiscordId !== undefined && discordIdOf(row) === anchorDiscordId);
|
|
451
|
+
// By row id, live: every one, so following the advice leaves none of them in place.
|
|
452
|
+
const unaddressed = suppressible.filter((row) => discordIdOf(row) === undefined || copies.includes(row));
|
|
453
|
+
const addressed = suppressible.filter((row) => !unaddressed.includes(row));
|
|
454
|
+
const offline = `in the same recovery (--suppress / suppressMessageIds: ${addressed.map((row) => discordIdOf(row)).join(', ')})`;
|
|
455
|
+
const live = `by row id with the live suppressMessages (${unaddressed.map((row) => String(row.id)).join(', ')}) once the host runs, ` +
|
|
456
|
+
'since the offline recovery suppresses only by Discord message id' +
|
|
457
|
+
(copies.length > 0 ? `, which takes every copy of a message, the anchor's own too` : '');
|
|
458
|
+
const m = suppressible.length;
|
|
459
|
+
const them = m === n ? (n === 1 ? 'it' : 'them') : 'the rest';
|
|
460
|
+
const how = m === 0 ? ''
|
|
461
|
+
: unaddressed.length === 0 ? `suppress ${them} ${offline}`
|
|
462
|
+
: addressed.length === 0 ? `suppress ${them} ${live}` +
|
|
463
|
+
(copies.length > 0 ? '' : ` and ${m === 1 ? 'it has none' : 'none of them has one'}`)
|
|
464
|
+
: `suppress the ${addressed.length} with a Discord message id ${offline}, and the ${unaddressed.length} ` +
|
|
465
|
+
`${copies.length > 0 ? `other${unaddressed.length === 1 ? '' : 's'}` : 'without one'} ${live}`;
|
|
466
|
+
const before = split ? anchorBefore(split, 'anchor the recovery', 'at') : '';
|
|
467
|
+
throw new Error(`Recovery anchor ${anchor} was presented to ${agentName} in one write with the ${n} message${n === 1 ? '' : 's'} ` +
|
|
468
|
+
`after it in its window (the first: ${named}), and a branch cut can't separate the rows one write presented, ` +
|
|
469
|
+
`so a recovery anchored there would remove nothing; to take ${n === 1 ? 'that message' : 'those messages'} out, ` +
|
|
470
|
+
(before && how ? `${before}; or, to keep that call and its results, ${how}` : before || how) + ownSlotOnly);
|
|
471
|
+
}
|
|
472
|
+
throw new Error(`Recovery anchor ${anchor} is already the tail of ${agentName}'s window: every message stored after it was ` +
|
|
473
|
+
'stored before the write that presented it, where the branch is cut, and none entered the window after it, so ' +
|
|
474
|
+
'a recovery anchored there would change nothing' + ownSlotOnly);
|
|
475
|
+
}
|
|
476
|
+
/**
|
|
477
|
+
* Of the rows a no-op cut keeps after its anchor (`kept`), those holding a
|
|
478
|
+
* result of a call in a row of the agent's window at or before the anchor,
|
|
479
|
+
* which a suppression would leave without its result: a tool boundary
|
|
480
|
+
* presents a round's reply and its results in one write, and so does a
|
|
481
|
+
* write-down for rows stored together. With them, the earliest such call's
|
|
482
|
+
* row and the window row before it, where a cut keeps the call and its
|
|
483
|
+
* results together. Undefined where no kept row answers such a call, or the
|
|
484
|
+
* anchor isn't in `window`. The live rollback's refusal reads it too.
|
|
485
|
+
*/
|
|
486
|
+
export function resultsOfAnchoredCalls(window, anchorId, kept) {
|
|
487
|
+
const anchorAt = window.findIndex((row) => row.id === anchorId);
|
|
488
|
+
if (anchorAt < 0)
|
|
489
|
+
return undefined;
|
|
490
|
+
const callAt = new Map();
|
|
491
|
+
for (let i = 0; i <= anchorAt; i++) {
|
|
492
|
+
for (const raw of window[i].content) {
|
|
493
|
+
const block = raw;
|
|
494
|
+
if (block.type === 'tool_use' && typeof block.id === 'string')
|
|
495
|
+
callAt.set(block.id, i);
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
let earliest;
|
|
499
|
+
const rows = kept.filter((row) => {
|
|
500
|
+
let answers = false;
|
|
501
|
+
for (const raw of row.content) {
|
|
502
|
+
const block = raw;
|
|
503
|
+
const at = block.type === 'tool_result' && typeof block.toolUseId === 'string' ? callAt.get(block.toolUseId) : undefined;
|
|
504
|
+
if (at === undefined)
|
|
505
|
+
continue;
|
|
506
|
+
answers = true;
|
|
507
|
+
earliest = earliest === undefined ? at : Math.min(earliest, at);
|
|
508
|
+
}
|
|
509
|
+
return answers;
|
|
510
|
+
});
|
|
511
|
+
if (rows.length === 0 || earliest === undefined)
|
|
512
|
+
return undefined;
|
|
513
|
+
return { rows, call: window[earliest], ...(earliest > 0 ? { before: window[earliest - 1] } : {}) };
|
|
514
|
+
}
|
|
515
|
+
/**
|
|
516
|
+
* A refusal's advice for the kept rows that answer a call at or before the
|
|
517
|
+
* anchor (resultsOfAnchoredCalls): `verb` (anchor the recovery, roll back)
|
|
518
|
+
* before the call's row, naming the row before it (`to`: at, to), and why
|
|
519
|
+
* they aren't to be suppressed.
|
|
520
|
+
*/
|
|
521
|
+
export function anchorBefore(split, verb, to) {
|
|
522
|
+
const ids = split.rows.map((row) => String(row.id)).join(', ');
|
|
523
|
+
const one = split.rows.length === 1;
|
|
524
|
+
return `${verb} before ${String(split.call.id)}, which holds the call ${one ? 'it answers' : 'they answer'}, instead` +
|
|
525
|
+
`${split.before ? ` (${to} ${String(split.before.id)}, the message before it in the window)` : ''}: ${ids} ${one ? 'holds a result' : 'hold results'} ` +
|
|
526
|
+
`of a call at or before the anchor, and suppressing ${one ? 'it' : 'them'} would leave that call without its result`;
|
|
527
|
+
}
|
|
528
|
+
function discordIdOf(message) {
|
|
529
|
+
const id = message.metadata?.messageId;
|
|
530
|
+
return id === undefined || id === null || id === '' ? undefined : String(id);
|
|
531
|
+
}
|
|
314
532
|
function validateAnchorBoundary(contextManager, targetIndex, total, target) {
|
|
315
533
|
if (targetIndex + 1 >= total)
|
|
316
534
|
return;
|
|
@@ -326,7 +544,24 @@ function validateAnchorBoundary(contextManager, targetIndex, total, target) {
|
|
|
326
544
|
function validateRemovalIntegrity(contextManager, total, intervals) {
|
|
327
545
|
if (intervals.length === 0)
|
|
328
546
|
return;
|
|
329
|
-
|
|
547
|
+
// Sorted starts with each one's running furthest end, searched per row: a
|
|
548
|
+
// store can hold a removal for every third row (--remove-suppressed).
|
|
549
|
+
const sorted = [...intervals].sort((a, b) => a.start - b.start);
|
|
550
|
+
const reach = [];
|
|
551
|
+
for (const interval of sorted)
|
|
552
|
+
reach.push(Math.max(interval.end, reach.at(-1) ?? -1));
|
|
553
|
+
const removed = (index) => {
|
|
554
|
+
let lo = 0;
|
|
555
|
+
let hi = sorted.length - 1;
|
|
556
|
+
while (lo < hi) {
|
|
557
|
+
const mid = Math.ceil((lo + hi) / 2);
|
|
558
|
+
if (sorted[mid].start <= index)
|
|
559
|
+
lo = mid;
|
|
560
|
+
else
|
|
561
|
+
hi = mid - 1;
|
|
562
|
+
}
|
|
563
|
+
return sorted[lo].start <= index && index <= reach[lo];
|
|
564
|
+
};
|
|
330
565
|
const toolUses = new Map();
|
|
331
566
|
const toolResults = new Map();
|
|
332
567
|
// The message before, in store order: a selection splits a body when a
|
|
@@ -361,7 +596,7 @@ function validateRemovalIntegrity(contextManager, total, intervals) {
|
|
|
361
596
|
}
|
|
362
597
|
}
|
|
363
598
|
}
|
|
364
|
-
function buildSuppressionPlan(contextManager,
|
|
599
|
+
function buildSuppressionPlan(contextManager, lastKeptIndex, rawMessageIds, rawRanges, removeSuppressed = false) {
|
|
365
600
|
const messageIds = rawMessageIds.map(normalizeDiscordMessageId);
|
|
366
601
|
const ranges = rawRanges.map((range) => ({
|
|
367
602
|
fromMessageId: normalizeDiscordMessageId(range.fromMessageId),
|
|
@@ -371,12 +606,16 @@ function buildSuppressionPlan(contextManager, targetIndex, rawMessageIds, rawRan
|
|
|
371
606
|
...messageIds,
|
|
372
607
|
...ranges.flatMap((range) => [range.fromMessageId, range.toMessageId]),
|
|
373
608
|
]);
|
|
374
|
-
if (wanted.size === 0)
|
|
375
|
-
return { intervals: [], carriers: [], messageCount: 0 };
|
|
609
|
+
if (wanted.size === 0 && !removeSuppressed)
|
|
610
|
+
return { intervals: [], carriers: [], messageCount: 0, ids: new Set() };
|
|
611
|
+
const stamped = [];
|
|
376
612
|
const locations = new Map();
|
|
377
|
-
for (let offset = 0; offset <=
|
|
378
|
-
const messages = contextManager.getMessageWindow(offset, Math.min(RECOVERY_SCAN_WINDOW,
|
|
613
|
+
for (let offset = 0; offset <= lastKeptIndex; offset += RECOVERY_SCAN_WINDOW) {
|
|
614
|
+
const messages = contextManager.getMessageWindow(offset, Math.min(RECOVERY_SCAN_WINDOW, lastKeptIndex - offset + 1), { resolveBlobs: false }).messages;
|
|
379
615
|
for (let i = 0; i < messages.length; i++) {
|
|
616
|
+
if (removeSuppressed && suppressionRecordOf(messages[i].metadata)) {
|
|
617
|
+
stamped.push({ start: offset + i, end: offset + i, fromId: messages[i].id, toId: messages[i].id });
|
|
618
|
+
}
|
|
380
619
|
const externalId = String(messages[i].metadata?.messageId ?? '');
|
|
381
620
|
if (!wanted.has(externalId))
|
|
382
621
|
continue;
|
|
@@ -417,10 +656,10 @@ function buildSuppressionPlan(contextManager, targetIndex, rawMessageIds, rawRan
|
|
|
417
656
|
throw new Error(`Suppression endpoint ${id} is not visible at the selected branch point.`);
|
|
418
657
|
}
|
|
419
658
|
}
|
|
420
|
-
const intervals = [];
|
|
659
|
+
const intervals = [...stamped];
|
|
421
660
|
for (const id of messageIds) {
|
|
422
661
|
const location = locations.get(id);
|
|
423
|
-
intervals
|
|
662
|
+
appendAll(intervals, location.runs.map((run) => ({ ...run })));
|
|
424
663
|
}
|
|
425
664
|
for (const range of ranges) {
|
|
426
665
|
const from = locations.get(range.fromMessageId);
|
|
@@ -440,7 +679,7 @@ function buildSuppressionPlan(contextManager, targetIndex, rawMessageIds, rawRan
|
|
|
440
679
|
toId: later.firstId,
|
|
441
680
|
});
|
|
442
681
|
for (const end of [from, to])
|
|
443
|
-
intervals
|
|
682
|
+
appendAll(intervals, end.runs.map((run) => ({ ...run })));
|
|
444
683
|
}
|
|
445
684
|
intervals.sort((a, b) => a.start - b.start || a.end - b.end);
|
|
446
685
|
const merged = [];
|
|
@@ -457,26 +696,32 @@ function buildSuppressionPlan(contextManager, targetIndex, rawMessageIds, rawRan
|
|
|
457
696
|
}
|
|
458
697
|
}
|
|
459
698
|
const carriers = [];
|
|
699
|
+
const ids = new Set();
|
|
460
700
|
for (const interval of merged) {
|
|
461
|
-
carriers
|
|
701
|
+
appendAll(carriers, collectDiscordCarriers(contextManager, interval.start, interval.end + 1, ids));
|
|
462
702
|
}
|
|
463
703
|
return {
|
|
464
704
|
intervals: merged,
|
|
465
705
|
carriers,
|
|
466
706
|
messageCount: merged.reduce((sum, interval) => sum + interval.end - interval.start + 1, 0),
|
|
707
|
+
ids,
|
|
467
708
|
};
|
|
468
709
|
}
|
|
469
710
|
/**
|
|
470
711
|
* The addressing metadata of removed messages, read in bounded windows: only
|
|
471
712
|
* the Discord address and the MCPL tags (for `addressed` selection) are kept,
|
|
472
713
|
* never content. A sharded message may repeat its metadata across adjacent
|
|
473
|
-
* records; selection dedupes by address.
|
|
714
|
+
* records; selection dedupes by address. Each row's id is added to `ids`
|
|
715
|
+
* where given.
|
|
474
716
|
*/
|
|
475
|
-
function collectDiscordCarriers(contextManager, start, end) {
|
|
717
|
+
function collectDiscordCarriers(contextManager, start, end, ids) {
|
|
476
718
|
const carriers = [];
|
|
477
719
|
for (let offset = start; offset < end; offset += RECOVERY_SCAN_WINDOW) {
|
|
478
720
|
const messages = contextManager.getMessageWindow(offset, Math.min(RECOVERY_SCAN_WINDOW, end - offset), { resolveBlobs: false }).messages;
|
|
479
|
-
carriers
|
|
721
|
+
appendAll(carriers, messages.map(addressingOnly));
|
|
722
|
+
if (ids)
|
|
723
|
+
for (const message of messages)
|
|
724
|
+
ids.add(String(message.id));
|
|
480
725
|
}
|
|
481
726
|
return carriers;
|
|
482
727
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"offline-branch.js","sourceRoot":"","sources":["../../../src/recovery/offline-branch.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"offline-branch.js","sourceRoot":"","sources":["../../../src/recovery/offline-branch.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createOfflineRecoveryBranch } from './offline-branch.js';
|
|
3
|
+
import { appendAll } from '../append-all.js';
|
|
3
4
|
function usage() {
|
|
4
5
|
return `Usage:
|
|
5
6
|
agent-framework-recover --store <path> --agent <name> <anchor> [options]
|
|
@@ -15,8 +16,23 @@ Options:
|
|
|
15
16
|
--message-id <id|link> Last Discord message the agent should still see
|
|
16
17
|
--context-id <internal-id> Exact internal context message to retain as anchor
|
|
17
18
|
--messages <count> Legacy alternative: remove N context entries
|
|
19
|
+
On a presented window the rows one write
|
|
20
|
+
presented with the anchor stay after it, a
|
|
21
|
+
count is over the agent's window, and a
|
|
22
|
+
recovery that would remove nothing is refused
|
|
18
23
|
--suppress <id|link> Suppress one Discord message; repeat or comma-separate
|
|
19
24
|
--suppress-range <a>..<b> Suppress an inclusive context range; repeatable
|
|
25
|
+
--remove-suppressed Remove every row a suppress rule hid, needing no
|
|
26
|
+
anchor. Run it before rolling back to a release
|
|
27
|
+
without suppress rules, which can refuse the
|
|
28
|
+
store at open otherwise; the source branch keeps
|
|
29
|
+
the rows. Once this release has made a window
|
|
30
|
+
write of two or more rows (the first write-down
|
|
31
|
+
of a window that holds a row, as at the first
|
|
32
|
+
boot on a store with history, or a presentation
|
|
33
|
+
of more than one row: MANIFEST version 2) no
|
|
34
|
+
earlier release opens the store, and only a copy
|
|
35
|
+
taken before the upgrade goes back
|
|
20
36
|
--branch <name> Recovery branch name (generated by default)
|
|
21
37
|
--namespace <namespace> Context namespace (default: agents/<agent>)
|
|
22
38
|
--discord-server <id> Override/inject the Discord MCPL server id
|
|
@@ -32,7 +48,7 @@ Options:
|
|
|
32
48
|
The agent host must be stopped before running this command.`;
|
|
33
49
|
}
|
|
34
50
|
function parseArgs(args) {
|
|
35
|
-
const options = { dryRun: false, suppressMessageIds: [], suppressRanges: [], marks: 'none' };
|
|
51
|
+
const options = { dryRun: false, suppressMessageIds: [], suppressRanges: [], removeSuppressed: false, marks: 'none' };
|
|
36
52
|
for (let i = 0; i < args.length; i++) {
|
|
37
53
|
const arg = args[i];
|
|
38
54
|
const value = () => {
|
|
@@ -60,7 +76,7 @@ function parseArgs(args) {
|
|
|
60
76
|
break;
|
|
61
77
|
case '--suppress':
|
|
62
78
|
case '--suppress-message':
|
|
63
|
-
options.suppressMessageIds
|
|
79
|
+
appendAll(options.suppressMessageIds, value().split(',').map((item) => item.trim()).filter(Boolean));
|
|
64
80
|
break;
|
|
65
81
|
case '--suppress-range': {
|
|
66
82
|
const raw = value();
|
|
@@ -97,6 +113,9 @@ function parseArgs(args) {
|
|
|
97
113
|
options.marks = marks;
|
|
98
114
|
break;
|
|
99
115
|
}
|
|
116
|
+
case '--remove-suppressed':
|
|
117
|
+
options.removeSuppressed = true;
|
|
118
|
+
break;
|
|
100
119
|
case '--dry-run':
|
|
101
120
|
options.dryRun = true;
|
|
102
121
|
break;
|
|
@@ -113,8 +132,8 @@ async function main() {
|
|
|
113
132
|
const options = parseArgs(process.argv.slice(2));
|
|
114
133
|
if (!options.storePath
|
|
115
134
|
|| !options.agentName
|
|
116
|
-
|| (!options.messageId && !options.contextId && options.messages === undefined)) {
|
|
117
|
-
throw new Error(`--store, --agent, and one anchor (--message-id, --context-id, or --messages) are required\n\n${usage()}`);
|
|
135
|
+
|| (!options.messageId && !options.contextId && options.messages === undefined && !options.removeSuppressed)) {
|
|
136
|
+
throw new Error(`--store, --agent, and one anchor (--message-id, --context-id, or --messages) or --remove-suppressed are required\n\n${usage()}`);
|
|
118
137
|
}
|
|
119
138
|
// A CLI choice and its application are the same moment (the host is
|
|
120
139
|
// stopped), so the scope is evaluated now rather than frozen to refs.
|
|
@@ -127,6 +146,7 @@ async function main() {
|
|
|
127
146
|
messages: options.messages,
|
|
128
147
|
suppressMessageIds: options.suppressMessageIds,
|
|
129
148
|
suppressRanges: options.suppressRanges,
|
|
149
|
+
removeSuppressed: options.removeSuppressed,
|
|
130
150
|
branchName: options.branchName,
|
|
131
151
|
namespace: options.namespace,
|
|
132
152
|
discordServerId: options.discordServerId,
|