@abloatai/ablo 0.26.0 → 0.28.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/CHANGELOG.md +42 -2
- package/README.md +102 -86
- package/dist/BaseSyncedStore.d.ts +85 -88
- package/dist/BaseSyncedStore.js +134 -151
- package/dist/Database.d.ts +68 -69
- package/dist/Database.js +316 -135
- package/dist/{ObjectPool.d.ts → InstanceCache.d.ts} +10 -13
- package/dist/{ObjectPool.js → InstanceCache.js} +85 -83
- package/dist/LazyReferenceCollection.d.ts +11 -15
- package/dist/LazyReferenceCollection.js +12 -16
- package/dist/Model.d.ts +54 -52
- package/dist/Model.js +78 -62
- package/dist/ModelRegistry.d.ts +21 -19
- package/dist/ModelRegistry.js +23 -27
- package/dist/NetworkMonitor.d.ts +5 -6
- package/dist/NetworkMonitor.js +5 -6
- package/dist/SyncClient.d.ts +122 -118
- package/dist/SyncClient.js +541 -245
- package/dist/adapters/alwaysOnline.d.ts +6 -8
- package/dist/adapters/alwaysOnline.js +6 -8
- package/dist/adapters/inMemoryStorage.d.ts +10 -9
- package/dist/adapters/inMemoryStorage.js +21 -9
- package/dist/agent/Agent.d.ts +27 -32
- package/dist/agent/Agent.js +18 -19
- package/dist/agent/index.d.ts +4 -4
- package/dist/agent/index.js +5 -5
- package/dist/agent/session.d.ts +47 -44
- package/dist/agent/session.js +37 -48
- package/dist/agent/types.d.ts +26 -31
- package/dist/agent/types.js +6 -7
- package/dist/ai-sdk/coordinatedTool.d.ts +108 -0
- package/dist/ai-sdk/{coordinated-tool.js → coordinatedTool.js} +44 -38
- package/dist/ai-sdk/coordinationContext.d.ts +46 -0
- package/dist/ai-sdk/{coordination-context.js → coordinationContext.js} +26 -33
- package/dist/ai-sdk/index.d.ts +25 -22
- package/dist/ai-sdk/index.js +25 -22
- package/dist/ai-sdk/wrap.d.ts +6 -7
- package/dist/ai-sdk/wrap.js +1 -1
- package/dist/auth/credentialPolicy.d.ts +69 -74
- package/dist/auth/credentialPolicy.js +51 -56
- package/dist/auth/credentialSource.d.ts +6 -5
- package/dist/auth/credentialSource.js +9 -10
- package/dist/auth/index.d.ts +59 -58
- package/dist/auth/index.js +31 -37
- package/dist/auth/schemas.d.ts +5 -4
- package/dist/auth/schemas.js +5 -4
- package/dist/batching/index.d.ts +19 -21
- package/dist/batching/index.js +14 -17
- package/dist/cli.cjs +173 -121
- package/dist/client/Ablo.d.ts +97 -74
- package/dist/client/Ablo.js +129 -163
- package/dist/client/ApiClient.d.ts +30 -19
- package/dist/client/ApiClient.js +442 -81
- package/dist/client/auth.d.ts +47 -47
- package/dist/client/auth.js +108 -117
- package/dist/client/claimHeartbeatLoop.d.ts +50 -0
- package/dist/client/claimHeartbeatLoop.js +88 -0
- package/dist/client/consoleLogger.d.ts +5 -6
- package/dist/client/consoleLogger.js +5 -6
- package/dist/client/createInternalComponents.d.ts +16 -17
- package/dist/client/createInternalComponents.js +26 -31
- package/dist/client/createModelProxy.d.ts +130 -120
- package/dist/client/createModelProxy.js +152 -122
- package/dist/client/credentialEndpoint.d.ts +40 -42
- package/dist/client/credentialEndpoint.js +35 -36
- package/dist/client/functionalUpdate.d.ts +29 -27
- package/dist/client/functionalUpdate.js +21 -21
- package/dist/client/hostedEndpoints.d.ts +9 -12
- package/dist/client/hostedEndpoints.js +9 -12
- package/dist/client/httpClient.d.ts +59 -53
- package/dist/client/httpClient.js +29 -31
- package/dist/client/identity.d.ts +15 -20
- package/dist/client/identity.js +47 -58
- package/dist/client/modelRegistration.d.ts +5 -9
- package/dist/client/modelRegistration.js +78 -87
- package/dist/client/options.d.ts +157 -157
- package/dist/client/options.js +3 -7
- package/dist/client/registerDataSource.d.ts +9 -9
- package/dist/client/registerDataSource.js +15 -16
- package/dist/client/resourceTypes.d.ts +64 -75
- package/dist/client/resourceTypes.js +4 -10
- package/dist/client/schemaConfig.d.ts +31 -43
- package/dist/client/schemaConfig.js +38 -50
- package/dist/client/sessionMint.d.ts +16 -12
- package/dist/client/sessionMint.js +26 -31
- package/dist/client/validateAbloOptions.d.ts +12 -14
- package/dist/client/validateAbloOptions.js +8 -9
- package/dist/client/writeOptionsSchema.d.ts +18 -16
- package/dist/client/writeOptionsSchema.js +23 -20
- package/dist/client/wsMutationExecutor.d.ts +16 -20
- package/dist/client/wsMutationExecutor.js +18 -23
- package/dist/commit/contract.d.ts +493 -0
- package/dist/commit/contract.js +187 -0
- package/dist/commit/index.d.ts +6 -0
- package/dist/commit/index.js +5 -0
- package/dist/context.d.ts +6 -4
- package/dist/context.js +6 -4
- package/dist/coordination/index.d.ts +10 -8
- package/dist/coordination/index.js +14 -12
- package/dist/coordination/schema.d.ts +176 -128
- package/dist/coordination/schema.js +197 -133
- package/dist/coordination/trace.d.ts +9 -10
- package/dist/coordination/trace.js +13 -14
- package/dist/core/DatabaseManager.d.ts +5 -7
- package/dist/core/DatabaseManager.js +15 -19
- package/dist/core/QueryProcessor.d.ts +7 -9
- package/dist/core/QueryProcessor.js +22 -28
- package/dist/core/QueryView.d.ts +8 -8
- package/dist/core/QueryView.js +2 -2
- package/dist/core/StoreManager.d.ts +14 -14
- package/dist/core/StoreManager.js +33 -24
- package/dist/core/ViewRegistry.d.ts +5 -5
- package/dist/core/ViewRegistry.js +4 -4
- package/dist/core/index.d.ts +17 -12
- package/dist/core/index.js +32 -26
- package/dist/core/openIDBWithTimeout.d.ts +38 -36
- package/dist/core/openIDBWithTimeout.js +42 -43
- package/dist/core/queryUtils.d.ts +45 -0
- package/dist/core/queryUtils.js +69 -0
- package/dist/core/storeContract.d.ts +63 -61
- package/dist/core/storeContract.js +8 -12
- package/dist/environment.d.ts +28 -0
- package/dist/environment.js +21 -0
- package/dist/errorCodes.d.ts +107 -99
- package/dist/errorCodes.js +137 -134
- package/dist/errors.d.ts +160 -166
- package/dist/errors.js +155 -158
- package/dist/index.d.ts +36 -27
- package/dist/index.js +91 -86
- package/dist/interfaces/index.d.ts +102 -113
- package/dist/interfaces/index.js +5 -4
- package/dist/keys/index.d.ts +27 -29
- package/dist/keys/index.js +41 -40
- package/dist/mutators/RecordingTransaction.d.ts +16 -16
- package/dist/mutators/RecordingTransaction.js +31 -37
- package/dist/mutators/Transaction.d.ts +18 -26
- package/dist/mutators/Transaction.js +14 -20
- package/dist/mutators/UndoManager.d.ts +124 -131
- package/dist/mutators/UndoManager.js +177 -156
- package/dist/mutators/defineMutators.d.ts +23 -34
- package/dist/mutators/defineMutators.js +14 -20
- package/dist/mutators/inverseOp.d.ts +12 -15
- package/dist/mutators/inverseOp.js +12 -15
- package/dist/mutators/mutateActions.d.ts +10 -9
- package/dist/mutators/mutateActions.js +1 -1
- package/dist/mutators/readerActions.d.ts +9 -8
- package/dist/mutators/readerActions.js +2 -2
- package/dist/mutators/undoApply.d.ts +31 -27
- package/dist/mutators/undoApply.js +26 -24
- package/dist/policy/index.d.ts +5 -3
- package/dist/policy/index.js +5 -3
- package/dist/policy/types.d.ts +104 -100
- package/dist/policy/types.js +67 -66
- package/dist/query/client.d.ts +28 -23
- package/dist/query/client.js +45 -43
- package/dist/query/types.d.ts +37 -60
- package/dist/query/types.js +13 -33
- package/dist/react/AbloProvider.d.ts +1 -1
- package/dist/react/AbloProvider.js +2 -2
- package/dist/react/context.d.ts +25 -28
- package/dist/react/context.js +9 -10
- package/dist/react/index.d.ts +41 -42
- package/dist/react/index.js +37 -38
- package/dist/react/internalContext.d.ts +17 -19
- package/dist/react/useAblo.d.ts +28 -25
- package/dist/react/useAblo.js +41 -17
- package/dist/react/useCurrentUserId.d.ts +8 -7
- package/dist/react/useCurrentUserId.js +8 -7
- package/dist/react/useErrorListener.d.ts +7 -7
- package/dist/react/useErrorListener.js +10 -11
- package/dist/react/useMutationFailureListener.d.ts +8 -8
- package/dist/react/useMutationFailureListener.js +8 -8
- package/dist/react/useMutators.d.ts +11 -11
- package/dist/react/useMutators.js +3 -3
- package/dist/react/useReactive.js +2 -2
- package/dist/react/useSyncStatus.d.ts +4 -6
- package/dist/react/useUndoScope.d.ts +7 -9
- package/dist/react/useUndoScope.js +1 -1
- package/dist/schema/coordination.d.ts +21 -25
- package/dist/schema/coordination.js +21 -25
- package/dist/schema/ddl.d.ts +43 -39
- package/dist/schema/ddl.js +75 -68
- package/dist/schema/ddlLock.d.ts +20 -24
- package/dist/schema/ddlLock.js +18 -23
- package/dist/schema/diff.d.ts +99 -61
- package/dist/schema/diff.js +43 -34
- package/dist/schema/field.d.ts +37 -42
- package/dist/schema/field.js +35 -48
- package/dist/schema/generate.d.ts +12 -12
- package/dist/schema/generate.js +12 -12
- package/dist/schema/index.d.ts +3 -3
- package/dist/schema/index.js +21 -23
- package/dist/schema/model.d.ts +118 -143
- package/dist/schema/model.js +22 -33
- package/dist/schema/openapi.d.ts +10 -9
- package/dist/schema/openapi.js +5 -3
- package/dist/schema/queries.d.ts +29 -31
- package/dist/schema/queries.js +23 -25
- package/dist/schema/relation.d.ts +89 -99
- package/dist/schema/relation.js +13 -13
- package/dist/schema/residency.d.ts +16 -13
- package/dist/schema/residency.js +16 -13
- package/dist/schema/roles.d.ts +36 -43
- package/dist/schema/roles.js +31 -37
- package/dist/schema/schema.d.ts +64 -43
- package/dist/schema/schema.js +31 -32
- package/dist/schema/select.d.ts +13 -13
- package/dist/schema/select.js +13 -13
- package/dist/schema/serialize.d.ts +28 -31
- package/dist/schema/serialize.js +27 -31
- package/dist/schema/sugar.d.ts +17 -32
- package/dist/schema/sugar.js +14 -29
- package/dist/schema/{sync-delta-row.d.ts → syncDeltaRow.d.ts} +26 -49
- package/dist/schema/syncDeltaRow.js +89 -0
- package/dist/schema/tenancy.d.ts +44 -46
- package/dist/schema/tenancy.js +46 -48
- package/dist/server/adapter.d.ts +58 -58
- package/dist/server/adapter.js +13 -14
- package/dist/server/commit.d.ts +60 -64
- package/dist/server/index.d.ts +9 -10
- package/dist/server/index.js +1 -1
- package/dist/server/readConfig.d.ts +70 -0
- package/dist/server/readConfig.js +8 -0
- package/dist/server/storageMode.d.ts +23 -0
- package/dist/server/storageMode.js +17 -0
- package/dist/source/adapter.d.ts +30 -25
- package/dist/source/adapter.js +10 -10
- package/dist/source/adapters/drizzle.d.ts +28 -23
- package/dist/source/adapters/drizzle.js +30 -25
- package/dist/source/adapters/kysely.d.ts +27 -25
- package/dist/source/adapters/kysely.js +24 -23
- package/dist/source/adapters/memory.d.ts +8 -7
- package/dist/source/adapters/memory.js +9 -8
- package/dist/source/adapters/prisma.d.ts +13 -12
- package/dist/source/adapters/prisma.js +22 -25
- package/dist/source/conformance.d.ts +18 -11
- package/dist/source/conformance.js +17 -11
- package/dist/source/connector.d.ts +31 -32
- package/dist/source/connector.js +28 -28
- package/dist/source/connectorProtocol.d.ts +160 -0
- package/dist/source/connectorProtocol.js +162 -0
- package/dist/source/contract.d.ts +26 -27
- package/dist/source/contract.js +28 -29
- package/dist/source/factory.d.ts +46 -58
- package/dist/source/factory.js +22 -27
- package/dist/source/index.d.ts +7 -9
- package/dist/source/index.js +12 -14
- package/dist/source/migrations.d.ts +9 -9
- package/dist/source/migrations.js +9 -9
- package/dist/source/next.d.ts +9 -10
- package/dist/source/next.js +6 -7
- package/dist/source/pushQueue.d.ts +69 -47
- package/dist/source/pushQueue.js +32 -28
- package/dist/source/signing.d.ts +46 -17
- package/dist/source/signing.js +28 -11
- package/dist/source/types.d.ts +121 -104
- package/dist/source/types.js +13 -14
- package/dist/stores/ObjectStore.d.ts +24 -12
- package/dist/stores/ObjectStore.js +38 -16
- package/dist/stores/ObjectStoreContract.d.ts +14 -15
- package/dist/stores/SyncActionStore.d.ts +7 -11
- package/dist/stores/SyncActionStore.js +13 -17
- package/dist/surface.d.ts +28 -21
- package/dist/surface.js +29 -20
- package/dist/sync/{BootstrapHelper.d.ts → BootstrapFetcher.d.ts} +36 -42
- package/dist/sync/{BootstrapHelper.js → BootstrapFetcher.js} +76 -76
- package/dist/sync/ConnectionManager.d.ts +39 -50
- package/dist/sync/ConnectionManager.js +55 -66
- package/dist/sync/NetworkProbe.d.ts +24 -29
- package/dist/sync/NetworkProbe.js +63 -69
- package/dist/sync/{HydrationCoordinator.d.ts → OnDemandLoader.d.ts} +42 -41
- package/dist/sync/{HydrationCoordinator.js → OnDemandLoader.js} +59 -54
- package/dist/sync/{AreaOfInterestManager.d.ts → SubscriptionManager.d.ts} +43 -57
- package/dist/sync/{AreaOfInterestManager.js → SubscriptionManager.js} +43 -51
- package/dist/sync/SyncWebSocket.d.ts +141 -166
- package/dist/sync/SyncWebSocket.js +191 -223
- package/dist/sync/awaitClaimGrant.d.ts +18 -18
- package/dist/sync/awaitClaimGrant.js +11 -11
- package/dist/sync/bootstrapApply.d.ts +34 -24
- package/dist/sync/bootstrapApply.js +27 -19
- package/dist/sync/commitFrames.d.ts +21 -20
- package/dist/sync/commitFrames.js +18 -18
- package/dist/sync/createClaimStream.d.ts +23 -22
- package/dist/sync/createClaimStream.js +105 -23
- package/dist/sync/createPresenceStream.d.ts +19 -18
- package/dist/sync/createPresenceStream.js +25 -26
- package/dist/sync/createSnapshot.d.ts +12 -14
- package/dist/sync/createSnapshot.js +20 -26
- package/dist/sync/credentialLifecycle.d.ts +104 -104
- package/dist/sync/credentialLifecycle.js +140 -147
- package/dist/sync/deltaPipeline.d.ts +36 -34
- package/dist/sync/deltaPipeline.js +64 -65
- package/dist/sync/groupChange.d.ts +63 -61
- package/dist/sync/groupChange.js +74 -78
- package/dist/sync/heartbeat.d.ts +34 -33
- package/dist/sync/heartbeat.js +31 -31
- package/dist/sync/participants.d.ts +19 -19
- package/dist/sync/persistedPrefix.d.ts +12 -0
- package/dist/sync/persistedPrefix.js +22 -0
- package/dist/sync/schemas.d.ts +3 -2
- package/dist/sync/schemas.js +14 -10
- package/dist/sync/syncCursor.d.ts +17 -21
- package/dist/sync/syncCursor.js +17 -21
- package/dist/sync/syncPlan.d.ts +28 -36
- package/dist/sync/syncPlan.js +18 -19
- package/dist/sync/syncPosition.d.ts +54 -49
- package/dist/sync/syncPosition.js +57 -52
- package/dist/sync/wsFrameHandlers.d.ts +35 -36
- package/dist/sync/wsFrameHandlers.js +63 -67
- package/dist/testing/fixtures/bootstrap.d.ts +12 -6
- package/dist/testing/fixtures/bootstrap.js +12 -6
- package/dist/testing/fixtures/deltas.d.ts +30 -33
- package/dist/testing/fixtures/deltas.js +30 -33
- package/dist/testing/fixtures/models.d.ts +11 -10
- package/dist/testing/fixtures/models.js +11 -10
- package/dist/testing/helpers/{react-wrapper.d.ts → reactWrapper.d.ts} +13 -10
- package/dist/testing/helpers/{react-wrapper.js → reactWrapper.js} +15 -12
- package/dist/testing/helpers/{sync-engine-harness.d.ts → syncEngineHarness.d.ts} +17 -15
- package/dist/testing/helpers/{sync-engine-harness.js → syncEngineHarness.js} +12 -10
- package/dist/testing/helpers/wait.d.ts +13 -8
- package/dist/testing/helpers/wait.js +13 -8
- package/dist/testing/index.d.ts +5 -3
- package/dist/testing/index.js +3 -2
- package/dist/testing/mocks/FakeDatabase.d.ts +18 -0
- package/dist/testing/mocks/FakeDatabase.js +10 -0
- package/dist/testing/mocks/MockMutationExecutor.d.ts +18 -17
- package/dist/testing/mocks/MockMutationExecutor.js +15 -14
- package/dist/testing/mocks/MockNetworkMonitor.d.ts +8 -8
- package/dist/testing/mocks/MockNetworkMonitor.js +8 -8
- package/dist/testing/mocks/MockSyncContext.d.ts +20 -17
- package/dist/testing/mocks/MockSyncContext.js +15 -13
- package/dist/testing/mocks/MockSyncStore.d.ts +10 -10
- package/dist/testing/mocks/MockSyncStore.js +11 -11
- package/dist/testing/mocks/MockWebSocket.d.ts +28 -23
- package/dist/testing/mocks/MockWebSocket.js +22 -21
- package/dist/transactions/TransactionQueue.d.ts +244 -181
- package/dist/transactions/TransactionQueue.js +929 -423
- package/dist/transactions/TransactionStore.d.ts +6 -4
- package/dist/transactions/TransactionStore.js +6 -4
- package/dist/transactions/UnconfirmedWrites.d.ts +82 -0
- package/dist/transactions/UnconfirmedWrites.js +104 -0
- package/dist/transactions/coalesceRules.d.ts +41 -17
- package/dist/transactions/coalesceRules.js +40 -17
- package/dist/transactions/commitEnvelope.d.ts +132 -0
- package/dist/transactions/commitEnvelope.js +139 -0
- package/dist/transactions/commitOutboxStore.d.ts +32 -0
- package/dist/transactions/commitOutboxStore.js +26 -0
- package/dist/transactions/commitPayload.d.ts +63 -52
- package/dist/transactions/commitPayload.js +54 -57
- package/dist/transactions/deltaConfirmation.d.ts +20 -22
- package/dist/transactions/deltaConfirmation.js +37 -45
- package/dist/transactions/httpCommitEnvelope.d.ts +43 -0
- package/dist/transactions/httpCommitEnvelope.js +179 -0
- package/dist/transactions/optimisticApply.d.ts +49 -0
- package/dist/transactions/optimisticApply.js +65 -0
- package/dist/transactions/replayValidation.d.ts +182 -0
- package/dist/transactions/replayValidation.js +156 -0
- package/dist/types/global.d.ts +46 -41
- package/dist/types/global.js +20 -19
- package/dist/types/index.d.ts +71 -77
- package/dist/types/index.js +22 -22
- package/dist/types/modelData.d.ts +6 -8
- package/dist/types/modelData.js +5 -7
- package/dist/types/participant.d.ts +10 -11
- package/dist/types/participant.js +6 -8
- package/dist/types/streams.d.ts +208 -195
- package/dist/types/streams.js +7 -7
- package/dist/utils/asyncIterator.d.ts +25 -32
- package/dist/utils/asyncIterator.js +25 -32
- package/dist/utils/duration.d.ts +12 -15
- package/dist/utils/duration.js +12 -15
- package/dist/utils/mobxSetup.d.ts +53 -0
- package/dist/utils/{mobx-setup.js → mobxSetup.js} +42 -98
- package/dist/webhooks/events.d.ts +21 -16
- package/dist/webhooks/events.js +10 -8
- package/dist/webhooks/index.d.ts +5 -7
- package/dist/webhooks/index.js +5 -7
- package/dist/wire/bootstrapReason.d.ts +9 -0
- package/dist/wire/bootstrapReason.js +8 -0
- package/dist/{schema/sync-delta-wire.d.ts → wire/delta.d.ts} +58 -41
- package/dist/wire/delta.js +114 -0
- package/dist/wire/errorEnvelope.d.ts +30 -31
- package/dist/wire/errorEnvelope.js +34 -40
- package/dist/wire/frames.d.ts +315 -86
- package/dist/wire/frames.js +47 -33
- package/dist/wire/index.d.ts +18 -14
- package/dist/wire/index.js +32 -27
- package/dist/wire/listEnvelope.d.ts +16 -23
- package/dist/wire/listEnvelope.js +7 -6
- package/dist/wire/protocol.d.ts +25 -32
- package/dist/wire/protocol.js +25 -32
- package/dist/wire/protocolVersion.d.ts +44 -40
- package/dist/wire/protocolVersion.js +44 -40
- package/docs/api.md +10 -10
- package/docs/coordination.md +59 -0
- package/docs/mcp.md +1 -1
- package/package.json +17 -11
- package/dist/ai-sdk/coordinated-tool.d.ts +0 -101
- package/dist/ai-sdk/coordination-context.d.ts +0 -52
- package/dist/core/query-utils.d.ts +0 -34
- package/dist/core/query-utils.js +0 -59
- package/dist/schema/sync-delta-row.js +0 -103
- package/dist/schema/sync-delta-wire.js +0 -102
- package/dist/server/read-config.d.ts +0 -67
- package/dist/server/read-config.js +0 -8
- package/dist/server/storage-mode.d.ts +0 -8
- package/dist/server/storage-mode.js +0 -28
- package/dist/source/connector-protocol.d.ts +0 -159
- package/dist/source/connector-protocol.js +0 -161
- package/dist/transactions/OptimisticEchoTracker.d.ts +0 -82
- package/dist/transactions/OptimisticEchoTracker.js +0 -104
- package/dist/transactions/mutation-error-handler.d.ts +0 -5
- package/dist/transactions/mutation-error-handler.js +0 -39
- package/dist/transactions/optimistic.d.ts +0 -24
- package/dist/transactions/optimistic.js +0 -45
- package/dist/transactions/persistedReplay.d.ts +0 -93
- package/dist/transactions/persistedReplay.js +0 -105
- package/dist/utils/mobx-setup.d.ts +0 -42
package/dist/client/Ablo.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Ablo —
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
2
|
+
* `Ablo` — the one-call entry point to the sync engine client. It hides the
|
|
3
|
+
* internal wiring — the object pool, local database, sync client, WebSocket,
|
|
4
|
+
* bootstrap, and offline queue — behind a single function that returns a typed
|
|
5
|
+
* client with one property per model in your schema.
|
|
6
6
|
*
|
|
7
7
|
* Usage:
|
|
8
8
|
* import { Ablo } from '@abloatai/ablo';
|
|
@@ -18,10 +18,10 @@
|
|
|
18
18
|
* });
|
|
19
19
|
* await sync.reports.delete({ id: reportId });
|
|
20
20
|
*/
|
|
21
|
-
import type { Schema, SchemaRecord, InferModel, InferCreate } from '../schema/schema.js';
|
|
21
|
+
import type { Schema, SchemaRecord, InferModel, InferCreate, InferRow } from '../schema/schema.js';
|
|
22
22
|
import type { ModelTarget, ModelClaim } from '../coordination/schema.js';
|
|
23
23
|
export type { ModelTarget, ModelClaim };
|
|
24
|
-
import {
|
|
24
|
+
import { InstanceCache } from '../InstanceCache.js';
|
|
25
25
|
import type { SyncStoreContract } from '../react/context.js';
|
|
26
26
|
import type { SyncWebSocket } from '../sync/SyncWebSocket.js';
|
|
27
27
|
import { type SyncStatus } from '../BaseSyncedStore.js';
|
|
@@ -31,9 +31,21 @@ import { type AbloHttpClient, type AbloHttpClientOptions } from './httpClient.js
|
|
|
31
31
|
import type { AbloOptions } from './options.js';
|
|
32
32
|
import type { AbloSession, CommitResource, CreateAgentClientParams, CreateSessionParams, ModelClient } from './resourceTypes.js';
|
|
33
33
|
export type { ApiKeySetter, AbloOptions, InternalAbloOptions } from './options.js';
|
|
34
|
-
export type { LocalCountOptions, LocalReadOptions, ModelListScope, ServerReadOptions, ModelRetrieveParams, ModelCreateParams, ModelUpdateParams, ModelDeleteParams, ClaimOptions, ClaimParams, ClaimLookupParams, ClaimReorderParams, Claim, HeldClaim, ModelOperations, ModelOperationAction, CommitWait, ModelRead, IfClaimedPolicy, ClaimedOptions, ClaimWaitOptions, ModelReadOptions, ClaimCreateOptions, CommitOperationInput, CommitCreateOptions, CommitReceipt, CommitResource, ClaimResource, ModelMutationOptions, HttpClaimApi, ModelClient, SessionOperation, CreateUserSessionParams, CreateAgentSessionParams, CreateSessionParams, CreateAgentClientParams, AbloSession, } from './resourceTypes.js';
|
|
34
|
+
export type { LocalCountOptions, LocalReadOptions, ModelListScope, ServerReadOptions, ModelRetrieveParams, ModelCreateParams, ModelUpdateParams, ModelDeleteParams, ClaimOptions, ClaimParams, ClaimLookupParams, ClaimReorderParams, Claim, ClaimHeartbeat, ClaimHeartbeatOptions, HeldClaim, ModelOperations, ModelOperationAction, CommitWait, ModelRead, IfClaimedPolicy, ClaimedOptions, ClaimWaitOptions, ModelReadOptions, ClaimCreateOptions, CommitOperationInput, CommitCreateOptions, CommitReceipt, CommitResource, ClaimResource, ModelMutationOptions, HttpClaimApi, ModelClient, SessionOperation, CreateUserSessionParams, CreateAgentSessionParams, CreateSessionParams, CreateAgentClientParams, AbloSession, } from './resourceTypes.js';
|
|
35
35
|
export { computeFKDepthPriority } from './schemaConfig.js';
|
|
36
36
|
import type { ModelOperations } from './createModelProxy.js';
|
|
37
|
+
/**
|
|
38
|
+
* The reactive-read client a `useAblo` selector receives. The same surface as
|
|
39
|
+
* {@link Ablo}, except model reads are typed as reactive rows
|
|
40
|
+
* ({@link InferRow}: data fields + computeds, no relation accessors, no model
|
|
41
|
+
* methods) — the shape a reactive read actually delivers after
|
|
42
|
+
* `toReactiveSnapshot()`. Reading `row.layers` off a reactive read is a
|
|
43
|
+
* compile error here instead of a silent runtime `undefined`; compose
|
|
44
|
+
* relations through selectors or hooks that resolve the pool's instance.
|
|
45
|
+
*/
|
|
46
|
+
export type AbloReads<S extends SchemaRecord> = Omit<Ablo<S>, keyof S & string> & {
|
|
47
|
+
readonly [K in keyof S & string]: ModelOperations<InferRow<Schema<S>, K>, InferCreate<Schema<S>, K>>;
|
|
48
|
+
};
|
|
37
49
|
/** The typed sync engine client — one property per model in the schema */
|
|
38
50
|
export type Ablo<S extends SchemaRecord> = {
|
|
39
51
|
readonly [K in keyof S & string]: ModelOperations<InferModel<Schema<S>, K>, InferCreate<Schema<S>, K>>;
|
|
@@ -78,31 +90,32 @@ export type Ablo<S extends SchemaRecord> = {
|
|
|
78
90
|
/** Disconnect and clean up */
|
|
79
91
|
dispose(): Promise<void>;
|
|
80
92
|
/**
|
|
81
|
-
* Replace the bearer
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
*
|
|
86
|
-
*
|
|
93
|
+
* Replace the bearer token used for the WebSocket upgrade and HTTP requests,
|
|
94
|
+
* without tearing down the engine. Use it to push a refreshed short-lived
|
|
95
|
+
* access key (an `ek_` or `rk_`) before it expires — the client's `apiKey`
|
|
96
|
+
* resolver refresh loop calls this for you. It reuses the same rotation path as
|
|
97
|
+
* the internal capability-token refresh and is safe to call before `ready()`.
|
|
98
|
+
* It also nudges a parked connection to re-probe with the new token.
|
|
87
99
|
*/
|
|
88
100
|
setAuthToken(token: string): void;
|
|
89
101
|
/**
|
|
90
102
|
* Resolve the active bearer credential this engine authenticates with — the
|
|
91
|
-
* live `ek_
|
|
92
|
-
* fresh by the `apiKey
|
|
103
|
+
* live `ek_` or `rk_` the WebSocket and HTTP transports currently carry (kept
|
|
104
|
+
* fresh by the `apiKey` resolver refresh loop), falling back to a configured
|
|
93
105
|
* API key. Returns `null` when no credential is set yet. Use it to authenticate
|
|
94
|
-
* a side-band request to the same server with the
|
|
95
|
-
*
|
|
106
|
+
* a side-band request to the same server with the token this client already
|
|
107
|
+
* holds, avoiding an extra mint round-trip.
|
|
96
108
|
*/
|
|
97
109
|
getAuthToken(): Promise<string | null>;
|
|
98
110
|
/**
|
|
99
|
-
* Register a re-mint hook for the short-lived access key. The connection
|
|
100
|
-
*
|
|
101
|
-
*
|
|
102
|
-
* login.
|
|
103
|
-
* `null` when the login itself is gone (
|
|
104
|
-
* failure (
|
|
105
|
-
* from a function `apiKey`. Safe to call
|
|
111
|
+
* Register a re-mint hook for the short-lived access key. The connection layer
|
|
112
|
+
* calls it when it finds the key stale (a `credential_stale` probe) or on an
|
|
113
|
+
* external nudge; the hook mints a fresh `ek_` or `rk_` from the still-valid
|
|
114
|
+
* login. It follows the same contract as the `apiKey` resolver: resolve a
|
|
115
|
+
* token, resolve `null` when the login itself is gone (which signs the user
|
|
116
|
+
* out), or throw on a transient failure (which backs off without signing out).
|
|
117
|
+
* The client wires this automatically from a function `apiKey`. Safe to call
|
|
118
|
+
* before `ready()`.
|
|
106
119
|
*/
|
|
107
120
|
setCredentialRefresher(refresher: (() => Promise<string | null>) | null): void;
|
|
108
121
|
/**
|
|
@@ -114,21 +127,19 @@ export type Ablo<S extends SchemaRecord> = {
|
|
|
114
127
|
*/
|
|
115
128
|
nudgeReconnect(): void;
|
|
116
129
|
/**
|
|
117
|
-
* Mint a short-lived, scoped
|
|
118
|
-
*
|
|
119
|
-
*
|
|
120
|
-
*
|
|
121
|
-
*
|
|
122
|
-
*
|
|
130
|
+
* Mint a short-lived, scoped session token for one end user. Call this on your
|
|
131
|
+
* backend, where the `sk_` secret key lives, then hand the returned `token` to
|
|
132
|
+
* that user's browser — typically through a token route the browser's `apiKey`
|
|
133
|
+
* resolver fetches. The browser presents the token as its bearer, and the
|
|
134
|
+
* server verifies it. The browser must never see the `sk_` key, only the
|
|
135
|
+
* per-user session token.
|
|
123
136
|
*
|
|
124
|
-
*
|
|
125
|
-
*
|
|
126
|
-
* Pass `{
|
|
127
|
-
*
|
|
128
|
-
*
|
|
129
|
-
*
|
|
130
|
-
* against your schema's model names. Always authenticates with the original
|
|
131
|
-
* `sk_` — never the client's exchanged sync credential.
|
|
137
|
+
* Pass `{ user: { id } }` for a full-authority end-user session, which mints an
|
|
138
|
+
* `ek_` and attributes writes to a user (recorded as `actor_kind` on the delta
|
|
139
|
+
* row). Pass `{ agent: { id }, can: { tasks: ['update'] } }` for a scoped agent
|
|
140
|
+
* session, which mints an `rk_`; `can` is typed against your schema's model
|
|
141
|
+
* names. This always authenticates with the original `sk_`, never the client's
|
|
142
|
+
* exchanged sync credential.
|
|
132
143
|
*/
|
|
133
144
|
sessions: {
|
|
134
145
|
create(params: CreateSessionParams<S>): Promise<AbloSession>;
|
|
@@ -149,15 +160,16 @@ export type Ablo<S extends SchemaRecord> = {
|
|
|
149
160
|
* await agent.dispose(); // when the agent is done
|
|
150
161
|
* ```
|
|
151
162
|
*
|
|
152
|
-
* Server-side only
|
|
153
|
-
* throws `AbloAuthenticationError` in the browser. The returned client
|
|
154
|
-
* its own auto-refreshing `rk_`, so a long run never hits token expiry,
|
|
155
|
-
* the `sk_` never leaves this process. Each call is a
|
|
156
|
-
* default (omit `id`
|
|
157
|
-
* behind one another on a contended row — `name` is display only and
|
|
158
|
-
* collapses identity. Humans don't get a server-built client
|
|
159
|
-
* token via `sessions.create({ user })`.
|
|
160
|
-
* or a stable re-attachable id
|
|
163
|
+
* Server-side only: it requires the `sk_` secret key (like `sessions.create`)
|
|
164
|
+
* and throws `AbloAuthenticationError` in the browser. The returned client
|
|
165
|
+
* holds its own auto-refreshing `rk_`, so a long run never hits token expiry,
|
|
166
|
+
* and the `sk_` never leaves this process. Each call is a distinct participant
|
|
167
|
+
* by default (omit `id` for a fresh uuid), so even two agents sharing a `name`
|
|
168
|
+
* queue behind one another on a contended row — `name` is display only and
|
|
169
|
+
* never collapses identity. Humans don't get a server-built client; ship them a
|
|
170
|
+
* token via `sessions.create({ user })`. If you need the raw token for
|
|
171
|
+
* revocation, or a stable re-attachable id, use `sessions.create({ agent })`
|
|
172
|
+
* or pass `id`.
|
|
161
173
|
*/
|
|
162
174
|
agents: {
|
|
163
175
|
create(params: CreateAgentClientParams<S>): Promise<Ablo<S>>;
|
|
@@ -245,14 +257,14 @@ export type Ablo<S extends SchemaRecord> = {
|
|
|
245
257
|
/** The underlying schema */
|
|
246
258
|
readonly schema: Schema<S>;
|
|
247
259
|
/**
|
|
248
|
-
*
|
|
249
|
-
*
|
|
250
|
-
*
|
|
251
|
-
*
|
|
252
|
-
*
|
|
260
|
+
* A real-time presence livestream — who else is connected on this engine's
|
|
261
|
+
* sync groups, what they're doing, and a write surface for announcing this
|
|
262
|
+
* user's own activity. It rides the engine's existing WebSocket; opening a
|
|
263
|
+
* participant for presence does not open a second socket. See
|
|
264
|
+
* {@link PresenceStream}.
|
|
253
265
|
*
|
|
254
|
-
*
|
|
255
|
-
*
|
|
266
|
+
* The reference is stable for the engine's lifetime — the underlying connection
|
|
267
|
+
* is rotated on `dispose()`, but this object stays the same.
|
|
256
268
|
*/
|
|
257
269
|
readonly presence: PresenceStream;
|
|
258
270
|
/**
|
|
@@ -270,7 +282,7 @@ export type Ablo<S extends SchemaRecord> = {
|
|
|
270
282
|
* Capture a context-staleness watermark over a set of entities.
|
|
271
283
|
* Returns a flat snapshot with `stamp` (thread into writes as
|
|
272
284
|
* `readAt`), `signal` (aborts on any captured-entity delta), and
|
|
273
|
-
* `onChange` (callback form). Reads from the engine's
|
|
285
|
+
* `onChange` (callback form). Reads from the engine's InstanceCache;
|
|
274
286
|
* subscription is on the engine's existing transport.
|
|
275
287
|
*
|
|
276
288
|
* Use before an LLM call to prevent the model from completing
|
|
@@ -282,13 +294,13 @@ export type Ablo<S extends SchemaRecord> = {
|
|
|
282
294
|
*/
|
|
283
295
|
snapshot<ModelName extends keyof S & string>(entities: Readonly<Record<ModelName, string | readonly string[]>>): Snapshot<Schema<S>, ModelName>;
|
|
284
296
|
/**
|
|
285
|
-
* The internal
|
|
286
|
-
* SyncContext.Provider so the SDK's useModel/useModels/useMutations
|
|
287
|
-
* can
|
|
297
|
+
* The internal store. It implements {@link SyncStoreContract} — pass it to
|
|
298
|
+
* `SyncContext.Provider` so the SDK's `useModel` / `useModels` / `useMutations`
|
|
299
|
+
* hooks can reach it.
|
|
288
300
|
*/
|
|
289
301
|
readonly _store: SyncStoreContract;
|
|
290
|
-
/** The
|
|
291
|
-
readonly _pool:
|
|
302
|
+
/** The InstanceCache — for demand loaders and direct pool operations. */
|
|
303
|
+
readonly _pool: InstanceCache;
|
|
292
304
|
/**
|
|
293
305
|
* The SyncWebSocket handle — for collaboration events (slide selection,
|
|
294
306
|
* cursor broadcast). Null until the engine connects.
|
|
@@ -334,25 +346,28 @@ import type * as _Tx from '../mutators/Transaction.js';
|
|
|
334
346
|
import type * as _Undo from '../mutators/UndoManager.js';
|
|
335
347
|
import type * as _SchemaTypes from '../schema/schema.js';
|
|
336
348
|
/**
|
|
337
|
-
*
|
|
338
|
-
*
|
|
339
|
-
* Locked rules — apply uniformly to every future addition:
|
|
349
|
+
* The canonical type namespace.
|
|
340
350
|
*
|
|
341
|
-
*
|
|
342
|
-
* 2. Sub-namespace ONLY when (a) 4+ types share a single conceptual
|
|
343
|
-
* prefix, AND (b) names read better with the prefix (`Conflict.Kind`
|
|
344
|
-
* over `ConflictKind`). If the cluster is heterogeneous (streams +
|
|
345
|
-
* data + handles), keep flat.
|
|
346
|
-
* 3. Only types a consumer would write `: Ablo.X` for. Inferred-only
|
|
347
|
-
* types stay un-exported.
|
|
348
|
-
* 4. Wire shapes never on `Ablo.*`. Engine vocabulary only.
|
|
349
|
-
* 5. Advanced / framework-integration types stay internal unless they
|
|
350
|
-
* graduate into one of the public subpaths.
|
|
351
|
+
* Rules applied uniformly to every addition:
|
|
351
352
|
*
|
|
352
|
-
*
|
|
353
|
+
* 1. Flat by default. `Ablo.X`. Fewest dots wins.
|
|
354
|
+
* 2. Sub-namespace only when (a) four or more types share a single conceptual
|
|
355
|
+
* prefix and (b) the names read better with it (`Conflict.Kind` over
|
|
356
|
+
* `ConflictKind`). If the cluster is heterogeneous (streams, data, handles),
|
|
357
|
+
* keep it flat.
|
|
358
|
+
* 3. Only types a consumer would write `: Ablo.X` for. Inferred-only types stay
|
|
359
|
+
* unexported.
|
|
360
|
+
* 4. Wire shapes never appear on `Ablo.*` — engine vocabulary only.
|
|
361
|
+
* 5. Advanced or framework-integration types stay internal unless they graduate
|
|
362
|
+
* into one of the public subpaths.
|
|
353
363
|
*/
|
|
354
364
|
export declare namespace Ablo {
|
|
355
365
|
type Options<S extends SchemaRecord = SchemaRecord> = AbloOptions<S>;
|
|
366
|
+
/**
|
|
367
|
+
* The read view of the client that `useAblo` selectors receive: model reads
|
|
368
|
+
* typed as reactive rows (data fields + computeds, no relation accessors).
|
|
369
|
+
*/
|
|
370
|
+
type Reads<S extends SchemaRecord = SchemaRecord> = AbloReads<S>;
|
|
356
371
|
type Api = AbloApi;
|
|
357
372
|
type ApiClaims = AbloApiClaims;
|
|
358
373
|
type Capability = import('./ApiClient.js').Capability;
|
|
@@ -375,6 +390,8 @@ export declare namespace Ablo {
|
|
|
375
390
|
type Claim = _Streams.Claim;
|
|
376
391
|
type ClaimRejection = _Streams.ClaimRejection;
|
|
377
392
|
type ClaimLost = _Streams.ClaimLost;
|
|
393
|
+
type ClaimHeartbeat = _Streams.ClaimHeartbeat;
|
|
394
|
+
type ClaimHeartbeatOptions = _Streams.ClaimHeartbeatOptions;
|
|
378
395
|
type Snapshot<TSchema extends _SchemaTypes.Schema = _SchemaTypes.Schema, K extends keyof TSchema['models'] = keyof TSchema['models']> = _Streams.Snapshot<TSchema, K>;
|
|
379
396
|
namespace Auth {
|
|
380
397
|
type Actor = _Streams.ParticipantRef;
|
|
@@ -390,6 +407,12 @@ export declare namespace Ablo {
|
|
|
390
407
|
namespace Schema {
|
|
391
408
|
type InferModel<S extends _SchemaTypes.Schema, K extends keyof S['models']> = _SchemaTypes.InferModel<S, K>;
|
|
392
409
|
type InferCreate<S extends _SchemaTypes.Schema, K extends keyof S['models']> = _SchemaTypes.InferCreate<S, K>;
|
|
410
|
+
/**
|
|
411
|
+
* The reactive-row companion to {@link InferModel}: data fields + computed
|
|
412
|
+
* getters, no relation accessors, no model methods — the shape `useAblo`
|
|
413
|
+
* reads return.
|
|
414
|
+
*/
|
|
415
|
+
type InferRow<S extends _SchemaTypes.Schema, K extends keyof S['models']> = _SchemaTypes.InferRow<S, K>;
|
|
393
416
|
type InferModelNames<S extends _SchemaTypes.Schema> = _SchemaTypes.InferModelNames<S>;
|
|
394
417
|
}
|
|
395
418
|
type Conflict = _Policy.Conflict;
|