@abloatai/ablo 0.34.1 → 0.35.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 -1
- package/CHANGELOG.md +674 -5
- package/README.md +39 -22
- package/dist/BaseSyncedStore.d.ts +152 -44
- package/dist/BaseSyncedStore.js +300 -184
- package/dist/Database.d.ts +9 -24
- package/dist/Database.js +37 -22
- package/dist/InstanceCache.d.ts +25 -4
- package/dist/InstanceCache.js +48 -15
- package/dist/LazyReferenceCollection.d.ts +3 -3
- package/dist/LazyReferenceCollection.js +4 -4
- package/dist/Model.d.ts +6 -6
- package/dist/Model.js +10 -10
- package/dist/ModelRegistry.d.ts +4 -4
- package/dist/ModelRegistry.js +3 -3
- package/dist/{SyncEngineContext.d.ts → RuntimeContext.d.ts} +20 -13
- package/dist/{SyncEngineContext.js → RuntimeContext.js} +11 -12
- package/dist/SyncClient.d.ts +42 -32
- package/dist/SyncClient.js +166 -110
- package/dist/ai-sdk/coordinatedTool.d.ts +2 -2
- package/dist/ai-sdk/coordinatedTool.js +1 -1
- package/dist/ai-sdk/coordinationContext.d.ts +2 -2
- package/dist/ai-sdk/coordinationContext.js +1 -1
- package/dist/ai-sdk/wrap.d.ts +3 -3
- package/dist/ai-sdk/wrap.js +2 -2
- package/dist/auth/index.d.ts +1 -156
- package/dist/auth/index.js +8 -301
- package/dist/cli.cjs +3344 -1073
- package/dist/client/Ablo.d.ts +42 -287
- package/dist/client/Ablo.js +118 -963
- package/dist/client/abloClient.d.ts +309 -0
- package/dist/client/abloClient.js +13 -0
- package/dist/client/clientPrelude.d.ts +52 -0
- package/dist/client/clientPrelude.js +60 -0
- package/dist/client/consoleLogger.d.ts +2 -2
- package/dist/client/coreClient.d.ts +60 -0
- package/dist/client/coreClient.js +118 -0
- package/dist/client/createInternalComponents.d.ts +4 -4
- package/dist/client/createInternalComponents.js +9 -8
- package/dist/client/createModelProxy.d.ts +78 -373
- package/dist/client/createModelProxy.js +114 -86
- package/dist/client/humans.d.ts +48 -0
- package/dist/client/humans.js +52 -0
- package/dist/client/modelRegistration.d.ts +1 -1
- package/dist/client/modelRegistration.js +9 -9
- package/dist/client/options.d.ts +73 -17
- package/dist/client/reactiveEngine.d.ts +48 -0
- package/dist/client/reactiveEngine.js +910 -0
- package/dist/client/resourceTypes.d.ts +9 -250
- package/dist/client/resourceTypes.js +8 -5
- package/dist/client/schemaConfig.d.ts +4 -4
- package/dist/client/schemaConfig.js +6 -2
- package/dist/client/validateAbloOptions.d.ts +3 -2
- package/dist/client/validateAbloOptions.js +1 -1
- package/dist/client/wsMutationExecutor.d.ts +3 -3
- package/dist/client/wsMutationExecutor.js +3 -3
- package/dist/context.d.ts +9 -9
- package/dist/context.js +10 -9
- package/dist/coordination/ClaimLog.d.ts +26 -0
- package/dist/coordination/ClaimLog.js +32 -0
- package/dist/coordination/index.d.ts +1 -15
- package/dist/coordination/index.js +8 -31
- package/dist/core/DatabaseManager.js +1 -1
- package/dist/core/QueryView.d.ts +1 -1
- package/dist/core/QueryView.js +1 -1
- package/dist/core/StoreManager.d.ts +4 -23
- package/dist/core/StoreManager.js +5 -55
- package/dist/core/index.d.ts +2 -2
- package/dist/core/index.js +2 -2
- package/dist/core/storeContract.d.ts +2 -2
- package/dist/docs/catalog.d.ts +72 -0
- package/dist/docs/catalog.js +227 -0
- package/dist/docs/index.d.ts +10 -0
- package/dist/docs/index.js +10 -0
- package/dist/environment.d.ts +1 -40
- package/dist/environment.js +8 -37
- package/dist/index.d.ts +40 -34
- package/dist/index.js +26 -20
- package/dist/interfaces/index.d.ts +44 -134
- package/dist/keys/index.d.ts +1 -77
- package/dist/keys/index.js +8 -190
- package/dist/mutators/{RecordingTransaction.d.ts → RecordingMutation.d.ts} +4 -4
- package/dist/mutators/{RecordingTransaction.js → RecordingMutation.js} +2 -2
- package/dist/mutators/Transaction.d.ts +1 -1
- package/dist/mutators/Transaction.js +1 -1
- package/dist/mutators/UndoManager.d.ts +6 -6
- package/dist/mutators/UndoManager.js +5 -5
- package/dist/mutators/defineMutators.d.ts +3 -3
- package/dist/mutators/defineMutators.js +1 -1
- package/dist/mutators/inverseOp.js +2 -2
- package/dist/mutators/mutateActions.d.ts +3 -3
- package/dist/mutators/mutateActions.js +1 -1
- package/dist/mutators/readerActions.d.ts +1 -1
- package/dist/mutators/undoApply.d.ts +1 -1
- package/dist/mutators/undoApply.js +1 -1
- package/dist/policy/index.d.ts +2 -2
- package/dist/policy/index.js +1 -1
- package/dist/query/client.d.ts +2 -2
- package/dist/query/client.js +4 -4
- package/dist/query/types.d.ts +6 -41
- package/dist/query/types.js +2 -2
- package/dist/react/AbloProvider.d.ts +6 -8
- package/dist/react/AbloProvider.js +5 -7
- package/dist/react/context.d.ts +1 -1
- package/dist/react/context.js +1 -1
- package/dist/react/index.d.ts +5 -5
- package/dist/react/index.js +3 -3
- package/dist/react/internalContext.d.ts +1 -1
- package/dist/react/useAblo.d.ts +3 -3
- package/dist/react/useAblo.js +1 -1
- package/dist/react/useCurrentUserId.js +1 -1
- package/dist/react/useErrorListener.js +1 -1
- package/dist/react/useMutationFailureListener.d.ts +2 -2
- package/dist/react/useMutationFailureListener.js +1 -1
- package/dist/react/useMutators.d.ts +3 -3
- package/dist/react/useMutators.js +3 -3
- package/dist/react/useUndoScope.d.ts +5 -5
- package/dist/react/useUndoScope.js +1 -1
- package/dist/schema/coordination.d.ts +69 -10
- package/dist/schema/coordination.js +86 -9
- package/dist/schema/ddl.js +2 -2
- package/dist/schema/diff.d.ts +1 -1
- package/dist/schema/generate.js +1 -1
- package/dist/schema/index.d.ts +10 -10
- package/dist/schema/index.js +18 -18
- package/dist/schema/queries.d.ts +27 -27
- package/dist/schema/queries.js +23 -23
- package/dist/schema/select.d.ts +3 -3
- package/dist/schema/select.js +3 -3
- package/dist/schema/serialize.d.ts +15 -6
- package/dist/schema/serialize.js +17 -3
- package/dist/schema/sugar.d.ts +6 -7
- package/dist/schema/sugar.js +9 -12
- package/dist/schema/syncDeltaRow.d.ts +4 -152
- package/dist/schema/syncDeltaRow.js +4 -105
- package/dist/server/adapter.d.ts +18 -1
- package/dist/server/commit.d.ts +10 -16
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.js +1 -1
- package/dist/server/readConfig.d.ts +1 -1
- package/dist/source/adapters/drizzle.d.ts +1 -1
- package/dist/source/adapters/drizzle.js +2 -2
- package/dist/source/adapters/kysely.d.ts +1 -1
- package/dist/source/adapters/kysely.js +1 -1
- package/dist/source/adapters/kyselyMutationCore.d.ts +1 -1
- package/dist/source/adapters/kyselyMutationCore.js +2 -2
- package/dist/source/adapters/memory.js +1 -1
- package/dist/source/adapters/prisma.d.ts +8 -3
- package/dist/source/adapters/prisma.js +1 -1
- package/dist/source/connector.js +1 -1
- package/dist/source/connectorProtocol.d.ts +2 -8
- package/dist/source/connectorProtocol.js +3 -2
- package/dist/source/contract.d.ts +29 -17
- package/dist/source/contract.js +27 -22
- package/dist/source/factory.d.ts +1 -1
- package/dist/source/footprint.d.ts +111 -0
- package/dist/source/footprint.js +0 -0
- package/dist/source/idempotency.js +2 -2
- package/dist/source/index.d.ts +1 -0
- package/dist/source/index.js +3 -0
- package/dist/source/next.d.ts +1 -1
- package/dist/source/signing.d.ts +9 -2
- package/dist/source/signing.js +4 -1
- package/dist/source/types.d.ts +6 -4
- package/dist/source/types.js +1 -1
- package/dist/stores/ObjectStore.d.ts +1 -1
- package/dist/stores/SyncActionStore.d.ts +1 -1
- package/dist/stores/SyncActionStore.js +2 -10
- package/dist/stores/syncAction.d.ts +26 -0
- package/dist/stores/syncAction.js +16 -0
- package/dist/surface.d.ts +3 -3
- package/dist/surface.js +6 -4
- package/dist/sync/BootstrapFetcher.d.ts +123 -6
- package/dist/sync/BootstrapFetcher.js +492 -66
- package/dist/sync/ConnectionManager.d.ts +6 -198
- package/dist/sync/ConnectionManager.js +6 -677
- package/dist/sync/OnDemandLoader.d.ts +2 -2
- package/dist/sync/OnDemandLoader.js +60 -21
- package/dist/sync/SubscriptionManager.d.ts +13 -2
- package/dist/sync/SubscriptionManager.js +23 -5
- package/dist/sync/SyncWebSocket.d.ts +27 -510
- package/dist/sync/SyncWebSocket.js +76 -954
- package/dist/sync/awaitClaimGrant.d.ts +4 -44
- package/dist/sync/awaitClaimGrant.js +4 -109
- package/dist/sync/commitFrames.d.ts +6 -40
- package/dist/sync/commitFrames.js +6 -97
- package/dist/sync/contextPorts.d.ts +18 -0
- package/dist/sync/contextPorts.js +31 -0
- package/dist/sync/createClaimStream.d.ts +5 -49
- package/dist/sync/createClaimStream.js +5 -469
- package/dist/sync/createPresenceStream.d.ts +26 -4
- package/dist/sync/createPresenceStream.js +28 -20
- package/dist/sync/createSnapshot.d.ts +2 -2
- package/dist/sync/createSnapshot.js +1 -1
- package/dist/sync/credentialLifecycle.d.ts +5 -173
- package/dist/sync/credentialLifecycle.js +5 -320
- package/dist/sync/deltaPipeline.d.ts +1 -1
- package/dist/sync/participants.d.ts +5 -4
- package/dist/sync/participants.js +29 -22
- package/dist/sync/schemaDrift.d.ts +55 -0
- package/dist/sync/schemaDrift.js +53 -0
- package/dist/sync/schemas.d.ts +21 -32
- package/dist/sync/schemas.js +26 -17
- package/dist/sync/syncPlan.d.ts +3 -3
- package/dist/sync/wsFrameHandlers.d.ts +6 -114
- package/dist/sync/wsFrameHandlers.js +6 -392
- package/dist/testing/fixtures/bootstrap.d.ts +1 -1
- package/dist/testing/fixtures/deltas.d.ts +1 -1
- package/dist/testing/fixtures/httpResponses.d.ts +70 -0
- package/dist/testing/fixtures/httpResponses.js +90 -0
- package/dist/testing/fixtures/models.js +1 -1
- package/dist/testing/helpers/wait.js +1 -1
- package/dist/testing/mocks/MockMutationExecutor.d.ts +2 -2
- package/dist/testing/mocks/MockMutationExecutor.js +8 -14
- package/dist/testing/mocks/MockSyncContext.d.ts +11 -11
- package/dist/testing/mocks/MockSyncContext.js +10 -9
- package/dist/testing/mocks/MockSyncStore.js +1 -1
- package/dist/testing/mocks/MockWebSocket.d.ts +2 -2
- package/dist/transaction/ablo.d.ts +88 -0
- package/dist/transaction/ablo.js +33 -0
- package/dist/{client/auth.d.ts → transaction/auth/apiKey.d.ts} +43 -8
- package/dist/{client/auth.js → transaction/auth/apiKey.js} +19 -0
- package/dist/transaction/auth/bootstrapScope.d.ts +15 -0
- package/dist/transaction/auth/bootstrapScope.js +1 -0
- package/dist/transaction/auth/capability.d.ts +177 -0
- package/dist/transaction/auth/capability.js +199 -0
- package/dist/{auth → transaction/auth}/credentialSource.d.ts +8 -1
- package/dist/{client → transaction/auth}/identity.d.ts +8 -7
- package/dist/{client → transaction/auth}/identity.js +1 -1
- package/dist/transaction/auth/index.d.ts +162 -0
- package/dist/transaction/auth/index.js +304 -0
- package/dist/{auth → transaction/auth}/schemas.d.ts +1 -1
- package/dist/{auth → transaction/auth}/schemas.js +13 -13
- package/dist/{client → transaction/auth}/sessionMint.d.ts +8 -8
- package/dist/{client → transaction/auth}/sessionMint.js +4 -7
- package/dist/transaction/coordination/awaitClaimGrant.d.ts +49 -0
- package/dist/transaction/coordination/awaitClaimGrant.js +112 -0
- package/dist/transaction/coordination/claimMeta.d.ts +49 -0
- package/dist/transaction/coordination/claimMeta.js +52 -0
- package/dist/transaction/coordination/createClaimStream.d.ts +64 -0
- package/dist/transaction/coordination/createClaimStream.js +475 -0
- package/dist/transaction/coordination/events.d.ts +74 -0
- package/dist/transaction/coordination/events.js +7 -0
- package/dist/transaction/coordination/index.d.ts +19 -0
- package/dist/transaction/coordination/index.js +44 -0
- package/dist/transaction/coordination/locator.d.ts +83 -0
- package/dist/transaction/coordination/locator.js +82 -0
- package/dist/transaction/coordination/schema.d.ts +1473 -0
- package/dist/{coordination → transaction/coordination}/schema.js +490 -55
- package/dist/transaction/coordination/targetConflict.d.ts +2 -0
- package/dist/transaction/coordination/targetConflict.js +103 -0
- package/dist/{coordination → transaction/coordination}/trace.d.ts +7 -18
- package/dist/{coordination → transaction/coordination}/trace.js +18 -25
- package/dist/transaction/durableWrites.d.ts +62 -0
- package/dist/{client → transaction}/durableWrites.js +28 -3
- package/dist/transaction/environment.d.ts +105 -0
- package/dist/transaction/environment.js +108 -0
- package/dist/{errorCodes.d.ts → transaction/errorCodes.d.ts} +11 -11
- package/dist/{errorCodes.js → transaction/errorCodes.js} +35 -12
- package/dist/{errors.d.ts → transaction/errors.d.ts} +37 -13
- package/dist/{errors.js → transaction/errors.js} +85 -16
- package/dist/transaction/index.d.ts +20 -0
- package/dist/transaction/index.js +20 -0
- package/dist/transaction/keys/index.d.ts +87 -0
- package/dist/transaction/keys/index.js +207 -0
- package/dist/transaction/log/syncDeltaRow.d.ts +158 -0
- package/dist/transaction/log/syncDeltaRow.js +95 -0
- package/dist/{sync/syncPosition.d.ts → transaction/logPosition.d.ts} +22 -8
- package/dist/{sync/syncPosition.js → transaction/logPosition.js} +15 -6
- package/dist/transaction/logger.d.ts +16 -0
- package/dist/transaction/logger.js +7 -0
- package/dist/transaction/observability.d.ts +53 -0
- package/dist/transaction/observability.js +19 -0
- package/dist/transaction/plugin.d.ts +192 -0
- package/dist/transaction/plugin.js +87 -0
- package/dist/{policy → transaction/policy}/types.d.ts +3 -3
- package/dist/{policy → transaction/policy}/types.js +2 -0
- package/dist/transaction/resources/httpResources.d.ts +266 -0
- package/dist/transaction/resources/httpResources.js +7 -0
- package/dist/transaction/resources/modelOperations.d.ts +319 -0
- package/dist/transaction/resources/modelOperations.js +12 -0
- package/dist/transaction/resources/mutationOptions.d.ts +66 -0
- package/dist/transaction/resources/mutationOptions.js +9 -0
- package/dist/transaction/resources/where.d.ts +85 -0
- package/dist/transaction/resources/where.js +70 -0
- package/dist/{client → transaction/resources}/writeOptionsSchema.d.ts +2 -6
- package/dist/{client → transaction/resources}/writeOptionsSchema.js +9 -5
- package/dist/{schema → transaction/schema}/field.d.ts +5 -5
- package/dist/{schema → transaction/schema}/field.js +5 -5
- package/dist/transaction/schema/loadStrategy.d.ts +45 -0
- package/dist/transaction/schema/loadStrategy.js +46 -0
- package/dist/{schema → transaction/schema}/model.d.ts +50 -35
- package/dist/{schema → transaction/schema}/model.js +30 -20
- package/dist/transaction/schema/openapi.d.ts +57 -0
- package/dist/transaction/schema/openapi.js +340 -0
- package/dist/{schema → transaction/schema}/relation.d.ts +14 -14
- package/dist/{schema → transaction/schema}/relation.js +7 -7
- package/dist/{schema → transaction/schema}/residency.d.ts +0 -9
- package/dist/{schema → transaction/schema}/residency.js +0 -5
- package/dist/{schema → transaction/schema}/roles.d.ts +5 -5
- package/dist/{schema → transaction/schema}/roles.js +5 -5
- package/dist/{schema → transaction/schema}/schema.d.ts +12 -10
- package/dist/{schema → transaction/schema}/schema.js +4 -3
- package/dist/{schema → transaction/schema}/tenancy.d.ts +1 -1
- package/dist/{schema → transaction/schema}/tenancy.js +7 -4
- package/dist/transaction/transactionLayer.d.ts +82 -0
- package/dist/transaction/transactionLayer.js +24 -0
- package/dist/{transactions → transaction/transactions/settlement}/commitEnvelope.d.ts +4 -5
- package/dist/{transactions → transaction/transactions/settlement}/commitEnvelope.js +9 -13
- package/dist/{transactions → transaction/transactions/settlement}/httpCommitEnvelope.d.ts +9 -2
- package/dist/{transactions → transaction/transactions/settlement}/httpCommitEnvelope.js +5 -9
- package/dist/{transactions/durableWriteStore.d.ts → transaction/transactions/settlement/pendingWrite.d.ts} +10 -36
- package/dist/transaction/transactions/settlement/pendingWrite.js +20 -0
- package/dist/transaction/transport/commitFrames.d.ts +90 -0
- package/dist/transaction/transport/commitFrames.js +134 -0
- package/dist/transaction/transport/connectionManager.d.ts +215 -0
- package/dist/transaction/transport/connectionManager.js +673 -0
- package/dist/transaction/transport/credentialLifecycle.d.ts +177 -0
- package/dist/transaction/transport/credentialLifecycle.js +324 -0
- package/dist/{sync → transaction/transport}/heartbeat.d.ts +3 -1
- package/dist/{sync → transaction/transport}/heartbeat.js +6 -4
- package/dist/{client → transaction/transport}/httpClient.d.ts +59 -16
- package/dist/{client → transaction/transport}/httpClient.js +5 -5
- package/dist/transaction/transport/httpOptions.d.ts +33 -0
- package/dist/transaction/transport/httpOptions.js +12 -0
- package/dist/{client → transaction/transport}/httpTransport.js +171 -85
- package/dist/{sync/NetworkProbe.d.ts → transaction/transport/networkProbe.d.ts} +7 -4
- package/dist/{sync/NetworkProbe.js → transaction/transport/networkProbe.js} +14 -13
- package/dist/transaction/transport/wsFrameHandlers.d.ts +128 -0
- package/dist/transaction/transport/wsFrameHandlers.js +429 -0
- package/dist/transaction/transport/wsTransport.d.ts +576 -0
- package/dist/transaction/transport/wsTransport.js +1017 -0
- package/dist/transaction/types/assertExact.d.ts +17 -0
- package/dist/transaction/types/assertExact.js +1 -0
- package/dist/{types → transaction/types}/global.d.ts +17 -2
- package/dist/{types → transaction/types}/global.js +2 -1
- package/dist/{types → transaction/types}/index.d.ts +14 -46
- package/dist/{types → transaction/types}/index.js +7 -16
- package/dist/{types → transaction/types}/streams.d.ts +63 -45
- package/dist/{utils → transaction/utils}/json.d.ts +18 -0
- package/dist/transaction/utils/json.js +276 -0
- package/dist/transaction/wire/accountResponses.d.ts +351 -0
- package/dist/transaction/wire/accountResponses.js +255 -0
- package/dist/transaction/wire/auth.d.ts +49 -0
- package/dist/transaction/wire/auth.js +57 -0
- package/dist/transaction/wire/claimEvent.d.ts +76 -0
- package/dist/transaction/wire/claimEvent.js +73 -0
- package/dist/transaction/wire/claims.d.ts +463 -0
- package/dist/transaction/wire/claims.js +229 -0
- package/dist/{wire → transaction/wire}/commit.d.ts +125 -193
- package/dist/{wire → transaction/wire}/commit.js +68 -47
- package/dist/{wire → transaction/wire}/delta.d.ts +66 -17
- package/dist/{wire → transaction/wire}/delta.js +37 -13
- package/dist/transaction/wire/errorEnvelope.d.ts +72 -0
- package/dist/{wire → transaction/wire}/errorEnvelope.js +36 -5
- package/dist/transaction/wire/feedCursor.d.ts +60 -0
- package/dist/transaction/wire/feedCursor.js +82 -0
- package/dist/transaction/wire/feedEvent.d.ts +177 -0
- package/dist/transaction/wire/feedEvent.js +39 -0
- package/dist/transaction/wire/frames.d.ts +194 -0
- package/dist/transaction/wire/frames.js +50 -0
- package/dist/transaction/wire/inboundFrames.d.ts +552 -0
- package/dist/transaction/wire/inboundFrames.js +116 -0
- package/dist/transaction/wire/index.d.ts +50 -0
- package/dist/transaction/wire/index.js +74 -0
- package/dist/{wire → transaction/wire}/listEnvelope.d.ts +13 -14
- package/dist/transaction/wire/listEnvelope.js +42 -0
- package/dist/transaction/wire/modelResponses.d.ts +85 -0
- package/dist/transaction/wire/modelResponses.js +43 -0
- package/dist/transactions/{TransactionQueue.d.ts → mutations/MutationQueue.d.ts} +79 -38
- package/dist/transactions/{TransactionQueue.js → mutations/MutationQueue.js} +110 -59
- package/dist/transactions/{TransactionStore.d.ts → mutations/MutationStore.d.ts} +8 -8
- package/dist/transactions/{TransactionStore.js → mutations/MutationStore.js} +2 -2
- package/dist/transactions/{coalesceRules.d.ts → mutations/coalesceRules.d.ts} +10 -10
- package/dist/transactions/{coalesceRules.js → mutations/coalesceRules.js} +1 -1
- package/dist/transactions/mutations/commitLatency.d.ts +52 -0
- package/dist/transactions/mutations/commitLatency.js +130 -0
- package/dist/transactions/{commitOutboxStore.d.ts → mutations/commitOutboxStore.d.ts} +1 -5
- package/dist/transactions/{commitOutboxStore.js → mutations/commitOutboxStore.js} +1 -1
- package/dist/transactions/{commitPayload.d.ts → mutations/commitPayload.d.ts} +16 -15
- package/dist/transactions/{commitPayload.js → mutations/commitPayload.js} +12 -12
- package/dist/transactions/{deltaConfirmation.d.ts → mutations/deltaConfirmation.d.ts} +11 -11
- package/dist/transactions/{deltaConfirmation.js → mutations/deltaConfirmation.js} +7 -7
- package/dist/transactions/mutations/durableWriteStore.d.ts +14 -0
- package/dist/transactions/mutations/durableWriteStore.js +12 -0
- package/dist/transactions/{optimisticApply.d.ts → mutations/optimisticApply.d.ts} +7 -7
- package/dist/transactions/{replayValidation.d.ts → mutations/replayValidation.d.ts} +3 -3
- package/dist/transactions/{replayValidation.js → mutations/replayValidation.js} +4 -3
- package/dist/utils/mobxSetup.d.ts +1 -1
- package/dist/utils/mobxSetup.js +5 -2
- package/dist/webhooks/events.d.ts +2 -2
- package/dist/wire/index.d.ts +1 -34
- package/dist/wire/index.js +8 -49
- package/docs/agent-messaging.md +3 -3
- package/docs/agents.md +19 -12
- package/docs/api-keys.md +8 -4
- package/docs/api.md +22 -18
- package/docs/audit.md +2 -0
- package/docs/cli.md +31 -3
- package/docs/client-behavior.md +8 -6
- package/docs/concurrency-convention.md +30 -24
- package/docs/coordination.md +48 -38
- package/docs/data-sources.md +3 -1
- package/docs/debugging.md +5 -3
- package/docs/deployment.md +267 -0
- package/docs/examples/agent-human.md +49 -42
- package/docs/examples/ai-sdk-tool.md +69 -44
- package/docs/examples/existing-python-backend.md +8 -6
- package/docs/examples/nextjs.md +129 -47
- package/docs/examples/scoped-agent.md +45 -44
- package/docs/examples/server-agent.md +46 -26
- package/docs/groups.md +32 -29
- package/docs/guarantees.md +4 -2
- package/docs/how-it-works.md +9 -7
- package/docs/idempotency.md +126 -0
- package/docs/identity.md +58 -54
- package/docs/index.md +172 -86
- package/docs/integration-guide.md +17 -16
- package/docs/interaction-model.md +6 -4
- package/docs/mcp.md +41 -16
- package/docs/migration.md +63 -5
- package/docs/operating-on-your-database.md +3 -1
- package/docs/projects.md +2 -0
- package/docs/quickstart.md +22 -5
- package/docs/react.md +12 -10
- package/docs/schema-contract.md +5 -3
- package/docs/session-settings.md +108 -0
- package/docs/sessions.md +3 -1
- package/docs/webhooks.md +3 -1
- package/llms.txt +47 -17
- package/package.json +10 -8
- package/dist/agent/Agent.d.ts +0 -366
- package/dist/agent/Agent.js +0 -514
- package/dist/agent/index.d.ts +0 -115
- package/dist/agent/index.js +0 -128
- package/dist/agent/session.d.ts +0 -93
- package/dist/agent/session.js +0 -149
- package/dist/agent/types.d.ts +0 -68
- package/dist/agent/types.js +0 -9
- package/dist/client/durableWrites.d.ts +0 -21
- package/dist/coordination/schema.d.ts +0 -722
- package/dist/schema/openapi.d.ts +0 -29
- package/dist/schema/openapi.js +0 -124
- package/dist/transactions/durableWriteStore.js +0 -30
- package/dist/utils/json.js +0 -88
- package/dist/wire/errorEnvelope.d.ts +0 -55
- package/dist/wire/frames.d.ts +0 -197
- package/dist/wire/frames.js +0 -49
- package/dist/wire/listEnvelope.js +0 -18
- /package/dist/{client → transaction/auth}/credentialEndpoint.d.ts +0 -0
- /package/dist/{client → transaction/auth}/credentialEndpoint.js +0 -0
- /package/dist/{auth → transaction/auth}/credentialPolicy.d.ts +0 -0
- /package/dist/{auth → transaction/auth}/credentialPolicy.js +0 -0
- /package/dist/{auth → transaction/auth}/credentialSource.js +0 -0
- /package/dist/{client → transaction/auth}/hostedEndpoints.d.ts +0 -0
- /package/dist/{client → transaction/auth}/hostedEndpoints.js +0 -0
- /package/dist/{client → transaction/coordination}/claimHeartbeatLoop.d.ts +0 -0
- /package/dist/{client → transaction/coordination}/claimHeartbeatLoop.js +0 -0
- /package/dist/{client → transaction}/persistence.d.ts +0 -0
- /package/dist/{client → transaction}/persistence.js +0 -0
- /package/dist/{client → transaction/resources}/functionalUpdate.d.ts +0 -0
- /package/dist/{client → transaction/resources}/functionalUpdate.js +0 -0
- /package/dist/{transactions → transaction/transactions/settlement}/idempotencyKey.d.ts +0 -0
- /package/dist/{transactions → transaction/transactions/settlement}/idempotencyKey.js +0 -0
- /package/dist/{client → transaction/transport}/httpTransport.d.ts +0 -0
- /package/dist/{types → transaction/types}/modelData.d.ts +0 -0
- /package/dist/{types → transaction/types}/modelData.js +0 -0
- /package/dist/{types → transaction/types}/participant.d.ts +0 -0
- /package/dist/{types → transaction/types}/participant.js +0 -0
- /package/dist/{types → transaction/types}/streams.js +0 -0
- /package/dist/{utils → transaction/utils}/asyncIterator.d.ts +0 -0
- /package/dist/{utils → transaction/utils}/asyncIterator.js +0 -0
- /package/dist/{utils → transaction/utils}/duration.d.ts +0 -0
- /package/dist/{utils → transaction/utils}/duration.js +0 -0
- /package/dist/{wire → transaction/wire}/bootstrapReason.d.ts +0 -0
- /package/dist/{wire → transaction/wire}/bootstrapReason.js +0 -0
- /package/dist/{wire → transaction/wire}/protocol.d.ts +0 -0
- /package/dist/{wire → transaction/wire}/protocol.js +0 -0
- /package/dist/{wire → transaction/wire}/protocolVersion.d.ts +0 -0
- /package/dist/{wire → transaction/wire}/protocolVersion.js +0 -0
- /package/dist/transactions/{UnconfirmedWrites.d.ts → mutations/UnconfirmedWrites.d.ts} +0 -0
- /package/dist/transactions/{UnconfirmedWrites.js → mutations/UnconfirmedWrites.js} +0 -0
- /package/dist/transactions/{optimisticApply.js → mutations/optimisticApply.js} +0 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A compile-time proof that two types are the same type, in both directions.
|
|
3
|
+
*
|
|
4
|
+
* This is how a derived shape is pinned to the shape it derives from. A plain
|
|
5
|
+
* `extends` check only proves one side is assignable to the other, which a
|
|
6
|
+
* schema that has grown a field still satisfies; both directions catch the
|
|
7
|
+
* addition. Instantiating it at a value binding turns the mismatch into a
|
|
8
|
+
* compile error at the definition site rather than at some distant caller.
|
|
9
|
+
*
|
|
10
|
+
* ```ts
|
|
11
|
+
* const _contract: AssertExact<z.infer<typeof participantRefSchema>, ParticipantRef> = true;
|
|
12
|
+
* ```
|
|
13
|
+
*
|
|
14
|
+
* The tuple wrappers stop a union operand from distributing, so a union is
|
|
15
|
+
* compared whole rather than member by member.
|
|
16
|
+
*/
|
|
17
|
+
export type AssertExact<A, B> = [A] extends [B] ? ([B] extends [A] ? true : never) : never;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The single place where you tell the SDK about your application's types.
|
|
3
3
|
*
|
|
4
|
-
* You register your Schema and
|
|
4
|
+
* You register your Schema, UserMeta and ClaimMeta once by augmenting the
|
|
5
5
|
* {@link Register} interface. From then on the typed SDK surface reads its
|
|
6
6
|
* types from that registration, so you never pass a generic or a `schema`
|
|
7
7
|
* argument at a call site.
|
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
* interface Register {
|
|
28
28
|
* Schema: typeof schema;
|
|
29
29
|
* UserMeta: { id: string; email: string };
|
|
30
|
+
* ClaimMeta: { blocks: string[] };
|
|
30
31
|
* }
|
|
31
32
|
* }
|
|
32
33
|
* export {};
|
|
@@ -51,11 +52,13 @@ export interface DefaultSyncShape {
|
|
|
51
52
|
readonly UserMeta: {
|
|
52
53
|
readonly id: string;
|
|
53
54
|
};
|
|
55
|
+
readonly ClaimMeta: Record<string, unknown>;
|
|
54
56
|
}
|
|
55
57
|
/**
|
|
56
58
|
* The registration interface you augment to declare your application's types.
|
|
57
59
|
* Add keys inside a `declare module '@abloatai/ablo'` block — for example
|
|
58
|
-
* `interface Register { Schema: ...; UserMeta: ...; }`. It is
|
|
60
|
+
* `interface Register { Schema: ...; UserMeta: ...; ClaimMeta: ...; }`. It is
|
|
61
|
+
* empty by default,
|
|
59
62
|
* so any key you omit falls back to {@link DefaultSyncShape}. It is exported
|
|
60
63
|
* from the package root so your augmentation merges into this declaration.
|
|
61
64
|
*
|
|
@@ -82,6 +85,18 @@ export type ResolveSchema = Register extends {
|
|
|
82
85
|
export type ResolveUserMeta = Register extends {
|
|
83
86
|
UserMeta: infer U;
|
|
84
87
|
} ? U : DefaultSyncShape['UserMeta'];
|
|
88
|
+
/**
|
|
89
|
+
* The application metadata your claims carry, or the default when none is
|
|
90
|
+
* registered. It rides along on a claim's target — the SDK transports it
|
|
91
|
+
* verbatim, never interprets it, and never validates it, so the shape is
|
|
92
|
+
* yours to declare and yours alone to keep true.
|
|
93
|
+
*
|
|
94
|
+
* Declaring it here is what makes `claim.state({ id })?.target.meta` readable
|
|
95
|
+
* without a `typeof` guard, on every claim surface at once.
|
|
96
|
+
*/
|
|
97
|
+
export type ResolveClaimMeta = Register extends {
|
|
98
|
+
ClaimMeta: infer M;
|
|
99
|
+
} ? M : DefaultSyncShape['ClaimMeta'];
|
|
85
100
|
/**
|
|
86
101
|
* The union of your schema's model names. `useQuery(modelKey)` narrows its
|
|
87
102
|
* first argument to this union, so a misspelled or unknown model name fails at
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The single place where you tell the SDK about your application's types.
|
|
3
3
|
*
|
|
4
|
-
* You register your Schema and
|
|
4
|
+
* You register your Schema, UserMeta and ClaimMeta once by augmenting the
|
|
5
5
|
* {@link Register} interface. From then on the typed SDK surface reads its
|
|
6
6
|
* types from that registration, so you never pass a generic or a `schema`
|
|
7
7
|
* argument at a call site.
|
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
* interface Register {
|
|
28
28
|
* Schema: typeof schema;
|
|
29
29
|
* UserMeta: { id: string; email: string };
|
|
30
|
+
* ClaimMeta: { blocks: string[] };
|
|
30
31
|
* }
|
|
31
32
|
* }
|
|
32
33
|
* export {};
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* is loaded, and how changes are represented on the wire as they synchronize.
|
|
6
6
|
*/
|
|
7
7
|
import type { FieldMeta } from '../schema/field.js';
|
|
8
|
+
import { LoadStrategy } from '../schema/loadStrategy.js';
|
|
8
9
|
/**
|
|
9
10
|
* A lifecycle filter for queries: whether to return live entities, archived
|
|
10
11
|
* ones, or both.
|
|
@@ -35,21 +36,7 @@ export declare enum PropertyType {
|
|
|
35
36
|
/** An array of foreign-key ids — a many-to-many relationship. */
|
|
36
37
|
referenceArray = "referenceArray"
|
|
37
38
|
}
|
|
38
|
-
|
|
39
|
-
* When and how a model's data is loaded from the server.
|
|
40
|
-
*/
|
|
41
|
-
export declare enum LoadStrategy {
|
|
42
|
-
/** Loaded during startup, before it is first used — for models needed right away. */
|
|
43
|
-
instant = "instant",
|
|
44
|
-
/** Loaded all at once the first time it is needed — for secondary models. */
|
|
45
|
-
lazy = "lazy",
|
|
46
|
-
/** Loaded on demand in subsets — for large collections. */
|
|
47
|
-
partial = "partial",
|
|
48
|
-
/** Loaded only when the application asks for it — for optional data. */
|
|
49
|
-
explicitlyRequested = "explicitlyRequested",
|
|
50
|
-
/** Never synced with the server; kept only on the client — for local-only state. */
|
|
51
|
-
local = "local"
|
|
52
|
-
}
|
|
39
|
+
export { LoadStrategy };
|
|
53
40
|
/**
|
|
54
41
|
* The resolved configuration for a single model property.
|
|
55
42
|
*/
|
|
@@ -101,8 +88,6 @@ export interface ModelMetadata {
|
|
|
101
88
|
loadStrategy: LoadStrategy;
|
|
102
89
|
syncGroup?: string;
|
|
103
90
|
tableName?: string;
|
|
104
|
-
partialLoadMode?: 'full' | 'regular' | 'lowPriority';
|
|
105
|
-
usedForPartialIndexes?: boolean;
|
|
106
91
|
schemaVersion?: number;
|
|
107
92
|
/**
|
|
108
93
|
* The schema-declared fields for this model, keyed by field name. When a
|
|
@@ -156,13 +141,6 @@ export interface ReferenceOptions {
|
|
|
156
141
|
indexed?: boolean;
|
|
157
142
|
nullable?: boolean;
|
|
158
143
|
}
|
|
159
|
-
/**
|
|
160
|
-
* A GraphQL mutation: its query text and the variables to run it with.
|
|
161
|
-
*/
|
|
162
|
-
export interface GraphQLMutation {
|
|
163
|
-
mutationText: string;
|
|
164
|
-
variables: Record<string, unknown>;
|
|
165
|
-
}
|
|
166
144
|
/**
|
|
167
145
|
* A request to load model rows by an indexed key. When the load completes,
|
|
168
146
|
* `resolve` is called with the matching rows.
|
|
@@ -174,27 +152,17 @@ export interface LoadRequest {
|
|
|
174
152
|
resolve?: (value: unknown[]) => void;
|
|
175
153
|
}
|
|
176
154
|
/**
|
|
177
|
-
*
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
*
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
data: unknown;
|
|
189
|
-
__class: 'SyncAction';
|
|
190
|
-
}
|
|
191
|
-
/**
|
|
192
|
-
* A batch of sync actions delivered together.
|
|
193
|
-
*/
|
|
194
|
-
export type DeltaPacket = SyncAction[];
|
|
195
|
-
/**
|
|
196
|
-
* The kind of initial data load performed when a client starts: a full load, a
|
|
197
|
-
* partial subset, or local-only.
|
|
155
|
+
* How a session establishes its baseline state at startup.
|
|
156
|
+
*
|
|
157
|
+
* 'full' — Fetch a complete snapshot from the server, clear the local store,
|
|
158
|
+
* load the snapshot, and adopt its `lastSyncId`.
|
|
159
|
+
*
|
|
160
|
+
* 'partial' — Fetch only the deltas since the stored `lastSyncId` and apply
|
|
161
|
+
* them on top of the existing local data.
|
|
162
|
+
*
|
|
163
|
+
* 'local' — Skip the server entirely: hydrate the instance cache from the local
|
|
164
|
+
* store, connect the WebSocket with the stored `lastSyncId`, and receive
|
|
165
|
+
* deltas from there onward. Used when offline with valid local data.
|
|
198
166
|
*/
|
|
199
167
|
export type BootstrapType = 'full' | 'partial' | 'local';
|
|
200
168
|
/**
|
|
@@ -234,4 +202,4 @@ export interface PartialIndexInfo {
|
|
|
234
202
|
depth: number;
|
|
235
203
|
path: string[];
|
|
236
204
|
}
|
|
237
|
-
export type { TargetRange, OnStaleMode, WireClaim, ClaimRejection, PresenceKind, ParticipantKind, ParticipantRef, JsonValue, ConfirmationState, AgentDelta, Snapshot, ContextChange, ClaimTarget, PresenceTarget, PresenceStream, Activity, Peer, PresenceUpdatePayload, ClaimLeaseOptions, Duration, ClaimOptions, ClaimStream, ClaimLost, ClaimStatus, ClaimWaitOptions, Claim, HeldClaim, } from './streams.js';
|
|
205
|
+
export type { TargetRange, OnStaleMode, WireClaim, ClaimRejection, PresenceKind, ParticipantKind, ParticipantRef, JsonValue, ConfirmationState, Delta, AgentDelta, Snapshot, ContextChange, ClaimTarget, PresenceTarget, PresenceStream, Activity, Peer, PresenceUpdatePayload, ClaimLeaseOptions, Duration, ClaimOptions, ClaimStream, ClaimLost, ClaimStatus, ClaimWaitOptions, Claim, HeldClaim, } from './streams.js';
|
|
@@ -4,6 +4,10 @@
|
|
|
4
4
|
* These types describe how a model's properties are declared, when their data
|
|
5
5
|
* is loaded, and how changes are represented on the wire as they synchronize.
|
|
6
6
|
*/
|
|
7
|
+
// Bound locally as well as re-exported below: a bare `export … from` forwards
|
|
8
|
+
// the name to consumers without binding it in this module, so the annotations
|
|
9
|
+
// further down would not resolve.
|
|
10
|
+
import { LoadStrategy } from '../schema/loadStrategy.js';
|
|
7
11
|
/**
|
|
8
12
|
* A lifecycle filter for queries: whether to return live entities, archived
|
|
9
13
|
* ones, or both.
|
|
@@ -36,22 +40,9 @@ export var PropertyType;
|
|
|
36
40
|
/** An array of foreign-key ids — a many-to-many relationship. */
|
|
37
41
|
PropertyType["referenceArray"] = "referenceArray";
|
|
38
42
|
})(PropertyType || (PropertyType = {}));
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
export var LoadStrategy;
|
|
43
|
-
(function (LoadStrategy) {
|
|
44
|
-
/** Loaded during startup, before it is first used — for models needed right away. */
|
|
45
|
-
LoadStrategy["instant"] = "instant";
|
|
46
|
-
/** Loaded all at once the first time it is needed — for secondary models. */
|
|
47
|
-
LoadStrategy["lazy"] = "lazy";
|
|
48
|
-
/** Loaded on demand in subsets — for large collections. */
|
|
49
|
-
LoadStrategy["partial"] = "partial";
|
|
50
|
-
/** Loaded only when the application asks for it — for optional data. */
|
|
51
|
-
LoadStrategy["explicitlyRequested"] = "explicitlyRequested";
|
|
52
|
-
/** Never synced with the server; kept only on the client — for local-only state. */
|
|
53
|
-
LoadStrategy["local"] = "local";
|
|
54
|
-
})(LoadStrategy || (LoadStrategy = {}));
|
|
43
|
+
// When and how a model's data is loaded from the server. Defined in
|
|
44
|
+
// `../schema/loadStrategy.ts`, which the authoring surface reads from too.
|
|
45
|
+
export { LoadStrategy };
|
|
55
46
|
/**
|
|
56
47
|
* The operation a batch mutation performs on a model row.
|
|
57
48
|
*/
|
|
@@ -9,8 +9,9 @@
|
|
|
9
9
|
* layer underneath.
|
|
10
10
|
*/
|
|
11
11
|
import type { InferModel, Schema } from '../schema/schema.js';
|
|
12
|
-
import type {
|
|
13
|
-
|
|
12
|
+
import type { ResolveClaimMeta } from './global.js';
|
|
13
|
+
import type { TargetRange, OnStaleMode, WireClaim, ClaimRejection, ClaimLost, PresenceKind, ParticipantKind, PublicClaimStatus, PresenceUpdatePayload } from '../coordination/schema.js';
|
|
14
|
+
export type { TargetRange, OnStaleMode, WireClaim, ClaimRejection, ClaimLost, PresenceKind, ParticipantKind, PresenceUpdatePayload, };
|
|
14
15
|
/**
|
|
15
16
|
* Any JSON-serializable value. Used where the SDK accepts free-form metadata
|
|
16
17
|
* that is stored or transported as JSON — more precise than `unknown` while
|
|
@@ -19,37 +20,15 @@ export type { TargetRange, OnStaleMode, WireClaim, ClaimRejection, ClaimLost, Pr
|
|
|
19
20
|
export type JsonValue = string | number | boolean | null | readonly JsonValue[] | {
|
|
20
21
|
readonly [key: string]: JsonValue;
|
|
21
22
|
};
|
|
22
|
-
import type { ParticipantRef } from './participant.js';
|
|
23
23
|
export type { ParticipantRef } from './participant.js';
|
|
24
|
+
import type { Delta } from '../wire/delta.js';
|
|
25
|
+
export type { ConfirmationState, Delta } from '../wire/delta.js';
|
|
24
26
|
/**
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
+
* @deprecated Renamed to {@link Delta} — the authoritative change feed serves
|
|
28
|
+
* every participant, not only agents, and the seam names it plainly.
|
|
29
|
+
* Removed in 0.36.0.
|
|
27
30
|
*/
|
|
28
|
-
export type
|
|
29
|
-
/**
|
|
30
|
-
* The wire shape of a single change on the sync stream. Alongside the change
|
|
31
|
-
* itself, it carries attribution fields — `actor`, `onBehalfOf`,
|
|
32
|
-
* `capabilityId`, and `confirmationState` — recorded on each row for auditing.
|
|
33
|
-
*/
|
|
34
|
-
export interface AgentDelta {
|
|
35
|
-
id: number;
|
|
36
|
-
actionType: 'I' | 'U' | 'D' | 'A';
|
|
37
|
-
modelName: string;
|
|
38
|
-
modelId: string;
|
|
39
|
-
data: Record<string, unknown>;
|
|
40
|
-
previousData?: Record<string, unknown>;
|
|
41
|
-
/** Who performed the action. */
|
|
42
|
-
actor?: ParticipantRef | null;
|
|
43
|
-
/** The participant on whose authority the actor acted. */
|
|
44
|
-
onBehalfOf?: ParticipantRef | null;
|
|
45
|
-
/** The capability that authorized this commit. */
|
|
46
|
-
capabilityId?: string | null;
|
|
47
|
-
/** Whether a person explicitly approved the change. */
|
|
48
|
-
confirmationState?: ConfirmationState | null;
|
|
49
|
-
/** The id of the agent task that caused this commit, if any. */
|
|
50
|
-
causedByTaskId?: string | null;
|
|
51
|
-
createdAt: string;
|
|
52
|
-
}
|
|
31
|
+
export type AgentDelta = Delta;
|
|
53
32
|
/**
|
|
54
33
|
* A flat, point-in-time view of application data returned by
|
|
55
34
|
* `participant.snapshot(...)`. Capture it before long-running AI work, then
|
|
@@ -95,13 +74,40 @@ export interface ContextChange {
|
|
|
95
74
|
* general-purpose hints for finer-grained coordination in tools like code
|
|
96
75
|
* editors, document editors, and design tools.
|
|
97
76
|
*/
|
|
98
|
-
export interface ClaimTarget {
|
|
77
|
+
export interface ClaimTarget<M = ResolveClaimMeta> {
|
|
99
78
|
readonly type: string;
|
|
100
79
|
readonly id: string;
|
|
101
80
|
readonly path?: string;
|
|
102
81
|
readonly range?: TargetRange;
|
|
103
82
|
readonly field?: string;
|
|
104
|
-
|
|
83
|
+
/**
|
|
84
|
+
* Several named parts of the row at once — three sections of a document, two
|
|
85
|
+
* cells of a table. Claims conflict where their sets intersect, so two
|
|
86
|
+
* holders working on disjoint parts of one row do not wait for each other.
|
|
87
|
+
*
|
|
88
|
+
* Use this instead of packing names into `field`: a delimited string compares
|
|
89
|
+
* as one opaque value, so `'b_1,b_2'` and `'b_2,b_3'` read as unrelated
|
|
90
|
+
* targets and both holders are granted `b_2`.
|
|
91
|
+
*/
|
|
92
|
+
readonly fields?: readonly string[];
|
|
93
|
+
/**
|
|
94
|
+
* Application metadata, carried verbatim and never interpreted.
|
|
95
|
+
*
|
|
96
|
+
* The protocol does not know what is in here — the caller does, so the
|
|
97
|
+
* caller says so once, where the schema is already registered:
|
|
98
|
+
*
|
|
99
|
+
* ```ts
|
|
100
|
+
* declare module '@abloatai/ablo' {
|
|
101
|
+
* interface Register { ClaimMeta: { blocks: string[] } }
|
|
102
|
+
* }
|
|
103
|
+
* ```
|
|
104
|
+
*
|
|
105
|
+
* From then on every claim surface reads this field as that shape and no
|
|
106
|
+
* read of it needs a `typeof` guard. The `M` parameter remains for a program
|
|
107
|
+
* carrying more than one meta shape — `claim.state<OtherMeta>({ id })`
|
|
108
|
+
* overrides the registration for that one call.
|
|
109
|
+
*/
|
|
110
|
+
readonly meta?: M;
|
|
105
111
|
}
|
|
106
112
|
/**
|
|
107
113
|
* A pointer to the entity a participant is acting on. Either a
|
|
@@ -146,7 +152,7 @@ export interface PresenceStream {
|
|
|
146
152
|
*
|
|
147
153
|
* You can drop `presence.others` into an LLM's system prompt so the model
|
|
148
154
|
* reasons about what other agents are doing right now — for example,
|
|
149
|
-
* "copy-bot is generating a new title for
|
|
155
|
+
* "copy-bot is generating a new title for section 5; don't duplicate that work."
|
|
150
156
|
*/
|
|
151
157
|
readonly others: readonly Peer[];
|
|
152
158
|
/** Subset of `others` filtered to a specific sync group. */
|
|
@@ -203,7 +209,7 @@ export interface PresenceStream {
|
|
|
203
209
|
* participants see the change in real time.
|
|
204
210
|
*/
|
|
205
211
|
export interface Activity {
|
|
206
|
-
/** Entity type the participant is focused on (e.g. "
|
|
212
|
+
/** Entity type the participant is focused on (e.g. "Section", "Document"). */
|
|
207
213
|
readonly entityType: string;
|
|
208
214
|
/** Specific entity id. */
|
|
209
215
|
readonly entityId: string;
|
|
@@ -213,6 +219,14 @@ export interface Activity {
|
|
|
213
219
|
readonly range?: TargetRange;
|
|
214
220
|
/** Optional field/property path for field-level coordination. */
|
|
215
221
|
readonly field?: string;
|
|
222
|
+
/**
|
|
223
|
+
* Several named parts of the row at once — the same member
|
|
224
|
+
* {@link ClaimTarget} carries, and the one the presence frame has always
|
|
225
|
+
* declared. It was missing here, so a set-scoped participant announced
|
|
226
|
+
* itself as holding the whole row and the overlap filter compared it as if
|
|
227
|
+
* it named no parts at all.
|
|
228
|
+
*/
|
|
229
|
+
readonly fields?: readonly string[];
|
|
216
230
|
/** App-defined structured metadata. Display-only unless app policy uses it. */
|
|
217
231
|
readonly meta?: Record<string, unknown>;
|
|
218
232
|
/**
|
|
@@ -222,7 +236,7 @@ export interface Activity {
|
|
|
222
236
|
* phases.
|
|
223
237
|
*/
|
|
224
238
|
readonly action: string;
|
|
225
|
-
/** Human-readable detail — "
|
|
239
|
+
/** Human-readable detail — "section 3", "cell A1:B5", etc. */
|
|
226
240
|
readonly detail?: string;
|
|
227
241
|
/**
|
|
228
242
|
* A backpressure signal in the range `[0.0, 1.0]`. When set, orchestrator
|
|
@@ -257,12 +271,6 @@ export interface Peer {
|
|
|
257
271
|
/** The claims this participant currently holds. */
|
|
258
272
|
readonly activeClaims?: readonly Claim[];
|
|
259
273
|
}
|
|
260
|
-
/** Outbound `presence_update` payload. */
|
|
261
|
-
export interface PresenceUpdatePayload {
|
|
262
|
-
readonly status: 'online' | 'away' | 'offline' | (string & {});
|
|
263
|
-
readonly activity?: Activity;
|
|
264
|
-
readonly isAgent?: boolean;
|
|
265
|
-
}
|
|
266
274
|
/**
|
|
267
275
|
* A claim is a broadcast that says "I'm about to work on this entity." Claims
|
|
268
276
|
* travel on the same connection as presence, so every participant sees them in
|
|
@@ -296,6 +304,16 @@ export interface ClaimOptions extends ClaimLeaseOptions {
|
|
|
296
304
|
* blocked writer receives. Defaults to `'editing'`.
|
|
297
305
|
*/
|
|
298
306
|
readonly description?: string;
|
|
307
|
+
/**
|
|
308
|
+
* @deprecated Renamed to {@link ClaimOptions.description}. Still accepted —
|
|
309
|
+
* `description` wins when both are given — and removed in 0.36.0.
|
|
310
|
+
*
|
|
311
|
+
* The rename shipped without this line, so the server went on accepting
|
|
312
|
+
* `reason` while the type stopped offering it. Code written against the older
|
|
313
|
+
* shape kept working at runtime and stopped type-checking, with nothing
|
|
314
|
+
* saying why.
|
|
315
|
+
*/
|
|
316
|
+
readonly reason?: string;
|
|
299
317
|
/**
|
|
300
318
|
* On contention, join the server's fair first-in-first-out queue instead of
|
|
301
319
|
* being rejected. The grant then arrives asynchronously — immediately if the
|
|
@@ -385,14 +403,14 @@ export interface ClaimStream {
|
|
|
385
403
|
* `position`. The remaining states are terminal and drop the claim from the
|
|
386
404
|
* synced set.
|
|
387
405
|
*/
|
|
388
|
-
export type ClaimStatus =
|
|
406
|
+
export type ClaimStatus = PublicClaimStatus;
|
|
389
407
|
/** Options for waiting on a target to become free. */
|
|
390
408
|
export interface ClaimWaitOptions {
|
|
391
409
|
readonly timeout?: number;
|
|
392
410
|
readonly pollInterval?: number;
|
|
393
411
|
readonly signal?: AbortSignal;
|
|
394
412
|
}
|
|
395
|
-
export interface Claim<T = Record<string, unknown
|
|
413
|
+
export interface Claim<T = Record<string, unknown>, M = ResolveClaimMeta> {
|
|
396
414
|
readonly object: 'claim';
|
|
397
415
|
/** This claim's id. */
|
|
398
416
|
readonly id: string;
|
|
@@ -403,7 +421,7 @@ export interface Claim<T = Record<string, unknown>> {
|
|
|
403
421
|
*/
|
|
404
422
|
readonly status?: ClaimStatus;
|
|
405
423
|
/** What is being coordinated. */
|
|
406
|
-
readonly target: ClaimTarget
|
|
424
|
+
readonly target: ClaimTarget<M>;
|
|
407
425
|
/**
|
|
408
426
|
* Peer-visible description of the work being done — the same field on every
|
|
409
427
|
* claim surface. Always present: the SDK resolves it as it decodes the frame,
|
|
@@ -509,7 +527,7 @@ export interface ClaimHeartbeat {
|
|
|
509
527
|
* typecheck, since `Claim`'s optional dispose hook is not assignable to
|
|
510
528
|
* `AsyncDisposable`.
|
|
511
529
|
*/
|
|
512
|
-
export type HeldClaim<T = Record<string, unknown
|
|
530
|
+
export type HeldClaim<T = Record<string, unknown>, M = ResolveClaimMeta> = Claim<T, M> & Required<Pick<Claim<T, M>, 'data' | 'release' | 'revoke' | 'heartbeat' | typeof Symbol.asyncDispose>>;
|
|
513
531
|
/**
|
|
514
532
|
* A held advisory lease you took on a key whose row Ablo does not hold — the
|
|
515
533
|
* resolved value of the row-free `ablo.<model>.claim(id)` overload. It is a
|
|
@@ -28,6 +28,24 @@
|
|
|
28
28
|
* `text` column instead of `jsonb` — Ablo's adaptive codec serializes verbatim
|
|
29
29
|
* there, matching Postgres's `json` type behavior.)
|
|
30
30
|
*/
|
|
31
|
+
import type { JsonValue } from '../types/streams.js';
|
|
32
|
+
/**
|
|
33
|
+
* Takes an immutable, plain snapshot at a JSON persistence/wire boundary.
|
|
34
|
+
*
|
|
35
|
+
* Traversal intentionally creates fresh objects and arrays instead of relying
|
|
36
|
+
* on a framework-specific unwrapping API. That makes Proxy-wrapped plain data
|
|
37
|
+
* (including MobX observables) safe for IndexedDB's structured-clone algorithm
|
|
38
|
+
* while keeping the settlement core independent of any reactive framework.
|
|
39
|
+
*
|
|
40
|
+
* The accepted contract is deliberately narrower than `JSON.stringify`:
|
|
41
|
+
* values that JSON would silently corrupt (`NaN` to `null`, `Map` to `{}`) or
|
|
42
|
+
* cannot encode are rejected with a stable, path-aware validation error.
|
|
43
|
+
* Valid dates retain normal JSON semantics and become ISO strings. Undefined
|
|
44
|
+
* object properties are omitted for compatibility with optional object keys;
|
|
45
|
+
* root/array `undefined` and sparse arrays are rejected rather than becoming
|
|
46
|
+
* an ambiguous `null`.
|
|
47
|
+
*/
|
|
48
|
+
export declare function snapshotJsonValue(value: unknown, path?: string): JsonValue;
|
|
31
49
|
/** Structural equality for JSON-shaped values (scalars, arrays, plain objects); key order is ignored. */
|
|
32
50
|
export declare function deepEqual(a: unknown, b: unknown): boolean;
|
|
33
51
|
/**
|