@moltzap/client 2026.811.0 → 2026.902.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/LICENSE +202 -21
- package/NOTICE +19 -0
- package/README.md +50 -0
- package/bin/moltzapd +9 -0
- package/dist/client-runtime.d.ts +10 -0
- package/dist/client-runtime.d.ts.map +1 -0
- package/dist/client-runtime.js +218 -0
- package/dist/client-runtime.js.map +1 -0
- package/dist/contract.d.ts +338 -0
- package/dist/contract.d.ts.map +1 -0
- package/dist/contract.js +213 -0
- package/dist/contract.js.map +1 -0
- package/dist/contract.types-check.d.ts +99 -0
- package/dist/contract.types-check.d.ts.map +1 -0
- package/dist/contract.types-check.js +7 -0
- package/dist/contract.types-check.js.map +1 -0
- package/dist/daemon/configuration.d.ts +46 -0
- package/dist/daemon/configuration.d.ts.map +1 -0
- package/dist/daemon/configuration.js +69 -0
- package/dist/daemon/configuration.js.map +1 -0
- package/dist/daemon/management.d.ts +23 -0
- package/dist/daemon/management.d.ts.map +1 -0
- package/dist/daemon/management.js +489 -0
- package/dist/daemon/management.js.map +1 -0
- package/dist/daemon/registration.d.ts +72 -0
- package/dist/daemon/registration.d.ts.map +1 -0
- package/dist/daemon/registration.js +109 -0
- package/dist/daemon/registration.js.map +1 -0
- package/dist/daemon/runtime/activation.d.ts +95 -0
- package/dist/daemon/runtime/activation.d.ts.map +1 -0
- package/dist/daemon/runtime/activation.js +99 -0
- package/dist/daemon/runtime/activation.js.map +1 -0
- package/dist/daemon/runtime/controller.d.ts +34 -0
- package/dist/daemon/runtime/controller.d.ts.map +1 -0
- package/dist/daemon/runtime/controller.js +106 -0
- package/dist/daemon/runtime/controller.js.map +1 -0
- package/dist/daemon/runtime/history-export.d.ts +23 -0
- package/dist/daemon/runtime/history-export.d.ts.map +1 -0
- package/dist/daemon/runtime/history-export.js +47 -0
- package/dist/daemon/runtime/history-export.js.map +1 -0
- package/dist/daemon/runtime/index.d.ts +24 -0
- package/dist/daemon/runtime/index.d.ts.map +1 -0
- package/dist/daemon/runtime/index.js +65 -0
- package/dist/daemon/runtime/index.js.map +1 -0
- package/dist/daemon/runtime/protocol.d.ts +63 -0
- package/dist/daemon/runtime/protocol.d.ts.map +1 -0
- package/dist/daemon/runtime/protocol.js +133 -0
- package/dist/daemon/runtime/protocol.js.map +1 -0
- package/dist/endpoint/addressing/index.d.ts +39 -0
- package/dist/endpoint/addressing/index.d.ts.map +1 -0
- package/dist/endpoint/addressing/index.js +114 -0
- package/dist/endpoint/addressing/index.js.map +1 -0
- package/dist/endpoint/engine-dissemination.d.ts +11 -0
- package/dist/endpoint/engine-dissemination.d.ts.map +1 -0
- package/dist/endpoint/engine-dissemination.js +71 -0
- package/dist/endpoint/engine-dissemination.js.map +1 -0
- package/dist/endpoint/engine-durability.d.ts +69 -0
- package/dist/endpoint/engine-durability.d.ts.map +1 -0
- package/dist/endpoint/engine-durability.js +210 -0
- package/dist/endpoint/engine-durability.js.map +1 -0
- package/dist/endpoint/engine-send.d.ts +50 -0
- package/dist/endpoint/engine-send.d.ts.map +1 -0
- package/dist/endpoint/engine-send.js +422 -0
- package/dist/endpoint/engine-send.js.map +1 -0
- package/dist/endpoint/engine-types.d.ts +132 -0
- package/dist/endpoint/engine-types.d.ts.map +1 -0
- package/dist/endpoint/engine-types.js +13 -0
- package/dist/endpoint/engine-types.js.map +1 -0
- package/dist/endpoint/engine.d.ts +14 -0
- package/dist/endpoint/engine.d.ts.map +1 -0
- package/dist/endpoint/engine.js +280 -0
- package/dist/endpoint/engine.js.map +1 -0
- package/dist/endpoint/protocol/evidence.d.ts +37 -0
- package/dist/endpoint/protocol/evidence.d.ts.map +1 -0
- package/dist/endpoint/protocol/evidence.js +80 -0
- package/dist/endpoint/protocol/evidence.js.map +1 -0
- package/dist/endpoint/protocol/index.d.ts +26 -0
- package/dist/endpoint/protocol/index.d.ts.map +1 -0
- package/dist/endpoint/protocol/index.js +543 -0
- package/dist/endpoint/protocol/index.js.map +1 -0
- package/dist/endpoint/recovery/barrier.d.ts +23 -0
- package/dist/endpoint/recovery/barrier.d.ts.map +1 -0
- package/dist/endpoint/recovery/barrier.js +47 -0
- package/dist/endpoint/recovery/barrier.js.map +1 -0
- package/dist/endpoint/recovery/index.d.ts +29 -0
- package/dist/endpoint/recovery/index.d.ts.map +1 -0
- package/dist/endpoint/recovery/index.js +489 -0
- package/dist/endpoint/recovery/index.js.map +1 -0
- package/dist/endpoint/recovery/reanchor/empty.d.ts +22 -0
- package/dist/endpoint/recovery/reanchor/empty.d.ts.map +1 -0
- package/dist/endpoint/recovery/reanchor/empty.js +163 -0
- package/dist/endpoint/recovery/reanchor/empty.js.map +1 -0
- package/dist/endpoint/recovery/reanchor/index.d.ts +30 -0
- package/dist/endpoint/recovery/reanchor/index.d.ts.map +1 -0
- package/dist/endpoint/recovery/reanchor/index.js +479 -0
- package/dist/endpoint/recovery/reanchor/index.js.map +1 -0
- package/dist/endpoint/recovery/state.d.ts +130 -0
- package/dist/endpoint/recovery/state.d.ts.map +1 -0
- package/dist/endpoint/recovery/state.js +296 -0
- package/dist/endpoint/recovery/state.js.map +1 -0
- package/dist/endpoint/recovery/store-evidence.d.ts +17 -0
- package/dist/endpoint/recovery/store-evidence.d.ts.map +1 -0
- package/dist/endpoint/recovery/store-evidence.js +79 -0
- package/dist/endpoint/recovery/store-evidence.js.map +1 -0
- package/dist/endpoint/recovery/store.d.ts +56 -0
- package/dist/endpoint/recovery/store.d.ts.map +1 -0
- package/dist/endpoint/recovery/store.js +499 -0
- package/dist/endpoint/recovery/store.js.map +1 -0
- package/dist/endpoint/representation-canonical.d.ts +17 -0
- package/dist/endpoint/representation-canonical.d.ts.map +1 -0
- package/dist/endpoint/representation-canonical.js +48 -0
- package/dist/endpoint/representation-canonical.js.map +1 -0
- package/dist/endpoint/representation-codec.d.ts +51 -0
- package/dist/endpoint/representation-codec.d.ts.map +1 -0
- package/dist/endpoint/representation-codec.js +159 -0
- package/dist/endpoint/representation-codec.js.map +1 -0
- package/dist/endpoint/representation-schemas.d.ts +1831 -0
- package/dist/endpoint/representation-schemas.d.ts.map +1 -0
- package/dist/endpoint/representation-schemas.js +195 -0
- package/dist/endpoint/representation-schemas.js.map +1 -0
- package/dist/endpoint/representation-verification.d.ts +79 -0
- package/dist/endpoint/representation-verification.d.ts.map +1 -0
- package/dist/endpoint/representation-verification.js +420 -0
- package/dist/endpoint/representation-verification.js.map +1 -0
- package/dist/endpoint/representation.d.ts +6 -0
- package/dist/endpoint/representation.d.ts.map +1 -0
- package/dist/endpoint/representation.js +8 -0
- package/dist/endpoint/representation.js.map +1 -0
- package/dist/endpoint/router-worker/index.d.ts +16 -0
- package/dist/endpoint/router-worker/index.d.ts.map +1 -0
- package/dist/endpoint/router-worker/index.js +547 -0
- package/dist/endpoint/router-worker/index.js.map +1 -0
- package/dist/endpoint/router-worker/types.d.ts +183 -0
- package/dist/endpoint/router-worker/types.d.ts.map +1 -0
- package/dist/endpoint/router-worker/types.js +31 -0
- package/dist/endpoint/router-worker/types.js.map +1 -0
- package/dist/endpoint/store/anchors.d.ts +83 -0
- package/dist/endpoint/store/anchors.d.ts.map +1 -0
- package/dist/endpoint/store/anchors.js +471 -0
- package/dist/endpoint/store/anchors.js.map +1 -0
- package/dist/endpoint/store/database/index.d.ts +6 -0
- package/dist/endpoint/store/database/index.d.ts.map +1 -0
- package/dist/endpoint/store/database/index.js +6 -0
- package/dist/endpoint/store/database/index.js.map +1 -0
- package/dist/endpoint/store/database/schema.d.ts +44 -0
- package/dist/endpoint/store/database/schema.d.ts.map +1 -0
- package/dist/endpoint/store/database/schema.js +345 -0
- package/dist/endpoint/store/database/schema.js.map +1 -0
- package/dist/endpoint/store/database/values.d.ts +119 -0
- package/dist/endpoint/store/database/values.d.ts.map +1 -0
- package/dist/endpoint/store/database/values.js +194 -0
- package/dist/endpoint/store/database/values.js.map +1 -0
- package/dist/endpoint/store/deliveries.d.ts +38 -0
- package/dist/endpoint/store/deliveries.d.ts.map +1 -0
- package/dist/endpoint/store/deliveries.js +124 -0
- package/dist/endpoint/store/deliveries.js.map +1 -0
- package/dist/endpoint/store/dissemination.d.ts +27 -0
- package/dist/endpoint/store/dissemination.d.ts.map +1 -0
- package/dist/endpoint/store/dissemination.js +139 -0
- package/dist/endpoint/store/dissemination.js.map +1 -0
- package/dist/endpoint/store/index.d.ts +15 -0
- package/dist/endpoint/store/index.d.ts.map +1 -0
- package/dist/endpoint/store/index.js +76 -0
- package/dist/endpoint/store/index.js.map +1 -0
- package/dist/endpoint/store/management.d.ts +42 -0
- package/dist/endpoint/store/management.d.ts.map +1 -0
- package/dist/endpoint/store/management.js +259 -0
- package/dist/endpoint/store/management.js.map +1 -0
- package/dist/endpoint/store/outbound.d.ts +62 -0
- package/dist/endpoint/store/outbound.d.ts.map +1 -0
- package/dist/endpoint/store/outbound.js +278 -0
- package/dist/endpoint/store/outbound.js.map +1 -0
- package/dist/endpoint/store/records.d.ts +56 -0
- package/dist/endpoint/store/records.d.ts.map +1 -0
- package/dist/endpoint/store/records.js +352 -0
- package/dist/endpoint/store/records.js.map +1 -0
- package/dist/endpoint/store/rows/index.d.ts +138 -0
- package/dist/endpoint/store/rows/index.d.ts.map +1 -0
- package/dist/endpoint/store/rows/index.js +307 -0
- package/dist/endpoint/store/rows/index.js.map +1 -0
- package/dist/endpoint/store/types.d.ts +223 -0
- package/dist/endpoint/store/types.d.ts.map +1 -0
- package/dist/endpoint/store/types.js +15 -0
- package/dist/endpoint/store/types.js.map +1 -0
- package/dist/endpoint/store.d.ts +10 -0
- package/dist/endpoint/store.d.ts.map +1 -0
- package/dist/endpoint/store.js +6 -0
- package/dist/endpoint/store.js.map +1 -0
- package/dist/harness-mcp-contract.d.ts +101 -0
- package/dist/harness-mcp-contract.d.ts.map +1 -0
- package/dist/harness-mcp-contract.js +61 -0
- package/dist/harness-mcp-contract.js.map +1 -0
- package/dist/harness-mcp-http.d.ts +19 -0
- package/dist/harness-mcp-http.d.ts.map +1 -0
- package/dist/{harness-mcp-server.js → harness-mcp-http.js} +43 -71
- package/dist/harness-mcp-http.js.map +1 -0
- package/dist/harness-mcp-subscription.d.ts +12 -7
- package/dist/harness-mcp-subscription.d.ts.map +1 -1
- package/dist/harness-mcp-subscription.js +113 -100
- package/dist/harness-mcp-subscription.js.map +1 -1
- package/dist/harness-mcp-wire.d.ts +26 -19
- package/dist/harness-mcp-wire.d.ts.map +1 -1
- package/dist/harness-mcp-wire.js +380 -67
- package/dist/harness-mcp-wire.js.map +1 -1
- package/dist/index.d.ts +4 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -8
- package/dist/index.js.map +1 -1
- package/dist/management-runtime.d.ts +217 -0
- package/dist/management-runtime.d.ts.map +1 -0
- package/dist/management-runtime.js +127 -0
- package/dist/management-runtime.js.map +1 -0
- package/dist/server.d.ts +16 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +46 -0
- package/dist/server.js.map +1 -0
- package/dist/server.types-check.d.ts +23 -0
- package/dist/server.types-check.d.ts.map +1 -0
- package/dist/server.types-check.js +7 -0
- package/dist/server.types-check.js.map +1 -0
- package/package.json +45 -47
- package/dist/agent-client.d.ts +0 -5
- package/dist/agent-client.d.ts.map +0 -1
- package/dist/agent-client.js +0 -3
- package/dist/agent-client.js.map +0 -1
- package/dist/auth.d.ts +0 -37
- package/dist/auth.d.ts.map +0 -1
- package/dist/auth.js +0 -79
- package/dist/auth.js.map +0 -1
- package/dist/bounded-map.d.ts +0 -32
- package/dist/bounded-map.d.ts.map +0 -1
- package/dist/bounded-map.js +0 -79
- package/dist/bounded-map.js.map +0 -1
- package/dist/channel-base/format-cross-conv.d.ts +0 -43
- package/dist/channel-base/format-cross-conv.d.ts.map +0 -1
- package/dist/channel-base/format-cross-conv.js +0 -65
- package/dist/channel-base/format-cross-conv.js.map +0 -1
- package/dist/channel-base/format-group-block.d.ts +0 -48
- package/dist/channel-base/format-group-block.d.ts.map +0 -1
- package/dist/channel-base/format-group-block.js +0 -62
- package/dist/channel-base/format-group-block.js.map +0 -1
- package/dist/channel-base/index.d.ts +0 -12
- package/dist/channel-base/index.d.ts.map +0 -1
- package/dist/channel-base/index.js +0 -13
- package/dist/channel-base/index.js.map +0 -1
- package/dist/channel-core-enrichment.d.ts +0 -14
- package/dist/channel-core-enrichment.d.ts.map +0 -1
- package/dist/channel-core-enrichment.js +0 -143
- package/dist/channel-core-enrichment.js.map +0 -1
- package/dist/channel-core-test-support.d.ts +0 -75
- package/dist/channel-core-test-support.d.ts.map +0 -1
- package/dist/channel-core-test-support.js +0 -74
- package/dist/channel-core-test-support.js.map +0 -1
- package/dist/channel-core.d.ts +0 -304
- package/dist/channel-core.d.ts.map +0 -1
- package/dist/channel-core.js +0 -363
- package/dist/channel-core.js.map +0 -1
- package/dist/cli/adapters.d.ts +0 -21
- package/dist/cli/adapters.d.ts.map +0 -1
- package/dist/cli/adapters.js +0 -111
- package/dist/cli/adapters.js.map +0 -1
- package/dist/cli/commands/agents.d.ts +0 -11
- package/dist/cli/commands/agents.d.ts.map +0 -1
- package/dist/cli/commands/agents.js +0 -27
- package/dist/cli/commands/agents.js.map +0 -1
- package/dist/cli/commands/conversations.d.ts +0 -18
- package/dist/cli/commands/conversations.d.ts.map +0 -1
- package/dist/cli/commands/conversations.js +0 -33
- package/dist/cli/commands/conversations.js.map +0 -1
- package/dist/cli/commands/messages.d.ts +0 -41
- package/dist/cli/commands/messages.d.ts.map +0 -1
- package/dist/cli/commands/messages.js +0 -39
- package/dist/cli/commands/messages.js.map +0 -1
- package/dist/cli/commands/register.d.ts +0 -46
- package/dist/cli/commands/register.d.ts.map +0 -1
- package/dist/cli/commands/register.js +0 -103
- package/dist/cli/commands/register.js.map +0 -1
- package/dist/cli/commands/send.d.ts +0 -53
- package/dist/cli/commands/send.d.ts.map +0 -1
- package/dist/cli/commands/send.js +0 -57
- package/dist/cli/commands/send.js.map +0 -1
- package/dist/cli/commands/start.d.ts +0 -34
- package/dist/cli/commands/start.d.ts.map +0 -1
- package/dist/cli/commands/start.js +0 -59
- package/dist/cli/commands/start.js.map +0 -1
- package/dist/cli/commands/status.d.ts +0 -7
- package/dist/cli/commands/status.d.ts.map +0 -1
- package/dist/cli/commands/status.js +0 -16
- package/dist/cli/commands/status.js.map +0 -1
- package/dist/cli/commands/test-transport.d.ts +0 -28
- package/dist/cli/commands/test-transport.d.ts.map +0 -1
- package/dist/cli/commands/test-transport.js +0 -40
- package/dist/cli/commands/test-transport.js.map +0 -1
- package/dist/cli/index.d.ts +0 -3
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js +0 -105
- package/dist/cli/index.js.map +0 -1
- package/dist/cli/output.d.ts +0 -14
- package/dist/cli/output.d.ts.map +0 -1
- package/dist/cli/output.js +0 -19
- package/dist/cli/output.js.map +0 -1
- package/dist/cli/socket-client.d.ts +0 -28
- package/dist/cli/socket-client.d.ts.map +0 -1
- package/dist/cli/socket-client.js +0 -63
- package/dist/cli/socket-client.js.map +0 -1
- package/dist/cli/transport.d.ts +0 -132
- package/dist/cli/transport.d.ts.map +0 -1
- package/dist/cli/transport.js +0 -127
- package/dist/cli/transport.js.map +0 -1
- package/dist/config.d.ts +0 -33
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -45
- package/dist/config.js.map +0 -1
- package/dist/config.test-utils.d.ts +0 -18
- package/dist/config.test-utils.d.ts.map +0 -1
- package/dist/config.test-utils.js +0 -53
- package/dist/config.test-utils.js.map +0 -1
- package/dist/harness/client-runtime.d.ts +0 -24
- package/dist/harness/client-runtime.d.ts.map +0 -1
- package/dist/harness/client-runtime.js +0 -107
- package/dist/harness/client-runtime.js.map +0 -1
- package/dist/harness/index.d.ts +0 -5
- package/dist/harness/index.d.ts.map +0 -1
- package/dist/harness/index.js +0 -5
- package/dist/harness/index.js.map +0 -1
- package/dist/harness/runtime.d.ts +0 -149
- package/dist/harness/runtime.d.ts.map +0 -1
- package/dist/harness/runtime.js +0 -68
- package/dist/harness/runtime.js.map +0 -1
- package/dist/harness-client.d.ts +0 -43
- package/dist/harness-client.d.ts.map +0 -1
- package/dist/harness-client.js +0 -21
- package/dist/harness-client.js.map +0 -1
- package/dist/harness-mcp-server.d.ts +0 -19
- package/dist/harness-mcp-server.d.ts.map +0 -1
- package/dist/harness-mcp-server.js.map +0 -1
- package/dist/local-daemon-rpc.d.ts +0 -1170
- package/dist/local-daemon-rpc.d.ts.map +0 -1
- package/dist/local-daemon-rpc.js +0 -178
- package/dist/local-daemon-rpc.js.map +0 -1
- package/dist/local-history.d.ts +0 -75
- package/dist/local-history.d.ts.map +0 -1
- package/dist/local-history.js +0 -82
- package/dist/local-history.js.map +0 -1
- package/dist/local-paths.d.ts +0 -22
- package/dist/local-paths.d.ts.map +0 -1
- package/dist/local-paths.js +0 -33
- package/dist/local-paths.js.map +0 -1
- package/dist/local-socket-server.d.ts +0 -33
- package/dist/local-socket-server.d.ts.map +0 -1
- package/dist/local-socket-server.js +0 -100
- package/dist/local-socket-server.js.map +0 -1
- package/dist/message-rendering.d.ts +0 -4
- package/dist/message-rendering.d.ts.map +0 -1
- package/dist/message-rendering.js +0 -8
- package/dist/message-rendering.js.map +0 -1
- package/dist/moltzapd.d.ts +0 -38
- package/dist/moltzapd.d.ts.map +0 -1
- package/dist/moltzapd.js +0 -78
- package/dist/moltzapd.js.map +0 -1
- package/dist/notification/__tests__/subscribe-signatures.types-check.d.ts +0 -53
- package/dist/notification/__tests__/subscribe-signatures.types-check.d.ts.map +0 -1
- package/dist/notification/__tests__/subscribe-signatures.types-check.js +0 -29
- package/dist/notification/__tests__/subscribe-signatures.types-check.js.map +0 -1
- package/dist/notification/errors.d.ts +0 -41
- package/dist/notification/errors.d.ts.map +0 -1
- package/dist/notification/errors.js +0 -24
- package/dist/notification/errors.js.map +0 -1
- package/dist/notification/index.d.ts +0 -6
- package/dist/notification/index.d.ts.map +0 -1
- package/dist/notification/index.js +0 -6
- package/dist/notification/index.js.map +0 -1
- package/dist/notification/stream.d.ts +0 -75
- package/dist/notification/stream.d.ts.map +0 -1
- package/dist/notification/stream.js +0 -30
- package/dist/notification/stream.js.map +0 -1
- package/dist/pagination.d.ts +0 -52
- package/dist/pagination.d.ts.map +0 -1
- package/dist/pagination.js +0 -51
- package/dist/pagination.js.map +0 -1
- package/dist/profile.d.ts +0 -104
- package/dist/profile.d.ts.map +0 -1
- package/dist/profile.js +0 -163
- package/dist/profile.js.map +0 -1
- package/dist/refs.d.ts +0 -18
- package/dist/refs.d.ts.map +0 -1
- package/dist/refs.js +0 -18
- package/dist/refs.js.map +0 -1
- package/dist/service-event-trace.d.ts +0 -15
- package/dist/service-event-trace.d.ts.map +0 -1
- package/dist/service-event-trace.js +0 -35
- package/dist/service-event-trace.js.map +0 -1
- package/dist/service-helpers.d.ts +0 -55
- package/dist/service-helpers.d.ts.map +0 -1
- package/dist/service-helpers.js +0 -108
- package/dist/service-helpers.js.map +0 -1
- package/dist/service-local-daemon.d.ts +0 -32
- package/dist/service-local-daemon.d.ts.map +0 -1
- package/dist/service-local-daemon.js +0 -153
- package/dist/service-local-daemon.js.map +0 -1
- package/dist/service.d.ts +0 -299
- package/dist/service.d.ts.map +0 -1
- package/dist/service.js +0 -789
- package/dist/service.js.map +0 -1
- package/dist/test-utils/channel-service-fixture.d.ts +0 -53
- package/dist/test-utils/channel-service-fixture.d.ts.map +0 -1
- package/dist/test-utils/channel-service-fixture.js +0 -178
- package/dist/test-utils/channel-service-fixture.js.map +0 -1
- package/dist/test-utils/fake-service.d.ts +0 -84
- package/dist/test-utils/fake-service.d.ts.map +0 -1
- package/dist/test-utils/fake-service.js +0 -108
- package/dist/test-utils/fake-service.js.map +0 -1
- package/dist/test-utils/harness.d.ts +0 -27
- package/dist/test-utils/harness.d.ts.map +0 -1
- package/dist/test-utils/harness.js +0 -33
- package/dist/test-utils/harness.js.map +0 -1
- package/dist/test-utils/ids.d.ts +0 -21
- package/dist/test-utils/ids.d.ts.map +0 -1
- package/dist/test-utils/ids.js +0 -68
- package/dist/test-utils/ids.js.map +0 -1
- package/dist/test-utils/index.d.ts +0 -54
- package/dist/test-utils/index.d.ts.map +0 -1
- package/dist/test-utils/index.js +0 -65
- package/dist/test-utils/index.js.map +0 -1
- package/dist/test-utils/standalone-provisioning.d.ts +0 -22
- package/dist/test-utils/standalone-provisioning.d.ts.map +0 -1
- package/dist/test-utils/standalone-provisioning.js +0 -17
- package/dist/test-utils/standalone-provisioning.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/** @file Closed private representation of the loopback HarnessEndpoint MCP wire. */
|
|
2
|
+
import { type Effect, JSONSchema, type ParseResult, Schema } from "effect";
|
|
3
|
+
/** MCP capability carrying addressed message delivery. */
|
|
4
|
+
export declare const HARNESS_EVENTS_EXTENSION = "xyz.moltzap/events-v2";
|
|
5
|
+
/** Subscription filter requesting durable addressed messages. */
|
|
6
|
+
export declare const HARNESS_MESSAGE_READY_FILTER = "xyz.moltzap/messageReady";
|
|
7
|
+
/** Notification method carrying one pending addressed message. */
|
|
8
|
+
export declare const HARNESS_MESSAGE_READY_NOTIFICATION = "notifications/xyz.moltzap/message_ready";
|
|
9
|
+
/** Adapter operation for an explicit addressed send. */
|
|
10
|
+
export declare const HARNESS_SEND_TOOL = "send_message";
|
|
11
|
+
/** Adapter operation acknowledging successful stock host callback completion. */
|
|
12
|
+
export declare const HARNESS_ACKNOWLEDGE_DELIVERY_TOOL = "acknowledge_delivery";
|
|
13
|
+
declare const harnessEventsExtensionDeclarationSchema: Schema.Record$<typeof Schema.String, typeof Schema.Never>;
|
|
14
|
+
declare const harnessAcknowledgeDeliveryRequestSchema: Schema.Struct<{
|
|
15
|
+
deliveryToken: Schema.brand<Schema.filter<typeof Schema.String>, "DeliveryToken">;
|
|
16
|
+
}>;
|
|
17
|
+
declare const harnessEmptyResultSchema: Schema.Record$<typeof Schema.String, typeof Schema.Never>;
|
|
18
|
+
declare const harnessMessageReadyEventSchema: Schema.Struct<{
|
|
19
|
+
deliveryToken: Schema.brand<Schema.filter<typeof Schema.String>, "DeliveryToken">;
|
|
20
|
+
message: Schema.Union<[Schema.filter<Schema.Struct<{
|
|
21
|
+
kind: Schema.Literal<["direct"]>;
|
|
22
|
+
postId: Schema.brand<Schema.filter<typeof Schema.String>, "PostId">;
|
|
23
|
+
address: Schema.brand<Schema.filter<Schema.brand<Schema.filter<typeof Schema.String>, "MessageAddressInput">>, "AgentAddress">;
|
|
24
|
+
sender: Schema.brand<Schema.filter<Schema.brand<Schema.filter<typeof Schema.String>, "MessageAddressInput">>, "AgentAddress">;
|
|
25
|
+
content: Schema.refine<readonly [{
|
|
26
|
+
readonly type: "text";
|
|
27
|
+
readonly text: string;
|
|
28
|
+
} | {
|
|
29
|
+
readonly type: "data";
|
|
30
|
+
readonly value: import("./contract.js").JsonValue;
|
|
31
|
+
}, ...({
|
|
32
|
+
readonly type: "text";
|
|
33
|
+
readonly text: string;
|
|
34
|
+
} | {
|
|
35
|
+
readonly type: "data";
|
|
36
|
+
readonly value: import("./contract.js").JsonValue;
|
|
37
|
+
})[]], Schema.NonEmptyArray<Schema.Union<[Schema.Struct<{
|
|
38
|
+
type: Schema.Literal<["text"]>;
|
|
39
|
+
text: Schema.filter<typeof Schema.String>;
|
|
40
|
+
}>, Schema.Struct<{
|
|
41
|
+
type: Schema.Literal<["data"]>;
|
|
42
|
+
value: Schema.Schema<import("./contract.js").JsonValue, import("./contract.js").JsonValue, never>;
|
|
43
|
+
}>]>>>;
|
|
44
|
+
}>>, Schema.filter<Schema.Struct<{
|
|
45
|
+
kind: Schema.Literal<["group"]>;
|
|
46
|
+
postId: Schema.brand<Schema.filter<typeof Schema.String>, "PostId">;
|
|
47
|
+
address: Schema.brand<Schema.filter<Schema.brand<Schema.filter<typeof Schema.String>, "MessageAddressInput">>, "GroupAddress">;
|
|
48
|
+
sender: Schema.brand<Schema.filter<Schema.brand<Schema.filter<typeof Schema.String>, "MessageAddressInput">>, "AgentAddress">;
|
|
49
|
+
members: Schema.filter<Schema.TupleType<readonly [Schema.brand<Schema.filter<Schema.brand<Schema.filter<typeof Schema.String>, "MessageAddressInput">>, "AgentAddress">, Schema.brand<Schema.filter<Schema.brand<Schema.filter<typeof Schema.String>, "MessageAddressInput">>, "AgentAddress">, Schema.brand<Schema.filter<Schema.brand<Schema.filter<typeof Schema.String>, "MessageAddressInput">>, "AgentAddress">], [Schema.brand<Schema.filter<Schema.brand<Schema.filter<typeof Schema.String>, "MessageAddressInput">>, "AgentAddress">]>>;
|
|
50
|
+
content: Schema.refine<readonly [{
|
|
51
|
+
readonly type: "text";
|
|
52
|
+
readonly text: string;
|
|
53
|
+
} | {
|
|
54
|
+
readonly type: "data";
|
|
55
|
+
readonly value: import("./contract.js").JsonValue;
|
|
56
|
+
}, ...({
|
|
57
|
+
readonly type: "text";
|
|
58
|
+
readonly text: string;
|
|
59
|
+
} | {
|
|
60
|
+
readonly type: "data";
|
|
61
|
+
readonly value: import("./contract.js").JsonValue;
|
|
62
|
+
})[]], Schema.NonEmptyArray<Schema.Union<[Schema.Struct<{
|
|
63
|
+
type: Schema.Literal<["text"]>;
|
|
64
|
+
text: Schema.filter<typeof Schema.String>;
|
|
65
|
+
}>, Schema.Struct<{
|
|
66
|
+
type: Schema.Literal<["data"]>;
|
|
67
|
+
value: Schema.Schema<import("./contract.js").JsonValue, import("./contract.js").JsonValue, never>;
|
|
68
|
+
}>]>>>;
|
|
69
|
+
}>>]>;
|
|
70
|
+
}>;
|
|
71
|
+
type HarnessEventsExtensionDeclaration = typeof harnessEventsExtensionDeclarationSchema.Type;
|
|
72
|
+
/** Decoded delivery acknowledgment arguments owned by the daemon. */
|
|
73
|
+
export type HarnessAcknowledgeDeliveryRequest = typeof harnessAcknowledgeDeliveryRequestSchema.Type;
|
|
74
|
+
/** Decoded empty adapter-operation result. */
|
|
75
|
+
export type HarnessEmptyResult = typeof harnessEmptyResultSchema.Type;
|
|
76
|
+
/** One stable pending delivery emitted by the daemon. */
|
|
77
|
+
export type HarnessMessageReadyEvent = typeof harnessMessageReadyEventSchema.Type;
|
|
78
|
+
/** JSON Schema advertised for the delivery acknowledgment operation. */
|
|
79
|
+
export declare const harnessAcknowledgeDeliveryRequestJsonSchema: JSONSchema.JsonSchema7Root;
|
|
80
|
+
/** JSON Schema advertised for empty adapter-operation results. */
|
|
81
|
+
export declare const harnessEmptyResultJsonSchema: JSONSchema.JsonSchema7Root;
|
|
82
|
+
/**
|
|
83
|
+
* Decode the exact events-v2 capability declaration.
|
|
84
|
+
* @param value Untrusted capability payload.
|
|
85
|
+
* @returns The validated empty declaration.
|
|
86
|
+
*/
|
|
87
|
+
export declare function decodeHarnessEventsExtensionDeclaration(value: unknown): Effect.Effect<HarnessEventsExtensionDeclaration, ParseResult.ParseError>;
|
|
88
|
+
/**
|
|
89
|
+
* Decode one exact delivery acknowledgment request.
|
|
90
|
+
* @param value Untrusted tool arguments.
|
|
91
|
+
* @returns The validated request.
|
|
92
|
+
*/
|
|
93
|
+
export declare function decodeHarnessAcknowledgeDeliveryRequest(value: unknown): Effect.Effect<HarnessAcknowledgeDeliveryRequest, ParseResult.ParseError>;
|
|
94
|
+
/**
|
|
95
|
+
* Decode one exact pending-delivery notification payload.
|
|
96
|
+
* @param value Untrusted notification parameters.
|
|
97
|
+
* @returns The validated pending delivery.
|
|
98
|
+
*/
|
|
99
|
+
export declare function decodeHarnessMessageReadyEvent(value: unknown): Effect.Effect<HarnessMessageReadyEvent, ParseResult.ParseError>;
|
|
100
|
+
export {};
|
|
101
|
+
//# sourceMappingURL=harness-mcp-contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harness-mcp-contract.d.ts","sourceRoot":"","sources":["../src/harness-mcp-contract.ts"],"names":[],"mappings":"AAAA,oFAAoF;AAEpF,OAAO,EACL,KAAK,MAAM,EACX,UAAU,EACV,KAAK,WAAW,EAChB,MAAM,EAEP,MAAM,QAAQ,CAAC;AAIhB,0DAA0D;AAC1D,eAAO,MAAM,wBAAwB,0BAA0B,CAAC;AAEhE,iEAAiE;AACjE,eAAO,MAAM,4BAA4B,6BAA6B,CAAC;AAEvE,kEAAkE;AAClE,eAAO,MAAM,kCAAkC,4CACJ,CAAC;AAE5C,wDAAwD;AACxD,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAEhD,iFAAiF;AACjF,eAAO,MAAM,iCAAiC,yBAAyB,CAAC;AAexE,QAAA,MAAM,uCAAuC,2DAAmB,CAAC;AACjE,QAAA,MAAM,uCAAuC;;EAE3C,CAAC;AACH,QAAA,MAAM,wBAAwB,2DAAmB,CAAC;AAClD,QAAA,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGlC,CAAC;AAEH,KAAK,iCAAiC,GACpC,OAAO,uCAAuC,CAAC,IAAI,CAAC;AAEtD,qEAAqE;AACrE,MAAM,MAAM,iCAAiC,GAC3C,OAAO,uCAAuC,CAAC,IAAI,CAAC;AAEtD,8CAA8C;AAC9C,MAAM,MAAM,kBAAkB,GAAG,OAAO,wBAAwB,CAAC,IAAI,CAAC;AAEtE,yDAAyD;AACzD,MAAM,MAAM,wBAAwB,GAClC,OAAO,8BAA8B,CAAC,IAAI,CAAC;AAE7C,wEAAwE;AACxE,eAAO,MAAM,2CAA2C,4BAGvD,CAAC;AAEF,kEAAkE;AAClE,eAAO,MAAM,4BAA4B,4BAGxC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,uCAAuC,CACrD,KAAK,EAAE,OAAO,GACb,MAAM,CAAC,MAAM,CAAC,iCAAiC,EAAE,WAAW,CAAC,UAAU,CAAC,CAK1E;AAED;;;;GAIG;AACH,wBAAgB,uCAAuC,CACrD,KAAK,EAAE,OAAO,GACb,MAAM,CAAC,MAAM,CAAC,iCAAiC,EAAE,WAAW,CAAC,UAAU,CAAC,CAK1E;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,OAAO,GACb,MAAM,CAAC,MAAM,CAAC,wBAAwB,EAAE,WAAW,CAAC,UAAU,CAAC,CAEjE"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/** @file Closed private representation of the loopback HarnessEndpoint MCP wire. */
|
|
2
|
+
import { JSONSchema, Schema, } from "effect";
|
|
3
|
+
import { InboundMessage } from "./contract.js";
|
|
4
|
+
import { DeliveryToken } from "./endpoint/store/types.js";
|
|
5
|
+
/** MCP capability carrying addressed message delivery. */
|
|
6
|
+
export const HARNESS_EVENTS_EXTENSION = "xyz.moltzap/events-v2";
|
|
7
|
+
/** Subscription filter requesting durable addressed messages. */
|
|
8
|
+
export const HARNESS_MESSAGE_READY_FILTER = "xyz.moltzap/messageReady";
|
|
9
|
+
/** Notification method carrying one pending addressed message. */
|
|
10
|
+
export const HARNESS_MESSAGE_READY_NOTIFICATION = "notifications/xyz.moltzap/message_ready";
|
|
11
|
+
/** Adapter operation for an explicit addressed send. */
|
|
12
|
+
export const HARNESS_SEND_TOOL = "send_message";
|
|
13
|
+
/** Adapter operation acknowledging successful stock host callback completion. */
|
|
14
|
+
export const HARNESS_ACKNOWLEDGE_DELIVERY_TOOL = "acknowledge_delivery";
|
|
15
|
+
const exact = {
|
|
16
|
+
exact: true,
|
|
17
|
+
onExcessProperty: "error",
|
|
18
|
+
};
|
|
19
|
+
const exactStruct = (fields) => Schema.Struct(fields).annotations({ parseOptions: exact });
|
|
20
|
+
const exactEmptyObject = Schema.Record({
|
|
21
|
+
key: Schema.String,
|
|
22
|
+
value: Schema.Never,
|
|
23
|
+
}).annotations({ parseOptions: exact });
|
|
24
|
+
const harnessEventsExtensionDeclarationSchema = exactEmptyObject;
|
|
25
|
+
const harnessAcknowledgeDeliveryRequestSchema = exactStruct({
|
|
26
|
+
deliveryToken: DeliveryToken,
|
|
27
|
+
});
|
|
28
|
+
const harnessEmptyResultSchema = exactEmptyObject;
|
|
29
|
+
const harnessMessageReadyEventSchema = exactStruct({
|
|
30
|
+
deliveryToken: DeliveryToken,
|
|
31
|
+
message: InboundMessage,
|
|
32
|
+
});
|
|
33
|
+
/** JSON Schema advertised for the delivery acknowledgment operation. */
|
|
34
|
+
export const harnessAcknowledgeDeliveryRequestJsonSchema = JSONSchema.make(harnessAcknowledgeDeliveryRequestSchema, { target: "jsonSchema2020-12" });
|
|
35
|
+
/** JSON Schema advertised for empty adapter-operation results. */
|
|
36
|
+
export const harnessEmptyResultJsonSchema = JSONSchema.make(harnessEmptyResultSchema, { target: "jsonSchema2020-12" });
|
|
37
|
+
/**
|
|
38
|
+
* Decode the exact events-v2 capability declaration.
|
|
39
|
+
* @param value Untrusted capability payload.
|
|
40
|
+
* @returns The validated empty declaration.
|
|
41
|
+
*/
|
|
42
|
+
export function decodeHarnessEventsExtensionDeclaration(value) {
|
|
43
|
+
return Schema.decodeUnknown(harnessEventsExtensionDeclarationSchema)(value, exact);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Decode one exact delivery acknowledgment request.
|
|
47
|
+
* @param value Untrusted tool arguments.
|
|
48
|
+
* @returns The validated request.
|
|
49
|
+
*/
|
|
50
|
+
export function decodeHarnessAcknowledgeDeliveryRequest(value) {
|
|
51
|
+
return Schema.decodeUnknown(harnessAcknowledgeDeliveryRequestSchema)(value, exact);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Decode one exact pending-delivery notification payload.
|
|
55
|
+
* @param value Untrusted notification parameters.
|
|
56
|
+
* @returns The validated pending delivery.
|
|
57
|
+
*/
|
|
58
|
+
export function decodeHarnessMessageReadyEvent(value) {
|
|
59
|
+
return Schema.decodeUnknown(harnessMessageReadyEventSchema)(value, exact);
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=harness-mcp-contract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harness-mcp-contract.js","sourceRoot":"","sources":["../src/harness-mcp-contract.ts"],"names":[],"mappings":"AAAA,oFAAoF;AAEpF,OAAO,EAEL,UAAU,EAEV,MAAM,GAEP,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,0DAA0D;AAC1D,MAAM,CAAC,MAAM,wBAAwB,GAAG,uBAAuB,CAAC;AAEhE,iEAAiE;AACjE,MAAM,CAAC,MAAM,4BAA4B,GAAG,0BAA0B,CAAC;AAEvE,kEAAkE;AAClE,MAAM,CAAC,MAAM,kCAAkC,GAC7C,yCAAyC,CAAC;AAE5C,wDAAwD;AACxD,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAc,CAAC;AAEhD,iFAAiF;AACjF,MAAM,CAAC,MAAM,iCAAiC,GAAG,sBAAsB,CAAC;AAExE,MAAM,KAAK,GAA2B;IACpC,KAAK,EAAE,IAAI;IACX,gBAAgB,EAAE,OAAO;CAC1B,CAAC;AAEF,MAAM,WAAW,GAAG,CAAsC,MAAc,EAAE,EAAE,CAC1E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;AAE7D,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC;IACrC,GAAG,EAAE,MAAM,CAAC,MAAM;IAClB,KAAK,EAAE,MAAM,CAAC,KAAK;CACpB,CAAC,CAAC,WAAW,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;AAExC,MAAM,uCAAuC,GAAG,gBAAgB,CAAC;AACjE,MAAM,uCAAuC,GAAG,WAAW,CAAC;IAC1D,aAAa,EAAE,aAAa;CAC7B,CAAC,CAAC;AACH,MAAM,wBAAwB,GAAG,gBAAgB,CAAC;AAClD,MAAM,8BAA8B,GAAG,WAAW,CAAC;IACjD,aAAa,EAAE,aAAa;IAC5B,OAAO,EAAE,cAAc;CACxB,CAAC,CAAC;AAgBH,wEAAwE;AACxE,MAAM,CAAC,MAAM,2CAA2C,GAAG,UAAU,CAAC,IAAI,CACxE,uCAAuC,EACvC,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAChC,CAAC;AAEF,kEAAkE;AAClE,MAAM,CAAC,MAAM,4BAA4B,GAAG,UAAU,CAAC,IAAI,CACzD,wBAAwB,EACxB,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAChC,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,uCAAuC,CACrD,KAAc;IAEd,OAAO,MAAM,CAAC,aAAa,CAAC,uCAAuC,CAAC,CAClE,KAAK,EACL,KAAK,CACN,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uCAAuC,CACrD,KAAc;IAEd,OAAO,MAAM,CAAC,aAAa,CAAC,uCAAuC,CAAC,CAClE,KAAK,EACL,KAAK,CACN,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,8BAA8B,CAC5C,KAAc;IAEd,OAAO,MAAM,CAAC,aAAa,CAAC,8BAA8B,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC5E,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Hosts one official MCP handler on a guarded loopback Node listener and
|
|
3
|
+
* binds request draining and connection teardown to the enclosing scope.
|
|
4
|
+
*/
|
|
5
|
+
import type { McpHttpHandler } from "@modelcontextprotocol/server";
|
|
6
|
+
import { Effect, type Scope } from "effect";
|
|
7
|
+
import { type Server as NodeHttpServer } from "node:http";
|
|
8
|
+
interface HarnessMcpHttpServerOptions {
|
|
9
|
+
readonly port: number;
|
|
10
|
+
readonly handler: McpHttpHandler;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Acquire one guarded loopback `/mcp` server on the explicit configured port.
|
|
14
|
+
* @param options Official MCP handler and nonzero listener port.
|
|
15
|
+
* @returns The live Node server bound to the caller's scope.
|
|
16
|
+
*/
|
|
17
|
+
export declare const acquireHarnessMcpHttpServer: (options: HarnessMcpHttpServerOptions) => Effect.Effect<NodeHttpServer, Error, Scope.Scope>;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=harness-mcp-http.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harness-mcp-http.d.ts","sourceRoot":"","sources":["../src/harness-mcp-http.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AASnE,OAAO,EAGL,MAAM,EAIN,KAAK,KAAK,EACX,MAAM,QAAQ,CAAC;AAEhB,OAAO,EAEL,KAAK,MAAM,IAAI,cAAc,EAE9B,MAAM,WAAW,CAAC;AAOnB,UAAU,2BAA2B;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;CAClC;AA0ND;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,YAC7B,2BAA2B,KACnC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CASF,CAAC"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Hosts one official MCP handler on a guarded loopback Node listener and
|
|
3
|
+
* binds request draining and connection teardown to the enclosing scope.
|
|
4
|
+
*/
|
|
1
5
|
import { localhostHostValidation, localhostOriginValidation, toNodeHandler, } from "@modelcontextprotocol/node";
|
|
2
|
-
// eslint-disable-next-line agent-code-guard/prefer-effect-platform -- The official MCP Node adapter supplies a Node RequestListener, so this package-private process boundary must host that exact interface.
|
|
3
|
-
import { createServer, } from "node:http";
|
|
4
6
|
import { Deferred, Duration, Effect, Exit, Fiber, Option, } from "effect";
|
|
5
|
-
|
|
7
|
+
// eslint-disable-next-line agent-code-guard/prefer-effect-platform -- The official MCP Node adapter supplies a Node RequestListener, so this process edge hosts that exact interface.
|
|
8
|
+
import { createServer, } from "node:http";
|
|
6
9
|
const HARNESS_MCP_PATH = "/mcp";
|
|
7
10
|
const POST_METHOD = "POST";
|
|
8
11
|
const LOOPBACK_HOST = "127.0.0.1";
|
|
9
|
-
// Loopback readers normally drain immediately; one second tolerates scheduler
|
|
10
|
-
// delay without allowing a stopped reader to retain the daemon lifetime.
|
|
11
12
|
const RESPONSE_DRAIN_GRACE_PERIOD = Duration.seconds(1);
|
|
12
13
|
const respond = (status, body, response, headers = {}) => {
|
|
13
14
|
response.writeHead(status, {
|
|
@@ -21,32 +22,34 @@ const makeResponseTracker = () => {
|
|
|
21
22
|
const responseWaiters = new Set();
|
|
22
23
|
const finish = (response) => {
|
|
23
24
|
inFlight.delete(response);
|
|
24
|
-
if (inFlight.size
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
25
|
+
if (inFlight.size !== 0) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
for (const resume of responseWaiters) {
|
|
29
|
+
resume();
|
|
29
30
|
}
|
|
31
|
+
responseWaiters.clear();
|
|
30
32
|
};
|
|
31
33
|
return {
|
|
32
34
|
track: (response, nodeResponse) => {
|
|
33
35
|
inFlight.add(response);
|
|
34
36
|
Effect.runFork(Effect.tryPromise({
|
|
35
37
|
try: () => response,
|
|
36
|
-
catch: (
|
|
37
|
-
}).pipe(Effect.catchAll((
|
|
38
|
-
nodeResponse.destroy(
|
|
38
|
+
catch: (cause) => cause,
|
|
39
|
+
}).pipe(Effect.catchAll((cause) => Effect.sync(() => {
|
|
40
|
+
nodeResponse.destroy(cause instanceof Error ? cause : undefined);
|
|
39
41
|
})), Effect.ensuring(Effect.sync(() => {
|
|
40
42
|
finish(response);
|
|
41
43
|
}))));
|
|
42
44
|
},
|
|
45
|
+
// #ignore-sloppy-code-next-line[async-keyword]: This is the Effect callback constructor, not JavaScript asynchronous syntax.
|
|
43
46
|
waitForResponses: Effect.async((resume) => {
|
|
44
47
|
if (inFlight.size === 0) {
|
|
45
|
-
resume(Effect.
|
|
48
|
+
resume(Effect.void);
|
|
46
49
|
return;
|
|
47
50
|
}
|
|
48
51
|
const done = () => {
|
|
49
|
-
resume(Effect.
|
|
52
|
+
resume(Effect.void);
|
|
50
53
|
};
|
|
51
54
|
responseWaiters.add(done);
|
|
52
55
|
return Effect.sync(() => {
|
|
@@ -55,31 +58,18 @@ const makeResponseTracker = () => {
|
|
|
55
58
|
}),
|
|
56
59
|
};
|
|
57
60
|
};
|
|
58
|
-
|
|
59
|
-
* Routes the daemon's two loopback MCP surfaces through one Node listener.
|
|
60
|
-
*
|
|
61
|
-
* @param registrationHandler Official SDK handler for registration.
|
|
62
|
-
* @param harnessHandler Official SDK handler for the active agent surface.
|
|
63
|
-
* @returns A guarded Node request listener for both handlers.
|
|
64
|
-
*/
|
|
65
|
-
const makeHarnessMcpRequestListener = (registrationHandler, harnessHandler) => {
|
|
61
|
+
const makeHarnessMcpRequestListener = (handler) => {
|
|
66
62
|
const validateHost = localhostHostValidation();
|
|
67
63
|
const validateOrigin = localhostOriginValidation();
|
|
68
|
-
const
|
|
69
|
-
const harnessNodeHandler = toNodeHandler(harnessHandler);
|
|
64
|
+
const nodeHandler = toNodeHandler(handler);
|
|
70
65
|
const responses = makeResponseTracker();
|
|
71
|
-
const handlers = new Map([
|
|
72
|
-
[REGISTER_MCP_PATH, registrationNodeHandler],
|
|
73
|
-
[HARNESS_MCP_PATH, harnessNodeHandler],
|
|
74
|
-
]);
|
|
75
66
|
const listener = (request, response) => {
|
|
76
67
|
if (!validateHost(request, response) ||
|
|
77
68
|
!validateOrigin(request, response)) {
|
|
78
69
|
return;
|
|
79
70
|
}
|
|
80
71
|
const pathname = new URL(request.url ?? "/", "http://localhost").pathname;
|
|
81
|
-
|
|
82
|
-
if (handler === undefined) {
|
|
72
|
+
if (pathname !== HARNESS_MCP_PATH) {
|
|
83
73
|
respond(404, "Not found.", response);
|
|
84
74
|
return;
|
|
85
75
|
}
|
|
@@ -87,20 +77,15 @@ const makeHarnessMcpRequestListener = (registrationHandler, harnessHandler) => {
|
|
|
87
77
|
respond(405, "Method not allowed.", response, { allow: POST_METHOD });
|
|
88
78
|
return;
|
|
89
79
|
}
|
|
90
|
-
responses.track(
|
|
91
|
-
};
|
|
92
|
-
return {
|
|
93
|
-
listener,
|
|
94
|
-
waitForResponses: responses.waitForResponses,
|
|
80
|
+
responses.track(nodeHandler(request, response), response);
|
|
95
81
|
};
|
|
82
|
+
return { listener, waitForResponses: responses.waitForResponses };
|
|
96
83
|
};
|
|
97
84
|
const trackConnections = (server) => {
|
|
98
85
|
const sockets = new Set();
|
|
99
86
|
server.on("connection", (socket) => {
|
|
100
87
|
sockets.add(socket);
|
|
101
|
-
socket.once("close", () =>
|
|
102
|
-
sockets.delete(socket);
|
|
103
|
-
});
|
|
88
|
+
socket.once("close", () => sockets.delete(socket));
|
|
104
89
|
});
|
|
105
90
|
return () => {
|
|
106
91
|
for (const socket of sockets) {
|
|
@@ -110,7 +95,7 @@ const trackConnections = (server) => {
|
|
|
110
95
|
};
|
|
111
96
|
};
|
|
112
97
|
const listen = (options) => Effect.async((resume) => {
|
|
113
|
-
const requests = makeHarnessMcpRequestListener(options.
|
|
98
|
+
const requests = makeHarnessMcpRequestListener(options.handler);
|
|
114
99
|
const server = createServer(requests.listener);
|
|
115
100
|
const destroyConnections = trackConnections(server);
|
|
116
101
|
const onError = (error) => {
|
|
@@ -120,23 +105,25 @@ const listen = (options) => Effect.async((resume) => {
|
|
|
120
105
|
server.listen(options.port, LOOPBACK_HOST, () => {
|
|
121
106
|
server.off("error", onError);
|
|
122
107
|
resume(Effect.succeed({
|
|
123
|
-
destroyConnections,
|
|
124
108
|
server,
|
|
109
|
+
destroyConnections,
|
|
125
110
|
waitForResponses: requests.waitForResponses,
|
|
126
111
|
}));
|
|
127
112
|
});
|
|
113
|
+
// #ignore-sloppy-code-next-line[async-keyword]: This is the Effect callback constructor, not JavaScript asynchronous syntax.
|
|
128
114
|
return Effect.async((cancelResume) => {
|
|
129
115
|
server.off("error", onError);
|
|
130
116
|
const onClose = () => {
|
|
131
|
-
cancelResume(Effect.
|
|
117
|
+
cancelResume(Effect.void);
|
|
132
118
|
};
|
|
133
119
|
server.once("close", onClose);
|
|
134
120
|
try {
|
|
135
121
|
server.close();
|
|
136
122
|
}
|
|
137
|
-
catch (
|
|
123
|
+
catch (cause) {
|
|
138
124
|
server.off("close", onClose);
|
|
139
|
-
|
|
125
|
+
Effect.runSync(Effect.logWarning("MCP startup cancellation failed", cause));
|
|
126
|
+
cancelResume(Effect.void);
|
|
140
127
|
}
|
|
141
128
|
});
|
|
142
129
|
});
|
|
@@ -147,49 +134,34 @@ const beginClose = (server) => Effect.gen(function* () {
|
|
|
147
134
|
Effect.runSync(Deferred.succeed(completion, error));
|
|
148
135
|
});
|
|
149
136
|
});
|
|
150
|
-
return Deferred.await(completion).pipe(Effect.flatMap((error) => error === undefined
|
|
151
|
-
? Effect.succeed(undefined)
|
|
152
|
-
: Effect.logWarning("Harness MCP HTTP server close failed", error).pipe(Effect.as(undefined))));
|
|
137
|
+
return Deferred.await(completion).pipe(Effect.flatMap((error) => error === undefined ? Effect.void : Effect.logWarning(error)));
|
|
153
138
|
});
|
|
154
139
|
const closeHandler = (handler) => Effect.tryPromise({
|
|
155
140
|
try: () => handler.close(),
|
|
156
|
-
catch: (
|
|
157
|
-
}).pipe(Effect.
|
|
158
|
-
const closeHandlers = (options) => Effect.forEach(new Set([options.registrationHandler, options.harnessHandler]), closeHandler, { concurrency: 2, discard: true });
|
|
141
|
+
catch: (cause) => cause,
|
|
142
|
+
}).pipe(Effect.ignore);
|
|
159
143
|
const release = (running, options) => Effect.gen(function* () {
|
|
160
144
|
const closeCompletion = yield* beginClose(running.server);
|
|
161
|
-
|
|
162
|
-
// it. A local client that stops reading must not retain the daemon scope,
|
|
163
|
-
// so graceful draining is bounded before active connections are closed.
|
|
164
|
-
const gracefulClose = yield* Effect.fork(Effect.all([closeHandlers(options), running.waitForResponses], {
|
|
145
|
+
const gracefulClose = yield* Effect.fork(Effect.all([closeHandler(options.handler), running.waitForResponses], {
|
|
165
146
|
concurrency: 2,
|
|
166
147
|
discard: true,
|
|
167
148
|
}));
|
|
168
|
-
// acquireRelease finalizers are uninterruptible. Only this observation is
|
|
169
|
-
// interruptible so the grace timer can win; the close fiber remains owned
|
|
170
|
-
// here and is joined after any forced connection shutdown.
|
|
171
149
|
const drained = yield* Fiber.join(gracefulClose).pipe(Effect.timeoutOption(RESPONSE_DRAIN_GRACE_PERIOD), Effect.interruptible);
|
|
172
150
|
if (Option.isNone(drained)) {
|
|
173
|
-
|
|
174
|
-
yield*
|
|
151
|
+
running.destroyConnections();
|
|
152
|
+
yield* Fiber.join(gracefulClose);
|
|
175
153
|
}
|
|
176
154
|
else {
|
|
177
155
|
running.server.closeAllConnections();
|
|
178
156
|
}
|
|
179
|
-
if (Option.isNone(drained)) {
|
|
180
|
-
yield* Fiber.join(gracefulClose);
|
|
181
|
-
}
|
|
182
157
|
yield* closeCompletion;
|
|
183
158
|
});
|
|
184
159
|
/**
|
|
185
|
-
*
|
|
186
|
-
*
|
|
187
|
-
*
|
|
188
|
-
*
|
|
189
|
-
* @param options Existing MCP handlers and caller-resolved listener port.
|
|
190
|
-
* @returns The listening Node HTTP server.
|
|
160
|
+
* Acquire one guarded loopback `/mcp` server on the explicit configured port.
|
|
161
|
+
* @param options Official MCP handler and nonzero listener port.
|
|
162
|
+
* @returns The live Node server bound to the caller's scope.
|
|
191
163
|
*/
|
|
192
164
|
export const acquireHarnessMcpHttpServer = (options) =>
|
|
193
|
-
// eslint-disable-next-line agent-code-guard/acquire-release-requires-scope --
|
|
194
|
-
Effect.acquireRelease(listen(options).pipe(Effect.onExit((exit) => Exit.isSuccess(exit) ? Effect.void :
|
|
195
|
-
//# sourceMappingURL=harness-mcp-
|
|
165
|
+
// eslint-disable-next-line agent-code-guard/acquire-release-requires-scope -- The returned Scope requirement owns listener and response teardown.
|
|
166
|
+
Effect.acquireRelease(listen(options).pipe(Effect.onExit((exit) => Exit.isSuccess(exit) ? Effect.void : closeHandler(options.handler))), (running) => release(running, options)).pipe(Effect.map((running) => running.server));
|
|
167
|
+
//# sourceMappingURL=harness-mcp-http.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harness-mcp-http.js","sourceRoot":"","sources":["../src/harness-mcp-http.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Adds the one Client-owned message subscription to the official MCP
|
|
3
|
+
* handler while leaving every standard MCP request with the SDK delegate.
|
|
4
|
+
*/
|
|
1
5
|
import { type Implementation, type McpHttpHandler } from "@modelcontextprotocol/server";
|
|
2
6
|
interface HarnessMcpSubscriptionOptions {
|
|
3
7
|
readonly delegate: McpHttpHandler;
|
|
4
8
|
readonly implementation: Implementation;
|
|
9
|
+
readonly onActiveChange?: (active: boolean) => void;
|
|
5
10
|
readonly onerror?: (error: Error) => void;
|
|
6
11
|
}
|
|
7
|
-
/**
|
|
12
|
+
/** Official MCP handler augmented by the sole daemon delivery sink. */
|
|
8
13
|
export interface HarnessMcpSubscriptionHandler<Payload extends object> extends McpHttpHandler {
|
|
9
|
-
/**
|
|
14
|
+
/** Whether one accepted message listener currently owns the daemon. */
|
|
15
|
+
readonly hasActiveSubscription: () => boolean;
|
|
16
|
+
/** Write one complete event frame to the current listener, if it still exists. */
|
|
10
17
|
readonly publish: (payload: Payload) => boolean;
|
|
11
18
|
}
|
|
12
19
|
/**
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* @param options Official handler, server identity, and optional error sink.
|
|
17
|
-
* @returns The official handler surface plus a typed custom publisher.
|
|
20
|
+
* Compose the one custom listen route in front of the official MCP handler.
|
|
21
|
+
* @param options Official delegate, server identity, and lifecycle callbacks.
|
|
22
|
+
* @returns The delegated MCP surface plus the private message publisher.
|
|
18
23
|
*/
|
|
19
24
|
export declare const makeHarnessMcpSubscriptionHandler: <Payload extends object>(options: HarnessMcpSubscriptionOptions) => HarnessMcpSubscriptionHandler<Payload>;
|
|
20
25
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness-mcp-subscription.d.ts","sourceRoot":"","sources":["../src/harness-mcp-subscription.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"harness-mcp-subscription.d.ts","sourceRoot":"","sources":["../src/harness-mcp-subscription.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAGL,KAAK,cAAc,EAGnB,KAAK,cAAc,EAKpB,MAAM,8BAA8B,CAAC;AAuBtC,UAAU,6BAA6B;IACrC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACpD,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAC3C;AAED,uEAAuE;AACvE,MAAM,WAAW,6BAA6B,CAAC,OAAO,SAAS,MAAM,CACnE,SAAQ,cAAc;IACtB,uEAAuE;IACvE,QAAQ,CAAC,qBAAqB,EAAE,MAAM,OAAO,CAAC;IAC9C,kFAAkF;IAClF,QAAQ,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;CACjD;AAsYD;;;;GAIG;AACH,eAAO,MAAM,iCAAiC,GAAI,OAAO,SAAS,MAAM,WAC7D,6BAA6B,KACrC,6BAA6B,CAAC,OAAO,CACuB,CAAC"}
|