@moltzap/client 2026.1002.0 → 2026.1004.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/bin/moltzapd +2 -2
- package/dist/{harness-mcp-contract.d.ts → delivery/history-export.d.ts} +94 -133
- package/dist/delivery/history-export.d.ts.map +1 -0
- package/dist/{daemon/runtime → delivery}/history-export.js +36 -3
- package/dist/delivery/history-export.js.map +1 -0
- package/dist/delivery/host-delivery.d.ts +51 -0
- package/dist/delivery/host-delivery.d.ts.map +1 -0
- package/dist/delivery/host-delivery.js +109 -0
- package/dist/delivery/host-delivery.js.map +1 -0
- package/dist/delivery/inbox.d.ts +141 -0
- package/dist/delivery/inbox.d.ts.map +1 -0
- package/dist/delivery/inbox.js +129 -0
- package/dist/delivery/inbox.js.map +1 -0
- package/dist/delivery/index.d.ts +4 -0
- package/dist/delivery/index.d.ts.map +1 -0
- package/dist/delivery/index.js +4 -0
- package/dist/delivery/index.js.map +1 -0
- package/dist/delivery/operations.d.ts +789 -0
- package/dist/delivery/operations.d.ts.map +1 -0
- package/dist/delivery/operations.js +162 -0
- package/dist/delivery/operations.js.map +1 -0
- package/dist/delivery/pass.d.ts +91 -0
- package/dist/delivery/pass.d.ts.map +1 -0
- package/dist/{daemon/runtime/pending-delivery.js → delivery/pass.js} +61 -34
- package/dist/delivery/pass.js.map +1 -0
- package/dist/delivery/send-invocations.d.ts +106 -0
- package/dist/delivery/send-invocations.d.ts.map +1 -0
- package/dist/delivery/send-invocations.js +109 -0
- package/dist/delivery/send-invocations.js.map +1 -0
- package/dist/endpoint/harness-endpoint/capability.d.ts +39 -0
- package/dist/endpoint/harness-endpoint/capability.d.ts.map +1 -0
- package/dist/endpoint/harness-endpoint/capability.js +9 -0
- package/dist/endpoint/harness-endpoint/capability.js.map +1 -0
- package/dist/endpoint/harness-endpoint/events.d.ts +12 -0
- package/dist/endpoint/harness-endpoint/events.d.ts.map +1 -0
- package/dist/endpoint/harness-endpoint/events.js +199 -0
- package/dist/endpoint/harness-endpoint/events.js.map +1 -0
- package/dist/{client-runtime.d.ts → endpoint/harness-endpoint/index.d.ts} +4 -2
- package/dist/endpoint/harness-endpoint/index.d.ts.map +1 -0
- package/dist/{client-runtime.js → endpoint/harness-endpoint/index.js} +115 -115
- package/dist/endpoint/harness-endpoint/index.js.map +1 -0
- package/dist/endpoint/implementation.d.ts +4 -0
- package/dist/endpoint/implementation.d.ts.map +1 -0
- package/dist/endpoint/implementation.js +5 -0
- package/dist/endpoint/implementation.js.map +1 -0
- package/dist/endpoint/mcp/auth.d.ts +31 -0
- package/dist/endpoint/mcp/auth.d.ts.map +1 -0
- package/dist/endpoint/mcp/auth.js +42 -0
- package/dist/endpoint/mcp/auth.js.map +1 -0
- package/dist/endpoint/mcp/event-schemas.d.ts +151 -0
- package/dist/endpoint/mcp/event-schemas.d.ts.map +1 -0
- package/dist/endpoint/mcp/event-schemas.js +72 -0
- package/dist/endpoint/mcp/event-schemas.js.map +1 -0
- package/dist/endpoint/mcp/event-signing.d.ts +62 -0
- package/dist/endpoint/mcp/event-signing.d.ts.map +1 -0
- package/dist/endpoint/mcp/event-signing.js +185 -0
- package/dist/endpoint/mcp/event-signing.js.map +1 -0
- package/dist/endpoint/mcp/events.d.ts +45 -0
- package/dist/endpoint/mcp/events.d.ts.map +1 -0
- package/dist/endpoint/mcp/events.js +296 -0
- package/dist/endpoint/mcp/events.js.map +1 -0
- package/dist/{harness-mcp-http.d.ts → endpoint/mcp/http.d.ts} +1 -1
- package/dist/endpoint/mcp/http.d.ts.map +1 -0
- package/dist/{harness-mcp-http.js → endpoint/mcp/http.js} +1 -1
- package/dist/endpoint/mcp/http.js.map +1 -0
- package/dist/endpoint/mcp/index.d.ts +10 -0
- package/dist/endpoint/mcp/index.d.ts.map +1 -0
- package/dist/endpoint/mcp/index.js +8 -0
- package/dist/endpoint/mcp/index.js.map +1 -0
- package/dist/{management-runtime.d.ts → endpoint/mcp/owner-tools.d.ts} +7 -7
- package/dist/endpoint/mcp/owner-tools.d.ts.map +1 -0
- package/dist/{management-runtime.js → endpoint/mcp/owner-tools.js} +3 -4
- package/dist/endpoint/mcp/owner-tools.js.map +1 -0
- package/dist/endpoint/mcp/schemas.d.ts +60 -0
- package/dist/endpoint/mcp/schemas.d.ts.map +1 -0
- package/dist/endpoint/mcp/schemas.js +116 -0
- package/dist/endpoint/mcp/schemas.js.map +1 -0
- package/dist/{harness-mcp-wire.d.ts → endpoint/mcp/tools.d.ts} +17 -14
- package/dist/endpoint/mcp/tools.d.ts.map +1 -0
- package/dist/{harness-mcp-wire.js → endpoint/mcp/tools.js} +229 -110
- package/dist/endpoint/mcp/tools.js.map +1 -0
- package/dist/endpoint/mcp/webhook.d.ts +15 -0
- package/dist/endpoint/mcp/webhook.d.ts.map +1 -0
- package/dist/endpoint/mcp/webhook.js +359 -0
- package/dist/endpoint/mcp/webhook.js.map +1 -0
- package/dist/identity/credentials.d.ts +46 -0
- package/dist/identity/credentials.d.ts.map +1 -0
- package/dist/identity/credentials.js +55 -0
- package/dist/identity/credentials.js.map +1 -0
- package/dist/identity/index.d.ts +4 -0
- package/dist/identity/index.d.ts.map +1 -0
- package/dist/identity/index.js +4 -0
- package/dist/identity/index.js.map +1 -0
- package/dist/index.d.ts +19 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -5
- package/dist/index.js.map +1 -1
- package/dist/{contract.types-check.d.ts → index.types-check.d.ts} +8 -4
- package/dist/index.types-check.d.ts.map +1 -0
- package/dist/{contract.types-check.js → index.types-check.js} +4 -3
- package/dist/index.types-check.js.map +1 -0
- package/dist/{daemon/runtime → service}/activation.d.ts +9 -12
- package/dist/service/activation.d.ts.map +1 -0
- package/dist/{daemon/runtime → service}/activation.js +3 -3
- package/dist/service/activation.js.map +1 -0
- package/dist/{daemon → service}/configuration.d.ts +8 -7
- package/dist/service/configuration.d.ts.map +1 -0
- package/dist/{daemon → service}/configuration.js +30 -28
- package/dist/service/configuration.js.map +1 -0
- package/dist/{daemon/runtime → service}/controller.d.ts +8 -6
- package/dist/service/controller.d.ts.map +1 -0
- package/dist/service/controller.js +106 -0
- package/dist/service/controller.js.map +1 -0
- package/dist/{server.d.ts → service/index.d.ts} +7 -4
- package/dist/service/index.d.ts.map +1 -0
- package/dist/{server.js → service/index.js} +17 -15
- package/dist/service/index.js.map +1 -0
- package/dist/{server.types-check.d.ts → service/index.types-check.d.ts} +7 -7
- package/dist/service/index.types-check.d.ts.map +1 -0
- package/dist/{server.types-check.js → service/index.types-check.js} +1 -1
- package/dist/service/index.types-check.js.map +1 -0
- package/dist/{daemon/runtime/index.d.ts → service/lifecycle.d.ts} +3 -3
- package/dist/service/lifecycle.d.ts.map +1 -0
- package/dist/{daemon/runtime/index.js → service/lifecycle.js} +28 -25
- package/dist/service/lifecycle.js.map +1 -0
- package/dist/{daemon → service}/management.d.ts +2 -2
- package/dist/service/management.d.ts.map +1 -0
- package/dist/{daemon → service}/management.js +2 -13
- package/dist/service/management.js.map +1 -0
- package/dist/{daemon → service}/registration.d.ts +1 -1
- package/dist/service/registration.d.ts.map +1 -0
- package/dist/{daemon → service}/registration.js +1 -2
- package/dist/service/registration.js.map +1 -0
- package/dist/{daemon/runtime/protocol.d.ts → service/supervision.d.ts} +16 -24
- package/dist/service/supervision.d.ts.map +1 -0
- package/dist/{daemon/runtime/protocol.js → service/supervision.js} +33 -36
- package/dist/service/supervision.js.map +1 -0
- package/dist/store/anchors.d.ts.map +1 -0
- package/dist/store/anchors.js.map +1 -0
- package/dist/store/database/index.d.ts.map +1 -0
- package/dist/store/database/index.js.map +1 -0
- package/dist/store/database/schema.d.ts.map +1 -0
- package/dist/{endpoint/store → store}/database/schema.js +42 -6
- package/dist/store/database/schema.js.map +1 -0
- package/dist/store/database/values.d.ts.map +1 -0
- package/dist/store/database/values.js.map +1 -0
- package/dist/{endpoint/store → store}/deliveries.d.ts +8 -0
- package/dist/store/deliveries.d.ts.map +1 -0
- package/dist/{endpoint/store → store}/deliveries.js +16 -0
- package/dist/store/deliveries.js.map +1 -0
- package/dist/store/dissemination.d.ts.map +1 -0
- package/dist/store/dissemination.js.map +1 -0
- package/dist/store/inbox.d.ts +86 -0
- package/dist/store/inbox.d.ts.map +1 -0
- package/dist/store/inbox.js +269 -0
- package/dist/store/inbox.js.map +1 -0
- package/dist/store/index.d.ts +12 -0
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/index.js +8 -0
- package/dist/store/index.js.map +1 -0
- package/dist/store/outbound.d.ts.map +1 -0
- package/dist/store/outbound.js.map +1 -0
- package/dist/{endpoint/store/management.d.ts → store/reads.d.ts} +1 -1
- package/dist/store/reads.d.ts.map +1 -0
- package/dist/{endpoint/store/management.js → store/reads.js} +1 -1
- package/dist/store/reads.js.map +1 -0
- package/dist/store/records.d.ts.map +1 -0
- package/dist/store/records.js.map +1 -0
- package/dist/store/rows/index.d.ts.map +1 -0
- package/dist/store/rows/index.js.map +1 -0
- package/dist/store/runtime-codec.d.ts +17 -0
- package/dist/store/runtime-codec.d.ts.map +1 -0
- package/dist/store/runtime-codec.js +32 -0
- package/dist/store/runtime-codec.js.map +1 -0
- package/dist/{endpoint/store/index.d.ts → store/store.d.ts} +2 -2
- package/dist/store/store.d.ts.map +1 -0
- package/dist/{endpoint/store/index.js → store/store.js} +33 -4
- package/dist/store/store.js.map +1 -0
- package/dist/{endpoint/store → store}/types.d.ts +41 -0
- package/dist/store/types.d.ts.map +1 -0
- package/dist/store/types.js.map +1 -0
- package/dist/transport/collectives/answer-check.d.ts +22 -0
- package/dist/transport/collectives/answer-check.d.ts.map +1 -0
- package/dist/transport/collectives/answer-check.js +166 -0
- package/dist/transport/collectives/answer-check.js.map +1 -0
- package/dist/transport/collectives/answer-formats.d.ts +21 -0
- package/dist/transport/collectives/answer-formats.d.ts.map +1 -0
- package/dist/transport/collectives/answer-formats.js +127 -0
- package/dist/transport/collectives/answer-formats.js.map +1 -0
- package/dist/transport/collectives/failures.d.ts +34 -0
- package/dist/transport/collectives/failures.d.ts.map +1 -0
- package/dist/transport/collectives/failures.js +40 -0
- package/dist/transport/collectives/failures.js.map +1 -0
- package/dist/transport/collectives/form-grammar.d.ts +175 -0
- package/dist/transport/collectives/form-grammar.d.ts.map +1 -0
- package/dist/transport/collectives/form-grammar.js +226 -0
- package/dist/transport/collectives/form-grammar.js.map +1 -0
- package/dist/transport/collectives/forms.d.ts +224 -0
- package/dist/transport/collectives/forms.d.ts.map +1 -0
- package/dist/transport/collectives/forms.js +183 -0
- package/dist/transport/collectives/forms.js.map +1 -0
- package/dist/transport/collectives/inbound.d.ts +130 -0
- package/dist/transport/collectives/inbound.d.ts.map +1 -0
- package/dist/transport/collectives/inbound.js +80 -0
- package/dist/transport/collectives/inbound.js.map +1 -0
- package/dist/transport/collectives/index.d.ts +10 -0
- package/dist/transport/collectives/index.d.ts.map +1 -0
- package/dist/transport/collectives/index.js +8 -0
- package/dist/transport/collectives/index.js.map +1 -0
- package/dist/{message-text.d.ts → transport/collectives/message-text.d.ts} +4 -3
- package/dist/transport/collectives/message-text.d.ts.map +1 -0
- package/dist/{message-text.js → transport/collectives/message-text.js} +4 -6
- package/dist/transport/collectives/message-text.js.map +1 -0
- package/dist/{endpoint/collective → transport/collectives}/operation.d.ts +17 -11
- package/dist/transport/collectives/operation.d.ts.map +1 -0
- package/dist/{endpoint/collective → transport/collectives}/operation.js +20 -48
- package/dist/transport/collectives/operation.js.map +1 -0
- package/dist/{endpoint/collective → transport/collectives}/received-request.d.ts +2 -1
- package/dist/transport/collectives/received-request.d.ts.map +1 -0
- package/dist/transport/collectives/received-request.js.map +1 -0
- package/dist/{endpoint/collective → transport/collectives}/request-sends.d.ts +3 -2
- package/dist/transport/collectives/request-sends.d.ts.map +1 -0
- package/dist/transport/collectives/request-sends.js.map +1 -0
- package/dist/{endpoint/collective → transport/collectives}/shared-answers.d.ts +3 -2
- package/dist/transport/collectives/shared-answers.d.ts.map +1 -0
- package/dist/transport/collectives/shared-answers.js.map +1 -0
- package/dist/{endpoint/collective → transport/collectives}/validation.d.ts +8 -10
- package/dist/transport/collectives/validation.d.ts.map +1 -0
- package/dist/{endpoint/collective → transport/collectives}/validation.js +10 -19
- package/dist/transport/collectives/validation.js.map +1 -0
- package/dist/{endpoint/collective → transport/collectives}/wire.d.ts +14 -9
- package/dist/transport/collectives/wire.d.ts.map +1 -0
- package/dist/{endpoint/collective → transport/collectives}/wire.js +11 -99
- package/dist/transport/collectives/wire.js.map +1 -0
- package/dist/{endpoint/addressing/index.d.ts → transport/messaging/address.d.ts} +38 -5
- package/dist/transport/messaging/address.d.ts.map +1 -0
- package/dist/{endpoint/addressing/index.js → transport/messaging/address.js} +100 -21
- package/dist/transport/messaging/address.js.map +1 -0
- package/dist/{endpoint/protocol/index.d.ts → transport/messaging/certification.d.ts} +4 -4
- package/dist/transport/messaging/certification.d.ts.map +1 -0
- package/dist/{endpoint/protocol/index.js → transport/messaging/certification.js} +7 -5
- package/dist/transport/messaging/certification.js.map +1 -0
- package/dist/{endpoint/engine-dissemination.d.ts → transport/messaging/dissemination.d.ts} +3 -3
- package/dist/transport/messaging/dissemination.d.ts.map +1 -0
- package/dist/{endpoint/engine-dissemination.js → transport/messaging/dissemination.js} +5 -5
- package/dist/transport/messaging/dissemination.js.map +1 -0
- package/dist/{endpoint/engine-durability.d.ts → transport/messaging/durability.d.ts} +4 -4
- package/dist/{endpoint/engine-durability.d.ts.map → transport/messaging/durability.d.ts.map} +1 -1
- package/dist/{endpoint/engine-durability.js → transport/messaging/durability.js} +4 -13
- package/dist/transport/messaging/durability.js.map +1 -0
- package/dist/transport/messaging/errors.d.ts +50 -0
- package/dist/transport/messaging/errors.d.ts.map +1 -0
- package/dist/transport/messaging/errors.js +64 -0
- package/dist/transport/messaging/errors.js.map +1 -0
- package/dist/{endpoint/protocol → transport/messaging}/evidence.d.ts +3 -3
- package/dist/{endpoint/protocol → transport/messaging}/evidence.d.ts.map +1 -1
- package/dist/{endpoint/protocol → transport/messaging}/evidence.js +1 -1
- package/dist/transport/messaging/evidence.js.map +1 -0
- package/dist/{endpoint/engine.d.ts → transport/messaging/index.d.ts} +4 -4
- package/dist/transport/messaging/index.d.ts.map +1 -0
- package/dist/{endpoint/engine.js → transport/messaging/index.js} +14 -9
- package/dist/transport/messaging/index.js.map +1 -0
- package/dist/transport/messaging/message.d.ts +112 -0
- package/dist/transport/messaging/message.d.ts.map +1 -0
- package/dist/transport/messaging/message.js +39 -0
- package/dist/transport/messaging/message.js.map +1 -0
- package/dist/{endpoint → transport/messaging}/recovery/barrier.d.ts +1 -1
- package/dist/transport/messaging/recovery/barrier.d.ts.map +1 -0
- package/dist/transport/messaging/recovery/barrier.js.map +1 -0
- package/dist/{endpoint/recovery/store-evidence.d.ts → transport/messaging/recovery/evidence.d.ts} +5 -5
- package/dist/transport/messaging/recovery/evidence.d.ts.map +1 -0
- package/dist/{endpoint/recovery/store-evidence.js → transport/messaging/recovery/evidence.js} +3 -3
- package/dist/transport/messaging/recovery/evidence.js.map +1 -0
- package/dist/{endpoint → transport/messaging}/recovery/index.d.ts +4 -4
- package/dist/transport/messaging/recovery/index.d.ts.map +1 -0
- package/dist/{endpoint → transport/messaging}/recovery/index.js +29 -25
- package/dist/transport/messaging/recovery/index.js.map +1 -0
- package/dist/{endpoint/recovery/store.d.ts → transport/messaging/recovery/persistence.d.ts} +5 -5
- package/dist/transport/messaging/recovery/persistence.d.ts.map +1 -0
- package/dist/{endpoint/recovery/store.js → transport/messaging/recovery/persistence.js} +4 -4
- package/dist/transport/messaging/recovery/persistence.js.map +1 -0
- package/dist/{endpoint/recovery/reanchor/empty.d.ts → transport/messaging/recovery/reanchor-empty.d.ts} +6 -6
- package/dist/transport/messaging/recovery/reanchor-empty.d.ts.map +1 -0
- package/dist/{endpoint/recovery/reanchor/empty.js → transport/messaging/recovery/reanchor-empty.js} +4 -4
- package/dist/transport/messaging/recovery/reanchor-empty.js.map +1 -0
- package/dist/{endpoint/recovery/reanchor/index.d.ts → transport/messaging/recovery/reanchor.d.ts} +4 -4
- package/dist/transport/messaging/recovery/reanchor.d.ts.map +1 -0
- package/dist/{endpoint/recovery/reanchor/index.js → transport/messaging/recovery/reanchor.js} +29 -14
- package/dist/transport/messaging/recovery/reanchor.js.map +1 -0
- package/dist/{endpoint → transport/messaging}/recovery/state.d.ts +5 -5
- package/dist/transport/messaging/recovery/state.d.ts.map +1 -0
- package/dist/{endpoint → transport/messaging}/recovery/state.js +2 -2
- package/dist/transport/messaging/recovery/state.js.map +1 -0
- package/dist/{endpoint/engine-send.d.ts → transport/messaging/send.d.ts} +5 -4
- package/dist/transport/messaging/send.d.ts.map +1 -0
- package/dist/{endpoint/engine-send.js → transport/messaging/send.js} +4 -4
- package/dist/transport/messaging/send.js.map +1 -0
- package/dist/{endpoint/engine-types.d.ts → transport/messaging/types.d.ts} +7 -5
- package/dist/transport/messaging/types.d.ts.map +1 -0
- package/dist/{endpoint/engine-types.js → transport/messaging/types.js} +1 -1
- package/dist/{endpoint/engine-types.js.map → transport/messaging/types.js.map} +1 -1
- package/dist/transport/router/index.d.ts.map +1 -0
- package/dist/{endpoint/router-worker → transport/router}/index.js +1 -1
- package/dist/transport/router/index.js.map +1 -0
- package/dist/transport/router/outage.d.ts.map +1 -0
- package/dist/transport/router/outage.js.map +1 -0
- package/dist/{endpoint/router-worker → transport/router}/types.d.ts +2 -2
- package/dist/transport/router/types.d.ts.map +1 -0
- package/dist/transport/router/types.js.map +1 -0
- package/dist/{endpoint/representation-canonical.d.ts → transport/wire/canonical.d.ts} +1 -1
- package/dist/transport/wire/canonical.d.ts.map +1 -0
- package/dist/{endpoint/representation-canonical.js → transport/wire/canonical.js} +1 -1
- package/dist/transport/wire/canonical.js.map +1 -0
- package/dist/{endpoint/representation-codec.d.ts → transport/wire/codec.d.ts} +5 -6
- package/dist/transport/wire/codec.d.ts.map +1 -0
- package/dist/{endpoint/representation-codec.js → transport/wire/codec.js} +5 -24
- package/dist/transport/wire/codec.js.map +1 -0
- package/dist/transport/wire/index.d.ts +7 -0
- package/dist/transport/wire/index.d.ts.map +1 -0
- package/dist/transport/wire/index.js +10 -0
- package/dist/transport/wire/index.js.map +1 -0
- package/dist/{endpoint/representation-schemas.d.ts → transport/wire/schemas.d.ts} +76 -98
- package/dist/transport/wire/schemas.d.ts.map +1 -0
- package/dist/{endpoint/representation-schemas.js → transport/wire/schemas.js} +7 -19
- package/dist/transport/wire/schemas.js.map +1 -0
- package/dist/transport/wire/values.d.ts +79 -0
- package/dist/transport/wire/values.d.ts.map +1 -0
- package/dist/transport/wire/values.js +115 -0
- package/dist/transport/wire/values.js.map +1 -0
- package/dist/{endpoint/representation-verification.d.ts → transport/wire/verification.d.ts} +4 -4
- package/dist/transport/wire/verification.d.ts.map +1 -0
- package/dist/{endpoint/representation-verification.js → transport/wire/verification.js} +5 -4
- package/dist/transport/wire/verification.js.map +1 -0
- package/package.json +6 -6
- package/dist/client-runtime.d.ts.map +0 -1
- package/dist/client-runtime.js.map +0 -1
- package/dist/contract.d.ts +0 -721
- package/dist/contract.d.ts.map +0 -1
- package/dist/contract.js +0 -441
- package/dist/contract.js.map +0 -1
- package/dist/contract.types-check.d.ts.map +0 -1
- package/dist/contract.types-check.js.map +0 -1
- package/dist/daemon/configuration.d.ts.map +0 -1
- package/dist/daemon/configuration.js.map +0 -1
- package/dist/daemon/management.d.ts.map +0 -1
- package/dist/daemon/management.js.map +0 -1
- package/dist/daemon/registration.d.ts.map +0 -1
- package/dist/daemon/registration.js.map +0 -1
- package/dist/daemon/runtime/activation.d.ts.map +0 -1
- package/dist/daemon/runtime/activation.js.map +0 -1
- package/dist/daemon/runtime/controller.d.ts.map +0 -1
- package/dist/daemon/runtime/controller.js +0 -138
- package/dist/daemon/runtime/controller.js.map +0 -1
- package/dist/daemon/runtime/history-export.d.ts +0 -33
- package/dist/daemon/runtime/history-export.d.ts.map +0 -1
- package/dist/daemon/runtime/history-export.js.map +0 -1
- package/dist/daemon/runtime/index.d.ts.map +0 -1
- package/dist/daemon/runtime/index.js.map +0 -1
- package/dist/daemon/runtime/pending-delivery.d.ts +0 -49
- package/dist/daemon/runtime/pending-delivery.d.ts.map +0 -1
- package/dist/daemon/runtime/pending-delivery.js.map +0 -1
- package/dist/daemon/runtime/protocol.d.ts.map +0 -1
- package/dist/daemon/runtime/protocol.js.map +0 -1
- package/dist/endpoint/addressing/index.d.ts.map +0 -1
- package/dist/endpoint/addressing/index.js.map +0 -1
- package/dist/endpoint/collective/operation.d.ts.map +0 -1
- package/dist/endpoint/collective/operation.js.map +0 -1
- package/dist/endpoint/collective/received-request.d.ts.map +0 -1
- package/dist/endpoint/collective/received-request.js.map +0 -1
- package/dist/endpoint/collective/request-sends.d.ts.map +0 -1
- package/dist/endpoint/collective/request-sends.js.map +0 -1
- package/dist/endpoint/collective/shared-answers.d.ts.map +0 -1
- package/dist/endpoint/collective/shared-answers.js.map +0 -1
- package/dist/endpoint/collective/validation.d.ts.map +0 -1
- package/dist/endpoint/collective/validation.js.map +0 -1
- package/dist/endpoint/collective/wire.d.ts.map +0 -1
- package/dist/endpoint/collective/wire.js.map +0 -1
- package/dist/endpoint/engine-dissemination.d.ts.map +0 -1
- package/dist/endpoint/engine-dissemination.js.map +0 -1
- package/dist/endpoint/engine-durability.js.map +0 -1
- package/dist/endpoint/engine-send.d.ts.map +0 -1
- package/dist/endpoint/engine-send.js.map +0 -1
- package/dist/endpoint/engine-types.d.ts.map +0 -1
- package/dist/endpoint/engine.d.ts.map +0 -1
- package/dist/endpoint/engine.js.map +0 -1
- package/dist/endpoint/protocol/evidence.js.map +0 -1
- package/dist/endpoint/protocol/index.d.ts.map +0 -1
- package/dist/endpoint/protocol/index.js.map +0 -1
- package/dist/endpoint/recovery/barrier.d.ts.map +0 -1
- package/dist/endpoint/recovery/barrier.js.map +0 -1
- package/dist/endpoint/recovery/index.d.ts.map +0 -1
- package/dist/endpoint/recovery/index.js.map +0 -1
- package/dist/endpoint/recovery/reanchor/empty.d.ts.map +0 -1
- package/dist/endpoint/recovery/reanchor/empty.js.map +0 -1
- package/dist/endpoint/recovery/reanchor/index.d.ts.map +0 -1
- package/dist/endpoint/recovery/reanchor/index.js.map +0 -1
- package/dist/endpoint/recovery/state.d.ts.map +0 -1
- package/dist/endpoint/recovery/state.js.map +0 -1
- package/dist/endpoint/recovery/store-evidence.d.ts.map +0 -1
- package/dist/endpoint/recovery/store-evidence.js.map +0 -1
- package/dist/endpoint/recovery/store.d.ts.map +0 -1
- package/dist/endpoint/recovery/store.js.map +0 -1
- package/dist/endpoint/representation-canonical.d.ts.map +0 -1
- package/dist/endpoint/representation-canonical.js.map +0 -1
- package/dist/endpoint/representation-codec.d.ts.map +0 -1
- package/dist/endpoint/representation-codec.js.map +0 -1
- package/dist/endpoint/representation-schemas.d.ts.map +0 -1
- package/dist/endpoint/representation-schemas.js.map +0 -1
- package/dist/endpoint/representation-verification.d.ts.map +0 -1
- package/dist/endpoint/representation-verification.js.map +0 -1
- package/dist/endpoint/representation.d.ts +0 -6
- package/dist/endpoint/representation.d.ts.map +0 -1
- package/dist/endpoint/representation.js +0 -8
- package/dist/endpoint/representation.js.map +0 -1
- package/dist/endpoint/router-worker/index.d.ts.map +0 -1
- package/dist/endpoint/router-worker/index.js.map +0 -1
- package/dist/endpoint/router-worker/outage.d.ts.map +0 -1
- package/dist/endpoint/router-worker/outage.js.map +0 -1
- package/dist/endpoint/router-worker/types.d.ts.map +0 -1
- package/dist/endpoint/router-worker/types.js.map +0 -1
- package/dist/endpoint/store/anchors.d.ts.map +0 -1
- package/dist/endpoint/store/anchors.js.map +0 -1
- package/dist/endpoint/store/database/index.d.ts.map +0 -1
- package/dist/endpoint/store/database/index.js.map +0 -1
- package/dist/endpoint/store/database/schema.d.ts.map +0 -1
- package/dist/endpoint/store/database/schema.js.map +0 -1
- package/dist/endpoint/store/database/values.d.ts.map +0 -1
- package/dist/endpoint/store/database/values.js.map +0 -1
- package/dist/endpoint/store/deliveries.d.ts.map +0 -1
- package/dist/endpoint/store/deliveries.js.map +0 -1
- package/dist/endpoint/store/dissemination.d.ts.map +0 -1
- package/dist/endpoint/store/dissemination.js.map +0 -1
- package/dist/endpoint/store/index.d.ts.map +0 -1
- package/dist/endpoint/store/index.js.map +0 -1
- package/dist/endpoint/store/management.d.ts.map +0 -1
- package/dist/endpoint/store/management.js.map +0 -1
- package/dist/endpoint/store/outbound.d.ts.map +0 -1
- package/dist/endpoint/store/outbound.js.map +0 -1
- package/dist/endpoint/store/records.d.ts.map +0 -1
- package/dist/endpoint/store/records.js.map +0 -1
- package/dist/endpoint/store/rows/index.d.ts.map +0 -1
- package/dist/endpoint/store/rows/index.js.map +0 -1
- package/dist/endpoint/store/types.d.ts.map +0 -1
- package/dist/endpoint/store/types.js.map +0 -1
- package/dist/endpoint/store.d.ts +0 -10
- package/dist/endpoint/store.d.ts.map +0 -1
- package/dist/endpoint/store.js +0 -6
- package/dist/endpoint/store.js.map +0 -1
- package/dist/harness-mcp-contract.d.ts.map +0 -1
- package/dist/harness-mcp-contract.js +0 -113
- package/dist/harness-mcp-contract.js.map +0 -1
- package/dist/harness-mcp-http.d.ts.map +0 -1
- package/dist/harness-mcp-http.js.map +0 -1
- package/dist/harness-mcp-subscription.d.ts +0 -30
- package/dist/harness-mcp-subscription.d.ts.map +0 -1
- package/dist/harness-mcp-subscription.js +0 -361
- package/dist/harness-mcp-subscription.js.map +0 -1
- package/dist/harness-mcp-wire.d.ts.map +0 -1
- package/dist/harness-mcp-wire.js.map +0 -1
- package/dist/management-runtime.d.ts.map +0 -1
- package/dist/management-runtime.js.map +0 -1
- package/dist/message-text.d.ts.map +0 -1
- package/dist/message-text.js.map +0 -1
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js.map +0 -1
- package/dist/server.types-check.d.ts.map +0 -1
- package/dist/server.types-check.js.map +0 -1
- /package/dist/{endpoint/store → store}/anchors.d.ts +0 -0
- /package/dist/{endpoint/store → store}/anchors.js +0 -0
- /package/dist/{endpoint/store → store}/database/index.d.ts +0 -0
- /package/dist/{endpoint/store → store}/database/index.js +0 -0
- /package/dist/{endpoint/store → store}/database/schema.d.ts +0 -0
- /package/dist/{endpoint/store → store}/database/values.d.ts +0 -0
- /package/dist/{endpoint/store → store}/database/values.js +0 -0
- /package/dist/{endpoint/store → store}/dissemination.d.ts +0 -0
- /package/dist/{endpoint/store → store}/dissemination.js +0 -0
- /package/dist/{endpoint/store → store}/outbound.d.ts +0 -0
- /package/dist/{endpoint/store → store}/outbound.js +0 -0
- /package/dist/{endpoint/store → store}/records.d.ts +0 -0
- /package/dist/{endpoint/store → store}/records.js +0 -0
- /package/dist/{endpoint/store → store}/rows/index.d.ts +0 -0
- /package/dist/{endpoint/store → store}/rows/index.js +0 -0
- /package/dist/{endpoint/store → store}/types.js +0 -0
- /package/dist/{endpoint/collective → transport/collectives}/received-request.js +0 -0
- /package/dist/{endpoint/collective → transport/collectives}/request-sends.js +0 -0
- /package/dist/{endpoint/collective → transport/collectives}/shared-answers.js +0 -0
- /package/dist/{endpoint → transport/messaging}/recovery/barrier.js +0 -0
- /package/dist/{endpoint/router-worker → transport/router}/index.d.ts +0 -0
- /package/dist/{endpoint/router-worker → transport/router}/outage.d.ts +0 -0
- /package/dist/{endpoint/router-worker → transport/router}/outage.js +0 -0
- /package/dist/{endpoint/router-worker → transport/router}/types.js +0 -0
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/** @file MCP framing of the harness operations: tool names, send metadata, Events constants, and JSON Schema projections. */
|
|
2
|
+
import { Effect, JSONSchema, Schema, } from "effect";
|
|
3
|
+
import { harnessAcknowledgeDeliveryRequestSchema, harnessSendArgumentsSchema, harnessSendOptionsSchema, harnessSendResultSchema, inboxRequestSchema, inboxResultSchema, readSendRequestSchema, readSendResultSchema, } from "../../delivery/operations.js";
|
|
4
|
+
import { InboundItem } from "../../transport/collectives/inbound.js";
|
|
5
|
+
import { exactStruct } from "../../transport/wire/values.js";
|
|
6
|
+
/** A content-free wakeup to read the classified runtime inbox. */
|
|
7
|
+
export const INBOX_PENDING_EVENT = "moltzap.inbox.pending";
|
|
8
|
+
/** Classified content delivered directly to a webhook consumer. */
|
|
9
|
+
export const INBOX_ITEM_EVENT = "moltzap.inbox.item";
|
|
10
|
+
/** Semantic retrieval of content referenced by a large webhook event. */
|
|
11
|
+
export const HARNESS_READ_EVENT_TOOL = "read_event";
|
|
12
|
+
/** Adapter operation performing one collective operation. */
|
|
13
|
+
export const HARNESS_SEND_TOOL = "send_message";
|
|
14
|
+
/** Runtime send options travel outside model-generated tool arguments. */
|
|
15
|
+
export const HARNESS_SEND_META_KEY = "xyz.moltzap/send";
|
|
16
|
+
/** Retires an inbox item after its host-specific acceptance contract is met. */
|
|
17
|
+
export const HARNESS_ACKNOWLEDGE_DELIVERY_TOOL = "acknowledge_delivery";
|
|
18
|
+
/** Runtime read of classified deliveries whose host acceptance is pending. */
|
|
19
|
+
export const HARNESS_READ_INBOX_TOOL = "read_inbox";
|
|
20
|
+
/** Lookup of a retained invocation, distinct from collective completion. */
|
|
21
|
+
export const HARNESS_READ_SEND_TOOL = "read_send";
|
|
22
|
+
const exact = {
|
|
23
|
+
exact: true,
|
|
24
|
+
onExcessProperty: "error",
|
|
25
|
+
};
|
|
26
|
+
const exactEmptyObject = Schema.Record({
|
|
27
|
+
key: Schema.String,
|
|
28
|
+
value: Schema.Never,
|
|
29
|
+
}).annotations({ parseOptions: exact });
|
|
30
|
+
/** Inline content or an explicit reference without truncating stored content. */
|
|
31
|
+
const itemEventDataSchema = Schema.Union(exactStruct({ kind: Schema.Literal("item"), item: InboundItem }), exactStruct({
|
|
32
|
+
kind: Schema.Literal("reference"),
|
|
33
|
+
itemKind: Schema.Literal("multicast", "collectiveRequest", "collectiveResult", "operationFailed"),
|
|
34
|
+
bytes: Schema.NonNegativeInt,
|
|
35
|
+
}));
|
|
36
|
+
/** Classified webhook payload advertised through MCP event discovery. */
|
|
37
|
+
export const itemEventDataJsonSchema = JSONSchema.make(itemEventDataSchema, {
|
|
38
|
+
target: "jsonSchema2020-12",
|
|
39
|
+
});
|
|
40
|
+
const harnessEmptyResultSchema = exactEmptyObject;
|
|
41
|
+
const harnessSendMetadataSchema = Schema.Struct({
|
|
42
|
+
[HARNESS_SEND_META_KEY]: Schema.optionalWith(harnessSendOptionsSchema, {
|
|
43
|
+
exact: true,
|
|
44
|
+
}),
|
|
45
|
+
});
|
|
46
|
+
/** JSON Schema for the runtime inbox pagination arguments. */
|
|
47
|
+
export const harnessReadInboxRequestJsonSchema = JSONSchema.make(inboxRequestSchema, { target: "jsonSchema2020-12" });
|
|
48
|
+
/** JSON Schema for classified inbox pages. */
|
|
49
|
+
export const harnessReadInboxResultJsonSchema = JSONSchema.make(inboxResultSchema, { target: "jsonSchema2020-12" });
|
|
50
|
+
/** JSON Schema for keyed send lookup. */
|
|
51
|
+
export const harnessReadSendRequestJsonSchema = JSONSchema.make(readSendRequestSchema, { target: "jsonSchema2020-12" });
|
|
52
|
+
/** JSON Schema for observed send state. */
|
|
53
|
+
export const harnessReadSendResultJsonSchema = JSONSchema.make(readSendResultSchema, { target: "jsonSchema2020-12" });
|
|
54
|
+
/**
|
|
55
|
+
* Validate semantic arguments separately from runtime-owned send options.
|
|
56
|
+
* Unrelated SDK metadata belongs to the transport and is not interpreted here.
|
|
57
|
+
* @param toolArguments Model-visible arguments.
|
|
58
|
+
* @param metadata The SDK request metadata, if supplied.
|
|
59
|
+
* @returns One validated invocation for the daemon's existing store.
|
|
60
|
+
*/
|
|
61
|
+
export function decodeHarnessSendCall(toolArguments, metadata) {
|
|
62
|
+
return Effect.gen(function* () {
|
|
63
|
+
const args = yield* Schema.decodeUnknown(harnessSendArgumentsSchema)(toolArguments);
|
|
64
|
+
const runtime = yield* Schema.decodeUnknown(harnessSendMetadataSchema)(metadata === undefined ? {} : metadata);
|
|
65
|
+
return { ...args, ...runtime[HARNESS_SEND_META_KEY] };
|
|
66
|
+
}).pipe(Effect.withSpan("decodeHarnessSendCall"));
|
|
67
|
+
}
|
|
68
|
+
/** JSON Schema advertised for the delivery acknowledgment operation. */
|
|
69
|
+
export const harnessAcknowledgeDeliveryRequestJsonSchema = JSONSchema.make(harnessAcknowledgeDeliveryRequestSchema, { target: "jsonSchema2020-12" });
|
|
70
|
+
/** JSON Schema advertised for `send_message` arguments. */
|
|
71
|
+
export const harnessSendArgumentsJsonSchema = JSONSchema.make(harnessSendArgumentsSchema, { target: "jsonSchema2020-12" });
|
|
72
|
+
/** JSON Schema advertised for `send_message` results. */
|
|
73
|
+
export const harnessSendResultJsonSchema = JSONSchema.make(harnessSendResultSchema, { target: "jsonSchema2020-12" });
|
|
74
|
+
/** JSON Schema advertised for empty adapter-operation results. */
|
|
75
|
+
export const harnessEmptyResultJsonSchema = JSONSchema.make(harnessEmptyResultSchema, { target: "jsonSchema2020-12" });
|
|
76
|
+
/** Closed wire failure vocabularies prevent internal diagnostics from escaping. */
|
|
77
|
+
export const harnessFailureReasons = {
|
|
78
|
+
RUNTIME_READ_REASONS: new Set([
|
|
79
|
+
"not-registered",
|
|
80
|
+
"invalid-continuation",
|
|
81
|
+
"invalid-event",
|
|
82
|
+
"unknown-event",
|
|
83
|
+
"persistence-failed",
|
|
84
|
+
]),
|
|
85
|
+
REGISTER_REASONS: new Set([
|
|
86
|
+
"dependency-unavailable",
|
|
87
|
+
"persistence-failed",
|
|
88
|
+
"incompatible-daemon",
|
|
89
|
+
]),
|
|
90
|
+
STATUS_REASONS: new Set(["persistence-failed", "incompatible-daemon"]),
|
|
91
|
+
SEARCH_AGENTS_REASONS: new Set([
|
|
92
|
+
"not-registered",
|
|
93
|
+
"dependency-unavailable",
|
|
94
|
+
"incompatible-daemon",
|
|
95
|
+
]),
|
|
96
|
+
SEARCH_CONVERSATIONS_REASONS: new Set([
|
|
97
|
+
"not-registered",
|
|
98
|
+
"invalid-address",
|
|
99
|
+
"persistence-failed",
|
|
100
|
+
]),
|
|
101
|
+
READ_CONVERSATION_REASONS: new Set([
|
|
102
|
+
"not-registered",
|
|
103
|
+
"invalid-address",
|
|
104
|
+
"unknown-agent",
|
|
105
|
+
"invalid-continuation",
|
|
106
|
+
"history-gap",
|
|
107
|
+
"persistence-failed",
|
|
108
|
+
]),
|
|
109
|
+
ACKNOWLEDGE_DELIVERY_REASONS: new Set([
|
|
110
|
+
"unknown-delivery",
|
|
111
|
+
"delivery-conflict",
|
|
112
|
+
"persistence-failed",
|
|
113
|
+
"transport-failed",
|
|
114
|
+
]),
|
|
115
|
+
};
|
|
116
|
+
//# sourceMappingURL=schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/endpoint/mcp/schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,25 +1,28 @@
|
|
|
1
1
|
/** @file Official MCP tool catalog and private Harness operation projection. */
|
|
2
|
-
import { type Implementation } from "@modelcontextprotocol/server";
|
|
2
|
+
import { type Implementation, type McpHttpHandler } from "@modelcontextprotocol/server";
|
|
3
3
|
import { Effect } from "effect";
|
|
4
|
-
import type
|
|
5
|
-
import type
|
|
6
|
-
import { type
|
|
7
|
-
import { type HarnessMcpSubscriptionHandler } from "./harness-mcp-subscription.js";
|
|
8
|
-
import { type ManagementReadConversationRequest, type ManagementReadConversationResult, type ManagementRegisterRequest, type ManagementRegisterResult, type ManagementSearchAgentsRequest, type ManagementSearchAgentsResult, type ManagementSearchConversationsRequest, type ManagementSearchConversationsResult, type ManagementStatusResult } from "./management-runtime.js";
|
|
4
|
+
import { type DeliveryOperations, type EventStore } from "../../delivery/operations.js";
|
|
5
|
+
import { type HarnessMcpCredentials } from "./auth.js";
|
|
6
|
+
import { type ManagementReadConversationRequest, type ManagementReadConversationResult, type ManagementRegisterRequest, type ManagementRegisterResult, type ManagementSearchAgentsRequest, type ManagementSearchAgentsResult, type ManagementSearchConversationsRequest, type ManagementSearchConversationsResult, type ManagementStatusResult } from "./owner-tools.js";
|
|
9
7
|
type ClosedOperationError = Readonly<{
|
|
10
8
|
readonly reason: string;
|
|
11
9
|
}>;
|
|
12
10
|
/** Structural daemon operations projected onto the loopback MCP boundary. */
|
|
13
|
-
export interface HarnessMcpOperations {
|
|
11
|
+
export interface HarnessMcpOperations extends DeliveryOperations {
|
|
14
12
|
readonly readStatus: () => Effect.Effect<ManagementStatusResult, ClosedOperationError>;
|
|
15
13
|
readonly register: (input: ManagementRegisterRequest) => Effect.Effect<ManagementRegisterResult, ClosedOperationError>;
|
|
16
14
|
readonly searchAgents: (input: ManagementSearchAgentsRequest) => Effect.Effect<ManagementSearchAgentsResult, ClosedOperationError>;
|
|
17
15
|
readonly searchConversations: (input: ManagementSearchConversationsRequest) => Effect.Effect<ManagementSearchConversationsResult, ClosedOperationError>;
|
|
18
16
|
readonly readConversation: (input: ManagementReadConversationRequest) => Effect.Effect<ManagementReadConversationResult, ClosedOperationError>;
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
}
|
|
18
|
+
/** Official handler with one content-free daemon notification edge. */
|
|
19
|
+
export interface HarnessMcpEventHandler extends McpHttpHandler {
|
|
20
|
+
readonly hasActiveSubscription: () => boolean;
|
|
21
|
+
readonly notifyPending: () => boolean;
|
|
21
22
|
}
|
|
22
23
|
interface HarnessMcpHandlerOptions {
|
|
24
|
+
readonly eventStore?: EventStore;
|
|
25
|
+
readonly credentials?: HarnessMcpCredentials;
|
|
23
26
|
readonly implementation: Implementation;
|
|
24
27
|
readonly operations: HarnessMcpOperations;
|
|
25
28
|
readonly onSubscriptionActiveChange?: (active: boolean) => void;
|
|
@@ -28,10 +31,10 @@ interface HarnessMcpHandlerOptions {
|
|
|
28
31
|
readonly keepAliveMillis?: number;
|
|
29
32
|
}
|
|
30
33
|
/**
|
|
31
|
-
* Create one
|
|
32
|
-
* @param options
|
|
33
|
-
* @returns Handler whose catalog
|
|
34
|
+
* Create one official MCP handler with explicit event resource ownership.
|
|
35
|
+
* @param options Daemon operations, optional credentials and callback persistence.
|
|
36
|
+
* @returns Handler whose catalog changes in place after registration.
|
|
34
37
|
*/
|
|
35
|
-
export declare const makeHarnessMcpHttpHandler: (options: HarnessMcpHandlerOptions) => Effect.Effect<
|
|
38
|
+
export declare const makeHarnessMcpHttpHandler: (options: HarnessMcpHandlerOptions) => Effect.Effect<HarnessMcpEventHandler, ClosedOperationError>;
|
|
36
39
|
export {};
|
|
37
|
-
//# sourceMappingURL=
|
|
40
|
+
//# sourceMappingURL=tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/endpoint/mcp/tools.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAEhF,OAAO,EAGL,KAAK,cAAc,EAEnB,KAAK,cAAc,EAKpB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAEL,MAAM,EAQP,MAAM,QAAQ,CAAC;AAGhB,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,UAAU,EAYhB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAEL,KAAK,qBAAqB,EAG3B,MAAM,WAAW,CAAC;AASnB,OAAO,EACL,KAAK,iCAAiC,EAEtC,KAAK,gCAAgC,EAErC,KAAK,yBAAyB,EAE9B,KAAK,wBAAwB,EAE7B,KAAK,6BAA6B,EAElC,KAAK,4BAA4B,EAEjC,KAAK,oCAAoC,EAEzC,KAAK,mCAAmC,EAExC,KAAK,sBAAsB,EAE5B,MAAM,kBAAkB,CAAC;AA4B1B,KAAK,oBAAoB,GAAG,QAAQ,CAAC;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAElE,6EAA6E;AAC7E,MAAM,WAAW,oBAAqB,SAAQ,kBAAkB;IAC9D,QAAQ,CAAC,UAAU,EAAE,MAAM,MAAM,CAAC,MAAM,CACtC,sBAAsB,EACtB,oBAAoB,CACrB,CAAC;IACF,QAAQ,CAAC,QAAQ,EAAE,CACjB,KAAK,EAAE,yBAAyB,KAC7B,MAAM,CAAC,MAAM,CAAC,wBAAwB,EAAE,oBAAoB,CAAC,CAAC;IACnE,QAAQ,CAAC,YAAY,EAAE,CACrB,KAAK,EAAE,6BAA6B,KACjC,MAAM,CAAC,MAAM,CAAC,4BAA4B,EAAE,oBAAoB,CAAC,CAAC;IACvE,QAAQ,CAAC,mBAAmB,EAAE,CAC5B,KAAK,EAAE,oCAAoC,KACxC,MAAM,CAAC,MAAM,CAAC,mCAAmC,EAAE,oBAAoB,CAAC,CAAC;IAC9E,QAAQ,CAAC,gBAAgB,EAAE,CACzB,KAAK,EAAE,iCAAiC,KACrC,MAAM,CAAC,MAAM,CAAC,gCAAgC,EAAE,oBAAoB,CAAC,CAAC;CAC5E;AAED,uEAAuE;AACvE,MAAM,WAAW,sBAAuB,SAAQ,cAAc;IAC5D,QAAQ,CAAC,qBAAqB,EAAE,MAAM,OAAO,CAAC;IAC9C,QAAQ,CAAC,aAAa,EAAE,MAAM,OAAO,CAAC;CACvC;AAED,UAAU,wBAAwB;IAChC,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IACjC,QAAQ,CAAC,WAAW,CAAC,EAAE,qBAAqB,CAAC;IAC7C,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,oBAAoB,CAAC;IAC1C,QAAQ,CAAC,0BAA0B,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAChE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC1C,wEAAwE;IACxE,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC;AAk6BD;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,YAC3B,wBAAwB,KAChC,MAAM,CAAC,MAAM,CAAC,sBAAsB,EAAE,oBAAoB,CASN,CAAC"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
/** @file Official MCP tool catalog and private Harness operation projection. */
|
|
2
2
|
import { createMcpHandler, fromJsonSchema, McpServer, ProtocolError, ProtocolErrorCode, } from "@modelcontextprotocol/server";
|
|
3
|
-
import { Cause, Effect, Exit, JSONSchema, Option, Schema } from "effect";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
3
|
+
import { Cause, Effect, Exit, JSONSchema, Layer, Option, Schema, Scope, } from "effect";
|
|
4
|
+
import { decodeHarnessReadSendRequest, readEventRequestSchema, readEventResultSchema, sendErrorData, } from "../../delivery/operations.js";
|
|
5
|
+
import { authenticateHarnessRequest, mayInvokeHarnessTool, } from "./auth.js";
|
|
6
|
+
import { makeHarnessEvents, makeWebhookEvents, runEventOperation, webhookHttpClientLayer, webhookStatusJsonSchema, } from "./events.js";
|
|
7
|
+
import { managementReadConversationRequestSchema, managementReadConversationResultSchema, managementRegisterRequestSchema, managementRegisterResultSchema, managementSearchAgentsRequestSchema, managementSearchAgentsResultSchema, managementSearchConversationsRequestSchema, managementSearchConversationsResultSchema, managementStatusResultSchema, } from "./owner-tools.js";
|
|
8
|
+
import { decodeHarnessSendCall, HARNESS_ACKNOWLEDGE_DELIVERY_TOOL, HARNESS_READ_EVENT_TOOL, HARNESS_READ_INBOX_TOOL, HARNESS_READ_SEND_TOOL, HARNESS_SEND_TOOL, harnessAcknowledgeDeliveryRequestJsonSchema, harnessEmptyResultJsonSchema, harnessFailureReasons, harnessReadInboxRequestJsonSchema, harnessReadInboxResultJsonSchema, harnessReadSendRequestJsonSchema, harnessReadSendResultJsonSchema, harnessSendArgumentsJsonSchema, harnessSendResultJsonSchema, } from "./schemas.js";
|
|
7
9
|
/* eslint-disable agent-code-guard/async-keyword -- Official MCP factories and callbacks are Promise-native. */
|
|
8
10
|
const REGISTER_TOOL = "register";
|
|
9
11
|
const STATUS_TOOL = "status";
|
|
@@ -29,40 +31,17 @@ const searchConversationsInput = makeStandardSchema(makeJsonSchema(managementSea
|
|
|
29
31
|
const searchConversationsOutput = makeStandardSchema(makeJsonSchema(managementSearchConversationsResultSchema));
|
|
30
32
|
const readConversationInput = makeStandardSchema(makeJsonSchema(managementReadConversationRequestSchema));
|
|
31
33
|
const readConversationOutput = makeStandardSchema(makeJsonSchema(managementReadConversationResultSchema));
|
|
32
|
-
const sendInput = makeStandardSchema(
|
|
34
|
+
const sendInput = makeStandardSchema(harnessSendArgumentsJsonSchema);
|
|
33
35
|
const acknowledgeDeliveryInput = makeStandardSchema(harnessAcknowledgeDeliveryRequestJsonSchema);
|
|
34
36
|
const emptyOutput = makeStandardSchema(harnessEmptyResultJsonSchema);
|
|
35
37
|
const sendOutput = makeStandardSchema(harnessSendResultJsonSchema);
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
const
|
|
42
|
-
const SEARCH_AGENTS_REASONS =
|
|
43
|
-
"not-registered",
|
|
44
|
-
"dependency-unavailable",
|
|
45
|
-
"incompatible-daemon",
|
|
46
|
-
]);
|
|
47
|
-
const SEARCH_CONVERSATIONS_REASONS = new Set([
|
|
48
|
-
"not-registered",
|
|
49
|
-
"invalid-address",
|
|
50
|
-
"persistence-failed",
|
|
51
|
-
]);
|
|
52
|
-
const READ_CONVERSATION_REASONS = new Set([
|
|
53
|
-
"not-registered",
|
|
54
|
-
"invalid-address",
|
|
55
|
-
"unknown-agent",
|
|
56
|
-
"invalid-continuation",
|
|
57
|
-
"history-gap",
|
|
58
|
-
"persistence-failed",
|
|
59
|
-
]);
|
|
60
|
-
const ACKNOWLEDGE_DELIVERY_REASONS = new Set([
|
|
61
|
-
"unknown-delivery",
|
|
62
|
-
"delivery-conflict",
|
|
63
|
-
"persistence-failed",
|
|
64
|
-
"transport-failed",
|
|
65
|
-
]);
|
|
38
|
+
const readEventInput = makeStandardSchema(makeJsonSchema(readEventRequestSchema));
|
|
39
|
+
const readEventOutput = makeStandardSchema(makeJsonSchema(readEventResultSchema));
|
|
40
|
+
const readInboxInput = makeStandardSchema(harnessReadInboxRequestJsonSchema);
|
|
41
|
+
const readInboxOutput = makeStandardSchema(harnessReadInboxResultJsonSchema);
|
|
42
|
+
const readSendInput = makeStandardSchema(harnessReadSendRequestJsonSchema);
|
|
43
|
+
const readSendOutput = makeStandardSchema(harnessReadSendResultJsonSchema);
|
|
44
|
+
const { RUNTIME_READ_REASONS, REGISTER_REASONS, STATUS_REASONS, SEARCH_AGENTS_REASONS, SEARCH_CONVERSATIONS_REASONS, READ_CONVERSATION_REASONS, ACKNOWLEDGE_DELIVERY_REASONS, } = harnessFailureReasons;
|
|
66
45
|
const operationReason = (cause, allowed, fallback) => {
|
|
67
46
|
if (typeof cause !== "object" || cause === null || !("reason" in cause)) {
|
|
68
47
|
return fallback;
|
|
@@ -102,27 +81,6 @@ const runOperation = async (options) => {
|
|
|
102
81
|
}
|
|
103
82
|
return toolResult(outcome.value);
|
|
104
83
|
};
|
|
105
|
-
/**
|
|
106
|
-
* The error data a refused send carries: a collective failure keeps its id
|
|
107
|
-
* and the members or fields it names, so the loopback client rebuilds the
|
|
108
|
-
* same typed error the daemon raised.
|
|
109
|
-
*/
|
|
110
|
-
const sendErrorData = (error) => {
|
|
111
|
-
switch (error._tag) {
|
|
112
|
-
case "SendError":
|
|
113
|
-
return { reason: error.reason };
|
|
114
|
-
case "CollectiveError":
|
|
115
|
-
return {
|
|
116
|
-
reason: "collective-failed",
|
|
117
|
-
id: error.id,
|
|
118
|
-
failure: error.failure,
|
|
119
|
-
};
|
|
120
|
-
default: {
|
|
121
|
-
const exhaustive = error;
|
|
122
|
-
return exhaustive;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
};
|
|
126
84
|
// #ignore-sloppy-code-next-line[async-keyword]: MCP tool handlers are Promise callbacks, so this edge awaits Effect before returning the SDK result.
|
|
127
85
|
const runSendOperation = async (operation, signal) => {
|
|
128
86
|
const outcome = await Effect.runPromiseExit(operation, { signal });
|
|
@@ -182,7 +140,7 @@ const registerRegistrationTool = (server, operations, state) => {
|
|
|
182
140
|
return result;
|
|
183
141
|
});
|
|
184
142
|
};
|
|
185
|
-
const
|
|
143
|
+
const registerSearchAgentsTool = (server, operations) => {
|
|
186
144
|
server.registerTool(SEARCH_AGENTS_TOOL, { inputSchema: searchAgentsInput, outputSchema: searchAgentsOutput }, (input, context) => runOperation({
|
|
187
145
|
operation: operations.searchAgents(input),
|
|
188
146
|
label: "Agent search",
|
|
@@ -190,6 +148,9 @@ const registerReadTools = (server, operations) => {
|
|
|
190
148
|
fallbackReason: "dependency-unavailable",
|
|
191
149
|
signal: context.mcpReq.signal,
|
|
192
150
|
}));
|
|
151
|
+
};
|
|
152
|
+
const registerReadTools = (server, operations) => {
|
|
153
|
+
registerSearchAgentsTool(server, operations);
|
|
193
154
|
server.registerTool(SEARCH_CONVERSATIONS_TOOL, {
|
|
194
155
|
inputSchema: searchConversationsInput,
|
|
195
156
|
outputSchema: searchConversationsOutput,
|
|
@@ -211,8 +172,44 @@ const registerReadTools = (server, operations) => {
|
|
|
211
172
|
signal: context.mcpReq.signal,
|
|
212
173
|
}));
|
|
213
174
|
};
|
|
175
|
+
function registerSendTool(server, operations) {
|
|
176
|
+
server.registerTool(HARNESS_SEND_TOOL, { inputSchema: sendInput, outputSchema: sendOutput }, (input, context) => handleSendToolCall({
|
|
177
|
+
name: HARNESS_SEND_TOOL,
|
|
178
|
+
toolArguments: input,
|
|
179
|
+
metadata: context.mcpReq._meta,
|
|
180
|
+
signal: context.mcpReq.signal,
|
|
181
|
+
}, operations));
|
|
182
|
+
}
|
|
183
|
+
const registerEventReadTool = (server, operations) => {
|
|
184
|
+
server.registerTool(HARNESS_READ_EVENT_TOOL, {
|
|
185
|
+
description: "Read the original full content of a MoltZap event by eventId. This read has no delivery or acknowledgment side effects.",
|
|
186
|
+
inputSchema: readEventInput,
|
|
187
|
+
outputSchema: readEventOutput,
|
|
188
|
+
}, (input, context) => runOperation({
|
|
189
|
+
operation: operations.readEvent(input),
|
|
190
|
+
label: "Event read",
|
|
191
|
+
allowedReasons: RUNTIME_READ_REASONS,
|
|
192
|
+
fallbackReason: "persistence-failed",
|
|
193
|
+
signal: context.mcpReq.signal,
|
|
194
|
+
}));
|
|
195
|
+
};
|
|
214
196
|
const registerAdapterTools = (server, operations) => {
|
|
215
|
-
server.registerTool(
|
|
197
|
+
server.registerTool(HARNESS_READ_INBOX_TOOL, { inputSchema: readInboxInput, outputSchema: readInboxOutput }, (input, context) => runOperation({
|
|
198
|
+
operation: operations.readInbox(input),
|
|
199
|
+
label: "Inbox read",
|
|
200
|
+
allowedReasons: RUNTIME_READ_REASONS,
|
|
201
|
+
fallbackReason: "persistence-failed",
|
|
202
|
+
signal: context.mcpReq.signal,
|
|
203
|
+
}));
|
|
204
|
+
server.registerTool(HARNESS_READ_SEND_TOOL, { inputSchema: readSendInput, outputSchema: readSendOutput }, (input, context) => runOperation({
|
|
205
|
+
operation: operations.readSend(input),
|
|
206
|
+
label: "Send lookup",
|
|
207
|
+
allowedReasons: RUNTIME_READ_REASONS,
|
|
208
|
+
fallbackReason: "persistence-failed",
|
|
209
|
+
signal: context.mcpReq.signal,
|
|
210
|
+
}));
|
|
211
|
+
registerSendTool(server, operations);
|
|
212
|
+
registerEventReadTool(server, operations);
|
|
216
213
|
server.registerTool(HARNESS_ACKNOWLEDGE_DELIVERY_TOOL, { inputSchema: acknowledgeDeliveryInput, outputSchema: emptyOutput }, (input, context) => runVoidOperation({
|
|
217
214
|
operation: operations.acknowledgeDelivery(input.deliveryToken),
|
|
218
215
|
label: "Delivery acknowledgment",
|
|
@@ -221,7 +218,13 @@ const registerAdapterTools = (server, operations) => {
|
|
|
221
218
|
signal: context.mcpReq.signal,
|
|
222
219
|
}));
|
|
223
220
|
};
|
|
224
|
-
const registerActiveTools = (server, operations) => {
|
|
221
|
+
const registerActiveTools = (server, operations, role) => {
|
|
222
|
+
if (role === "runtime") {
|
|
223
|
+
registerSearchAgentsTool(server, operations);
|
|
224
|
+
registerSendTool(server, operations);
|
|
225
|
+
registerEventReadTool(server, operations);
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
225
228
|
registerReadTools(server, operations);
|
|
226
229
|
registerAdapterTools(server, operations);
|
|
227
230
|
};
|
|
@@ -293,11 +296,14 @@ const handleReadConversationToolCall = async (input, operations) => {
|
|
|
293
296
|
signal: input.signal,
|
|
294
297
|
});
|
|
295
298
|
};
|
|
299
|
+
const decodeInvocationInput = (input, signal) => runEventOperation(input.pipe(Effect.catchTag("ParseError", () => Effect.fail(new ProtocolError(-32602, "Invalid invocation arguments", {
|
|
300
|
+
reason: "content-invalid",
|
|
301
|
+
})))), signal);
|
|
296
302
|
// #ignore-sloppy-code-next-line[async-keyword]: The low-level MCP request handler awaits schema validation and the Promise-native operation bridge.
|
|
297
|
-
|
|
298
|
-
const decoded = await
|
|
303
|
+
async function handleSendToolCall(input, operations) {
|
|
304
|
+
const decoded = await decodeInvocationInput(decodeHarnessSendCall(input.toolArguments, input.metadata), input.signal);
|
|
299
305
|
return await validateToolOutput(sendOutput, await runSendOperation(operations.send(decoded), input.signal), input.name);
|
|
300
|
-
}
|
|
306
|
+
}
|
|
301
307
|
// #ignore-sloppy-code-next-line[async-keyword]: The low-level MCP request handler awaits schema validation and the Promise-native operation bridge.
|
|
302
308
|
const handleAcknowledgeDeliveryToolCall = async (input, operations) => {
|
|
303
309
|
const decoded = await decodeToolInput(acknowledgeDeliveryInput, input.toolArguments, input.name);
|
|
@@ -309,9 +315,43 @@ const handleAcknowledgeDeliveryToolCall = async (input, operations) => {
|
|
|
309
315
|
signal: input.signal,
|
|
310
316
|
});
|
|
311
317
|
};
|
|
318
|
+
// #ignore-sloppy-code-next-line[async-keyword]: Runtime read dispatch validates the selected MCP schema before invoking the operation.
|
|
319
|
+
const handleInboxReadToolCall = async (input, operations) => {
|
|
320
|
+
switch (input.name) {
|
|
321
|
+
case HARNESS_READ_EVENT_TOOL:
|
|
322
|
+
return await runValidatedOperation(readEventOutput, input.name, {
|
|
323
|
+
operation: operations.readEvent(await decodeToolInput(readEventInput, input.toolArguments, input.name)),
|
|
324
|
+
label: "Event read",
|
|
325
|
+
allowedReasons: RUNTIME_READ_REASONS,
|
|
326
|
+
fallbackReason: "persistence-failed",
|
|
327
|
+
signal: input.signal,
|
|
328
|
+
});
|
|
329
|
+
case HARNESS_READ_INBOX_TOOL:
|
|
330
|
+
return await runValidatedOperation(readInboxOutput, input.name, {
|
|
331
|
+
operation: operations.readInbox(await decodeToolInput(readInboxInput, input.toolArguments, input.name)),
|
|
332
|
+
label: "Inbox read",
|
|
333
|
+
allowedReasons: RUNTIME_READ_REASONS,
|
|
334
|
+
fallbackReason: "persistence-failed",
|
|
335
|
+
signal: input.signal,
|
|
336
|
+
});
|
|
337
|
+
default:
|
|
338
|
+
return toolNotFound(input.name);
|
|
339
|
+
}
|
|
340
|
+
};
|
|
312
341
|
// #ignore-sloppy-code-next-line[async-keyword]: Active tool dispatch returns the selected Promise-native MCP operation result.
|
|
313
342
|
const handleActiveToolCall = async (input, operations) => {
|
|
343
|
+
if ([HARNESS_READ_EVENT_TOOL, HARNESS_READ_INBOX_TOOL].includes(input.name)) {
|
|
344
|
+
return await handleInboxReadToolCall(input, operations);
|
|
345
|
+
}
|
|
314
346
|
switch (input.name) {
|
|
347
|
+
case HARNESS_READ_SEND_TOOL:
|
|
348
|
+
return await runValidatedOperation(readSendOutput, input.name, {
|
|
349
|
+
operation: operations.readSend(await decodeInvocationInput(decodeHarnessReadSendRequest(input.toolArguments), input.signal)),
|
|
350
|
+
label: "Send lookup",
|
|
351
|
+
allowedReasons: RUNTIME_READ_REASONS,
|
|
352
|
+
fallbackReason: "persistence-failed",
|
|
353
|
+
signal: input.signal,
|
|
354
|
+
});
|
|
315
355
|
case SEARCH_AGENTS_TOOL:
|
|
316
356
|
return await handleSearchAgentsToolCall(input, operations);
|
|
317
357
|
case SEARCH_CONVERSATIONS_TOOL:
|
|
@@ -334,7 +374,10 @@ const handleInactiveToolCall = async (input, operations, state) => {
|
|
|
334
374
|
return await handleRegistrationToolCall(input, operations, state);
|
|
335
375
|
};
|
|
336
376
|
// #ignore-sloppy-code-next-line[async-keyword]: The low-level MCP dispatcher awaits the selected state-dependent Promise callback.
|
|
337
|
-
const handleToolCall = async (input, operations, state) => {
|
|
377
|
+
const handleToolCall = async (input, operations, state, role) => {
|
|
378
|
+
if (!mayInvokeHarnessTool(role, input.name)) {
|
|
379
|
+
return toolNotFound(input.name);
|
|
380
|
+
}
|
|
338
381
|
if (input.name === STATUS_TOOL) {
|
|
339
382
|
return await handleStatusToolCall(input, operations);
|
|
340
383
|
}
|
|
@@ -343,61 +386,137 @@ const handleToolCall = async (input, operations, state) => {
|
|
|
343
386
|
}
|
|
344
387
|
return await handleActiveToolCall(input, operations);
|
|
345
388
|
};
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
389
|
+
const ownerEventDescriptions = {
|
|
390
|
+
event_subscription_status: "Inspect the runtime consumer and stalled delivery without exposing callback credentials.",
|
|
391
|
+
revoke_event_subscription: "Release the active runtime consumer. Pending inbox items remain unread.",
|
|
392
|
+
resume_event_subscription: "Resume transient callback retries. Terminal rejection requires revocation and reconfiguration.",
|
|
393
|
+
};
|
|
394
|
+
const ownerEventTools = [
|
|
395
|
+
"event_subscription_status",
|
|
396
|
+
"revoke_event_subscription",
|
|
397
|
+
"resume_event_subscription",
|
|
398
|
+
];
|
|
399
|
+
const ownerEventOperation = (events, name) => {
|
|
400
|
+
switch (name) {
|
|
401
|
+
case "event_subscription_status":
|
|
402
|
+
return events.status;
|
|
403
|
+
case "revoke_event_subscription":
|
|
404
|
+
return events.revoke.pipe(Effect.as({}));
|
|
405
|
+
case "resume_event_subscription":
|
|
406
|
+
return events.resume.pipe(Effect.as({}));
|
|
407
|
+
default:
|
|
408
|
+
return undefined;
|
|
409
|
+
}
|
|
410
|
+
};
|
|
411
|
+
// #ignore-sloppy-code-next-line[async-keyword]: The MCP edge validates its Promise-native tool schema before running the owner operation.
|
|
412
|
+
const handleOwnerOperation = async (operation, input) => {
|
|
413
|
+
await decodeToolInput(emptyInput, input.toolArguments, input.name);
|
|
414
|
+
return toolResult(await runEventOperation(operation, input.signal));
|
|
363
415
|
};
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
},
|
|
370
|
-
|
|
416
|
+
/** Schema failures and refused operations stay on the JSON-RPC error channel. */
|
|
417
|
+
const installToolCallHandler = (server, operations, state, authority) => {
|
|
418
|
+
server.server.setRequestHandler("tools/call", (request, context) => {
|
|
419
|
+
const input = {
|
|
420
|
+
name: request.params.name,
|
|
421
|
+
toolArguments: request.params.arguments ?? {},
|
|
422
|
+
metadata: context.mcpReq._meta,
|
|
423
|
+
signal: context.mcpReq.signal,
|
|
424
|
+
};
|
|
425
|
+
const ownerOperation = ownerEventOperation(authority.events, input.name);
|
|
426
|
+
if (authority.role === "owner" && ownerOperation !== undefined) {
|
|
427
|
+
return handleOwnerOperation(ownerOperation, input);
|
|
428
|
+
}
|
|
429
|
+
return handleToolCall(input, operations, state, authority.role);
|
|
371
430
|
});
|
|
372
|
-
|
|
431
|
+
};
|
|
432
|
+
const registerOwnerEvents = (server) => {
|
|
433
|
+
for (const name of ownerEventTools) {
|
|
434
|
+
server.registerTool(name, {
|
|
435
|
+
description: ownerEventDescriptions[name],
|
|
436
|
+
inputSchema: emptyInput,
|
|
437
|
+
...(name === "event_subscription_status"
|
|
438
|
+
? { outputSchema: makeStandardSchema(webhookStatusJsonSchema) }
|
|
439
|
+
: {}),
|
|
440
|
+
}, () => toolResult({}));
|
|
441
|
+
}
|
|
442
|
+
};
|
|
443
|
+
const runtimeOperations = (operations, events) => ({
|
|
444
|
+
...operations,
|
|
445
|
+
acknowledgeDelivery: (token) => operations
|
|
446
|
+
.acknowledgeDelivery(token)
|
|
447
|
+
.pipe(Effect.tap(() => Effect.sync(() => events.notifyPending()))),
|
|
448
|
+
});
|
|
449
|
+
const makeServer = (options, state, events, role) => {
|
|
450
|
+
const capabilities = { tools: {}, events: {} };
|
|
451
|
+
const server = new McpServer(options.implementation, { capabilities });
|
|
452
|
+
if (role !== "runtime") {
|
|
453
|
+
registerStatusTool(server, options.operations);
|
|
454
|
+
}
|
|
455
|
+
if (role === "owner") {
|
|
456
|
+
registerOwnerEvents(server);
|
|
457
|
+
}
|
|
373
458
|
if (state.active) {
|
|
374
|
-
registerActiveTools(server, options.operations);
|
|
459
|
+
registerActiveTools(server, options.operations, role);
|
|
375
460
|
}
|
|
376
|
-
else {
|
|
461
|
+
else if (role !== "runtime") {
|
|
377
462
|
registerRegistrationTool(server, options.operations, state);
|
|
378
463
|
}
|
|
379
|
-
installToolCallHandler(server, options.operations, state);
|
|
464
|
+
installToolCallHandler(server, runtimeOperations(options.operations, events), state, { role, events });
|
|
465
|
+
events.install(server.server, role === "local" ? undefined : role);
|
|
380
466
|
return server;
|
|
381
467
|
};
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
468
|
+
const officialHandler = (options, state, events) => createMcpHandler((context) => {
|
|
469
|
+
const request = context.requestInfo;
|
|
470
|
+
if (request === undefined) {
|
|
471
|
+
throw new ProtocolError(-32012, "Authentication required");
|
|
472
|
+
}
|
|
473
|
+
const role = authenticateHarnessRequest(request, options.credentials);
|
|
474
|
+
if (role === undefined) {
|
|
475
|
+
throw new ProtocolError(-32012, "Authentication required");
|
|
476
|
+
}
|
|
477
|
+
return makeServer(options, state, events, role);
|
|
478
|
+
}, { legacy: "reject", responseMode: "auto", onerror: options.onerror });
|
|
479
|
+
const guardedHandler = (options, delegate, events, scope) => ({
|
|
480
|
+
...delegate,
|
|
481
|
+
hasActiveSubscription: events.hasActiveSubscription,
|
|
482
|
+
notifyPending: events.notifyPending,
|
|
483
|
+
fetch: (request, requestOptions) => authenticateHarnessRequest(request, options.credentials) === undefined
|
|
484
|
+
? Promise.resolve(new Response("Unauthorized", {
|
|
485
|
+
status: 401,
|
|
486
|
+
headers: { "www-authenticate": "Bearer" },
|
|
487
|
+
}))
|
|
488
|
+
: delegate.fetch(request, requestOptions),
|
|
489
|
+
close: () => Effect.runPromise(events.close.pipe(Effect.ensuring(Effect.tryPromise(() => delegate.close()).pipe(Effect.ignore)), Effect.ensuring(Scope.close(scope, Exit.void)))),
|
|
490
|
+
});
|
|
491
|
+
const acquireWebhook = (options, scope, gate) => Effect.gen(function* () {
|
|
492
|
+
if (options.credentials === undefined || options.eventStore === undefined) {
|
|
493
|
+
return undefined;
|
|
494
|
+
}
|
|
495
|
+
const context = yield* Layer.buildWithScope(webhookHttpClientLayer, scope);
|
|
496
|
+
return yield* makeWebhookEvents(options.eventStore, gate).pipe(Effect.provide(context), Effect.mapError(() => ({ reason: "persistence-failed" })));
|
|
497
|
+
});
|
|
498
|
+
const acquireHandler = (options, state, scope) => Effect.gen(function* () {
|
|
499
|
+
const gate = yield* Effect.makeSemaphore(1);
|
|
500
|
+
const webhook = yield* acquireWebhook(options, scope, gate);
|
|
501
|
+
const events = yield* makeHarnessEvents({
|
|
502
|
+
...(webhook === undefined ? {} : { webhook }),
|
|
503
|
+
summary: options.operations.readInboxSummary,
|
|
504
|
+
registered: () => state.active,
|
|
505
|
+
gate,
|
|
399
506
|
keepAliveMillis: options.keepAliveMillis,
|
|
507
|
+
onActiveChange: options.onSubscriptionActiveChange,
|
|
400
508
|
});
|
|
401
|
-
|
|
509
|
+
return guardedHandler(options, officialHandler(options, state, events), events, scope);
|
|
510
|
+
});
|
|
511
|
+
/**
|
|
512
|
+
* Create one official MCP handler with explicit event resource ownership.
|
|
513
|
+
* @param options Daemon operations, optional credentials and callback persistence.
|
|
514
|
+
* @returns Handler whose catalog changes in place after registration.
|
|
515
|
+
*/
|
|
516
|
+
export const makeHarnessMcpHttpHandler = (options) => Effect.gen(function* () {
|
|
517
|
+
const status = yield* options.operations.readStatus();
|
|
518
|
+
const scope = yield* Scope.make();
|
|
519
|
+
return yield* acquireHandler(options, { active: status.kind === "active" }, scope).pipe(Effect.onError(() => Scope.close(scope, Exit.void)));
|
|
520
|
+
}).pipe(Effect.withSpan("makeHarnessMcpHttpHandler"));
|
|
402
521
|
/* eslint-enable agent-code-guard/async-keyword -- Restore repository defaults after the MCP boundary. */
|
|
403
|
-
//# sourceMappingURL=
|
|
522
|
+
//# sourceMappingURL=tools.js.map
|