@moltzap/client 2026.1002.0 → 2026.1005.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/NOTICE +1 -6
- package/README.md +2 -2
- package/bin/moltzapd +2 -2
- package/dist/{harness-mcp-contract.d.ts → delivery/history-export.d.ts} +96 -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 +142 -0
- package/dist/delivery/inbox.d.ts.map +1 -0
- package/dist/delivery/inbox.js +130 -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 +787 -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 +308 -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/endpoint/mcp/names.d.ts +18 -0
- package/dist/endpoint/mcp/names.d.ts.map +1 -0
- package/dist/endpoint/mcp/names.js +18 -0
- package/dist/endpoint/mcp/names.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} +2 -4
- package/dist/endpoint/mcp/owner-tools.js.map +1 -0
- package/dist/endpoint/mcp/schemas.d.ts +42 -0
- package/dist/endpoint/mcp/schemas.d.ts.map +1 -0
- package/dist/endpoint/mcp/schemas.js +89 -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} +230 -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 +21 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -5
- package/dist/index.js.map +1 -1
- package/dist/{contract.types-check.d.ts → index.types-check.d.ts} +12 -7
- package/dist/index.types-check.d.ts.map +1 -0
- package/dist/{contract.types-check.js → index.types-check.js} +6 -5
- package/dist/index.types-check.js.map +1 -0
- package/dist/{daemon/runtime/activation.d.ts → service/activation/index.d.ts} +11 -13
- package/dist/service/activation/index.d.ts.map +1 -0
- package/dist/{daemon/runtime/activation.js → service/activation/index.js} +3 -3
- package/dist/service/activation/index.js.map +1 -0
- package/dist/{daemon/configuration.d.ts → service/bootstrap.d.ts} +9 -17
- package/dist/service/bootstrap.d.ts.map +1 -0
- package/dist/service/bootstrap.js +6 -0
- package/dist/service/bootstrap.js.map +1 -0
- package/dist/service/configuration.d.ts +13 -0
- package/dist/service/configuration.d.ts.map +1 -0
- package/dist/service/configuration.js +75 -0
- package/dist/service/configuration.js.map +1 -0
- package/dist/{daemon/runtime → service}/controller.d.ts +9 -7
- 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} +4 -4
- package/dist/service/lifecycle.d.ts.map +1 -0
- package/dist/{daemon/runtime/index.js → service/lifecycle.js} +29 -26
- package/dist/service/lifecycle.js.map +1 -0
- package/dist/{daemon → service}/management.d.ts +3 -3
- package/dist/service/management.d.ts.map +1 -0
- package/dist/{daemon → service}/management.js +4 -14
- package/dist/service/management.js.map +1 -0
- package/dist/{daemon/registration.d.ts → service/registration/index.d.ts} +3 -3
- package/dist/service/registration/index.d.ts.map +1 -0
- package/dist/{daemon/registration.js → service/registration/index.js} +2 -3
- package/dist/service/registration/index.js.map +1 -0
- package/dist/{daemon/runtime/protocol.d.ts → service/supervision.d.ts} +17 -25
- package/dist/service/supervision.d.ts.map +1 -0
- package/dist/{daemon/runtime/protocol.js → service/supervision.js} +34 -37
- 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/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/{endpoint/store → store/queues}/deliveries.d.ts +9 -1
- package/dist/store/queues/deliveries.d.ts.map +1 -0
- package/dist/{endpoint/store → store/queues}/deliveries.js +19 -3
- package/dist/store/queues/deliveries.js.map +1 -0
- package/dist/{endpoint/store → store/queues}/dissemination.d.ts +4 -2
- package/dist/store/queues/dissemination.d.ts.map +1 -0
- package/dist/{endpoint/store → store/queues}/dissemination.js +5 -4
- package/dist/store/queues/dissemination.js.map +1 -0
- package/dist/store/queues/index.d.ts +5 -0
- package/dist/store/queues/index.d.ts.map +1 -0
- package/dist/store/queues/index.js +7 -0
- package/dist/store/queues/index.js.map +1 -0
- package/dist/{endpoint/store → store/queues}/outbound.d.ts +1 -1
- package/dist/store/queues/outbound.d.ts.map +1 -0
- package/dist/{endpoint/store → store/queues}/outbound.js +1 -1
- package/dist/store/queues/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} +2 -4
- package/dist/store/reads.js.map +1 -0
- package/dist/store/records.d.ts.map +1 -0
- package/dist/{endpoint/store → store}/records.js +1 -2
- 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} +34 -7
- 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-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/forms.d.ts +260 -0
- package/dist/transport/collectives/forms.d.ts.map +1 -0
- package/dist/transport/collectives/forms.js +214 -0
- package/dist/transport/collectives/forms.js.map +1 -0
- package/dist/transport/collectives/inbound.d.ts +129 -0
- package/dist/transport/collectives/inbound.d.ts.map +1 -0
- package/dist/transport/collectives/inbound.js +81 -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} +8 -4
- package/dist/transport/collectives/message-text.d.ts.map +1 -0
- package/dist/{message-text.js → transport/collectives/message-text.js} +23 -47
- package/dist/transport/collectives/message-text.js.map +1 -0
- package/dist/{endpoint/collective → transport/collectives}/operation.d.ts +35 -24
- package/dist/transport/collectives/operation.d.ts.map +1 -0
- package/dist/{endpoint/collective → transport/collectives}/operation.js +70 -105
- package/dist/transport/collectives/operation.js.map +1 -0
- package/dist/transport/collectives/part/grammar.d.ts +175 -0
- package/dist/transport/collectives/part/grammar.d.ts.map +1 -0
- package/dist/transport/collectives/part/grammar.js +222 -0
- package/dist/transport/collectives/part/grammar.js.map +1 -0
- package/dist/{endpoint/collective/wire.d.ts → transport/collectives/part/index.d.ts} +38 -51
- package/dist/transport/collectives/part/index.d.ts.map +1 -0
- package/dist/{endpoint/collective/wire.js → transport/collectives/part/index.js} +20 -122
- package/dist/transport/collectives/part/index.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/transport/collectives/render.d.ts +40 -0
- package/dist/transport/collectives/render.d.ts.map +1 -0
- package/dist/transport/collectives/render.js +74 -0
- package/dist/transport/collectives/render.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 +4 -3
- package/dist/transport/collectives/shared-answers.d.ts.map +1 -0
- package/dist/transport/collectives/shared-answers.js.map +1 -0
- package/dist/transport/collectives/validation.d.ts +31 -0
- package/dist/transport/collectives/validation.d.ts.map +1 -0
- package/dist/transport/collectives/validation.js +239 -0
- package/dist/transport/collectives/validation.js.map +1 -0
- package/dist/{endpoint/addressing/index.d.ts → transport/messaging/address.d.ts} +7 -4
- package/dist/transport/messaging/address.d.ts.map +1 -0
- package/dist/{endpoint/addressing/index.js → transport/messaging/address.js} +30 -26
- 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} +15 -10
- 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} +7 -6
- package/dist/transport/messaging/dissemination.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/transport/messaging/evidence.d.ts.map +1 -0
- 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} +25 -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 +38 -0
- package/dist/transport/messaging/message.js.map +1 -0
- package/dist/{endpoint/recovery → transport/messaging}/reanchor/empty.d.ts +5 -5
- package/dist/transport/messaging/reanchor/empty.d.ts.map +1 -0
- package/dist/{endpoint/recovery → transport/messaging}/reanchor/empty.js +3 -3
- package/dist/transport/messaging/reanchor/empty.js.map +1 -0
- package/dist/{endpoint/recovery → transport/messaging}/reanchor/index.d.ts +3 -3
- package/dist/transport/messaging/reanchor/index.d.ts.map +1 -0
- package/dist/{endpoint/recovery → transport/messaging}/reanchor/index.js +27 -12
- package/dist/transport/messaging/reanchor/index.js.map +1 -0
- package/dist/{endpoint/engine-durability.d.ts → transport/messaging/records/index.d.ts} +9 -6
- package/dist/transport/messaging/records/index.d.ts.map +1 -0
- package/dist/{endpoint/engine-durability.js → transport/messaging/records/index.js} +9 -15
- package/dist/transport/messaging/records/index.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 +41 -32
- 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/state.d.ts → transport/messaging/recovery-session/index.d.ts} +6 -6
- package/dist/transport/messaging/recovery-session/index.d.ts.map +1 -0
- package/dist/{endpoint/recovery/state.js → transport/messaging/recovery-session/index.js} +3 -3
- package/dist/transport/messaging/recovery-session/index.js.map +1 -0
- package/dist/{endpoint/engine-types.d.ts → transport/messaging/runtime/index.d.ts} +22 -5
- package/dist/transport/messaging/runtime/index.d.ts.map +1 -0
- package/dist/{endpoint/engine-types.js → transport/messaging/runtime/index.js} +1 -1
- package/dist/transport/messaging/runtime/index.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/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 +3 -4
- 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/encoding/canonical.d.ts} +1 -2
- package/dist/transport/wire/encoding/canonical.d.ts.map +1 -0
- package/dist/{endpoint/representation-canonical.js → transport/wire/encoding/canonical.js} +2 -2
- package/dist/transport/wire/encoding/canonical.js.map +1 -0
- package/dist/{endpoint/representation-codec.d.ts → transport/wire/encoding/codec.d.ts} +5 -9
- package/dist/transport/wire/encoding/codec.d.ts.map +1 -0
- package/dist/{endpoint/representation-codec.js → transport/wire/encoding/codec.js} +7 -27
- package/dist/transport/wire/encoding/codec.js.map +1 -0
- package/dist/transport/wire/encoding/index.d.ts +4 -0
- package/dist/transport/wire/encoding/index.d.ts.map +1 -0
- package/dist/transport/wire/encoding/index.js +6 -0
- package/dist/transport/wire/encoding/index.js.map +1 -0
- package/dist/transport/wire/index.d.ts +6 -0
- package/dist/transport/wire/index.d.ts.map +1 -0
- package/dist/transport/wire/index.js +9 -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 +114 -0
- package/dist/transport/wire/values.d.ts.map +1 -0
- package/dist/transport/wire/values.js +192 -0
- package/dist/transport/wire/values.js.map +1 -0
- package/dist/{endpoint/representation-verification.d.ts → transport/wire/verification.d.ts} +3 -4
- package/dist/transport/wire/verification.d.ts.map +1 -0
- package/dist/{endpoint/representation-verification.js → transport/wire/verification.js} +4 -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 +0 -75
- 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 +0 -49
- package/dist/endpoint/collective/validation.d.ts.map +0 -1
- package/dist/endpoint/collective/validation.js +0 -97
- 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.d.ts.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-types.js.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.d.ts.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}/records.d.ts +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
package/NOTICE
CHANGED
|
@@ -8,9 +8,4 @@ published manifests declared; the repository LICENSE was the MIT License at
|
|
|
8
8
|
the time. The source in this repository is original to the project; no
|
|
9
9
|
third-party MIT-licensed source is relicensed by this change.
|
|
10
10
|
|
|
11
|
-
Third-party software is consumed as npm packages
|
|
12
|
-
pinned upstream source archives at build time under their own licenses:
|
|
13
|
-
|
|
14
|
-
- OpenClaw (ghcr.io/openclaw/openclaw) as the base of the OpenClaw agent image.
|
|
15
|
-
- NanoClaw (github.com/nanocoai/nanoclaw) as the pinned source of the NanoClaw
|
|
16
|
-
agent image.
|
|
11
|
+
Third-party software is consumed as npm packages under their own licenses.
|
package/README.md
CHANGED
|
@@ -14,7 +14,7 @@ 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,
|
|
@@ -42,7 +42,7 @@ requester and every member an all_gather's; and a host whose tool returns
|
|
|
42
42
|
before the send passes `failureDelivery: "inbound"` to receive a refused
|
|
43
43
|
gather, all_gather or response as an `operationFailed` item. Each delivery carries an
|
|
44
44
|
adapter-only acknowledgment governed by the
|
|
45
|
-
[host-specific acceptance contract](../../docs/spec/harness/ingress.md#
|
|
45
|
+
[host-specific acceptance contract](../../docs/spec/harness/ingress.md#delivery-handoff).
|
|
46
46
|
Hosts implement the required persistence and replay guarantees. No inbound
|
|
47
47
|
message carries Client-level reply authority.
|
|
48
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,75 +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.filter<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
|
-
to: Schema.brand<Schema.filter<typeof Schema.String>, "MessageAddressInput">;
|
|
51
|
-
collectiveResponse: Schema.Union<[Schema.Struct<{
|
|
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
|
-
action: Schema.Literal<["decline"]>;
|
|
56
|
-
}>]>;
|
|
57
|
-
}>]>;
|
|
58
|
-
failureDelivery: Schema.optionalWith<Schema.Literal<["result", "inbound"]>, {
|
|
59
|
-
exact: true;
|
|
60
|
-
}>;
|
|
61
|
-
}>;
|
|
62
|
-
/**
|
|
63
|
-
* A completed operation. A collecting operation names the id its answers and
|
|
64
|
-
* result carry; a multicast has none, so its result is empty.
|
|
65
|
-
*/
|
|
66
|
-
declare const harnessSendResultSchema: Schema.Struct<{
|
|
67
|
-
operationId: Schema.optionalWith<Schema.brand<Schema.filter<typeof Schema.String>, "CollectiveId">, {
|
|
68
|
-
exact: true;
|
|
69
|
-
}>;
|
|
70
|
-
}>;
|
|
71
|
-
declare const harnessMessageReadyEventSchema: Schema.Struct<{
|
|
72
|
-
deliveryToken: Schema.brand<Schema.filter<typeof Schema.String>, "DeliveryToken">;
|
|
10
|
+
export declare const HistoryExportRecord: Schema.Union<[Schema.Struct<{
|
|
11
|
+
kind: Schema.Literal<["inbound"]>;
|
|
73
12
|
item: Schema.Union<[Schema.Struct<{
|
|
74
13
|
kind: Schema.Literal<["multicast"]>;
|
|
75
14
|
message: Schema.Union<[Schema.filter<Schema.Struct<{
|
|
@@ -82,19 +21,19 @@ declare const harnessMessageReadyEventSchema: Schema.Struct<{
|
|
|
82
21
|
readonly text: string;
|
|
83
22
|
} | {
|
|
84
23
|
readonly type: "data";
|
|
85
|
-
readonly value: import("
|
|
24
|
+
readonly value: import("../index.js").JsonValue;
|
|
86
25
|
}, ...({
|
|
87
26
|
readonly type: "text";
|
|
88
27
|
readonly text: string;
|
|
89
28
|
} | {
|
|
90
29
|
readonly type: "data";
|
|
91
|
-
readonly value: import("
|
|
30
|
+
readonly value: import("../index.js").JsonValue;
|
|
92
31
|
})[]], Schema.NonEmptyArray<Schema.Union<[Schema.Struct<{
|
|
93
32
|
type: Schema.Literal<["text"]>;
|
|
94
33
|
text: Schema.filter<typeof Schema.String>;
|
|
95
34
|
}>, Schema.Struct<{
|
|
96
35
|
type: Schema.Literal<["data"]>;
|
|
97
|
-
value: Schema.Schema<import("
|
|
36
|
+
value: Schema.Schema<import("../index.js").JsonValue, import("../index.js").JsonValue, never>;
|
|
98
37
|
}>]>>>;
|
|
99
38
|
}>>, Schema.filter<Schema.Struct<{
|
|
100
39
|
kind: Schema.Literal<["group"]>;
|
|
@@ -107,23 +46,24 @@ declare const harnessMessageReadyEventSchema: Schema.Struct<{
|
|
|
107
46
|
readonly text: string;
|
|
108
47
|
} | {
|
|
109
48
|
readonly type: "data";
|
|
110
|
-
readonly value: import("
|
|
49
|
+
readonly value: import("../index.js").JsonValue;
|
|
111
50
|
}, ...({
|
|
112
51
|
readonly type: "text";
|
|
113
52
|
readonly text: string;
|
|
114
53
|
} | {
|
|
115
54
|
readonly type: "data";
|
|
116
|
-
readonly value: import("
|
|
55
|
+
readonly value: import("../index.js").JsonValue;
|
|
117
56
|
})[]], Schema.NonEmptyArray<Schema.Union<[Schema.Struct<{
|
|
118
57
|
type: Schema.Literal<["text"]>;
|
|
119
58
|
text: Schema.filter<typeof Schema.String>;
|
|
120
59
|
}>, Schema.Struct<{
|
|
121
60
|
type: Schema.Literal<["data"]>;
|
|
122
|
-
value: Schema.Schema<import("
|
|
61
|
+
value: Schema.Schema<import("../index.js").JsonValue, import("../index.js").JsonValue, never>;
|
|
123
62
|
}>]>>>;
|
|
124
63
|
}>>]>;
|
|
125
64
|
}>, Schema.Struct<{
|
|
126
65
|
kind: Schema.Literal<["collectiveRequest"]>;
|
|
66
|
+
op: Schema.Literal<["gather", "all_gather"]>;
|
|
127
67
|
id: Schema.brand<Schema.filter<typeof Schema.String>, "CollectiveId">;
|
|
128
68
|
postId: Schema.brand<Schema.filter<typeof Schema.String>, "PostId">;
|
|
129
69
|
from: Schema.brand<Schema.filter<Schema.brand<Schema.filter<typeof Schema.String>, "MessageAddressInput">>, "AgentAddress">;
|
|
@@ -134,7 +74,7 @@ declare const harnessMessageReadyEventSchema: Schema.Struct<{
|
|
|
134
74
|
exact: true;
|
|
135
75
|
}>;
|
|
136
76
|
type: Schema.Literal<["object"]>;
|
|
137
|
-
properties: Schema.Record$<typeof Schema.String, Schema.Record$<typeof Schema.String, Schema.Schema<import("
|
|
77
|
+
properties: Schema.Record$<typeof Schema.String, Schema.Record$<typeof Schema.String, Schema.Schema<import("../index.js").JsonValue, import("../index.js").JsonValue, never>>>;
|
|
138
78
|
required: Schema.optionalWith<Schema.Array$<typeof Schema.String>, {
|
|
139
79
|
exact: true;
|
|
140
80
|
}>;
|
|
@@ -142,6 +82,7 @@ declare const harnessMessageReadyEventSchema: Schema.Struct<{
|
|
|
142
82
|
deadlineAt: Schema.filter<Schema.filter<typeof Schema.Number>>;
|
|
143
83
|
}>, Schema.Struct<{
|
|
144
84
|
kind: Schema.Literal<["collectiveResult"]>;
|
|
85
|
+
op: Schema.Literal<["gather", "all_gather"]>;
|
|
145
86
|
id: Schema.brand<Schema.filter<typeof Schema.String>, "CollectiveId">;
|
|
146
87
|
to: Schema.brand<Schema.filter<typeof Schema.String>, "MessageAddressInput">;
|
|
147
88
|
question: Schema.filter<typeof Schema.String>;
|
|
@@ -159,72 +100,91 @@ declare const harnessMessageReadyEventSchema: Schema.Struct<{
|
|
|
159
100
|
kind: Schema.Literal<["no-answer"]>;
|
|
160
101
|
}>]>;
|
|
161
102
|
}>>;
|
|
162
|
-
closePostId: Schema.optionalWith<Schema.brand<Schema.filter<typeof Schema.String>, "PostId">, {
|
|
163
|
-
exact: true;
|
|
164
|
-
}>;
|
|
165
103
|
}>, Schema.Struct<{
|
|
166
104
|
kind: Schema.Literal<["operationFailed"]>;
|
|
167
105
|
id: Schema.brand<Schema.filter<typeof Schema.String>, "CollectiveId">;
|
|
168
106
|
to: Schema.brand<Schema.filter<typeof Schema.String>, "MessageAddressInput">;
|
|
169
107
|
error: typeof Schema.String;
|
|
170
108
|
}>]>;
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
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
|
-
|
|
109
|
+
at: typeof Schema.DateTimeUtc;
|
|
110
|
+
}>, Schema.Struct<{
|
|
111
|
+
kind: Schema.Literal<["outbound"]>;
|
|
112
|
+
input: Schema.Union<[Schema.Struct<{
|
|
113
|
+
to: Schema.brand<Schema.filter<typeof Schema.String>, "MessageAddressInput">;
|
|
114
|
+
text: Schema.filter<typeof Schema.String>;
|
|
115
|
+
collective: Schema.optionalWith<Schema.Union<[Schema.Struct<{
|
|
116
|
+
op: Schema.optionalWith<Schema.Literal<["multicast"]>, {
|
|
117
|
+
exact: true;
|
|
118
|
+
}>;
|
|
119
|
+
}>, Schema.Struct<{
|
|
120
|
+
op: Schema.Literal<["gather", "all_gather"]>;
|
|
121
|
+
deadline: Schema.filter<Schema.filter<typeof Schema.Number>>;
|
|
122
|
+
requestedSchema: Schema.Struct<{
|
|
123
|
+
$schema: Schema.optionalWith<typeof Schema.String, {
|
|
124
|
+
exact: true;
|
|
125
|
+
}>;
|
|
126
|
+
type: Schema.Literal<["object"]>;
|
|
127
|
+
properties: Schema.Record$<typeof Schema.String, Schema.Record$<typeof Schema.String, Schema.Schema<import("../index.js").JsonValue, import("../index.js").JsonValue, never>>>;
|
|
128
|
+
required: Schema.optionalWith<Schema.Array$<typeof Schema.String>, {
|
|
129
|
+
exact: true;
|
|
130
|
+
}>;
|
|
131
|
+
}>;
|
|
132
|
+
}>]>, {
|
|
133
|
+
exact: true;
|
|
134
|
+
}>;
|
|
135
|
+
}>, Schema.Struct<{
|
|
136
|
+
to: Schema.brand<Schema.filter<typeof Schema.String>, "MessageAddressInput">;
|
|
137
|
+
collectiveResponse: Schema.Union<[Schema.Struct<{
|
|
138
|
+
action: Schema.Literal<["accept"]>;
|
|
139
|
+
content: Schema.Record$<typeof Schema.String, Schema.Union<[typeof Schema.String, Schema.filter<typeof Schema.Number>, typeof Schema.Boolean, Schema.Array$<typeof Schema.String>]>>;
|
|
140
|
+
}>, Schema.Struct<{
|
|
141
|
+
action: Schema.Literal<["decline"]>;
|
|
142
|
+
}>]>;
|
|
143
|
+
}>]>;
|
|
144
|
+
outcome: Schema.Union<[Schema.Struct<{
|
|
145
|
+
kind: Schema.Literal<["sent"]>;
|
|
146
|
+
operationId: Schema.optionalWith<Schema.brand<Schema.filter<typeof Schema.String>, "CollectiveId">, {
|
|
147
|
+
exact: true;
|
|
148
|
+
}>;
|
|
149
|
+
postIds: Schema.Array$<Schema.brand<Schema.filter<typeof Schema.String>, "PostId">>;
|
|
150
|
+
}>, Schema.Struct<{
|
|
151
|
+
kind: Schema.Literal<["failed"]>;
|
|
152
|
+
error: typeof Schema.String;
|
|
153
|
+
}>]>;
|
|
154
|
+
at: typeof Schema.DateTimeUtc;
|
|
155
|
+
}>, Schema.Struct<{
|
|
156
|
+
kind: Schema.Literal<["export-failed"]>;
|
|
157
|
+
reason: typeof Schema.String;
|
|
158
|
+
at: typeof Schema.DateTimeUtc;
|
|
159
|
+
}>]>;
|
|
160
|
+
/** A validated line of the daemon's history export. */
|
|
161
|
+
export type HistoryExportRecord = typeof HistoryExportRecord.Type;
|
|
217
162
|
/**
|
|
218
|
-
*
|
|
219
|
-
*
|
|
220
|
-
*
|
|
163
|
+
* Sink for the daemon's optional history export. Recording never fails and
|
|
164
|
+
* never blocks the daemon on its own outcome: an export that stops is the
|
|
165
|
+
* sink's business, recorded in the file.
|
|
221
166
|
*/
|
|
222
|
-
export
|
|
167
|
+
export interface HistoryExportPort {
|
|
168
|
+
readonly record: (record: HistoryExportRecord) => Effect.Effect<void>;
|
|
169
|
+
}
|
|
170
|
+
/** The export in place when the operator configured none: records vanish. */
|
|
171
|
+
export declare const noHistoryExport: HistoryExportPort;
|
|
223
172
|
/**
|
|
224
|
-
*
|
|
225
|
-
*
|
|
226
|
-
*
|
|
173
|
+
* Open the daemon's history export against one file.
|
|
174
|
+
*
|
|
175
|
+
* Recording completes only once the line is on disk: an inbound record lands
|
|
176
|
+
* before its message becomes visible to the agent and an outbound record
|
|
177
|
+
* before the send returns, so a transcript harvested the moment a program
|
|
178
|
+
* ends holds every delivery and send that program could have observed. That
|
|
179
|
+
* costs one append inside the delivery path, accepted for an opt-in evidence
|
|
180
|
+
* file whose worth is its completeness. Lines are appended one at a time
|
|
181
|
+
* under a gate, so two records never interleave. The first append that fails
|
|
182
|
+
* ends the export: one `export-failed` line is written on a best-effort
|
|
183
|
+
* basis, every later record is dropped, and the daemon goes on serving the
|
|
184
|
+
* agent. An experiment must not die because its transcript file did, and the
|
|
185
|
+
* truncation is explicit in the file rather than silent.
|
|
186
|
+
*
|
|
187
|
+
* The file is created on the first write.
|
|
227
188
|
*/
|
|
228
|
-
export declare function
|
|
229
|
-
export
|
|
230
|
-
//# sourceMappingURL=harness-mcp-contract.d.ts.map
|
|
189
|
+
export declare function makeHistoryExport(path: string): Effect.Effect<HistoryExportPort, never, FileSystem.FileSystem>;
|
|
190
|
+
//# 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":"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"}
|
|
@@ -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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"}
|