@abloatai/ablo 0.35.0 → 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/AGENTS.md +2 -2
- package/CHANGELOG.md +71 -1929
- package/NOTICE +2 -2
- package/README.md +23 -532
- package/assets/banner.png +0 -0
- package/dist/auth.d.ts +2 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +2 -0
- package/dist/auth.js.map +1 -0
- package/dist/client.d.ts +3 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +3 -0
- package/dist/client.js.map +1 -0
- package/dist/coordination.d.ts +2 -0
- package/dist/coordination.d.ts.map +1 -0
- package/dist/coordination.js +2 -0
- package/dist/coordination.js.map +1 -0
- package/dist/index.d.ts +3 -112
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -161
- package/dist/index.js.map +1 -0
- package/dist/react.d.ts +4 -0
- package/dist/react.d.ts.map +1 -0
- package/dist/react.js +3 -0
- package/dist/react.js.map +1 -0
- package/dist/schema.d.ts +2 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +2 -0
- package/dist/schema.js.map +1 -0
- package/dist/server.d.ts +2 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +2 -0
- package/dist/server.js.map +1 -0
- package/dist/source-conformance.d.ts +2 -0
- package/dist/source-conformance.d.ts.map +1 -0
- package/dist/source-conformance.js +2 -0
- package/dist/source-conformance.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-kysely.d.ts +2 -0
- package/dist/source-kysely.d.ts.map +1 -0
- package/dist/source-kysely.js +2 -0
- package/dist/source-kysely.js.map +1 -0
- package/dist/source-next.d.ts +2 -0
- package/dist/source-next.d.ts.map +1 -0
- package/dist/source-next.js +2 -0
- package/dist/source-next.js.map +1 -0
- package/dist/source.d.ts +2 -0
- package/dist/source.d.ts.map +1 -0
- package/dist/source.js +2 -0
- package/dist/source.js.map +1 -0
- package/dist/wire.d.ts +2 -0
- package/dist/wire.d.ts.map +1 -0
- package/dist/wire.js +2 -0
- package/dist/wire.js.map +1 -0
- package/docs/agents.md +2 -2
- package/docs/api-keys.md +13 -12
- package/docs/api.md +15 -53
- package/docs/audit.md +4 -3
- package/docs/cli.md +11 -11
- package/docs/client-behavior.md +9 -9
- package/docs/concurrency-convention.md +28 -42
- package/docs/coordination.md +228 -86
- package/docs/data-sources.md +5 -5
- package/docs/debugging.md +34 -12
- package/docs/deployment.md +8 -8
- package/docs/examples/agent-human.md +4 -4
- package/docs/examples/ai-sdk-tool.md +1 -1
- package/docs/examples/existing-python-backend.md +15 -4
- package/docs/examples/nextjs.md +27 -6
- package/docs/examples/scoped-agent.md +3 -3
- package/docs/examples/server-agent.md +2 -2
- package/docs/groups.md +57 -3
- package/docs/guarantees.md +37 -10
- package/docs/how-it-works.md +32 -8
- package/docs/idempotency.md +6 -6
- package/docs/identity.md +24 -24
- package/docs/index.md +8 -8
- package/docs/integration-guide.md +38 -16
- package/docs/internal/README.md +18 -0
- package/docs/internal/agent-fleet-coordination-design.md +171 -0
- package/docs/internal/agent-orchestration.md +58 -0
- package/docs/internal/commit-identifiers.md +91 -0
- package/docs/internal/concurrency-open-decisions.md +37 -0
- package/docs/internal/data-source-reverse-channel.md +150 -0
- package/docs/internal/per-field-conflict-detection.md +165 -0
- package/docs/internal/postgres-replication.md +64 -0
- package/docs/internal/serializable-schema.md +119 -0
- package/docs/internal/structure.md +32 -0
- package/docs/mcp.md +9 -9
- package/docs/migration.md +37 -18
- package/docs/projects.md +1 -1
- package/docs/quickstart.md +2 -2
- package/docs/react.md +24 -13
- package/docs/schema-contract.md +3 -3
- package/docs/sessions.md +91 -37
- package/docs/webhooks.md +9 -9
- package/examples/README.md +2 -2
- package/examples/data-source/README.md +1 -1
- package/examples/data-source/ablo-driver.ts +1 -1
- package/examples/data-source/customer-server.ts +1 -1
- package/examples/data-source/run.ts +1 -1
- package/examples/data-source/schema.ts +1 -1
- package/examples/quickstart.ts +2 -2
- package/llms.txt +12 -12
- package/package.json +64 -174
- package/dist/BaseSyncedStore.d.ts +0 -823
- package/dist/BaseSyncedStore.js +0 -1955
- package/dist/Database.d.ts +0 -335
- package/dist/Database.js +0 -1500
- package/dist/InstanceCache.d.ts +0 -233
- package/dist/InstanceCache.js +0 -1164
- package/dist/LazyReferenceCollection.d.ts +0 -177
- package/dist/LazyReferenceCollection.js +0 -461
- package/dist/Model.d.ts +0 -444
- package/dist/Model.js +0 -909
- package/dist/ModelRegistry.d.ts +0 -221
- package/dist/ModelRegistry.js +0 -537
- package/dist/NetworkMonitor.d.ts +0 -26
- package/dist/NetworkMonitor.js +0 -77
- package/dist/RuntimeContext.d.ts +0 -52
- package/dist/RuntimeContext.js +0 -80
- package/dist/SyncClient.d.ts +0 -551
- package/dist/SyncClient.js +0 -2199
- package/dist/adapters/alwaysOnline.d.ts +0 -14
- package/dist/adapters/alwaysOnline.js +0 -17
- package/dist/adapters/inMemoryStorage.d.ts +0 -31
- package/dist/adapters/inMemoryStorage.js +0 -110
- package/dist/ai-sdk/coordinatedTool.d.ts +0 -120
- package/dist/ai-sdk/coordinatedTool.js +0 -134
- package/dist/ai-sdk/coordinationContext.d.ts +0 -46
- package/dist/ai-sdk/coordinationContext.js +0 -106
- package/dist/ai-sdk/index.d.ts +0 -121
- package/dist/ai-sdk/index.js +0 -121
- package/dist/ai-sdk/wrap.d.ts +0 -65
- package/dist/ai-sdk/wrap.js +0 -39
- package/dist/auth/index.d.ts +0 -1
- package/dist/auth/index.js +0 -8
- package/dist/batching/index.d.ts +0 -55
- package/dist/batching/index.js +0 -147
- package/dist/cli.cjs +0 -288600
- package/dist/client/Ablo.d.ts +0 -231
- package/dist/client/Ablo.js +0 -149
- package/dist/client/abloClient.d.ts +0 -309
- package/dist/client/abloClient.js +0 -13
- package/dist/client/clientPrelude.d.ts +0 -52
- package/dist/client/clientPrelude.js +0 -60
- package/dist/client/consoleLogger.d.ts +0 -35
- package/dist/client/consoleLogger.js +0 -44
- package/dist/client/coreClient.d.ts +0 -60
- package/dist/client/coreClient.js +0 -118
- package/dist/client/createInternalComponents.d.ts +0 -46
- package/dist/client/createInternalComponents.js +0 -92
- package/dist/client/createModelProxy.d.ts +0 -228
- package/dist/client/createModelProxy.js +0 -818
- package/dist/client/humans.d.ts +0 -48
- package/dist/client/humans.js +0 -52
- package/dist/client/modelRegistration.d.ts +0 -10
- package/dist/client/modelRegistration.js +0 -312
- package/dist/client/options.d.ts +0 -461
- package/dist/client/options.js +0 -7
- package/dist/client/reactiveEngine.d.ts +0 -48
- package/dist/client/reactiveEngine.js +0 -910
- package/dist/client/resourceTypes.d.ts +0 -12
- package/dist/client/resourceTypes.js +0 -10
- package/dist/client/schemaConfig.d.ts +0 -44
- package/dist/client/schemaConfig.js +0 -185
- package/dist/client/validateAbloOptions.d.ts +0 -42
- package/dist/client/validateAbloOptions.js +0 -43
- package/dist/client/wsMutationExecutor.d.ts +0 -27
- package/dist/client/wsMutationExecutor.js +0 -72
- package/dist/context.d.ts +0 -29
- package/dist/context.js +0 -58
- package/dist/coordination/ClaimLog.d.ts +0 -26
- package/dist/coordination/ClaimLog.js +0 -32
- package/dist/coordination/index.d.ts +0 -1
- package/dist/coordination/index.js +0 -8
- package/dist/core/DatabaseManager.d.ts +0 -105
- package/dist/core/DatabaseManager.js +0 -387
- package/dist/core/QueryProcessor.d.ts +0 -75
- package/dist/core/QueryProcessor.js +0 -255
- package/dist/core/QueryView.d.ts +0 -79
- package/dist/core/QueryView.js +0 -218
- package/dist/core/StoreManager.d.ts +0 -112
- package/dist/core/StoreManager.js +0 -302
- package/dist/core/ViewRegistry.d.ts +0 -20
- package/dist/core/ViewRegistry.js +0 -55
- package/dist/core/index.d.ts +0 -33
- package/dist/core/index.js +0 -48
- package/dist/core/openIDBWithTimeout.d.ts +0 -65
- package/dist/core/openIDBWithTimeout.js +0 -153
- package/dist/core/queryUtils.d.ts +0 -45
- package/dist/core/queryUtils.js +0 -69
- package/dist/core/storeContract.d.ts +0 -145
- package/dist/core/storeContract.js +0 -12
- package/dist/docs/catalog.d.ts +0 -72
- package/dist/docs/catalog.js +0 -227
- package/dist/docs/index.d.ts +0 -10
- package/dist/docs/index.js +0 -10
- package/dist/environment.d.ts +0 -1
- package/dist/environment.js +0 -8
- package/dist/interfaces/index.d.ts +0 -311
- package/dist/interfaces/index.js +0 -9
- package/dist/keys/index.d.ts +0 -1
- package/dist/keys/index.js +0 -8
- package/dist/mutators/RecordingMutation.d.ts +0 -36
- package/dist/mutators/RecordingMutation.js +0 -182
- package/dist/mutators/Transaction.d.ts +0 -40
- package/dist/mutators/Transaction.js +0 -58
- package/dist/mutators/UndoManager.d.ts +0 -258
- package/dist/mutators/UndoManager.js +0 -658
- package/dist/mutators/defineMutators.d.ts +0 -60
- package/dist/mutators/defineMutators.js +0 -18
- package/dist/mutators/inverseOp.d.ts +0 -126
- package/dist/mutators/inverseOp.js +0 -71
- package/dist/mutators/mutateActions.d.ts +0 -45
- package/dist/mutators/mutateActions.js +0 -105
- package/dist/mutators/readerActions.d.ts +0 -33
- package/dist/mutators/readerActions.js +0 -57
- package/dist/mutators/undoApply.d.ts +0 -51
- package/dist/mutators/undoApply.js +0 -117
- package/dist/policy/index.d.ts +0 -21
- package/dist/policy/index.js +0 -20
- package/dist/query/client.d.ts +0 -61
- package/dist/query/client.js +0 -137
- package/dist/query/types.d.ts +0 -85
- package/dist/query/types.js +0 -16
- package/dist/react/AbloProvider.d.ts +0 -230
- package/dist/react/AbloProvider.js +0 -455
- package/dist/react/ClientSideSuspense.d.ts +0 -36
- package/dist/react/ClientSideSuspense.js +0 -17
- package/dist/react/DefaultFallback.d.ts +0 -24
- package/dist/react/DefaultFallback.js +0 -43
- package/dist/react/context.d.ts +0 -55
- package/dist/react/context.js +0 -29
- package/dist/react/index.d.ts +0 -61
- package/dist/react/index.js +0 -66
- package/dist/react/internalContext.d.ts +0 -33
- package/dist/react/internalContext.js +0 -3
- package/dist/react/useAblo.d.ts +0 -75
- package/dist/react/useAblo.js +0 -102
- package/dist/react/useCurrentUserId.d.ts +0 -22
- package/dist/react/useCurrentUserId.js +0 -34
- package/dist/react/useErrorListener.d.ts +0 -20
- package/dist/react/useErrorListener.js +0 -38
- package/dist/react/useMutationFailureListener.d.ts +0 -26
- package/dist/react/useMutationFailureListener.js +0 -38
- package/dist/react/useMutators.d.ts +0 -56
- package/dist/react/useMutators.js +0 -84
- package/dist/react/useReactive.d.ts +0 -35
- package/dist/react/useReactive.js +0 -123
- package/dist/react/useSyncStatus.d.ts +0 -59
- package/dist/react/useSyncStatus.js +0 -76
- package/dist/react/useUndoScope.d.ts +0 -34
- package/dist/react/useUndoScope.js +0 -81
- package/dist/schema/coordination.d.ts +0 -112
- package/dist/schema/coordination.js +0 -129
- package/dist/schema/ddl.d.ts +0 -97
- package/dist/schema/ddl.js +0 -491
- package/dist/schema/ddlLock.d.ts +0 -35
- package/dist/schema/ddlLock.js +0 -46
- package/dist/schema/diff.d.ts +0 -225
- package/dist/schema/diff.js +0 -289
- package/dist/schema/generate.d.ts +0 -19
- package/dist/schema/generate.js +0 -86
- package/dist/schema/index.d.ts +0 -41
- package/dist/schema/index.js +0 -76
- package/dist/schema/queries.d.ts +0 -201
- package/dist/schema/queries.js +0 -144
- package/dist/schema/select.d.ts +0 -40
- package/dist/schema/select.js +0 -87
- package/dist/schema/serialize.d.ts +0 -115
- package/dist/schema/serialize.js +0 -262
- package/dist/schema/sugar.d.ts +0 -109
- package/dist/schema/sugar.js +0 -83
- package/dist/schema/syncDeltaRow.d.ts +0 -6
- package/dist/schema/syncDeltaRow.js +0 -6
- package/dist/server/adapter.d.ts +0 -173
- package/dist/server/adapter.js +0 -18
- package/dist/server/commit.d.ts +0 -107
- package/dist/server/commit.js +0 -1
- package/dist/server/index.d.ts +0 -14
- package/dist/server/index.js +0 -2
- package/dist/server/readConfig.d.ts +0 -80
- package/dist/server/readConfig.js +0 -8
- package/dist/server/storageMode.d.ts +0 -23
- package/dist/server/storageMode.js +0 -17
- package/dist/source/adapter.d.ts +0 -81
- package/dist/source/adapter.js +0 -22
- package/dist/source/adapters/drizzle.d.ts +0 -48
- package/dist/source/adapters/drizzle.js +0 -219
- package/dist/source/adapters/kysely.d.ts +0 -42
- package/dist/source/adapters/kysely.js +0 -205
- package/dist/source/adapters/kyselyMutationCore.d.ts +0 -76
- package/dist/source/adapters/kyselyMutationCore.js +0 -125
- package/dist/source/adapters/memory.d.ts +0 -13
- package/dist/source/adapters/memory.js +0 -130
- package/dist/source/adapters/prisma.d.ts +0 -63
- package/dist/source/adapters/prisma.js +0 -202
- package/dist/source/conformance.d.ts +0 -37
- package/dist/source/conformance.js +0 -215
- package/dist/source/connector.d.ts +0 -95
- package/dist/source/connector.js +0 -266
- package/dist/source/connectorProtocol.d.ts +0 -154
- package/dist/source/connectorProtocol.js +0 -163
- package/dist/source/contract.d.ts +0 -195
- package/dist/source/contract.js +0 -164
- package/dist/source/factory.d.ts +0 -92
- package/dist/source/factory.js +0 -286
- package/dist/source/footprint.d.ts +0 -111
- package/dist/source/footprint.js +0 -0
- package/dist/source/idempotency.d.ts +0 -61
- package/dist/source/idempotency.js +0 -144
- package/dist/source/index.d.ts +0 -23
- package/dist/source/index.js +0 -30
- package/dist/source/migrations.d.ts +0 -21
- package/dist/source/migrations.js +0 -103
- package/dist/source/next.d.ts +0 -32
- package/dist/source/next.js +0 -25
- package/dist/source/pushQueue.d.ts +0 -134
- package/dist/source/pushQueue.js +0 -256
- package/dist/source/signing.d.ts +0 -92
- package/dist/source/signing.js +0 -162
- package/dist/source/types.d.ts +0 -401
- package/dist/source/types.js +0 -59
- package/dist/stores/ObjectStore.d.ts +0 -115
- package/dist/stores/ObjectStore.js +0 -393
- package/dist/stores/ObjectStoreContract.d.ts +0 -38
- package/dist/stores/ObjectStoreContract.js +0 -1
- package/dist/stores/SyncActionStore.d.ts +0 -97
- package/dist/stores/SyncActionStore.js +0 -504
- package/dist/stores/syncAction.d.ts +0 -26
- package/dist/stores/syncAction.js +0 -16
- package/dist/surface.d.ts +0 -36
- package/dist/surface.js +0 -75
- package/dist/sync/BootstrapFetcher.d.ts +0 -280
- package/dist/sync/BootstrapFetcher.js +0 -962
- package/dist/sync/ConnectionManager.d.ts +0 -8
- package/dist/sync/ConnectionManager.js +0 -8
- package/dist/sync/OnDemandLoader.d.ts +0 -228
- package/dist/sync/OnDemandLoader.js +0 -742
- package/dist/sync/SubscriptionManager.d.ts +0 -159
- package/dist/sync/SubscriptionManager.js +0 -243
- package/dist/sync/SyncWebSocket.d.ts +0 -173
- package/dist/sync/SyncWebSocket.js +0 -438
- package/dist/sync/awaitClaimGrant.d.ts +0 -6
- package/dist/sync/awaitClaimGrant.js +0 -6
- package/dist/sync/bootstrapApply.d.ts +0 -70
- package/dist/sync/bootstrapApply.js +0 -73
- package/dist/sync/commitFrames.d.ts +0 -8
- package/dist/sync/commitFrames.js +0 -8
- package/dist/sync/contextPorts.d.ts +0 -18
- package/dist/sync/contextPorts.js +0 -31
- package/dist/sync/createClaimStream.d.ts +0 -7
- package/dist/sync/createClaimStream.js +0 -7
- package/dist/sync/createPresenceStream.d.ts +0 -69
- package/dist/sync/createPresenceStream.js +0 -200
- package/dist/sync/createSnapshot.d.ts +0 -29
- package/dist/sync/createSnapshot.js +0 -118
- package/dist/sync/credentialLifecycle.d.ts +0 -7
- package/dist/sync/credentialLifecycle.js +0 -7
- package/dist/sync/deltaPipeline.d.ts +0 -113
- package/dist/sync/deltaPipeline.js +0 -261
- package/dist/sync/groupChange.d.ts +0 -113
- package/dist/sync/groupChange.js +0 -242
- package/dist/sync/participants.d.ts +0 -115
- package/dist/sync/participants.js +0 -344
- package/dist/sync/persistedPrefix.d.ts +0 -12
- package/dist/sync/persistedPrefix.js +0 -22
- package/dist/sync/schemaDrift.d.ts +0 -55
- package/dist/sync/schemaDrift.js +0 -53
- package/dist/sync/schemas.d.ts +0 -70
- package/dist/sync/schemas.js +0 -94
- package/dist/sync/syncCursor.d.ts +0 -40
- package/dist/sync/syncCursor.js +0 -55
- package/dist/sync/syncPlan.d.ts +0 -54
- package/dist/sync/syncPlan.js +0 -50
- package/dist/sync/wsFrameHandlers.d.ts +0 -8
- package/dist/sync/wsFrameHandlers.js +0 -8
- package/dist/testing/fixtures/bootstrap.d.ts +0 -49
- package/dist/testing/fixtures/bootstrap.js +0 -59
- package/dist/testing/fixtures/deltas.d.ts +0 -83
- package/dist/testing/fixtures/deltas.js +0 -136
- package/dist/testing/fixtures/httpResponses.d.ts +0 -70
- package/dist/testing/fixtures/httpResponses.js +0 -90
- package/dist/testing/fixtures/models.d.ts +0 -83
- package/dist/testing/fixtures/models.js +0 -272
- package/dist/testing/helpers/reactWrapper.d.ts +0 -69
- package/dist/testing/helpers/reactWrapper.js +0 -67
- package/dist/testing/helpers/syncEngineHarness.d.ts +0 -54
- package/dist/testing/helpers/syncEngineHarness.js +0 -73
- package/dist/testing/helpers/wait.d.ts +0 -30
- package/dist/testing/helpers/wait.js +0 -49
- package/dist/testing/index.d.ts +0 -23
- package/dist/testing/index.js +0 -33
- package/dist/testing/mocks/FakeDatabase.d.ts +0 -18
- package/dist/testing/mocks/FakeDatabase.js +0 -10
- package/dist/testing/mocks/MockMutationExecutor.d.ts +0 -87
- package/dist/testing/mocks/MockMutationExecutor.js +0 -186
- package/dist/testing/mocks/MockNetworkMonitor.d.ts +0 -20
- package/dist/testing/mocks/MockNetworkMonitor.js +0 -46
- package/dist/testing/mocks/MockSyncContext.d.ts +0 -51
- package/dist/testing/mocks/MockSyncContext.js +0 -72
- package/dist/testing/mocks/MockSyncStore.d.ts +0 -88
- package/dist/testing/mocks/MockSyncStore.js +0 -171
- package/dist/testing/mocks/MockWebSocket.d.ts +0 -71
- package/dist/testing/mocks/MockWebSocket.js +0 -118
- package/dist/transaction/ablo.d.ts +0 -88
- package/dist/transaction/ablo.js +0 -33
- package/dist/transaction/auth/apiKey.d.ts +0 -152
- package/dist/transaction/auth/apiKey.js +0 -419
- package/dist/transaction/auth/bootstrapScope.d.ts +0 -15
- package/dist/transaction/auth/bootstrapScope.js +0 -1
- package/dist/transaction/auth/capability.d.ts +0 -177
- package/dist/transaction/auth/capability.js +0 -199
- package/dist/transaction/auth/credentialEndpoint.d.ts +0 -61
- package/dist/transaction/auth/credentialEndpoint.js +0 -86
- package/dist/transaction/auth/credentialPolicy.d.ts +0 -148
- package/dist/transaction/auth/credentialPolicy.js +0 -125
- package/dist/transaction/auth/credentialSource.d.ts +0 -30
- package/dist/transaction/auth/credentialSource.js +0 -55
- package/dist/transaction/auth/hostedEndpoints.d.ts +0 -21
- package/dist/transaction/auth/hostedEndpoints.js +0 -21
- package/dist/transaction/auth/identity.d.ts +0 -55
- package/dist/transaction/auth/identity.js +0 -210
- package/dist/transaction/auth/index.d.ts +0 -162
- package/dist/transaction/auth/index.js +0 -304
- package/dist/transaction/auth/schemas.d.ts +0 -59
- package/dist/transaction/auth/schemas.js +0 -85
- package/dist/transaction/auth/sessionMint.d.ts +0 -28
- package/dist/transaction/auth/sessionMint.js +0 -85
- package/dist/transaction/coordination/awaitClaimGrant.d.ts +0 -49
- package/dist/transaction/coordination/awaitClaimGrant.js +0 -112
- package/dist/transaction/coordination/claimHeartbeatLoop.d.ts +0 -50
- package/dist/transaction/coordination/claimHeartbeatLoop.js +0 -88
- package/dist/transaction/coordination/claimMeta.d.ts +0 -49
- package/dist/transaction/coordination/claimMeta.js +0 -52
- package/dist/transaction/coordination/createClaimStream.d.ts +0 -64
- package/dist/transaction/coordination/createClaimStream.js +0 -475
- package/dist/transaction/coordination/events.d.ts +0 -74
- package/dist/transaction/coordination/events.js +0 -7
- package/dist/transaction/coordination/index.d.ts +0 -19
- package/dist/transaction/coordination/index.js +0 -44
- package/dist/transaction/coordination/locator.d.ts +0 -83
- package/dist/transaction/coordination/locator.js +0 -82
- package/dist/transaction/coordination/schema.d.ts +0 -1473
- package/dist/transaction/coordination/schema.js +0 -1013
- package/dist/transaction/coordination/targetConflict.d.ts +0 -2
- package/dist/transaction/coordination/targetConflict.js +0 -103
- package/dist/transaction/coordination/trace.d.ts +0 -78
- package/dist/transaction/coordination/trace.js +0 -138
- package/dist/transaction/durableWrites.d.ts +0 -62
- package/dist/transaction/durableWrites.js +0 -71
- package/dist/transaction/environment.d.ts +0 -105
- package/dist/transaction/environment.js +0 -108
- package/dist/transaction/errorCodes.d.ts +0 -403
- package/dist/transaction/errorCodes.js +0 -480
- package/dist/transaction/errors.d.ts +0 -428
- package/dist/transaction/errors.js +0 -686
- package/dist/transaction/index.d.ts +0 -20
- package/dist/transaction/index.js +0 -20
- package/dist/transaction/keys/index.d.ts +0 -87
- package/dist/transaction/keys/index.js +0 -207
- package/dist/transaction/log/syncDeltaRow.d.ts +0 -158
- package/dist/transaction/log/syncDeltaRow.js +0 -95
- package/dist/transaction/logPosition.d.ts +0 -97
- package/dist/transaction/logPosition.js +0 -125
- package/dist/transaction/logger.d.ts +0 -16
- package/dist/transaction/logger.js +0 -7
- package/dist/transaction/observability.d.ts +0 -53
- package/dist/transaction/observability.js +0 -19
- package/dist/transaction/persistence.d.ts +0 -12
- package/dist/transaction/persistence.js +0 -11
- package/dist/transaction/plugin.d.ts +0 -192
- package/dist/transaction/plugin.js +0 -87
- package/dist/transaction/policy/types.d.ts +0 -217
- package/dist/transaction/policy/types.js +0 -126
- package/dist/transaction/resources/functionalUpdate.d.ts +0 -79
- package/dist/transaction/resources/functionalUpdate.js +0 -87
- package/dist/transaction/resources/httpResources.d.ts +0 -266
- package/dist/transaction/resources/httpResources.js +0 -7
- package/dist/transaction/resources/modelOperations.d.ts +0 -319
- package/dist/transaction/resources/modelOperations.js +0 -12
- package/dist/transaction/resources/mutationOptions.d.ts +0 -66
- package/dist/transaction/resources/mutationOptions.js +0 -9
- package/dist/transaction/resources/where.d.ts +0 -85
- package/dist/transaction/resources/where.js +0 -70
- package/dist/transaction/resources/writeOptionsSchema.d.ts +0 -47
- package/dist/transaction/resources/writeOptionsSchema.js +0 -73
- package/dist/transaction/schema/field.d.ts +0 -126
- package/dist/transaction/schema/field.js +0 -265
- package/dist/transaction/schema/loadStrategy.d.ts +0 -45
- package/dist/transaction/schema/loadStrategy.js +0 -46
- package/dist/transaction/schema/model.d.ts +0 -379
- package/dist/transaction/schema/model.js +0 -123
- package/dist/transaction/schema/openapi.d.ts +0 -57
- package/dist/transaction/schema/openapi.js +0 -340
- package/dist/transaction/schema/relation.d.ts +0 -199
- package/dist/transaction/schema/relation.js +0 -104
- package/dist/transaction/schema/residency.d.ts +0 -29
- package/dist/transaction/schema/residency.js +0 -25
- package/dist/transaction/schema/roles.d.ts +0 -249
- package/dist/transaction/schema/roles.js +0 -230
- package/dist/transaction/schema/schema.d.ts +0 -324
- package/dist/transaction/schema/schema.js +0 -305
- package/dist/transaction/schema/tenancy.d.ts +0 -139
- package/dist/transaction/schema/tenancy.js +0 -190
- package/dist/transaction/transactionLayer.d.ts +0 -82
- package/dist/transaction/transactionLayer.js +0 -24
- package/dist/transaction/transactions/settlement/commitEnvelope.d.ts +0 -143
- package/dist/transaction/transactions/settlement/commitEnvelope.js +0 -161
- package/dist/transaction/transactions/settlement/httpCommitEnvelope.d.ts +0 -53
- package/dist/transaction/transactions/settlement/httpCommitEnvelope.js +0 -207
- package/dist/transaction/transactions/settlement/idempotencyKey.d.ts +0 -10
- package/dist/transaction/transactions/settlement/idempotencyKey.js +0 -9
- package/dist/transaction/transactions/settlement/pendingWrite.d.ts +0 -112
- package/dist/transaction/transactions/settlement/pendingWrite.js +0 -20
- package/dist/transaction/transport/commitFrames.d.ts +0 -90
- package/dist/transaction/transport/commitFrames.js +0 -134
- package/dist/transaction/transport/connectionManager.d.ts +0 -215
- package/dist/transaction/transport/connectionManager.js +0 -673
- package/dist/transaction/transport/credentialLifecycle.d.ts +0 -177
- package/dist/transaction/transport/credentialLifecycle.js +0 -324
- package/dist/transaction/transport/heartbeat.d.ts +0 -65
- package/dist/transaction/transport/heartbeat.js +0 -93
- package/dist/transaction/transport/httpClient.d.ts +0 -123
- package/dist/transaction/transport/httpClient.js +0 -145
- package/dist/transaction/transport/httpOptions.d.ts +0 -33
- package/dist/transaction/transport/httpOptions.js +0 -12
- package/dist/transaction/transport/httpTransport.d.ts +0 -8
- package/dist/transaction/transport/httpTransport.js +0 -1276
- package/dist/transaction/transport/networkProbe.d.ts +0 -84
- package/dist/transaction/transport/networkProbe.js +0 -207
- package/dist/transaction/transport/wsFrameHandlers.d.ts +0 -128
- package/dist/transaction/transport/wsFrameHandlers.js +0 -429
- package/dist/transaction/transport/wsTransport.d.ts +0 -576
- package/dist/transaction/transport/wsTransport.js +0 -1017
- package/dist/transaction/types/assertExact.d.ts +0 -17
- package/dist/transaction/types/assertExact.js +0 -1
- package/dist/transaction/types/global.d.ts +0 -107
- package/dist/transaction/types/global.js +0 -40
- package/dist/transaction/types/index.d.ts +0 -205
- package/dist/transaction/types/index.js +0 -56
- package/dist/transaction/types/modelData.d.ts +0 -10
- package/dist/transaction/types/modelData.js +0 -9
- package/dist/transaction/types/participant.d.ts +0 -20
- package/dist/transaction/types/participant.js +0 -10
- package/dist/transaction/types/streams.d.ts +0 -540
- package/dist/transaction/types/streams.js +0 -11
- package/dist/transaction/utils/asyncIterator.d.ts +0 -34
- package/dist/transaction/utils/asyncIterator.js +0 -135
- package/dist/transaction/utils/duration.d.ts +0 -25
- package/dist/transaction/utils/duration.js +0 -45
- package/dist/transaction/utils/json.d.ts +0 -57
- package/dist/transaction/utils/json.js +0 -276
- package/dist/transaction/wire/accountResponses.d.ts +0 -351
- package/dist/transaction/wire/accountResponses.js +0 -255
- package/dist/transaction/wire/auth.d.ts +0 -49
- package/dist/transaction/wire/auth.js +0 -57
- package/dist/transaction/wire/bootstrapReason.d.ts +0 -9
- package/dist/transaction/wire/bootstrapReason.js +0 -8
- package/dist/transaction/wire/claimEvent.d.ts +0 -76
- package/dist/transaction/wire/claimEvent.js +0 -73
- package/dist/transaction/wire/claims.d.ts +0 -463
- package/dist/transaction/wire/claims.js +0 -229
- package/dist/transaction/wire/commit.d.ts +0 -603
- package/dist/transaction/wire/commit.js +0 -321
- package/dist/transaction/wire/delta.d.ts +0 -250
- package/dist/transaction/wire/delta.js +0 -147
- package/dist/transaction/wire/errorEnvelope.d.ts +0 -72
- package/dist/transaction/wire/errorEnvelope.js +0 -123
- package/dist/transaction/wire/feedCursor.d.ts +0 -60
- package/dist/transaction/wire/feedCursor.js +0 -82
- package/dist/transaction/wire/feedEvent.d.ts +0 -177
- package/dist/transaction/wire/feedEvent.js +0 -39
- package/dist/transaction/wire/frames.d.ts +0 -194
- package/dist/transaction/wire/frames.js +0 -50
- package/dist/transaction/wire/inboundFrames.d.ts +0 -552
- package/dist/transaction/wire/inboundFrames.js +0 -116
- package/dist/transaction/wire/index.d.ts +0 -50
- package/dist/transaction/wire/index.js +0 -74
- package/dist/transaction/wire/listEnvelope.d.ts +0 -37
- package/dist/transaction/wire/listEnvelope.js +0 -42
- package/dist/transaction/wire/modelResponses.d.ts +0 -85
- package/dist/transaction/wire/modelResponses.js +0 -43
- package/dist/transaction/wire/protocol.d.ts +0 -38
- package/dist/transaction/wire/protocol.js +0 -38
- package/dist/transaction/wire/protocolVersion.d.ts +0 -73
- package/dist/transaction/wire/protocolVersion.js +0 -83
- package/dist/transactions/mutations/MutationQueue.d.ts +0 -655
- package/dist/transactions/mutations/MutationQueue.js +0 -2797
- package/dist/transactions/mutations/MutationStore.d.ts +0 -20
- package/dist/transactions/mutations/MutationStore.js +0 -53
- package/dist/transactions/mutations/UnconfirmedWrites.d.ts +0 -82
- package/dist/transactions/mutations/UnconfirmedWrites.js +0 -104
- package/dist/transactions/mutations/coalesceRules.d.ts +0 -58
- package/dist/transactions/mutations/coalesceRules.js +0 -140
- package/dist/transactions/mutations/commitLatency.d.ts +0 -52
- package/dist/transactions/mutations/commitLatency.js +0 -130
- package/dist/transactions/mutations/commitOutboxStore.d.ts +0 -28
- package/dist/transactions/mutations/commitOutboxStore.js +0 -26
- package/dist/transactions/mutations/commitPayload.d.ts +0 -164
- package/dist/transactions/mutations/commitPayload.js +0 -152
- package/dist/transactions/mutations/deltaConfirmation.d.ts +0 -59
- package/dist/transactions/mutations/deltaConfirmation.js +0 -233
- package/dist/transactions/mutations/durableWriteStore.d.ts +0 -14
- package/dist/transactions/mutations/durableWriteStore.js +0 -12
- package/dist/transactions/mutations/optimisticApply.d.ts +0 -49
- package/dist/transactions/mutations/optimisticApply.js +0 -65
- package/dist/transactions/mutations/replayValidation.d.ts +0 -186
- package/dist/transactions/mutations/replayValidation.js +0 -163
- package/dist/utils/mobxSetup.d.ts +0 -53
- package/dist/utils/mobxSetup.js +0 -330
- package/dist/webhooks/events.d.ts +0 -43
- package/dist/webhooks/events.js +0 -42
- package/dist/webhooks/index.d.ts +0 -8
- package/dist/webhooks/index.js +0 -8
- package/dist/wire/index.d.ts +0 -1
- package/dist/wire/index.js +0 -8
- package/docs/interaction-model.md +0 -99
|
@@ -1,266 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared resource types for the typed clients and private HTTP transport.
|
|
3
|
-
* the commit and claim shapes, the session-mint params and resource, and the
|
|
4
|
-
* {@link HttpClaimApi} derivation. This module holds only types and has no runtime
|
|
5
|
-
* imports.
|
|
6
|
-
*/
|
|
7
|
-
import type { OnStaleMode, ReadDependency, TrackDependency } from '../coordination/schema.js';
|
|
8
|
-
import type { ClientCommitReceipt, CommitWait } from '../wire/commit.js';
|
|
9
|
-
export type { CommitWait };
|
|
10
|
-
import type { ModelTarget, ModelClaim } from '../coordination/schema.js';
|
|
11
|
-
export type { ModelTarget, ModelClaim };
|
|
12
|
-
import type { ResolveClaimMeta } from '../types/global.js';
|
|
13
|
-
import type { SchemaRecord } from '../schema/schema.js';
|
|
14
|
-
import type { SyncGroupInput } from '../schema/roles.js';
|
|
15
|
-
import type { CapabilityCan, CapabilityOperation, CapabilityScope } from '../auth/capability.js';
|
|
16
|
-
import type { Claim, ClaimStream, ClaimWaitOptions, Duration, HeldClaim } from '../types/streams.js';
|
|
17
|
-
import type { ClaimOptions, ClaimParams, ClaimReadApi, AwaitedClaimMethod } from './modelOperations.js';
|
|
18
|
-
/**
|
|
19
|
-
* The operations available on each model in the sync engine:
|
|
20
|
-
* `retrieve({ id })` — an async single-row server read
|
|
21
|
-
* `list({ where })` — an async collection server read
|
|
22
|
-
* `local.retrieve(id)` / `local.list(...)` / `local.count(...)` — synchronous local reads
|
|
23
|
-
* `create({ data })` / `update({ id, data })` / `delete({ id })` — writes
|
|
24
|
-
* `claim({ id })` — a durable claim handle for coordinated writes
|
|
25
|
-
*/
|
|
26
|
-
export type ModelOperationAction = 'create' | 'update' | 'delete' | 'archive' | 'unarchive';
|
|
27
|
-
export type IfClaimedPolicy = 'return' | 'fail';
|
|
28
|
-
export interface ClaimedOptions {
|
|
29
|
-
/**
|
|
30
|
-
* What to do when another participant has claimed the target: `return` lets
|
|
31
|
-
* the read proceed; `fail` throws `AbloClaimedError`. Inspect claim state via
|
|
32
|
-
* `ablo.<model>.claim.state({ id })`. Waiting is a claim-side concern — take
|
|
33
|
-
* `ablo.<model>.claim({ id })` (it queues fairly); reads never block.
|
|
34
|
-
*/
|
|
35
|
-
readonly ifClaimed?: IfClaimedPolicy;
|
|
36
|
-
}
|
|
37
|
-
export type { ClaimWaitOptions } from '../types/streams.js';
|
|
38
|
-
export interface ModelReadOptions extends ClaimedOptions {
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* The target a caller names when creating a claim: {@link ModelTarget} with its
|
|
42
|
-
* one caller-authored member typed — `meta` is the shape declared on
|
|
43
|
-
* `Register`'s `ClaimMeta` slot, the same declaration every reader of the claim
|
|
44
|
-
* is given back.
|
|
45
|
-
*
|
|
46
|
-
* Derived rather than restated, and narrowed only here: `modelTargetSchema`
|
|
47
|
-
* keeps parsing `meta` as an open record, because a peer on a newer build must
|
|
48
|
-
* still be understood. The wire stays permissive; the DTO the caller writes
|
|
49
|
-
* does not.
|
|
50
|
-
*/
|
|
51
|
-
export type ModelTargetInput = Omit<ModelTarget, 'meta'> & {
|
|
52
|
-
readonly meta?: ResolveClaimMeta;
|
|
53
|
-
};
|
|
54
|
-
export interface ClaimCreateOptions {
|
|
55
|
-
readonly target: ModelTargetInput;
|
|
56
|
-
/** Peer-visible description of the work — the same field on every claim
|
|
57
|
-
* surface. Defaults to `'editing'` when omitted. */
|
|
58
|
-
readonly description?: string;
|
|
59
|
-
readonly ttl?: Duration;
|
|
60
|
-
/**
|
|
61
|
-
* Join the server's fair FIFO queue when the target is already claimed,
|
|
62
|
-
* rather than failing immediately. `create` then resolves only once the
|
|
63
|
-
* lease is actually ours (the server pushes `claim_acquired` if the target
|
|
64
|
-
* was free, or `claim_granted` when we reach the head of the line). Without
|
|
65
|
-
* this, a contended claim throws. Used by `ablo.<model>.claim` so writers
|
|
66
|
-
* serialize instead of racing.
|
|
67
|
-
*/
|
|
68
|
-
readonly queue?: boolean;
|
|
69
|
-
/** Cap on how long to wait for a queued grant before rejecting. */
|
|
70
|
-
readonly waitTimeoutMs?: number;
|
|
71
|
-
/**
|
|
72
|
-
* Backpressure: reject with `AbloClaimedError('queue_too_deep')` instead of
|
|
73
|
-
* waiting if the queue is already `>= maxQueueDepth` when we join.
|
|
74
|
-
*/
|
|
75
|
-
readonly maxQueueDepth?: number;
|
|
76
|
-
}
|
|
77
|
-
export interface CommitOperationInput {
|
|
78
|
-
readonly action: ModelOperationAction;
|
|
79
|
-
/** The model name — matches `ablo.<model>` and the schema's `model()`. */
|
|
80
|
-
readonly model: string;
|
|
81
|
-
readonly id?: string | null;
|
|
82
|
-
readonly data?: Record<string, unknown> | null;
|
|
83
|
-
readonly transactionId?: string | null;
|
|
84
|
-
readonly readAt?: number | null;
|
|
85
|
-
readonly onStale?: OnStaleMode | null;
|
|
86
|
-
/** Fencing token (Option B) from the batch's claim handle; server-validated. */
|
|
87
|
-
readonly fenceToken?: number | null;
|
|
88
|
-
}
|
|
89
|
-
export interface CommitCreateOptions {
|
|
90
|
-
readonly idempotencyKey?: string | null;
|
|
91
|
-
readonly readAt?: number | null;
|
|
92
|
-
readonly onStale?: OnStaleMode | null;
|
|
93
|
-
/**
|
|
94
|
-
* A claim handle from `ablo.<model>.claim({ id })` (or the HTTP claim
|
|
95
|
-
* surface). Same vocabulary as the per-model writes: the handle's
|
|
96
|
-
* snapshot watermark becomes the batch `readAt` default and `onStale`
|
|
97
|
-
* defaults to `'reject'`, so a commit that follows a claim is guarded
|
|
98
|
-
* against concurrent edits without re-stating the watermark by hand.
|
|
99
|
-
* Explicit `readAt`/`onStale` on the options win.
|
|
100
|
-
*/
|
|
101
|
-
readonly claim?: Claim | null;
|
|
102
|
-
/** One atomic batch. Use a one-element array for a single operation. */
|
|
103
|
-
readonly operations: readonly CommitOperationInput[];
|
|
104
|
-
readonly wait?: CommitWait;
|
|
105
|
-
/**
|
|
106
|
-
* The batch premise — the "did anything I looked at change?" guard.
|
|
107
|
-
* Declare the rows (`{ model, id, readAt, fields? }`) or sync groups
|
|
108
|
-
* (`{ group, readAt }`, for example `report:abc`) this batch was premised on; the
|
|
109
|
-
* server checks that none moved since `readAt` and fires the entry's `onStale`
|
|
110
|
-
* over the batch. This is distinct from the write-target `readAt`: it guards what
|
|
111
|
-
* you read, not what you write.
|
|
112
|
-
*/
|
|
113
|
-
readonly reads?: readonly ReadDependency[] | null;
|
|
114
|
-
/**
|
|
115
|
-
* Durable premises to register as part of this batch — the persisted
|
|
116
|
-
* sibling of `reads`. Where `reads` guards only this commit, a `track` entry
|
|
117
|
-
* (`{ model, id, readAt? }` for a row or `{ group, readAt? }` for a sync group)
|
|
118
|
-
* lives on past it: a later matching change rides back on a future receipt's
|
|
119
|
-
* `notifications`. A track-only batch (just `track`, an empty `operations`) is
|
|
120
|
-
* the batch form of `ablo.<model>.track()`.
|
|
121
|
-
*/
|
|
122
|
-
readonly track?: readonly TrackDependency[] | null;
|
|
123
|
-
}
|
|
124
|
-
/** Public projection inferred from the canonical runtime schema. */
|
|
125
|
-
export type CommitReceipt = ClientCommitReceipt;
|
|
126
|
-
export interface CommitResource {
|
|
127
|
-
create(options: CommitCreateOptions): Promise<CommitReceipt>;
|
|
128
|
-
}
|
|
129
|
-
export interface ClaimResource extends ClaimStream {
|
|
130
|
-
create(options: ClaimCreateOptions): Promise<Claim>;
|
|
131
|
-
list(target?: Partial<ModelTarget>): readonly ModelClaim[];
|
|
132
|
-
waitFor(target: Partial<ModelTarget>, options?: ClaimWaitOptions): Promise<void>;
|
|
133
|
-
}
|
|
134
|
-
export interface ModelMutationOptions extends ClaimedOptions {
|
|
135
|
-
readonly claimRef?: string | {
|
|
136
|
-
readonly id: string;
|
|
137
|
-
} | null;
|
|
138
|
-
readonly idempotencyKey?: string | null;
|
|
139
|
-
readonly readAt?: number | null;
|
|
140
|
-
readonly onStale?: OnStaleMode | null;
|
|
141
|
-
readonly wait?: CommitWait;
|
|
142
|
-
readonly claim?: Claim | ClaimOptions | null;
|
|
143
|
-
/** Fencing token (Option B) from the claim; server-validated at commit. */
|
|
144
|
-
readonly fenceToken?: number | null;
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* The stateless HTTP claim surface. Most code puts a `claim` directly on the write
|
|
148
|
-
* (`update({ id, data, claim })`) and lets the SDK release it; reach for this
|
|
149
|
-
* namespace for multi-step handles and coordination screens.
|
|
150
|
-
*
|
|
151
|
-
* It is the same surface as the reactive claim API, but because every read is a
|
|
152
|
-
* server round-trip, `state`, `queue`, and `reorder` are awaited here. The
|
|
153
|
-
* WebSocket client resolves those synchronously from its local cache, which is what
|
|
154
|
-
* lets it read a claim's state inside a React render; a stateless client has no
|
|
155
|
-
* cache to read, so the promise is unavoidable.
|
|
156
|
-
*
|
|
157
|
-
* It is derived from `ClaimReadApi` through {@link AwaitedClaimMethod} so the two
|
|
158
|
-
* transports cannot drift: the only difference is the promise wrapper that
|
|
159
|
-
* statelessness forces. `claim({ id })` is identical on both (already async);
|
|
160
|
-
* `state`, `queue`, `reorder`, and `release` are the awaited form.
|
|
161
|
-
*/
|
|
162
|
-
export type HttpClaimApi<T = Record<string, unknown>> = ((params: ClaimParams<T>) => Promise<HeldClaim<T>>) & {
|
|
163
|
-
[K in keyof ClaimReadApi<T>]: AwaitedClaimMethod<ClaimReadApi<T>[K]>;
|
|
164
|
-
};
|
|
165
|
-
/** A single data operation a scoped **agent** session may perform on a model.
|
|
166
|
-
* The SDK-facing name for {@link CapabilityOperation}; the vocabulary itself is
|
|
167
|
-
* declared once, as a schema, in `auth/capability.ts`. */
|
|
168
|
-
export type SessionOperation = CapabilityOperation;
|
|
169
|
-
/** Parameters for minting an end-user session — full data authority within the
|
|
170
|
-
* organization. Mints an `ek_` token. `user.id` is your end user's id from your
|
|
171
|
-
* own identity provider and becomes the session's `participantId`; Ablo does not
|
|
172
|
-
* model your users, so it is treated as an opaque string at the trust boundary. */
|
|
173
|
-
export interface CreateUserSessionParams {
|
|
174
|
-
/** Your end user. `id` becomes the token's `participantId`. */
|
|
175
|
-
user: {
|
|
176
|
-
id: string;
|
|
177
|
-
};
|
|
178
|
-
/** Mint the session into this organization instead of the key's own — for a
|
|
179
|
-
* platform that serves many tenants from one backend. Requires the `sk_` key to
|
|
180
|
-
* carry the `ephemeral:mint-any-org` scope; omit it for the normal
|
|
181
|
-
* single-tenant case. */
|
|
182
|
-
organizationId?: string;
|
|
183
|
-
/** Sync groups this session may subscribe to — typed (`'default'` or
|
|
184
|
-
* `<namespace>:<id>`; build with `syncGroup(kind, id)` from
|
|
185
|
-
* `@abloatai/ablo/schema`). Omit for the server default:
|
|
186
|
-
* `[org:<your org>, user:<user.id>]`. */
|
|
187
|
-
syncGroups?: readonly SyncGroupInput[];
|
|
188
|
-
/** Token lifetime in seconds. Defaults to 900 (15 minutes). */
|
|
189
|
-
ttlSeconds?: number;
|
|
190
|
-
/** Opaque identity blob echoed back to the client as `ablo.user`. */
|
|
191
|
-
userMeta?: Record<string, unknown>;
|
|
192
|
-
agent?: never;
|
|
193
|
-
can?: never;
|
|
194
|
-
}
|
|
195
|
-
/** Mint params for a scoped **agent** session — mints a restricted `rk_` token
|
|
196
|
-
* gated to exactly the operations named in `can`. `can` is typed off your
|
|
197
|
-
* schema (no magic `'task.update'` strings): `{ Task: ['update'], Report: ['read'] }`
|
|
198
|
-
* — the SDK serializes each entry to the wire allowlist (`task.update`). */
|
|
199
|
-
export interface CreateAgentSessionParams<S extends SchemaRecord> {
|
|
200
|
-
/** Your agent. `id` becomes the token's `participantId`. */
|
|
201
|
-
agent: {
|
|
202
|
-
id: string;
|
|
203
|
-
};
|
|
204
|
-
/** Per-model operation allowlist, typed against the schema's model names. */
|
|
205
|
-
can: CapabilityCan<S>;
|
|
206
|
-
/** Sync groups this session may subscribe to — typed (`'default'` or
|
|
207
|
-
* `<namespace>:<id>`; build with `syncGroup(kind, id)` from
|
|
208
|
-
* `@abloatai/ablo/schema`). Omit for the server default: the org
|
|
209
|
-
* anchor (`org:<your org>`) + the agent's own anchor. */
|
|
210
|
-
syncGroups?: readonly SyncGroupInput[];
|
|
211
|
-
/** Token lifetime in seconds. Defaults to 900 (15 minutes). */
|
|
212
|
-
ttlSeconds?: number;
|
|
213
|
-
/** Opaque identity blob echoed back to the client as `ablo.agent`. */
|
|
214
|
-
userMeta?: Record<string, unknown>;
|
|
215
|
-
user?: never;
|
|
216
|
-
}
|
|
217
|
-
/** Params for {@link Ablo.sessions}.create — a discriminated union: pass
|
|
218
|
-
* `{ user }` for a full-authority end-user session (`ek_`) or `{ agent, can }`
|
|
219
|
-
* for a scoped agent session (`rk_`). */
|
|
220
|
-
export type CreateSessionParams<S extends SchemaRecord> = CreateUserSessionParams | CreateAgentSessionParams<S>;
|
|
221
|
-
/** Params for {@link Ablo.agents}.create — a flattened agent descriptor (no
|
|
222
|
-
* `{ agent }` discriminator: `agents.create` only ever mints an agent). Unlike
|
|
223
|
-
* {@link CreateSessionParams} it resolves to a connected, scoped {@link Ablo}
|
|
224
|
-
* client rather than a raw token. */
|
|
225
|
-
export interface CreateAgentClientParams<S extends SchemaRecord> {
|
|
226
|
-
/** The wire participant identity (`agent:<id>`) that claim exclusion and the
|
|
227
|
-
* FIFO queue gate on. Omit it to get a fresh random id — a distinct, independent
|
|
228
|
-
* participant, which is the default and what you want for concurrent agents.
|
|
229
|
-
* Pass a stable string only when one logical agent must re-attach to its own
|
|
230
|
-
* held claims across reconnects or restarts. */
|
|
231
|
-
id?: string;
|
|
232
|
-
/** A human-readable label for logs and attribution (carried in `userMeta.name`).
|
|
233
|
-
* It is independent of `id`: two agents that share a `name` still receive
|
|
234
|
-
* distinct ids and coordinate as separate participants — `name` never derives or
|
|
235
|
-
* collapses identity. */
|
|
236
|
-
name?: string;
|
|
237
|
-
/** Per-model operation allowlist, typed against the schema's model names. */
|
|
238
|
-
can: CapabilityCan<S>;
|
|
239
|
-
/** Sync groups this agent may subscribe to — typed (`'default'` or
|
|
240
|
-
* `<namespace>:<id>`). Omit for the server default (org anchor + the
|
|
241
|
-
* agent's own anchor). */
|
|
242
|
-
syncGroups?: readonly SyncGroupInput[];
|
|
243
|
-
/** Token lifetime in seconds. Defaults to 900 (15 minutes); the returned client
|
|
244
|
-
* re-mints before expiry, so a long-running agent never handles rotation
|
|
245
|
-
* itself. */
|
|
246
|
-
ttlSeconds?: number;
|
|
247
|
-
/** Extra opaque identity blob echoed on the session scope. Merged with
|
|
248
|
-
* `name` (the `name` param wins if you also set `userMeta.name`). */
|
|
249
|
-
userMeta?: Record<string, unknown>;
|
|
250
|
-
}
|
|
251
|
-
/** A minted session. `token` is the secret the holder presents as its bearer. */
|
|
252
|
-
export interface AbloSession {
|
|
253
|
-
object: 'session';
|
|
254
|
-
/** Stable id of the minted credential (for revocation). */
|
|
255
|
-
id: string;
|
|
256
|
-
/** The short-lived session token — `ek_` for a `{ user }` session, `rk_`
|
|
257
|
-
* for an `{ agent }` session. Hand this to the participant's runtime. */
|
|
258
|
-
token: string;
|
|
259
|
-
/** ISO-8601 expiry. */
|
|
260
|
-
expiresAt: string;
|
|
261
|
-
organizationId: string;
|
|
262
|
-
/** The grant this token carries, on both axes — the same shape the key row
|
|
263
|
-
* stores and the gates enforce. */
|
|
264
|
-
scope: CapabilityScope;
|
|
265
|
-
userMeta: Record<string, unknown>;
|
|
266
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared resource types for the typed clients and private HTTP transport.
|
|
3
|
-
* the commit and claim shapes, the session-mint params and resource, and the
|
|
4
|
-
* {@link HttpClaimApi} derivation. This module holds only types and has no runtime
|
|
5
|
-
* imports.
|
|
6
|
-
*/
|
|
7
|
-
export {};
|
|
@@ -1,319 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The request contract for `ablo.<model>` — the option and parameter shapes a
|
|
3
|
-
* caller passes to a read, a write, or a claim.
|
|
4
|
-
*
|
|
5
|
-
* These types describe the *change or the query being requested*, never a local
|
|
6
|
-
* copy of the rows it touches, so they sit in the settlement core and are shared
|
|
7
|
-
* by every transport and every caller (ADR 0013 §4, ADR 0016). The factory that
|
|
8
|
-
* binds them to reactive model instances — `createModelProxy` — stays with the
|
|
9
|
-
* reactive consumer, along with `ModelOperations` and `ModelCollaboration`,
|
|
10
|
-
* which reference the live participant handle.
|
|
11
|
-
*/
|
|
12
|
-
import type { ModelScope } from '../types/index.js';
|
|
13
|
-
import type { ResolveClaimMeta } from '../types/global.js';
|
|
14
|
-
import type { AbloClaimedError } from '../errors.js';
|
|
15
|
-
import type { StaleNotification, TrackDependency } from '../coordination/schema.js';
|
|
16
|
-
import type { Duration } from '../utils/duration.js';
|
|
17
|
-
import type { Claim, ClaimHeartbeat, ClaimHeartbeatOptions, HeldClaim, HeldLease, TargetRange } from '../types/streams.js';
|
|
18
|
-
import type { MutationOptions } from './mutationOptions.js';
|
|
19
|
-
import type { LoadWhere } from './where.js';
|
|
20
|
-
/**
|
|
21
|
-
* A lifecycle filter, accepted either as the enum or as its bare string. The
|
|
22
|
-
* string arm is a template projection of the enum rather than a second list, so
|
|
23
|
-
* a scope added to {@link ModelScope} is spellable both ways at once.
|
|
24
|
-
*/
|
|
25
|
-
export type ModelListScope = ModelScope | `${ModelScope}`;
|
|
26
|
-
/**
|
|
27
|
-
* Options for `track({ id })` — register a durable premise on a row.
|
|
28
|
-
*
|
|
29
|
-
* Derived from the wire's row-form {@link TrackDependency} rather than restated
|
|
30
|
-
* beside it: the caller names the row and, optionally, the watermark it is
|
|
31
|
-
* premised on, while `model` comes from the proxy the call was made on. Adding
|
|
32
|
-
* a field to the dependency therefore reaches this surface automatically, and
|
|
33
|
-
* removing one stops the callers compiling.
|
|
34
|
-
*
|
|
35
|
-
* On `readAt`: omit it to baseline at the current head — "tell me about
|
|
36
|
-
* anything from here on". Pass a known watermark (the one you read the row at)
|
|
37
|
-
* to also catch a change that landed between that read and this call.
|
|
38
|
-
*/
|
|
39
|
-
export type ModelTrackParams = Omit<Extract<TrackDependency, {
|
|
40
|
-
model: string;
|
|
41
|
-
}>, 'model'>;
|
|
42
|
-
/** The result of `track({ id })`. */
|
|
43
|
-
export interface ModelTrackResult {
|
|
44
|
-
/**
|
|
45
|
-
* Tracks that had ALREADY fired at registration time — a change matching an
|
|
46
|
-
* open track that landed before this call. Present only when something was
|
|
47
|
-
* already stale; the ongoing signal arrives on the receipts of later commits.
|
|
48
|
-
*/
|
|
49
|
-
notifications?: StaleNotification[];
|
|
50
|
-
}
|
|
51
|
-
/** Options for the synchronous local-graph reads `local.list` and `onChange` —
|
|
52
|
-
* a JavaScript `filter`, an equality `where`, and a lifecycle `state`. This is
|
|
53
|
-
* the local, reactive axis; contrast {@link ServerReadOptions}, the
|
|
54
|
-
* asynchronous server axis. */
|
|
55
|
-
export interface LocalReadOptions<T> {
|
|
56
|
-
where?: Partial<T>;
|
|
57
|
-
/** Arbitrary local predicate. Applied after `where`. */
|
|
58
|
-
filter?: (entity: T) => boolean;
|
|
59
|
-
orderBy?: {
|
|
60
|
-
[K in keyof T]?: 'asc' | 'desc';
|
|
61
|
-
};
|
|
62
|
-
limit?: number;
|
|
63
|
-
offset?: number;
|
|
64
|
-
/** Lifecycle filter — `live` (the default), `archived`, or `all`. Named
|
|
65
|
-
* `state` so it does not collide with the sync-group `scope`. */
|
|
66
|
-
state?: ModelListScope;
|
|
67
|
-
}
|
|
68
|
-
export type LocalCountOptions<T> = Pick<LocalReadOptions<T>, 'where' | 'filter' | 'state'>;
|
|
69
|
-
/** Options for the asynchronous server reads `retrieve` and `list` — the
|
|
70
|
-
* operator `where` filter, `type`, and `expand`. This is the server axis;
|
|
71
|
-
* contrast {@link LocalReadOptions}, the local, reactive axis. */
|
|
72
|
-
export interface ServerReadOptions<T> {
|
|
73
|
-
/**
|
|
74
|
-
* Filter for the lookup. Accepts two forms:
|
|
75
|
-
* - object form — `{ name: 'foo' }`: equality, where an array value means `IN`
|
|
76
|
-
* - tuple form — `[['name', 'ILIKE', '%Goldman%']]`: explicit operators
|
|
77
|
-
*
|
|
78
|
-
* See {@link LoadWhere} for the full grammar. The wire protocol matches on AND
|
|
79
|
-
* only; for OR semantics, run two `list()` calls and union the results.
|
|
80
|
-
*/
|
|
81
|
-
where?: LoadWhere<T>;
|
|
82
|
-
orderBy?: {
|
|
83
|
-
[K in keyof T]?: 'asc' | 'desc';
|
|
84
|
-
};
|
|
85
|
-
limit?: number;
|
|
86
|
-
/**
|
|
87
|
-
* `complete` waits for the server. `unknown` returns whatever is local
|
|
88
|
-
* immediately and refreshes in the background.
|
|
89
|
-
*/
|
|
90
|
-
type?: 'complete' | 'unknown';
|
|
91
|
-
/**
|
|
92
|
-
* Schema-declared relation names to hydrate alongside the primary
|
|
93
|
-
* rows. The server's compiler resolves each name via the schema's
|
|
94
|
-
* relation metadata (`relation.belongsTo` / `relation.hasMany`)
|
|
95
|
-
* and emits the JOIN.
|
|
96
|
-
*/
|
|
97
|
-
expand?: readonly string[];
|
|
98
|
-
}
|
|
99
|
-
/** Options for the single-row async server read `retrieve({ id })`. A subset of
|
|
100
|
-
* {@link ServerReadOptions} — `where`/`limit`/`orderBy` are fixed by the id. */
|
|
101
|
-
export type ServerRetrieveOptions = Pick<ServerReadOptions<unknown>, 'type' | 'expand'>;
|
|
102
|
-
export interface ClaimTargetOptions<T = Record<string, unknown>> {
|
|
103
|
-
/** Peer-visible description of the work being performed — the sentence a
|
|
104
|
-
* contending participant reads to decide whether to wait, work elsewhere, or
|
|
105
|
-
* move on. Defaults to `'editing'`. The same field on every claim surface. */
|
|
106
|
-
description?: string;
|
|
107
|
-
/** Field-level target, for fine-grained claimed-state badges. */
|
|
108
|
-
field?: string;
|
|
109
|
-
/**
|
|
110
|
-
* Several named parts of the row at once. Claims conflict where their sets
|
|
111
|
-
* intersect, so two holders on disjoint parts do not wait for each other.
|
|
112
|
-
* Prefer this to packing names into `field`, which compares as one opaque
|
|
113
|
-
* string and lets overlapping sets both be granted.
|
|
114
|
-
*/
|
|
115
|
-
fields?: readonly string[];
|
|
116
|
-
/** Optional path for document/file-like targets. */
|
|
117
|
-
path?: string;
|
|
118
|
-
/** Optional range for document/file-like targets. */
|
|
119
|
-
range?: TargetRange;
|
|
120
|
-
/**
|
|
121
|
-
* App-defined structured metadata, carried verbatim to every participant
|
|
122
|
-
* that observes the claim. Declare its shape once, on `Register`'s
|
|
123
|
-
* `ClaimMeta` slot, and what you write here is what every reader is typed to
|
|
124
|
-
* find — the write side and the read side are the same declaration.
|
|
125
|
-
*/
|
|
126
|
-
meta?: ResolveClaimMeta;
|
|
127
|
-
/** Crash-cleanup TTL — the claim auto-releases if the holder dies. */
|
|
128
|
-
ttl?: Duration;
|
|
129
|
-
/**
|
|
130
|
-
* Behavior under contention. `true` (the default) queues behind the current
|
|
131
|
-
* holder and resolves once the row is yours. `false` is fail-fast: if another
|
|
132
|
-
* participant already holds the row, it rejects immediately with
|
|
133
|
-
* {@link AbloClaimedError} instead of waiting. Use `false` to deduplicate
|
|
134
|
-
* distributed work ("if someone else has this job, skip it"), where waiting
|
|
135
|
-
* would mean double-processing.
|
|
136
|
-
*
|
|
137
|
-
* The high-level typed claim defaults this on because it serializes writers;
|
|
138
|
-
* the low-level lease and the HTTP client default it off, since they resolve
|
|
139
|
-
* immediately and cannot transparently wait for a grant.
|
|
140
|
-
*/
|
|
141
|
-
queue?: boolean;
|
|
142
|
-
/**
|
|
143
|
-
* Backpressure: queue, but not behind too many others. If the server reports a
|
|
144
|
-
* position at or beyond `maxQueueDepth` when the client joins the line, it
|
|
145
|
-
* rejects with {@link AbloClaimedError} (`queue_too_deep`) instead of waiting.
|
|
146
|
-
* Omit to wait however deep the queue is.
|
|
147
|
-
*/
|
|
148
|
-
maxQueueDepth?: number;
|
|
149
|
-
/**
|
|
150
|
-
* Keep the lease alive for the duration of real work by beating on a
|
|
151
|
-
* cadence — the pattern for background workers whose task outlives the
|
|
152
|
-
* crash-cleanup TTL. `true` beats every third of the TTL (so two beats can
|
|
153
|
-
* fail before the lease is at risk, and a crashed worker's lease still
|
|
154
|
-
* lapses within one beat window); a duration such as `'2m'` sets the
|
|
155
|
-
* cadence explicitly. The loop stops on release. A beat answered with a
|
|
156
|
-
* definitive loss stops the loop and calls {@link onHeartbeatLost}; you can
|
|
157
|
-
* also beat manually with `held.heartbeat()`.
|
|
158
|
-
*/
|
|
159
|
-
heartbeat?: true | Duration;
|
|
160
|
-
/**
|
|
161
|
-
* Called once if the auto-heartbeat learns the lease is no longer yours
|
|
162
|
-
* (expired and possibly granted onward). The loop has already stopped;
|
|
163
|
-
* abandon the work or re-claim. Any write attempted under the old lease is
|
|
164
|
-
* independently rejected by its `readAt` guard.
|
|
165
|
-
*/
|
|
166
|
-
onHeartbeatLost?: (error: AbloClaimedError) => void;
|
|
167
|
-
/**
|
|
168
|
-
* Called after every successful beat (manual or auto) with the server's
|
|
169
|
-
* answer — chiefly `queueDepth`, the number of participants waiting in
|
|
170
|
-
* line behind this lease. A worker that can checkpoint may read pressure
|
|
171
|
-
* here and release early when others wait.
|
|
172
|
-
*/
|
|
173
|
-
onHeartbeat?(beat: ClaimHeartbeat): void;
|
|
174
|
-
}
|
|
175
|
-
/** Options for `claim({ id, ... })`. */
|
|
176
|
-
export interface ClaimParams<T = Record<string, unknown>> extends ClaimTargetOptions<T> {
|
|
177
|
-
readonly id: string;
|
|
178
|
-
}
|
|
179
|
-
export interface ClaimLookupParams<T = Record<string, unknown>> {
|
|
180
|
-
readonly id: string;
|
|
181
|
-
readonly field?: string;
|
|
182
|
-
}
|
|
183
|
-
export interface ClaimReorderParams<T = Record<string, unknown>> extends ClaimLookupParams<T> {
|
|
184
|
-
readonly order: readonly Claim[];
|
|
185
|
-
}
|
|
186
|
-
/**
|
|
187
|
-
* A claim handle: the held entity data plus an explicit release hook.
|
|
188
|
-
*
|
|
189
|
-
* ```ts
|
|
190
|
-
* const claim = await ablo.weatherReports.claim({
|
|
191
|
-
* id: 'report_stockholm',
|
|
192
|
-
* description: 'Fetching current weather before writing the forecast.',
|
|
193
|
-
* });
|
|
194
|
-
* try {
|
|
195
|
-
* await ablo.weatherReports.update({
|
|
196
|
-
* id: claim.target.id,
|
|
197
|
-
* data: { status: 'ready' },
|
|
198
|
-
* claim,
|
|
199
|
-
* });
|
|
200
|
-
* } finally {
|
|
201
|
-
* await claim.release();
|
|
202
|
-
* }
|
|
203
|
-
* ```
|
|
204
|
-
*
|
|
205
|
-
* `data` is a snapshot taken after the lease is held. Write through the flat
|
|
206
|
-
* `ablo.<model>.update({ id, data, claim })` verb — the handle carries the
|
|
207
|
-
* lease id and snapshot watermark for attribution and stale-write protection.
|
|
208
|
-
*/
|
|
209
|
-
export type { Claim, ClaimHeartbeat, ClaimHeartbeatOptions, HeldClaim, HeldLease };
|
|
210
|
-
export type ClaimOptions<T = Record<string, unknown>> = ClaimTargetOptions<T>;
|
|
211
|
-
/**
|
|
212
|
-
* The coordination surface for a model, exposed as a callable namespace.
|
|
213
|
-
*
|
|
214
|
-
* Most callers do not need this namespace directly. Put `claim: { ... }` on a
|
|
215
|
-
* write and the SDK acquires/releases around that one mutation:
|
|
216
|
-
*
|
|
217
|
-
* ```ts
|
|
218
|
-
* await ablo.tasks.update({
|
|
219
|
-
* id,
|
|
220
|
-
* data: { title },
|
|
221
|
-
* claim: {
|
|
222
|
-
* field: 'title',
|
|
223
|
-
* description: 'Renaming the task to match the project brief.',
|
|
224
|
-
* },
|
|
225
|
-
* });
|
|
226
|
-
* ```
|
|
227
|
-
*
|
|
228
|
-
* Use `claim({ id, ... })` when a tool spans multiple writes and needs one
|
|
229
|
-
* handle. `state`, `queue`, and `reorder` are coordination reads/scheduler
|
|
230
|
-
* controls for UI and operators.
|
|
231
|
-
*/
|
|
232
|
-
/**
|
|
233
|
-
* The coordination reads and scheduler controls on a claim namespace, in their
|
|
234
|
-
* reactive (synchronous) form: `state`, `queue`, and `reorder` resolve against
|
|
235
|
-
* the local pool with no round-trip, which is what lets a reactive selector read
|
|
236
|
-
* coordination state inside a React render.
|
|
237
|
-
*
|
|
238
|
-
* This is the single source of truth for the claim read surface. The stateless
|
|
239
|
-
* HTTP client exposes the awaited projection of exactly these methods (derived
|
|
240
|
-
* via {@link AwaitedClaimMethod}), so the two transports cannot drift — change a
|
|
241
|
-
* signature here and the HTTP surface follows.
|
|
242
|
-
*/
|
|
243
|
-
export interface ClaimReadApi<T = Record<string, unknown>> {
|
|
244
|
-
/**
|
|
245
|
-
* Current holder for a row, or `null` when free. Use this for UI badges and
|
|
246
|
-
* preflight checks, not for the normal write path.
|
|
247
|
-
*
|
|
248
|
-
* `target.meta` reads as the shape declared on `Register`'s `ClaimMeta`
|
|
249
|
-
* slot, so no read of it needs a guard. Pass `M` only to override that
|
|
250
|
-
* declaration for one call — `state<OtherMeta>({ id })` — which a program
|
|
251
|
-
* carrying more than one meta shape occasionally needs.
|
|
252
|
-
*/
|
|
253
|
-
state<M = ResolveClaimMeta>(params: ClaimLookupParams<T>): Claim<Record<string, unknown>, M> | null;
|
|
254
|
-
/**
|
|
255
|
-
* FIFO wait line behind the current holder. Advanced: useful for operator
|
|
256
|
-
* UIs and schedulers. Takes the same `meta` parameter as
|
|
257
|
-
* {@link ClaimReadApi.state}.
|
|
258
|
-
*/
|
|
259
|
-
queue<M = ResolveClaimMeta>(params: ClaimLookupParams<T>): {
|
|
260
|
-
readonly object: 'list';
|
|
261
|
-
readonly data: readonly Claim<Record<string, unknown>, M>[];
|
|
262
|
-
};
|
|
263
|
-
/**
|
|
264
|
-
* Re-rank the wait line. Advanced and permission-gated.
|
|
265
|
-
*/
|
|
266
|
-
reorder(params: ClaimReorderParams<T>): void;
|
|
267
|
-
/** Release a manual claim handle early. Single-write claims auto-release. */
|
|
268
|
-
release(params: ClaimLookupParams<T> | Claim<T>): Promise<void>;
|
|
269
|
-
}
|
|
270
|
-
/**
|
|
271
|
-
* The awaited form of a claim method: a synchronous return becomes a `Promise`,
|
|
272
|
-
* an already-async one (`release`) is left untouched. Used to derive the
|
|
273
|
-
* stateless HTTP claim surface from the reactive {@link ClaimReadApi}.
|
|
274
|
-
*/
|
|
275
|
-
export type AwaitedClaimMethod<F> = F extends (...args: infer A) => infer R ? R extends Promise<unknown> ? (...args: A) => R : (...args: A) => Promise<R> : F;
|
|
276
|
-
export interface ClaimApi<T> extends ClaimReadApi<T> {
|
|
277
|
-
/**
|
|
278
|
-
* Takes a claim and returns an explicit held-work handle — a {@link HeldClaim}.
|
|
279
|
-
* `data`, `release`, `revoke`, and the async disposer are always present (this
|
|
280
|
-
* call re-reads the row under the lease), so callers can use `handle.data`
|
|
281
|
-
* directly and `await using` works without a guard.
|
|
282
|
-
*/
|
|
283
|
-
(params: ClaimParams<T>): Promise<HeldClaim<T>>;
|
|
284
|
-
/**
|
|
285
|
-
* Takes a claim by id alone, for a row that lives only in the customer's own
|
|
286
|
-
* database — Ablo has never seen it, so there is nothing to re-read. Returns a
|
|
287
|
-
* {@link HeldLease}: the same lease controls as {@link HeldClaim}
|
|
288
|
-
* (`release`, `revoke`, `heartbeat`, `await using`) but no `.data`. Locking a
|
|
289
|
-
* key you know by id is exactly this — serialize writers without first
|
|
290
|
-
* syncing the row into Ablo.
|
|
291
|
-
*/
|
|
292
|
-
(id: string, opts?: ClaimOptions<T>): Promise<HeldLease>;
|
|
293
|
-
}
|
|
294
|
-
export interface ModelRetrieveParams extends ServerRetrieveOptions {
|
|
295
|
-
readonly id: string;
|
|
296
|
-
}
|
|
297
|
-
export interface ModelCreateParams<T, CreateInput> extends MutationOptions {
|
|
298
|
-
readonly data: CreateInput;
|
|
299
|
-
readonly id?: string | null;
|
|
300
|
-
readonly claim?: Claim<T> | ClaimTargetOptions<T> | null;
|
|
301
|
-
}
|
|
302
|
-
export interface ModelUpdateParams<T> extends MutationOptions {
|
|
303
|
-
readonly id: string;
|
|
304
|
-
readonly data: Partial<T>;
|
|
305
|
-
readonly claim?: Claim<T> | ClaimTargetOptions<T> | null;
|
|
306
|
-
}
|
|
307
|
-
export interface ModelDeleteParams<T> extends MutationOptions {
|
|
308
|
-
readonly id: string;
|
|
309
|
-
readonly claim?: Claim<T> | ClaimTargetOptions<T> | null;
|
|
310
|
-
}
|
|
311
|
-
/** Options for the WebSocket-only `ablo.<model>.join(ids, options?)`. */
|
|
312
|
-
export interface JoinOptions {
|
|
313
|
-
/**
|
|
314
|
-
* Lease TTL for the underlying presence claim — the participant
|
|
315
|
-
* auto-releases after this if the holder dies. Compact duration string
|
|
316
|
-
* (`'5m'`) or ms number, mirroring the claim `ttl`.
|
|
317
|
-
*/
|
|
318
|
-
ttl?: Duration;
|
|
319
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The request contract for `ablo.<model>` — the option and parameter shapes a
|
|
3
|
-
* caller passes to a read, a write, or a claim.
|
|
4
|
-
*
|
|
5
|
-
* These types describe the *change or the query being requested*, never a local
|
|
6
|
-
* copy of the rows it touches, so they sit in the settlement core and are shared
|
|
7
|
-
* by every transport and every caller (ADR 0013 §4, ADR 0016). The factory that
|
|
8
|
-
* binds them to reactive model instances — `createModelProxy` — stays with the
|
|
9
|
-
* reactive consumer, along with `ModelOperations` and `ModelCollaboration`,
|
|
10
|
-
* which reference the live participant handle.
|
|
11
|
-
*/
|
|
12
|
-
export {};
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Per-call options accepted by any mutation.
|
|
3
|
-
*
|
|
4
|
-
* Every field here defines, orders, settles, or authorises *the change itself*
|
|
5
|
-
* — request identity, commit disposition, fencing, and the premise it rests on.
|
|
6
|
-
* None of it touches a local copy of rows, so it belongs with the settlement
|
|
7
|
-
* core rather than the reactive consumer (ADR 0013 §4, ADR 0016).
|
|
8
|
-
*/
|
|
9
|
-
import type { CommitWait } from '../wire/commit.js';
|
|
10
|
-
import type { OnStaleMode, ReadDependency, TrackDependency } from '../coordination/schema.js';
|
|
11
|
-
/**
|
|
12
|
-
* Per-call options accepted by any mutation, passed as the last argument.
|
|
13
|
-
* Every field is optional; omitted fields fall back to sensible defaults.
|
|
14
|
-
*
|
|
15
|
-
* - `idempotencyKey` — when set, the server caches the response for 24 hours and
|
|
16
|
-
* returns the cached result on any retry using the same key. When omitted, the
|
|
17
|
-
* SDK generates a fresh UUID per mutation, so every call is retry-safe by
|
|
18
|
-
* default. `null` is retained for source compatibility and is treated like
|
|
19
|
-
* omission; write retries never opt out of request identity.
|
|
20
|
-
* - `label` — a human-readable tag recorded with the mutation for debugging, such
|
|
21
|
-
* as "nightly cleanup" or "user click".
|
|
22
|
-
*/
|
|
23
|
-
export interface MutationOptions {
|
|
24
|
-
idempotencyKey?: string | null;
|
|
25
|
-
label?: string;
|
|
26
|
-
wait?: CommitWait;
|
|
27
|
-
readAt?: number | null;
|
|
28
|
-
onStale?: OnStaleMode | null;
|
|
29
|
-
/**
|
|
30
|
-
* The fencing token (Option B) of the held claim this write belongs to. The
|
|
31
|
-
* server validates it against the entity's persisted high-water and rejects a
|
|
32
|
-
* stale token. Sourced from the claim handle, never set by hand.
|
|
33
|
-
*/
|
|
34
|
-
fenceToken?: number | null;
|
|
35
|
-
/** The id (or `{ id }`) of the claim this write belongs to. This is the
|
|
36
|
-
* low-level reference the commit carries so the write is attributed to a claim
|
|
37
|
-
* and can pass the holder's own lock. It is distinct from the `claim` handle on
|
|
38
|
-
* the model write parameters, which is the higher-level object you usually pass. */
|
|
39
|
-
claimRef?: string | {
|
|
40
|
-
readonly id: string;
|
|
41
|
-
} | null;
|
|
42
|
-
/**
|
|
43
|
-
* The batch premise — the answer to "did anything I looked at change?" Each
|
|
44
|
-
* entry is a row (`{ model, id, readAt, fields? }`) or a sync group
|
|
45
|
-
* (`{ group, readAt }`) that this write was premised on. The server checks
|
|
46
|
-
* that none of them moved since their `readAt` and applies the entry's
|
|
47
|
-
* `onStale` behavior to the whole batch. This is distinct from the per-operation
|
|
48
|
-
* `readAt`, which guards only the row being written.
|
|
49
|
-
*
|
|
50
|
-
* See `packages/sync-engine/docs/concurrency-convention.md` (§3 the two
|
|
51
|
-
* premises, §4 the batch premise) for the governing convention.
|
|
52
|
-
*/
|
|
53
|
-
reads?: ReadDependency[] | null;
|
|
54
|
-
/**
|
|
55
|
-
* Durable premises — what this write (or the record it produces) should
|
|
56
|
-
* keep watching. Unlike `reads`, which is checked once at commit and discarded,
|
|
57
|
-
* each `track` entry is persisted and re-checked against every future delta; a
|
|
58
|
-
* later matching change opens a `StaleNotification` for the tracking participant,
|
|
59
|
-
* delivered at their next commit or live to a held claim. Each entry is a row
|
|
60
|
-
* (`{ model, id }`) or a sync group (`{ group }`), optionally pinned to a `readAt`
|
|
61
|
-
* baseline (defaults to this commit's watermark).
|
|
62
|
-
*
|
|
63
|
-
* See `packages/sync-engine/docs/groups.md` for how `track` drives propagation.
|
|
64
|
-
*/
|
|
65
|
-
track?: TrackDependency[] | null;
|
|
66
|
-
}
|