@animalabs/agent-framework 0.22.2 → 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 +3 -1
- package/dist/src/agent.d.ts +77 -12
- package/dist/src/agent.d.ts.map +1 -1
- package/dist/src/agent.js +136 -40
- 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/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 +3 -4
- package/src/agent.ts +162 -40
- 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/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
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@animalabs/agent-framework",
|
|
3
|
-
"version": "0.22.
|
|
3
|
+
"version": "0.22.3",
|
|
4
4
|
"description": "Multi-agent framework with pluggable modules, persistent state, and concurrent tool execution",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
}
|
|
18
18
|
},
|
|
19
19
|
"files": [
|
|
20
|
-
"dist",
|
|
20
|
+
"dist/src",
|
|
21
21
|
"src"
|
|
22
22
|
],
|
|
23
23
|
"bin": {
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"clean": "rm -rf dist",
|
|
32
32
|
"typecheck": "tsc --noEmit",
|
|
33
33
|
"pretest": "mkdir -p dist/test/fixtures && cp test/fixtures/*.mjs dist/test/fixtures/",
|
|
34
|
-
"test": "node --test --test-force-exit dist/test/*.test.js",
|
|
34
|
+
"test": "node --import ./dist/test/helpers/force-exit-blocking-stdout.js --test --test-force-exit --test-timeout=600000 dist/test/*.test.js",
|
|
35
35
|
"preversion": "node scripts/release-bump.mjs && node scripts/release-holds.mjs",
|
|
36
36
|
"version": "node scripts/release-changelog.mjs && git add CHANGELOG.md changelog.d",
|
|
37
37
|
"prepublishOnly": "node scripts/release-holds.mjs && npm run build"
|
|
@@ -58,7 +58,6 @@
|
|
|
58
58
|
"@babel/parser": "^7.29.9",
|
|
59
59
|
"@types/node": "^22.0.0",
|
|
60
60
|
"@types/ws": "^8.5.13",
|
|
61
|
-
"discord.js": "^14.25.1",
|
|
62
61
|
"tsx": "^4.21.0",
|
|
63
62
|
"typescript": "^7.0.2"
|
|
64
63
|
},
|
package/src/agent.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { isAbortedResponse } from '@animalabs/membrane';
|
|
|
3
3
|
import { createHash } from 'node:crypto';
|
|
4
4
|
import type { CacheWireReceipt, KvUnifiedRequestHooks } from './kv-unified-wire.js';
|
|
5
5
|
import { ToolResultGuard } from './tool-result-guard.js';
|
|
6
|
+
import { assertBooleanSetting, holdsSettings } from './config-checks.js';
|
|
6
7
|
import {
|
|
7
8
|
indexSilentTickRows,
|
|
8
9
|
separateSilentHeartbeatTicks,
|
|
@@ -75,6 +76,53 @@ const DEFAULT_CONTEXT_BUDGET_TOKENS = 100_000;
|
|
|
75
76
|
const DEFAULT_TRANSITION_PACE_TOKENS = 16_000;
|
|
76
77
|
const DEFAULT_SAME_ROUND_THINK_TEXT_POLICY: SameRoundThinkTextPolicy = 'public';
|
|
77
78
|
|
|
79
|
+
/**
|
|
80
|
+
* Refuse an agent config whose `promptCaching`, `toolResultGuard`,
|
|
81
|
+
* `toolWrapperProseGuard`, `thinking.enabled` or `refusalHandling.autoRewind`
|
|
82
|
+
* holds anything but true or false (assertBooleanSetting), or whose `thinking`
|
|
83
|
+
* or `refusalHandling` is anything but an object, null or false
|
|
84
|
+
* (holdsSettings). The constructor runs it first, so the rule holds wherever
|
|
85
|
+
* an Agent is built. `create()` also runs it for each of its agents before
|
|
86
|
+
* anything opens, and `createEphemeralAgent` before it reserves the name, so a
|
|
87
|
+
* refusal there leaves nothing behind. Membrane reads `thinking.enabled`, and
|
|
88
|
+
* the refusal is here because the setting is AgentConfig's.
|
|
89
|
+
*/
|
|
90
|
+
export function assertAgentSwitches(config: AgentConfig): void {
|
|
91
|
+
const agent = `Agent "${config.name}"`;
|
|
92
|
+
assertBooleanSetting(
|
|
93
|
+
`${agent} promptCaching`,
|
|
94
|
+
config.promptCaching,
|
|
95
|
+
'true or leaving it out marks requests for prompt caching, and false leaves the markers off, for transports that refuse them',
|
|
96
|
+
);
|
|
97
|
+
if (holdsSettings(`${agent} thinking`, config.thinking, '{ enabled: true }')) {
|
|
98
|
+
assertBooleanSetting(
|
|
99
|
+
`${agent} thinking.enabled`,
|
|
100
|
+
config.thinking.enabled,
|
|
101
|
+
'true asks the provider for extended thinking, and false or leaving it out doesn\'t',
|
|
102
|
+
);
|
|
103
|
+
}
|
|
104
|
+
if (holdsSettings(`${agent} refusalHandling`, config.refusalHandling, '{ autoRewind: true }')) {
|
|
105
|
+
assertBooleanSetting(
|
|
106
|
+
`${agent} refusalHandling.autoRewind`,
|
|
107
|
+
config.refusalHandling.autoRewind,
|
|
108
|
+
'true redacts the turn that tripped a refusal and runs again, up to maxRewinds times, ' +
|
|
109
|
+
'and false or leaving it out doesn\'t',
|
|
110
|
+
);
|
|
111
|
+
}
|
|
112
|
+
assertBooleanSetting(
|
|
113
|
+
`${agent} toolResultGuard`,
|
|
114
|
+
config.toolResultGuard,
|
|
115
|
+
'true turns on tool-output admission, with one guarded retry after a provider refusal, ' +
|
|
116
|
+
'and false or leaving it out doesn\'t',
|
|
117
|
+
);
|
|
118
|
+
assertBooleanSetting(
|
|
119
|
+
`${agent} toolWrapperProseGuard`,
|
|
120
|
+
config.toolWrapperProseGuard,
|
|
121
|
+
'true keeps a response whose whole prose is a tool-call-shaped wrapper from running or entering the agent\'s history, ' +
|
|
122
|
+
'and false or leaving it out doesn\'t',
|
|
123
|
+
);
|
|
124
|
+
}
|
|
125
|
+
|
|
78
126
|
/**
|
|
79
127
|
* An agent wraps a context manager and manages inference state.
|
|
80
128
|
*/
|
|
@@ -221,6 +269,7 @@ export class Agent {
|
|
|
221
269
|
contextManager: ContextManager,
|
|
222
270
|
membrane: Membrane
|
|
223
271
|
) {
|
|
272
|
+
assertAgentSwitches(config);
|
|
224
273
|
this.name = config.name;
|
|
225
274
|
this.model = config.model;
|
|
226
275
|
this.systemPrompt = config.systemPrompt;
|
|
@@ -230,11 +279,11 @@ export class Agent {
|
|
|
230
279
|
this.temperature = config.temperature;
|
|
231
280
|
this.thinking = config.thinking;
|
|
232
281
|
this.refusalHandling = config.refusalHandling;
|
|
233
|
-
this.toolResultGuard = new ToolResultGuard(config.name, contextManager, config.toolResultGuard);
|
|
282
|
+
this.toolResultGuard = new ToolResultGuard(config.name, contextManager, config.toolResultGuard === true);
|
|
234
283
|
this.proseRouting = config.proseRouting ?? 'locus';
|
|
235
|
-
this.toolWrapperProseGuard = config.toolWrapperProseGuard
|
|
284
|
+
this.toolWrapperProseGuard = config.toolWrapperProseGuard === true;
|
|
236
285
|
this.cacheTtl = config.cacheTtl ?? '1h';
|
|
237
|
-
this.promptCaching = config.promptCaching
|
|
286
|
+
this.promptCaching = config.promptCaching !== false;
|
|
238
287
|
this.prefillUserMessage = config.prefillUserMessage;
|
|
239
288
|
this.providerParams = config.providerParams;
|
|
240
289
|
this.sameRoundThinkTextPolicy = config.sameRoundThinkTextPolicy;
|
|
@@ -862,20 +911,42 @@ export class Agent {
|
|
|
862
911
|
|
|
863
912
|
/**
|
|
864
913
|
* RFC-006 consumed watermark: the newest stored message at the last compile
|
|
865
|
-
* of a model request,
|
|
914
|
+
* of a model request, or at the last tool boundary that injected messages
|
|
915
|
+
* into a live one, per branch. Everything above it has never been in a
|
|
866
916
|
* request and may still be replaced or withdrawn in place by its sender.
|
|
867
917
|
*/
|
|
868
918
|
private consumedWatermark: { branch: string; sequence: number } | null = null;
|
|
919
|
+
/** Counts marks: a compile writes its watermark back only if no mark was
|
|
920
|
+
* made while it ran (a tool boundary's, or another compile's). */
|
|
921
|
+
private watermarkMarks = 0;
|
|
869
922
|
|
|
870
923
|
getConsumedWatermark(): { branch: string; sequence: number } | null {
|
|
871
924
|
return this.consumedWatermark;
|
|
872
925
|
}
|
|
873
926
|
|
|
874
|
-
/** Mark everything currently stored as consumed (
|
|
927
|
+
/** Mark everything currently stored as consumed (the agent's creation, at
|
|
928
|
+
* boot or later, and a tool boundary that injected messages into the live
|
|
929
|
+
* stream). */
|
|
875
930
|
markContextConsumed(): void {
|
|
876
931
|
// Tolerates partial context-manager doubles (tests build Agents over
|
|
877
932
|
// stubs): without a watermark nothing is ever treated as unread.
|
|
878
933
|
this.consumedWatermark = this.pendingWatermark();
|
|
934
|
+
this.watermarkMarks++;
|
|
935
|
+
}
|
|
936
|
+
|
|
937
|
+
/**
|
|
938
|
+
* A finished compile's watermark, taken before it awaited. Within a branch
|
|
939
|
+
* the watermark only advances: if a mark was made while the compile ran,
|
|
940
|
+
* the compile's (older) one is applied only where it is later on that
|
|
941
|
+
* mark's branch, so a boundary's mark is never rolled back by a compile
|
|
942
|
+
* that started before it (a preview during a live turn).
|
|
943
|
+
*/
|
|
944
|
+
private applyCompileWatermark(watermark: { branch: string; sequence: number }, marksBefore: number): void {
|
|
945
|
+
const current = this.consumedWatermark;
|
|
946
|
+
if (this.watermarkMarks !== marksBefore && current
|
|
947
|
+
&& (current.branch !== watermark.branch || current.sequence >= watermark.sequence)) return;
|
|
948
|
+
this.consumedWatermark = watermark;
|
|
949
|
+
this.watermarkMarks++;
|
|
879
950
|
}
|
|
880
951
|
|
|
881
952
|
/** The watermark a successful compile will establish (taken before, applied after). */
|
|
@@ -907,9 +978,10 @@ export class Agent {
|
|
|
907
978
|
// RFC-006 §3.3: consumption is determined at assembly — a compile that
|
|
908
979
|
// fails assembled nothing, so the watermark moves only on success.
|
|
909
980
|
const watermark = this.pendingWatermark();
|
|
981
|
+
const marksBefore = this.watermarkMarks;
|
|
910
982
|
const compile = () => this.contextManager.compile(this.compileBudget(budget));
|
|
911
983
|
const result = budget ? await compile() : await this.compileAtLiveBudget(compile);
|
|
912
|
-
if (watermark) this.
|
|
984
|
+
if (watermark) this.applyCompileWatermark(watermark, marksBefore);
|
|
913
985
|
return result;
|
|
914
986
|
}
|
|
915
987
|
|
|
@@ -948,9 +1020,10 @@ export class Agent {
|
|
|
948
1020
|
// compression hold whose deadline has passed, which `compile` does for
|
|
949
1021
|
// any compile before it selects.
|
|
950
1022
|
const watermark = opts?.dryRun ? null : this.pendingWatermark();
|
|
1023
|
+
const marksBefore = this.watermarkMarks;
|
|
951
1024
|
const compile = () => this.contextManager.compile(this.compileBudget(budget), injections, opts as never);
|
|
952
1025
|
const result = budget || opts?.dryRun ? await compile() : await this.compileAtLiveBudget(compile);
|
|
953
|
-
if (watermark) this.
|
|
1026
|
+
if (watermark) this.applyCompileWatermark(watermark, marksBefore);
|
|
954
1027
|
return result;
|
|
955
1028
|
}
|
|
956
1029
|
|
|
@@ -1026,15 +1099,8 @@ export class Agent {
|
|
|
1026
1099
|
return {
|
|
1027
1100
|
messages: this.toolResultGuard.prepareRequest(messages, true),
|
|
1028
1101
|
system: this.buildSystemPrompt(systemInjections),
|
|
1029
|
-
config: {
|
|
1030
|
-
model: this.model,
|
|
1031
|
-
maxTokens: this.maxTokens,
|
|
1032
|
-
...(this.temperature !== undefined && { temperature: this.temperature }),
|
|
1033
|
-
...(this.thinking !== undefined && { thinking: this.thinking }),
|
|
1034
|
-
},
|
|
1035
1102
|
tools: tools.length > 0 ? tools : undefined,
|
|
1036
|
-
...
|
|
1037
|
-
assistantParticipant: this.name,
|
|
1103
|
+
...this.requestSettings(),
|
|
1038
1104
|
};
|
|
1039
1105
|
};
|
|
1040
1106
|
const request = await assemble();
|
|
@@ -1114,7 +1180,12 @@ export class Agent {
|
|
|
1114
1180
|
|
|
1115
1181
|
// If all tools done, transition to ready
|
|
1116
1182
|
if (this._state.pending.size === 0) {
|
|
1117
|
-
this._state = {
|
|
1183
|
+
this._state = {
|
|
1184
|
+
status: 'ready',
|
|
1185
|
+
toolResults: this._state.completed,
|
|
1186
|
+
stream: this._state.stream,
|
|
1187
|
+
supportsInjectedMessages: this._state.supportsInjectedMessages,
|
|
1188
|
+
};
|
|
1118
1189
|
}
|
|
1119
1190
|
}
|
|
1120
1191
|
|
|
@@ -1133,9 +1204,12 @@ export class Agent {
|
|
|
1133
1204
|
* Build the membrane-normalized request that WOULD be emitted for this
|
|
1134
1205
|
* agent's next activation, given the supplied tools and injections.
|
|
1135
1206
|
*
|
|
1136
|
-
* This is the single source of truth for
|
|
1137
|
-
* real activation path (`startStreamWithInjections`) and
|
|
1138
|
-
* tooling (`Framework.previewActivation`). It does not call
|
|
1207
|
+
* This is the single source of truth for a framework turn's request,
|
|
1208
|
+
* shared by the real activation path (`startStreamWithInjections`) and
|
|
1209
|
+
* debug/preview tooling (`Framework.previewActivation`). It does not call
|
|
1210
|
+
* the membrane. The direct API (`runInferenceWithInjections`) assembles its
|
|
1211
|
+
* own messages, system prompt and tools, and both take the agent's
|
|
1212
|
+
* settings from `requestSettings()`.
|
|
1139
1213
|
* A compile that is sent commits what the context manager commits for it
|
|
1140
1214
|
* (fold resolutions, the compression its fold plan calls for, the consumed
|
|
1141
1215
|
* watermark); a preview passes `options.dryRun`, so its compile commits
|
|
@@ -1239,15 +1313,30 @@ export class Agent {
|
|
|
1239
1313
|
return {
|
|
1240
1314
|
messages: this.toolResultGuard.prepareRequest(messages),
|
|
1241
1315
|
system: this.buildSystemPrompt(systemInjections),
|
|
1316
|
+
tools: availableTools.length > 0 ? availableTools : undefined,
|
|
1317
|
+
...this.requestSettings(),
|
|
1318
|
+
...(kvUnified ? { cacheMarkers: 'cm-owned' as const } : {}),
|
|
1319
|
+
};
|
|
1320
|
+
}
|
|
1321
|
+
|
|
1322
|
+
/**
|
|
1323
|
+
* The request fields that come from this agent's own settings: its model
|
|
1324
|
+
* config, prompt caching and cache TTL, prefill message, provider
|
|
1325
|
+
* parameters and participant name. Every request the agent sends takes
|
|
1326
|
+
* them from here, a framework turn's (buildActivationRequest) and the
|
|
1327
|
+
* direct API's (runInferenceWithInjections), so a setting reaches both or
|
|
1328
|
+
* neither.
|
|
1329
|
+
*/
|
|
1330
|
+
private requestSettings(): Pick<NormalizedRequest,
|
|
1331
|
+
'config' | 'promptCaching' | 'cacheTtl' | 'prefillUserMessage' | 'providerParams' | 'assistantParticipant'> {
|
|
1332
|
+
return {
|
|
1242
1333
|
config: {
|
|
1243
1334
|
model: this.model,
|
|
1244
1335
|
maxTokens: this.maxTokens,
|
|
1245
1336
|
...(this.temperature !== undefined && { temperature: this.temperature }),
|
|
1246
1337
|
...(this.thinking !== undefined && { thinking: this.thinking }),
|
|
1247
1338
|
},
|
|
1248
|
-
tools: availableTools.length > 0 ? availableTools : undefined,
|
|
1249
1339
|
promptCaching: this.promptCaching,
|
|
1250
|
-
...(kvUnified ? { cacheMarkers: 'cm-owned' as const } : {}),
|
|
1251
1340
|
cacheTtl: this.cacheTtl,
|
|
1252
1341
|
...(this.prefillUserMessage && { prefillUserMessage: this.prefillUserMessage }),
|
|
1253
1342
|
...(this.providerParams && { providerParams: this.providerParams }),
|
|
@@ -1308,6 +1397,15 @@ export class Agent {
|
|
|
1308
1397
|
this.failOpenKvSubmissions();
|
|
1309
1398
|
|
|
1310
1399
|
this._streamId++;
|
|
1400
|
+
// A pending cancel belongs to the stream that was live when cancelStream()
|
|
1401
|
+
// ran. The stream driver collects it on that stream's terminal event, or
|
|
1402
|
+
// at the loop's end when the iterator closed without one, while the
|
|
1403
|
+
// stream still owns the agent. This clear is for the records no driver
|
|
1404
|
+
// collects: a dropped turn's, whose stream no driver iterates; one whose
|
|
1405
|
+
// stream's terminal came after another stream took the agent; or a
|
|
1406
|
+
// cancel after the stream's complete event. A fresh stream must not
|
|
1407
|
+
// inherit one and read its own later error as a deliberate stop.
|
|
1408
|
+
this._pendingCancel = undefined;
|
|
1311
1409
|
this._inferenceStartedAt = Date.now();
|
|
1312
1410
|
this.lastStreamInputTokens = 0;
|
|
1313
1411
|
// Reset the cache-inclusive counters too: a new stream must not inherit
|
|
@@ -1408,9 +1506,10 @@ export class Agent {
|
|
|
1408
1506
|
|
|
1409
1507
|
/**
|
|
1410
1508
|
* Transition to waiting_for_tools when stream yields tool calls.
|
|
1411
|
-
* Called by framework's driveStream
|
|
1509
|
+
* Called by framework's driveStream, with what the stream declared about
|
|
1510
|
+
* carrying injected messages with this round's results (see AgentState).
|
|
1412
1511
|
*/
|
|
1413
|
-
enterWaitingForTools(calls: ToolCall[], stream: YieldingStream): void {
|
|
1512
|
+
enterWaitingForTools(calls: ToolCall[], stream: YieldingStream, supportsInjectedMessages?: boolean): void {
|
|
1414
1513
|
const pending = new Map<ToolCallId, PendingToolCall>();
|
|
1415
1514
|
for (const call of calls) {
|
|
1416
1515
|
pending.set(call.id, {
|
|
@@ -1420,7 +1519,7 @@ export class Agent {
|
|
|
1420
1519
|
startedAt: Date.now(),
|
|
1421
1520
|
});
|
|
1422
1521
|
}
|
|
1423
|
-
this._state = { status: 'waiting_for_tools', pending, completed: [], stream };
|
|
1522
|
+
this._state = { status: 'waiting_for_tools', pending, completed: [], stream, supportsInjectedMessages };
|
|
1424
1523
|
}
|
|
1425
1524
|
|
|
1426
1525
|
/**
|
|
@@ -1463,18 +1562,42 @@ export class Agent {
|
|
|
1463
1562
|
this._state = { status: 'streaming', stream };
|
|
1464
1563
|
}
|
|
1465
1564
|
|
|
1565
|
+
/** The most recent cancelStream() of a live stream, until the stream
|
|
1566
|
+
* driver collects it on that stream's terminal event. Its presence is
|
|
1567
|
+
* the signal (a reasonless Stop is still a deliberate stop); its reason
|
|
1568
|
+
* is the caller's own word. Membrane reports every cancel() as reason
|
|
1569
|
+
* 'user' — the call, not the actor — and a stream implementation may
|
|
1570
|
+
* report the cancel as `error` with no reason at all, so this record is
|
|
1571
|
+
* the only provenance a host-side cancel has. */
|
|
1572
|
+
private _pendingCancel: { reason?: string } | undefined;
|
|
1573
|
+
|
|
1466
1574
|
/**
|
|
1467
|
-
* Cancel
|
|
1575
|
+
* Cancel the stream this agent's state holds (streaming, waiting on its
|
|
1576
|
+
* tools, or ready at a tool boundary with every result in), and reset to
|
|
1577
|
+
* idle. `reason` is provenance for the framework's inference:aborted trace
|
|
1578
|
+
* and marker metadata (e.g. 'zombie_reclaim', 'subagent_cancel'); it never
|
|
1579
|
+
* reaches the provider.
|
|
1468
1580
|
*/
|
|
1469
|
-
cancelStream(): void {
|
|
1470
|
-
if (this._state
|
|
1471
|
-
this.
|
|
1472
|
-
} else if (this._state.status === 'waiting_for_tools' && this._state.stream) {
|
|
1581
|
+
cancelStream(reason?: string): void {
|
|
1582
|
+
if ('stream' in this._state && this._state.stream) {
|
|
1583
|
+
this._pendingCancel = { reason };
|
|
1473
1584
|
this._state.stream.cancel();
|
|
1474
1585
|
}
|
|
1475
1586
|
this._state = { status: 'idle' };
|
|
1476
1587
|
}
|
|
1477
1588
|
|
|
1589
|
+
/** Collect (and clear) the cancel that ended the current stream, if this
|
|
1590
|
+
* side issued one. The stream driver calls it once, while the stream
|
|
1591
|
+
* still owns the agent, at the stream's terminal event (`aborted`
|
|
1592
|
+
* normally, `error` for implementations that report cancel() that way)
|
|
1593
|
+
* or at the loop's end when the stream closed without one. A record no
|
|
1594
|
+
* driver collects is cleared when the agent's next stream starts. */
|
|
1595
|
+
takeCancel(): { reason?: string } | undefined {
|
|
1596
|
+
const c = this._pendingCancel;
|
|
1597
|
+
this._pendingCancel = undefined;
|
|
1598
|
+
return c;
|
|
1599
|
+
}
|
|
1600
|
+
|
|
1478
1601
|
/**
|
|
1479
1602
|
* Check if agent has pending tool calls.
|
|
1480
1603
|
*/
|
|
@@ -1507,20 +1630,20 @@ export class Agent {
|
|
|
1507
1630
|
}
|
|
1508
1631
|
|
|
1509
1632
|
/**
|
|
1510
|
-
* Build the effective system prompt, appending any system-position
|
|
1633
|
+
* Build the effective system prompt, appending any system-position
|
|
1634
|
+
* injections, their blocks joined by line breaks. The system prompt is
|
|
1635
|
+
* text, so a block of another type, such as an image a server or module
|
|
1636
|
+
* injected there, can't go in it: a line in its place says so. The hook
|
|
1637
|
+
* orchestrator tells a server's operator once per server and namespace,
|
|
1638
|
+
* and the module registry tells a module's once per module and namespace.
|
|
1511
1639
|
*/
|
|
1512
1640
|
private buildSystemPrompt(systemInjections: ContentBlock[]): string {
|
|
1513
1641
|
if (systemInjections.length === 0) {
|
|
1514
1642
|
return this.systemPrompt;
|
|
1515
1643
|
}
|
|
1516
1644
|
|
|
1517
|
-
const injectedText = systemInjections
|
|
1518
|
-
.
|
|
1519
|
-
.map((block) => block.text);
|
|
1520
|
-
|
|
1521
|
-
if (injectedText.length === 0) {
|
|
1522
|
-
return this.systemPrompt;
|
|
1523
|
-
}
|
|
1645
|
+
const injectedText = systemInjections.map((block) =>
|
|
1646
|
+
block.type === 'text' ? block.text : `[${block.type} block not shown: the system prompt carries text only.]`);
|
|
1524
1647
|
|
|
1525
1648
|
return this.systemPrompt + '\n' + injectedText.join('\n');
|
|
1526
1649
|
}
|
|
@@ -1532,10 +1655,9 @@ export class Agent {
|
|
|
1532
1655
|
return { aborted: true, durationMs };
|
|
1533
1656
|
}
|
|
1534
1657
|
|
|
1535
|
-
if (this._state
|
|
1536
|
-
(this._state.status === 'waiting_for_tools' && this._state.stream)) {
|
|
1658
|
+
if ('stream' in this._state && this._state.stream) {
|
|
1537
1659
|
const durationMs = Date.now() - this._inferenceStartedAt;
|
|
1538
|
-
this.cancelStream();
|
|
1660
|
+
this.cancelStream(reason);
|
|
1539
1661
|
return { aborted: true, durationMs };
|
|
1540
1662
|
}
|
|
1541
1663
|
|
package/src/api/server.ts
CHANGED
|
@@ -11,7 +11,7 @@ import { createServer, IncomingMessage, ServerResponse } from 'node:http';
|
|
|
11
11
|
import { timingSafeEqual } from 'node:crypto';
|
|
12
12
|
import type { ContentBlock } from '@animalabs/membrane';
|
|
13
13
|
import type { AgentFramework } from '../framework.js';
|
|
14
|
-
import { ResumeBlockedError } from '../framework.js';
|
|
14
|
+
import { QuiesceBlockedError, ResumeBlockedError } from '../framework.js';
|
|
15
15
|
import { isReleaseModel } from '../provider-waits.js';
|
|
16
16
|
import type { TraceEvent, ProcessEvent } from '../types/index.js';
|
|
17
17
|
import type {
|
|
@@ -1073,6 +1073,9 @@ export class ApiServer {
|
|
|
1073
1073
|
verdicts: error.verdicts,
|
|
1074
1074
|
hostMode: this.framework.getHostModeStatus(),
|
|
1075
1075
|
});
|
|
1076
|
+
} else if (error instanceof QuiesceBlockedError) {
|
|
1077
|
+
// A refusal, as resume()'s is: the host's mode is as it was.
|
|
1078
|
+
respond(409, { error: error.message, hostMode: this.framework.getHostModeStatus() });
|
|
1076
1079
|
} else {
|
|
1077
1080
|
respond(500, { error: error instanceof Error ? error.message : String(error) });
|
|
1078
1081
|
}
|
package/src/api/types.ts
CHANGED
|
@@ -210,7 +210,7 @@ export interface InferenceSearchParams {
|
|
|
210
210
|
offset?: number;
|
|
211
211
|
/** Regex pattern to match against log content */
|
|
212
212
|
pattern?: string;
|
|
213
|
-
/** Only show failed
|
|
213
|
+
/** Only show inferences that didn't succeed: failed or stopped */
|
|
214
214
|
errorsOnly?: boolean;
|
|
215
215
|
}
|
|
216
216
|
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A name for a new branch: `base` when `taken(base)` is false, else the first
|
|
3
|
+
* of `base-2`, `base-3`, … that isn't taken.
|
|
4
|
+
*
|
|
5
|
+
* Default operator branch names carry the time in milliseconds
|
|
6
|
+
* (`suppress/<agent>/<ts>`, `rollback/<agent>/<ts>`, …), so a second change of
|
|
7
|
+
* one kind made right after the first, in the same millisecond, would
|
|
8
|
+
* otherwise get the first one's name and be refused. Callers pass what counts
|
|
9
|
+
* as taken, at least every branch the store holds: the store knows every
|
|
10
|
+
* branch, whatever made it, where a counter kept in the process would know
|
|
11
|
+
* only the names it gave out.
|
|
12
|
+
*/
|
|
13
|
+
export function firstFreeBranchName(base: string, taken: (name: string) => boolean): string {
|
|
14
|
+
if (!taken(base)) return base;
|
|
15
|
+
for (let n = 2; ; n++) {
|
|
16
|
+
const name = `${base}-${n}`;
|
|
17
|
+
if (!taken(name)) return name;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The names someone most likely meant, when the one they gave matches none:
|
|
3
|
+
* for a refusal's "did you mean", such as a tool name an agent got wrong.
|
|
4
|
+
*
|
|
5
|
+
* Case is ignored. A candidate that the name matches as a whole `--` segment
|
|
6
|
+
* ("ls" for "workspace--ls"), then one that starts with it or that it starts
|
|
7
|
+
* with, then one that contains it or that it contains, ranks ahead of one
|
|
8
|
+
* that is only a few edits away, however many edits those matches take. The
|
|
9
|
+
* prefix and substring matches need three characters on the shorter side,
|
|
10
|
+
* since a letter or two is in nearly every name. A candidate that matches in
|
|
11
|
+
* none of those ways counts only within the edits noiseLimit allows, and past
|
|
12
|
+
* that it's noise. So a name that is part of no candidate, holds none and is
|
|
13
|
+
* close to none gets nothing back, and a name in a crowded namespace doesn't
|
|
14
|
+
* get its neighbours (`workspace--write` for `workspace--read`).
|
|
15
|
+
*/
|
|
16
|
+
export function closestNames(name: string, candidates: readonly string[], max = 2): string[] {
|
|
17
|
+
const wanted = name.toLowerCase();
|
|
18
|
+
const ranked: { candidate: string; tier: number; distance: number }[] = [];
|
|
19
|
+
for (const candidate of new Set(candidates)) {
|
|
20
|
+
const other = candidate.toLowerCase();
|
|
21
|
+
const shorter = Math.min(wanted.length, other.length);
|
|
22
|
+
const tier = other === wanted ? 0
|
|
23
|
+
: wanted && other.split('--').includes(wanted) ? 1
|
|
24
|
+
: shorter >= 3 && (other.startsWith(wanted) || wanted.startsWith(other)) ? 2
|
|
25
|
+
: shorter >= 3 && (other.includes(wanted) || wanted.includes(other)) ? 3
|
|
26
|
+
: 4;
|
|
27
|
+
// In tiers 0 to 3 one name holds the other, so the length difference is
|
|
28
|
+
// already their distance, and a long name skips the edit table.
|
|
29
|
+
const limit = tier === 4 ? noiseLimit(wanted, other) : Infinity;
|
|
30
|
+
const distance = tier === 4 ? editDistance(wanted, other, limit) : Math.abs(wanted.length - other.length);
|
|
31
|
+
if (distance > limit) continue;
|
|
32
|
+
ranked.push({ candidate, tier, distance });
|
|
33
|
+
}
|
|
34
|
+
// A stable sort: candidates that tie keep the order they were given in.
|
|
35
|
+
ranked.sort((a, b) => a.tier - b.tier || a.distance - b.distance);
|
|
36
|
+
return ranked.slice(0, Math.max(0, max)).map((entry) => entry.candidate);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Whether `name` looks like a slip for `candidate`, ignoring case: the same;
|
|
41
|
+
* a few edits apart, where a transposition counts as one edit; or, at three
|
|
42
|
+
* characters or more, a part of it, which is a shortened attempt at it
|
|
43
|
+
* (`mode` for `deliveryMode`, `interval` for `refillIntervalMs`). A part
|
|
44
|
+
* counts only that way round: a name that holds the candidate, and is more
|
|
45
|
+
* edits from it than a slip allows, is another name, usually an extra that
|
|
46
|
+
* explains it (`channel_note` beside `channel`, where `channels` is a slip).
|
|
47
|
+
* Beyond these, two names are different names rather than one mistyped.
|
|
48
|
+
*/
|
|
49
|
+
export function isNearMiss(name: string, candidate: string): boolean {
|
|
50
|
+
const a = name.toLowerCase(), b = candidate.toLowerCase();
|
|
51
|
+
if (a.length >= 3 && b.includes(a)) return true;
|
|
52
|
+
const limit = noiseLimit(a, b);
|
|
53
|
+
return editDistance(a, b, limit) <= limit;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* The most edits that still read as a slip: a quarter of what follows the
|
|
58
|
+
* prefix the two names share, and at least one. A shared prefix is mostly a
|
|
59
|
+
* namespace (`workspace--`, `mcpl--discord--`) and says nothing about the
|
|
60
|
+
* rest, so `workspace--read` and `workspace--write` are four edits apart in
|
|
61
|
+
* a four-letter tool name, not in a fifteen-letter one.
|
|
62
|
+
*/
|
|
63
|
+
function noiseLimit(a: string, b: string): number {
|
|
64
|
+
let shared = 0;
|
|
65
|
+
while (shared < a.length && shared < b.length && a[shared] === b[shared]) shared++;
|
|
66
|
+
return Math.max(1, Math.floor((Math.max(a.length, b.length) - shared) / 4));
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Edits between two strings: insertions, deletions, substitutions and
|
|
71
|
+
* swaps of neighbours (optimal string alignment). Past `limit` the exact
|
|
72
|
+
* count doesn't matter, so it answers `limit + 1` as soon as it is sure.
|
|
73
|
+
*/
|
|
74
|
+
function editDistance(a: string, b: string, limit: number): number {
|
|
75
|
+
if (Math.abs(a.length - b.length) > limit) return limit + 1;
|
|
76
|
+
let before: number[] = [];
|
|
77
|
+
let previous = Array.from({ length: b.length + 1 }, (_, j) => j);
|
|
78
|
+
for (let i = 1; i <= a.length; i++) {
|
|
79
|
+
const current = [i];
|
|
80
|
+
let best = i;
|
|
81
|
+
for (let j = 1; j <= b.length; j++) {
|
|
82
|
+
const cost = a[i - 1] === b[j - 1] ? 0 : 1;
|
|
83
|
+
let value = Math.min(previous[j] + 1, current[j - 1] + 1, previous[j - 1] + cost);
|
|
84
|
+
if (i > 1 && j > 1 && a[i - 1] === b[j - 2] && a[i - 2] === b[j - 1]) value = Math.min(value, before[j - 2] + 1);
|
|
85
|
+
current.push(value);
|
|
86
|
+
best = Math.min(best, value);
|
|
87
|
+
}
|
|
88
|
+
// No row's smallest entry is below the one before it, so none later can come back under the limit.
|
|
89
|
+
if (best > limit) return limit + 1;
|
|
90
|
+
before = previous;
|
|
91
|
+
previous = current;
|
|
92
|
+
}
|
|
93
|
+
return previous[b.length];
|
|
94
|
+
}
|