@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,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a model is made of — its fields and its edges.
|
|
3
|
+
*
|
|
4
|
+
* These shapes travel twice: they are what `ablo push` serializes into the
|
|
5
|
+
* schema artifact, and what `GET /api/schema` reports back about the artifact
|
|
6
|
+
* that is deployed. Two crossings, one definition, and the definition lives
|
|
7
|
+
* here because `wire/` is the leaf every other layer may depend on.
|
|
8
|
+
*
|
|
9
|
+
* They were TypeScript interfaces, so the schema-read route could not send them
|
|
10
|
+
* without hand-writing a second copy of the record it was refusing to send — the
|
|
11
|
+
* shadow type wearing the fix's clothes. Declared as Zod and derived back into
|
|
12
|
+
* TypeScript, there is nowhere for a second copy to live.
|
|
13
|
+
*
|
|
14
|
+
* **Vocabulary ownership.** `type` is a CLOSED enum: the engine owns the set of
|
|
15
|
+
* types it can store and serialize, so a value outside it is a bug, not an
|
|
16
|
+
* extension. `enumValues` is an OPEN list: the values belong to the application
|
|
17
|
+
* that declared them, and the protocol never interprets one.
|
|
18
|
+
*/
|
|
19
|
+
import { z } from 'zod';
|
|
20
|
+
/**
|
|
21
|
+
* The engine's type vocabulary — closed, and owned by the engine.
|
|
22
|
+
*
|
|
23
|
+
* Each member maps to storage and serialization behaviour, so this is the whole
|
|
24
|
+
* set by construction. A schema's own richer types (a `z.email()`, a branded id)
|
|
25
|
+
* narrow one of these; they do not add a member.
|
|
26
|
+
*/
|
|
27
|
+
export const fieldTypeSchema = z.enum([
|
|
28
|
+
'string',
|
|
29
|
+
'number',
|
|
30
|
+
'boolean',
|
|
31
|
+
'date',
|
|
32
|
+
'enum',
|
|
33
|
+
'json',
|
|
34
|
+
]);
|
|
35
|
+
/** One field of a model, as the schema artifact records it. */
|
|
36
|
+
export const fieldMetaSchema = z.object({
|
|
37
|
+
/** Sync-engine type tag, which maps to storage and serialization hints. */
|
|
38
|
+
type: fieldTypeSchema,
|
|
39
|
+
/** Whether the field was marked optional via `.optional()` or `.nullable()`. */
|
|
40
|
+
isOptional: z.boolean(),
|
|
41
|
+
/** Whether the field was marked indexed via `.indexed()`. */
|
|
42
|
+
isIndexed: z.boolean(),
|
|
43
|
+
/**
|
|
44
|
+
* Physical database column name override. When absent, SQL layers derive the
|
|
45
|
+
* column from the field name using the active casing convention.
|
|
46
|
+
*/
|
|
47
|
+
column: z.string().optional(),
|
|
48
|
+
/**
|
|
49
|
+
* For enums: the allowed values.
|
|
50
|
+
*
|
|
51
|
+
* The application's vocabulary, carried verbatim — an open list, because the
|
|
52
|
+
* protocol has no opinion about what a caller's statuses are called.
|
|
53
|
+
*/
|
|
54
|
+
enumValues: z.array(z.string()).readonly().optional(),
|
|
55
|
+
});
|
|
56
|
+
/**
|
|
57
|
+
* How one model points at another. Closed, like {@link fieldTypeSchema}: the
|
|
58
|
+
* engine resolves exactly these three when it plans a read.
|
|
59
|
+
*/
|
|
60
|
+
export const relationTypeSchema = z.enum(['belongsTo', 'hasMany', 'hasOne']);
|
|
61
|
+
/**
|
|
62
|
+
* One edge of a model — what a caller may expand, and what it expands into.
|
|
63
|
+
*
|
|
64
|
+
* Reported alongside the fields because half the answer is not an answer: an
|
|
65
|
+
* agent asking what a model looks like wants its shape AND its edges, and
|
|
66
|
+
* shipping only the scalars invites the second question immediately.
|
|
67
|
+
*/
|
|
68
|
+
export const relationMetaSchema = z.object({
|
|
69
|
+
type: relationTypeSchema,
|
|
70
|
+
/** The schema key of the model on the other end. */
|
|
71
|
+
target: z.string(),
|
|
72
|
+
/** The field on the owning side that carries the link. */
|
|
73
|
+
foreignKey: z.string(),
|
|
74
|
+
});
|
|
75
|
+
//# sourceMappingURL=modelShape.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modelShape.js","sourceRoot":"","sources":["../../src/wire/modelShape.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC;IACpC,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,MAAM;IACN,MAAM;IACN,MAAM;CACP,CAAC,CAAC;AAGH,+DAA+D;AAC/D,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,2EAA2E;IAC3E,IAAI,EAAE,eAAe;IACrB,gFAAgF;IAChF,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE;IACvB,6DAA6D;IAC7D,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;IACtB;;;OAGG;IACH,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B;;;;;OAKG;IACH,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CACtD,CAAC,CAAC;AAGH;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;AAG7E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,IAAI,EAAE,kBAAkB;IACxB,oDAAoD;IACpD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,0DAA0D;IAC1D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;CACvB,CAAC,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The timing constants both sides of the protocol must agree on: the ping
|
|
3
|
+
* cadence and the lease window derived from it. Defining them here once keeps
|
|
4
|
+
* the client and the server from skewing apart — a change to the ping interval
|
|
5
|
+
* that did not also move the lease window would make claim expiry and presence
|
|
6
|
+
* timeouts disagree between the two.
|
|
7
|
+
*
|
|
8
|
+
* {@link PING_INTERVAL_MS} is how often the connection pings to prove it is
|
|
9
|
+
* alive. {@link LEASE_TTL_MS} is how long a claim or presence entry stays valid
|
|
10
|
+
* without a renewing ping. On the client, these set the heartbeat cadence and
|
|
11
|
+
* the fallback expiry for a claim taken without an explicit lease. On the
|
|
12
|
+
* server, they set the keepalive interval, the lease granted per keepalive, and
|
|
13
|
+
* the presence-entry lifetime, so a silently disconnected client drops off the
|
|
14
|
+
* roster within one lease window.
|
|
15
|
+
*
|
|
16
|
+
* The lease is three ping intervals long and is renewed on every ping, so a
|
|
17
|
+
* live holder always has at least two intervals of runway and a silent one
|
|
18
|
+
* lapses about two missed pings after it stops renewing. The window measures
|
|
19
|
+
* liveness, not how long a task may run: widening the lease without also
|
|
20
|
+
* widening the ping makes holders flap, and neither value should be redefined
|
|
21
|
+
* anywhere else.
|
|
22
|
+
*/
|
|
23
|
+
export declare const PING_INTERVAL_MS = 30000;
|
|
24
|
+
export declare const LEASE_TTL_MS: number;
|
|
25
|
+
/**
|
|
26
|
+
* The WebSocket subprotocols that carry the bearer credential out of the URL.
|
|
27
|
+
*
|
|
28
|
+
* A browser cannot set an `Authorization` header on a WebSocket, so the client
|
|
29
|
+
* offers the token as a `Sec-WebSocket-Protocol` value — `ablo.bearer.<token>` —
|
|
30
|
+
* alongside the real `ablo.sync.v1` protocol the server selects. This keeps the
|
|
31
|
+
* credential out of the query string, which access logs, proxies, and browser
|
|
32
|
+
* history would otherwise capture. The server reads the token from the
|
|
33
|
+
* subprotocol and echoes back only `ablo.sync.v1`, never the token-bearing
|
|
34
|
+
* value. Both the client and the server import these constants, so the
|
|
35
|
+
* handshake format cannot drift.
|
|
36
|
+
*/
|
|
37
|
+
export declare const WS_BEARER_SUBPROTOCOL_PREFIX = "ablo.bearer.";
|
|
38
|
+
export declare const WS_SYNC_SUBPROTOCOL = "ablo.sync.v1";
|
|
39
|
+
//# sourceMappingURL=protocol.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/wire/protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,gBAAgB,QAAS,CAAC;AACvC,eAAO,MAAM,YAAY,QAAuB,CAAC;AAEjD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,4BAA4B,iBAAiB,CAAC;AAC3D,eAAO,MAAM,mBAAmB,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The timing constants both sides of the protocol must agree on: the ping
|
|
3
|
+
* cadence and the lease window derived from it. Defining them here once keeps
|
|
4
|
+
* the client and the server from skewing apart — a change to the ping interval
|
|
5
|
+
* that did not also move the lease window would make claim expiry and presence
|
|
6
|
+
* timeouts disagree between the two.
|
|
7
|
+
*
|
|
8
|
+
* {@link PING_INTERVAL_MS} is how often the connection pings to prove it is
|
|
9
|
+
* alive. {@link LEASE_TTL_MS} is how long a claim or presence entry stays valid
|
|
10
|
+
* without a renewing ping. On the client, these set the heartbeat cadence and
|
|
11
|
+
* the fallback expiry for a claim taken without an explicit lease. On the
|
|
12
|
+
* server, they set the keepalive interval, the lease granted per keepalive, and
|
|
13
|
+
* the presence-entry lifetime, so a silently disconnected client drops off the
|
|
14
|
+
* roster within one lease window.
|
|
15
|
+
*
|
|
16
|
+
* The lease is three ping intervals long and is renewed on every ping, so a
|
|
17
|
+
* live holder always has at least two intervals of runway and a silent one
|
|
18
|
+
* lapses about two missed pings after it stops renewing. The window measures
|
|
19
|
+
* liveness, not how long a task may run: widening the lease without also
|
|
20
|
+
* widening the ping makes holders flap, and neither value should be redefined
|
|
21
|
+
* anywhere else.
|
|
22
|
+
*/
|
|
23
|
+
export const PING_INTERVAL_MS = 30_000;
|
|
24
|
+
export const LEASE_TTL_MS = 3 * PING_INTERVAL_MS;
|
|
25
|
+
/**
|
|
26
|
+
* The WebSocket subprotocols that carry the bearer credential out of the URL.
|
|
27
|
+
*
|
|
28
|
+
* A browser cannot set an `Authorization` header on a WebSocket, so the client
|
|
29
|
+
* offers the token as a `Sec-WebSocket-Protocol` value — `ablo.bearer.<token>` —
|
|
30
|
+
* alongside the real `ablo.sync.v1` protocol the server selects. This keeps the
|
|
31
|
+
* credential out of the query string, which access logs, proxies, and browser
|
|
32
|
+
* history would otherwise capture. The server reads the token from the
|
|
33
|
+
* subprotocol and echoes back only `ablo.sync.v1`, never the token-bearing
|
|
34
|
+
* value. Both the client and the server import these constants, so the
|
|
35
|
+
* handshake format cannot drift.
|
|
36
|
+
*/
|
|
37
|
+
export const WS_BEARER_SUBPROTOCOL_PREFIX = 'ablo.bearer.';
|
|
38
|
+
export const WS_SYNC_SUBPROTOCOL = 'ablo.sync.v1';
|
|
39
|
+
//# sourceMappingURL=protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/wire/protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AACvC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAG,gBAAgB,CAAC;AAEjD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,cAAc,CAAC;AAC3D,MAAM,CAAC,MAAM,mBAAmB,GAAG,cAAc,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The sync protocol version — a single integer, increasing over time, that
|
|
3
|
+
* covers everything the client and server must agree on to talk to each other:
|
|
4
|
+
* the WebSocket frame shapes, the HTTP request and response envelopes, and the
|
|
5
|
+
* delta encodings a client replays. It is separate from the advisory
|
|
6
|
+
* app-schema hash, which diagnoses data-model drift; this version selects a
|
|
7
|
+
* concrete transport codec.
|
|
8
|
+
*
|
|
9
|
+
* Deploy ordering: the server is deployed first. It accepts every version in
|
|
10
|
+
* {@link SUPPORTED_PROTOCOL_VERSIONS}, and a client is never expected to connect
|
|
11
|
+
* to a server older than itself. If that does happen — for example a partial
|
|
12
|
+
* server rollback — {@link protocolVersionProblem} reports it as `too_new` so
|
|
13
|
+
* the mismatch is visible rather than undefined.
|
|
14
|
+
*
|
|
15
|
+
* To change the protocol:
|
|
16
|
+
* 1. Make the change backward-tolerant where you can. The server ignores
|
|
17
|
+
* unknown payload keys, so an additive field usually needs no version bump.
|
|
18
|
+
* 2. For a breaking change, bump {@link PROTOCOL_VERSION}, add its codec to
|
|
19
|
+
* {@link SUPPORTED_PROTOCOL_VERSIONS}, and add a changelog entry below.
|
|
20
|
+
* 3. Keep {@link MIN_SUPPORTED_PROTOCOL_VERSION} low enough to cover every
|
|
21
|
+
* client still in use; raise it only after a deprecation window.
|
|
22
|
+
* 4. The protocol contract tests fail on a version without a codec and on any
|
|
23
|
+
* unreviewed bump — update them in the same change, deliberately.
|
|
24
|
+
*
|
|
25
|
+
* Changelog
|
|
26
|
+
* v1 (2026-07-03) — the protocol as of this field's introduction: the
|
|
27
|
+
* sync-request frame (`cursor`, `lastSyncId`, `capabilities`, optional
|
|
28
|
+
* `protocolVersion`), the commit, claim, release, ack, and
|
|
29
|
+
* presence-update frames, the bootstrap and delta batches, and the HTTP
|
|
30
|
+
* error and list envelopes. A client that predates this field sends no
|
|
31
|
+
* `protocolVersion` and is treated as v1, since introducing the field
|
|
32
|
+
* changed no behavior.
|
|
33
|
+
*/
|
|
34
|
+
export declare const PROTOCOL_VERSION = 1;
|
|
35
|
+
/**
|
|
36
|
+
* The oldest client protocol version this build still serves. Raising it cuts
|
|
37
|
+
* off clients that have not upgraded, so do it only after a deprecation window
|
|
38
|
+
* and with a changelog entry.
|
|
39
|
+
*/
|
|
40
|
+
export declare const MIN_SUPPORTED_PROTOCOL_VERSION = 1;
|
|
41
|
+
/** The version used by clients from before the version field existed. */
|
|
42
|
+
export declare const DEFAULT_PROTOCOL_VERSION = 1;
|
|
43
|
+
/**
|
|
44
|
+
* Every wire version this build can actually decode. This is intentionally an
|
|
45
|
+
* explicit manifest rather than a computed numeric range: a version is not
|
|
46
|
+
* supported merely because its number falls between two constants. Server
|
|
47
|
+
* codec registries use {@link SupportedProtocolVersion} as their key type, so
|
|
48
|
+
* adding a version here makes a missing decoder a compile error.
|
|
49
|
+
*/
|
|
50
|
+
export declare const SUPPORTED_PROTOCOL_VERSIONS: readonly [1];
|
|
51
|
+
export type SupportedProtocolVersion = (typeof SUPPORTED_PROTOCOL_VERSIONS)[number];
|
|
52
|
+
export type ProtocolVersionProblem = 'too_old' | 'too_new' | 'codec_missing';
|
|
53
|
+
/**
|
|
54
|
+
* The WebSocket close code the server sends to reject a protocol-version
|
|
55
|
+
* mismatch. It sits alongside the other application close codes (4001 for a
|
|
56
|
+
* credential problem), and its reason string is the
|
|
57
|
+
* error code `protocol_version_unsupported`. A client should treat this close
|
|
58
|
+
* as terminal: reconnecting cannot heal a version mismatch, but upgrading the
|
|
59
|
+
* client or rolling the server forward can.
|
|
60
|
+
*/
|
|
61
|
+
export declare const WS_CLOSE_PROTOCOL_VERSION = 4010;
|
|
62
|
+
/**
|
|
63
|
+
* Classifies a peer's announced protocol version against what this build
|
|
64
|
+
* supports, returning `'too_old'`, `'too_new'`, or `null` when the versions are
|
|
65
|
+
* compatible. An `undefined` version — a client from before versioning existed
|
|
66
|
+
* — counts as v1. A non-integer value is treated as `'too_old'` so the check
|
|
67
|
+
* fails closed and visibly.
|
|
68
|
+
*/
|
|
69
|
+
export declare function protocolVersionProblem(announced: number | undefined): ProtocolVersionProblem | null;
|
|
70
|
+
/** Resolve an announced value to a version that has a concrete codec. */
|
|
71
|
+
export declare function resolveProtocolVersion(announced: number | undefined): SupportedProtocolVersion | null;
|
|
72
|
+
/** The HTTP request header a client uses to announce its protocol version. */
|
|
73
|
+
export declare const PROTOCOL_VERSION_HEADER = "Ablo-Protocol-Version";
|
|
74
|
+
//# sourceMappingURL=protocolVersion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocolVersion.d.ts","sourceRoot":"","sources":["../../src/wire/protocolVersion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,IAAI,CAAC;AAEhD,yEAAyE;AACzE,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,cAAe,CAAC;AAExD,MAAM,MAAM,wBAAwB,GAClC,CAAC,OAAO,2BAA2B,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/C,MAAM,MAAM,sBAAsB,GAAG,SAAS,GAAG,SAAS,GAAG,eAAe,CAAC;AAE7E;;;;;;;GAOG;AACH,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAE9C;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,sBAAsB,GAAG,IAAI,CAO/B;AAED,yEAAyE;AACzE,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,wBAAwB,GAAG,IAAI,CAGjC;AAED,8EAA8E;AAC9E,eAAO,MAAM,uBAAuB,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The sync protocol version — a single integer, increasing over time, that
|
|
3
|
+
* covers everything the client and server must agree on to talk to each other:
|
|
4
|
+
* the WebSocket frame shapes, the HTTP request and response envelopes, and the
|
|
5
|
+
* delta encodings a client replays. It is separate from the advisory
|
|
6
|
+
* app-schema hash, which diagnoses data-model drift; this version selects a
|
|
7
|
+
* concrete transport codec.
|
|
8
|
+
*
|
|
9
|
+
* Deploy ordering: the server is deployed first. It accepts every version in
|
|
10
|
+
* {@link SUPPORTED_PROTOCOL_VERSIONS}, and a client is never expected to connect
|
|
11
|
+
* to a server older than itself. If that does happen — for example a partial
|
|
12
|
+
* server rollback — {@link protocolVersionProblem} reports it as `too_new` so
|
|
13
|
+
* the mismatch is visible rather than undefined.
|
|
14
|
+
*
|
|
15
|
+
* To change the protocol:
|
|
16
|
+
* 1. Make the change backward-tolerant where you can. The server ignores
|
|
17
|
+
* unknown payload keys, so an additive field usually needs no version bump.
|
|
18
|
+
* 2. For a breaking change, bump {@link PROTOCOL_VERSION}, add its codec to
|
|
19
|
+
* {@link SUPPORTED_PROTOCOL_VERSIONS}, and add a changelog entry below.
|
|
20
|
+
* 3. Keep {@link MIN_SUPPORTED_PROTOCOL_VERSION} low enough to cover every
|
|
21
|
+
* client still in use; raise it only after a deprecation window.
|
|
22
|
+
* 4. The protocol contract tests fail on a version without a codec and on any
|
|
23
|
+
* unreviewed bump — update them in the same change, deliberately.
|
|
24
|
+
*
|
|
25
|
+
* Changelog
|
|
26
|
+
* v1 (2026-07-03) — the protocol as of this field's introduction: the
|
|
27
|
+
* sync-request frame (`cursor`, `lastSyncId`, `capabilities`, optional
|
|
28
|
+
* `protocolVersion`), the commit, claim, release, ack, and
|
|
29
|
+
* presence-update frames, the bootstrap and delta batches, and the HTTP
|
|
30
|
+
* error and list envelopes. A client that predates this field sends no
|
|
31
|
+
* `protocolVersion` and is treated as v1, since introducing the field
|
|
32
|
+
* changed no behavior.
|
|
33
|
+
*/
|
|
34
|
+
export const PROTOCOL_VERSION = 1;
|
|
35
|
+
/**
|
|
36
|
+
* The oldest client protocol version this build still serves. Raising it cuts
|
|
37
|
+
* off clients that have not upgraded, so do it only after a deprecation window
|
|
38
|
+
* and with a changelog entry.
|
|
39
|
+
*/
|
|
40
|
+
export const MIN_SUPPORTED_PROTOCOL_VERSION = 1;
|
|
41
|
+
/** The version used by clients from before the version field existed. */
|
|
42
|
+
export const DEFAULT_PROTOCOL_VERSION = 1;
|
|
43
|
+
/**
|
|
44
|
+
* Every wire version this build can actually decode. This is intentionally an
|
|
45
|
+
* explicit manifest rather than a computed numeric range: a version is not
|
|
46
|
+
* supported merely because its number falls between two constants. Server
|
|
47
|
+
* codec registries use {@link SupportedProtocolVersion} as their key type, so
|
|
48
|
+
* adding a version here makes a missing decoder a compile error.
|
|
49
|
+
*/
|
|
50
|
+
export const SUPPORTED_PROTOCOL_VERSIONS = [1];
|
|
51
|
+
/**
|
|
52
|
+
* The WebSocket close code the server sends to reject a protocol-version
|
|
53
|
+
* mismatch. It sits alongside the other application close codes (4001 for a
|
|
54
|
+
* credential problem), and its reason string is the
|
|
55
|
+
* error code `protocol_version_unsupported`. A client should treat this close
|
|
56
|
+
* as terminal: reconnecting cannot heal a version mismatch, but upgrading the
|
|
57
|
+
* client or rolling the server forward can.
|
|
58
|
+
*/
|
|
59
|
+
export const WS_CLOSE_PROTOCOL_VERSION = 4010;
|
|
60
|
+
/**
|
|
61
|
+
* Classifies a peer's announced protocol version against what this build
|
|
62
|
+
* supports, returning `'too_old'`, `'too_new'`, or `null` when the versions are
|
|
63
|
+
* compatible. An `undefined` version — a client from before versioning existed
|
|
64
|
+
* — counts as v1. A non-integer value is treated as `'too_old'` so the check
|
|
65
|
+
* fails closed and visibly.
|
|
66
|
+
*/
|
|
67
|
+
export function protocolVersionProblem(announced) {
|
|
68
|
+
const v = announced ?? DEFAULT_PROTOCOL_VERSION;
|
|
69
|
+
if (!Number.isInteger(v) || v < MIN_SUPPORTED_PROTOCOL_VERSION)
|
|
70
|
+
return 'too_old';
|
|
71
|
+
if (v > PROTOCOL_VERSION)
|
|
72
|
+
return 'too_new';
|
|
73
|
+
return SUPPORTED_PROTOCOL_VERSIONS.some((candidate) => candidate === v)
|
|
74
|
+
? null
|
|
75
|
+
: 'codec_missing';
|
|
76
|
+
}
|
|
77
|
+
/** Resolve an announced value to a version that has a concrete codec. */
|
|
78
|
+
export function resolveProtocolVersion(announced) {
|
|
79
|
+
const version = announced ?? DEFAULT_PROTOCOL_VERSION;
|
|
80
|
+
return SUPPORTED_PROTOCOL_VERSIONS.find((candidate) => candidate === version) ?? null;
|
|
81
|
+
}
|
|
82
|
+
/** The HTTP request header a client uses to announce its protocol version. */
|
|
83
|
+
export const PROTOCOL_VERSION_HEADER = 'Ablo-Protocol-Version';
|
|
84
|
+
//# sourceMappingURL=protocolVersion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocolVersion.js","sourceRoot":"","sources":["../../src/wire/protocolVersion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAElC;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC;AAEhD,yEAAyE;AACzE,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAE1C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,CAAU,CAAC;AAOxD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,CAAC;AAE9C;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CACpC,SAA6B;IAE7B,MAAM,CAAC,GAAG,SAAS,IAAI,wBAAwB,CAAC;IAChD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,8BAA8B;QAAE,OAAO,SAAS,CAAC;IACjF,IAAI,CAAC,GAAG,gBAAgB;QAAE,OAAO,SAAS,CAAC;IAC3C,OAAO,2BAA2B,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,KAAK,CAAC,CAAC;QACrE,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,eAAe,CAAC;AACtB,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,sBAAsB,CACpC,SAA6B;IAE7B,MAAM,OAAO,GAAG,SAAS,IAAI,wBAAwB,CAAC;IACtD,OAAO,2BAA2B,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,KAAK,OAAO,CAAC,IAAI,IAAI,CAAC;AACxF,CAAC;AAED,8EAA8E;AAC9E,MAAM,CAAC,MAAM,uBAAuB,GAAG,uBAAuB,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@abloatai/transaction",
|
|
3
|
+
"version": "0.37.0",
|
|
4
|
+
"description": "The headless Ablo transaction client and canonical contracts for reads, commits, settlement, claims, and durable observation.",
|
|
5
|
+
"license": "Apache-2.0",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.js",
|
|
13
|
+
"default": "./dist/index.js"
|
|
14
|
+
},
|
|
15
|
+
"./errorCodes": {
|
|
16
|
+
"types": "./dist/errorCodes.d.ts",
|
|
17
|
+
"import": "./dist/errorCodes.js",
|
|
18
|
+
"default": "./dist/errorCodes.js"
|
|
19
|
+
},
|
|
20
|
+
"./environment": {
|
|
21
|
+
"types": "./dist/environment.d.ts",
|
|
22
|
+
"import": "./dist/environment.js",
|
|
23
|
+
"default": "./dist/environment.js"
|
|
24
|
+
},
|
|
25
|
+
"./coordination": {
|
|
26
|
+
"types": "./dist/coordination/index.d.ts",
|
|
27
|
+
"import": "./dist/coordination/index.js",
|
|
28
|
+
"default": "./dist/coordination/index.js"
|
|
29
|
+
},
|
|
30
|
+
"./wire": {
|
|
31
|
+
"types": "./dist/wire/index.d.ts",
|
|
32
|
+
"import": "./dist/wire/index.js",
|
|
33
|
+
"default": "./dist/wire/index.js"
|
|
34
|
+
},
|
|
35
|
+
"./types": {
|
|
36
|
+
"types": "./dist/types/index.d.ts",
|
|
37
|
+
"import": "./dist/types/index.js",
|
|
38
|
+
"default": "./dist/types/index.js"
|
|
39
|
+
},
|
|
40
|
+
"./auth": {
|
|
41
|
+
"types": "./dist/auth/index.d.ts",
|
|
42
|
+
"import": "./dist/auth/index.js",
|
|
43
|
+
"default": "./dist/auth/index.js"
|
|
44
|
+
},
|
|
45
|
+
"./keys": {
|
|
46
|
+
"types": "./dist/keys/index.d.ts",
|
|
47
|
+
"import": "./dist/keys/index.js",
|
|
48
|
+
"default": "./dist/keys/index.js"
|
|
49
|
+
},
|
|
50
|
+
"./schema": {
|
|
51
|
+
"types": "./dist/schema/index.d.ts",
|
|
52
|
+
"import": "./dist/schema/index.js",
|
|
53
|
+
"default": "./dist/schema/index.js"
|
|
54
|
+
},
|
|
55
|
+
"./schema/*": {
|
|
56
|
+
"types": "./dist/schema/*.d.ts",
|
|
57
|
+
"import": "./dist/schema/*.js",
|
|
58
|
+
"default": "./dist/schema/*.js"
|
|
59
|
+
},
|
|
60
|
+
"./source": {
|
|
61
|
+
"types": "./dist/source/index.d.ts",
|
|
62
|
+
"import": "./dist/source/index.js",
|
|
63
|
+
"default": "./dist/source/index.js"
|
|
64
|
+
},
|
|
65
|
+
"./source/*": {
|
|
66
|
+
"types": "./dist/source/*.d.ts",
|
|
67
|
+
"import": "./dist/source/*.js",
|
|
68
|
+
"default": "./dist/source/*.js"
|
|
69
|
+
},
|
|
70
|
+
"./server": {
|
|
71
|
+
"types": "./dist/server/index.d.ts",
|
|
72
|
+
"import": "./dist/server/index.js",
|
|
73
|
+
"default": "./dist/server/index.js"
|
|
74
|
+
},
|
|
75
|
+
"./server/*": {
|
|
76
|
+
"types": "./dist/server/*.d.ts",
|
|
77
|
+
"import": "./dist/server/*.js",
|
|
78
|
+
"default": "./dist/server/*.js"
|
|
79
|
+
},
|
|
80
|
+
"./batching": {
|
|
81
|
+
"types": "./dist/batching/index.d.ts",
|
|
82
|
+
"import": "./dist/batching/index.js",
|
|
83
|
+
"default": "./dist/batching/index.js"
|
|
84
|
+
},
|
|
85
|
+
"./ai-sdk": {
|
|
86
|
+
"types": "./dist/ai-sdk/index.d.ts",
|
|
87
|
+
"import": "./dist/ai-sdk/index.js",
|
|
88
|
+
"default": "./dist/ai-sdk/index.js"
|
|
89
|
+
},
|
|
90
|
+
"./ai-sdk/*": {
|
|
91
|
+
"types": "./dist/ai-sdk/*.d.ts",
|
|
92
|
+
"import": "./dist/ai-sdk/*.js",
|
|
93
|
+
"default": "./dist/ai-sdk/*.js"
|
|
94
|
+
},
|
|
95
|
+
"./webhooks": {
|
|
96
|
+
"types": "./dist/webhooks/index.d.ts",
|
|
97
|
+
"import": "./dist/webhooks/index.js",
|
|
98
|
+
"default": "./dist/webhooks/index.js"
|
|
99
|
+
},
|
|
100
|
+
"./webhooks/*": {
|
|
101
|
+
"types": "./dist/webhooks/*.d.ts",
|
|
102
|
+
"import": "./dist/webhooks/*.js",
|
|
103
|
+
"default": "./dist/webhooks/*.js"
|
|
104
|
+
},
|
|
105
|
+
"./syncLog/*": {
|
|
106
|
+
"types": "./dist/syncLog/*.d.ts",
|
|
107
|
+
"import": "./dist/syncLog/*.js",
|
|
108
|
+
"default": "./dist/syncLog/*.js"
|
|
109
|
+
},
|
|
110
|
+
"./syncLog": {
|
|
111
|
+
"types": "./dist/syncLog/index.d.ts",
|
|
112
|
+
"import": "./dist/syncLog/index.js",
|
|
113
|
+
"default": "./dist/syncLog/index.js"
|
|
114
|
+
},
|
|
115
|
+
"./docs": {
|
|
116
|
+
"types": "./dist/docs/index.d.ts",
|
|
117
|
+
"import": "./dist/docs/index.js",
|
|
118
|
+
"default": "./dist/docs/index.js"
|
|
119
|
+
},
|
|
120
|
+
"./docs/*": {
|
|
121
|
+
"types": "./dist/docs/*.d.ts",
|
|
122
|
+
"import": "./dist/docs/*.js",
|
|
123
|
+
"default": "./dist/docs/*.js"
|
|
124
|
+
},
|
|
125
|
+
"./*": {
|
|
126
|
+
"types": "./dist/*.d.ts",
|
|
127
|
+
"import": "./dist/*.js",
|
|
128
|
+
"default": "./dist/*.js"
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
"files": [
|
|
132
|
+
"dist",
|
|
133
|
+
"src",
|
|
134
|
+
"!src/**/__tests__/**",
|
|
135
|
+
"!src/**/*.test.ts",
|
|
136
|
+
"README.md",
|
|
137
|
+
"CONVENTIONS.md"
|
|
138
|
+
],
|
|
139
|
+
"publishConfig": {
|
|
140
|
+
"access": "public",
|
|
141
|
+
"provenance": true,
|
|
142
|
+
"registry": "https://registry.npmjs.org"
|
|
143
|
+
},
|
|
144
|
+
"repository": {
|
|
145
|
+
"type": "git",
|
|
146
|
+
"url": "git+https://github.com/Abloatai/ablo.git",
|
|
147
|
+
"directory": "packages/transaction"
|
|
148
|
+
},
|
|
149
|
+
"scripts": {
|
|
150
|
+
"clean": "node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"",
|
|
151
|
+
"build": "npm run clean && tsc -p tsconfig.build.json",
|
|
152
|
+
"prepack": "npm run build && node ../ablo/scripts/strip-source-condition.mjs",
|
|
153
|
+
"postpack": "node ../ablo/scripts/restore-source-condition.mjs",
|
|
154
|
+
"pack:check": "node ../ablo/scripts/pack-check.mjs",
|
|
155
|
+
"lint:pkg": "publint",
|
|
156
|
+
"test": "vitest run src/headlessClient.test.ts && jest",
|
|
157
|
+
"typecheck": "tsc --noEmit && tsc -p typetests/tsconfig.json"
|
|
158
|
+
},
|
|
159
|
+
"dependencies": {
|
|
160
|
+
"uuid": "^11.1.0",
|
|
161
|
+
"zod": "^4.4.3"
|
|
162
|
+
},
|
|
163
|
+
"peerDependencies": {
|
|
164
|
+
"ai": "^6.0.0",
|
|
165
|
+
"drizzle-orm": ">=0.44.0"
|
|
166
|
+
},
|
|
167
|
+
"peerDependenciesMeta": {
|
|
168
|
+
"ai": {
|
|
169
|
+
"optional": true
|
|
170
|
+
},
|
|
171
|
+
"drizzle-orm": {
|
|
172
|
+
"optional": true
|
|
173
|
+
}
|
|
174
|
+
},
|
|
175
|
+
"devDependencies": {
|
|
176
|
+
"@ablo/tsconfig": "*",
|
|
177
|
+
"@jest/globals": "^30.2.0",
|
|
178
|
+
"@types/jest": "^30.0.0",
|
|
179
|
+
"ai": "^6.0.0",
|
|
180
|
+
"jest": "^30.2.0",
|
|
181
|
+
"jest-environment-node": "^30.2.0",
|
|
182
|
+
"publint": "^0.3.17",
|
|
183
|
+
"ts-jest": "^29.4.5",
|
|
184
|
+
"typescript": "npm:@typescript/typescript6@^6.0.2",
|
|
185
|
+
"vitest": "^4.1.4"
|
|
186
|
+
}
|
|
187
|
+
}
|
package/src/ablo.ts
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `Ablo` — the entry point to the coordination layer.
|
|
3
|
+
*
|
|
4
|
+
* The factory constructs the stateless client: typed model resources, commits,
|
|
5
|
+
* claims, and session minting over request/response HTTP. It holds no socket,
|
|
6
|
+
* no store, and no local copy of anything — the bearer credential is the
|
|
7
|
+
* identity and the server resolves it on every request. This is the client a
|
|
8
|
+
* server-side actor installs: an agent, a worker, a cron job, a route handler.
|
|
9
|
+
*
|
|
10
|
+
* ```ts
|
|
11
|
+
* import { Ablo } from '@abloatai/ablo';
|
|
12
|
+
* import { schema } from './schema';
|
|
13
|
+
*
|
|
14
|
+
* const ablo = Ablo({ schema, apiKey: process.env.ABLO_API_KEY, transport: 'http' });
|
|
15
|
+
* await ablo.tasks.update({ id: taskId, data: { status: 'done' } });
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* The reactive materialiser — local store, live queries, presence rendering —
|
|
19
|
+
* is provided by `@abloatai/humans`, which layers
|
|
20
|
+
* above this one and shares the same `ablo.<model>` surface (ADR 0016).
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
import {
|
|
24
|
+
createAbloHttpClient,
|
|
25
|
+
type AbloHttpClient,
|
|
26
|
+
type AbloHttpClientOptions,
|
|
27
|
+
} from './transport/httpClient.js';
|
|
28
|
+
import type { SchemaRecord } from './schema/schema.js';
|
|
29
|
+
import type * as _Streams from './types/streams.js';
|
|
30
|
+
import type * as _SchemaTypes from './schema/schema.js';
|
|
31
|
+
import type * as _Global from './types/global.js';
|
|
32
|
+
import type * as _Policy from './policy/types.js';
|
|
33
|
+
import type * as _Http from './resources/httpResources.js';
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Create a coordination-layer client in one call.
|
|
37
|
+
*
|
|
38
|
+
* The core carries one transport today — request/response HTTP — so
|
|
39
|
+
* `transport: 'http'` is accepted for symmetry with the reactive package's
|
|
40
|
+
* factory and may be omitted. The duplex transport joins this slot when the
|
|
41
|
+
* socket carve lands (ADR 0016, follow-up 3a).
|
|
42
|
+
*/
|
|
43
|
+
export function Ablo<const S extends SchemaRecord>(
|
|
44
|
+
options: AbloHttpClientOptions<S> & { transport?: 'http' },
|
|
45
|
+
): AbloHttpClient<S> {
|
|
46
|
+
return createAbloHttpClient(options);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
50
|
+
// Ablo namespace — type access via namespace dots for stateless callers
|
|
51
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
52
|
+
//
|
|
53
|
+
// The stateless subset of the type namespace the reactive package hangs off
|
|
54
|
+
// its own `Ablo` export: every entry a consumer of THIS client would write
|
|
55
|
+
// out (`Ablo.Activity`, `Ablo.Commit.Receipt`, and so on), and nothing that
|
|
56
|
+
// needs a store or a socket behind it. The
|
|
57
|
+
// types live in their canonical homes (`types/streams`, `policy/types`,
|
|
58
|
+
// `resources/httpResources`, `schema/schema`); the namespace is a convenience
|
|
59
|
+
// path, not a second definition.
|
|
60
|
+
// eslint-disable-next-line @typescript-eslint/no-namespace
|
|
61
|
+
export namespace Ablo {
|
|
62
|
+
// ── Entity pointers (flat — input shapes used everywhere) ─────────
|
|
63
|
+
export type ClaimTarget = _Streams.ClaimTarget;
|
|
64
|
+
export type PresenceTarget = _Streams.PresenceTarget;
|
|
65
|
+
export type Duration = _Streams.Duration;
|
|
66
|
+
|
|
67
|
+
// ── Coordination (flat — the surface a contending caller reads) ───
|
|
68
|
+
export type Peer = _Streams.Peer;
|
|
69
|
+
export type Activity = _Streams.Activity;
|
|
70
|
+
export type Claim = _Streams.Claim;
|
|
71
|
+
export type ClaimHeartbeat = _Streams.ClaimHeartbeat;
|
|
72
|
+
export type ClaimHeartbeatOptions = _Streams.ClaimHeartbeatOptions;
|
|
73
|
+
|
|
74
|
+
// ── Claim (sub-namespace — the durable-lease cohort) ──────────────
|
|
75
|
+
// eslint-disable-next-line @typescript-eslint/no-namespace
|
|
76
|
+
export namespace Claim {
|
|
77
|
+
export type Held<
|
|
78
|
+
T = Record<string, unknown>,
|
|
79
|
+
M = _Global.ResolveClaimMeta,
|
|
80
|
+
> = _Streams.HeldClaim<T, M>;
|
|
81
|
+
export type WaitOptions = _Streams.ClaimWaitOptions;
|
|
82
|
+
export type LeaseOptions = _Streams.ClaimLeaseOptions;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// ── Schema (type + sub-namespace via declaration merge) ───────────
|
|
86
|
+
export type Schema<S extends _SchemaTypes.SchemaRecord = _SchemaTypes.SchemaRecord> =
|
|
87
|
+
_SchemaTypes.Schema<S>;
|
|
88
|
+
/**
|
|
89
|
+
* The schema this program has registered via `interface Register { Schema }`
|
|
90
|
+
* (falls back to a loose shape when unregistered). Use it where shared code
|
|
91
|
+
* needs "this app's schema" without importing a specific one.
|
|
92
|
+
*/
|
|
93
|
+
export type ResolveSchema = _Global.ResolveSchema;
|
|
94
|
+
/**
|
|
95
|
+
* The claim metadata shape this program has registered via
|
|
96
|
+
* `interface Register { ClaimMeta }` (falls back to a loose record when
|
|
97
|
+
* unregistered). Every claim surface reads `target.meta` as this.
|
|
98
|
+
*/
|
|
99
|
+
export type ResolveClaimMeta = _Global.ResolveClaimMeta;
|
|
100
|
+
// eslint-disable-next-line @typescript-eslint/no-namespace
|
|
101
|
+
export namespace Schema {
|
|
102
|
+
export type Model<
|
|
103
|
+
S extends _SchemaTypes.Schema,
|
|
104
|
+
K extends keyof S['models'],
|
|
105
|
+
> = _SchemaTypes.Model<S, K>;
|
|
106
|
+
export type InferCreate<
|
|
107
|
+
S extends _SchemaTypes.Schema,
|
|
108
|
+
K extends keyof S['models'],
|
|
109
|
+
> = _SchemaTypes.InferCreate<S, K>;
|
|
110
|
+
export type InferRow<
|
|
111
|
+
S extends _SchemaTypes.Schema,
|
|
112
|
+
K extends keyof S['models'],
|
|
113
|
+
> = _SchemaTypes.InferRow<S, K>;
|
|
114
|
+
export type InferModelNames<S extends _SchemaTypes.Schema> =
|
|
115
|
+
_SchemaTypes.InferModelNames<S>;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// ── Conflict (type + sub-namespace via declaration merge) ─────────
|
|
119
|
+
export type Conflict = _Policy.Conflict;
|
|
120
|
+
// eslint-disable-next-line @typescript-eslint/no-namespace
|
|
121
|
+
export namespace Conflict {
|
|
122
|
+
export type Kind = _Policy.ConflictKind;
|
|
123
|
+
export type Operation = _Policy.ConflictOperation;
|
|
124
|
+
export type Decision = _Policy.ConflictDecision;
|
|
125
|
+
export type Policy = _Policy.ConflictPolicy;
|
|
126
|
+
export type Axis = _Policy.ConflictAxis;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// ── Commit (sub-namespace — write-side cohort) ────────────────────
|
|
130
|
+
// eslint-disable-next-line @typescript-eslint/no-namespace
|
|
131
|
+
export namespace Commit {
|
|
132
|
+
export type Wait = _Http.CommitWait;
|
|
133
|
+
export type OperationAction = _Http.ModelOperationAction;
|
|
134
|
+
export type OperationInput = _Http.CommitOperationInput;
|
|
135
|
+
export type CreateOptions = _Http.CommitCreateOptions;
|
|
136
|
+
export type Receipt = _Http.CommitReceipt;
|
|
137
|
+
export type Client = _Http.CommitResource;
|
|
138
|
+
}
|
|
139
|
+
}
|