@animalabs/agent-framework 0.22.2 → 0.22.4
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 +3 -1
- package/dist/src/agent.d.ts +77 -12
- package/dist/src/agent.d.ts.map +1 -1
- package/dist/src/agent.js +143 -41
- package/dist/src/agent.js.map +1 -1
- package/dist/src/api/mcp-server-core.js +1 -1
- package/dist/src/api/mcp-server-core.js.map +1 -1
- package/dist/src/api/server.d.ts.map +1 -1
- package/dist/src/api/server.js +5 -1
- package/dist/src/api/server.js.map +1 -1
- package/dist/src/api/types.d.ts +1 -1
- 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 +828 -88
- package/dist/src/framework.d.ts.map +1 -1
- package/dist/src/framework.js +5011 -1326
- 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/index.d.ts +4 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +4 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcpl/channel-registry.d.ts +144 -6
- package/dist/src/mcpl/channel-registry.d.ts.map +1 -1
- package/dist/src/mcpl/channel-registry.js +424 -263
- 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/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/push-coalescer.d.ts +33 -11
- package/dist/src/mcpl/push-coalescer.d.ts.map +1 -1
- package/dist/src/mcpl/push-coalescer.js +52 -20
- package/dist/src/mcpl/push-coalescer.js.map +1 -1
- package/dist/src/mcpl/push-handler.d.ts +16 -9
- package/dist/src/mcpl/push-handler.d.ts.map +1 -1
- package/dist/src/mcpl/push-handler.js +18 -83
- 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 +47 -12
- 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/server-connection.d.ts +89 -10
- package/dist/src/mcpl/server-connection.d.ts.map +1 -1
- package/dist/src/mcpl/server-connection.js +405 -129
- 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/transport.d.ts +51 -2
- package/dist/src/mcpl/transport.d.ts.map +1 -1
- package/dist/src/mcpl/transport.js +114 -20
- package/dist/src/mcpl/transport.js.map +1 -1
- package/dist/src/mcpl/types.d.ts +14 -3
- 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.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 +379 -143
- 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/disk-agreement.d.ts +32 -2
- package/dist/src/modules/workspace/disk-agreement.d.ts.map +1 -1
- package/dist/src/modules/workspace/disk-agreement.js +30 -2
- 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 +119 -23
- package/dist/src/modules/workspace/index.d.ts.map +1 -1
- package/dist/src/modules/workspace/index.js +793 -247
- package/dist/src/modules/workspace/index.js.map +1 -1
- package/dist/src/modules/workspace/observe.d.ts +75 -8
- package/dist/src/modules/workspace/observe.d.ts.map +1 -1
- package/dist/src/modules/workspace/observe.js +174 -14
- package/dist/src/modules/workspace/observe.js.map +1 -1
- package/dist/src/modules/workspace/reconcile.d.ts +58 -7
- package/dist/src/modules/workspace/reconcile.d.ts.map +1 -1
- package/dist/src/modules/workspace/reconcile.js +521 -56
- package/dist/src/modules/workspace/reconcile.js.map +1 -1
- package/dist/src/modules/workspace/types.d.ts +18 -4
- 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/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/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 +3 -1
- package/dist/src/recovery/offline-branch.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/thinking-token-stamp.d.ts +12 -0
- package/dist/src/thinking-token-stamp.d.ts.map +1 -1
- package/dist/src/thinking-token-stamp.js +34 -3
- 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/types/agent.d.ts +17 -5
- 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 +21 -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 +23 -4
- package/dist/src/types/module.d.ts.map +1 -1
- package/dist/src/types/trace.d.ts +95 -6
- 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 +6 -4
- package/src/agent.ts +169 -41
- package/src/api/mcp-server-core.ts +1 -1
- package/src/api/server.ts +4 -1
- package/src/api/types.ts +1 -1
- 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 +5352 -1388
- package/src/gate/event-gate.ts +28 -3
- package/src/index.ts +11 -2
- package/src/mcpl/channel-registry.ts +517 -286
- 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/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/push-coalescer.ts +60 -24
- package/src/mcpl/push-handler.ts +20 -90
- package/src/mcpl/reference-fetcher.ts +71 -26
- package/src/mcpl/references.ts +81 -22
- package/src/mcpl/server-connection.ts +427 -132
- package/src/mcpl/server-registry.ts +15 -4
- package/src/mcpl/skip-reply-wake.ts +73 -0
- package/src/mcpl/transport.ts +120 -18
- package/src/mcpl/types.ts +14 -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 +391 -158
- 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 +51 -3
- package/src/modules/workspace/effects.ts +279 -35
- package/src/modules/workspace/index.ts +810 -260
- package/src/modules/workspace/observe.ts +194 -20
- package/src/modules/workspace/reconcile.ts +619 -64
- package/src/modules/workspace/types.ts +18 -4
- 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 +4 -1
- package/src/safe-slice.ts +9 -1
- package/src/thinking-token-stamp.ts +34 -3
- 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 +17 -7
- package/src/types/events.ts +17 -0
- package/src/types/framework.ts +21 -5
- package/src/types/inference-log.ts +1 -1
- package/src/types/module.ts +24 -4
- package/src/types/trace.ts +101 -6
- 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 -1598
- 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 -621
- 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 -371
- 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/discord-typing-keepalive.test.d.ts +0 -2
- package/dist/test/discord-typing-keepalive.test.d.ts.map +0 -1
- package/dist/test/discord-typing-keepalive.test.js +0 -77
- package/dist/test/discord-typing-keepalive.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 -1715
- 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 -74
- package/dist/test/helpers/coalescing-fixture.d.ts.map +0 -1
- package/dist/test/helpers/coalescing-fixture.js +0 -152
- 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/hide-then-turn.test.d.ts +0 -2
- package/dist/test/hide-then-turn.test.d.ts.map +0 -1
- package/dist/test/hide-then-turn.test.js +0 -101
- package/dist/test/hide-then-turn.test.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 -988
- 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 -387
- 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 -1202
- 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 -1827
- package/dist/test/maintenance-timer.test.js.map +0 -1
- package/dist/test/mcp-server-bin.test.d.ts +0 -2
- package/dist/test/mcp-server-bin.test.d.ts.map +0 -1
- package/dist/test/mcp-server-bin.test.js +0 -142
- package/dist/test/mcp-server-bin.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-coalesced-content-parity.test.d.ts +0 -2
- package/dist/test/mcpl-coalesced-content-parity.test.d.ts.map +0 -1
- package/dist/test/mcpl-coalesced-content-parity.test.js +0 -532
- package/dist/test/mcpl-coalesced-content-parity.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 -238
- 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-rejection-log-lines.test.d.ts +0 -2
- package/dist/test/mcpl-rejection-log-lines.test.d.ts.map +0 -1
- package/dist/test/mcpl-rejection-log-lines.test.js +0 -349
- package/dist/test/mcpl-rejection-log-lines.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-stderr-tail.test.d.ts +0 -2
- package/dist/test/mcpl-stderr-tail.test.d.ts.map +0 -1
- package/dist/test/mcpl-stderr-tail.test.js +0 -210
- package/dist/test/mcpl-stderr-tail.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-transport-close.test.d.ts +0 -2
- package/dist/test/mcpl-transport-close.test.d.ts.map +0 -1
- package/dist/test/mcpl-transport-close.test.js +0 -373
- package/dist/test/mcpl-transport-close.test.js.map +0 -1
- package/dist/test/mcpl-transport-spawn.test.d.ts +0 -2
- package/dist/test/mcpl-transport-spawn.test.d.ts.map +0 -1
- package/dist/test/mcpl-transport-spawn.test.js +0 -58
- package/dist/test/mcpl-transport-spawn.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 -259
- 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 -570
- 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 -595
- 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 -198
- package/dist/test/overbudget-drain-breaker.test.js.map +0 -1
- package/dist/test/pack-installs-alone.test.d.ts +0 -2
- package/dist/test/pack-installs-alone.test.d.ts.map +0 -1
- package/dist/test/pack-installs-alone.test.js +0 -284
- package/dist/test/pack-installs-alone.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 -16
- package/dist/test/physical-window-restart.test.d.ts.map +0 -1
- package/dist/test/physical-window-restart.test.js +0 -487
- 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 -1649
- 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 -2259
- 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 -226
- 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 -117
- 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-bump.test.d.ts +0 -2
- package/dist/test/release-bump.test.d.ts.map +0 -1
- package/dist/test/release-bump.test.js +0 -248
- package/dist/test/release-bump.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/release-holds.test.d.ts +0 -2
- package/dist/test/release-holds.test.d.ts.map +0 -1
- package/dist/test/release-holds.test.js +0 -456
- package/dist/test/release-holds.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-host-operations.test.d.ts +0 -20
- package/dist/test/stop-with-host-operations.test.d.ts.map +0 -1
- package/dist/test/stop-with-host-operations.test.js +0 -1174
- package/dist/test/stop-with-host-operations.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 -784
- 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 -3729
- 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 -652
- 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/unsent-compiles.test.d.ts +0 -2
- package/dist/test/unsent-compiles.test.d.ts.map +0 -1
- package/dist/test/unsent-compiles.test.js +0 -139
- package/dist/test/unsent-compiles.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 -4094
- 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
|
@@ -21,6 +21,7 @@ import type { StoredMessage } from '@animalabs/context-manager';
|
|
|
21
21
|
import type { ChannelRegistry, TuneOutParams } from '../mcpl/channel-registry.js';
|
|
22
22
|
import type { McplServerRegistry } from '../mcpl/server-registry.js';
|
|
23
23
|
import { CapabilityGrant } from '../mcpl/capability-grant.js';
|
|
24
|
+
import { armAfter, armAt } from '../deadline-timer.js';
|
|
24
25
|
|
|
25
26
|
/** Defaults for tune_out tool params. */
|
|
26
27
|
export const TUNE_OUT_DEFAULTS = {
|
|
@@ -33,6 +34,19 @@ export const TUNE_OUT_DEFAULTS = {
|
|
|
33
34
|
* subconscious turn, and max-wakes counts invocations, not messages. */
|
|
34
35
|
const WAKE_COALESCE_MS = 2_000;
|
|
35
36
|
|
|
37
|
+
/** How long after an end time whose cancel threw the cancel is tried again. */
|
|
38
|
+
const EXPIRY_RETRY_MS = 60_000;
|
|
39
|
+
|
|
40
|
+
/** What a thrown value says, without throwing: an Error's message, or the
|
|
41
|
+
* value as text, which String() can't give for an object with no prototype. */
|
|
42
|
+
function thrownReason(error: unknown): string {
|
|
43
|
+
try {
|
|
44
|
+
return error instanceof Error ? error.message : String(error);
|
|
45
|
+
} catch {
|
|
46
|
+
return '(a value that could not be read)';
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
36
50
|
export interface TuneOutFrameworkHooks {
|
|
37
51
|
/** Deliver a message into an agent's window (per-agent seam). */
|
|
38
52
|
addMessage: (
|
|
@@ -64,7 +78,11 @@ export interface TuneOutFrameworkHooks {
|
|
|
64
78
|
|
|
65
79
|
export class TuneOutCoordinator {
|
|
66
80
|
private cadenceTimers = new Map<string, ReturnType<typeof setTimeout>>();
|
|
67
|
-
/**
|
|
81
|
+
/** Each duration's pending timer: a step toward its end time
|
|
82
|
+
* (params.expiresAtMs), or the retry of an end-time cancel that threw.
|
|
83
|
+
* stop clears it, cancel does when it finds the tune-out in the registry,
|
|
84
|
+
* the end time does when its cancel finds the tune-out already ended,
|
|
85
|
+
* and the channel's next accepted enter does in any case. */
|
|
68
86
|
private expiryTimers = new Map<string, ReturnType<typeof setTimeout>>();
|
|
69
87
|
/** Channels with a wake invocation pending inside the coalescing window. */
|
|
70
88
|
private pendingWakes = new Map<string, { count: number; timer: ReturnType<typeof setTimeout> }>();
|
|
@@ -108,11 +126,36 @@ export class TuneOutCoordinator {
|
|
|
108
126
|
const key = this.key(serverId, channelId);
|
|
109
127
|
const existing = this.expiryTimers.get(key);
|
|
110
128
|
if (existing) clearTimeout(existing);
|
|
111
|
-
const
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
129
|
+
const hold = (timer: ReturnType<typeof setTimeout>): void => { this.expiryTimers.set(key, timer); };
|
|
130
|
+
const end = (): void => {
|
|
131
|
+
try {
|
|
132
|
+
// The retry is armed before the cancel, as the cadence arms its next
|
|
133
|
+
// period before its turn, so a cancel that throws is tried again. A
|
|
134
|
+
// cancel that ends the tune-out clears it with the channel's other
|
|
135
|
+
// timers, and so does finding the tune-out already ended.
|
|
136
|
+
hold(setTimeout(end, EXPIRY_RETRY_MS));
|
|
137
|
+
if (!this.cancel(serverId, channelId, 'duration', 'duration elapsed').ok) {
|
|
138
|
+
this.clearTimers(serverId, channelId);
|
|
139
|
+
}
|
|
140
|
+
} catch (err) {
|
|
141
|
+
this.timerFailed('expiry', serverId, channelId, err);
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
armAt(params.expiresAtMs, hold, end);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/** A timer callback's work threw. Report it on stderr and as a trace rather
|
|
148
|
+
* than throw it into the event loop, where an uncaught exception ends the
|
|
149
|
+
* host process. */
|
|
150
|
+
private timerFailed(timer: 'cadence' | 'wake' | 'expiry', serverId: string, channelId: string, err: unknown): void {
|
|
151
|
+
console.error(`[tune-out] the ${timer} timer for ${channelId} on ${serverId} failed:`, err);
|
|
152
|
+
this.hooks.emitTrace({
|
|
153
|
+
type: 'tune-out:timer-failed',
|
|
154
|
+
timer,
|
|
155
|
+
serverId,
|
|
156
|
+
channelId,
|
|
157
|
+
error: thrownReason(err),
|
|
158
|
+
});
|
|
116
159
|
}
|
|
117
160
|
|
|
118
161
|
private listActive(): Array<{ serverId: string; channelId: string; params: TuneOutParams }> {
|
|
@@ -137,24 +180,89 @@ export class TuneOutCoordinator {
|
|
|
137
180
|
source: string,
|
|
138
181
|
): { ok: true; params: TuneOutParams } | { ok: false; error: string } {
|
|
139
182
|
if (!this.hooks.subconsciousName()) {
|
|
140
|
-
return {
|
|
183
|
+
return {
|
|
184
|
+
ok: false,
|
|
185
|
+
error: 'Nothing was tuned out: this host has no subconscious resident to watch a channel, so tune_out '
|
|
186
|
+
+ "isn't available here, and calling it again won't change that. If you need channels diverted, ask "
|
|
187
|
+
+ 'whoever runs this host.',
|
|
188
|
+
};
|
|
141
189
|
}
|
|
142
190
|
if (this.hooks.isForkBound(channelId)) {
|
|
143
|
-
return {
|
|
191
|
+
return {
|
|
192
|
+
ok: false,
|
|
193
|
+
error: `Nothing changed: a conversation is bound to ${JSON.stringify(channelId)}, so its messages go to that `
|
|
194
|
+
+ "conversation, and tune_out won't divert a channel while one is. Calling tune_out on it again won't change "
|
|
195
|
+
+ 'that until the conversation ends, which happens only once the channel has been quiet for a while. Tune '
|
|
196
|
+
+ 'out a different channel, or ask whoever runs this host if this one should be diverted.',
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
const current = this.channelRegistry.getTuneOutState(serverId, channelId);
|
|
200
|
+
if (current) {
|
|
201
|
+
const p = current.params;
|
|
202
|
+
// A duration so long its end is past what a Date can hold has no time to show.
|
|
203
|
+
const expires = p.expiresAtMs !== undefined ? new Date(p.expiresAtMs) : undefined;
|
|
204
|
+
const until = expires && Number.isFinite(expires.getTime())
|
|
205
|
+
? `, until ${expires.toISOString().replace(/\.\d+Z$/, 'Z')}`
|
|
206
|
+
: '';
|
|
207
|
+
return {
|
|
208
|
+
ok: false,
|
|
209
|
+
error: `Nothing changed: ${JSON.stringify(channelId)} is already tuned out, with cadenceSeconds `
|
|
210
|
+
+ `${p.cadenceSeconds}, backlogCap ${p.backlogCap} and maxWakes ${p.maxWakes}${until}. To change those, `
|
|
211
|
+
+ 'cancel it first with tune_out mode "cancel", which delivers its backlog to you now, then call tune_out '
|
|
212
|
+
+ 'again with the new settings.',
|
|
213
|
+
};
|
|
144
214
|
}
|
|
145
|
-
|
|
146
|
-
|
|
215
|
+
// A tool's input reaches here as the model wrote it, and the store can't
|
|
216
|
+
// keep a NaN or an Infinity: its append would throw after the registry
|
|
217
|
+
// had marked the channel tuned out. So each option is read as a number
|
|
218
|
+
// before anything changes, a numeric string included, as the sleep tool
|
|
219
|
+
// reads its seconds; null counts as left out. A value that gives no
|
|
220
|
+
// finite number is refused.
|
|
221
|
+
const leftOut = {
|
|
222
|
+
durationSeconds: 'to stay tuned out until you cancel',
|
|
223
|
+
cadenceSeconds: `for the default, ${TUNE_OUT_DEFAULTS.cadenceSeconds}`,
|
|
224
|
+
backlogCap: `for the default, ${TUNE_OUT_DEFAULTS.backlogCap}`,
|
|
225
|
+
maxWakes: `for the default, ${TUNE_OUT_DEFAULTS.maxWakes}`,
|
|
226
|
+
} as const;
|
|
227
|
+
const given: Partial<Record<keyof typeof leftOut, number>> = {};
|
|
228
|
+
for (const name of Object.keys(leftOut) as Array<keyof typeof leftOut>) {
|
|
229
|
+
const value: unknown = opts[name];
|
|
230
|
+
if (value == null) continue;
|
|
231
|
+
const n = Number(value);
|
|
232
|
+
if (!Number.isFinite(n)) {
|
|
233
|
+
const got = typeof value === 'number'
|
|
234
|
+
? String(value)
|
|
235
|
+
: `${typeof value === 'string' ? 'the string' : 'the value'} ${JSON.stringify(value)}`;
|
|
236
|
+
return {
|
|
237
|
+
ok: false,
|
|
238
|
+
error: `Nothing was tuned out: ${name} must be a finite number${name.endsWith('Seconds') ? ' of seconds' : ''}, `
|
|
239
|
+
+ `and it was ${got}. Leave it out ${leftOut[name]}.`,
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
given[name] = n;
|
|
243
|
+
}
|
|
244
|
+
const expiresAtMs = given.durationSeconds === undefined
|
|
245
|
+
? undefined
|
|
246
|
+
: Date.now() + Math.max(60, given.durationSeconds) * 1000;
|
|
247
|
+
if (expiresAtMs !== undefined && !Number.isFinite(expiresAtMs)) {
|
|
248
|
+
return {
|
|
249
|
+
ok: false,
|
|
250
|
+
error: `Nothing was tuned out: durationSeconds ${given.durationSeconds} is longer than an end time can be kept. `
|
|
251
|
+
+ `Leave it out ${leftOut.durationSeconds}.`,
|
|
252
|
+
};
|
|
147
253
|
}
|
|
148
254
|
const params: TuneOutParams = {
|
|
149
255
|
epochId: randomUUID(),
|
|
150
|
-
cadenceSeconds: Math.max(30,
|
|
151
|
-
backlogCap: Math.max(0,
|
|
152
|
-
maxWakes: Math.max(1,
|
|
256
|
+
cadenceSeconds: Math.max(30, given.cadenceSeconds ?? TUNE_OUT_DEFAULTS.cadenceSeconds),
|
|
257
|
+
backlogCap: Math.max(0, given.backlogCap ?? TUNE_OUT_DEFAULTS.backlogCap),
|
|
258
|
+
maxWakes: Math.max(1, given.maxWakes ?? TUNE_OUT_DEFAULTS.maxWakes),
|
|
153
259
|
startedAtSequence: this.hooks.currentSequence(),
|
|
154
|
-
...(
|
|
155
|
-
? { expiresAtMs: Date.now() + Math.max(60, opts.durationSeconds) * 1000 }
|
|
156
|
-
: {}),
|
|
260
|
+
...(expiresAtMs !== undefined ? { expiresAtMs } : {}),
|
|
157
261
|
};
|
|
262
|
+
// A tune-out can end in the registry without cancel (a send into the
|
|
263
|
+
// channel or a close sets its state there), leaving its timers armed:
|
|
264
|
+
// clear them, so none of them acts on this one.
|
|
265
|
+
this.clearTimers(serverId, channelId);
|
|
158
266
|
this.channelRegistry.enterTuneOut(serverId, channelId, params, source);
|
|
159
267
|
this.armExpiry(serverId, channelId, params);
|
|
160
268
|
|
|
@@ -188,19 +296,10 @@ export class TuneOutCoordinator {
|
|
|
188
296
|
): { ok: true } | { ok: false; error: string } {
|
|
189
297
|
const ended = this.channelRegistry.cancelTuneOut(serverId, channelId, 'open', source);
|
|
190
298
|
if (!ended) {
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
this.stopCadence(serverId, channelId);
|
|
194
|
-
const expiry = this.expiryTimers.get(this.key(serverId, channelId));
|
|
195
|
-
if (expiry) {
|
|
196
|
-
clearTimeout(expiry);
|
|
197
|
-
this.expiryTimers.delete(this.key(serverId, channelId));
|
|
198
|
-
}
|
|
199
|
-
const pending = this.pendingWakes.get(this.key(serverId, channelId));
|
|
200
|
-
if (pending) {
|
|
201
|
-
clearTimeout(pending.timer);
|
|
202
|
-
this.pendingWakes.delete(this.key(serverId, channelId));
|
|
299
|
+
// Its reader is the resident's tune_out: cancel_tuneout finds the channel first.
|
|
300
|
+
return { ok: false, error: this.notTunedOut(channelId, 'you') };
|
|
203
301
|
}
|
|
302
|
+
this.clearTimers(serverId, channelId);
|
|
204
303
|
this.divertedSinceInvocation.delete(this.key(serverId, channelId));
|
|
205
304
|
|
|
206
305
|
// Backlog: every message stamped with this epoch, oldest first.
|
|
@@ -326,11 +425,12 @@ export class TuneOutCoordinator {
|
|
|
326
425
|
intent: 'suppressed-tuned-out',
|
|
327
426
|
});
|
|
328
427
|
} catch (err) {
|
|
428
|
+
console.error(`[tune-out] acknowledging ${messageId} in ${channelId} on ${serverId} failed:`, err);
|
|
329
429
|
this.hooks.emitTrace({
|
|
330
430
|
type: 'tune-out:ack-failed',
|
|
331
431
|
serverId,
|
|
332
432
|
channelId,
|
|
333
|
-
error: (err
|
|
433
|
+
error: thrownReason(err),
|
|
334
434
|
});
|
|
335
435
|
}
|
|
336
436
|
}
|
|
@@ -342,17 +442,37 @@ export class TuneOutCoordinator {
|
|
|
342
442
|
private startCadence(serverId: string, channelId: string, cadenceSeconds: number): void {
|
|
343
443
|
this.stopCadence(serverId, channelId);
|
|
344
444
|
const key = this.key(serverId, channelId);
|
|
445
|
+
const hold = (timer: ReturnType<typeof setTimeout>): void => { this.cadenceTimers.set(key, timer); };
|
|
345
446
|
const tick = () => {
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
447
|
+
try {
|
|
448
|
+
const state = this.channelRegistry.getTuneOutState(serverId, channelId);
|
|
449
|
+
if (!state) return; // cancelled meanwhile
|
|
450
|
+
// The next period is armed before this one's turn, so a turn that
|
|
451
|
+
// fails can't end the cadence.
|
|
452
|
+
armAfter(cadenceSeconds * 1000, hold, tick);
|
|
453
|
+
const diverted = this.divertedSinceInvocation.get(key) ?? 0;
|
|
454
|
+
// An empty period needs no turn at all — skip silently.
|
|
455
|
+
if (diverted > 0) {
|
|
456
|
+
this.invokeSubconscious(serverId, channelId, 'cadence', diverted);
|
|
457
|
+
}
|
|
458
|
+
} catch (err) {
|
|
459
|
+
this.timerFailed('cadence', serverId, channelId, err);
|
|
352
460
|
}
|
|
353
|
-
this.cadenceTimers.set(key, setTimeout(tick, cadenceSeconds * 1000));
|
|
354
461
|
};
|
|
355
|
-
|
|
462
|
+
armAfter(cadenceSeconds * 1000, hold, tick);
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
/** Clear a channel's tune-out timers: its cadence, its end time and a wake
|
|
466
|
+
* still coalescing. */
|
|
467
|
+
private clearTimers(serverId: string, channelId: string): void {
|
|
468
|
+
const key = this.key(serverId, channelId);
|
|
469
|
+
this.stopCadence(serverId, channelId);
|
|
470
|
+
const expiry = this.expiryTimers.get(key);
|
|
471
|
+
if (expiry) clearTimeout(expiry);
|
|
472
|
+
this.expiryTimers.delete(key);
|
|
473
|
+
const pending = this.pendingWakes.get(key);
|
|
474
|
+
if (pending) clearTimeout(pending.timer);
|
|
475
|
+
this.pendingWakes.delete(key);
|
|
356
476
|
}
|
|
357
477
|
|
|
358
478
|
private stopCadence(serverId: string, channelId: string): void {
|
|
@@ -370,21 +490,25 @@ export class TuneOutCoordinator {
|
|
|
370
490
|
return;
|
|
371
491
|
}
|
|
372
492
|
const timer = setTimeout(() => {
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
493
|
+
try {
|
|
494
|
+
const entry = this.pendingWakes.get(key);
|
|
495
|
+
this.pendingWakes.delete(key);
|
|
496
|
+
// Count ONE durable wake per coalesced invocation.
|
|
497
|
+
const counted = this.channelRegistry.recordTuneOutWake(serverId, channelId);
|
|
498
|
+
if (!counted) return; // cancelled inside the window
|
|
499
|
+
if (counted.wakeCount > counted.params.maxWakes) {
|
|
500
|
+
this.cancel(
|
|
501
|
+
serverId,
|
|
502
|
+
channelId,
|
|
503
|
+
'tune-out-max-wakes',
|
|
504
|
+
`wake budget exhausted (${counted.params.maxWakes})`,
|
|
505
|
+
);
|
|
506
|
+
return;
|
|
507
|
+
}
|
|
508
|
+
this.invokeSubconscious(serverId, channelId, 'wake', entry?.count ?? 1);
|
|
509
|
+
} catch (err) {
|
|
510
|
+
this.timerFailed('wake', serverId, channelId, err);
|
|
386
511
|
}
|
|
387
|
-
this.invokeSubconscious(serverId, channelId, 'wake', entry?.count ?? 1);
|
|
388
512
|
}, WAKE_COALESCE_MS);
|
|
389
513
|
this.pendingWakes.set(key, { count: 1, timer });
|
|
390
514
|
}
|
|
@@ -403,7 +527,6 @@ export class TuneOutCoordinator {
|
|
|
403
527
|
const subName = this.hooks.subconsciousName();
|
|
404
528
|
if (!subName) return;
|
|
405
529
|
const key = this.key(serverId, channelId);
|
|
406
|
-
this.divertedSinceInvocation.set(key, 0);
|
|
407
530
|
|
|
408
531
|
const notice = trigger === 'wake'
|
|
409
532
|
? `[Tune-out wake: ${channelId} — ${count} addressed message${count === 1 ? '' : 's'}]`
|
|
@@ -415,6 +538,9 @@ export class TuneOutCoordinator {
|
|
|
415
538
|
subName,
|
|
416
539
|
);
|
|
417
540
|
this.hooks.requestInference(subName, `tune-out ${trigger}: ${channelId}`, 'tune-out');
|
|
541
|
+
// Counted from here only once the turn has been asked for, so a turn that
|
|
542
|
+
// throws leaves its messages for the next period's turn.
|
|
543
|
+
this.divertedSinceInvocation.set(key, 0);
|
|
418
544
|
}
|
|
419
545
|
|
|
420
546
|
// ==========================================================================
|
|
@@ -432,6 +558,8 @@ export class TuneOutCoordinator {
|
|
|
432
558
|
* subconscious's compiles (antra: deliver changes, never let them wash
|
|
433
559
|
* away — it has no long-term memory, so they must not live in window
|
|
434
560
|
* content). Bytes change only when a disposition changes: KV-friendly.
|
|
561
|
+
* A failed read of the stored map throws, so the compile stops rather than
|
|
562
|
+
* run without them.
|
|
435
563
|
*/
|
|
436
564
|
getDispositionsInjection(): {
|
|
437
565
|
namespace: string;
|
|
@@ -453,12 +581,17 @@ export class TuneOutCoordinator {
|
|
|
453
581
|
|
|
454
582
|
private readDispositions(): Record<string, string> {
|
|
455
583
|
if (this.dispositionsCache) return this.dispositionsCache;
|
|
584
|
+
let raw: unknown;
|
|
456
585
|
try {
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
586
|
+
raw = this.channelRegistry.readCoordinatorState(this.dispositionsStateId);
|
|
587
|
+
} catch (error) {
|
|
588
|
+
// A failed read is not an empty map, and nothing is cached, so the next
|
|
589
|
+
// read asks the store again. Taken as empty, it would compile the
|
|
590
|
+
// subconscious without its dispositions until a restart, and the next
|
|
591
|
+
// noteDisposition would write that empty map over the stored one.
|
|
592
|
+
throw new Error(`the stored dispositions (${this.dispositionsStateId}) could not be read: ${thrownReason(error)}`, { cause: error });
|
|
461
593
|
}
|
|
594
|
+
this.dispositionsCache = (raw && typeof raw === 'object') ? raw as Record<string, string> : {};
|
|
462
595
|
return this.dispositionsCache;
|
|
463
596
|
}
|
|
464
597
|
|
|
@@ -469,8 +602,14 @@ export class TuneOutCoordinator {
|
|
|
469
602
|
} else {
|
|
470
603
|
dispositions[key] = text;
|
|
471
604
|
}
|
|
605
|
+
// Stored before it's cached: a write that fails leaves the cache and the
|
|
606
|
+
// store as they were, so the note is in effect nowhere.
|
|
607
|
+
try {
|
|
608
|
+
this.channelRegistry.writeCoordinatorState(this.dispositionsStateId, dispositions);
|
|
609
|
+
} catch (error) {
|
|
610
|
+
throw new Error(`the dispositions (${this.dispositionsStateId}) could not be stored: ${thrownReason(error)}`, { cause: error });
|
|
611
|
+
}
|
|
472
612
|
this.dispositionsCache = dispositions;
|
|
473
|
-
this.channelRegistry.writeCoordinatorState(this.dispositionsStateId, dispositions);
|
|
474
613
|
}
|
|
475
614
|
|
|
476
615
|
// ==========================================================================
|
|
@@ -485,7 +624,14 @@ export class TuneOutCoordinator {
|
|
|
485
624
|
case 'deliver_summary': {
|
|
486
625
|
const text = String(input.text ?? '').trim();
|
|
487
626
|
const channelId = String(input.channelId ?? '');
|
|
488
|
-
if (!text)
|
|
627
|
+
if (!text) {
|
|
628
|
+
return {
|
|
629
|
+
success: false,
|
|
630
|
+
error: 'Nothing was delivered: deliver_summary needs the summary in "text". If there\'s nothing to '
|
|
631
|
+
+ "report, don't call it: staying silent is allowed.",
|
|
632
|
+
isError: true,
|
|
633
|
+
};
|
|
634
|
+
}
|
|
489
635
|
const subName = this.hooks.subconsciousName();
|
|
490
636
|
if (!subName) return { success: false, error: 'subconscious not configured', isError: true };
|
|
491
637
|
// Verbatim, under its own participant name, into the resident's window.
|
|
@@ -498,30 +644,58 @@ export class TuneOutCoordinator {
|
|
|
498
644
|
case 'cancel_tuneout': {
|
|
499
645
|
const channelId = String(input.channelId ?? '');
|
|
500
646
|
const located = this.findByChannel(channelId);
|
|
501
|
-
if (!located) return { success: false, error:
|
|
647
|
+
if (!located) return { success: false, error: this.notTunedOut(channelId, 'the resident'), isError: true };
|
|
502
648
|
const note = typeof input.text === 'string' && input.text.trim() ? input.text.trim() : undefined;
|
|
503
649
|
const result = this.cancel(located.serverId, channelId, 'subconscious', 'subconscious judgment', note);
|
|
504
650
|
return result.ok
|
|
505
651
|
? { success: true, data: { cancelled: true } }
|
|
506
|
-
: { success: false, error: result.error, isError:
|
|
652
|
+
: { success: false, error: result.error, isError: true };
|
|
507
653
|
}
|
|
508
654
|
case 'note_disposition': {
|
|
509
655
|
const key = String(input.key ?? '').trim();
|
|
510
|
-
if (!key)
|
|
511
|
-
|
|
656
|
+
if (!key) {
|
|
657
|
+
return {
|
|
658
|
+
success: false,
|
|
659
|
+
error: 'Nothing was recorded: note_disposition needs a "key", a short stable name for the note, such as '
|
|
660
|
+
+ '"busy-channels". To delete a note, call it with that note\'s key and an empty "text".',
|
|
661
|
+
isError: true,
|
|
662
|
+
};
|
|
663
|
+
}
|
|
664
|
+
try {
|
|
665
|
+
this.noteDisposition(key, String(input.text ?? ''));
|
|
666
|
+
} catch (error) {
|
|
667
|
+
// For the subconscious first: what became of its note, and that a
|
|
668
|
+
// later call may land. The store's own reason follows, for an operator.
|
|
669
|
+
// The note may set, change or remove a disposition, so what stays in
|
|
670
|
+
// effect is whatever was there before, if anything.
|
|
671
|
+
return {
|
|
672
|
+
success: false,
|
|
673
|
+
isError: true,
|
|
674
|
+
error: `The change to the disposition ${JSON.stringify(key)} wasn't recorded, so the dispositions stay as they were. ` +
|
|
675
|
+
`Noting it again may work once the store can be read and written. The store's error: ${thrownReason(error)}`,
|
|
676
|
+
};
|
|
677
|
+
}
|
|
512
678
|
return { success: true, data: { noted: key } };
|
|
513
679
|
}
|
|
514
680
|
case 'speak_in_channel': {
|
|
515
681
|
if (!this.hooks.allowChannelSpeech()) {
|
|
682
|
+
// The setting's name is the host's, for its log; the subconscious
|
|
683
|
+
// reads what it can do instead.
|
|
684
|
+
console.warn('[tune-out] speak_in_channel refused: FrameworkConfig.subconscious.allowChannelSpeech is off');
|
|
516
685
|
return {
|
|
517
686
|
success: false,
|
|
518
|
-
isError:
|
|
519
|
-
error:
|
|
687
|
+
isError: true,
|
|
688
|
+
error: "Nothing was posted: speak_in_channel is turned off for you in the resident's configuration, and "
|
|
689
|
+
+ "calling it again won't change that. The resident can speak there: tell it what's needed with "
|
|
690
|
+
+ 'deliver_summary, or, if the channel is tuned out and needs the resident now, end the tune-out with '
|
|
691
|
+
+ 'cancel_tuneout.',
|
|
520
692
|
};
|
|
521
693
|
}
|
|
522
694
|
const channelId = String(input.channelId ?? '');
|
|
523
695
|
const text = String(input.text ?? '').trim();
|
|
524
|
-
if (!text)
|
|
696
|
+
if (!text) {
|
|
697
|
+
return { success: false, error: 'Nothing was posted: speak_in_channel needs the message in "text".', isError: true };
|
|
698
|
+
}
|
|
525
699
|
return this.channelRegistry.publishForAgent(channelId, text, this.hooks.subconsciousName() ?? 'Subconscious');
|
|
526
700
|
}
|
|
527
701
|
default:
|
|
@@ -529,6 +703,26 @@ export class TuneOutCoordinator {
|
|
|
529
703
|
}
|
|
530
704
|
}
|
|
531
705
|
|
|
706
|
+
/**
|
|
707
|
+
* A cancel of a channel that isn't tuned out: which channels are, so the
|
|
708
|
+
* next call can name one, and how a tune-out ends without one. `backlogTo`
|
|
709
|
+
* names the resident as the message's reader knows it: "you" to the
|
|
710
|
+
* resident, "the resident" to the subconscious. It speaks of connected
|
|
711
|
+
* channels because listActive reads the registered ones: removing a server
|
|
712
|
+
* drops its channels and keeps their tune-outs, so a tune-out there is in
|
|
713
|
+
* neither this list nor findByChannel's lookup, and the text claims nothing
|
|
714
|
+
* about it.
|
|
715
|
+
*/
|
|
716
|
+
private notTunedOut(channelId: string, backlogTo: 'you' | 'the resident'): string {
|
|
717
|
+
const active = this.listActive().map((e) => JSON.stringify(e.channelId));
|
|
718
|
+
const opening = active.length === 0
|
|
719
|
+
? 'no connected channel is tuned out now.'
|
|
720
|
+
: `no connected channel ${JSON.stringify(channelId)} is tuned out. Connected channels tuned out now: `
|
|
721
|
+
+ `${active.join(', ')}.`;
|
|
722
|
+
return `Nothing was cancelled: ${opening} A tune-out also ends by itself when its duration runs out, or at the `
|
|
723
|
+
+ `first wake past its wake budget, and its backlog goes to ${backlogTo} then.`;
|
|
724
|
+
}
|
|
725
|
+
|
|
532
726
|
private findByChannel(channelId: string): { serverId: string } | null {
|
|
533
727
|
for (const entry of this.listActive()) {
|
|
534
728
|
if (entry.channelId === channelId) return { serverId: entry.serverId };
|
package/src/types/agent.ts
CHANGED
|
@@ -93,11 +93,16 @@ export interface AgentConfig {
|
|
|
93
93
|
promptCaching?: boolean;
|
|
94
94
|
|
|
95
95
|
/**
|
|
96
|
-
*
|
|
97
|
-
*
|
|
98
|
-
* scaffold).
|
|
99
|
-
*
|
|
100
|
-
*
|
|
96
|
+
* A synthetic user message for a request whose formatted conversation
|
|
97
|
+
* would otherwise begin with the assistant (e.g. chapterx's
|
|
98
|
+
* `<cmd>cat untitled.txt</cmd>` CLI-sim scaffold). A non-empty value is
|
|
99
|
+
* forwarded verbatim to membrane, on framework turns and the direct API
|
|
100
|
+
* alike. Membrane's anthropic-xml formatter makes it the first message,
|
|
101
|
+
* ahead of the assistant turn that carries the conversation. Its native
|
|
102
|
+
* formatter uses it as the text of a leading user turn that its tool-pair
|
|
103
|
+
* normalizer adds, in place of `[continuing]`. Part of reproducing a
|
|
104
|
+
* prefill-era bot's exact prompting structure when migrating it into a
|
|
105
|
+
* resident.
|
|
101
106
|
*/
|
|
102
107
|
prefillUserMessage?: string;
|
|
103
108
|
|
|
@@ -307,13 +312,18 @@ export interface InferenceOptions {
|
|
|
307
312
|
|
|
308
313
|
/**
|
|
309
314
|
* Internal state of an agent.
|
|
315
|
+
*
|
|
316
|
+
* `supportsInjectedMessages` is what the stream declared with the round's
|
|
317
|
+
* tool calls (membrane's `ToolContext.supportsInjectedMessages`): whether it
|
|
318
|
+
* can carry messages injected with that round's results. It's absent when
|
|
319
|
+
* the stream doesn't say, as on membrane 0.5.87 and earlier.
|
|
310
320
|
*/
|
|
311
321
|
export type AgentState =
|
|
312
322
|
| { status: 'idle' }
|
|
313
323
|
| { status: 'inferring'; promise: Promise<InferenceResult>; abortController: AbortController }
|
|
314
324
|
| { status: 'streaming'; stream: YieldingStream }
|
|
315
|
-
| { status: 'waiting_for_tools'; pending: Map<ToolCallId, PendingToolCall>; completed: CompletedToolCall[]; stream?: YieldingStream }
|
|
316
|
-
| { status: 'ready'; toolResults: CompletedToolCall[]; stream?: YieldingStream };
|
|
325
|
+
| { status: 'waiting_for_tools'; pending: Map<ToolCallId, PendingToolCall>; completed: CompletedToolCall[]; stream?: YieldingStream; supportsInjectedMessages?: boolean }
|
|
326
|
+
| { status: 'ready'; toolResults: CompletedToolCall[]; stream?: YieldingStream; supportsInjectedMessages?: boolean };
|
|
317
327
|
|
|
318
328
|
/**
|
|
319
329
|
* A tool call that's in progress.
|
package/src/types/events.ts
CHANGED
|
@@ -225,6 +225,19 @@ export interface ToolCall {
|
|
|
225
225
|
input: unknown;
|
|
226
226
|
/** The agent that made this tool call. Set by the framework dispatch layer. */
|
|
227
227
|
callerAgentName?: string;
|
|
228
|
+
/**
|
|
229
|
+
* The turn the call was made in, the same id as that turn's
|
|
230
|
+
* `SpeechContext.turnId`. Set by the framework dispatch layer, beside
|
|
231
|
+
* `callerAgentName`: a model's call carries the turn whose stream made it, a
|
|
232
|
+
* foreground script's inner call the turn of the code_execution call whose
|
|
233
|
+
* script is running when the call arrives, and a utility run its `utils`
|
|
234
|
+
* call's. A background script runs apart from any turn, so its calls carry
|
|
235
|
+
* none. Ids increase, so a later turn's is larger, and they're unique only
|
|
236
|
+
* within one run of the process. A call made with `executeToolCall` or a
|
|
237
|
+
* module's `callTool` skips that layer and carries whatever turn its caller
|
|
238
|
+
* put on the call, usually none.
|
|
239
|
+
*/
|
|
240
|
+
callerTurnId?: number;
|
|
228
241
|
}
|
|
229
242
|
|
|
230
243
|
// ============================================================================
|
|
@@ -247,6 +260,8 @@ export interface McplPushEvent {
|
|
|
247
260
|
inferenceId: string;
|
|
248
261
|
triggerInference?: boolean;
|
|
249
262
|
targetAgents?: string[];
|
|
263
|
+
/** Host acceptance time (epoch ms), stamped where the push is admitted. */
|
|
264
|
+
acceptedAt?: number;
|
|
250
265
|
}
|
|
251
266
|
|
|
252
267
|
/**
|
|
@@ -265,4 +280,6 @@ export interface McplChannelIncomingEvent {
|
|
|
265
280
|
metadata?: Record<string, unknown>;
|
|
266
281
|
triggerInference?: boolean;
|
|
267
282
|
targetAgents?: string[];
|
|
283
|
+
/** Host acceptance time (epoch ms), stamped where the message is admitted. */
|
|
284
|
+
acceptedAt?: number;
|
|
268
285
|
}
|
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
|
|
|
@@ -411,20 +415,32 @@ export interface InferenceLogEntry {
|
|
|
411
415
|
requestId: string;
|
|
412
416
|
/** Whether inference succeeded */
|
|
413
417
|
success: boolean;
|
|
414
|
-
/**
|
|
418
|
+
/** Why it didn't succeed: the failure's message, or what stopped it */
|
|
415
419
|
error?: string;
|
|
416
|
-
/** 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. */
|
|
417
423
|
request: unknown | { blobId: string };
|
|
418
424
|
/** Response data or blob ID if large (only if successful) */
|
|
419
425
|
response?: unknown | { blobId: string };
|
|
420
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. */
|
|
421
434
|
tokenUsage?: {
|
|
422
435
|
input: number;
|
|
423
436
|
output: number;
|
|
424
437
|
cacheCreation?: number;
|
|
425
438
|
cacheRead?: number;
|
|
426
439
|
};
|
|
427
|
-
/** 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). */
|
|
428
444
|
stopReason?: string;
|
|
429
445
|
}
|
|
430
446
|
|