@abloatai/ablo 0.26.0 → 0.27.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 +14 -0
- package/README.md +101 -85
- package/dist/BaseSyncedStore.d.ts +85 -88
- package/dist/BaseSyncedStore.js +131 -147
- package/dist/Database.d.ts +54 -68
- package/dist/Database.js +97 -113
- 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 +37 -52
- package/dist/Model.js +46 -61
- 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 +112 -112
- package/dist/SyncClient.js +165 -172
- package/dist/adapters/alwaysOnline.d.ts +6 -8
- package/dist/adapters/alwaysOnline.js +6 -8
- package/dist/adapters/inMemoryStorage.d.ts +9 -9
- package/dist/adapters/inMemoryStorage.js +9 -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 +167 -119
- package/dist/client/Ablo.d.ts +73 -73
- package/dist/client/Ablo.js +125 -160
- package/dist/client/ApiClient.d.ts +30 -19
- package/dist/client/ApiClient.js +133 -38
- 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 +14 -17
- package/dist/client/createInternalComponents.js +25 -30
- 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 +57 -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 +67 -87
- package/dist/client/options.d.ts +134 -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 +15 -20
- package/dist/client/wsMutationExecutor.js +17 -23
- 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 +12 -14
- package/dist/core/StoreManager.js +21 -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 +131 -132
- package/dist/errors.d.ts +160 -166
- package/dist/errors.js +155 -158
- package/dist/index.d.ts +30 -27
- package/dist/index.js +89 -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 +122 -131
- package/dist/mutators/UndoManager.js +145 -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 +23 -22
- package/dist/react/useAblo.js +16 -14
- 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 +2 -2
- 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 +33 -42
- 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 +10 -11
- package/dist/stores/ObjectStore.js +11 -12
- package/dist/stores/ObjectStoreContract.d.ts +12 -15
- package/dist/stores/SyncActionStore.d.ts +7 -11
- package/dist/stores/SyncActionStore.js +13 -17
- package/dist/surface.d.ts +27 -20
- package/dist/surface.js +27 -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 +139 -165
- 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/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 +3 -3
- package/dist/testing/index.js +2 -2
- 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 +26 -22
- package/dist/testing/mocks/MockWebSocket.js +22 -21
- package/dist/transactions/TransactionQueue.d.ts +181 -176
- package/dist/transactions/TransactionQueue.js +338 -350
- 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/commitPayload.d.ts +48 -52
- package/dist/transactions/commitPayload.js +48 -57
- package/dist/transactions/deltaConfirmation.d.ts +20 -22
- package/dist/transactions/deltaConfirmation.js +37 -45
- package/dist/transactions/optimisticApply.d.ts +49 -0
- package/dist/transactions/optimisticApply.js +65 -0
- package/dist/transactions/{persistedReplay.d.ts → replayValidation.d.ts} +28 -22
- package/dist/transactions/{persistedReplay.js → replayValidation.js} +33 -27
- 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/{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 +79 -86
- package/dist/wire/frames.js +26 -33
- package/dist/wire/index.d.ts +14 -12
- package/dist/wire/index.js +30 -26
- 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/coordination.md +59 -0
- package/package.json +11 -10
- 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/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';
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
import type { Schema, SchemaRecord, InferModel, InferCreate } 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,7 +31,7 @@ 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
37
|
/** The typed sync engine client — one property per model in the schema */
|
|
@@ -78,31 +78,32 @@ export type Ablo<S extends SchemaRecord> = {
|
|
|
78
78
|
/** Disconnect and clean up */
|
|
79
79
|
dispose(): Promise<void>;
|
|
80
80
|
/**
|
|
81
|
-
* Replace the bearer
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
*
|
|
86
|
-
*
|
|
81
|
+
* Replace the bearer token used for the WebSocket upgrade and HTTP requests,
|
|
82
|
+
* without tearing down the engine. Use it to push a refreshed short-lived
|
|
83
|
+
* access key (an `ek_` or `rk_`) before it expires — the client's `apiKey`
|
|
84
|
+
* resolver refresh loop calls this for you. It reuses the same rotation path as
|
|
85
|
+
* the internal capability-token refresh and is safe to call before `ready()`.
|
|
86
|
+
* It also nudges a parked connection to re-probe with the new token.
|
|
87
87
|
*/
|
|
88
88
|
setAuthToken(token: string): void;
|
|
89
89
|
/**
|
|
90
90
|
* Resolve the active bearer credential this engine authenticates with — the
|
|
91
|
-
* live `ek_
|
|
92
|
-
* fresh by the `apiKey
|
|
91
|
+
* live `ek_` or `rk_` the WebSocket and HTTP transports currently carry (kept
|
|
92
|
+
* fresh by the `apiKey` resolver refresh loop), falling back to a configured
|
|
93
93
|
* 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
|
-
*
|
|
94
|
+
* a side-band request to the same server with the token this client already
|
|
95
|
+
* holds, avoiding an extra mint round-trip.
|
|
96
96
|
*/
|
|
97
97
|
getAuthToken(): Promise<string | null>;
|
|
98
98
|
/**
|
|
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
|
|
99
|
+
* Register a re-mint hook for the short-lived access key. The connection layer
|
|
100
|
+
* calls it when it finds the key stale (a `credential_stale` probe) or on an
|
|
101
|
+
* external nudge; the hook mints a fresh `ek_` or `rk_` from the still-valid
|
|
102
|
+
* login. It follows the same contract as the `apiKey` resolver: resolve a
|
|
103
|
+
* token, resolve `null` when the login itself is gone (which signs the user
|
|
104
|
+
* out), or throw on a transient failure (which backs off without signing out).
|
|
105
|
+
* The client wires this automatically from a function `apiKey`. Safe to call
|
|
106
|
+
* before `ready()`.
|
|
106
107
|
*/
|
|
107
108
|
setCredentialRefresher(refresher: (() => Promise<string | null>) | null): void;
|
|
108
109
|
/**
|
|
@@ -114,21 +115,19 @@ export type Ablo<S extends SchemaRecord> = {
|
|
|
114
115
|
*/
|
|
115
116
|
nudgeReconnect(): void;
|
|
116
117
|
/**
|
|
117
|
-
* Mint a short-lived, scoped
|
|
118
|
-
*
|
|
119
|
-
*
|
|
120
|
-
*
|
|
121
|
-
*
|
|
122
|
-
*
|
|
123
|
-
*
|
|
124
|
-
* The browser must NEVER see the `sk_` key — only the per-user session token.
|
|
118
|
+
* Mint a short-lived, scoped session token for one end user. Call this on your
|
|
119
|
+
* backend, where the `sk_` secret key lives, then hand the returned `token` to
|
|
120
|
+
* that user's browser — typically through a token route the browser's `apiKey`
|
|
121
|
+
* resolver fetches. The browser presents the token as its bearer, and the
|
|
122
|
+
* server verifies it. The browser must never see the `sk_` key, only the
|
|
123
|
+
* per-user session token.
|
|
125
124
|
*
|
|
126
|
-
* Pass `{ user: { id } }` for a full-authority end-user session
|
|
127
|
-
* `
|
|
128
|
-
* row)
|
|
129
|
-
*
|
|
130
|
-
*
|
|
131
|
-
*
|
|
125
|
+
* Pass `{ user: { id } }` for a full-authority end-user session, which mints an
|
|
126
|
+
* `ek_` and attributes writes to a user (recorded as `actor_kind` on the delta
|
|
127
|
+
* row). Pass `{ agent: { id }, can: { tasks: ['update'] } }` for a scoped agent
|
|
128
|
+
* session, which mints an `rk_`; `can` is typed against your schema's model
|
|
129
|
+
* names. This always authenticates with the original `sk_`, never the client's
|
|
130
|
+
* exchanged sync credential.
|
|
132
131
|
*/
|
|
133
132
|
sessions: {
|
|
134
133
|
create(params: CreateSessionParams<S>): Promise<AbloSession>;
|
|
@@ -149,15 +148,16 @@ export type Ablo<S extends SchemaRecord> = {
|
|
|
149
148
|
* await agent.dispose(); // when the agent is done
|
|
150
149
|
* ```
|
|
151
150
|
*
|
|
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
|
|
151
|
+
* Server-side only: it requires the `sk_` secret key (like `sessions.create`)
|
|
152
|
+
* and throws `AbloAuthenticationError` in the browser. The returned client
|
|
153
|
+
* holds its own auto-refreshing `rk_`, so a long run never hits token expiry,
|
|
154
|
+
* and the `sk_` never leaves this process. Each call is a distinct participant
|
|
155
|
+
* by default (omit `id` for a fresh uuid), so even two agents sharing a `name`
|
|
156
|
+
* queue behind one another on a contended row — `name` is display only and
|
|
157
|
+
* never collapses identity. Humans don't get a server-built client; ship them a
|
|
158
|
+
* token via `sessions.create({ user })`. If you need the raw token for
|
|
159
|
+
* revocation, or a stable re-attachable id, use `sessions.create({ agent })`
|
|
160
|
+
* or pass `id`.
|
|
161
161
|
*/
|
|
162
162
|
agents: {
|
|
163
163
|
create(params: CreateAgentClientParams<S>): Promise<Ablo<S>>;
|
|
@@ -245,14 +245,14 @@ export type Ablo<S extends SchemaRecord> = {
|
|
|
245
245
|
/** The underlying schema */
|
|
246
246
|
readonly schema: Schema<S>;
|
|
247
247
|
/**
|
|
248
|
-
*
|
|
249
|
-
*
|
|
250
|
-
*
|
|
251
|
-
*
|
|
252
|
-
*
|
|
248
|
+
* A real-time presence livestream — who else is connected on this engine's
|
|
249
|
+
* sync groups, what they're doing, and a write surface for announcing this
|
|
250
|
+
* user's own activity. It rides the engine's existing WebSocket; opening a
|
|
251
|
+
* participant for presence does not open a second socket. See
|
|
252
|
+
* {@link PresenceStream}.
|
|
253
253
|
*
|
|
254
|
-
*
|
|
255
|
-
*
|
|
254
|
+
* The reference is stable for the engine's lifetime — the underlying connection
|
|
255
|
+
* is rotated on `dispose()`, but this object stays the same.
|
|
256
256
|
*/
|
|
257
257
|
readonly presence: PresenceStream;
|
|
258
258
|
/**
|
|
@@ -270,7 +270,7 @@ export type Ablo<S extends SchemaRecord> = {
|
|
|
270
270
|
* Capture a context-staleness watermark over a set of entities.
|
|
271
271
|
* Returns a flat snapshot with `stamp` (thread into writes as
|
|
272
272
|
* `readAt`), `signal` (aborts on any captured-entity delta), and
|
|
273
|
-
* `onChange` (callback form). Reads from the engine's
|
|
273
|
+
* `onChange` (callback form). Reads from the engine's InstanceCache;
|
|
274
274
|
* subscription is on the engine's existing transport.
|
|
275
275
|
*
|
|
276
276
|
* Use before an LLM call to prevent the model from completing
|
|
@@ -282,13 +282,13 @@ export type Ablo<S extends SchemaRecord> = {
|
|
|
282
282
|
*/
|
|
283
283
|
snapshot<ModelName extends keyof S & string>(entities: Readonly<Record<ModelName, string | readonly string[]>>): Snapshot<Schema<S>, ModelName>;
|
|
284
284
|
/**
|
|
285
|
-
* The internal
|
|
286
|
-
* SyncContext.Provider so the SDK's useModel/useModels/useMutations
|
|
287
|
-
* can
|
|
285
|
+
* The internal store. It implements {@link SyncStoreContract} — pass it to
|
|
286
|
+
* `SyncContext.Provider` so the SDK's `useModel` / `useModels` / `useMutations`
|
|
287
|
+
* hooks can reach it.
|
|
288
288
|
*/
|
|
289
289
|
readonly _store: SyncStoreContract;
|
|
290
|
-
/** The
|
|
291
|
-
readonly _pool:
|
|
290
|
+
/** The InstanceCache — for demand loaders and direct pool operations. */
|
|
291
|
+
readonly _pool: InstanceCache;
|
|
292
292
|
/**
|
|
293
293
|
* The SyncWebSocket handle — for collaboration events (slide selection,
|
|
294
294
|
* cursor broadcast). Null until the engine connects.
|
|
@@ -334,22 +334,20 @@ import type * as _Tx from '../mutators/Transaction.js';
|
|
|
334
334
|
import type * as _Undo from '../mutators/UndoManager.js';
|
|
335
335
|
import type * as _SchemaTypes from '../schema/schema.js';
|
|
336
336
|
/**
|
|
337
|
-
*
|
|
338
|
-
*
|
|
339
|
-
* Locked rules — apply uniformly to every future addition:
|
|
337
|
+
* The canonical type namespace.
|
|
340
338
|
*
|
|
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.
|
|
339
|
+
* Rules applied uniformly to every addition:
|
|
351
340
|
*
|
|
352
|
-
*
|
|
341
|
+
* 1. Flat by default. `Ablo.X`. Fewest dots wins.
|
|
342
|
+
* 2. Sub-namespace only when (a) four or more types share a single conceptual
|
|
343
|
+
* prefix and (b) the names read better with it (`Conflict.Kind` over
|
|
344
|
+
* `ConflictKind`). If the cluster is heterogeneous (streams, data, handles),
|
|
345
|
+
* keep it flat.
|
|
346
|
+
* 3. Only types a consumer would write `: Ablo.X` for. Inferred-only types stay
|
|
347
|
+
* unexported.
|
|
348
|
+
* 4. Wire shapes never appear on `Ablo.*` — engine vocabulary only.
|
|
349
|
+
* 5. Advanced or framework-integration types stay internal unless they graduate
|
|
350
|
+
* into one of the public subpaths.
|
|
353
351
|
*/
|
|
354
352
|
export declare namespace Ablo {
|
|
355
353
|
type Options<S extends SchemaRecord = SchemaRecord> = AbloOptions<S>;
|
|
@@ -375,6 +373,8 @@ export declare namespace Ablo {
|
|
|
375
373
|
type Claim = _Streams.Claim;
|
|
376
374
|
type ClaimRejection = _Streams.ClaimRejection;
|
|
377
375
|
type ClaimLost = _Streams.ClaimLost;
|
|
376
|
+
type ClaimHeartbeat = _Streams.ClaimHeartbeat;
|
|
377
|
+
type ClaimHeartbeatOptions = _Streams.ClaimHeartbeatOptions;
|
|
378
378
|
type Snapshot<TSchema extends _SchemaTypes.Schema = _SchemaTypes.Schema, K extends keyof TSchema['models'] = keyof TSchema['models']> = _Streams.Snapshot<TSchema, K>;
|
|
379
379
|
namespace Auth {
|
|
380
380
|
type Actor = _Streams.ParticipantRef;
|