@animalabs/agent-framework 0.23.3 → 0.24.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/README.md +212 -42
- package/dist/src/agent.d.ts +65 -9
- package/dist/src/agent.d.ts.map +1 -1
- package/dist/src/agent.js +98 -12
- package/dist/src/agent.js.map +1 -1
- package/dist/src/api/server.d.ts.map +1 -1
- package/dist/src/api/server.js +14 -12
- package/dist/src/api/server.js.map +1 -1
- package/dist/src/clock-rows.d.ts +115 -0
- package/dist/src/clock-rows.d.ts.map +1 -0
- package/dist/src/clock-rows.js +222 -0
- package/dist/src/clock-rows.js.map +1 -0
- package/dist/src/code-execution/engine.d.ts +177 -0
- package/dist/src/code-execution/engine.d.ts.map +1 -0
- package/dist/src/code-execution/engine.js +494 -0
- package/dist/src/code-execution/engine.js.map +1 -0
- package/dist/src/code-execution/index.d.ts +5 -10
- package/dist/src/code-execution/index.d.ts.map +1 -1
- package/dist/src/code-execution/index.js +5 -9
- package/dist/src/code-execution/index.js.map +1 -1
- package/dist/src/code-execution/isolate/calls.d.ts +114 -0
- package/dist/src/code-execution/isolate/calls.d.ts.map +1 -0
- package/dist/src/code-execution/isolate/calls.js +145 -0
- package/dist/src/code-execution/isolate/calls.js.map +1 -0
- package/dist/src/code-execution/isolate/child-entry.d.ts +2 -0
- package/dist/src/code-execution/isolate/child-entry.d.ts.map +1 -0
- package/dist/src/code-execution/isolate/child-entry.js +5 -0
- package/dist/src/code-execution/isolate/child-entry.js.map +1 -0
- package/dist/src/code-execution/isolate/child-main.d.ts +26 -0
- package/dist/src/code-execution/isolate/child-main.d.ts.map +1 -0
- package/dist/src/code-execution/isolate/child-main.js +132 -0
- package/dist/src/code-execution/isolate/child-main.js.map +1 -0
- package/dist/src/code-execution/isolate/child.d.ts +44 -0
- package/dist/src/code-execution/isolate/child.d.ts.map +1 -0
- package/dist/src/code-execution/isolate/child.js +315 -0
- package/dist/src/code-execution/isolate/child.js.map +1 -0
- package/dist/src/code-execution/isolate/frames.d.ts +80 -0
- package/dist/src/code-execution/isolate/frames.d.ts.map +1 -0
- package/dist/src/code-execution/isolate/frames.js +210 -0
- package/dist/src/code-execution/isolate/frames.js.map +1 -0
- package/dist/src/code-execution/isolate/output.d.ts +68 -0
- package/dist/src/code-execution/isolate/output.d.ts.map +1 -0
- package/dist/src/code-execution/isolate/output.js +143 -0
- package/dist/src/code-execution/isolate/output.js.map +1 -0
- package/dist/src/code-execution/isolate/prelude.d.ts +109 -0
- package/dist/src/code-execution/isolate/prelude.d.ts.map +1 -0
- package/dist/src/code-execution/isolate/prelude.js +401 -0
- package/dist/src/code-execution/isolate/prelude.js.map +1 -0
- package/dist/src/code-execution/isolate/protocol.d.ts +151 -0
- package/dist/src/code-execution/isolate/protocol.d.ts.map +1 -0
- package/dist/src/code-execution/isolate/protocol.js +150 -0
- package/dist/src/code-execution/isolate/protocol.js.map +1 -0
- package/dist/src/code-execution/isolate/render.d.ts +57 -0
- package/dist/src/code-execution/isolate/render.d.ts.map +1 -0
- package/dist/src/code-execution/isolate/render.js +214 -0
- package/dist/src/code-execution/isolate/render.js.map +1 -0
- package/dist/src/code-execution/isolate/runner.d.ts +250 -0
- package/dist/src/code-execution/isolate/runner.d.ts.map +1 -0
- package/dist/src/code-execution/isolate/runner.js +854 -0
- package/dist/src/code-execution/isolate/runner.js.map +1 -0
- package/dist/src/code-execution/isolate/scripts.d.ts +175 -0
- package/dist/src/code-execution/isolate/scripts.d.ts.map +1 -0
- package/dist/src/code-execution/isolate/scripts.js +357 -0
- package/dist/src/code-execution/isolate/scripts.js.map +1 -0
- package/dist/src/code-execution/quickjs.wasm +0 -0
- package/dist/src/code-execution/tool-definition.d.ts +93 -43
- package/dist/src/code-execution/tool-definition.d.ts.map +1 -1
- package/dist/src/code-execution/tool-definition.js +176 -142
- package/dist/src/code-execution/tool-definition.js.map +1 -1
- package/dist/src/deadline-timer.d.ts +3 -0
- package/dist/src/deadline-timer.d.ts.map +1 -1
- package/dist/src/deadline-timer.js +1 -1
- package/dist/src/deadline-timer.js.map +1 -1
- package/dist/src/framework.d.ts +1120 -457
- package/dist/src/framework.d.ts.map +1 -1
- package/dist/src/framework.js +4635 -2505
- package/dist/src/framework.js.map +1 -1
- package/dist/src/gate/event-gate.d.ts +28 -4
- package/dist/src/gate/event-gate.d.ts.map +1 -1
- package/dist/src/gate/event-gate.js +89 -13
- package/dist/src/gate/event-gate.js.map +1 -1
- package/dist/src/held-writes.d.ts +16 -3
- package/dist/src/held-writes.d.ts.map +1 -1
- package/dist/src/held-writes.js +16 -3
- package/dist/src/held-writes.js.map +1 -1
- package/dist/src/index.d.ts +8 -6
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +10 -8
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcpl/channel-registry.d.ts +483 -115
- package/dist/src/mcpl/channel-registry.d.ts.map +1 -1
- package/dist/src/mcpl/channel-registry.js +1735 -425
- package/dist/src/mcpl/channel-registry.js.map +1 -1
- package/dist/src/mcpl/conversation-router.d.ts +19 -39
- package/dist/src/mcpl/conversation-router.d.ts.map +1 -1
- package/dist/src/mcpl/conversation-router.js +27 -59
- 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 +9 -5
- package/dist/src/mcpl/convert-block.js.map +1 -1
- package/dist/src/mcpl/inbound-source.d.ts +50 -0
- package/dist/src/mcpl/inbound-source.d.ts.map +1 -1
- package/dist/src/mcpl/inbound-source.js +130 -0
- package/dist/src/mcpl/inbound-source.js.map +1 -1
- package/dist/src/mcpl/index.d.ts +2 -1
- package/dist/src/mcpl/index.d.ts.map +1 -1
- package/dist/src/mcpl/index.js +3 -2
- package/dist/src/mcpl/index.js.map +1 -1
- package/dist/src/mcpl/log-value.d.ts +6 -0
- package/dist/src/mcpl/log-value.d.ts.map +1 -1
- package/dist/src/mcpl/log-value.js +8 -0
- package/dist/src/mcpl/log-value.js.map +1 -1
- package/dist/src/mcpl/modern-connection.d.ts +15 -6
- package/dist/src/mcpl/modern-connection.d.ts.map +1 -1
- package/dist/src/mcpl/modern-connection.js +168 -53
- package/dist/src/mcpl/modern-connection.js.map +1 -1
- package/dist/src/mcpl/prose-grammar.d.ts +4 -5
- package/dist/src/mcpl/prose-grammar.d.ts.map +1 -1
- package/dist/src/mcpl/prose-grammar.js +4 -5
- package/dist/src/mcpl/prose-grammar.js.map +1 -1
- package/dist/src/mcpl/protocol-family.d.ts +97 -10
- package/dist/src/mcpl/protocol-family.d.ts.map +1 -1
- package/dist/src/mcpl/protocol-family.js +174 -17
- package/dist/src/mcpl/protocol-family.js.map +1 -1
- package/dist/src/mcpl/push-coalescer.d.ts +132 -14
- package/dist/src/mcpl/push-coalescer.d.ts.map +1 -1
- package/dist/src/mcpl/push-coalescer.js +227 -50
- package/dist/src/mcpl/push-coalescer.js.map +1 -1
- package/dist/src/mcpl/push-handler.d.ts +9 -20
- package/dist/src/mcpl/push-handler.d.ts.map +1 -1
- package/dist/src/mcpl/push-handler.js +7 -49
- package/dist/src/mcpl/push-handler.js.map +1 -1
- package/dist/src/mcpl/reference-fetcher.d.ts +2 -2
- package/dist/src/mcpl/reference-fetcher.d.ts.map +1 -1
- package/dist/src/mcpl/reference-fetcher.js +4 -4
- package/dist/src/mcpl/reference-fetcher.js.map +1 -1
- package/dist/src/mcpl/server-connection.d.ts +50 -21
- package/dist/src/mcpl/server-connection.d.ts.map +1 -1
- package/dist/src/mcpl/server-connection.js +158 -74
- package/dist/src/mcpl/server-connection.js.map +1 -1
- package/dist/src/mcpl/tags.d.ts +24 -0
- package/dist/src/mcpl/tags.d.ts.map +1 -1
- package/dist/src/mcpl/tags.js +33 -0
- package/dist/src/mcpl/tags.js.map +1 -1
- package/dist/src/mcpl/tool-result-normalize.d.ts +2 -1
- package/dist/src/mcpl/tool-result-normalize.d.ts.map +1 -1
- package/dist/src/mcpl/tool-result-normalize.js.map +1 -1
- package/dist/src/mcpl/transport.d.ts +55 -7
- package/dist/src/mcpl/transport.d.ts.map +1 -1
- package/dist/src/mcpl/transport.js +163 -34
- package/dist/src/mcpl/transport.js.map +1 -1
- package/dist/src/mcpl/types.d.ts +22 -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 +4 -2
- package/dist/src/module-registry.d.ts.map +1 -1
- package/dist/src/module-registry.js +100 -13
- package/dist/src/module-registry.js.map +1 -1
- package/dist/src/modules/discord/index.d.ts.map +1 -1
- package/dist/src/modules/discord/index.js +8 -13
- package/dist/src/modules/discord/index.js.map +1 -1
- package/dist/src/modules/history/index.d.ts.map +1 -1
- package/dist/src/modules/history/index.js +27 -4
- package/dist/src/modules/history/index.js.map +1 -1
- package/dist/src/modules/history/semantic.d.ts +15 -3
- package/dist/src/modules/history/semantic.d.ts.map +1 -1
- package/dist/src/modules/history/semantic.js +27 -5
- package/dist/src/modules/history/semantic.js.map +1 -1
- package/dist/src/modules/index.d.ts +1 -1
- package/dist/src/modules/index.d.ts.map +1 -1
- package/dist/src/modules/index.js.map +1 -1
- package/dist/src/modules/unknown-tool.d.ts +4 -1
- package/dist/src/modules/unknown-tool.d.ts.map +1 -1
- package/dist/src/modules/unknown-tool.js +4 -1
- package/dist/src/modules/unknown-tool.js.map +1 -1
- package/dist/src/modules/workspace/branch-intent.d.ts +3 -1
- package/dist/src/modules/workspace/branch-intent.d.ts.map +1 -1
- package/dist/src/modules/workspace/branch-intent.js +3 -1
- package/dist/src/modules/workspace/branch-intent.js.map +1 -1
- package/dist/src/modules/workspace/edit-plan.d.ts +265 -0
- package/dist/src/modules/workspace/edit-plan.d.ts.map +1 -0
- package/dist/src/modules/workspace/edit-plan.js +794 -0
- package/dist/src/modules/workspace/edit-plan.js.map +1 -0
- package/dist/src/modules/workspace/edit-text.d.ts +117 -0
- package/dist/src/modules/workspace/edit-text.d.ts.map +1 -0
- package/dist/src/modules/workspace/edit-text.js +584 -0
- package/dist/src/modules/workspace/edit-text.js.map +1 -0
- package/dist/src/modules/workspace/effects.d.ts +5 -4
- package/dist/src/modules/workspace/effects.d.ts.map +1 -1
- package/dist/src/modules/workspace/effects.js +78 -25
- package/dist/src/modules/workspace/effects.js.map +1 -1
- package/dist/src/modules/workspace/index.d.ts +493 -62
- package/dist/src/modules/workspace/index.d.ts.map +1 -1
- package/dist/src/modules/workspace/index.js +2216 -652
- package/dist/src/modules/workspace/index.js.map +1 -1
- package/dist/src/modules/workspace/observe.d.ts +213 -38
- package/dist/src/modules/workspace/observe.d.ts.map +1 -1
- package/dist/src/modules/workspace/observe.js +416 -36
- 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 +15 -8
- package/dist/src/modules/workspace/reconcile.js.map +1 -1
- package/dist/src/modules/workspace/text.d.ts +32 -0
- package/dist/src/modules/workspace/text.d.ts.map +1 -0
- package/dist/src/modules/workspace/text.js +67 -0
- package/dist/src/modules/workspace/text.js.map +1 -0
- package/dist/src/modules/workspace/types.d.ts +210 -6
- package/dist/src/modules/workspace/types.d.ts.map +1 -1
- package/dist/src/modules/workspace/types.js.map +1 -1
- package/dist/src/modules/workspace/watcher.d.ts +3 -2
- package/dist/src/modules/workspace/watcher.d.ts.map +1 -1
- package/dist/src/modules/workspace/watcher.js.map +1 -1
- package/dist/src/operator-log.d.ts +52 -24
- package/dist/src/operator-log.d.ts.map +1 -1
- package/dist/src/operator-log.js.map +1 -1
- package/dist/src/recovery/discord-awareness-outbox.d.ts +496 -72
- package/dist/src/recovery/discord-awareness-outbox.d.ts.map +1 -1
- package/dist/src/recovery/discord-awareness-outbox.js +1196 -289
- package/dist/src/recovery/discord-awareness-outbox.js.map +1 -1
- package/dist/src/recovery/offline-branch.d.ts +26 -1
- package/dist/src/recovery/offline-branch.d.ts.map +1 -1
- package/dist/src/recovery/offline-branch.js +164 -39
- package/dist/src/recovery/offline-branch.js.map +1 -1
- package/dist/src/recovery/recover-cli.js +23 -4
- package/dist/src/recovery/recover-cli.js.map +1 -1
- package/dist/src/send-tools.d.ts +11 -0
- package/dist/src/send-tools.d.ts.map +1 -0
- package/dist/src/send-tools.js +11 -0
- package/dist/src/send-tools.js.map +1 -0
- package/dist/src/timezone.d.ts +4 -2
- package/dist/src/timezone.d.ts.map +1 -1
- package/dist/src/timezone.js +4 -2
- package/dist/src/timezone.js.map +1 -1
- package/dist/src/tool-image-ledger.d.ts +46 -7
- package/dist/src/tool-image-ledger.d.ts.map +1 -1
- package/dist/src/tool-image-ledger.js +60 -7
- package/dist/src/tool-image-ledger.js.map +1 -1
- package/dist/src/tool-result-guard.d.ts +14 -11
- package/dist/src/tool-result-guard.d.ts.map +1 -1
- package/dist/src/tool-result-guard.js +17 -14
- package/dist/src/tool-result-guard.js.map +1 -1
- package/dist/src/tool-result-history.d.ts +3 -2
- package/dist/src/tool-result-history.d.ts.map +1 -1
- package/dist/src/tool-result-history.js +3 -2
- package/dist/src/tool-result-history.js.map +1 -1
- package/dist/src/tune-out/coordinator.d.ts +21 -0
- package/dist/src/tune-out/coordinator.d.ts.map +1 -1
- package/dist/src/tune-out/coordinator.js +142 -40
- package/dist/src/tune-out/coordinator.js.map +1 -1
- package/dist/src/types/agent.d.ts +31 -6
- package/dist/src/types/agent.d.ts.map +1 -1
- package/dist/src/types/events.d.ts +66 -9
- package/dist/src/types/events.d.ts.map +1 -1
- package/dist/src/types/framework.d.ts +69 -62
- package/dist/src/types/framework.d.ts.map +1 -1
- package/dist/src/types/module.d.ts +40 -8
- package/dist/src/types/module.d.ts.map +1 -1
- package/dist/src/types/trace.d.ts +111 -10
- package/dist/src/types/trace.d.ts.map +1 -1
- package/dist/src/usage/types.d.ts +16 -0
- package/dist/src/usage/types.d.ts.map +1 -1
- package/dist/src/usage/usage-tracker.d.ts +14 -1
- package/dist/src/usage/usage-tracker.d.ts.map +1 -1
- package/dist/src/usage/usage-tracker.js +81 -41
- package/dist/src/usage/usage-tracker.js.map +1 -1
- package/package.json +6 -8
- package/src/agent.ts +99 -12
- package/src/api/server.ts +14 -12
- package/src/clock-rows.ts +302 -0
- package/src/code-execution/engine.ts +595 -0
- package/src/code-execution/index.ts +5 -17
- package/src/code-execution/isolate/calls.ts +199 -0
- package/src/code-execution/isolate/child-entry.ts +5 -0
- package/src/code-execution/isolate/child-main.ts +132 -0
- package/src/code-execution/isolate/child.ts +327 -0
- package/src/code-execution/isolate/frames.ts +209 -0
- package/src/code-execution/isolate/output.ts +161 -0
- package/src/code-execution/isolate/prelude.ts +409 -0
- package/src/code-execution/isolate/protocol.ts +240 -0
- package/src/code-execution/isolate/render.ts +230 -0
- package/src/code-execution/isolate/runner.ts +911 -0
- package/src/code-execution/isolate/scripts.ts +479 -0
- package/src/code-execution/quickjs.wasm +0 -0
- package/src/code-execution/quickjs.wasm.LICENSES +149 -0
- package/src/code-execution/tool-definition.ts +236 -167
- package/src/deadline-timer.ts +1 -1
- package/src/framework.ts +4978 -2671
- package/src/gate/event-gate.ts +79 -17
- package/src/held-writes.ts +17 -3
- package/src/index.ts +32 -22
- package/src/mcpl/channel-registry.ts +1892 -471
- package/src/mcpl/conversation-router.ts +26 -72
- package/src/mcpl/convert-block.ts +9 -5
- package/src/mcpl/inbound-source.ts +131 -0
- package/src/mcpl/index.ts +4 -2
- package/src/mcpl/log-value.ts +9 -0
- package/src/mcpl/modern-connection.ts +162 -53
- package/src/mcpl/prose-grammar.ts +4 -5
- package/src/mcpl/protocol-family.ts +200 -22
- package/src/mcpl/push-coalescer.ts +306 -62
- package/src/mcpl/push-handler.ts +12 -54
- package/src/mcpl/reference-fetcher.ts +4 -4
- package/src/mcpl/server-connection.ts +180 -79
- package/src/mcpl/tags.ts +36 -0
- package/src/mcpl/tool-result-normalize.ts +2 -1
- package/src/mcpl/transport.ts +162 -33
- package/src/mcpl/types.ts +23 -6
- package/src/module-registry.ts +92 -13
- package/src/modules/discord/index.ts +8 -13
- package/src/modules/history/index.ts +25 -3
- package/src/modules/history/semantic.ts +29 -6
- package/src/modules/index.ts +1 -0
- package/src/modules/unknown-tool.ts +4 -1
- package/src/modules/workspace/branch-intent.ts +3 -1
- package/src/modules/workspace/edit-plan.ts +954 -0
- package/src/modules/workspace/edit-text.ts +618 -0
- package/src/modules/workspace/effects.ts +70 -19
- package/src/modules/workspace/index.ts +2293 -650
- package/src/modules/workspace/observe.ts +465 -56
- package/src/modules/workspace/reconcile.ts +14 -7
- package/src/modules/workspace/text.ts +68 -0
- package/src/modules/workspace/types.ts +211 -6
- package/src/modules/workspace/watcher.ts +3 -2
- package/src/operator-log.ts +47 -19
- package/src/recovery/discord-awareness-outbox.ts +1500 -356
- package/src/recovery/offline-branch.ts +189 -55
- package/src/recovery/recover-cli.ts +25 -4
- package/src/send-tools.ts +11 -0
- package/src/timezone.ts +4 -2
- package/src/tool-image-ledger.ts +62 -8
- package/src/tool-result-guard.ts +18 -15
- package/src/tool-result-history.ts +3 -2
- package/src/tune-out/coordinator.ts +166 -45
- package/src/types/agent.ts +32 -6
- package/src/types/events.ts +66 -9
- package/src/types/framework.ts +69 -62
- package/src/types/module.ts +40 -8
- package/src/types/trace.ts +121 -15
- package/src/usage/types.ts +16 -0
- package/src/usage/usage-tracker.ts +86 -43
- package/dist/src/code-execution/py-runner.d.ts +0 -191
- package/dist/src/code-execution/py-runner.d.ts.map +0 -1
- package/dist/src/code-execution/py-runner.js +0 -655
- package/dist/src/code-execution/py-runner.js.map +0 -1
- package/dist/src/code-execution/runtime-py.d.ts +0 -50
- package/dist/src/code-execution/runtime-py.d.ts.map +0 -1
- package/dist/src/code-execution/runtime-py.js +0 -677
- package/dist/src/code-execution/runtime-py.js.map +0 -1
- package/dist/src/mcpl/prose-stream-router.d.ts +0 -88
- package/dist/src/mcpl/prose-stream-router.d.ts.map +0 -1
- package/dist/src/mcpl/prose-stream-router.js +0 -291
- package/dist/src/mcpl/prose-stream-router.js.map +0 -1
- package/src/code-execution/py-runner.ts +0 -791
- package/src/code-execution/runtime-py.ts +0 -677
- package/src/mcpl/prose-stream-router.ts +0 -268
package/README.md
CHANGED
|
@@ -181,15 +181,24 @@ agent-framework-recover \
|
|
|
181
181
|
|
|
182
182
|
The specified Discord message is the last message the agent will still see;
|
|
183
183
|
everything after it is left on the old branch. The command scans in bounded
|
|
184
|
-
windows, never compiles message content, activates
|
|
185
|
-
the
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
184
|
+
windows, never compiles message content, and activates the new Chronicle
|
|
185
|
+
branch. By default the recovery is local to the resident: nothing is posted to
|
|
186
|
+
Discord. To let the people involved see that the agent no longer has their
|
|
187
|
+
messages, choose awareness marks explicitly with `--marks addressed` (removed
|
|
188
|
+
messages that mentioned or replied to the bot, and DMs) or `--marks all`
|
|
189
|
+
(every removed Discord message). The output counts what will be marked and
|
|
190
|
+
what stays unmarked, and `--dry-run` shows exactly which addresses each choice
|
|
191
|
+
covers. Only `{serverId, channelId, messageId}` metadata is written, to the
|
|
192
|
+
awareness ledger, `<store>/recovery/discord-awareness-outbox.json`, and the
|
|
193
|
+
marks are delivered when the host and that agent's `discord-mcpl` bot next
|
|
194
|
+
connect (see
|
|
195
|
+
[Live surgery and Discord awareness marks](#live-surgery-and-discord-awareness-marks)).
|
|
196
|
+
If the branch is made but the marks can't be recorded, the output's `markers`
|
|
197
|
+
says so and the branch stands. The live controls described below list, cancel
|
|
198
|
+
and retract marks; with the host stopped there are none, so a chosen batch is
|
|
199
|
+
stopped by starting the host and cancelling it, and a few of its marks may go
|
|
200
|
+
out first.
|
|
201
|
+
Portal and other non-Discord records are ignored.
|
|
193
202
|
|
|
194
203
|
When the safe point is an assistant/tool-side record rather than a Discord
|
|
195
204
|
message, use its exact ContextManager message ID:
|
|
@@ -222,7 +231,7 @@ agent-framework-recover \
|
|
|
222
231
|
`--suppress-range <first>..<last>` suppresses the inclusive context interval
|
|
223
232
|
between two Discord messages, including intervening agent/tool entries. These
|
|
224
233
|
removals exist only on the recovery branch; the source branch remains intact.
|
|
225
|
-
Suppressed Discord messages
|
|
234
|
+
Suppressed Discord messages follow the same `--marks` choice.
|
|
226
235
|
Selections that split a sharded body group or a tool-use/tool-result exchange
|
|
227
236
|
are rejected. The suppression plan is journaled before the branch switch; if
|
|
228
237
|
the recovery process is interrupted between interval removals, framework
|
|
@@ -232,22 +241,7 @@ For old stores whose messages lack `metadata.serverId`, supply
|
|
|
232
241
|
normal agent host must be stopped while this command has the Chronicle store
|
|
233
242
|
open.
|
|
234
243
|
|
|
235
|
-
|
|
236
|
-
queue. Switching back to the source branch queues removal of the bot's marker;
|
|
237
|
-
returning to the recovery branch queues it again. Initial MCPL events remain
|
|
238
|
-
buffered until the ledger has been reconciled. Startup, reconnect, runtime
|
|
239
|
-
list-change, and online undo use one framework-global generation: every MCPL
|
|
240
|
-
data plane waits while the control planes remain live for registration and
|
|
241
|
-
marker service. A connection whose policy exchange is in flight, after a
|
|
242
|
-
connect or a reconnect, keeps both planes closed until the exchange settles,
|
|
243
|
-
since its traffic is admitted against the grant the exchange establishes.
|
|
244
|
-
Awareness marker calls also have a mandatory deadline that is
|
|
245
|
-
independent of `requestTimeoutMs` (including when that value is `0`); configure
|
|
246
|
-
it with `discordAwarenessDeadlineMs` (default 10000ms, clamped to 50..60000ms).
|
|
247
|
-
Configure the online marker with `discordAwarenessEmoji`; the offline CLI
|
|
248
|
-
accepts `--emoji`.
|
|
249
|
-
|
|
250
|
-
For stdio MCPL children, the framework defaults `DISCORD_SUPPRESSED_REACTIONS_BASELINE` to the reactions it places: its refusal markers, the Discord adapter's default awareness marker, the configured awareness marker, and every retained outbox emoji. This covers later removals and replays after a configuration change. Suppression is by emoji, so members' own reactions with those emoji stop reaching the agent too. The default is derived at each spawn of a child (its first connect, each automatic reconnect, a restart), so the next child spawned gets the markers retained since the last spawn. When the awareness ledger exists but can't be read, a runtime connect reads it first and refuses before anything is registered or spawned (a startup connect, whose routing is staged beforehand, before anything spawns), and a restart refuses before it stops the running child. An automatic reconnect of a child that takes the default fails and retries rather than spawn it without the default. A value with tokens in the server's env (case-insensitive on Windows), or one intentionally inherited with `inheritEnv: true`, takes precedence, and the framework logs that it replaces the default. A value with no tokens, as discord-mcpl's parser reads them, counts as unset, since the adapter would read it as suppression off. The parser splits on commas and keeps a token only when its normalizer leaves something of it, after stripping U+FE0F, trimming, and stripping one leading and one trailing colon: so a blank value, commas alone, `:`, `::` or a lone U+FE0F (say from `${A},${B}` or `:${NAME}:` with the variables empty) has no tokens. The adapter's filters file and legacy operator env still take precedence over this variable, and they are where an operator turns suppression off.
|
|
244
|
+
For stdio MCPL children, the framework defaults `DISCORD_SUPPRESSED_REACTIONS_BASELINE` to the reactions it places: its refusal markers, the Discord adapter's default awareness marker, the configured awareness marker, and every retained outbox emoji. This covers later removals and replays after a configuration change. Suppression is by emoji, so members' own reactions with those emoji stop reaching the agent too. The default is derived at each spawn of a child (its first connect, each automatic reconnect, a restart), so the next child spawned gets the markers retained since the last spawn. The ledger is read once and held, and read from its file again only after a write to it failed. When it can't be read, a runtime connect of a child that takes the default refuses before anything is registered or spawned (a startup connect, whose routing is staged beforehand, before anything spawns), and a restart of one refuses before it stops the running child; a child with a baseline of its own, and a WebSocket server, connect and restart whatever the ledger's state. An automatic reconnect of a child that takes the default fails and retries rather than spawn it without the default. A value with tokens in the server's env (case-insensitive on Windows), or one intentionally inherited with `inheritEnv: true`, takes precedence, and the framework logs that it replaces the default. A value with no tokens, as discord-mcpl's parser reads them, counts as unset, since the adapter would read it as suppression off. The parser splits on commas and keeps a token only when its normalizer leaves something of it, after stripping U+FE0F, trimming, and stripping one leading and one trailing colon: so a blank value, commas alone, `:`, `::` or a lone U+FE0F (say from `${A},${B}` or `:${NAME}:` with the variables empty) has no tokens. The adapter's filters file and legacy operator env still take precedence over this variable, and they are where an operator turns suppression off.
|
|
251
245
|
|
|
252
246
|
`framework.getPlacedReactionBaseline()` returns a fresh snapshot of that default for other embeddings, including separately managed WebSocket adapters. It returns suppression tokens, with a custom emoji as its bare ID, not marker payloads for adding, removing or replaying a reaction. An unreadable awareness ledger throws instead of producing a partial snapshot. Hosts that previously supplied a refusal-only default must stop supplying it to adopt this framework-derived default; an explicit operator choice should remain intact.
|
|
253
247
|
|
|
@@ -312,7 +306,7 @@ configuration chooses the family, and nothing is probed:
|
|
|
312
306
|
|
|
313
307
|
| Configuration | Family | Transport |
|
|
314
308
|
|---|---|---|
|
|
315
|
-
| `url: 'ws://…'` / `'wss://…'` | MCPL (MCP `2024-11-05`) | WebSocket |
|
|
309
|
+
| `url: 'ws://…'` / `'wss://…'` | MCPL (MCP `2024-11-05`) | WebSocket (`token` / `accessProvider` as `?token=`, or as bearer with `tokenTransport: 'header'`) |
|
|
316
310
|
| `url: 'http://…'` / `'https://…'` | modern MCP | Streamable HTTP (`token` / `accessProvider` as bearer) |
|
|
317
311
|
| `command` | MCPL | stdio |
|
|
318
312
|
| `command` + `protocol: 'modern'` | modern MCP | stdio |
|
|
@@ -329,6 +323,21 @@ configuration chooses the family, and nothing is probed:
|
|
|
329
323
|
A configuration with both `command` and `url` needs `transport` to say which
|
|
330
324
|
one is used; without it, it is refused rather than silently ignoring one.
|
|
331
325
|
|
|
326
|
+
A WebSocket server's credential, its `token` or what its `accessProvider`
|
|
327
|
+
returns for a dial, goes as a `token` query parameter by default
|
|
328
|
+
(`tokenTransport: 'query'`). With `tokenTransport: 'header'` it goes as an
|
|
329
|
+
`Authorization: Bearer` header on the upgrade instead, with no query
|
|
330
|
+
parameter, so it stays out of the url and of the access logs that record it;
|
|
331
|
+
the provider still runs at every dial and reconnect. Switch a server to
|
|
332
|
+
`'header'` once it reads the header. A header carries a credential as
|
|
333
|
+
configured only if it is printable ASCII with no space at either end, so
|
|
334
|
+
header mode refuses any other, without quoting it: a static `token` when the
|
|
335
|
+
server is added, and an access provider's at the dial. `tokenTransport` is
|
|
336
|
+
refused on an http(s):// server, which always sends the header, and on a
|
|
337
|
+
stdio server; `'header'` is refused with a url that carries a `token`
|
|
338
|
+
parameter or userinfo of its own, since whenever the Bearer header carries a
|
|
339
|
+
credential it replaces the userinfo's Basic one.
|
|
340
|
+
|
|
332
341
|
A modern server's tools get the same prefix, `enabledTools`/`disabledTools`,
|
|
333
342
|
class overrides and dispatch as an MCPL server's, and `listMcplServers()`
|
|
334
343
|
shows its `family`, `protocolVersion` and `transport`. Its config differs in
|
|
@@ -368,7 +377,7 @@ revisions the server says it supports ("none listed" for an empty list), or its
|
|
|
368
377
|
and when the list includes `2026-07-28` it says to configure the server with
|
|
369
378
|
`protocol: 'modern'` (stdio) or reach it over http(s).
|
|
370
379
|
|
|
371
|
-
Server and transport text the framework records has the server's configured credentials replaced, in both engines. That covers connection traces, console lines, stderr traces, ops alerts, and a tool call's failure as its caller, the model and the `tool:failed` trace get it. The credentials are those the configuration holds and those its dials sent: from the url as each dial sends it (a WebSocket dial sets the token in the query, which writes the whole query again, form-encoded, and an access provider's token can be in it), credential-like path segments and query names, credential-shaped or credential-named query values, and a WebSocket url's userinfo, in their encoded and decoded forms, replaced wherever they occur; every non-empty query parameter as its whole `name=value`, where no letter or digit adjoins it; the static `token`, and each token an access provider handed a dial, the newest sixteen, raw and url-encoded; and a stdio server's `env` values whose names have a part ending in a credential word, such as `GITHUB_TOKEN`, `PGPASSWORD` or `SESSION_COOKIE`, raw and url-encoded. A stdio server's command
|
|
380
|
+
Server and transport text the framework records has the server's configured credentials replaced, in both engines. That covers connection traces, console lines, stderr traces, ops alerts, and a tool call's failure as its caller, the model and the `tool:failed` trace get it. The credentials are those the configuration holds and those its dials sent: from the url as each dial sends it (a WebSocket dial sets the token in the query, which writes the whole query again, form-encoded, and an access provider's token can be in it; with `tokenTransport: 'header'` it sets none), credential-like path segments and query names, credential-shaped or credential-named query values, and a WebSocket url's userinfo, in their encoded and decoded forms, replaced wherever they occur; every non-empty query parameter as its whole `name=value`, where no letter or digit adjoins it; the static `token`, and each token an access provider handed a dial, the newest sixteen, raw and url-encoded; and a stdio server's `env` values whose names have a part ending in a credential word, such as `GITHUB_TOKEN`, `PGPASSWORD` or `SESSION_COOKIE`, raw and url-encoded. A stdio server's command and arguments aren't derived. Standalone strings shorter than eight characters stay unchanged because they may be ordinary words; short query values are still removed with their parameter names. Treat a submitted configuration as immutable while the server uses it: apply changes with `restartMcplServer(id, newConfig)`. Secrets neither the configuration holds nor a dial sent remain outside this filtering. A JSON-RPC tool answer's result passes through as sent. No error a host's own call gets, whether thrown, rejected with or in an error answer's data, carries a credential this filtering replaces, whoever wrote its words: a server's words are redacted, then bounded, where an error is built from them, the strings in an error answer's data are redacted, and an error a library raised, such as a failed modern connect's, is handed on as its name and its redacted words alone. A stdio child that couldn't be started is refused with Node's words redacted, stopping before Node's quote of a value it refused at once, and a cause that keeps Node's error's name, those words and its `code`. With a configuration that can't be read, the server's words and data are withheld. A failed handshake's `stderrTail` is the end of the server's stderr, with every credential of up to 14,336 characters that reaches into it replaced whole. A number in an error answer's data is matched as JavaScript reads it, so one with more significant digits than a double holds has lost its last digits before it's matched. A close's or a cleanup's failure carries the transports' own words, a child's pid, its server's id and the wait it was given. A connection's events are inputs to the framework's records, which redact them.
|
|
372
381
|
|
|
373
382
|
#### Feature sets
|
|
374
383
|
|
|
@@ -393,22 +402,31 @@ The host advertises `eventCoalescing` (both lanes, deferred rendering,
|
|
|
393
402
|
channel-scoped pushes, a one-hour retry window). A server may add
|
|
394
403
|
`coalesce: { key }` to a `push/event` or a `channels/incoming` message so that a
|
|
395
404
|
later occurrence of the same subject **replaces** the earlier one while it is
|
|
396
|
-
still unread, and **appends** once
|
|
397
|
-
withdraws unread content and appends the supplied deletion
|
|
398
|
-
some version was read (or history is unknown). `initial: true`
|
|
399
|
-
the host know the subject's history is complete, so a create →
|
|
400
|
-
that nobody read leaves no trace. `deferred: true` (push only)
|
|
401
|
-
notices outside context and asks the server for the content
|
|
402
|
-
when a turn is assembled.
|
|
405
|
+
still unread, and **appends** once it has been read (both defined below);
|
|
406
|
+
`retract: true` withdraws unread content and appends the supplied deletion
|
|
407
|
+
notice only when some version was read (or history is unknown). `initial: true`
|
|
408
|
+
on a create lets the host know the subject's history is complete, so a create →
|
|
409
|
+
edit → delete that nobody read leaves no trace. `deferred: true` (push only)
|
|
410
|
+
holds a batch of notices outside context and asks the server for the content
|
|
411
|
+
with `push/render` when a turn is assembled. Each render describes what changed
|
|
412
|
+
since the one before it, so neither a later render nor a notice replaces an
|
|
413
|
+
earlier render the model hasn't read: the newer render lands after it, and a
|
|
414
|
+
retraction or a later plain occurrence withdraws the unread renders, newest
|
|
415
|
+
first.
|
|
403
416
|
|
|
404
417
|
Plain content stays in context and is delivered on arrival through the ordinary
|
|
405
418
|
channel/push path; the host only remembers where it landed. "Unread" means:
|
|
406
|
-
above the agent's consumed watermark (
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
419
|
+
above the agent's consumed watermark (set when the agent is created, and
|
|
420
|
+
advanced at every compile of a request it sends, which a preview isn't, and at
|
|
421
|
+
a tool boundary that injects messages into a stream declaring it carries them,
|
|
422
|
+
as membrane's native path does from 0.6.0), on the current branch, not a
|
|
423
|
+
sharded message, and not folded into a summary by compression. A message
|
|
424
|
+
injected at a tool boundary whose stream doesn't say whether it carries
|
|
425
|
+
injections, as no membrane 0.5.x stream does, stays unread though the model
|
|
426
|
+
may have seen it. On any doubt — restart, branch switch, eviction — the host
|
|
427
|
+
appends, as it does today. There is no per-subject cap: a busy channel's unread
|
|
428
|
+
backlog is simply its unread backlog. Receipts and subject history are kept in
|
|
429
|
+
the `mcpl/coalescing` state (retry window 1 h); audit lines are
|
|
412
430
|
`mcpl:coalescing` trace events.
|
|
413
431
|
|
|
414
432
|
#### Per-channel conversation routing (deprecated)
|
|
@@ -474,6 +492,158 @@ stated wait with `release-provider-wait` (`agentName`, optional `model`), as
|
|
|
474
492
|
optional shared secret (`ApiServerConfig.adminToken`, sent as `x-admin-token`)
|
|
475
493
|
for deployments that front the port with a proxy.
|
|
476
494
|
|
|
495
|
+
### Live surgery and Discord awareness marks
|
|
496
|
+
|
|
497
|
+
`rollbackToMessage(agent, { messageId })` forks the agent's context at a
|
|
498
|
+
message and switches to the fork; `suppressMessages(agent, { messageIds })`
|
|
499
|
+
forks at the head and removes the chosen messages on the fork. The source
|
|
500
|
+
branch stays intact either way. Removing Discord messages from an agent's
|
|
501
|
+
context is local to that agent unless the operator also chooses to mark them:
|
|
502
|
+
|
|
503
|
+
```typescript
|
|
504
|
+
const preview = framework.previewSurgeryMarks('cairn', { rollbackTo: messageId });
|
|
505
|
+
// preview.scopes.addressed / .all: count, per-channel counts and refs
|
|
506
|
+
const result = await framework.rollbackToMessage('cairn', {
|
|
507
|
+
messageId,
|
|
508
|
+
marks: { scope: 'addressed', refs: preview.scopes.addressed.refs },
|
|
509
|
+
});
|
|
510
|
+
// result.markers: { status: 'none' | 'queued' | 'not-scheduled', ... }
|
|
511
|
+
```
|
|
512
|
+
|
|
513
|
+
- **`marks`** is `'none'` (the default), or `{ scope: 'addressed' | 'all', refs? }`.
|
|
514
|
+
`addressed` covers messages tagged `chat:addressed` (mentions, replies to
|
|
515
|
+
the bot, DMs). Passing a preview's `refs` binds the choice to exactly that
|
|
516
|
+
set: messages that arrive before the surgery applies are removed locally but
|
|
517
|
+
never marked. Any other value is refused (`invalid`), never guessed. The
|
|
518
|
+
choice is recorded in the operator log.
|
|
519
|
+
- **The surgery returns once marks are scheduled**, never after Discord has
|
|
520
|
+
accepted them. `result.markers` says whether they were scheduled (`queued`
|
|
521
|
+
with a count and batch id), not chosen or not in scope (`none`), or not to
|
|
522
|
+
be delivered because recording the batch as active failed after the body
|
|
523
|
+
change (`not-scheduled`, whose `error` says why, and whether the batch was
|
|
524
|
+
retired or stays prepared for a start to retire). Every receipt also counts the removed messages left
|
|
525
|
+
unmarked. Marker bookkeeping never fails or undoes an applied rollback or
|
|
526
|
+
suppression; a batch that can't be recorded before the body change stops
|
|
527
|
+
the surgery before anything changes (`failed`).
|
|
528
|
+
- **Delivery runs in the background** and never holds MCPL traffic or turns.
|
|
529
|
+
MCPL's own hold stays: a connection whose policy exchange is in flight,
|
|
530
|
+
after a connect or a reconnect, keeps both planes closed until the
|
|
531
|
+
exchange settles, since its traffic is admitted against the grant the
|
|
532
|
+
exchange establishes. A route that is not connected keeps its work queued
|
|
533
|
+
until it connects.
|
|
534
|
+
Each reaction call has a mandatory deadline independent of
|
|
535
|
+
`requestTimeoutMs` (including `0`): `discordAwarenessDeadlineMs` (default
|
|
536
|
+
10000ms, clamped to 50..60000ms). The emoji is `discordAwarenessEmoji`
|
|
537
|
+
(offline: `--emoji`). Nothing more is sent for a mark after three
|
|
538
|
+
unconfirmed attempts at it (Discord refused it, or no answer came and so
|
|
539
|
+
it may have landed, one left on the wire when the host stopped included;
|
|
540
|
+
an attempt refused before it left the host doesn't count), or after a
|
|
541
|
+
refusal no retry can change (the message, channel or emoji is gone, access
|
|
542
|
+
is missing, or the message takes no more reactions); a pass that gives up
|
|
543
|
+
on marks raises one `discord-awareness-delivery` ops alert, and so does a
|
|
544
|
+
start whose reconciliation gives up on any. A JSON-RPC error answer, which
|
|
545
|
+
may come after the server acted, counts as unanswered, unless it is such a
|
|
546
|
+
refusal. A mark whose request failed in a way a retry could change is sent
|
|
547
|
+
again by the next delivery pass: after a surgery, a retract, a start, a
|
|
548
|
+
connect or reconnect of its route, a tools-list change, or an operator's
|
|
549
|
+
sync, and a trigger that meets a pass already running has that pass try
|
|
550
|
+
it once more before it ends.
|
|
551
|
+
- **Marks are one-shot.** Switching branches, a turn undo, a redo and
|
|
552
|
+
restarts never request a mark or a removal of their own: what goes out is what a surgery
|
|
553
|
+
(the marks chosen for it) or a retract recorded, and a start's delivery
|
|
554
|
+
sends what of that hasn't gone out. The ledger is a table with one entry
|
|
555
|
+
per reaction (route, channel, message and emoji): what the acts that still
|
|
556
|
+
stand want of it, whether Discord is owed a request for that, and what
|
|
557
|
+
Discord last answered. It is a JSON file outside Chronicle,
|
|
558
|
+
`<store>/recovery/discord-awareness-outbox.json` (or
|
|
559
|
+
`discordAwarenessOutboxPath`), so it survives rollbacks, branch deletion
|
|
560
|
+
and a killed process. Each request is written ahead before it leaves, and
|
|
561
|
+
the next one is chosen from the ledger as it is then, so a cancel takes
|
|
562
|
+
effect even while an earlier request is on the wire. A request written and
|
|
563
|
+
never answered is kept as one that may land, whatever Discord answers
|
|
564
|
+
later. Between opposite wishes for one reaction, the later act wins: a
|
|
565
|
+
surgery's marks carry the moment of its choice, even when activation comes
|
|
566
|
+
later, so a retract made in between prevails, and cancelling it revives
|
|
567
|
+
nothing. A write goes to a temporary file renamed over the ledger, synced
|
|
568
|
+
with its directory and that directory's parent, as the framework's own
|
|
569
|
+
recovery files are: one that fails leaves the ledger as it was, and a
|
|
570
|
+
directory that can't be synced after the rename raises the `recovery-sync`
|
|
571
|
+
ops alert while the write stands. A write that activates, completes or
|
|
572
|
+
retires a batch syncs the store first, so it never outlives the change it
|
|
573
|
+
certifies. A ledger that can't be read, or holds a version this build
|
|
574
|
+
doesn't read, stops a start. A running host holds the ledger in memory and
|
|
575
|
+
reads the file again only after a write failed; while it then can't be
|
|
576
|
+
read, nothing is sent, the delivery alert says so, and the controls
|
|
577
|
+
refuse.
|
|
578
|
+
- **A start never activates a surgery's marks.** A batch an interrupted
|
|
579
|
+
surgery left prepared is retired at the next start, none of its marks
|
|
580
|
+
sent. One that had marks to apply raises a `discord-awareness-not-scheduled` ops alert that names the
|
|
581
|
+
surgery, its agent and its branches, and the redo that applies the marks:
|
|
582
|
+
run the surgery again from the source onto a new branch name, choosing
|
|
583
|
+
marks again, if the source still has every message the surgery removed (a
|
|
584
|
+
`hide` there, or the source's deletion, changes that). A batch doesn't say
|
|
585
|
+
which surgery made it, so the alert names an offline recovery beside a
|
|
586
|
+
rollback or a suppression. One with none to apply (none chosen, or its marks cancelled) is
|
|
587
|
+
only logged. An interrupted suppression's removals are still finished, at
|
|
588
|
+
the first start on its branch, and its batch is retired then. Until then
|
|
589
|
+
a start on any branch with that name would apply those removals there.
|
|
590
|
+
- **Operator controls,** each that changes the ledger recorded in the
|
|
591
|
+
operator log (a list or a preview records nothing); once `stop()`
|
|
592
|
+
has begun, cancel and retract refuse, like every operator entry
|
|
593
|
+
point:
|
|
594
|
+
- `listDiscordAwareness()` lists batches and retract requests, each with
|
|
595
|
+
its reactions counted by state (`queued`, `sending`, `present`,
|
|
596
|
+
`absent`, `unknown`, `failed` or `untouched`) and how many may still land;
|
|
597
|
+
- `cancelDiscordAwareness(batch | retractRequest)` stops a batch's marks or
|
|
598
|
+
a retract's removals from being sent or sent again, and never removes or
|
|
599
|
+
undoes anything. Its receipt counts what it stopped before any request
|
|
600
|
+
went out (`cancelled`), what Discord last confirmed as the act wanted
|
|
601
|
+
(`confirmed`), and the act's reactions with a request on the wire or one
|
|
602
|
+
never answered, any of which may still land (`mayStillLand`);
|
|
603
|
+
- `retractDiscordAwareness(batch | 'all')` queues removal of this bot's
|
|
604
|
+
reaction, through each address's configured MCPL route, for every message
|
|
605
|
+
of the batch (or of every batch that isn't retired, whether prepared or
|
|
606
|
+
active, and every reaction the ledger holds), whatever was answered
|
|
607
|
+
before: removing an absent reaction does nothing. As the latest act on
|
|
608
|
+
those reactions, it replaces the adds owed there and any an earlier
|
|
609
|
+
choice would owe later (a prepared batch's activation); cancelling it
|
|
610
|
+
never revives them. Its receipt counts the reactions on which an add may
|
|
611
|
+
still land, on the wire or never answered (an unanswered removal can't
|
|
612
|
+
bring a mark back).
|
|
613
|
+
|
|
614
|
+
Both are async. A request the ledger won't carry out (an unknown batch or
|
|
615
|
+
retract request) is refused as `invalid`; a failure to read or write the
|
|
616
|
+
ledger is `failed`. A framework with neither `storePath` nor
|
|
617
|
+
`discordAwarenessOutboxPath` has no ledger: it refuses a marks choice as
|
|
618
|
+
`invalid`, and so do its controls.
|
|
619
|
+
- **Over `host/command`** (servers granted `allowHostCommands`): an `undo` by
|
|
620
|
+
messages takes `marks: 'none' | 'addressed' | 'all'` (default `none`; any
|
|
621
|
+
other value is refused) and returns `markers`. It holds the store like
|
|
622
|
+
every surgery, so it is refused while any agent sharing the store is
|
|
623
|
+
mid-turn. `hide` and an `undo` by turns place no marks, and refuse a
|
|
624
|
+
`marks` choice other than `none`. The `marks` verb takes `action: 'list'
|
|
625
|
+
| 'cancel' | 'retract'` with a `target` (a batch id; for cancel also a
|
|
626
|
+
retract request id; for retract also `all`).
|
|
627
|
+
|
|
628
|
+
The ledger is version 3. A version 2 ledger, agent-framework 0.22.x's at the
|
|
629
|
+
same path, is rewritten as version 3 in place by its first write: at a start,
|
|
630
|
+
or an offline recovery. Each of its batches keeps how many of its messages
|
|
631
|
+
0.22.x's last attempt saw a mark added to (`legacyAdded` in the list), never
|
|
632
|
+
as a claim about what is on Discord. The work 0.22.x had still to do is never
|
|
633
|
+
sent, since nobody chose it: a batch it never activated is retired (a
|
|
634
|
+
suppression whose body may be pending, once a start on its branch finishes
|
|
635
|
+
the body), and pending adds and removals are dropped. A batch it activated
|
|
636
|
+
stays active, its body taken as finished, as 0.22.x took it. The rewrite names
|
|
637
|
+
each batch that had such work, with how many adds and removals, on stderr
|
|
638
|
+
wherever it runs, and in a `discord-awareness-import-unsent` ops alert at the
|
|
639
|
+
host's start that made it. A batch 0.22.x never activated placed no marks; a
|
|
640
|
+
retract of a batch takes off the mark of its emoji from each of its messages,
|
|
641
|
+
whichever batch placed it. 0.22.x reads only versions 1 and 2, and its start
|
|
642
|
+
stops on a version 3 file: to go back to 0.22.x, move the file aside first,
|
|
643
|
+
and 0.22.x then starts with no marks history. A version 1 ledger, which only
|
|
644
|
+
an unreleased commit wrote, is refused until it is moved away, and its error
|
|
645
|
+
says what that gives up.
|
|
646
|
+
|
|
477
647
|
## Observability
|
|
478
648
|
|
|
479
649
|
Subscribe to trace events for logging, UI updates, or debugging:
|
|
@@ -517,4 +687,4 @@ npm test # Run tests
|
|
|
517
687
|
npm run typecheck # Type-check without emitting
|
|
518
688
|
```
|
|
519
689
|
|
|
520
|
-
Requires Node.js >=
|
|
690
|
+
Requires Node.js >= 22.12. Chronicle requires a Rust toolchain for native module compilation (`npm run build` in the chronicle directory).
|
package/dist/src/agent.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import type { Membrane, NormalizedRequest, ContentBlock, YieldingStream } from '
|
|
|
2
2
|
import type { CacheWireReceipt } from './kv-unified-wire.js';
|
|
3
3
|
import { ToolResultGuard } from './tool-result-guard.js';
|
|
4
4
|
import { type RequestOnlyPrompt, type SilentHeartbeatTick } from './silent-heartbeat.js';
|
|
5
|
+
import { type ResolvedClockConfig } from './clock-rows.js';
|
|
5
6
|
export interface ActivationRequestOptions {
|
|
6
7
|
/** The silent heartbeat tick this request answers, if any. */
|
|
7
8
|
silentHeartbeat?: SilentHeartbeatTick;
|
|
@@ -69,6 +70,10 @@ export declare class Agent {
|
|
|
69
70
|
readonly proseRouting: 'locus' | 'explicit' | 'hybrid' | 'disabled';
|
|
70
71
|
/** Exact whole-response known-tool wrapper containment (default off). */
|
|
71
72
|
readonly toolWrapperProseGuard: boolean;
|
|
73
|
+
/** Clock rows' interval and precision (see AgentConfig.clock); undefined
|
|
74
|
+
* when the agent writes none of its own (a resident still reads those
|
|
75
|
+
* another resident writes into the shared slot). */
|
|
76
|
+
readonly clock: ResolvedClockConfig | undefined;
|
|
72
77
|
/** Prompt-cache TTL forwarded to the provider (see AgentConfig.cacheTtl). */
|
|
73
78
|
readonly cacheTtl: NonNullable<AgentConfig['cacheTtl']>;
|
|
74
79
|
/** Emit prompt-cache markers on requests (see AgentConfig.promptCaching). */
|
|
@@ -351,29 +356,80 @@ export declare class Agent {
|
|
|
351
356
|
/** Settle a converging budget once the window is prepared; true if it settled. */
|
|
352
357
|
private settleRuntimeSettingsTransition;
|
|
353
358
|
/**
|
|
354
|
-
* RFC-006 consumed watermark: the newest stored message
|
|
355
|
-
* of
|
|
356
|
-
*
|
|
357
|
-
*
|
|
359
|
+
* RFC-006 consumed watermark, per branch: the newest stored message as of
|
|
360
|
+
* the latest of the agent's creation, a committing compile that returns,
|
|
361
|
+
* and a tool boundary that injected messages into a live stream declaring
|
|
362
|
+
* it carries them (`supportsInjectedMessages` true: membrane's native
|
|
363
|
+
* path, from membrane 0.6.0). A compile counts from when it takes its
|
|
364
|
+
* value, before it awaits, so one that began before a boundary's mark
|
|
365
|
+
* doesn't roll the mark back (applyCompileWatermark), and a dry run, such
|
|
366
|
+
* as previewActivation's, doesn't move it. Each move takes the store's
|
|
367
|
+
* head, a scalar, so it also covers stored messages the agent wasn't
|
|
368
|
+
* given, such as another slot's.
|
|
369
|
+
*
|
|
370
|
+
* A message above it may still be replaced or withdrawn in place by its
|
|
371
|
+
* sender, though it may already have been in one of the agent's requests.
|
|
372
|
+
* A live stream carries each round's own content and results, which it
|
|
373
|
+
* stores at its tool boundaries, into its next request. It can also carry
|
|
374
|
+
* the messages injected at a boundary whose stream didn't say whether it
|
|
375
|
+
* carries injections, as no membrane 0.5.x stream does: its native path
|
|
376
|
+
* carries them and its XML path drops them, and either way they stay
|
|
377
|
+
* above it.
|
|
358
378
|
*/
|
|
359
379
|
private consumedWatermark;
|
|
360
|
-
/** Counts marks
|
|
361
|
-
*
|
|
380
|
+
/** Counts marks (markContextConsumed's and applyCompileWatermark's), so a
|
|
381
|
+
* compile that finishes can tell whether one was made while it ran. */
|
|
362
382
|
private watermarkMarks;
|
|
383
|
+
/**
|
|
384
|
+
* The newest stored message a compile or a tool boundary may have put in
|
|
385
|
+
* front of the agent, per branch. It moves where the consumed watermark
|
|
386
|
+
* does, and sooner: when a committing compile takes its value, before it
|
|
387
|
+
* awaits, and at every tool boundary that injects, whether or not the
|
|
388
|
+
* stream says it carries injected messages. A message above it may still
|
|
389
|
+
* have been shown, though: for one, a live stream carries each round's own
|
|
390
|
+
* content and results, stored at a boundary that injected nothing, into its
|
|
391
|
+
* next request. A compile that throws assembled nothing, and gives its move
|
|
392
|
+
* back where it can (unshowFailedCompile). A scalar counts a prefix, so a
|
|
393
|
+
* message stored below it without having been shown counts as shown, which
|
|
394
|
+
* errs toward a marker.
|
|
395
|
+
*/
|
|
396
|
+
private shownWatermark;
|
|
363
397
|
getConsumedWatermark(): {
|
|
364
398
|
branch: string;
|
|
365
399
|
sequence: number;
|
|
366
400
|
} | null;
|
|
401
|
+
getShownWatermark(): {
|
|
402
|
+
branch: string;
|
|
403
|
+
sequence: number;
|
|
404
|
+
} | null;
|
|
367
405
|
/** Mark everything currently stored as consumed (the agent's creation, at
|
|
368
|
-
* boot or later, and a tool boundary that injected messages into
|
|
369
|
-
* stream). */
|
|
406
|
+
* boot or later, and a tool boundary that injected messages into a live
|
|
407
|
+
* stream declaring it carries them; see consumedWatermark). */
|
|
370
408
|
markContextConsumed(): void;
|
|
409
|
+
/** Mark everything currently stored as possibly shown (a tool boundary
|
|
410
|
+
* that injected messages, whatever its stream says it carries). Without
|
|
411
|
+
* a watermark the coalescer counts a message as shown, as it counts one
|
|
412
|
+
* read without a consumed watermark. */
|
|
413
|
+
markContextShown(): void;
|
|
414
|
+
/** A committing compile that threw assembled nothing, so its own move of
|
|
415
|
+
* the shown watermark goes back, unless a boundary or another compile has
|
|
416
|
+
* moved the watermark since. It goes back to the watermark as the compile
|
|
417
|
+
* found it, which can be another compile's claim that has failed as well.
|
|
418
|
+
* Of two overlapping committing compiles, if the first to start throws
|
|
419
|
+
* first, it gives nothing back (the second's claim is current), and if
|
|
420
|
+
* the second then throws, it restores the first's failed claim. Messages
|
|
421
|
+
* up to that claim then count as shown, although no request held those
|
|
422
|
+
* above the watermark the first compile found, which errs toward a marker
|
|
423
|
+
* until the next compile or boundary moves the watermark. */
|
|
424
|
+
private unshowFailedCompile;
|
|
371
425
|
/**
|
|
372
426
|
* A finished compile's watermark, taken before it awaited. Within a branch
|
|
373
427
|
* the watermark only advances: if a mark was made while the compile ran,
|
|
374
428
|
* the compile's (older) one is applied only where it is later on that
|
|
375
429
|
* mark's branch, so a boundary's mark is never rolled back by a compile
|
|
376
|
-
* that started before it (a
|
|
430
|
+
* that started before it (a committing compile, such as compileContext's,
|
|
431
|
+
* run during a live turn; a dry run, such as previewActivation's, never
|
|
432
|
+
* reaches here).
|
|
377
433
|
*/
|
|
378
434
|
private applyCompileWatermark;
|
|
379
435
|
/** The watermark a successful compile will establish (taken before, applied after). */
|
package/dist/src/agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAqB,iBAAiB,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGxH,OAAO,KAAK,EAAE,gBAAgB,EAAyB,MAAM,sBAAsB,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD,OAAO,EAQL,KAAK,iBAAiB,EAEtB,KAAK,mBAAmB,EAEzB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/agent.ts"],"names":[],"mappings":"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"}
|