@animalabs/agent-framework 0.22.1 → 0.22.3
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 +4 -2
- package/dist/src/agent.d.ts +266 -28
- package/dist/src/agent.d.ts.map +1 -1
- package/dist/src/agent.js +539 -104
- package/dist/src/agent.js.map +1 -1
- package/dist/src/api/mcp-server-core.d.ts +41 -0
- package/dist/src/api/mcp-server-core.d.ts.map +1 -0
- package/dist/src/api/mcp-server-core.js +593 -0
- package/dist/src/api/mcp-server-core.js.map +1 -0
- package/dist/src/api/mcp-server.d.ts +2 -36
- package/dist/src/api/mcp-server.d.ts.map +1 -1
- package/dist/src/api/mcp-server.js +15 -595
- package/dist/src/api/mcp-server.js.map +1 -1
- package/dist/src/api/server.d.ts +9 -1
- package/dist/src/api/server.d.ts.map +1 -1
- package/dist/src/api/server.js +55 -27
- package/dist/src/api/server.js.map +1 -1
- package/dist/src/api/types.d.ts +10 -2
- package/dist/src/api/types.d.ts.map +1 -1
- package/dist/src/branch-names.d.ts +14 -0
- package/dist/src/branch-names.d.ts.map +1 -0
- package/dist/src/branch-names.js +22 -0
- package/dist/src/branch-names.js.map +1 -0
- package/dist/src/closest-names.d.ts +28 -0
- package/dist/src/closest-names.d.ts.map +1 -0
- package/dist/src/closest-names.js +98 -0
- package/dist/src/closest-names.js.map +1 -0
- package/dist/src/code-execution/py-runner.d.ts +16 -5
- package/dist/src/code-execution/py-runner.d.ts.map +1 -1
- package/dist/src/code-execution/py-runner.js +186 -74
- package/dist/src/code-execution/py-runner.js.map +1 -1
- package/dist/src/code-execution/runtime-py.d.ts.map +1 -1
- package/dist/src/code-execution/runtime-py.js +49 -3
- package/dist/src/code-execution/runtime-py.js.map +1 -1
- package/dist/src/code-execution/tool-definition.d.ts +12 -1
- package/dist/src/code-execution/tool-definition.d.ts.map +1 -1
- package/dist/src/code-execution/tool-definition.js +21 -3
- package/dist/src/code-execution/tool-definition.js.map +1 -1
- package/dist/src/config-checks.d.ts +28 -0
- package/dist/src/config-checks.d.ts.map +1 -0
- package/dist/src/config-checks.js +52 -0
- package/dist/src/config-checks.js.map +1 -0
- package/dist/src/deadline-timer.d.ts +21 -0
- package/dist/src/deadline-timer.d.ts.map +1 -0
- package/dist/src/deadline-timer.js +43 -0
- package/dist/src/deadline-timer.js.map +1 -0
- package/dist/src/error-message.d.ts +30 -0
- package/dist/src/error-message.d.ts.map +1 -0
- package/dist/src/error-message.js +50 -0
- package/dist/src/error-message.js.map +1 -0
- package/dist/src/framework.d.ts +1212 -192
- package/dist/src/framework.d.ts.map +1 -1
- package/dist/src/framework.js +6686 -1835
- package/dist/src/framework.js.map +1 -1
- package/dist/src/gate/event-gate.d.ts +8 -0
- package/dist/src/gate/event-gate.d.ts.map +1 -1
- package/dist/src/gate/event-gate.js +27 -3
- package/dist/src/gate/event-gate.js.map +1 -1
- package/dist/src/gate/gate-script.d.ts.map +1 -1
- package/dist/src/gate/gate-script.js.map +1 -1
- package/dist/src/index.d.ts +5 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +5 -3
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcpl/capability-grant.d.ts.map +1 -1
- package/dist/src/mcpl/channel-registry.d.ts +170 -13
- package/dist/src/mcpl/channel-registry.d.ts.map +1 -1
- package/dist/src/mcpl/channel-registry.js +499 -258
- package/dist/src/mcpl/channel-registry.js.map +1 -1
- package/dist/src/mcpl/checkpoint-manager.d.ts +21 -1
- package/dist/src/mcpl/checkpoint-manager.d.ts.map +1 -1
- package/dist/src/mcpl/checkpoint-manager.js +91 -30
- package/dist/src/mcpl/checkpoint-manager.js.map +1 -1
- package/dist/src/mcpl/conversation-router.d.ts +19 -3
- package/dist/src/mcpl/conversation-router.d.ts.map +1 -1
- package/dist/src/mcpl/conversation-router.js +23 -8
- package/dist/src/mcpl/conversation-router.js.map +1 -1
- package/dist/src/mcpl/convert-block.d.ts +20 -0
- package/dist/src/mcpl/convert-block.d.ts.map +1 -0
- package/dist/src/mcpl/convert-block.js +89 -0
- package/dist/src/mcpl/convert-block.js.map +1 -0
- package/dist/src/mcpl/errors.d.ts +13 -0
- package/dist/src/mcpl/errors.d.ts.map +1 -1
- package/dist/src/mcpl/errors.js +28 -0
- package/dist/src/mcpl/errors.js.map +1 -1
- package/dist/src/mcpl/feature-set-manager.d.ts.map +1 -1
- package/dist/src/mcpl/feature-set-manager.js +4 -3
- package/dist/src/mcpl/feature-set-manager.js.map +1 -1
- package/dist/src/mcpl/hook-orchestrator.d.ts +23 -0
- package/dist/src/mcpl/hook-orchestrator.d.ts.map +1 -1
- package/dist/src/mcpl/hook-orchestrator.js +83 -72
- package/dist/src/mcpl/hook-orchestrator.js.map +1 -1
- package/dist/src/mcpl/inbound-source.d.ts +114 -0
- package/dist/src/mcpl/inbound-source.d.ts.map +1 -0
- package/dist/src/mcpl/inbound-source.js +83 -0
- package/dist/src/mcpl/inbound-source.js.map +1 -0
- package/dist/src/mcpl/index.d.ts +3 -1
- package/dist/src/mcpl/index.d.ts.map +1 -1
- package/dist/src/mcpl/index.js +3 -1
- package/dist/src/mcpl/index.js.map +1 -1
- package/dist/src/mcpl/inference-router.d.ts +15 -11
- package/dist/src/mcpl/inference-router.d.ts.map +1 -1
- package/dist/src/mcpl/inference-router.js +153 -84
- package/dist/src/mcpl/inference-router.js.map +1 -1
- package/dist/src/mcpl/log-value.d.ts +54 -0
- package/dist/src/mcpl/log-value.d.ts.map +1 -0
- package/dist/src/mcpl/log-value.js +109 -0
- package/dist/src/mcpl/log-value.js.map +1 -0
- package/dist/src/mcpl/prose-stream-router.d.ts +6 -6
- package/dist/src/mcpl/prose-stream-router.d.ts.map +1 -1
- package/dist/src/mcpl/prose-stream-router.js +4 -4
- package/dist/src/mcpl/prose-stream-router.js.map +1 -1
- package/dist/src/mcpl/push-coalescer.d.ts +64 -7
- package/dist/src/mcpl/push-coalescer.d.ts.map +1 -1
- package/dist/src/mcpl/push-coalescer.js +121 -24
- package/dist/src/mcpl/push-coalescer.js.map +1 -1
- package/dist/src/mcpl/push-handler.d.ts +38 -8
- package/dist/src/mcpl/push-handler.d.ts.map +1 -1
- package/dist/src/mcpl/push-handler.js +77 -78
- package/dist/src/mcpl/push-handler.js.map +1 -1
- package/dist/src/mcpl/reference-fetcher.d.ts +14 -2
- package/dist/src/mcpl/reference-fetcher.d.ts.map +1 -1
- package/dist/src/mcpl/reference-fetcher.js +72 -30
- package/dist/src/mcpl/reference-fetcher.js.map +1 -1
- package/dist/src/mcpl/references.d.ts +49 -14
- package/dist/src/mcpl/references.d.ts.map +1 -1
- package/dist/src/mcpl/references.js +74 -21
- package/dist/src/mcpl/references.js.map +1 -1
- package/dist/src/mcpl/refusal-lines.d.ts +37 -0
- package/dist/src/mcpl/refusal-lines.d.ts.map +1 -0
- package/dist/src/mcpl/refusal-lines.js +61 -0
- package/dist/src/mcpl/refusal-lines.js.map +1 -0
- package/dist/src/mcpl/scope-manager.d.ts.map +1 -1
- package/dist/src/mcpl/server-connection.d.ts +107 -12
- package/dist/src/mcpl/server-connection.d.ts.map +1 -1
- package/dist/src/mcpl/server-connection.js +470 -139
- package/dist/src/mcpl/server-connection.js.map +1 -1
- package/dist/src/mcpl/server-registry.d.ts +10 -1
- package/dist/src/mcpl/server-registry.d.ts.map +1 -1
- package/dist/src/mcpl/server-registry.js +14 -3
- package/dist/src/mcpl/server-registry.js.map +1 -1
- package/dist/src/mcpl/skip-reply-wake.d.ts +36 -0
- package/dist/src/mcpl/skip-reply-wake.d.ts.map +1 -0
- package/dist/src/mcpl/skip-reply-wake.js +55 -0
- package/dist/src/mcpl/skip-reply-wake.js.map +1 -0
- package/dist/src/mcpl/tool-classes.d.ts +1 -1
- package/dist/src/mcpl/tool-classes.d.ts.map +1 -1
- package/dist/src/mcpl/tool-classes.js +3 -2
- package/dist/src/mcpl/tool-classes.js.map +1 -1
- package/dist/src/mcpl/tool-lifecycle.d.ts.map +1 -1
- package/dist/src/mcpl/tool-lifecycle.js.map +1 -1
- package/dist/src/mcpl/transport.d.ts +74 -7
- package/dist/src/mcpl/transport.d.ts.map +1 -1
- package/dist/src/mcpl/transport.js +209 -22
- package/dist/src/mcpl/transport.js.map +1 -1
- package/dist/src/mcpl/types.d.ts +43 -28
- package/dist/src/mcpl/types.d.ts.map +1 -1
- package/dist/src/mcpl/types.js.map +1 -1
- package/dist/src/mcpl/visible-content.d.ts +15 -0
- package/dist/src/mcpl/visible-content.d.ts.map +1 -1
- package/dist/src/mcpl/visible-content.js +25 -0
- package/dist/src/mcpl/visible-content.js.map +1 -1
- package/dist/src/module-registry.d.ts +19 -1
- package/dist/src/module-registry.d.ts.map +1 -1
- package/dist/src/module-registry.js +54 -25
- package/dist/src/module-registry.js.map +1 -1
- package/dist/src/modules/api/index.d.ts.map +1 -1
- package/dist/src/modules/api/index.js +1 -1
- package/dist/src/modules/api/index.js.map +1 -1
- package/dist/src/modules/discord/discord-js-client.d.ts +1 -0
- package/dist/src/modules/discord/discord-js-client.d.ts.map +1 -1
- package/dist/src/modules/discord/discord-js-client.js +25 -9
- package/dist/src/modules/discord/discord-js-client.js.map +1 -1
- package/dist/src/modules/discord/index.d.ts +29 -3
- package/dist/src/modules/discord/index.d.ts.map +1 -1
- package/dist/src/modules/discord/index.js +383 -145
- package/dist/src/modules/discord/index.js.map +1 -1
- package/dist/src/modules/discord/types.d.ts +14 -1
- package/dist/src/modules/discord/types.d.ts.map +1 -1
- package/dist/src/modules/health/index.d.ts.map +1 -1
- package/dist/src/modules/health/index.js +2 -1
- package/dist/src/modules/health/index.js.map +1 -1
- package/dist/src/modules/history/index.d.ts +3 -1
- package/dist/src/modules/history/index.d.ts.map +1 -1
- package/dist/src/modules/history/index.js +359 -127
- package/dist/src/modules/history/index.js.map +1 -1
- package/dist/src/modules/history/semantic.d.ts +28 -1
- package/dist/src/modules/history/semantic.d.ts.map +1 -1
- package/dist/src/modules/history/semantic.js +177 -32
- package/dist/src/modules/history/semantic.js.map +1 -1
- package/dist/src/modules/unknown-tool.d.ts +10 -0
- package/dist/src/modules/unknown-tool.d.ts.map +1 -0
- package/dist/src/modules/unknown-tool.js +17 -0
- package/dist/src/modules/unknown-tool.js.map +1 -0
- package/dist/src/modules/workspace/branch-intent.d.ts.map +1 -1
- package/dist/src/modules/workspace/branch-intent.js.map +1 -1
- package/dist/src/modules/workspace/disk-agreement.d.ts +54 -6
- package/dist/src/modules/workspace/disk-agreement.d.ts.map +1 -1
- package/dist/src/modules/workspace/disk-agreement.js +93 -27
- package/dist/src/modules/workspace/disk-agreement.js.map +1 -1
- package/dist/src/modules/workspace/effects.d.ts +64 -6
- package/dist/src/modules/workspace/effects.d.ts.map +1 -1
- package/dist/src/modules/workspace/effects.js +291 -44
- package/dist/src/modules/workspace/effects.js.map +1 -1
- package/dist/src/modules/workspace/index.d.ts +127 -27
- package/dist/src/modules/workspace/index.d.ts.map +1 -1
- package/dist/src/modules/workspace/index.js +821 -248
- package/dist/src/modules/workspace/index.js.map +1 -1
- package/dist/src/modules/workspace/observe.d.ts +117 -15
- package/dist/src/modules/workspace/observe.d.ts.map +1 -1
- package/dist/src/modules/workspace/observe.js +436 -51
- package/dist/src/modules/workspace/observe.js.map +1 -1
- package/dist/src/modules/workspace/reconcile.d.ts +75 -8
- package/dist/src/modules/workspace/reconcile.d.ts.map +1 -1
- package/dist/src/modules/workspace/reconcile.js +576 -68
- package/dist/src/modules/workspace/reconcile.js.map +1 -1
- package/dist/src/modules/workspace/types.d.ts +42 -3
- 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 +7 -2
- package/dist/src/modules/workspace/watcher.d.ts.map +1 -1
- package/dist/src/modules/workspace/watcher.js +28 -4
- package/dist/src/modules/workspace/watcher.js.map +1 -1
- package/dist/src/operator-log.d.ts.map +1 -1
- package/dist/src/operator-log.js.map +1 -1
- package/dist/src/prose-drafts.d.ts +240 -0
- package/dist/src/prose-drafts.d.ts.map +1 -0
- package/dist/src/prose-drafts.js +362 -0
- package/dist/src/prose-drafts.js.map +1 -0
- package/dist/src/prose-segments.d.ts +21 -2
- package/dist/src/prose-segments.d.ts.map +1 -1
- package/dist/src/prose-segments.js +46 -9
- package/dist/src/prose-segments.js.map +1 -1
- package/dist/src/provider-waits.d.ts.map +1 -1
- package/dist/src/provider-waits.js.map +1 -1
- package/dist/src/queue.d.ts.map +1 -1
- package/dist/src/record-journal.d.ts.map +1 -1
- package/dist/src/record-journal.js.map +1 -1
- package/dist/src/recovery/discord-awareness-outbox.d.ts.map +1 -1
- package/dist/src/recovery/discord-awareness-outbox.js.map +1 -1
- package/dist/src/recovery/offline-branch.d.ts +1 -0
- package/dist/src/recovery/offline-branch.d.ts.map +1 -1
- package/dist/src/recovery/offline-branch.js +32 -25
- package/dist/src/recovery/offline-branch.js.map +1 -1
- package/dist/src/recovery/recover-cli.js.map +1 -1
- package/dist/src/runtime/liveness-watchdog.d.ts.map +1 -1
- package/dist/src/runtime/liveness-watchdog.js.map +1 -1
- package/dist/src/safe-slice.d.ts +5 -1
- package/dist/src/safe-slice.d.ts.map +1 -1
- package/dist/src/safe-slice.js +9 -1
- package/dist/src/safe-slice.js.map +1 -1
- package/dist/src/shutdown.d.ts.map +1 -1
- package/dist/src/shutdown.js.map +1 -1
- package/dist/src/stored-removal.d.ts +73 -0
- package/dist/src/stored-removal.d.ts.map +1 -0
- package/dist/src/stored-removal.js +100 -0
- package/dist/src/stored-removal.js.map +1 -0
- package/dist/src/thinking-token-stamp.js.map +1 -1
- package/dist/src/tool-image-ledger.d.ts +87 -19
- package/dist/src/tool-image-ledger.d.ts.map +1 -1
- package/dist/src/tool-image-ledger.js +135 -32
- package/dist/src/tool-image-ledger.js.map +1 -1
- package/dist/src/tool-presentation.d.ts +9 -0
- package/dist/src/tool-presentation.d.ts.map +1 -1
- package/dist/src/tool-presentation.js +257 -60
- package/dist/src/tool-presentation.js.map +1 -1
- package/dist/src/tool-result-guard.d.ts.map +1 -1
- package/dist/src/tool-result-guard.js +7 -10
- package/dist/src/tool-result-guard.js.map +1 -1
- package/dist/src/tool-result-history.d.ts +32 -3
- package/dist/src/tool-result-history.d.ts.map +1 -1
- package/dist/src/tool-result-history.js +106 -19
- package/dist/src/tool-result-history.js.map +1 -1
- package/dist/src/tune-out/coordinator.d.ts +25 -1
- package/dist/src/tune-out/coordinator.d.ts.map +1 -1
- package/dist/src/tune-out/coordinator.js +260 -65
- package/dist/src/tune-out/coordinator.js.map +1 -1
- package/dist/src/tune-out/tools.d.ts +1 -1
- package/dist/src/tune-out/tools.d.ts.map +1 -1
- package/dist/src/types/agent.d.ts +59 -11
- package/dist/src/types/agent.d.ts.map +1 -1
- package/dist/src/types/events.d.ts +17 -0
- package/dist/src/types/events.d.ts.map +1 -1
- package/dist/src/types/framework.d.ts +31 -5
- package/dist/src/types/framework.d.ts.map +1 -1
- package/dist/src/types/inference-log.d.ts +1 -1
- package/dist/src/types/inference-log.d.ts.map +1 -1
- package/dist/src/types/module.d.ts +30 -7
- package/dist/src/types/module.d.ts.map +1 -1
- package/dist/src/types/trace.d.ts +151 -11
- package/dist/src/types/trace.d.ts.map +1 -1
- package/dist/src/usage/usage-tracker.d.ts +5 -0
- package/dist/src/usage/usage-tracker.d.ts.map +1 -1
- package/dist/src/usage/usage-tracker.js +35 -8
- package/dist/src/usage/usage-tracker.js.map +1 -1
- package/package.json +10 -9
- package/src/agent.ts +572 -105
- package/src/api/mcp-server-core.ts +681 -0
- package/src/api/mcp-server.ts +16 -685
- package/src/api/server.ts +55 -30
- package/src/api/types.ts +10 -2
- package/src/branch-names.ts +19 -0
- package/src/closest-names.ts +94 -0
- package/src/code-execution/py-runner.ts +200 -76
- package/src/code-execution/runtime-py.ts +49 -3
- package/src/code-execution/tool-definition.ts +28 -4
- package/src/config-checks.ts +48 -0
- package/src/deadline-timer.ts +44 -0
- package/src/error-message.ts +48 -0
- package/src/framework.ts +7158 -1936
- package/src/gate/event-gate.ts +28 -3
- package/src/index.ts +12 -3
- package/src/mcpl/channel-registry.ts +615 -289
- package/src/mcpl/checkpoint-manager.ts +104 -29
- package/src/mcpl/conversation-router.ts +28 -8
- package/src/mcpl/convert-block.ts +97 -0
- package/src/mcpl/errors.ts +28 -0
- package/src/mcpl/feature-set-manager.ts +4 -3
- package/src/mcpl/hook-orchestrator.ts +84 -77
- package/src/mcpl/inbound-source.ts +156 -0
- package/src/mcpl/index.ts +10 -1
- package/src/mcpl/inference-router.ts +174 -99
- package/src/mcpl/log-value.ts +116 -0
- package/src/mcpl/prose-stream-router.ts +6 -6
- package/src/mcpl/push-coalescer.ts +124 -24
- package/src/mcpl/push-handler.ts +86 -84
- package/src/mcpl/reference-fetcher.ts +71 -26
- package/src/mcpl/references.ts +81 -22
- package/src/mcpl/refusal-lines.ts +59 -0
- package/src/mcpl/server-connection.ts +496 -142
- package/src/mcpl/server-registry.ts +15 -4
- package/src/mcpl/skip-reply-wake.ts +73 -0
- package/src/mcpl/tool-classes.ts +3 -2
- package/src/mcpl/transport.ts +219 -26
- package/src/mcpl/types.ts +18 -3
- package/src/mcpl/visible-content.ts +27 -0
- package/src/module-registry.ts +58 -23
- package/src/modules/api/index.ts +1 -1
- package/src/modules/discord/discord-js-client.ts +26 -10
- package/src/modules/discord/index.ts +395 -160
- package/src/modules/discord/types.ts +15 -2
- package/src/modules/health/index.ts +2 -1
- package/src/modules/history/index.ts +410 -120
- package/src/modules/history/semantic.ts +189 -32
- package/src/modules/unknown-tool.ts +16 -0
- package/src/modules/workspace/disk-agreement.ts +125 -21
- package/src/modules/workspace/effects.ts +279 -35
- package/src/modules/workspace/index.ts +841 -261
- package/src/modules/workspace/observe.ts +456 -56
- package/src/modules/workspace/reconcile.ts +688 -76
- package/src/modules/workspace/types.ts +41 -2
- package/src/modules/workspace/watcher.ts +27 -4
- package/src/prose-drafts.ts +481 -0
- package/src/prose-segments.ts +51 -8
- package/src/recovery/offline-branch.ts +36 -29
- package/src/safe-slice.ts +9 -1
- package/src/stored-removal.ts +126 -0
- package/src/tool-image-ledger.ts +153 -34
- package/src/tool-presentation.ts +224 -40
- package/src/tool-result-guard.ts +7 -8
- package/src/tool-result-history.ts +124 -20
- package/src/tune-out/coordinator.ts +259 -65
- package/src/types/agent.ts +59 -13
- package/src/types/events.ts +17 -0
- package/src/types/framework.ts +31 -5
- package/src/types/inference-log.ts +1 -1
- package/src/types/module.ts +31 -7
- package/src/types/trace.ts +158 -12
- package/src/usage/usage-tracker.ts +32 -8
- package/dist/test/activation-request-sanitize.test.d.ts +0 -2
- package/dist/test/activation-request-sanitize.test.d.ts.map +0 -1
- package/dist/test/activation-request-sanitize.test.js +0 -89
- package/dist/test/activation-request-sanitize.test.js.map +0 -1
- package/dist/test/agent-cache-ttl.test.d.ts +0 -2
- package/dist/test/agent-cache-ttl.test.d.ts.map +0 -1
- package/dist/test/agent-cache-ttl.test.js +0 -41
- package/dist/test/agent-cache-ttl.test.js.map +0 -1
- package/dist/test/agent-runtime-settings.test.d.ts +0 -2
- package/dist/test/agent-runtime-settings.test.d.ts.map +0 -1
- package/dist/test/agent-runtime-settings.test.js +0 -462
- package/dist/test/agent-runtime-settings.test.js.map +0 -1
- package/dist/test/api-admin-gate.test.d.ts +0 -2
- package/dist/test/api-admin-gate.test.d.ts.map +0 -1
- package/dist/test/api-admin-gate.test.js +0 -116
- package/dist/test/api-admin-gate.test.js.map +0 -1
- package/dist/test/assistant-persist-refusal.test.d.ts +0 -2
- package/dist/test/assistant-persist-refusal.test.d.ts.map +0 -1
- package/dist/test/assistant-persist-refusal.test.js +0 -63
- package/dist/test/assistant-persist-refusal.test.js.map +0 -1
- package/dist/test/batched-wake-locus.test.d.ts +0 -2
- package/dist/test/batched-wake-locus.test.d.ts.map +0 -1
- package/dist/test/batched-wake-locus.test.js +0 -166
- package/dist/test/batched-wake-locus.test.js.map +0 -1
- package/dist/test/busy-agent-scheduler.test.d.ts +0 -2
- package/dist/test/busy-agent-scheduler.test.d.ts.map +0 -1
- package/dist/test/busy-agent-scheduler.test.js +0 -92
- package/dist/test/busy-agent-scheduler.test.js.map +0 -1
- package/dist/test/channel-incoming-targeting.test.d.ts +0 -2
- package/dist/test/channel-incoming-targeting.test.d.ts.map +0 -1
- package/dist/test/channel-incoming-targeting.test.js +0 -81
- package/dist/test/channel-incoming-targeting.test.js.map +0 -1
- package/dist/test/channel-label-history.test.d.ts +0 -2
- package/dist/test/channel-label-history.test.d.ts.map +0 -1
- package/dist/test/channel-label-history.test.js +0 -424
- package/dist/test/channel-label-history.test.js.map +0 -1
- package/dist/test/channel-lifecycle-provenance.test.d.ts +0 -2
- package/dist/test/channel-lifecycle-provenance.test.d.ts.map +0 -1
- package/dist/test/channel-lifecycle-provenance.test.js +0 -47
- package/dist/test/channel-lifecycle-provenance.test.js.map +0 -1
- package/dist/test/channel-registry-routing.test.d.ts +0 -2
- package/dist/test/channel-registry-routing.test.d.ts.map +0 -1
- package/dist/test/channel-registry-routing.test.js +0 -446
- package/dist/test/channel-registry-routing.test.js.map +0 -1
- package/dist/test/channel-registry-typing.test.d.ts +0 -2
- package/dist/test/channel-registry-typing.test.d.ts.map +0 -1
- package/dist/test/channel-registry-typing.test.js +0 -91
- package/dist/test/channel-registry-typing.test.js.map +0 -1
- package/dist/test/channels-changed-respond-first.test.d.ts +0 -2
- package/dist/test/channels-changed-respond-first.test.d.ts.map +0 -1
- package/dist/test/channels-changed-respond-first.test.js +0 -74
- package/dist/test/channels-changed-respond-first.test.js.map +0 -1
- package/dist/test/checkpoint-attribution.test.d.ts +0 -2
- package/dist/test/checkpoint-attribution.test.d.ts.map +0 -1
- package/dist/test/checkpoint-attribution.test.js +0 -200
- package/dist/test/checkpoint-attribution.test.js.map +0 -1
- package/dist/test/code-execution.test.d.ts +0 -11
- package/dist/test/code-execution.test.d.ts.map +0 -1
- package/dist/test/code-execution.test.js +0 -1272
- package/dist/test/code-execution.test.js.map +0 -1
- package/dist/test/component-defaults.test.d.ts +0 -2
- package/dist/test/component-defaults.test.d.ts.map +0 -1
- package/dist/test/component-defaults.test.js +0 -54
- package/dist/test/component-defaults.test.js.map +0 -1
- package/dist/test/conversation-fork-injection-scoping.test.d.ts +0 -2
- package/dist/test/conversation-fork-injection-scoping.test.d.ts.map +0 -1
- package/dist/test/conversation-fork-injection-scoping.test.js +0 -200
- package/dist/test/conversation-fork-injection-scoping.test.js.map +0 -1
- package/dist/test/conversation-router.test.d.ts +0 -2
- package/dist/test/conversation-router.test.d.ts.map +0 -1
- package/dist/test/conversation-router.test.js +0 -174
- package/dist/test/conversation-router.test.js.map +0 -1
- package/dist/test/conversation-routing.test.d.ts +0 -7
- package/dist/test/conversation-routing.test.d.ts.map +0 -1
- package/dist/test/conversation-routing.test.js +0 -387
- package/dist/test/conversation-routing.test.js.map +0 -1
- package/dist/test/deferred-wake-integrity.test.d.ts +0 -29
- package/dist/test/deferred-wake-integrity.test.d.ts.map +0 -1
- package/dist/test/deferred-wake-integrity.test.js +0 -320
- package/dist/test/deferred-wake-integrity.test.js.map +0 -1
- package/dist/test/discord-awareness-outbox.test.d.ts +0 -2
- package/dist/test/discord-awareness-outbox.test.d.ts.map +0 -1
- package/dist/test/discord-awareness-outbox.test.js +0 -267
- package/dist/test/discord-awareness-outbox.test.js.map +0 -1
- package/dist/test/discord-history-delete-window.test.d.ts +0 -2
- package/dist/test/discord-history-delete-window.test.d.ts.map +0 -1
- package/dist/test/discord-history-delete-window.test.js +0 -81
- package/dist/test/discord-history-delete-window.test.js.map +0 -1
- package/dist/test/discord-history-sync.test.d.ts +0 -2
- package/dist/test/discord-history-sync.test.d.ts.map +0 -1
- package/dist/test/discord-history-sync.test.js +0 -56
- package/dist/test/discord-history-sync.test.js.map +0 -1
- package/dist/test/ephemeral-settle.test.d.ts +0 -2
- package/dist/test/ephemeral-settle.test.d.ts.map +0 -1
- package/dist/test/ephemeral-settle.test.js +0 -354
- package/dist/test/ephemeral-settle.test.js.map +0 -1
- package/dist/test/event-gate-passthrough.test.d.ts +0 -15
- package/dist/test/event-gate-passthrough.test.d.ts.map +0 -1
- package/dist/test/event-gate-passthrough.test.js +0 -289
- package/dist/test/event-gate-passthrough.test.js.map +0 -1
- package/dist/test/event-gate-policy-mutation.test.d.ts +0 -2
- package/dist/test/event-gate-policy-mutation.test.d.ts.map +0 -1
- package/dist/test/event-gate-policy-mutation.test.js +0 -137
- package/dist/test/event-gate-policy-mutation.test.js.map +0 -1
- package/dist/test/event-gate-rate-limit.test.d.ts +0 -2
- package/dist/test/event-gate-rate-limit.test.d.ts.map +0 -1
- package/dist/test/event-gate-rate-limit.test.js +0 -627
- package/dist/test/event-gate-rate-limit.test.js.map +0 -1
- package/dist/test/event-gate-script.test.d.ts +0 -2
- package/dist/test/event-gate-script.test.d.ts.map +0 -1
- package/dist/test/event-gate-script.test.js +0 -95
- package/dist/test/event-gate-script.test.js.map +0 -1
- package/dist/test/event-gate-selfwake.test.d.ts +0 -15
- package/dist/test/event-gate-selfwake.test.d.ts.map +0 -1
- package/dist/test/event-gate-selfwake.test.js +0 -125
- package/dist/test/event-gate-selfwake.test.js.map +0 -1
- package/dist/test/event-gate-tags.test.d.ts +0 -2
- package/dist/test/event-gate-tags.test.d.ts.map +0 -1
- package/dist/test/event-gate-tags.test.js +0 -76
- package/dist/test/event-gate-tags.test.js.map +0 -1
- package/dist/test/event-gate.test.d.ts +0 -2
- package/dist/test/event-gate.test.d.ts.map +0 -1
- package/dist/test/event-gate.test.js +0 -919
- package/dist/test/event-gate.test.js.map +0 -1
- package/dist/test/explicit-prose-routing.test.d.ts +0 -11
- package/dist/test/explicit-prose-routing.test.d.ts.map +0 -1
- package/dist/test/explicit-prose-routing.test.js +0 -1394
- package/dist/test/explicit-prose-routing.test.js.map +0 -1
- package/dist/test/framework.test.d.ts +0 -5
- package/dist/test/framework.test.d.ts.map +0 -1
- package/dist/test/framework.test.js +0 -1048
- package/dist/test/framework.test.js.map +0 -1
- package/dist/test/gather-context-timeout.test.d.ts +0 -2
- package/dist/test/gather-context-timeout.test.d.ts.map +0 -1
- package/dist/test/gather-context-timeout.test.js +0 -120
- package/dist/test/gather-context-timeout.test.js.map +0 -1
- package/dist/test/health-snapshot.test.d.ts +0 -2
- package/dist/test/health-snapshot.test.d.ts.map +0 -1
- package/dist/test/health-snapshot.test.js +0 -74
- package/dist/test/health-snapshot.test.js.map +0 -1
- package/dist/test/helpers/coalescing-fixture.d.ts +0 -72
- package/dist/test/helpers/coalescing-fixture.d.ts.map +0 -1
- package/dist/test/helpers/coalescing-fixture.js +0 -146
- package/dist/test/helpers/coalescing-fixture.js.map +0 -1
- package/dist/test/helpers/coalescing-kill-child.d.ts +0 -2
- package/dist/test/helpers/coalescing-kill-child.d.ts.map +0 -1
- package/dist/test/helpers/coalescing-kill-child.js +0 -24
- package/dist/test/helpers/coalescing-kill-child.js.map +0 -1
- package/dist/test/helpers/mock-membrane.d.ts +0 -53
- package/dist/test/helpers/mock-membrane.d.ts.map +0 -1
- package/dist/test/helpers/mock-membrane.js +0 -168
- package/dist/test/helpers/mock-membrane.js.map +0 -1
- package/dist/test/helpers/pytc-stop-rows.d.ts +0 -11
- package/dist/test/helpers/pytc-stop-rows.d.ts.map +0 -1
- package/dist/test/helpers/pytc-stop-rows.js +0 -143
- package/dist/test/helpers/pytc-stop-rows.js.map +0 -1
- package/dist/test/helpers/quiesce-crash-child.d.ts +0 -2
- package/dist/test/helpers/quiesce-crash-child.d.ts.map +0 -1
- package/dist/test/helpers/quiesce-crash-child.js +0 -156
- package/dist/test/helpers/quiesce-crash-child.js.map +0 -1
- package/dist/test/history-module-overview.test.d.ts +0 -2
- package/dist/test/history-module-overview.test.d.ts.map +0 -1
- package/dist/test/history-module-overview.test.js +0 -711
- package/dist/test/history-module-overview.test.js.map +0 -1
- package/dist/test/history-module-realstore.test.d.ts +0 -2
- package/dist/test/history-module-realstore.test.d.ts.map +0 -1
- package/dist/test/history-module-realstore.test.js +0 -363
- package/dist/test/history-module-realstore.test.js.map +0 -1
- package/dist/test/history-module-semantic.test.d.ts +0 -2
- package/dist/test/history-module-semantic.test.d.ts.map +0 -1
- package/dist/test/history-module-semantic.test.js +0 -213
- package/dist/test/history-module-semantic.test.js.map +0 -1
- package/dist/test/history-module-ux.test.d.ts +0 -2
- package/dist/test/history-module-ux.test.d.ts.map +0 -1
- package/dist/test/history-module-ux.test.js +0 -304
- package/dist/test/history-module-ux.test.js.map +0 -1
- package/dist/test/history-module.test.d.ts +0 -2
- package/dist/test/history-module.test.d.ts.map +0 -1
- package/dist/test/history-module.test.js +0 -619
- package/dist/test/history-module.test.js.map +0 -1
- package/dist/test/history-semantic-review-findings.test.d.ts +0 -2
- package/dist/test/history-semantic-review-findings.test.d.ts.map +0 -1
- package/dist/test/history-semantic-review-findings.test.js +0 -338
- package/dist/test/history-semantic-review-findings.test.js.map +0 -1
- package/dist/test/history-semantic-sync-converges.test.d.ts +0 -2
- package/dist/test/history-semantic-sync-converges.test.d.ts.map +0 -1
- package/dist/test/history-semantic-sync-converges.test.js +0 -109
- package/dist/test/history-semantic-sync-converges.test.js.map +0 -1
- package/dist/test/host-quiesce.test.d.ts +0 -2
- package/dist/test/host-quiesce.test.d.ts.map +0 -1
- package/dist/test/host-quiesce.test.js +0 -863
- package/dist/test/host-quiesce.test.js.map +0 -1
- package/dist/test/inference-exhaustion-rewind.test.d.ts +0 -2
- package/dist/test/inference-exhaustion-rewind.test.d.ts.map +0 -1
- package/dist/test/inference-exhaustion-rewind.test.js +0 -309
- package/dist/test/inference-exhaustion-rewind.test.js.map +0 -1
- package/dist/test/inference-failure-bounds.test.d.ts +0 -2
- package/dist/test/inference-failure-bounds.test.d.ts.map +0 -1
- package/dist/test/inference-failure-bounds.test.js +0 -1201
- package/dist/test/inference-failure-bounds.test.js.map +0 -1
- package/dist/test/inference-failure-observability.test.d.ts +0 -2
- package/dist/test/inference-failure-observability.test.d.ts.map +0 -1
- package/dist/test/inference-failure-observability.test.js +0 -84
- package/dist/test/inference-failure-observability.test.js.map +0 -1
- package/dist/test/journal-tool.test.d.ts +0 -2
- package/dist/test/journal-tool.test.d.ts.map +0 -1
- package/dist/test/journal-tool.test.js +0 -33
- package/dist/test/journal-tool.test.js.map +0 -1
- package/dist/test/kv-unified-open-flight-retry.test.d.ts +0 -2
- package/dist/test/kv-unified-open-flight-retry.test.d.ts.map +0 -1
- package/dist/test/kv-unified-open-flight-retry.test.js +0 -189
- package/dist/test/kv-unified-open-flight-retry.test.js.map +0 -1
- package/dist/test/kv-unified-wiring.test.d.ts +0 -2
- package/dist/test/kv-unified-wiring.test.d.ts.map +0 -1
- package/dist/test/kv-unified-wiring.test.js +0 -95
- package/dist/test/kv-unified-wiring.test.js.map +0 -1
- package/dist/test/late-events-after-stop.test.d.ts +0 -2
- package/dist/test/late-events-after-stop.test.d.ts.map +0 -1
- package/dist/test/late-events-after-stop.test.js +0 -122
- package/dist/test/late-events-after-stop.test.js.map +0 -1
- package/dist/test/liveness-watchdog.test.d.ts +0 -2
- package/dist/test/liveness-watchdog.test.d.ts.map +0 -1
- package/dist/test/liveness-watchdog.test.js +0 -94
- package/dist/test/liveness-watchdog.test.js.map +0 -1
- package/dist/test/machine-close-provenance.test.d.ts +0 -2
- package/dist/test/machine-close-provenance.test.d.ts.map +0 -1
- package/dist/test/machine-close-provenance.test.js +0 -116
- package/dist/test/machine-close-provenance.test.js.map +0 -1
- package/dist/test/maintenance-timer.test.d.ts +0 -2
- package/dist/test/maintenance-timer.test.d.ts.map +0 -1
- package/dist/test/maintenance-timer.test.js +0 -265
- package/dist/test/maintenance-timer.test.js.map +0 -1
- package/dist/test/mcpl-access-provider.test.d.ts +0 -2
- package/dist/test/mcpl-access-provider.test.d.ts.map +0 -1
- package/dist/test/mcpl-access-provider.test.js +0 -20
- package/dist/test/mcpl-access-provider.test.js.map +0 -1
- package/dist/test/mcpl-awareness-barrier.test.d.ts +0 -2
- package/dist/test/mcpl-awareness-barrier.test.d.ts.map +0 -1
- package/dist/test/mcpl-awareness-barrier.test.js +0 -769
- package/dist/test/mcpl-awareness-barrier.test.js.map +0 -1
- package/dist/test/mcpl-capability-grant.test.d.ts +0 -10
- package/dist/test/mcpl-capability-grant.test.d.ts.map +0 -1
- package/dist/test/mcpl-capability-grant.test.js +0 -111
- package/dist/test/mcpl-capability-grant.test.js.map +0 -1
- package/dist/test/mcpl-capability-scoping.test.d.ts +0 -2
- package/dist/test/mcpl-capability-scoping.test.d.ts.map +0 -1
- package/dist/test/mcpl-capability-scoping.test.js +0 -266
- package/dist/test/mcpl-capability-scoping.test.js.map +0 -1
- package/dist/test/mcpl-child-env.test.d.ts +0 -2
- package/dist/test/mcpl-child-env.test.d.ts.map +0 -1
- package/dist/test/mcpl-child-env.test.js +0 -158
- package/dist/test/mcpl-child-env.test.js.map +0 -1
- package/dist/test/mcpl-coalescing.test.d.ts +0 -2
- package/dist/test/mcpl-coalescing.test.d.ts.map +0 -1
- package/dist/test/mcpl-coalescing.test.js +0 -1125
- package/dist/test/mcpl-coalescing.test.js.map +0 -1
- package/dist/test/mcpl-config-diagnostics.test.d.ts +0 -2
- package/dist/test/mcpl-config-diagnostics.test.d.ts.map +0 -1
- package/dist/test/mcpl-config-diagnostics.test.js +0 -452
- package/dist/test/mcpl-config-diagnostics.test.js.map +0 -1
- package/dist/test/mcpl-empty-content.test.d.ts +0 -2
- package/dist/test/mcpl-empty-content.test.d.ts.map +0 -1
- package/dist/test/mcpl-empty-content.test.js +0 -368
- package/dist/test/mcpl-empty-content.test.js.map +0 -1
- package/dist/test/mcpl-gate-roundtrip.test.d.ts +0 -2
- package/dist/test/mcpl-gate-roundtrip.test.d.ts.map +0 -1
- package/dist/test/mcpl-gate-roundtrip.test.js +0 -285
- package/dist/test/mcpl-gate-roundtrip.test.js.map +0 -1
- package/dist/test/mcpl-list-status.test.d.ts +0 -2
- package/dist/test/mcpl-list-status.test.d.ts.map +0 -1
- package/dist/test/mcpl-list-status.test.js +0 -82
- package/dist/test/mcpl-list-status.test.js.map +0 -1
- package/dist/test/mcpl-manifest-changed.test.d.ts +0 -2
- package/dist/test/mcpl-manifest-changed.test.d.ts.map +0 -1
- package/dist/test/mcpl-manifest-changed.test.js +0 -178
- package/dist/test/mcpl-manifest-changed.test.js.map +0 -1
- package/dist/test/mcpl-push-convert.test.d.ts +0 -2
- package/dist/test/mcpl-push-convert.test.d.ts.map +0 -1
- package/dist/test/mcpl-push-convert.test.js +0 -42
- package/dist/test/mcpl-push-convert.test.js.map +0 -1
- package/dist/test/mcpl-reconnect-events.test.d.ts +0 -2
- package/dist/test/mcpl-reconnect-events.test.d.ts.map +0 -1
- package/dist/test/mcpl-reconnect-events.test.js +0 -144
- package/dist/test/mcpl-reconnect-events.test.js.map +0 -1
- package/dist/test/mcpl-reconnect-reregistration.test.d.ts +0 -2
- package/dist/test/mcpl-reconnect-reregistration.test.d.ts.map +0 -1
- package/dist/test/mcpl-reconnect-reregistration.test.js +0 -236
- package/dist/test/mcpl-reconnect-reregistration.test.js.map +0 -1
- package/dist/test/mcpl-reference-fetcher.test.d.ts +0 -2
- package/dist/test/mcpl-reference-fetcher.test.d.ts.map +0 -1
- package/dist/test/mcpl-reference-fetcher.test.js +0 -427
- package/dist/test/mcpl-reference-fetcher.test.js.map +0 -1
- package/dist/test/mcpl-reference-fields.test.d.ts +0 -2
- package/dist/test/mcpl-reference-fields.test.d.ts.map +0 -1
- package/dist/test/mcpl-reference-fields.test.js +0 -149
- package/dist/test/mcpl-reference-fields.test.js.map +0 -1
- package/dist/test/mcpl-request-timeout.test.d.ts +0 -2
- package/dist/test/mcpl-request-timeout.test.d.ts.map +0 -1
- package/dist/test/mcpl-request-timeout.test.js +0 -138
- package/dist/test/mcpl-request-timeout.test.js.map +0 -1
- package/dist/test/mcpl-runtime-lifecycle.test.d.ts +0 -7
- package/dist/test/mcpl-runtime-lifecycle.test.d.ts.map +0 -1
- package/dist/test/mcpl-runtime-lifecycle.test.js +0 -142
- package/dist/test/mcpl-runtime-lifecycle.test.js.map +0 -1
- package/dist/test/mcpl-tool-class-listing.test.d.ts +0 -2
- package/dist/test/mcpl-tool-class-listing.test.d.ts.map +0 -1
- package/dist/test/mcpl-tool-class-listing.test.js +0 -147
- package/dist/test/mcpl-tool-class-listing.test.js.map +0 -1
- package/dist/test/mcpl-tool-classes.test.d.ts +0 -7
- package/dist/test/mcpl-tool-classes.test.d.ts.map +0 -1
- package/dist/test/mcpl-tool-classes.test.js +0 -80
- package/dist/test/mcpl-tool-classes.test.js.map +0 -1
- package/dist/test/mcpl-tool-lifecycle-e2e.test.d.ts +0 -2
- package/dist/test/mcpl-tool-lifecycle-e2e.test.d.ts.map +0 -1
- package/dist/test/mcpl-tool-lifecycle-e2e.test.js +0 -237
- package/dist/test/mcpl-tool-lifecycle-e2e.test.js.map +0 -1
- package/dist/test/mcpl-tool-lifecycle-emitter.test.d.ts +0 -11
- package/dist/test/mcpl-tool-lifecycle-emitter.test.d.ts.map +0 -1
- package/dist/test/mcpl-tool-lifecycle-emitter.test.js +0 -412
- package/dist/test/mcpl-tool-lifecycle-emitter.test.js.map +0 -1
- package/dist/test/mcpl-tool-lifecycle-script.test.d.ts +0 -2
- package/dist/test/mcpl-tool-lifecycle-script.test.d.ts.map +0 -1
- package/dist/test/mcpl-tool-lifecycle-script.test.js +0 -288
- package/dist/test/mcpl-tool-lifecycle-script.test.js.map +0 -1
- package/dist/test/mcpl-tool-lifecycle.test.d.ts +0 -11
- package/dist/test/mcpl-tool-lifecycle.test.d.ts.map +0 -1
- package/dist/test/mcpl-tool-lifecycle.test.js +0 -270
- package/dist/test/mcpl-tool-lifecycle.test.js.map +0 -1
- package/dist/test/mcpl-ws-transport.test.d.ts +0 -2
- package/dist/test/mcpl-ws-transport.test.d.ts.map +0 -1
- package/dist/test/mcpl-ws-transport.test.js +0 -258
- package/dist/test/mcpl-ws-transport.test.js.map +0 -1
- package/dist/test/module-context-integration.test.d.ts +0 -18
- package/dist/test/module-context-integration.test.d.ts.map +0 -1
- package/dist/test/module-context-integration.test.js +0 -181
- package/dist/test/module-context-integration.test.js.map +0 -1
- package/dist/test/offline-recovery-branch.test.d.ts +0 -2
- package/dist/test/offline-recovery-branch.test.d.ts.map +0 -1
- package/dist/test/offline-recovery-branch.test.js +0 -226
- package/dist/test/offline-recovery-branch.test.js.map +0 -1
- package/dist/test/operator-surgery.test.d.ts +0 -2
- package/dist/test/operator-surgery.test.d.ts.map +0 -1
- package/dist/test/operator-surgery.test.js +0 -398
- package/dist/test/operator-surgery.test.js.map +0 -1
- package/dist/test/ops-alert.test.d.ts +0 -2
- package/dist/test/ops-alert.test.d.ts.map +0 -1
- package/dist/test/ops-alert.test.js +0 -153
- package/dist/test/ops-alert.test.js.map +0 -1
- package/dist/test/overbudget-drain-breaker.test.d.ts +0 -2
- package/dist/test/overbudget-drain-breaker.test.d.ts.map +0 -1
- package/dist/test/overbudget-drain-breaker.test.js +0 -197
- package/dist/test/overbudget-drain-breaker.test.js.map +0 -1
- package/dist/test/per-agent-delivery.test.d.ts +0 -2
- package/dist/test/per-agent-delivery.test.d.ts.map +0 -1
- package/dist/test/per-agent-delivery.test.js +0 -108
- package/dist/test/per-agent-delivery.test.js.map +0 -1
- package/dist/test/physical-window-restart.test.d.ts +0 -14
- package/dist/test/physical-window-restart.test.d.ts.map +0 -1
- package/dist/test/physical-window-restart.test.js +0 -222
- package/dist/test/physical-window-restart.test.js.map +0 -1
- package/dist/test/placed-reaction-baseline.test.d.ts +0 -2
- package/dist/test/placed-reaction-baseline.test.d.ts.map +0 -1
- package/dist/test/placed-reaction-baseline.test.js +0 -312
- package/dist/test/placed-reaction-baseline.test.js.map +0 -1
- package/dist/test/present-while-acting.test.d.ts +0 -19
- package/dist/test/present-while-acting.test.d.ts.map +0 -1
- package/dist/test/present-while-acting.test.js +0 -706
- package/dist/test/present-while-acting.test.js.map +0 -1
- package/dist/test/prose-segments.test.d.ts +0 -2
- package/dist/test/prose-segments.test.d.ts.map +0 -1
- package/dist/test/prose-segments.test.js +0 -52
- package/dist/test/prose-segments.test.js.map +0 -1
- package/dist/test/prose-stream-router.test.d.ts +0 -2
- package/dist/test/prose-stream-router.test.d.ts.map +0 -1
- package/dist/test/prose-stream-router.test.js +0 -171
- package/dist/test/prose-stream-router.test.js.map +0 -1
- package/dist/test/provider-acceleration-cooldown.test.d.ts +0 -2
- package/dist/test/provider-acceleration-cooldown.test.d.ts.map +0 -1
- package/dist/test/provider-acceleration-cooldown.test.js +0 -435
- package/dist/test/provider-acceleration-cooldown.test.js.map +0 -1
- package/dist/test/provider-waits.test.d.ts +0 -2
- package/dist/test/provider-waits.test.d.ts.map +0 -1
- package/dist/test/provider-waits.test.js +0 -2196
- package/dist/test/provider-waits.test.js.map +0 -1
- package/dist/test/puppet-tool-call.test.d.ts +0 -2
- package/dist/test/puppet-tool-call.test.d.ts.map +0 -1
- package/dist/test/puppet-tool-call.test.js +0 -224
- package/dist/test/puppet-tool-call.test.js.map +0 -1
- package/dist/test/puppet-turn-reservation.test.d.ts +0 -2
- package/dist/test/puppet-turn-reservation.test.d.ts.map +0 -1
- package/dist/test/puppet-turn-reservation.test.js +0 -139
- package/dist/test/puppet-turn-reservation.test.js.map +0 -1
- package/dist/test/reaction-baseline-platform.test.d.ts +0 -2
- package/dist/test/reaction-baseline-platform.test.d.ts.map +0 -1
- package/dist/test/reaction-baseline-platform.test.js +0 -124
- package/dist/test/reaction-baseline-platform.test.js.map +0 -1
- package/dist/test/record-journal.test.d.ts +0 -6
- package/dist/test/record-journal.test.d.ts.map +0 -1
- package/dist/test/record-journal.test.js +0 -269
- package/dist/test/record-journal.test.js.map +0 -1
- package/dist/test/refusal-reaction-baseline.test.d.ts +0 -2
- package/dist/test/refusal-reaction-baseline.test.d.ts.map +0 -1
- package/dist/test/refusal-reaction-baseline.test.js +0 -81
- package/dist/test/refusal-reaction-baseline.test.js.map +0 -1
- package/dist/test/refusal-rewind.test.d.ts +0 -2
- package/dist/test/refusal-rewind.test.d.ts.map +0 -1
- package/dist/test/refusal-rewind.test.js +0 -108
- package/dist/test/refusal-rewind.test.js.map +0 -1
- package/dist/test/refusal-single-call.test.d.ts +0 -2
- package/dist/test/refusal-single-call.test.d.ts.map +0 -1
- package/dist/test/refusal-single-call.test.js +0 -177
- package/dist/test/refusal-single-call.test.js.map +0 -1
- package/dist/test/release-changelog.test.d.ts +0 -2
- package/dist/test/release-changelog.test.d.ts.map +0 -1
- package/dist/test/release-changelog.test.js +0 -159
- package/dist/test/release-changelog.test.js.map +0 -1
- package/dist/test/same-round-think-policy.test.d.ts +0 -2
- package/dist/test/same-round-think-policy.test.d.ts.map +0 -1
- package/dist/test/same-round-think-policy.test.js +0 -853
- package/dist/test/same-round-think-policy.test.js.map +0 -1
- package/dist/test/save-recent-image.test.d.ts +0 -26
- package/dist/test/save-recent-image.test.d.ts.map +0 -1
- package/dist/test/save-recent-image.test.js +0 -974
- package/dist/test/save-recent-image.test.js.map +0 -1
- package/dist/test/shutdown-errors.test.d.ts +0 -2
- package/dist/test/shutdown-errors.test.d.ts.map +0 -1
- package/dist/test/shutdown-errors.test.js +0 -662
- package/dist/test/shutdown-errors.test.js.map +0 -1
- package/dist/test/silent-heartbeat-rows.test.d.ts +0 -2
- package/dist/test/silent-heartbeat-rows.test.d.ts.map +0 -1
- package/dist/test/silent-heartbeat-rows.test.js +0 -451
- package/dist/test/silent-heartbeat-rows.test.js.map +0 -1
- package/dist/test/silent-heartbeat.test.d.ts +0 -2
- package/dist/test/silent-heartbeat.test.d.ts.map +0 -1
- package/dist/test/silent-heartbeat.test.js +0 -165
- package/dist/test/silent-heartbeat.test.js.map +0 -1
- package/dist/test/state-scaling-e2e.test.d.ts +0 -22
- package/dist/test/state-scaling-e2e.test.d.ts.map +0 -1
- package/dist/test/state-scaling-e2e.test.js +0 -206
- package/dist/test/state-scaling-e2e.test.js.map +0 -1
- package/dist/test/state-scaling.test.d.ts +0 -12
- package/dist/test/state-scaling.test.d.ts.map +0 -1
- package/dist/test/state-scaling.test.js +0 -251
- package/dist/test/state-scaling.test.js.map +0 -1
- package/dist/test/stop-with-work-in-flight.test.d.ts +0 -23
- package/dist/test/stop-with-work-in-flight.test.d.ts.map +0 -1
- package/dist/test/stop-with-work-in-flight.test.js +0 -672
- package/dist/test/stop-with-work-in-flight.test.js.map +0 -1
- package/dist/test/surgery-marks-receipt.test.d.ts +0 -2
- package/dist/test/surgery-marks-receipt.test.d.ts.map +0 -1
- package/dist/test/surgery-marks-receipt.test.js +0 -540
- package/dist/test/surgery-marks-receipt.test.js.map +0 -1
- package/dist/test/thinking-token-stamp.test.d.ts +0 -12
- package/dist/test/thinking-token-stamp.test.d.ts.map +0 -1
- package/dist/test/thinking-token-stamp.test.js +0 -129
- package/dist/test/thinking-token-stamp.test.js.map +0 -1
- package/dist/test/timezone.test.d.ts +0 -2
- package/dist/test/timezone.test.d.ts.map +0 -1
- package/dist/test/timezone.test.js +0 -18
- package/dist/test/timezone.test.js.map +0 -1
- package/dist/test/tool-batch-hook.test.d.ts +0 -8
- package/dist/test/tool-batch-hook.test.d.ts.map +0 -1
- package/dist/test/tool-batch-hook.test.js +0 -275
- package/dist/test/tool-batch-hook.test.js.map +0 -1
- package/dist/test/tool-policy.test.d.ts +0 -2
- package/dist/test/tool-policy.test.d.ts.map +0 -1
- package/dist/test/tool-policy.test.js +0 -51
- package/dist/test/tool-policy.test.js.map +0 -1
- package/dist/test/tool-presentation.test.d.ts +0 -2
- package/dist/test/tool-presentation.test.d.ts.map +0 -1
- package/dist/test/tool-presentation.test.js +0 -268
- package/dist/test/tool-presentation.test.js.map +0 -1
- package/dist/test/tool-result-content.test.d.ts +0 -2
- package/dist/test/tool-result-content.test.d.ts.map +0 -1
- package/dist/test/tool-result-content.test.js +0 -37
- package/dist/test/tool-result-content.test.js.map +0 -1
- package/dist/test/tool-result-guard.test.d.ts +0 -2
- package/dist/test/tool-result-guard.test.d.ts.map +0 -1
- package/dist/test/tool-result-guard.test.js +0 -3607
- package/dist/test/tool-result-guard.test.js.map +0 -1
- package/dist/test/tool-result-history.test.d.ts +0 -7
- package/dist/test/tool-result-history.test.d.ts.map +0 -1
- package/dist/test/tool-result-history.test.js +0 -156
- package/dist/test/tool-result-history.test.js.map +0 -1
- package/dist/test/tool-result-spill.test.d.ts +0 -13
- package/dist/test/tool-result-spill.test.d.ts.map +0 -1
- package/dist/test/tool-result-spill.test.js +0 -586
- package/dist/test/tool-result-spill.test.js.map +0 -1
- package/dist/test/tool-wrapper-prose-guard-integration.test.d.ts +0 -2
- package/dist/test/tool-wrapper-prose-guard-integration.test.d.ts.map +0 -1
- package/dist/test/tool-wrapper-prose-guard-integration.test.js +0 -485
- package/dist/test/tool-wrapper-prose-guard-integration.test.js.map +0 -1
- package/dist/test/tool-wrapper-prose-guard.test.d.ts +0 -2
- package/dist/test/tool-wrapper-prose-guard.test.d.ts.map +0 -1
- package/dist/test/tool-wrapper-prose-guard.test.js +0 -34
- package/dist/test/tool-wrapper-prose-guard.test.js.map +0 -1
- package/dist/test/tools-observe-parser-conformance.test.d.ts +0 -2
- package/dist/test/tools-observe-parser-conformance.test.d.ts.map +0 -1
- package/dist/test/tools-observe-parser-conformance.test.js +0 -129
- package/dist/test/tools-observe-parser-conformance.test.js.map +0 -1
- package/dist/test/trunk-channel-routing.test.d.ts +0 -19
- package/dist/test/trunk-channel-routing.test.d.ts.map +0 -1
- package/dist/test/trunk-channel-routing.test.js +0 -329
- package/dist/test/trunk-channel-routing.test.js.map +0 -1
- package/dist/test/tune-out-e2e.test.d.ts +0 -2
- package/dist/test/tune-out-e2e.test.d.ts.map +0 -1
- package/dist/test/tune-out-e2e.test.js +0 -142
- package/dist/test/tune-out-e2e.test.js.map +0 -1
- package/dist/test/tune-out-gate-composition.test.d.ts +0 -2
- package/dist/test/tune-out-gate-composition.test.d.ts.map +0 -1
- package/dist/test/tune-out-gate-composition.test.js +0 -221
- package/dist/test/tune-out-gate-composition.test.js.map +0 -1
- package/dist/test/tune-out-lifecycle.test.d.ts +0 -2
- package/dist/test/tune-out-lifecycle.test.d.ts.map +0 -1
- package/dist/test/tune-out-lifecycle.test.js +0 -121
- package/dist/test/tune-out-lifecycle.test.js.map +0 -1
- package/dist/test/turn-trigger-provenance.test.d.ts +0 -2
- package/dist/test/turn-trigger-provenance.test.d.ts.map +0 -1
- package/dist/test/turn-trigger-provenance.test.js +0 -137
- package/dist/test/turn-trigger-provenance.test.js.map +0 -1
- package/dist/test/unconvertible-tool-result.test.d.ts +0 -2
- package/dist/test/unconvertible-tool-result.test.d.ts.map +0 -1
- package/dist/test/unconvertible-tool-result.test.js +0 -358
- package/dist/test/unconvertible-tool-result.test.js.map +0 -1
- package/dist/test/usage-accounting.test.d.ts +0 -2
- package/dist/test/usage-accounting.test.d.ts.map +0 -1
- package/dist/test/usage-accounting.test.js +0 -13
- package/dist/test/usage-accounting.test.js.map +0 -1
- package/dist/test/usage-tracker.test.d.ts +0 -2
- package/dist/test/usage-tracker.test.d.ts.map +0 -1
- package/dist/test/usage-tracker.test.js +0 -129
- package/dist/test/usage-tracker.test.js.map +0 -1
- package/dist/test/utils-surface.test.d.ts +0 -2
- package/dist/test/utils-surface.test.d.ts.map +0 -1
- package/dist/test/utils-surface.test.js +0 -145
- package/dist/test/utils-surface.test.js.map +0 -1
- package/dist/test/workspace-branch-continuation.test.d.ts +0 -15
- package/dist/test/workspace-branch-continuation.test.d.ts.map +0 -1
- package/dist/test/workspace-branch-continuation.test.js +0 -183
- package/dist/test/workspace-branch-continuation.test.js.map +0 -1
- package/dist/test/workspace-materialize-freshness.test.d.ts +0 -16
- package/dist/test/workspace-materialize-freshness.test.d.ts.map +0 -1
- package/dist/test/workspace-materialize-freshness.test.js +0 -252
- package/dist/test/workspace-materialize-freshness.test.js.map +0 -1
- package/dist/test/workspace-path-containment.test.d.ts +0 -19
- package/dist/test/workspace-path-containment.test.d.ts.map +0 -1
- package/dist/test/workspace-path-containment.test.js +0 -91
- package/dist/test/workspace-path-containment.test.js.map +0 -1
- package/dist/test/workspace-read-file-from-disk.test.d.ts +0 -17
- package/dist/test/workspace-read-file-from-disk.test.d.ts.map +0 -1
- package/dist/test/workspace-read-file-from-disk.test.js +0 -174
- package/dist/test/workspace-read-file-from-disk.test.js.map +0 -1
- package/dist/test/workspace-read-image.test.d.ts +0 -2
- package/dist/test/workspace-read-image.test.d.ts.map +0 -1
- package/dist/test/workspace-read-image.test.js +0 -597
- package/dist/test/workspace-read-image.test.js.map +0 -1
- package/dist/test/workspace-read-text.test.d.ts +0 -2
- package/dist/test/workspace-read-text.test.d.ts.map +0 -1
- package/dist/test/workspace-read-text.test.js +0 -101
- package/dist/test/workspace-read-text.test.js.map +0 -1
- package/dist/test/workspace-restore-order.test.d.ts +0 -16
- package/dist/test/workspace-restore-order.test.d.ts.map +0 -1
- package/dist/test/workspace-restore-order.test.js +0 -140
- package/dist/test/workspace-restore-order.test.js.map +0 -1
- package/dist/test/workspace-three-way.test.d.ts +0 -12
- package/dist/test/workspace-three-way.test.d.ts.map +0 -1
- package/dist/test/workspace-three-way.test.js +0 -3194
- package/dist/test/workspace-three-way.test.js.map +0 -1
- package/dist/test/workspace-watcher.test.d.ts +0 -2
- package/dist/test/workspace-watcher.test.d.ts.map +0 -1
- package/dist/test/workspace-watcher.test.js +0 -281
- package/dist/test/workspace-watcher.test.js.map +0 -1
- package/dist/test/xml-round-persist.test.d.ts +0 -19
- package/dist/test/xml-round-persist.test.d.ts.map +0 -1
- package/dist/test/xml-round-persist.test.js +0 -235
- package/dist/test/xml-round-persist.test.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
package/src/types/framework.ts
CHANGED
|
@@ -41,7 +41,9 @@ export interface ProcessLoggingConfig {
|
|
|
41
41
|
* the agent already has broader host access through its tools).
|
|
42
42
|
*/
|
|
43
43
|
export interface CodeExecutionConfig {
|
|
44
|
-
/** Master switch —
|
|
44
|
+
/** Master switch — only `true` synthesizes the tool. `create()` refuses a
|
|
45
|
+
* value that isn't a boolean, a quoted "false" included; `null` or leaving
|
|
46
|
+
* it out counts as off. */
|
|
45
47
|
enabled: boolean;
|
|
46
48
|
/** Python interpreter to spawn (default: 'python3' from PATH). */
|
|
47
49
|
pythonPath?: string;
|
|
@@ -210,7 +212,9 @@ export interface FrameworkConfig {
|
|
|
210
212
|
|
|
211
213
|
/**
|
|
212
214
|
* Client-side programmatic tool calling (`code_execution` tool). Omitted or
|
|
213
|
-
* `enabled: false` → tool absent, no python is ever spawned.
|
|
215
|
+
* `enabled: false` → tool absent, no python is ever spawned. At runtime,
|
|
216
|
+
* untyped configs may also use `null` or `false` to omit this setting.
|
|
217
|
+
* Other values that aren't objects are refused at `create()`.
|
|
214
218
|
*/
|
|
215
219
|
codeExecution?: CodeExecutionConfig;
|
|
216
220
|
|
|
@@ -302,6 +306,10 @@ export interface ContextMaintenanceAgentRun {
|
|
|
302
306
|
pendingAfter?: string;
|
|
303
307
|
progressBefore?: Record<string, unknown>;
|
|
304
308
|
progressAfter?: Record<string, unknown>;
|
|
309
|
+
/**
|
|
310
|
+
* The agent's failure in this pass: a tick that threw, or its readiness
|
|
311
|
+
* that couldn't be read, before the ticks or after them.
|
|
312
|
+
*/
|
|
305
313
|
error?: string;
|
|
306
314
|
}
|
|
307
315
|
|
|
@@ -323,6 +331,12 @@ export interface ContextMaintenanceSnapshot {
|
|
|
323
331
|
agentName: string;
|
|
324
332
|
ready: boolean;
|
|
325
333
|
pending?: string;
|
|
334
|
+
/**
|
|
335
|
+
* Why the agent's readiness can't be read: the context manager refuses
|
|
336
|
+
* while its strategy's initialization is pending or has failed, and a
|
|
337
|
+
* strategy can refuse on its own. `ready` is false then.
|
|
338
|
+
*/
|
|
339
|
+
error?: string;
|
|
326
340
|
progress?: Record<string, unknown>;
|
|
327
341
|
}>;
|
|
328
342
|
}
|
|
@@ -401,20 +415,32 @@ export interface InferenceLogEntry {
|
|
|
401
415
|
requestId: string;
|
|
402
416
|
/** Whether inference succeeded */
|
|
403
417
|
success: boolean;
|
|
404
|
-
/**
|
|
418
|
+
/** Why it didn't succeed: the failure's message, or what stopped it */
|
|
405
419
|
error?: string;
|
|
406
|
-
/** Request data or blob ID if large
|
|
420
|
+
/** Request data or blob ID if large. A stream the framework ended at a
|
|
421
|
+
* tool boundary (stopReason 'turn_ended', 'context_budget' or
|
|
422
|
+
* 'physical_window') records a note in place of the body. */
|
|
407
423
|
request: unknown | { blobId: string };
|
|
408
424
|
/** Response data or blob ID if large (only if successful) */
|
|
409
425
|
response?: unknown | { blobId: string };
|
|
410
426
|
durationMs: number;
|
|
427
|
+
/** The stream's usage: its final response's, or, for a stream that ended
|
|
428
|
+
* without one, the provider rounds it finished before it ended. Exactly
|
|
429
|
+
* one entry of a stream carries it, the one its end wrote, a stop's
|
|
430
|
+
* included; a stream whose end writes none (a superseded stream, a
|
|
431
|
+
* disposed agent's stream) gets a failure entry that carries it, when it
|
|
432
|
+
* had finished a round. One that hadn't has nothing to carry and gets no
|
|
433
|
+
* entry. */
|
|
411
434
|
tokenUsage?: {
|
|
412
435
|
input: number;
|
|
413
436
|
output: number;
|
|
414
437
|
cacheCreation?: number;
|
|
415
438
|
cacheRead?: number;
|
|
416
439
|
};
|
|
417
|
-
/** Stop reason from the model
|
|
440
|
+
/** Stop reason from the model, or why the framework ended the stream at a
|
|
441
|
+
* tool boundary: 'turn_ended' (a tool result with endTurn), or
|
|
442
|
+
* 'context_budget' / 'physical_window' (a context-budget or
|
|
443
|
+
* physical-window restart). */
|
|
418
444
|
stopReason?: string;
|
|
419
445
|
}
|
|
420
446
|
|
package/src/types/module.ts
CHANGED
|
@@ -15,6 +15,8 @@ import type { TraceEventListener } from './trace.js';
|
|
|
15
15
|
export interface MessageQuery {
|
|
16
16
|
/** Filter by external source (e.g., 'discord') */
|
|
17
17
|
source?: string;
|
|
18
|
+
/** Filter by external IDs: messages whose metadata.external.id is one of these. An empty list filters nothing. */
|
|
19
|
+
externalIds?: string[];
|
|
18
20
|
/** Filter by participant name */
|
|
19
21
|
participant?: string;
|
|
20
22
|
/** Filter by metadata fields (shallow match) */
|
|
@@ -53,7 +55,12 @@ export interface Module {
|
|
|
53
55
|
|
|
54
56
|
/**
|
|
55
57
|
* Stop the module.
|
|
56
|
-
* Called when the framework stops or when the module is removed.
|
|
58
|
+
* Called when the framework stops or when the module is removed. Also called
|
|
59
|
+
* when a create() that started the module fails (#389): create() stops the
|
|
60
|
+
* framework before it rejects, so before the host has it and before anything
|
|
61
|
+
* a host wires up after create() returns, such as a WorkspaceModule's
|
|
62
|
+
* initStore(). A stop() that saves state can therefore run before that
|
|
63
|
+
* wiring, and shouldn't then save over state it was handed and hasn't used.
|
|
57
64
|
*/
|
|
58
65
|
stop(): Promise<void>;
|
|
59
66
|
|
|
@@ -184,8 +191,11 @@ export interface ModuleContext {
|
|
|
184
191
|
* `modules/<module>/<name>`. Idempotent — safe to call on every start().
|
|
185
192
|
* Items are appended with `appendToLog` (one O(item) record per append) and
|
|
186
193
|
* point-edited with `editLogItem`; Chronicle's append_log snapshot cadence
|
|
187
|
-
* handles consolidation.
|
|
188
|
-
*
|
|
194
|
+
* handles consolidation. The cadence applies when the state is first
|
|
195
|
+
* registered: a store that already holds the state keeps the cadence it was
|
|
196
|
+
* registered with. `name` must not be 'state' (reserved for the main
|
|
197
|
+
* snapshot state) and must not contain '/'. A registration that fails
|
|
198
|
+
* throws, naming the state, and leaves the name unregistered.
|
|
189
199
|
*/
|
|
190
200
|
registerLogState(
|
|
191
201
|
name: string,
|
|
@@ -321,10 +331,15 @@ export interface ModuleContext {
|
|
|
321
331
|
*
|
|
322
332
|
* Modules use this to react to agent lifecycle without polling — e.g. an
|
|
323
333
|
* adapter that wants to show a "typing" indicator can bracket it between
|
|
324
|
-
* `inference:started` and the terminal events
|
|
325
|
-
*
|
|
326
|
-
*
|
|
327
|
-
*
|
|
334
|
+
* `inference:started` and the terminal events: `inference:completed` (the
|
|
335
|
+
* model answered and the turn ended, with a final response or with a tool
|
|
336
|
+
* result that ended it, which `inference:turn_ended` then follows),
|
|
337
|
+
* `inference:aborted`, `inference:failed` and `inference:exhausted`, all of
|
|
338
|
+
* which carry `agentName`. A turn's tool-call cycles stay inside its
|
|
339
|
+
* stream, so one bracket spans them. A context-budget restart emits
|
|
340
|
+
* `inference:started` again with no terminal event for the stream it
|
|
341
|
+
* replaced, and a failing turn can emit `inference:failed` and then
|
|
342
|
+
* `inference:exhausted`, so a bracket should allow a repeated start or end.
|
|
328
343
|
*
|
|
329
344
|
* Returns an unsubscribe function. Call it in the module's `stop()` to avoid
|
|
330
345
|
* leaking listeners across teardown/recreate (e.g. session switch).
|
|
@@ -508,6 +523,15 @@ export interface SpeechContext {
|
|
|
508
523
|
* Empty when no tool calls were made.
|
|
509
524
|
*/
|
|
510
525
|
thoughts?: ContentBlock[];
|
|
526
|
+
|
|
527
|
+
/**
|
|
528
|
+
* The turn this speech ends: the same id as `ToolCall.callerTurnId` on the
|
|
529
|
+
* calls made in it (its model's calls and its foreground scripts' inner
|
|
530
|
+
* calls), kept across the turn's streams (a context-budget restart or a
|
|
531
|
+
* retry), and larger for the agent's next turn. Unique only within one run
|
|
532
|
+
* of the process.
|
|
533
|
+
*/
|
|
534
|
+
turnId?: number;
|
|
511
535
|
}
|
|
512
536
|
|
|
513
537
|
/**
|
package/src/types/trace.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { ProcessEvent } from './events.js';
|
|
2
2
|
import type { ModuleProcessResponse } from './framework.js';
|
|
3
3
|
import type { SessionUsage } from '../usage/types.js';
|
|
4
|
+
import type { DraftReason } from '../prose-drafts.js';
|
|
4
5
|
|
|
5
6
|
/**
|
|
6
7
|
* Base for all trace events.
|
|
@@ -41,17 +42,26 @@ export type TraceEvent =
|
|
|
41
42
|
type: 'inference:started';
|
|
42
43
|
agentName: string;
|
|
43
44
|
/**
|
|
44
|
-
* The turn
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
45
|
+
* The turn's locus as this stream starts (locus and hybrid mode): where
|
|
46
|
+
* its unprefixed plain prose is published, unless a hybrid `>>>`
|
|
47
|
+
* destination takes it, or a re-pin or a `channel_open` moves the locus
|
|
48
|
+
* later in the turn. Omitted for a turn with no locus: explicit and
|
|
49
|
+
* disabled mode, a silent turn, and a heartbeat with no default
|
|
50
|
+
* channel. Observability only, like every trace field; lets external
|
|
51
|
+
* taps (e.g. a TTS relay) tag the whole activation with its channel
|
|
52
|
+
* without re-deriving routing.
|
|
49
53
|
*/
|
|
50
54
|
channelId?: string;
|
|
51
55
|
/** True for a control-plane wake that must not surface typing/prose. */
|
|
52
56
|
silent?: boolean;
|
|
53
57
|
})
|
|
54
58
|
| (TraceEventBase & {
|
|
59
|
+
/**
|
|
60
|
+
* The model answered and the turn ended: with the stream's final
|
|
61
|
+
* response, or with a tool result carrying `endTurn`, which
|
|
62
|
+
* `inference:turn_ended` then follows. `tokenUsage` is the stream's
|
|
63
|
+
* usage, cumulative across its rounds.
|
|
64
|
+
*/
|
|
55
65
|
type: 'inference:completed';
|
|
56
66
|
agentName: string;
|
|
57
67
|
durationMs: number;
|
|
@@ -60,7 +70,17 @@ export type TraceEvent =
|
|
|
60
70
|
| (TraceEventBase & {
|
|
61
71
|
type: 'inference:aborted';
|
|
62
72
|
agentName: string;
|
|
73
|
+
/** How long this start of the turn ran; after a context-budget restart, from the restart. */
|
|
63
74
|
durationMs: number;
|
|
75
|
+
/**
|
|
76
|
+
* Why the turn ended unfinished: the reason its canceller gave
|
|
77
|
+
* `abortInference` or `Agent.cancelStream` (`'user'` when it gave
|
|
78
|
+
* none), `'shutdown'` for a turn `stop()` cancelled,
|
|
79
|
+
* `'quiesce_abandoned'` for a turn an operator quiesce abandoned, or,
|
|
80
|
+
* for a turn dropped before it sent anything (its agent replaced or
|
|
81
|
+
* removed, or the framework stopping or restarted), a sentence saying
|
|
82
|
+
* which.
|
|
83
|
+
*/
|
|
64
84
|
reason?: string;
|
|
65
85
|
})
|
|
66
86
|
| (TraceEventBase & {
|
|
@@ -104,7 +124,9 @@ export type TraceEvent =
|
|
|
104
124
|
blockType: 'text' | 'thinking' | 'tool_call' | 'tool_result';
|
|
105
125
|
/** 0-indexed block position in the current assistant turn. */
|
|
106
126
|
blockIndex: number;
|
|
107
|
-
/**
|
|
127
|
+
/** The channel this stream shows typing in: the turn's locus as the
|
|
128
|
+
* stream started (see inference:started), or in explicit mode the
|
|
129
|
+
* channel the start's wake came from. */
|
|
108
130
|
channelId?: string;
|
|
109
131
|
})
|
|
110
132
|
| (TraceEventBase & {
|
|
@@ -119,7 +141,9 @@ export type TraceEvent =
|
|
|
119
141
|
phase: 'block_start' | 'block_complete';
|
|
120
142
|
blockType: 'text' | 'thinking' | 'tool_call' | 'tool_result';
|
|
121
143
|
blockIndex: number;
|
|
122
|
-
/**
|
|
144
|
+
/** The channel this stream shows typing in: the turn's locus as the
|
|
145
|
+
* stream started (see inference:started), or in explicit mode the
|
|
146
|
+
* channel the start's wake came from. */
|
|
123
147
|
channelId?: string;
|
|
124
148
|
})
|
|
125
149
|
| (TraceEventBase & {
|
|
@@ -236,22 +260,47 @@ export type TraceEvent =
|
|
|
236
260
|
messageId: string;
|
|
237
261
|
source: string;
|
|
238
262
|
})
|
|
239
|
-
/** A push/event refused at the MCPL boundary
|
|
263
|
+
/** A push/event refused at the MCPL boundary: visibly-empty content
|
|
264
|
+
* (`empty-content`, answered -32602, with no `field` or `detail`), or a
|
|
265
|
+
* coalesced occurrence the host refused. A refused occurrence's reason
|
|
266
|
+
* follows the code the producer was answered with: `coalesce-invalid` when
|
|
267
|
+
* the occurrence was the producer's to fix (-32602 malformed; -32017 or
|
|
268
|
+
* -32023 for a channel not permitted or not registered), `coalesce-failed`
|
|
269
|
+
* when the host itself failed (-32000, -32603). Its trace carries the
|
|
270
|
+
* error's message in `detail`, and the failing `field` when the error
|
|
271
|
+
* names one, and `channelId` when the push is refused for its channel
|
|
272
|
+
* (-32017, -32023), so each refusal names its channel even while repeats
|
|
273
|
+
* of its line are held back. An `eventId` that is missing or isn't a
|
|
274
|
+
* string is traced as `''`. A push refused for its feature set, or as a
|
|
275
|
+
* duplicate, gets a `[push-event-rejected]` line and no trace. */
|
|
240
276
|
| (TraceEventBase & {
|
|
241
277
|
type: 'mcpl:push-event-rejected';
|
|
242
278
|
serverId: string;
|
|
243
279
|
eventId: string;
|
|
244
280
|
featureSet: string;
|
|
245
281
|
reason: string;
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
282
|
+
field?: string;
|
|
283
|
+
channelId?: string;
|
|
284
|
+
detail?: string;
|
|
285
|
+
})
|
|
286
|
+
/** A channels/incoming message refused at the MCPL boundary: an
|
|
287
|
+
* unregistered channel (`unknown-channel`, §14.5), visibly-empty content
|
|
288
|
+
* (`empty-content`), or a coalesced item the host refused
|
|
289
|
+
* (`coalesce-invalid` / `coalesce-failed`, with `detail`, and `field` when
|
|
290
|
+
* the error names one, as for a push). A coalesced item refused with
|
|
291
|
+
* -32602 (malformed) is answered `coalesce_invalid`, and one refused
|
|
292
|
+
* otherwise (-32000, or an internal error) with the error's own message.
|
|
293
|
+
* `messageId` is set whenever the message carries one. An uncoalesced
|
|
294
|
+
* message without a channelId or messageId is answered `invalid
|
|
295
|
+
* channel/message identity`, with no line and no trace. */
|
|
249
296
|
| (TraceEventBase & {
|
|
250
297
|
type: 'mcpl:channel-incoming-rejected';
|
|
251
298
|
serverId: string;
|
|
252
299
|
channelId: string;
|
|
253
300
|
messageId?: string;
|
|
254
301
|
reason: string;
|
|
302
|
+
field?: string;
|
|
303
|
+
detail?: string;
|
|
255
304
|
})
|
|
256
305
|
/** MCPL content with nothing model-visible reached the store/wake site
|
|
257
306
|
* (module-emitted or coalescer-delivered) and was dropped: no row, no wake. */
|
|
@@ -264,7 +313,13 @@ export type TraceEvent =
|
|
|
264
313
|
messageId?: string;
|
|
265
314
|
})
|
|
266
315
|
/** RFC-006 coalescing decision record (received / displaced / removed /
|
|
267
|
-
* rendered / revoked / render-cancelled / late-render / render-failed).
|
|
316
|
+
* rendered / revoked / render-cancelled / late-render / render-failed).
|
|
317
|
+
* A late-render whose push/render had already timed out, its fallback
|
|
318
|
+
* materialized, is recorded by the connection's wiring rather than the
|
|
319
|
+
* coalescer: it names `serverId`, `featureSet`, `key` and, for a
|
|
320
|
+
* channel-scoped subject, `channelId` instead of `subject`, carries a late
|
|
321
|
+
* JSON-RPC error as `error` (`[code] message`, bounded), and its `eventId`
|
|
322
|
+
* links it to the batch's render-failed. */
|
|
268
323
|
| (TraceEventBase & {
|
|
269
324
|
type: 'mcpl:coalescing';
|
|
270
325
|
kind: string;
|
|
@@ -415,6 +470,9 @@ export type TraceEvent =
|
|
|
415
470
|
channelId: string;
|
|
416
471
|
reason: string;
|
|
417
472
|
textLen: number;
|
|
473
|
+
/** `failed`: nothing was posted; `unknown`: the request was dispatched
|
|
474
|
+
* and no valid receipt came back, so it may have been. */
|
|
475
|
+
outcome?: 'failed' | 'unknown';
|
|
418
476
|
})
|
|
419
477
|
|
|
420
478
|
// Admin puppet: an operator executed a tool AS an agent and stored the
|
|
@@ -441,6 +499,12 @@ export type TraceEvent =
|
|
|
441
499
|
type: 'mcpl:server-connect-failed';
|
|
442
500
|
serverId: string;
|
|
443
501
|
error: string;
|
|
502
|
+
/** The last of the server's stderr, when its handshake failed by its
|
|
503
|
+
* transport closing, a transport error or its timeout and it had
|
|
504
|
+
* written any: the server's own text, which `error` never carries. A
|
|
505
|
+
* transport that failed its handshake was never wired, so its lines
|
|
506
|
+
* never reached `mcpl:server-stderr`. */
|
|
507
|
+
stderrTail?: string;
|
|
444
508
|
/** Ordinal of the failed attempt: 0 is the initial connect, N is the Nth background retry. */
|
|
445
509
|
attempt: number;
|
|
446
510
|
/** True when a background reconnect loop will keep retrying. */
|
|
@@ -468,6 +532,11 @@ export type TraceEvent =
|
|
|
468
532
|
code: number | null;
|
|
469
533
|
/** Signal that terminated the child, if any. */
|
|
470
534
|
signal: string | null;
|
|
535
|
+
/** Why the transport closed, in its own words, such as `child process
|
|
536
|
+
* exited, and its pipe failed with write EPIPE` or `closed by host`;
|
|
537
|
+
* null when it gave none, or when its reason is a WebSocket server's
|
|
538
|
+
* own close text, which stays off the trace. */
|
|
539
|
+
reason: string | null;
|
|
471
540
|
/** True when a background reconnect loop will revive the connection. */
|
|
472
541
|
willReconnect: boolean;
|
|
473
542
|
})
|
|
@@ -519,6 +588,47 @@ export type TraceEvent =
|
|
|
519
588
|
suggestion?: string;
|
|
520
589
|
hint: string;
|
|
521
590
|
})
|
|
591
|
+
| (TraceEventBase & {
|
|
592
|
+
/** An inbound RPC request/notification handler failed: it threw or
|
|
593
|
+
* rejected, or it resolved after a reply write of its own failed or
|
|
594
|
+
* after it tried to answer a second time. */
|
|
595
|
+
type: 'mcpl:request-handler-error';
|
|
596
|
+
serverId: string;
|
|
597
|
+
/** Connection event name, e.g. channels-register or push-event. */
|
|
598
|
+
event: string;
|
|
599
|
+
/** The request's id when it is a number, or a string id bounded as the
|
|
600
|
+
* other texts here are: control, format and line-separator characters
|
|
601
|
+
* replaced, and cut after 500 code points, with "…" marking the cut.
|
|
602
|
+
* Absent for a notification, for a request whose id is neither, and
|
|
603
|
+
* for a request form of mcpl/manifestChanged or
|
|
604
|
+
* notifications/tools/list_changed, which is answered as it's admitted
|
|
605
|
+
* and then handled as the notification is. */
|
|
606
|
+
requestId?: string | number;
|
|
607
|
+
/** Whether a reply write of the handler's returned: true once one
|
|
608
|
+
* did. On a connection that had already closed, that write dropped
|
|
609
|
+
* the reply, as the connection then drops every reply, so nothing
|
|
610
|
+
* reached the server. A write that throws, as one that can't be
|
|
611
|
+
* encoded does, sends nothing. When it's false and the responder
|
|
612
|
+
* can send an error reply (it has respondError), the host sent -32603
|
|
613
|
+
* "Internal error" itself, or -32000 while it stops, unless
|
|
614
|
+
* `responseError` says that reply failed. A connection that has
|
|
615
|
+
* already closed drops that reply, as it drops every reply, with no
|
|
616
|
+
* `responseError`. */
|
|
617
|
+
responseAttempted: boolean;
|
|
618
|
+
/** The handler's own error when it threw or rejected; otherwise the
|
|
619
|
+
* reply write that failed and that it swallowed, or that it tried to
|
|
620
|
+
* answer a second time. */
|
|
621
|
+
error: string;
|
|
622
|
+
/** A reply write that failed, when the handler then failed with an
|
|
623
|
+
* error of its own (which is `error`). */
|
|
624
|
+
responseFailure?: string;
|
|
625
|
+
/** What the handler tried to send after a reply was already attempted:
|
|
626
|
+
* refused, never written. A result, or an error reply with its code
|
|
627
|
+
* and (bounded) message. */
|
|
628
|
+
refusedResponse?: { kind: 'result' } | { kind: 'error'; code: number; message: string };
|
|
629
|
+
/** Failure while trying to send the internal-error response. */
|
|
630
|
+
responseError?: string;
|
|
631
|
+
})
|
|
522
632
|
| (TraceEventBase & {
|
|
523
633
|
type: 'mcpl:orphaned-response';
|
|
524
634
|
serverId: string;
|
|
@@ -530,6 +640,8 @@ export type TraceEvent =
|
|
|
530
640
|
hadState: boolean;
|
|
531
641
|
/** True when the dropped response carried a server-managed `checkpoint`. */
|
|
532
642
|
hadCheckpoint: boolean;
|
|
643
|
+
/** A late JSON-RPC error, as `[code] message`, bounded. */
|
|
644
|
+
error?: string;
|
|
533
645
|
})
|
|
534
646
|
|
|
535
647
|
// Ops / fleet observability. Everything the framework's opsAlert() escalates
|
|
@@ -576,6 +688,40 @@ export type TraceEvent =
|
|
|
576
688
|
type: 'host:quiesced_boot';
|
|
577
689
|
reason?: string;
|
|
578
690
|
since?: number;
|
|
691
|
+
})
|
|
692
|
+
|
|
693
|
+
// Inbound acceptance observation (mcpl/inbound-source.ts): an installed
|
|
694
|
+
// InboundAcceptanceObserver threw. Delivery is unaffected; the observer's
|
|
695
|
+
// own coverage is interrupted for that acceptance.
|
|
696
|
+
| (TraceEventBase & {
|
|
697
|
+
type: 'inbound:observer-failed';
|
|
698
|
+
/** Envelope kind of the acceptance the observer failed on. */
|
|
699
|
+
kind: 'channel' | 'unscoped' | 'surface';
|
|
700
|
+
error: string;
|
|
701
|
+
})
|
|
702
|
+
|
|
703
|
+
// Held prose drafts (src/prose-drafts.ts): plain speech kept privately
|
|
704
|
+
// instead of sent; a resident's explicit resend; a deliberate dismissal.
|
|
705
|
+
| (TraceEventBase & {
|
|
706
|
+
type: 'prose:drafts-held';
|
|
707
|
+
agentName: string;
|
|
708
|
+
reason: DraftReason;
|
|
709
|
+
draftIds: string[];
|
|
710
|
+
textLen: number;
|
|
711
|
+
})
|
|
712
|
+
| (TraceEventBase & {
|
|
713
|
+
type: 'prose:draft-resent';
|
|
714
|
+
agentName: string;
|
|
715
|
+
draftId: string;
|
|
716
|
+
status: 'delivered' | 'failed' | 'unknown';
|
|
717
|
+
serverId: string;
|
|
718
|
+
channelId: string;
|
|
719
|
+
messageId?: string;
|
|
720
|
+
})
|
|
721
|
+
| (TraceEventBase & {
|
|
722
|
+
type: 'prose:drafts-dismissed';
|
|
723
|
+
agentName: string;
|
|
724
|
+
draftIds: string[];
|
|
579
725
|
});
|
|
580
726
|
|
|
581
727
|
/**
|
|
@@ -12,10 +12,14 @@ function accumulateUsage(
|
|
|
12
12
|
tokens: { inputTokens: number; outputTokens: number; cacheCreationTokens: number; cacheReadTokens: number },
|
|
13
13
|
estimatedCost?: { total: number; currency: string }
|
|
14
14
|
): void {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
// A provider's usage can lack a count (membrane 0.5.87's Bedrock stream
|
|
16
|
+
// takes a message_delta's output count as reported); adding it would make
|
|
17
|
+
// the total NaN, which is stored as null.
|
|
18
|
+
const count = (n: number): number => (Number.isFinite(n) ? n : 0);
|
|
19
|
+
target.inputTokens += count(tokens.inputTokens);
|
|
20
|
+
target.outputTokens += count(tokens.outputTokens);
|
|
21
|
+
target.cacheCreationTokens += count(tokens.cacheCreationTokens);
|
|
22
|
+
target.cacheReadTokens += count(tokens.cacheReadTokens);
|
|
19
23
|
if (estimatedCost) {
|
|
20
24
|
if (!target.estimatedCost) {
|
|
21
25
|
target.estimatedCost = { total: 0, currency: estimatedCost.currency };
|
|
@@ -31,10 +35,16 @@ function accumulateUsage(
|
|
|
31
35
|
function parseUsage(raw: unknown): SessionUsage | null {
|
|
32
36
|
if (!raw || typeof raw !== 'object') return null;
|
|
33
37
|
const o = raw as Record<string, unknown>;
|
|
34
|
-
|
|
38
|
+
// A count stored as null is a NaN total, as JSON stores one: an earlier
|
|
39
|
+
// release could write it when a provider's usage lacked a count. The sum
|
|
40
|
+
// before it was lost when it became NaN, so it reads as 0.
|
|
41
|
+
const count = (v: unknown): number | undefined => (v === null ? 0 : typeof v === 'number' ? v : undefined);
|
|
42
|
+
const inputTokens = count(o.inputTokens);
|
|
43
|
+
const outputTokens = count(o.outputTokens);
|
|
44
|
+
if (inputTokens === undefined || outputTokens === undefined) return null;
|
|
35
45
|
return {
|
|
36
|
-
inputTokens
|
|
37
|
-
outputTokens
|
|
46
|
+
inputTokens,
|
|
47
|
+
outputTokens,
|
|
38
48
|
cacheCreationTokens: typeof o.cacheCreationTokens === 'number' ? o.cacheCreationTokens : 0,
|
|
39
49
|
cacheReadTokens: typeof o.cacheReadTokens === 'number' ? o.cacheReadTokens : 0,
|
|
40
50
|
estimatedCost: o.estimatedCost && typeof o.estimatedCost === 'object'
|
|
@@ -49,6 +59,18 @@ export interface PersistedUsageState {
|
|
|
49
59
|
inferenceCount: number;
|
|
50
60
|
}
|
|
51
61
|
|
|
62
|
+
/** What keeps a stored usage record from restoring, or undefined when it
|
|
63
|
+
* restores: it must be an object whose totals are token counts and whose
|
|
64
|
+
* byAgent, if it has one, is a list. Its per-agent entries are checked one
|
|
65
|
+
* by one as they restore, and one that isn't an agent's usage is skipped. */
|
|
66
|
+
export function persistedUsageProblem(value: unknown): 'not a record' | 'totals' | 'byAgent' | undefined {
|
|
67
|
+
if (!value || typeof value !== 'object' || Array.isArray(value)) return 'not a record';
|
|
68
|
+
const { totals, byAgent } = value as { totals?: unknown; byAgent?: unknown };
|
|
69
|
+
if (parseUsage(totals) === null) return 'totals';
|
|
70
|
+
if (byAgent !== undefined && !Array.isArray(byAgent)) return 'byAgent';
|
|
71
|
+
return undefined;
|
|
72
|
+
}
|
|
73
|
+
|
|
52
74
|
export class UsageTracker {
|
|
53
75
|
private totals: SessionUsage = { inputTokens: 0, outputTokens: 0, cacheCreationTokens: 0, cacheReadTokens: 0 };
|
|
54
76
|
private byAgent: Map<string, { usage: SessionUsage; inferenceCount: number }> = new Map();
|
|
@@ -71,7 +93,9 @@ export class UsageTracker {
|
|
|
71
93
|
this.totals = totals;
|
|
72
94
|
this.inferenceCount = typeof state.inferenceCount === 'number' ? state.inferenceCount : 0;
|
|
73
95
|
if (Array.isArray(state.byAgent)) {
|
|
74
|
-
for (const
|
|
96
|
+
for (const item of state.byAgent as unknown[]) {
|
|
97
|
+
if (!item || typeof item !== 'object') continue;
|
|
98
|
+
const entry = item as { agentName?: unknown; usage?: unknown; inferenceCount?: unknown };
|
|
75
99
|
const usage = parseUsage(entry.usage);
|
|
76
100
|
if (usage && typeof entry.agentName === 'string') {
|
|
77
101
|
this.byAgent.set(entry.agentName, {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"activation-request-sanitize.test.d.ts","sourceRoot":"","sources":["../../test/activation-request-sanitize.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Live-path empty-text sanitize (PR #58, 8a89da0): the Anthropic API rejects
|
|
3
|
-
* empty text blocks with a 400, and one such block in the compiled window used
|
|
4
|
-
* to mute the agent entirely — [inference-failed] on every activation until
|
|
5
|
-
* the offending message aged out (field-observed 2026-07-10). The sanitize in
|
|
6
|
-
* buildActivationRequest strips empty/whitespace/non-string text blocks and
|
|
7
|
-
* drops messages left with no content, BEFORE the trailing-assistant check.
|
|
8
|
-
*/
|
|
9
|
-
import { describe, it } from 'node:test';
|
|
10
|
-
import assert from 'node:assert/strict';
|
|
11
|
-
import { Agent } from '../src/agent.js';
|
|
12
|
-
/** buildActivationRequest only needs compile(); membrane is never touched. */
|
|
13
|
-
function agentCompiling(messages) {
|
|
14
|
-
const cm = {
|
|
15
|
-
compile: async () => ({ messages, systemInjections: [] }),
|
|
16
|
-
};
|
|
17
|
-
return new Agent({ name: 'tester', model: 'test-model', systemPrompt: 'sys' }, cm, {});
|
|
18
|
-
}
|
|
19
|
-
describe('buildActivationRequest empty-text sanitize', () => {
|
|
20
|
-
it('strips empty and whitespace-only text blocks, keeps real text', async () => {
|
|
21
|
-
const agent = agentCompiling([
|
|
22
|
-
{
|
|
23
|
-
participant: 'human',
|
|
24
|
-
content: [
|
|
25
|
-
{ type: 'text', text: '' },
|
|
26
|
-
{ type: 'text', text: ' \n\t ' },
|
|
27
|
-
{ type: 'text', text: 'hello' },
|
|
28
|
-
],
|
|
29
|
-
},
|
|
30
|
-
]);
|
|
31
|
-
const request = await agent.buildActivationRequest([]);
|
|
32
|
-
assert.equal(request.messages.length, 1);
|
|
33
|
-
assert.deepEqual(request.messages[0].content, [{ type: 'text', text: 'hello' }]);
|
|
34
|
-
});
|
|
35
|
-
it('strips text blocks whose `text` is not a string (untyped history from disk)', async () => {
|
|
36
|
-
const agent = agentCompiling([
|
|
37
|
-
{
|
|
38
|
-
participant: 'human',
|
|
39
|
-
content: [
|
|
40
|
-
{ type: 'text', text: null },
|
|
41
|
-
{ type: 'text', text: 42 },
|
|
42
|
-
{ type: 'text', text: 'kept' },
|
|
43
|
-
],
|
|
44
|
-
},
|
|
45
|
-
]);
|
|
46
|
-
const request = await agent.buildActivationRequest([]);
|
|
47
|
-
assert.deepEqual(request.messages[0].content, [{ type: 'text', text: 'kept' }]);
|
|
48
|
-
});
|
|
49
|
-
it('drops a message left with no content at all', async () => {
|
|
50
|
-
const agent = agentCompiling([
|
|
51
|
-
{ participant: 'human', content: [{ type: 'text', text: '' }] },
|
|
52
|
-
{ participant: 'human', content: [{ type: 'text', text: 'still here' }] },
|
|
53
|
-
]);
|
|
54
|
-
const request = await agent.buildActivationRequest([]);
|
|
55
|
-
assert.equal(request.messages.length, 1);
|
|
56
|
-
assert.deepEqual(request.messages[0].content, [{ type: 'text', text: 'still here' }]);
|
|
57
|
-
});
|
|
58
|
-
it('passes non-text blocks through untouched — tool pairing is unaffected', async () => {
|
|
59
|
-
const toolUse = { type: 'tool_use', id: 't1', name: 'shell', input: {} };
|
|
60
|
-
const toolResult = { type: 'tool_result', toolUseId: 't1', content: 'ok' };
|
|
61
|
-
const agent = agentCompiling([
|
|
62
|
-
{ participant: 'human', content: [{ type: 'text', text: 'run it' }] },
|
|
63
|
-
// Tool-only assistant turn whose accompanying text block is empty: the
|
|
64
|
-
// exact shape that produced the field incident.
|
|
65
|
-
{ participant: 'tester', content: [{ type: 'text', text: '' }, toolUse] },
|
|
66
|
-
{ participant: 'user', content: [toolResult] },
|
|
67
|
-
{ participant: 'human', content: [{ type: 'text', text: 'and?' }] },
|
|
68
|
-
]);
|
|
69
|
-
const request = await agent.buildActivationRequest([]);
|
|
70
|
-
assert.equal(request.messages.length, 4);
|
|
71
|
-
assert.deepEqual(request.messages[1].content, [toolUse]);
|
|
72
|
-
assert.deepEqual(request.messages[2].content, [toolResult]);
|
|
73
|
-
});
|
|
74
|
-
it('runs BEFORE the trailing-assistant check: a sanitize-exposed trailing assistant still gets [Continue]', async () => {
|
|
75
|
-
const agent = agentCompiling([
|
|
76
|
-
{ participant: 'human', content: [{ type: 'text', text: 'hi' }] },
|
|
77
|
-
{ participant: 'tester', content: [{ type: 'text', text: 'ok' }] },
|
|
78
|
-
// Empty trailing user message: dropped by the sanitize, which leaves the
|
|
79
|
-
// assistant turn last — the [Continue] guard must see THAT shape.
|
|
80
|
-
{ participant: 'human', content: [{ type: 'text', text: ' ' }] },
|
|
81
|
-
]);
|
|
82
|
-
const request = await agent.buildActivationRequest([]);
|
|
83
|
-
assert.equal(request.messages.length, 3);
|
|
84
|
-
const last = request.messages[request.messages.length - 1];
|
|
85
|
-
assert.equal(last.participant, 'user');
|
|
86
|
-
assert.deepEqual(last.content, [{ type: 'text', text: '[Continue]' }]);
|
|
87
|
-
});
|
|
88
|
-
});
|
|
89
|
-
//# sourceMappingURL=activation-request-sanitize.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"activation-request-sanitize.test.js","sourceRoot":"","sources":["../../test/activation-request-sanitize.test.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAIxC,8EAA8E;AAC9E,SAAS,cAAc,CAAC,QAAmB;IACzC,MAAM,EAAE,GAAG;QACT,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC;KAC7B,CAAC;IAC/B,OAAO,IAAI,KAAK,CACd,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,EAC5D,EAAE,EACF,EAAc,CACf,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,4CAA4C,EAAE,GAAG,EAAE;IAC1D,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;QAC7E,MAAM,KAAK,GAAG,cAAc,CAAC;YAC3B;gBACE,WAAW,EAAE,OAAO;gBACpB,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;oBAC1B,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE;oBAClC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE;iBAChC;aACF;SACF,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;QACvD,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IACpF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6EAA6E,EAAE,KAAK,IAAI,EAAE;QAC3F,MAAM,KAAK,GAAG,cAAc,CAAC;YAC3B;gBACE,WAAW,EAAE,OAAO;gBACpB,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;oBAC5B,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;oBAC1B,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;iBAC/B;aACF;SACF,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;QACvD,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,KAAK,GAAG,cAAc,CAAC;YAC3B,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE;YAC/D,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE;SAC1E,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;QACvD,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;IACzF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;QACrF,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;QACzE,MAAM,UAAU,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC3E,MAAM,KAAK,GAAG,cAAc,CAAC;YAC3B,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE;YACrE,uEAAuE;YACvE,gDAAgD;YAChD,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE;YACzE,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE;YAC9C,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE;SACpE,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;QACvD,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QAC1D,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uGAAuG,EAAE,KAAK,IAAI,EAAE;QACrH,MAAM,KAAK,GAAG,cAAc,CAAC;YAC3B,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE;YACjE,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE;YAClE,yEAAyE;YACzE,kEAAkE;YAClE,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE;SAClE,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;QACvD,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;QAC5D,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACvC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent-cache-ttl.test.d.ts","sourceRoot":"","sources":["../../test/agent-cache-ttl.test.ts"],"names":[],"mappings":""}
|