@abloatai/ablo 0.36.0 → 0.37.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +2 -2
- package/CHANGELOG.md +71 -2013
- package/NOTICE +2 -2
- package/README.md +25 -71
- package/assets/banner.png +0 -0
- package/dist/auth.d.ts +2 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +2 -0
- package/dist/auth.js.map +1 -0
- package/dist/client.d.ts +3 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +3 -0
- package/dist/client.js.map +1 -0
- package/dist/coordination.d.ts +2 -0
- package/dist/coordination.d.ts.map +1 -0
- package/dist/coordination.js +2 -0
- package/dist/coordination.js.map +1 -0
- package/dist/index.d.ts +3 -114
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -163
- package/dist/index.js.map +1 -0
- package/dist/react.d.ts +4 -0
- package/dist/react.d.ts.map +1 -0
- package/dist/react.js +3 -0
- package/dist/react.js.map +1 -0
- package/dist/schema.d.ts +2 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +2 -0
- package/dist/schema.js.map +1 -0
- package/dist/server.d.ts +2 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +2 -0
- package/dist/server.js.map +1 -0
- package/dist/source-conformance.d.ts +2 -0
- package/dist/source-conformance.d.ts.map +1 -0
- package/dist/source-conformance.js +2 -0
- package/dist/source-conformance.js.map +1 -0
- package/dist/source-drizzle.d.ts +2 -0
- package/dist/source-drizzle.d.ts.map +1 -0
- package/dist/source-drizzle.js +2 -0
- package/dist/source-drizzle.js.map +1 -0
- package/dist/source-kysely.d.ts +2 -0
- package/dist/source-kysely.d.ts.map +1 -0
- package/dist/source-kysely.js +2 -0
- package/dist/source-kysely.js.map +1 -0
- package/dist/source-next.d.ts +2 -0
- package/dist/source-next.d.ts.map +1 -0
- package/dist/source-next.js +2 -0
- package/dist/source-next.js.map +1 -0
- package/dist/source.d.ts +2 -0
- package/dist/source.d.ts.map +1 -0
- package/dist/source.js +2 -0
- package/dist/source.js.map +1 -0
- package/dist/wire.d.ts +2 -0
- package/dist/wire.d.ts.map +1 -0
- package/dist/wire.js +2 -0
- package/dist/wire.js.map +1 -0
- package/docs/agents.md +1 -1
- package/docs/api-keys.md +7 -6
- package/docs/api.md +10 -10
- package/docs/client-behavior.md +5 -5
- package/docs/coordination.md +52 -62
- package/docs/data-sources.md +1 -1
- package/docs/examples/agent-human.md +4 -4
- package/docs/examples/ai-sdk-tool.md +1 -1
- package/docs/examples/existing-python-backend.md +15 -4
- package/docs/examples/nextjs.md +27 -6
- package/docs/examples/server-agent.md +2 -2
- package/docs/how-it-works.md +4 -4
- package/docs/identity.md +2 -1
- package/docs/integration-guide.md +24 -13
- package/docs/internal/README.md +18 -0
- package/docs/internal/agent-fleet-coordination-design.md +171 -0
- package/docs/internal/agent-orchestration.md +58 -0
- package/docs/internal/commit-identifiers.md +91 -0
- package/docs/internal/concurrency-open-decisions.md +37 -0
- package/docs/internal/data-source-reverse-channel.md +150 -0
- package/docs/internal/per-field-conflict-detection.md +165 -0
- package/docs/internal/postgres-replication.md +64 -0
- package/docs/internal/serializable-schema.md +119 -0
- package/docs/internal/structure.md +32 -0
- package/docs/mcp.md +2 -2
- package/docs/migration.md +3 -3
- package/docs/quickstart.md +2 -2
- package/docs/react.md +5 -5
- package/docs/schema-contract.md +3 -3
- package/docs/sessions.md +91 -37
- package/examples/README.md +2 -2
- package/examples/data-source/README.md +1 -1
- package/examples/data-source/ablo-driver.ts +1 -1
- package/examples/data-source/customer-server.ts +1 -1
- package/examples/data-source/run.ts +1 -1
- package/examples/data-source/schema.ts +1 -1
- package/examples/quickstart.ts +2 -2
- package/llms.txt +8 -8
- package/package.json +63 -166
- package/bin/ablo.cjs +0 -39
- package/dist/BaseSyncedStore.d.ts +0 -843
- package/dist/BaseSyncedStore.js +0 -1971
- package/dist/Database.d.ts +0 -323
- package/dist/Database.js +0 -1502
- package/dist/InstanceCache.d.ts +0 -237
- package/dist/InstanceCache.js +0 -1166
- package/dist/LazyReferenceCollection.d.ts +0 -177
- package/dist/LazyReferenceCollection.js +0 -461
- package/dist/Model.d.ts +0 -454
- package/dist/Model.js +0 -919
- package/dist/ModelRegistry.d.ts +0 -225
- package/dist/ModelRegistry.js +0 -539
- package/dist/NetworkMonitor.d.ts +0 -28
- package/dist/NetworkMonitor.js +0 -79
- package/dist/RuntimeContext.d.ts +0 -52
- package/dist/RuntimeContext.js +0 -80
- package/dist/SyncClient.d.ts +0 -541
- package/dist/SyncClient.js +0 -2202
- package/dist/adapters/alwaysOnline.d.ts +0 -14
- package/dist/adapters/alwaysOnline.js +0 -17
- package/dist/adapters/inMemoryStorage.d.ts +0 -31
- package/dist/adapters/inMemoryStorage.js +0 -110
- package/dist/ai-sdk/coordinatedTool.d.ts +0 -120
- package/dist/ai-sdk/coordinatedTool.js +0 -134
- package/dist/ai-sdk/coordinationContext.d.ts +0 -46
- package/dist/ai-sdk/coordinationContext.js +0 -106
- package/dist/ai-sdk/index.d.ts +0 -121
- package/dist/ai-sdk/index.js +0 -121
- package/dist/ai-sdk/wrap.d.ts +0 -65
- package/dist/ai-sdk/wrap.js +0 -39
- package/dist/auth/index.d.ts +0 -1
- package/dist/auth/index.js +0 -8
- package/dist/batching/index.d.ts +0 -55
- package/dist/batching/index.js +0 -147
- package/dist/client/Ablo.d.ts +0 -231
- package/dist/client/Ablo.js +0 -160
- package/dist/client/abloClient.d.ts +0 -309
- package/dist/client/abloClient.js +0 -13
- package/dist/client/clientPrelude.d.ts +0 -52
- package/dist/client/clientPrelude.js +0 -60
- package/dist/client/consoleLogger.d.ts +0 -35
- package/dist/client/consoleLogger.js +0 -44
- package/dist/client/coreClient.d.ts +0 -60
- package/dist/client/coreClient.js +0 -118
- package/dist/client/createInternalComponents.d.ts +0 -50
- package/dist/client/createInternalComponents.js +0 -98
- package/dist/client/createModelProxy.d.ts +0 -248
- package/dist/client/createModelProxy.js +0 -884
- package/dist/client/humans.d.ts +0 -69
- package/dist/client/humans.js +0 -78
- package/dist/client/modelRegistration.d.ts +0 -10
- package/dist/client/modelRegistration.js +0 -312
- package/dist/client/options.d.ts +0 -461
- package/dist/client/options.js +0 -7
- package/dist/client/reactiveEngine.d.ts +0 -53
- package/dist/client/reactiveEngine.js +0 -688
- package/dist/client/resourceTypes.d.ts +0 -12
- package/dist/client/resourceTypes.js +0 -10
- package/dist/client/schemaConfig.d.ts +0 -44
- package/dist/client/schemaConfig.js +0 -185
- package/dist/client/storeCluster.d.ts +0 -47
- package/dist/client/storeCluster.js +0 -118
- package/dist/client/storeLifecycle.d.ts +0 -61
- package/dist/client/storeLifecycle.js +0 -231
- package/dist/client/validateAbloOptions.d.ts +0 -42
- package/dist/client/validateAbloOptions.js +0 -43
- package/dist/client/wsMutationExecutor.d.ts +0 -27
- package/dist/client/wsMutationExecutor.js +0 -72
- package/dist/context.d.ts +0 -42
- package/dist/context.js +0 -81
- package/dist/coordination/ClaimLog.d.ts +0 -26
- package/dist/coordination/ClaimLog.js +0 -32
- package/dist/coordination/index.d.ts +0 -1
- package/dist/coordination/index.js +0 -8
- package/dist/core/index.d.ts +0 -33
- package/dist/core/index.js +0 -48
- package/dist/docs/catalog.d.ts +0 -72
- package/dist/docs/catalog.js +0 -230
- package/dist/docs/index.d.ts +0 -10
- package/dist/docs/index.js +0 -10
- package/dist/environment.d.ts +0 -1
- package/dist/environment.js +0 -8
- package/dist/interfaces/index.d.ts +0 -311
- package/dist/interfaces/index.js +0 -9
- package/dist/keys/index.d.ts +0 -1
- package/dist/keys/index.js +0 -8
- package/dist/mutators/RecordingMutation.d.ts +0 -36
- package/dist/mutators/RecordingMutation.js +0 -182
- package/dist/mutators/Transaction.d.ts +0 -40
- package/dist/mutators/Transaction.js +0 -58
- package/dist/mutators/UndoManager.d.ts +0 -258
- package/dist/mutators/UndoManager.js +0 -658
- package/dist/mutators/defineMutators.d.ts +0 -60
- package/dist/mutators/defineMutators.js +0 -18
- package/dist/mutators/inverseOp.d.ts +0 -126
- package/dist/mutators/inverseOp.js +0 -71
- package/dist/mutators/mutateActions.d.ts +0 -45
- package/dist/mutators/mutateActions.js +0 -105
- package/dist/mutators/readerActions.d.ts +0 -33
- package/dist/mutators/readerActions.js +0 -57
- package/dist/mutators/undoApply.d.ts +0 -51
- package/dist/mutators/undoApply.js +0 -117
- package/dist/policy/index.d.ts +0 -21
- package/dist/policy/index.js +0 -20
- package/dist/query/QueryProcessor.d.ts +0 -75
- package/dist/query/QueryProcessor.js +0 -255
- package/dist/query/client.d.ts +0 -64
- package/dist/query/client.js +0 -138
- package/dist/query/types.d.ts +0 -85
- package/dist/query/types.js +0 -16
- package/dist/react/AbloProvider.d.ts +0 -242
- package/dist/react/AbloProvider.js +0 -458
- package/dist/react/ClientSideSuspense.d.ts +0 -36
- package/dist/react/ClientSideSuspense.js +0 -17
- package/dist/react/DefaultFallback.d.ts +0 -24
- package/dist/react/DefaultFallback.js +0 -43
- package/dist/react/context.d.ts +0 -55
- package/dist/react/context.js +0 -29
- package/dist/react/createAbloReact.d.ts +0 -56
- package/dist/react/createAbloReact.js +0 -51
- package/dist/react/index.d.ts +0 -62
- package/dist/react/index.js +0 -69
- package/dist/react/internalContext.d.ts +0 -33
- package/dist/react/internalContext.js +0 -3
- package/dist/react/useAblo.d.ts +0 -82
- package/dist/react/useAblo.js +0 -120
- package/dist/react/useCurrentUserId.d.ts +0 -22
- package/dist/react/useCurrentUserId.js +0 -34
- package/dist/react/useErrorListener.d.ts +0 -20
- package/dist/react/useErrorListener.js +0 -38
- package/dist/react/useMutationFailureListener.d.ts +0 -26
- package/dist/react/useMutationFailureListener.js +0 -38
- package/dist/react/useMutators.d.ts +0 -56
- package/dist/react/useMutators.js +0 -84
- package/dist/react/useReactive.d.ts +0 -35
- package/dist/react/useReactive.js +0 -123
- package/dist/react/useSyncStatus.d.ts +0 -59
- package/dist/react/useSyncStatus.js +0 -76
- package/dist/react/useUndoScope.d.ts +0 -34
- package/dist/react/useUndoScope.js +0 -81
- package/dist/schema/coordination.d.ts +0 -112
- package/dist/schema/coordination.js +0 -133
- package/dist/schema/ddl.d.ts +0 -97
- package/dist/schema/ddl.js +0 -491
- package/dist/schema/ddlLock.d.ts +0 -35
- package/dist/schema/ddlLock.js +0 -46
- package/dist/schema/diff.d.ts +0 -225
- package/dist/schema/diff.js +0 -289
- package/dist/schema/generate.d.ts +0 -19
- package/dist/schema/generate.js +0 -86
- package/dist/schema/index.d.ts +0 -42
- package/dist/schema/index.js +0 -80
- package/dist/schema/queries.d.ts +0 -201
- package/dist/schema/queries.js +0 -144
- package/dist/schema/select.d.ts +0 -40
- package/dist/schema/select.js +0 -90
- package/dist/schema/serialize.d.ts +0 -115
- package/dist/schema/serialize.js +0 -265
- package/dist/schema/sugar.d.ts +0 -109
- package/dist/schema/sugar.js +0 -83
- package/dist/schema/syncDeltaRow.d.ts +0 -6
- package/dist/schema/syncDeltaRow.js +0 -6
- package/dist/server/adapter.d.ts +0 -173
- package/dist/server/adapter.js +0 -18
- package/dist/server/commit.d.ts +0 -107
- package/dist/server/commit.js +0 -1
- package/dist/server/index.d.ts +0 -14
- package/dist/server/index.js +0 -2
- package/dist/server/readConfig.d.ts +0 -80
- package/dist/server/readConfig.js +0 -8
- package/dist/server/storageMode.d.ts +0 -23
- package/dist/server/storageMode.js +0 -17
- package/dist/source/adapter.d.ts +0 -83
- package/dist/source/adapter.js +0 -24
- package/dist/source/adapters/drizzle.d.ts +0 -48
- package/dist/source/adapters/drizzle.js +0 -219
- package/dist/source/adapters/kysely.d.ts +0 -42
- package/dist/source/adapters/kysely.js +0 -205
- package/dist/source/adapters/kyselyMutationCore.d.ts +0 -76
- package/dist/source/adapters/kyselyMutationCore.js +0 -125
- package/dist/source/adapters/memory.d.ts +0 -13
- package/dist/source/adapters/memory.js +0 -130
- package/dist/source/adapters/prisma.d.ts +0 -63
- package/dist/source/adapters/prisma.js +0 -202
- package/dist/source/conformance.d.ts +0 -37
- package/dist/source/conformance.js +0 -215
- package/dist/source/connector.d.ts +0 -95
- package/dist/source/connector.js +0 -266
- package/dist/source/connectorProtocol.d.ts +0 -154
- package/dist/source/connectorProtocol.js +0 -163
- package/dist/source/contract.d.ts +0 -195
- package/dist/source/contract.js +0 -164
- package/dist/source/factory.d.ts +0 -92
- package/dist/source/factory.js +0 -286
- package/dist/source/idempotency.d.ts +0 -61
- package/dist/source/idempotency.js +0 -144
- package/dist/source/index.d.ts +0 -23
- package/dist/source/index.js +0 -30
- package/dist/source/migrations.d.ts +0 -21
- package/dist/source/migrations.js +0 -103
- package/dist/source/next.d.ts +0 -32
- package/dist/source/next.js +0 -25
- package/dist/source/pushQueue.d.ts +0 -134
- package/dist/source/pushQueue.js +0 -256
- package/dist/source/signing.d.ts +0 -92
- package/dist/source/signing.js +0 -162
- package/dist/source/types.d.ts +0 -401
- package/dist/source/types.js +0 -59
- package/dist/storeContract.d.ts +0 -145
- package/dist/storeContract.js +0 -12
- package/dist/stores/DatabaseManager.d.ts +0 -107
- package/dist/stores/DatabaseManager.js +0 -388
- package/dist/stores/ObjectStore.d.ts +0 -115
- package/dist/stores/ObjectStore.js +0 -393
- package/dist/stores/ObjectStoreContract.d.ts +0 -38
- package/dist/stores/ObjectStoreContract.js +0 -1
- package/dist/stores/StoreManager.d.ts +0 -114
- package/dist/stores/StoreManager.js +0 -304
- package/dist/stores/SyncActionStore.d.ts +0 -99
- package/dist/stores/SyncActionStore.js +0 -506
- package/dist/stores/openIDBWithTimeout.d.ts +0 -65
- package/dist/stores/openIDBWithTimeout.js +0 -153
- package/dist/stores/syncAction.d.ts +0 -26
- package/dist/stores/syncAction.js +0 -16
- package/dist/surface.d.ts +0 -36
- package/dist/surface.js +0 -75
- package/dist/sync/BootstrapFetcher.d.ts +0 -284
- package/dist/sync/BootstrapFetcher.js +0 -964
- package/dist/sync/ConnectionManager.d.ts +0 -8
- package/dist/sync/ConnectionManager.js +0 -8
- package/dist/sync/OnDemandLoader.d.ts +0 -231
- package/dist/sync/OnDemandLoader.js +0 -743
- package/dist/sync/SubscriptionManager.d.ts +0 -159
- package/dist/sync/SubscriptionManager.js +0 -243
- package/dist/sync/SyncWebSocket.d.ts +0 -173
- package/dist/sync/SyncWebSocket.js +0 -438
- package/dist/sync/awaitClaimGrant.d.ts +0 -6
- package/dist/sync/awaitClaimGrant.js +0 -6
- package/dist/sync/bootstrapApply.d.ts +0 -73
- package/dist/sync/bootstrapApply.js +0 -73
- package/dist/sync/commitFrames.d.ts +0 -8
- package/dist/sync/commitFrames.js +0 -8
- package/dist/sync/contextPorts.d.ts +0 -18
- package/dist/sync/contextPorts.js +0 -31
- package/dist/sync/createClaimStream.d.ts +0 -7
- package/dist/sync/createClaimStream.js +0 -7
- package/dist/sync/createPresenceStream.d.ts +0 -69
- package/dist/sync/createPresenceStream.js +0 -200
- package/dist/sync/createSnapshot.d.ts +0 -29
- package/dist/sync/createSnapshot.js +0 -118
- package/dist/sync/credentialLifecycle.d.ts +0 -7
- package/dist/sync/credentialLifecycle.js +0 -7
- package/dist/sync/deltaPipeline.d.ts +0 -114
- package/dist/sync/deltaPipeline.js +0 -278
- package/dist/sync/groupChange.d.ts +0 -116
- package/dist/sync/groupChange.js +0 -244
- package/dist/sync/participants.d.ts +0 -132
- package/dist/sync/participants.js +0 -346
- package/dist/sync/persistedPrefix.d.ts +0 -12
- package/dist/sync/persistedPrefix.js +0 -22
- package/dist/sync/schemaDrift.d.ts +0 -55
- package/dist/sync/schemaDrift.js +0 -53
- package/dist/sync/schemas.d.ts +0 -71
- package/dist/sync/schemas.js +0 -94
- package/dist/sync/syncCursor.d.ts +0 -40
- package/dist/sync/syncCursor.js +0 -55
- package/dist/sync/syncPlan.d.ts +0 -54
- package/dist/sync/syncPlan.js +0 -50
- package/dist/sync/wsFrameHandlers.d.ts +0 -8
- package/dist/sync/wsFrameHandlers.js +0 -8
- package/dist/syncLog/contract.d.ts +0 -20
- package/dist/syncLog/contract.js +0 -19
- package/dist/syncLog/index.d.ts +0 -1
- package/dist/syncLog/index.js +0 -1
- package/dist/transaction/ablo.d.ts +0 -88
- package/dist/transaction/ablo.js +0 -33
- package/dist/transaction/auth/apiKey.d.ts +0 -152
- package/dist/transaction/auth/apiKey.js +0 -419
- package/dist/transaction/auth/bootstrapScope.d.ts +0 -15
- package/dist/transaction/auth/bootstrapScope.js +0 -1
- package/dist/transaction/auth/capability.d.ts +0 -212
- package/dist/transaction/auth/capability.js +0 -224
- package/dist/transaction/auth/credentialEndpoint.d.ts +0 -61
- package/dist/transaction/auth/credentialEndpoint.js +0 -86
- package/dist/transaction/auth/credentialPolicy.d.ts +0 -148
- package/dist/transaction/auth/credentialPolicy.js +0 -125
- package/dist/transaction/auth/credentialSource.d.ts +0 -30
- package/dist/transaction/auth/credentialSource.js +0 -55
- package/dist/transaction/auth/hostedEndpoints.d.ts +0 -21
- package/dist/transaction/auth/hostedEndpoints.js +0 -21
- package/dist/transaction/auth/identity.d.ts +0 -55
- package/dist/transaction/auth/identity.js +0 -210
- package/dist/transaction/auth/index.d.ts +0 -162
- package/dist/transaction/auth/index.js +0 -304
- package/dist/transaction/auth/schemas.d.ts +0 -59
- package/dist/transaction/auth/schemas.js +0 -85
- package/dist/transaction/auth/sessionMint.d.ts +0 -28
- package/dist/transaction/auth/sessionMint.js +0 -85
- package/dist/transaction/coordination/awaitClaimGrant.d.ts +0 -56
- package/dist/transaction/coordination/awaitClaimGrant.js +0 -124
- package/dist/transaction/coordination/claimHeartbeatLoop.d.ts +0 -84
- package/dist/transaction/coordination/claimHeartbeatLoop.js +0 -108
- package/dist/transaction/coordination/claimMeta.d.ts +0 -49
- package/dist/transaction/coordination/claimMeta.js +0 -52
- package/dist/transaction/coordination/createClaimStream.d.ts +0 -64
- package/dist/transaction/coordination/createClaimStream.js +0 -475
- package/dist/transaction/coordination/events.d.ts +0 -74
- package/dist/transaction/coordination/events.js +0 -7
- package/dist/transaction/coordination/index.d.ts +0 -19
- package/dist/transaction/coordination/index.js +0 -45
- package/dist/transaction/coordination/locator.d.ts +0 -104
- package/dist/transaction/coordination/locator.js +0 -102
- package/dist/transaction/coordination/schema.d.ts +0 -1536
- package/dist/transaction/coordination/schema.js +0 -1177
- package/dist/transaction/coordination/targetConflict.d.ts +0 -2
- package/dist/transaction/coordination/targetConflict.js +0 -107
- package/dist/transaction/coordination/trace.d.ts +0 -78
- package/dist/transaction/coordination/trace.js +0 -138
- package/dist/transaction/durableWrites.d.ts +0 -62
- package/dist/transaction/durableWrites.js +0 -71
- package/dist/transaction/environment.d.ts +0 -105
- package/dist/transaction/environment.js +0 -108
- package/dist/transaction/errorCodes.d.ts +0 -403
- package/dist/transaction/errorCodes.js +0 -484
- package/dist/transaction/errors.d.ts +0 -428
- package/dist/transaction/errors.js +0 -686
- package/dist/transaction/footprint.d.ts +0 -111
- package/dist/transaction/footprint.js +0 -0
- package/dist/transaction/index.d.ts +0 -20
- package/dist/transaction/index.js +0 -20
- package/dist/transaction/keys/index.d.ts +0 -87
- package/dist/transaction/keys/index.js +0 -207
- package/dist/transaction/log/syncDeltaRow.d.ts +0 -158
- package/dist/transaction/log/syncDeltaRow.js +0 -95
- package/dist/transaction/logPosition.d.ts +0 -97
- package/dist/transaction/logPosition.js +0 -125
- package/dist/transaction/logger.d.ts +0 -16
- package/dist/transaction/logger.js +0 -7
- package/dist/transaction/observability.d.ts +0 -53
- package/dist/transaction/observability.js +0 -19
- package/dist/transaction/persistence.d.ts +0 -12
- package/dist/transaction/persistence.js +0 -11
- package/dist/transaction/plugin.d.ts +0 -285
- package/dist/transaction/plugin.js +0 -106
- package/dist/transaction/policy/types.d.ts +0 -217
- package/dist/transaction/policy/types.js +0 -126
- package/dist/transaction/resources/functionalUpdate.d.ts +0 -79
- package/dist/transaction/resources/functionalUpdate.js +0 -87
- package/dist/transaction/resources/httpResources.d.ts +0 -321
- package/dist/transaction/resources/httpResources.js +0 -7
- package/dist/transaction/resources/modelOperations.d.ts +0 -427
- package/dist/transaction/resources/modelOperations.js +0 -12
- package/dist/transaction/resources/mutationOptions.d.ts +0 -66
- package/dist/transaction/resources/mutationOptions.js +0 -9
- package/dist/transaction/resources/where.d.ts +0 -101
- package/dist/transaction/resources/where.js +0 -115
- package/dist/transaction/resources/writeOptionsSchema.d.ts +0 -47
- package/dist/transaction/resources/writeOptionsSchema.js +0 -73
- package/dist/transaction/schema/field.d.ts +0 -120
- package/dist/transaction/schema/field.js +0 -265
- package/dist/transaction/schema/fieldRef.d.ts +0 -38
- package/dist/transaction/schema/fieldRef.js +0 -11
- package/dist/transaction/schema/loadStrategy.d.ts +0 -45
- package/dist/transaction/schema/loadStrategy.js +0 -46
- package/dist/transaction/schema/model.d.ts +0 -379
- package/dist/transaction/schema/model.js +0 -123
- package/dist/transaction/schema/openapi.d.ts +0 -58
- package/dist/transaction/schema/openapi.js +0 -501
- package/dist/transaction/schema/relation.d.ts +0 -204
- package/dist/transaction/schema/relation.js +0 -104
- package/dist/transaction/schema/residency.d.ts +0 -29
- package/dist/transaction/schema/residency.js +0 -25
- package/dist/transaction/schema/roles.d.ts +0 -249
- package/dist/transaction/schema/roles.js +0 -230
- package/dist/transaction/schema/schema.d.ts +0 -351
- package/dist/transaction/schema/schema.js +0 -325
- package/dist/transaction/schema/tenancy.d.ts +0 -139
- package/dist/transaction/schema/tenancy.js +0 -190
- package/dist/transaction/transactionLayer.d.ts +0 -82
- package/dist/transaction/transactionLayer.js +0 -24
- package/dist/transaction/transactions/settlement/commitEnvelope.d.ts +0 -143
- package/dist/transaction/transactions/settlement/commitEnvelope.js +0 -161
- package/dist/transaction/transactions/settlement/httpCommitEnvelope.d.ts +0 -53
- package/dist/transaction/transactions/settlement/httpCommitEnvelope.js +0 -207
- package/dist/transaction/transactions/settlement/idempotencyKey.d.ts +0 -10
- package/dist/transaction/transactions/settlement/idempotencyKey.js +0 -9
- package/dist/transaction/transactions/settlement/pendingWrite.d.ts +0 -112
- package/dist/transaction/transactions/settlement/pendingWrite.js +0 -20
- package/dist/transaction/transport/commitFrames.d.ts +0 -90
- package/dist/transaction/transport/commitFrames.js +0 -134
- package/dist/transaction/transport/connectionManager.d.ts +0 -215
- package/dist/transaction/transport/connectionManager.js +0 -673
- package/dist/transaction/transport/credentialLifecycle.d.ts +0 -177
- package/dist/transaction/transport/credentialLifecycle.js +0 -324
- package/dist/transaction/transport/heartbeat.d.ts +0 -65
- package/dist/transaction/transport/heartbeat.js +0 -93
- package/dist/transaction/transport/httpClient.d.ts +0 -131
- package/dist/transaction/transport/httpClient.js +0 -146
- package/dist/transaction/transport/httpOptions.d.ts +0 -33
- package/dist/transaction/transport/httpOptions.js +0 -12
- package/dist/transaction/transport/httpTransport.d.ts +0 -8
- package/dist/transaction/transport/httpTransport.js +0 -1388
- package/dist/transaction/transport/networkProbe.d.ts +0 -84
- package/dist/transaction/transport/networkProbe.js +0 -207
- package/dist/transaction/transport/wsFrameHandlers.d.ts +0 -128
- package/dist/transaction/transport/wsFrameHandlers.js +0 -429
- package/dist/transaction/transport/wsTransport.d.ts +0 -574
- package/dist/transaction/transport/wsTransport.js +0 -1023
- package/dist/transaction/types/assertExact.d.ts +0 -17
- package/dist/transaction/types/assertExact.js +0 -1
- package/dist/transaction/types/global.d.ts +0 -107
- package/dist/transaction/types/global.js +0 -40
- package/dist/transaction/types/index.d.ts +0 -205
- package/dist/transaction/types/index.js +0 -56
- package/dist/transaction/types/modelData.d.ts +0 -10
- package/dist/transaction/types/modelData.js +0 -9
- package/dist/transaction/types/participant.d.ts +0 -20
- package/dist/transaction/types/participant.js +0 -10
- package/dist/transaction/types/streams.d.ts +0 -550
- package/dist/transaction/types/streams.js +0 -11
- package/dist/transaction/utils/asyncIterator.d.ts +0 -34
- package/dist/transaction/utils/asyncIterator.js +0 -135
- package/dist/transaction/utils/duration.d.ts +0 -50
- package/dist/transaction/utils/duration.js +0 -77
- package/dist/transaction/utils/json.d.ts +0 -57
- package/dist/transaction/utils/json.js +0 -276
- package/dist/transaction/wire/accountResponses.d.ts +0 -420
- package/dist/transaction/wire/accountResponses.js +0 -290
- package/dist/transaction/wire/auth.d.ts +0 -56
- package/dist/transaction/wire/auth.js +0 -63
- package/dist/transaction/wire/bootstrapReason.d.ts +0 -9
- package/dist/transaction/wire/bootstrapReason.js +0 -8
- package/dist/transaction/wire/claimEvent.d.ts +0 -76
- package/dist/transaction/wire/claimEvent.js +0 -73
- package/dist/transaction/wire/claims.d.ts +0 -530
- package/dist/transaction/wire/claims.js +0 -327
- package/dist/transaction/wire/commit.d.ts +0 -603
- package/dist/transaction/wire/commit.js +0 -321
- package/dist/transaction/wire/delta.d.ts +0 -250
- package/dist/transaction/wire/delta.js +0 -147
- package/dist/transaction/wire/errorEnvelope.d.ts +0 -72
- package/dist/transaction/wire/errorEnvelope.js +0 -123
- package/dist/transaction/wire/feedCursor.d.ts +0 -60
- package/dist/transaction/wire/feedCursor.js +0 -82
- package/dist/transaction/wire/feedEvent.d.ts +0 -204
- package/dist/transaction/wire/feedEvent.js +0 -65
- package/dist/transaction/wire/frames.d.ts +0 -194
- package/dist/transaction/wire/frames.js +0 -50
- package/dist/transaction/wire/inboundFrames.d.ts +0 -562
- package/dist/transaction/wire/inboundFrames.js +0 -116
- package/dist/transaction/wire/index.d.ts +0 -54
- package/dist/transaction/wire/index.js +0 -83
- package/dist/transaction/wire/listEnvelope.d.ts +0 -37
- package/dist/transaction/wire/listEnvelope.js +0 -42
- package/dist/transaction/wire/modelMutations.d.ts +0 -31
- package/dist/transaction/wire/modelMutations.js +0 -52
- package/dist/transaction/wire/modelResponses.d.ts +0 -85
- package/dist/transaction/wire/modelResponses.js +0 -43
- package/dist/transaction/wire/modelShape.d.ts +0 -78
- package/dist/transaction/wire/modelShape.js +0 -74
- package/dist/transaction/wire/protocol.d.ts +0 -38
- package/dist/transaction/wire/protocol.js +0 -38
- package/dist/transaction/wire/protocolVersion.d.ts +0 -73
- package/dist/transaction/wire/protocolVersion.js +0 -83
- package/dist/transactions/mutations/MutationQueue.d.ts +0 -661
- package/dist/transactions/mutations/MutationQueue.js +0 -2807
- package/dist/transactions/mutations/MutationStore.d.ts +0 -20
- package/dist/transactions/mutations/MutationStore.js +0 -53
- package/dist/transactions/mutations/UnconfirmedWrites.d.ts +0 -82
- package/dist/transactions/mutations/UnconfirmedWrites.js +0 -104
- package/dist/transactions/mutations/coalesceRules.d.ts +0 -58
- package/dist/transactions/mutations/coalesceRules.js +0 -140
- package/dist/transactions/mutations/commitLatency.d.ts +0 -52
- package/dist/transactions/mutations/commitLatency.js +0 -130
- package/dist/transactions/mutations/commitOutboxStore.d.ts +0 -28
- package/dist/transactions/mutations/commitOutboxStore.js +0 -26
- package/dist/transactions/mutations/commitPayload.d.ts +0 -165
- package/dist/transactions/mutations/commitPayload.js +0 -152
- package/dist/transactions/mutations/deltaConfirmation.d.ts +0 -63
- package/dist/transactions/mutations/deltaConfirmation.js +0 -235
- package/dist/transactions/mutations/durableWriteStore.d.ts +0 -14
- package/dist/transactions/mutations/durableWriteStore.js +0 -12
- package/dist/transactions/mutations/optimisticApply.d.ts +0 -49
- package/dist/transactions/mutations/optimisticApply.js +0 -65
- package/dist/transactions/mutations/replayValidation.d.ts +0 -187
- package/dist/transactions/mutations/replayValidation.js +0 -164
- package/dist/utils/mobxSetup.d.ts +0 -53
- package/dist/utils/mobxSetup.js +0 -330
- package/dist/views/QueryView.d.ts +0 -79
- package/dist/views/QueryView.js +0 -218
- package/dist/views/ViewRegistry.d.ts +0 -20
- package/dist/views/ViewRegistry.js +0 -55
- package/dist/views/incrementalView.d.ts +0 -45
- package/dist/views/incrementalView.js +0 -69
- package/dist/webhooks/events.d.ts +0 -43
- package/dist/webhooks/events.js +0 -42
- package/dist/webhooks/index.d.ts +0 -8
- package/dist/webhooks/index.js +0 -8
- package/dist/wire/index.d.ts +0 -1
- package/dist/wire/index.js +0 -8
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Zod schemas that describe the `sync_deltas` storage row — the durable record of
|
|
3
|
-
* one committed change. The row is split into two slices by the concern each one
|
|
4
|
-
* serves:
|
|
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
|
-
*
|
|
12
|
-
* {@link syncDeltaRowSchema} composes both into the full stored row.
|
|
13
|
-
* {@link DELTA_DATA_CLASSIFICATION} states which slices contain customer data,
|
|
14
|
-
* while {@link DELTA_PHYSICAL_STORAGE} states where the runtime persists them.
|
|
15
|
-
* Keeping those axes separate prevents a portable schema slice from being cited
|
|
16
|
-
* incorrectly as a physical-residency guarantee.
|
|
17
|
-
*
|
|
18
|
-
* This is the stored shape. The delta broadcast to clients is a narrower projection
|
|
19
|
-
* of it — see {@link import('../wire/delta.js').syncDeltaWireCoreSchema} — and
|
|
20
|
-
* the field names here mirror those on that wire delta.
|
|
21
|
-
*/
|
|
22
|
-
import { z } from 'zod';
|
|
23
|
-
import { participantKindSchema, confirmationStateSchema, syncDeltaActionSchema, } from '../wire/delta.js';
|
|
24
|
-
// ── Enumerations that mirror the corresponding Postgres enum types ────────────
|
|
25
|
-
// `participant_kind` and `confirmation_state` are shared with the wire delta and
|
|
26
|
-
// live at the wire layer (see `../wire/delta.js`); they are re-exported here so
|
|
27
|
-
// code that imports them from `schema` keeps resolving.
|
|
28
|
-
export { participantKindSchema, confirmationStateSchema } from '../wire/delta.js';
|
|
29
|
-
/** `backfill_provenance` */
|
|
30
|
-
export const backfillProvenanceSchema = z.enum(['exact', 'inferred', 'unknown']);
|
|
31
|
-
/** A delta payload: the full post-mutation row (or null for deletes). */
|
|
32
|
-
const deltaDataSchema = z.record(z.string(), z.unknown()).nullable();
|
|
33
|
-
// ── Core — the sync-protocol slice ────────────────────────────────────────────
|
|
34
|
-
/**
|
|
35
|
-
* Everything a client needs to materialize the change, plus the tenant key. This
|
|
36
|
-
* is the portable shape an authoritative WAL change or endpoint event carries.
|
|
37
|
-
* The runtime persists the resulting full row in Ablo's tenant-scoped ordered
|
|
38
|
-
* sync log; it is not written atomically with a direct application-row mutation.
|
|
39
|
-
* `id`, `createdAt`, and `syncGroups` are assigned when the source change is
|
|
40
|
-
* appended, so they are optional at the ingestion boundary.
|
|
41
|
-
*/
|
|
42
|
-
export const syncDeltaCoreSchema = z.object({
|
|
43
|
-
/** Monotonically increasing sync id, assigned by the server when the delta is appended; absent on an outbox marker. */
|
|
44
|
-
id: z.union([z.bigint(), z.number()]).optional(),
|
|
45
|
-
/** The `action_type` column; its eight values are owned by the wire delta contract. */
|
|
46
|
-
actionType: syncDeltaActionSchema,
|
|
47
|
-
modelName: z.string().min(1),
|
|
48
|
-
modelId: z.string().min(1),
|
|
49
|
-
data: deltaDataSchema,
|
|
50
|
-
previousData: deltaDataSchema.optional(),
|
|
51
|
-
/** Routing keys that decide which subscribers receive this delta; computed by the server at append time. */
|
|
52
|
-
syncGroups: z.array(z.string()).optional(),
|
|
53
|
-
/** The committing organization id — the coarse-grained tenant-isolation boundary. */
|
|
54
|
-
organizationId: z.string().nullable(),
|
|
55
|
-
/** ISO 8601 timestamp, assigned by the server when the delta is appended. */
|
|
56
|
-
createdAt: z.string().optional(),
|
|
57
|
-
transactionId: z.string().nullable(),
|
|
58
|
-
/**
|
|
59
|
-
* Stable identity of the authoritative WAL row or endpoint event. It is
|
|
60
|
-
* nullable for hosted/legacy rows and is never exposed as the optimistic
|
|
61
|
-
* client transaction id.
|
|
62
|
-
*/
|
|
63
|
-
sourceChangeId: z.string().min(1).nullable().optional(),
|
|
64
|
-
});
|
|
65
|
-
// ── Attribution — who made the change, and on whose authority ─────────────────
|
|
66
|
-
export const deltaAttributionSchema = z.object({
|
|
67
|
-
/** The acting participant, recorded as a single column for compatibility; the structured pair below is the richer form. */
|
|
68
|
-
createdBy: z.string().nullable(),
|
|
69
|
-
actorId: z.string().nullable(),
|
|
70
|
-
actorKind: participantKindSchema.nullable(),
|
|
71
|
-
onBehalfOfId: z.string().nullable(),
|
|
72
|
-
onBehalfOfKind: participantKindSchema.nullable(),
|
|
73
|
-
capabilityId: z.string().nullable(),
|
|
74
|
-
delegationChainRootUserId: z.string().nullable().optional(),
|
|
75
|
-
confirmationState: confirmationStateSchema.nullable(),
|
|
76
|
-
backfillProvenance: backfillProvenanceSchema.nullable(),
|
|
77
|
-
});
|
|
78
|
-
// ── Full stored row, classification, and physical storage ─────────────────────
|
|
79
|
-
/** The complete `sync_deltas` row: core and attribution combined. */
|
|
80
|
-
export const syncDeltaRowSchema = syncDeltaCoreSchema.extend(deltaAttributionSchema.shape);
|
|
81
|
-
/** Which slices contain retained customer row data versus control metadata. */
|
|
82
|
-
export const DELTA_DATA_CLASSIFICATION = {
|
|
83
|
-
core: 'customer-data',
|
|
84
|
-
attribution: 'control-metadata',
|
|
85
|
-
};
|
|
86
|
-
/**
|
|
87
|
-
* Where the current runtime physically persists each slice. Both live in
|
|
88
|
-
* Ablo's tenant-scoped `sync_deltas` log. `core` contains full post-change row
|
|
89
|
-
* payloads (and optional previous payloads), so `control` here must not be read
|
|
90
|
-
* as "metadata only."
|
|
91
|
-
*/
|
|
92
|
-
export const DELTA_PHYSICAL_STORAGE = {
|
|
93
|
-
core: 'control',
|
|
94
|
-
attribution: 'control',
|
|
95
|
-
};
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Records where this client stands in the global delta order. It is a single
|
|
3
|
-
* typed object holding three related but distinct positions, each with its own
|
|
4
|
-
* rule for when it may advance. Keeping them separate is deliberate: collapsing
|
|
5
|
-
* them into one counter is a classic source of sync bugs.
|
|
6
|
-
*
|
|
7
|
-
* - `persisted` — the resume cursor. It advances only after deltas have
|
|
8
|
-
* committed to durable local storage. This is the value reconnect catch-up
|
|
9
|
-
* sends to the server, so it must never run ahead of what actually landed
|
|
10
|
-
* on disk; otherwise the server would skip deltas the client never stored.
|
|
11
|
-
*
|
|
12
|
-
* - `applied` — the in-memory cursor: the last delta applied to the object
|
|
13
|
-
* pool. It drives the guards that deduplicate and reject replayed deltas.
|
|
14
|
-
* It may run ahead of `persisted`, because the pool is updated before the
|
|
15
|
-
* flush to disk, and behind what has merely been received, because
|
|
16
|
-
* bootstrap-queued deltas arrive before they are applied.
|
|
17
|
-
*
|
|
18
|
-
* - `acked` — the highest server position acknowledged for this client's own
|
|
19
|
-
* commits. An acknowledgement at N means the server applied our write at N;
|
|
20
|
-
* the optimistic pool already reflects it, so for the entities we wrote we
|
|
21
|
-
* have effectively read through N even before the echo returns on the
|
|
22
|
-
* stream.
|
|
23
|
-
*
|
|
24
|
-
* One value is derived: `readFloor` is the greater of `applied` and `acked`,
|
|
25
|
-
* and is the only position a snapshot or claim should stamp as its read point.
|
|
26
|
-
* Using the raw stream cursor alone would make a claim taken right after a
|
|
27
|
-
* confirmed write look stale against that write's own delta; using the raw
|
|
28
|
-
* acknowledgement alone would be wrong for read-only clients. The maximum is
|
|
29
|
-
* correct per entity, because a competing change to an entity we just wrote
|
|
30
|
-
* necessarily lands above our acknowledgement and still rejects as stale.
|
|
31
|
-
*
|
|
32
|
-
* The validation schema is the state shape: the class holds exactly one
|
|
33
|
-
* {@link LogPositionSnapshot} and merges monotonically into it, so snapshot
|
|
34
|
-
* and restore share that shape and {@link parseLogPosition} is the single gate
|
|
35
|
-
* for anything loaded from disk — a corrupted cursor stored "ahead of reality"
|
|
36
|
-
* being a known failure mode.
|
|
37
|
-
*/
|
|
38
|
-
import { z } from 'zod';
|
|
39
|
-
export declare const logPositionSchema: z.ZodObject<{
|
|
40
|
-
persisted: z.ZodNumber;
|
|
41
|
-
applied: z.ZodNumber;
|
|
42
|
-
acked: z.ZodNumber;
|
|
43
|
-
}, z.core.$strip>;
|
|
44
|
-
export type LogPositionSnapshot = z.infer<typeof logPositionSchema>;
|
|
45
|
-
/**
|
|
46
|
-
* Only the `persisted` cursor is stored durably; `applied` and `acked` are
|
|
47
|
-
* not. On resume the object pool is rebuilt from the persisted state, so the
|
|
48
|
-
* correct restore is simply to advance `persisted` to the stored value, which
|
|
49
|
-
* also implies `applied`. `acked` starts at zero, because a past session's
|
|
50
|
-
* acknowledgements carry no read authority and the offline queue
|
|
51
|
-
* re-acknowledges its own replays.
|
|
52
|
-
*/
|
|
53
|
-
/**
|
|
54
|
-
* Validates an untrusted value, such as one loaded from disk, into a position
|
|
55
|
-
* snapshot, or returns null when it does not match the schema.
|
|
56
|
-
*/
|
|
57
|
-
export declare function parseLogPosition(value: unknown): LogPositionSnapshot | null;
|
|
58
|
-
/**
|
|
59
|
-
* The live sync position: one instance per client. Three producers each
|
|
60
|
-
* advance their own cursor, and consumers read the result.
|
|
61
|
-
*/
|
|
62
|
-
export declare class LogPosition {
|
|
63
|
-
#private;
|
|
64
|
-
/** Returns a copy of the current state in the schema's shape. */
|
|
65
|
-
snapshot(): LogPositionSnapshot;
|
|
66
|
-
get persisted(): number;
|
|
67
|
-
get applied(): number;
|
|
68
|
-
get acked(): number;
|
|
69
|
-
/** The position a snapshot or claim stamps as its read point: the greater of `applied` and `acked`. */
|
|
70
|
-
get readFloor(): number;
|
|
71
|
-
/**
|
|
72
|
-
* Records that deltas through `syncId` have committed to durable local
|
|
73
|
-
* storage. This also advances `applied`, since the flush applies each delta
|
|
74
|
-
* before or as it persists.
|
|
75
|
-
*/
|
|
76
|
-
advancePersisted(syncId: number): void;
|
|
77
|
-
/** Records that a delta was applied to the in-memory object pool. */
|
|
78
|
-
advanceApplied(syncId: number): void;
|
|
79
|
-
/** Records that the server acknowledged one of this client's commits at the given position. */
|
|
80
|
-
noteAck(lastSyncId: number | undefined): void;
|
|
81
|
-
/** Restores from an already-validated snapshot, for example on resume from disk. The merge is monotonic. */
|
|
82
|
-
restore(snapshot: LogPositionSnapshot): void;
|
|
83
|
-
}
|
|
84
|
-
/** @deprecated Renamed to {@link logPositionSchema}. Removed in 0.36.0. */
|
|
85
|
-
export declare const syncPositionSchema: z.ZodObject<{
|
|
86
|
-
persisted: z.ZodNumber;
|
|
87
|
-
applied: z.ZodNumber;
|
|
88
|
-
acked: z.ZodNumber;
|
|
89
|
-
}, z.core.$strip>;
|
|
90
|
-
/** @deprecated Renamed to {@link LogPositionSnapshot}. Removed in 0.36.0. */
|
|
91
|
-
export type SyncPositionSnapshot = LogPositionSnapshot;
|
|
92
|
-
/** @deprecated Renamed to {@link parseLogPosition}. Removed in 0.36.0. */
|
|
93
|
-
export declare const parseSyncPosition: typeof parseLogPosition;
|
|
94
|
-
/** @deprecated Renamed to {@link LogPosition}. Removed in 0.36.0. */
|
|
95
|
-
export declare const SyncPosition: typeof LogPosition;
|
|
96
|
-
/** @deprecated Renamed to {@link LogPosition}. Removed in 0.36.0. */
|
|
97
|
-
export type SyncPosition = LogPosition;
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Records where this client stands in the global delta order. It is a single
|
|
3
|
-
* typed object holding three related but distinct positions, each with its own
|
|
4
|
-
* rule for when it may advance. Keeping them separate is deliberate: collapsing
|
|
5
|
-
* them into one counter is a classic source of sync bugs.
|
|
6
|
-
*
|
|
7
|
-
* - `persisted` — the resume cursor. It advances only after deltas have
|
|
8
|
-
* committed to durable local storage. This is the value reconnect catch-up
|
|
9
|
-
* sends to the server, so it must never run ahead of what actually landed
|
|
10
|
-
* on disk; otherwise the server would skip deltas the client never stored.
|
|
11
|
-
*
|
|
12
|
-
* - `applied` — the in-memory cursor: the last delta applied to the object
|
|
13
|
-
* pool. It drives the guards that deduplicate and reject replayed deltas.
|
|
14
|
-
* It may run ahead of `persisted`, because the pool is updated before the
|
|
15
|
-
* flush to disk, and behind what has merely been received, because
|
|
16
|
-
* bootstrap-queued deltas arrive before they are applied.
|
|
17
|
-
*
|
|
18
|
-
* - `acked` — the highest server position acknowledged for this client's own
|
|
19
|
-
* commits. An acknowledgement at N means the server applied our write at N;
|
|
20
|
-
* the optimistic pool already reflects it, so for the entities we wrote we
|
|
21
|
-
* have effectively read through N even before the echo returns on the
|
|
22
|
-
* stream.
|
|
23
|
-
*
|
|
24
|
-
* One value is derived: `readFloor` is the greater of `applied` and `acked`,
|
|
25
|
-
* and is the only position a snapshot or claim should stamp as its read point.
|
|
26
|
-
* Using the raw stream cursor alone would make a claim taken right after a
|
|
27
|
-
* confirmed write look stale against that write's own delta; using the raw
|
|
28
|
-
* acknowledgement alone would be wrong for read-only clients. The maximum is
|
|
29
|
-
* correct per entity, because a competing change to an entity we just wrote
|
|
30
|
-
* necessarily lands above our acknowledgement and still rejects as stale.
|
|
31
|
-
*
|
|
32
|
-
* The validation schema is the state shape: the class holds exactly one
|
|
33
|
-
* {@link LogPositionSnapshot} and merges monotonically into it, so snapshot
|
|
34
|
-
* and restore share that shape and {@link parseLogPosition} is the single gate
|
|
35
|
-
* for anything loaded from disk — a corrupted cursor stored "ahead of reality"
|
|
36
|
-
* being a known failure mode.
|
|
37
|
-
*/
|
|
38
|
-
import { z } from 'zod';
|
|
39
|
-
export const logPositionSchema = z.object({
|
|
40
|
-
/** The resume cursor; advances only after deltas persist to durable local storage. */
|
|
41
|
-
persisted: z.number().int().nonnegative(),
|
|
42
|
-
/** The in-memory cursor: the last delta applied to the object pool. */
|
|
43
|
-
applied: z.number().int().nonnegative(),
|
|
44
|
-
/** The highest server position acknowledged for this client's own commits. */
|
|
45
|
-
acked: z.number().int().nonnegative(),
|
|
46
|
-
});
|
|
47
|
-
/**
|
|
48
|
-
* Only the `persisted` cursor is stored durably; `applied` and `acked` are
|
|
49
|
-
* not. On resume the object pool is rebuilt from the persisted state, so the
|
|
50
|
-
* correct restore is simply to advance `persisted` to the stored value, which
|
|
51
|
-
* also implies `applied`. `acked` starts at zero, because a past session's
|
|
52
|
-
* acknowledgements carry no read authority and the offline queue
|
|
53
|
-
* re-acknowledges its own replays.
|
|
54
|
-
*/
|
|
55
|
-
/**
|
|
56
|
-
* Validates an untrusted value, such as one loaded from disk, into a position
|
|
57
|
-
* snapshot, or returns null when it does not match the schema.
|
|
58
|
-
*/
|
|
59
|
-
export function parseLogPosition(value) {
|
|
60
|
-
const result = logPositionSchema.safeParse(value);
|
|
61
|
-
return result.success ? result.data : null;
|
|
62
|
-
}
|
|
63
|
-
const ZERO = { persisted: 0, applied: 0, acked: 0 };
|
|
64
|
-
/** Monotonic merge: each cursor only ever moves forward. */
|
|
65
|
-
function advance(state, next) {
|
|
66
|
-
return {
|
|
67
|
-
persisted: Math.max(state.persisted, next.persisted ?? 0),
|
|
68
|
-
applied: Math.max(state.applied, next.applied ?? 0),
|
|
69
|
-
acked: Math.max(state.acked, next.acked ?? 0),
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* The live sync position: one instance per client. Three producers each
|
|
74
|
-
* advance their own cursor, and consumers read the result.
|
|
75
|
-
*/
|
|
76
|
-
export class LogPosition {
|
|
77
|
-
#state = ZERO;
|
|
78
|
-
/** Returns a copy of the current state in the schema's shape. */
|
|
79
|
-
snapshot() {
|
|
80
|
-
return { ...this.#state };
|
|
81
|
-
}
|
|
82
|
-
get persisted() {
|
|
83
|
-
return this.#state.persisted;
|
|
84
|
-
}
|
|
85
|
-
get applied() {
|
|
86
|
-
return this.#state.applied;
|
|
87
|
-
}
|
|
88
|
-
get acked() {
|
|
89
|
-
return this.#state.acked;
|
|
90
|
-
}
|
|
91
|
-
/** The position a snapshot or claim stamps as its read point: the greater of `applied` and `acked`. */
|
|
92
|
-
get readFloor() {
|
|
93
|
-
return Math.max(this.#state.applied, this.#state.acked);
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Records that deltas through `syncId` have committed to durable local
|
|
97
|
-
* storage. This also advances `applied`, since the flush applies each delta
|
|
98
|
-
* before or as it persists.
|
|
99
|
-
*/
|
|
100
|
-
advancePersisted(syncId) {
|
|
101
|
-
this.#state = advance(this.#state, { persisted: syncId, applied: syncId });
|
|
102
|
-
}
|
|
103
|
-
/** Records that a delta was applied to the in-memory object pool. */
|
|
104
|
-
advanceApplied(syncId) {
|
|
105
|
-
this.#state = advance(this.#state, { applied: syncId });
|
|
106
|
-
}
|
|
107
|
-
/** Records that the server acknowledged one of this client's commits at the given position. */
|
|
108
|
-
noteAck(lastSyncId) {
|
|
109
|
-
if (lastSyncId !== undefined)
|
|
110
|
-
this.#state = advance(this.#state, { acked: lastSyncId });
|
|
111
|
-
}
|
|
112
|
-
/** Restores from an already-validated snapshot, for example on resume from disk. The merge is monotonic. */
|
|
113
|
-
restore(snapshot) {
|
|
114
|
-
this.#state = advance(this.#state, snapshot);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
// ── Deprecated aliases (renamed from the sync/syncPosition module, 2026-07-17) ──
|
|
118
|
-
// The position is a participant's place in the transaction log; the old names
|
|
119
|
-
// said the consumer. Same class, same instanceof identity. Removed in 0.36.0.
|
|
120
|
-
/** @deprecated Renamed to {@link logPositionSchema}. Removed in 0.36.0. */
|
|
121
|
-
export const syncPositionSchema = logPositionSchema;
|
|
122
|
-
/** @deprecated Renamed to {@link parseLogPosition}. Removed in 0.36.0. */
|
|
123
|
-
export const parseSyncPosition = parseLogPosition;
|
|
124
|
-
/** @deprecated Renamed to {@link LogPosition}. Removed in 0.36.0. */
|
|
125
|
-
export const SyncPosition = LogPosition;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The logging port the SDK writes through.
|
|
3
|
-
*
|
|
4
|
-
* A contract with no framework and no local state: credential exchange, commit,
|
|
5
|
-
* and claim all need to log with no UI and no offline store present, so the port
|
|
6
|
-
* belongs to the settlement core (ADR 0016). The consumer supplies the
|
|
7
|
-
* implementation; the SDK ships a no-op default.
|
|
8
|
-
*/
|
|
9
|
-
export interface Logger {
|
|
10
|
-
debug(message: string, ...args: unknown[]): void;
|
|
11
|
-
info(message: string, ...args: unknown[]): void;
|
|
12
|
-
warn(message: string, ...args: unknown[]): void;
|
|
13
|
-
error(message: string, ...args: unknown[]): void;
|
|
14
|
-
}
|
|
15
|
-
/** The no-op default — what the core logs through when no logger is wired. */
|
|
16
|
-
export declare const noopLogger: Logger;
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The observability the settlement core reports on its own behalf.
|
|
3
|
-
*
|
|
4
|
-
* Coordination outcomes — a claim changing state, a stale-write collision that
|
|
5
|
-
* notified instead of aborting — happen with no UI and no local store anywhere,
|
|
6
|
-
* so the core must be able to report them without depending on the consumer's
|
|
7
|
-
* full provider (ADR 0016).
|
|
8
|
-
*
|
|
9
|
-
* This is deliberately the narrow set the core actually calls today. Widening it
|
|
10
|
-
* later is non-breaking; the reactive engine's `ObservabilityProvider` extends
|
|
11
|
-
* this interface, so a single implementation still satisfies both.
|
|
12
|
-
*/
|
|
13
|
-
import type { ClaimEvent, ConflictEvent } from './coordination/events.js';
|
|
14
|
-
export interface CoordinationObservability {
|
|
15
|
-
/** Capture a claim state change (acquired / queued / granted / lost / rejected / expired). */
|
|
16
|
-
captureClaim(event: ClaimEvent): void;
|
|
17
|
-
/** Capture a notify-instead-of-abort stale-write collision. */
|
|
18
|
-
captureConflict(event: ConflictEvent): void;
|
|
19
|
-
}
|
|
20
|
-
/** Breadcrumb severity levels */
|
|
21
|
-
export type BreadcrumbLevel = 'debug' | 'info' | 'warning' | 'error';
|
|
22
|
-
/** Breadcrumb categories for sync engine lifecycle events */
|
|
23
|
-
export type BreadcrumbCategory = 'sync.bootstrap' | 'sync.transaction' | 'sync.websocket' | 'sync.offline' | 'sync.database' | 'sync.conflict' | 'sync.coordination' | 'sync.groups';
|
|
24
|
-
export interface WebSocketErrorDetails {
|
|
25
|
-
context: string;
|
|
26
|
-
error?: string;
|
|
27
|
-
code?: number;
|
|
28
|
-
reason?: string;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* The observability the duplex transport reports on its own behalf: connection
|
|
32
|
-
* lifecycle breadcrumbs and socket errors. A server-side agent holding a socket
|
|
33
|
-
* for claim push has no store and no UI, so the transport must be able to
|
|
34
|
-
* report without the consumer's full provider — the same reasoning as
|
|
35
|
-
* {@link CoordinationObservability}, one layer down. The reactive engine's
|
|
36
|
-
* `ObservabilityProvider` extends this interface, so a single implementation
|
|
37
|
-
* satisfies both.
|
|
38
|
-
*/
|
|
39
|
-
export interface TransportObservability {
|
|
40
|
-
/** Add a breadcrumb for sync lifecycle events */
|
|
41
|
-
breadcrumb(message: string, category: BreadcrumbCategory, level?: BreadcrumbLevel, data?: Record<string, string | number | boolean | undefined>): void;
|
|
42
|
-
/** Capture WebSocket error */
|
|
43
|
-
captureWebSocketError(details: WebSocketErrorDetails): void;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Everything the duplex transport reports: its own lifecycle
|
|
47
|
-
* ({@link TransportObservability}) plus the coordination outcomes that ride
|
|
48
|
-
* the socket ({@link CoordinationObservability} — claim pushes and notified
|
|
49
|
-
* collisions arrive as frames, so the transport is where they surface).
|
|
50
|
-
*/
|
|
51
|
-
export type SocketObservability = TransportObservability & CoordinationObservability;
|
|
52
|
-
/** The no-op default — what the transport reports through when nothing is wired. */
|
|
53
|
-
export declare const noopSocketObservability: SocketObservability;
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The observability the settlement core reports on its own behalf.
|
|
3
|
-
*
|
|
4
|
-
* Coordination outcomes — a claim changing state, a stale-write collision that
|
|
5
|
-
* notified instead of aborting — happen with no UI and no local store anywhere,
|
|
6
|
-
* so the core must be able to report them without depending on the consumer's
|
|
7
|
-
* full provider (ADR 0016).
|
|
8
|
-
*
|
|
9
|
-
* This is deliberately the narrow set the core actually calls today. Widening it
|
|
10
|
-
* later is non-breaking; the reactive engine's `ObservabilityProvider` extends
|
|
11
|
-
* this interface, so a single implementation still satisfies both.
|
|
12
|
-
*/
|
|
13
|
-
/** The no-op default — what the transport reports through when nothing is wired. */
|
|
14
|
-
export const noopSocketObservability = {
|
|
15
|
-
breadcrumb() { },
|
|
16
|
-
captureWebSocketError() { },
|
|
17
|
-
captureClaim() { },
|
|
18
|
-
captureConflict() { },
|
|
19
|
-
};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Local persistence modes. `'memory'` (the default everywhere outside the
|
|
3
|
-
* browser) keeps the local graph in process memory; `'indexeddb'` adds
|
|
4
|
-
* offline queueing and a reload-surviving cache in the browser.
|
|
5
|
-
*/
|
|
6
|
-
export type AbloPersistence = 'memory' | 'indexeddb';
|
|
7
|
-
export interface PersistenceOptions {
|
|
8
|
-
readonly persistence?: AbloPersistence | undefined;
|
|
9
|
-
readonly inMemory?: boolean | undefined;
|
|
10
|
-
readonly offline?: boolean | undefined;
|
|
11
|
-
}
|
|
12
|
-
export declare function shouldUseInMemoryPersistence(options: PersistenceOptions): boolean;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export function shouldUseInMemoryPersistence(options) {
|
|
2
|
-
if (typeof window === 'undefined')
|
|
3
|
-
return true;
|
|
4
|
-
if (options.persistence)
|
|
5
|
-
return options.persistence === 'memory';
|
|
6
|
-
if (typeof options.inMemory === 'boolean')
|
|
7
|
-
return options.inMemory;
|
|
8
|
-
if (options.offline === true)
|
|
9
|
-
return false;
|
|
10
|
-
return true;
|
|
11
|
-
}
|