@moltzap/client 2026.811.0 → 2026.902.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/LICENSE +202 -21
- package/NOTICE +19 -0
- package/README.md +50 -0
- package/bin/moltzapd +9 -0
- package/dist/client-runtime.d.ts +10 -0
- package/dist/client-runtime.d.ts.map +1 -0
- package/dist/client-runtime.js +218 -0
- package/dist/client-runtime.js.map +1 -0
- package/dist/contract.d.ts +338 -0
- package/dist/contract.d.ts.map +1 -0
- package/dist/contract.js +213 -0
- package/dist/contract.js.map +1 -0
- package/dist/contract.types-check.d.ts +99 -0
- package/dist/contract.types-check.d.ts.map +1 -0
- package/dist/contract.types-check.js +7 -0
- package/dist/contract.types-check.js.map +1 -0
- package/dist/daemon/configuration.d.ts +46 -0
- package/dist/daemon/configuration.d.ts.map +1 -0
- package/dist/daemon/configuration.js +69 -0
- package/dist/daemon/configuration.js.map +1 -0
- package/dist/daemon/management.d.ts +23 -0
- package/dist/daemon/management.d.ts.map +1 -0
- package/dist/daemon/management.js +489 -0
- package/dist/daemon/management.js.map +1 -0
- package/dist/daemon/registration.d.ts +72 -0
- package/dist/daemon/registration.d.ts.map +1 -0
- package/dist/daemon/registration.js +109 -0
- package/dist/daemon/registration.js.map +1 -0
- package/dist/daemon/runtime/activation.d.ts +95 -0
- package/dist/daemon/runtime/activation.d.ts.map +1 -0
- package/dist/daemon/runtime/activation.js +99 -0
- package/dist/daemon/runtime/activation.js.map +1 -0
- package/dist/daemon/runtime/controller.d.ts +34 -0
- package/dist/daemon/runtime/controller.d.ts.map +1 -0
- package/dist/daemon/runtime/controller.js +106 -0
- package/dist/daemon/runtime/controller.js.map +1 -0
- package/dist/daemon/runtime/history-export.d.ts +23 -0
- package/dist/daemon/runtime/history-export.d.ts.map +1 -0
- package/dist/daemon/runtime/history-export.js +47 -0
- package/dist/daemon/runtime/history-export.js.map +1 -0
- package/dist/daemon/runtime/index.d.ts +24 -0
- package/dist/daemon/runtime/index.d.ts.map +1 -0
- package/dist/daemon/runtime/index.js +65 -0
- package/dist/daemon/runtime/index.js.map +1 -0
- package/dist/daemon/runtime/protocol.d.ts +63 -0
- package/dist/daemon/runtime/protocol.d.ts.map +1 -0
- package/dist/daemon/runtime/protocol.js +133 -0
- package/dist/daemon/runtime/protocol.js.map +1 -0
- package/dist/endpoint/addressing/index.d.ts +39 -0
- package/dist/endpoint/addressing/index.d.ts.map +1 -0
- package/dist/endpoint/addressing/index.js +114 -0
- package/dist/endpoint/addressing/index.js.map +1 -0
- package/dist/endpoint/engine-dissemination.d.ts +11 -0
- package/dist/endpoint/engine-dissemination.d.ts.map +1 -0
- package/dist/endpoint/engine-dissemination.js +71 -0
- package/dist/endpoint/engine-dissemination.js.map +1 -0
- package/dist/endpoint/engine-durability.d.ts +69 -0
- package/dist/endpoint/engine-durability.d.ts.map +1 -0
- package/dist/endpoint/engine-durability.js +210 -0
- package/dist/endpoint/engine-durability.js.map +1 -0
- package/dist/endpoint/engine-send.d.ts +50 -0
- package/dist/endpoint/engine-send.d.ts.map +1 -0
- package/dist/endpoint/engine-send.js +422 -0
- package/dist/endpoint/engine-send.js.map +1 -0
- package/dist/endpoint/engine-types.d.ts +132 -0
- package/dist/endpoint/engine-types.d.ts.map +1 -0
- package/dist/endpoint/engine-types.js +13 -0
- package/dist/endpoint/engine-types.js.map +1 -0
- package/dist/endpoint/engine.d.ts +14 -0
- package/dist/endpoint/engine.d.ts.map +1 -0
- package/dist/endpoint/engine.js +280 -0
- package/dist/endpoint/engine.js.map +1 -0
- package/dist/endpoint/protocol/evidence.d.ts +37 -0
- package/dist/endpoint/protocol/evidence.d.ts.map +1 -0
- package/dist/endpoint/protocol/evidence.js +80 -0
- package/dist/endpoint/protocol/evidence.js.map +1 -0
- package/dist/endpoint/protocol/index.d.ts +26 -0
- package/dist/endpoint/protocol/index.d.ts.map +1 -0
- package/dist/endpoint/protocol/index.js +543 -0
- package/dist/endpoint/protocol/index.js.map +1 -0
- package/dist/endpoint/recovery/barrier.d.ts +23 -0
- package/dist/endpoint/recovery/barrier.d.ts.map +1 -0
- package/dist/endpoint/recovery/barrier.js +47 -0
- package/dist/endpoint/recovery/barrier.js.map +1 -0
- package/dist/endpoint/recovery/index.d.ts +29 -0
- package/dist/endpoint/recovery/index.d.ts.map +1 -0
- package/dist/endpoint/recovery/index.js +489 -0
- package/dist/endpoint/recovery/index.js.map +1 -0
- package/dist/endpoint/recovery/reanchor/empty.d.ts +22 -0
- package/dist/endpoint/recovery/reanchor/empty.d.ts.map +1 -0
- package/dist/endpoint/recovery/reanchor/empty.js +163 -0
- package/dist/endpoint/recovery/reanchor/empty.js.map +1 -0
- package/dist/endpoint/recovery/reanchor/index.d.ts +30 -0
- package/dist/endpoint/recovery/reanchor/index.d.ts.map +1 -0
- package/dist/endpoint/recovery/reanchor/index.js +479 -0
- package/dist/endpoint/recovery/reanchor/index.js.map +1 -0
- package/dist/endpoint/recovery/state.d.ts +130 -0
- package/dist/endpoint/recovery/state.d.ts.map +1 -0
- package/dist/endpoint/recovery/state.js +296 -0
- package/dist/endpoint/recovery/state.js.map +1 -0
- package/dist/endpoint/recovery/store-evidence.d.ts +17 -0
- package/dist/endpoint/recovery/store-evidence.d.ts.map +1 -0
- package/dist/endpoint/recovery/store-evidence.js +79 -0
- package/dist/endpoint/recovery/store-evidence.js.map +1 -0
- package/dist/endpoint/recovery/store.d.ts +56 -0
- package/dist/endpoint/recovery/store.d.ts.map +1 -0
- package/dist/endpoint/recovery/store.js +499 -0
- package/dist/endpoint/recovery/store.js.map +1 -0
- package/dist/endpoint/representation-canonical.d.ts +17 -0
- package/dist/endpoint/representation-canonical.d.ts.map +1 -0
- package/dist/endpoint/representation-canonical.js +48 -0
- package/dist/endpoint/representation-canonical.js.map +1 -0
- package/dist/endpoint/representation-codec.d.ts +51 -0
- package/dist/endpoint/representation-codec.d.ts.map +1 -0
- package/dist/endpoint/representation-codec.js +159 -0
- package/dist/endpoint/representation-codec.js.map +1 -0
- package/dist/endpoint/representation-schemas.d.ts +1831 -0
- package/dist/endpoint/representation-schemas.d.ts.map +1 -0
- package/dist/endpoint/representation-schemas.js +195 -0
- package/dist/endpoint/representation-schemas.js.map +1 -0
- package/dist/endpoint/representation-verification.d.ts +79 -0
- package/dist/endpoint/representation-verification.d.ts.map +1 -0
- package/dist/endpoint/representation-verification.js +420 -0
- package/dist/endpoint/representation-verification.js.map +1 -0
- package/dist/endpoint/representation.d.ts +6 -0
- package/dist/endpoint/representation.d.ts.map +1 -0
- package/dist/endpoint/representation.js +8 -0
- package/dist/endpoint/representation.js.map +1 -0
- package/dist/endpoint/router-worker/index.d.ts +16 -0
- package/dist/endpoint/router-worker/index.d.ts.map +1 -0
- package/dist/endpoint/router-worker/index.js +547 -0
- package/dist/endpoint/router-worker/index.js.map +1 -0
- package/dist/endpoint/router-worker/types.d.ts +183 -0
- package/dist/endpoint/router-worker/types.d.ts.map +1 -0
- package/dist/endpoint/router-worker/types.js +31 -0
- package/dist/endpoint/router-worker/types.js.map +1 -0
- package/dist/endpoint/store/anchors.d.ts +83 -0
- package/dist/endpoint/store/anchors.d.ts.map +1 -0
- package/dist/endpoint/store/anchors.js +471 -0
- package/dist/endpoint/store/anchors.js.map +1 -0
- package/dist/endpoint/store/database/index.d.ts +6 -0
- package/dist/endpoint/store/database/index.d.ts.map +1 -0
- package/dist/endpoint/store/database/index.js +6 -0
- package/dist/endpoint/store/database/index.js.map +1 -0
- package/dist/endpoint/store/database/schema.d.ts +44 -0
- package/dist/endpoint/store/database/schema.d.ts.map +1 -0
- package/dist/endpoint/store/database/schema.js +345 -0
- package/dist/endpoint/store/database/schema.js.map +1 -0
- package/dist/endpoint/store/database/values.d.ts +119 -0
- package/dist/endpoint/store/database/values.d.ts.map +1 -0
- package/dist/endpoint/store/database/values.js +194 -0
- package/dist/endpoint/store/database/values.js.map +1 -0
- package/dist/endpoint/store/deliveries.d.ts +38 -0
- package/dist/endpoint/store/deliveries.d.ts.map +1 -0
- package/dist/endpoint/store/deliveries.js +124 -0
- package/dist/endpoint/store/deliveries.js.map +1 -0
- package/dist/endpoint/store/dissemination.d.ts +27 -0
- package/dist/endpoint/store/dissemination.d.ts.map +1 -0
- package/dist/endpoint/store/dissemination.js +139 -0
- package/dist/endpoint/store/dissemination.js.map +1 -0
- package/dist/endpoint/store/index.d.ts +15 -0
- package/dist/endpoint/store/index.d.ts.map +1 -0
- package/dist/endpoint/store/index.js +76 -0
- package/dist/endpoint/store/index.js.map +1 -0
- package/dist/endpoint/store/management.d.ts +42 -0
- package/dist/endpoint/store/management.d.ts.map +1 -0
- package/dist/endpoint/store/management.js +259 -0
- package/dist/endpoint/store/management.js.map +1 -0
- package/dist/endpoint/store/outbound.d.ts +62 -0
- package/dist/endpoint/store/outbound.d.ts.map +1 -0
- package/dist/endpoint/store/outbound.js +278 -0
- package/dist/endpoint/store/outbound.js.map +1 -0
- package/dist/endpoint/store/records.d.ts +56 -0
- package/dist/endpoint/store/records.d.ts.map +1 -0
- package/dist/endpoint/store/records.js +352 -0
- package/dist/endpoint/store/records.js.map +1 -0
- package/dist/endpoint/store/rows/index.d.ts +138 -0
- package/dist/endpoint/store/rows/index.d.ts.map +1 -0
- package/dist/endpoint/store/rows/index.js +307 -0
- package/dist/endpoint/store/rows/index.js.map +1 -0
- package/dist/endpoint/store/types.d.ts +223 -0
- package/dist/endpoint/store/types.d.ts.map +1 -0
- package/dist/endpoint/store/types.js +15 -0
- package/dist/endpoint/store/types.js.map +1 -0
- package/dist/endpoint/store.d.ts +10 -0
- package/dist/endpoint/store.d.ts.map +1 -0
- package/dist/endpoint/store.js +6 -0
- package/dist/endpoint/store.js.map +1 -0
- package/dist/harness-mcp-contract.d.ts +101 -0
- package/dist/harness-mcp-contract.d.ts.map +1 -0
- package/dist/harness-mcp-contract.js +61 -0
- package/dist/harness-mcp-contract.js.map +1 -0
- package/dist/harness-mcp-http.d.ts +19 -0
- package/dist/harness-mcp-http.d.ts.map +1 -0
- package/dist/{harness-mcp-server.js → harness-mcp-http.js} +43 -71
- package/dist/harness-mcp-http.js.map +1 -0
- package/dist/harness-mcp-subscription.d.ts +12 -7
- package/dist/harness-mcp-subscription.d.ts.map +1 -1
- package/dist/harness-mcp-subscription.js +113 -100
- package/dist/harness-mcp-subscription.js.map +1 -1
- package/dist/harness-mcp-wire.d.ts +26 -19
- package/dist/harness-mcp-wire.d.ts.map +1 -1
- package/dist/harness-mcp-wire.js +380 -67
- package/dist/harness-mcp-wire.js.map +1 -1
- package/dist/index.d.ts +4 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -8
- package/dist/index.js.map +1 -1
- package/dist/management-runtime.d.ts +217 -0
- package/dist/management-runtime.d.ts.map +1 -0
- package/dist/management-runtime.js +127 -0
- package/dist/management-runtime.js.map +1 -0
- package/dist/server.d.ts +16 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +46 -0
- package/dist/server.js.map +1 -0
- package/dist/server.types-check.d.ts +23 -0
- package/dist/server.types-check.d.ts.map +1 -0
- package/dist/server.types-check.js +7 -0
- package/dist/server.types-check.js.map +1 -0
- package/package.json +45 -47
- package/dist/agent-client.d.ts +0 -5
- package/dist/agent-client.d.ts.map +0 -1
- package/dist/agent-client.js +0 -3
- package/dist/agent-client.js.map +0 -1
- package/dist/auth.d.ts +0 -37
- package/dist/auth.d.ts.map +0 -1
- package/dist/auth.js +0 -79
- package/dist/auth.js.map +0 -1
- package/dist/bounded-map.d.ts +0 -32
- package/dist/bounded-map.d.ts.map +0 -1
- package/dist/bounded-map.js +0 -79
- package/dist/bounded-map.js.map +0 -1
- package/dist/channel-base/format-cross-conv.d.ts +0 -43
- package/dist/channel-base/format-cross-conv.d.ts.map +0 -1
- package/dist/channel-base/format-cross-conv.js +0 -65
- package/dist/channel-base/format-cross-conv.js.map +0 -1
- package/dist/channel-base/format-group-block.d.ts +0 -48
- package/dist/channel-base/format-group-block.d.ts.map +0 -1
- package/dist/channel-base/format-group-block.js +0 -62
- package/dist/channel-base/format-group-block.js.map +0 -1
- package/dist/channel-base/index.d.ts +0 -12
- package/dist/channel-base/index.d.ts.map +0 -1
- package/dist/channel-base/index.js +0 -13
- package/dist/channel-base/index.js.map +0 -1
- package/dist/channel-core-enrichment.d.ts +0 -14
- package/dist/channel-core-enrichment.d.ts.map +0 -1
- package/dist/channel-core-enrichment.js +0 -143
- package/dist/channel-core-enrichment.js.map +0 -1
- package/dist/channel-core-test-support.d.ts +0 -75
- package/dist/channel-core-test-support.d.ts.map +0 -1
- package/dist/channel-core-test-support.js +0 -74
- package/dist/channel-core-test-support.js.map +0 -1
- package/dist/channel-core.d.ts +0 -304
- package/dist/channel-core.d.ts.map +0 -1
- package/dist/channel-core.js +0 -363
- package/dist/channel-core.js.map +0 -1
- package/dist/cli/adapters.d.ts +0 -21
- package/dist/cli/adapters.d.ts.map +0 -1
- package/dist/cli/adapters.js +0 -111
- package/dist/cli/adapters.js.map +0 -1
- package/dist/cli/commands/agents.d.ts +0 -11
- package/dist/cli/commands/agents.d.ts.map +0 -1
- package/dist/cli/commands/agents.js +0 -27
- package/dist/cli/commands/agents.js.map +0 -1
- package/dist/cli/commands/conversations.d.ts +0 -18
- package/dist/cli/commands/conversations.d.ts.map +0 -1
- package/dist/cli/commands/conversations.js +0 -33
- package/dist/cli/commands/conversations.js.map +0 -1
- package/dist/cli/commands/messages.d.ts +0 -41
- package/dist/cli/commands/messages.d.ts.map +0 -1
- package/dist/cli/commands/messages.js +0 -39
- package/dist/cli/commands/messages.js.map +0 -1
- package/dist/cli/commands/register.d.ts +0 -46
- package/dist/cli/commands/register.d.ts.map +0 -1
- package/dist/cli/commands/register.js +0 -103
- package/dist/cli/commands/register.js.map +0 -1
- package/dist/cli/commands/send.d.ts +0 -53
- package/dist/cli/commands/send.d.ts.map +0 -1
- package/dist/cli/commands/send.js +0 -57
- package/dist/cli/commands/send.js.map +0 -1
- package/dist/cli/commands/start.d.ts +0 -34
- package/dist/cli/commands/start.d.ts.map +0 -1
- package/dist/cli/commands/start.js +0 -59
- package/dist/cli/commands/start.js.map +0 -1
- package/dist/cli/commands/status.d.ts +0 -7
- package/dist/cli/commands/status.d.ts.map +0 -1
- package/dist/cli/commands/status.js +0 -16
- package/dist/cli/commands/status.js.map +0 -1
- package/dist/cli/commands/test-transport.d.ts +0 -28
- package/dist/cli/commands/test-transport.d.ts.map +0 -1
- package/dist/cli/commands/test-transport.js +0 -40
- package/dist/cli/commands/test-transport.js.map +0 -1
- package/dist/cli/index.d.ts +0 -3
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js +0 -105
- package/dist/cli/index.js.map +0 -1
- package/dist/cli/output.d.ts +0 -14
- package/dist/cli/output.d.ts.map +0 -1
- package/dist/cli/output.js +0 -19
- package/dist/cli/output.js.map +0 -1
- package/dist/cli/socket-client.d.ts +0 -28
- package/dist/cli/socket-client.d.ts.map +0 -1
- package/dist/cli/socket-client.js +0 -63
- package/dist/cli/socket-client.js.map +0 -1
- package/dist/cli/transport.d.ts +0 -132
- package/dist/cli/transport.d.ts.map +0 -1
- package/dist/cli/transport.js +0 -127
- package/dist/cli/transport.js.map +0 -1
- package/dist/config.d.ts +0 -33
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -45
- package/dist/config.js.map +0 -1
- package/dist/config.test-utils.d.ts +0 -18
- package/dist/config.test-utils.d.ts.map +0 -1
- package/dist/config.test-utils.js +0 -53
- package/dist/config.test-utils.js.map +0 -1
- package/dist/harness/client-runtime.d.ts +0 -24
- package/dist/harness/client-runtime.d.ts.map +0 -1
- package/dist/harness/client-runtime.js +0 -107
- package/dist/harness/client-runtime.js.map +0 -1
- package/dist/harness/index.d.ts +0 -5
- package/dist/harness/index.d.ts.map +0 -1
- package/dist/harness/index.js +0 -5
- package/dist/harness/index.js.map +0 -1
- package/dist/harness/runtime.d.ts +0 -149
- package/dist/harness/runtime.d.ts.map +0 -1
- package/dist/harness/runtime.js +0 -68
- package/dist/harness/runtime.js.map +0 -1
- package/dist/harness-client.d.ts +0 -43
- package/dist/harness-client.d.ts.map +0 -1
- package/dist/harness-client.js +0 -21
- package/dist/harness-client.js.map +0 -1
- package/dist/harness-mcp-server.d.ts +0 -19
- package/dist/harness-mcp-server.d.ts.map +0 -1
- package/dist/harness-mcp-server.js.map +0 -1
- package/dist/local-daemon-rpc.d.ts +0 -1170
- package/dist/local-daemon-rpc.d.ts.map +0 -1
- package/dist/local-daemon-rpc.js +0 -178
- package/dist/local-daemon-rpc.js.map +0 -1
- package/dist/local-history.d.ts +0 -75
- package/dist/local-history.d.ts.map +0 -1
- package/dist/local-history.js +0 -82
- package/dist/local-history.js.map +0 -1
- package/dist/local-paths.d.ts +0 -22
- package/dist/local-paths.d.ts.map +0 -1
- package/dist/local-paths.js +0 -33
- package/dist/local-paths.js.map +0 -1
- package/dist/local-socket-server.d.ts +0 -33
- package/dist/local-socket-server.d.ts.map +0 -1
- package/dist/local-socket-server.js +0 -100
- package/dist/local-socket-server.js.map +0 -1
- package/dist/message-rendering.d.ts +0 -4
- package/dist/message-rendering.d.ts.map +0 -1
- package/dist/message-rendering.js +0 -8
- package/dist/message-rendering.js.map +0 -1
- package/dist/moltzapd.d.ts +0 -38
- package/dist/moltzapd.d.ts.map +0 -1
- package/dist/moltzapd.js +0 -78
- package/dist/moltzapd.js.map +0 -1
- package/dist/notification/__tests__/subscribe-signatures.types-check.d.ts +0 -53
- package/dist/notification/__tests__/subscribe-signatures.types-check.d.ts.map +0 -1
- package/dist/notification/__tests__/subscribe-signatures.types-check.js +0 -29
- package/dist/notification/__tests__/subscribe-signatures.types-check.js.map +0 -1
- package/dist/notification/errors.d.ts +0 -41
- package/dist/notification/errors.d.ts.map +0 -1
- package/dist/notification/errors.js +0 -24
- package/dist/notification/errors.js.map +0 -1
- package/dist/notification/index.d.ts +0 -6
- package/dist/notification/index.d.ts.map +0 -1
- package/dist/notification/index.js +0 -6
- package/dist/notification/index.js.map +0 -1
- package/dist/notification/stream.d.ts +0 -75
- package/dist/notification/stream.d.ts.map +0 -1
- package/dist/notification/stream.js +0 -30
- package/dist/notification/stream.js.map +0 -1
- package/dist/pagination.d.ts +0 -52
- package/dist/pagination.d.ts.map +0 -1
- package/dist/pagination.js +0 -51
- package/dist/pagination.js.map +0 -1
- package/dist/profile.d.ts +0 -104
- package/dist/profile.d.ts.map +0 -1
- package/dist/profile.js +0 -163
- package/dist/profile.js.map +0 -1
- package/dist/refs.d.ts +0 -18
- package/dist/refs.d.ts.map +0 -1
- package/dist/refs.js +0 -18
- package/dist/refs.js.map +0 -1
- package/dist/service-event-trace.d.ts +0 -15
- package/dist/service-event-trace.d.ts.map +0 -1
- package/dist/service-event-trace.js +0 -35
- package/dist/service-event-trace.js.map +0 -1
- package/dist/service-helpers.d.ts +0 -55
- package/dist/service-helpers.d.ts.map +0 -1
- package/dist/service-helpers.js +0 -108
- package/dist/service-helpers.js.map +0 -1
- package/dist/service-local-daemon.d.ts +0 -32
- package/dist/service-local-daemon.d.ts.map +0 -1
- package/dist/service-local-daemon.js +0 -153
- package/dist/service-local-daemon.js.map +0 -1
- package/dist/service.d.ts +0 -299
- package/dist/service.d.ts.map +0 -1
- package/dist/service.js +0 -789
- package/dist/service.js.map +0 -1
- package/dist/test-utils/channel-service-fixture.d.ts +0 -53
- package/dist/test-utils/channel-service-fixture.d.ts.map +0 -1
- package/dist/test-utils/channel-service-fixture.js +0 -178
- package/dist/test-utils/channel-service-fixture.js.map +0 -1
- package/dist/test-utils/fake-service.d.ts +0 -84
- package/dist/test-utils/fake-service.d.ts.map +0 -1
- package/dist/test-utils/fake-service.js +0 -108
- package/dist/test-utils/fake-service.js.map +0 -1
- package/dist/test-utils/harness.d.ts +0 -27
- package/dist/test-utils/harness.d.ts.map +0 -1
- package/dist/test-utils/harness.js +0 -33
- package/dist/test-utils/harness.js.map +0 -1
- package/dist/test-utils/ids.d.ts +0 -21
- package/dist/test-utils/ids.d.ts.map +0 -1
- package/dist/test-utils/ids.js +0 -68
- package/dist/test-utils/ids.js.map +0 -1
- package/dist/test-utils/index.d.ts +0 -54
- package/dist/test-utils/index.d.ts.map +0 -1
- package/dist/test-utils/index.js +0 -65
- package/dist/test-utils/index.js.map +0 -1
- package/dist/test-utils/standalone-provisioning.d.ts +0 -22
- package/dist/test-utils/standalone-provisioning.d.ts.map +0 -1
- package/dist/test-utils/standalone-provisioning.js +0 -17
- package/dist/test-utils/standalone-provisioning.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/** @file Durable remote-message delivery, replay, and acknowledgment. */
|
|
2
|
+
import type { DatabaseSync } from "node:sqlite";
|
|
3
|
+
import { type CertifiedRecord, DeliveryToken, type InboundDeliveryInput, type PendingDelivery, type StoreMutation } from "./types.js";
|
|
4
|
+
/**
|
|
5
|
+
* Reads unacknowledged deliveries in stable local commit order.
|
|
6
|
+
*
|
|
7
|
+
* @param database Exclusively owned endpoint database.
|
|
8
|
+
* @returns Detached pending deliveries in durable insertion order.
|
|
9
|
+
*/
|
|
10
|
+
export declare function readPendingDeliveries(database: DatabaseSync): readonly PendingDelivery[];
|
|
11
|
+
/**
|
|
12
|
+
* Reads every retained delivery, including acknowledged tombstones.
|
|
13
|
+
*
|
|
14
|
+
* @param database Exclusively owned endpoint database.
|
|
15
|
+
* @returns Detached retained deliveries in durable insertion order.
|
|
16
|
+
*/
|
|
17
|
+
export declare function readRetainedDeliveries(database: DatabaseSync): readonly PendingDelivery[];
|
|
18
|
+
/**
|
|
19
|
+
* Durably acknowledges one delivery without deleting its collision tombstone.
|
|
20
|
+
*
|
|
21
|
+
* @param database Exclusively owned endpoint database.
|
|
22
|
+
* @param deliveryToken Stable opaque delivery identity.
|
|
23
|
+
* @returns Whether acknowledgment state advanced or was already retained.
|
|
24
|
+
*/
|
|
25
|
+
export declare function acknowledgeDelivery(database: DatabaseSync, deliveryToken: DeliveryToken): StoreMutation;
|
|
26
|
+
/**
|
|
27
|
+
* Creates or validates the delivery coupled to one certified record.
|
|
28
|
+
*
|
|
29
|
+
* This function runs inside the record-promotion transaction after the
|
|
30
|
+
* certified marker exists. It suppresses the local author's own post.
|
|
31
|
+
*
|
|
32
|
+
* @param database Exclusively owned endpoint database.
|
|
33
|
+
* @param record Complete record whose certification is already durable.
|
|
34
|
+
* @param delivery Canonical remote message, absent for the local author.
|
|
35
|
+
* @returns Whether the delivery row was inserted or already retained.
|
|
36
|
+
*/
|
|
37
|
+
export declare function retainDeliveryInTransaction(database: DatabaseSync, record: CertifiedRecord, delivery?: InboundDeliveryInput): StoreMutation;
|
|
38
|
+
//# sourceMappingURL=deliveries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deliveries.d.ts","sourceRoot":"","sources":["../../../src/endpoint/store/deliveries.ts"],"names":[],"mappings":"AAAA,yEAAyE;AAEzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAchD,OAAO,EACL,KAAK,eAAe,EACpB,aAAa,EACb,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,aAAa,EACnB,MAAM,YAAY,CAAC;AAOpB;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,YAAY,GACrB,SAAS,eAAe,EAAE,CAU5B;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,YAAY,GACrB,SAAS,eAAe,EAAE,CAU5B;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,YAAY,EACtB,aAAa,EAAE,aAAa,GAC3B,aAAa,CA4Bf;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE,eAAe,EACvB,QAAQ,CAAC,EAAE,oBAAoB,GAC9B,aAAa,CA6Cf"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/** @file Durable remote-message delivery, replay, and acknowledgment. */
|
|
2
|
+
import { Either, Schema } from "effect";
|
|
3
|
+
import { copyBytes, mintDeliveryToken, readText, requireBytes, requireEqual, requireSameBytes, requireText, StoreSignal, transaction, } from "./database/index.js";
|
|
4
|
+
import { readPendingDelivery, readStoredIdentity } from "./rows/index.js";
|
|
5
|
+
import { DeliveryToken, } from "./types.js";
|
|
6
|
+
const deliveryColumns = `
|
|
7
|
+
delivery_token, conversation_id, record_hash, recipient_agent_id,
|
|
8
|
+
canonical_message, acknowledged
|
|
9
|
+
`;
|
|
10
|
+
/**
|
|
11
|
+
* Reads unacknowledged deliveries in stable local commit order.
|
|
12
|
+
*
|
|
13
|
+
* @param database Exclusively owned endpoint database.
|
|
14
|
+
* @returns Detached pending deliveries in durable insertion order.
|
|
15
|
+
*/
|
|
16
|
+
export function readPendingDeliveries(database) {
|
|
17
|
+
return Object.freeze(database
|
|
18
|
+
.prepare(`SELECT ${deliveryColumns} FROM pending_deliveries
|
|
19
|
+
WHERE acknowledged = 0 ORDER BY delivery_sequence`)
|
|
20
|
+
.all()
|
|
21
|
+
.map(readPendingDelivery));
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Reads every retained delivery, including acknowledged tombstones.
|
|
25
|
+
*
|
|
26
|
+
* @param database Exclusively owned endpoint database.
|
|
27
|
+
* @returns Detached retained deliveries in durable insertion order.
|
|
28
|
+
*/
|
|
29
|
+
export function readRetainedDeliveries(database) {
|
|
30
|
+
return Object.freeze(database
|
|
31
|
+
.prepare(`SELECT ${deliveryColumns} FROM pending_deliveries
|
|
32
|
+
ORDER BY delivery_sequence`)
|
|
33
|
+
.all()
|
|
34
|
+
.map(readPendingDelivery));
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Durably acknowledges one delivery without deleting its collision tombstone.
|
|
38
|
+
*
|
|
39
|
+
* @param database Exclusively owned endpoint database.
|
|
40
|
+
* @param deliveryToken Stable opaque delivery identity.
|
|
41
|
+
* @returns Whether acknowledgment state advanced or was already retained.
|
|
42
|
+
*/
|
|
43
|
+
export function acknowledgeDelivery(database, deliveryToken) {
|
|
44
|
+
Either.match(Schema.decodeUnknownEither(DeliveryToken)(deliveryToken), {
|
|
45
|
+
onLeft: () => {
|
|
46
|
+
throw new StoreSignal("invalid-input");
|
|
47
|
+
},
|
|
48
|
+
onRight: () => undefined,
|
|
49
|
+
});
|
|
50
|
+
return transaction(database, () => {
|
|
51
|
+
const row = database
|
|
52
|
+
.prepare(`SELECT ${deliveryColumns} FROM pending_deliveries
|
|
53
|
+
WHERE delivery_token = ?`)
|
|
54
|
+
.get(deliveryToken);
|
|
55
|
+
if (row === undefined) {
|
|
56
|
+
throw new StoreSignal("not-found");
|
|
57
|
+
}
|
|
58
|
+
if (readPendingDelivery(row).acknowledged) {
|
|
59
|
+
return "existing";
|
|
60
|
+
}
|
|
61
|
+
database
|
|
62
|
+
.prepare(`UPDATE pending_deliveries SET acknowledged = 1
|
|
63
|
+
WHERE delivery_token = ?`)
|
|
64
|
+
.run(deliveryToken);
|
|
65
|
+
return "inserted";
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Creates or validates the delivery coupled to one certified record.
|
|
70
|
+
*
|
|
71
|
+
* This function runs inside the record-promotion transaction after the
|
|
72
|
+
* certified marker exists. It suppresses the local author's own post.
|
|
73
|
+
*
|
|
74
|
+
* @param database Exclusively owned endpoint database.
|
|
75
|
+
* @param record Complete record whose certification is already durable.
|
|
76
|
+
* @param delivery Canonical remote message, absent for the local author.
|
|
77
|
+
* @returns Whether the delivery row was inserted or already retained.
|
|
78
|
+
*/
|
|
79
|
+
export function retainDeliveryInTransaction(database, record, delivery) {
|
|
80
|
+
const identity = readStoredIdentity(database);
|
|
81
|
+
if (identity === undefined) {
|
|
82
|
+
throw new StoreSignal("not-found");
|
|
83
|
+
}
|
|
84
|
+
if (record.authorAgentId === identity.agentId) {
|
|
85
|
+
if (delivery !== undefined) {
|
|
86
|
+
throw new StoreSignal("conflict");
|
|
87
|
+
}
|
|
88
|
+
return "existing";
|
|
89
|
+
}
|
|
90
|
+
if (delivery === undefined) {
|
|
91
|
+
throw new StoreSignal("invalid-input");
|
|
92
|
+
}
|
|
93
|
+
requireText(delivery.recipientAgentId);
|
|
94
|
+
requireBytes(delivery.canonicalMessage);
|
|
95
|
+
requireEqual(identity.agentId, delivery.recipientAgentId);
|
|
96
|
+
const existing = findRetainedDelivery(database, record.conversationId, record.recordHash);
|
|
97
|
+
if (existing !== undefined) {
|
|
98
|
+
requireEqual(existing.recipientAgentId, delivery.recipientAgentId);
|
|
99
|
+
requireSameBytes(existing.canonicalMessage, delivery.canonicalMessage);
|
|
100
|
+
return "existing";
|
|
101
|
+
}
|
|
102
|
+
const deliveryToken = Schema.decodeUnknownSync(DeliveryToken)(mintDeliveryToken(readDeliveryTokens(database)));
|
|
103
|
+
database
|
|
104
|
+
.prepare(`INSERT INTO pending_deliveries
|
|
105
|
+
(delivery_token, conversation_id, record_hash, recipient_agent_id,
|
|
106
|
+
canonical_message)
|
|
107
|
+
VALUES (?, ?, ?, ?, ?)`)
|
|
108
|
+
.run(deliveryToken, record.conversationId, record.recordHash, delivery.recipientAgentId, copyBytes(delivery.canonicalMessage));
|
|
109
|
+
return "inserted";
|
|
110
|
+
}
|
|
111
|
+
function findRetainedDelivery(database, conversationId, recordHash) {
|
|
112
|
+
const row = database
|
|
113
|
+
.prepare(`SELECT ${deliveryColumns} FROM pending_deliveries
|
|
114
|
+
WHERE conversation_id = ? AND record_hash = ?`)
|
|
115
|
+
.get(conversationId, recordHash);
|
|
116
|
+
return row === undefined ? undefined : readPendingDelivery(row);
|
|
117
|
+
}
|
|
118
|
+
function readDeliveryTokens(database) {
|
|
119
|
+
return new Set(database
|
|
120
|
+
.prepare("SELECT delivery_token FROM pending_deliveries")
|
|
121
|
+
.all()
|
|
122
|
+
.map((row) => readText(row, "delivery_token")));
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=deliveries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deliveries.js","sourceRoot":"","sources":["../../../src/endpoint/store/deliveries.ts"],"names":[],"mappings":"AAAA,yEAAyE;AAGzE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EACL,SAAS,EACT,iBAAiB,EACjB,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAEL,aAAa,GAId,MAAM,YAAY,CAAC;AAEpB,MAAM,eAAe,GAAG;;;CAGvB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CACnC,QAAsB;IAEtB,OAAO,MAAM,CAAC,MAAM,CAClB,QAAQ;SACL,OAAO,CACN,UAAU,eAAe;2DAC0B,CACpD;SACA,GAAG,EAAE;SACL,GAAG,CAAC,mBAAmB,CAAC,CAC5B,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CACpC,QAAsB;IAEtB,OAAO,MAAM,CAAC,MAAM,CAClB,QAAQ;SACL,OAAO,CACN,UAAU,eAAe;oCACG,CAC7B;SACA,GAAG,EAAE;SACL,GAAG,CAAC,mBAAmB,CAAC,CAC5B,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAAsB,EACtB,aAA4B;IAE5B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,aAAa,CAAC,EAAE;QACrE,MAAM,EAAE,GAAG,EAAE;YACX,MAAM,IAAI,WAAW,CAAC,eAAe,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS;KACzB,CAAC,CAAC;IACH,OAAO,WAAW,CAAC,QAAQ,EAAE,GAAG,EAAE;QAChC,MAAM,GAAG,GAAG,QAAQ;aACjB,OAAO,CACN,UAAU,eAAe;kCACC,CAC3B;aACA,GAAG,CAAC,aAAa,CAAC,CAAC;QACtB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,MAAM,IAAI,WAAW,CAAC,WAAW,CAAC,CAAC;QACrC,CAAC;QACD,IAAI,mBAAmB,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC;YAC1C,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,QAAQ;aACL,OAAO,CACN;kCAC0B,CAC3B;aACA,GAAG,CAAC,aAAa,CAAC,CAAC;QACtB,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,2BAA2B,CACzC,QAAsB,EACtB,MAAuB,EACvB,QAA+B;IAE/B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,WAAW,CAAC,WAAW,CAAC,CAAC;IACrC,CAAC;IACD,IAAI,MAAM,CAAC,aAAa,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC;QAC9C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,WAAW,CAAC,UAAU,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,WAAW,CAAC,eAAe,CAAC,CAAC;IACzC,CAAC;IACD,WAAW,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IACvC,YAAY,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IACxC,YAAY,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,oBAAoB,CACnC,QAAQ,EACR,MAAM,CAAC,cAAc,EACrB,MAAM,CAAC,UAAU,CAClB,CAAC;IACF,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,YAAY,CAAC,QAAQ,CAAC,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QACnE,gBAAgB,CAAC,QAAQ,CAAC,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QACvE,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,MAAM,aAAa,GAAG,MAAM,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAC3D,iBAAiB,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAChD,CAAC;IACF,QAAQ;SACL,OAAO,CACN;;;8BAGwB,CACzB;SACA,GAAG,CACF,aAAa,EACb,MAAM,CAAC,cAAc,EACrB,MAAM,CAAC,UAAU,EACjB,QAAQ,CAAC,gBAAgB,EACzB,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CACrC,CAAC;IACJ,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,oBAAoB,CAC3B,QAAsB,EACtB,cAAsB,EACtB,UAAkB;IAElB,MAAM,GAAG,GAAG,QAAQ;SACjB,OAAO,CACN,UAAU,eAAe;qDACsB,CAChD;SACA,GAAG,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;IACnC,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,kBAAkB,CAAC,QAAsB;IAChD,OAAO,IAAI,GAAG,CACZ,QAAQ;SACL,OAAO,CAAC,+CAA+C,CAAC;SACxD,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC,CACjD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/** @file Durable record-dissemination obligations and exact outbox attachment. */
|
|
2
|
+
import type { DatabaseSync } from "node:sqlite";
|
|
3
|
+
import type { DisseminationObligation, OutboundMessageInput, StoredOutboundMessage, StoreMutation } from "./types.js";
|
|
4
|
+
/**
|
|
5
|
+
* Retains one logical packet requirement inside a record-state transaction.
|
|
6
|
+
*
|
|
7
|
+
* @param database Exclusively owned endpoint database.
|
|
8
|
+
* @param obligation Exact record packet that must reach the durable outbox.
|
|
9
|
+
* @returns Whether the obligation was inserted or already durable.
|
|
10
|
+
*/
|
|
11
|
+
export declare function retainDisseminationInTransaction(database: DatabaseSync, obligation: DisseminationObligation): StoreMutation;
|
|
12
|
+
/**
|
|
13
|
+
* Atomically attaches one logical packet requirement to its exact outbox row.
|
|
14
|
+
*
|
|
15
|
+
* @param database Exclusively owned endpoint database.
|
|
16
|
+
* @param obligation Expected durable packet requirement.
|
|
17
|
+
* @param message Complete canonical outer envelope.
|
|
18
|
+
* @returns The current durable envelope under its stable outbox identity.
|
|
19
|
+
*/
|
|
20
|
+
export declare function enqueueDisseminationOutbound(database: DatabaseSync, obligation: DisseminationObligation, message: OutboundMessageInput): StoredOutboundMessage;
|
|
21
|
+
/**
|
|
22
|
+
* Reads unattached obligations in their durable insertion order.
|
|
23
|
+
* @param database Exclusively owned endpoint database.
|
|
24
|
+
* @returns Exact obligations that do not yet own an outbox envelope.
|
|
25
|
+
*/
|
|
26
|
+
export declare function readPendingDissemination(database: DatabaseSync): readonly DisseminationObligation[];
|
|
27
|
+
//# sourceMappingURL=dissemination.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dissemination.d.ts","sourceRoot":"","sources":["../../../src/endpoint/store/dissemination.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAElF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAEV,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,EACrB,aAAa,EACd,MAAM,YAAY,CAAC;AAWpB;;;;;;GAMG;AACH,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,uBAAuB,GAClC,aAAa,CAef;AAED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,uBAAuB,EACnC,OAAO,EAAE,oBAAoB,GAC5B,qBAAqB,CA4BvB;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,YAAY,GACrB,SAAS,uBAAuB,EAAE,CAWpC"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/** @file Durable record-dissemination obligations and exact outbox attachment. */
|
|
2
|
+
import { readOptionalText, readText, requireEqual, requireText, StoreSignal, transaction, } from "./database/index.js";
|
|
3
|
+
import { enqueueOutboundInTransaction } from "./outbound.js";
|
|
4
|
+
/**
|
|
5
|
+
* Retains one logical packet requirement inside a record-state transaction.
|
|
6
|
+
*
|
|
7
|
+
* @param database Exclusively owned endpoint database.
|
|
8
|
+
* @param obligation Exact record packet that must reach the durable outbox.
|
|
9
|
+
* @returns Whether the obligation was inserted or already durable.
|
|
10
|
+
*/
|
|
11
|
+
export function retainDisseminationInTransaction(database, obligation) {
|
|
12
|
+
validateObligation(obligation);
|
|
13
|
+
requireRecordState(database, obligation);
|
|
14
|
+
const existing = findObligation(database, obligation);
|
|
15
|
+
if (existing !== undefined) {
|
|
16
|
+
return "existing";
|
|
17
|
+
}
|
|
18
|
+
database
|
|
19
|
+
.prepare(`INSERT INTO dissemination_obligations
|
|
20
|
+
(conversation_id, record_hash, packet_kind)
|
|
21
|
+
VALUES (?, ?, ?)`)
|
|
22
|
+
.run(obligation.conversationId, obligation.recordHash, obligation.kind);
|
|
23
|
+
return "inserted";
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Atomically attaches one logical packet requirement to its exact outbox row.
|
|
27
|
+
*
|
|
28
|
+
* @param database Exclusively owned endpoint database.
|
|
29
|
+
* @param obligation Expected durable packet requirement.
|
|
30
|
+
* @param message Complete canonical outer envelope.
|
|
31
|
+
* @returns The current durable envelope under its stable outbox identity.
|
|
32
|
+
*/
|
|
33
|
+
export function enqueueDisseminationOutbound(database, obligation, message) {
|
|
34
|
+
validateObligation(obligation);
|
|
35
|
+
requireEqual(obligation.conversationId, message.conversationId);
|
|
36
|
+
return transaction(database, () => {
|
|
37
|
+
const retained = requireObligation(database, obligation);
|
|
38
|
+
const outbound = enqueueOutboundInTransaction(database, message);
|
|
39
|
+
if (retained.outboundId !== undefined &&
|
|
40
|
+
retained.outboundId !== outbound.outboundId) {
|
|
41
|
+
throw new StoreSignal("conflict");
|
|
42
|
+
}
|
|
43
|
+
if (retained.outboundId === undefined) {
|
|
44
|
+
database
|
|
45
|
+
.prepare(`UPDATE dissemination_obligations SET outbound_id = ?
|
|
46
|
+
WHERE conversation_id = ? AND record_hash = ? AND packet_kind = ?
|
|
47
|
+
AND outbound_id IS NULL`)
|
|
48
|
+
.run(outbound.outboundId, obligation.conversationId, obligation.recordHash, obligation.kind);
|
|
49
|
+
}
|
|
50
|
+
return outbound;
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Reads unattached obligations in their durable insertion order.
|
|
55
|
+
* @param database Exclusively owned endpoint database.
|
|
56
|
+
* @returns Exact obligations that do not yet own an outbox envelope.
|
|
57
|
+
*/
|
|
58
|
+
export function readPendingDissemination(database) {
|
|
59
|
+
return Object.freeze(database
|
|
60
|
+
.prepare(`SELECT conversation_id, record_hash, packet_kind
|
|
61
|
+
FROM dissemination_obligations WHERE outbound_id IS NULL
|
|
62
|
+
ORDER BY obligation_sequence`)
|
|
63
|
+
.all()
|
|
64
|
+
.map(readObligation));
|
|
65
|
+
}
|
|
66
|
+
function requireObligation(database, obligation) {
|
|
67
|
+
const retained = findObligation(database, obligation);
|
|
68
|
+
if (retained === undefined) {
|
|
69
|
+
throw new StoreSignal("not-found");
|
|
70
|
+
}
|
|
71
|
+
requireSameObligation(retained.obligation, obligation);
|
|
72
|
+
return retained;
|
|
73
|
+
}
|
|
74
|
+
function findObligation(database, obligation) {
|
|
75
|
+
const row = database
|
|
76
|
+
.prepare(`SELECT conversation_id, record_hash, packet_kind, outbound_id
|
|
77
|
+
FROM dissemination_obligations
|
|
78
|
+
WHERE conversation_id = ? AND record_hash = ? AND packet_kind = ?`)
|
|
79
|
+
.get(obligation.conversationId, obligation.recordHash, obligation.kind);
|
|
80
|
+
return row === undefined ? undefined : readRetainedDissemination(row);
|
|
81
|
+
}
|
|
82
|
+
function readRetainedDissemination(row) {
|
|
83
|
+
const outboundId = readOptionalText(row, "outbound_id");
|
|
84
|
+
return Object.freeze({
|
|
85
|
+
obligation: readObligation(row),
|
|
86
|
+
...(outboundId === undefined ? {} : { outboundId }),
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
function readObligation(row) {
|
|
90
|
+
return Object.freeze({
|
|
91
|
+
conversationId: readText(row, "conversation_id"),
|
|
92
|
+
recordHash: readText(row, "record_hash"),
|
|
93
|
+
kind: readDisseminationKind(row),
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
function readDisseminationKind(row) {
|
|
97
|
+
const kind = readText(row, "packet_kind");
|
|
98
|
+
switch (kind) {
|
|
99
|
+
case "action-certified-record":
|
|
100
|
+
case "certified-record":
|
|
101
|
+
return kind;
|
|
102
|
+
default:
|
|
103
|
+
throw new StoreSignal("corrupt");
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
function validateObligation(obligation) {
|
|
107
|
+
requireText(obligation.conversationId);
|
|
108
|
+
requireText(obligation.recordHash);
|
|
109
|
+
}
|
|
110
|
+
function requireRecordState(database, obligation) {
|
|
111
|
+
const retained = findRecordState(database, obligation);
|
|
112
|
+
if (retained === undefined) {
|
|
113
|
+
throw new StoreSignal("not-found");
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
function findRecordState(database, obligation) {
|
|
117
|
+
switch (obligation.kind) {
|
|
118
|
+
case "action-certified-record":
|
|
119
|
+
return database
|
|
120
|
+
.prepare(`SELECT 1 AS retained FROM staged_records
|
|
121
|
+
WHERE conversation_id = ? AND record_hash = ?`)
|
|
122
|
+
.get(obligation.conversationId, obligation.recordHash);
|
|
123
|
+
case "certified-record":
|
|
124
|
+
return database
|
|
125
|
+
.prepare(`SELECT 1 AS retained FROM certified_records
|
|
126
|
+
WHERE conversation_id = ? AND record_hash = ?`)
|
|
127
|
+
.get(obligation.conversationId, obligation.recordHash);
|
|
128
|
+
default: {
|
|
129
|
+
const exhaustive = obligation.kind;
|
|
130
|
+
return exhaustive;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
function requireSameObligation(left, right) {
|
|
135
|
+
requireEqual(left.conversationId, right.conversationId);
|
|
136
|
+
requireEqual(left.recordHash, right.recordHash);
|
|
137
|
+
requireEqual(left.kind, right.kind);
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=dissemination.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dissemination.js","sourceRoot":"","sources":["../../../src/endpoint/store/dissemination.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** @file Internal store assembly behind the stable endpoint/store.ts facade. */
|
|
2
|
+
import { Effect, type Scope } from "effect";
|
|
3
|
+
import type { EndpointStore } from "./types.js";
|
|
4
|
+
import { EndpointStoreError } from "./database/index.js";
|
|
5
|
+
/** Closed endpoint-store failures without SQLite implementation details. */
|
|
6
|
+
export { EndpointStoreError };
|
|
7
|
+
/**
|
|
8
|
+
* Opens the one SQLite store owned by a daemon state directory.
|
|
9
|
+
*
|
|
10
|
+
* @param stateDirectory Exclusive persistent state directory.
|
|
11
|
+
* @returns A scoped private endpoint-store capability.
|
|
12
|
+
* @failure EndpointStoreError when the directory or database cannot be owned.
|
|
13
|
+
*/
|
|
14
|
+
export declare const openEndpointStore: (stateDirectory: string) => Effect.Effect<EndpointStore, EndpointStoreError, Scope.Scope>;
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/endpoint/store/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAEhF,OAAO,EAAE,MAAM,EAAE,KAAK,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAYhD,OAAO,EAEL,kBAAkB,EAInB,MAAM,qBAAqB,CAAC;AAyB7B,4EAA4E;AAC5E,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAE9B;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,mBACZ,MAAM,KACrB,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,kBAAkB,EAAE,KAAK,CAAC,KAAK,CAK5D,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/** @file Internal store assembly behind the stable endpoint/store.ts facade. */
|
|
2
|
+
import { Effect } from "effect";
|
|
3
|
+
import { applyCatchUpReanchor, bindIdentity, bindPostIntent, completeReanchor, lockGenesisProposal, lockProposal, putConversationFoundation, restartEmptyConversation, stageReanchor, } from "./anchors.js";
|
|
4
|
+
import { closeStoreState, EndpointStoreError, openStoreState, runStoreOperation, } from "./database/index.js";
|
|
5
|
+
import { acknowledgeDelivery, readPendingDeliveries } from "./deliveries.js";
|
|
6
|
+
import { enqueueDisseminationOutbound } from "./dissemination.js";
|
|
7
|
+
import { readStoredConversation, recoverStoredState, releaseStoredContinuation, searchStoredConversations, } from "./management.js";
|
|
8
|
+
import { beginOutbound, completeOutbound, discardOutbound, enqueueOutbound, replaceOutbound, } from "./outbound.js";
|
|
9
|
+
import { applyCatchUpRecord, mergeEvidence, promoteRecord, promoteRecordForDissemination, stageRecord, stageRecordForDissemination, } from "./records.js";
|
|
10
|
+
/** Closed endpoint-store failures without SQLite implementation details. */
|
|
11
|
+
export { EndpointStoreError };
|
|
12
|
+
/**
|
|
13
|
+
* Opens the one SQLite store owned by a daemon state directory.
|
|
14
|
+
*
|
|
15
|
+
* @param stateDirectory Exclusive persistent state directory.
|
|
16
|
+
* @returns A scoped private endpoint-store capability.
|
|
17
|
+
* @failure EndpointStoreError when the directory or database cannot be owned.
|
|
18
|
+
*/
|
|
19
|
+
export const openEndpointStore = (stateDirectory) =>
|
|
20
|
+
// eslint-disable-next-line agent-code-guard/acquire-release-requires-scope -- The returned Scope requirement binds SQLite ownership to daemon acquisition.
|
|
21
|
+
Effect.acquireRelease(openStoreState(stateDirectory), closeStoreState).pipe(Effect.map(makeEndpointStore), Effect.withSpan("openEndpointStore"));
|
|
22
|
+
function makeEndpointStore(state) {
|
|
23
|
+
const run = makeStoreRunner(state);
|
|
24
|
+
const store = {
|
|
25
|
+
...makeHistoryOperations(state, run),
|
|
26
|
+
...makeTransportOperations(state, run),
|
|
27
|
+
...makeManagementOperations(state, run),
|
|
28
|
+
};
|
|
29
|
+
return Object.freeze(store);
|
|
30
|
+
}
|
|
31
|
+
function makeStoreRunner(state) {
|
|
32
|
+
return (operation) => runStoreOperation(state, operation);
|
|
33
|
+
}
|
|
34
|
+
function makeHistoryOperations(state, run) {
|
|
35
|
+
return {
|
|
36
|
+
readIdentity: () => run(() => bindIdentity.read(state.database)),
|
|
37
|
+
bindIdentity: (binding) => run(() => bindIdentity.write(state.database, binding)),
|
|
38
|
+
bindPostIntent: (binding) => run(() => bindPostIntent(state.database, binding)),
|
|
39
|
+
putConversationFoundation: (foundation) => run(() => putConversationFoundation(state.database, foundation)),
|
|
40
|
+
lockProposal: (proposal) => run(() => lockProposal(state.database, proposal)),
|
|
41
|
+
lockGenesisProposal: (foundation, proposal) => run(() => lockGenesisProposal(state.database, foundation, proposal)),
|
|
42
|
+
stageRecord: (record) => run(() => stageRecord(state.database, record)),
|
|
43
|
+
stageRecordForDissemination: (record) => run(() => stageRecordForDissemination(state.database, record)),
|
|
44
|
+
mergeEvidence: (evidence) => run(() => mergeEvidence(state.database, evidence)),
|
|
45
|
+
promoteRecord: (record, delivery) => run(() => promoteRecord(state.database, record, delivery)),
|
|
46
|
+
promoteRecordForDissemination: (record, delivery) => run(() => promoteRecordForDissemination(state.database, record, delivery)),
|
|
47
|
+
applyCatchUpRecord: (record, delivery) => run(() => applyCatchUpRecord(state.database, record, delivery)),
|
|
48
|
+
stageReanchor: (reanchor) => run(() => stageReanchor(state.database, reanchor)),
|
|
49
|
+
completeReanchor: (reanchor) => run(() => completeReanchor(state.database, reanchor)),
|
|
50
|
+
applyCatchUpReanchor: (reanchor) => run(() => applyCatchUpReanchor(state.database, reanchor)),
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
function makeTransportOperations(state, run) {
|
|
54
|
+
return {
|
|
55
|
+
readPendingDeliveries: () => run(() => readPendingDeliveries(state.database)),
|
|
56
|
+
acknowledgeDelivery: (deliveryToken) => run(() => acknowledgeDelivery(state.database, deliveryToken)),
|
|
57
|
+
enqueueOutbound: (message) => run(() => enqueueOutbound(state.database, message)),
|
|
58
|
+
enqueueDisseminationOutbound: (obligation, message) => run(() => enqueueDisseminationOutbound(state.database, obligation, message)),
|
|
59
|
+
beginOutbound: (outboundId) => run(() => beginOutbound(state.database, outboundId)),
|
|
60
|
+
replaceOutbound: (current, replacement) => run(() => replaceOutbound(state.database, current, replacement)),
|
|
61
|
+
completeOutbound: (outbound) => run(() => completeOutbound(state.database, outbound)),
|
|
62
|
+
discardOutbound: (outbounds) => run(() => discardOutbound(state.database, outbounds)),
|
|
63
|
+
restartEmptyConversation: (restart) => run(() => restartEmptyConversation(state.database, restart)),
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
function makeManagementOperations(state, run) {
|
|
67
|
+
return {
|
|
68
|
+
searchConversations: (input = {}) => run(() => searchStoredConversations(state.database, input)),
|
|
69
|
+
readConversation: (request) => run(() => readStoredConversation(state, request)),
|
|
70
|
+
releaseContinuation: (continuation) => run(() => {
|
|
71
|
+
releaseStoredContinuation(state, continuation);
|
|
72
|
+
}),
|
|
73
|
+
recover: () => run(() => recoverStoredState(state.database)),
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/endpoint/store/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/** @file Recovery and frozen local management reads over certified history. */
|
|
2
|
+
import type { DatabaseSync } from "node:sqlite";
|
|
3
|
+
import type { ConversationPage, EndpointRecovery, HistoryPage } from "./types.js";
|
|
4
|
+
import { type StoreState } from "./database/index.js";
|
|
5
|
+
/**
|
|
6
|
+
* Lists locally certified conversation identifiers in canonical order.
|
|
7
|
+
*
|
|
8
|
+
* @param database Exclusively owned endpoint database.
|
|
9
|
+
* @param input Optional exclusive canonical lower bound.
|
|
10
|
+
* @returns At most fifty identifiers and whether more remain.
|
|
11
|
+
*/
|
|
12
|
+
export declare function searchStoredConversations(database: DatabaseSync, input: Readonly<{
|
|
13
|
+
afterConversationId?: string;
|
|
14
|
+
}>): ConversationPage;
|
|
15
|
+
/**
|
|
16
|
+
* Reads or continues one process-local frozen certified-history snapshot.
|
|
17
|
+
*
|
|
18
|
+
* @param state Acquired database and process-local snapshots.
|
|
19
|
+
* @param request New read anchor or opaque continuation.
|
|
20
|
+
* @returns At most fifty complete contiguous records.
|
|
21
|
+
*/
|
|
22
|
+
export declare function readStoredConversation(state: StoreState, request: Readonly<{
|
|
23
|
+
conversationId: string;
|
|
24
|
+
afterRecordHash?: string;
|
|
25
|
+
}> | Readonly<{
|
|
26
|
+
continuation: string;
|
|
27
|
+
}>): HistoryPage;
|
|
28
|
+
/**
|
|
29
|
+
* Releases one live continuation without changing durable state.
|
|
30
|
+
*
|
|
31
|
+
* @param state Acquired database and process-local snapshots.
|
|
32
|
+
* @param continuation Opaque process-local continuation to invalidate.
|
|
33
|
+
*/
|
|
34
|
+
export declare function releaseStoredContinuation(state: StoreState, continuation: string): void;
|
|
35
|
+
/**
|
|
36
|
+
* Recovers all durable endpoint state needed to resume protocol work.
|
|
37
|
+
*
|
|
38
|
+
* @param database Exclusively owned endpoint database.
|
|
39
|
+
* @returns A detached snapshot of all durable endpoint protocol state.
|
|
40
|
+
*/
|
|
41
|
+
export declare function recoverStoredState(database: DatabaseSync): EndpointRecovery;
|
|
42
|
+
//# sourceMappingURL=management.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"management.d.ts","sourceRoot":"","sources":["../../../src/endpoint/store/management.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAE/E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAEV,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EAIZ,MAAM,YAAY,CAAC;AACpB,OAAO,EAQL,KAAK,UAAU,EAEhB,MAAM,qBAAqB,CAAC;AA4B7B;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,YAAY,EACtB,KAAK,EAAE,QAAQ,CAAC;IAAE,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAChD,gBAAgB,CASlB;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,UAAU,EACjB,OAAO,EACH,QAAQ,CAAC;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAC9D,QAAQ,CAAC;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC,GACrC,WAAW,CAIb;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,UAAU,EACjB,YAAY,EAAE,MAAM,GACnB,IAAI,CAKN;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,YAAY,GAAG,gBAAgB,CA6C3E"}
|