@moltzap/client 2026.1001.2 → 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 +11 -6
- package/bin/moltzapd +2 -2
- package/dist/{harness-mcp-contract.d.ts → delivery/history-export.d.ts} +94 -136
- 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 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -3
- package/dist/index.js.map +1 -1
- package/dist/{contract.types-check.d.ts → index.types-check.d.ts} +21 -18
- package/dist/index.types-check.d.ts.map +1 -0
- package/dist/{contract.types-check.js → index.types-check.js} +6 -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/transport/collectives/message-text.d.ts +52 -0
- package/dist/transport/collectives/message-text.d.ts.map +1 -0
- package/dist/transport/collectives/message-text.js +118 -0
- package/dist/transport/collectives/message-text.js.map +1 -0
- package/dist/{endpoint/collective → transport/collectives}/operation.d.ts +30 -21
- package/dist/transport/collectives/operation.d.ts.map +1 -0
- package/dist/{endpoint/collective → transport/collectives}/operation.js +135 -143
- package/dist/transport/collectives/operation.js.map +1 -0
- package/dist/transport/collectives/received-request.d.ts +41 -0
- package/dist/transport/collectives/received-request.d.ts.map +1 -0
- package/dist/transport/collectives/received-request.js +56 -0
- package/dist/transport/collectives/received-request.js.map +1 -0
- package/dist/transport/collectives/request-sends.d.ts +42 -0
- package/dist/transport/collectives/request-sends.d.ts.map +1 -0
- package/dist/transport/collectives/request-sends.js +46 -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 -21
- package/dist/transport/collectives/validation.js.map +1 -0
- package/dist/{endpoint/collective → transport/collectives}/wire.d.ts +18 -13
- package/dist/transport/collectives/wire.d.ts.map +1 -0
- package/dist/{endpoint/collective → transport/collectives}/wire.js +19 -38
- 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 -451
- 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 -140
- 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/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/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}/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
package/README.md
CHANGED
|
@@ -14,17 +14,22 @@ it was built with.
|
|
|
14
14
|
| Import | Purpose |
|
|
15
15
|
|---|---|
|
|
16
16
|
| `@moltzap/client` | `HarnessEndpoint`, operation and inbound item values, endpoint acquisition, and closed operation failures |
|
|
17
|
-
| `@moltzap/client/
|
|
17
|
+
| `@moltzap/client/service` | Production `MoltZapService` process composition |
|
|
18
18
|
|
|
19
19
|
`HarnessEndpoint.send` performs one collective operation: text to an explicit
|
|
20
20
|
`agent:` or `group:` address with an optional `collective` operation,
|
|
21
21
|
multicast by default. A multicast creates one post with a fresh Client-minted
|
|
22
22
|
`PostId`; the host owns whether to invoke send again. A gather asks each
|
|
23
23
|
member the text as a question, one request post in each member's direct
|
|
24
|
-
conversation, and returns its `operationId`;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
conversation, and returns its `operationId`; a member whose post cannot be
|
|
25
|
+
delivered ends as `no-answer`. It fails with a `CollectiveError` before any
|
|
26
|
+
post when a member is malformed or unknown, and when every post was
|
|
27
|
+
refused. A member
|
|
28
|
+
answers with a `collectiveResponse` sent to the conversation the request
|
|
29
|
+
arrived in; the endpoint matches it to the one request open there, validates
|
|
30
|
+
it against that request's form, and refuses it when none or several are open.
|
|
31
|
+
`parseMessageText` reads any of these from a message's whole text, so every
|
|
32
|
+
adapter accepts the same text. An
|
|
28
33
|
all_gather asks a `group:` address one question in the group conversation;
|
|
29
34
|
each member endpoint keeps peer answers from its model until the requester's
|
|
30
35
|
close, which lists the answers counted, and every member receives the same
|
|
@@ -37,7 +42,7 @@ requester and every member an all_gather's; and a host whose tool returns
|
|
|
37
42
|
before the send passes `failureDelivery: "inbound"` to receive a refused
|
|
38
43
|
gather, all_gather or response as an `operationFailed` item. Each delivery carries an
|
|
39
44
|
adapter-only acknowledgment governed by the
|
|
40
|
-
[host-specific acceptance contract](../../docs/spec/harness/ingress.md#
|
|
45
|
+
[host-specific acceptance contract](../../docs/spec/harness/ingress.md#delivery-handoff).
|
|
41
46
|
Hosts implement the required persistence and replay guarantees. No inbound
|
|
42
47
|
message carries Client-level reply authority.
|
|
43
48
|
|
package/bin/moltzapd
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { NodeRuntime } from "@effect/platform-node";
|
|
3
3
|
import { ConfigProvider, Effect, Layer } from "effect";
|
|
4
|
-
import {
|
|
4
|
+
import { MoltZapService } from "../dist/service/index.js";
|
|
5
5
|
|
|
6
|
-
Layer.launch(
|
|
6
|
+
Layer.launch(MoltZapService.layer).pipe(
|
|
7
7
|
Effect.withConfigProvider(ConfigProvider.fromEnv()),
|
|
8
8
|
NodeRuntime.runMain,
|
|
9
9
|
);
|
|
@@ -1,76 +1,14 @@
|
|
|
1
|
-
/** @file
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
/** MCP capability carrying tagged inbound item delivery. */
|
|
5
|
-
export declare const HARNESS_EVENTS_EXTENSION = "xyz.moltzap/events-v3";
|
|
6
|
-
/** Subscription filter requesting durable inbound items. */
|
|
7
|
-
export declare const HARNESS_MESSAGE_READY_FILTER = "xyz.moltzap/messageReady";
|
|
8
|
-
/** Notification method carrying one pending inbound item. */
|
|
9
|
-
export declare const HARNESS_MESSAGE_READY_NOTIFICATION = "notifications/xyz.moltzap/message_ready";
|
|
10
|
-
/** Adapter operation performing one collective operation. */
|
|
11
|
-
export declare const HARNESS_SEND_TOOL = "send_message";
|
|
12
|
-
/** Adapter operation acknowledging successful stock host callback completion. */
|
|
13
|
-
export declare const HARNESS_ACKNOWLEDGE_DELIVERY_TOOL = "acknowledge_delivery";
|
|
14
|
-
declare const harnessEventsExtensionDeclarationSchema: Schema.Record$<typeof Schema.String, typeof Schema.Never>;
|
|
15
|
-
declare const harnessAcknowledgeDeliveryRequestSchema: Schema.Struct<{
|
|
16
|
-
deliveryToken: Schema.brand<Schema.filter<typeof Schema.String>, "DeliveryToken">;
|
|
17
|
-
}>;
|
|
18
|
-
declare const harnessEmptyResultSchema: Schema.Record$<typeof Schema.String, typeof Schema.Never>;
|
|
1
|
+
/** @file The record of endpoint traffic: what the daemon delivered to its host and what the host sent. */
|
|
2
|
+
import { FileSystem } from "@effect/platform";
|
|
3
|
+
import { Effect, Schema } from "effect";
|
|
19
4
|
/**
|
|
20
|
-
* One
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
5
|
+
* One line of the daemon's optional history export: an item as the daemon
|
|
6
|
+
* published it, a completed `send` invocation with its input and outcome, or
|
|
7
|
+
* the one line that says the export stopped. Readers decode the file line by
|
|
8
|
+
* line with this schema rather than copying its shape.
|
|
24
9
|
*/
|
|
25
|
-
declare const
|
|
26
|
-
|
|
27
|
-
to: Schema.brand<Schema.filter<typeof Schema.String>, "MessageAddressInput">;
|
|
28
|
-
text: Schema.filter<typeof Schema.String>;
|
|
29
|
-
collective: Schema.optionalWith<Schema.Union<[Schema.Struct<{
|
|
30
|
-
op: Schema.optionalWith<Schema.Literal<["multicast"]>, {
|
|
31
|
-
exact: true;
|
|
32
|
-
}>;
|
|
33
|
-
}>, Schema.Struct<{
|
|
34
|
-
op: Schema.Literal<["gather", "all_gather"]>;
|
|
35
|
-
deadline: Schema.refine<number, Schema.filter<typeof Schema.Number>>;
|
|
36
|
-
requestedSchema: Schema.Struct<{
|
|
37
|
-
$schema: Schema.optionalWith<typeof Schema.String, {
|
|
38
|
-
exact: true;
|
|
39
|
-
}>;
|
|
40
|
-
type: Schema.Literal<["object"]>;
|
|
41
|
-
properties: Schema.Record$<typeof Schema.String, Schema.Record$<typeof Schema.String, Schema.Schema<import("./contract.js").JsonValue, import("./contract.js").JsonValue, never>>>;
|
|
42
|
-
required: Schema.optionalWith<Schema.Array$<typeof Schema.String>, {
|
|
43
|
-
exact: true;
|
|
44
|
-
}>;
|
|
45
|
-
}>;
|
|
46
|
-
}>]>, {
|
|
47
|
-
exact: true;
|
|
48
|
-
}>;
|
|
49
|
-
}>, Schema.Struct<{
|
|
50
|
-
collectiveResponse: Schema.Union<[Schema.Struct<{
|
|
51
|
-
id: Schema.brand<Schema.filter<typeof Schema.String>, "CollectiveId">;
|
|
52
|
-
action: Schema.Literal<["accept"]>;
|
|
53
|
-
content: Schema.Record$<typeof Schema.String, Schema.Union<[typeof Schema.String, Schema.filter<typeof Schema.Number>, typeof Schema.Boolean, Schema.Array$<typeof Schema.String>]>>;
|
|
54
|
-
}>, Schema.Struct<{
|
|
55
|
-
id: Schema.brand<Schema.filter<typeof Schema.String>, "CollectiveId">;
|
|
56
|
-
action: Schema.Literal<["decline", "cancel"]>;
|
|
57
|
-
}>]>;
|
|
58
|
-
}>]>;
|
|
59
|
-
failureDelivery: Schema.optionalWith<Schema.Literal<["result", "inbound"]>, {
|
|
60
|
-
exact: true;
|
|
61
|
-
}>;
|
|
62
|
-
}>;
|
|
63
|
-
/**
|
|
64
|
-
* A completed operation. A collecting operation names the id its answers and
|
|
65
|
-
* result carry; a multicast has none, so its result is empty.
|
|
66
|
-
*/
|
|
67
|
-
declare const harnessSendResultSchema: Schema.Struct<{
|
|
68
|
-
operationId: Schema.optionalWith<Schema.brand<Schema.filter<typeof Schema.String>, "CollectiveId">, {
|
|
69
|
-
exact: true;
|
|
70
|
-
}>;
|
|
71
|
-
}>;
|
|
72
|
-
declare const harnessMessageReadyEventSchema: Schema.Struct<{
|
|
73
|
-
deliveryToken: Schema.brand<Schema.filter<typeof Schema.String>, "DeliveryToken">;
|
|
10
|
+
export declare const HistoryExportRecord: Schema.Union<[Schema.Struct<{
|
|
11
|
+
kind: Schema.Literal<["inbound"]>;
|
|
74
12
|
item: Schema.Union<[Schema.Struct<{
|
|
75
13
|
kind: Schema.Literal<["multicast"]>;
|
|
76
14
|
message: Schema.Union<[Schema.filter<Schema.Struct<{
|
|
@@ -83,19 +21,19 @@ declare const harnessMessageReadyEventSchema: Schema.Struct<{
|
|
|
83
21
|
readonly text: string;
|
|
84
22
|
} | {
|
|
85
23
|
readonly type: "data";
|
|
86
|
-
readonly value: import("
|
|
24
|
+
readonly value: import("../index.js").JsonValue;
|
|
87
25
|
}, ...({
|
|
88
26
|
readonly type: "text";
|
|
89
27
|
readonly text: string;
|
|
90
28
|
} | {
|
|
91
29
|
readonly type: "data";
|
|
92
|
-
readonly value: import("
|
|
30
|
+
readonly value: import("../index.js").JsonValue;
|
|
93
31
|
})[]], Schema.NonEmptyArray<Schema.Union<[Schema.Struct<{
|
|
94
32
|
type: Schema.Literal<["text"]>;
|
|
95
33
|
text: Schema.filter<typeof Schema.String>;
|
|
96
34
|
}>, Schema.Struct<{
|
|
97
35
|
type: Schema.Literal<["data"]>;
|
|
98
|
-
value: Schema.Schema<import("
|
|
36
|
+
value: Schema.Schema<import("../index.js").JsonValue, import("../index.js").JsonValue, never>;
|
|
99
37
|
}>]>>>;
|
|
100
38
|
}>>, Schema.filter<Schema.Struct<{
|
|
101
39
|
kind: Schema.Literal<["group"]>;
|
|
@@ -108,19 +46,19 @@ declare const harnessMessageReadyEventSchema: Schema.Struct<{
|
|
|
108
46
|
readonly text: string;
|
|
109
47
|
} | {
|
|
110
48
|
readonly type: "data";
|
|
111
|
-
readonly value: import("
|
|
49
|
+
readonly value: import("../index.js").JsonValue;
|
|
112
50
|
}, ...({
|
|
113
51
|
readonly type: "text";
|
|
114
52
|
readonly text: string;
|
|
115
53
|
} | {
|
|
116
54
|
readonly type: "data";
|
|
117
|
-
readonly value: import("
|
|
55
|
+
readonly value: import("../index.js").JsonValue;
|
|
118
56
|
})[]], Schema.NonEmptyArray<Schema.Union<[Schema.Struct<{
|
|
119
57
|
type: Schema.Literal<["text"]>;
|
|
120
58
|
text: Schema.filter<typeof Schema.String>;
|
|
121
59
|
}>, Schema.Struct<{
|
|
122
60
|
type: Schema.Literal<["data"]>;
|
|
123
|
-
value: Schema.Schema<import("
|
|
61
|
+
value: Schema.Schema<import("../index.js").JsonValue, import("../index.js").JsonValue, never>;
|
|
124
62
|
}>]>>>;
|
|
125
63
|
}>>]>;
|
|
126
64
|
}>, Schema.Struct<{
|
|
@@ -135,7 +73,7 @@ declare const harnessMessageReadyEventSchema: Schema.Struct<{
|
|
|
135
73
|
exact: true;
|
|
136
74
|
}>;
|
|
137
75
|
type: Schema.Literal<["object"]>;
|
|
138
|
-
properties: Schema.Record$<typeof Schema.String, Schema.Record$<typeof Schema.String, Schema.Schema<import("
|
|
76
|
+
properties: Schema.Record$<typeof Schema.String, Schema.Record$<typeof Schema.String, Schema.Schema<import("../index.js").JsonValue, import("../index.js").JsonValue, never>>>;
|
|
139
77
|
required: Schema.optionalWith<Schema.Array$<typeof Schema.String>, {
|
|
140
78
|
exact: true;
|
|
141
79
|
}>;
|
|
@@ -153,8 +91,6 @@ declare const harnessMessageReadyEventSchema: Schema.Struct<{
|
|
|
153
91
|
content: Schema.Record$<typeof Schema.String, Schema.Union<[typeof Schema.String, Schema.filter<typeof Schema.Number>, typeof Schema.Boolean, Schema.Array$<typeof Schema.String>]>>;
|
|
154
92
|
}>, Schema.Struct<{
|
|
155
93
|
kind: Schema.Literal<["declined"]>;
|
|
156
|
-
}>, Schema.Struct<{
|
|
157
|
-
kind: Schema.Literal<["cancelled"]>;
|
|
158
94
|
}>, Schema.Struct<{
|
|
159
95
|
kind: Schema.Literal<["invalid"]>;
|
|
160
96
|
reason: typeof Schema.String;
|
|
@@ -171,63 +107,85 @@ declare const harnessMessageReadyEventSchema: Schema.Struct<{
|
|
|
171
107
|
to: Schema.brand<Schema.filter<typeof Schema.String>, "MessageAddressInput">;
|
|
172
108
|
error: typeof Schema.String;
|
|
173
109
|
}>]>;
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
110
|
+
at: typeof Schema.DateTimeUtc;
|
|
111
|
+
}>, Schema.Struct<{
|
|
112
|
+
kind: Schema.Literal<["outbound"]>;
|
|
113
|
+
input: Schema.Union<[Schema.Struct<{
|
|
114
|
+
to: Schema.brand<Schema.filter<typeof Schema.String>, "MessageAddressInput">;
|
|
115
|
+
text: Schema.filter<typeof Schema.String>;
|
|
116
|
+
collective: Schema.optionalWith<Schema.Union<[Schema.Struct<{
|
|
117
|
+
op: Schema.optionalWith<Schema.Literal<["multicast"]>, {
|
|
118
|
+
exact: true;
|
|
119
|
+
}>;
|
|
120
|
+
}>, Schema.Struct<{
|
|
121
|
+
op: Schema.Literal<["gather", "all_gather"]>;
|
|
122
|
+
deadline: Schema.filter<Schema.filter<typeof Schema.Number>>;
|
|
123
|
+
requestedSchema: Schema.Struct<{
|
|
124
|
+
$schema: Schema.optionalWith<typeof Schema.String, {
|
|
125
|
+
exact: true;
|
|
126
|
+
}>;
|
|
127
|
+
type: Schema.Literal<["object"]>;
|
|
128
|
+
properties: Schema.Record$<typeof Schema.String, Schema.Record$<typeof Schema.String, Schema.Schema<import("../index.js").JsonValue, import("../index.js").JsonValue, never>>>;
|
|
129
|
+
required: Schema.optionalWith<Schema.Array$<typeof Schema.String>, {
|
|
130
|
+
exact: true;
|
|
131
|
+
}>;
|
|
132
|
+
}>;
|
|
133
|
+
}>]>, {
|
|
134
|
+
exact: true;
|
|
135
|
+
}>;
|
|
136
|
+
}>, Schema.Struct<{
|
|
137
|
+
to: Schema.brand<Schema.filter<typeof Schema.String>, "MessageAddressInput">;
|
|
138
|
+
collectiveResponse: Schema.Union<[Schema.Struct<{
|
|
139
|
+
action: Schema.Literal<["accept"]>;
|
|
140
|
+
content: Schema.Record$<typeof Schema.String, Schema.Union<[typeof Schema.String, Schema.filter<typeof Schema.Number>, typeof Schema.Boolean, Schema.Array$<typeof Schema.String>]>>;
|
|
141
|
+
}>, Schema.Struct<{
|
|
142
|
+
action: Schema.Literal<["decline"]>;
|
|
143
|
+
}>]>;
|
|
144
|
+
}>]>;
|
|
145
|
+
outcome: Schema.Union<[Schema.Struct<{
|
|
146
|
+
kind: Schema.Literal<["sent"]>;
|
|
147
|
+
operationId: Schema.optionalWith<Schema.brand<Schema.filter<typeof Schema.String>, "CollectiveId">, {
|
|
148
|
+
exact: true;
|
|
149
|
+
}>;
|
|
150
|
+
postIds: Schema.Array$<Schema.brand<Schema.filter<typeof Schema.String>, "PostId">>;
|
|
151
|
+
}>, Schema.Struct<{
|
|
152
|
+
kind: Schema.Literal<["failed"]>;
|
|
153
|
+
error: typeof Schema.String;
|
|
154
|
+
}>]>;
|
|
155
|
+
at: typeof Schema.DateTimeUtc;
|
|
156
|
+
}>, Schema.Struct<{
|
|
157
|
+
kind: Schema.Literal<["export-failed"]>;
|
|
158
|
+
reason: typeof Schema.String;
|
|
159
|
+
at: typeof Schema.DateTimeUtc;
|
|
160
|
+
}>]>;
|
|
161
|
+
/** A validated line of the daemon's history export. */
|
|
162
|
+
export type HistoryExportRecord = typeof HistoryExportRecord.Type;
|
|
220
163
|
/**
|
|
221
|
-
*
|
|
222
|
-
*
|
|
223
|
-
*
|
|
164
|
+
* Sink for the daemon's optional history export. Recording never fails and
|
|
165
|
+
* never blocks the daemon on its own outcome: an export that stops is the
|
|
166
|
+
* sink's business, recorded in the file.
|
|
224
167
|
*/
|
|
225
|
-
export
|
|
168
|
+
export interface HistoryExportPort {
|
|
169
|
+
readonly record: (record: HistoryExportRecord) => Effect.Effect<void>;
|
|
170
|
+
}
|
|
171
|
+
/** The export in place when the operator configured none: records vanish. */
|
|
172
|
+
export declare const noHistoryExport: HistoryExportPort;
|
|
226
173
|
/**
|
|
227
|
-
*
|
|
228
|
-
*
|
|
229
|
-
*
|
|
174
|
+
* Open the daemon's history export against one file.
|
|
175
|
+
*
|
|
176
|
+
* Recording completes only once the line is on disk: an inbound record lands
|
|
177
|
+
* before its message becomes visible to the agent and an outbound record
|
|
178
|
+
* before the send returns, so a transcript harvested the moment a program
|
|
179
|
+
* ends holds every delivery and send that program could have observed. That
|
|
180
|
+
* costs one append inside the delivery path, accepted for an opt-in evidence
|
|
181
|
+
* file whose worth is its completeness. Lines are appended one at a time
|
|
182
|
+
* under a gate, so two records never interleave. The first append that fails
|
|
183
|
+
* ends the export: one `export-failed` line is written on a best-effort
|
|
184
|
+
* basis, every later record is dropped, and the daemon goes on serving the
|
|
185
|
+
* agent. An experiment must not die because its transcript file did, and the
|
|
186
|
+
* truncation is explicit in the file rather than silent.
|
|
187
|
+
*
|
|
188
|
+
* The file is created on the first write.
|
|
230
189
|
*/
|
|
231
|
-
export declare function
|
|
232
|
-
export
|
|
233
|
-
//# sourceMappingURL=harness-mcp-contract.d.ts.map
|
|
190
|
+
export declare function makeHistoryExport(path: string): Effect.Effect<HistoryExportPort, never, FileSystem.FileSystem>;
|
|
191
|
+
//# sourceMappingURL=history-export.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history-export.d.ts","sourceRoot":"","sources":["../../src/delivery/history-export.ts"],"names":[],"mappings":"AAAA,0GAA0G;AAE1G,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAY,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAqBlD;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAiBoB,CAAC;AACrD,uDAAuD;AACvD,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAC,IAAI,CAAC;AAMlE;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;CACvE;AAED,6EAA6E;AAC7E,eAAO,MAAM,eAAe,EAAE,iBAE5B,CAAC;AAEH;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,GACX,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,CAiChE"}
|
|
@@ -1,8 +1,41 @@
|
|
|
1
|
-
/** @file
|
|
1
|
+
/** @file The record of endpoint traffic: what the daemon delivered to its host and what the host sent. */
|
|
2
2
|
import { FileSystem } from "@effect/platform";
|
|
3
3
|
import { DateTime, Effect, Schema } from "effect";
|
|
4
|
-
import {
|
|
5
|
-
|
|
4
|
+
import { CollectiveId, SendInput } from "../transport/collectives/forms.js";
|
|
5
|
+
import { InboundItem } from "../transport/collectives/inbound.js";
|
|
6
|
+
import { exactStruct, PostId } from "../transport/wire/values.js";
|
|
7
|
+
/* eslint-disable @typescript-eslint/naming-convention, @typescript-eslint/no-redeclare -- Effect Schemas share their domain names with the nominal values they decode. */
|
|
8
|
+
/**
|
|
9
|
+
* How one send ended in the history export: the posts certified by the time
|
|
10
|
+
* it returned, with the operation id of a gather or all_gather, or the
|
|
11
|
+
* error it returned.
|
|
12
|
+
*/
|
|
13
|
+
const historyExportSendOutcome = Schema.Union(exactStruct({
|
|
14
|
+
kind: Schema.Literal("sent"),
|
|
15
|
+
operationId: Schema.optionalWith(CollectiveId, { exact: true }),
|
|
16
|
+
postIds: Schema.Array(PostId),
|
|
17
|
+
}), exactStruct({ kind: Schema.Literal("failed"), error: Schema.String }));
|
|
18
|
+
/**
|
|
19
|
+
* One line of the daemon's optional history export: an item as the daemon
|
|
20
|
+
* published it, a completed `send` invocation with its input and outcome, or
|
|
21
|
+
* the one line that says the export stopped. Readers decode the file line by
|
|
22
|
+
* line with this schema rather than copying its shape.
|
|
23
|
+
*/
|
|
24
|
+
export const HistoryExportRecord = Schema.Union(exactStruct({
|
|
25
|
+
kind: Schema.Literal("inbound"),
|
|
26
|
+
item: InboundItem,
|
|
27
|
+
at: Schema.DateTimeUtc,
|
|
28
|
+
}), exactStruct({
|
|
29
|
+
kind: Schema.Literal("outbound"),
|
|
30
|
+
input: SendInput,
|
|
31
|
+
outcome: historyExportSendOutcome,
|
|
32
|
+
at: Schema.DateTimeUtc,
|
|
33
|
+
}), exactStruct({
|
|
34
|
+
kind: Schema.Literal("export-failed"),
|
|
35
|
+
reason: Schema.String,
|
|
36
|
+
at: Schema.DateTimeUtc,
|
|
37
|
+
})).annotations({ identifier: "HistoryExportRecord" });
|
|
38
|
+
/* eslint-enable @typescript-eslint/naming-convention, @typescript-eslint/no-redeclare -- Restore the package naming rules after the Schema/type pairs. */
|
|
6
39
|
const encodeLine = Schema.encode(Schema.parseJson(HistoryExportRecord));
|
|
7
40
|
/** The export in place when the operator configured none: records vanish. */
|
|
8
41
|
export const noHistoryExport = Object.freeze({
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history-export.js","sourceRoot":"","sources":["../../src/delivery/history-export.ts"],"names":[],"mappings":"AAAA,0GAA0G;AAE1G,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAElE,0KAA0K;AAE1K;;;;GAIG;AACH,MAAM,wBAAwB,GAAG,MAAM,CAAC,KAAK,CAC3C,WAAW,CAAC;IACV,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC/D,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;CAC9B,CAAC,EACF,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CACtE,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,KAAK,CAC7C,WAAW,CAAC;IACV,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;IAC/B,IAAI,EAAE,WAAW;IACjB,EAAE,EAAE,MAAM,CAAC,WAAW;CACvB,CAAC,EACF,WAAW,CAAC;IACV,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;IAChC,KAAK,EAAE,SAAS;IAChB,OAAO,EAAE,wBAAwB;IACjC,EAAE,EAAE,MAAM,CAAC,WAAW;CACvB,CAAC,EACF,WAAW,CAAC;IACV,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC,WAAW;CACvB,CAAC,CACH,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,qBAAqB,EAAE,CAAC,CAAC;AAIrD,0JAA0J;AAE1J,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAWxE,6EAA6E;AAC7E,MAAM,CAAC,MAAM,eAAe,GAAsB,MAAM,CAAC,MAAM,CAAC;IAC9D,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI;CAC1B,CAAC,CAAC;AAEH;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAY;IAEZ,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACzB,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;QAChD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,MAAM,MAAM,GAAG,CAAC,MAA2B,EAAE,EAAE,CAC7C,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CACrB,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CACtB,UAAU,CAAC,eAAe,CAAC,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAC7D,CACF,CAAC;QACJ,MAAM,OAAO,GAAG,CAAC,KAAmC,EAAE,EAAE,CACtD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,OAAO,GAAG,KAAK,CAAC;YAChB,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,2BAA2B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACrE,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;YAC/B,KAAK,CAAC,CAAC,MAAM,CAAC;gBACZ,IAAI,EAAE,eAAe;gBACrB,MAAM,EAAE,KAAK,CAAC,OAAO;gBACrB,EAAE;aACH,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QACL,OAAO;YACL,MAAM,EAAE,CAAC,MAA2B,EAAE,EAAE,CACtC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CACjB,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAClB,OAAO;gBACL,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAC/C,CAAC,CAAC,MAAM,CAAC,IAAI,CAChB,CACF;SACJ,CAAC;IACJ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAChD,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/** @file One service's delivery: the inbox writes, the gated delivery pass and detach, and the operations hosts call. */
|
|
2
|
+
import { Effect, type Scope } from "effect";
|
|
3
|
+
import type { CollectiveEmitError } from "../transport/collectives/forms.js";
|
|
4
|
+
import type { CollectiveOperations } from "../transport/collectives/index.js";
|
|
5
|
+
import type { EnginePendingMessage } from "../transport/messaging/index.js";
|
|
6
|
+
import type { HistoryExportPort } from "./history-export.js";
|
|
7
|
+
import type { DeliveryOperations, EventStore } from "./operations.js";
|
|
8
|
+
import { type EndpointStore, type EndpointStoreError } from "../store/index.js";
|
|
9
|
+
import { InboundItem } from "../transport/collectives/inbound.js";
|
|
10
|
+
import { type PendingOffer } from "./pass.js";
|
|
11
|
+
/** What one service's delivery reads and writes. */
|
|
12
|
+
export interface HostDeliveryInput {
|
|
13
|
+
readonly store: EndpointStore;
|
|
14
|
+
readonly historyExport: HistoryExportPort;
|
|
15
|
+
/** The active collective layer, absent while the service is unregistered. */
|
|
16
|
+
readonly collectives: () => Pick<CollectiveOperations, "send"> | undefined;
|
|
17
|
+
/** Service lifetime, independent of any host request. */
|
|
18
|
+
readonly scope: Scope.Scope;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* What the service supplies to one pass: the active protocol's pending read,
|
|
22
|
+
* acknowledgment and classifier, and the attached subscriber if any.
|
|
23
|
+
*/
|
|
24
|
+
interface PassInput<E> extends Pick<PendingOffer, "engine" | "classify" | "handler"> {
|
|
25
|
+
readonly readPending: Effect.Effect<readonly EnginePendingMessage[], E>;
|
|
26
|
+
}
|
|
27
|
+
/** One service's delivery, created once and shared by the delivery pass and every host operation. */
|
|
28
|
+
export interface HostDelivery {
|
|
29
|
+
readonly operations: DeliveryOperations;
|
|
30
|
+
readonly eventStore: EventStore;
|
|
31
|
+
/** Forget what the departed subscriber took, so the next one is offered it again. */
|
|
32
|
+
readonly detach: Effect.Effect<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Run one pass under the delivery gate. `prepare` runs once the gate is
|
|
35
|
+
* held, so the active protocol and subscriber it reads are current; it
|
|
36
|
+
* returns undefined when there is nothing to run. A store failure ends the
|
|
37
|
+
* pass and releases the gate.
|
|
38
|
+
*/
|
|
39
|
+
readonly runPass: <E>(prepare: () => PassInput<E> | undefined) => Effect.Effect<void, E | EndpointStoreError | CollectiveEmitError>;
|
|
40
|
+
/** Make an item the collective layer emitted durable and queue it for the next pass. */
|
|
41
|
+
readonly queueLocalItem: (item: InboundItem) => Effect.Effect<void, EndpointStoreError>;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Recover the inbox left by the previous process, then build the service's
|
|
45
|
+
* delivery over it.
|
|
46
|
+
* @param service The store, history export, active collective layer and service scope.
|
|
47
|
+
* @returns The delivery state, the host operations and the webhook's inbox view.
|
|
48
|
+
*/
|
|
49
|
+
export declare const makeHostDelivery: (service: HostDeliveryInput) => Effect.Effect<HostDelivery, EndpointStoreError>;
|
|
50
|
+
export {};
|
|
51
|
+
//# sourceMappingURL=host-delivery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-delivery.d.ts","sourceRoot":"","sources":["../../src/delivery/host-delivery.ts"],"names":[],"mappings":"AAAA,yHAAyH;AAEzH,OAAO,EAAY,MAAM,EAAE,KAAK,KAAK,EAAE,MAAM,QAAQ,CAAC;AACtD,OAAO,KAAK,EACV,mBAAmB,EAEpB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,KAAK,EACV,iBAAiB,EAElB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACV,kBAAkB,EAClB,UAAU,EAEX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAYlE,OAAO,EAML,KAAK,YAAY,EAClB,MAAM,WAAW,CAAC;AAGnB,oDAAoD;AACpD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,iBAAiB,CAAC;IAC1C,6EAA6E;IAC7E,QAAQ,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC,oBAAoB,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAC3E,yDAAyD;IACzD,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC;CAC7B;AAED;;;GAGG;AACH,UAAU,SAAS,CAAC,CAAC,CACnB,SAAQ,IAAI,CAAC,YAAY,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IAC7D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,oBAAoB,EAAE,EAAE,CAAC,CAAC,CAAC;CACzE;AAED,qGAAqG;AACrG,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,qFAAqF;IACrF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACrC;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,EAClB,OAAO,EAAE,MAAM,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,KACpC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,kBAAkB,GAAG,mBAAmB,CAAC,CAAC;IACvE,wFAAwF;IACxF,QAAQ,CAAC,cAAc,EAAE,CACvB,IAAI,EAAE,WAAW,KACd,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;CAC9C;AAiMD;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,YAClB,iBAAiB,KACzB,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,kBAAkB,CAwCH,CAAC"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/** @file One service's delivery: the inbox writes, the gated delivery pass and detach, and the operations hosts call. */
|
|
2
|
+
import { DateTime, Effect } from "effect";
|
|
3
|
+
import { decodeRuntimeValue, } from "../store/index.js";
|
|
4
|
+
import { InboundItem } from "../transport/collectives/inbound.js";
|
|
5
|
+
import { DeliveryAcknowledgeError, SendError, } from "../transport/messaging/errors.js";
|
|
6
|
+
import { mintLocalDeliveryToken, persistInboxItem, readRuntimeEvent, readRuntimeInbox, recoverRuntimeInbox, } from "./inbox.js";
|
|
7
|
+
import { exportOnce, forgetDelivery, makeDeliveryState, offerPendingMessages, } from "./pass.js";
|
|
8
|
+
import { makeSendInvocations } from "./send-invocations.js";
|
|
9
|
+
const notRegistered = Effect.fail({ reason: "not-registered" });
|
|
10
|
+
/**
|
|
11
|
+
* Record one completed `send` in the history export with its input and how it
|
|
12
|
+
* ended: the posts certified by its return, or the error it returned.
|
|
13
|
+
*/
|
|
14
|
+
const exportSend = (historyExport, input, outcome) => DateTime.now.pipe(Effect.flatMap((at) => historyExport.record({ kind: "outbound", input, outcome, at })));
|
|
15
|
+
const sendOperation = (input) => (request) => Effect.suspend(() => {
|
|
16
|
+
const collectives = input.collectives();
|
|
17
|
+
if (collectives === undefined) {
|
|
18
|
+
return Effect.fail(new SendError({ reason: "not-registered" }));
|
|
19
|
+
}
|
|
20
|
+
return collectives
|
|
21
|
+
.send(request.input, request.failureDelivery ?? "result")
|
|
22
|
+
.pipe(Effect.tapBoth({
|
|
23
|
+
onFailure: (error) => exportSend(input.historyExport, request.input, {
|
|
24
|
+
kind: "failed",
|
|
25
|
+
error: error.message,
|
|
26
|
+
}),
|
|
27
|
+
onSuccess: (outcome) => exportSend(input.historyExport, request.input, {
|
|
28
|
+
kind: "sent",
|
|
29
|
+
...outcome,
|
|
30
|
+
}),
|
|
31
|
+
}), Effect.map(({ operationId }) => operationId === undefined ? {} : { operationId }));
|
|
32
|
+
});
|
|
33
|
+
/** Retire the durable inbox binding before dropping its process-local caches. */
|
|
34
|
+
const acknowledgeDelivery = (input) => (deliveryToken) => input.state.gate.withPermits(1)(Effect.suspend(() => input.collectives() === undefined
|
|
35
|
+
? Effect.fail(new DeliveryAcknowledgeError({ reason: "unknown-delivery" }))
|
|
36
|
+
: input.store.acknowledgeInboxItem(deliveryToken).pipe(Effect.catchTag("EndpointStoreError", (error) => Effect.fail(new DeliveryAcknowledgeError({
|
|
37
|
+
reason: error.reason === "not-found"
|
|
38
|
+
? "unknown-delivery"
|
|
39
|
+
: "persistence-failed",
|
|
40
|
+
}))), Effect.tap(() => forgetDelivery(input.state, deliveryToken)))));
|
|
41
|
+
/**
|
|
42
|
+
* Read one inbox page under the delivery gate and export each entry's item
|
|
43
|
+
* once, so native and webhook reads share the pass's export ordering.
|
|
44
|
+
*/
|
|
45
|
+
const readExported = (input, read, itemOf) => input.state.gate.withPermits(1)(read.pipe(Effect.tap((page) => Effect.forEach(page.items, (entry) => exportOnce(input.state, input.historyExport, entry.deliveryToken, itemOf(entry)), { concurrency: 1, discard: true }))));
|
|
46
|
+
/** Export replayed local items before a host can read them after restart. */
|
|
47
|
+
const readAndExportInbox = (input, request) => readExported(input, readRuntimeInbox(input.store, request), (entry) => Effect.succeed(entry.item));
|
|
48
|
+
/** The webhook's raw page, decoding each stored item only to export it. */
|
|
49
|
+
const readWebhookInbox = (input, bounds) => readExported(input, input.store.readInbox(bounds), (entry) => decodeRuntimeValue(InboundItem, entry.canonicalItem));
|
|
50
|
+
/** Waiters can stop during shutdown; an acquired receipt commits with its caller state intact. */
|
|
51
|
+
const completeWebhookDelivery = (input, token, bytes) => Effect.uninterruptibleMask(() => input.state.gate.take(1).pipe(Effect.interruptible, Effect.flatMap((permits) => input.store.completeWebhookDelivery(token, bytes).pipe(Effect.tap(() => forgetDelivery(input.state, token)), Effect.ensuring(input.state.gate.release(permits))))));
|
|
52
|
+
const queueLocalItem = (input) => (item) => mintLocalDeliveryToken.pipe(Effect.tap((deliveryToken) => persistInboxItem(input.store, { deliveryToken, item })), Effect.tap((deliveryToken) => Effect.sync(() => {
|
|
53
|
+
input.state.localItems.set(deliveryToken, item);
|
|
54
|
+
})), Effect.asVoid);
|
|
55
|
+
/** The pass's view of the service's delivery and the protocol it serves. */
|
|
56
|
+
const pendingOffer = (input, pass) => ({
|
|
57
|
+
engine: pass.engine,
|
|
58
|
+
classify: pass.classify,
|
|
59
|
+
...(pass.handler === undefined ? {} : { handler: pass.handler }),
|
|
60
|
+
persist: (event) => persistInboxItem(input.store, event),
|
|
61
|
+
historyExport: input.historyExport,
|
|
62
|
+
state: input.state,
|
|
63
|
+
});
|
|
64
|
+
const runPass = (input, prepare) => input.state.gate.withPermits(1)(Effect.suspend(() => {
|
|
65
|
+
const pass = prepare();
|
|
66
|
+
if (pass === undefined) {
|
|
67
|
+
return Effect.void;
|
|
68
|
+
}
|
|
69
|
+
return pass.readPending.pipe(Effect.flatMap((messages) => offerPendingMessages(pendingOffer(input, pass), messages)));
|
|
70
|
+
}));
|
|
71
|
+
/**
|
|
72
|
+
* Recover the inbox left by the previous process, then build the service's
|
|
73
|
+
* delivery over it.
|
|
74
|
+
* @param service The store, history export, active collective layer and service scope.
|
|
75
|
+
* @returns The delivery state, the host operations and the webhook's inbox view.
|
|
76
|
+
*/
|
|
77
|
+
export const makeHostDelivery = (service) => Effect.gen(function* () {
|
|
78
|
+
const input = {
|
|
79
|
+
...service,
|
|
80
|
+
state: yield* makeDeliveryState,
|
|
81
|
+
};
|
|
82
|
+
yield* recoverRuntimeInbox(input.store);
|
|
83
|
+
const invocations = yield* makeSendInvocations(input.store, sendOperation(input), input.scope);
|
|
84
|
+
const eventStore = {
|
|
85
|
+
...input.store,
|
|
86
|
+
readInbox: (bounds) => readWebhookInbox(input, bounds),
|
|
87
|
+
completeWebhookDelivery: (token, bytes) => completeWebhookDelivery(input, token, bytes),
|
|
88
|
+
};
|
|
89
|
+
return {
|
|
90
|
+
detach: Effect.sync(() => {
|
|
91
|
+
input.state.publishedDeliveries.clear();
|
|
92
|
+
}),
|
|
93
|
+
runPass: (prepare) => runPass(input, prepare),
|
|
94
|
+
queueLocalItem: queueLocalItem(input),
|
|
95
|
+
operations: Object.freeze({
|
|
96
|
+
...invocations,
|
|
97
|
+
readInboxSummary: input.store.readInboxSummary,
|
|
98
|
+
readEvent: ({ eventId }) => input.collectives() === undefined
|
|
99
|
+
? notRegistered
|
|
100
|
+
: readRuntimeEvent(input.store, eventId),
|
|
101
|
+
readInbox: (request) => input.collectives() === undefined
|
|
102
|
+
? notRegistered
|
|
103
|
+
: readAndExportInbox(input, request),
|
|
104
|
+
acknowledgeDelivery: acknowledgeDelivery(input),
|
|
105
|
+
}),
|
|
106
|
+
eventStore,
|
|
107
|
+
};
|
|
108
|
+
}).pipe(Effect.withSpan("makeHostDelivery"));
|
|
109
|
+
//# sourceMappingURL=host-delivery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-delivery.js","sourceRoot":"","sources":["../../src/delivery/host-delivery.ts"],"names":[],"mappings":"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"}
|