@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../src/delivery/operations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/** @file The values harness operations take, return and persist: sends, inbox pages, events and acknowledgments. */
|
|
2
|
+
import { Effect, Schema } from "effect";
|
|
3
|
+
import { DeliveryToken, } from "../store/types.js";
|
|
4
|
+
import { CollectiveId, decodeCollectiveFailure, SendInput, } from "../transport/collectives/forms.js";
|
|
5
|
+
import { InboundItem } from "../transport/collectives/inbound.js";
|
|
6
|
+
import { exactStruct } from "../transport/wire/values.js";
|
|
7
|
+
const exact = {
|
|
8
|
+
exact: true,
|
|
9
|
+
onExcessProperty: "error",
|
|
10
|
+
};
|
|
11
|
+
/** Canonical event identities reuse the immutable inbox binding's random bytes. */
|
|
12
|
+
export const eventIdSchema = Schema.String.pipe(Schema.pattern(/^evt_[A-Za-z0-9_-]{42}[AEIMQUYcgkosw048]$/u));
|
|
13
|
+
/** Read-only content lookup never acknowledges or retries delivery. */
|
|
14
|
+
export const readEventRequestSchema = exactStruct({ eventId: eventIdSchema });
|
|
15
|
+
/** The original classified payload, including after its handoff. */
|
|
16
|
+
export const readEventResultSchema = exactStruct({ item: InboundItem });
|
|
17
|
+
/** A delivery acknowledgment names the delivery it retires. */
|
|
18
|
+
export const harnessAcknowledgeDeliveryRequestSchema = exactStruct({
|
|
19
|
+
deliveryToken: DeliveryToken,
|
|
20
|
+
});
|
|
21
|
+
const utf8 = new TextEncoder();
|
|
22
|
+
const invocationKey = Schema.String.pipe(Schema.minLength(1), Schema.maxLength(128), Schema.filter((value) => !value.includes("\u0000") && utf8.encode(value).byteLength <= 128));
|
|
23
|
+
/**
|
|
24
|
+
* Runtime identity and routing of a refused gather or response.
|
|
25
|
+
* `inbound` is for a host whose tool returns before the
|
|
26
|
+
* send: the call completes and the error arrives as an `operationFailed`
|
|
27
|
+
* item. The default returns it as the tool error.
|
|
28
|
+
*/
|
|
29
|
+
export const harnessSendOptionsSchema = exactStruct({
|
|
30
|
+
idempotencyKey: Schema.optionalWith(invocationKey, { exact: true }),
|
|
31
|
+
failureDelivery: Schema.optionalWith(Schema.Literal("result", "inbound"), {
|
|
32
|
+
exact: true,
|
|
33
|
+
}),
|
|
34
|
+
});
|
|
35
|
+
/** The model-visible arguments of one send. */
|
|
36
|
+
export const harnessSendArgumentsSchema = exactStruct({ input: SendInput });
|
|
37
|
+
const harnessSendRequestSchema = exactStruct({
|
|
38
|
+
...harnessSendArgumentsSchema.fields,
|
|
39
|
+
...harnessSendOptionsSchema.fields,
|
|
40
|
+
});
|
|
41
|
+
/**
|
|
42
|
+
* A completed operation. A collecting operation names the id its answers and
|
|
43
|
+
* result carry; a multicast has none, so its result is empty.
|
|
44
|
+
*/
|
|
45
|
+
export const harnessSendResultSchema = exactStruct({
|
|
46
|
+
operationId: Schema.optionalWith(CollectiveId, { exact: true }),
|
|
47
|
+
});
|
|
48
|
+
const harnessMessageReadyEventSchema = exactStruct({
|
|
49
|
+
deliveryToken: DeliveryToken,
|
|
50
|
+
item: InboundItem,
|
|
51
|
+
});
|
|
52
|
+
/** One page request over the classified inbox. */
|
|
53
|
+
export const inboxRequestSchema = exactStruct({
|
|
54
|
+
cursor: Schema.optionalWith(Schema.String, { exact: true }),
|
|
55
|
+
});
|
|
56
|
+
/** One page of classified deliveries and the cursor after it. */
|
|
57
|
+
export const inboxResultSchema = exactStruct({
|
|
58
|
+
items: Schema.Array(harnessMessageReadyEventSchema),
|
|
59
|
+
nextCursor: Schema.optionalWith(Schema.String, { exact: true }),
|
|
60
|
+
});
|
|
61
|
+
/** Caller-selected identity of one previously attempted send. */
|
|
62
|
+
export const readSendRequestSchema = exactStruct({
|
|
63
|
+
idempotencyKey: invocationKey,
|
|
64
|
+
});
|
|
65
|
+
/**
|
|
66
|
+
* The JSON-RPC error data of a refused `send_message`: a `SendError` reason
|
|
67
|
+
* with the detail naming its specific cause, or a refused collective send with its id and the failure naming each
|
|
68
|
+
* unreachable member or failing field, which `decodeCollectiveFailure`
|
|
69
|
+
* validates.
|
|
70
|
+
*/
|
|
71
|
+
const harnessSendErrorDataSchema = Schema.Union(exactStruct({
|
|
72
|
+
reason: Schema.Literal("collective-failed"),
|
|
73
|
+
id: CollectiveId,
|
|
74
|
+
failure: Schema.Unknown,
|
|
75
|
+
}), exactStruct({
|
|
76
|
+
reason: Schema.String,
|
|
77
|
+
detail: Schema.optionalWith(Schema.String, { exact: true }),
|
|
78
|
+
}));
|
|
79
|
+
/** Exact retained result of one invocation; failure is not proof of no post. */
|
|
80
|
+
const harnessSendOutcomeSchema = Schema.Union(exactStruct({
|
|
81
|
+
kind: Schema.Literal("success"),
|
|
82
|
+
result: harnessSendResultSchema,
|
|
83
|
+
}), exactStruct({
|
|
84
|
+
kind: Schema.Literal("failure"),
|
|
85
|
+
error: harnessSendErrorDataSchema,
|
|
86
|
+
}));
|
|
87
|
+
/** Observed invocation evidence without a collective completion claim. */
|
|
88
|
+
// eslint-disable-next-line agent-code-guard/no-exported-brand-constructor -- The MCP catalog projects the closed send-state union to JSON Schema.
|
|
89
|
+
export const readSendResultSchema = Schema.Union(exactStruct({ state: Schema.Literal("absent") }), exactStruct({
|
|
90
|
+
state: Schema.Literal("pending", "indeterminate"),
|
|
91
|
+
input: SendInput,
|
|
92
|
+
}), exactStruct({
|
|
93
|
+
state: Schema.Literal("returned"),
|
|
94
|
+
input: SendInput,
|
|
95
|
+
outcome: harnessSendOutcomeSchema,
|
|
96
|
+
}));
|
|
97
|
+
/** Validate the persisted wire outcome before reconstructing a typed send result. */
|
|
98
|
+
export const decodeHarnessSendOutcome = Schema.decodeUnknown(harnessSendOutcomeSchema);
|
|
99
|
+
/** Decode a bounded inbox page received through the MCP transport. */
|
|
100
|
+
export const decodeHarnessReadInboxResult = Schema.decodeUnknown(inboxResultSchema);
|
|
101
|
+
/** Validate the keyed lookup at the tool boundary, including its UTF-8 bound. */
|
|
102
|
+
export const decodeHarnessReadSendRequest = Schema.decodeUnknown(readSendRequestSchema);
|
|
103
|
+
/** Validate a daemon invocation before binding its input in the durable store. */
|
|
104
|
+
export const decodeHarnessSendRequest = Schema.decodeUnknown(harnessSendRequestSchema);
|
|
105
|
+
/**
|
|
106
|
+
* The error data a refused send carries across the daemon boundary and into
|
|
107
|
+
* its durable invocation record: a collective failure keeps its id and the
|
|
108
|
+
* members or fields it names, and a send failure keeps the detail naming its
|
|
109
|
+
* cause, so the receiving side rebuilds the same typed error and message.
|
|
110
|
+
* @param error The refused send's typed error.
|
|
111
|
+
* @returns The JSON error data.
|
|
112
|
+
*/
|
|
113
|
+
export function sendErrorData(error) {
|
|
114
|
+
if (error._tag === "CollectiveError") {
|
|
115
|
+
return {
|
|
116
|
+
reason: "collective-failed",
|
|
117
|
+
id: error.id,
|
|
118
|
+
failure: error.failure,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
if (error.detail === undefined) {
|
|
122
|
+
return { reason: error.reason };
|
|
123
|
+
}
|
|
124
|
+
return { reason: error.reason, detail: error.detail };
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Decode one exact delivery acknowledgment request.
|
|
128
|
+
* @param value Untrusted tool arguments.
|
|
129
|
+
* @returns The validated request.
|
|
130
|
+
*/
|
|
131
|
+
export function decodeHarnessAcknowledgeDeliveryRequest(value) {
|
|
132
|
+
return Schema.decodeUnknown(harnessAcknowledgeDeliveryRequestSchema)(value, exact);
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Decode one exact pending-delivery notification payload.
|
|
136
|
+
* @param value Untrusted notification parameters.
|
|
137
|
+
* @returns The validated pending delivery.
|
|
138
|
+
*/
|
|
139
|
+
export function decodeHarnessMessageReadyEvent(value) {
|
|
140
|
+
return Schema.decodeUnknown(harnessMessageReadyEventSchema)(value, exact);
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Decode the error data of one refused `send_message` call.
|
|
144
|
+
* @param value Untrusted JSON-RPC error data.
|
|
145
|
+
* @returns The collective failure or send reason it carries.
|
|
146
|
+
*/
|
|
147
|
+
export function decodeHarnessSendErrorData(value) {
|
|
148
|
+
return Schema.decodeUnknown(harnessSendErrorDataSchema)(value, exact).pipe(Effect.flatMap((data) => "failure" in data
|
|
149
|
+
? decodeCollectiveFailure(data.failure).pipe(Effect.map((failure) => ({ ...data, failure })))
|
|
150
|
+
: Effect.succeed(data)));
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Decode one `send_message` result.
|
|
154
|
+
* @param value Untrusted structured tool content.
|
|
155
|
+
* @returns The operation id a gather names, if any.
|
|
156
|
+
*/
|
|
157
|
+
export function decodeHarnessSendResult(value) {
|
|
158
|
+
return Schema.decodeUnknown(harnessSendResultSchema)(value, exact);
|
|
159
|
+
}
|
|
160
|
+
/** Reversible naming keeps lookup independent of subscription and retry state. */
|
|
161
|
+
export const eventIdOf = (token) => `evt_${token.slice(4)}`;
|
|
162
|
+
//# sourceMappingURL=operations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operations.js","sourceRoot":"","sources":["../../src/delivery/operations.ts"],"names":[],"mappings":"AAAA,oHAAoH;AAEpH,OAAO,EAAE,MAAM,EAAoB,MAAM,EAAkB,MAAM,QAAQ,CAAC;AAE1E,OAAO,EACL,aAAa,GAGd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,YAAY,EACZ,uBAAuB,EACvB,SAAS,GACV,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE1D,MAAM,KAAK,GAA2B;IACpC,KAAK,EAAE,IAAI;IACX,gBAAgB,EAAE,OAAO;CAC1B,CAAC;AAEF,mFAAmF;AACnF,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAC7C,MAAM,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAC7D,CAAC;AACF,uEAAuE;AACvE,MAAM,CAAC,MAAM,sBAAsB,GAAG,WAAW,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;AAC9E,oEAAoE;AACpE,MAAM,CAAC,MAAM,qBAAqB,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;AAExE,+DAA+D;AAC/D,MAAM,CAAC,MAAM,uCAAuC,GAAG,WAAW,CAAC;IACjE,aAAa,EAAE,aAAa;CAC7B,CAAC,CAAC;AAEH,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC;AAC/B,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CACtC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EACnB,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EACrB,MAAM,CAAC,MAAM,CACX,CAAC,KAAK,EAAE,EAAE,CACR,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,UAAU,IAAI,GAAG,CACpE,CACF,CAAC;AACF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,WAAW,CAAC;IAClD,cAAc,EAAE,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACnE,eAAe,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE;QACxE,KAAK,EAAE,IAAI;KACZ,CAAC;CACH,CAAC,CAAC;AACH,+CAA+C;AAC/C,MAAM,CAAC,MAAM,0BAA0B,GAAG,WAAW,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;AAC5E,MAAM,wBAAwB,GAAG,WAAW,CAAC;IAC3C,GAAG,0BAA0B,CAAC,MAAM;IACpC,GAAG,wBAAwB,CAAC,MAAM;CACnC,CAAC,CAAC;AACH;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,WAAW,CAAC;IACjD,WAAW,EAAE,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;CAChE,CAAC,CAAC;AACH,MAAM,8BAA8B,GAAG,WAAW,CAAC;IACjD,aAAa,EAAE,aAAa;IAC5B,IAAI,EAAE,WAAW;CAClB,CAAC,CAAC;AAEH,kDAAkD;AAClD,MAAM,CAAC,MAAM,kBAAkB,GAAG,WAAW,CAAC;IAC5C,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;CAC5D,CAAC,CAAC;AACH,iEAAiE;AACjE,MAAM,CAAC,MAAM,iBAAiB,GAAG,WAAW,CAAC;IAC3C,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC;IACnD,UAAU,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;CAChE,CAAC,CAAC;AACH,iEAAiE;AACjE,MAAM,CAAC,MAAM,qBAAqB,GAAG,WAAW,CAAC;IAC/C,cAAc,EAAE,aAAa;CAC9B,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,0BAA0B,GAAG,MAAM,CAAC,KAAK,CAC7C,WAAW,CAAC;IACV,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC;IAC3C,EAAE,EAAE,YAAY;IAChB,OAAO,EAAE,MAAM,CAAC,OAAO;CACxB,CAAC,EACF,WAAW,CAAC;IACV,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;CAC5D,CAAC,CACH,CAAC;AAEF,gFAAgF;AAChF,MAAM,wBAAwB,GAAG,MAAM,CAAC,KAAK,CAC3C,WAAW,CAAC;IACV,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;IAC/B,MAAM,EAAE,uBAAuB;CAChC,CAAC,EACF,WAAW,CAAC;IACV,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;IAC/B,KAAK,EAAE,0BAA0B;CAClC,CAAC,CACH,CAAC;AAEF,0EAA0E;AAC1E,kJAAkJ;AAClJ,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,KAAK,CAC9C,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,EAChD,WAAW,CAAC;IACV,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,eAAe,CAAC;IACjD,KAAK,EAAE,SAAS;CACjB,CAAC,EACF,WAAW,CAAC;IACV,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;IACjC,KAAK,EAAE,SAAS;IAChB,OAAO,EAAE,wBAAwB;CAClC,CAAC,CACH,CAAC;AAEF,qFAAqF;AACrF,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC,aAAa,CAC1D,wBAAwB,CACzB,CAAC;AAaF,sEAAsE;AACtE,MAAM,CAAC,MAAM,4BAA4B,GACvC,MAAM,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;AAC1C,iFAAiF;AACjF,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAM,CAAC,aAAa,CAC9D,qBAAqB,CACtB,CAAC;AACF,kFAAkF;AAClF,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC,aAAa,CAC1D,wBAAwB,CACzB,CAAC;AAuBF;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAkC;IAElC,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;QACrC,OAAO;YACL,MAAM,EAAE,mBAAmB;YAC3B,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;IAClC,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;AACxD,CAAC;AASD;;;;GAIG;AACH,MAAM,UAAU,uCAAuC,CACrD,KAAc;IAEd,OAAO,MAAM,CAAC,aAAa,CAAC,uCAAuC,CAAC,CAClE,KAAK,EACL,KAAK,CACN,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,8BAA8B,CAC5C,KAAc;IAEd,OAAO,MAAM,CAAC,aAAa,CAAC,8BAA8B,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC5E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CACxC,KAAc;IAEd,OAAO,MAAM,CAAC,aAAa,CAAC,0BAA0B,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,CACxE,MAAM,CAAC,OAAO,CACZ,CAAC,IAAI,EAA+D,EAAE,CACpE,SAAS,IAAI,IAAI;QACf,CAAC,CAAC,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CACxC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAChD;QACH,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAC3B,CACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CACrC,KAAc;IAEd,OAAO,MAAM,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACrE,CAAC;AAaD,kFAAkF;AAClF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAoB,EAAU,EAAE,CACxD,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file The delivery state one service keeps, and one pass over pending
|
|
3
|
+
* deliveries: the collective layer classifies each durable delivery, consumed
|
|
4
|
+
* ones are acknowledged, and the remaining items and the layer's own are
|
|
5
|
+
* published in order while a subscriber takes them.
|
|
6
|
+
*/
|
|
7
|
+
import { Effect } from "effect";
|
|
8
|
+
import type { EndpointStoreError } from "../store/index.js";
|
|
9
|
+
import type { DeliveryToken } from "../store/types.js";
|
|
10
|
+
import type { CollectiveEmitError } from "../transport/collectives/forms.js";
|
|
11
|
+
import type { InboundItem } from "../transport/collectives/inbound.js";
|
|
12
|
+
import type { CollectiveOperations } from "../transport/collectives/index.js";
|
|
13
|
+
import type { EndpointEngine, EnginePendingMessage } from "../transport/messaging/index.js";
|
|
14
|
+
import type { HistoryExportPort } from "./history-export.js";
|
|
15
|
+
import type { HarnessMessageReadyEvent } from "./operations.js";
|
|
16
|
+
/**
|
|
17
|
+
* One instance per service, shared by the delivery pass, host reads,
|
|
18
|
+
* acknowledgments and webhook receipts. `gate` serializes those so an item is
|
|
19
|
+
* exported once and retired once. Emitting a local item never waits on it:
|
|
20
|
+
* the collective layer can emit from inside a pass that already holds it.
|
|
21
|
+
*/
|
|
22
|
+
export interface DeliveryState {
|
|
23
|
+
readonly gate: Effect.Semaphore;
|
|
24
|
+
/** Deliveries the attached subscriber already took. */
|
|
25
|
+
readonly publishedDeliveries: Set<string>;
|
|
26
|
+
/** Deliveries whose item the history export already recorded. */
|
|
27
|
+
readonly exportedDeliveries: Set<string>;
|
|
28
|
+
/** The item each unacknowledged durable delivery classified into. */
|
|
29
|
+
readonly classifiedItems: Map<string, InboundItem>;
|
|
30
|
+
/**
|
|
31
|
+
* Items the collective layer emitted, in emission order, each under a
|
|
32
|
+
* service-minted delivery token until the host acknowledges it. They are
|
|
33
|
+
* durable before insertion; this map caches the current process values.
|
|
34
|
+
*/
|
|
35
|
+
readonly localItems: Map<DeliveryToken, InboundItem>;
|
|
36
|
+
}
|
|
37
|
+
/** Empty delivery state with its own gate. */
|
|
38
|
+
export declare const makeDeliveryState: Effect.Effect<DeliveryState>;
|
|
39
|
+
/**
|
|
40
|
+
* Drop a retired delivery from every process-local cache.
|
|
41
|
+
* @param state The shared delivery state.
|
|
42
|
+
* @param deliveryToken The retired delivery.
|
|
43
|
+
* @returns Completion once the caches no longer hold it.
|
|
44
|
+
*/
|
|
45
|
+
export declare const forgetDelivery: (state: DeliveryState, deliveryToken: DeliveryToken) => Effect.Effect<void>;
|
|
46
|
+
/**
|
|
47
|
+
* Record a delivery's item in the history export the first time any path
|
|
48
|
+
* offers or reads it. The item is read only on that first time, so a caller
|
|
49
|
+
* holding stored bytes decodes them only when the line is written.
|
|
50
|
+
* @param state The shared delivery state.
|
|
51
|
+
* @param historyExport The export the line goes to.
|
|
52
|
+
* @param deliveryToken The delivery the item belongs to.
|
|
53
|
+
* @param item The item, read only when the delivery is not yet exported.
|
|
54
|
+
* @returns Completion once the line is recorded or was already recorded.
|
|
55
|
+
*/
|
|
56
|
+
export declare const exportOnce: <E>(state: DeliveryState, historyExport: HistoryExportPort, deliveryToken: DeliveryToken, item: Effect.Effect<InboundItem, E>) => Effect.Effect<void, E>;
|
|
57
|
+
/** The subscriber's publish edge; false means it refused the event. */
|
|
58
|
+
interface Subscriber {
|
|
59
|
+
readonly publish: (event: HarnessMessageReadyEvent) => boolean;
|
|
60
|
+
}
|
|
61
|
+
/** What one pass over pending deliveries reads and changes. */
|
|
62
|
+
export interface PendingOffer {
|
|
63
|
+
readonly engine: Pick<EndpointEngine, "acknowledgeMessage">;
|
|
64
|
+
readonly classify: CollectiveOperations["classify"];
|
|
65
|
+
/** Classified items are durable even while no host is attached. */
|
|
66
|
+
readonly persist: (event: HarnessMessageReadyEvent) => Effect.Effect<void, EndpointStoreError>;
|
|
67
|
+
/** The attached subscriber, absent while none is attached. */
|
|
68
|
+
readonly handler?: Subscriber;
|
|
69
|
+
readonly historyExport: HistoryExportPort;
|
|
70
|
+
/**
|
|
71
|
+
* The service's delivery state. Its classified items let a delivery be
|
|
72
|
+
* decoded and classified once rather than on every pass.
|
|
73
|
+
*/
|
|
74
|
+
readonly state: DeliveryState;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Offer pending deliveries in order, then the collective layer's own items.
|
|
78
|
+
* Every durable delivery is classified: the layer consumes protocol posts,
|
|
79
|
+
* which are acknowledged here whether or not a subscriber is attached, so
|
|
80
|
+
* answers are recorded and deadlines complete with nobody listening. Items
|
|
81
|
+
* are published while a subscriber accepts them; after the first refusal,
|
|
82
|
+
* or with no subscriber, they stay pending for a later pass.
|
|
83
|
+
* @param offer The engine, classifier and subscriber, and the delivery state
|
|
84
|
+
* whose local items follow the durable deliveries.
|
|
85
|
+
* @param messages Pending durable deliveries in order.
|
|
86
|
+
* @returns Completion after every delivery is consumed or offered, or the
|
|
87
|
+
* store's failure to keep a classified or emitted item, which ends the pass.
|
|
88
|
+
*/
|
|
89
|
+
export declare const offerPendingMessages: (offer: PendingOffer, messages: readonly EnginePendingMessage[]) => Effect.Effect<void, EndpointStoreError | CollectiveEmitError>;
|
|
90
|
+
export {};
|
|
91
|
+
//# sourceMappingURL=pass.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pass.d.ts","sourceRoot":"","sources":["../../src/delivery/pass.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAY,MAAM,EAAU,MAAM,QAAQ,CAAC;AAClD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,KAAK,EACV,cAAc,EACd,oBAAoB,EACrB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAEhE;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC;IAChC,uDAAuD;IACvD,QAAQ,CAAC,mBAAmB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1C,iEAAiE;IACjE,QAAQ,CAAC,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzC,qEAAqE;IACrE,QAAQ,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACnD;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;CACtD;AAED,8CAA8C;AAC9C,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAS1D,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,UAClB,aAAa,iBACL,aAAa,KAC3B,MAAM,CAAC,MAAM,CAAC,IAAI,CAMjB,CAAC;AAEL;;;;;;;;;GASG;AACH,eAAO,MAAM,UAAU,GAAI,CAAC,SACnB,aAAa,iBACL,iBAAiB,iBACjB,aAAa,QACtB,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,KAClC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAQoB,CAAC;AAE7C,uEAAuE;AACvE,UAAU,UAAU;IAClB,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,wBAAwB,KAAK,OAAO,CAAC;CAChE;AAED,+DAA+D;AAC/D,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,oBAAoB,CAAC,CAAC;IAC5D,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC,UAAU,CAAC,CAAC;IACpD,mEAAmE;IACnE,QAAQ,CAAC,OAAO,EAAE,CAChB,KAAK,EAAE,wBAAwB,KAC5B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;IAC7C,8DAA8D;IAC9D,QAAQ,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,iBAAiB,CAAC;IAC1C;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;CAC/B;AA0HD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,oBAAoB,UACxB,YAAY,YACT,SAAS,oBAAoB,EAAE,KACxC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,kBAAkB,GAAG,mBAAmB,CAkBb,CAAC"}
|
|
@@ -1,20 +1,56 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @file
|
|
3
|
-
* each durable delivery, consumed
|
|
4
|
-
* items and the layer's own are
|
|
5
|
-
* them.
|
|
2
|
+
* @file The delivery state one service keeps, and one pass over pending
|
|
3
|
+
* deliveries: the collective layer classifies each durable delivery, consumed
|
|
4
|
+
* ones are acknowledged, and the remaining items and the layer's own are
|
|
5
|
+
* published in order while a subscriber takes them.
|
|
6
6
|
*/
|
|
7
|
-
import { DateTime, Effect, Option
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
import { DateTime, Effect, Option } from "effect";
|
|
8
|
+
/** Empty delivery state with its own gate. */
|
|
9
|
+
export const makeDeliveryState = Effect.map(Effect.makeSemaphore(1), (gate) => ({
|
|
10
|
+
gate,
|
|
11
|
+
publishedDeliveries: new Set(),
|
|
12
|
+
exportedDeliveries: new Set(),
|
|
13
|
+
classifiedItems: new Map(),
|
|
14
|
+
localItems: new Map(),
|
|
15
|
+
}));
|
|
16
|
+
/**
|
|
17
|
+
* Drop a retired delivery from every process-local cache.
|
|
18
|
+
* @param state The shared delivery state.
|
|
19
|
+
* @param deliveryToken The retired delivery.
|
|
20
|
+
* @returns Completion once the caches no longer hold it.
|
|
21
|
+
*/
|
|
22
|
+
export const forgetDelivery = (state, deliveryToken) => Effect.sync(() => {
|
|
23
|
+
state.publishedDeliveries.delete(deliveryToken);
|
|
24
|
+
state.exportedDeliveries.delete(deliveryToken);
|
|
25
|
+
state.classifiedItems.delete(deliveryToken);
|
|
26
|
+
state.localItems.delete(deliveryToken);
|
|
27
|
+
});
|
|
28
|
+
/**
|
|
29
|
+
* Record a delivery's item in the history export the first time any path
|
|
30
|
+
* offers or reads it. The item is read only on that first time, so a caller
|
|
31
|
+
* holding stored bytes decodes them only when the line is written.
|
|
32
|
+
* @param state The shared delivery state.
|
|
33
|
+
* @param historyExport The export the line goes to.
|
|
34
|
+
* @param deliveryToken The delivery the item belongs to.
|
|
35
|
+
* @param item The item, read only when the delivery is not yet exported.
|
|
36
|
+
* @returns Completion once the line is recorded or was already recorded.
|
|
37
|
+
*/
|
|
38
|
+
export const exportOnce = (state, historyExport, deliveryToken, item) => state.exportedDeliveries.has(deliveryToken)
|
|
39
|
+
? Effect.void
|
|
40
|
+
: Effect.gen(function* () {
|
|
41
|
+
const inbound = yield* item;
|
|
42
|
+
const at = yield* DateTime.now;
|
|
43
|
+
yield* historyExport.record({ kind: "inbound", item: inbound, at });
|
|
44
|
+
state.exportedDeliveries.add(deliveryToken);
|
|
45
|
+
}).pipe(Effect.withSpan("exportOnce"));
|
|
10
46
|
/**
|
|
11
47
|
* Acknowledge a delivery the collective layer consumed. A failed
|
|
12
48
|
* acknowledgment is logged and the delivery stays pending: the next pass
|
|
13
49
|
* classifies it again, which records nothing twice because the requester
|
|
14
50
|
* and every all_gather member keep only a member's first answer and a member
|
|
15
|
-
* applies a close once, and acknowledges it again. It does
|
|
16
|
-
*
|
|
17
|
-
*
|
|
51
|
+
* applies a close once, and acknowledges it again. It does not end the
|
|
52
|
+
* pass: store failures end it through the pending read that starts it or
|
|
53
|
+
* the persistence of a classified item.
|
|
18
54
|
*/
|
|
19
55
|
const acknowledgeConsumed = (offer, pending) => offer.engine
|
|
20
56
|
.acknowledgeMessage(pending.deliveryToken)
|
|
@@ -33,30 +69,22 @@ const acknowledgeConsumed = (offer, pending) => offer.engine
|
|
|
33
69
|
* the gate.
|
|
34
70
|
*/
|
|
35
71
|
const publishItem = (offer, handler, event) => Effect.gen(function* () {
|
|
36
|
-
|
|
37
|
-
const at = yield* DateTime.now;
|
|
38
|
-
yield* offer.historyExport.record({
|
|
39
|
-
kind: "inbound",
|
|
40
|
-
item: event.item,
|
|
41
|
-
at,
|
|
42
|
-
});
|
|
43
|
-
offer.exportedDeliveries.add(event.deliveryToken);
|
|
44
|
-
}
|
|
72
|
+
yield* exportOnce(offer.state, offer.historyExport, event.deliveryToken, Effect.succeed(event.item));
|
|
45
73
|
if (!handler.publish(event)) {
|
|
46
74
|
return false;
|
|
47
75
|
}
|
|
48
|
-
offer.publishedDeliveries.add(event.deliveryToken);
|
|
76
|
+
offer.state.publishedDeliveries.add(event.deliveryToken);
|
|
49
77
|
return true;
|
|
50
78
|
});
|
|
51
79
|
const classifyOnce = (offer, pending) => offer.classify(pending).pipe(Effect.flatMap(Option.match({
|
|
52
80
|
onNone: () => acknowledgeConsumed(offer, pending).pipe(Effect.as(Option.none())),
|
|
53
|
-
onSome: (item) => Effect.sync(() => {
|
|
54
|
-
offer.classifiedItems.set(pending.deliveryToken, item);
|
|
81
|
+
onSome: (item) => offer.persist({ deliveryToken: pending.deliveryToken, item }).pipe(Effect.zipRight(Effect.sync(() => {
|
|
82
|
+
offer.state.classifiedItems.set(pending.deliveryToken, item);
|
|
55
83
|
return Option.some({
|
|
56
84
|
deliveryToken: pending.deliveryToken,
|
|
57
85
|
item,
|
|
58
86
|
});
|
|
59
|
-
}),
|
|
87
|
+
}))),
|
|
60
88
|
})));
|
|
61
89
|
/**
|
|
62
90
|
* Classify one durable delivery not yet published: acknowledge it when the
|
|
@@ -65,10 +93,10 @@ const classifyOnce = (offer, pending) => offer.classify(pending).pipe(Effect.fla
|
|
|
65
93
|
*/
|
|
66
94
|
const classifyPending = (offer, pending) => {
|
|
67
95
|
const { deliveryToken } = pending;
|
|
68
|
-
if (offer.publishedDeliveries.has(deliveryToken)) {
|
|
96
|
+
if (offer.state.publishedDeliveries.has(deliveryToken)) {
|
|
69
97
|
return Effect.succeed(Option.none());
|
|
70
98
|
}
|
|
71
|
-
const classified = offer.classifiedItems.get(deliveryToken);
|
|
99
|
+
const classified = offer.state.classifiedItems.get(deliveryToken);
|
|
72
100
|
return classified === undefined
|
|
73
101
|
? classifyOnce(offer, pending)
|
|
74
102
|
: Effect.succeed(Option.some({ deliveryToken, item: classified }));
|
|
@@ -76,7 +104,7 @@ const classifyPending = (offer, pending) => {
|
|
|
76
104
|
/** Publish events in order, skipping published ones, until one is refused. */
|
|
77
105
|
const publishInOrder = (offer, handler, events) => Effect.gen(function* () {
|
|
78
106
|
for (const event of events) {
|
|
79
|
-
if (offer.publishedDeliveries.has(event.deliveryToken)) {
|
|
107
|
+
if (offer.state.publishedDeliveries.has(event.deliveryToken)) {
|
|
80
108
|
continue;
|
|
81
109
|
}
|
|
82
110
|
if (!(yield* publishItem(offer, handler, event))) {
|
|
@@ -91,12 +119,13 @@ const publishInOrder = (offer, handler, events) => Effect.gen(function* () {
|
|
|
91
119
|
* answers are recorded and deadlines complete with nobody listening. Items
|
|
92
120
|
* are published while a subscriber accepts them; after the first refusal,
|
|
93
121
|
* or with no subscriber, they stay pending for a later pass.
|
|
94
|
-
* @param offer The engine, classifier
|
|
122
|
+
* @param offer The engine, classifier and subscriber, and the delivery state
|
|
123
|
+
* whose local items follow the durable deliveries.
|
|
95
124
|
* @param messages Pending durable deliveries in order.
|
|
96
|
-
* @
|
|
97
|
-
*
|
|
125
|
+
* @returns Completion after every delivery is consumed or offered, or the
|
|
126
|
+
* store's failure to keep a classified or emitted item, which ends the pass.
|
|
98
127
|
*/
|
|
99
|
-
export const offerPendingMessages = (offer, messages
|
|
128
|
+
export const offerPendingMessages = (offer, messages) => Effect.gen(function* () {
|
|
100
129
|
const classified = yield* Effect.forEach(messages, (pending) => classifyPending(offer, pending), { concurrency: 1 });
|
|
101
130
|
const handler = offer.handler;
|
|
102
131
|
if (handler === undefined) {
|
|
@@ -104,12 +133,10 @@ export const offerPendingMessages = (offer, messages, localItems) => Effect.gen(
|
|
|
104
133
|
}
|
|
105
134
|
yield* publishInOrder(offer, handler, [
|
|
106
135
|
...classified.flatMap((event) => Option.toArray(event)),
|
|
107
|
-
...[...localItems].map(([deliveryToken, item]) => ({
|
|
136
|
+
...[...offer.state.localItems].map(([deliveryToken, item]) => ({
|
|
108
137
|
deliveryToken,
|
|
109
138
|
item,
|
|
110
139
|
})),
|
|
111
140
|
]);
|
|
112
141
|
}).pipe(Effect.withSpan("offerPendingMessages"));
|
|
113
|
-
|
|
114
|
-
export const mintLocalDeliveryToken = Effect.sync(() => Schema.decodeUnknownSync(DeliveryToken)(`dlv_${randomBytes(32).toString("base64url")}`));
|
|
115
|
-
//# sourceMappingURL=pending-delivery.js.map
|
|
142
|
+
//# sourceMappingURL=pass.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pass.js","sourceRoot":"","sources":["../../src/delivery/pass.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/** @file Durable reservation of whole send invocations without protocol replay. */
|
|
2
|
+
import { Effect, type Scope } from "effect";
|
|
3
|
+
import { type EndpointStore } from "../store/index.js";
|
|
4
|
+
import { CollectiveError, type SendResult } from "../transport/collectives/forms.js";
|
|
5
|
+
import { SendError } from "../transport/messaging/errors.js";
|
|
6
|
+
import { type DeliveryOperations, type HarnessReadSendRequest, type HarnessSendRequest } from "./operations.js";
|
|
7
|
+
type SendFailure = SendError | CollectiveError;
|
|
8
|
+
/**
|
|
9
|
+
* Bind invocation keys before execution and retain observed outcomes, including
|
|
10
|
+
* failures. Restarted reservations remain indeterminate because this boundary
|
|
11
|
+
* does not replay the collective state machine, nonce or deadline.
|
|
12
|
+
* @param store Daemon-owned endpoint persistence.
|
|
13
|
+
* @param execute The underlying send operation, without retry behavior.
|
|
14
|
+
* @param scope Daemon lifetime, independent of the HTTP request.
|
|
15
|
+
* @returns Send and lookup operations sharing live invocation reservations.
|
|
16
|
+
*/
|
|
17
|
+
export declare const makeSendInvocations: (store: EndpointStore, execute: DeliveryOperations["send"], scope: Scope.Scope) => Effect.Effect<{
|
|
18
|
+
send: (request: HarnessSendRequest) => Effect.Effect<SendResult, SendFailure, never>;
|
|
19
|
+
readSend: (request: HarnessReadSendRequest) => Effect.Effect<{
|
|
20
|
+
readonly state: "absent";
|
|
21
|
+
} | {
|
|
22
|
+
readonly state: "indeterminate" | "pending";
|
|
23
|
+
readonly input: {
|
|
24
|
+
readonly to: string & import("effect/Brand").Brand<"MessageAddressInput">;
|
|
25
|
+
readonly text: string;
|
|
26
|
+
readonly collective?: {
|
|
27
|
+
readonly op?: "multicast" | undefined;
|
|
28
|
+
} | {
|
|
29
|
+
readonly op: "all_gather" | "gather";
|
|
30
|
+
readonly deadline: number;
|
|
31
|
+
readonly requestedSchema: {
|
|
32
|
+
readonly $schema?: string | undefined;
|
|
33
|
+
readonly type: "object";
|
|
34
|
+
readonly properties: {
|
|
35
|
+
readonly [x: string]: {
|
|
36
|
+
readonly [x: string]: import("../index.js").JsonValue;
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
readonly required?: readonly string[] | undefined;
|
|
40
|
+
};
|
|
41
|
+
} | undefined;
|
|
42
|
+
} | {
|
|
43
|
+
readonly to: string & import("effect/Brand").Brand<"MessageAddressInput">;
|
|
44
|
+
readonly collectiveResponse: {
|
|
45
|
+
readonly action: "accept";
|
|
46
|
+
readonly content: {
|
|
47
|
+
readonly [x: string]: string | number | boolean | readonly string[];
|
|
48
|
+
};
|
|
49
|
+
} | {
|
|
50
|
+
readonly action: "decline";
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
} | {
|
|
54
|
+
readonly state: "returned";
|
|
55
|
+
readonly input: {
|
|
56
|
+
readonly to: string & import("effect/Brand").Brand<"MessageAddressInput">;
|
|
57
|
+
readonly text: string;
|
|
58
|
+
readonly collective?: {
|
|
59
|
+
readonly op?: "multicast" | undefined;
|
|
60
|
+
} | {
|
|
61
|
+
readonly op: "all_gather" | "gather";
|
|
62
|
+
readonly deadline: number;
|
|
63
|
+
readonly requestedSchema: {
|
|
64
|
+
readonly $schema?: string | undefined;
|
|
65
|
+
readonly type: "object";
|
|
66
|
+
readonly properties: {
|
|
67
|
+
readonly [x: string]: {
|
|
68
|
+
readonly [x: string]: import("../index.js").JsonValue;
|
|
69
|
+
};
|
|
70
|
+
};
|
|
71
|
+
readonly required?: readonly string[] | undefined;
|
|
72
|
+
};
|
|
73
|
+
} | undefined;
|
|
74
|
+
} | {
|
|
75
|
+
readonly to: string & import("effect/Brand").Brand<"MessageAddressInput">;
|
|
76
|
+
readonly collectiveResponse: {
|
|
77
|
+
readonly action: "accept";
|
|
78
|
+
readonly content: {
|
|
79
|
+
readonly [x: string]: string | number | boolean | readonly string[];
|
|
80
|
+
};
|
|
81
|
+
} | {
|
|
82
|
+
readonly action: "decline";
|
|
83
|
+
};
|
|
84
|
+
};
|
|
85
|
+
readonly outcome: {
|
|
86
|
+
readonly kind: "success";
|
|
87
|
+
readonly result: {
|
|
88
|
+
readonly operationId?: (string & import("effect/Brand").Brand<"CollectiveId">) | undefined;
|
|
89
|
+
};
|
|
90
|
+
} | {
|
|
91
|
+
readonly kind: "failure";
|
|
92
|
+
readonly error: {
|
|
93
|
+
readonly reason: "collective-failed";
|
|
94
|
+
readonly id: string & import("effect/Brand").Brand<"CollectiveId">;
|
|
95
|
+
readonly failure: unknown;
|
|
96
|
+
} | {
|
|
97
|
+
readonly reason: string;
|
|
98
|
+
readonly detail?: string | undefined;
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
}, {
|
|
102
|
+
readonly reason: string;
|
|
103
|
+
}, never>;
|
|
104
|
+
}, never, never>;
|
|
105
|
+
export {};
|
|
106
|
+
//# sourceMappingURL=send-invocations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"send-invocations.d.ts","sourceRoot":"","sources":["../../src/delivery/send-invocations.ts"],"names":[],"mappings":"AAAA,mFAAmF;AAEnF,OAAO,EAAY,MAAM,EAAU,KAAK,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAGL,KAAK,aAAa,EAEnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,eAAe,EAEf,KAAK,UAAU,EAChB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,SAAS,EAEV,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAIL,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAG3B,KAAK,kBAAkB,EAExB,MAAM,iBAAiB,CAAC;AAEzB,KAAK,WAAW,GAAG,SAAS,GAAG,eAAe,CAAC;AAoL/C;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,UACvB,aAAa,WACX,kBAAkB,CAAC,MAAM,CAAC,SAC5B,KAAK,CAAC,KAAK;oBAYE,kBAAkB;wBACd,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBA5DW,MAAM;;gBA8DhB,CAAC"}
|