@abloatai/transaction 0.57.0 → 0.58.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/CONVENTIONS.md +51 -41
- package/README.md +3 -1
- package/dist/ai-sdk/modelTools.d.ts +3 -3
- package/dist/ai-sdk/modelTools.d.ts.map +1 -1
- package/dist/ai-sdk/modelTools.js +1 -1
- package/dist/ai-sdk/modelTools.js.map +1 -1
- package/dist/ai-sdk/updateTool.d.ts +5 -7
- package/dist/ai-sdk/updateTool.d.ts.map +1 -1
- package/dist/ai-sdk/updateTool.js +3 -5
- package/dist/ai-sdk/updateTool.js.map +1 -1
- package/dist/auth/capability.d.ts +5 -0
- package/dist/auth/capability.d.ts.map +1 -1
- package/dist/auth/capability.js +5 -0
- package/dist/auth/capability.js.map +1 -1
- package/dist/auth/capabilityLifecycle.d.ts +1 -1
- package/dist/auth/capabilityLifecycle.d.ts.map +1 -1
- package/dist/auth/credentialPolicy.d.ts +1 -1
- package/dist/auth/credentialPolicy.d.ts.map +1 -1
- package/dist/auth/identity.d.ts +3 -3
- package/dist/auth/identity.d.ts.map +1 -1
- package/dist/auth/identity.js +5 -5
- package/dist/auth/identity.js.map +1 -1
- package/dist/auth/index.d.ts +4 -208
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +4 -330
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/runtime.d.ts +218 -0
- package/dist/auth/runtime.d.ts.map +1 -0
- package/dist/auth/runtime.js +336 -0
- package/dist/auth/runtime.js.map +1 -0
- package/dist/auth/sessionMint.d.ts +1 -1
- package/dist/auth/sessionMint.d.ts.map +1 -1
- package/dist/auth/sessionMint.js +2 -1
- package/dist/auth/sessionMint.js.map +1 -1
- package/dist/branches.d.ts +25 -21
- package/dist/branches.d.ts.map +1 -1
- package/dist/branches.js +3 -0
- package/dist/branches.js.map +1 -1
- package/dist/{coordination/awaitClaimGrant.d.ts → claims/awaitGrant.d.ts} +1 -1
- package/dist/claims/awaitGrant.d.ts.map +1 -0
- package/dist/{coordination/awaitClaimGrant.js → claims/awaitGrant.js} +4 -4
- package/dist/claims/awaitGrant.js.map +1 -0
- package/dist/{wire/claims.d.ts → claims/contract.d.ts} +1 -1
- package/dist/claims/contract.d.ts.map +1 -0
- package/dist/{wire/claims.js → claims/contract.js} +2 -2
- package/dist/claims/contract.js.map +1 -0
- package/dist/{wire/claimEvent.d.ts → claims/eventContract.d.ts} +1 -1
- package/dist/claims/eventContract.d.ts.map +1 -0
- package/dist/{wire/claimEvent.js → claims/eventContract.js} +1 -1
- package/dist/claims/eventContract.js.map +1 -0
- package/dist/{coordination → claims}/events.d.ts +7 -11
- package/dist/claims/events.d.ts.map +1 -0
- package/dist/claims/events.js +8 -0
- package/dist/claims/events.js.map +1 -0
- package/dist/{coordination/claimHeartbeatLoop.d.ts → claims/heartbeat.d.ts} +1 -1
- package/dist/claims/heartbeat.d.ts.map +1 -0
- package/dist/{coordination/claimHeartbeatLoop.js → claims/heartbeat.js} +1 -1
- package/dist/claims/heartbeat.js.map +1 -0
- package/dist/claims/index.d.ts +17 -0
- package/dist/claims/index.d.ts.map +1 -0
- package/dist/claims/index.js +16 -0
- package/dist/claims/index.js.map +1 -0
- package/dist/claims/lifetime.d.ts +26 -0
- package/dist/claims/lifetime.d.ts.map +1 -0
- package/dist/claims/lifetime.js +62 -0
- package/dist/claims/lifetime.js.map +1 -0
- package/dist/{coordination → claims}/locator.d.ts +1 -1
- package/dist/claims/locator.d.ts.map +1 -0
- package/dist/{coordination → claims}/locator.js +2 -2
- package/dist/claims/locator.js.map +1 -0
- package/dist/{coordination/claimMeta.d.ts → claims/meta.d.ts} +1 -1
- package/dist/claims/meta.d.ts.map +1 -0
- package/dist/{coordination/claimMeta.js → claims/meta.js} +1 -1
- package/dist/claims/meta.js.map +1 -0
- package/dist/claims/routes.d.ts +59 -0
- package/dist/claims/routes.d.ts.map +1 -0
- package/dist/claims/routes.js +69 -0
- package/dist/claims/routes.js.map +1 -0
- package/dist/claims/targetConflict.d.ts.map +1 -0
- package/dist/claims/targetConflict.js.map +1 -0
- package/dist/{coordination → claims}/trace.d.ts +2 -2
- package/dist/claims/trace.d.ts.map +1 -0
- package/dist/{coordination → claims}/trace.js +5 -5
- package/dist/claims/trace.js.map +1 -0
- package/dist/{ablo.d.ts → client/ablo.d.ts} +6 -15
- package/dist/client/ablo.d.ts.map +1 -0
- package/dist/{ablo.js → client/ablo.js} +2 -2
- package/dist/client/ablo.js.map +1 -0
- package/dist/{transactionLayer.d.ts → client/contract.d.ts} +12 -14
- package/dist/client/contract.d.ts.map +1 -0
- package/dist/{transactionLayer.js → client/contract.js} +4 -5
- package/dist/client/contract.js.map +1 -0
- package/dist/{headlessClient.d.ts → client/headless.d.ts} +4 -4
- package/dist/client/headless.d.ts.map +1 -0
- package/dist/{headlessClient.js → client/headless.js} +8 -10
- package/dist/{headlessClient.js.map → client/headless.js.map} +1 -1
- package/dist/client/index.d.ts +11 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +11 -0
- package/dist/client/index.js.map +1 -0
- package/dist/{resources → client/resources}/functionalUpdate.d.ts +4 -4
- package/dist/client/resources/functionalUpdate.d.ts.map +1 -0
- package/dist/{resources → client/resources}/functionalUpdate.js +3 -3
- package/dist/client/resources/functionalUpdate.js.map +1 -0
- package/dist/{resources → client/resources}/httpResources.d.ts +51 -57
- package/dist/client/resources/httpResources.d.ts.map +1 -0
- package/dist/{resources → client/resources}/httpResources.js +1 -1
- package/dist/client/resources/httpResources.js.map +1 -0
- package/dist/{resources → client/resources}/modelCreate.d.ts +1 -1
- package/dist/client/resources/modelCreate.d.ts.map +1 -0
- package/dist/{resources → client/resources}/modelCreate.js +1 -1
- package/dist/client/resources/modelCreate.js.map +1 -0
- package/dist/{resources → client/resources}/modelOperations.d.ts +35 -51
- package/dist/client/resources/modelOperations.d.ts.map +1 -0
- package/dist/{resources → client/resources}/modelOperations.js +1 -1
- package/dist/client/resources/modelOperations.js.map +1 -0
- package/dist/{resources → client/resources}/mutationOptions.d.ts +4 -17
- package/dist/client/resources/mutationOptions.d.ts.map +1 -0
- package/dist/client/resources/mutationOptions.js.map +1 -0
- package/dist/client/resources/where.d.ts.map +1 -0
- package/dist/{resources → client/resources}/where.js +1 -1
- package/dist/client/resources/where.js.map +1 -0
- package/dist/{resources → client/resources}/writeOptionsSchema.d.ts +2 -35
- package/dist/client/resources/writeOptionsSchema.d.ts.map +1 -0
- package/dist/{resources → client/resources}/writeOptionsSchema.js +5 -18
- package/dist/client/resources/writeOptionsSchema.js.map +1 -0
- package/dist/{transactions → commit}/confirmation/commitEnvelope.d.ts +1 -37
- package/dist/commit/confirmation/commitEnvelope.d.ts.map +1 -0
- package/dist/{transactions → commit}/confirmation/commitEnvelope.js +2 -7
- package/dist/commit/confirmation/commitEnvelope.js.map +1 -0
- package/dist/commit/confirmation/httpCommitEnvelope.d.ts.map +1 -0
- package/dist/{transactions → commit}/confirmation/httpCommitEnvelope.js +1 -1
- package/dist/commit/confirmation/httpCommitEnvelope.js.map +1 -0
- package/dist/commit/confirmation/idempotencyKey.d.ts.map +1 -0
- package/dist/commit/confirmation/idempotencyKey.js.map +1 -0
- package/dist/{transactions → commit}/confirmation/pendingWrite.d.ts +2 -33
- package/dist/commit/confirmation/pendingWrite.d.ts.map +1 -0
- package/dist/{transactions → commit}/confirmation/pendingWrite.js +1 -1
- package/dist/commit/confirmation/pendingWrite.js.map +1 -0
- package/dist/commit/contract.d.ts +1404 -0
- package/dist/commit/contract.d.ts.map +1 -0
- package/dist/{wire/commit.js → commit/contract.js} +13 -20
- package/dist/commit/contract.js.map +1 -0
- package/dist/{durableWrites.d.ts → commit/durableWrites.d.ts} +6 -6
- package/dist/commit/durableWrites.d.ts.map +1 -0
- package/dist/{durableWrites.js → commit/durableWrites.js} +5 -5
- package/dist/commit/durableWrites.js.map +1 -0
- package/dist/{transport/httpCommitRequest.d.ts → commit/httpRequest.d.ts} +6 -6
- package/dist/commit/httpRequest.d.ts.map +1 -0
- package/dist/{transport/httpCommitRequest.js → commit/httpRequest.js} +2 -3
- package/dist/commit/httpRequest.js.map +1 -0
- package/dist/commit/index.d.ts +17 -0
- package/dist/commit/index.d.ts.map +1 -0
- package/dist/commit/index.js +17 -0
- package/dist/commit/index.js.map +1 -0
- package/dist/{readSetContext.d.ts → commit/readSetContext.d.ts} +7 -15
- package/dist/commit/readSetContext.d.ts.map +1 -0
- package/dist/{readSetContext.js → commit/readSetContext.js} +10 -25
- package/dist/commit/readSetContext.js.map +1 -0
- package/dist/{commitRecordRuntime.d.ts → commit/recordRuntime.d.ts} +3 -5
- package/dist/commit/recordRuntime.d.ts.map +1 -0
- package/dist/{commitRecordRuntime.js → commit/recordRuntime.js} +13 -54
- package/dist/commit/recordRuntime.js.map +1 -0
- package/dist/coordination/index.d.ts +6 -8
- package/dist/coordination/index.d.ts.map +1 -1
- package/dist/coordination/index.js +3 -9
- package/dist/coordination/index.js.map +1 -1
- package/dist/coordination/schema.d.ts +11 -459
- package/dist/coordination/schema.d.ts.map +1 -1
- package/dist/coordination/schema.js +13 -261
- package/dist/coordination/schema.js.map +1 -1
- package/dist/errorCodes.d.ts +15 -9
- package/dist/errorCodes.d.ts.map +1 -1
- package/dist/errorCodes.js +13 -6
- package/dist/errorCodes.js.map +1 -1
- package/dist/errorObservation.d.ts +2 -2
- package/dist/errors.d.ts +3 -2
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +27 -11
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +7 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/internal/read-set.d.ts +3 -3
- package/dist/internal/read-set.d.ts.map +1 -1
- package/dist/internal/read-set.js +2 -2
- package/dist/internal/read-set.js.map +1 -1
- package/dist/observability.d.ts +4 -4
- package/dist/observability.d.ts.map +1 -1
- package/dist/observability.js +2 -2
- package/dist/{wire/delta.d.ts → observation/contract.d.ts} +8 -8
- package/dist/observation/contract.d.ts.map +1 -0
- package/dist/{wire/delta.js → observation/contract.js} +3 -3
- package/dist/observation/contract.js.map +1 -0
- package/dist/{wire/feedCursor.d.ts → observation/cursor.d.ts} +1 -1
- package/dist/observation/cursor.d.ts.map +1 -0
- package/dist/{wire/feedCursor.js → observation/cursor.js} +1 -1
- package/dist/observation/cursor.js.map +1 -0
- package/dist/{wire/deltaDelivery.d.ts → observation/deliveryContract.d.ts} +1 -1
- package/dist/observation/deliveryContract.d.ts.map +1 -0
- package/dist/{wire/deltaDelivery.js → observation/deliveryContract.js} +1 -1
- package/dist/observation/deliveryContract.js.map +1 -0
- package/dist/{wire/feedEvent.d.ts → observation/feedContract.d.ts} +10 -10
- package/dist/observation/feedContract.d.ts.map +1 -0
- package/dist/{wire/feedEvent.js → observation/feedContract.js} +4 -4
- package/dist/observation/feedContract.js.map +1 -0
- package/dist/observation/httpFeed.d.ts +4 -0
- package/dist/observation/httpFeed.d.ts.map +1 -0
- package/dist/{transport → observation}/httpFeed.js +1 -1
- package/dist/{transport → observation}/httpFeed.js.map +1 -1
- package/dist/observation/index.d.ts +13 -0
- package/dist/observation/index.d.ts.map +1 -0
- package/dist/observation/index.js +13 -0
- package/dist/observation/index.js.map +1 -0
- package/dist/{log → observation/persistence}/syncDeltaRow.d.ts +8 -8
- package/dist/observation/persistence/syncDeltaRow.d.ts.map +1 -0
- package/dist/{log → observation/persistence}/syncDeltaRow.js +4 -4
- package/dist/observation/persistence/syncDeltaRow.js.map +1 -0
- package/dist/pricing.d.ts +20 -12
- package/dist/pricing.d.ts.map +1 -1
- package/dist/pricing.js +46 -26
- package/dist/pricing.js.map +1 -1
- package/dist/schema/index.d.ts +5 -6
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +4 -7
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/model.d.ts +0 -27
- package/dist/schema/model.d.ts.map +1 -1
- package/dist/schema/model.js +0 -2
- package/dist/schema/model.js.map +1 -1
- package/dist/schema/openapi.d.ts.map +1 -1
- package/dist/schema/openapi.js +45 -6
- package/dist/schema/openapi.js.map +1 -1
- package/dist/schema/schema.d.ts +11 -3
- package/dist/schema/schema.d.ts.map +1 -1
- package/dist/schema/schema.js +9 -2
- package/dist/schema/schema.js.map +1 -1
- package/dist/schema/serialize.d.ts +1 -4
- package/dist/schema/serialize.d.ts.map +1 -1
- package/dist/schema/serialize.js +0 -4
- package/dist/schema/serialize.js.map +1 -1
- package/dist/schema/tenancy.d.ts +1 -1
- package/dist/server/adapter.d.ts +1 -1
- package/dist/server/adapter.d.ts.map +1 -1
- package/dist/server/commit.d.ts +6 -14
- package/dist/server/commit.d.ts.map +1 -1
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +1 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/storageMode.d.ts +1 -1
- package/dist/source/{adapter.d.ts → adapters/adapter.d.ts} +10 -4
- package/dist/source/adapters/adapter.d.ts.map +1 -0
- package/dist/source/adapters/adapter.js.map +1 -0
- package/dist/source/adapters/adapterFactory.d.ts.map +1 -0
- package/dist/source/{adapterFactory.js → adapters/adapterFactory.js} +1 -1
- package/dist/source/adapters/adapterFactory.js.map +1 -0
- package/dist/source/adapters/adapterProfile.d.ts.map +1 -0
- package/dist/source/adapters/adapterProfile.js.map +1 -0
- package/dist/source/{conformance.d.ts → adapters/conformance.d.ts} +1 -1
- package/dist/source/adapters/conformance.d.ts.map +1 -0
- package/dist/source/{conformance.js → adapters/conformance.js} +1 -1
- package/dist/source/adapters/conformance.js.map +1 -0
- package/dist/source/{contract.d.ts → adapters/contract.d.ts} +8 -77
- package/dist/source/adapters/contract.d.ts.map +1 -0
- package/dist/source/{contract.js → adapters/contract.js} +12 -57
- package/dist/source/adapters/contract.js.map +1 -0
- package/dist/source/adapters/drizzle.d.ts +1 -1
- package/dist/source/adapters/drizzle.d.ts.map +1 -1
- package/dist/source/adapters/drizzle.js +21 -23
- package/dist/source/adapters/drizzle.js.map +1 -1
- package/dist/source/adapters/idempotency.d.ts.map +1 -0
- package/dist/source/{idempotency.js → adapters/idempotency.js} +2 -2
- package/dist/source/adapters/idempotency.js.map +1 -0
- package/dist/source/adapters/index.d.ts +21 -0
- package/dist/source/adapters/index.d.ts.map +1 -0
- package/dist/source/adapters/index.js +21 -0
- package/dist/source/adapters/index.js.map +1 -0
- package/dist/source/adapters/kysely.d.ts +1 -1
- package/dist/source/adapters/kysely.d.ts.map +1 -1
- package/dist/source/adapters/kysely.js +18 -20
- package/dist/source/adapters/kysely.js.map +1 -1
- package/dist/source/adapters/kyselyMutationCore.d.ts +2 -2
- package/dist/source/adapters/kyselyMutationCore.d.ts.map +1 -1
- package/dist/source/adapters/kyselyMutationCore.js +1 -1
- package/dist/source/adapters/kyselyMutationCore.js.map +1 -1
- package/dist/source/adapters/memory.d.ts +3 -3
- package/dist/source/adapters/memory.d.ts.map +1 -1
- package/dist/source/adapters/memory.js +19 -7
- package/dist/source/adapters/memory.js.map +1 -1
- package/dist/source/adapters/migration.d.ts +8 -0
- package/dist/source/adapters/migration.d.ts.map +1 -0
- package/dist/source/adapters/migration.js +9 -0
- package/dist/source/adapters/migration.js.map +1 -0
- package/dist/source/{migrations.d.ts → adapters/migrations.d.ts} +3 -4
- package/dist/source/adapters/migrations.d.ts.map +1 -0
- package/dist/source/{migrations.js → adapters/migrations.js} +4 -52
- package/dist/source/adapters/migrations.js.map +1 -0
- package/dist/source/adapters/prisma.d.ts +1 -1
- package/dist/source/adapters/prisma.d.ts.map +1 -1
- package/dist/source/adapters/prisma.js +21 -28
- package/dist/source/adapters/prisma.js.map +1 -1
- package/dist/source/{subjectAuthorization.d.ts → adapters/subjectAuthorization.d.ts} +1 -1
- package/dist/source/adapters/subjectAuthorization.d.ts.map +1 -0
- package/dist/source/{subjectAuthorization.js → adapters/subjectAuthorization.js} +2 -2
- package/dist/source/adapters/subjectAuthorization.js.map +1 -0
- package/dist/source/{connector.d.ts → connector/client.d.ts} +6 -1
- package/dist/source/connector/client.d.ts.map +1 -0
- package/dist/source/{connector.js → connector/client.js} +28 -11
- package/dist/source/connector/client.js.map +1 -0
- package/dist/source/connector/index.d.ts +4 -0
- package/dist/source/connector/index.d.ts.map +1 -0
- package/dist/source/connector/index.js +4 -0
- package/dist/source/connector/index.js.map +1 -0
- package/dist/source/{connectorProtocol.d.ts → connector/protocol.d.ts} +8 -1
- package/dist/source/connector/protocol.d.ts.map +1 -0
- package/dist/source/{connectorProtocol.js → connector/protocol.js} +10 -3
- package/dist/source/connector/protocol.js.map +1 -0
- package/dist/source/delivery/index.d.ts +3 -0
- package/dist/source/delivery/index.d.ts.map +1 -0
- package/dist/source/delivery/index.js +3 -0
- package/dist/source/delivery/index.js.map +1 -0
- package/dist/source/{pushQueue.d.ts → delivery/pushQueue.d.ts} +1 -1
- package/dist/source/delivery/pushQueue.d.ts.map +1 -0
- package/dist/source/{pushQueue.js → delivery/pushQueue.js} +1 -1
- package/dist/source/delivery/pushQueue.js.map +1 -0
- package/dist/source/{factory.d.ts → endpoint/factory.d.ts} +3 -3
- package/dist/source/endpoint/factory.d.ts.map +1 -0
- package/dist/source/{factory.js → endpoint/factory.js} +9 -4
- package/dist/source/endpoint/factory.js.map +1 -0
- package/dist/source/endpoint/index.d.ts +5 -0
- package/dist/source/endpoint/index.d.ts.map +1 -0
- package/dist/source/endpoint/index.js +5 -0
- package/dist/source/endpoint/index.js.map +1 -0
- package/dist/source/{next.d.ts → endpoint/next.d.ts} +2 -2
- package/dist/source/endpoint/next.d.ts.map +1 -0
- package/dist/source/{next.js → endpoint/next.js} +1 -1
- package/dist/source/endpoint/next.js.map +1 -0
- package/dist/source/{signing.d.ts → endpoint/signing.d.ts} +1 -1
- package/dist/source/endpoint/signing.d.ts.map +1 -0
- package/dist/source/{signing.js → endpoint/signing.js} +1 -1
- package/dist/source/endpoint/signing.js.map +1 -0
- package/dist/source/index.d.ts +14 -12
- package/dist/source/index.d.ts.map +1 -1
- package/dist/source/index.js +13 -11
- package/dist/source/index.js.map +1 -1
- package/dist/source/outbox/contract.d.ts +50 -0
- package/dist/source/outbox/contract.d.ts.map +1 -0
- package/dist/source/outbox/contract.js +50 -0
- package/dist/source/outbox/contract.js.map +1 -0
- package/dist/source/outbox/envelope.d.ts +9 -0
- package/dist/source/outbox/envelope.d.ts.map +1 -0
- package/dist/source/outbox/envelope.js +36 -0
- package/dist/source/outbox/envelope.js.map +1 -0
- package/dist/source/outbox/index.d.ts +11 -0
- package/dist/source/outbox/index.d.ts.map +1 -0
- package/dist/source/outbox/index.js +11 -0
- package/dist/source/outbox/index.js.map +1 -0
- package/dist/source/outbox/migrations.d.ts +4 -0
- package/dist/source/outbox/migrations.d.ts.map +1 -0
- package/dist/source/outbox/migrations.js +67 -0
- package/dist/source/outbox/migrations.js.map +1 -0
- package/dist/source/outbox/retention.d.ts +3 -0
- package/dist/source/outbox/retention.d.ts.map +1 -0
- package/dist/source/outbox/retention.js +3 -0
- package/dist/source/outbox/retention.js.map +1 -0
- package/dist/source/types.d.ts +16 -17
- package/dist/source/types.d.ts.map +1 -1
- package/dist/source/types.js +1 -0
- package/dist/source/types.js.map +1 -1
- package/dist/syncLog/contract.d.ts +19 -2
- package/dist/syncLog/contract.d.ts.map +1 -1
- package/dist/syncLog/contract.js +19 -2
- package/dist/syncLog/contract.js.map +1 -1
- package/dist/transport/{credentialLifecycle.d.ts → connection/credentialLifecycle.d.ts} +3 -3
- package/dist/transport/connection/credentialLifecycle.d.ts.map +1 -0
- package/dist/transport/{credentialLifecycle.js → connection/credentialLifecycle.js} +2 -2
- package/dist/transport/connection/credentialLifecycle.js.map +1 -0
- package/dist/transport/connection/index.d.ts +5 -0
- package/dist/transport/connection/index.d.ts.map +1 -0
- package/dist/transport/connection/index.js +5 -0
- package/dist/transport/connection/index.js.map +1 -0
- package/dist/transport/{connectionManager.d.ts → connection/manager.d.ts} +13 -5
- package/dist/transport/connection/manager.d.ts.map +1 -0
- package/dist/transport/{connectionManager.js → connection/manager.js} +6 -4
- package/dist/transport/connection/manager.js.map +1 -0
- package/dist/transport/{networkProbe.d.ts → connection/networkProbe.d.ts} +2 -2
- package/dist/transport/connection/networkProbe.d.ts.map +1 -0
- package/dist/transport/{networkProbe.js → connection/networkProbe.js} +4 -4
- package/dist/transport/connection/networkProbe.js.map +1 -0
- package/dist/transport/{httpClient.d.ts → http/client.d.ts} +26 -45
- package/dist/transport/http/client.d.ts.map +1 -0
- package/dist/transport/{httpClient.js → http/client.js} +84 -124
- package/dist/transport/http/client.js.map +1 -0
- package/dist/transport/{httpTransportHelpers.d.ts → http/helpers.d.ts} +5 -5
- package/dist/transport/http/helpers.d.ts.map +1 -0
- package/dist/transport/{httpTransportHelpers.js → http/helpers.js} +5 -5
- package/dist/transport/http/helpers.js.map +1 -0
- package/dist/transport/http/index.d.ts +6 -0
- package/dist/transport/http/index.d.ts.map +1 -0
- package/dist/transport/http/index.js +6 -0
- package/dist/transport/http/index.js.map +1 -0
- package/dist/transport/{httpOptions.d.ts → http/options.d.ts} +7 -7
- package/dist/transport/{httpOptions.d.ts.map → http/options.d.ts.map} +1 -1
- package/dist/transport/{httpOptions.js → http/options.js} +1 -1
- package/dist/transport/http/options.js.map +1 -0
- package/dist/transport/http/subscription.d.ts +16 -0
- package/dist/transport/http/subscription.d.ts.map +1 -0
- package/dist/transport/http/subscription.js +146 -0
- package/dist/transport/http/subscription.js.map +1 -0
- package/dist/transport/{httpTransport.d.ts → http/transport.d.ts} +9 -6
- package/dist/transport/http/transport.d.ts.map +1 -0
- package/dist/transport/{httpTransport.js → http/transport.js} +95 -93
- package/dist/transport/http/transport.js.map +1 -0
- package/dist/transport/index.d.ts +8 -0
- package/dist/transport/index.d.ts.map +1 -0
- package/dist/transport/index.js +8 -0
- package/dist/transport/index.js.map +1 -0
- package/dist/transport/{commitFrames.d.ts → websocket/commitFrames.d.ts} +8 -20
- package/dist/transport/websocket/commitFrames.d.ts.map +1 -0
- package/dist/transport/{commitFrames.js → websocket/commitFrames.js} +6 -25
- package/dist/transport/websocket/commitFrames.js.map +1 -0
- package/dist/transport/{wsFrameHandlers.d.ts → websocket/frameHandlers.d.ts} +5 -5
- package/dist/transport/websocket/frameHandlers.d.ts.map +1 -0
- package/dist/transport/{wsFrameHandlers.js → websocket/frameHandlers.js} +10 -51
- package/dist/transport/websocket/frameHandlers.js.map +1 -0
- package/dist/transport/{heartbeat.d.ts → websocket/heartbeat.d.ts} +1 -1
- package/dist/transport/websocket/heartbeat.d.ts.map +1 -0
- package/dist/transport/{heartbeat.js → websocket/heartbeat.js} +2 -2
- package/dist/transport/websocket/heartbeat.js.map +1 -0
- package/dist/transport/websocket/index.d.ts +6 -0
- package/dist/transport/websocket/index.d.ts.map +1 -0
- package/dist/transport/websocket/index.js +6 -0
- package/dist/transport/websocket/index.js.map +1 -0
- package/dist/transport/{wsTransport.d.ts → websocket/transport.d.ts} +13 -25
- package/dist/transport/websocket/transport.d.ts.map +1 -0
- package/dist/transport/{wsTransport.js → websocket/transport.js} +14 -14
- package/dist/transport/websocket/transport.js.map +1 -0
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/streams.d.ts +8 -48
- package/dist/types/streams.d.ts.map +1 -1
- package/dist/types/streams.js +2 -2
- package/dist/wire/accountResponses.d.ts +4 -72
- package/dist/wire/accountResponses.d.ts.map +1 -1
- package/dist/wire/accountResponses.js +2 -10
- package/dist/wire/accountResponses.js.map +1 -1
- package/dist/wire/frames.d.ts +6 -83
- package/dist/wire/frames.d.ts.map +1 -1
- package/dist/wire/frames.js +4 -11
- package/dist/wire/frames.js.map +1 -1
- package/dist/wire/inboundFrames.d.ts +6 -131
- package/dist/wire/inboundFrames.d.ts.map +1 -1
- package/dist/wire/inboundFrames.js +3 -3
- package/dist/wire/inboundFrames.js.map +1 -1
- package/dist/wire/index.d.ts +17 -15
- package/dist/wire/index.d.ts.map +1 -1
- package/dist/wire/index.js +11 -8
- package/dist/wire/index.js.map +1 -1
- package/dist/wire/modelMutations.d.ts +1 -32
- package/dist/wire/modelMutations.d.ts.map +1 -1
- package/dist/wire/modelMutations.js +1 -8
- package/dist/wire/modelMutations.js.map +1 -1
- package/package.json +130 -10
- package/src/ai-sdk/modelTools.ts +5 -5
- package/src/ai-sdk/updateTool.ts +5 -7
- package/src/auth/capability.ts +5 -0
- package/src/auth/capabilityLifecycle.ts +1 -1
- package/src/auth/credentialPolicy.ts +1 -1
- package/src/auth/identity.ts +7 -7
- package/src/auth/index.ts +4 -663
- package/src/auth/runtime.ts +669 -0
- package/src/auth/sessionMint.ts +3 -2
- package/src/branches.ts +3 -0
- package/src/{coordination/awaitClaimGrant.ts → claims/awaitGrant.ts} +4 -4
- package/src/{wire/claims.ts → claims/contract.ts} +1 -1
- package/src/{coordination → claims}/events.ts +7 -11
- package/src/claims/index.ts +21 -0
- package/src/claims/lifetime.ts +78 -0
- package/src/{coordination → claims}/locator.ts +3 -3
- package/src/claims/routes.ts +81 -0
- package/src/{coordination → claims}/trace.ts +5 -5
- package/src/{ablo.ts → client/ablo.ts} +8 -20
- package/src/{transactionLayer.ts → client/contract.ts} +11 -13
- package/src/{headlessClient.ts → client/headless.ts} +13 -15
- package/src/client/index.ts +10 -0
- package/src/{resources → client/resources}/functionalUpdate.ts +4 -4
- package/src/{resources → client/resources}/httpResources.ts +48 -68
- package/src/{resources → client/resources}/modelCreate.ts +2 -2
- package/src/{resources → client/resources}/modelOperations.ts +46 -55
- package/src/{resources → client/resources}/mutationOptions.ts +4 -17
- package/src/{resources → client/resources}/where.ts +1 -1
- package/src/{resources → client/resources}/writeOptionsSchema.ts +7 -27
- package/src/{transactions → commit}/confirmation/commitEnvelope.ts +2 -12
- package/src/{transactions → commit}/confirmation/httpCommitEnvelope.ts +1 -1
- package/src/{transactions → commit}/confirmation/pendingWrite.ts +1 -1
- package/src/{wire/commit.ts → commit/contract.ts} +11 -25
- package/src/{durableWrites.ts → commit/durableWrites.ts} +7 -7
- package/src/{transport/httpCommitRequest.ts → commit/httpRequest.ts} +6 -7
- package/src/commit/index.ts +16 -0
- package/src/{readSetContext.ts → commit/readSetContext.ts} +16 -41
- package/src/{commitRecordRuntime.ts → commit/recordRuntime.ts} +12 -67
- package/src/coordination/index.ts +4 -52
- package/src/coordination/schema.ts +15 -302
- package/src/errorCodes.ts +56 -10
- package/src/errors.ts +32 -10
- package/src/index.ts +8 -8
- package/src/internal/read-set.ts +3 -6
- package/src/observability.ts +4 -4
- package/src/{wire/delta.ts → observation/contract.ts} +2 -2
- package/src/{wire/feedEvent.ts → observation/feedContract.ts} +3 -4
- package/src/{transport → observation}/httpFeed.ts +3 -3
- package/src/observation/index.ts +12 -0
- package/src/{log → observation/persistence}/syncDeltaRow.ts +6 -7
- package/src/pricing.ts +46 -25
- package/src/schema/index.ts +4 -20
- package/src/schema/model.ts +0 -33
- package/src/schema/openapi.ts +47 -7
- package/src/schema/schema.ts +23 -3
- package/src/schema/serialize.ts +0 -8
- package/src/server/adapter.ts +1 -1
- package/src/server/commit.ts +6 -14
- package/src/server/index.ts +1 -1
- package/src/source/{adapter.ts → adapters/adapter.ts} +9 -5
- package/src/source/{adapterFactory.ts → adapters/adapterFactory.ts} +1 -1
- package/src/source/{conformance.ts → adapters/conformance.ts} +1 -1
- package/src/source/{contract.ts → adapters/contract.ts} +16 -64
- package/src/source/adapters/drizzle.ts +29 -27
- package/src/source/{idempotency.ts → adapters/idempotency.ts} +2 -2
- package/src/source/adapters/index.ts +20 -0
- package/src/source/adapters/kysely.ts +32 -25
- package/src/source/adapters/kyselyMutationCore.ts +3 -3
- package/src/source/adapters/memory.ts +25 -9
- package/src/source/adapters/migration.ts +11 -0
- package/src/source/{migrations.ts → adapters/migrations.ts} +6 -54
- package/src/source/adapters/prisma.ts +33 -32
- package/src/source/{subjectAuthorization.ts → adapters/subjectAuthorization.ts} +2 -2
- package/src/source/{connector.ts → connector/client.ts} +35 -12
- package/src/source/connector/index.ts +3 -0
- package/src/source/{connectorProtocol.ts → connector/protocol.ts} +10 -2
- package/src/source/delivery/index.ts +2 -0
- package/src/source/{pushQueue.ts → delivery/pushQueue.ts} +2 -2
- package/src/source/{factory.ts → endpoint/factory.ts} +13 -8
- package/src/source/endpoint/index.ts +4 -0
- package/src/source/{next.ts → endpoint/next.ts} +2 -2
- package/src/source/{signing.ts → endpoint/signing.ts} +1 -1
- package/src/source/index.ts +22 -19
- package/src/source/outbox/contract.ts +56 -0
- package/src/source/outbox/envelope.ts +47 -0
- package/src/source/outbox/index.ts +15 -0
- package/src/source/outbox/migrations.ts +71 -0
- package/src/source/outbox/retention.ts +2 -0
- package/src/source/types.ts +17 -17
- package/src/syncLog/contract.ts +19 -2
- package/src/transport/{credentialLifecycle.ts → connection/credentialLifecycle.ts} +3 -3
- package/src/transport/connection/index.ts +4 -0
- package/src/transport/{connectionManager.ts → connection/manager.ts} +13 -4
- package/src/transport/{networkProbe.ts → connection/networkProbe.ts} +4 -4
- package/src/transport/{httpClient.ts → http/client.ts} +128 -209
- package/src/transport/{httpTransportHelpers.ts → http/helpers.ts} +7 -7
- package/src/transport/http/index.ts +5 -0
- package/src/transport/{httpOptions.ts → http/options.ts} +6 -6
- package/src/transport/http/subscription.ts +174 -0
- package/src/transport/{httpTransport.ts → http/transport.ts} +127 -113
- package/src/transport/index.ts +7 -0
- package/src/transport/{commitFrames.ts → websocket/commitFrames.ts} +14 -46
- package/src/transport/{wsFrameHandlers.ts → websocket/frameHandlers.ts} +11 -54
- package/src/transport/{heartbeat.ts → websocket/heartbeat.ts} +2 -2
- package/src/transport/websocket/index.ts +5 -0
- package/src/transport/{wsTransport.ts → websocket/transport.ts} +16 -30
- package/src/types/index.ts +2 -6
- package/src/types/streams.ts +7 -61
- package/src/webhooks/events.ts +1 -1
- package/src/wire/accountResponses.ts +3 -12
- package/src/wire/frames.ts +5 -15
- package/src/wire/inboundFrames.ts +3 -3
- package/src/wire/index.ts +19 -15
- package/src/wire/modelMutations.ts +1 -14
- package/dist/ablo.d.ts.map +0 -1
- package/dist/ablo.js.map +0 -1
- package/dist/commitRecordRuntime.d.ts.map +0 -1
- package/dist/commitRecordRuntime.js.map +0 -1
- package/dist/coordination/awaitClaimGrant.d.ts.map +0 -1
- package/dist/coordination/awaitClaimGrant.js.map +0 -1
- package/dist/coordination/claimHeartbeatLoop.d.ts.map +0 -1
- package/dist/coordination/claimHeartbeatLoop.js.map +0 -1
- package/dist/coordination/claimMeta.d.ts.map +0 -1
- package/dist/coordination/claimMeta.js.map +0 -1
- package/dist/coordination/events.d.ts.map +0 -1
- package/dist/coordination/events.js +0 -8
- package/dist/coordination/events.js.map +0 -1
- package/dist/coordination/locator.d.ts.map +0 -1
- package/dist/coordination/locator.js.map +0 -1
- package/dist/coordination/targetConflict.d.ts.map +0 -1
- package/dist/coordination/targetConflict.js.map +0 -1
- package/dist/coordination/trace.d.ts.map +0 -1
- package/dist/coordination/trace.js.map +0 -1
- package/dist/durableWrites.d.ts.map +0 -1
- package/dist/durableWrites.js.map +0 -1
- package/dist/headlessClient.d.ts.map +0 -1
- package/dist/log/syncDeltaRow.d.ts.map +0 -1
- package/dist/log/syncDeltaRow.js.map +0 -1
- package/dist/policy/types.d.ts +0 -226
- package/dist/policy/types.d.ts.map +0 -1
- package/dist/policy/types.js +0 -127
- package/dist/policy/types.js.map +0 -1
- package/dist/readSetContext.d.ts.map +0 -1
- package/dist/readSetContext.js.map +0 -1
- package/dist/resources/functionalUpdate.d.ts.map +0 -1
- package/dist/resources/functionalUpdate.js.map +0 -1
- package/dist/resources/httpResources.d.ts.map +0 -1
- package/dist/resources/httpResources.js.map +0 -1
- package/dist/resources/modelCreate.d.ts.map +0 -1
- package/dist/resources/modelCreate.js.map +0 -1
- package/dist/resources/modelOperations.d.ts.map +0 -1
- package/dist/resources/modelOperations.js.map +0 -1
- package/dist/resources/mutationOptions.d.ts.map +0 -1
- package/dist/resources/mutationOptions.js.map +0 -1
- package/dist/resources/where.d.ts.map +0 -1
- package/dist/resources/where.js.map +0 -1
- package/dist/resources/writeOptionsSchema.d.ts.map +0 -1
- package/dist/resources/writeOptionsSchema.js.map +0 -1
- package/dist/schema/coordination.d.ts +0 -113
- package/dist/schema/coordination.d.ts.map +0 -1
- package/dist/schema/coordination.js +0 -134
- package/dist/schema/coordination.js.map +0 -1
- package/dist/source/adapter.d.ts.map +0 -1
- package/dist/source/adapter.js.map +0 -1
- package/dist/source/adapterFactory.d.ts.map +0 -1
- package/dist/source/adapterFactory.js.map +0 -1
- package/dist/source/adapterProfile.d.ts.map +0 -1
- package/dist/source/adapterProfile.js.map +0 -1
- package/dist/source/conformance.d.ts.map +0 -1
- package/dist/source/conformance.js.map +0 -1
- package/dist/source/connector.d.ts.map +0 -1
- package/dist/source/connector.js.map +0 -1
- package/dist/source/connectorProtocol.d.ts.map +0 -1
- package/dist/source/connectorProtocol.js.map +0 -1
- package/dist/source/contract.d.ts.map +0 -1
- package/dist/source/contract.js.map +0 -1
- package/dist/source/drizzle.d.ts +0 -2
- package/dist/source/drizzle.d.ts.map +0 -1
- package/dist/source/drizzle.js +0 -2
- package/dist/source/drizzle.js.map +0 -1
- package/dist/source/factory.d.ts.map +0 -1
- package/dist/source/factory.js.map +0 -1
- package/dist/source/idempotency.d.ts.map +0 -1
- package/dist/source/idempotency.js.map +0 -1
- package/dist/source/kysely.d.ts +0 -3
- package/dist/source/kysely.d.ts.map +0 -1
- package/dist/source/kysely.js +0 -3
- package/dist/source/kysely.js.map +0 -1
- package/dist/source/migrations.d.ts.map +0 -1
- package/dist/source/migrations.js.map +0 -1
- package/dist/source/next.d.ts.map +0 -1
- package/dist/source/next.js.map +0 -1
- package/dist/source/pushQueue.d.ts.map +0 -1
- package/dist/source/pushQueue.js.map +0 -1
- package/dist/source/signing.d.ts.map +0 -1
- package/dist/source/signing.js.map +0 -1
- package/dist/source/subjectAuthorization.d.ts.map +0 -1
- package/dist/source/subjectAuthorization.js.map +0 -1
- package/dist/transactionLayer.d.ts.map +0 -1
- package/dist/transactionLayer.js.map +0 -1
- package/dist/transactions/confirmation/commitEnvelope.d.ts.map +0 -1
- package/dist/transactions/confirmation/commitEnvelope.js.map +0 -1
- package/dist/transactions/confirmation/httpCommitEnvelope.d.ts.map +0 -1
- package/dist/transactions/confirmation/httpCommitEnvelope.js.map +0 -1
- package/dist/transactions/confirmation/idempotencyKey.d.ts.map +0 -1
- package/dist/transactions/confirmation/idempotencyKey.js.map +0 -1
- package/dist/transactions/confirmation/pendingWrite.d.ts.map +0 -1
- package/dist/transactions/confirmation/pendingWrite.js.map +0 -1
- package/dist/transport/commitFrames.d.ts.map +0 -1
- package/dist/transport/commitFrames.js.map +0 -1
- package/dist/transport/connectionManager.d.ts.map +0 -1
- package/dist/transport/connectionManager.js.map +0 -1
- package/dist/transport/credentialLifecycle.d.ts.map +0 -1
- package/dist/transport/credentialLifecycle.js.map +0 -1
- package/dist/transport/heartbeat.d.ts.map +0 -1
- package/dist/transport/heartbeat.js.map +0 -1
- package/dist/transport/httpClient.d.ts.map +0 -1
- package/dist/transport/httpClient.js.map +0 -1
- package/dist/transport/httpCommitRequest.d.ts.map +0 -1
- package/dist/transport/httpCommitRequest.js.map +0 -1
- package/dist/transport/httpFeed.d.ts +0 -4
- package/dist/transport/httpFeed.d.ts.map +0 -1
- package/dist/transport/httpOptions.js.map +0 -1
- package/dist/transport/httpTransport.d.ts.map +0 -1
- package/dist/transport/httpTransport.js.map +0 -1
- package/dist/transport/httpTransportHelpers.d.ts.map +0 -1
- package/dist/transport/httpTransportHelpers.js.map +0 -1
- package/dist/transport/networkProbe.d.ts.map +0 -1
- package/dist/transport/networkProbe.js.map +0 -1
- package/dist/transport/wsFrameHandlers.d.ts.map +0 -1
- package/dist/transport/wsFrameHandlers.js.map +0 -1
- package/dist/transport/wsTransport.d.ts.map +0 -1
- package/dist/transport/wsTransport.js.map +0 -1
- package/dist/wire/claimEvent.d.ts.map +0 -1
- package/dist/wire/claimEvent.js.map +0 -1
- package/dist/wire/claims.d.ts.map +0 -1
- package/dist/wire/claims.js.map +0 -1
- package/dist/wire/commit.d.ts +0 -2866
- package/dist/wire/commit.d.ts.map +0 -1
- package/dist/wire/commit.js.map +0 -1
- package/dist/wire/delta.d.ts.map +0 -1
- package/dist/wire/delta.js.map +0 -1
- package/dist/wire/deltaDelivery.d.ts.map +0 -1
- package/dist/wire/deltaDelivery.js.map +0 -1
- package/dist/wire/feedCursor.d.ts.map +0 -1
- package/dist/wire/feedCursor.js.map +0 -1
- package/dist/wire/feedEvent.d.ts.map +0 -1
- package/dist/wire/feedEvent.js.map +0 -1
- package/src/policy/types.ts +0 -300
- package/src/schema/coordination.ts +0 -161
- package/src/source/drizzle.ts +0 -1
- package/src/source/kysely.ts +0 -2
- /package/dist/{coordination → claims}/targetConflict.d.ts +0 -0
- /package/dist/{coordination → claims}/targetConflict.js +0 -0
- /package/dist/{resources → client/resources}/mutationOptions.js +0 -0
- /package/dist/{resources → client/resources}/where.d.ts +0 -0
- /package/dist/{transactions → commit}/confirmation/httpCommitEnvelope.d.ts +0 -0
- /package/dist/{transactions → commit}/confirmation/idempotencyKey.d.ts +0 -0
- /package/dist/{transactions → commit}/confirmation/idempotencyKey.js +0 -0
- /package/dist/source/{adapter.js → adapters/adapter.js} +0 -0
- /package/dist/source/{adapterFactory.d.ts → adapters/adapterFactory.d.ts} +0 -0
- /package/dist/source/{adapterProfile.d.ts → adapters/adapterProfile.d.ts} +0 -0
- /package/dist/source/{adapterProfile.js → adapters/adapterProfile.js} +0 -0
- /package/dist/source/{idempotency.d.ts → adapters/idempotency.d.ts} +0 -0
- /package/src/{wire/claimEvent.ts → claims/eventContract.ts} +0 -0
- /package/src/{coordination/claimHeartbeatLoop.ts → claims/heartbeat.ts} +0 -0
- /package/src/{coordination/claimMeta.ts → claims/meta.ts} +0 -0
- /package/src/{coordination → claims}/targetConflict.ts +0 -0
- /package/src/{transactions → commit}/confirmation/idempotencyKey.ts +0 -0
- /package/src/{wire/feedCursor.ts → observation/cursor.ts} +0 -0
- /package/src/{wire/deltaDelivery.ts → observation/deliveryContract.ts} +0 -0
- /package/src/source/{adapterProfile.ts → adapters/adapterProfile.ts} +0 -0
|
@@ -20,15 +20,8 @@
|
|
|
20
20
|
import { z } from 'zod';
|
|
21
21
|
import { logPositionSchema } from '../syncLog/contract.js';
|
|
22
22
|
import {
|
|
23
|
-
onStaleModeSchema,
|
|
24
|
-
MAX_READ_SET_ENTRIES,
|
|
25
23
|
readDependencyListSchema,
|
|
26
|
-
readSetRowTargetSchema,
|
|
27
|
-
readSetProjectionEntryCount,
|
|
28
|
-
readSetSchema,
|
|
29
24
|
participantKindSchema,
|
|
30
|
-
staleNotificationSchema,
|
|
31
|
-
trackDependencyListSchema,
|
|
32
25
|
} from '../coordination/schema.js';
|
|
33
26
|
import type { ErrorCode } from '../errorCodes.js';
|
|
34
27
|
import { requiredCapabilityWireSchema } from '../errors.js';
|
|
@@ -100,7 +93,6 @@ export const commitWaitSchema = z.union([queuedStatusSchema, confirmedStatusSche
|
|
|
100
93
|
export type CommitWait = z.infer<typeof commitWaitSchema>;
|
|
101
94
|
|
|
102
95
|
const missingIdsSchema = z.array(z.string().min(1));
|
|
103
|
-
const notificationsSchema = z.array(staleNotificationSchema);
|
|
104
96
|
|
|
105
97
|
export const commitOperationOutcomeSchema = z.enum([
|
|
106
98
|
'created',
|
|
@@ -143,7 +135,12 @@ export type CommitAttempt = z.infer<typeof commitAttemptSchema>;
|
|
|
143
135
|
|
|
144
136
|
export const commitClaimReferenceSchema = z.strictObject({
|
|
145
137
|
id: z.string().min(1),
|
|
146
|
-
target:
|
|
138
|
+
target: z.strictObject({
|
|
139
|
+
scope: z.literal('row'),
|
|
140
|
+
model: z.string(),
|
|
141
|
+
id: z.string(),
|
|
142
|
+
fields: z.array(z.string()).readonly().optional(),
|
|
143
|
+
}),
|
|
147
144
|
fenceToken: z.number().int().nonnegative(),
|
|
148
145
|
});
|
|
149
146
|
export type CommitClaimReference = z.infer<typeof commitClaimReferenceSchema>;
|
|
@@ -178,7 +175,6 @@ const successfulReceiptCommonShape = {
|
|
|
178
175
|
success: z.literal(true),
|
|
179
176
|
ops: z.number().int().nonnegative(),
|
|
180
177
|
authority: effectiveAuthoritySchema,
|
|
181
|
-
notifications: notificationsSchema.optional(),
|
|
182
178
|
missingIds: missingIdsSchema.optional(),
|
|
183
179
|
/** Exact rows returned by the writing transaction; absent on durable replay. */
|
|
184
180
|
operationResults: operationResultsSchema.optional(),
|
|
@@ -266,7 +262,6 @@ const executionEvidenceShape = {
|
|
|
266
262
|
firstSyncId: z.number().int().nonnegative(),
|
|
267
263
|
createdAt: commitTimestampSchema,
|
|
268
264
|
confirmationTransactionIds: confirmationTransactionIdsSchema.optional(),
|
|
269
|
-
notifications: notificationsSchema.optional(),
|
|
270
265
|
missingIds: missingIdsSchema.optional(),
|
|
271
266
|
} as const;
|
|
272
267
|
|
|
@@ -341,7 +336,6 @@ export type CommitExecutionResultInput = z.input<typeof commitExecutionResultSch
|
|
|
341
336
|
export type CommitExecutionResult = z.infer<typeof commitExecutionResultSchema>;
|
|
342
337
|
|
|
343
338
|
const ackCommonShape = {
|
|
344
|
-
notifications: notificationsSchema.optional(),
|
|
345
339
|
missingIds: missingIdsSchema.optional(),
|
|
346
340
|
operationResults: operationResultsSchema.optional(),
|
|
347
341
|
} as const;
|
|
@@ -376,7 +370,6 @@ export const clientCommitReceiptSchema = z.strictObject({
|
|
|
376
370
|
id: z.string().min(1),
|
|
377
371
|
status: z.union([queuedStatusSchema, confirmedStatusSchema]),
|
|
378
372
|
lastSyncId: logPositionSchema.optional(),
|
|
379
|
-
notifications: notificationsSchema.optional(),
|
|
380
373
|
missingIds: missingIdsSchema.optional(),
|
|
381
374
|
operationResults: operationResultsSchema.optional(),
|
|
382
375
|
});
|
|
@@ -401,7 +394,6 @@ export const commitOperationControlShape = {
|
|
|
401
394
|
transactionId: z.string().nullish(),
|
|
402
395
|
claimId: z.string().min(1).nullish(),
|
|
403
396
|
readAt: logPositionSchema.nullish(),
|
|
404
|
-
onStale: onStaleModeSchema.nullish(),
|
|
405
397
|
fenceToken: z.number().nullish(),
|
|
406
398
|
};
|
|
407
399
|
|
|
@@ -442,7 +434,6 @@ export const commitReceiptEvidenceSchema = z.strictObject({
|
|
|
442
434
|
clientTxId: z.string().min(1),
|
|
443
435
|
serverTxId: z.string(),
|
|
444
436
|
ops: z.number().int().nonnegative().optional(),
|
|
445
|
-
notifications: notificationsSchema.optional(),
|
|
446
437
|
missingIds: missingIdsSchema.optional(),
|
|
447
438
|
error: commitErrorSchema.optional(),
|
|
448
439
|
});
|
|
@@ -451,18 +442,13 @@ export type CommitReceiptEvidence = z.infer<typeof commitReceiptEvidenceSchema>;
|
|
|
451
442
|
/**
|
|
452
443
|
* The `POST /v1/commits` request body.
|
|
453
444
|
*
|
|
454
|
-
* `operations` carries the writes
|
|
455
|
-
*
|
|
456
|
-
* `
|
|
457
|
-
* Request identity travels in the `Idempotency-Key` header.
|
|
445
|
+
* `operations` carries the writes and `reads` carries the compact row evidence
|
|
446
|
+
* those writes were based on. Request identity travels in the
|
|
447
|
+
* `Idempotency-Key` header.
|
|
458
448
|
*/
|
|
459
449
|
export const commitRequestSchema = z.strictObject({
|
|
460
|
-
operations: z.array(commitOperationBodySchema).min(1)
|
|
450
|
+
operations: z.array(commitOperationBodySchema).min(1),
|
|
461
451
|
reads: readDependencyListSchema.nullish(),
|
|
462
|
-
track: trackDependencyListSchema.nullish(),
|
|
463
|
-
}).refine((value) => readSetProjectionEntryCount(value) <= MAX_READ_SET_ENTRIES, {
|
|
464
|
-
path: ['reads'],
|
|
465
|
-
message: `reads and track may contain at most ${MAX_READ_SET_ENTRIES} entries combined`,
|
|
466
452
|
});
|
|
467
453
|
export type CommitRequest = z.infer<typeof commitRequestSchema>;
|
|
468
454
|
|
|
@@ -474,7 +460,7 @@ const commitRecordEvidenceShape = {
|
|
|
474
460
|
id: z.string().min(1),
|
|
475
461
|
...commitEvidenceShape,
|
|
476
462
|
createdAt: commitTimestampSchema,
|
|
477
|
-
|
|
463
|
+
reads: readDependencyListSchema.readonly(),
|
|
478
464
|
operations: z.array(commitRecordOperationSchema).readonly(),
|
|
479
465
|
receipt: commitReceiptEvidenceSchema,
|
|
480
466
|
} as const;
|
|
@@ -2,18 +2,18 @@
|
|
|
2
2
|
* The durable-write port and the option that installs it.
|
|
3
3
|
*
|
|
4
4
|
* Owns the persistence contract behind `Ablo({ durableWrites })` — a behavior
|
|
5
|
-
* contract of methods, not a serialized shape, which is why it lives
|
|
6
|
-
* rather than
|
|
7
|
-
* are owned by `
|
|
5
|
+
* contract of methods, not a serialized shape, which is why it lives beside
|
|
6
|
+
* rather than inside `confirmation/`. The records that cross this port
|
|
7
|
+
* are owned by `confirmation/pendingWrite.ts`; this module never redescribes them.
|
|
8
8
|
*
|
|
9
9
|
* The engine consumes the port through `commitOutboxStore`, and the HTTP client
|
|
10
|
-
* accepts the same option through `transport/
|
|
10
|
+
* accepts the same option through `transport/http/options`.
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
13
|
import { z } from 'zod';
|
|
14
|
-
import { AbloValidationError } from '
|
|
15
|
-
import type { CommitOutboxScope } from './
|
|
16
|
-
import type { PendingWrite } from './
|
|
14
|
+
import { AbloValidationError } from '../errors.js';
|
|
15
|
+
import type { CommitOutboxScope } from './confirmation/commitEnvelope.js';
|
|
16
|
+
import type { PendingWrite } from './confirmation/pendingWrite.js';
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
19
|
* Persistence port used by `Ablo({ durableWrites })`.
|
|
@@ -12,12 +12,12 @@
|
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
14
|
import { AbloConnectionError, AbloValidationError } from '../errors.js';
|
|
15
|
-
import type { BatchFence } from '../
|
|
16
|
-
import { claimIdFor, fenceTokenFor } from '../
|
|
15
|
+
import type { BatchFence } from '../claims/locator.js';
|
|
16
|
+
import { claimIdFor, fenceTokenFor } from '../claims/locator.js';
|
|
17
17
|
import type { Claim } from '../types/streams.js';
|
|
18
|
-
import type { CommitCreateOptions, CommitOperationInput } from '../resources/httpResources.js';
|
|
19
|
-
import type { CommitReceiptWire } from '
|
|
20
|
-
import type { DurableHttpCommitMethod } from '
|
|
18
|
+
import type { CommitCreateOptions, CommitOperationInput } from '../client/resources/httpResources.js';
|
|
19
|
+
import type { CommitReceiptWire } from './contract.js';
|
|
20
|
+
import type { DurableHttpCommitMethod } from './confirmation/httpCommitEnvelope.js';
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
23
|
* One commit, exactly as it will be sent and re-sent. A replay that changed any
|
|
@@ -45,7 +45,7 @@ export function createClientTxId(idempotencyKey?: string | null): string {
|
|
|
45
45
|
/** One operation with the batch's defaults resolved onto it. */
|
|
46
46
|
export function normalizeCommitOperation(
|
|
47
47
|
op: CommitOperationInput,
|
|
48
|
-
defaults: Pick<CommitCreateOptions, 'readAt'
|
|
48
|
+
defaults: Pick<CommitCreateOptions, 'readAt'>,
|
|
49
49
|
fence: BatchFence | null,
|
|
50
50
|
claim: Claim | null,
|
|
51
51
|
): CommitOperationInput {
|
|
@@ -58,7 +58,6 @@ export function normalizeCommitOperation(
|
|
|
58
58
|
transactionId: op.transactionId ?? null,
|
|
59
59
|
claimId: op.claimId ?? claimIdFor(claim?.target, claim?.id, op.model, op.id ?? null),
|
|
60
60
|
readAt: op.readAt ?? defaults.readAt ?? null,
|
|
61
|
-
onStale: op.onStale ?? defaults.onStale ?? null,
|
|
62
61
|
fenceToken: op.fenceToken ?? fenceTokenFor(fence, op.model, op.id ?? null),
|
|
63
62
|
};
|
|
64
63
|
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Commit subsystem.
|
|
3
|
+
*
|
|
4
|
+
* Start here and descend through the lifecycle contract, durable confirmation
|
|
5
|
+
* records, persistence port, request normalization, and runtime observation.
|
|
6
|
+
* Transport mechanisms consume this boundary; they do not own commit meaning.
|
|
7
|
+
*/
|
|
8
|
+
export * from './contract.js';
|
|
9
|
+
export * from './durableWrites.js';
|
|
10
|
+
export * from './httpRequest.js';
|
|
11
|
+
export * from './recordRuntime.js';
|
|
12
|
+
export * from './readSetContext.js';
|
|
13
|
+
export * from './confirmation/commitEnvelope.js';
|
|
14
|
+
export * from './confirmation/httpCommitEnvelope.js';
|
|
15
|
+
export * from './confirmation/idempotencyKey.js';
|
|
16
|
+
export * from './confirmation/pendingWrite.js';
|
|
@@ -5,14 +5,9 @@
|
|
|
5
5
|
* but this is not an execution context: it has no async carrier and no ambient
|
|
6
6
|
* scope. Evidence is keyed only by the exact object returned to the caller.
|
|
7
7
|
*/
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
type OnStaleMode,
|
|
12
|
-
type ReadDependency,
|
|
13
|
-
} from './coordination/schema.js';
|
|
14
|
-
import { AbloValidationError } from './errors.js';
|
|
15
|
-
import type { CommitRecord } from './wire/commit.js';
|
|
8
|
+
import { readDependencySchema, type ReadDependency } from '../coordination/schema.js';
|
|
9
|
+
import { AbloValidationError, type AbloStaleContextError } from '../errors.js';
|
|
10
|
+
import type { CommitRecord } from './contract.js';
|
|
16
11
|
|
|
17
12
|
type ClientIdentity = object;
|
|
18
13
|
|
|
@@ -22,7 +17,7 @@ export const kReadEvidence = Symbol.for('ablo.transaction.read-evidence');
|
|
|
22
17
|
/** @internal One exact returned-row assertion. */
|
|
23
18
|
export interface CapturedReadEvidence {
|
|
24
19
|
readonly client: ClientIdentity;
|
|
25
|
-
readonly entry:
|
|
20
|
+
readonly entry: ReadDependency;
|
|
26
21
|
readonly row: object;
|
|
27
22
|
}
|
|
28
23
|
|
|
@@ -42,6 +37,11 @@ export interface ReadSetContext {
|
|
|
42
37
|
export interface ReadEvidenceBinding {
|
|
43
38
|
readonly context: ReadSetContext;
|
|
44
39
|
readonly client: ClientIdentity;
|
|
40
|
+
/** @internal Transport-owned live check for the same exact reads. */
|
|
41
|
+
readonly onChange?: (
|
|
42
|
+
reads: readonly ReadDependency[],
|
|
43
|
+
listener: (error: AbloStaleContextError) => void,
|
|
44
|
+
) => () => void;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
/** @internal Reads the private evidence binding without occupying a model name. */
|
|
@@ -68,10 +68,7 @@ export function evidenceForRow(
|
|
|
68
68
|
|
|
69
69
|
export interface PreparedReadSet {
|
|
70
70
|
readonly readAt?: number;
|
|
71
|
-
readonly onStale?: OnStaleMode;
|
|
72
71
|
readonly reads?: readonly ReadDependency[] | null;
|
|
73
|
-
readonly consumed: readonly CapturedReadEvidence[];
|
|
74
|
-
readonly automaticCommit: false;
|
|
75
72
|
readonly idempotencyKey?: string;
|
|
76
73
|
}
|
|
77
74
|
|
|
@@ -124,10 +121,9 @@ export function capturePointRead(
|
|
|
124
121
|
client,
|
|
125
122
|
row: rowObject,
|
|
126
123
|
entry: {
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
onStale: 'reject',
|
|
124
|
+
model,
|
|
125
|
+
id,
|
|
126
|
+
readAt,
|
|
131
127
|
},
|
|
132
128
|
});
|
|
133
129
|
}
|
|
@@ -137,12 +133,10 @@ export function prepareReadSet(
|
|
|
137
133
|
context: ReadSetContext | undefined,
|
|
138
134
|
client: ClientIdentity,
|
|
139
135
|
explicitReadAt: number | null | undefined,
|
|
140
|
-
explicitOnStale: OnStaleMode | null | undefined,
|
|
141
136
|
explicitIdempotencyKey: string | null | undefined,
|
|
142
137
|
reads: readonly unknown[] | null | undefined,
|
|
143
138
|
): PreparedReadSet {
|
|
144
139
|
const registry = context?.getStore();
|
|
145
|
-
const consumed: CapturedReadEvidence[] = [];
|
|
146
140
|
const resolvedReads: ReadDependency[] = [];
|
|
147
141
|
|
|
148
142
|
for (const entry of reads ?? []) {
|
|
@@ -151,18 +145,16 @@ export function prepareReadSet(
|
|
|
151
145
|
? registry.byRow.get(entry)
|
|
152
146
|
: undefined;
|
|
153
147
|
if (captured?.client === client) {
|
|
154
|
-
|
|
155
|
-
if (target.scope !== 'row') {
|
|
148
|
+
if ('group' in captured.entry) {
|
|
156
149
|
throw new AbloValidationError('Captured read evidence must name a row.', {
|
|
157
150
|
code: 'write_options_invalid', param: 'reads',
|
|
158
151
|
});
|
|
159
152
|
}
|
|
160
153
|
resolvedReads.push({
|
|
161
|
-
model:
|
|
162
|
-
id:
|
|
163
|
-
readAt: captured.entry.
|
|
154
|
+
model: captured.entry.model,
|
|
155
|
+
id: captured.entry.id,
|
|
156
|
+
readAt: captured.entry.readAt,
|
|
164
157
|
});
|
|
165
|
-
consumed.push(captured);
|
|
166
158
|
continue;
|
|
167
159
|
}
|
|
168
160
|
const canonical = readDependencySchema.safeParse(entry);
|
|
@@ -178,24 +170,7 @@ export function prepareReadSet(
|
|
|
178
170
|
|
|
179
171
|
return {
|
|
180
172
|
...(explicitReadAt != null ? { readAt: explicitReadAt } : {}),
|
|
181
|
-
...(explicitOnStale != null ? { onStale: explicitOnStale } : {}),
|
|
182
173
|
...(reads !== undefined ? { reads: reads === null ? null : resolvedReads } : {}),
|
|
183
|
-
consumed,
|
|
184
|
-
automaticCommit: false,
|
|
185
174
|
...(explicitIdempotencyKey != null ? { idempotencyKey: explicitIdempotencyKey } : {}),
|
|
186
175
|
};
|
|
187
176
|
}
|
|
188
|
-
|
|
189
|
-
/** @internal Commit identity is the explicit request idempotency identity. */
|
|
190
|
-
export function commitRecordIdentity(
|
|
191
|
-
_context: ReadSetContext | undefined,
|
|
192
|
-
attemptId: string,
|
|
193
|
-
): { readonly id: string } {
|
|
194
|
-
return { id: attemptId };
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
/** @internal Explicit row evidence is reusable; successful writes do not consume it. */
|
|
198
|
-
export function consumeReadSet(..._args: readonly unknown[]): void {}
|
|
199
|
-
|
|
200
|
-
/** @internal There is no ambient automatic-commit reservation to release. */
|
|
201
|
-
export function abortReadSetCommit(..._args: readonly unknown[]): void {}
|
|
@@ -1,12 +1,5 @@
|
|
|
1
|
+
import type { ReadDependency } from '../coordination/schema.js';
|
|
1
2
|
import {
|
|
2
|
-
DEFAULT_TRACK_ON_STALE,
|
|
3
|
-
type CommitReadSetEntry,
|
|
4
|
-
type ReadDependency,
|
|
5
|
-
type ReadSetEntry,
|
|
6
|
-
type TrackDependency,
|
|
7
|
-
} from './coordination/schema.js';
|
|
8
|
-
import {
|
|
9
|
-
commitRecordIdentity,
|
|
10
3
|
publishCommitRecord,
|
|
11
4
|
type ReadSetContext,
|
|
12
5
|
} from './readSetContext.js';
|
|
@@ -14,7 +7,7 @@ import {
|
|
|
14
7
|
commitRecordSchema,
|
|
15
8
|
type CommitOperationBody,
|
|
16
9
|
type CommitReceiptWire,
|
|
17
|
-
} from './
|
|
10
|
+
} from './contract.js';
|
|
18
11
|
|
|
19
12
|
interface HttpCommitObservation {
|
|
20
13
|
readonly receipt: CommitReceiptWire;
|
|
@@ -32,41 +25,9 @@ interface WebSocketCommitObservation {
|
|
|
32
25
|
readonly input?: Record<string, unknown>;
|
|
33
26
|
readonly claimId?: string | null;
|
|
34
27
|
readonly readAt?: number | null;
|
|
35
|
-
readonly onStale?: CommitOperationBody['onStale'] | null;
|
|
36
28
|
readonly fenceToken?: number | null;
|
|
37
29
|
}[];
|
|
38
30
|
readonly reads?: readonly ReadDependency[] | null;
|
|
39
|
-
readonly track?: readonly TrackDependency[] | null;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
function commitEntry(dependency: ReadDependency): CommitReadSetEntry {
|
|
43
|
-
return {
|
|
44
|
-
target: 'group' in dependency
|
|
45
|
-
? { scope: 'group', group: dependency.group }
|
|
46
|
-
: {
|
|
47
|
-
scope: 'row',
|
|
48
|
-
model: dependency.model,
|
|
49
|
-
id: dependency.id,
|
|
50
|
-
...(dependency.fields ? { fields: dependency.fields } : {}),
|
|
51
|
-
},
|
|
52
|
-
watermark: dependency.readAt,
|
|
53
|
-
lifetime: 'commit',
|
|
54
|
-
onStale: dependency.onStale ?? 'reject',
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
function persistedEntry(
|
|
59
|
-
dependency: TrackDependency,
|
|
60
|
-
defaultWatermark: number,
|
|
61
|
-
): ReadSetEntry {
|
|
62
|
-
return {
|
|
63
|
-
target: 'group' in dependency
|
|
64
|
-
? { scope: 'group', group: dependency.group }
|
|
65
|
-
: { scope: 'row', model: dependency.model, id: dependency.id },
|
|
66
|
-
watermark: dependency.readAt ?? defaultWatermark,
|
|
67
|
-
lifetime: 'persisted',
|
|
68
|
-
onStale: dependency.onStale ?? DEFAULT_TRACK_ON_STALE,
|
|
69
|
-
};
|
|
70
31
|
}
|
|
71
32
|
|
|
72
33
|
function bodyRecord(value: unknown): Record<string, unknown> {
|
|
@@ -126,9 +87,6 @@ function operationFromModelRequest(
|
|
|
126
87
|
? { data: body.data as Record<string, unknown> }
|
|
127
88
|
: {}),
|
|
128
89
|
...(typeof body.readAt === 'number' ? { readAt: body.readAt } : {}),
|
|
129
|
-
...(typeof body.onStale === 'string'
|
|
130
|
-
? { onStale: body.onStale as CommitOperationBody['onStale'] }
|
|
131
|
-
: {}),
|
|
132
90
|
...(typeof body.fenceToken === 'number' ? { fenceToken: body.fenceToken } : {}),
|
|
133
91
|
...(typeof body.claim === 'string' ? { claimId: body.claim } : {}),
|
|
134
92
|
}];
|
|
@@ -145,21 +103,18 @@ export function recordHttpCommitReceipt(
|
|
|
145
103
|
? body.operations as CommitOperationBody[]
|
|
146
104
|
: operationFromModelRequest(observation, body);
|
|
147
105
|
const reads = Array.isArray(body.reads) ? body.reads as ReadDependency[] : [];
|
|
148
|
-
const
|
|
149
|
-
const readSet: ReadSetEntry[] = reads.map(commitEntry);
|
|
106
|
+
const retainedReads: ReadDependency[] = [...reads];
|
|
150
107
|
for (const operation of operations) {
|
|
151
108
|
if (typeof operation.readAt !== 'number' || !operation.id) continue;
|
|
152
|
-
|
|
109
|
+
retainedReads.push({
|
|
153
110
|
model: operation.model,
|
|
154
111
|
id: operation.id,
|
|
155
112
|
readAt: operation.readAt,
|
|
156
|
-
|
|
157
|
-
}));
|
|
113
|
+
});
|
|
158
114
|
}
|
|
159
|
-
readSet.push(...track.map((entry) => persistedEntry(entry, observation.receipt.lastSyncId)));
|
|
160
115
|
|
|
161
116
|
const record = commitRecordSchema.parse({
|
|
162
|
-
id:
|
|
117
|
+
id: observation.receipt.clientTxId,
|
|
163
118
|
createdAt: observation.receipt.createdAt,
|
|
164
119
|
status: observation.receipt.status,
|
|
165
120
|
statusAt: observation.receipt.statusAt,
|
|
@@ -167,7 +122,7 @@ export function recordHttpCommitReceipt(
|
|
|
167
122
|
...(observation.receipt.correlationId
|
|
168
123
|
? { correlationId: observation.receipt.correlationId }
|
|
169
124
|
: {}),
|
|
170
|
-
|
|
125
|
+
reads: retainedReads,
|
|
171
126
|
operations: retainedOperations(operations),
|
|
172
127
|
...commitEvidence(observation.receipt, operations, 'http'),
|
|
173
128
|
authority: observation.receipt.authority,
|
|
@@ -175,9 +130,6 @@ export function recordHttpCommitReceipt(
|
|
|
175
130
|
clientTxId: observation.receipt.clientTxId,
|
|
176
131
|
serverTxId: observation.receipt.serverTxId,
|
|
177
132
|
ops: observation.receipt.ops,
|
|
178
|
-
...(observation.receipt.notifications
|
|
179
|
-
? { notifications: observation.receipt.notifications }
|
|
180
|
-
: {}),
|
|
181
133
|
...(observation.receipt.missingIds
|
|
182
134
|
? { missingIds: observation.receipt.missingIds }
|
|
183
135
|
: {}),
|
|
@@ -199,25 +151,21 @@ export function recordWebSocketCommitReceipt(
|
|
|
199
151
|
...(operation.input ? { data: operation.input } : {}),
|
|
200
152
|
...(operation.claimId ? { claimId: operation.claimId } : {}),
|
|
201
153
|
...(typeof operation.readAt === 'number' ? { readAt: operation.readAt } : {}),
|
|
202
|
-
...(operation.onStale ? { onStale: operation.onStale } : {}),
|
|
203
154
|
...(typeof operation.fenceToken === 'number'
|
|
204
155
|
? { fenceToken: operation.fenceToken }
|
|
205
156
|
: {}),
|
|
206
157
|
}));
|
|
207
|
-
const
|
|
158
|
+
const retainedReads: ReadDependency[] = [...(observation.reads ?? [])];
|
|
208
159
|
for (const operation of operations) {
|
|
209
160
|
if (typeof operation.readAt !== 'number' || !operation.id) continue;
|
|
210
|
-
|
|
161
|
+
retainedReads.push({
|
|
211
162
|
model: operation.model,
|
|
212
163
|
id: operation.id,
|
|
213
164
|
readAt: operation.readAt,
|
|
214
|
-
|
|
215
|
-
}));
|
|
165
|
+
});
|
|
216
166
|
}
|
|
217
|
-
readSet.push(...(observation.track ?? []).map((entry) =>
|
|
218
|
-
persistedEntry(entry, observation.receipt.lastSyncId)));
|
|
219
167
|
const record = commitRecordSchema.parse({
|
|
220
|
-
id:
|
|
168
|
+
id: observation.receipt.clientTxId,
|
|
221
169
|
createdAt: observation.receipt.createdAt,
|
|
222
170
|
status: observation.receipt.status,
|
|
223
171
|
statusAt: observation.receipt.statusAt,
|
|
@@ -225,7 +173,7 @@ export function recordWebSocketCommitReceipt(
|
|
|
225
173
|
...(observation.receipt.correlationId
|
|
226
174
|
? { correlationId: observation.receipt.correlationId }
|
|
227
175
|
: {}),
|
|
228
|
-
|
|
176
|
+
reads: retainedReads,
|
|
229
177
|
operations: retainedOperations(operations),
|
|
230
178
|
...commitEvidence(observation.receipt, operations, 'websocket'),
|
|
231
179
|
authority: observation.receipt.authority,
|
|
@@ -233,9 +181,6 @@ export function recordWebSocketCommitReceipt(
|
|
|
233
181
|
clientTxId: observation.receipt.clientTxId,
|
|
234
182
|
serverTxId: observation.receipt.serverTxId,
|
|
235
183
|
ops: observation.receipt.ops,
|
|
236
|
-
...(observation.receipt.notifications
|
|
237
|
-
? { notifications: observation.receipt.notifications }
|
|
238
|
-
: {}),
|
|
239
184
|
...(observation.receipt.missingIds
|
|
240
185
|
? { missingIds: observation.receipt.missingIds }
|
|
241
186
|
: {}),
|
|
@@ -21,28 +21,11 @@ export {
|
|
|
21
21
|
DEFAULT_CLAIM_DESCRIPTION,
|
|
22
22
|
targetRefSchema,
|
|
23
23
|
// Layer 3 — optimistic stale-context
|
|
24
|
-
onStaleModeSchema,
|
|
25
24
|
MAX_READ_SET_ENTRIES,
|
|
26
|
-
readSetRowTargetSchema,
|
|
27
|
-
readSetGroupTargetSchema,
|
|
28
|
-
commitReadSetTargetSchema,
|
|
29
|
-
persistedReadSetRowTargetSchema,
|
|
30
|
-
persistedReadSetTargetSchema,
|
|
31
|
-
commitReadSetEntrySchema,
|
|
32
|
-
persistedReadSetEntrySchema,
|
|
33
|
-
readSetEntrySchema,
|
|
34
|
-
readSetSchema,
|
|
35
25
|
writeGuardSchema,
|
|
36
|
-
staleNotificationSchema,
|
|
37
|
-
rowStaleNotificationSchema,
|
|
38
|
-
groupStaleNotificationSchema,
|
|
39
|
-
stalePropagationSchema,
|
|
40
26
|
|
|
41
27
|
readDependencySchema,
|
|
42
28
|
readDependencyListSchema,
|
|
43
|
-
readSetProjectionEntryCount,
|
|
44
|
-
trackDependencySchema,
|
|
45
|
-
trackDependencyListSchema,
|
|
46
29
|
// Layer 2 — pessimistic claim / claim-lease
|
|
47
30
|
claimStatusSchema,
|
|
48
31
|
wireClaimStatusSchema,
|
|
@@ -92,45 +75,14 @@ export {
|
|
|
92
75
|
presenceUpdateFrameSchema,
|
|
93
76
|
} from './schema.js';
|
|
94
77
|
|
|
95
|
-
// Conflict-policy runtime — the engine detects a conflict, and the policy
|
|
96
|
-
// decides what to do about it. These are re-exported here so that server-side
|
|
97
|
-
// code can reach both the coordination vocabulary and its default conflict
|
|
98
|
-
// resolution from this one subpath, without importing the full client from the
|
|
99
|
-
// package root.
|
|
100
|
-
export { defaultPolicy, capabilityPreemptPolicy, interpretConflictAxis } from '../policy/types.js';
|
|
101
|
-
export type {
|
|
102
|
-
Conflict,
|
|
103
|
-
ConflictAxis,
|
|
104
|
-
ConflictDecision,
|
|
105
|
-
ConflictKind,
|
|
106
|
-
ConflictOperation,
|
|
107
|
-
ConflictPolicy,
|
|
108
|
-
StaleContextConflict,
|
|
109
|
-
ClaimHeldConflict,
|
|
110
|
-
} from '../policy/types.js';
|
|
111
|
-
|
|
112
78
|
// Inferred types, one per schema (plus the standalone aliases).
|
|
113
79
|
export type {
|
|
114
80
|
// Shared primitives
|
|
115
81
|
ParticipantKind,
|
|
116
82
|
TargetRef,
|
|
117
83
|
// Layer 3 — optimistic stale-context
|
|
118
|
-
OnStaleMode,
|
|
119
|
-
ReadSetRowTarget,
|
|
120
|
-
ReadSetGroupTarget,
|
|
121
|
-
CommitReadSetTarget,
|
|
122
|
-
PersistedReadSetTarget,
|
|
123
|
-
CommitReadSetEntry,
|
|
124
|
-
PersistedReadSetEntry,
|
|
125
|
-
ReadSetEntry,
|
|
126
|
-
ReadSet,
|
|
127
84
|
WriteGuard,
|
|
128
|
-
StaleNotification,
|
|
129
|
-
RowStaleNotification,
|
|
130
|
-
GroupStaleNotification,
|
|
131
|
-
StalePropagation,
|
|
132
85
|
ReadDependency,
|
|
133
|
-
TrackDependency,
|
|
134
86
|
// Layer 2 — pessimistic claim / claim-lease
|
|
135
87
|
ClaimStatus,
|
|
136
88
|
WireClaimStatus,
|
|
@@ -182,12 +134,12 @@ export type {
|
|
|
182
134
|
ClaimCounterparty,
|
|
183
135
|
ConflictEvent,
|
|
184
136
|
CoordinationObserver,
|
|
185
|
-
} from '
|
|
137
|
+
} from '../claims/events.js';
|
|
186
138
|
|
|
187
139
|
// The conflict rule itself — whether two claims on one row collide. It is the
|
|
188
140
|
// protocol's decision, not the server's deployment of it, so it lives here and
|
|
189
141
|
// every claim authority imports it.
|
|
190
|
-
export { targetsConflict } from '
|
|
142
|
+
export { targetsConflict } from '../claims/targetConflict.js';
|
|
191
143
|
|
|
192
144
|
// The locator itself — what a claim points at, and the projections that keep
|
|
193
145
|
// its three entity spellings (`entityType`/`entityId`, `model`/`id`,
|
|
@@ -197,7 +149,7 @@ export type {
|
|
|
197
149
|
ClaimTargetDetails,
|
|
198
150
|
ClaimTargetSource,
|
|
199
151
|
EntityLocator,
|
|
200
|
-
} from '
|
|
152
|
+
} from '../claims/locator.js';
|
|
201
153
|
export {
|
|
202
154
|
batchFence,
|
|
203
155
|
claimIdFor,
|
|
@@ -207,4 +159,4 @@ export {
|
|
|
207
159
|
wireTarget,
|
|
208
160
|
modelTarget,
|
|
209
161
|
streamTarget,
|
|
210
|
-
} from '
|
|
162
|
+
} from '../claims/locator.js';
|