@laserdata/laser-sdk 0.0.1-rc.2 → 0.0.1-rc.22
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/README.md +5 -5
- package/dist/agent/agdx.d.ts +55 -0
- package/dist/agent/agdx.d.ts.map +1 -0
- package/dist/agent/agdx.js +447 -0
- package/dist/agent/agdx.js.map +1 -0
- package/dist/agent/assembler.d.ts +29 -0
- package/dist/agent/assembler.d.ts.map +1 -0
- package/dist/agent/assembler.js +69 -0
- package/dist/agent/assembler.js.map +1 -0
- package/dist/agent/builder.d.ts +114 -0
- package/dist/agent/builder.d.ts.map +1 -0
- package/dist/agent/builder.js +334 -0
- package/dist/agent/builder.js.map +1 -0
- package/dist/agent/context.d.ts +68 -0
- package/dist/agent/context.d.ts.map +1 -0
- package/dist/agent/context.js +212 -0
- package/dist/agent/context.js.map +1 -0
- package/dist/agent/contract.d.ts +70 -0
- package/dist/agent/contract.d.ts.map +1 -0
- package/dist/agent/contract.js +275 -0
- package/dist/agent/contract.js.map +1 -0
- package/dist/agent/registry.d.ts +76 -0
- package/dist/agent/registry.d.ts.map +1 -0
- package/dist/agent/registry.js +286 -0
- package/dist/agent/registry.js.map +1 -0
- package/dist/agent/reliable-consumer.d.ts +126 -0
- package/dist/agent/reliable-consumer.d.ts.map +1 -0
- package/dist/agent/reliable-consumer.js +551 -0
- package/dist/agent/reliable-consumer.js.map +1 -0
- package/dist/agent/replies.d.ts +28 -0
- package/dist/agent/replies.d.ts.map +1 -0
- package/dist/agent/replies.js +175 -0
- package/dist/agent/replies.js.map +1 -0
- package/dist/agent/router.d.ts +72 -0
- package/dist/agent/router.d.ts.map +1 -0
- package/dist/agent/router.js +172 -0
- package/dist/agent/router.js.map +1 -0
- package/dist/agent/scope.d.ts +16 -0
- package/dist/agent/scope.d.ts.map +1 -0
- package/dist/agent/scope.js +34 -0
- package/dist/agent/scope.js.map +1 -0
- package/dist/agent/workflow.d.ts +85 -0
- package/dist/agent/workflow.d.ts.map +1 -0
- package/dist/agent/workflow.js +416 -0
- package/dist/agent/workflow.js.map +1 -0
- package/dist/blob.d.ts +12 -0
- package/dist/blob.d.ts.map +1 -0
- package/dist/blob.js +34 -0
- package/dist/blob.js.map +1 -0
- package/dist/bridges/a2a.d.ts +89 -0
- package/dist/bridges/a2a.d.ts.map +1 -0
- package/dist/bridges/a2a.js +244 -0
- package/dist/bridges/a2a.js.map +1 -0
- package/dist/bridges/agui.d.ts +66 -0
- package/dist/bridges/agui.d.ts.map +1 -0
- package/dist/bridges/agui.js +335 -0
- package/dist/bridges/agui.js.map +1 -0
- package/dist/bridges/edge-auth.d.ts +16 -0
- package/dist/bridges/edge-auth.d.ts.map +1 -0
- package/dist/bridges/edge-auth.js +19 -0
- package/dist/bridges/edge-auth.js.map +1 -0
- package/dist/bridges/hops.d.ts +9 -0
- package/dist/bridges/hops.d.ts.map +1 -0
- package/dist/bridges/hops.js +16 -0
- package/dist/bridges/hops.js.map +1 -0
- package/dist/bridges/mcp.d.ts +79 -0
- package/dist/bridges/mcp.d.ts.map +1 -0
- package/dist/bridges/mcp.js +248 -0
- package/dist/bridges/mcp.js.map +1 -0
- package/dist/client/bytes.d.ts +3 -0
- package/dist/client/bytes.d.ts.map +1 -0
- package/dist/client/bytes.js +9 -0
- package/dist/client/bytes.js.map +1 -0
- package/dist/client/capabilities.d.ts +36 -0
- package/dist/client/capabilities.d.ts.map +1 -0
- package/dist/client/capabilities.js +91 -0
- package/dist/client/capabilities.js.map +1 -0
- package/dist/client/errors.d.ts +178 -0
- package/dist/client/errors.d.ts.map +1 -0
- package/dist/client/errors.js +192 -0
- package/dist/client/errors.js.map +1 -0
- package/dist/client/internals.d.ts +5 -0
- package/dist/client/internals.d.ts.map +1 -0
- package/dist/client/internals.js +5 -0
- package/dist/client/internals.js.map +1 -0
- package/dist/client/laser.d.ts +238 -0
- package/dist/client/laser.d.ts.map +1 -0
- package/dist/client/laser.js +831 -0
- package/dist/client/laser.js.map +1 -0
- package/dist/client/laserdata-ca.d.ts +2 -0
- package/dist/client/laserdata-ca.d.ts.map +1 -0
- package/dist/client/laserdata-ca.js +35 -0
- package/dist/client/laserdata-ca.js.map +1 -0
- package/dist/client/managed.d.ts +6 -0
- package/dist/client/managed.d.ts.map +1 -0
- package/dist/client/managed.js +19 -0
- package/dist/client/managed.js.map +1 -0
- package/dist/context-scope.d.ts +40 -0
- package/dist/context-scope.d.ts.map +1 -0
- package/dist/context-scope.js +73 -0
- package/dist/context-scope.js.map +1 -0
- package/dist/context.d.ts +64 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +149 -0
- package/dist/context.js.map +1 -0
- package/dist/conversation-state.d.ts +24 -0
- package/dist/conversation-state.d.ts.map +1 -0
- package/dist/conversation-state.js +29 -0
- package/dist/conversation-state.js.map +1 -0
- package/dist/crash-context.d.ts +11 -0
- package/dist/crash-context.d.ts.map +1 -0
- package/dist/crash-context.js +62 -0
- package/dist/crash-context.js.map +1 -0
- package/dist/full.d.ts +3 -0
- package/dist/full.d.ts.map +1 -0
- package/dist/full.js +3 -0
- package/dist/full.js.map +1 -0
- package/dist/govern.d.ts +133 -0
- package/dist/govern.d.ts.map +1 -0
- package/dist/govern.js +347 -0
- package/dist/govern.js.map +1 -0
- package/dist/iggy/apache-iggy.d.ts +173 -0
- package/dist/iggy/apache-iggy.d.ts.map +1 -0
- package/dist/iggy/apache-iggy.js +634 -0
- package/dist/iggy/apache-iggy.js.map +1 -0
- package/dist/index.d.ts +121 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +64 -0
- package/dist/index.js.map +1 -0
- package/dist/intent.d.ts +75 -0
- package/dist/intent.d.ts.map +1 -0
- package/dist/intent.js +195 -0
- package/dist/intent.js.map +1 -0
- package/dist/managed/batch.d.ts +5 -0
- package/dist/managed/batch.d.ts.map +1 -0
- package/dist/managed/batch.js +32 -0
- package/dist/managed/batch.js.map +1 -0
- package/dist/managed/forks.d.ts +72 -0
- package/dist/managed/forks.d.ts.map +1 -0
- package/dist/managed/forks.js +188 -0
- package/dist/managed/forks.js.map +1 -0
- package/dist/managed/graph.d.ts +58 -0
- package/dist/managed/graph.d.ts.map +1 -0
- package/dist/managed/graph.js +176 -0
- package/dist/managed/graph.js.map +1 -0
- package/dist/managed/kv.d.ts +144 -0
- package/dist/managed/kv.d.ts.map +1 -0
- package/dist/managed/kv.js +502 -0
- package/dist/managed/kv.js.map +1 -0
- package/dist/managed/projections.d.ts +61 -0
- package/dist/managed/projections.d.ts.map +1 -0
- package/dist/managed/projections.js +191 -0
- package/dist/managed/projections.js.map +1 -0
- package/dist/managed/query.d.ts +72 -0
- package/dist/managed/query.d.ts.map +1 -0
- package/dist/managed/query.js +287 -0
- package/dist/managed/query.js.map +1 -0
- package/dist/managed/rbac.d.ts +16 -0
- package/dist/managed/rbac.d.ts.map +1 -0
- package/dist/managed/rbac.js +82 -0
- package/dist/managed/rbac.js.map +1 -0
- package/dist/managed/runs.d.ts +40 -0
- package/dist/managed/runs.d.ts.map +1 -0
- package/dist/managed/runs.js +112 -0
- package/dist/managed/runs.js.map +1 -0
- package/dist/managed/watch.d.ts +21 -0
- package/dist/managed/watch.d.ts.map +1 -0
- package/dist/managed/watch.js +73 -0
- package/dist/managed/watch.js.map +1 -0
- package/dist/memory/handle.d.ts +77 -0
- package/dist/memory/handle.d.ts.map +1 -0
- package/dist/memory/handle.js +234 -0
- package/dist/memory/handle.js.map +1 -0
- package/dist/memory/log-memory.d.ts +38 -0
- package/dist/memory/log-memory.d.ts.map +1 -0
- package/dist/memory/log-memory.js +309 -0
- package/dist/memory/log-memory.js.map +1 -0
- package/dist/memory/topic.d.ts +22 -0
- package/dist/memory/topic.d.ts.map +1 -0
- package/dist/memory/topic.js +56 -0
- package/dist/memory/topic.js.map +1 -0
- package/dist/memory/types.d.ts +108 -0
- package/dist/memory/types.d.ts.map +1 -0
- package/dist/memory/types.js +127 -0
- package/dist/memory/types.js.map +1 -0
- package/dist/memory/vector-memory.d.ts +20 -0
- package/dist/memory/vector-memory.d.ts.map +1 -0
- package/dist/memory/vector-memory.js +193 -0
- package/dist/memory/vector-memory.js.map +1 -0
- package/dist/memory.d.ts +7 -0
- package/dist/memory.d.ts.map +1 -0
- package/dist/memory.js +6 -0
- package/dist/memory.js.map +1 -0
- package/dist/observe.d.ts +10 -0
- package/dist/observe.d.ts.map +1 -0
- package/dist/observe.js +5 -0
- package/dist/observe.js.map +1 -0
- package/dist/opentelemetry.d.ts +22 -0
- package/dist/opentelemetry.d.ts.map +1 -0
- package/dist/opentelemetry.js +38 -0
- package/dist/opentelemetry.js.map +1 -0
- package/dist/provenance/agent-topic.d.ts +14 -0
- package/dist/provenance/agent-topic.d.ts.map +1 -0
- package/dist/provenance/agent-topic.js +13 -0
- package/dist/provenance/agent-topic.js.map +1 -0
- package/dist/provenance/provenance.d.ts +24 -0
- package/dist/provenance/provenance.d.ts.map +1 -0
- package/dist/provenance/provenance.js +186 -0
- package/dist/provenance/provenance.js.map +1 -0
- package/dist/provenance/session-policy.d.ts +4 -0
- package/dist/provenance/session-policy.d.ts.map +1 -0
- package/dist/provenance/session-policy.js +5 -0
- package/dist/provenance/session-policy.js.map +1 -0
- package/dist/runtime/async-once.d.ts +6 -0
- package/dist/runtime/async-once.d.ts.map +1 -0
- package/dist/runtime/async-once.js +19 -0
- package/dist/runtime/async-once.js.map +1 -0
- package/dist/runtime/clock.d.ts +14 -0
- package/dist/runtime/clock.d.ts.map +1 -0
- package/dist/runtime/clock.js +21 -0
- package/dist/runtime/clock.js.map +1 -0
- package/dist/runtime/mutex.d.ts +5 -0
- package/dist/runtime/mutex.d.ts.map +1 -0
- package/dist/runtime/mutex.js +23 -0
- package/dist/runtime/mutex.js.map +1 -0
- package/dist/runtime/ulid.d.ts +7 -0
- package/dist/runtime/ulid.d.ts.map +1 -0
- package/dist/runtime/ulid.js +17 -0
- package/dist/runtime/ulid.js.map +1 -0
- package/dist/schema-codecs.d.ts +16 -0
- package/dist/schema-codecs.d.ts.map +1 -0
- package/dist/schema-codecs.js +174 -0
- package/dist/schema-codecs.js.map +1 -0
- package/dist/signing.d.ts +63 -0
- package/dist/signing.d.ts.map +1 -0
- package/dist/signing.js +288 -0
- package/dist/signing.js.map +1 -0
- package/dist/snapshot.d.ts +24 -0
- package/dist/snapshot.d.ts.map +1 -0
- package/dist/snapshot.js +80 -0
- package/dist/snapshot.js.map +1 -0
- package/dist/state-store.d.ts +20 -0
- package/dist/state-store.d.ts.map +1 -0
- package/dist/state-store.js +70 -0
- package/dist/state-store.js.map +1 -0
- package/dist/stream/codecs.d.ts +9 -0
- package/dist/stream/codecs.d.ts.map +1 -0
- package/dist/stream/codecs.js +83 -0
- package/dist/stream/codecs.js.map +1 -0
- package/dist/stream/consumer.d.ts +50 -0
- package/dist/stream/consumer.d.ts.map +1 -0
- package/dist/stream/consumer.js +145 -0
- package/dist/stream/consumer.js.map +1 -0
- package/dist/stream/cursor.d.ts +26 -0
- package/dist/stream/cursor.d.ts.map +1 -0
- package/dist/stream/cursor.js +83 -0
- package/dist/stream/cursor.js.map +1 -0
- package/dist/stream/header-value.d.ts +18 -0
- package/dist/stream/header-value.d.ts.map +1 -0
- package/dist/stream/header-value.js +70 -0
- package/dist/stream/header-value.js.map +1 -0
- package/dist/stream/polling-strategy.d.ts +14 -0
- package/dist/stream/polling-strategy.d.ts.map +1 -0
- package/dist/stream/polling-strategy.js +2 -0
- package/dist/stream/polling-strategy.js.map +1 -0
- package/dist/stream/producer.d.ts +44 -0
- package/dist/stream/producer.d.ts.map +1 -0
- package/dist/stream/producer.js +125 -0
- package/dist/stream/producer.js.map +1 -0
- package/dist/stream/publish.d.ts +83 -0
- package/dist/stream/publish.d.ts.map +1 -0
- package/dist/stream/publish.js +287 -0
- package/dist/stream/publish.js.map +1 -0
- package/dist/stream/record.d.ts +29 -0
- package/dist/stream/record.d.ts.map +1 -0
- package/dist/stream/record.js +152 -0
- package/dist/stream/record.js.map +1 -0
- package/dist/stream/routing.d.ts +10 -0
- package/dist/stream/routing.d.ts.map +1 -0
- package/dist/stream/routing.js +2 -0
- package/dist/stream/routing.js.map +1 -0
- package/dist/stream/stream.d.ts +14 -0
- package/dist/stream/stream.d.ts.map +1 -0
- package/dist/stream/stream.js +26 -0
- package/dist/stream/stream.js.map +1 -0
- package/dist/stream/topic.d.ts +52 -0
- package/dist/stream/topic.d.ts.map +1 -0
- package/dist/stream/topic.js +181 -0
- package/dist/stream/topic.js.map +1 -0
- package/dist/stream/typed-topic.d.ts +59 -0
- package/dist/stream/typed-topic.d.ts.map +1 -0
- package/dist/stream/typed-topic.js +119 -0
- package/dist/stream/typed-topic.js.map +1 -0
- package/dist/swarm.d.ts +16 -0
- package/dist/swarm.d.ts.map +1 -0
- package/dist/swarm.js +40 -0
- package/dist/swarm.js.map +1 -0
- package/dist/testing.d.ts +16 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +19 -0
- package/dist/testing.js.map +1 -0
- package/dist/types/ids.d.ts +48 -0
- package/dist/types/ids.d.ts.map +1 -0
- package/dist/types/ids.js +161 -0
- package/dist/types/ids.js.map +1 -0
- package/dist/wire/agent-record.d.ts +24 -0
- package/dist/wire/agent-record.d.ts.map +1 -0
- package/dist/wire/agent-record.js +99 -0
- package/dist/wire/agent-record.js.map +1 -0
- package/dist/wire/agent-workflow.d.ts +118 -0
- package/dist/wire/agent-workflow.d.ts.map +1 -0
- package/dist/wire/agent-workflow.js +290 -0
- package/dist/wire/agent-workflow.js.map +1 -0
- package/dist/wire/agent.d.ts +255 -0
- package/dist/wire/agent.d.ts.map +1 -0
- package/dist/wire/agent.js +792 -0
- package/dist/wire/agent.js.map +1 -0
- package/dist/wire/authz.d.ts +186 -0
- package/dist/wire/authz.d.ts.map +1 -0
- package/dist/wire/authz.js +545 -0
- package/dist/wire/authz.js.map +1 -0
- package/dist/wire/batch.d.ts +17 -0
- package/dist/wire/batch.d.ts.map +1 -0
- package/dist/wire/batch.js +41 -0
- package/dist/wire/batch.js.map +1 -0
- package/dist/wire/browse.d.ts +96 -0
- package/dist/wire/browse.d.ts.map +1 -0
- package/dist/wire/browse.js +201 -0
- package/dist/wire/browse.js.map +1 -0
- package/dist/wire/cbor.d.ts +35 -0
- package/dist/wire/cbor.d.ts.map +1 -0
- package/dist/wire/cbor.js +231 -0
- package/dist/wire/cbor.js.map +1 -0
- package/dist/wire/change.d.ts +12 -0
- package/dist/wire/change.d.ts.map +1 -0
- package/dist/wire/change.js +22 -0
- package/dist/wire/change.js.map +1 -0
- package/dist/wire/clients.d.ts +27 -0
- package/dist/wire/clients.d.ts.map +1 -0
- package/dist/wire/clients.js +64 -0
- package/dist/wire/clients.js.map +1 -0
- package/dist/wire/codes.d.ts +67 -0
- package/dist/wire/codes.d.ts.map +1 -0
- package/dist/wire/codes.js +67 -0
- package/dist/wire/codes.js.map +1 -0
- package/dist/wire/commands.d.ts +68 -0
- package/dist/wire/commands.d.ts.map +1 -0
- package/dist/wire/commands.js +140 -0
- package/dist/wire/commands.js.map +1 -0
- package/dist/wire/content.d.ts +17 -0
- package/dist/wire/content.d.ts.map +1 -0
- package/dist/wire/content.js +47 -0
- package/dist/wire/content.js.map +1 -0
- package/dist/wire/control.d.ts +170 -0
- package/dist/wire/control.d.ts.map +1 -0
- package/dist/wire/control.js +453 -0
- package/dist/wire/control.js.map +1 -0
- package/dist/wire/fork.d.ts +112 -0
- package/dist/wire/fork.d.ts.map +1 -0
- package/dist/wire/fork.js +280 -0
- package/dist/wire/fork.js.map +1 -0
- package/dist/wire/forward.d.ts +23 -0
- package/dist/wire/forward.d.ts.map +1 -0
- package/dist/wire/forward.js +72 -0
- package/dist/wire/forward.js.map +1 -0
- package/dist/wire/graph.d.ts +181 -0
- package/dist/wire/graph.d.ts.map +1 -0
- package/dist/wire/graph.js +554 -0
- package/dist/wire/graph.js.map +1 -0
- package/dist/wire/hashing.d.ts +2 -0
- package/dist/wire/hashing.d.ts.map +1 -0
- package/dist/wire/hashing.js +21 -0
- package/dist/wire/hashing.js.map +1 -0
- package/dist/wire/headers.d.ts +32 -0
- package/dist/wire/headers.d.ts.map +1 -0
- package/dist/wire/headers.js +32 -0
- package/dist/wire/headers.js.map +1 -0
- package/dist/wire/hello.d.ts +50 -0
- package/dist/wire/hello.d.ts.map +1 -0
- package/dist/wire/hello.js +122 -0
- package/dist/wire/hello.js.map +1 -0
- package/dist/wire/http.d.ts +95 -0
- package/dist/wire/http.d.ts.map +1 -0
- package/dist/wire/http.js +282 -0
- package/dist/wire/http.js.map +1 -0
- package/dist/wire/ids.d.ts +50 -0
- package/dist/wire/ids.d.ts.map +1 -0
- package/dist/wire/ids.js +198 -0
- package/dist/wire/ids.js.map +1 -0
- package/dist/wire/index.d.ts +32 -0
- package/dist/wire/index.d.ts.map +1 -0
- package/dist/wire/index.js +32 -0
- package/dist/wire/index.js.map +1 -0
- package/dist/wire/kv.d.ts +260 -0
- package/dist/wire/kv.d.ts.map +1 -0
- package/dist/wire/kv.js +650 -0
- package/dist/wire/kv.js.map +1 -0
- package/dist/wire/limits.d.ts +36 -0
- package/dist/wire/limits.d.ts.map +1 -0
- package/dist/wire/limits.js +36 -0
- package/dist/wire/limits.js.map +1 -0
- package/dist/wire/memory.d.ts +17 -0
- package/dist/wire/memory.d.ts.map +1 -0
- package/dist/wire/memory.js +65 -0
- package/dist/wire/memory.js.map +1 -0
- package/dist/wire/mutation.d.ts +10 -0
- package/dist/wire/mutation.d.ts.map +1 -0
- package/dist/wire/mutation.js +18 -0
- package/dist/wire/mutation.js.map +1 -0
- package/dist/wire/query.d.ts +210 -0
- package/dist/wire/query.d.ts.map +1 -0
- package/dist/wire/query.js +594 -0
- package/dist/wire/query.js.map +1 -0
- package/dist/wire/result.d.ts +25 -0
- package/dist/wire/result.d.ts.map +1 -0
- package/dist/wire/result.js +52 -0
- package/dist/wire/result.js.map +1 -0
- package/dist/wire/snapshot.d.ts +11 -0
- package/dist/wire/snapshot.d.ts.map +1 -0
- package/dist/wire/snapshot.js +50 -0
- package/dist/wire/snapshot.js.map +1 -0
- package/dist/wire/topics.d.ts +5 -0
- package/dist/wire/topics.d.ts.map +1 -0
- package/dist/wire/topics.js +5 -0
- package/dist/wire/topics.js.map +1 -0
- package/dist/wire/topology.d.ts +24 -0
- package/dist/wire/topology.d.ts.map +1 -0
- package/dist/wire/topology.js +56 -0
- package/dist/wire/topology.js.map +1 -0
- package/dist/wire/value.d.ts +21 -0
- package/dist/wire/value.d.ts.map +1 -0
- package/dist/wire/value.js +40 -0
- package/dist/wire/value.js.map +1 -0
- package/package.json +8 -6
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { InvalidError } from "../client/errors.js";
|
|
2
|
+
import { executeManaged } from "../client/managed.js";
|
|
3
|
+
import { AGDX_BATCH_CODE, BATCH_OP_VERSION } from "../wire/codes.js";
|
|
4
|
+
import { BatchCommand } from "../wire/commands.js";
|
|
5
|
+
import { MAX_BATCH_OPS, MAX_FRAME_BYTES, MAX_VALUE_BYTES } from "../wire/limits.js";
|
|
6
|
+
function validateBatchOps(ops) {
|
|
7
|
+
if (ops.length > MAX_BATCH_OPS) {
|
|
8
|
+
throw new InvalidError(`batch has ${String(ops.length)} ops, exceeds cap ${String(MAX_BATCH_OPS)}`);
|
|
9
|
+
}
|
|
10
|
+
let total = 0;
|
|
11
|
+
for (const item of ops) {
|
|
12
|
+
if (item.code === AGDX_BATCH_CODE) {
|
|
13
|
+
throw new InvalidError("a batch may not contain a batch op");
|
|
14
|
+
}
|
|
15
|
+
if (item.payload.byteLength > MAX_VALUE_BYTES) {
|
|
16
|
+
throw new InvalidError(`batch op payload is ${String(item.payload.byteLength)}B, exceeds cap ${String(MAX_VALUE_BYTES)}B`);
|
|
17
|
+
}
|
|
18
|
+
total += item.payload.byteLength;
|
|
19
|
+
}
|
|
20
|
+
if (total > MAX_FRAME_BYTES) {
|
|
21
|
+
throw new InvalidError(`batch total payload is ${String(total)}B, exceeds cap ${String(MAX_FRAME_BYTES)}B`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export async function executeBatch(transport, capabilities, ops) {
|
|
25
|
+
validateBatchOps(ops);
|
|
26
|
+
const reply = await executeManaged(transport, capabilities, BatchCommand, {
|
|
27
|
+
v: BATCH_OP_VERSION,
|
|
28
|
+
ops
|
|
29
|
+
});
|
|
30
|
+
return reply.results;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=batch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch.js","sourceRoot":"","sources":["../../src/managed/batch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,EAAE,cAAc,EAAyB,MAAM,sBAAsB,CAAA;AAC5E,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEnF,SAAS,gBAAgB,CAAC,GAAyB;IACjD,IAAI,GAAG,CAAC,MAAM,GAAG,aAAa,EAAE,CAAC;QAC/B,MAAM,IAAI,YAAY,CACpB,aAAa,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,qBAAqB,MAAM,CAAC,aAAa,CAAC,EAAE,CAC5E,CAAA;IACH,CAAC;IACD,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YAClC,MAAM,IAAI,YAAY,CAAC,oCAAoC,CAAC,CAAA;QAC9D,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,eAAe,EAAE,CAAC;YAC9C,MAAM,IAAI,YAAY,CACpB,uBAAuB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,kBAAkB,MAAM,CAAC,eAAe,CAAC,GAAG,CACnG,CAAA;QACH,CAAC;QACD,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAA;IAClC,CAAC;IACD,IAAI,KAAK,GAAG,eAAe,EAAE,CAAC;QAC5B,MAAM,IAAI,YAAY,CACpB,0BAA0B,MAAM,CAAC,KAAK,CAAC,kBAAkB,MAAM,CAAC,eAAe,CAAC,GAAG,CACpF,CAAA;IACH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,SAA2B,EAC3B,YAA0B,EAC1B,GAAyB;IAEzB,gBAAgB,CAAC,GAAG,CAAC,CAAA;IACrB,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE;QACxE,CAAC,EAAE,gBAAgB;QACnB,GAAG;KACJ,CAAC,CAAA;IACF,OAAO,KAAK,CAAC,OAAO,CAAA;AACtB,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type { Capabilities } from "../client/capabilities.js";
|
|
2
|
+
import { type ManagedTransport } from "../client/managed.js";
|
|
3
|
+
import { type ForkInfo } from "../wire/fork.js";
|
|
4
|
+
export type ForkBackend = ManagedTransport;
|
|
5
|
+
/** Operates on one copy-on-write fork. */
|
|
6
|
+
export declare class Fork {
|
|
7
|
+
private readonly backend;
|
|
8
|
+
private readonly getCapabilities;
|
|
9
|
+
readonly forkId: string;
|
|
10
|
+
constructor(backend: ForkBackend, getCapabilities: () => Promise<Capabilities>, forkId: string);
|
|
11
|
+
static forks(backend: ForkBackend, getCapabilities: () => Promise<Capabilities>): Promise<readonly ForkInfo[]>;
|
|
12
|
+
/** Starts a fork creation request. */
|
|
13
|
+
create(): ForkCreateRequest;
|
|
14
|
+
/** Applies speculative rows to the trunk and returns the applied row count. */
|
|
15
|
+
promote(): Promise<number>;
|
|
16
|
+
/** Discards speculative rows and reports whether the fork existed. */
|
|
17
|
+
squash(): Promise<boolean>;
|
|
18
|
+
/** Starts a speculative row write at an exact log position. */
|
|
19
|
+
putRow(table: string, partitionId: number, offset: bigint): ForkPutRequest;
|
|
20
|
+
}
|
|
21
|
+
/** Builds a fork creation request. */
|
|
22
|
+
export declare class ForkCreateRequest {
|
|
23
|
+
private readonly backend;
|
|
24
|
+
private readonly getCapabilities;
|
|
25
|
+
private readonly forkId;
|
|
26
|
+
private forkParent;
|
|
27
|
+
private forkKind;
|
|
28
|
+
private forkTables;
|
|
29
|
+
constructor(backend: ForkBackend, getCapabilities: () => Promise<Capabilities>, forkId: string);
|
|
30
|
+
/** Creates a frozen snapshot at current trunk offsets. */
|
|
31
|
+
severed(): this;
|
|
32
|
+
/** Creates a live branch that follows trunk appends. */
|
|
33
|
+
continuous(): this;
|
|
34
|
+
/** Records an audit parent without changing the trunk base. */
|
|
35
|
+
parent(parent: string): this;
|
|
36
|
+
/** Restricts a severed snapshot to the supplied tables. */
|
|
37
|
+
tables(tables: readonly string[]): this;
|
|
38
|
+
/** Opens the fork and returns its metadata. */
|
|
39
|
+
send(): Promise<ForkInfo>;
|
|
40
|
+
}
|
|
41
|
+
/** Builds one speculative row write. */
|
|
42
|
+
export declare class ForkPutRequest {
|
|
43
|
+
private readonly backend;
|
|
44
|
+
private readonly getCapabilities;
|
|
45
|
+
private readonly forkId;
|
|
46
|
+
private readonly table;
|
|
47
|
+
private readonly partitionId;
|
|
48
|
+
private readonly offset;
|
|
49
|
+
private forkProjectionId;
|
|
50
|
+
private forkProjectionVersion;
|
|
51
|
+
private forkFields;
|
|
52
|
+
private forkMetadata;
|
|
53
|
+
private forkPayload;
|
|
54
|
+
private forkEmbedding;
|
|
55
|
+
private forkTombstone;
|
|
56
|
+
constructor(backend: ForkBackend, getCapabilities: () => Promise<Capabilities>, forkId: string, table: string, partitionId: number, offset: bigint);
|
|
57
|
+
/** Sets the row projection identity. */
|
|
58
|
+
projection(id: string, version: number): this;
|
|
59
|
+
/** Adds an indexed field. */
|
|
60
|
+
field(name: string, value: string): this;
|
|
61
|
+
/** Adds non-indexed metadata. */
|
|
62
|
+
metadata(name: string, value: string): this;
|
|
63
|
+
/** Attaches an opaque payload. */
|
|
64
|
+
payload(payload: Uint8Array): this;
|
|
65
|
+
/** Attaches an embedding encoded as a JSON array. */
|
|
66
|
+
embedding(embedding: string): this;
|
|
67
|
+
/** Hides the trunk row at this coordinate. */
|
|
68
|
+
tombstone(): this;
|
|
69
|
+
/** Writes the speculative row. */
|
|
70
|
+
send(): Promise<void>;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=forks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forks.d.ts","sourceRoot":"","sources":["../../src/managed/forks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE7D,OAAO,EAAkB,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAS5E,OAAO,EACL,KAAK,QAAQ,EAKd,MAAM,iBAAiB,CAAA;AAExB,MAAM,MAAM,WAAW,GAAG,gBAAgB,CAAA;AA4B1C,0CAA0C;AAC1C,qBAAa,IAAI;IAEb,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM;IAHzB,YACmB,OAAO,EAAE,WAAW,EACpB,eAAe,EAAE,MAAM,OAAO,CAAC,YAAY,CAAC,EACpD,MAAM,EAAE,MAAM,EACrB;IAEJ,OAAa,KAAK,CAChB,OAAO,EAAE,WAAW,EACpB,eAAe,EAAE,MAAM,OAAO,CAAC,YAAY,CAAC,GAC3C,OAAO,CAAC,SAAS,QAAQ,EAAE,CAAC,CAG9B;IAED,sCAAsC;IACtC,MAAM,IAAI,iBAAiB,CAE1B;IAED,+EAA+E;IACzE,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAO/B;IAED,sEAAsE;IAChE,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAO/B;IAED,+DAA+D;IAC/D,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc,CASzE;CACF;AAED,sCAAsC;AACtC,qBAAa,iBAAiB;IAM1B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAPzB,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,UAAU,CAAwB;IAE1C,YACmB,OAAO,EAAE,WAAW,EACpB,eAAe,EAAE,MAAM,OAAO,CAAC,YAAY,CAAC,EAC5C,MAAM,EAAE,MAAM,EAC7B;IAEJ,0DAA0D;IAC1D,OAAO,IAAI,IAAI,CAGd;IAED,wDAAwD;IACxD,UAAU,IAAI,IAAI,CAGjB;IAED,+DAA+D;IAC/D,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAG3B;IAED,2DAA2D;IAC3D,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAGtC;IAED,+CAA+C;IACzC,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC,CAW9B;CACF;AAED,wCAAwC;AACxC,qBAAa,cAAc;IAUvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAdzB,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,qBAAqB,CAAI;IACjC,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,WAAW,CAAwB;IAC3C,OAAO,CAAC,aAAa,CAAoB;IACzC,OAAO,CAAC,aAAa,CAAQ;IAE7B,YACmB,OAAO,EAAE,WAAW,EACpB,eAAe,EAAE,MAAM,OAAO,CAAC,YAAY,CAAC,EAC5C,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EAC7B;IAEJ,wCAAwC;IACxC,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAI5C;IAED,6BAA6B;IAC7B,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAGvC;IAED,iCAAiC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAG1C;IAED,kCAAkC;IAClC,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,CAGjC;IAED,qDAAqD;IACrD,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAGjC;IAED,8CAA8C;IAC9C,SAAS,IAAI,IAAI,CAGhB;IAED,kCAAkC;IAC5B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAiB1B;CACF"}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
import { ForkExecutionError } from "../client/errors.js";
|
|
2
|
+
import { executeManaged } from "../client/managed.js";
|
|
3
|
+
import { ForkCreateCommand, ForkDeleteCommand, ForkListCommand, ForkPromoteCommand, ForkPutCommand } from "../wire/commands.js";
|
|
4
|
+
import { validateForkId } from "../wire/fork.js";
|
|
5
|
+
async function executeFork(backend, capabilities, command, request) {
|
|
6
|
+
const reply = await executeManaged(backend, capabilities, command, request);
|
|
7
|
+
if (reply.kind === "ok")
|
|
8
|
+
return reply.outcome;
|
|
9
|
+
if (reply.kind === "err")
|
|
10
|
+
throw new ForkExecutionError(`fork command failed: ${reply.error.kind}`, reply.error);
|
|
11
|
+
return { kind: "unrecognized", tag: reply.tag, value: undefined };
|
|
12
|
+
}
|
|
13
|
+
function unexpected(op, outcome) {
|
|
14
|
+
return new ForkExecutionError(`fork ${op}: unexpected reply outcome \`${outcome.kind}\``, outcome);
|
|
15
|
+
}
|
|
16
|
+
async function fetchForks(backend, capabilities) {
|
|
17
|
+
const outcome = await executeFork(backend, capabilities, ForkListCommand, undefined);
|
|
18
|
+
if (outcome.kind === "list")
|
|
19
|
+
return outcome.forks;
|
|
20
|
+
throw unexpected("list", outcome);
|
|
21
|
+
}
|
|
22
|
+
/** Operates on one copy-on-write fork. */
|
|
23
|
+
export class Fork {
|
|
24
|
+
backend;
|
|
25
|
+
getCapabilities;
|
|
26
|
+
forkId;
|
|
27
|
+
constructor(backend, getCapabilities, forkId) {
|
|
28
|
+
this.backend = backend;
|
|
29
|
+
this.getCapabilities = getCapabilities;
|
|
30
|
+
this.forkId = forkId;
|
|
31
|
+
}
|
|
32
|
+
static async forks(backend, getCapabilities) {
|
|
33
|
+
const capabilities = await getCapabilities();
|
|
34
|
+
return fetchForks(backend, capabilities);
|
|
35
|
+
}
|
|
36
|
+
/** Starts a fork creation request. */
|
|
37
|
+
create() {
|
|
38
|
+
return new ForkCreateRequest(this.backend, this.getCapabilities, this.forkId);
|
|
39
|
+
}
|
|
40
|
+
/** Applies speculative rows to the trunk and returns the applied row count. */
|
|
41
|
+
async promote() {
|
|
42
|
+
const capabilities = await this.getCapabilities();
|
|
43
|
+
const outcome = await executeFork(this.backend, capabilities, ForkPromoteCommand, {
|
|
44
|
+
forkId: this.forkId
|
|
45
|
+
});
|
|
46
|
+
if (outcome.kind === "promoted")
|
|
47
|
+
return outcome.rows;
|
|
48
|
+
throw unexpected("promote", outcome);
|
|
49
|
+
}
|
|
50
|
+
/** Discards speculative rows and reports whether the fork existed. */
|
|
51
|
+
async squash() {
|
|
52
|
+
const capabilities = await this.getCapabilities();
|
|
53
|
+
const outcome = await executeFork(this.backend, capabilities, ForkDeleteCommand, {
|
|
54
|
+
forkId: this.forkId
|
|
55
|
+
});
|
|
56
|
+
if (outcome.kind === "deleted")
|
|
57
|
+
return outcome.removed;
|
|
58
|
+
throw unexpected("squash", outcome);
|
|
59
|
+
}
|
|
60
|
+
/** Starts a speculative row write at an exact log position. */
|
|
61
|
+
putRow(table, partitionId, offset) {
|
|
62
|
+
return new ForkPutRequest(this.backend, this.getCapabilities, this.forkId, table, partitionId, offset);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/** Builds a fork creation request. */
|
|
66
|
+
export class ForkCreateRequest {
|
|
67
|
+
backend;
|
|
68
|
+
getCapabilities;
|
|
69
|
+
forkId;
|
|
70
|
+
forkParent;
|
|
71
|
+
forkKind = "continuous";
|
|
72
|
+
forkTables = [];
|
|
73
|
+
constructor(backend, getCapabilities, forkId) {
|
|
74
|
+
this.backend = backend;
|
|
75
|
+
this.getCapabilities = getCapabilities;
|
|
76
|
+
this.forkId = forkId;
|
|
77
|
+
}
|
|
78
|
+
/** Creates a frozen snapshot at current trunk offsets. */
|
|
79
|
+
severed() {
|
|
80
|
+
this.forkKind = "severed";
|
|
81
|
+
return this;
|
|
82
|
+
}
|
|
83
|
+
/** Creates a live branch that follows trunk appends. */
|
|
84
|
+
continuous() {
|
|
85
|
+
this.forkKind = "continuous";
|
|
86
|
+
return this;
|
|
87
|
+
}
|
|
88
|
+
/** Records an audit parent without changing the trunk base. */
|
|
89
|
+
parent(parent) {
|
|
90
|
+
this.forkParent = parent;
|
|
91
|
+
return this;
|
|
92
|
+
}
|
|
93
|
+
/** Restricts a severed snapshot to the supplied tables. */
|
|
94
|
+
tables(tables) {
|
|
95
|
+
this.forkTables = tables;
|
|
96
|
+
return this;
|
|
97
|
+
}
|
|
98
|
+
/** Opens the fork and returns its metadata. */
|
|
99
|
+
async send() {
|
|
100
|
+
validateForkId(this.forkId);
|
|
101
|
+
const capabilities = await this.getCapabilities();
|
|
102
|
+
const outcome = await executeFork(this.backend, capabilities, ForkCreateCommand, {
|
|
103
|
+
forkId: this.forkId,
|
|
104
|
+
kind: this.forkKind,
|
|
105
|
+
tables: this.forkTables,
|
|
106
|
+
...(this.forkParent !== undefined ? { parent: this.forkParent } : {})
|
|
107
|
+
});
|
|
108
|
+
if (outcome.kind === "created")
|
|
109
|
+
return outcome.info;
|
|
110
|
+
throw unexpected("create", outcome);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/** Builds one speculative row write. */
|
|
114
|
+
export class ForkPutRequest {
|
|
115
|
+
backend;
|
|
116
|
+
getCapabilities;
|
|
117
|
+
forkId;
|
|
118
|
+
table;
|
|
119
|
+
partitionId;
|
|
120
|
+
offset;
|
|
121
|
+
forkProjectionId = "";
|
|
122
|
+
forkProjectionVersion = 0;
|
|
123
|
+
forkFields = new Map();
|
|
124
|
+
forkMetadata = new Map();
|
|
125
|
+
forkPayload;
|
|
126
|
+
forkEmbedding;
|
|
127
|
+
forkTombstone = false;
|
|
128
|
+
constructor(backend, getCapabilities, forkId, table, partitionId, offset) {
|
|
129
|
+
this.backend = backend;
|
|
130
|
+
this.getCapabilities = getCapabilities;
|
|
131
|
+
this.forkId = forkId;
|
|
132
|
+
this.table = table;
|
|
133
|
+
this.partitionId = partitionId;
|
|
134
|
+
this.offset = offset;
|
|
135
|
+
}
|
|
136
|
+
/** Sets the row projection identity. */
|
|
137
|
+
projection(id, version) {
|
|
138
|
+
this.forkProjectionId = id;
|
|
139
|
+
this.forkProjectionVersion = version;
|
|
140
|
+
return this;
|
|
141
|
+
}
|
|
142
|
+
/** Adds an indexed field. */
|
|
143
|
+
field(name, value) {
|
|
144
|
+
this.forkFields.set(name, value);
|
|
145
|
+
return this;
|
|
146
|
+
}
|
|
147
|
+
/** Adds non-indexed metadata. */
|
|
148
|
+
metadata(name, value) {
|
|
149
|
+
this.forkMetadata.set(name, value);
|
|
150
|
+
return this;
|
|
151
|
+
}
|
|
152
|
+
/** Attaches an opaque payload. */
|
|
153
|
+
payload(payload) {
|
|
154
|
+
this.forkPayload = payload;
|
|
155
|
+
return this;
|
|
156
|
+
}
|
|
157
|
+
/** Attaches an embedding encoded as a JSON array. */
|
|
158
|
+
embedding(embedding) {
|
|
159
|
+
this.forkEmbedding = embedding;
|
|
160
|
+
return this;
|
|
161
|
+
}
|
|
162
|
+
/** Hides the trunk row at this coordinate. */
|
|
163
|
+
tombstone() {
|
|
164
|
+
this.forkTombstone = true;
|
|
165
|
+
return this;
|
|
166
|
+
}
|
|
167
|
+
/** Writes the speculative row. */
|
|
168
|
+
async send() {
|
|
169
|
+
const capabilities = await this.getCapabilities();
|
|
170
|
+
const outcome = await executeFork(this.backend, capabilities, ForkPutCommand, {
|
|
171
|
+
forkId: this.forkId,
|
|
172
|
+
table: this.table,
|
|
173
|
+
partitionId: this.partitionId,
|
|
174
|
+
offset: this.offset,
|
|
175
|
+
projectionId: this.forkProjectionId,
|
|
176
|
+
projectionVersion: this.forkProjectionVersion,
|
|
177
|
+
fields: this.forkFields,
|
|
178
|
+
metadata: this.forkMetadata,
|
|
179
|
+
tombstone: this.forkTombstone,
|
|
180
|
+
...(this.forkPayload !== undefined ? { payload: this.forkPayload } : {}),
|
|
181
|
+
...(this.forkEmbedding !== undefined ? { embedding: this.forkEmbedding } : {})
|
|
182
|
+
});
|
|
183
|
+
if (outcome.kind === "written")
|
|
184
|
+
return;
|
|
185
|
+
throw unexpected("put_row", outcome);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
//# sourceMappingURL=forks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forks.js","sourceRoot":"","sources":["../../src/managed/forks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { Capabilities } from "../client/capabilities.js";
|
|
2
|
+
import { type ManagedTransport } from "../client/managed.js";
|
|
3
|
+
import { type EdgeDir, type GraphEdge, type GraphNode, type GraphResult, type NodeId } from "../wire/graph.js";
|
|
4
|
+
import type { Filter } from "../wire/query.js";
|
|
5
|
+
export type GraphBackend = ManagedTransport;
|
|
6
|
+
/** Builds and executes traversals against a named managed knowledge graph. */
|
|
7
|
+
export declare class GraphHandle {
|
|
8
|
+
private readonly backend;
|
|
9
|
+
private readonly getCapabilities;
|
|
10
|
+
private readonly name;
|
|
11
|
+
private readonly nowMicros;
|
|
12
|
+
private startValue;
|
|
13
|
+
private hops;
|
|
14
|
+
private nodeFilterValue;
|
|
15
|
+
private edgeFilterValue;
|
|
16
|
+
private returnValue;
|
|
17
|
+
private limitValue;
|
|
18
|
+
private asOfValue;
|
|
19
|
+
private conversationValue;
|
|
20
|
+
constructor(backend: GraphBackend, getCapabilities: () => Promise<Capabilities>, name: string, nowMicros?: () => bigint);
|
|
21
|
+
/** Restricts traversal to elements asserted by one conversation. */
|
|
22
|
+
conversation(conversationId: string): this;
|
|
23
|
+
/** Starts from explicit node IDs. */
|
|
24
|
+
startIds(ids: readonly NodeId[]): this;
|
|
25
|
+
/** Starts from nodes matching a predicate. */
|
|
26
|
+
startMatch(filter: Filter): this;
|
|
27
|
+
/** Starts from the nearest nodes to an embedding. */
|
|
28
|
+
startNearest(embedding: readonly number[], k: number): this;
|
|
29
|
+
/** Follows outgoing edges of one type. */
|
|
30
|
+
out(edgeType: string): this;
|
|
31
|
+
/** Follows incoming edges of one type. */
|
|
32
|
+
incoming(edgeType: string): this;
|
|
33
|
+
/** Follows edges of one type in both directions. */
|
|
34
|
+
both(edgeType: string): this;
|
|
35
|
+
/** Returns traversed edges. */
|
|
36
|
+
returnEdges(): this;
|
|
37
|
+
/** Returns traversed source, type, and destination triplets. */
|
|
38
|
+
returnTriplets(): this;
|
|
39
|
+
/** Returns complete node and edge paths. */
|
|
40
|
+
returnPaths(): this;
|
|
41
|
+
/** Caps the number of returned elements. */
|
|
42
|
+
limit(limit: number): this;
|
|
43
|
+
/** Restricts traversal to edges valid at the given epoch microsecond. */
|
|
44
|
+
asOf(micros: bigint): this;
|
|
45
|
+
/** Executes the configured traversal. */
|
|
46
|
+
fetch(): Promise<GraphResult>;
|
|
47
|
+
/** Returns nodes reachable within a bounded depth. */
|
|
48
|
+
neighbors(node: NodeId, dir: EdgeDir, edgeType: string | undefined, depth: number): Promise<GraphResult>;
|
|
49
|
+
/** Upserts two kind:value entities and relates them. */
|
|
50
|
+
link(from: string, relation: string, to: string): Promise<void>;
|
|
51
|
+
/** Supersedes other live targets before linking a single-valued relationship. */
|
|
52
|
+
relink(from: string, relation: string, to: string): Promise<number>;
|
|
53
|
+
/** Closes a relationship at the current valid time without deleting its nodes. */
|
|
54
|
+
unlink(from: string, relation: string, to: string): Promise<void>;
|
|
55
|
+
/** Idempotently upserts content-addressed nodes and edges. */
|
|
56
|
+
upsert(nodes: readonly GraphNode[], edges: readonly GraphEdge[]): Promise<void>;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=graph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/managed/graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { GraphExecutionError, ProtocolError, UnsupportedError } from "../client/errors.js";
|
|
2
|
+
import { executeManaged } from "../client/managed.js";
|
|
3
|
+
import { GraphNeighborsCommand, GraphQueryCommand, GraphUpsertCommand } from "../wire/commands.js";
|
|
4
|
+
import { graphEdgeRelate, graphNodeEntity, validateGraphName } from "../wire/graph.js";
|
|
5
|
+
import { DEFAULT_RECALL_LIMIT } from "../wire/limits.js";
|
|
6
|
+
async function executeGraph(backend, capabilities, command, request) {
|
|
7
|
+
const reply = await executeManaged(backend, capabilities, command, request);
|
|
8
|
+
if (reply.kind === "ok")
|
|
9
|
+
return reply.result;
|
|
10
|
+
if (reply.kind === "err") {
|
|
11
|
+
if (reply.error.kind === "unsupported")
|
|
12
|
+
throw new UnsupportedError(reply.error.message);
|
|
13
|
+
throw new GraphExecutionError(`graph command failed: ${reply.error.kind}`, reply.error);
|
|
14
|
+
}
|
|
15
|
+
throw new ProtocolError(`graph: unrecognized reply variant \`${reply.tag}\``, {
|
|
16
|
+
commandCode: command.code
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
function entityNode(id) {
|
|
20
|
+
const separator = id.indexOf(":");
|
|
21
|
+
return separator === -1
|
|
22
|
+
? graphNodeEntity("entity", id)
|
|
23
|
+
: graphNodeEntity(id.slice(0, separator), id.slice(separator + 1));
|
|
24
|
+
}
|
|
25
|
+
/** Builds and executes traversals against a named managed knowledge graph. */
|
|
26
|
+
export class GraphHandle {
|
|
27
|
+
backend;
|
|
28
|
+
getCapabilities;
|
|
29
|
+
name;
|
|
30
|
+
nowMicros;
|
|
31
|
+
startValue;
|
|
32
|
+
hops = [];
|
|
33
|
+
nodeFilterValue;
|
|
34
|
+
edgeFilterValue;
|
|
35
|
+
returnValue = "nodes";
|
|
36
|
+
limitValue = DEFAULT_RECALL_LIMIT;
|
|
37
|
+
asOfValue;
|
|
38
|
+
conversationValue;
|
|
39
|
+
constructor(backend, getCapabilities, name, nowMicros = () => BigInt(Date.now()) * 1000n) {
|
|
40
|
+
this.backend = backend;
|
|
41
|
+
this.getCapabilities = getCapabilities;
|
|
42
|
+
this.name = name;
|
|
43
|
+
this.nowMicros = nowMicros;
|
|
44
|
+
}
|
|
45
|
+
/** Restricts traversal to elements asserted by one conversation. */
|
|
46
|
+
conversation(conversationId) {
|
|
47
|
+
this.conversationValue = conversationId;
|
|
48
|
+
return this;
|
|
49
|
+
}
|
|
50
|
+
/** Starts from explicit node IDs. */
|
|
51
|
+
startIds(ids) {
|
|
52
|
+
this.startValue = { kind: "ids", ids };
|
|
53
|
+
return this;
|
|
54
|
+
}
|
|
55
|
+
/** Starts from nodes matching a predicate. */
|
|
56
|
+
startMatch(filter) {
|
|
57
|
+
this.startValue = { kind: "match", filter };
|
|
58
|
+
return this;
|
|
59
|
+
}
|
|
60
|
+
/** Starts from the nearest nodes to an embedding. */
|
|
61
|
+
startNearest(embedding, k) {
|
|
62
|
+
this.startValue = { kind: "nearest", embedding, k };
|
|
63
|
+
return this;
|
|
64
|
+
}
|
|
65
|
+
/** Follows outgoing edges of one type. */
|
|
66
|
+
out(edgeType) {
|
|
67
|
+
this.hops.push({ edgeType, dir: "out", max: 1 });
|
|
68
|
+
return this;
|
|
69
|
+
}
|
|
70
|
+
/** Follows incoming edges of one type. */
|
|
71
|
+
incoming(edgeType) {
|
|
72
|
+
this.hops.push({ edgeType, dir: "in", max: 1 });
|
|
73
|
+
return this;
|
|
74
|
+
}
|
|
75
|
+
/** Follows edges of one type in both directions. */
|
|
76
|
+
both(edgeType) {
|
|
77
|
+
this.hops.push({ edgeType, dir: "both", max: 1 });
|
|
78
|
+
return this;
|
|
79
|
+
}
|
|
80
|
+
/** Returns traversed edges. */
|
|
81
|
+
returnEdges() {
|
|
82
|
+
this.returnValue = "edges";
|
|
83
|
+
return this;
|
|
84
|
+
}
|
|
85
|
+
/** Returns traversed source, type, and destination triplets. */
|
|
86
|
+
returnTriplets() {
|
|
87
|
+
this.returnValue = "triplets";
|
|
88
|
+
return this;
|
|
89
|
+
}
|
|
90
|
+
/** Returns complete node and edge paths. */
|
|
91
|
+
returnPaths() {
|
|
92
|
+
this.returnValue = "paths";
|
|
93
|
+
return this;
|
|
94
|
+
}
|
|
95
|
+
/** Caps the number of returned elements. */
|
|
96
|
+
limit(limit) {
|
|
97
|
+
this.limitValue = limit;
|
|
98
|
+
return this;
|
|
99
|
+
}
|
|
100
|
+
/** Restricts traversal to edges valid at the given epoch microsecond. */
|
|
101
|
+
asOf(micros) {
|
|
102
|
+
this.asOfValue = micros;
|
|
103
|
+
return this;
|
|
104
|
+
}
|
|
105
|
+
/** Executes the configured traversal. */
|
|
106
|
+
async fetch() {
|
|
107
|
+
validateGraphName(this.name);
|
|
108
|
+
const capabilities = await this.getCapabilities();
|
|
109
|
+
return executeGraph(this.backend, capabilities, GraphQueryCommand, {
|
|
110
|
+
graph: this.name,
|
|
111
|
+
start: this.startValue ?? { kind: "ids", ids: [] },
|
|
112
|
+
traverse: this.hops,
|
|
113
|
+
return: this.returnValue,
|
|
114
|
+
limit: this.limitValue,
|
|
115
|
+
consistency: "eventual",
|
|
116
|
+
...(this.nodeFilterValue !== undefined ? { nodeFilter: this.nodeFilterValue } : {}),
|
|
117
|
+
...(this.edgeFilterValue !== undefined ? { edgeFilter: this.edgeFilterValue } : {}),
|
|
118
|
+
...(this.asOfValue !== undefined ? { asOf: this.asOfValue } : {}),
|
|
119
|
+
...(this.conversationValue !== undefined ? { conversation: this.conversationValue } : {})
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
/** Returns nodes reachable within a bounded depth. */
|
|
123
|
+
async neighbors(node, dir, edgeType, depth) {
|
|
124
|
+
validateGraphName(this.name);
|
|
125
|
+
const capabilities = await this.getCapabilities();
|
|
126
|
+
return executeGraph(this.backend, capabilities, GraphNeighborsCommand, {
|
|
127
|
+
graph: this.name,
|
|
128
|
+
node,
|
|
129
|
+
dir,
|
|
130
|
+
depth,
|
|
131
|
+
limit: this.limitValue,
|
|
132
|
+
...(edgeType !== undefined ? { edgeType } : {}),
|
|
133
|
+
...(this.asOfValue !== undefined ? { asOf: this.asOfValue } : {}),
|
|
134
|
+
...(this.conversationValue !== undefined ? { conversation: this.conversationValue } : {})
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
/** Upserts two kind:value entities and relates them. */
|
|
138
|
+
async link(from, relation, to) {
|
|
139
|
+
const fromNode = entityNode(from);
|
|
140
|
+
const toNode = entityNode(to);
|
|
141
|
+
const edge = graphEdgeRelate(fromNode, relation, toNode);
|
|
142
|
+
await this.upsert([fromNode, toNode], [edge]);
|
|
143
|
+
}
|
|
144
|
+
/** Supersedes other live targets before linking a single-valued relationship. */
|
|
145
|
+
async relink(from, relation, to) {
|
|
146
|
+
const fromNode = entityNode(from);
|
|
147
|
+
const toNode = entityNode(to);
|
|
148
|
+
const live = await this.neighbors(fromNode.id, "out", relation, 1);
|
|
149
|
+
const now = this.nowMicros();
|
|
150
|
+
const superseded = live.edges
|
|
151
|
+
.filter((edge) => !edge.to.equals(toNode.id) && edge.validTo === undefined)
|
|
152
|
+
.map((edge) => ({ ...edge, validTo: now }));
|
|
153
|
+
if (superseded.length > 0)
|
|
154
|
+
await this.upsert([], superseded);
|
|
155
|
+
await this.link(from, relation, to);
|
|
156
|
+
return superseded.length;
|
|
157
|
+
}
|
|
158
|
+
/** Closes a relationship at the current valid time without deleting its nodes. */
|
|
159
|
+
async unlink(from, relation, to) {
|
|
160
|
+
const fromNode = entityNode(from);
|
|
161
|
+
const toNode = entityNode(to);
|
|
162
|
+
const edge = { ...graphEdgeRelate(fromNode, relation, toNode), validTo: this.nowMicros() };
|
|
163
|
+
await this.upsert([], [edge]);
|
|
164
|
+
}
|
|
165
|
+
/** Idempotently upserts content-addressed nodes and edges. */
|
|
166
|
+
async upsert(nodes, edges) {
|
|
167
|
+
validateGraphName(this.name);
|
|
168
|
+
const capabilities = await this.getCapabilities();
|
|
169
|
+
await executeGraph(this.backend, capabilities, GraphUpsertCommand, {
|
|
170
|
+
graph: this.name,
|
|
171
|
+
nodes,
|
|
172
|
+
edges
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=graph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/managed/graph.ts"],"names":[],"mappings":"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"}
|