@abloatai/ablo 0.34.0 → 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 +4 -1
- package/CHANGELOG.md +684 -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 +3459 -1126
- 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 -84
- 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 +111 -0
- 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,215 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Owns the sync engine's connection lifecycle: the state machine that carries a
|
|
3
|
+
* client from a healthy connection, through a dropout, and back to live. It
|
|
4
|
+
* watches the browser's online/offline and visibility events, probes real
|
|
5
|
+
* connectivity and session validity with {@link probeNetwork}, applies retry
|
|
6
|
+
* backoff with a ceiling and jitter, and runs a watchdog for the cases where
|
|
7
|
+
* the browser never fires an event (VPN flips, captive portals). When it
|
|
8
|
+
* decides to recover, it drives the reconnect sequence — bootstrap, then
|
|
9
|
+
* WebSocket connect — through the {@link ConnectionCallbacks.onReconnect}
|
|
10
|
+
* callback and reacts to the outcome.
|
|
11
|
+
*
|
|
12
|
+
* It deliberately does not perform the bootstrap, local-storage, or object-pool
|
|
13
|
+
* work itself; that lives in the embedding store, which the manager reaches
|
|
14
|
+
* only through its callbacks. One manager is created per store, started on the
|
|
15
|
+
* first successful connect and disposed on teardown.
|
|
16
|
+
*
|
|
17
|
+
* This is a plain state machine, not a reactive object: it lives in the
|
|
18
|
+
* settlement core, which carries no reactivity runtime (ADR 0016). A consumer
|
|
19
|
+
* that wants to render recovery progress mirrors the transitions through
|
|
20
|
+
* {@link ConnectionCallbacks.onStateChange} into its own observable state —
|
|
21
|
+
* which is what the reactive engine's store does.
|
|
22
|
+
*
|
|
23
|
+
* CONNECTED ──(socket drop)──► PROBING_NETWORK ──► RECONNECTING ──► CONNECTED
|
|
24
|
+
* │ │ │
|
|
25
|
+
* (network lost) ▼ ▼
|
|
26
|
+
* ▼ SESSION_EXPIRED BACKOFF ──► PROBING_NETWORK
|
|
27
|
+
* OFFLINE ──(online)──► PROBING_NETWORK
|
|
28
|
+
* │
|
|
29
|
+
* ▼
|
|
30
|
+
* WAITING_FOR_NETWORK
|
|
31
|
+
*
|
|
32
|
+
* Three behaviors are worth calling out. A network return or tab focus during a
|
|
33
|
+
* backoff delay jumps straight to probing instead of waiting out the full
|
|
34
|
+
* interval. Reaching the retry ceiling while the browser reports offline parks
|
|
35
|
+
* in `waiting_for_network` rather than hard-reloading a browser that has no
|
|
36
|
+
* network. And a socket drop (close code 1006) goes straight to probing rather
|
|
37
|
+
* than the passive `offline` state — 1006 is generated locally and carries no
|
|
38
|
+
* connectivity signal, so on a healthy machine no online/offline event ever
|
|
39
|
+
* fires; only a genuine operating-system network loss parks in `offline` to
|
|
40
|
+
* wait for the `online` event.
|
|
41
|
+
*/
|
|
42
|
+
import { type ProbeResult } from './networkProbe.js';
|
|
43
|
+
import type { AuthTokenGetter } from '../auth/credentialSource.js';
|
|
44
|
+
import type { CredentialRefreshOutcome } from './credentialLifecycle.js';
|
|
45
|
+
import { type Logger } from '../logger.js';
|
|
46
|
+
import { type TransportObservability } from '../observability.js';
|
|
47
|
+
export type ConnectionState = 'connected' | 'offline' | 'probing_network' | 'validating_session' | 'refreshing_credential' | 'reconnecting' | 'backoff' | 'waiting_for_network' | 'auth_blocked' | 'session_expired';
|
|
48
|
+
export type ConnectionEvent = {
|
|
49
|
+
type: 'NETWORK_LOST';
|
|
50
|
+
} | {
|
|
51
|
+
type: 'NETWORK_ONLINE';
|
|
52
|
+
} | {
|
|
53
|
+
type: 'TAB_VISIBLE';
|
|
54
|
+
} | {
|
|
55
|
+
type: 'WS_CONNECTED';
|
|
56
|
+
} | {
|
|
57
|
+
type: 'WS_DISCONNECTED';
|
|
58
|
+
} | {
|
|
59
|
+
type: 'WS_SESSION_ERROR';
|
|
60
|
+
} | {
|
|
61
|
+
type: 'WS_HANDSHAKE_FAILED';
|
|
62
|
+
} | {
|
|
63
|
+
type: 'PROBE_SUCCESS';
|
|
64
|
+
sessionValid: boolean;
|
|
65
|
+
} | {
|
|
66
|
+
type: 'PROBE_AUTH_BLOCKED';
|
|
67
|
+
}
|
|
68
|
+
/** The probe saw an expired ephemeral access key (`access_credential_expiry`).
|
|
69
|
+
* Recoverable: re-mint a fresh `ek_`/`rk_` and re-probe — never a sign-out. */
|
|
70
|
+
| {
|
|
71
|
+
type: 'PROBE_CREDENTIAL_STALE';
|
|
72
|
+
} | {
|
|
73
|
+
type: 'PROBE_FAILED';
|
|
74
|
+
}
|
|
75
|
+
/** A fresh access credential is available (the re-mint succeeded, or one was
|
|
76
|
+
* pushed in via `setAuthToken`). Re-probe so a parked connection picks it up. */
|
|
77
|
+
| {
|
|
78
|
+
type: 'CREDENTIAL_REFRESHED';
|
|
79
|
+
} | {
|
|
80
|
+
type: 'RECONNECT_SUCCESS';
|
|
81
|
+
} | {
|
|
82
|
+
type: 'RECONNECT_FAILED';
|
|
83
|
+
} | {
|
|
84
|
+
type: 'BACKOFF_ELAPSED';
|
|
85
|
+
} | {
|
|
86
|
+
type: 'BOOTSTRAP_FAILED_SESSION';
|
|
87
|
+
} | {
|
|
88
|
+
type: 'MANUAL_RETRY';
|
|
89
|
+
};
|
|
90
|
+
export interface ConnectionCallbacks {
|
|
91
|
+
/** Run bootstrap + WebSocket reconnect. Returns the outcome. */
|
|
92
|
+
onReconnect: () => Promise<'success' | 'session_error' | 'network_error'>;
|
|
93
|
+
/**
|
|
94
|
+
* Re-mints the short-lived access credential (the `ek_`/`rk_`) and pushes it
|
|
95
|
+
* into the credential source, then reports the outcome. Invoked in the
|
|
96
|
+
* `refreshing_credential` state — that is, when a probe found the access key
|
|
97
|
+
* stale (`PROBE_CREDENTIAL_STALE`). The three outcomes map onto recovery:
|
|
98
|
+
* - `'refreshed'` → a fresh credential is in place; re-probe and reconnect.
|
|
99
|
+
* - `'session_error'` → the long-lived login itself is gone (the mint
|
|
100
|
+
* returned null, a 401/403); terminal, so sign out.
|
|
101
|
+
* - `'network_error'` → the mint endpoint was unreachable (offline, 5xx, or
|
|
102
|
+
* a throw); transient, so back off and retry rather
|
|
103
|
+
* than sign out.
|
|
104
|
+
* Optional: a deployment with no re-mint path (for example a static `apiKey`)
|
|
105
|
+
* omits it, and the state machine falls back to a plain re-probe.
|
|
106
|
+
*/
|
|
107
|
+
onRefreshCredential?: () => Promise<CredentialRefreshOutcome>;
|
|
108
|
+
/** Called when the session is confirmed expired — route to signin. */
|
|
109
|
+
onSessionExpired: () => void;
|
|
110
|
+
/** Called to tear down the WebSocket when entering a dead state. */
|
|
111
|
+
onDisconnectWebSocket: () => void;
|
|
112
|
+
/**
|
|
113
|
+
* Fires on every state transition. It lets the embedding store mirror
|
|
114
|
+
* recovery progress into its visible `syncStatus`, so the UI can show
|
|
115
|
+
* "Reconnecting…" instead of a sticky "offline" while the machine cycles
|
|
116
|
+
* through `probing_network` → `reconnecting` → `backoff`. Optional; when
|
|
117
|
+
* omitted, the state machine is simply opaque to the UI.
|
|
118
|
+
*/
|
|
119
|
+
onStateChange?: (next: ConnectionState, prev: ConnectionState) => void;
|
|
120
|
+
}
|
|
121
|
+
export interface ConnectionManagerOptions {
|
|
122
|
+
/**
|
|
123
|
+
* Sync-server base URL used for probes. Falls back to the env-based
|
|
124
|
+
* default of `probeNetwork`.
|
|
125
|
+
*/
|
|
126
|
+
baseUrl?: string;
|
|
127
|
+
/**
|
|
128
|
+
* Current bearer credential for authenticated probes. Read lazily so token
|
|
129
|
+
* refreshes pushed through `Ablo.setAuthToken()` are used by the next probe
|
|
130
|
+
* without recreating the manager.
|
|
131
|
+
*/
|
|
132
|
+
getAuthToken?: AuthTokenGetter;
|
|
133
|
+
/** Override retry ceilings / jitter. Production should leave defaults. */
|
|
134
|
+
backoff?: Partial<typeof DEFAULT_BACKOFF>;
|
|
135
|
+
/** Where transitions are logged. Defaults to silent. */
|
|
136
|
+
logger?: Logger;
|
|
137
|
+
/** Where dead-end states are reported. Defaults to silent. */
|
|
138
|
+
observability?: TransportObservability;
|
|
139
|
+
}
|
|
140
|
+
declare const DEFAULT_BACKOFF: {
|
|
141
|
+
readonly BASE_MS: 2000;
|
|
142
|
+
readonly MAX_MS: 30000;
|
|
143
|
+
readonly MAX_ATTEMPTS: 8;
|
|
144
|
+
readonly JITTER: 0.15;
|
|
145
|
+
};
|
|
146
|
+
export declare class ConnectionManager {
|
|
147
|
+
state: ConnectionState;
|
|
148
|
+
offlineSince: Date | null;
|
|
149
|
+
attempt: number;
|
|
150
|
+
lastProbeResult: ProbeResult | null;
|
|
151
|
+
private callbacks;
|
|
152
|
+
private backoffTimer;
|
|
153
|
+
private debounceTimer;
|
|
154
|
+
private watchdogTimer;
|
|
155
|
+
private stuckCycles;
|
|
156
|
+
/** Consecutive access-key re-mints in the current recovery cycle; reset on
|
|
157
|
+
* reaching `connected`. See {@link MAX_CREDENTIAL_REFRESH_ATTEMPTS}. */
|
|
158
|
+
private credentialRefreshAttempts;
|
|
159
|
+
private disposed;
|
|
160
|
+
private readonly baseUrl?;
|
|
161
|
+
private readonly getAuthToken?;
|
|
162
|
+
private readonly backoff;
|
|
163
|
+
private readonly logger;
|
|
164
|
+
private readonly observability;
|
|
165
|
+
private handleBrowserOnline;
|
|
166
|
+
private handleBrowserOffline;
|
|
167
|
+
private handleVisibilityChange;
|
|
168
|
+
constructor(options?: ConnectionManagerOptions);
|
|
169
|
+
start(callbacks: ConnectionCallbacks): void;
|
|
170
|
+
dispose(): void;
|
|
171
|
+
send(event: ConnectionEvent): void;
|
|
172
|
+
private transition;
|
|
173
|
+
private onEnterState;
|
|
174
|
+
/**
|
|
175
|
+
* FSM effects are fire-and-forget by design (`onEnterState` is sync). Each
|
|
176
|
+
* effect catches its own operational failures and maps them onto an FSM
|
|
177
|
+
* event, so a rejection here means the machine wedged mid-transition
|
|
178
|
+
* (`send()` or a transition listener threw) with no retry timer armed past
|
|
179
|
+
* it — capture it instead of losing the reconnect loop silently.
|
|
180
|
+
*/
|
|
181
|
+
private captureEffectFailure;
|
|
182
|
+
private runProbe;
|
|
183
|
+
/**
|
|
184
|
+
* Re-mint the short-lived access key on `refreshing_credential`. Delegates to
|
|
185
|
+
* the `onRefreshCredential` callback (which mints a fresh `ek_`/`rk_` from the
|
|
186
|
+
* still-valid login and pushes it into the credential source) and maps its
|
|
187
|
+
* tri-state outcome onto the FSM:
|
|
188
|
+
* - `refreshed` → `CREDENTIAL_REFRESHED` → re-probe & reconnect.
|
|
189
|
+
* - `session_error` → `BOOTSTRAP_FAILED_SESSION` → sign out (login is gone).
|
|
190
|
+
* - `network_error` → `RECONNECT_FAILED` → back off & retry (never sign out).
|
|
191
|
+
*
|
|
192
|
+
* A bounded attempt counter guards against a hot loop where the server keeps
|
|
193
|
+
* reporting the key stale even after a "successful" re-mint (e.g. a clock skew
|
|
194
|
+
* or a mint that returns an already-rejected key): after
|
|
195
|
+
* `MAX_CREDENTIAL_REFRESH_ATTEMPTS` we fall through to `auth_blocked` (stop,
|
|
196
|
+
* no sign-out) rather than spin. The counter resets once we reach `connected`.
|
|
197
|
+
*
|
|
198
|
+
* When no refresher is wired (e.g. a static `apiKey` deployment), we re-probe
|
|
199
|
+
* directly — the credential source's own scheduler owns refresh there.
|
|
200
|
+
*/
|
|
201
|
+
private runRefreshCredential;
|
|
202
|
+
private runReconnect;
|
|
203
|
+
private scheduleBackoff;
|
|
204
|
+
private setupBrowserListeners;
|
|
205
|
+
private removeBrowserListeners;
|
|
206
|
+
private startWatchdog;
|
|
207
|
+
get isConnected(): boolean;
|
|
208
|
+
get isOffline(): boolean;
|
|
209
|
+
get isReconnecting(): boolean;
|
|
210
|
+
get isSessionExpired(): boolean;
|
|
211
|
+
get offlineDuration(): string | null;
|
|
212
|
+
private clearBackoffTimer;
|
|
213
|
+
private clearDebounceTimer;
|
|
214
|
+
}
|
|
215
|
+
export {};
|