@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
|
@@ -1,253 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
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 { ReadDependency, TrackDependency } from '../coordination/schema.js';
|
|
8
|
-
import type { ClientCommitReceipt, CommitStatus } from '../wire/commit.js';
|
|
9
|
-
import type { ModelTarget, ModelClaim } from '../coordination/schema.js';
|
|
10
|
-
export type { ModelTarget, ModelClaim };
|
|
11
|
-
import type { SchemaRecord } from '../schema/schema.js';
|
|
12
|
-
import type { SyncGroupInput } from '../schema/roles.js';
|
|
13
|
-
import type { Claim, ClaimStream, ClaimWaitOptions, Duration, HeldClaim } from '../types/streams.js';
|
|
14
|
-
import type { ClaimOptions, ClaimParams, ClaimReadApi, AwaitedClaimMethod } from './createModelProxy.js';
|
|
15
|
-
/**
|
|
16
|
-
* The operations available on each model in the sync engine:
|
|
17
|
-
* `retrieve({ id })` — an async single-row server read
|
|
18
|
-
* `list({ where })` — an async collection server read
|
|
19
|
-
* `get(id)` / `getAll(...)` / `getCount(...)` — synchronous local-cache reads
|
|
20
|
-
* `create({ data })` / `update({ id, data })` / `delete({ id })` — writes
|
|
21
|
-
* `claim({ id })` — a durable claim handle for coordinated writes
|
|
22
|
-
*/
|
|
23
|
-
export type { LocalCountOptions, LocalReadOptions, ModelListScope, ServerReadOptions, ModelRetrieveParams, ModelCreateParams, ModelUpdateParams, ModelDeleteParams, ClaimOptions, ClaimParams, ClaimLookupParams, ClaimReorderParams, Claim, ClaimHeartbeat, ClaimHeartbeatOptions, HeldClaim, HeldLease, ModelOperations, } from './createModelProxy.js';
|
|
24
|
-
export type ModelOperationAction = 'create' | 'update' | 'delete' | 'archive' | 'unarchive';
|
|
25
|
-
export type CommitWait = CommitStatus;
|
|
26
|
-
export type IfClaimedPolicy = 'return' | 'fail';
|
|
27
|
-
export interface ClaimedOptions {
|
|
28
|
-
/**
|
|
29
|
-
* What to do when another participant has claimed the target: `return` lets
|
|
30
|
-
* the read proceed; `fail` throws `AbloClaimedError`. Inspect claim state via
|
|
31
|
-
* `ablo.<model>.claim.state({ id })`. Waiting is a claim-side concern — take
|
|
32
|
-
* `ablo.<model>.claim({ id })` (it queues fairly); reads never block.
|
|
33
|
-
*/
|
|
34
|
-
readonly ifClaimed?: IfClaimedPolicy;
|
|
35
|
-
}
|
|
36
|
-
export type { ClaimWaitOptions } from '../types/streams.js';
|
|
37
|
-
export interface ModelReadOptions extends ClaimedOptions {
|
|
38
|
-
}
|
|
39
|
-
export interface ClaimCreateOptions {
|
|
40
|
-
readonly target: ModelTarget;
|
|
41
|
-
/** Peer-visible description of the work — the same field on every claim
|
|
42
|
-
* surface. Defaults to `'editing'` when omitted. */
|
|
43
|
-
readonly description?: string;
|
|
44
|
-
readonly ttl?: Duration;
|
|
45
|
-
/**
|
|
46
|
-
* Join the server's fair FIFO queue when the target is already claimed,
|
|
47
|
-
* rather than failing immediately. `create` then resolves only once the
|
|
48
|
-
* lease is actually ours (the server pushes `claim_acquired` if the target
|
|
49
|
-
* was free, or `claim_granted` when we reach the head of the line). Without
|
|
50
|
-
* this, a contended claim throws. Used by `ablo.<model>.claim` so writers
|
|
51
|
-
* serialize instead of racing.
|
|
52
|
-
*/
|
|
53
|
-
readonly queue?: boolean;
|
|
54
|
-
/** Cap on how long to wait for a queued grant before rejecting. */
|
|
55
|
-
readonly waitTimeoutMs?: number;
|
|
56
|
-
/**
|
|
57
|
-
* Backpressure: reject with `AbloClaimedError('queue_too_deep')` instead of
|
|
58
|
-
* waiting if the queue is already `>= maxQueueDepth` when we join.
|
|
59
|
-
*/
|
|
60
|
-
readonly maxQueueDepth?: number;
|
|
61
|
-
}
|
|
62
|
-
export interface CommitOperationInput {
|
|
63
|
-
readonly action: ModelOperationAction;
|
|
64
|
-
/** The model name — matches `ablo.<model>` and the schema's `model()`. */
|
|
65
|
-
readonly model: string;
|
|
66
|
-
readonly id?: string | null;
|
|
67
|
-
readonly data?: Record<string, unknown> | null;
|
|
68
|
-
readonly transactionId?: string | null;
|
|
69
|
-
readonly readAt?: number | null;
|
|
70
|
-
readonly onStale?: 'reject' | 'overwrite' | 'notify' | null;
|
|
71
|
-
/** Fencing token (Option B) from the batch's claim handle; server-validated. */
|
|
72
|
-
readonly fenceToken?: number | null;
|
|
73
|
-
}
|
|
74
|
-
export interface CommitCreateOptions {
|
|
75
|
-
readonly idempotencyKey?: string | null;
|
|
76
|
-
readonly readAt?: number | null;
|
|
77
|
-
readonly onStale?: 'reject' | 'overwrite' | 'notify' | null;
|
|
78
|
-
/**
|
|
79
|
-
* A claim handle from `ablo.<model>.claim({ id })` (or the HTTP claim
|
|
80
|
-
* surface). Same vocabulary as the per-model writes: the handle's
|
|
81
|
-
* snapshot watermark becomes the batch `readAt` default and `onStale`
|
|
82
|
-
* defaults to `'reject'`, so a commit that follows a claim is guarded
|
|
83
|
-
* against concurrent edits without re-stating the watermark by hand.
|
|
84
|
-
* Explicit `readAt`/`onStale` on the options win.
|
|
85
|
-
*/
|
|
86
|
-
readonly claim?: Claim | null;
|
|
87
|
-
/** One atomic batch. Use a one-element array for a single operation. */
|
|
88
|
-
readonly operations: readonly CommitOperationInput[];
|
|
89
|
-
readonly wait?: CommitWait;
|
|
90
|
-
/**
|
|
91
|
-
* Batch-level read dependencies — the "did anything I looked at change?" guard.
|
|
92
|
-
* Declare the rows (`{ model, id, readAt, fields? }`) or sync groups
|
|
93
|
-
* (`{ group, readAt }`, for example `deck:abc`) this batch was premised on; the
|
|
94
|
-
* server checks that none moved since `readAt` and fires the entry's `onStale`
|
|
95
|
-
* over the batch. This is distinct from the write-target `readAt`: it guards what
|
|
96
|
-
* you read, not what you write.
|
|
97
|
-
*/
|
|
98
|
-
readonly reads?: readonly ReadDependency[] | null;
|
|
99
|
-
/**
|
|
100
|
-
* Durable read-dependencies to register as part of this batch — the persisted
|
|
101
|
-
* sibling of `reads`. Where `reads` guards only this commit, a `track` entry
|
|
102
|
-
* (`{ model, id, readAt? }` for a row or `{ group, readAt? }` for a sync group)
|
|
103
|
-
* lives on past it: a later matching change rides back on a future receipt's
|
|
104
|
-
* `notifications`. A track-only batch (just `track`, an empty `operations`) is
|
|
105
|
-
* the batch form of `ablo.<model>.track()`.
|
|
106
|
-
*/
|
|
107
|
-
readonly track?: readonly TrackDependency[] | null;
|
|
108
|
-
}
|
|
109
|
-
/** Public projection inferred from the canonical runtime schema. */
|
|
110
|
-
export type CommitReceipt = ClientCommitReceipt;
|
|
111
|
-
export interface CommitResource {
|
|
112
|
-
create(options: CommitCreateOptions): Promise<CommitReceipt>;
|
|
113
|
-
}
|
|
114
|
-
export interface ClaimResource extends ClaimStream {
|
|
115
|
-
create(options: ClaimCreateOptions): Promise<Claim>;
|
|
116
|
-
list(target?: Partial<ModelTarget>): readonly ModelClaim[];
|
|
117
|
-
waitFor(target: Partial<ModelTarget>, options?: ClaimWaitOptions): Promise<void>;
|
|
118
|
-
}
|
|
119
|
-
export interface ModelMutationOptions extends ClaimedOptions {
|
|
120
|
-
readonly claimRef?: string | {
|
|
121
|
-
readonly id: string;
|
|
122
|
-
} | null;
|
|
123
|
-
readonly idempotencyKey?: string | null;
|
|
124
|
-
readonly readAt?: number | null;
|
|
125
|
-
readonly onStale?: 'reject' | 'overwrite' | 'notify' | null;
|
|
126
|
-
readonly wait?: CommitWait;
|
|
127
|
-
readonly claim?: Claim | ClaimOptions | null;
|
|
128
|
-
/** Fencing token (Option B) from the claim; server-validated at commit. */
|
|
129
|
-
readonly fenceToken?: number | null;
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* The stateless HTTP claim surface. Most code puts a `claim` directly on the write
|
|
133
|
-
* (`update({ id, data, claim })`) and lets the SDK release it; reach for this
|
|
134
|
-
* namespace for multi-step handles and coordination screens.
|
|
135
|
-
*
|
|
136
|
-
* It is the same surface as the reactive claim API, but because every read is a
|
|
137
|
-
* server round-trip, `state`, `queue`, and `reorder` are awaited here. The
|
|
138
|
-
* WebSocket client resolves those synchronously from its local cache, which is what
|
|
139
|
-
* lets it read a claim's state inside a React render; a stateless client has no
|
|
140
|
-
* cache to read, so the promise is unavoidable.
|
|
2
|
+
* The public resource-type surface.
|
|
141
3
|
*
|
|
142
|
-
*
|
|
143
|
-
*
|
|
144
|
-
*
|
|
145
|
-
*
|
|
4
|
+
* The transport-facing half of these types moved down into the settlement core
|
|
5
|
+
* (ADR 0016). This module keeps the
|
|
6
|
+
* consumer-facing import path intact and rejoins it with the model-proxy types
|
|
7
|
+
* that stay here — `ModelOperations` chief among them, because it returns the
|
|
8
|
+
* live participant handle.
|
|
146
9
|
*/
|
|
147
|
-
export
|
|
148
|
-
|
|
149
|
-
};
|
|
150
|
-
/** A single data operation a scoped **agent** session may perform on a model. */
|
|
151
|
-
export type SessionOperation = 'read' | 'create' | 'update' | 'delete';
|
|
152
|
-
/** Parameters for minting an end-user session — full data authority within the
|
|
153
|
-
* organization. Mints an `ek_` token. `user.id` is your end user's id from your
|
|
154
|
-
* own identity provider and becomes the session's `participantId`; Ablo does not
|
|
155
|
-
* model your users, so it is treated as an opaque string at the trust boundary. */
|
|
156
|
-
export interface CreateUserSessionParams {
|
|
157
|
-
/** Your end user. `id` becomes the token's `participantId`. */
|
|
158
|
-
user: {
|
|
159
|
-
id: string;
|
|
160
|
-
};
|
|
161
|
-
/** Mint the session into this organization instead of the key's own — for a
|
|
162
|
-
* platform that serves many tenants from one backend. Requires the `sk_` key to
|
|
163
|
-
* carry the `ephemeral:mint-any-org` scope; omit it for the normal
|
|
164
|
-
* single-tenant case. */
|
|
165
|
-
organizationId?: string;
|
|
166
|
-
/** Sync groups this session may subscribe to — typed (`'default'` or
|
|
167
|
-
* `<namespace>:<id>`; build with `syncGroup(kind, id)` from
|
|
168
|
-
* `@abloatai/ablo/schema`). Omit for the server default:
|
|
169
|
-
* `[org:<your org>, user:<user.id>]`. */
|
|
170
|
-
syncGroups?: readonly SyncGroupInput[];
|
|
171
|
-
/** Token lifetime in seconds. Defaults to 900 (15 minutes). */
|
|
172
|
-
ttlSeconds?: number;
|
|
173
|
-
/** Opaque identity blob echoed back to the client as `ablo.user`. */
|
|
174
|
-
userMeta?: Record<string, unknown>;
|
|
175
|
-
agent?: never;
|
|
176
|
-
can?: never;
|
|
177
|
-
}
|
|
178
|
-
/** Mint params for a scoped **agent** session — mints a restricted `rk_` token
|
|
179
|
-
* gated to exactly the operations named in `can`. `can` is typed off your
|
|
180
|
-
* schema (no magic `'task.update'` strings): `{ Task: ['update'], Deck: ['read'] }`
|
|
181
|
-
* — the SDK serializes each entry to the wire allowlist (`task.update`). */
|
|
182
|
-
export interface CreateAgentSessionParams<S extends SchemaRecord> {
|
|
183
|
-
/** Your agent. `id` becomes the token's `participantId`. */
|
|
184
|
-
agent: {
|
|
185
|
-
id: string;
|
|
186
|
-
};
|
|
187
|
-
/** Per-model operation allowlist, typed against the schema's model names. */
|
|
188
|
-
can: Partial<Record<keyof S & string, readonly SessionOperation[]>>;
|
|
189
|
-
/** Sync groups this session may subscribe to — typed (`'default'` or
|
|
190
|
-
* `<namespace>:<id>`; build with `syncGroup(kind, id)` from
|
|
191
|
-
* `@abloatai/ablo/schema`). Omit for the server default: the org
|
|
192
|
-
* anchor (`org:<your org>`) + the agent's own anchor. */
|
|
193
|
-
syncGroups?: readonly SyncGroupInput[];
|
|
194
|
-
/** Token lifetime in seconds. Defaults to 900 (15 minutes). */
|
|
195
|
-
ttlSeconds?: number;
|
|
196
|
-
/** Opaque identity blob echoed back to the client as `ablo.agent`. */
|
|
197
|
-
userMeta?: Record<string, unknown>;
|
|
198
|
-
user?: never;
|
|
199
|
-
}
|
|
200
|
-
/** Params for {@link Ablo.sessions}.create — a discriminated union: pass
|
|
201
|
-
* `{ user }` for a full-authority end-user session (`ek_`) or `{ agent, can }`
|
|
202
|
-
* for a scoped agent session (`rk_`). */
|
|
203
|
-
export type CreateSessionParams<S extends SchemaRecord> = CreateUserSessionParams | CreateAgentSessionParams<S>;
|
|
204
|
-
/** Params for {@link Ablo.agents}.create — a flattened agent descriptor (no
|
|
205
|
-
* `{ agent }` discriminator: `agents.create` only ever mints an agent). Unlike
|
|
206
|
-
* {@link CreateSessionParams} it resolves to a connected, scoped {@link Ablo}
|
|
207
|
-
* client rather than a raw token. */
|
|
208
|
-
export interface CreateAgentClientParams<S extends SchemaRecord> {
|
|
209
|
-
/** The wire participant identity (`agent:<id>`) that claim exclusion and the
|
|
210
|
-
* FIFO queue gate on. Omit it to get a fresh random id — a distinct, independent
|
|
211
|
-
* participant, which is the default and what you want for concurrent agents.
|
|
212
|
-
* Pass a stable string only when one logical agent must re-attach to its own
|
|
213
|
-
* held claims across reconnects or restarts. */
|
|
214
|
-
id?: string;
|
|
215
|
-
/** A human-readable label for logs and attribution (carried in `userMeta.name`).
|
|
216
|
-
* It is independent of `id`: two agents that share a `name` still receive
|
|
217
|
-
* distinct ids and coordinate as separate participants — `name` never derives or
|
|
218
|
-
* collapses identity. */
|
|
219
|
-
name?: string;
|
|
220
|
-
/** Per-model operation allowlist, typed against the schema's model names. */
|
|
221
|
-
can: Partial<Record<keyof S & string, readonly SessionOperation[]>>;
|
|
222
|
-
/** Sync groups this agent may subscribe to — typed (`'default'` or
|
|
223
|
-
* `<namespace>:<id>`). Omit for the server default (org anchor + the
|
|
224
|
-
* agent's own anchor). */
|
|
225
|
-
syncGroups?: readonly SyncGroupInput[];
|
|
226
|
-
/** Token lifetime in seconds. Defaults to 900 (15 minutes); the returned client
|
|
227
|
-
* re-mints before expiry, so a long-running agent never handles rotation
|
|
228
|
-
* itself. */
|
|
229
|
-
ttlSeconds?: number;
|
|
230
|
-
/** Extra opaque identity blob echoed on the session scope. Merged with
|
|
231
|
-
* `name` (the `name` param wins if you also set `userMeta.name`). */
|
|
232
|
-
userMeta?: Record<string, unknown>;
|
|
233
|
-
}
|
|
234
|
-
/** A minted session. `token` is the secret the holder presents as its bearer. */
|
|
235
|
-
export interface AbloSession {
|
|
236
|
-
object: 'session';
|
|
237
|
-
/** Stable id of the minted credential (for revocation). */
|
|
238
|
-
id: string;
|
|
239
|
-
/** The short-lived session token — `ek_` for a `{ user }` session, `rk_`
|
|
240
|
-
* for an `{ agent }` session. Hand this to the participant's runtime. */
|
|
241
|
-
token: string;
|
|
242
|
-
/** ISO-8601 expiry. */
|
|
243
|
-
expiresAt: string;
|
|
244
|
-
organizationId: string;
|
|
245
|
-
scope: {
|
|
246
|
-
organizationId: string;
|
|
247
|
-
syncGroups: readonly string[];
|
|
248
|
-
operations: readonly string[];
|
|
249
|
-
participantKind: 'user' | 'agent' | 'system';
|
|
250
|
-
participantId: string;
|
|
251
|
-
};
|
|
252
|
-
userMeta: Record<string, unknown>;
|
|
253
|
-
}
|
|
10
|
+
export * from '../transaction/resources/httpResources.js';
|
|
11
|
+
export type { LocalCountOptions, LocalReadOptions, ModelListScope, ServerReadOptions, ModelRetrieveParams, ModelCreateParams, ModelUpdateParams, ModelDeleteParams, ClaimOptions, ClaimParams, ClaimLookupParams, ClaimReorderParams, Claim, ClaimHeartbeat, ClaimHeartbeatOptions, HeldClaim, HeldLease, } from '../transaction/resources/modelOperations.js';
|
|
12
|
+
export type { ModelOperations } from './createModelProxy.js';
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
2
|
+
* The public resource-type surface.
|
|
3
|
+
*
|
|
4
|
+
* The transport-facing half of these types moved down into the settlement core
|
|
5
|
+
* (ADR 0016). This module keeps the
|
|
6
|
+
* consumer-facing import path intact and rejoins it with the model-proxy types
|
|
7
|
+
* that stay here — `ModelOperations` chief among them, because it returns the
|
|
8
|
+
* live participant handle.
|
|
6
9
|
*/
|
|
7
|
-
export
|
|
10
|
+
export * from '../transaction/resources/httpResources.js';
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
* functions: {@link computeFKDepthPriority} works out a safe row-insertion
|
|
4
4
|
* order from the schema's foreign-key relations, and
|
|
5
5
|
* {@link deriveConfigFromSchema} packages that ordering, together with a few
|
|
6
|
-
* defaults, into the {@link
|
|
6
|
+
* defaults, into the {@link RuntimeConfig} a client uses at startup. Both
|
|
7
7
|
* are deterministic transforms of the schema and hold no engine state.
|
|
8
8
|
*/
|
|
9
|
-
import type { Schema } from '../schema/schema.js';
|
|
10
|
-
import type {
|
|
9
|
+
import type { Schema } from '../transaction/schema/schema.js';
|
|
10
|
+
import type { RuntimeConfig } from '../interfaces/index.js';
|
|
11
11
|
/**
|
|
12
12
|
* Computes a create-priority map that gives the engine a safe order for
|
|
13
13
|
* inserting rows, so a child row is never written before the parent its
|
|
@@ -41,4 +41,4 @@ import type { SyncEngineConfig } from '../interfaces/index.js';
|
|
|
41
41
|
* algorithms."
|
|
42
42
|
*/
|
|
43
43
|
export declare function computeFKDepthPriority(schema: Schema): ReadonlyMap<string, number>;
|
|
44
|
-
export declare function deriveConfigFromSchema(schema: Schema):
|
|
44
|
+
export declare function deriveConfigFromSchema(schema: Schema): RuntimeConfig;
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
* functions: {@link computeFKDepthPriority} works out a safe row-insertion
|
|
4
4
|
* order from the schema's foreign-key relations, and
|
|
5
5
|
* {@link deriveConfigFromSchema} packages that ordering, together with a few
|
|
6
|
-
* defaults, into the {@link
|
|
6
|
+
* defaults, into the {@link RuntimeConfig} a client uses at startup. Both
|
|
7
7
|
* are deterministic transforms of the schema and hold no engine state.
|
|
8
8
|
*/
|
|
9
|
-
import { schemaHash } from '../schema/serialize.js';
|
|
9
|
+
import { schemaHash, modelHash, toSchemaJSON } from '../schema/serialize.js';
|
|
10
10
|
// ── Config derivation from schema ─────────────────────────────────────────
|
|
11
11
|
/**
|
|
12
12
|
* Computes a create-priority map that gives the engine a safe order for
|
|
@@ -172,6 +172,10 @@ export function deriveConfigFromSchema(schema) {
|
|
|
172
172
|
// schema the server currently has active. The server and the `ablo push`
|
|
173
173
|
// command compute this same hash.
|
|
174
174
|
expectedSchemaHash: schemaHash(schema),
|
|
175
|
+
// Per-model hashes for the SEMANTIC drift check: on a whole-hash mismatch
|
|
176
|
+
// the client compares only the models it declares, so an additive server
|
|
177
|
+
// change stays silent and a real divergence names the exact models.
|
|
178
|
+
expectedModelHashes: Object.fromEntries(Object.entries(toSchemaJSON(schema).models).map(([key, model]) => [key, modelHash(model)])),
|
|
175
179
|
// For a projection (`selectModels`/`omitModels`), also carry the full source
|
|
176
180
|
// schema's hash. The drift check accepts a server match on either hash, so a
|
|
177
181
|
// subset client stays quiet against a server running its full source schema.
|
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
* problem, because the identity error messages mention the URL and would
|
|
10
10
|
* mislead if the URL were the thing actually missing.
|
|
11
11
|
*/
|
|
12
|
-
import { AbloError } from '../errors.js';
|
|
12
|
+
import { AbloError } from '../transaction/errors.js';
|
|
13
|
+
import type { ParticipantKind } from '../transaction/types/participant.js';
|
|
13
14
|
/**
|
|
14
15
|
* The subset of client options this validator reads. It is declared as its own
|
|
15
16
|
* interface, structurally compatible with the full options type, so a real
|
|
@@ -20,7 +21,7 @@ export interface ValidatableAbloOptions {
|
|
|
20
21
|
readonly schema?: {
|
|
21
22
|
readonly models?: Record<string, unknown>;
|
|
22
23
|
} | null;
|
|
23
|
-
readonly kind?:
|
|
24
|
+
readonly kind?: ParticipantKind;
|
|
24
25
|
readonly user?: {
|
|
25
26
|
readonly id?: string;
|
|
26
27
|
} | undefined;
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* problem, because the identity error messages mention the URL and would
|
|
10
10
|
* mislead if the URL were the thing actually missing.
|
|
11
11
|
*/
|
|
12
|
-
import { AbloError, AbloValidationError } from '../errors.js';
|
|
12
|
+
import { AbloError, AbloValidationError } from '../transaction/errors.js';
|
|
13
13
|
export function validateAbloOptions(input) {
|
|
14
14
|
const { options, url, configuredApiKey, configuredAuthToken } = input;
|
|
15
15
|
const kind = options.kind ?? 'user';
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* commit time because it does not exist yet when the executor is created. A
|
|
5
5
|
* client wires this up automatically unless you supply your own executor.
|
|
6
6
|
*/
|
|
7
|
-
import type { ReadDependency, TrackDependency } from '../coordination/schema.js';
|
|
7
|
+
import type { ReadDependency, TrackDependency } from '../transaction/coordination/schema.js';
|
|
8
8
|
import type { MutationExecutor, MutationOperation } from '../interfaces/index.js';
|
|
9
9
|
import type { CommitAck } from '../sync/commitFrames.js';
|
|
10
10
|
/**
|
|
@@ -18,10 +18,10 @@ import type { CommitAck } from '../sync/commitFrames.js';
|
|
|
18
18
|
* the ready socket.
|
|
19
19
|
*
|
|
20
20
|
* When set, `options.idempotencyKey` is sent as the wire-level `clientTxId`, so
|
|
21
|
-
* retrying a call with the same key is safe.
|
|
21
|
+
* retrying a call with the same key is safe. MutationQueue always supplies
|
|
22
22
|
* this key before its first attempt and owns reuse across retries. The fallback
|
|
23
23
|
* generation below exists only for direct, one-shot executor consumers.
|
|
24
24
|
*/
|
|
25
25
|
export declare function createDefaultMutationExecutor(getWs: () => {
|
|
26
|
-
sendCommit?: (operations: readonly MutationOperation[], clientTxId: string, timeoutMs?: number,
|
|
26
|
+
sendCommit?: (operations: readonly MutationOperation[], clientTxId: string, timeoutMs?: number, reads?: readonly ReadDependency[] | null, track?: readonly TrackDependency[] | null) => Promise<CommitAck>;
|
|
27
27
|
} | null): MutationExecutor;
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* commit time because it does not exist yet when the executor is created. A
|
|
5
5
|
* client wires this up automatically unless you supply your own executor.
|
|
6
6
|
*/
|
|
7
|
-
import { AbloError, AbloConnectionError } from '../errors.js';
|
|
7
|
+
import { AbloError, AbloConnectionError } from '../transaction/errors.js';
|
|
8
8
|
// ── Default mutation executor (wire: `commit` frame over WebSocket) ──────
|
|
9
9
|
/**
|
|
10
10
|
* Creates the default mutation executor, which sends each change as a `commit`
|
|
@@ -17,7 +17,7 @@ import { AbloError, AbloConnectionError } from '../errors.js';
|
|
|
17
17
|
* the ready socket.
|
|
18
18
|
*
|
|
19
19
|
* When set, `options.idempotencyKey` is sent as the wire-level `clientTxId`, so
|
|
20
|
-
* retrying a call with the same key is safe.
|
|
20
|
+
* retrying a call with the same key is safe. MutationQueue always supplies
|
|
21
21
|
* this key before its first attempt and owns reuse across retries. The fallback
|
|
22
22
|
* generation below exists only for direct, one-shot executor consumers.
|
|
23
23
|
*/
|
|
@@ -34,7 +34,7 @@ export function createDefaultMutationExecutor(getWs) {
|
|
|
34
34
|
: `tx_${Date.now()}_${Math.random().toString(36).slice(2, 10)}`);
|
|
35
35
|
try {
|
|
36
36
|
return await ws.sendCommit(operations, clientTxId, undefined, // use sendCommit's built-in 15s default; no per-call override
|
|
37
|
-
options?.
|
|
37
|
+
options?.reads, options?.track);
|
|
38
38
|
}
|
|
39
39
|
catch (err) {
|
|
40
40
|
// Wrap transport-level failures as connection errors so the transaction
|
package/dist/context.d.ts
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Module-level accessor for the sync engine's
|
|
2
|
+
* Module-level accessor for the sync engine's runtime context.
|
|
3
3
|
*
|
|
4
|
-
* The context is set once, during initialization, by {@link
|
|
4
|
+
* The context is set once, during initialization, by {@link initRuntime}.
|
|
5
5
|
* Code throughout the package reaches its shared dependencies — logger,
|
|
6
6
|
* observability, online-status detector, configuration, and the mutation
|
|
7
7
|
* executor — through {@link getContext} instead of receiving them through every
|
|
8
8
|
* constructor.
|
|
9
9
|
*/
|
|
10
|
-
import type {
|
|
10
|
+
import type { RuntimeContext } from './RuntimeContext.js';
|
|
11
11
|
/**
|
|
12
|
-
*
|
|
13
|
-
*
|
|
12
|
+
* Install the caller-provided runtime dependencies. Must be called before any
|
|
13
|
+
* operation that reaches {@link getContext}.
|
|
14
14
|
*/
|
|
15
|
-
export declare function
|
|
15
|
+
export declare function initRuntime(context: RuntimeContext): void;
|
|
16
16
|
/**
|
|
17
17
|
* Get the current sync engine context.
|
|
18
18
|
* Returns a safe fallback with no-op implementations if not yet initialized,
|
|
19
19
|
* so SDK files can import at module load time without crashing.
|
|
20
20
|
*/
|
|
21
|
-
export declare function getContext():
|
|
21
|
+
export declare function getContext(): RuntimeContext;
|
|
22
22
|
/**
|
|
23
23
|
* Check if the sync engine has been initialized.
|
|
24
24
|
*/
|
|
25
|
-
export declare function
|
|
25
|
+
export declare function isRuntimeInitialized(): boolean;
|
|
26
26
|
/**
|
|
27
27
|
* Reset context (for testing or cleanup).
|
|
28
28
|
*/
|
|
29
|
-
export declare function
|
|
29
|
+
export declare function resetRuntime(): void;
|
package/dist/context.js
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Module-level accessor for the sync engine's
|
|
2
|
+
* Module-level accessor for the sync engine's runtime context.
|
|
3
3
|
*
|
|
4
|
-
* The context is set once, during initialization, by {@link
|
|
4
|
+
* The context is set once, during initialization, by {@link initRuntime}.
|
|
5
5
|
* Code throughout the package reaches its shared dependencies — logger,
|
|
6
6
|
* observability, online-status detector, configuration, and the mutation
|
|
7
7
|
* executor — through {@link getContext} instead of receiving them through every
|
|
8
8
|
* constructor.
|
|
9
9
|
*/
|
|
10
|
-
import { noopLogger, noopObservability, browserOnlineStatus, defaultSessionErrorDetector, emptyConfig, } from './
|
|
10
|
+
import { noopLogger, noopObservability, browserOnlineStatus, defaultSessionErrorDetector, emptyConfig, } from './RuntimeContext.js';
|
|
11
11
|
let _context = null;
|
|
12
12
|
/**
|
|
13
|
-
*
|
|
14
|
-
*
|
|
13
|
+
* Install the caller-provided runtime dependencies. Must be called before any
|
|
14
|
+
* operation that reaches {@link getContext}.
|
|
15
15
|
*/
|
|
16
|
-
export function
|
|
16
|
+
export function initRuntime(context) {
|
|
17
17
|
_context = context;
|
|
18
18
|
}
|
|
19
19
|
/**
|
|
@@ -30,13 +30,13 @@ export function getContext() {
|
|
|
30
30
|
/**
|
|
31
31
|
* Check if the sync engine has been initialized.
|
|
32
32
|
*/
|
|
33
|
-
export function
|
|
33
|
+
export function isRuntimeInitialized() {
|
|
34
34
|
return _context !== null;
|
|
35
35
|
}
|
|
36
36
|
/**
|
|
37
37
|
* Reset context (for testing or cleanup).
|
|
38
38
|
*/
|
|
39
|
-
export function
|
|
39
|
+
export function resetRuntime() {
|
|
40
40
|
_context = null;
|
|
41
41
|
}
|
|
42
42
|
/** Fallback context with no-op implementations */
|
|
@@ -46,8 +46,9 @@ const _fallback = {
|
|
|
46
46
|
onlineStatus: browserOnlineStatus,
|
|
47
47
|
sessionErrorDetector: defaultSessionErrorDetector,
|
|
48
48
|
config: emptyConfig,
|
|
49
|
+
getModelMetadata: () => undefined,
|
|
49
50
|
mutationExecutor: {
|
|
50
|
-
commit: () => Promise.resolve({ lastSyncId: 0 }),
|
|
51
|
+
commit: () => Promise.resolve({ lastSyncId: 0, status: 'confirmed' }),
|
|
51
52
|
executeCreate: () => Promise.resolve(),
|
|
52
53
|
executeUpdate: () => Promise.resolve(null),
|
|
53
54
|
executeDelete: () => Promise.resolve(),
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sync-engine compatibility adapter for the transaction layer's narrow claim
|
|
3
|
+
* log. The core log knows only claim/conflict events; this subclass supplies
|
|
4
|
+
* inert implementations for the client lifecycle hooks required by
|
|
5
|
+
* `ObservabilityProvider`, preserving `Ablo({ observability: new ClaimLog() })`
|
|
6
|
+
* without leaking bootstrap, storage, or WebSocket vocabulary into the core.
|
|
7
|
+
*/
|
|
8
|
+
import { ClaimLog as CoordinationClaimLog } from '../transaction/coordination/trace.js';
|
|
9
|
+
import type { ObservabilityProvider } from '../interfaces/index.js';
|
|
10
|
+
export { formatClaim, formatConflict } from '../transaction/coordination/trace.js';
|
|
11
|
+
export type { ClaimLogEntry } from '../transaction/coordination/trace.js';
|
|
12
|
+
export declare class ClaimLog extends CoordinationClaimLog implements ObservabilityProvider {
|
|
13
|
+
setContext(): void;
|
|
14
|
+
setConnectionState(): void;
|
|
15
|
+
breadcrumb(): void;
|
|
16
|
+
captureRollback(): void;
|
|
17
|
+
captureMutationFailure(): void;
|
|
18
|
+
captureBootstrapFailure(): void;
|
|
19
|
+
captureReconciliation(): void;
|
|
20
|
+
captureDeltaRetryExhausted(): void;
|
|
21
|
+
captureWebSocketError(): void;
|
|
22
|
+
captureSelfHealing(): void;
|
|
23
|
+
captureCommitZeroSyncId(): void;
|
|
24
|
+
startSpan<T>(_name: string, _op: string, fn: () => T): T;
|
|
25
|
+
startSpanAsync<T>(_name: string, _op: string, fn: () => Promise<T>): Promise<T>;
|
|
26
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sync-engine compatibility adapter for the transaction layer's narrow claim
|
|
3
|
+
* log. The core log knows only claim/conflict events; this subclass supplies
|
|
4
|
+
* inert implementations for the client lifecycle hooks required by
|
|
5
|
+
* `ObservabilityProvider`, preserving `Ablo({ observability: new ClaimLog() })`
|
|
6
|
+
* without leaking bootstrap, storage, or WebSocket vocabulary into the core.
|
|
7
|
+
*/
|
|
8
|
+
import { ClaimLog as CoordinationClaimLog } from '../transaction/coordination/trace.js';
|
|
9
|
+
export { formatClaim, formatConflict } from '../transaction/coordination/trace.js';
|
|
10
|
+
export class ClaimLog extends CoordinationClaimLog {
|
|
11
|
+
// Client-lifecycle hooks the claim log has no notion of. Every body below is
|
|
12
|
+
// deliberately inert: the log records claims and conflicts, nothing else.
|
|
13
|
+
setContext() { }
|
|
14
|
+
setConnectionState() { }
|
|
15
|
+
breadcrumb() { }
|
|
16
|
+
captureRollback() { }
|
|
17
|
+
captureMutationFailure() { }
|
|
18
|
+
captureBootstrapFailure() { }
|
|
19
|
+
captureReconciliation() { }
|
|
20
|
+
captureDeltaRetryExhausted() { }
|
|
21
|
+
captureWebSocketError() { }
|
|
22
|
+
captureSelfHealing() { }
|
|
23
|
+
captureCommitZeroSyncId() { }
|
|
24
|
+
// Spans run their body untimed; the trailing `attributes` argument callers
|
|
25
|
+
// pass has nowhere to go here, so it is left off the signature.
|
|
26
|
+
startSpan(_name, _op, fn) {
|
|
27
|
+
return fn();
|
|
28
|
+
}
|
|
29
|
+
startSpanAsync(_name, _op, fn) {
|
|
30
|
+
return fn();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -1,15 +1 @@
|
|
|
1
|
-
|
|
2
|
-
* The `@abloatai/ablo/coordination` entry point. It re-exports the wire
|
|
3
|
-
* schemas and inferred types for the three coordination layers: presence (who
|
|
4
|
-
* is currently active), claims (taking exclusive hold of a target before
|
|
5
|
-
* writing it), and stale-context guards (rejecting a write that was based on an
|
|
6
|
-
* out-of-date read). The definitions themselves live in the sibling schema
|
|
7
|
-
* module.
|
|
8
|
-
*
|
|
9
|
-
* Exports are listed by name rather than re-exported wholesale, so every symbol
|
|
10
|
-
* that becomes part of this package's public API is a deliberate choice.
|
|
11
|
-
*/
|
|
12
|
-
export { targetRangeSchema, participantKindSchema, wireParticipantKindSchema, participantKindFromWire, descriptionFromMeta, targetRefSchema, onStaleModeSchema, writeGuardSchema, staleNotificationSchema, readDependencySchema, trackDependencySchema, claimStatusSchema, wireClaimSummarySchema, claimErrorSchema, wireClaimSchema, claimRejectionSchema, modelTargetSchema, modelClaimSchema, claimBeginPayloadSchema, claimAbandonPayloadSchema, claimReorderPayloadSchema, claimHeartbeatPayloadSchema, claimHeartbeatAckPayloadSchema, claimHeartbeatBatchPayloadSchema, claimHeartbeatBatchAckPayloadSchema, updateSubscriptionPayloadSchema, subscriptionAckPayloadSchema, commitOperationTypeSchema, commitOperationSchema, presenceKindSchema, presenceActivitySchema, presenceUpdateFrameSchema, } from './schema.js';
|
|
13
|
-
export { defaultPolicy, capabilityPreemptPolicy, interpretConflictAxis } from '../policy/types.js';
|
|
14
|
-
export type { Conflict, ConflictAxis, ConflictDecision, ConflictKind, ConflictOperation, ConflictPolicy, StaleContextConflict, ClaimHeldConflict, } from '../policy/types.js';
|
|
15
|
-
export type { TargetRange, ParticipantKind, TargetRef, OnStaleMode, WriteGuard, StaleNotification, ReadDependency, TrackDependency, ClaimStatus, WireClaimSummary, ClaimError, WireClaim, ClaimRejection, ModelTarget, ModelClaim, ClaimBeginPayload, ClaimAbandonPayload, ClaimReorderPayload, ClaimHeartbeatPayload, ClaimHeartbeatAckPayload, ClaimHeartbeatBatchPayload, ClaimHeartbeatBatchAckPayload, UpdateSubscriptionPayload, SubscriptionAckPayload, CommitOperationType, CommitOperation, AnyCommitOperation, PresenceKind, PresenceActivity, PresenceUpdateFrame, } from './schema.js';
|
|
1
|
+
export * from '../transaction/coordination/index.js';
|
|
@@ -1,31 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
*
|
|
9
|
-
* Exports are listed by name rather than re-exported wholesale, so every symbol
|
|
10
|
-
* that becomes part of this package's public API is a deliberate choice.
|
|
11
|
-
*/
|
|
12
|
-
// Runtime schemas + helpers.
|
|
13
|
-
export {
|
|
14
|
-
// Shared primitives
|
|
15
|
-
targetRangeSchema, participantKindSchema, wireParticipantKindSchema, participantKindFromWire, descriptionFromMeta, targetRefSchema,
|
|
16
|
-
// Layer 3 — optimistic stale-context
|
|
17
|
-
onStaleModeSchema, writeGuardSchema, staleNotificationSchema, readDependencySchema, trackDependencySchema,
|
|
18
|
-
// Layer 2 — pessimistic claim / claim-lease
|
|
19
|
-
claimStatusSchema, wireClaimSummarySchema, claimErrorSchema, wireClaimSchema, claimRejectionSchema, modelTargetSchema, modelClaimSchema, claimBeginPayloadSchema, claimAbandonPayloadSchema, claimReorderPayloadSchema, claimHeartbeatPayloadSchema, claimHeartbeatAckPayloadSchema, claimHeartbeatBatchPayloadSchema, claimHeartbeatBatchAckPayloadSchema,
|
|
20
|
-
// Read interest — area-of-interest navigation
|
|
21
|
-
updateSubscriptionPayloadSchema, subscriptionAckPayloadSchema,
|
|
22
|
-
// Commit operation — carries the optimistic write-guard
|
|
23
|
-
commitOperationTypeSchema, commitOperationSchema,
|
|
24
|
-
// Layer 1 — presence
|
|
25
|
-
presenceKindSchema, presenceActivitySchema, presenceUpdateFrameSchema, } from './schema.js';
|
|
26
|
-
// Conflict-policy runtime — the engine detects a conflict, and the policy
|
|
27
|
-
// decides what to do about it. These are re-exported here so that server-side
|
|
28
|
-
// code can reach both the coordination vocabulary and its default conflict
|
|
29
|
-
// resolution from this one subpath, without importing the full client from the
|
|
30
|
-
// package root.
|
|
31
|
-
export { defaultPolicy, capabilityPreemptPolicy, interpretConflictAxis } from '../policy/types.js';
|
|
1
|
+
// Moved to @ablo/transaction (ADR 0013 — the settlement core extraction).
|
|
2
|
+
// This shim re-exports it at the original path so in-package importers of
|
|
3
|
+
// `coordination/index.js` keep working; rewire to `@ablo/transaction/coordination`
|
|
4
|
+
// and delete this shim once the core package is fully wired.
|
|
5
|
+
//
|
|
6
|
+
// Line comments on purpose: tsc copies a leading JSDoc block into the
|
|
7
|
+
// published `.d.ts`, and this note names a package npm has never heard of.
|
|
8
|
+
export * from '../transaction/coordination/index.js';
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { getContext } from '../context.js';
|
|
9
9
|
import { openIDBWithTimeout, deleteIDBWithTimeout, IDBOpenTimeoutError, } from './openIDBWithTimeout.js';
|
|
10
|
-
import { AbloConnectionError } from '../errors.js';
|
|
10
|
+
import { AbloConnectionError } from '../transaction/errors.js';
|
|
11
11
|
import { getActiveRegistry, hasActiveRegistry } from '../ModelRegistry.js';
|
|
12
12
|
/**
|
|
13
13
|
* DatabaseManager - Manages Ablo's two-tier database architecture
|
package/dist/core/QueryView.d.ts
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import { type IObservableArray } from 'mobx';
|
|
12
12
|
import { type Model } from '../Model.js';
|
|
13
|
-
import { ModelScope } from '../types/index.js';
|
|
13
|
+
import { ModelScope } from '../transaction/types/index.js';
|
|
14
14
|
import type { ViewRegistry } from './ViewRegistry.js';
|
|
15
15
|
import type { IncrementalView } from './queryUtils.js';
|
|
16
16
|
/**
|