@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
package/docs/sessions.md
CHANGED
|
@@ -10,20 +10,23 @@ difference is the subject and how much authority it carries.
|
|
|
10
10
|
One resource mints both:
|
|
11
11
|
|
|
12
12
|
```ts Your backend (sk_)
|
|
13
|
-
// A logged-in person's browser session —
|
|
13
|
+
// A logged-in person's browser session — only the operations this UI needs.
|
|
14
14
|
const userSession = await ablo.sessions.create({
|
|
15
15
|
user: { id: currentUser.id },
|
|
16
|
+
can: { tasks: ['read', 'update'], workspaces: ['read'] },
|
|
16
17
|
});
|
|
17
18
|
|
|
18
|
-
//
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
can: {
|
|
19
|
+
// Recommended agent path — returns a ready, scoped client.
|
|
20
|
+
const agent = await ablo.agents.create({
|
|
21
|
+
name: 'task-writer',
|
|
22
|
+
can: { tasks: ['read', 'update'], workspaces: ['read'] },
|
|
22
23
|
});
|
|
23
24
|
```
|
|
24
25
|
|
|
25
|
-
`user
|
|
26
|
-
|
|
26
|
+
`sessions.create({ user, can })` mints an `ek_` (ephemeral key).
|
|
27
|
+
`agents.create({ can })` mints and manages an `rk_` (restricted key). Use the
|
|
28
|
+
lower-level `sessions.create({ agent, can })` only when another runtime needs
|
|
29
|
+
the raw agent token.
|
|
27
30
|
|
|
28
31
|
It exists because of one rule: **the browser can never hold a secret.** Your
|
|
29
32
|
`sk_` lives on the server; the browser only ever holds a minted session token
|
|
@@ -45,15 +48,24 @@ For a logged-in person using your app. Mint on a backend route that has already
|
|
|
45
48
|
authenticated the user:
|
|
46
49
|
|
|
47
50
|
```ts Your backend route (session-authed)
|
|
48
|
-
|
|
51
|
+
import { credentialEndpointSuccessSchema } from '@abloatai/ablo/auth';
|
|
52
|
+
|
|
53
|
+
const { token, expiresAt } = await ablo.sessions.create({
|
|
49
54
|
user: { id: currentUser.id }, // who the session acts as
|
|
55
|
+
can: { tasks: ['read', 'update'] },
|
|
50
56
|
// syncGroups: [...], // optional; defaults to the user's org + user
|
|
51
57
|
});
|
|
52
|
-
return Response.json(
|
|
58
|
+
return Response.json(
|
|
59
|
+
credentialEndpointSuccessSchema.parse({
|
|
60
|
+
token,
|
|
61
|
+
expiresAt,
|
|
62
|
+
credentialKind: 'ephemeral',
|
|
63
|
+
}),
|
|
64
|
+
{ headers: { 'Cache-Control': 'no-store' } },
|
|
65
|
+
);
|
|
53
66
|
```
|
|
54
67
|
|
|
55
|
-
|
|
56
|
-
allowlist. It's the human acting as themselves.
|
|
68
|
+
`can` is required. The mint fails closed when the grant is absent or empty.
|
|
57
69
|
|
|
58
70
|
Point a browser `Ablo` client's `authEndpoint` at that route, and pass
|
|
59
71
|
the **instance** to [`<AbloProvider>`](/react). The client fetches the token,
|
|
@@ -84,7 +96,7 @@ the socket. Need custom headers or a
|
|
|
84
96
|
body on the exchange? `authEndpoint` also accepts an async resolver that
|
|
85
97
|
returns the token.
|
|
86
98
|
|
|
87
|
-
##
|
|
99
|
+
## Agents (`rk_`)
|
|
88
100
|
|
|
89
101
|
For a non-human actor — an agent or automation that should only do **specific**
|
|
90
102
|
operations. The `can` map is the permission boundary, and it's **typed against
|
|
@@ -92,23 +104,45 @@ your schema** — the model keys are your schema's models, so a typo is a compil
|
|
|
92
104
|
error, not a silent over-grant:
|
|
93
105
|
|
|
94
106
|
```ts
|
|
95
|
-
const
|
|
96
|
-
|
|
97
|
-
can: {
|
|
107
|
+
const agent = await ablo.agents.create({
|
|
108
|
+
name: 'task-writer',
|
|
109
|
+
can: { tasks: ['update'] }, // typed off the schema — no magic strings
|
|
98
110
|
ttlSeconds: 600,
|
|
99
111
|
});
|
|
100
112
|
|
|
101
|
-
|
|
113
|
+
await agent.tasks.update({ id, data });
|
|
114
|
+
await agent.dispose();
|
|
102
115
|
```
|
|
103
116
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
`
|
|
117
|
+
The returned client refreshes its own short-lived credential. A write grant
|
|
118
|
+
automatically includes the corresponding read, so
|
|
119
|
+
`can: { tasks: ['update'] }` is enforced as `task.update` plus `task.read`.
|
|
120
|
+
Operations are `'read' | 'create' | 'update' | 'delete'`.
|
|
121
|
+
|
|
122
|
+
For a reusable grant, use TypeScript's `satisfies`. It checks the object against
|
|
123
|
+
the schema while preserving its narrow literals—there is no string parser or
|
|
124
|
+
second permission model:
|
|
125
|
+
|
|
126
|
+
```ts
|
|
127
|
+
import type { CapabilityGrant } from '@abloatai/ablo/auth';
|
|
128
|
+
import { schema } from './ablo.schema';
|
|
129
|
+
|
|
130
|
+
const taskWriterCan = {
|
|
131
|
+
tasks: ['update'],
|
|
132
|
+
} satisfies CapabilityGrant<typeof schema>;
|
|
133
|
+
|
|
134
|
+
const agent = await ablo.agents.create({ can: taskWriterCan });
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
`documents` instead of `tasks`, or `'write'` instead of `'update'`, is a compile
|
|
138
|
+
error. At runtime the SDK parses the same grant with the schema-bound Zod
|
|
139
|
+
contract before minting, and the server validates it again against the active
|
|
140
|
+
pushed schema.
|
|
107
141
|
|
|
108
142
|
<Note>
|
|
109
|
-
Use `sessions.create({ agent })`
|
|
110
|
-
|
|
111
|
-
|
|
143
|
+
Use `sessions.create({ agent, can })` when a separate runtime, MCP process, or
|
|
144
|
+
protocol integration needs the raw token. For an agent running in the current
|
|
145
|
+
server process, prefer `agents.create({ can })`.
|
|
112
146
|
</Note>
|
|
113
147
|
|
|
114
148
|
## Mint
|
|
@@ -120,7 +154,7 @@ for the actor.
|
|
|
120
154
|
| Param | For | Meaning |
|
|
121
155
|
|---|---|---|
|
|
122
156
|
| `user` / `agent` | both | The actor. `id` becomes the token's `participantId`. Pass exactly one. |
|
|
123
|
-
| `can` |
|
|
157
|
+
| `can` | both | Required non-empty per-model operation allowlist, typed off the schema. |
|
|
124
158
|
| `syncGroups` | both | Narrow the session below its default scope. Omit to inherit. |
|
|
125
159
|
| `ttlSeconds` | both | Lifetime in seconds. Defaults to `900` (15m). |
|
|
126
160
|
| `userMeta` | both | Opaque identity blob echoed back to the client. |
|
|
@@ -129,8 +163,28 @@ for the actor.
|
|
|
129
163
|
|
|
130
164
|
Sessions are **short-lived by design** (~15 minutes) and, for browsers,
|
|
131
165
|
**auto-refreshed** — the provider re-mints ahead of expiry, so a session never
|
|
132
|
-
drops at the boundary.
|
|
133
|
-
|
|
166
|
+
drops at the boundary. Signing out stops refresh and the old token expires on
|
|
167
|
+
its own.
|
|
168
|
+
|
|
169
|
+
Revoke immediately when a token is exposed or an actor loses access:
|
|
170
|
+
|
|
171
|
+
```ts
|
|
172
|
+
await ablo.sessions.revoke({ id: session.id });
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
Agent sessions can rotate with overlap so a worker can adopt the replacement
|
|
176
|
+
before the previous token expires:
|
|
177
|
+
|
|
178
|
+
```ts
|
|
179
|
+
const replacement = await ablo.sessions.rotate({
|
|
180
|
+
id: session.id,
|
|
181
|
+
graceSeconds: 300,
|
|
182
|
+
ttlSeconds: 900,
|
|
183
|
+
});
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
Browser `ek_` sessions rotate through `authEndpoint`; do not distribute rotated
|
|
187
|
+
browser tokens manually.
|
|
134
188
|
|
|
135
189
|
### Offline & sign-out
|
|
136
190
|
|
|
@@ -145,20 +199,19 @@ those two lifetimes separate, which means:
|
|
|
145
199
|
connectivity or tab focus returns. The user stays signed in for as long as
|
|
146
200
|
your underlying session is valid, however brief or long the network drop.
|
|
147
201
|
- **The user is signed out only when the underlying session is genuinely
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
202
|
+
gone** — your `authEndpoint` responds `401` with the canonical
|
|
203
|
+
`{ error: { code: 'session_expired' } }` body. An unrelated `401` or `403`
|
|
204
|
+
is a policy/configuration failure, not proof that the login ended.
|
|
151
205
|
|
|
152
206
|
This mirrors the OAuth refresh-token rule (Okta/Auth0/Authgear): only a
|
|
153
207
|
rejection of the *long-lived* credential ends the session — a network failure
|
|
154
208
|
never does.
|
|
155
209
|
|
|
156
210
|
<Note>
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
network/`5xx` failures surface as
|
|
160
|
-
|
|
161
|
-
bounce a still-valid user to your sign-in page.
|
|
211
|
+
Use `credentialEndpointSuccessSchema` and `credentialEndpointErrorSchema` from
|
|
212
|
+
`@abloatai/ablo/auth` on the route. Return `session_expired` only when the
|
|
213
|
+
application login is actually gone, and let network/`5xx` failures surface as
|
|
214
|
+
errors.
|
|
162
215
|
</Note>
|
|
163
216
|
|
|
164
217
|
## Scope
|
|
@@ -175,8 +228,8 @@ Your schema lives in a **project** — you push it once (`npx ablo push`) and ev
|
|
|
175
228
|
session you mint resolves against it. The flow for serving end-users:
|
|
176
229
|
|
|
177
230
|
1. **Push your schema** to your project.
|
|
178
|
-
2. **Mint an `ek_` per user:** `sessions.create({ user: { id } })`. Your
|
|
179
|
-
commit to that one schema
|
|
231
|
+
2. **Mint an `ek_` per user:** `sessions.create({ user: { id }, can })`. Your
|
|
232
|
+
users commit to that one schema with only the operations in `can`.
|
|
180
233
|
|
|
181
234
|
**Your users do not have Ablo accounts.** You authenticate them however you
|
|
182
235
|
already do; your server's `sk_` mints the `ek_`. By default the session lands in
|
|
@@ -205,6 +258,7 @@ const { token } = await mintUserSessionKey({
|
|
|
205
258
|
organizationId: schemaOwnerOrgId,
|
|
206
259
|
projectId: schemaProjectId,
|
|
207
260
|
},
|
|
261
|
+
operations: ['task.read', 'task.update'],
|
|
208
262
|
ttlSeconds: 3600,
|
|
209
263
|
});
|
|
210
264
|
```
|
|
@@ -234,6 +288,6 @@ compromise — which is exactly why it never leaves your server.
|
|
|
234
288
|
| | User session (`ek_`) | Agent session (`rk_`) |
|
|
235
289
|
|---|---|---|
|
|
236
290
|
| For | a **person** in the browser | an **agent** / automation |
|
|
237
|
-
| Authority |
|
|
238
|
-
| Mint | `ablo.sessions.create({ user: { id } })` | `ablo.sessions.create({ agent: { id }, can })` |
|
|
291
|
+
| Authority | narrow (explicit `can` allowlist) | narrow (explicit `can` allowlist) |
|
|
292
|
+
| Mint | `ablo.sessions.create({ user: { id }, can })` | `ablo.sessions.create({ agent: { id }, can })` |
|
|
239
293
|
| Lives where | the user's **browser** | the agent runtime |
|
package/examples/README.md
CHANGED
|
@@ -37,7 +37,7 @@ no `package.json`, so Node resolves the entry path against the package
|
|
|
37
37
|
root and a bare `quickstart.ts` won't be found.
|
|
38
38
|
|
|
39
39
|
```bash
|
|
40
|
-
cd packages/
|
|
40
|
+
cd packages/ablo
|
|
41
41
|
ABLO_API_KEY=sk_test_... npx tsx examples/quickstart.ts
|
|
42
42
|
```
|
|
43
43
|
|
|
@@ -50,7 +50,7 @@ orchestrator drives the customer handler in-process so signer and
|
|
|
50
50
|
verifier exchange real signed bytes without leaving the process.
|
|
51
51
|
|
|
52
52
|
```bash
|
|
53
|
-
cd packages/
|
|
53
|
+
cd packages/ablo
|
|
54
54
|
npx tsx examples/data-source/run.ts
|
|
55
55
|
```
|
|
56
56
|
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* inside a transaction. The shape of the handlers stays identical.
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
-
import Ablo, { dataSource, sourceEventForOperation } from '@
|
|
18
|
+
import Ablo, { dataSource, sourceEventForOperation } from '@ablo/ablo';
|
|
19
19
|
import { schema } from './schema';
|
|
20
20
|
|
|
21
21
|
type TaskRow = {
|
package/examples/quickstart.ts
CHANGED
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
* ABLO_API_KEY=sk_test_... npx tsx examples/quickstart.ts
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import Ablo from '@
|
|
10
|
-
import { defineSchema, model, z } from '@
|
|
9
|
+
import Ablo from '@ablo/ablo';
|
|
10
|
+
import { defineSchema, model, z } from '@ablo/ablo/schema';
|
|
11
11
|
|
|
12
12
|
const schema = defineSchema({
|
|
13
13
|
weatherReports: model({
|
package/llms.txt
CHANGED
|
@@ -12,7 +12,7 @@ Every surface reaches the same coordinated state. They are not interchangeable.
|
|
|
12
12
|
|
|
13
13
|
- SDK, `@abloatai/ablo` with `transport: 'http'` — THE AGENTS THEMSELVES. Stateless, request/response, nothing held open; the credential is the identity. This is the main path — default to it.
|
|
14
14
|
- Coordination MCP, `@abloatai/mcp` — an agent living inside an MCP host (Claude, Cursor). Two jobs: MANAGING your Ablo the way the CLI does (`get_schema`, `list_projects`, `create_project`, `tail_logs`, `get_usage`), and claim/commit as tools over your rows. Call `get_schema` first — it is the only way to learn the model names every data tool needs. `init`, `push`, `pull`, `generate` have no tools (they touch your repo); run those in a shell.
|
|
15
|
-
- `humans()` with `@abloatai/
|
|
15
|
+
- `humans()` with `@abloatai/humans/react` — the interfaces a person watches agent work arrive in. The bare client is the coordination layer (commit, read, observe, claim); `humans()` is the plugin that adds the local watchable copy, live queries, and presence. It `requires: { duplex: true }`, so a `transport: 'http'` agent is rejected at construction rather than left holding a subscription that never delivers. It remains the compatibility default for omitted `plugins`; new code should install it explicitly from `@abloatai/humans`. There is no `agents()` plugin — agents are the default caller, not a special one. A browser NEVER receives the secret key; mint a session token.
|
|
16
16
|
- CLI, `ablo` — scaffolding, schema push, connecting a database. Terminals and CI. Agents must run it non-interactively (see the CLI section below).
|
|
17
17
|
- REST, `/api/v1` — runtimes with no SDK.
|
|
18
18
|
- Integration-helper MCP, hosted `/api/mcp` — teaching a coding assistant the SDK WHILE BUILDING an integration. Docs, schema lint, and scaffolds only; it has NO per-model data tools and cannot touch application rows.
|
|
@@ -50,7 +50,7 @@ const schema = defineSchema({
|
|
|
50
50
|
|
|
51
51
|
const ablo = Ablo({ schema, apiKey: process.env.ABLO_API_KEY });
|
|
52
52
|
|
|
53
|
-
const report = await ablo.weatherReports.
|
|
53
|
+
const report = await ablo.weatherReports.get({ id: 'report_stockholm' });
|
|
54
54
|
if (!report) throw new Error('Row not found');
|
|
55
55
|
|
|
56
56
|
// Claim the row (waits if someone else holds it), read the fresh copy off
|
|
@@ -74,9 +74,9 @@ For full integrations, use `integration-guide` as the canonical doc. It covers
|
|
|
74
74
|
the same model API across your own Data Source-backed app databases,
|
|
75
75
|
React selectors, multiplayer, and future agent workers.
|
|
76
76
|
|
|
77
|
-
Reads come in two flavors, and you pick by whether you can wait. `
|
|
77
|
+
Reads come in two flavors, and you pick by whether you can wait. `get({ id })`
|
|
78
78
|
(one row) and `list({ where })` (many) are async — they answer from the local
|
|
79
|
-
graph and fall back to the server, so await them. `local.
|
|
79
|
+
graph and fall back to the server, so await them. `local.get(id)`,
|
|
80
80
|
`local.list({ where })`, and `local.count({ where })` are the same reads narrowed
|
|
81
81
|
to what has already synced: nothing to await, reactive in render. There is no
|
|
82
82
|
second verb to learn — `local.` is the only difference. The query reads accept
|
|
@@ -88,7 +88,7 @@ Workers import the same app schema and select `transport: 'http'`. The transport
|
|
|
88
88
|
changes; the typed `ablo.<model>` contract does not. There is no public
|
|
89
89
|
schema-less or string-keyed model client.
|
|
90
90
|
|
|
91
|
-
React reads should use selector `useAblo`: `useAblo((ablo) => ablo.weatherReports.local.
|
|
91
|
+
React reads should use selector `useAblo`: `useAblo((ablo) => ablo.weatherReports.local.get(id))` (synchronous local read, reactive in render).
|
|
92
92
|
Use zero-argument `useAblo()` only when a component needs the client for an
|
|
93
93
|
event handler or effect. The selector form above is the complete reactive
|
|
94
94
|
surface — every read goes through it.
|
|
@@ -117,7 +117,7 @@ A change to one row reaches other rows three ways. ROUTING: a write fans out to
|
|
|
117
117
|
## Claimed Behavior
|
|
118
118
|
|
|
119
119
|
Reads never silently block. Schema reads stay open while a row is claimed.
|
|
120
|
-
Typed reads through `ablo.<model>.
|
|
120
|
+
Typed reads through `ablo.<model>.get({ id })` return the row by default,
|
|
121
121
|
even while it is claimed. Pass `ifClaimed: 'fail'` to throw
|
|
122
122
|
`AbloClaimedError`, and inspect active coordination separately through
|
|
123
123
|
`ablo.<model>.claim.state({ id })`.
|
|
@@ -205,10 +205,10 @@ Going live is three things, each done with a `sk_live_` key: register the produc
|
|
|
205
205
|
|
|
206
206
|
Import from these public paths only:
|
|
207
207
|
|
|
208
|
-
- `@abloatai/ablo` — `Ablo`, errors, typed model clients, claims, and `dataSource`.
|
|
208
|
+
- `@abloatai/ablo` — headless HTTP `Ablo`, errors, typed model clients, claims, durable observation, and `dataSource`.
|
|
209
|
+
- `@abloatai/ablo/client` — reactive WebSocket client, presence, and the human-facing materializer.
|
|
209
210
|
- `@abloatai/ablo/schema` — schema DSL.
|
|
210
211
|
- `@abloatai/ablo/react` — React provider and hooks.
|
|
211
|
-
- `@abloatai/ablo/testing` — test harnesses and mocks.
|
|
212
212
|
- `@abloatai/ablo/source` — `dataSource`, the `DataSourceAdapter` spine, `prismaDataSource`. For a customer-canonical Data Source endpoint.
|
|
213
213
|
- `@abloatai/ablo/source/next` — `dataSourceNext` (Next.js App Router `{ POST }`).
|
|
214
214
|
- `@abloatai/ablo/source/drizzle` — `drizzleDataSource`.
|