@moltzap/client 2026.812.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-server.d.ts → harness-mcp-http.d.ts} +9 -8
- package/dist/harness-mcp-http.d.ts.map +1 -0
- package/dist/{harness-mcp-server.js → harness-mcp-http.js} +38 -60
- 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 +24 -49
- package/dist/harness-mcp-wire.d.ts.map +1 -1
- package/dist/harness-mcp-wire.js +381 -124
- package/dist/harness-mcp-wire.js.map +1 -1
- package/dist/index.d.ts +4 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -10
- 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 +24 -52
- 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 -16
- package/dist/channel-base/index.js.map +0 -1
- package/dist/channel-core-enrichment.d.ts +0 -38
- package/dist/channel-core-enrichment.d.ts.map +0 -1
- package/dist/channel-core-enrichment.js +0 -217
- 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 -306
- package/dist/channel-core.d.ts.map +0 -1
- package/dist/channel-core.js +0 -365
- package/dist/channel-core.js.map +0 -1
- package/dist/config.d.ts +0 -33
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -51
- package/dist/config.js.map +0 -1
- package/dist/config.test-utils.d.ts +0 -24
- package/dist/config.test-utils.d.ts.map +0 -1
- package/dist/config.test-utils.js +0 -57
- package/dist/config.test-utils.js.map +0 -1
- package/dist/harness/client-runtime.d.ts +0 -31
- package/dist/harness/client-runtime.d.ts.map +0 -1
- package/dist/harness/client-runtime.js +0 -121
- 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 -301
- package/dist/harness/runtime.d.ts.map +0 -1
- package/dist/harness/runtime.js +0 -165
- package/dist/harness/runtime.js.map +0 -1
- package/dist/harness-client.d.ts +0 -47
- package/dist/harness-client.d.ts.map +0 -1
- package/dist/harness-client.js +0 -76
- package/dist/harness-client.js.map +0 -1
- package/dist/harness-context-projection.d.ts +0 -35
- package/dist/harness-context-projection.d.ts.map +0 -1
- package/dist/harness-context-projection.js +0 -123
- package/dist/harness-context-projection.js.map +0 -1
- package/dist/harness-mcp-server.d.ts.map +0 -1
- package/dist/harness-mcp-server.js.map +0 -1
- package/dist/local-paths.d.ts +0 -11
- package/dist/local-paths.d.ts.map +0 -1
- package/dist/local-paths.js +0 -21
- package/dist/local-paths.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-catalog.d.ts +0 -35
- package/dist/moltzapd-catalog.d.ts.map +0 -1
- package/dist/moltzapd-catalog.js +0 -117
- package/dist/moltzapd-catalog.js.map +0 -1
- package/dist/moltzapd-child-ipc.d.ts +0 -26
- package/dist/moltzapd-child-ipc.d.ts.map +0 -1
- package/dist/moltzapd-child-ipc.js +0 -31
- package/dist/moltzapd-child-ipc.js.map +0 -1
- package/dist/moltzapd-child.d.ts +0 -55
- package/dist/moltzapd-child.d.ts.map +0 -1
- package/dist/moltzapd-child.js +0 -225
- package/dist/moltzapd-child.js.map +0 -1
- package/dist/moltzapd-main.d.ts +0 -3
- package/dist/moltzapd-main.d.ts.map +0 -1
- package/dist/moltzapd-main.js +0 -18
- package/dist/moltzapd-main.js.map +0 -1
- package/dist/moltzapd-registration.d.ts +0 -40
- package/dist/moltzapd-registration.d.ts.map +0 -1
- package/dist/moltzapd-registration.js +0 -59
- package/dist/moltzapd-registration.js.map +0 -1
- package/dist/moltzapd.d.ts +0 -85
- package/dist/moltzapd.d.ts.map +0 -1
- package/dist/moltzapd.js +0 -150
- 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/notification/trace.d.ts +0 -10
- package/dist/notification/trace.d.ts.map +0 -1
- package/dist/notification/trace.js +0 -34
- package/dist/notification/trace.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/presentation/index.d.ts +0 -3
- package/dist/presentation/index.d.ts.map +0 -1
- package/dist/presentation/index.js +0 -3
- package/dist/presentation/index.js.map +0 -1
- package/dist/presentation/state.d.ts +0 -77
- package/dist/presentation/state.d.ts.map +0 -1
- package/dist/presentation/state.js +0 -211
- package/dist/presentation/state.js.map +0 -1
- package/dist/profile.d.ts +0 -106
- package/dist/profile.d.ts.map +0 -1
- package/dist/profile.js +0 -171
- package/dist/profile.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.d.ts +0 -228
- package/dist/service.d.ts.map +0 -1
- package/dist/service.js +0 -485
- 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 -82
- 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 -56
- package/dist/test-utils/index.d.ts.map +0 -1
- package/dist/test-utils/index.js +0 -67
- package/dist/test-utils/index.js.map +0 -1
- package/dist/test-utils/process/reserve-port.d.ts +0 -20
- package/dist/test-utils/process/reserve-port.d.ts.map +0 -1
- package/dist/test-utils/process/reserve-port.js +0 -41
- package/dist/test-utils/process/reserve-port.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"}
|
|
@@ -1,18 +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
|
+
*/
|
|
1
5
|
import type { McpHttpHandler } from "@modelcontextprotocol/server";
|
|
2
|
-
import { type Server as NodeHttpServer } from "node:http";
|
|
3
6
|
import { Effect, type Scope } from "effect";
|
|
7
|
+
import { type Server as NodeHttpServer } from "node:http";
|
|
4
8
|
interface HarnessMcpHttpServerOptions {
|
|
5
9
|
readonly port: number;
|
|
6
10
|
readonly handler: McpHttpHandler;
|
|
7
11
|
}
|
|
8
12
|
/**
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* @param options Existing MCP handlers and caller-resolved listener port.
|
|
14
|
-
* @returns The listening Node HTTP server.
|
|
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.
|
|
15
16
|
*/
|
|
16
17
|
export declare const acquireHarnessMcpHttpServer: (options: HarnessMcpHttpServerOptions) => Effect.Effect<NodeHttpServer, Error, Scope.Scope>;
|
|
17
18
|
export {};
|
|
18
|
-
//# sourceMappingURL=harness-mcp-
|
|
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,12 +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";
|
|
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";
|
|
5
9
|
const HARNESS_MCP_PATH = "/mcp";
|
|
6
10
|
const POST_METHOD = "POST";
|
|
7
11
|
const LOOPBACK_HOST = "127.0.0.1";
|
|
8
|
-
// Loopback readers normally drain immediately; one second tolerates scheduler
|
|
9
|
-
// delay without allowing a stopped reader to retain the daemon lifetime.
|
|
10
12
|
const RESPONSE_DRAIN_GRACE_PERIOD = Duration.seconds(1);
|
|
11
13
|
const respond = (status, body, response, headers = {}) => {
|
|
12
14
|
response.writeHead(status, {
|
|
@@ -20,32 +22,34 @@ const makeResponseTracker = () => {
|
|
|
20
22
|
const responseWaiters = new Set();
|
|
21
23
|
const finish = (response) => {
|
|
22
24
|
inFlight.delete(response);
|
|
23
|
-
if (inFlight.size
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
if (inFlight.size !== 0) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
for (const resume of responseWaiters) {
|
|
29
|
+
resume();
|
|
28
30
|
}
|
|
31
|
+
responseWaiters.clear();
|
|
29
32
|
};
|
|
30
33
|
return {
|
|
31
34
|
track: (response, nodeResponse) => {
|
|
32
35
|
inFlight.add(response);
|
|
33
36
|
Effect.runFork(Effect.tryPromise({
|
|
34
37
|
try: () => response,
|
|
35
|
-
catch: (
|
|
36
|
-
}).pipe(Effect.catchAll((
|
|
37
|
-
nodeResponse.destroy(
|
|
38
|
+
catch: (cause) => cause,
|
|
39
|
+
}).pipe(Effect.catchAll((cause) => Effect.sync(() => {
|
|
40
|
+
nodeResponse.destroy(cause instanceof Error ? cause : undefined);
|
|
38
41
|
})), Effect.ensuring(Effect.sync(() => {
|
|
39
42
|
finish(response);
|
|
40
43
|
}))));
|
|
41
44
|
},
|
|
45
|
+
// #ignore-sloppy-code-next-line[async-keyword]: This is the Effect callback constructor, not JavaScript asynchronous syntax.
|
|
42
46
|
waitForResponses: Effect.async((resume) => {
|
|
43
47
|
if (inFlight.size === 0) {
|
|
44
|
-
resume(Effect.
|
|
48
|
+
resume(Effect.void);
|
|
45
49
|
return;
|
|
46
50
|
}
|
|
47
51
|
const done = () => {
|
|
48
|
-
resume(Effect.
|
|
52
|
+
resume(Effect.void);
|
|
49
53
|
};
|
|
50
54
|
responseWaiters.add(done);
|
|
51
55
|
return Effect.sync(() => {
|
|
@@ -54,14 +58,6 @@ const makeResponseTracker = () => {
|
|
|
54
58
|
}),
|
|
55
59
|
};
|
|
56
60
|
};
|
|
57
|
-
/**
|
|
58
|
-
* Routes the daemon's loopback MCP surface through one Node listener. Host and
|
|
59
|
-
* path are fixed: every profile slot is reachable at the same `/mcp` URL
|
|
60
|
-
* whether or not it has committed an identity.
|
|
61
|
-
*
|
|
62
|
-
* @param handler Official SDK handler for the state-gated catalog.
|
|
63
|
-
* @returns A guarded Node request listener for that handler.
|
|
64
|
-
*/
|
|
65
61
|
const makeHarnessMcpRequestListener = (handler) => {
|
|
66
62
|
const validateHost = localhostHostValidation();
|
|
67
63
|
const validateOrigin = localhostOriginValidation();
|
|
@@ -83,18 +79,13 @@ const makeHarnessMcpRequestListener = (handler) => {
|
|
|
83
79
|
}
|
|
84
80
|
responses.track(nodeHandler(request, response), response);
|
|
85
81
|
};
|
|
86
|
-
return {
|
|
87
|
-
listener,
|
|
88
|
-
waitForResponses: responses.waitForResponses,
|
|
89
|
-
};
|
|
82
|
+
return { listener, waitForResponses: responses.waitForResponses };
|
|
90
83
|
};
|
|
91
84
|
const trackConnections = (server) => {
|
|
92
85
|
const sockets = new Set();
|
|
93
86
|
server.on("connection", (socket) => {
|
|
94
87
|
sockets.add(socket);
|
|
95
|
-
socket.once("close", () =>
|
|
96
|
-
sockets.delete(socket);
|
|
97
|
-
});
|
|
88
|
+
socket.once("close", () => sockets.delete(socket));
|
|
98
89
|
});
|
|
99
90
|
return () => {
|
|
100
91
|
for (const socket of sockets) {
|
|
@@ -114,23 +105,25 @@ const listen = (options) => Effect.async((resume) => {
|
|
|
114
105
|
server.listen(options.port, LOOPBACK_HOST, () => {
|
|
115
106
|
server.off("error", onError);
|
|
116
107
|
resume(Effect.succeed({
|
|
117
|
-
destroyConnections,
|
|
118
108
|
server,
|
|
109
|
+
destroyConnections,
|
|
119
110
|
waitForResponses: requests.waitForResponses,
|
|
120
111
|
}));
|
|
121
112
|
});
|
|
113
|
+
// #ignore-sloppy-code-next-line[async-keyword]: This is the Effect callback constructor, not JavaScript asynchronous syntax.
|
|
122
114
|
return Effect.async((cancelResume) => {
|
|
123
115
|
server.off("error", onError);
|
|
124
116
|
const onClose = () => {
|
|
125
|
-
cancelResume(Effect.
|
|
117
|
+
cancelResume(Effect.void);
|
|
126
118
|
};
|
|
127
119
|
server.once("close", onClose);
|
|
128
120
|
try {
|
|
129
121
|
server.close();
|
|
130
122
|
}
|
|
131
|
-
catch (
|
|
123
|
+
catch (cause) {
|
|
132
124
|
server.off("close", onClose);
|
|
133
|
-
|
|
125
|
+
Effect.runSync(Effect.logWarning("MCP startup cancellation failed", cause));
|
|
126
|
+
cancelResume(Effect.void);
|
|
134
127
|
}
|
|
135
128
|
});
|
|
136
129
|
});
|
|
@@ -141,49 +134,34 @@ const beginClose = (server) => Effect.gen(function* () {
|
|
|
141
134
|
Effect.runSync(Deferred.succeed(completion, error));
|
|
142
135
|
});
|
|
143
136
|
});
|
|
144
|
-
return Deferred.await(completion).pipe(Effect.flatMap((error) => error === undefined
|
|
145
|
-
? Effect.succeed(undefined)
|
|
146
|
-
: 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)));
|
|
147
138
|
});
|
|
148
139
|
const closeHandler = (handler) => Effect.tryPromise({
|
|
149
140
|
try: () => handler.close(),
|
|
150
|
-
catch: (
|
|
151
|
-
}).pipe(Effect.
|
|
152
|
-
const closeHandlers = (options) => closeHandler(options.handler);
|
|
141
|
+
catch: (cause) => cause,
|
|
142
|
+
}).pipe(Effect.ignore);
|
|
153
143
|
const release = (running, options) => Effect.gen(function* () {
|
|
154
144
|
const closeCompletion = yield* beginClose(running.server);
|
|
155
|
-
|
|
156
|
-
// it. A local client that stops reading must not retain the daemon scope,
|
|
157
|
-
// so graceful draining is bounded before active connections are closed.
|
|
158
|
-
const gracefulClose = yield* Effect.fork(Effect.all([closeHandlers(options), running.waitForResponses], {
|
|
145
|
+
const gracefulClose = yield* Effect.fork(Effect.all([closeHandler(options.handler), running.waitForResponses], {
|
|
159
146
|
concurrency: 2,
|
|
160
147
|
discard: true,
|
|
161
148
|
}));
|
|
162
|
-
// acquireRelease finalizers are uninterruptible. Only this observation is
|
|
163
|
-
// interruptible so the grace timer can win; the close fiber remains owned
|
|
164
|
-
// here and is joined after any forced connection shutdown.
|
|
165
149
|
const drained = yield* Fiber.join(gracefulClose).pipe(Effect.timeoutOption(RESPONSE_DRAIN_GRACE_PERIOD), Effect.interruptible);
|
|
166
150
|
if (Option.isNone(drained)) {
|
|
167
|
-
|
|
168
|
-
yield*
|
|
151
|
+
running.destroyConnections();
|
|
152
|
+
yield* Fiber.join(gracefulClose);
|
|
169
153
|
}
|
|
170
154
|
else {
|
|
171
155
|
running.server.closeAllConnections();
|
|
172
156
|
}
|
|
173
|
-
if (Option.isNone(drained)) {
|
|
174
|
-
yield* Fiber.join(gracefulClose);
|
|
175
|
-
}
|
|
176
157
|
yield* closeCompletion;
|
|
177
158
|
});
|
|
178
159
|
/**
|
|
179
|
-
*
|
|
180
|
-
*
|
|
181
|
-
*
|
|
182
|
-
*
|
|
183
|
-
* @param options Existing MCP handlers and caller-resolved listener port.
|
|
184
|
-
* @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.
|
|
185
163
|
*/
|
|
186
164
|
export const acquireHarnessMcpHttpServer = (options) =>
|
|
187
|
-
// eslint-disable-next-line agent-code-guard/acquire-release-requires-scope --
|
|
188
|
-
Effect.acquireRelease(listen(options).pipe(Effect.onExit((exit) => Exit.isSuccess(exit) ? Effect.void :
|
|
189
|
-
//# 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"}
|