@moltzap/client 2026.1001.2 → 2026.1004.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -6
- package/bin/moltzapd +2 -2
- package/dist/{harness-mcp-contract.d.ts → delivery/history-export.d.ts} +94 -136
- package/dist/delivery/history-export.d.ts.map +1 -0
- package/dist/{daemon/runtime → delivery}/history-export.js +36 -3
- package/dist/delivery/history-export.js.map +1 -0
- package/dist/delivery/host-delivery.d.ts +51 -0
- package/dist/delivery/host-delivery.d.ts.map +1 -0
- package/dist/delivery/host-delivery.js +109 -0
- package/dist/delivery/host-delivery.js.map +1 -0
- package/dist/delivery/inbox.d.ts +141 -0
- package/dist/delivery/inbox.d.ts.map +1 -0
- package/dist/delivery/inbox.js +129 -0
- package/dist/delivery/inbox.js.map +1 -0
- package/dist/delivery/index.d.ts +4 -0
- package/dist/delivery/index.d.ts.map +1 -0
- package/dist/delivery/index.js +4 -0
- package/dist/delivery/index.js.map +1 -0
- package/dist/delivery/operations.d.ts +789 -0
- package/dist/delivery/operations.d.ts.map +1 -0
- package/dist/delivery/operations.js +162 -0
- package/dist/delivery/operations.js.map +1 -0
- package/dist/delivery/pass.d.ts +91 -0
- package/dist/delivery/pass.d.ts.map +1 -0
- package/dist/{daemon/runtime/pending-delivery.js → delivery/pass.js} +61 -34
- package/dist/delivery/pass.js.map +1 -0
- package/dist/delivery/send-invocations.d.ts +106 -0
- package/dist/delivery/send-invocations.d.ts.map +1 -0
- package/dist/delivery/send-invocations.js +109 -0
- package/dist/delivery/send-invocations.js.map +1 -0
- package/dist/endpoint/harness-endpoint/capability.d.ts +39 -0
- package/dist/endpoint/harness-endpoint/capability.d.ts.map +1 -0
- package/dist/endpoint/harness-endpoint/capability.js +9 -0
- package/dist/endpoint/harness-endpoint/capability.js.map +1 -0
- package/dist/endpoint/harness-endpoint/events.d.ts +12 -0
- package/dist/endpoint/harness-endpoint/events.d.ts.map +1 -0
- package/dist/endpoint/harness-endpoint/events.js +199 -0
- package/dist/endpoint/harness-endpoint/events.js.map +1 -0
- package/dist/{client-runtime.d.ts → endpoint/harness-endpoint/index.d.ts} +4 -2
- package/dist/endpoint/harness-endpoint/index.d.ts.map +1 -0
- package/dist/{client-runtime.js → endpoint/harness-endpoint/index.js} +115 -115
- package/dist/endpoint/harness-endpoint/index.js.map +1 -0
- package/dist/endpoint/implementation.d.ts +4 -0
- package/dist/endpoint/implementation.d.ts.map +1 -0
- package/dist/endpoint/implementation.js +5 -0
- package/dist/endpoint/implementation.js.map +1 -0
- package/dist/endpoint/mcp/auth.d.ts +31 -0
- package/dist/endpoint/mcp/auth.d.ts.map +1 -0
- package/dist/endpoint/mcp/auth.js +42 -0
- package/dist/endpoint/mcp/auth.js.map +1 -0
- package/dist/endpoint/mcp/event-schemas.d.ts +151 -0
- package/dist/endpoint/mcp/event-schemas.d.ts.map +1 -0
- package/dist/endpoint/mcp/event-schemas.js +72 -0
- package/dist/endpoint/mcp/event-schemas.js.map +1 -0
- package/dist/endpoint/mcp/event-signing.d.ts +62 -0
- package/dist/endpoint/mcp/event-signing.d.ts.map +1 -0
- package/dist/endpoint/mcp/event-signing.js +185 -0
- package/dist/endpoint/mcp/event-signing.js.map +1 -0
- package/dist/endpoint/mcp/events.d.ts +45 -0
- package/dist/endpoint/mcp/events.d.ts.map +1 -0
- package/dist/endpoint/mcp/events.js +296 -0
- package/dist/endpoint/mcp/events.js.map +1 -0
- package/dist/{harness-mcp-http.d.ts → endpoint/mcp/http.d.ts} +1 -1
- package/dist/endpoint/mcp/http.d.ts.map +1 -0
- package/dist/{harness-mcp-http.js → endpoint/mcp/http.js} +1 -1
- package/dist/endpoint/mcp/http.js.map +1 -0
- package/dist/endpoint/mcp/index.d.ts +10 -0
- package/dist/endpoint/mcp/index.d.ts.map +1 -0
- package/dist/endpoint/mcp/index.js +8 -0
- package/dist/endpoint/mcp/index.js.map +1 -0
- package/dist/{management-runtime.d.ts → endpoint/mcp/owner-tools.d.ts} +7 -7
- package/dist/endpoint/mcp/owner-tools.d.ts.map +1 -0
- package/dist/{management-runtime.js → endpoint/mcp/owner-tools.js} +3 -4
- package/dist/endpoint/mcp/owner-tools.js.map +1 -0
- package/dist/endpoint/mcp/schemas.d.ts +60 -0
- package/dist/endpoint/mcp/schemas.d.ts.map +1 -0
- package/dist/endpoint/mcp/schemas.js +116 -0
- package/dist/endpoint/mcp/schemas.js.map +1 -0
- package/dist/{harness-mcp-wire.d.ts → endpoint/mcp/tools.d.ts} +17 -14
- package/dist/endpoint/mcp/tools.d.ts.map +1 -0
- package/dist/{harness-mcp-wire.js → endpoint/mcp/tools.js} +229 -110
- package/dist/endpoint/mcp/tools.js.map +1 -0
- package/dist/endpoint/mcp/webhook.d.ts +15 -0
- package/dist/endpoint/mcp/webhook.d.ts.map +1 -0
- package/dist/endpoint/mcp/webhook.js +359 -0
- package/dist/endpoint/mcp/webhook.js.map +1 -0
- package/dist/identity/credentials.d.ts +46 -0
- package/dist/identity/credentials.d.ts.map +1 -0
- package/dist/identity/credentials.js +55 -0
- package/dist/identity/credentials.js.map +1 -0
- package/dist/identity/index.d.ts +4 -0
- package/dist/identity/index.d.ts.map +1 -0
- package/dist/identity/index.js +4 -0
- package/dist/identity/index.js.map +1 -0
- package/dist/index.d.ts +19 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -3
- package/dist/index.js.map +1 -1
- package/dist/{contract.types-check.d.ts → index.types-check.d.ts} +21 -18
- package/dist/index.types-check.d.ts.map +1 -0
- package/dist/{contract.types-check.js → index.types-check.js} +6 -3
- package/dist/index.types-check.js.map +1 -0
- package/dist/{daemon/runtime → service}/activation.d.ts +9 -12
- package/dist/service/activation.d.ts.map +1 -0
- package/dist/{daemon/runtime → service}/activation.js +3 -3
- package/dist/service/activation.js.map +1 -0
- package/dist/{daemon → service}/configuration.d.ts +8 -7
- package/dist/service/configuration.d.ts.map +1 -0
- package/dist/{daemon → service}/configuration.js +30 -28
- package/dist/service/configuration.js.map +1 -0
- package/dist/{daemon/runtime → service}/controller.d.ts +8 -6
- package/dist/service/controller.d.ts.map +1 -0
- package/dist/service/controller.js +106 -0
- package/dist/service/controller.js.map +1 -0
- package/dist/{server.d.ts → service/index.d.ts} +7 -4
- package/dist/service/index.d.ts.map +1 -0
- package/dist/{server.js → service/index.js} +17 -15
- package/dist/service/index.js.map +1 -0
- package/dist/{server.types-check.d.ts → service/index.types-check.d.ts} +7 -7
- package/dist/service/index.types-check.d.ts.map +1 -0
- package/dist/{server.types-check.js → service/index.types-check.js} +1 -1
- package/dist/service/index.types-check.js.map +1 -0
- package/dist/{daemon/runtime/index.d.ts → service/lifecycle.d.ts} +3 -3
- package/dist/service/lifecycle.d.ts.map +1 -0
- package/dist/{daemon/runtime/index.js → service/lifecycle.js} +28 -25
- package/dist/service/lifecycle.js.map +1 -0
- package/dist/{daemon → service}/management.d.ts +2 -2
- package/dist/service/management.d.ts.map +1 -0
- package/dist/{daemon → service}/management.js +2 -13
- package/dist/service/management.js.map +1 -0
- package/dist/{daemon → service}/registration.d.ts +1 -1
- package/dist/service/registration.d.ts.map +1 -0
- package/dist/{daemon → service}/registration.js +1 -2
- package/dist/service/registration.js.map +1 -0
- package/dist/{daemon/runtime/protocol.d.ts → service/supervision.d.ts} +16 -24
- package/dist/service/supervision.d.ts.map +1 -0
- package/dist/{daemon/runtime/protocol.js → service/supervision.js} +33 -36
- package/dist/service/supervision.js.map +1 -0
- package/dist/store/anchors.d.ts.map +1 -0
- package/dist/store/anchors.js.map +1 -0
- package/dist/store/database/index.d.ts.map +1 -0
- package/dist/store/database/index.js.map +1 -0
- package/dist/store/database/schema.d.ts.map +1 -0
- package/dist/{endpoint/store → store}/database/schema.js +42 -6
- package/dist/store/database/schema.js.map +1 -0
- package/dist/store/database/values.d.ts.map +1 -0
- package/dist/store/database/values.js.map +1 -0
- package/dist/{endpoint/store → store}/deliveries.d.ts +8 -0
- package/dist/store/deliveries.d.ts.map +1 -0
- package/dist/{endpoint/store → store}/deliveries.js +16 -0
- package/dist/store/deliveries.js.map +1 -0
- package/dist/store/dissemination.d.ts.map +1 -0
- package/dist/store/dissemination.js.map +1 -0
- package/dist/store/inbox.d.ts +86 -0
- package/dist/store/inbox.d.ts.map +1 -0
- package/dist/store/inbox.js +269 -0
- package/dist/store/inbox.js.map +1 -0
- package/dist/store/index.d.ts +12 -0
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/index.js +8 -0
- package/dist/store/index.js.map +1 -0
- package/dist/store/outbound.d.ts.map +1 -0
- package/dist/store/outbound.js.map +1 -0
- package/dist/{endpoint/store/management.d.ts → store/reads.d.ts} +1 -1
- package/dist/store/reads.d.ts.map +1 -0
- package/dist/{endpoint/store/management.js → store/reads.js} +1 -1
- package/dist/store/reads.js.map +1 -0
- package/dist/store/records.d.ts.map +1 -0
- package/dist/store/records.js.map +1 -0
- package/dist/store/rows/index.d.ts.map +1 -0
- package/dist/store/rows/index.js.map +1 -0
- package/dist/store/runtime-codec.d.ts +17 -0
- package/dist/store/runtime-codec.d.ts.map +1 -0
- package/dist/store/runtime-codec.js +32 -0
- package/dist/store/runtime-codec.js.map +1 -0
- package/dist/{endpoint/store/index.d.ts → store/store.d.ts} +2 -2
- package/dist/store/store.d.ts.map +1 -0
- package/dist/{endpoint/store/index.js → store/store.js} +33 -4
- package/dist/store/store.js.map +1 -0
- package/dist/{endpoint/store → store}/types.d.ts +41 -0
- package/dist/store/types.d.ts.map +1 -0
- package/dist/store/types.js.map +1 -0
- package/dist/transport/collectives/answer-check.d.ts +22 -0
- package/dist/transport/collectives/answer-check.d.ts.map +1 -0
- package/dist/transport/collectives/answer-check.js +166 -0
- package/dist/transport/collectives/answer-check.js.map +1 -0
- package/dist/transport/collectives/answer-formats.d.ts +21 -0
- package/dist/transport/collectives/answer-formats.d.ts.map +1 -0
- package/dist/transport/collectives/answer-formats.js +127 -0
- package/dist/transport/collectives/answer-formats.js.map +1 -0
- package/dist/transport/collectives/failures.d.ts +34 -0
- package/dist/transport/collectives/failures.d.ts.map +1 -0
- package/dist/transport/collectives/failures.js +40 -0
- package/dist/transport/collectives/failures.js.map +1 -0
- package/dist/transport/collectives/form-grammar.d.ts +175 -0
- package/dist/transport/collectives/form-grammar.d.ts.map +1 -0
- package/dist/transport/collectives/form-grammar.js +226 -0
- package/dist/transport/collectives/form-grammar.js.map +1 -0
- package/dist/transport/collectives/forms.d.ts +224 -0
- package/dist/transport/collectives/forms.d.ts.map +1 -0
- package/dist/transport/collectives/forms.js +183 -0
- package/dist/transport/collectives/forms.js.map +1 -0
- package/dist/transport/collectives/inbound.d.ts +130 -0
- package/dist/transport/collectives/inbound.d.ts.map +1 -0
- package/dist/transport/collectives/inbound.js +80 -0
- package/dist/transport/collectives/inbound.js.map +1 -0
- package/dist/transport/collectives/index.d.ts +10 -0
- package/dist/transport/collectives/index.d.ts.map +1 -0
- package/dist/transport/collectives/index.js +8 -0
- package/dist/transport/collectives/index.js.map +1 -0
- package/dist/transport/collectives/message-text.d.ts +52 -0
- package/dist/transport/collectives/message-text.d.ts.map +1 -0
- package/dist/transport/collectives/message-text.js +118 -0
- package/dist/transport/collectives/message-text.js.map +1 -0
- package/dist/{endpoint/collective → transport/collectives}/operation.d.ts +30 -21
- package/dist/transport/collectives/operation.d.ts.map +1 -0
- package/dist/{endpoint/collective → transport/collectives}/operation.js +135 -143
- package/dist/transport/collectives/operation.js.map +1 -0
- package/dist/transport/collectives/received-request.d.ts +41 -0
- package/dist/transport/collectives/received-request.d.ts.map +1 -0
- package/dist/transport/collectives/received-request.js +56 -0
- package/dist/transport/collectives/received-request.js.map +1 -0
- package/dist/transport/collectives/request-sends.d.ts +42 -0
- package/dist/transport/collectives/request-sends.d.ts.map +1 -0
- package/dist/transport/collectives/request-sends.js +46 -0
- package/dist/transport/collectives/request-sends.js.map +1 -0
- package/dist/{endpoint/collective → transport/collectives}/shared-answers.d.ts +3 -2
- package/dist/transport/collectives/shared-answers.d.ts.map +1 -0
- package/dist/transport/collectives/shared-answers.js.map +1 -0
- package/dist/{endpoint/collective → transport/collectives}/validation.d.ts +8 -10
- package/dist/transport/collectives/validation.d.ts.map +1 -0
- package/dist/{endpoint/collective → transport/collectives}/validation.js +10 -21
- package/dist/transport/collectives/validation.js.map +1 -0
- package/dist/{endpoint/collective → transport/collectives}/wire.d.ts +18 -13
- package/dist/transport/collectives/wire.d.ts.map +1 -0
- package/dist/{endpoint/collective → transport/collectives}/wire.js +19 -38
- package/dist/transport/collectives/wire.js.map +1 -0
- package/dist/{endpoint/addressing/index.d.ts → transport/messaging/address.d.ts} +38 -5
- package/dist/transport/messaging/address.d.ts.map +1 -0
- package/dist/{endpoint/addressing/index.js → transport/messaging/address.js} +100 -21
- package/dist/transport/messaging/address.js.map +1 -0
- package/dist/{endpoint/protocol/index.d.ts → transport/messaging/certification.d.ts} +4 -4
- package/dist/transport/messaging/certification.d.ts.map +1 -0
- package/dist/{endpoint/protocol/index.js → transport/messaging/certification.js} +7 -5
- package/dist/transport/messaging/certification.js.map +1 -0
- package/dist/{endpoint/engine-dissemination.d.ts → transport/messaging/dissemination.d.ts} +3 -3
- package/dist/transport/messaging/dissemination.d.ts.map +1 -0
- package/dist/{endpoint/engine-dissemination.js → transport/messaging/dissemination.js} +5 -5
- package/dist/transport/messaging/dissemination.js.map +1 -0
- package/dist/{endpoint/engine-durability.d.ts → transport/messaging/durability.d.ts} +4 -4
- package/dist/{endpoint/engine-durability.d.ts.map → transport/messaging/durability.d.ts.map} +1 -1
- package/dist/{endpoint/engine-durability.js → transport/messaging/durability.js} +4 -13
- package/dist/transport/messaging/durability.js.map +1 -0
- package/dist/transport/messaging/errors.d.ts +50 -0
- package/dist/transport/messaging/errors.d.ts.map +1 -0
- package/dist/transport/messaging/errors.js +64 -0
- package/dist/transport/messaging/errors.js.map +1 -0
- package/dist/{endpoint/protocol → transport/messaging}/evidence.d.ts +3 -3
- package/dist/{endpoint/protocol → transport/messaging}/evidence.d.ts.map +1 -1
- package/dist/{endpoint/protocol → transport/messaging}/evidence.js +1 -1
- package/dist/transport/messaging/evidence.js.map +1 -0
- package/dist/{endpoint/engine.d.ts → transport/messaging/index.d.ts} +4 -4
- package/dist/transport/messaging/index.d.ts.map +1 -0
- package/dist/{endpoint/engine.js → transport/messaging/index.js} +14 -9
- package/dist/transport/messaging/index.js.map +1 -0
- package/dist/transport/messaging/message.d.ts +112 -0
- package/dist/transport/messaging/message.d.ts.map +1 -0
- package/dist/transport/messaging/message.js +39 -0
- package/dist/transport/messaging/message.js.map +1 -0
- package/dist/{endpoint → transport/messaging}/recovery/barrier.d.ts +1 -1
- package/dist/transport/messaging/recovery/barrier.d.ts.map +1 -0
- package/dist/transport/messaging/recovery/barrier.js.map +1 -0
- package/dist/{endpoint/recovery/store-evidence.d.ts → transport/messaging/recovery/evidence.d.ts} +5 -5
- package/dist/transport/messaging/recovery/evidence.d.ts.map +1 -0
- package/dist/{endpoint/recovery/store-evidence.js → transport/messaging/recovery/evidence.js} +3 -3
- package/dist/transport/messaging/recovery/evidence.js.map +1 -0
- package/dist/{endpoint → transport/messaging}/recovery/index.d.ts +4 -4
- package/dist/transport/messaging/recovery/index.d.ts.map +1 -0
- package/dist/{endpoint → transport/messaging}/recovery/index.js +29 -25
- package/dist/transport/messaging/recovery/index.js.map +1 -0
- package/dist/{endpoint/recovery/store.d.ts → transport/messaging/recovery/persistence.d.ts} +5 -5
- package/dist/transport/messaging/recovery/persistence.d.ts.map +1 -0
- package/dist/{endpoint/recovery/store.js → transport/messaging/recovery/persistence.js} +4 -4
- package/dist/transport/messaging/recovery/persistence.js.map +1 -0
- package/dist/{endpoint/recovery/reanchor/empty.d.ts → transport/messaging/recovery/reanchor-empty.d.ts} +6 -6
- package/dist/transport/messaging/recovery/reanchor-empty.d.ts.map +1 -0
- package/dist/{endpoint/recovery/reanchor/empty.js → transport/messaging/recovery/reanchor-empty.js} +4 -4
- package/dist/transport/messaging/recovery/reanchor-empty.js.map +1 -0
- package/dist/{endpoint/recovery/reanchor/index.d.ts → transport/messaging/recovery/reanchor.d.ts} +4 -4
- package/dist/transport/messaging/recovery/reanchor.d.ts.map +1 -0
- package/dist/{endpoint/recovery/reanchor/index.js → transport/messaging/recovery/reanchor.js} +29 -14
- package/dist/transport/messaging/recovery/reanchor.js.map +1 -0
- package/dist/{endpoint → transport/messaging}/recovery/state.d.ts +5 -5
- package/dist/transport/messaging/recovery/state.d.ts.map +1 -0
- package/dist/{endpoint → transport/messaging}/recovery/state.js +2 -2
- package/dist/transport/messaging/recovery/state.js.map +1 -0
- package/dist/{endpoint/engine-send.d.ts → transport/messaging/send.d.ts} +5 -4
- package/dist/transport/messaging/send.d.ts.map +1 -0
- package/dist/{endpoint/engine-send.js → transport/messaging/send.js} +4 -4
- package/dist/transport/messaging/send.js.map +1 -0
- package/dist/{endpoint/engine-types.d.ts → transport/messaging/types.d.ts} +7 -5
- package/dist/transport/messaging/types.d.ts.map +1 -0
- package/dist/{endpoint/engine-types.js → transport/messaging/types.js} +1 -1
- package/dist/{endpoint/engine-types.js.map → transport/messaging/types.js.map} +1 -1
- package/dist/transport/router/index.d.ts.map +1 -0
- package/dist/{endpoint/router-worker → transport/router}/index.js +1 -1
- package/dist/transport/router/index.js.map +1 -0
- package/dist/transport/router/outage.d.ts.map +1 -0
- package/dist/transport/router/outage.js.map +1 -0
- package/dist/{endpoint/router-worker → transport/router}/types.d.ts +2 -2
- package/dist/transport/router/types.d.ts.map +1 -0
- package/dist/transport/router/types.js.map +1 -0
- package/dist/{endpoint/representation-canonical.d.ts → transport/wire/canonical.d.ts} +1 -1
- package/dist/transport/wire/canonical.d.ts.map +1 -0
- package/dist/{endpoint/representation-canonical.js → transport/wire/canonical.js} +1 -1
- package/dist/transport/wire/canonical.js.map +1 -0
- package/dist/{endpoint/representation-codec.d.ts → transport/wire/codec.d.ts} +5 -6
- package/dist/transport/wire/codec.d.ts.map +1 -0
- package/dist/{endpoint/representation-codec.js → transport/wire/codec.js} +5 -24
- package/dist/transport/wire/codec.js.map +1 -0
- package/dist/transport/wire/index.d.ts +7 -0
- package/dist/transport/wire/index.d.ts.map +1 -0
- package/dist/transport/wire/index.js +10 -0
- package/dist/transport/wire/index.js.map +1 -0
- package/dist/{endpoint/representation-schemas.d.ts → transport/wire/schemas.d.ts} +76 -98
- package/dist/transport/wire/schemas.d.ts.map +1 -0
- package/dist/{endpoint/representation-schemas.js → transport/wire/schemas.js} +7 -19
- package/dist/transport/wire/schemas.js.map +1 -0
- package/dist/transport/wire/values.d.ts +79 -0
- package/dist/transport/wire/values.d.ts.map +1 -0
- package/dist/transport/wire/values.js +115 -0
- package/dist/transport/wire/values.js.map +1 -0
- package/dist/{endpoint/representation-verification.d.ts → transport/wire/verification.d.ts} +4 -4
- package/dist/transport/wire/verification.d.ts.map +1 -0
- package/dist/{endpoint/representation-verification.js → transport/wire/verification.js} +5 -4
- package/dist/transport/wire/verification.js.map +1 -0
- package/package.json +6 -6
- package/dist/client-runtime.d.ts.map +0 -1
- package/dist/client-runtime.js.map +0 -1
- package/dist/contract.d.ts +0 -721
- package/dist/contract.d.ts.map +0 -1
- package/dist/contract.js +0 -451
- package/dist/contract.js.map +0 -1
- package/dist/contract.types-check.d.ts.map +0 -1
- package/dist/contract.types-check.js.map +0 -1
- package/dist/daemon/configuration.d.ts.map +0 -1
- package/dist/daemon/configuration.js.map +0 -1
- package/dist/daemon/management.d.ts.map +0 -1
- package/dist/daemon/management.js.map +0 -1
- package/dist/daemon/registration.d.ts.map +0 -1
- package/dist/daemon/registration.js.map +0 -1
- package/dist/daemon/runtime/activation.d.ts.map +0 -1
- package/dist/daemon/runtime/activation.js.map +0 -1
- package/dist/daemon/runtime/controller.d.ts.map +0 -1
- package/dist/daemon/runtime/controller.js +0 -140
- package/dist/daemon/runtime/controller.js.map +0 -1
- package/dist/daemon/runtime/history-export.d.ts +0 -33
- package/dist/daemon/runtime/history-export.d.ts.map +0 -1
- package/dist/daemon/runtime/history-export.js.map +0 -1
- package/dist/daemon/runtime/index.d.ts.map +0 -1
- package/dist/daemon/runtime/index.js.map +0 -1
- package/dist/daemon/runtime/pending-delivery.d.ts +0 -49
- package/dist/daemon/runtime/pending-delivery.d.ts.map +0 -1
- package/dist/daemon/runtime/pending-delivery.js.map +0 -1
- package/dist/daemon/runtime/protocol.d.ts.map +0 -1
- package/dist/daemon/runtime/protocol.js.map +0 -1
- package/dist/endpoint/addressing/index.d.ts.map +0 -1
- package/dist/endpoint/addressing/index.js.map +0 -1
- package/dist/endpoint/collective/operation.d.ts.map +0 -1
- package/dist/endpoint/collective/operation.js.map +0 -1
- package/dist/endpoint/collective/shared-answers.d.ts.map +0 -1
- package/dist/endpoint/collective/shared-answers.js.map +0 -1
- package/dist/endpoint/collective/validation.d.ts.map +0 -1
- package/dist/endpoint/collective/validation.js.map +0 -1
- package/dist/endpoint/collective/wire.d.ts.map +0 -1
- package/dist/endpoint/collective/wire.js.map +0 -1
- package/dist/endpoint/engine-dissemination.d.ts.map +0 -1
- package/dist/endpoint/engine-dissemination.js.map +0 -1
- package/dist/endpoint/engine-durability.js.map +0 -1
- package/dist/endpoint/engine-send.d.ts.map +0 -1
- package/dist/endpoint/engine-send.js.map +0 -1
- package/dist/endpoint/engine-types.d.ts.map +0 -1
- package/dist/endpoint/engine.d.ts.map +0 -1
- package/dist/endpoint/engine.js.map +0 -1
- package/dist/endpoint/protocol/evidence.js.map +0 -1
- package/dist/endpoint/protocol/index.d.ts.map +0 -1
- package/dist/endpoint/protocol/index.js.map +0 -1
- package/dist/endpoint/recovery/barrier.d.ts.map +0 -1
- package/dist/endpoint/recovery/barrier.js.map +0 -1
- package/dist/endpoint/recovery/index.d.ts.map +0 -1
- package/dist/endpoint/recovery/index.js.map +0 -1
- package/dist/endpoint/recovery/reanchor/empty.d.ts.map +0 -1
- package/dist/endpoint/recovery/reanchor/empty.js.map +0 -1
- package/dist/endpoint/recovery/reanchor/index.d.ts.map +0 -1
- package/dist/endpoint/recovery/reanchor/index.js.map +0 -1
- package/dist/endpoint/recovery/state.d.ts.map +0 -1
- package/dist/endpoint/recovery/state.js.map +0 -1
- package/dist/endpoint/recovery/store-evidence.d.ts.map +0 -1
- package/dist/endpoint/recovery/store-evidence.js.map +0 -1
- package/dist/endpoint/recovery/store.d.ts.map +0 -1
- package/dist/endpoint/recovery/store.js.map +0 -1
- package/dist/endpoint/representation-canonical.d.ts.map +0 -1
- package/dist/endpoint/representation-canonical.js.map +0 -1
- package/dist/endpoint/representation-codec.d.ts.map +0 -1
- package/dist/endpoint/representation-codec.js.map +0 -1
- package/dist/endpoint/representation-schemas.d.ts.map +0 -1
- package/dist/endpoint/representation-schemas.js.map +0 -1
- package/dist/endpoint/representation-verification.d.ts.map +0 -1
- package/dist/endpoint/representation-verification.js.map +0 -1
- package/dist/endpoint/representation.d.ts +0 -6
- package/dist/endpoint/representation.d.ts.map +0 -1
- package/dist/endpoint/representation.js +0 -8
- package/dist/endpoint/representation.js.map +0 -1
- package/dist/endpoint/router-worker/index.d.ts.map +0 -1
- package/dist/endpoint/router-worker/index.js.map +0 -1
- package/dist/endpoint/router-worker/outage.d.ts.map +0 -1
- package/dist/endpoint/router-worker/outage.js.map +0 -1
- package/dist/endpoint/router-worker/types.d.ts.map +0 -1
- package/dist/endpoint/router-worker/types.js.map +0 -1
- package/dist/endpoint/store/anchors.d.ts.map +0 -1
- package/dist/endpoint/store/anchors.js.map +0 -1
- package/dist/endpoint/store/database/index.d.ts.map +0 -1
- package/dist/endpoint/store/database/index.js.map +0 -1
- package/dist/endpoint/store/database/schema.d.ts.map +0 -1
- package/dist/endpoint/store/database/schema.js.map +0 -1
- package/dist/endpoint/store/database/values.d.ts.map +0 -1
- package/dist/endpoint/store/database/values.js.map +0 -1
- package/dist/endpoint/store/deliveries.d.ts.map +0 -1
- package/dist/endpoint/store/deliveries.js.map +0 -1
- package/dist/endpoint/store/dissemination.d.ts.map +0 -1
- package/dist/endpoint/store/dissemination.js.map +0 -1
- package/dist/endpoint/store/index.d.ts.map +0 -1
- package/dist/endpoint/store/index.js.map +0 -1
- package/dist/endpoint/store/management.d.ts.map +0 -1
- package/dist/endpoint/store/management.js.map +0 -1
- package/dist/endpoint/store/outbound.d.ts.map +0 -1
- package/dist/endpoint/store/outbound.js.map +0 -1
- package/dist/endpoint/store/records.d.ts.map +0 -1
- package/dist/endpoint/store/records.js.map +0 -1
- package/dist/endpoint/store/rows/index.d.ts.map +0 -1
- package/dist/endpoint/store/rows/index.js.map +0 -1
- package/dist/endpoint/store/types.d.ts.map +0 -1
- package/dist/endpoint/store/types.js.map +0 -1
- package/dist/endpoint/store.d.ts +0 -10
- package/dist/endpoint/store.d.ts.map +0 -1
- package/dist/endpoint/store.js +0 -6
- package/dist/endpoint/store.js.map +0 -1
- package/dist/harness-mcp-contract.d.ts.map +0 -1
- package/dist/harness-mcp-contract.js +0 -113
- package/dist/harness-mcp-contract.js.map +0 -1
- package/dist/harness-mcp-http.d.ts.map +0 -1
- package/dist/harness-mcp-http.js.map +0 -1
- package/dist/harness-mcp-subscription.d.ts +0 -30
- package/dist/harness-mcp-subscription.d.ts.map +0 -1
- package/dist/harness-mcp-subscription.js +0 -361
- package/dist/harness-mcp-subscription.js.map +0 -1
- package/dist/harness-mcp-wire.d.ts.map +0 -1
- package/dist/harness-mcp-wire.js.map +0 -1
- package/dist/management-runtime.d.ts.map +0 -1
- package/dist/management-runtime.js.map +0 -1
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js.map +0 -1
- package/dist/server.types-check.d.ts.map +0 -1
- package/dist/server.types-check.js.map +0 -1
- /package/dist/{endpoint/store → store}/anchors.d.ts +0 -0
- /package/dist/{endpoint/store → store}/anchors.js +0 -0
- /package/dist/{endpoint/store → store}/database/index.d.ts +0 -0
- /package/dist/{endpoint/store → store}/database/index.js +0 -0
- /package/dist/{endpoint/store → store}/database/schema.d.ts +0 -0
- /package/dist/{endpoint/store → store}/database/values.d.ts +0 -0
- /package/dist/{endpoint/store → store}/database/values.js +0 -0
- /package/dist/{endpoint/store → store}/dissemination.d.ts +0 -0
- /package/dist/{endpoint/store → store}/dissemination.js +0 -0
- /package/dist/{endpoint/store → store}/outbound.d.ts +0 -0
- /package/dist/{endpoint/store → store}/outbound.js +0 -0
- /package/dist/{endpoint/store → store}/records.d.ts +0 -0
- /package/dist/{endpoint/store → store}/records.js +0 -0
- /package/dist/{endpoint/store → store}/rows/index.d.ts +0 -0
- /package/dist/{endpoint/store → store}/rows/index.js +0 -0
- /package/dist/{endpoint/store → store}/types.js +0 -0
- /package/dist/{endpoint/collective → transport/collectives}/shared-answers.js +0 -0
- /package/dist/{endpoint → transport/messaging}/recovery/barrier.js +0 -0
- /package/dist/{endpoint/router-worker → transport/router}/index.d.ts +0 -0
- /package/dist/{endpoint/router-worker → transport/router}/outage.d.ts +0 -0
- /package/dist/{endpoint/router-worker → transport/router}/outage.js +0 -0
- /package/dist/{endpoint/router-worker → transport/router}/types.js +0 -0
|
@@ -21,14 +21,15 @@
|
|
|
21
21
|
* RM->>RE: send gather to, question, deadline, schema
|
|
22
22
|
* RE->>RE: validate schema, mint id<br>deadline = now + duration
|
|
23
23
|
* RE->>ME: one request post per member
|
|
24
|
-
* alt
|
|
24
|
+
* alt no request post is accepted
|
|
25
25
|
* RE-->>RM: error naming each unreachable member
|
|
26
|
-
* else
|
|
26
|
+
* else some request post accepted
|
|
27
27
|
* RE-->>RM: operation id
|
|
28
|
+
* RE->>RE: record each refused or uncertified member as no-answer
|
|
28
29
|
* end
|
|
29
30
|
* ME->>MM: collectiveRequest item
|
|
30
|
-
* MM->>ME: send collectiveResponse
|
|
31
|
-
* ME->>ME: validate content against
|
|
31
|
+
* MM->>ME: send collectiveResponse to the requester, action, content
|
|
32
|
+
* ME->>ME: match the request open in that conversation<br>validate content against its schema
|
|
32
33
|
* ME->>RE: response post in the direct conversation
|
|
33
34
|
* RE->>RE: consume, validate and record the answer
|
|
34
35
|
* Note over RE: complete when every member has an outcome<br>or at the deadline
|
|
@@ -54,8 +55,8 @@
|
|
|
54
55
|
* RE-->>RM: operation id
|
|
55
56
|
* end
|
|
56
57
|
* ME->>MM: collectiveRequest item
|
|
57
|
-
* MM->>ME: send collectiveResponse
|
|
58
|
-
* ME->>ME: validate content against
|
|
58
|
+
* MM->>ME: send collectiveResponse to the group, action, content
|
|
59
|
+
* ME->>ME: match the request open in the group<br>validate content against its schema
|
|
59
60
|
* ME->>RE: response post to the group
|
|
60
61
|
* ME->>ME: peer response posts, consumed and recorded by record hash
|
|
61
62
|
* Note over RE: complete when every member has an outcome<br>or at the deadline
|
|
@@ -65,13 +66,16 @@
|
|
|
65
66
|
* ME->>MM: collectiveResult item, the same outcomes
|
|
66
67
|
* ```
|
|
67
68
|
*/
|
|
68
|
-
import { Clock, Duration, Effect, Array as EffectArray,
|
|
69
|
-
import {
|
|
70
|
-
import {
|
|
71
|
-
import {
|
|
69
|
+
import { Clock, Duration, Effect, Array as EffectArray, Fiber, Option, ParseResult, Schema, } from "effect";
|
|
70
|
+
import { AgentAddress, canonicalMessageAddress, } from "../messaging/address.js";
|
|
71
|
+
import { SendError } from "../messaging/errors.js";
|
|
72
|
+
import { emitFailureAsSendError, refusedAs, reportFailure, } from "./failures.js";
|
|
73
|
+
import { CollectiveError, MAXIMUM_DEADLINE_SECONDS, RequestedSchema, } from "./forms.js";
|
|
74
|
+
import { matchOpenRequest, } from "./received-request.js";
|
|
75
|
+
import { isAddressRefusal, lookupRefusals, requestsSoFar, } from "./request-sends.js";
|
|
72
76
|
import { keepFirstAnswer, listedAnswers, memberOutcomes, } from "./shared-answers.js";
|
|
73
77
|
import { outcomeOfResponse, validateAnswer } from "./validation.js";
|
|
74
|
-
import { collectiveIdOf, encodeCollectiveContent, FormModeSchema, readCollectiveValue, withoutCollectivePart, } from "./wire.js";
|
|
78
|
+
import { collectiveIdOf, encodeCollectiveContent, FormModeSchema, mintCollectiveId, readCollectiveValue, withoutCollectivePart, } from "./wire.js";
|
|
75
79
|
/**
|
|
76
80
|
* How long a collecting operation's send waits for its request posts before
|
|
77
81
|
* returning. A gather's request still uncertified then is left running: its
|
|
@@ -82,11 +86,6 @@ import { collectiveIdOf, encodeCollectiveContent, FormModeSchema, readCollective
|
|
|
82
86
|
* transport timeout.
|
|
83
87
|
*/
|
|
84
88
|
const REQUEST_SEND_WAIT = Duration.seconds(20);
|
|
85
|
-
/**
|
|
86
|
-
* How many Registry lookups a refused all_gather runs at once to name its
|
|
87
|
-
* unreachable members; they are independent, and a group has at most 32.
|
|
88
|
-
*/
|
|
89
|
-
const MEMBER_LOOKUP_CONCURRENCY = 8;
|
|
90
89
|
/**
|
|
91
90
|
* How long past its deadline a member keeps an all_gather request while it
|
|
92
91
|
* waits for the requester's close. The requester closes at the deadline at
|
|
@@ -110,11 +109,6 @@ const RECEIVED_DEADLINE_ALLOWANCE = Duration.hours(1);
|
|
|
110
109
|
const RECEIVED_DEADLINE_HORIZON = Duration.toMillis(Duration.sum(Duration.seconds(MAXIMUM_DEADLINE_SECONDS), RECEIVED_DEADLINE_ALLOWANCE));
|
|
111
110
|
const decodeAgentAddress = Schema.decodeUnknownOption(AgentAddress);
|
|
112
111
|
const decodeRequestedSchema = Schema.decodeUnknownOption(RequestedSchema);
|
|
113
|
-
/** A fresh nonce and the id it binds to the requester. */
|
|
114
|
-
const mintCollectiveId = (requester) => Effect.sync(() => {
|
|
115
|
-
const nonce = randomBytes(32).toString("base64url");
|
|
116
|
-
return { id: collectiveIdOf(requester, nonce), nonce };
|
|
117
|
-
});
|
|
118
112
|
const contentInvalid = () => new SendError({ reason: "content-invalid" });
|
|
119
113
|
const collectiveFailure = (id, failure) => new CollectiveError({ id, failure });
|
|
120
114
|
/**
|
|
@@ -130,7 +124,7 @@ export const makeCollectiveOperations = (ports) => {
|
|
|
130
124
|
};
|
|
131
125
|
return {
|
|
132
126
|
send: (input, failureDelivery) => "collectiveResponse" in input
|
|
133
|
-
? reportFailure(state, failureDelivery, respond(state, input.collectiveResponse))
|
|
127
|
+
? reportFailure(state.ports.emit, failureDelivery, respond(state, input.to, input.collectiveResponse))
|
|
134
128
|
: sendOperation(state, input, failureDelivery),
|
|
135
129
|
classify: (message) => classify(state, message),
|
|
136
130
|
};
|
|
@@ -143,7 +137,7 @@ function sendOperation(state, input, failureDelivery) {
|
|
|
143
137
|
return multicast(state, input.to, input.text);
|
|
144
138
|
case "gather":
|
|
145
139
|
case "all_gather":
|
|
146
|
-
return reportFailure(state, failureDelivery, gather(state, input.to, input.text, operation));
|
|
140
|
+
return reportFailure(state.ports.emit, failureDelivery, gather(state, input.to, input.text, operation));
|
|
147
141
|
default: {
|
|
148
142
|
const exhaustive = operation;
|
|
149
143
|
return exhaustive;
|
|
@@ -153,35 +147,6 @@ function sendOperation(state, input, failureDelivery) {
|
|
|
153
147
|
function multicast(state, to, text) {
|
|
154
148
|
return encodeCollectiveContent({ kind: "operation", op: "multicast" }, text).pipe(Effect.mapError(contentInvalid), Effect.flatMap((content) => state.ports.sendPost({ to, content })), Effect.map((post) => ({ postIds: [post.postId] })));
|
|
155
149
|
}
|
|
156
|
-
/**
|
|
157
|
-
* Deliver a refused collective send's error where the host wants it. With
|
|
158
|
-
* `inbound` the send completes, naming the operation, and the error arrives
|
|
159
|
-
* as an `operationFailed` item carrying the same text.
|
|
160
|
-
*/
|
|
161
|
-
function reportFailure(state, failureDelivery, send) {
|
|
162
|
-
return send.pipe(Effect.catchAll((refused) => {
|
|
163
|
-
switch (failureDelivery) {
|
|
164
|
-
case "result":
|
|
165
|
-
return Effect.fail(refused.error);
|
|
166
|
-
case "inbound":
|
|
167
|
-
return state.ports
|
|
168
|
-
.emit({
|
|
169
|
-
kind: "operationFailed",
|
|
170
|
-
id: refused.id,
|
|
171
|
-
to: refused.to,
|
|
172
|
-
error: refused.error.message,
|
|
173
|
-
})
|
|
174
|
-
.pipe(Effect.as({ operationId: refused.id, postIds: [] }));
|
|
175
|
-
default: {
|
|
176
|
-
const exhaustive = failureDelivery;
|
|
177
|
-
return exhaustive;
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
}));
|
|
181
|
-
}
|
|
182
|
-
function refusedAs(id, to) {
|
|
183
|
-
return (error) => ({ id, to, error });
|
|
184
|
-
}
|
|
185
150
|
/**
|
|
186
151
|
* The canonical address a collecting operation's result and failure name, by
|
|
187
152
|
* the rule every send shares, and the members it asks: the one agent of an
|
|
@@ -191,7 +156,10 @@ function refusedAs(id, to) {
|
|
|
191
156
|
*/
|
|
192
157
|
function gatherAddress(to, self, op) {
|
|
193
158
|
const selfName = self.slice("agent:".length);
|
|
194
|
-
const membershipInvalid = new SendError({
|
|
159
|
+
const membershipInvalid = new SendError({
|
|
160
|
+
reason: "membership-invalid",
|
|
161
|
+
detail: "an all_gather asks a group of two or more other agents",
|
|
162
|
+
});
|
|
195
163
|
return canonicalMessageAddress(to, selfName).pipe(Effect.flatMap((canonical) => {
|
|
196
164
|
if (canonical.kind === "direct") {
|
|
197
165
|
return op === "gather"
|
|
@@ -209,17 +177,27 @@ function gatherAddress(to, self, op) {
|
|
|
209
177
|
: Effect.succeed({ to: canonical.address, members: [first, ...rest] });
|
|
210
178
|
}));
|
|
211
179
|
}
|
|
212
|
-
/**
|
|
180
|
+
/**
|
|
181
|
+
* Check a collecting operation's schema against the MCP form-mode grammar.
|
|
182
|
+
* The failure's detail is one line per issue, each led by its path within
|
|
183
|
+
* the schema, such as `properties.slots: items.type: ...`, because the
|
|
184
|
+
* requester's model repairs the form from this text alone.
|
|
185
|
+
*/
|
|
213
186
|
function formModeSchema(id, requestedSchema) {
|
|
214
187
|
return Schema.decodeUnknown(FormModeSchema)(requestedSchema).pipe(Effect.mapError((error) => collectiveFailure(id, {
|
|
215
188
|
kind: "schema-invalid",
|
|
216
|
-
detail: ParseResult.
|
|
189
|
+
detail: ParseResult.ArrayFormatter.formatErrorSync(error)
|
|
190
|
+
.map(({ path, message }) => path.length === 0
|
|
191
|
+
? message
|
|
192
|
+
: `${path.map(String).join(".")}: ${message}`)
|
|
193
|
+
.join("; "),
|
|
217
194
|
})));
|
|
218
195
|
}
|
|
219
196
|
/**
|
|
220
197
|
* Validate a gather or all_gather before any post: mint its id, check its
|
|
221
|
-
* schema against the form-mode grammar, name its members, fix
|
|
222
|
-
* deadline, and build the request content within the content
|
|
198
|
+
* schema against the form-mode grammar, name and resolve its members, fix
|
|
199
|
+
* its absolute deadline, and build the request content within the content
|
|
200
|
+
* limit.
|
|
223
201
|
*/
|
|
224
202
|
function prepareGather(state, requestedTo, question, operation) {
|
|
225
203
|
return Effect.gen(function* () {
|
|
@@ -227,6 +205,7 @@ function prepareGather(state, requestedTo, question, operation) {
|
|
|
227
205
|
const { to, members } = yield* gatherAddress(requestedTo, state.ports.self, operation.op).pipe(Effect.mapError(refusedAs(id, requestedTo)));
|
|
228
206
|
const refused = refusedAs(id, to);
|
|
229
207
|
const requestedSchema = yield* formModeSchema(id, operation.requestedSchema).pipe(Effect.mapError(refused));
|
|
208
|
+
yield* refuseAddressErrors(state, members).pipe(Effect.mapError((failure) => refused(collectiveFailure(id, failure))));
|
|
230
209
|
const now = yield* Clock.currentTimeMillis;
|
|
231
210
|
const untilDeadline = Duration.toMillis(Duration.seconds(operation.deadline));
|
|
232
211
|
const deadlineAt = now + untilDeadline;
|
|
@@ -257,17 +236,35 @@ function prepareGather(state, requestedTo, question, operation) {
|
|
|
257
236
|
function gather(state, requestedTo, question, operation) {
|
|
258
237
|
return Effect.gen(function* () {
|
|
259
238
|
const prepared = yield* prepareGather(state, requestedTo, question, operation);
|
|
260
|
-
const timer = yield* sleepUntil(prepared.deadlineAt).pipe(Effect.zipRight(completeGather(state, prepared.id)), Effect.forkIn(state.ports.scope));
|
|
239
|
+
const timer = yield* sleepUntil(prepared.deadlineAt).pipe(Effect.zipRight(Effect.ignore(completeGather(state, prepared.id))), Effect.forkIn(state.ports.scope));
|
|
261
240
|
yield* Effect.sync(() => {
|
|
262
|
-
state.gathers.set(prepared.id, {
|
|
241
|
+
state.gathers.set(prepared.id, {
|
|
242
|
+
...prepared.open,
|
|
243
|
+
timer,
|
|
244
|
+
requestsSettled: prepared.open.op === "all_gather",
|
|
245
|
+
});
|
|
263
246
|
});
|
|
264
247
|
const requests = prepared.open.op === "gather"
|
|
265
248
|
? sendRequests(state, prepared)
|
|
266
|
-
: sendGroupRequest(state, prepared);
|
|
267
|
-
const
|
|
268
|
-
return { operationId: prepared.id
|
|
249
|
+
: sendGroupRequest(state, prepared).pipe(Effect.map((postIds) => ({ postIds })));
|
|
250
|
+
const sent = yield* requests.pipe(Effect.mapError(refusedAs(prepared.id, prepared.open.to)));
|
|
251
|
+
return { ...sent, operationId: prepared.id };
|
|
269
252
|
});
|
|
270
253
|
}
|
|
254
|
+
/**
|
|
255
|
+
* Resolve every member before any post through the engine's address
|
|
256
|
+
* resolution. A malformed or unknown member, or invalid membership, refuses
|
|
257
|
+
* the whole send naming each one; any other lookup failure is left to the
|
|
258
|
+
* post, which reports it as a delivery failure.
|
|
259
|
+
*/
|
|
260
|
+
function refuseAddressErrors(state, members) {
|
|
261
|
+
return lookupRefusals(members, state.ports.lookupMember).pipe(Effect.map((refusals) => refusals.filter(isAddressRefusal)), Effect.flatMap(([first, ...rest]) => first === undefined
|
|
262
|
+
? Effect.void
|
|
263
|
+
: Effect.fail({
|
|
264
|
+
kind: "members-unreachable",
|
|
265
|
+
members: [first, ...rest],
|
|
266
|
+
})));
|
|
267
|
+
}
|
|
271
268
|
/** Sleep until the absolute time `at`, in steps no timer overflows. */
|
|
272
269
|
function sleepUntil(at) {
|
|
273
270
|
return Clock.currentTimeMillis.pipe(Effect.flatMap((now) => now >= at
|
|
@@ -275,24 +272,60 @@ function sleepUntil(at) {
|
|
|
275
272
|
: Effect.sleep(Duration.min(Duration.millis(at - now), DEADLINE_TIMER_STEP)).pipe(Effect.zipRight(sleepUntil(at)))));
|
|
276
273
|
}
|
|
277
274
|
/**
|
|
278
|
-
* Send one request post per member
|
|
279
|
-
*
|
|
280
|
-
*
|
|
275
|
+
* Send one request post per member, waiting at most the send wait. A pending
|
|
276
|
+
* send keeps running and settles its member when it completes: certified
|
|
277
|
+
* asks it, refused makes it `no-answer`, as does pending at the deadline.
|
|
278
|
+
* The send fails only when every post was refused and the gather has not
|
|
279
|
+
* completed, so an operation ends in exactly one refusal or one result, or
|
|
280
|
+
* as persistence-failed when the result its settling completes cannot be
|
|
281
|
+
* kept.
|
|
281
282
|
*/
|
|
282
283
|
function sendRequests(state, prepared) {
|
|
283
284
|
return Effect.gen(function* () {
|
|
284
|
-
const
|
|
285
|
+
const { id, open } = prepared;
|
|
286
|
+
const sends = yield* Effect.forEach(open.members, (member) => state.ports.sendPost({ to: member, content: prepared.content }).pipe(Effect.mapError((error) => ({ member, reason: error.reason })), Effect.tapError((refusal) => recordRefusal(state, id, refusal)), Effect.either, Effect.forkIn(state.ports.scope)), { concurrency: 1 });
|
|
285
287
|
yield* Fiber.awaitAll(sends).pipe(Effect.timeoutOption(requestWait(state, prepared)));
|
|
286
|
-
const
|
|
287
|
-
const [refusal, ...refusals] =
|
|
288
|
-
if (refusal !== undefined
|
|
289
|
-
|
|
290
|
-
|
|
288
|
+
const { posts, refused } = yield* requestsSoFar(open.members, sends);
|
|
289
|
+
const [refusal, ...refusals] = refused;
|
|
290
|
+
if (refusal !== undefined &&
|
|
291
|
+
refusals.length + 1 === open.members.length &&
|
|
292
|
+
state.gathers.has(id)) {
|
|
293
|
+
yield* forgetGather(state, id);
|
|
294
|
+
return yield* Effect.fail(collectiveFailure(id, {
|
|
291
295
|
kind: "members-unreachable",
|
|
292
296
|
members: [refusal, ...refusals],
|
|
293
297
|
}));
|
|
294
298
|
}
|
|
295
|
-
|
|
299
|
+
yield* emitFailureAsSendError(updateGather(state, id, (settled) => {
|
|
300
|
+
settled.requestsSettled = true;
|
|
301
|
+
}));
|
|
302
|
+
return { postIds: posts.map((post) => post.postId) };
|
|
303
|
+
});
|
|
304
|
+
}
|
|
305
|
+
/** Record a member whose request post was refused as `no-answer`. */
|
|
306
|
+
function recordRefusal(state, id, { member }) {
|
|
307
|
+
return Effect.ignore(updateGather(state, id, ({ outcomes }) => {
|
|
308
|
+
if (!outcomes.has(member)) {
|
|
309
|
+
outcomes.set(member, { kind: "no-answer" });
|
|
310
|
+
}
|
|
311
|
+
}));
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* Apply a change to an open gather, then complete it once its send has
|
|
315
|
+
* returned and every member has an outcome. Until the send returns, only the
|
|
316
|
+
* send decides whether the gather is refused, so no path can emit both a
|
|
317
|
+
* refusal and a result.
|
|
318
|
+
*/
|
|
319
|
+
function updateGather(state, id, change) {
|
|
320
|
+
return Effect.suspend(() => {
|
|
321
|
+
const open = state.gathers.get(id);
|
|
322
|
+
if (open === undefined) {
|
|
323
|
+
return Effect.void;
|
|
324
|
+
}
|
|
325
|
+
change(open);
|
|
326
|
+
return open.requestsSettled && open.outcomes.size === open.members.length
|
|
327
|
+
? completeGather(state, id).pipe(Effect.zipRight(Fiber.interrupt(open.timer)))
|
|
328
|
+
: Effect.void;
|
|
296
329
|
});
|
|
297
330
|
}
|
|
298
331
|
/**
|
|
@@ -320,34 +353,17 @@ function sendGroupRequest(state, prepared) {
|
|
|
320
353
|
* succeeds each member is named with the group post's reason.
|
|
321
354
|
*/
|
|
322
355
|
function unreachableMembers(state, members, groupReason) {
|
|
323
|
-
return
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
return [
|
|
330
|
-
{ member, reason: groupReason },
|
|
331
|
-
...others.map((other) => ({ member: other, reason: groupReason })),
|
|
332
|
-
];
|
|
333
|
-
}));
|
|
356
|
+
return lookupRefusals(members, state.ports.lookupMember).pipe(Effect.map(([first, ...rest]) => first === undefined
|
|
357
|
+
? EffectArray.map(members, (member) => ({
|
|
358
|
+
member,
|
|
359
|
+
reason: groupReason,
|
|
360
|
+
}))
|
|
361
|
+
: [first, ...rest]));
|
|
334
362
|
}
|
|
335
363
|
/** How long a send waits for request posts: the bound, never past the deadline. */
|
|
336
364
|
function requestWait(state, prepared) {
|
|
337
365
|
return Duration.min(state.ports.requestSendWait ?? REQUEST_SEND_WAIT, Duration.millis(prepared.untilDeadline));
|
|
338
366
|
}
|
|
339
|
-
/** The request sends that have finished, each with its post or refusal. */
|
|
340
|
-
function settledSends(sends) {
|
|
341
|
-
return Effect.forEach(sends, (send) => Fiber.poll(send), {
|
|
342
|
-
concurrency: 1,
|
|
343
|
-
}).pipe(Effect.map((polls) => polls.flatMap((poll) => Option.toArray(Option.flatMap(poll, (exit) => Exit.isSuccess(exit) ? Option.some(exit.value) : Option.none())))));
|
|
344
|
-
}
|
|
345
|
-
function abandonGather(state, id, sends) {
|
|
346
|
-
return Effect.forEach(sends, (send) => Fiber.interruptFork(send), {
|
|
347
|
-
concurrency: 1,
|
|
348
|
-
discard: true,
|
|
349
|
-
}).pipe(Effect.zipRight(forgetGather(state, id)));
|
|
350
|
-
}
|
|
351
367
|
/** Drop an operation this endpoint abandons, and stop its deadline timer. */
|
|
352
368
|
function forgetGather(state, id) {
|
|
353
369
|
return Effect.suspend(() => {
|
|
@@ -406,65 +422,42 @@ function closeAllGather(state, open, result) {
|
|
|
406
422
|
kind: "operationFailed",
|
|
407
423
|
id: result.id,
|
|
408
424
|
to: open.to,
|
|
409
|
-
error: `
|
|
425
|
+
error: `all_gather ${result.id} failed: its close was not certified (${error.reason})`,
|
|
410
426
|
}),
|
|
411
427
|
onSuccess: (post) => state.ports.emit({ ...result, closePostId: post.postId }),
|
|
412
428
|
}));
|
|
413
429
|
}
|
|
414
|
-
|
|
430
|
+
/**
|
|
431
|
+
* Answer the one request open in the conversation `to` names. The answer
|
|
432
|
+
* carries no request id, so the conversation decides which request it
|
|
433
|
+
* answers; with none open, or several, nothing is sent.
|
|
434
|
+
*/
|
|
435
|
+
function respond(state, to, response) {
|
|
415
436
|
return Effect.gen(function* () {
|
|
416
|
-
const { id } =
|
|
417
|
-
const now = yield* Clock.currentTimeMillis;
|
|
418
|
-
const request = yield* openRequest(state, id, now);
|
|
437
|
+
const { id, request } = yield* openRequest(state, to);
|
|
419
438
|
const refused = refusedAs(id, request.to);
|
|
420
|
-
const value = { kind: "response", ...response };
|
|
439
|
+
const value = { kind: "response", id, ...response };
|
|
421
440
|
const content = yield* responseContent(request, value).pipe(Effect.mapError(refused));
|
|
422
441
|
yield* claimRequest(id, request).pipe(Effect.mapError(refused));
|
|
423
442
|
const post = yield* state.ports.sendPost({ to: request.to, content }).pipe(Effect.tapBoth({
|
|
424
443
|
onFailure: () => settleAnswer(state, id, request, Option.none()),
|
|
425
444
|
onSuccess: (sent) => settleAnswer(state, id, request, Option.some({ recordHash: sent.recordHash, response: value })),
|
|
426
|
-
}), Effect.onInterrupt(() => settleAnswer(state, id, request, Option.none())), Effect.mapError(refused));
|
|
445
|
+
}), Effect.onInterrupt(() => Effect.ignore(settleAnswer(state, id, request, Option.none()))), emitFailureAsSendError, Effect.mapError(refused));
|
|
427
446
|
return { operationId: id, postIds: [post.postId] };
|
|
428
447
|
});
|
|
429
448
|
}
|
|
430
449
|
/**
|
|
431
|
-
* The
|
|
432
|
-
*
|
|
433
|
-
* A refusal for an unknown request is addressed to the local agent, since no
|
|
434
|
-
* requester is known.
|
|
450
|
+
* The one request open in the conversation `to` names. A refusal names an id
|
|
451
|
+
* minted for it, since no single request is answered.
|
|
435
452
|
*/
|
|
436
|
-
function openRequest(state,
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
}
|
|
445
|
-
const unavailable = requestUnavailable(request, now);
|
|
446
|
-
return unavailable === undefined
|
|
447
|
-
? Effect.succeed(request)
|
|
448
|
-
: Effect.fail({
|
|
449
|
-
id,
|
|
450
|
-
to: request.to,
|
|
451
|
-
error: collectiveFailure(id, { kind: unavailable }),
|
|
452
|
-
});
|
|
453
|
-
}
|
|
454
|
-
function requestUnavailable(request, now) {
|
|
455
|
-
switch (request.state) {
|
|
456
|
-
case "open":
|
|
457
|
-
return now >= request.deadlineAt ? "request-expired" : undefined;
|
|
458
|
-
case "sending":
|
|
459
|
-
case "answered":
|
|
460
|
-
return "request-answered";
|
|
461
|
-
case "closed":
|
|
462
|
-
return "request-expired";
|
|
463
|
-
default: {
|
|
464
|
-
const exhaustive = request.state;
|
|
465
|
-
return exhaustive;
|
|
466
|
-
}
|
|
467
|
-
}
|
|
453
|
+
function openRequest(state, to) {
|
|
454
|
+
return Effect.gen(function* () {
|
|
455
|
+
const now = yield* Clock.currentTimeMillis;
|
|
456
|
+
const { id } = yield* mintCollectiveId(state.ports.self);
|
|
457
|
+
const self = state.ports.self.slice("agent:".length);
|
|
458
|
+
const { address } = yield* canonicalMessageAddress(to, self).pipe(Effect.mapError(refusedAs(id, to)));
|
|
459
|
+
return yield* matchOpenRequest(state.requests, address, now).pipe(Effect.mapError((kind) => refusedAs(id, address)(collectiveFailure(id, { kind }))));
|
|
460
|
+
});
|
|
468
461
|
}
|
|
469
462
|
/**
|
|
470
463
|
* Validate an `accept` answer against the request's stored schema and build
|
|
@@ -689,11 +682,10 @@ function recordCountedAnswer(state, open, post, value) {
|
|
|
689
682
|
return Effect.void;
|
|
690
683
|
}
|
|
691
684
|
return outcomeOfResponse(open.requestedSchema, value).pipe(Effect.flatMap((outcome) => {
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
: Effect.void;
|
|
685
|
+
return updateGather(state, value.id, () => {
|
|
686
|
+
open.outcomes.set(message.sender, outcome);
|
|
687
|
+
open.answerHashes.set(message.sender, post.recordHash);
|
|
688
|
+
});
|
|
697
689
|
}));
|
|
698
690
|
}
|
|
699
691
|
/** Whether an answer arrived where the operation's answers are sent. */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operation.js","sourceRoot":"","sources":["../../../src/transport/collectives/operation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file The requests a member endpoint received, and which one an answer
|
|
3
|
+
* answers.
|
|
4
|
+
*
|
|
5
|
+
* An answer names no request: the model sends it to the conversation its
|
|
6
|
+
* request arrived in, and the endpoint matches it to the one request open
|
|
7
|
+
* there. Answering one of several open requests in a conversation is not
|
|
8
|
+
* supported, so that answer is refused rather than guessed.
|
|
9
|
+
*/
|
|
10
|
+
import { Either } from "effect";
|
|
11
|
+
import type { MessageAddressInput } from "../messaging/address.js";
|
|
12
|
+
import type { CollectiveFailure, CollectiveId } from "./forms.js";
|
|
13
|
+
/**
|
|
14
|
+
* What matching reads of a received request: `to` is the conversation it
|
|
15
|
+
* arrived in. `sending` holds the one answer in flight, so a member answers
|
|
16
|
+
* at most once; an all_gather request becomes `closed` at its close.
|
|
17
|
+
*/
|
|
18
|
+
export interface RequestStatus {
|
|
19
|
+
readonly to: MessageAddressInput;
|
|
20
|
+
readonly deadlineAt: number;
|
|
21
|
+
readonly state: "open" | "sending" | "answered" | "closed";
|
|
22
|
+
}
|
|
23
|
+
/** The one request an answer answers, with its id. */
|
|
24
|
+
export interface OpenRequest<Request extends RequestStatus> {
|
|
25
|
+
readonly id: CollectiveId;
|
|
26
|
+
readonly request: Request;
|
|
27
|
+
}
|
|
28
|
+
/** Why no single request takes an answer. */
|
|
29
|
+
type UnmatchedAnswer = Extract<CollectiveFailure["kind"], `request-${"none" | "ambiguous" | "answered" | "expired"}`>;
|
|
30
|
+
/**
|
|
31
|
+
* Find the one request open in a conversation: received, not yet answered,
|
|
32
|
+
* and before its deadline and close.
|
|
33
|
+
* @param requests Every request this endpoint holds, by id.
|
|
34
|
+
* @param conversation The canonical address the answer is sent to.
|
|
35
|
+
* @param now The current time in epoch milliseconds.
|
|
36
|
+
* @returns The open request, or why none takes the answer: several are open,
|
|
37
|
+
* one was already answered, none was received, or each has expired.
|
|
38
|
+
*/
|
|
39
|
+
export declare const matchOpenRequest: <Request extends RequestStatus>(requests: ReadonlyMap<CollectiveId, Request>, conversation: MessageAddressInput, now: number) => Either.Either<OpenRequest<Request>, UnmatchedAnswer>;
|
|
40
|
+
export {};
|
|
41
|
+
//# sourceMappingURL=received-request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"received-request.d.ts","sourceRoot":"","sources":["../../../src/transport/collectives/received-request.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAElE;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,mBAAmB,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;CAC5D;AAED,sDAAsD;AACtD,MAAM,WAAW,WAAW,CAAC,OAAO,SAAS,aAAa;IACxD,QAAQ,CAAC,EAAE,EAAE,YAAY,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,6CAA6C;AAC7C,KAAK,eAAe,GAAG,OAAO,CAC5B,iBAAiB,CAAC,MAAM,CAAC,EACzB,WAAW,MAAM,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,EAAE,CAC3D,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,GAAI,OAAO,SAAS,aAAa,YAClD,WAAW,CAAC,YAAY,EAAE,OAAO,CAAC,gBAC9B,mBAAmB,OAC5B,MAAM,KACV,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,eAAe,CAoBrD,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file The requests a member endpoint received, and which one an answer
|
|
3
|
+
* answers.
|
|
4
|
+
*
|
|
5
|
+
* An answer names no request: the model sends it to the conversation its
|
|
6
|
+
* request arrived in, and the endpoint matches it to the one request open
|
|
7
|
+
* there. Answering one of several open requests in a conversation is not
|
|
8
|
+
* supported, so that answer is refused rather than guessed.
|
|
9
|
+
*/
|
|
10
|
+
import { Either } from "effect";
|
|
11
|
+
/**
|
|
12
|
+
* Find the one request open in a conversation: received, not yet answered,
|
|
13
|
+
* and before its deadline and close.
|
|
14
|
+
* @param requests Every request this endpoint holds, by id.
|
|
15
|
+
* @param conversation The canonical address the answer is sent to.
|
|
16
|
+
* @param now The current time in epoch milliseconds.
|
|
17
|
+
* @returns The open request, or why none takes the answer: several are open,
|
|
18
|
+
* one was already answered, none was received, or each has expired.
|
|
19
|
+
*/
|
|
20
|
+
export const matchOpenRequest = (requests, conversation, now) => {
|
|
21
|
+
const asked = [...requests]
|
|
22
|
+
.filter(([, request]) => request.to === conversation)
|
|
23
|
+
.map(([id, request]) => ({
|
|
24
|
+
id,
|
|
25
|
+
request,
|
|
26
|
+
unavailable: requestUnavailable(request, now),
|
|
27
|
+
}));
|
|
28
|
+
const open = asked.filter(({ unavailable }) => unavailable === undefined);
|
|
29
|
+
const [only] = open;
|
|
30
|
+
if (only !== undefined && open.length === 1) {
|
|
31
|
+
return Either.right({ id: only.id, request: only.request });
|
|
32
|
+
}
|
|
33
|
+
if (open.length > 1) {
|
|
34
|
+
return Either.left("request-ambiguous");
|
|
35
|
+
}
|
|
36
|
+
if (asked.some(({ unavailable }) => unavailable === "request-answered")) {
|
|
37
|
+
return Either.left("request-answered");
|
|
38
|
+
}
|
|
39
|
+
return Either.left(asked.length === 0 ? "request-none" : "request-expired");
|
|
40
|
+
};
|
|
41
|
+
function requestUnavailable(request, now) {
|
|
42
|
+
switch (request.state) {
|
|
43
|
+
case "open":
|
|
44
|
+
return now >= request.deadlineAt ? "request-expired" : undefined;
|
|
45
|
+
case "sending":
|
|
46
|
+
case "answered":
|
|
47
|
+
return "request-answered";
|
|
48
|
+
case "closed":
|
|
49
|
+
return "request-expired";
|
|
50
|
+
default: {
|
|
51
|
+
const exhaustive = request.state;
|
|
52
|
+
return exhaustive;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=received-request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"received-request.js","sourceRoot":"","sources":["../../../src/transport/collectives/received-request.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AA2BhC;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,QAA4C,EAC5C,YAAiC,EACjC,GAAW,EAC2C,EAAE;IACxD,MAAM,KAAK,GAAG,CAAC,GAAG,QAAQ,CAAC;SACxB,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,YAAY,CAAC;SACpD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QACvB,EAAE;QACF,OAAO;QACP,WAAW,EAAE,kBAAkB,CAAC,OAAO,EAAE,GAAG,CAAC;KAC9C,CAAC,CAAC,CAAC;IACN,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC;IAC1E,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACpB,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5C,OAAO,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,OAAO,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,WAAW,KAAK,kBAAkB,CAAC,EAAE,CAAC;QACxE,OAAO,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;AAC9E,CAAC,CAAC;AAEF,SAAS,kBAAkB,CACzB,OAAsB,EACtB,GAAW;IAEX,QAAQ,OAAO,CAAC,KAAK,EAAE,CAAC;QACtB,KAAK,MAAM;YACT,OAAO,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC;QACnE,KAAK,SAAS,CAAC;QACf,KAAK,UAAU;YACb,OAAO,kBAAkB,CAAC;QAC5B,KAAK,QAAQ;YACX,OAAO,iBAAiB,CAAC;QAC3B,SAAS,CAAC;YACR,MAAM,UAAU,GAAU,OAAO,CAAC,KAAK,CAAC;YACxC,OAAO,UAAU,CAAC;QACpB,CAAC;IACH,CAAC;AACH,CAAC"}
|