@abloatai/transaction 0.37.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 +83 -0
- package/README.md +48 -0
- package/dist/ablo.d.ts +90 -0
- package/dist/ablo.d.ts.map +1 -0
- package/dist/ablo.js +34 -0
- package/dist/ablo.js.map +1 -0
- package/dist/ai-sdk/coordinatedTool.d.ts +123 -0
- package/dist/ai-sdk/coordinatedTool.d.ts.map +1 -0
- package/dist/ai-sdk/coordinatedTool.js +135 -0
- package/dist/ai-sdk/coordinatedTool.js.map +1 -0
- package/dist/ai-sdk/index.d.ts +2 -0
- package/dist/ai-sdk/index.d.ts.map +1 -0
- package/dist/ai-sdk/index.js +2 -0
- package/dist/ai-sdk/index.js.map +1 -0
- package/dist/auth/apiKey.d.ts +154 -0
- package/dist/auth/apiKey.d.ts.map +1 -0
- package/dist/auth/apiKey.js +408 -0
- package/dist/auth/apiKey.js.map +1 -0
- package/dist/auth/bootstrapScope.d.ts +16 -0
- package/dist/auth/bootstrapScope.d.ts.map +1 -0
- package/dist/auth/bootstrapScope.js +2 -0
- package/dist/auth/bootstrapScope.js.map +1 -0
- package/dist/auth/browserCredentialSafety.d.ts +7 -0
- package/dist/auth/browserCredentialSafety.d.ts.map +1 -0
- package/dist/auth/browserCredentialSafety.js +29 -0
- package/dist/auth/browserCredentialSafety.js.map +1 -0
- package/dist/auth/capability.d.ts +241 -0
- package/dist/auth/capability.d.ts.map +1 -0
- package/dist/auth/capability.js +253 -0
- package/dist/auth/capability.js.map +1 -0
- package/dist/auth/capabilityLifecycle.d.ts +47 -0
- package/dist/auth/capabilityLifecycle.d.ts.map +1 -0
- package/dist/auth/capabilityLifecycle.js +108 -0
- package/dist/auth/capabilityLifecycle.js.map +1 -0
- package/dist/auth/credentialEndpoint.d.ts +10 -0
- package/dist/auth/credentialEndpoint.d.ts.map +1 -0
- package/dist/auth/credentialEndpoint.js +58 -0
- package/dist/auth/credentialEndpoint.js.map +1 -0
- package/dist/auth/credentialEndpointProtocol.d.ts +24 -0
- package/dist/auth/credentialEndpointProtocol.d.ts.map +1 -0
- package/dist/auth/credentialEndpointProtocol.js +34 -0
- package/dist/auth/credentialEndpointProtocol.js.map +1 -0
- package/dist/auth/credentialKind.d.ts +4 -0
- package/dist/auth/credentialKind.d.ts.map +1 -0
- package/dist/auth/credentialKind.js +15 -0
- package/dist/auth/credentialKind.js.map +1 -0
- package/dist/auth/credentialPolicy.d.ts +141 -0
- package/dist/auth/credentialPolicy.d.ts.map +1 -0
- package/dist/auth/credentialPolicy.js +113 -0
- package/dist/auth/credentialPolicy.js.map +1 -0
- package/dist/auth/credentialResult.d.ts +7 -0
- package/dist/auth/credentialResult.d.ts.map +1 -0
- package/dist/auth/credentialResult.js +9 -0
- package/dist/auth/credentialResult.js.map +1 -0
- package/dist/auth/credentialSource.d.ts +31 -0
- package/dist/auth/credentialSource.d.ts.map +1 -0
- package/dist/auth/credentialSource.js +56 -0
- package/dist/auth/credentialSource.js.map +1 -0
- package/dist/auth/hostedEndpoints.d.ts +22 -0
- package/dist/auth/hostedEndpoints.d.ts.map +1 -0
- package/dist/auth/hostedEndpoints.js +22 -0
- package/dist/auth/hostedEndpoints.js.map +1 -0
- package/dist/auth/identity.d.ts +62 -0
- package/dist/auth/identity.d.ts.map +1 -0
- package/dist/auth/identity.js +224 -0
- package/dist/auth/identity.js.map +1 -0
- package/dist/auth/index.d.ts +189 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +312 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/schemas.d.ts +41 -0
- package/dist/auth/schemas.d.ts.map +1 -0
- package/dist/auth/schemas.js +69 -0
- package/dist/auth/schemas.js.map +1 -0
- package/dist/auth/sessionMint.d.ts +29 -0
- package/dist/auth/sessionMint.d.ts.map +1 -0
- package/dist/auth/sessionMint.js +92 -0
- package/dist/auth/sessionMint.js.map +1 -0
- package/dist/auth/token.d.ts +4 -0
- package/dist/auth/token.d.ts.map +1 -0
- package/dist/auth/token.js +4 -0
- package/dist/auth/token.js.map +1 -0
- package/dist/batching/index.d.ts +56 -0
- package/dist/batching/index.d.ts.map +1 -0
- package/dist/batching/index.js +148 -0
- package/dist/batching/index.js.map +1 -0
- package/dist/coordination/awaitClaimGrant.d.ts +57 -0
- package/dist/coordination/awaitClaimGrant.d.ts.map +1 -0
- package/dist/coordination/awaitClaimGrant.js +138 -0
- package/dist/coordination/awaitClaimGrant.js.map +1 -0
- package/dist/coordination/claimHeartbeatLoop.d.ts +85 -0
- package/dist/coordination/claimHeartbeatLoop.d.ts.map +1 -0
- package/dist/coordination/claimHeartbeatLoop.js +109 -0
- package/dist/coordination/claimHeartbeatLoop.js.map +1 -0
- package/dist/coordination/claimMeta.d.ts +50 -0
- package/dist/coordination/claimMeta.d.ts.map +1 -0
- package/dist/coordination/claimMeta.js +53 -0
- package/dist/coordination/claimMeta.js.map +1 -0
- package/dist/coordination/events.d.ts +75 -0
- package/dist/coordination/events.d.ts.map +1 -0
- package/dist/coordination/events.js +8 -0
- package/dist/coordination/events.js.map +1 -0
- package/dist/coordination/index.d.ts +20 -0
- package/dist/coordination/index.d.ts.map +1 -0
- package/dist/coordination/index.js +46 -0
- package/dist/coordination/index.js.map +1 -0
- package/dist/coordination/locator.d.ts +106 -0
- package/dist/coordination/locator.d.ts.map +1 -0
- package/dist/coordination/locator.js +110 -0
- package/dist/coordination/locator.js.map +1 -0
- package/dist/coordination/schema.d.ts +1332 -0
- package/dist/coordination/schema.d.ts.map +1 -0
- package/dist/coordination/schema.js +1137 -0
- package/dist/coordination/schema.js.map +1 -0
- package/dist/coordination/targetConflict.d.ts +3 -0
- package/dist/coordination/targetConflict.d.ts.map +1 -0
- package/dist/coordination/targetConflict.js +74 -0
- package/dist/coordination/targetConflict.js.map +1 -0
- package/dist/coordination/trace.d.ts +79 -0
- package/dist/coordination/trace.d.ts.map +1 -0
- package/dist/coordination/trace.js +139 -0
- package/dist/coordination/trace.js.map +1 -0
- package/dist/docs/catalog.d.ts +73 -0
- package/dist/docs/catalog.d.ts.map +1 -0
- package/dist/docs/catalog.js +231 -0
- package/dist/docs/catalog.js.map +1 -0
- package/dist/docs/index.d.ts +11 -0
- package/dist/docs/index.d.ts.map +1 -0
- package/dist/docs/index.js +11 -0
- package/dist/docs/index.js.map +1 -0
- package/dist/durableWrites.d.ts +63 -0
- package/dist/durableWrites.d.ts.map +1 -0
- package/dist/durableWrites.js +72 -0
- package/dist/durableWrites.js.map +1 -0
- package/dist/environment.d.ts +106 -0
- package/dist/environment.d.ts.map +1 -0
- package/dist/environment.js +109 -0
- package/dist/environment.js.map +1 -0
- package/dist/errorCodes.d.ts +411 -0
- package/dist/errorCodes.d.ts.map +1 -0
- package/dist/errorCodes.js +500 -0
- package/dist/errorCodes.js.map +1 -0
- package/dist/errors.d.ts +429 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +687 -0
- package/dist/errors.js.map +1 -0
- package/dist/footprint.d.ts +112 -0
- package/dist/footprint.d.ts.map +1 -0
- package/dist/footprint.js +0 -0
- package/dist/footprint.js.map +1 -0
- package/dist/headlessClient.d.ts +10 -0
- package/dist/headlessClient.d.ts.map +1 -0
- package/dist/headlessClient.js +114 -0
- package/dist/headlessClient.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/keys/index.d.ts +88 -0
- package/dist/keys/index.d.ts.map +1 -0
- package/dist/keys/index.js +208 -0
- package/dist/keys/index.js.map +1 -0
- package/dist/log/syncDeltaRow.d.ts +159 -0
- package/dist/log/syncDeltaRow.d.ts.map +1 -0
- package/dist/log/syncDeltaRow.js +96 -0
- package/dist/log/syncDeltaRow.js.map +1 -0
- package/dist/logger.d.ts +17 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +8 -0
- package/dist/logger.js.map +1 -0
- package/dist/observability.d.ts +54 -0
- package/dist/observability.d.ts.map +1 -0
- package/dist/observability.js +20 -0
- package/dist/observability.js.map +1 -0
- package/dist/policy/types.d.ts +218 -0
- package/dist/policy/types.d.ts.map +1 -0
- package/dist/policy/types.js +127 -0
- package/dist/policy/types.js.map +1 -0
- package/dist/resources/functionalUpdate.d.ts +80 -0
- package/dist/resources/functionalUpdate.d.ts.map +1 -0
- package/dist/resources/functionalUpdate.js +88 -0
- package/dist/resources/functionalUpdate.js.map +1 -0
- package/dist/resources/httpResources.d.ts +449 -0
- package/dist/resources/httpResources.d.ts.map +1 -0
- package/dist/resources/httpResources.js +8 -0
- package/dist/resources/httpResources.js.map +1 -0
- package/dist/resources/modelOperations.d.ts +380 -0
- package/dist/resources/modelOperations.d.ts.map +1 -0
- package/dist/resources/modelOperations.js +13 -0
- package/dist/resources/modelOperations.js.map +1 -0
- package/dist/resources/mutationOptions.d.ts +67 -0
- package/dist/resources/mutationOptions.d.ts.map +1 -0
- package/dist/resources/mutationOptions.js +10 -0
- package/dist/resources/mutationOptions.js.map +1 -0
- package/dist/resources/where.d.ts +102 -0
- package/dist/resources/where.d.ts.map +1 -0
- package/dist/resources/where.js +116 -0
- package/dist/resources/where.js.map +1 -0
- package/dist/resources/writeOptionsSchema.d.ts +48 -0
- package/dist/resources/writeOptionsSchema.d.ts.map +1 -0
- package/dist/resources/writeOptionsSchema.js +74 -0
- package/dist/resources/writeOptionsSchema.js.map +1 -0
- package/dist/schema/coordination.d.ts +113 -0
- package/dist/schema/coordination.d.ts.map +1 -0
- package/dist/schema/coordination.js +134 -0
- package/dist/schema/coordination.js.map +1 -0
- package/dist/schema/ddl.d.ts +98 -0
- package/dist/schema/ddl.d.ts.map +1 -0
- package/dist/schema/ddl.js +492 -0
- package/dist/schema/ddl.js.map +1 -0
- package/dist/schema/ddlLock.d.ts +36 -0
- package/dist/schema/ddlLock.d.ts.map +1 -0
- package/dist/schema/ddlLock.js +47 -0
- package/dist/schema/ddlLock.js.map +1 -0
- package/dist/schema/diff.d.ts +226 -0
- package/dist/schema/diff.d.ts.map +1 -0
- package/dist/schema/diff.js +290 -0
- package/dist/schema/diff.js.map +1 -0
- package/dist/schema/field.d.ts +121 -0
- package/dist/schema/field.d.ts.map +1 -0
- package/dist/schema/field.js +266 -0
- package/dist/schema/field.js.map +1 -0
- package/dist/schema/fieldRef.d.ts +58 -0
- package/dist/schema/fieldRef.d.ts.map +1 -0
- package/dist/schema/fieldRef.js +26 -0
- package/dist/schema/fieldRef.js.map +1 -0
- package/dist/schema/generate.d.ts +20 -0
- package/dist/schema/generate.d.ts.map +1 -0
- package/dist/schema/generate.js +87 -0
- package/dist/schema/generate.js.map +1 -0
- package/dist/schema/index.d.ts +43 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +81 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/loadStrategy.d.ts +46 -0
- package/dist/schema/loadStrategy.d.ts.map +1 -0
- package/dist/schema/loadStrategy.js +47 -0
- package/dist/schema/loadStrategy.js.map +1 -0
- package/dist/schema/model.d.ts +380 -0
- package/dist/schema/model.d.ts.map +1 -0
- package/dist/schema/model.js +124 -0
- package/dist/schema/model.js.map +1 -0
- package/dist/schema/openapi.d.ts +59 -0
- package/dist/schema/openapi.d.ts.map +1 -0
- package/dist/schema/openapi.js +508 -0
- package/dist/schema/openapi.js.map +1 -0
- package/dist/schema/queries.d.ts +202 -0
- package/dist/schema/queries.d.ts.map +1 -0
- package/dist/schema/queries.js +144 -0
- package/dist/schema/queries.js.map +1 -0
- package/dist/schema/relation.d.ts +205 -0
- package/dist/schema/relation.d.ts.map +1 -0
- package/dist/schema/relation.js +105 -0
- package/dist/schema/relation.js.map +1 -0
- package/dist/schema/residency.d.ts +30 -0
- package/dist/schema/residency.d.ts.map +1 -0
- package/dist/schema/residency.js +26 -0
- package/dist/schema/residency.js.map +1 -0
- package/dist/schema/roles.d.ts +250 -0
- package/dist/schema/roles.d.ts.map +1 -0
- package/dist/schema/roles.js +231 -0
- package/dist/schema/roles.js.map +1 -0
- package/dist/schema/schema.d.ts +352 -0
- package/dist/schema/schema.d.ts.map +1 -0
- package/dist/schema/schema.js +326 -0
- package/dist/schema/schema.js.map +1 -0
- package/dist/schema/select.d.ts +41 -0
- package/dist/schema/select.d.ts.map +1 -0
- package/dist/schema/select.js +91 -0
- package/dist/schema/select.js.map +1 -0
- package/dist/schema/serialize.d.ts +116 -0
- package/dist/schema/serialize.d.ts.map +1 -0
- package/dist/schema/serialize.js +278 -0
- package/dist/schema/serialize.js.map +1 -0
- package/dist/schema/sugar.d.ts +110 -0
- package/dist/schema/sugar.d.ts.map +1 -0
- package/dist/schema/sugar.js +84 -0
- package/dist/schema/sugar.js.map +1 -0
- package/dist/schema/tenancy.d.ts +140 -0
- package/dist/schema/tenancy.d.ts.map +1 -0
- package/dist/schema/tenancy.js +191 -0
- package/dist/schema/tenancy.js.map +1 -0
- package/dist/server/adapter.d.ts +174 -0
- package/dist/server/adapter.d.ts.map +1 -0
- package/dist/server/adapter.js +19 -0
- package/dist/server/adapter.js.map +1 -0
- package/dist/server/commit.d.ts +108 -0
- package/dist/server/commit.d.ts.map +1 -0
- package/dist/server/commit.js +2 -0
- package/dist/server/commit.js.map +1 -0
- package/dist/server/index.d.ts +15 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +3 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/readConfig.d.ts +81 -0
- package/dist/server/readConfig.d.ts.map +1 -0
- package/dist/server/readConfig.js +9 -0
- package/dist/server/readConfig.js.map +1 -0
- package/dist/server/storageMode.d.ts +24 -0
- package/dist/server/storageMode.d.ts.map +1 -0
- package/dist/server/storageMode.js +18 -0
- package/dist/server/storageMode.js.map +1 -0
- package/dist/source/adapter.d.ts +84 -0
- package/dist/source/adapter.d.ts.map +1 -0
- package/dist/source/adapter.js +25 -0
- package/dist/source/adapter.js.map +1 -0
- package/dist/source/adapters/drizzle.d.ts +49 -0
- package/dist/source/adapters/drizzle.d.ts.map +1 -0
- package/dist/source/adapters/drizzle.js +220 -0
- package/dist/source/adapters/drizzle.js.map +1 -0
- package/dist/source/adapters/kysely.d.ts +43 -0
- package/dist/source/adapters/kysely.d.ts.map +1 -0
- package/dist/source/adapters/kysely.js +206 -0
- package/dist/source/adapters/kysely.js.map +1 -0
- package/dist/source/adapters/kyselyMutationCore.d.ts +77 -0
- package/dist/source/adapters/kyselyMutationCore.d.ts.map +1 -0
- package/dist/source/adapters/kyselyMutationCore.js +126 -0
- package/dist/source/adapters/kyselyMutationCore.js.map +1 -0
- package/dist/source/adapters/memory.d.ts +14 -0
- package/dist/source/adapters/memory.d.ts.map +1 -0
- package/dist/source/adapters/memory.js +131 -0
- package/dist/source/adapters/memory.js.map +1 -0
- package/dist/source/adapters/prisma.d.ts +64 -0
- package/dist/source/adapters/prisma.d.ts.map +1 -0
- package/dist/source/adapters/prisma.js +203 -0
- package/dist/source/adapters/prisma.js.map +1 -0
- package/dist/source/conformance.d.ts +38 -0
- package/dist/source/conformance.d.ts.map +1 -0
- package/dist/source/conformance.js +216 -0
- package/dist/source/conformance.js.map +1 -0
- package/dist/source/connector.d.ts +96 -0
- package/dist/source/connector.d.ts.map +1 -0
- package/dist/source/connector.js +267 -0
- package/dist/source/connector.js.map +1 -0
- package/dist/source/connectorProtocol.d.ts +155 -0
- package/dist/source/connectorProtocol.d.ts.map +1 -0
- package/dist/source/connectorProtocol.js +164 -0
- package/dist/source/connectorProtocol.js.map +1 -0
- package/dist/source/contract.d.ts +196 -0
- package/dist/source/contract.d.ts.map +1 -0
- package/dist/source/contract.js +165 -0
- package/dist/source/contract.js.map +1 -0
- package/dist/source/drizzle.d.ts +2 -0
- package/dist/source/drizzle.d.ts.map +1 -0
- package/dist/source/drizzle.js +2 -0
- package/dist/source/drizzle.js.map +1 -0
- package/dist/source/factory.d.ts +93 -0
- package/dist/source/factory.d.ts.map +1 -0
- package/dist/source/factory.js +287 -0
- package/dist/source/factory.js.map +1 -0
- package/dist/source/idempotency.d.ts +62 -0
- package/dist/source/idempotency.d.ts.map +1 -0
- package/dist/source/idempotency.js +145 -0
- package/dist/source/idempotency.js.map +1 -0
- package/dist/source/index.d.ts +24 -0
- package/dist/source/index.d.ts.map +1 -0
- package/dist/source/index.js +29 -0
- package/dist/source/index.js.map +1 -0
- package/dist/source/kysely.d.ts +3 -0
- package/dist/source/kysely.d.ts.map +1 -0
- package/dist/source/kysely.js +3 -0
- package/dist/source/kysely.js.map +1 -0
- package/dist/source/migrations.d.ts +22 -0
- package/dist/source/migrations.d.ts.map +1 -0
- package/dist/source/migrations.js +104 -0
- package/dist/source/migrations.js.map +1 -0
- package/dist/source/next.d.ts +33 -0
- package/dist/source/next.d.ts.map +1 -0
- package/dist/source/next.js +26 -0
- package/dist/source/next.js.map +1 -0
- package/dist/source/pushQueue.d.ts +135 -0
- package/dist/source/pushQueue.d.ts.map +1 -0
- package/dist/source/pushQueue.js +257 -0
- package/dist/source/pushQueue.js.map +1 -0
- package/dist/source/signing.d.ts +93 -0
- package/dist/source/signing.d.ts.map +1 -0
- package/dist/source/signing.js +163 -0
- package/dist/source/signing.js.map +1 -0
- package/dist/source/types.d.ts +402 -0
- package/dist/source/types.d.ts.map +1 -0
- package/dist/source/types.js +60 -0
- package/dist/source/types.js.map +1 -0
- package/dist/syncLog/contract.d.ts +21 -0
- package/dist/syncLog/contract.d.ts.map +1 -0
- package/dist/syncLog/contract.js +20 -0
- package/dist/syncLog/contract.js.map +1 -0
- package/dist/syncLog/index.d.ts +2 -0
- package/dist/syncLog/index.d.ts.map +1 -0
- package/dist/syncLog/index.js +2 -0
- package/dist/syncLog/index.js.map +1 -0
- package/dist/testing/fixtures/httpResponses.d.ts +74 -0
- package/dist/testing/fixtures/httpResponses.d.ts.map +1 -0
- package/dist/testing/fixtures/httpResponses.js +102 -0
- package/dist/testing/fixtures/httpResponses.js.map +1 -0
- package/dist/transactionLayer.d.ts +110 -0
- package/dist/transactionLayer.d.ts.map +1 -0
- package/dist/transactionLayer.js +25 -0
- package/dist/transactionLayer.js.map +1 -0
- package/dist/transactions/settlement/commitEnvelope.d.ts +144 -0
- package/dist/transactions/settlement/commitEnvelope.d.ts.map +1 -0
- package/dist/transactions/settlement/commitEnvelope.js +162 -0
- package/dist/transactions/settlement/commitEnvelope.js.map +1 -0
- package/dist/transactions/settlement/httpCommitEnvelope.d.ts +54 -0
- package/dist/transactions/settlement/httpCommitEnvelope.d.ts.map +1 -0
- package/dist/transactions/settlement/httpCommitEnvelope.js +208 -0
- package/dist/transactions/settlement/httpCommitEnvelope.js.map +1 -0
- package/dist/transactions/settlement/idempotencyKey.d.ts +11 -0
- package/dist/transactions/settlement/idempotencyKey.d.ts.map +1 -0
- package/dist/transactions/settlement/idempotencyKey.js +10 -0
- package/dist/transactions/settlement/idempotencyKey.js.map +1 -0
- package/dist/transactions/settlement/pendingWrite.d.ts +113 -0
- package/dist/transactions/settlement/pendingWrite.d.ts.map +1 -0
- package/dist/transactions/settlement/pendingWrite.js +21 -0
- package/dist/transactions/settlement/pendingWrite.js.map +1 -0
- package/dist/transport/commitFrames.d.ts +91 -0
- package/dist/transport/commitFrames.d.ts.map +1 -0
- package/dist/transport/commitFrames.js +135 -0
- package/dist/transport/commitFrames.js.map +1 -0
- package/dist/transport/connectionManager.d.ts +216 -0
- package/dist/transport/connectionManager.d.ts.map +1 -0
- package/dist/transport/connectionManager.js +674 -0
- package/dist/transport/connectionManager.js.map +1 -0
- package/dist/transport/credentialLifecycle.d.ts +178 -0
- package/dist/transport/credentialLifecycle.d.ts.map +1 -0
- package/dist/transport/credentialLifecycle.js +324 -0
- package/dist/transport/credentialLifecycle.js.map +1 -0
- package/dist/transport/heartbeat.d.ts +66 -0
- package/dist/transport/heartbeat.d.ts.map +1 -0
- package/dist/transport/heartbeat.js +94 -0
- package/dist/transport/heartbeat.js.map +1 -0
- package/dist/transport/httpClient.d.ts +143 -0
- package/dist/transport/httpClient.d.ts.map +1 -0
- package/dist/transport/httpClient.js +150 -0
- package/dist/transport/httpClient.js.map +1 -0
- package/dist/transport/httpFeed.d.ts +4 -0
- package/dist/transport/httpFeed.d.ts.map +1 -0
- package/dist/transport/httpFeed.js +94 -0
- package/dist/transport/httpFeed.js.map +1 -0
- package/dist/transport/httpOptions.d.ts +34 -0
- package/dist/transport/httpOptions.d.ts.map +1 -0
- package/dist/transport/httpOptions.js +13 -0
- package/dist/transport/httpOptions.js.map +1 -0
- package/dist/transport/httpTransport.d.ts +68 -0
- package/dist/transport/httpTransport.d.ts.map +1 -0
- package/dist/transport/httpTransport.js +1433 -0
- package/dist/transport/httpTransport.js.map +1 -0
- package/dist/transport/networkProbe.d.ts +85 -0
- package/dist/transport/networkProbe.d.ts.map +1 -0
- package/dist/transport/networkProbe.js +208 -0
- package/dist/transport/networkProbe.js.map +1 -0
- package/dist/transport/wsFrameHandlers.d.ts +129 -0
- package/dist/transport/wsFrameHandlers.d.ts.map +1 -0
- package/dist/transport/wsFrameHandlers.js +429 -0
- package/dist/transport/wsFrameHandlers.js.map +1 -0
- package/dist/transport/wsTransport.d.ts +575 -0
- package/dist/transport/wsTransport.d.ts.map +1 -0
- package/dist/transport/wsTransport.js +1024 -0
- package/dist/transport/wsTransport.js.map +1 -0
- package/dist/types/assertExact.d.ts +18 -0
- package/dist/types/assertExact.d.ts.map +1 -0
- package/dist/types/assertExact.js +2 -0
- package/dist/types/assertExact.js.map +1 -0
- package/dist/types/global.d.ts +108 -0
- package/dist/types/global.d.ts.map +1 -0
- package/dist/types/global.js +41 -0
- package/dist/types/global.js.map +1 -0
- package/dist/types/index.d.ts +206 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +57 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/modelData.d.ts +11 -0
- package/dist/types/modelData.d.ts.map +1 -0
- package/dist/types/modelData.js +10 -0
- package/dist/types/modelData.js.map +1 -0
- package/dist/types/participant.d.ts +21 -0
- package/dist/types/participant.d.ts.map +1 -0
- package/dist/types/participant.js +11 -0
- package/dist/types/participant.js.map +1 -0
- package/dist/types/streams.d.ts +545 -0
- package/dist/types/streams.d.ts.map +1 -0
- package/dist/types/streams.js +12 -0
- package/dist/types/streams.js.map +1 -0
- package/dist/utils/asyncIterator.d.ts +35 -0
- package/dist/utils/asyncIterator.d.ts.map +1 -0
- package/dist/utils/asyncIterator.js +136 -0
- package/dist/utils/asyncIterator.js.map +1 -0
- package/dist/utils/duration.d.ts +51 -0
- package/dist/utils/duration.d.ts.map +1 -0
- package/dist/utils/duration.js +78 -0
- package/dist/utils/duration.js.map +1 -0
- package/dist/utils/json.d.ts +58 -0
- package/dist/utils/json.d.ts.map +1 -0
- package/dist/utils/json.js +277 -0
- package/dist/utils/json.js.map +1 -0
- package/dist/webhooks/events.d.ts +44 -0
- package/dist/webhooks/events.d.ts.map +1 -0
- package/dist/webhooks/events.js +43 -0
- package/dist/webhooks/events.js.map +1 -0
- package/dist/webhooks/index.d.ts +9 -0
- package/dist/webhooks/index.d.ts.map +1 -0
- package/dist/webhooks/index.js +9 -0
- package/dist/webhooks/index.js.map +1 -0
- package/dist/wire/accountResponses.d.ts +463 -0
- package/dist/wire/accountResponses.d.ts.map +1 -0
- package/dist/wire/accountResponses.js +294 -0
- package/dist/wire/accountResponses.js.map +1 -0
- package/dist/wire/auth.d.ts +57 -0
- package/dist/wire/auth.d.ts.map +1 -0
- package/dist/wire/auth.js +71 -0
- package/dist/wire/auth.js.map +1 -0
- package/dist/wire/bootstrapReason.d.ts +10 -0
- package/dist/wire/bootstrapReason.d.ts.map +1 -0
- package/dist/wire/bootstrapReason.js +9 -0
- package/dist/wire/bootstrapReason.js.map +1 -0
- package/dist/wire/claimEvent.d.ts +70 -0
- package/dist/wire/claimEvent.d.ts.map +1 -0
- package/dist/wire/claimEvent.js +74 -0
- package/dist/wire/claimEvent.js.map +1 -0
- package/dist/wire/claims.d.ts +475 -0
- package/dist/wire/claims.d.ts.map +1 -0
- package/dist/wire/claims.js +326 -0
- package/dist/wire/claims.js.map +1 -0
- package/dist/wire/commit.d.ts +604 -0
- package/dist/wire/commit.d.ts.map +1 -0
- package/dist/wire/commit.js +322 -0
- package/dist/wire/commit.js.map +1 -0
- package/dist/wire/delta.d.ts +251 -0
- package/dist/wire/delta.d.ts.map +1 -0
- package/dist/wire/delta.js +148 -0
- package/dist/wire/delta.js.map +1 -0
- package/dist/wire/errorEnvelope.d.ts +73 -0
- package/dist/wire/errorEnvelope.d.ts.map +1 -0
- package/dist/wire/errorEnvelope.js +124 -0
- package/dist/wire/errorEnvelope.js.map +1 -0
- package/dist/wire/feedCursor.d.ts +61 -0
- package/dist/wire/feedCursor.d.ts.map +1 -0
- package/dist/wire/feedCursor.js +83 -0
- package/dist/wire/feedCursor.js.map +1 -0
- package/dist/wire/feedEvent.d.ts +264 -0
- package/dist/wire/feedEvent.d.ts.map +1 -0
- package/dist/wire/feedEvent.js +66 -0
- package/dist/wire/feedEvent.js.map +1 -0
- package/dist/wire/frames.d.ts +195 -0
- package/dist/wire/frames.d.ts.map +1 -0
- package/dist/wire/frames.js +51 -0
- package/dist/wire/frames.js.map +1 -0
- package/dist/wire/inboundFrames.d.ts +490 -0
- package/dist/wire/inboundFrames.d.ts.map +1 -0
- package/dist/wire/inboundFrames.js +117 -0
- package/dist/wire/inboundFrames.js.map +1 -0
- package/dist/wire/index.d.ts +55 -0
- package/dist/wire/index.d.ts.map +1 -0
- package/dist/wire/index.js +84 -0
- package/dist/wire/index.js.map +1 -0
- package/dist/wire/listEnvelope.d.ts +38 -0
- package/dist/wire/listEnvelope.d.ts.map +1 -0
- package/dist/wire/listEnvelope.js +43 -0
- package/dist/wire/listEnvelope.js.map +1 -0
- package/dist/wire/modelMutations.d.ts +32 -0
- package/dist/wire/modelMutations.d.ts.map +1 -0
- package/dist/wire/modelMutations.js +53 -0
- package/dist/wire/modelMutations.js.map +1 -0
- package/dist/wire/modelResponses.d.ts +79 -0
- package/dist/wire/modelResponses.d.ts.map +1 -0
- package/dist/wire/modelResponses.js +44 -0
- package/dist/wire/modelResponses.js.map +1 -0
- package/dist/wire/modelShape.d.ts +79 -0
- package/dist/wire/modelShape.d.ts.map +1 -0
- package/dist/wire/modelShape.js +75 -0
- package/dist/wire/modelShape.js.map +1 -0
- package/dist/wire/protocol.d.ts +39 -0
- package/dist/wire/protocol.d.ts.map +1 -0
- package/dist/wire/protocol.js +39 -0
- package/dist/wire/protocol.js.map +1 -0
- package/dist/wire/protocolVersion.d.ts +74 -0
- package/dist/wire/protocolVersion.d.ts.map +1 -0
- package/dist/wire/protocolVersion.js +84 -0
- package/dist/wire/protocolVersion.js.map +1 -0
- package/package.json +187 -0
- package/src/ablo.ts +139 -0
- package/src/ai-sdk/coordinatedTool.ts +214 -0
- package/src/ai-sdk/index.ts +7 -0
- package/src/auth/apiKey.ts +540 -0
- package/src/auth/bootstrapScope.ts +15 -0
- package/src/auth/browserCredentialSafety.ts +48 -0
- package/src/auth/capability.ts +326 -0
- package/src/auth/capabilityLifecycle.ts +174 -0
- package/src/auth/credentialEndpoint.ts +79 -0
- package/src/auth/credentialEndpointProtocol.ts +51 -0
- package/src/auth/credentialKind.ts +20 -0
- package/src/auth/credentialPolicy.ts +244 -0
- package/src/auth/credentialResult.ts +23 -0
- package/src/auth/credentialSource.ts +99 -0
- package/src/auth/hostedEndpoints.ts +24 -0
- package/src/auth/identity.ts +330 -0
- package/src/auth/index.ts +592 -0
- package/src/auth/schemas.ts +94 -0
- package/src/auth/sessionMint.ts +126 -0
- package/src/auth/token.ts +4 -0
- package/src/batching/index.ts +200 -0
- package/src/coordination/awaitClaimGrant.ts +243 -0
- package/src/coordination/claimHeartbeatLoop.ts +165 -0
- package/src/coordination/claimMeta.ts +56 -0
- package/src/coordination/events.ts +86 -0
- package/src/coordination/index.ts +181 -0
- package/src/coordination/locator.ts +200 -0
- package/src/coordination/schema.ts +1346 -0
- package/src/coordination/targetConflict.ts +85 -0
- package/src/coordination/trace.ts +173 -0
- package/src/docs/catalog.ts +274 -0
- package/src/docs/index.ts +18 -0
- package/src/durableWrites.ts +134 -0
- package/src/environment.ts +132 -0
- package/src/errorCodes.ts +1591 -0
- package/src/errors.ts +918 -0
- package/src/footprint.ts +0 -0
- package/src/headlessClient.ts +161 -0
- package/src/index.ts +52 -0
- package/src/keys/index.ts +254 -0
- package/src/log/syncDeltaRow.ts +119 -0
- package/src/logger.ts +22 -0
- package/src/observability.ts +85 -0
- package/src/policy/types.ts +292 -0
- package/src/resources/functionalUpdate.ts +151 -0
- package/src/resources/httpResources.ts +520 -0
- package/src/resources/modelOperations.ts +444 -0
- package/src/resources/mutationOptions.ts +66 -0
- package/src/resources/where.ts +160 -0
- package/src/resources/writeOptionsSchema.ts +91 -0
- package/src/schema/coordination.ts +161 -0
- package/src/schema/ddl.ts +593 -0
- package/src/schema/ddlLock.ts +53 -0
- package/src/schema/diff.ts +489 -0
- package/src/schema/field.ts +321 -0
- package/src/schema/fieldRef.ts +88 -0
- package/src/schema/generate.ts +95 -0
- package/src/schema/index.ts +278 -0
- package/src/schema/loadStrategy.ts +52 -0
- package/src/schema/model.ts +476 -0
- package/src/schema/openapi.ts +658 -0
- package/src/schema/queries.ts +273 -0
- package/src/schema/relation.ts +291 -0
- package/src/schema/residency.ts +30 -0
- package/src/schema/roles.ts +325 -0
- package/src/schema/schema.ts +825 -0
- package/src/schema/select.ts +115 -0
- package/src/schema/serialize.ts +373 -0
- package/src/schema/sugar.ts +194 -0
- package/src/schema/tenancy.ts +221 -0
- package/src/server/adapter.ts +203 -0
- package/src/server/commit.ts +109 -0
- package/src/server/index.ts +26 -0
- package/src/server/readConfig.ts +82 -0
- package/src/server/storageMode.ts +20 -0
- package/src/source/adapter.ts +85 -0
- package/src/source/adapters/drizzle.ts +291 -0
- package/src/source/adapters/kysely.ts +346 -0
- package/src/source/adapters/kyselyMutationCore.ts +220 -0
- package/src/source/adapters/memory.ts +154 -0
- package/src/source/adapters/prisma.ts +282 -0
- package/src/source/conformance.ts +287 -0
- package/src/source/connector.ts +394 -0
- package/src/source/connectorProtocol.ts +189 -0
- package/src/source/contract.ts +221 -0
- package/src/source/drizzle.ts +1 -0
- package/src/source/factory.ts +444 -0
- package/src/source/idempotency.ts +189 -0
- package/src/source/index.ts +182 -0
- package/src/source/kysely.ts +2 -0
- package/src/source/migrations.ts +109 -0
- package/src/source/next.ts +38 -0
- package/src/source/pushQueue.ts +368 -0
- package/src/source/signing.ts +279 -0
- package/src/source/types.ts +502 -0
- package/src/syncLog/contract.ts +32 -0
- package/src/syncLog/index.ts +1 -0
- package/src/testing/fixtures/httpResponses.ts +155 -0
- package/src/transactionLayer.ts +122 -0
- package/src/transactions/settlement/commitEnvelope.ts +192 -0
- package/src/transactions/settlement/httpCommitEnvelope.ts +250 -0
- package/src/transactions/settlement/idempotencyKey.ts +11 -0
- package/src/transactions/settlement/pendingWrite.ts +24 -0
- package/src/transport/commitFrames.ts +225 -0
- package/src/transport/connectionManager.ts +856 -0
- package/src/transport/credentialLifecycle.ts +389 -0
- package/src/transport/heartbeat.ts +118 -0
- package/src/transport/httpClient.ts +354 -0
- package/src/transport/httpFeed.ts +111 -0
- package/src/transport/httpOptions.ts +41 -0
- package/src/transport/httpTransport.ts +1976 -0
- package/src/transport/networkProbe.ts +249 -0
- package/src/transport/wsFrameHandlers.ts +619 -0
- package/src/transport/wsTransport.ts +1491 -0
- package/src/types/assertExact.ts +17 -0
- package/src/types/global.ts +123 -0
- package/src/types/index.ts +270 -0
- package/src/types/modelData.ts +11 -0
- package/src/types/participant.ts +22 -0
- package/src/types/streams.ts +702 -0
- package/src/utils/asyncIterator.ts +141 -0
- package/src/utils/duration.ts +88 -0
- package/src/utils/json.ts +281 -0
- package/src/webhooks/events.ts +96 -0
- package/src/webhooks/index.ts +12 -0
- package/src/wire/accountResponses.ts +328 -0
- package/src/wire/auth.ts +86 -0
- package/src/wire/bootstrapReason.ts +10 -0
- package/src/wire/claimEvent.ts +85 -0
- package/src/wire/claims.ts +370 -0
- package/src/wire/commit.ts +379 -0
- package/src/wire/delta.ts +173 -0
- package/src/wire/errorEnvelope.ts +133 -0
- package/src/wire/feedCursor.ts +91 -0
- package/src/wire/feedEvent.ts +74 -0
- package/src/wire/frames.ts +77 -0
- package/src/wire/inboundFrames.ts +182 -0
- package/src/wire/index.ts +328 -0
- package/src/wire/listEnvelope.ts +51 -0
- package/src/wire/modelMutations.ts +55 -0
- package/src/wire/modelResponses.ts +48 -0
- package/src/wire/modelShape.ts +83 -0
- package/src/wire/protocol.ts +39 -0
- package/src/wire/protocolVersion.ts +97 -0
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The resume position for `GET /v1/logs`.
|
|
3
|
+
*
|
|
4
|
+
* The feed merges two independently-sequenced sources — the settlement log and
|
|
5
|
+
* the claim-event log — so one opaque cursor has to carry two positions. They
|
|
6
|
+
* cannot share a sequence: allocating claim positions from `next_sync_id` would
|
|
7
|
+
* put ephemeral leases into the log that clients materialize rows from and that
|
|
8
|
+
* WAL-echo promotion and compaction operate over, where a claim-churn storm
|
|
9
|
+
* would be indistinguishable from committed change.
|
|
10
|
+
*
|
|
11
|
+
* Encoded `"<log>.<claims>"`, and a bare `"<log>"` still parses — cursors are
|
|
12
|
+
* persisted by callers, and every one issued before this existed is a plain
|
|
13
|
+
* delta id. Those resume at claim position 0, which is correct: a caller who
|
|
14
|
+
* never asked for claim events has no claim position to preserve.
|
|
15
|
+
*
|
|
16
|
+
* **A malformed cursor is an error, never a position.** The previous reader was
|
|
17
|
+
* `parseInt(raw, 10)` with `NaN ? 0 : n`, so a truncated or garbled cursor
|
|
18
|
+
* silently resumed from the beginning of the log and replayed it in full. That
|
|
19
|
+
* is the worst available failure: it looks like a working follow, and the
|
|
20
|
+
* damage scales with how long the log has been running. Parsing returns null
|
|
21
|
+
* and the route answers `invalid_request`.
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
import { z } from 'zod';
|
|
25
|
+
|
|
26
|
+
export const feedCursorSchema = z.object({
|
|
27
|
+
/** Last delta id delivered. */
|
|
28
|
+
log: z.number().int().nonnegative(),
|
|
29
|
+
/** Last claim-event seq delivered. */
|
|
30
|
+
claims: z.number().int().nonnegative(),
|
|
31
|
+
});
|
|
32
|
+
export type FeedCursor = z.infer<typeof feedCursorSchema>;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* The cursor grammar, in one place, so the parser and the error that rejects a
|
|
36
|
+
* bad one cannot describe it differently. A reader who is told what shape was
|
|
37
|
+
* expected can fix the call; a reader told only that theirs was wrong cannot.
|
|
38
|
+
*/
|
|
39
|
+
export const FEED_CURSOR_FORMAT = '<log>[.<claims>]';
|
|
40
|
+
|
|
41
|
+
/** A cursor that shows the grammar rather than only naming it. */
|
|
42
|
+
export const FEED_CURSOR_EXAMPLE = '4210.17';
|
|
43
|
+
|
|
44
|
+
/** The cursor a caller resumes from when they send none. */
|
|
45
|
+
export const FEED_CURSOR_START: FeedCursor = { log: 0, claims: 0 };
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Reads a wire cursor. Returns null when the string is not one — the caller
|
|
49
|
+
* turns that into `invalid_request` rather than guessing a position.
|
|
50
|
+
*
|
|
51
|
+
* Deliberately strict: only digits and at most one separator. `Number()` alone
|
|
52
|
+
* would accept `'1e3'`, `'0x10'`, `' 42 '`, and `''`, each of which would
|
|
53
|
+
* resume somewhere the caller did not ask for.
|
|
54
|
+
*/
|
|
55
|
+
export function parseFeedCursor(raw: string): FeedCursor | null {
|
|
56
|
+
const match = /^(\d+)(?:\.(\d+))?$/.exec(raw);
|
|
57
|
+
if (!match) return null;
|
|
58
|
+
const parsed = feedCursorSchema.safeParse({
|
|
59
|
+
log: Number(match[1]),
|
|
60
|
+
claims: match[2] === undefined ? 0 : Number(match[2]),
|
|
61
|
+
});
|
|
62
|
+
if (!parsed.success) return null;
|
|
63
|
+
// Beyond 2^53 the positions stop round-tripping through JSON's number type,
|
|
64
|
+
// and a cursor that cannot round-trip is not a cursor.
|
|
65
|
+
if (
|
|
66
|
+
!Number.isSafeInteger(parsed.data.log) ||
|
|
67
|
+
!Number.isSafeInteger(parsed.data.claims)
|
|
68
|
+
) {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
return parsed.data;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/** Writes a wire cursor. Always both positions, so the shape never varies. */
|
|
75
|
+
export function formatFeedCursor(cursor: FeedCursor): string {
|
|
76
|
+
return `${cursor.log}.${cursor.claims}`;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Whether `next` is ahead of `prev` on either axis — the guard a follow loop
|
|
81
|
+
* needs so a stale or duplicated page cannot rewind it.
|
|
82
|
+
*
|
|
83
|
+
* It lives here because the alternative is what every caller reaches for first:
|
|
84
|
+
* comparing the cursor STRINGS as numbers. `Number('42.10')` is `42.1`, which
|
|
85
|
+
* compares as *behind* `42.9` and re-serializes as `'42.1'` — a cursor that
|
|
86
|
+
* silently skips eight claim positions and looks like it worked. A cursor is
|
|
87
|
+
* opaque to its holder; only this module takes it apart.
|
|
88
|
+
*/
|
|
89
|
+
export function feedCursorAdvanced(prev: FeedCursor, next: FeedCursor): boolean {
|
|
90
|
+
return next.log > prev.log || next.claims > prev.claims;
|
|
91
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What `GET /v1/logs` returns: one envelope, two arms.
|
|
3
|
+
*
|
|
4
|
+
* The feed answers two questions that a caller without a socket cannot
|
|
5
|
+
* otherwise ask — "what changed" and "who is working on what" — and it answers
|
|
6
|
+
* them through one endpoint, one envelope, and one cursor grammar rather than
|
|
7
|
+
* growing a second feed with its own pagination dialect beside the first.
|
|
8
|
+
*
|
|
9
|
+
* The arms stay separately sequenced. A claim is a lease, not a settled fact,
|
|
10
|
+
* and putting one into the log that clients materialize rows from — and that
|
|
11
|
+
* WAL-echo promotion and compaction operate over — would make a claim-churn
|
|
12
|
+
* storm indistinguishable from committed change. They share a reading, not a
|
|
13
|
+
* sequence; {@link FeedCursor} is what carries both positions.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
import { z } from 'zod';
|
|
17
|
+
import { logEventSchema, logOpSchema, type LogEvent } from './accountResponses.js';
|
|
18
|
+
import { claimEventSchema, type ClaimEvent } from './claimEvent.js';
|
|
19
|
+
import { listEnvelopeSchema, type ListEnvelope } from './listEnvelope.js';
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* One entry, from either source. Discriminated on `object`, so a consumer
|
|
23
|
+
* reading an arm it does not know still parses the page and can skip the entry
|
|
24
|
+
* — which is what lets the claim arm be added to a running feed at all.
|
|
25
|
+
*/
|
|
26
|
+
export const feedEventSchema = z.discriminatedUnion('object', [
|
|
27
|
+
logEventSchema,
|
|
28
|
+
claimEventSchema,
|
|
29
|
+
]);
|
|
30
|
+
export type FeedEvent = LogEvent | ClaimEvent;
|
|
31
|
+
|
|
32
|
+
/** `GET /v1/logs` — the canonical list envelope over the feed. */
|
|
33
|
+
export const logListResponseSchema = listEnvelopeSchema(feedEventSchema);
|
|
34
|
+
export type LogListResponse = ListEnvelope<FeedEvent>;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* The query string on `GET /v1/logs`.
|
|
38
|
+
*
|
|
39
|
+
* Values arrive as strings, so this describes the wire spelling rather than the
|
|
40
|
+
* parsed result — the same reason {@link listQuerySchema} does.
|
|
41
|
+
*
|
|
42
|
+
* Scope is NOT here and never will be: the plane, the organization and the sync
|
|
43
|
+
* groups all come off the credential. A caller cannot widen what it sees by
|
|
44
|
+
* asking, which is what makes this feed safe to hand an agent.
|
|
45
|
+
*/
|
|
46
|
+
export const logQuerySchema = z.object({
|
|
47
|
+
/**
|
|
48
|
+
* The `next_cursor` from the previous page, copied back unchanged. Omit it to
|
|
49
|
+
* start from the most recent entries — this is a tail, so the first page is
|
|
50
|
+
* the end of the log and `after` walks forward from there.
|
|
51
|
+
*/
|
|
52
|
+
after: z.string().optional(),
|
|
53
|
+
/** Entries per page. Clamped server-side; the default is a short tail. */
|
|
54
|
+
limit: z.string().optional(),
|
|
55
|
+
/** Only this model's entries. */
|
|
56
|
+
model: z.string().optional(),
|
|
57
|
+
/** Only this kind of change. */
|
|
58
|
+
op: logOpSchema.optional(),
|
|
59
|
+
/** Only entries at or after this ISO 8601 timestamp. */
|
|
60
|
+
since: z.string().optional(),
|
|
61
|
+
});
|
|
62
|
+
export type LogQuery = z.infer<typeof logQuerySchema>;
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* The claim arm has no producer yet: claim transitions are broadcast today and
|
|
66
|
+
* recorded nowhere, so there is no sequence to read `seq` from. Until that log
|
|
67
|
+
* exists the route emits only `log_event`s, and there is deliberately NO
|
|
68
|
+
* request parameter for selecting arms — a knob that cannot be honoured is how
|
|
69
|
+
* a contract comes to describe a server that does not exist.
|
|
70
|
+
*
|
|
71
|
+
* What is here is the definition the producer will fill: the union parses
|
|
72
|
+
* today's pages unchanged, and the cursor already carries the second position.
|
|
73
|
+
*/
|
|
74
|
+
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The write-path message shapes for the sync protocol. These cover the frames
|
|
3
|
+
* a client sends to commit work — {@link CommitMessage}, a batch of raw
|
|
4
|
+
* operations — and the server's {@link MutationResultMessage}
|
|
5
|
+
* acknowledgement. The same frames flow over a WebSocket connection and over
|
|
6
|
+
* the HTTP commit endpoint.
|
|
7
|
+
*
|
|
8
|
+
* Both the client and the server import these definitions from here, so the two
|
|
9
|
+
* sides cannot drift. Zod schemas are the definition site and every TypeScript
|
|
10
|
+
* shape is inferred from them. Changing any schema in this file changes the
|
|
11
|
+
* wire contract and requires the client and server to update together.
|
|
12
|
+
*/
|
|
13
|
+
import { z } from 'zod';
|
|
14
|
+
// The runtime schema primitives are imported straight from the coordination
|
|
15
|
+
// schema module to keep this file's runtime dependencies limited to Zod.
|
|
16
|
+
import {
|
|
17
|
+
commitOperationSchema as coordinationCommitOperationSchema,
|
|
18
|
+
readDependencySchema,
|
|
19
|
+
trackDependencySchema,
|
|
20
|
+
} from '../coordination/schema.js';
|
|
21
|
+
import type { MutationResultMessageWire } from './commit.js';
|
|
22
|
+
|
|
23
|
+
// ── Client → Server ────────────────────────────────────────────────────────
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* A single operation within a commit batch and its authoritative runtime
|
|
27
|
+
* validator. Each operation is the smallest unit the server applies atomically
|
|
28
|
+
* — one create, update, delete, archive, or unarchive against one model row.
|
|
29
|
+
* Both commit transports — the WebSocket `commit` frame and the HTTP
|
|
30
|
+
* `/v1/commits` endpoint — run this check
|
|
31
|
+
* on every operation before it is applied, so a malformed operation is rejected
|
|
32
|
+
* at the edge. It builds on the shared coordination schema, widening `bypass`
|
|
33
|
+
* to also accept `null`. The TypeScript type is inferred from this schema so
|
|
34
|
+
* the runtime and compile-time contracts have one definition site.
|
|
35
|
+
*/
|
|
36
|
+
export const wireCommitOperationSchema = coordinationCommitOperationSchema.extend({
|
|
37
|
+
bypass: z.boolean().nullish(),
|
|
38
|
+
});
|
|
39
|
+
export type WireCommitOperation = z.infer<typeof wireCommitOperationSchema>;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* @deprecated Renamed to {@link WireCommitOperation} — coordination/schema owns
|
|
43
|
+
* the base `CommitOperation`; this is the wire-extended form, and the two are
|
|
44
|
+
* different types that shared one name. Removed in 0.36.0.
|
|
45
|
+
*/
|
|
46
|
+
export type CommitOperation = WireCommitOperation;
|
|
47
|
+
/** @deprecated Renamed to {@link wireCommitOperationSchema}. Removed in 0.36.0. */
|
|
48
|
+
export const commitOperationSchema = wireCommitOperationSchema;
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* The authoritative payload schema for a client-to-server commit frame. It
|
|
52
|
+
* checks every field the server acts on — `operations`, `clientTxId`, and
|
|
53
|
+
* `reads` — validating each operation with {@link wireCommitOperationSchema} and
|
|
54
|
+
* each premise entry with the shared {@link readDependencySchema}.
|
|
55
|
+
*/
|
|
56
|
+
export const commitPayloadSchema = z.object({
|
|
57
|
+
operations: z.array(wireCommitOperationSchema),
|
|
58
|
+
clientTxId: z.string(),
|
|
59
|
+
reads: z.array(readDependencySchema).nullish(),
|
|
60
|
+
track: z.array(trackDependencySchema).nullish(),
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
/** A client-to-server frame that asks the server to commit a batch atomically. */
|
|
64
|
+
export const commitMessageSchema = z.object({
|
|
65
|
+
type: z.literal('commit'),
|
|
66
|
+
payload: commitPayloadSchema,
|
|
67
|
+
});
|
|
68
|
+
export type CommitMessage = z.infer<typeof commitMessageSchema>;
|
|
69
|
+
|
|
70
|
+
// ── Server → Client ──────────────────────────────────────────────────────
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* The server's acknowledgement of a {@link CommitMessage}. Runtime shape and
|
|
74
|
+
* TypeScript type are both owned by `wire/commit.ts`; HTTP, WebSocket, and
|
|
75
|
+
* cached replay no longer maintain parallel receipt declarations.
|
|
76
|
+
*/
|
|
77
|
+
export type MutationResultMessage = MutationResultMessageWire;
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Every frame the server can send, in one list.
|
|
3
|
+
*
|
|
4
|
+
* Before this existed, "what frames are there" was answerable only by reading
|
|
5
|
+
* the dispatch table, the transport's event map, and each handler's defensive
|
|
6
|
+
* narrowing together — three places that agreed by convention. This registry is
|
|
7
|
+
* the single answer, and it carries how each frame's payload is validated.
|
|
8
|
+
*
|
|
9
|
+
* A frame is validated one of two ways. Most carry a `payload` schema and are
|
|
10
|
+
* parsed here, before the handler runs, so a handler receives a value whose
|
|
11
|
+
* shape is already proven. The rest are marked `handler` because their
|
|
12
|
+
* validation is genuinely load-bearing elsewhere — a delta is checked once
|
|
13
|
+
* downstream against the schema the materialiser holds, and a commit receipt
|
|
14
|
+
* has to tolerate an older server's spelling before it can be parsed. Each of
|
|
15
|
+
* those says where its check lives, so `handler` is a citation and never an
|
|
16
|
+
* excuse.
|
|
17
|
+
*
|
|
18
|
+
* A frame type absent from this registry is rejected. That is deliberate: the
|
|
19
|
+
* server and this package ship from one repository, so an unrecognised frame
|
|
20
|
+
* means the two have drifted, and failing loudly beats materialising a change
|
|
21
|
+
* nobody validated. Application-level collaboration events are the exception —
|
|
22
|
+
* they are registered by the consumer at construction time, not by the
|
|
23
|
+
* protocol, and are dispatched separately.
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
import { z } from 'zod';
|
|
27
|
+
import { commitReceiptSchema } from './commit.js';
|
|
28
|
+
import { clientSyncDeltaSchema } from './delta.js';
|
|
29
|
+
import {
|
|
30
|
+
claimAcquiredSchema,
|
|
31
|
+
claimExpiredSchema,
|
|
32
|
+
claimGrantedSchema,
|
|
33
|
+
claimHeartbeatAckPayloadSchema,
|
|
34
|
+
claimLostSchema,
|
|
35
|
+
claimQueuedSchema,
|
|
36
|
+
claimQueueSchema,
|
|
37
|
+
claimRejectionSchema,
|
|
38
|
+
presenceUpdateSchema,
|
|
39
|
+
subscriptionAckPayloadSchema,
|
|
40
|
+
} from '../coordination/schema.js';
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* The envelope itself: a type and a payload. `catchall` keeps the extra keys,
|
|
44
|
+
* because the oldest delta form puts a delta's own fields at the top level
|
|
45
|
+
* instead of under `payload`, and the dispatcher still has to recognise it.
|
|
46
|
+
*/
|
|
47
|
+
export const wsInboundEnvelopeSchema = z
|
|
48
|
+
.object({
|
|
49
|
+
type: z.string().optional(),
|
|
50
|
+
payload: z.unknown().optional(),
|
|
51
|
+
})
|
|
52
|
+
.catchall(z.unknown());
|
|
53
|
+
export type WsInboundEnvelope = z.infer<typeof wsInboundEnvelopeSchema>;
|
|
54
|
+
|
|
55
|
+
/** How one frame's payload is checked. */
|
|
56
|
+
export type InboundFrameContract =
|
|
57
|
+
/** Parsed against `payload` before the handler runs. */
|
|
58
|
+
| { readonly validation: 'schema'; readonly payload: z.ZodType }
|
|
59
|
+
/**
|
|
60
|
+
* Checked inside the handler. `where` says which handler, and `checkedBy`
|
|
61
|
+
* names the schema it parses with — as the schema itself, not its name in
|
|
62
|
+
* prose, so renaming or deleting it fails the build here instead of leaving
|
|
63
|
+
* a citation pointing at nothing. Frames whose check is a hand-narrowing or
|
|
64
|
+
* lives in another package have no symbol to point at and carry only `where`.
|
|
65
|
+
*/
|
|
66
|
+
| {
|
|
67
|
+
readonly validation: 'handler';
|
|
68
|
+
readonly where: string;
|
|
69
|
+
readonly checkedBy?: z.ZodType;
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* The protocol's inbound surface. Adding a frame to the server means adding it
|
|
74
|
+
* here, which is the point — the compiler cannot enforce that, but the throw on
|
|
75
|
+
* an unrecognised type does.
|
|
76
|
+
*/
|
|
77
|
+
export const WS_INBOUND_FRAMES = {
|
|
78
|
+
// ── Keepalive ──────────────────────────────────────────────────────────
|
|
79
|
+
ping: { validation: 'handler', where: 'dispatchWsFrame — ignored, no payload' },
|
|
80
|
+
pong: { validation: 'handler', where: 'dispatchWsFrame — ignored, no payload' },
|
|
81
|
+
|
|
82
|
+
// ── Materialisation ────────────────────────────────────────────────────
|
|
83
|
+
delta: {
|
|
84
|
+
validation: 'handler',
|
|
85
|
+
// Not parsed at dispatch because a delta frame carries a batch: each entry
|
|
86
|
+
// is validated on its own so one malformed delta is dropped rather than
|
|
87
|
+
// sinking the batch around it.
|
|
88
|
+
where: 'the materialiser parses each delta as it applies it',
|
|
89
|
+
checkedBy: clientSyncDeltaSchema,
|
|
90
|
+
},
|
|
91
|
+
sync_response: {
|
|
92
|
+
validation: 'handler',
|
|
93
|
+
// No `checkedBy`: the schema lives in the reactive engine
|
|
94
|
+
// (`sync/schemas.ts`), which consumes this package. The core cannot name a
|
|
95
|
+
// symbol from its own consumer, and inverting the dependency to make this
|
|
96
|
+
// citation checkable would put materialisation vocabulary in the core —
|
|
97
|
+
// the exact thing the seam exists to keep out.
|
|
98
|
+
where: 'the reactive engine validates it while advancing its resume cursor',
|
|
99
|
+
},
|
|
100
|
+
bootstrap_response: {
|
|
101
|
+
validation: 'handler',
|
|
102
|
+
// No `checkedBy`, for the same reason as `sync_response` above.
|
|
103
|
+
where: 'the reactive engine validates the bootstrap payload as it applies it',
|
|
104
|
+
},
|
|
105
|
+
|
|
106
|
+
// ── Commit ─────────────────────────────────────────────────────────────
|
|
107
|
+
mutation_result: {
|
|
108
|
+
validation: 'handler',
|
|
109
|
+
where: 'handleMutationResult — it lifts the frame\'s notifications and missingIds alongside the payload before this can parse',
|
|
110
|
+
checkedBy: commitReceiptSchema,
|
|
111
|
+
},
|
|
112
|
+
|
|
113
|
+
// ── Requests we made ───────────────────────────────────────────────────
|
|
114
|
+
claim_ack: {
|
|
115
|
+
validation: 'handler',
|
|
116
|
+
where: 'handleClaimAck narrows field by field, because a rejection carries a typed capability error it has to re-raise as CapabilityError',
|
|
117
|
+
},
|
|
118
|
+
subscription_ack: {
|
|
119
|
+
validation: 'handler',
|
|
120
|
+
// Not parsed at dispatch because the handler must first claim the oldest
|
|
121
|
+
// pending request: a payload that failed here would otherwise leave that
|
|
122
|
+
// request hanging until its timeout instead of being rejected with a cause.
|
|
123
|
+
where: 'handleSubscriptionAck',
|
|
124
|
+
checkedBy: subscriptionAckPayloadSchema,
|
|
125
|
+
},
|
|
126
|
+
|
|
127
|
+
// ── Coordination ───────────────────────────────────────────────────────
|
|
128
|
+
presence_update: { validation: 'schema', payload: presenceUpdateSchema },
|
|
129
|
+
claim_expired: { validation: 'schema', payload: claimExpiredSchema },
|
|
130
|
+
claim_rejected: { validation: 'schema', payload: claimRejectionSchema },
|
|
131
|
+
claim_acquired: { validation: 'schema', payload: claimAcquiredSchema },
|
|
132
|
+
claim_queued: { validation: 'schema', payload: claimQueuedSchema },
|
|
133
|
+
claim_granted: { validation: 'schema', payload: claimGrantedSchema },
|
|
134
|
+
claim_lost: { validation: 'schema', payload: claimLostSchema },
|
|
135
|
+
claim_queue: { validation: 'schema', payload: claimQueueSchema },
|
|
136
|
+
claim_heartbeat_ack: {
|
|
137
|
+
validation: 'schema',
|
|
138
|
+
payload: claimHeartbeatAckPayloadSchema,
|
|
139
|
+
},
|
|
140
|
+
} as const satisfies Record<string, InboundFrameContract>;
|
|
141
|
+
|
|
142
|
+
/** Every frame type the protocol declares. */
|
|
143
|
+
export type InboundFrameType = keyof typeof WS_INBOUND_FRAMES;
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* The validated payload type of each schema-checked frame, read straight off
|
|
147
|
+
* the registry. A handler that takes one of these gets the shape the
|
|
148
|
+
* dispatcher proved, with no second declaration to keep in step and no cast at
|
|
149
|
+
* the point of use.
|
|
150
|
+
*/
|
|
151
|
+
export type InboundFramePayload = {
|
|
152
|
+
[K in InboundFrameType]: (typeof WS_INBOUND_FRAMES)[K] extends {
|
|
153
|
+
readonly payload: infer P extends z.ZodType;
|
|
154
|
+
}
|
|
155
|
+
? z.infer<P>
|
|
156
|
+
: never;
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
/** The frame types the dispatcher parses before calling a handler. */
|
|
160
|
+
export type SchemaValidatedFrameType = {
|
|
161
|
+
[K in InboundFrameType]: (typeof WS_INBOUND_FRAMES)[K] extends {
|
|
162
|
+
readonly validation: 'schema';
|
|
163
|
+
}
|
|
164
|
+
? K
|
|
165
|
+
: never;
|
|
166
|
+
}[InboundFrameType];
|
|
167
|
+
|
|
168
|
+
/** Whether the protocol declares this frame type at all. */
|
|
169
|
+
export function isKnownInboundFrame(type: string): type is InboundFrameType {
|
|
170
|
+
return Object.prototype.hasOwnProperty.call(WS_INBOUND_FRAMES, type);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* Whether this frame's payload is parsed before dispatch. Declared as a
|
|
175
|
+
* predicate, and declared here, because the fact it asserts is a fact about the
|
|
176
|
+
* registry directly above it: the two cannot be edited apart.
|
|
177
|
+
*/
|
|
178
|
+
export function isSchemaValidatedFrame(
|
|
179
|
+
type: InboundFrameType,
|
|
180
|
+
): type is SchemaValidatedFrameType {
|
|
181
|
+
return WS_INBOUND_FRAMES[type].validation === 'schema';
|
|
182
|
+
}
|