@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
package/dist/schema/index.js
CHANGED
|
@@ -23,31 +23,27 @@
|
|
|
23
23
|
// Re-export Zod for convenience (consumers can also import directly)
|
|
24
24
|
export { z } from 'zod';
|
|
25
25
|
// Field helpers (optional convenience wrappers around Zod)
|
|
26
|
-
export { field, indexed, getFieldMeta } from '
|
|
26
|
+
export { field, indexed, getFieldMeta } from '../transaction/schema/field.js';
|
|
27
27
|
// Relation builders
|
|
28
|
-
export { relation } from '
|
|
28
|
+
export { relation } from '../transaction/schema/relation.js';
|
|
29
29
|
// Tenancy — the single source of truth for how a model's rows are tenant-scoped.
|
|
30
|
-
export { tenancySchema, scopedViaRefSchema, policyInputSchema, resolvePolicy, resolveTenancy, tenancyColumn, DEFAULT_ORG_COLUMN, } from '
|
|
30
|
+
export { tenancySchema, scopedViaRefSchema, policyInputSchema, resolvePolicy, resolveTenancy, tenancyColumn, DEFAULT_ORG_COLUMN, } from '../transaction/schema/tenancy.js';
|
|
31
31
|
// Model residency — which database a model's rows live in (`tenant` can be a
|
|
32
32
|
// customer's own database, `control` is Ablo's). A sibling axis to `tenancy`.
|
|
33
|
-
export { residencySchema, DEFAULT_RESIDENCY,
|
|
34
|
-
// Deliberate back-compat re-export of the deprecated aliases:
|
|
35
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
36
|
-
planeSchema,
|
|
37
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
38
|
-
DEFAULT_PLANE, } from './residency.js';
|
|
33
|
+
export { residencySchema, DEFAULT_RESIDENCY, } from '../transaction/schema/residency.js';
|
|
39
34
|
// The stored `sync_deltas` row, described as Zod schemas grouped by subsystem and by
|
|
40
35
|
// which database the columns live in.
|
|
41
|
-
export { syncDeltaCoreSchema, deltaAttributionSchema,
|
|
42
|
-
// Deliberate back-compat re-export; physical storage is the precise name.
|
|
43
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
44
|
-
DELTA_RESIDENCY, } from './syncDeltaRow.js';
|
|
36
|
+
export { syncDeltaCoreSchema, deltaAttributionSchema, syncDeltaRowSchema, participantKindSchema, confirmationStateSchema, backfillProvenanceSchema, DELTA_DATA_CLASSIFICATION, DELTA_PHYSICAL_STORAGE, } from './syncDeltaRow.js';
|
|
45
37
|
// The wire delta contract — the server-to-client projection of the stored row.
|
|
46
38
|
// Both the client SDK and the server derive their `SyncDelta` type from these with
|
|
47
39
|
// `z.infer`, so the two ends cannot drift apart.
|
|
48
|
-
export { syncDeltaActionSchema, wireDeltaDataSchema, participantRefSchema, syncDeltaWireCoreSchema, clientSyncDeltaSchema, serverSyncDeltaSchema, } from '../wire/delta.js';
|
|
40
|
+
export { syncDeltaActionSchema, wireDeltaDataSchema, participantRefSchema, syncDeltaWireCoreSchema, clientSyncDeltaSchema, serverSyncDeltaSchema, } from '../transaction/wire/delta.js';
|
|
49
41
|
// Model builder
|
|
50
|
-
export { model, scopeKindOf,
|
|
42
|
+
export { model, scopeKindOf,
|
|
43
|
+
// Both meanings: the value a tool enumerates to learn the strategies, and the
|
|
44
|
+
// type a `load` option is checked against. `loadsAtBootstrap` is the one
|
|
45
|
+
// predicate both the client subscription and the server payload ask.
|
|
46
|
+
LoadStrategy, DEFAULT_LOAD_STRATEGY, loadsAtBootstrap, } from '../transaction/schema/model.js';
|
|
51
47
|
// Coordination authoring helpers for the `conflict` axis — composable disposition
|
|
52
48
|
// functions plus a combinator that merges them.
|
|
53
49
|
export { coordination, humansOverwrite, humansReject, humansNotify, agentsOverwrite, agentsReject, agentsNotify, systemOverwrite, systemReject, systemNotify, } from './coordination.js';
|
|
@@ -56,9 +52,9 @@ export { coordination, humansOverwrite, humansReject, humansNotify, agentsOverwr
|
|
|
56
52
|
// sensible defaults for everything else.
|
|
57
53
|
export { mutable, readOnly } from './sugar.js';
|
|
58
54
|
// Schema definition + type inference
|
|
59
|
-
export { defineSchema, composeIdentitySyncGroups, composeEntitySyncGroups, intersectRequestedWithAllowed, identityRole, entityRole, extractIdentityIds, extractEntityIds, syncGroup, syncGroupSchema, syncGroupInputSchema, isSyncGroupInput, identityRoleSchema, entityRoleSchema, roleSchema, roleSourceSchema, scopeSchema, grantsRefSchema, groupsInputSchema, RESERVED_SESSION_SETTINGS, } from '
|
|
55
|
+
export { defineSchema, composeIdentitySyncGroups, composeEntitySyncGroups, intersectRequestedWithAllowed, identityRole, entityRole, extractIdentityIds, extractEntityIds, syncGroup, syncGroupSchema, syncGroupInputSchema, isSyncGroupInput, identityRoleSchema, entityRoleSchema, roleSchema, roleSourceSchema, scopeSchema, grantsRefSchema, groupsInputSchema, RESERVED_SESSION_SETTINGS, } from '../transaction/schema/schema.js';
|
|
60
56
|
// Schema ⇄ JSON — serialize a schema for transport and rebuild it on the far side.
|
|
61
|
-
export { serializeSchema, parseSchema, toSchemaJSON, fromSchemaJSON, schemaHash, } from './serialize.js';
|
|
57
|
+
export { serializeSchema, parseSchema, toSchemaJSON, fromSchemaJSON, schemaHash, modelHash, } from './serialize.js';
|
|
62
58
|
// Schema projection — derive an app's subset from one canonical schema.
|
|
63
59
|
export { selectModels, omitModels } from './select.js';
|
|
64
60
|
// Schema → Postgres DDL — shared by the host implementation and the command-line tools.
|
|
@@ -73,4 +69,8 @@ export { diffSchema, classifyMigration, classifyCast, isAutoApplicable, isBlocke
|
|
|
73
69
|
export { generateTypes } from './generate.js';
|
|
74
70
|
// Query definition DSL + type inference
|
|
75
71
|
export { query, defineQueries, } from './queries.js';
|
|
76
|
-
|
|
72
|
+
// The OpenAPI generator describes the language-agnostic `/v1` surface — the
|
|
73
|
+
// primitive itself, which a Python or Go caller consumes with no TypeScript
|
|
74
|
+
// anywhere — so it lives in the settlement core (ADR 0016). Re-exported here so
|
|
75
|
+
// the `@abloatai/ablo/schema` import path keeps resolving.
|
|
76
|
+
export { abloOpenApi, schemaToOpenApi } from '../transaction/schema/openapi.js';
|
package/dist/schema/queries.d.ts
CHANGED
|
@@ -13,27 +13,27 @@
|
|
|
13
13
|
* } from '@abloatai/ablo/schema';
|
|
14
14
|
*
|
|
15
15
|
* const schema = defineSchema({
|
|
16
|
-
*
|
|
17
|
-
* {
|
|
18
|
-
* {
|
|
19
|
-
* { load: 'lazy', typename: '
|
|
16
|
+
* block: model(
|
|
17
|
+
* { sectionId: z.string(), type: z.string() },
|
|
18
|
+
* { section: relation.belongsTo('sections', 'sectionId') },
|
|
19
|
+
* { load: 'lazy', typename: 'Block', persist: {} },
|
|
20
20
|
* ),
|
|
21
21
|
* });
|
|
22
22
|
*
|
|
23
23
|
* const queries = defineQueries(schema, {
|
|
24
|
-
*
|
|
25
|
-
* input: z.object({
|
|
26
|
-
* returns: '
|
|
24
|
+
* blocksByReport: query({
|
|
25
|
+
* input: z.object({ reportId: z.string() }),
|
|
26
|
+
* returns: 'block', // ← type-checked against schema.models
|
|
27
27
|
* }),
|
|
28
28
|
* });
|
|
29
29
|
*
|
|
30
|
-
* type Input = InferQueryInput<typeof queries.queries.
|
|
31
|
-
* // ^? {
|
|
30
|
+
* type Input = InferQueryInput<typeof queries.queries.blocksByReport>;
|
|
31
|
+
* // ^? { reportId: string }
|
|
32
32
|
* type Result = InferQueryResult<
|
|
33
33
|
* typeof schema,
|
|
34
|
-
* typeof queries.queries.
|
|
34
|
+
* typeof queries.queries.blocksByReport
|
|
35
35
|
* >;
|
|
36
|
-
* // ^? Array<
|
|
36
|
+
* // ^? Array<Block>
|
|
37
37
|
*
|
|
38
38
|
* Design notes:
|
|
39
39
|
*
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
* `schema.models[queryDef.returns]` lookup.
|
|
56
56
|
*/
|
|
57
57
|
import { z } from 'zod';
|
|
58
|
-
import type { Schema, InferModel, InferModelNames } from '
|
|
58
|
+
import type { Schema, InferModel, InferModelNames } from '../transaction/schema/schema.js';
|
|
59
59
|
/**
|
|
60
60
|
* A single query definition: a zod input shape, the schema key of the
|
|
61
61
|
* model it returns, and (after assembly) the name it was registered
|
|
@@ -97,15 +97,15 @@ interface QuerySpec<TInput extends z.ZodType, TReturns extends string> {
|
|
|
97
97
|
* Define a query.
|
|
98
98
|
*
|
|
99
99
|
* `TReturns` is a `const` generic so TypeScript preserves the literal
|
|
100
|
-
* type of the `returns` value at call time (e.g., `'
|
|
100
|
+
* type of the `returns` value at call time (e.g., `'block'`
|
|
101
101
|
* instead of widening to `string`). This is what lets `defineQueries`
|
|
102
102
|
* type-check `returns` against the schema's model keys without
|
|
103
103
|
* requiring the consumer to write `as const` manually.
|
|
104
104
|
*
|
|
105
105
|
* ```ts
|
|
106
|
-
* const
|
|
107
|
-
* input: z.object({
|
|
108
|
-
* returns: '
|
|
106
|
+
* const blocksByReport = query({
|
|
107
|
+
* input: z.object({ reportId: z.string() }),
|
|
108
|
+
* returns: 'block',
|
|
109
109
|
* });
|
|
110
110
|
* ```
|
|
111
111
|
*/
|
|
@@ -133,8 +133,8 @@ export interface Queries<S extends Schema, Q extends QueryRecord<S>> {
|
|
|
133
133
|
* Infer the input type of a query from its zod schema.
|
|
134
134
|
*
|
|
135
135
|
* ```ts
|
|
136
|
-
* type Input = InferQueryInput<typeof queries.queries.
|
|
137
|
-
* // {
|
|
136
|
+
* type Input = InferQueryInput<typeof queries.queries.blocksByReport>;
|
|
137
|
+
* // { reportId: string }
|
|
138
138
|
* ```
|
|
139
139
|
*/
|
|
140
140
|
export type InferQueryInput<Q extends QueryDef> = z.infer<Q['input']>;
|
|
@@ -151,9 +151,9 @@ export type InferQueryInput<Q extends QueryDef> = z.infer<Q['input']>;
|
|
|
151
151
|
* ```ts
|
|
152
152
|
* type Result = InferQueryResult<
|
|
153
153
|
* typeof schema,
|
|
154
|
-
* typeof queries.queries.
|
|
154
|
+
* typeof queries.queries.blocksByReport
|
|
155
155
|
* >;
|
|
156
|
-
* // Array<
|
|
156
|
+
* // Array<Block>
|
|
157
157
|
* ```
|
|
158
158
|
*/
|
|
159
159
|
export type InferQueryResult<S extends Schema, Q extends QueryDef> = Q extends QueryDef<z.ZodType, infer R> ? R extends InferModelNames<S> ? InferModel<S, R>[] : never : never;
|
|
@@ -176,23 +176,23 @@ export type InferQueryResult<S extends Schema, Q extends QueryDef> = Q extends Q
|
|
|
176
176
|
* exist" error deep inside the loader.
|
|
177
177
|
*
|
|
178
178
|
* Each resolved query gets its `name` populated from the record key:
|
|
179
|
-
* `queries.
|
|
179
|
+
* `queries.blocksByReport.name === 'blocksByReport'`. Dispatch and
|
|
180
180
|
* lookup code read `queryDef.name` directly rather than re-deriving it from
|
|
181
181
|
* the surrounding record.
|
|
182
182
|
*
|
|
183
183
|
* ```ts
|
|
184
184
|
* const schema = defineSchema({
|
|
185
|
-
*
|
|
186
|
-
* {
|
|
185
|
+
* block: model(
|
|
186
|
+
* { sectionId: z.string() },
|
|
187
187
|
* {},
|
|
188
|
-
* { load: 'lazy', typename: '
|
|
188
|
+
* { load: 'lazy', typename: 'Block', persist: {} },
|
|
189
189
|
* ),
|
|
190
190
|
* });
|
|
191
191
|
*
|
|
192
192
|
* const queries = defineQueries(schema, {
|
|
193
|
-
*
|
|
194
|
-
* input: z.object({
|
|
195
|
-
* returns: '
|
|
193
|
+
* blocksByReport: query({
|
|
194
|
+
* input: z.object({ reportId: z.string() }),
|
|
195
|
+
* returns: 'block', // ← type-checked
|
|
196
196
|
* }),
|
|
197
197
|
* });
|
|
198
198
|
* ```
|
package/dist/schema/queries.js
CHANGED
|
@@ -13,27 +13,27 @@
|
|
|
13
13
|
* } from '@abloatai/ablo/schema';
|
|
14
14
|
*
|
|
15
15
|
* const schema = defineSchema({
|
|
16
|
-
*
|
|
17
|
-
* {
|
|
18
|
-
* {
|
|
19
|
-
* { load: 'lazy', typename: '
|
|
16
|
+
* block: model(
|
|
17
|
+
* { sectionId: z.string(), type: z.string() },
|
|
18
|
+
* { section: relation.belongsTo('sections', 'sectionId') },
|
|
19
|
+
* { load: 'lazy', typename: 'Block', persist: {} },
|
|
20
20
|
* ),
|
|
21
21
|
* });
|
|
22
22
|
*
|
|
23
23
|
* const queries = defineQueries(schema, {
|
|
24
|
-
*
|
|
25
|
-
* input: z.object({
|
|
26
|
-
* returns: '
|
|
24
|
+
* blocksByReport: query({
|
|
25
|
+
* input: z.object({ reportId: z.string() }),
|
|
26
|
+
* returns: 'block', // ← type-checked against schema.models
|
|
27
27
|
* }),
|
|
28
28
|
* });
|
|
29
29
|
*
|
|
30
|
-
* type Input = InferQueryInput<typeof queries.queries.
|
|
31
|
-
* // ^? {
|
|
30
|
+
* type Input = InferQueryInput<typeof queries.queries.blocksByReport>;
|
|
31
|
+
* // ^? { reportId: string }
|
|
32
32
|
* type Result = InferQueryResult<
|
|
33
33
|
* typeof schema,
|
|
34
|
-
* typeof queries.queries.
|
|
34
|
+
* typeof queries.queries.blocksByReport
|
|
35
35
|
* >;
|
|
36
|
-
* // ^? Array<
|
|
36
|
+
* // ^? Array<Block>
|
|
37
37
|
*
|
|
38
38
|
* Design notes:
|
|
39
39
|
*
|
|
@@ -55,21 +55,21 @@
|
|
|
55
55
|
* `schema.models[queryDef.returns]` lookup.
|
|
56
56
|
*/
|
|
57
57
|
import { z } from 'zod';
|
|
58
|
-
import { AbloValidationError } from '../errors.js';
|
|
58
|
+
import { AbloValidationError } from '../transaction/errors.js';
|
|
59
59
|
// ── query() factory ───────────────────────────────────────────────────────
|
|
60
60
|
/**
|
|
61
61
|
* Define a query.
|
|
62
62
|
*
|
|
63
63
|
* `TReturns` is a `const` generic so TypeScript preserves the literal
|
|
64
|
-
* type of the `returns` value at call time (e.g., `'
|
|
64
|
+
* type of the `returns` value at call time (e.g., `'block'`
|
|
65
65
|
* instead of widening to `string`). This is what lets `defineQueries`
|
|
66
66
|
* type-check `returns` against the schema's model keys without
|
|
67
67
|
* requiring the consumer to write `as const` manually.
|
|
68
68
|
*
|
|
69
69
|
* ```ts
|
|
70
|
-
* const
|
|
71
|
-
* input: z.object({
|
|
72
|
-
* returns: '
|
|
70
|
+
* const blocksByReport = query({
|
|
71
|
+
* input: z.object({ reportId: z.string() }),
|
|
72
|
+
* returns: 'block',
|
|
73
73
|
* });
|
|
74
74
|
* ```
|
|
75
75
|
*/
|
|
@@ -99,23 +99,23 @@ export function query(spec) {
|
|
|
99
99
|
* exist" error deep inside the loader.
|
|
100
100
|
*
|
|
101
101
|
* Each resolved query gets its `name` populated from the record key:
|
|
102
|
-
* `queries.
|
|
102
|
+
* `queries.blocksByReport.name === 'blocksByReport'`. Dispatch and
|
|
103
103
|
* lookup code read `queryDef.name` directly rather than re-deriving it from
|
|
104
104
|
* the surrounding record.
|
|
105
105
|
*
|
|
106
106
|
* ```ts
|
|
107
107
|
* const schema = defineSchema({
|
|
108
|
-
*
|
|
109
|
-
* {
|
|
108
|
+
* block: model(
|
|
109
|
+
* { sectionId: z.string() },
|
|
110
110
|
* {},
|
|
111
|
-
* { load: 'lazy', typename: '
|
|
111
|
+
* { load: 'lazy', typename: 'Block', persist: {} },
|
|
112
112
|
* ),
|
|
113
113
|
* });
|
|
114
114
|
*
|
|
115
115
|
* const queries = defineQueries(schema, {
|
|
116
|
-
*
|
|
117
|
-
* input: z.object({
|
|
118
|
-
* returns: '
|
|
116
|
+
* blocksByReport: query({
|
|
117
|
+
* input: z.object({ reportId: z.string() }),
|
|
118
|
+
* returns: 'block', // ← type-checked
|
|
119
119
|
* }),
|
|
120
120
|
* });
|
|
121
121
|
* ```
|
package/dist/schema/select.d.ts
CHANGED
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
* import { schema as full } from './schema';
|
|
13
13
|
* import { selectModels } from '@abloatai/ablo/schema';
|
|
14
14
|
*
|
|
15
|
-
* // Subscribe to identity and
|
|
16
|
-
* export const schema = selectModels(full, ['users', 'organizations', '
|
|
15
|
+
* // Subscribe to identity and document content only.
|
|
16
|
+
* export const schema = selectModels(full, ['users', 'organizations', 'workspaces', 'folders', 'files']);
|
|
17
17
|
* ```
|
|
18
18
|
*
|
|
19
19
|
* Relations whose target falls outside the selected set are dropped, so the
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
* scope-inheritance throws instead, because silently losing it would mis-route
|
|
22
22
|
* a record's fan-out — the selected set must be closed under `parent` edges.
|
|
23
23
|
*/
|
|
24
|
-
import type { Schema, SchemaRecord } from '
|
|
24
|
+
import type { Schema, SchemaRecord } from '../transaction/schema/schema.js';
|
|
25
25
|
export declare function selectModels<S extends SchemaRecord, K extends keyof S & string>(schema: Schema<S>, keys: readonly K[]): Schema<Pick<S, K>>;
|
|
26
26
|
/**
|
|
27
27
|
* `omitModels` is `selectModels` from the other side: keep every model EXCEPT
|
package/dist/schema/select.js
CHANGED
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
* import { schema as full } from './schema';
|
|
13
13
|
* import { selectModels } from '@abloatai/ablo/schema';
|
|
14
14
|
*
|
|
15
|
-
* // Subscribe to identity and
|
|
16
|
-
* export const schema = selectModels(full, ['users', 'organizations', '
|
|
15
|
+
* // Subscribe to identity and document content only.
|
|
16
|
+
* export const schema = selectModels(full, ['users', 'organizations', 'workspaces', 'folders', 'files']);
|
|
17
17
|
* ```
|
|
18
18
|
*
|
|
19
19
|
* Relations whose target falls outside the selected set are dropped, so the
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
* scope-inheritance throws instead, because silently losing it would mis-route
|
|
22
22
|
* a record's fan-out — the selected set must be closed under `parent` edges.
|
|
23
23
|
*/
|
|
24
|
-
import { AbloValidationError } from '../errors.js';
|
|
24
|
+
import { AbloValidationError } from '../transaction/errors.js';
|
|
25
25
|
import { schemaHash } from './serialize.js';
|
|
26
26
|
export function selectModels(schema, keys) {
|
|
27
27
|
const keep = new Set(keys);
|
|
@@ -26,12 +26,12 @@
|
|
|
26
26
|
* - exact Zod refinements, which are rebuilt as permissive validators from
|
|
27
27
|
* {@link FieldMeta}; the server does no field-shape validation
|
|
28
28
|
*/
|
|
29
|
-
import type { FieldMeta } from '
|
|
30
|
-
import type { Tenancy } from '
|
|
31
|
-
import type { ModelResidency } from '
|
|
32
|
-
import type { GrantsRef, LoadStrategy, PersistOptions, AutoFillRule, ConflictAxis } from '
|
|
33
|
-
import type { RelationType } from '
|
|
34
|
-
import { type Schema, type IdentityRole, type EntityRole, type SessionSettings } from '
|
|
29
|
+
import type { FieldMeta } from '../transaction/schema/field.js';
|
|
30
|
+
import type { Tenancy } from '../transaction/schema/tenancy.js';
|
|
31
|
+
import type { ModelResidency } from '../transaction/schema/residency.js';
|
|
32
|
+
import type { GrantsRef, LoadStrategy, PersistOptions, AutoFillRule, ConflictAxis } from '../transaction/schema/model.js';
|
|
33
|
+
import type { RelationType } from '../transaction/schema/relation.js';
|
|
34
|
+
import { type Schema, type IdentityRole, type EntityRole, type SessionSettings } from '../transaction/schema/schema.js';
|
|
35
35
|
/** Current schema-JSON envelope version. Bump this on a breaking change to the
|
|
36
36
|
* JSON shape itself — not to a user's schema. */
|
|
37
37
|
declare const SCHEMA_JSON_VERSION: 3;
|
|
@@ -103,4 +103,13 @@ export declare function parseSchema(json: string): Schema;
|
|
|
103
103
|
* active schema hash. Not a security primitive.
|
|
104
104
|
*/
|
|
105
105
|
export declare function schemaHash(schema: Schema): string;
|
|
106
|
+
/**
|
|
107
|
+
* Content hash of ONE serialized model — the unit of the semantic drift check.
|
|
108
|
+
* Two schemas agree on a model exactly when these match, which is what lets a
|
|
109
|
+
* client compare only the models it declares instead of welding itself to the
|
|
110
|
+
* whole-schema hash (where any additive push reads as drift). Computed over the
|
|
111
|
+
* model's `SchemaJSON` entry with the same canonicalization and hash as
|
|
112
|
+
* {@link schemaHash}, on both the client and the server's `GET /api/schema`.
|
|
113
|
+
*/
|
|
114
|
+
export declare function modelHash(modelJson: unknown): string;
|
|
106
115
|
export {};
|
package/dist/schema/serialize.js
CHANGED
|
@@ -27,8 +27,8 @@
|
|
|
27
27
|
* {@link FieldMeta}; the server does no field-shape validation
|
|
28
28
|
*/
|
|
29
29
|
import { z } from 'zod';
|
|
30
|
-
import { AbloValidationError } from '../errors.js';
|
|
31
|
-
import { baseFieldsSchema, } from '
|
|
30
|
+
import { AbloValidationError } from '../transaction/errors.js';
|
|
31
|
+
import { baseFieldsSchema, } from '../transaction/schema/schema.js';
|
|
32
32
|
/** Current schema-JSON envelope version. Bump this on a breaking change to the
|
|
33
33
|
* JSON shape itself — not to a user's schema. */
|
|
34
34
|
const SCHEMA_JSON_VERSION = 3;
|
|
@@ -227,7 +227,21 @@ export function parseSchema(json) {
|
|
|
227
227
|
* active schema hash. Not a security primitive.
|
|
228
228
|
*/
|
|
229
229
|
export function schemaHash(schema) {
|
|
230
|
-
|
|
230
|
+
return fnv1a(canonicalJson(toSchemaJSON(schema)));
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Content hash of ONE serialized model — the unit of the semantic drift check.
|
|
234
|
+
* Two schemas agree on a model exactly when these match, which is what lets a
|
|
235
|
+
* client compare only the models it declares instead of welding itself to the
|
|
236
|
+
* whole-schema hash (where any additive push reads as drift). Computed over the
|
|
237
|
+
* model's `SchemaJSON` entry with the same canonicalization and hash as
|
|
238
|
+
* {@link schemaHash}, on both the client and the server's `GET /api/schema`.
|
|
239
|
+
*/
|
|
240
|
+
export function modelHash(modelJson) {
|
|
241
|
+
return fnv1a(canonicalJson(modelJson));
|
|
242
|
+
}
|
|
243
|
+
/** FNV-1a over an already-canonical string — shared by both hashes above. */
|
|
244
|
+
function fnv1a(canonical) {
|
|
231
245
|
let h = 0x811c9dc5;
|
|
232
246
|
for (let i = 0; i < canonical.length; i++) {
|
|
233
247
|
h ^= canonical.charCodeAt(i);
|
package/dist/schema/sugar.d.ts
CHANGED
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
* ```
|
|
24
24
|
*/
|
|
25
25
|
import type { z } from 'zod';
|
|
26
|
-
import { type ModelDef, type ModelOptions, type ComputedRecord, type RelationRecord } from '
|
|
26
|
+
import { type ModelDef, type ModelOptions, type ComputedRecord, type RelationRecord } from '../transaction/schema/model.js';
|
|
27
27
|
/**
|
|
28
28
|
* Options accepted by every sugar verb. A strict subset of
|
|
29
29
|
* {@link ModelOptions} — anything the verb infers (`mutable`, `load`,
|
|
@@ -79,13 +79,11 @@ export interface SugarOptions<R extends RelationRecord = RelationRecord, C exten
|
|
|
79
79
|
* Pick the load suffix by data-access pattern:
|
|
80
80
|
* - `.instant` — small, always-needed (Theme, Layout, StatusGroup)
|
|
81
81
|
* - `.lazy` — large collections fetched on first query
|
|
82
|
-
* (
|
|
83
|
-
* - `.manual` — never auto-loaded; explicit queries only
|
|
82
|
+
* (Block, Message, Task)
|
|
84
83
|
*/
|
|
85
84
|
export declare const mutable: {
|
|
86
85
|
instant: <Shape extends z.ZodRawShape, R extends RelationRecord = Record<string, never>, C extends ComputedRecord = Record<string, never>>(shape: Shape, opts?: SugarOptions<R, C>) => ModelDef<Shape, R, C>;
|
|
87
86
|
lazy: <Shape extends z.ZodRawShape, R extends RelationRecord = Record<string, never>, C extends ComputedRecord = Record<string, never>>(shape: Shape, opts?: SugarOptions<R, C>) => ModelDef<Shape, R, C>;
|
|
88
|
-
manual: <Shape extends z.ZodRawShape, R extends RelationRecord = Record<string, never>, C extends ComputedRecord = Record<string, never>>(shape: Shape, opts?: SugarOptions<R, C>) => ModelDef<Shape, R, C>;
|
|
89
87
|
};
|
|
90
88
|
/**
|
|
91
89
|
* Server-managed entities. `readOnly.*` means clients subscribe to
|
|
@@ -102,9 +100,10 @@ export declare const readOnly: {
|
|
|
102
100
|
instant: <Shape extends z.ZodRawShape, R extends RelationRecord = Record<string, never>, C extends ComputedRecord = Record<string, never>>(shape: Shape, opts?: SugarOptions<R, C>) => ModelDef<Shape, R, C>;
|
|
103
101
|
lazy: <Shape extends z.ZodRawShape, R extends RelationRecord = Record<string, never>, C extends ComputedRecord = Record<string, never>>(shape: Shape, opts?: SugarOptions<R, C>) => ModelDef<Shape, R, C>;
|
|
104
102
|
/**
|
|
105
|
-
* Internal-only:
|
|
106
|
-
* strongest safety posture — use for tables the SDK must know about
|
|
107
|
-
*
|
|
103
|
+
* Internal-only: kept out of bootstrap and never written by clients. The
|
|
104
|
+
* strongest safety posture — use for tables the SDK must know about (for type
|
|
105
|
+
* inference) but that no client should be able to write. Rows still reach a
|
|
106
|
+
* client that reads the model, so this is a write boundary, not a read one.
|
|
108
107
|
*/
|
|
109
108
|
internal: <Shape extends z.ZodRawShape, R extends RelationRecord = Record<string, never>, C extends ComputedRecord = Record<string, never>>(shape: Shape, opts?: SugarOptions<R, C>) => ModelDef<Shape, R, C>;
|
|
110
109
|
};
|
package/dist/schema/sugar.js
CHANGED
|
@@ -22,11 +22,10 @@
|
|
|
22
22
|
* }),
|
|
23
23
|
* ```
|
|
24
24
|
*/
|
|
25
|
-
import { model, } from '
|
|
25
|
+
import { model, } from '../transaction/schema/model.js';
|
|
26
26
|
/** Internal helper — builds a ModelDef with baseline safety+load flags applied. */
|
|
27
27
|
function build(shape, opts, baseline) {
|
|
28
|
-
return model(shape, (opts?.relations ?? {}),
|
|
29
|
-
mutable: baseline.mutable,
|
|
28
|
+
return model(shape, { relations: (opts?.relations ?? {}), mutable: baseline.mutable,
|
|
30
29
|
load: baseline.load,
|
|
31
30
|
lazyObservable: opts?.lazyObservable ?? baseline.lazyObservable,
|
|
32
31
|
typename: opts?.typename,
|
|
@@ -36,8 +35,7 @@ function build(shape, opts, baseline) {
|
|
|
36
35
|
bootstrapLimit: opts?.bootstrapLimit,
|
|
37
36
|
bootstrapOrderBy: opts?.bootstrapOrderBy,
|
|
38
37
|
persist: opts?.persist,
|
|
39
|
-
computed: opts?.computed,
|
|
40
|
-
});
|
|
38
|
+
computed: opts?.computed, });
|
|
41
39
|
}
|
|
42
40
|
/**
|
|
43
41
|
* Client-writable entities. `mutable.*` is the opt-in signal for wire
|
|
@@ -47,8 +45,7 @@ function build(shape, opts, baseline) {
|
|
|
47
45
|
* Pick the load suffix by data-access pattern:
|
|
48
46
|
* - `.instant` — small, always-needed (Theme, Layout, StatusGroup)
|
|
49
47
|
* - `.lazy` — large collections fetched on first query
|
|
50
|
-
* (
|
|
51
|
-
* - `.manual` — never auto-loaded; explicit queries only
|
|
48
|
+
* (Block, Message, Task)
|
|
52
49
|
*/
|
|
53
50
|
export const mutable = {
|
|
54
51
|
instant: (shape, opts) =>
|
|
@@ -56,7 +53,6 @@ export const mutable = {
|
|
|
56
53
|
// `lazyObservable: false` only for very large read-only list models.
|
|
57
54
|
build(shape, opts, { mutable: true, load: 'instant', lazyObservable: true }),
|
|
58
55
|
lazy: (shape, opts) => build(shape, opts, { mutable: true, load: 'lazy', lazyObservable: true }),
|
|
59
|
-
manual: (shape, opts) => build(shape, opts, { mutable: true, load: 'manual', lazyObservable: true }),
|
|
60
56
|
};
|
|
61
57
|
/**
|
|
62
58
|
* Server-managed entities. `readOnly.*` means clients subscribe to
|
|
@@ -78,9 +74,10 @@ export const readOnly = {
|
|
|
78
74
|
build(shape, opts, { mutable: false, load: 'instant', lazyObservable: true }),
|
|
79
75
|
lazy: (shape, opts) => build(shape, opts, { mutable: false, load: 'lazy', lazyObservable: true }),
|
|
80
76
|
/**
|
|
81
|
-
* Internal-only:
|
|
82
|
-
* strongest safety posture — use for tables the SDK must know about
|
|
83
|
-
*
|
|
77
|
+
* Internal-only: kept out of bootstrap and never written by clients. The
|
|
78
|
+
* strongest safety posture — use for tables the SDK must know about (for type
|
|
79
|
+
* inference) but that no client should be able to write. Rows still reach a
|
|
80
|
+
* client that reads the model, so this is a write boundary, not a read one.
|
|
84
81
|
*/
|
|
85
|
-
internal: (shape, opts) => build(shape, opts, { mutable: false, load: '
|
|
82
|
+
internal: (shape, opts) => build(shape, opts, { mutable: false, load: 'lazy', lazyObservable: true }),
|
|
86
83
|
};
|
|
@@ -1,154 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* - {@link syncDeltaCoreSchema} — the sync-protocol slice: everything a client
|
|
7
|
-
* needs to reconstruct the change, plus the tenant key. This is a portable
|
|
8
|
-
* payload shape; it is not a statement that the row is physically stored in
|
|
9
|
-
* the customer's database.
|
|
10
|
-
* - {@link deltaAttributionSchema} — who made the change, and on whose authority.
|
|
11
|
-
* - {@link deltaProvenanceSchema} — which AI task, if any, produced it.
|
|
12
|
-
*
|
|
13
|
-
* {@link syncDeltaRowSchema} composes all three into the full stored row.
|
|
14
|
-
* {@link DELTA_DATA_CLASSIFICATION} states which slices contain customer data,
|
|
15
|
-
* while {@link DELTA_PHYSICAL_STORAGE} states where the runtime persists them.
|
|
16
|
-
* Keeping those axes separate prevents a portable schema slice from being cited
|
|
17
|
-
* incorrectly as a physical-residency guarantee.
|
|
18
|
-
*
|
|
19
|
-
* This is the stored shape. The delta broadcast to clients is a narrower projection
|
|
20
|
-
* of it — see {@link import('../wire/delta.js').syncDeltaWireCoreSchema} — and
|
|
21
|
-
* the field names here mirror those on that wire delta.
|
|
2
|
+
* Compatibility entry point for the durable `sync_deltas` row contract, which
|
|
3
|
+
* is owned by the transaction layer. The schema barrel continues to re-export
|
|
4
|
+
* this path so existing `@abloatai/ablo/schema` consumers do not change.
|
|
22
5
|
*/
|
|
23
|
-
|
|
24
|
-
export { participantKindSchema, confirmationStateSchema } from '../wire/delta.js';
|
|
25
|
-
export type { ParticipantKind, ConfirmationState } from '../wire/delta.js';
|
|
26
|
-
/** `backfill_provenance` */
|
|
27
|
-
export declare const backfillProvenanceSchema: z.ZodEnum<{
|
|
28
|
-
unknown: "unknown";
|
|
29
|
-
exact: "exact";
|
|
30
|
-
inferred: "inferred";
|
|
31
|
-
}>;
|
|
32
|
-
export type BackfillProvenance = z.infer<typeof backfillProvenanceSchema>;
|
|
33
|
-
/**
|
|
34
|
-
* Everything a client needs to materialize the change, plus the tenant key. This
|
|
35
|
-
* is the portable shape an authoritative WAL change or endpoint event carries.
|
|
36
|
-
* The runtime persists the resulting full row in Ablo's tenant-scoped ordered
|
|
37
|
-
* sync log; it is not written atomically with a direct application-row mutation.
|
|
38
|
-
* `id`, `createdAt`, and `syncGroups` are assigned when the source change is
|
|
39
|
-
* appended, so they are optional at the ingestion boundary.
|
|
40
|
-
*/
|
|
41
|
-
export declare const syncDeltaCoreSchema: z.ZodObject<{
|
|
42
|
-
id: z.ZodOptional<z.ZodUnion<readonly [z.ZodBigInt, z.ZodNumber]>>;
|
|
43
|
-
actionType: z.ZodString;
|
|
44
|
-
modelName: z.ZodString;
|
|
45
|
-
modelId: z.ZodString;
|
|
46
|
-
data: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
47
|
-
previousData: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
48
|
-
syncGroups: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
49
|
-
organizationId: z.ZodNullable<z.ZodString>;
|
|
50
|
-
createdAt: z.ZodOptional<z.ZodString>;
|
|
51
|
-
transactionId: z.ZodNullable<z.ZodString>;
|
|
52
|
-
sourceChangeId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
53
|
-
}, z.core.$strip>;
|
|
54
|
-
export type SyncDeltaCore = z.infer<typeof syncDeltaCoreSchema>;
|
|
55
|
-
export declare const deltaAttributionSchema: z.ZodObject<{
|
|
56
|
-
createdBy: z.ZodNullable<z.ZodString>;
|
|
57
|
-
actorId: z.ZodNullable<z.ZodString>;
|
|
58
|
-
actorKind: z.ZodNullable<z.ZodEnum<{
|
|
59
|
-
user: "user";
|
|
60
|
-
agent: "agent";
|
|
61
|
-
system: "system";
|
|
62
|
-
}>>;
|
|
63
|
-
onBehalfOfId: z.ZodNullable<z.ZodString>;
|
|
64
|
-
onBehalfOfKind: z.ZodNullable<z.ZodEnum<{
|
|
65
|
-
user: "user";
|
|
66
|
-
agent: "agent";
|
|
67
|
-
system: "system";
|
|
68
|
-
}>>;
|
|
69
|
-
capabilityId: z.ZodNullable<z.ZodString>;
|
|
70
|
-
delegationChainRootUserId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
71
|
-
confirmationState: z.ZodNullable<z.ZodEnum<{
|
|
72
|
-
auto: "auto";
|
|
73
|
-
previewed: "previewed";
|
|
74
|
-
approved: "approved";
|
|
75
|
-
required_human_approval: "required_human_approval";
|
|
76
|
-
auto_historical: "auto_historical";
|
|
77
|
-
}>>;
|
|
78
|
-
backfillProvenance: z.ZodNullable<z.ZodEnum<{
|
|
79
|
-
unknown: "unknown";
|
|
80
|
-
exact: "exact";
|
|
81
|
-
inferred: "inferred";
|
|
82
|
-
}>>;
|
|
83
|
-
}, z.core.$strip>;
|
|
84
|
-
export type DeltaAttribution = z.infer<typeof deltaAttributionSchema>;
|
|
85
|
-
export declare const deltaProvenanceSchema: z.ZodObject<{
|
|
86
|
-
causedByTaskId: z.ZodNullable<z.ZodString>;
|
|
87
|
-
}, z.core.$strip>;
|
|
88
|
-
export type DeltaProvenance = z.infer<typeof deltaProvenanceSchema>;
|
|
89
|
-
/** The complete `sync_deltas` row: core, attribution, and provenance combined. */
|
|
90
|
-
export declare const syncDeltaRowSchema: z.ZodObject<{
|
|
91
|
-
id: z.ZodOptional<z.ZodUnion<readonly [z.ZodBigInt, z.ZodNumber]>>;
|
|
92
|
-
actionType: z.ZodString;
|
|
93
|
-
modelName: z.ZodString;
|
|
94
|
-
modelId: z.ZodString;
|
|
95
|
-
data: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
96
|
-
previousData: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
97
|
-
syncGroups: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
98
|
-
organizationId: z.ZodNullable<z.ZodString>;
|
|
99
|
-
createdAt: z.ZodOptional<z.ZodString>;
|
|
100
|
-
transactionId: z.ZodNullable<z.ZodString>;
|
|
101
|
-
sourceChangeId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
102
|
-
createdBy: z.ZodNullable<z.ZodString>;
|
|
103
|
-
actorId: z.ZodNullable<z.ZodString>;
|
|
104
|
-
actorKind: z.ZodNullable<z.ZodEnum<{
|
|
105
|
-
user: "user";
|
|
106
|
-
agent: "agent";
|
|
107
|
-
system: "system";
|
|
108
|
-
}>>;
|
|
109
|
-
onBehalfOfId: z.ZodNullable<z.ZodString>;
|
|
110
|
-
onBehalfOfKind: z.ZodNullable<z.ZodEnum<{
|
|
111
|
-
user: "user";
|
|
112
|
-
agent: "agent";
|
|
113
|
-
system: "system";
|
|
114
|
-
}>>;
|
|
115
|
-
capabilityId: z.ZodNullable<z.ZodString>;
|
|
116
|
-
delegationChainRootUserId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
117
|
-
confirmationState: z.ZodNullable<z.ZodEnum<{
|
|
118
|
-
auto: "auto";
|
|
119
|
-
previewed: "previewed";
|
|
120
|
-
approved: "approved";
|
|
121
|
-
required_human_approval: "required_human_approval";
|
|
122
|
-
auto_historical: "auto_historical";
|
|
123
|
-
}>>;
|
|
124
|
-
backfillProvenance: z.ZodNullable<z.ZodEnum<{
|
|
125
|
-
unknown: "unknown";
|
|
126
|
-
exact: "exact";
|
|
127
|
-
inferred: "inferred";
|
|
128
|
-
}>>;
|
|
129
|
-
causedByTaskId: z.ZodNullable<z.ZodString>;
|
|
130
|
-
}, z.core.$strip>;
|
|
131
|
-
export type SyncDeltaRow = z.infer<typeof syncDeltaRowSchema>;
|
|
132
|
-
/** Which slices contain retained customer row data versus control metadata. */
|
|
133
|
-
export declare const DELTA_DATA_CLASSIFICATION: {
|
|
134
|
-
readonly core: "customer-data";
|
|
135
|
-
readonly attribution: "control-metadata";
|
|
136
|
-
readonly provenance: "control-metadata";
|
|
137
|
-
};
|
|
138
|
-
/**
|
|
139
|
-
* Where the current runtime physically persists each slice. All three live in
|
|
140
|
-
* Ablo's tenant-scoped `sync_deltas` log. `core` contains full post-change row
|
|
141
|
-
* payloads (and optional previous payloads), so `control` here must not be read
|
|
142
|
-
* as "metadata only."
|
|
143
|
-
*/
|
|
144
|
-
export declare const DELTA_PHYSICAL_STORAGE: {
|
|
145
|
-
readonly core: "control";
|
|
146
|
-
readonly attribution: "control";
|
|
147
|
-
readonly provenance: "control";
|
|
148
|
-
};
|
|
149
|
-
/** @deprecated Use `DELTA_PHYSICAL_STORAGE`; classification is a separate axis. */
|
|
150
|
-
export declare const DELTA_RESIDENCY: {
|
|
151
|
-
readonly core: "control";
|
|
152
|
-
readonly attribution: "control";
|
|
153
|
-
readonly provenance: "control";
|
|
154
|
-
};
|
|
6
|
+
export * from '../transaction/log/syncDeltaRow.js';
|