@animalabs/agent-framework 0.22.2 → 0.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +108 -4
- package/dist/src/agent.d.ts +108 -17
- package/dist/src/agent.d.ts.map +1 -1
- package/dist/src/agent.js +207 -67
- 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/index.d.ts +1 -1
- package/dist/src/code-execution/index.d.ts.map +1 -1
- package/dist/src/code-execution/index.js.map +1 -1
- package/dist/src/code-execution/py-runner.d.ts +50 -7
- package/dist/src/code-execution/py-runner.d.ts.map +1 -1
- package/dist/src/code-execution/py-runner.js +258 -90
- package/dist/src/code-execution/py-runner.js.map +1 -1
- package/dist/src/code-execution/runtime-py.d.ts +3 -2
- package/dist/src/code-execution/runtime-py.d.ts.map +1 -1
- package/dist/src/code-execution/runtime-py.js +94 -8
- package/dist/src/code-execution/runtime-py.js.map +1 -1
- package/dist/src/code-execution/tool-definition.d.ts +17 -1
- package/dist/src/code-execution/tool-definition.d.ts.map +1 -1
- package/dist/src/code-execution/tool-definition.js +72 -6
- 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 +56 -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 +1529 -165
- package/dist/src/framework.d.ts.map +1 -1
- package/dist/src/framework.js +8264 -1939
- 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 +36 -5
- package/dist/src/gate/event-gate.js.map +1 -1
- package/dist/src/held-writes.d.ts +16 -0
- package/dist/src/held-writes.d.ts.map +1 -0
- package/dist/src/held-writes.js +56 -0
- package/dist/src/held-writes.js.map +1 -0
- package/dist/src/index.d.ts +10 -4
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +11 -5
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcpl/capability-grant.d.ts +4 -0
- package/dist/src/mcpl/capability-grant.d.ts.map +1 -1
- package/dist/src/mcpl/capability-grant.js +1 -1
- package/dist/src/mcpl/capability-grant.js.map +1 -1
- package/dist/src/mcpl/channel-registry.d.ts +233 -18
- package/dist/src/mcpl/channel-registry.d.ts.map +1 -1
- package/dist/src/mcpl/channel-registry.js +975 -386
- 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 +88 -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 +7 -1
- package/dist/src/mcpl/index.d.ts.map +1 -1
- package/dist/src/mcpl/index.js +5 -1
- package/dist/src/mcpl/index.js.map +1 -1
- package/dist/src/mcpl/inference-router.d.ts +19 -13
- package/dist/src/mcpl/inference-router.d.ts.map +1 -1
- package/dist/src/mcpl/inference-router.js +155 -87
- package/dist/src/mcpl/inference-router.js.map +1 -1
- package/dist/src/mcpl/log-value.d.ts +7 -0
- package/dist/src/mcpl/log-value.d.ts.map +1 -1
- package/dist/src/mcpl/log-value.js +9 -0
- package/dist/src/mcpl/log-value.js.map +1 -1
- package/dist/src/mcpl/modern-connection.d.ts +227 -0
- package/dist/src/mcpl/modern-connection.d.ts.map +1 -0
- package/dist/src/mcpl/modern-connection.js +1088 -0
- package/dist/src/mcpl/modern-connection.js.map +1 -0
- package/dist/src/mcpl/prefix-rule.d.ts +18 -0
- package/dist/src/mcpl/prefix-rule.d.ts.map +1 -0
- package/dist/src/mcpl/prefix-rule.js +25 -0
- package/dist/src/mcpl/prefix-rule.js.map +1 -0
- package/dist/src/mcpl/protocol-family.d.ts +179 -0
- package/dist/src/mcpl/protocol-family.d.ts.map +1 -0
- package/dist/src/mcpl/protocol-family.js +697 -0
- package/dist/src/mcpl/protocol-family.js.map +1 -0
- package/dist/src/mcpl/push-coalescer.d.ts +58 -17
- package/dist/src/mcpl/push-coalescer.d.ts.map +1 -1
- package/dist/src/mcpl/push-coalescer.js +93 -32
- 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 +76 -13
- package/dist/src/mcpl/reference-fetcher.d.ts.map +1 -1
- package/dist/src/mcpl/reference-fetcher.js +275 -66
- package/dist/src/mcpl/reference-fetcher.js.map +1 -1
- package/dist/src/mcpl/references.d.ts +98 -18
- package/dist/src/mcpl/references.d.ts.map +1 -1
- package/dist/src/mcpl/references.js +170 -32
- package/dist/src/mcpl/references.js.map +1 -1
- package/dist/src/mcpl/server-connection.d.ts +406 -31
- package/dist/src/mcpl/server-connection.d.ts.map +1 -1
- package/dist/src/mcpl/server-connection.js +1331 -272
- package/dist/src/mcpl/server-connection.js.map +1 -1
- package/dist/src/mcpl/server-registry.d.ts +35 -6
- package/dist/src/mcpl/server-registry.d.ts.map +1 -1
- package/dist/src/mcpl/server-registry.js +63 -13
- package/dist/src/mcpl/server-registry.js.map +1 -1
- package/dist/src/mcpl/skip-reply-wake.d.ts +36 -0
- package/dist/src/mcpl/skip-reply-wake.d.ts.map +1 -0
- package/dist/src/mcpl/skip-reply-wake.js +55 -0
- package/dist/src/mcpl/skip-reply-wake.js.map +1 -0
- package/dist/src/mcpl/tool-result-normalize.d.ts +54 -0
- package/dist/src/mcpl/tool-result-normalize.d.ts.map +1 -0
- package/dist/src/mcpl/tool-result-normalize.js +232 -0
- package/dist/src/mcpl/tool-result-normalize.js.map +1 -0
- package/dist/src/mcpl/transport.d.ts +104 -12
- package/dist/src/mcpl/transport.d.ts.map +1 -1
- package/dist/src/mcpl/transport.js +315 -85
- package/dist/src/mcpl/transport.js.map +1 -1
- package/dist/src/mcpl/types.d.ts +76 -19
- 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 +16 -0
- package/dist/src/mcpl/visible-content.d.ts.map +1 -1
- package/dist/src/mcpl/visible-content.js +26 -0
- package/dist/src/mcpl/visible-content.js.map +1 -1
- package/dist/src/module-registry.d.ts +34 -6
- package/dist/src/module-registry.d.ts.map +1 -1
- package/dist/src/module-registry.js +119 -31
- package/dist/src/module-registry.js.map +1 -1
- package/dist/src/modules/api/index.d.ts +1 -1
- package/dist/src/modules/api/index.d.ts.map +1 -1
- package/dist/src/modules/api/index.js +3 -2
- package/dist/src/modules/api/index.js.map +1 -1
- package/dist/src/modules/discord/discord-js-client.d.ts +43 -2
- package/dist/src/modules/discord/discord-js-client.d.ts.map +1 -1
- package/dist/src/modules/discord/discord-js-client.js +286 -67
- package/dist/src/modules/discord/discord-js-client.js.map +1 -1
- package/dist/src/modules/discord/index.d.ts +53 -5
- package/dist/src/modules/discord/index.d.ts.map +1 -1
- package/dist/src/modules/discord/index.js +712 -186
- package/dist/src/modules/discord/index.js.map +1 -1
- package/dist/src/modules/discord/refusal.d.ts +14 -0
- package/dist/src/modules/discord/refusal.d.ts.map +1 -0
- package/dist/src/modules/discord/refusal.js +14 -0
- package/dist/src/modules/discord/refusal.js.map +1 -0
- package/dist/src/modules/discord/types.d.ts +27 -4
- 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 +8 -3
- 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/index.d.ts +1 -1
- package/dist/src/modules/index.d.ts.map +1 -1
- package/dist/src/modules/index.js +1 -1
- package/dist/src/modules/index.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 +57 -4
- package/dist/src/modules/workspace/disk-agreement.d.ts.map +1 -1
- package/dist/src/modules/workspace/disk-agreement.js +75 -7
- package/dist/src/modules/workspace/disk-agreement.js.map +1 -1
- package/dist/src/modules/workspace/effects.d.ts +66 -7
- package/dist/src/modules/workspace/effects.d.ts.map +1 -1
- package/dist/src/modules/workspace/effects.js +303 -46
- package/dist/src/modules/workspace/effects.js.map +1 -1
- package/dist/src/modules/workspace/index.d.ts +313 -45
- package/dist/src/modules/workspace/index.d.ts.map +1 -1
- package/dist/src/modules/workspace/index.js +1404 -304
- package/dist/src/modules/workspace/index.js.map +1 -1
- package/dist/src/modules/workspace/observe.d.ts +315 -16
- package/dist/src/modules/workspace/observe.d.ts.map +1 -1
- package/dist/src/modules/workspace/observe.js +727 -37
- 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 +28 -5
- 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 +49 -2
- package/dist/src/modules/workspace/watcher.d.ts.map +1 -1
- package/dist/src/modules/workspace/watcher.js +158 -29
- 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/silent-heartbeat.d.ts +112 -39
- package/dist/src/silent-heartbeat.d.ts.map +1 -1
- package/dist/src/silent-heartbeat.js +100 -29
- package/dist/src/silent-heartbeat.js.map +1 -1
- package/dist/src/tool-args.d.ts +40 -0
- package/dist/src/tool-args.d.ts.map +1 -0
- package/dist/src/tool-args.js +207 -0
- package/dist/src/tool-args.js.map +1 -0
- 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 +266 -62
- 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 +44 -22
- package/dist/src/types/agent.d.ts.map +1 -1
- package/dist/src/types/events.d.ts +25 -0
- package/dist/src/types/events.d.ts.map +1 -1
- package/dist/src/types/framework.d.ts +38 -7
- 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 +77 -14
- package/dist/src/types/module.d.ts.map +1 -1
- package/dist/src/types/trace.d.ts +97 -8
- 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 +5 -4
- package/src/agent.ts +257 -72
- 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/index.ts +1 -0
- package/src/code-execution/py-runner.ts +304 -93
- package/src/code-execution/runtime-py.ts +94 -8
- package/src/code-execution/tool-definition.ts +85 -7
- package/src/config-checks.ts +50 -0
- package/src/deadline-timer.ts +44 -0
- package/src/error-message.ts +48 -0
- package/src/framework.ts +8625 -1984
- package/src/gate/event-gate.ts +38 -5
- package/src/held-writes.ts +59 -0
- package/src/index.ts +29 -5
- package/src/mcpl/capability-grant.ts +1 -1
- package/src/mcpl/channel-registry.ts +1095 -411
- package/src/mcpl/checkpoint-manager.ts +104 -29
- package/src/mcpl/conversation-router.ts +28 -8
- package/src/mcpl/convert-block.ts +105 -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 +23 -1
- package/src/mcpl/inference-router.ts +179 -103
- package/src/mcpl/log-value.ts +10 -0
- package/src/mcpl/modern-connection.ts +1182 -0
- package/src/mcpl/prefix-rule.ts +32 -0
- package/src/mcpl/protocol-family.ts +691 -0
- package/src/mcpl/push-coalescer.ts +110 -36
- package/src/mcpl/push-handler.ts +20 -90
- package/src/mcpl/reference-fetcher.ts +318 -67
- package/src/mcpl/references.ts +183 -34
- package/src/mcpl/server-connection.ts +1404 -280
- package/src/mcpl/server-registry.ts +63 -14
- package/src/mcpl/skip-reply-wake.ts +73 -0
- package/src/mcpl/tool-result-normalize.ts +294 -0
- package/src/mcpl/transport.ts +320 -76
- package/src/mcpl/types.ts +77 -19
- package/src/mcpl/visible-content.ts +28 -0
- package/src/module-registry.ts +126 -36
- package/src/modules/api/index.ts +3 -2
- package/src/modules/discord/discord-js-client.ts +306 -74
- package/src/modules/discord/index.ts +737 -201
- package/src/modules/discord/refusal.ts +13 -0
- package/src/modules/discord/types.ts +27 -6
- package/src/modules/health/index.ts +8 -3
- package/src/modules/history/index.ts +410 -120
- package/src/modules/history/semantic.ts +189 -32
- package/src/modules/index.ts +1 -1
- package/src/modules/unknown-tool.ts +16 -0
- package/src/modules/workspace/disk-agreement.ts +97 -8
- package/src/modules/workspace/effects.ts +291 -36
- package/src/modules/workspace/index.ts +1469 -321
- package/src/modules/workspace/observe.ts +784 -41
- package/src/modules/workspace/reconcile.ts +619 -64
- package/src/modules/workspace/types.ts +28 -5
- package/src/modules/workspace/watcher.ts +154 -30
- 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/silent-heartbeat.ts +184 -59
- package/src/tool-args.ts +213 -0
- package/src/tool-image-ledger.ts +153 -34
- package/src/tool-presentation.ts +233 -42
- 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 +44 -24
- package/src/types/events.ts +25 -0
- package/src/types/framework.ts +38 -7
- package/src/types/inference-log.ts +1 -1
- package/src/types/module.ts +79 -14
- package/src/types/trace.ts +103 -8
- 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
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where an inbound item came from, decided once at Agent Framework's
|
|
3
|
+
* ingestion boundary and stored on the message as `metadata.inboundSource`.
|
|
4
|
+
*
|
|
5
|
+
* A consumer of where an item came from reads this one value
|
|
6
|
+
* (readInboundSource) rather than re-deriving identity from the lane the
|
|
7
|
+
* item happened to arrive on, and compares conversations with
|
|
8
|
+
* conversationKey. It is frozen when the host ACCEPTS the item. A coalesced
|
|
9
|
+
* occurrence (RFC-006) carries the value stamped at its acceptance through
|
|
10
|
+
* deferral, fan-out and replay, so a later rename, reconnect or re-render
|
|
11
|
+
* never rewrites where an old item says it came from.
|
|
12
|
+
*
|
|
13
|
+
* The field is framework-owned. It is written after any adapter-supplied
|
|
14
|
+
* metadata is spread, so an adapter cannot supply or spoof it, and one a
|
|
15
|
+
* module's messages carry is dropped (adapter `origin` objects already use a
|
|
16
|
+
* free-form `source` string, which is why this is not called `source`).
|
|
17
|
+
*
|
|
18
|
+
* Facts only, no policy: whether an item is a body, an edit or a deletion
|
|
19
|
+
* stays in its tags (`chat:edited`, `chat:deleted`); `deferred` and
|
|
20
|
+
* `materialized` record what RFC-006 did with it. Nothing here is a version
|
|
21
|
+
* key: `eventId` is present only when the producer supplied one.
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
/** The MCPL admission lane that accepted an item. Its contract decides what
|
|
25
|
+
* an `eventId` is worth: `push/event` deduplicates by eventId, and RFC-006
|
|
26
|
+
* coalesced admission (`coalesced: true`) guarantees stable retries and
|
|
27
|
+
* distinct versions; a `channels/incoming` eventId outside coalescing is
|
|
28
|
+
* adapter-supplied with no such guarantee. */
|
|
29
|
+
export type InboundLane = 'channels/incoming' | 'push/event';
|
|
30
|
+
|
|
31
|
+
/** An item that belongs to a registered channel. */
|
|
32
|
+
export interface InboundChannelSource {
|
|
33
|
+
kind: 'channel';
|
|
34
|
+
/** The admission lane that accepted it (see InboundLane). */
|
|
35
|
+
lane: InboundLane;
|
|
36
|
+
/** Accepted through RFC-006 coalesced admission. */
|
|
37
|
+
coalesced?: true;
|
|
38
|
+
/** MCPL server (connection) id the item arrived through, as the host names it. */
|
|
39
|
+
serverId: string;
|
|
40
|
+
/** RFC-006 endpoint binding of that connection at acceptance. A recipe that
|
|
41
|
+
* later points the same server id at a different endpoint gets a
|
|
42
|
+
* different binding, so old items never acquire the new endpoint's identity. */
|
|
43
|
+
binding: string;
|
|
44
|
+
/** The registered canonical channel id (on the push lane: the composite id
|
|
45
|
+
* the host derived from `origin`, never the adapter's raw platform id). */
|
|
46
|
+
channelId: string;
|
|
47
|
+
/** Thread within the channel, when the adapter supplied one. */
|
|
48
|
+
threadId?: string;
|
|
49
|
+
/** The platform message this item is (or, for an edit/delete, refers to). */
|
|
50
|
+
messageId?: string;
|
|
51
|
+
/** The producer's occurrence id, when it supplied one. */
|
|
52
|
+
eventId?: string;
|
|
53
|
+
/** The channel's human label when the host accepted the item. */
|
|
54
|
+
label?: string;
|
|
55
|
+
/** Message this one replies to, when the adapter supplied a reply edge. */
|
|
56
|
+
replyTo?: string;
|
|
57
|
+
/** Host acceptance time (epoch ms). */
|
|
58
|
+
acceptedAt: number;
|
|
59
|
+
/** The adapter's own timestamp for the item, verbatim. */
|
|
60
|
+
sourceTimestamp?: string;
|
|
61
|
+
/** RFC-006: accepted as a deferred notification (body rendered later). */
|
|
62
|
+
deferred?: true;
|
|
63
|
+
/** RFC-006: this delivery carries the materialized (rendered) body. */
|
|
64
|
+
materialized?: true;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/** An MCPL push that names no channel (heartbeats, timers, feature-set events). */
|
|
68
|
+
export interface InboundUnscopedSource {
|
|
69
|
+
kind: 'unscoped';
|
|
70
|
+
lane: 'push/event';
|
|
71
|
+
coalesced?: true;
|
|
72
|
+
serverId: string;
|
|
73
|
+
binding: string;
|
|
74
|
+
eventId?: string;
|
|
75
|
+
acceptedAt: number;
|
|
76
|
+
sourceTimestamp?: string;
|
|
77
|
+
deferred?: true;
|
|
78
|
+
materialized?: true;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/** Conversational input from a non-channel surface (console, TUI, API). */
|
|
82
|
+
export interface InboundSurfaceSource {
|
|
83
|
+
kind: 'surface';
|
|
84
|
+
/** The surface's name as its module reported it (e.g. `tui`, `api`). */
|
|
85
|
+
surface: string;
|
|
86
|
+
acceptedAt: number;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export type InboundSource = InboundChannelSource | InboundUnscopedSource | InboundSurfaceSource;
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Told once per inbound acceptance, with that acceptance's envelope: when an
|
|
93
|
+
* ordinary item reaches the framework, and when the RFC-006 coalescer admits
|
|
94
|
+
* an occurrence (deferred work included). Deliveries that reuse a frozen
|
|
95
|
+
* envelope (replay, fan-out, materialization, corrections) are not
|
|
96
|
+
* acceptances and are not reported. Observation only: the framework contains
|
|
97
|
+
* and reports a throw, which never affects delivery.
|
|
98
|
+
*/
|
|
99
|
+
export interface InboundAcceptanceObserver {
|
|
100
|
+
inboundAccepted(source: InboundSource): void;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/** Metadata key the framework stamps. */
|
|
104
|
+
export const INBOUND_SOURCE_KEY = 'inboundSource';
|
|
105
|
+
|
|
106
|
+
const isText = (v: unknown): v is string => typeof v === 'string' && v.length > 0;
|
|
107
|
+
const optionalText = (v: unknown): boolean => v === undefined || isText(v);
|
|
108
|
+
const optionalTrue = (v: unknown): boolean => v === undefined || v === true;
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Read a stored item's source back from its metadata, validating every field
|
|
112
|
+
* a consumer relies on: identity strings are non-empty strings, `acceptedAt`
|
|
113
|
+
* is a finite number, flags are exactly `true` when present, and the lane is
|
|
114
|
+
* one this version knows. Anything else (older messages, a shape this
|
|
115
|
+
* version does not recognize, a damaged import) is undefined — never a guess.
|
|
116
|
+
*/
|
|
117
|
+
export function readInboundSource(metadata: unknown): InboundSource | undefined {
|
|
118
|
+
if (!metadata || typeof metadata !== 'object') return undefined;
|
|
119
|
+
const raw = (metadata as Record<string, unknown>)[INBOUND_SOURCE_KEY];
|
|
120
|
+
if (!raw || typeof raw !== 'object' || Array.isArray(raw)) return undefined;
|
|
121
|
+
const s = raw as Record<string, unknown>;
|
|
122
|
+
if (typeof s.acceptedAt !== 'number' || !Number.isFinite(s.acceptedAt)) return undefined;
|
|
123
|
+
if (s.kind === 'surface') {
|
|
124
|
+
return isText(s.surface) ? (s as unknown as InboundSurfaceSource) : undefined;
|
|
125
|
+
}
|
|
126
|
+
const effectFlags = optionalTrue(s.coalesced) && optionalTrue(s.deferred) && optionalTrue(s.materialized);
|
|
127
|
+
if (!isText(s.serverId) || !isText(s.binding) || !effectFlags) return undefined;
|
|
128
|
+
if (!optionalText(s.eventId) || !optionalText(s.sourceTimestamp)) return undefined;
|
|
129
|
+
if (s.kind === 'channel') {
|
|
130
|
+
if (s.lane !== 'channels/incoming' && s.lane !== 'push/event') return undefined;
|
|
131
|
+
if (!isText(s.channelId)) return undefined;
|
|
132
|
+
for (const field of ['threadId', 'messageId', 'label', 'replyTo'] as const) {
|
|
133
|
+
if (!optionalText(s[field])) return undefined;
|
|
134
|
+
}
|
|
135
|
+
return s as unknown as InboundChannelSource;
|
|
136
|
+
}
|
|
137
|
+
if (s.kind === 'unscoped') {
|
|
138
|
+
return s.lane === 'push/event' ? (s as unknown as InboundUnscopedSource) : undefined;
|
|
139
|
+
}
|
|
140
|
+
return undefined;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* The conversation an item belongs to, as a comparable key: server + channel
|
|
145
|
+
* + thread for a channel item, the surface for console input. Undefined for an
|
|
146
|
+
* unscoped push, which belongs to no conversation. The parts are server-chosen
|
|
147
|
+
* strings, so they are encoded as a JSON array, never joined with a separator
|
|
148
|
+
* one of them could contain: two keys are equal only for the same parts.
|
|
149
|
+
*/
|
|
150
|
+
export function conversationKey(source: InboundSource): string | undefined {
|
|
151
|
+
if (source.kind === 'channel') {
|
|
152
|
+
return JSON.stringify(['channel', source.serverId, source.channelId, source.threadId ?? null]);
|
|
153
|
+
}
|
|
154
|
+
if (source.kind === 'surface') return JSON.stringify(['surface', source.surface]);
|
|
155
|
+
return undefined;
|
|
156
|
+
}
|
package/src/mcpl/index.ts
CHANGED
|
@@ -106,9 +106,22 @@ export {
|
|
|
106
106
|
} from './errors.js';
|
|
107
107
|
|
|
108
108
|
// Server connection and registry
|
|
109
|
-
export { McplServerConnection } from './server-connection.js';
|
|
109
|
+
export { McplServerConnection, McplRequestError, McplProtocolVersionError, McplUnreapedLaunchError } from './server-connection.js';
|
|
110
110
|
export type { McplConnectionCloseInfo } from './server-connection.js';
|
|
111
111
|
export type { TransportCloseInfo } from './transport.js';
|
|
112
|
+
export { ModernMcpConnection } from './modern-connection.js';
|
|
113
|
+
export type { ModernToolCallResult } from './modern-connection.js';
|
|
114
|
+
export {
|
|
115
|
+
LEGACY_MCP_PROTOCOL_VERSION,
|
|
116
|
+
MODERN_MCP_PROTOCOL_VERSION,
|
|
117
|
+
MAX_TIMER_MS,
|
|
118
|
+
mcplPolicyGrants,
|
|
119
|
+
resolveServerBinding,
|
|
120
|
+
serverConfigProblems,
|
|
121
|
+
serverConfigWarnings,
|
|
122
|
+
checkServerConfig,
|
|
123
|
+
} from './protocol-family.js';
|
|
124
|
+
export type { McpProtocolFamily, McpTransportKind, ServerBinding } from './protocol-family.js';
|
|
112
125
|
export { McplServerRegistry, type McplCapabilityQuery } from './server-registry.js';
|
|
113
126
|
|
|
114
127
|
// Feature set management (permission layer)
|
|
@@ -159,6 +172,15 @@ export { InferenceRouter } from './inference-router.js';
|
|
|
159
172
|
// Channel registry (channel lifecycle, incoming messages, synthesized tools)
|
|
160
173
|
export { ChannelRegistry } from './channel-registry.js';
|
|
161
174
|
|
|
175
|
+
// Inbound source envelope: where each accepted item came from, stamped once
|
|
176
|
+
export { INBOUND_SOURCE_KEY, readInboundSource, conversationKey } from './inbound-source.js';
|
|
177
|
+
export type {
|
|
178
|
+
InboundSource,
|
|
179
|
+
InboundChannelSource,
|
|
180
|
+
InboundUnscopedSource,
|
|
181
|
+
InboundSurfaceSource,
|
|
182
|
+
} from './inbound-source.js';
|
|
183
|
+
|
|
162
184
|
// Per-channel conversation routing (fork-per-channel agents)
|
|
163
185
|
/** @deprecated Per-channel conversation routing is deprecated and will be removed (anima-research/agent-framework#235). */
|
|
164
186
|
export { ConversationRouter, DEFAULT_CLOSURE_PROMPT } from './conversation-router.js';
|
|
@@ -8,7 +8,14 @@
|
|
|
8
8
|
* Spec reference: Section 11 (Server-Initiated Inference).
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
-
import type {
|
|
11
|
+
import type {
|
|
12
|
+
Membrane,
|
|
13
|
+
ContentBlock,
|
|
14
|
+
NormalizedRequest,
|
|
15
|
+
NormalizedResponse,
|
|
16
|
+
StopReason,
|
|
17
|
+
ToolCall,
|
|
18
|
+
} from '@animalabs/membrane';
|
|
12
19
|
|
|
13
20
|
import type {
|
|
14
21
|
McplInferenceRequestParams,
|
|
@@ -30,6 +37,9 @@ interface Responder {
|
|
|
30
37
|
respondError(code: number, message: string, data?: unknown): void;
|
|
31
38
|
/** The JSON-RPC request ID, used for streaming chunk correlation. */
|
|
32
39
|
requestId?: string | number;
|
|
40
|
+
/** Sends a streamed chunk on the transport the request came on, as its
|
|
41
|
+
* answer is sent. */
|
|
42
|
+
sendChunk?(params: InferenceChunkParams): void;
|
|
33
43
|
}
|
|
34
44
|
|
|
35
45
|
// ============================================================================
|
|
@@ -60,6 +70,100 @@ function wildcardMatch(pattern: string, name: string): boolean {
|
|
|
60
70
|
return true;
|
|
61
71
|
}
|
|
62
72
|
|
|
73
|
+
// ============================================================================
|
|
74
|
+
// Results
|
|
75
|
+
// ============================================================================
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* The inference/request result for a completed inference, the same for both
|
|
79
|
+
* modes: the response's text, the model that served it, why it stopped, and
|
|
80
|
+
* its usage.
|
|
81
|
+
*
|
|
82
|
+
* A response MCPL can't report as a completion throws, and is answered with
|
|
83
|
+
* the error: one the provider ended with an error, one where the model wrote a
|
|
84
|
+
* tool call, since inference/request offers the model none, and one with a
|
|
85
|
+
* stop reason FinishReason has no value for (see finishReasonFor).
|
|
86
|
+
*/
|
|
87
|
+
function resultFrom(response: NormalizedResponse, routedModel: string): McplInferenceRequestResult {
|
|
88
|
+
// A provider can end an inference with finish_reason 'error' and no error
|
|
89
|
+
// object. membrane 0.5.87's OpenAI-style adapters fail a stream on a frame
|
|
90
|
+
// that carries one, as OpenRouter's mid-stream error does, but pass the token
|
|
91
|
+
// alone through, and membrane, having no stop reason for it, normalizes it
|
|
92
|
+
// to end_turn and keeps it as providerReason.
|
|
93
|
+
if (response.details.stop.providerReason === 'error') {
|
|
94
|
+
throw new Error("The provider ended the inference with an error (finish_reason 'error')");
|
|
95
|
+
}
|
|
96
|
+
// membrane's yielding stream lists a native tool call in toolCalls only
|
|
97
|
+
// when the stop was tool_use, so a tool_use block cut off by another stop is
|
|
98
|
+
// only in the content. membrane's complete() lists every tool_use block in
|
|
99
|
+
// toolCalls, whatever the stop.
|
|
100
|
+
const toolUses = response.content.filter((b: ContentBlock): b is ContentBlock & { type: 'tool_use' } => b.type === 'tool_use');
|
|
101
|
+
if (response.toolCalls.length > 0 || toolUses.length > 0) {
|
|
102
|
+
throw toolCallError(response.toolCalls.length > 0 ? response.toolCalls : toolUses);
|
|
103
|
+
}
|
|
104
|
+
// In XML tool mode membrane reads tool calls out of the text. Markup it
|
|
105
|
+
// reads no call from still shows in how the output ended: with a tool-call
|
|
106
|
+
// block still open (a call cut off at max_tokens, or an opening tag written
|
|
107
|
+
// in prose), or at `</function_calls>`, the stop sequence XML tool mode adds
|
|
108
|
+
// so that it can run calls (inference/request asks for no stop sequence of
|
|
109
|
+
// its own). Either way the markup is in the text.
|
|
110
|
+
if (response.details.stop.unclosedToolBlock) {
|
|
111
|
+
throw new Error("The model's output ended with a tool-call block still open, and inference/request offers no tools");
|
|
112
|
+
}
|
|
113
|
+
if (response.details.stop.triggeredSequence === '</function_calls>') {
|
|
114
|
+
throw new Error('The model wrote tool-call markup, and inference/request offers no tools');
|
|
115
|
+
}
|
|
116
|
+
return {
|
|
117
|
+
content: response.content
|
|
118
|
+
.filter((b: ContentBlock): b is ContentBlock & { type: 'text' } => b.type === 'text')
|
|
119
|
+
.map((b) => b.text)
|
|
120
|
+
.join(''),
|
|
121
|
+
// Spec §11.3: the actual model used, which can differ from the routed one
|
|
122
|
+
// where routing or fallback applies. When membrane names none, the routed
|
|
123
|
+
// model is the only one there is to report.
|
|
124
|
+
model: actualModelOf(response) ?? routedModel,
|
|
125
|
+
finishReason: finishReasonFor(response.stopReason),
|
|
126
|
+
usage: {
|
|
127
|
+
inputTokens: response.usage.inputTokens,
|
|
128
|
+
outputTokens: response.usage.outputTokens,
|
|
129
|
+
},
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* The model membrane says served the response, or undefined when it names
|
|
135
|
+
* none. membrane's type says it always names one, but some of its adapters
|
|
136
|
+
* pass the provider's own value through as it is, which can be empty.
|
|
137
|
+
*/
|
|
138
|
+
function actualModelOf(response: NormalizedResponse): string | undefined {
|
|
139
|
+
return response.details.model.actual || undefined;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* MCPL's finishReason for membrane's stop reason. Spec §11.3 closes
|
|
144
|
+
* FinishReason at these three, so any other stop throws: `end_turn` for a
|
|
145
|
+
* refusal, or for a turn membrane's resumption guard ended (`no_progress`,
|
|
146
|
+
* `round_limit`), would tell the server the model had finished.
|
|
147
|
+
*/
|
|
148
|
+
function finishReasonFor(stopReason: StopReason): McplInferenceRequestResult['finishReason'] {
|
|
149
|
+
switch (stopReason) {
|
|
150
|
+
case 'end_turn':
|
|
151
|
+
case 'max_tokens':
|
|
152
|
+
case 'stop_sequence':
|
|
153
|
+
return stopReason;
|
|
154
|
+
default:
|
|
155
|
+
throw new Error(
|
|
156
|
+
`The inference ended with stop reason '${stopReason}', for which inference/request has no finishReason`,
|
|
157
|
+
);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/** The error for a model that called a tool, which inference/request doesn't offer. */
|
|
162
|
+
function toolCallError(calls: Array<Pick<ToolCall, 'name'>>): Error {
|
|
163
|
+
const names = calls.map((call) => call.name).join(', ');
|
|
164
|
+
return new Error(`The model called a tool (${names}), and inference/request offers none`);
|
|
165
|
+
}
|
|
166
|
+
|
|
63
167
|
// ============================================================================
|
|
64
168
|
// Constants
|
|
65
169
|
// ============================================================================
|
|
@@ -77,7 +181,6 @@ export class InferenceRouter {
|
|
|
77
181
|
private featureSetManager: FeatureSetManager;
|
|
78
182
|
private routingPolicy: InferenceRoutingPolicy | null;
|
|
79
183
|
private emitTraceFn: (event: { type: string; [key: string]: unknown }) => void;
|
|
80
|
-
private sendChunkFn?: (serverId: string, params: InferenceChunkParams) => void;
|
|
81
184
|
|
|
82
185
|
constructor(
|
|
83
186
|
membrane: Membrane,
|
|
@@ -85,14 +188,12 @@ export class InferenceRouter {
|
|
|
85
188
|
featureSetManager: FeatureSetManager,
|
|
86
189
|
routingPolicy: InferenceRoutingPolicy | null,
|
|
87
190
|
emitTraceFn: (event: { type: string; [key: string]: unknown }) => void,
|
|
88
|
-
sendChunkFn?: (serverId: string, params: InferenceChunkParams) => void,
|
|
89
191
|
) {
|
|
90
192
|
this.membrane = membrane;
|
|
91
193
|
this.hookOrchestrator = hookOrchestrator;
|
|
92
194
|
this.featureSetManager = featureSetManager;
|
|
93
195
|
this.routingPolicy = routingPolicy;
|
|
94
196
|
this.emitTraceFn = emitTraceFn;
|
|
95
|
-
this.sendChunkFn = sendChunkFn;
|
|
96
197
|
}
|
|
97
198
|
|
|
98
199
|
/**
|
|
@@ -101,9 +202,10 @@ export class InferenceRouter {
|
|
|
101
202
|
* 1. Validate feature set
|
|
102
203
|
* 2. Check loop prevention (reject if inside a hook)
|
|
103
204
|
* 3. Resolve model from routing policy
|
|
104
|
-
* 4. Build membrane request
|
|
105
|
-
* 5.
|
|
106
|
-
* 6.
|
|
205
|
+
* 4. Build membrane request
|
|
206
|
+
* 5. Run inference, streaming its visible text as chunks when asked
|
|
207
|
+
* 6. Answer with the result, or with the error for any ending that isn't
|
|
208
|
+
* a completion
|
|
107
209
|
*/
|
|
108
210
|
async handleInferenceRequest(
|
|
109
211
|
serverId: string,
|
|
@@ -161,49 +263,47 @@ export class InferenceRouter {
|
|
|
161
263
|
},
|
|
162
264
|
};
|
|
163
265
|
|
|
266
|
+
// Streaming needs a way to send chunks and an id to tag them with;
|
|
267
|
+
// without either, the request is answered whole.
|
|
268
|
+
const sendChunk = params.stream ? responder.sendChunk?.bind(responder) : undefined;
|
|
269
|
+
const chunkRequestId = sendChunk ? responder.requestId : undefined;
|
|
270
|
+
const streamed = chunkRequestId != null;
|
|
271
|
+
|
|
164
272
|
try {
|
|
165
|
-
// 5. Run inference
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
await this.
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
// Emit trace: inference complete
|
|
190
|
-
this.emitTraceFn({
|
|
191
|
-
type: 'mcpl:inference_complete',
|
|
192
|
-
serverId,
|
|
193
|
-
model,
|
|
194
|
-
inputTokens: result.usage.inputTokens,
|
|
195
|
-
outputTokens: result.usage.outputTokens,
|
|
196
|
-
});
|
|
197
|
-
|
|
198
|
-
responder.respond(result);
|
|
199
|
-
}
|
|
273
|
+
// 5. Run inference. Both modes end in membrane's response, and one
|
|
274
|
+
// builder makes the result from it.
|
|
275
|
+
const response = chunkRequestId != null
|
|
276
|
+
? await this.streamResponse(request, chunkRequestId, sendChunk!)
|
|
277
|
+
: await this.membrane.complete(request);
|
|
278
|
+
|
|
279
|
+
// 6. Answer
|
|
280
|
+
const result = resultFrom(response, model);
|
|
281
|
+
const actualModel = actualModelOf(response);
|
|
282
|
+
|
|
283
|
+
this.emitTraceFn({
|
|
284
|
+
type: 'mcpl:inference_complete',
|
|
285
|
+
serverId,
|
|
286
|
+
// The routed model, as inference_start has it. actualModel is the one
|
|
287
|
+
// the result reports, left out when membrane named none.
|
|
288
|
+
model,
|
|
289
|
+
...(actualModel !== undefined ? { actualModel } : {}),
|
|
290
|
+
inputTokens: result.usage.inputTokens,
|
|
291
|
+
outputTokens: result.usage.outputTokens,
|
|
292
|
+
streamed,
|
|
293
|
+
});
|
|
294
|
+
|
|
295
|
+
responder.respond(result);
|
|
200
296
|
} catch (err) {
|
|
201
|
-
//
|
|
297
|
+
// Every ending that isn't a completion lands here, in either mode:
|
|
298
|
+
// membrane's error, a stream that stopped early, a tool call, or a
|
|
299
|
+
// stop FinishReason can't name. The answer is the JSON-RPC error, never
|
|
300
|
+
// a result carrying what arrived.
|
|
202
301
|
this.emitTraceFn({
|
|
203
302
|
type: 'mcpl:inference_fail',
|
|
204
303
|
serverId,
|
|
205
304
|
model,
|
|
206
305
|
error: err instanceof Error ? err.message : String(err),
|
|
306
|
+
streamed,
|
|
207
307
|
});
|
|
208
308
|
|
|
209
309
|
responder.respondError(
|
|
@@ -263,73 +363,49 @@ export class InferenceRouter {
|
|
|
263
363
|
// ==========================================================================
|
|
264
364
|
|
|
265
365
|
/**
|
|
266
|
-
*
|
|
366
|
+
* Run the inference as a stream, sending each visible text delta to the
|
|
367
|
+
* server as an inference/chunk, and return membrane's response once the
|
|
368
|
+
* stream completes.
|
|
267
369
|
*
|
|
268
|
-
*
|
|
269
|
-
* membrane
|
|
370
|
+
* Every other ending throws, so the request is answered with the error
|
|
371
|
+
* rather than with the text that arrived: membrane's `error`, an `aborted`
|
|
372
|
+
* stream, a stream that ends with no terminal event, and `tool-calls`. A
|
|
373
|
+
* stream that has yielded tool calls waits for their results until it is
|
|
374
|
+
* cancelled, and inference/request offers the model no tools. Leaving the
|
|
375
|
+
* loop by return or throw calls the stream's return(), which cancels it,
|
|
376
|
+
* so nothing keeps running once the request is answered.
|
|
270
377
|
*/
|
|
271
|
-
private async
|
|
272
|
-
serverId: string,
|
|
273
|
-
model: string,
|
|
378
|
+
private async streamResponse(
|
|
274
379
|
request: NormalizedRequest,
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
// Check if streamYielding is available on the membrane instance.
|
|
280
|
-
// We use streamYielding to iterate events and forward text deltas as chunks.
|
|
380
|
+
requestId: string | number,
|
|
381
|
+
sendChunk: (params: InferenceChunkParams) => void,
|
|
382
|
+
): Promise<NormalizedResponse> {
|
|
281
383
|
const stream = this.membrane.streamYielding(request);
|
|
282
|
-
let
|
|
283
|
-
let fullContent = '';
|
|
384
|
+
let index = 0;
|
|
284
385
|
|
|
285
386
|
for await (const event of stream) {
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
387
|
+
switch (event.type) {
|
|
388
|
+
case 'tokens':
|
|
389
|
+
// Only text membrane marks visible is sent, which leaves out
|
|
390
|
+
// thinking and tool-call markup. The result's content is the
|
|
391
|
+
// response's text blocks, which membrane parses on its own, so in
|
|
392
|
+
// XML tool mode the chunks can miss text the content holds: prose
|
|
393
|
+
// naming a tag the stream parser opens a block for, or a thinking
|
|
394
|
+
// block cut off before its close tag.
|
|
395
|
+
if (event.meta.visible) {
|
|
396
|
+
sendChunk({ requestId, index: index++, delta: event.content });
|
|
397
|
+
}
|
|
398
|
+
break;
|
|
399
|
+
case 'tool-calls':
|
|
400
|
+
throw toolCallError(event.calls);
|
|
401
|
+
case 'complete':
|
|
402
|
+
return event.response;
|
|
403
|
+
case 'error':
|
|
404
|
+
throw event.error;
|
|
405
|
+
case 'aborted':
|
|
406
|
+
throw new Error(`The inference stopped before it finished (${event.reason})`);
|
|
294
407
|
}
|
|
295
408
|
}
|
|
296
|
-
|
|
297
|
-
// After streaming completes, send the final result
|
|
298
|
-
const result: McplInferenceRequestResult = {
|
|
299
|
-
content: fullContent,
|
|
300
|
-
model,
|
|
301
|
-
finishReason: 'end_turn',
|
|
302
|
-
usage: { inputTokens: 0, outputTokens: 0 },
|
|
303
|
-
};
|
|
304
|
-
|
|
305
|
-
this.emitTraceFn({
|
|
306
|
-
type: 'mcpl:inference_complete',
|
|
307
|
-
serverId,
|
|
308
|
-
model,
|
|
309
|
-
streamed: true,
|
|
310
|
-
});
|
|
311
|
-
|
|
312
|
-
responder.respond(result);
|
|
313
|
-
}
|
|
314
|
-
|
|
315
|
-
// ==========================================================================
|
|
316
|
-
// Private: Helpers
|
|
317
|
-
// ==========================================================================
|
|
318
|
-
|
|
319
|
-
/**
|
|
320
|
-
* Map membrane's stopReason string to MCPL's finishReason enum.
|
|
321
|
-
*/
|
|
322
|
-
private mapStopReason(
|
|
323
|
-
stopReason: string | undefined,
|
|
324
|
-
): 'end_turn' | 'max_tokens' | 'stop_sequence' {
|
|
325
|
-
switch (stopReason) {
|
|
326
|
-
case 'max_tokens':
|
|
327
|
-
return 'max_tokens';
|
|
328
|
-
case 'stop_sequence':
|
|
329
|
-
return 'stop_sequence';
|
|
330
|
-
case 'end_turn':
|
|
331
|
-
default:
|
|
332
|
-
return 'end_turn';
|
|
333
|
-
}
|
|
409
|
+
throw new Error('The inference stream ended without a result');
|
|
334
410
|
}
|
|
335
411
|
}
|
package/src/mcpl/log-value.ts
CHANGED
|
@@ -45,6 +45,16 @@ export function logValue(value: unknown): string {
|
|
|
45
45
|
return printed(textOf(value), FIELD);
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
+
/**
|
|
49
|
+
* `logValue` of a value a server chose whose text may hold a credential:
|
|
50
|
+
* its text, as logValue reads it (a JSON value as its JSON text), with
|
|
51
|
+
* `redact` applied, then printed as logValue prints a field. A value whose
|
|
52
|
+
* text holds nothing `redact` replaces prints exactly as logValue prints it.
|
|
53
|
+
*/
|
|
54
|
+
export function logValueRedacted(value: unknown, redact: (text: string) => string): string {
|
|
55
|
+
return printed(redact(textOf(value)), FIELD);
|
|
56
|
+
}
|
|
57
|
+
|
|
48
58
|
/**
|
|
49
59
|
* The host's own message, as the free text that ends a log line after its
|
|
50
60
|
* fields: `reason=coalesce-invalid field=payload.content: "content must be an
|