@animalabs/agent-framework 0.23.3 → 0.24.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +212 -42
- package/dist/src/agent.d.ts +65 -9
- package/dist/src/agent.d.ts.map +1 -1
- package/dist/src/agent.js +98 -12
- package/dist/src/agent.js.map +1 -1
- package/dist/src/api/server.d.ts.map +1 -1
- package/dist/src/api/server.js +14 -12
- package/dist/src/api/server.js.map +1 -1
- package/dist/src/clock-rows.d.ts +115 -0
- package/dist/src/clock-rows.d.ts.map +1 -0
- package/dist/src/clock-rows.js +222 -0
- package/dist/src/clock-rows.js.map +1 -0
- package/dist/src/code-execution/engine.d.ts +177 -0
- package/dist/src/code-execution/engine.d.ts.map +1 -0
- package/dist/src/code-execution/engine.js +494 -0
- package/dist/src/code-execution/engine.js.map +1 -0
- package/dist/src/code-execution/index.d.ts +5 -10
- package/dist/src/code-execution/index.d.ts.map +1 -1
- package/dist/src/code-execution/index.js +5 -9
- package/dist/src/code-execution/index.js.map +1 -1
- package/dist/src/code-execution/isolate/calls.d.ts +114 -0
- package/dist/src/code-execution/isolate/calls.d.ts.map +1 -0
- package/dist/src/code-execution/isolate/calls.js +145 -0
- package/dist/src/code-execution/isolate/calls.js.map +1 -0
- package/dist/src/code-execution/isolate/child-entry.d.ts +2 -0
- package/dist/src/code-execution/isolate/child-entry.d.ts.map +1 -0
- package/dist/src/code-execution/isolate/child-entry.js +5 -0
- package/dist/src/code-execution/isolate/child-entry.js.map +1 -0
- package/dist/src/code-execution/isolate/child-main.d.ts +26 -0
- package/dist/src/code-execution/isolate/child-main.d.ts.map +1 -0
- package/dist/src/code-execution/isolate/child-main.js +132 -0
- package/dist/src/code-execution/isolate/child-main.js.map +1 -0
- package/dist/src/code-execution/isolate/child.d.ts +44 -0
- package/dist/src/code-execution/isolate/child.d.ts.map +1 -0
- package/dist/src/code-execution/isolate/child.js +315 -0
- package/dist/src/code-execution/isolate/child.js.map +1 -0
- package/dist/src/code-execution/isolate/frames.d.ts +80 -0
- package/dist/src/code-execution/isolate/frames.d.ts.map +1 -0
- package/dist/src/code-execution/isolate/frames.js +210 -0
- package/dist/src/code-execution/isolate/frames.js.map +1 -0
- package/dist/src/code-execution/isolate/output.d.ts +68 -0
- package/dist/src/code-execution/isolate/output.d.ts.map +1 -0
- package/dist/src/code-execution/isolate/output.js +143 -0
- package/dist/src/code-execution/isolate/output.js.map +1 -0
- package/dist/src/code-execution/isolate/prelude.d.ts +109 -0
- package/dist/src/code-execution/isolate/prelude.d.ts.map +1 -0
- package/dist/src/code-execution/isolate/prelude.js +401 -0
- package/dist/src/code-execution/isolate/prelude.js.map +1 -0
- package/dist/src/code-execution/isolate/protocol.d.ts +151 -0
- package/dist/src/code-execution/isolate/protocol.d.ts.map +1 -0
- package/dist/src/code-execution/isolate/protocol.js +150 -0
- package/dist/src/code-execution/isolate/protocol.js.map +1 -0
- package/dist/src/code-execution/isolate/render.d.ts +57 -0
- package/dist/src/code-execution/isolate/render.d.ts.map +1 -0
- package/dist/src/code-execution/isolate/render.js +214 -0
- package/dist/src/code-execution/isolate/render.js.map +1 -0
- package/dist/src/code-execution/isolate/runner.d.ts +250 -0
- package/dist/src/code-execution/isolate/runner.d.ts.map +1 -0
- package/dist/src/code-execution/isolate/runner.js +854 -0
- package/dist/src/code-execution/isolate/runner.js.map +1 -0
- package/dist/src/code-execution/isolate/scripts.d.ts +175 -0
- package/dist/src/code-execution/isolate/scripts.d.ts.map +1 -0
- package/dist/src/code-execution/isolate/scripts.js +357 -0
- package/dist/src/code-execution/isolate/scripts.js.map +1 -0
- package/dist/src/code-execution/quickjs.wasm +0 -0
- package/dist/src/code-execution/tool-definition.d.ts +93 -43
- package/dist/src/code-execution/tool-definition.d.ts.map +1 -1
- package/dist/src/code-execution/tool-definition.js +176 -142
- package/dist/src/code-execution/tool-definition.js.map +1 -1
- package/dist/src/deadline-timer.d.ts +3 -0
- package/dist/src/deadline-timer.d.ts.map +1 -1
- package/dist/src/deadline-timer.js +1 -1
- package/dist/src/deadline-timer.js.map +1 -1
- package/dist/src/framework.d.ts +1120 -457
- package/dist/src/framework.d.ts.map +1 -1
- package/dist/src/framework.js +4635 -2505
- package/dist/src/framework.js.map +1 -1
- package/dist/src/gate/event-gate.d.ts +28 -4
- package/dist/src/gate/event-gate.d.ts.map +1 -1
- package/dist/src/gate/event-gate.js +89 -13
- package/dist/src/gate/event-gate.js.map +1 -1
- package/dist/src/held-writes.d.ts +16 -3
- package/dist/src/held-writes.d.ts.map +1 -1
- package/dist/src/held-writes.js +16 -3
- package/dist/src/held-writes.js.map +1 -1
- package/dist/src/index.d.ts +8 -6
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +10 -8
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcpl/channel-registry.d.ts +483 -115
- package/dist/src/mcpl/channel-registry.d.ts.map +1 -1
- package/dist/src/mcpl/channel-registry.js +1735 -425
- package/dist/src/mcpl/channel-registry.js.map +1 -1
- package/dist/src/mcpl/conversation-router.d.ts +19 -39
- package/dist/src/mcpl/conversation-router.d.ts.map +1 -1
- package/dist/src/mcpl/conversation-router.js +27 -59
- package/dist/src/mcpl/conversation-router.js.map +1 -1
- package/dist/src/mcpl/convert-block.d.ts.map +1 -1
- package/dist/src/mcpl/convert-block.js +9 -5
- package/dist/src/mcpl/convert-block.js.map +1 -1
- package/dist/src/mcpl/inbound-source.d.ts +50 -0
- package/dist/src/mcpl/inbound-source.d.ts.map +1 -1
- package/dist/src/mcpl/inbound-source.js +130 -0
- package/dist/src/mcpl/inbound-source.js.map +1 -1
- package/dist/src/mcpl/index.d.ts +2 -1
- package/dist/src/mcpl/index.d.ts.map +1 -1
- package/dist/src/mcpl/index.js +3 -2
- package/dist/src/mcpl/index.js.map +1 -1
- package/dist/src/mcpl/log-value.d.ts +6 -0
- package/dist/src/mcpl/log-value.d.ts.map +1 -1
- package/dist/src/mcpl/log-value.js +8 -0
- package/dist/src/mcpl/log-value.js.map +1 -1
- package/dist/src/mcpl/modern-connection.d.ts +15 -6
- package/dist/src/mcpl/modern-connection.d.ts.map +1 -1
- package/dist/src/mcpl/modern-connection.js +168 -53
- package/dist/src/mcpl/modern-connection.js.map +1 -1
- package/dist/src/mcpl/prose-grammar.d.ts +4 -5
- package/dist/src/mcpl/prose-grammar.d.ts.map +1 -1
- package/dist/src/mcpl/prose-grammar.js +4 -5
- package/dist/src/mcpl/prose-grammar.js.map +1 -1
- package/dist/src/mcpl/protocol-family.d.ts +97 -10
- package/dist/src/mcpl/protocol-family.d.ts.map +1 -1
- package/dist/src/mcpl/protocol-family.js +174 -17
- package/dist/src/mcpl/protocol-family.js.map +1 -1
- package/dist/src/mcpl/push-coalescer.d.ts +132 -14
- package/dist/src/mcpl/push-coalescer.d.ts.map +1 -1
- package/dist/src/mcpl/push-coalescer.js +227 -50
- package/dist/src/mcpl/push-coalescer.js.map +1 -1
- package/dist/src/mcpl/push-handler.d.ts +9 -20
- package/dist/src/mcpl/push-handler.d.ts.map +1 -1
- package/dist/src/mcpl/push-handler.js +7 -49
- package/dist/src/mcpl/push-handler.js.map +1 -1
- package/dist/src/mcpl/reference-fetcher.d.ts +2 -2
- package/dist/src/mcpl/reference-fetcher.d.ts.map +1 -1
- package/dist/src/mcpl/reference-fetcher.js +4 -4
- package/dist/src/mcpl/reference-fetcher.js.map +1 -1
- package/dist/src/mcpl/server-connection.d.ts +50 -21
- package/dist/src/mcpl/server-connection.d.ts.map +1 -1
- package/dist/src/mcpl/server-connection.js +158 -74
- package/dist/src/mcpl/server-connection.js.map +1 -1
- package/dist/src/mcpl/tags.d.ts +24 -0
- package/dist/src/mcpl/tags.d.ts.map +1 -1
- package/dist/src/mcpl/tags.js +33 -0
- package/dist/src/mcpl/tags.js.map +1 -1
- package/dist/src/mcpl/tool-result-normalize.d.ts +2 -1
- package/dist/src/mcpl/tool-result-normalize.d.ts.map +1 -1
- package/dist/src/mcpl/tool-result-normalize.js.map +1 -1
- package/dist/src/mcpl/transport.d.ts +55 -7
- package/dist/src/mcpl/transport.d.ts.map +1 -1
- package/dist/src/mcpl/transport.js +163 -34
- package/dist/src/mcpl/transport.js.map +1 -1
- package/dist/src/mcpl/types.d.ts +22 -6
- package/dist/src/mcpl/types.d.ts.map +1 -1
- package/dist/src/mcpl/types.js.map +1 -1
- package/dist/src/module-registry.d.ts +4 -2
- package/dist/src/module-registry.d.ts.map +1 -1
- package/dist/src/module-registry.js +100 -13
- package/dist/src/module-registry.js.map +1 -1
- package/dist/src/modules/discord/index.d.ts.map +1 -1
- package/dist/src/modules/discord/index.js +8 -13
- package/dist/src/modules/discord/index.js.map +1 -1
- package/dist/src/modules/history/index.d.ts.map +1 -1
- package/dist/src/modules/history/index.js +27 -4
- package/dist/src/modules/history/index.js.map +1 -1
- package/dist/src/modules/history/semantic.d.ts +15 -3
- package/dist/src/modules/history/semantic.d.ts.map +1 -1
- package/dist/src/modules/history/semantic.js +27 -5
- package/dist/src/modules/history/semantic.js.map +1 -1
- package/dist/src/modules/index.d.ts +1 -1
- package/dist/src/modules/index.d.ts.map +1 -1
- package/dist/src/modules/index.js.map +1 -1
- package/dist/src/modules/unknown-tool.d.ts +4 -1
- package/dist/src/modules/unknown-tool.d.ts.map +1 -1
- package/dist/src/modules/unknown-tool.js +4 -1
- package/dist/src/modules/unknown-tool.js.map +1 -1
- package/dist/src/modules/workspace/branch-intent.d.ts +3 -1
- package/dist/src/modules/workspace/branch-intent.d.ts.map +1 -1
- package/dist/src/modules/workspace/branch-intent.js +3 -1
- package/dist/src/modules/workspace/branch-intent.js.map +1 -1
- package/dist/src/modules/workspace/edit-plan.d.ts +265 -0
- package/dist/src/modules/workspace/edit-plan.d.ts.map +1 -0
- package/dist/src/modules/workspace/edit-plan.js +794 -0
- package/dist/src/modules/workspace/edit-plan.js.map +1 -0
- package/dist/src/modules/workspace/edit-text.d.ts +117 -0
- package/dist/src/modules/workspace/edit-text.d.ts.map +1 -0
- package/dist/src/modules/workspace/edit-text.js +584 -0
- package/dist/src/modules/workspace/edit-text.js.map +1 -0
- package/dist/src/modules/workspace/effects.d.ts +5 -4
- package/dist/src/modules/workspace/effects.d.ts.map +1 -1
- package/dist/src/modules/workspace/effects.js +78 -25
- package/dist/src/modules/workspace/effects.js.map +1 -1
- package/dist/src/modules/workspace/index.d.ts +493 -62
- package/dist/src/modules/workspace/index.d.ts.map +1 -1
- package/dist/src/modules/workspace/index.js +2216 -652
- package/dist/src/modules/workspace/index.js.map +1 -1
- package/dist/src/modules/workspace/observe.d.ts +213 -38
- package/dist/src/modules/workspace/observe.d.ts.map +1 -1
- package/dist/src/modules/workspace/observe.js +416 -36
- package/dist/src/modules/workspace/observe.js.map +1 -1
- package/dist/src/modules/workspace/reconcile.d.ts.map +1 -1
- package/dist/src/modules/workspace/reconcile.js +15 -8
- package/dist/src/modules/workspace/reconcile.js.map +1 -1
- package/dist/src/modules/workspace/text.d.ts +32 -0
- package/dist/src/modules/workspace/text.d.ts.map +1 -0
- package/dist/src/modules/workspace/text.js +67 -0
- package/dist/src/modules/workspace/text.js.map +1 -0
- package/dist/src/modules/workspace/types.d.ts +210 -6
- package/dist/src/modules/workspace/types.d.ts.map +1 -1
- package/dist/src/modules/workspace/types.js.map +1 -1
- package/dist/src/modules/workspace/watcher.d.ts +3 -2
- package/dist/src/modules/workspace/watcher.d.ts.map +1 -1
- package/dist/src/modules/workspace/watcher.js.map +1 -1
- package/dist/src/operator-log.d.ts +52 -24
- package/dist/src/operator-log.d.ts.map +1 -1
- package/dist/src/operator-log.js.map +1 -1
- package/dist/src/recovery/discord-awareness-outbox.d.ts +496 -72
- package/dist/src/recovery/discord-awareness-outbox.d.ts.map +1 -1
- package/dist/src/recovery/discord-awareness-outbox.js +1196 -289
- package/dist/src/recovery/discord-awareness-outbox.js.map +1 -1
- package/dist/src/recovery/offline-branch.d.ts +26 -1
- package/dist/src/recovery/offline-branch.d.ts.map +1 -1
- package/dist/src/recovery/offline-branch.js +164 -39
- package/dist/src/recovery/offline-branch.js.map +1 -1
- package/dist/src/recovery/recover-cli.js +23 -4
- package/dist/src/recovery/recover-cli.js.map +1 -1
- package/dist/src/send-tools.d.ts +11 -0
- package/dist/src/send-tools.d.ts.map +1 -0
- package/dist/src/send-tools.js +11 -0
- package/dist/src/send-tools.js.map +1 -0
- package/dist/src/timezone.d.ts +4 -2
- package/dist/src/timezone.d.ts.map +1 -1
- package/dist/src/timezone.js +4 -2
- package/dist/src/timezone.js.map +1 -1
- package/dist/src/tool-image-ledger.d.ts +46 -7
- package/dist/src/tool-image-ledger.d.ts.map +1 -1
- package/dist/src/tool-image-ledger.js +60 -7
- package/dist/src/tool-image-ledger.js.map +1 -1
- package/dist/src/tool-result-guard.d.ts +14 -11
- package/dist/src/tool-result-guard.d.ts.map +1 -1
- package/dist/src/tool-result-guard.js +17 -14
- package/dist/src/tool-result-guard.js.map +1 -1
- package/dist/src/tool-result-history.d.ts +3 -2
- package/dist/src/tool-result-history.d.ts.map +1 -1
- package/dist/src/tool-result-history.js +3 -2
- package/dist/src/tool-result-history.js.map +1 -1
- package/dist/src/tune-out/coordinator.d.ts +21 -0
- package/dist/src/tune-out/coordinator.d.ts.map +1 -1
- package/dist/src/tune-out/coordinator.js +142 -40
- package/dist/src/tune-out/coordinator.js.map +1 -1
- package/dist/src/types/agent.d.ts +31 -6
- package/dist/src/types/agent.d.ts.map +1 -1
- package/dist/src/types/events.d.ts +66 -9
- package/dist/src/types/events.d.ts.map +1 -1
- package/dist/src/types/framework.d.ts +69 -62
- package/dist/src/types/framework.d.ts.map +1 -1
- package/dist/src/types/module.d.ts +40 -8
- package/dist/src/types/module.d.ts.map +1 -1
- package/dist/src/types/trace.d.ts +111 -10
- package/dist/src/types/trace.d.ts.map +1 -1
- package/dist/src/usage/types.d.ts +16 -0
- package/dist/src/usage/types.d.ts.map +1 -1
- package/dist/src/usage/usage-tracker.d.ts +14 -1
- package/dist/src/usage/usage-tracker.d.ts.map +1 -1
- package/dist/src/usage/usage-tracker.js +81 -41
- package/dist/src/usage/usage-tracker.js.map +1 -1
- package/package.json +6 -8
- package/src/agent.ts +99 -12
- package/src/api/server.ts +14 -12
- package/src/clock-rows.ts +302 -0
- package/src/code-execution/engine.ts +595 -0
- package/src/code-execution/index.ts +5 -17
- package/src/code-execution/isolate/calls.ts +199 -0
- package/src/code-execution/isolate/child-entry.ts +5 -0
- package/src/code-execution/isolate/child-main.ts +132 -0
- package/src/code-execution/isolate/child.ts +327 -0
- package/src/code-execution/isolate/frames.ts +209 -0
- package/src/code-execution/isolate/output.ts +161 -0
- package/src/code-execution/isolate/prelude.ts +409 -0
- package/src/code-execution/isolate/protocol.ts +240 -0
- package/src/code-execution/isolate/render.ts +230 -0
- package/src/code-execution/isolate/runner.ts +911 -0
- package/src/code-execution/isolate/scripts.ts +479 -0
- package/src/code-execution/quickjs.wasm +0 -0
- package/src/code-execution/quickjs.wasm.LICENSES +149 -0
- package/src/code-execution/tool-definition.ts +236 -167
- package/src/deadline-timer.ts +1 -1
- package/src/framework.ts +4978 -2671
- package/src/gate/event-gate.ts +79 -17
- package/src/held-writes.ts +17 -3
- package/src/index.ts +32 -22
- package/src/mcpl/channel-registry.ts +1892 -471
- package/src/mcpl/conversation-router.ts +26 -72
- package/src/mcpl/convert-block.ts +9 -5
- package/src/mcpl/inbound-source.ts +131 -0
- package/src/mcpl/index.ts +4 -2
- package/src/mcpl/log-value.ts +9 -0
- package/src/mcpl/modern-connection.ts +162 -53
- package/src/mcpl/prose-grammar.ts +4 -5
- package/src/mcpl/protocol-family.ts +200 -22
- package/src/mcpl/push-coalescer.ts +306 -62
- package/src/mcpl/push-handler.ts +12 -54
- package/src/mcpl/reference-fetcher.ts +4 -4
- package/src/mcpl/server-connection.ts +180 -79
- package/src/mcpl/tags.ts +36 -0
- package/src/mcpl/tool-result-normalize.ts +2 -1
- package/src/mcpl/transport.ts +162 -33
- package/src/mcpl/types.ts +23 -6
- package/src/module-registry.ts +92 -13
- package/src/modules/discord/index.ts +8 -13
- package/src/modules/history/index.ts +25 -3
- package/src/modules/history/semantic.ts +29 -6
- package/src/modules/index.ts +1 -0
- package/src/modules/unknown-tool.ts +4 -1
- package/src/modules/workspace/branch-intent.ts +3 -1
- package/src/modules/workspace/edit-plan.ts +954 -0
- package/src/modules/workspace/edit-text.ts +618 -0
- package/src/modules/workspace/effects.ts +70 -19
- package/src/modules/workspace/index.ts +2293 -650
- package/src/modules/workspace/observe.ts +465 -56
- package/src/modules/workspace/reconcile.ts +14 -7
- package/src/modules/workspace/text.ts +68 -0
- package/src/modules/workspace/types.ts +211 -6
- package/src/modules/workspace/watcher.ts +3 -2
- package/src/operator-log.ts +47 -19
- package/src/recovery/discord-awareness-outbox.ts +1500 -356
- package/src/recovery/offline-branch.ts +189 -55
- package/src/recovery/recover-cli.ts +25 -4
- package/src/send-tools.ts +11 -0
- package/src/timezone.ts +4 -2
- package/src/tool-image-ledger.ts +62 -8
- package/src/tool-result-guard.ts +18 -15
- package/src/tool-result-history.ts +3 -2
- package/src/tune-out/coordinator.ts +166 -45
- package/src/types/agent.ts +32 -6
- package/src/types/events.ts +66 -9
- package/src/types/framework.ts +69 -62
- package/src/types/module.ts +40 -8
- package/src/types/trace.ts +121 -15
- package/src/usage/types.ts +16 -0
- package/src/usage/usage-tracker.ts +86 -43
- package/dist/src/code-execution/py-runner.d.ts +0 -191
- package/dist/src/code-execution/py-runner.d.ts.map +0 -1
- package/dist/src/code-execution/py-runner.js +0 -655
- package/dist/src/code-execution/py-runner.js.map +0 -1
- package/dist/src/code-execution/runtime-py.d.ts +0 -50
- package/dist/src/code-execution/runtime-py.d.ts.map +0 -1
- package/dist/src/code-execution/runtime-py.js +0 -677
- package/dist/src/code-execution/runtime-py.js.map +0 -1
- package/dist/src/mcpl/prose-stream-router.d.ts +0 -88
- package/dist/src/mcpl/prose-stream-router.d.ts.map +0 -1
- package/dist/src/mcpl/prose-stream-router.js +0 -291
- package/dist/src/mcpl/prose-stream-router.js.map +0 -1
- package/src/code-execution/py-runner.ts +0 -791
- package/src/code-execution/runtime-py.ts +0 -677
- package/src/mcpl/prose-stream-router.ts +0 -268
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
import { DENY_BY_DEFAULT, capabilityPatternMatches } from './capability-grant.js';
|
|
26
26
|
import { DEFAULT_EAGER_FETCH_MAX_BYTES, DEFAULT_MAX_TOTAL_BYTES } from './reference-fetcher.js';
|
|
27
27
|
import { DEFAULT_MAX_INPUT_BYTES } from './tool-lifecycle.js';
|
|
28
|
+
import { kindOf } from '../config-checks.js';
|
|
28
29
|
/** The one revision the legacy engine offers and accepts. */
|
|
29
30
|
export const LEGACY_MCP_PROTOCOL_VERSION = '2024-11-05';
|
|
30
31
|
/** The revision the modern engine pins. */
|
|
@@ -108,8 +109,21 @@ export function redactUrl(url) {
|
|
|
108
109
|
* strings (serverCredentialPatterns), so strings of different servers that
|
|
109
110
|
* overlap are both replaced whole. A credential neither the configuration
|
|
110
111
|
* holds nor a dial of it sent, such as another origin's, is outside it, and
|
|
111
|
-
* so are other encodings of the ones it holds. JSON-RPC
|
|
112
|
-
* error a host's own
|
|
112
|
+
* so are other encodings of the ones it holds. A JSON-RPC answer's result
|
|
113
|
+
* passes as it is. No error a host's own call gets, whether thrown, rejected
|
|
114
|
+
* with or in an error answer's data, carries one of the strings above,
|
|
115
|
+
* whoever wrote the words: a server's words are redacted, then bounded,
|
|
116
|
+
* where an error is built from them, the strings in an error answer's data
|
|
117
|
+
* are redacted ({@link redactedData}), and an error a library raised is
|
|
118
|
+
* handed on as its name and its redacted words alone ({@link maskedError}),
|
|
119
|
+
* with a stdio launch failure's code. A failed handshake's stderr tail
|
|
120
|
+
* is redacted from a longer window of the stream, so a credential of up to
|
|
121
|
+
* 14,336 characters that reaches into it is replaced whole
|
|
122
|
+
* (McplTransport.stderrTailRedacted). A close's or a
|
|
123
|
+
* cleanup's failure carries the transports' own words, a child's pid, its
|
|
124
|
+
* server's id and the wait it was given, and passes as built. A
|
|
125
|
+
* connection's events are the framework's records' inputs, and the records
|
|
126
|
+
* redact them.
|
|
113
127
|
*
|
|
114
128
|
* A configuration that can't be read, such as one whose `env` is a getter
|
|
115
129
|
* that throws, says nothing of which strings to replace, so the whole text
|
|
@@ -120,6 +134,8 @@ export function redactUrl(url) {
|
|
|
120
134
|
export function redactServerText(text, config) {
|
|
121
135
|
return serverTextRedactor(config)(text);
|
|
122
136
|
}
|
|
137
|
+
/** The redaction of a configuration that can't be read. */
|
|
138
|
+
const withheld = () => WITHHELD_TEXT;
|
|
123
139
|
/**
|
|
124
140
|
* {@link redactServerText} for one configuration, its strings found and its
|
|
125
141
|
* pattern built once, and again once a dial has sent something new
|
|
@@ -130,7 +146,7 @@ export function redactServerText(text, config) {
|
|
|
130
146
|
export function serverTextRedactor(config) {
|
|
131
147
|
let built = -1;
|
|
132
148
|
let redact;
|
|
133
|
-
|
|
149
|
+
const now = () => {
|
|
134
150
|
const version = dialsSent.get(config)?.version ?? 0;
|
|
135
151
|
if (version !== built) {
|
|
136
152
|
let patterns;
|
|
@@ -138,17 +154,100 @@ export function serverTextRedactor(config) {
|
|
|
138
154
|
patterns = serverCredentialPatterns(config);
|
|
139
155
|
}
|
|
140
156
|
catch {
|
|
141
|
-
return
|
|
157
|
+
return withheld;
|
|
142
158
|
}
|
|
143
159
|
redact = credentialRedactor(patterns);
|
|
144
160
|
built = version;
|
|
145
161
|
}
|
|
146
|
-
return redact
|
|
162
|
+
return redact;
|
|
147
163
|
};
|
|
164
|
+
return Object.assign((text, from) => now()(text, from), { now });
|
|
148
165
|
}
|
|
149
166
|
/** What a redaction gives in place of text when the configuration it
|
|
150
167
|
* redacts with can't be read ({@link redactServerText}). */
|
|
151
168
|
export const WITHHELD_TEXT = "[withheld: the server's configuration couldn't be read to redact this]";
|
|
169
|
+
/** What {@link redactedData} gives in place of data nested deeper than it
|
|
170
|
+
* walks. */
|
|
171
|
+
export const TOO_DEEP_TEXT = '[withheld: nested too deep to redact]';
|
|
172
|
+
/** How deep {@link redactedData} walks. A server's JSON can nest deeper than
|
|
173
|
+
* a recursive walk's stack holds (10,000 levels overflow it), and the walk
|
|
174
|
+
* runs where a throw would leave the request it answers unsettled. */
|
|
175
|
+
const REDACTED_DATA_DEPTH = 64;
|
|
176
|
+
/**
|
|
177
|
+
* The data a server's error answer carries beside its words, with every
|
|
178
|
+
* string in it, an object's keys included, redacted (`redact`, a server's
|
|
179
|
+
* {@link serverTextRedactor}, built once for the walk), so an error handed
|
|
180
|
+
* to a host carries no credential its configuration holds. Arrays and plain
|
|
181
|
+
* objects are walked, to a depth of 64; deeper data is
|
|
182
|
+
* {@link TOO_DEEP_TEXT}. A number goes as its redacted text if its digits,
|
|
183
|
+
* as JavaScript reads the number, hold a credential: a number with more
|
|
184
|
+
* significant digits than a double holds (about 15) has lost its last ones
|
|
185
|
+
* before anything sees it, so a credential sent as such a number isn't
|
|
186
|
+
* matched. A redacted key that comes out the same as another key is
|
|
187
|
+
* numbered, so every entry is kept under a name of its own, and a key the
|
|
188
|
+
* redaction leaves alone keeps its name. Any other value, null or a
|
|
189
|
+
* boolean, is kept as it is. With a configuration that can't be read, the
|
|
190
|
+
* data as a whole is {@link WITHHELD_TEXT}.
|
|
191
|
+
*/
|
|
192
|
+
export function redactedData(value, redactor) {
|
|
193
|
+
const redact = 'now' in redactor ? redactor.now() : redactor;
|
|
194
|
+
if (redact === withheld)
|
|
195
|
+
return value === undefined ? undefined : WITHHELD_TEXT;
|
|
196
|
+
const walk = (item, depth) => {
|
|
197
|
+
if (typeof item === 'string')
|
|
198
|
+
return redact(item);
|
|
199
|
+
if (typeof item === 'number') {
|
|
200
|
+
const digits = String(item);
|
|
201
|
+
const redacted = redact(digits);
|
|
202
|
+
return redacted === digits ? item : redacted;
|
|
203
|
+
}
|
|
204
|
+
if (item === null || typeof item !== 'object')
|
|
205
|
+
return item;
|
|
206
|
+
const walked = Array.isArray(item) || [Object.prototype, null].includes(Object.getPrototypeOf(item));
|
|
207
|
+
if (!walked)
|
|
208
|
+
return item;
|
|
209
|
+
if (depth >= REDACTED_DATA_DEPTH)
|
|
210
|
+
return TOO_DEEP_TEXT;
|
|
211
|
+
if (Array.isArray(item))
|
|
212
|
+
return item.map((entry) => walk(entry, depth + 1));
|
|
213
|
+
// A key the redaction leaves as it is keeps its name; a redacted one
|
|
214
|
+
// takes the first name no other key has, so no entry is lost or moved.
|
|
215
|
+
const entries = Object.entries(item);
|
|
216
|
+
const names = entries.map(([key]) => redact(key));
|
|
217
|
+
const taken = new Set(names.filter((name, n) => name === entries[n][0]));
|
|
218
|
+
// Each name's next number to try, so keys that redact alike don't search
|
|
219
|
+
// from 2 again: every number below it was taken, and stays taken.
|
|
220
|
+
const next = new Map();
|
|
221
|
+
return Object.fromEntries(entries.map(([key, entry], n) => {
|
|
222
|
+
let name = names[n];
|
|
223
|
+
if (name !== key) {
|
|
224
|
+
const base = name;
|
|
225
|
+
let k = next.get(base) ?? 2;
|
|
226
|
+
while (taken.has(name))
|
|
227
|
+
name = `${base} (${k++})`;
|
|
228
|
+
next.set(base, k);
|
|
229
|
+
taken.add(name);
|
|
230
|
+
}
|
|
231
|
+
return [name, walk(entry, depth + 1)];
|
|
232
|
+
}));
|
|
233
|
+
};
|
|
234
|
+
return walk(value, 0);
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* An error a library raised, as the framework hands it to a host: its name,
|
|
238
|
+
* which is its class's, as it is, and its words redacted (`redact`, a
|
|
239
|
+
* server's {@link serverTextRedactor}), and nothing else. A library's error
|
|
240
|
+
* can carry the url it dialed elsewhere than in its message (Bun's fetch
|
|
241
|
+
* errors keep it in `path`, its path and query included), or keep the raw
|
|
242
|
+
* error it wraps as its `cause`, so none of that is carried over.
|
|
243
|
+
*/
|
|
244
|
+
export function maskedError(error, redact) {
|
|
245
|
+
const masked = new Error(redact(error instanceof Error ? error.message : error));
|
|
246
|
+
// Not enumerable, as an error's own name is not.
|
|
247
|
+
if (error instanceof Error)
|
|
248
|
+
Object.defineProperty(masked, 'name', { value: error.name, writable: true, configurable: true });
|
|
249
|
+
return masked;
|
|
250
|
+
}
|
|
152
251
|
/**
|
|
153
252
|
* What a configuration's dials sent that the configuration doesn't hold: the
|
|
154
253
|
* urls dialed with an access provider's token, and the provider's tokens,
|
|
@@ -188,10 +287,12 @@ export function noteDialSent(config, sent) {
|
|
|
188
287
|
keep(kept.tokens, sent.token);
|
|
189
288
|
}
|
|
190
289
|
/**
|
|
191
|
-
* The url a dial sends. A WebSocket dial
|
|
192
|
-
* parameter, and setting it makes URLSearchParams
|
|
193
|
-
* again, form-encoded (a space as `+`), so the url as
|
|
194
|
-
* the url as configured.
|
|
290
|
+
* The url a dial sends. A WebSocket dial that sends its token in the query
|
|
291
|
+
* sets it as the `token` parameter, and setting it makes URLSearchParams
|
|
292
|
+
* write the whole query again, form-encoded (a space as `+`), so the url as
|
|
293
|
+
* sent can differ from the url as configured. A header-mode WebSocket dial,
|
|
294
|
+
* which is given no token here, and an http(s) dial send the url as
|
|
295
|
+
* configured.
|
|
195
296
|
*/
|
|
196
297
|
export function urlAsDialed(url, token) {
|
|
197
298
|
const dialed = new URL(url);
|
|
@@ -318,7 +419,7 @@ export function serverCredentialPatterns(config) {
|
|
|
318
419
|
}
|
|
319
420
|
catch { /* Still remove the static token. */ }
|
|
320
421
|
if (url)
|
|
321
|
-
addUrl(urlAsDialed(url, config.token));
|
|
422
|
+
addUrl(urlAsDialed(url, config.tokenTransport === 'header' ? null : config.token));
|
|
322
423
|
// What the dials sent beyond that: urls dialed with an access provider's
|
|
323
424
|
// token, and its tokens sent in a header.
|
|
324
425
|
const sent = dialsSent.get(config);
|
|
@@ -370,12 +471,12 @@ export function serverCredentialPatterns(config) {
|
|
|
370
471
|
*/
|
|
371
472
|
export function credentialRedactor(patterns) {
|
|
372
473
|
if (patterns.length === 0)
|
|
373
|
-
return asText;
|
|
474
|
+
return (text, from = 0) => asText(text).slice(from);
|
|
374
475
|
// Longest first, so at each place the longest string that matches there is
|
|
375
476
|
// the match.
|
|
376
477
|
const sources = [...patterns].sort((a, b) => b.value.length - a.value.length).map(({ source }) => source);
|
|
377
478
|
const pattern = new RegExp([...new Set(sources)].join('|'), 'g');
|
|
378
|
-
return (text) => {
|
|
479
|
+
return (text, from = 0) => {
|
|
379
480
|
const input = asText(text);
|
|
380
481
|
const spans = [];
|
|
381
482
|
pattern.lastIndex = 0;
|
|
@@ -392,12 +493,14 @@ export function credentialRedactor(patterns) {
|
|
|
392
493
|
pattern.lastIndex = start + 1;
|
|
393
494
|
}
|
|
394
495
|
let redacted = '';
|
|
395
|
-
let
|
|
496
|
+
let at = from;
|
|
396
497
|
for (const [start, end] of spans) {
|
|
397
|
-
|
|
398
|
-
|
|
498
|
+
if (end <= from)
|
|
499
|
+
continue;
|
|
500
|
+
redacted += `${input.slice(at, start)}redacted`;
|
|
501
|
+
at = end;
|
|
399
502
|
}
|
|
400
|
-
return redacted + input.slice(
|
|
503
|
+
return redacted + input.slice(at);
|
|
401
504
|
};
|
|
402
505
|
}
|
|
403
506
|
/** Any value as text: a value that can't be printed reads as a placeholder. */
|
|
@@ -586,6 +689,20 @@ export function serverConfigProblems(config) {
|
|
|
586
689
|
problems.push(`MCP server "${config.id}": an http(s):// url can't carry userinfo (user:password@), since the HTTP client refuses such a url; give the credential as "token" or "accessProvider"`);
|
|
587
690
|
}
|
|
588
691
|
}
|
|
692
|
+
if (config.tokenTransport !== undefined && config.tokenTransport !== null) {
|
|
693
|
+
if (binding.transport !== 'websocket') {
|
|
694
|
+
problems.push(`MCP server "${config.id}": "tokenTransport" applies only to a ws(s):// server; an http(s):// server always sends its credential as a header, and a stdio server sends none`);
|
|
695
|
+
}
|
|
696
|
+
else {
|
|
697
|
+
const problem = tokenTransportProblem(config, new URL(config.url));
|
|
698
|
+
if (problem)
|
|
699
|
+
problems.push(problem);
|
|
700
|
+
// A static token known now that no dial could send as configured.
|
|
701
|
+
else if (config.tokenTransport === 'header' && config.token && !headerCarries(config.token)) {
|
|
702
|
+
problems.push(`MCP server "${config.id}": with tokenTransport 'header', "token" must be printable ASCII (U+0020 to U+007E) with no space at either end, which is all a header carries as configured`);
|
|
703
|
+
}
|
|
704
|
+
}
|
|
705
|
+
}
|
|
589
706
|
if (config.protocol !== undefined) {
|
|
590
707
|
if (config.protocol !== 'legacy' && config.protocol !== 'modern') {
|
|
591
708
|
problems.push(`MCP server "${config.id}": protocol must be 'legacy' or 'modern', got ${JSON.stringify(config.protocol)}`);
|
|
@@ -597,7 +714,7 @@ export function serverConfigProblems(config) {
|
|
|
597
714
|
const timeout = config.requestTimeoutMs;
|
|
598
715
|
if (binding.family === 'modern') {
|
|
599
716
|
if (timeout !== undefined && !(Number.isInteger(timeout) && timeout >= 1 && timeout <= MAX_TIMER_MS)) {
|
|
600
|
-
problems.push(`MCP server "${config.id}": requestTimeoutMs must be an integer from 1 to ${MAX_TIMER_MS} for a modern server (got ${
|
|
717
|
+
problems.push(`MCP server "${config.id}": requestTimeoutMs must be an integer from 1 to ${MAX_TIMER_MS} for a modern server (got ${asText(timeout)}); every modern call has a deadline`);
|
|
601
718
|
}
|
|
602
719
|
for (const path of mcplPolicyGrants(config)) {
|
|
603
720
|
problems.push(`MCP server "${config.id}": "${path}" asks for MCPL behaviour, which a modern MCP server cannot negotiate`);
|
|
@@ -618,6 +735,46 @@ export function serverConfigProblems(config) {
|
|
|
618
735
|
}
|
|
619
736
|
return problems;
|
|
620
737
|
}
|
|
738
|
+
/**
|
|
739
|
+
* What's wrong with a WebSocket server's `tokenTransport`, as a message, or
|
|
740
|
+
* undefined: a value that is neither mode, or `'header'` with a url that
|
|
741
|
+
* carries a `token` query parameter of its own, which would still put a
|
|
742
|
+
* credential in the url, or userinfo, whose Basic credential the Bearer
|
|
743
|
+
* header replaces whenever it carries a credential, since a request has one
|
|
744
|
+
* Authorization header. null counts as not set, as config-checks.ts has it.
|
|
745
|
+
* The refusal names the value's kind, never the value, which could be a
|
|
746
|
+
* credential pasted into the wrong field, and quotes nothing of the url.
|
|
747
|
+
*/
|
|
748
|
+
export function tokenTransportProblem(config, url) {
|
|
749
|
+
// A configuration read from JSON can hold anything here.
|
|
750
|
+
const mode = config.tokenTransport;
|
|
751
|
+
if (mode === undefined || mode === null || mode === 'query')
|
|
752
|
+
return undefined;
|
|
753
|
+
if (mode !== 'header') {
|
|
754
|
+
return `MCP server "${config.id}": tokenTransport must be 'query' or 'header', not ${typeof mode === 'string' ? 'another string' : kindOf(mode)}`;
|
|
755
|
+
}
|
|
756
|
+
if (url.searchParams.has('token')) {
|
|
757
|
+
return `MCP server "${config.id}": with tokenTransport 'header' the url must not carry a "token" query parameter, which would still put a credential in it; give it as "token" or "accessProvider"`;
|
|
758
|
+
}
|
|
759
|
+
if (url.username || url.password) {
|
|
760
|
+
return `MCP server "${config.id}": with tokenTransport 'header' the url must not carry userinfo (user:password@), since the Bearer header replaces the userinfo's Basic credential whenever it carries a credential; leave out "tokenTransport" to send the userinfo as before, or give the credential as "token" or "accessProvider"`;
|
|
761
|
+
}
|
|
762
|
+
return undefined;
|
|
763
|
+
}
|
|
764
|
+
/**
|
|
765
|
+
* Whether a header-mode credential can go in an `Authorization: Bearer`
|
|
766
|
+
* header as it is: printable ASCII (U+0020 to U+007E), with no space at
|
|
767
|
+
* either end. Node and Bun send exactly those bytes, so the server checks the
|
|
768
|
+
* credential that was configured, and the redactor's patterns match whatever
|
|
769
|
+
* it echoes. Outside that set a header can't carry it as configured: a space
|
|
770
|
+
* at either end is dropped (by Bun before sending, by an HTTP parser on
|
|
771
|
+
* arrival), a control character can't go in a header, and a character past
|
|
772
|
+
* U+007E goes out as different bytes from Node and from Bun, or is refused
|
|
773
|
+
* when the socket is built.
|
|
774
|
+
*/
|
|
775
|
+
export function headerCarries(credential) {
|
|
776
|
+
return /^[\x21-\x7e](?:[\x20-\x7e]*[\x21-\x7e])?$/.test(credential);
|
|
777
|
+
}
|
|
621
778
|
/** A host a connection to which never leaves this machine, as the WHATWG URL
|
|
622
779
|
* parser gives it. The unspecified addresses count: a connection to 0.0.0.0
|
|
623
780
|
* or [::] reaches this host. So do 127.0.0.0/8 written as an IPv4-mapped
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol-family.js","sourceRoot":"","sources":["../../../src/mcpl/protocol-family.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"protocol-family.js","sourceRoot":"","sources":["../../../src/mcpl/protocol-family.ts"],"names":[],"mappings":"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"}
|
|
@@ -91,6 +91,13 @@ export interface CoalescedOccurrence<E = unknown> {
|
|
|
91
91
|
/** Set by the coalescer: deliver into this agent only (§3.2 audience may
|
|
92
92
|
* narrow, never widen — a replacement or notice follows the prior delivery). */
|
|
93
93
|
deliverTo?: string;
|
|
94
|
+
/** Set by the coalescer when the delivery is the agent's first view of
|
|
95
|
+
* the subject: a plain occurrence that replaces one that was the agent's
|
|
96
|
+
* first view (its `initial` birth, or a replacement so marked) and that
|
|
97
|
+
* the agent may never have been shown (CoalescerHost.isUnshown), or the
|
|
98
|
+
* first delivery of a batch that opened on a first view (its render, or
|
|
99
|
+
* a plain occurrence that drops it). No other path sets it. */
|
|
100
|
+
firstView?: boolean;
|
|
94
101
|
}
|
|
95
102
|
export interface DeferredNotice {
|
|
96
103
|
eventId: string;
|
|
@@ -116,6 +123,13 @@ interface DeferredBatch<E> {
|
|
|
116
123
|
dropped: number;
|
|
117
124
|
/** Set on a batch restored from a snapshot whose render may have started. */
|
|
118
125
|
noRender?: boolean;
|
|
126
|
+
/** The batch opened on the agent's first view of its subject: a fresh
|
|
127
|
+
* `initial` birth, or a first-view occupant it displaced that nothing had
|
|
128
|
+
* shown. Its first delivery is a first view too, while nothing of the
|
|
129
|
+
* subject has been read since and no other version of it is placed. It is
|
|
130
|
+
* cleared when the subject's first view ends while the batch is pending
|
|
131
|
+
* or rendering (occupantLeaves). */
|
|
132
|
+
firstView?: true;
|
|
119
133
|
}
|
|
120
134
|
interface Rendering<E> {
|
|
121
135
|
batch: DeferredBatch<E>;
|
|
@@ -136,24 +150,50 @@ export interface AssemblyResult {
|
|
|
136
150
|
* read: empty or blank render (§5.2), cancelled, revoked before the render
|
|
137
151
|
* or at its response, a render-start that could not be made durable (the
|
|
138
152
|
* batch then waits for its recovery wake), a batch whose audience doesn't
|
|
139
|
-
* include the agent, a render placed in
|
|
140
|
-
*
|
|
141
|
-
*
|
|
142
|
-
* by another
|
|
153
|
+
* include the agent, a render placed in a deferred queue (another
|
|
154
|
+
* agent's, or this agent's own behind a write held there), a render
|
|
155
|
+
* another assembly froze (its compile may show it, as that request's), or
|
|
156
|
+
* a cause whose batch was withdrawn, displaced or consumed by another
|
|
157
|
+
* request. */
|
|
143
158
|
materialized: Set<string>;
|
|
144
159
|
}
|
|
160
|
+
/** What holds a subject's single slot (§3.2). A render describes what changed
|
|
161
|
+
* since the server's previous render (§5.2), so the renders before it that
|
|
162
|
+
* are still unread stay where they were placed, and the newest carries them
|
|
163
|
+
* as `before` (§3.3, vector 49). A plain occurrence displaces the run and a
|
|
164
|
+
* retraction removes it (§6), newest first (removeOccupant). */
|
|
165
|
+
interface Occupant {
|
|
166
|
+
eventId: string;
|
|
167
|
+
placement: CoalescingPlacement;
|
|
168
|
+
/** A materialized batch (its result or its fallback), which later renders build on. */
|
|
169
|
+
rendered?: true;
|
|
170
|
+
/** This occupant was the agent's first view of the subject when it was
|
|
171
|
+
* placed, as `firstView` defines it. It hands that view on only while
|
|
172
|
+
* nothing of the subject has been read and nothing of its run may have
|
|
173
|
+
* been shown (occupantLeaves). Unknown counts as not one. A plain
|
|
174
|
+
* occurrence can carry it, and of a run's renders only the oldest, since a
|
|
175
|
+
* render that joins a run finds a version placed. In memory only: a
|
|
176
|
+
* snapshot's occupant comes back as read. */
|
|
177
|
+
firstView?: true;
|
|
178
|
+
/** The run's earlier renders, oldest first, each placed ahead of this one. */
|
|
179
|
+
before?: Array<Omit<Occupant, 'before'>>;
|
|
180
|
+
}
|
|
145
181
|
interface SubjectState<E> {
|
|
146
182
|
history: 'none' | 'some' | 'unknown';
|
|
147
|
-
occupant?:
|
|
148
|
-
eventId: string;
|
|
149
|
-
placement: CoalescingPlacement;
|
|
150
|
-
};
|
|
183
|
+
occupant?: Occupant;
|
|
151
184
|
batch?: DeferredBatch<E>;
|
|
152
185
|
rendering?: Rendering<E>;
|
|
153
186
|
consumedEventId?: string;
|
|
154
187
|
identity?: CoalescedOccurrence['identity'];
|
|
155
188
|
/** Agent that received the last delivery; replacements and notices follow it. */
|
|
156
189
|
audienceAgent?: string;
|
|
190
|
+
/** The agent's first view of the subject has ended: an occupant that may
|
|
191
|
+
* have been shown left it without handing a first view on
|
|
192
|
+
* (occupantLeaves, endFirstView). No later batch or birth of the subject
|
|
193
|
+
* is a first view while the coalescer keeps this record. An idle
|
|
194
|
+
* subject's record can be evicted (prune), and an `initial` occurrence
|
|
195
|
+
* after that starts the subject afresh. */
|
|
196
|
+
firstViewEnded?: true;
|
|
157
197
|
touchedAt: number;
|
|
158
198
|
}
|
|
159
199
|
export interface CoalescingSnapshot {
|
|
@@ -172,11 +212,22 @@ export interface CoalescingSnapshot {
|
|
|
172
212
|
placement: CoalescingPlacement;
|
|
173
213
|
};
|
|
174
214
|
audienceAgent?: string;
|
|
215
|
+
/** The subject's first view has ended (SubjectState.firstViewEnded). A
|
|
216
|
+
* snapshot written before this field existed has none and reads as not
|
|
217
|
+
* ended. So after an upgrade, a subject whose first view had ended
|
|
218
|
+
* without a read is granted a first view again. Until the agent is shown
|
|
219
|
+
* or reads a version of it, each delivery that would mark a first view (a
|
|
220
|
+
* render, or a plain occurrence that replaces an unread version or a
|
|
221
|
+
* pending notice) carries a spurious `firstView`. */
|
|
222
|
+
firstViewEnded?: true;
|
|
223
|
+
/** `firstView` only on a batch that wasn't rendering: one that was may
|
|
224
|
+
* have been shown. */
|
|
175
225
|
batch?: {
|
|
176
226
|
latest: CoalescedOccurrence<unknown>;
|
|
177
227
|
notices: DeferredNotice[];
|
|
178
228
|
dropped: number;
|
|
179
229
|
rendering?: boolean;
|
|
230
|
+
firstView?: true;
|
|
180
231
|
};
|
|
181
232
|
}>;
|
|
182
233
|
}
|
|
@@ -188,6 +239,11 @@ export interface CoalescingReceiptRecord {
|
|
|
188
239
|
subject: string;
|
|
189
240
|
/** History the subject was created with, for a subject first seen by this receipt. */
|
|
190
241
|
born?: SubjectState<unknown>['history'];
|
|
242
|
+
/** The subject's first view had ended by this acceptance
|
|
243
|
+
* (SubjectState.firstViewEnded), so a crash before the snapshot flush
|
|
244
|
+
* can't forget the end. A record written before this field existed has
|
|
245
|
+
* none and reads as not ended, as a snapshot does. */
|
|
246
|
+
firstViewEnded?: true;
|
|
191
247
|
/** The subject's pending batch AFTER this acceptance: the accepted work
|
|
192
248
|
* itself (so a crash before the snapshot flush cannot lose it while keeping
|
|
193
249
|
* the receipt that suppresses its retry), or `null` when the acceptance
|
|
@@ -200,8 +256,20 @@ export interface CoalescingReceiptRecord {
|
|
|
200
256
|
} | null;
|
|
201
257
|
}
|
|
202
258
|
export interface CoalescerHost<E> {
|
|
203
|
-
/** True iff the placement still exists and
|
|
259
|
+
/** True iff the placement still exists and, as far as the host can tell,
|
|
260
|
+
* no model request has included it. The host can't always tell: a
|
|
261
|
+
* message injected into a stream that didn't say whether it carries
|
|
262
|
+
* injections, as no membrane 0.5.x stream does, counts as unread though
|
|
263
|
+
* a request may have included it. */
|
|
204
264
|
isUnread(placement: CoalescingPlacement): boolean;
|
|
265
|
+
/** True iff nothing may have shown the placement to the agent: it is still
|
|
266
|
+
* in the deferred queue and known not to be stored already, or it is
|
|
267
|
+
* stored where no committing compile has begun to assemble it and no tool
|
|
268
|
+
* boundary has injected past it. Unlike
|
|
269
|
+
* isUnread, a compile counts from its start, and a boundary counts
|
|
270
|
+
* whether or not its stream says it carries injected messages: a doubt
|
|
271
|
+
* counts as shown. */
|
|
272
|
+
isUnshown(placement: CoalescingPlacement): boolean;
|
|
205
273
|
/** False when the unread occurrence could not be removed (it may still be read). */
|
|
206
274
|
remove(placement: CoalescingPlacement): boolean;
|
|
207
275
|
/** Ordinary delivery of the event; undefined when routing delivered nowhere.
|
|
@@ -212,9 +280,9 @@ export interface CoalescerHost<E> {
|
|
|
212
280
|
wakeForBatch(occurrence: CoalescedOccurrence<E>): Promise<void>;
|
|
213
281
|
/** Queue an ordinary push wake for `agent`, under the batch's own wake
|
|
214
282
|
* policy, to read a render of the batch placed in its deferred queue that
|
|
215
|
-
* no request consumed
|
|
216
|
-
* and later withdrawals of them, leave it. */
|
|
217
|
-
wakeToRead(occurrence: CoalescedOccurrence<E>, agent: string): Promise<void>;
|
|
283
|
+
* no request consumed, at `deferredId`. It carries no subject, so the
|
|
284
|
+
* subject's other wakes, and later withdrawals of them, leave it. */
|
|
285
|
+
wakeToRead(occurrence: CoalescedOccurrence<E>, agent: string, deferredId?: string): Promise<void>;
|
|
218
286
|
/** Withdraw unstarted wakes whose sole cause is this subject. */
|
|
219
287
|
cancelWake(subject: string): void;
|
|
220
288
|
/** The batch's audience still holds the authority it was admitted under. */
|
|
@@ -312,8 +380,17 @@ export declare class PushCoalescer<E = unknown> {
|
|
|
312
380
|
private readonly subjects;
|
|
313
381
|
/** `committed`: the durability barrier succeeded after this receipt was
|
|
314
382
|
* written. An uncommitted receipt deduplicates effects but is not an
|
|
315
|
-
* acknowledgement until a commit succeeds.
|
|
383
|
+
* acknowledgement until a commit succeeds. `firstView`: the admission it
|
|
384
|
+
* records handed its occurrence to the host's delivery marked as the
|
|
385
|
+
* agent's first view (`firstView`), whether or not the host placed
|
|
386
|
+
* it, so a retry answered from it says so too. Kept in memory only: a
|
|
387
|
+
* receipt restored from a snapshot or the crash-window bridge reads as no
|
|
388
|
+
* first view. */
|
|
316
389
|
private readonly receipts;
|
|
390
|
+
/** Set by a delivery that carries `firstView`. admit() clears it before
|
|
391
|
+
* an admission's effects and reads it after them; every delivery runs
|
|
392
|
+
* under the lock, so between the two it is that admission's alone. */
|
|
393
|
+
private deliveredFirstView;
|
|
317
394
|
private readonly retryWindowMs;
|
|
318
395
|
private readonly maxSubjects;
|
|
319
396
|
private readonly maxNotices;
|
|
@@ -342,7 +419,14 @@ export declare class PushCoalescer<E = unknown> {
|
|
|
342
419
|
/** §10.7: a server handling push/render must not issue inference/request —
|
|
343
420
|
* including a render whose batch was cancelled while the RPC is outstanding. */
|
|
344
421
|
isRendering(serverId: string): boolean;
|
|
422
|
+
/** The host's delivery, noting one that carries `firstView` for the
|
|
423
|
+
* receipt of the admission it belongs to (deliveredFirstView). */
|
|
424
|
+
private deliver;
|
|
345
425
|
receipt(serverId: string, binding: string, eventId: string): PushEventResult | undefined;
|
|
426
|
+
/** Whether the admission this receipt records delivered its occurrence as
|
|
427
|
+
* the agent's first view: for the host's own bookkeeping, such as the
|
|
428
|
+
* channel registry's reply anchor, and never part of the wire result. */
|
|
429
|
+
receiptFirstView(serverId: string, binding: string, eventId: string): boolean;
|
|
346
430
|
private receiptEntry;
|
|
347
431
|
/** Acknowledge a receipt: durable first. A receipt whose commit failed is
|
|
348
432
|
* committed now (no effects are repeated); if that fails again, so does
|
|
@@ -357,8 +441,42 @@ export declare class PushCoalescer<E = unknown> {
|
|
|
357
441
|
accept(occurrence: CoalescedOccurrence<E>): Promise<PushEventResult>;
|
|
358
442
|
private admit;
|
|
359
443
|
private subjectFor;
|
|
360
|
-
/**
|
|
444
|
+
/**
|
|
445
|
+
* Re-check the occupant against the host, member by member: a member the
|
|
446
|
+
* host counts as read, or that is gone (isUnread is false either way),
|
|
447
|
+
* becomes history, and the run keeps the members still unread. Returns
|
|
448
|
+
* whether any are.
|
|
449
|
+
*/
|
|
361
450
|
private refreshOccupant;
|
|
451
|
+
/**
|
|
452
|
+
* Remove the occupant and the run it builds on, newest first, auditing each
|
|
453
|
+
* as `kind`. Every member is unread: refreshOccupant has just run, under the
|
|
454
|
+
* lock. The host's removal may still refuse one, such as a held write the
|
|
455
|
+
* host can't tell isn't already stored. A member the host
|
|
456
|
+
* can't remove may be read, so the walk stops there, leaving it and the
|
|
457
|
+
* renders it builds on, and the history becomes `unknown`.
|
|
458
|
+
* Returns false then. It doesn't touch `state.occupant`, which still names
|
|
459
|
+
* the members it removed: each caller clears it, so what the walk left is
|
|
460
|
+
* history from then on, as an occupant whose removal failed always was.
|
|
461
|
+
*/
|
|
462
|
+
private removeOccupant;
|
|
463
|
+
/**
|
|
464
|
+
* An unread occupant leaves the subject: a notice or a plain occurrence
|
|
465
|
+
* displaces it, or a retraction withdraws it, with any run of renders it
|
|
466
|
+
* carries. Returns whether it was a first view that nothing may have shown
|
|
467
|
+
* (isUnshown), which a replacement carries on: for a run, its oldest render
|
|
468
|
+
* carries the mark, and no render of it may have been shown. Nor may
|
|
469
|
+
* anything of the subject have been read: a member a request has read, or
|
|
470
|
+
* that is gone, leaves the run before this (refreshOccupant), and only the
|
|
471
|
+
* subject's history still says so. Any other occupant may have been seen,
|
|
472
|
+
* and this is the last point where the host can say so, since the removal
|
|
473
|
+
* takes its placements: the subject's first view ends here (endFirstView).
|
|
474
|
+
*/
|
|
475
|
+
private occupantLeaves;
|
|
476
|
+
/** The subject's first view ends: for a batch pending or rendering, whose
|
|
477
|
+
* first delivery would come after it, and for every later batch and
|
|
478
|
+
* birth (firstViewEnded). */
|
|
479
|
+
private endFirstView;
|
|
362
480
|
private scheduleRecovery;
|
|
363
481
|
/** Disarm the timer only (a producer retry wakes now; the count stands). */
|
|
364
482
|
private disarmRecovery;
|