@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,330 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolves a participant's identity and scope when an {@link Ablo} client is
|
|
3
|
+
* constructed, following whichever of three authentication paths the caller's
|
|
4
|
+
* options select:
|
|
5
|
+
*
|
|
6
|
+
* 1. **Hosted cloud** — the caller passed an `apiKey`. The client exchanges it
|
|
7
|
+
* for a capability token and scope, then starts a scheduler that re-mints the
|
|
8
|
+
* token before it expires, so the rotation is invisible to the caller.
|
|
9
|
+
* 2. **Self-derived** — the caller passed a bearer or capability token but not
|
|
10
|
+
* an identity. The client asks the identity endpoint to recover the
|
|
11
|
+
* participant id and scope from the token.
|
|
12
|
+
* 3. **Explicit** — a self-hosted caller passed the organization id and a user
|
|
13
|
+
* or agent id directly. No server round-trip; the client trusts the caller.
|
|
14
|
+
*
|
|
15
|
+
* Each branch is a separate function below, so it can be read and tested on its own.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import { AbloAuthenticationError } from '../errors.js';
|
|
19
|
+
import type { ParticipantKind } from '../types/participant.js';
|
|
20
|
+
import { exchangeApiKey } from '../auth/index.js';
|
|
21
|
+
import { mintUserSessionKey } from '../auth/index.js';
|
|
22
|
+
import { resolveIdentity } from '../auth/index.js';
|
|
23
|
+
import {
|
|
24
|
+
createRefreshScheduler,
|
|
25
|
+
type RefreshScheduler,
|
|
26
|
+
} from '../auth/index.js';
|
|
27
|
+
import {
|
|
28
|
+
resolveCredential,
|
|
29
|
+
type ResolvedCredential,
|
|
30
|
+
} from '../auth/credentialPolicy.js';
|
|
31
|
+
import type { BootstrapScope } from '../auth/bootstrapScope.js';
|
|
32
|
+
import type { Logger } from '../logger.js';
|
|
33
|
+
import type { AuthCredentialSource } from '../auth/credentialSource.js';
|
|
34
|
+
import type { CredentialProvider } from './credentialResult.js';
|
|
35
|
+
import { resolveApiKeyValue, resolveBootstrapBaseUrl } from './apiKey.js';
|
|
36
|
+
|
|
37
|
+
export interface IdentityResolveInput {
|
|
38
|
+
readonly options: {
|
|
39
|
+
readonly capabilityToken?: string;
|
|
40
|
+
readonly bootstrapBaseUrl?: string;
|
|
41
|
+
readonly user?: { id: string; teamIds?: string[] };
|
|
42
|
+
readonly agentId?: string;
|
|
43
|
+
readonly syncGroups?: string[];
|
|
44
|
+
};
|
|
45
|
+
readonly internalOptions: { readonly organizationId?: string };
|
|
46
|
+
readonly url: string;
|
|
47
|
+
readonly kind: ParticipantKind;
|
|
48
|
+
readonly configuredApiKey: string | CredentialProvider | null;
|
|
49
|
+
readonly configuredAuthToken: string | null;
|
|
50
|
+
readonly bootstrapHelper: BootstrapScope;
|
|
51
|
+
readonly auth: AuthCredentialSource;
|
|
52
|
+
readonly logger: Logger;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export interface ResolvedIdentity {
|
|
56
|
+
readonly userId: string;
|
|
57
|
+
readonly accountScope: string;
|
|
58
|
+
/** Concrete project selected by the credential. The org id is the default project. */
|
|
59
|
+
readonly projectId: string | null;
|
|
60
|
+
/** Data environment selected by the credential. Null for explicit/self-hosted identities. */
|
|
61
|
+
readonly environment: 'sandbox' | 'production' | null;
|
|
62
|
+
/** Concrete sandbox selected by the credential, when applicable. */
|
|
63
|
+
readonly sandboxId: string | null;
|
|
64
|
+
readonly teamIds: string[] | undefined;
|
|
65
|
+
readonly capabilityToken: string | undefined;
|
|
66
|
+
readonly syncGroups: readonly string[] | undefined;
|
|
67
|
+
readonly participantKind: ParticipantKind;
|
|
68
|
+
/** Set only on the hosted-cloud path; the caller keeps it to stop refreshes on shutdown. */
|
|
69
|
+
readonly refreshScheduler: RefreshScheduler | null;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export async function resolveParticipantIdentity(
|
|
73
|
+
input: IdentityResolveInput,
|
|
74
|
+
): Promise<ResolvedIdentity> {
|
|
75
|
+
const {
|
|
76
|
+
options,
|
|
77
|
+
internalOptions,
|
|
78
|
+
url,
|
|
79
|
+
kind,
|
|
80
|
+
configuredApiKey,
|
|
81
|
+
configuredAuthToken,
|
|
82
|
+
bootstrapHelper,
|
|
83
|
+
auth,
|
|
84
|
+
logger,
|
|
85
|
+
} = input;
|
|
86
|
+
|
|
87
|
+
const apiKeyValue = await resolveApiKeyValue(configuredApiKey);
|
|
88
|
+
|
|
89
|
+
// Resolve the http(s) base URL, coercing ws/wss to http/https even when
|
|
90
|
+
// `bootstrapBaseUrl` is an explicit override (see auth.ts).
|
|
91
|
+
const baseUrl = resolveBootstrapBaseUrl({
|
|
92
|
+
url,
|
|
93
|
+
bootstrapBaseUrl: options.bootstrapBaseUrl,
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
// An organization id plus a caller-supplied participant id is the explicit path:
|
|
97
|
+
// the caller already knows its own identity, so no server round-trip is needed.
|
|
98
|
+
const hasExplicitIdentity =
|
|
99
|
+
internalOptions.organizationId != null &&
|
|
100
|
+
(kind === 'agent' ? options.agentId != null : options.user?.id != null);
|
|
101
|
+
|
|
102
|
+
// The credential-routing decision lives in `credentialPolicy`: it classifies the
|
|
103
|
+
// apiKey by prefix (`sk_`/`ek_`/`rk_`/`pk_`) and picks a route. The hosted
|
|
104
|
+
// exchange is the one mint the policy performs (via the injected
|
|
105
|
+
// `exchangeApiKey`); every other route simply returns the bearer to use. The
|
|
106
|
+
// switch below applies scope and sets up the refresh scheduler for each case.
|
|
107
|
+
const cred = await resolveCredential(
|
|
108
|
+
{
|
|
109
|
+
apiKeyValue,
|
|
110
|
+
configuredApiKey,
|
|
111
|
+
capabilityToken: options.capabilityToken,
|
|
112
|
+
authToken: configuredAuthToken,
|
|
113
|
+
hasExplicitIdentity,
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
primitives: {
|
|
117
|
+
exchangeApiKey,
|
|
118
|
+
mintUserSessionKey,
|
|
119
|
+
resolveIdentity,
|
|
120
|
+
resolveApiKeyValue,
|
|
121
|
+
},
|
|
122
|
+
exchangeArgs: {
|
|
123
|
+
baseUrl,
|
|
124
|
+
participantKind: (kind === 'agent' ? 'agent' : 'system'),
|
|
125
|
+
participantId: options.agentId ?? options.user?.id,
|
|
126
|
+
wideScope: true,
|
|
127
|
+
ttlSeconds: 3600,
|
|
128
|
+
},
|
|
129
|
+
},
|
|
130
|
+
);
|
|
131
|
+
|
|
132
|
+
switch (cred.kind) {
|
|
133
|
+
case 'publishable':
|
|
134
|
+
// `pk_` is a long-lived, browser-safe, read-only project key. It is used
|
|
135
|
+
// directly as the bearer and is never exchanged for a short-lived
|
|
136
|
+
// capability, so it never expires and there is nothing to refresh. The
|
|
137
|
+
// server resolves the organization and read-only scope from the key itself;
|
|
138
|
+
// we still call `/auth/identity` with the `pk_` bearer to learn the account
|
|
139
|
+
// scope and sync groups for the bootstrap cache.
|
|
140
|
+
return resolveViaIdentity({
|
|
141
|
+
bearer: cred.getBearer,
|
|
142
|
+
baseUrl,
|
|
143
|
+
options,
|
|
144
|
+
bootstrapHelper,
|
|
145
|
+
auth,
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
case 'exchange':
|
|
149
|
+
// Hosted-cloud (`sk_`): the policy exchanged the apiKey for a capability
|
|
150
|
+
// token; here we apply the returned scope and set up the refresh scheduler.
|
|
151
|
+
return resolveHosted({
|
|
152
|
+
cred,
|
|
153
|
+
configuredApiKey,
|
|
154
|
+
baseUrl,
|
|
155
|
+
kind,
|
|
156
|
+
options,
|
|
157
|
+
bootstrapHelper,
|
|
158
|
+
auth,
|
|
159
|
+
logger,
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
case 'pre-minted':
|
|
163
|
+
// Self-derived: a pre-minted `ek_`/`rk_` bearer or an explicit capability
|
|
164
|
+
// token authenticates `/auth/identity` directly (no exchange, no refresh).
|
|
165
|
+
return resolveViaIdentity({
|
|
166
|
+
bearer: cred.getBearer,
|
|
167
|
+
baseUrl,
|
|
168
|
+
options,
|
|
169
|
+
bootstrapHelper,
|
|
170
|
+
auth,
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
case 'explicit': {
|
|
174
|
+
// Explicit self-hosted identity: the caller supplied its own organization id
|
|
175
|
+
// and user or agent id.
|
|
176
|
+
const userId = kind === 'agent' ? options.agentId! : options.user!.id;
|
|
177
|
+
const accountScope = internalOptions.organizationId!;
|
|
178
|
+
bootstrapHelper.setCacheScope(accountScope);
|
|
179
|
+
bootstrapHelper.setSyncGroups(options.syncGroups);
|
|
180
|
+
auth.setAuthToken(cred.getBearer);
|
|
181
|
+
return {
|
|
182
|
+
userId,
|
|
183
|
+
accountScope,
|
|
184
|
+
projectId: accountScope,
|
|
185
|
+
environment: null,
|
|
186
|
+
sandboxId: null,
|
|
187
|
+
teamIds: kind === 'user' ? options.user?.teamIds : undefined,
|
|
188
|
+
capabilityToken: cred.getBearer,
|
|
189
|
+
syncGroups: options.syncGroups,
|
|
190
|
+
participantKind: kind,
|
|
191
|
+
refreshScheduler: null,
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
interface ResolveViaIdentityInput {
|
|
198
|
+
readonly bearer: string;
|
|
199
|
+
readonly baseUrl: string;
|
|
200
|
+
readonly options: IdentityResolveInput['options'];
|
|
201
|
+
readonly bootstrapHelper: BootstrapScope;
|
|
202
|
+
readonly auth: AuthCredentialSource;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* Resolves identity through the `/auth/identity` endpoint for the publishable
|
|
207
|
+
* (`pk_`) and pre-minted (`ek_`/`rk_` or explicit capability token) routes. The
|
|
208
|
+
* bearer is used as-is, the server resolves the identity, and any caller-passed
|
|
209
|
+
* sync groups are merged with the server-resolved set.
|
|
210
|
+
*/
|
|
211
|
+
async function resolveViaIdentity(
|
|
212
|
+
input: ResolveViaIdentityInput,
|
|
213
|
+
): Promise<ResolvedIdentity> {
|
|
214
|
+
const { bearer, baseUrl, options, bootstrapHelper, auth } = input;
|
|
215
|
+
const identity = await resolveIdentity({ baseUrl, authToken: bearer });
|
|
216
|
+
// Merge the caller's sync groups with the server-resolved set rather than
|
|
217
|
+
// letting the server response overwrite them. A client may compose groups such
|
|
218
|
+
// as `['default', 'org:<id>', 'user:<id>', 'team:<id>']` from the resolved
|
|
219
|
+
// session and pass them in; the identity endpoint can return an empty set (for
|
|
220
|
+
// example, for cookie-authenticated users), and an empty set makes the server
|
|
221
|
+
// bootstrap fall back to `['default']`, so no deltas fan out and live updates
|
|
222
|
+
// appear only on a hard reload. Merging keeps the caller's groups intact.
|
|
223
|
+
const callerGroups = options.syncGroups ?? [];
|
|
224
|
+
const mergedSyncGroups =
|
|
225
|
+
callerGroups.length > 0
|
|
226
|
+
? [...new Set([...callerGroups, ...identity.syncGroups])]
|
|
227
|
+
: identity.syncGroups;
|
|
228
|
+
bootstrapHelper.setCacheScope(identity.accountScope);
|
|
229
|
+
bootstrapHelper.setSyncGroups(mergedSyncGroups);
|
|
230
|
+
auth.setAuthToken(bearer);
|
|
231
|
+
return {
|
|
232
|
+
userId: identity.participantId,
|
|
233
|
+
accountScope: identity.accountScope,
|
|
234
|
+
projectId: identity.projectId ?? identity.accountScope,
|
|
235
|
+
environment: identity.environment ?? null,
|
|
236
|
+
sandboxId: identity.sandboxId ?? null,
|
|
237
|
+
teamIds: undefined,
|
|
238
|
+
capabilityToken: bearer,
|
|
239
|
+
syncGroups: mergedSyncGroups,
|
|
240
|
+
participantKind: identity.participantKind,
|
|
241
|
+
refreshScheduler: null,
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
interface HostedInput {
|
|
246
|
+
/** The hosted exchange result the credential policy already performed. */
|
|
247
|
+
readonly cred: Extract<ResolvedCredential, { kind: 'exchange' }>;
|
|
248
|
+
readonly configuredApiKey: string | CredentialProvider | null;
|
|
249
|
+
readonly baseUrl: string;
|
|
250
|
+
readonly kind: ParticipantKind;
|
|
251
|
+
readonly options: IdentityResolveInput['options'] & {
|
|
252
|
+
readonly bootstrapBaseUrl?: string;
|
|
253
|
+
readonly user?: { id: string };
|
|
254
|
+
readonly agentId?: string;
|
|
255
|
+
};
|
|
256
|
+
readonly bootstrapHelper: BootstrapScope;
|
|
257
|
+
readonly auth: AuthCredentialSource;
|
|
258
|
+
readonly logger: Logger;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
async function resolveHosted(input: HostedInput): Promise<ResolvedIdentity> {
|
|
262
|
+
// The managed-cloud shape, `Ablo({ schema, apiKey })`. The credential policy has
|
|
263
|
+
// already exchanged the apiKey via `exchangeApiKey`; here we apply the returned
|
|
264
|
+
// scope and set up the refresh scheduler.
|
|
265
|
+
const { exchange } = input.cred;
|
|
266
|
+
const baseUrl = input.baseUrl;
|
|
267
|
+
// The refresh path re-runs `exchangeApiKey` with a freshly-resolved apiKey, so
|
|
268
|
+
// it needs the same argument bag the policy used for the initial exchange.
|
|
269
|
+
const participantKind: 'agent' | 'system' = input.kind === 'agent' ? 'agent' : 'system';
|
|
270
|
+
const exchangeArgs = {
|
|
271
|
+
baseUrl,
|
|
272
|
+
participantKind,
|
|
273
|
+
participantId: input.options.agentId ?? input.options.user?.id,
|
|
274
|
+
wideScope: true,
|
|
275
|
+
ttlSeconds: 3600,
|
|
276
|
+
};
|
|
277
|
+
|
|
278
|
+
input.bootstrapHelper.setCacheScope(exchange.scope.organizationId);
|
|
279
|
+
input.bootstrapHelper.setSyncGroups(exchange.scope.syncGroups);
|
|
280
|
+
input.auth.setAuthToken(exchange.token);
|
|
281
|
+
|
|
282
|
+
// Capability tokens carry a server-set TTL (3600s by default). Without proactive
|
|
283
|
+
// refresh, the socket would be force-closed at expiry, or the next reconnect
|
|
284
|
+
// would fail with a 401. The scheduler re-mints ahead of that, so the consumer
|
|
285
|
+
// never sees the rotation.
|
|
286
|
+
const refreshScheduler = createRefreshScheduler({
|
|
287
|
+
initialExpiresAtMs: Date.parse(exchange.expiresAt),
|
|
288
|
+
refresh: async () => {
|
|
289
|
+
// Read the apiKey fresh each time — supports a CredentialProvider
|
|
290
|
+
// (rotating credentials) shape.
|
|
291
|
+
const freshApiKey = await resolveApiKeyValue(input.configuredApiKey);
|
|
292
|
+
if (!freshApiKey) {
|
|
293
|
+
throw new AbloAuthenticationError(
|
|
294
|
+
'apiKey unavailable during refresh',
|
|
295
|
+
{ code: 'apikey_missing' },
|
|
296
|
+
);
|
|
297
|
+
}
|
|
298
|
+
const next = await exchangeApiKey({
|
|
299
|
+
...exchangeArgs,
|
|
300
|
+
apiKey: freshApiKey,
|
|
301
|
+
});
|
|
302
|
+
input.auth.setAuthToken(next.token);
|
|
303
|
+
return { expiresAtMs: Date.parse(next.expiresAt) };
|
|
304
|
+
},
|
|
305
|
+
onError: (err) => {
|
|
306
|
+
input.logger.debug('cap token refresh failed; will retry', {
|
|
307
|
+
error: err.message,
|
|
308
|
+
});
|
|
309
|
+
},
|
|
310
|
+
});
|
|
311
|
+
|
|
312
|
+
return {
|
|
313
|
+
userId: exchange.scope.participantId,
|
|
314
|
+
accountScope: exchange.scope.organizationId,
|
|
315
|
+
// The legacy capability exchange response predates the explicit plane
|
|
316
|
+
// fields returned by `/auth/identity`. A hosted secret-key client defaults
|
|
317
|
+
// to the org-default project; browser sessions use resolveViaIdentity and
|
|
318
|
+
// therefore receive the concrete project/environment/sandbox tuple.
|
|
319
|
+
projectId: exchange.scope.organizationId,
|
|
320
|
+
environment: null,
|
|
321
|
+
sandboxId: null,
|
|
322
|
+
// teamIds isn't needed because the server already encoded
|
|
323
|
+
// team-level access into scope.syncGroups.
|
|
324
|
+
teamIds: undefined,
|
|
325
|
+
capabilityToken: exchange.token,
|
|
326
|
+
syncGroups: exchange.scope.syncGroups,
|
|
327
|
+
participantKind: input.kind,
|
|
328
|
+
refreshScheduler,
|
|
329
|
+
};
|
|
330
|
+
}
|