@laserdata/laser-sdk 0.0.1-rc.1 → 0.0.1-rc.3
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 +106 -82
- 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 +268 -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 +168 -0
- package/dist/iggy/apache-iggy.d.ts.map +1 -0
- package/dist/iggy/apache-iggy.js +528 -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 +74 -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 +183 -0
- package/dist/wire/authz.d.ts.map +1 -0
- package/dist/wire/authz.js +527 -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 +4 -3
package/README.md
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
# Laser SDK for TypeScript
|
|
2
2
|
|
|
3
|
-
The native TypeScript client for LaserData over Apache Iggy. It provides typed
|
|
4
|
-
streaming, declared projections and query, key-value state, copy-on-write
|
|
5
|
-
forks, a knowledge graph, and an optional agent runtime over one connection.
|
|
3
|
+
The native TypeScript client for LaserData over Apache Iggy. It provides typed streaming, declared projections and query, key-value state, copy-on-write forks, a knowledge graph, and an optional agent runtime over one connection.
|
|
6
4
|
|
|
7
|
-
This prerelease targets Node 22.14 or later. Bun, Deno, and browsers are not
|
|
8
|
-
|
|
5
|
+
This prerelease targets Node 22.14 or later. Bun, Deno, and browsers are not supported because the Apache Iggy transport uses Node TCP and TLS APIs.
|
|
6
|
+
|
|
7
|
+
> **Prerelease (`0.0.1-rc.3`).** Pin an exact version while the public API and wire contract are still in release-candidate development.
|
|
9
8
|
|
|
10
9
|
## Install
|
|
11
10
|
|
|
@@ -13,13 +12,48 @@ supported because the Apache Iggy transport uses Node TCP and TLS APIs.
|
|
|
13
12
|
npm install @laserdata/laser-sdk
|
|
14
13
|
```
|
|
15
14
|
|
|
16
|
-
The package is ESM-first. A CommonJS application can load it with dynamic
|
|
17
|
-
`import()`.
|
|
15
|
+
The package is ESM-first. A CommonJS application can load it with dynamic `import()`.
|
|
18
16
|
|
|
19
17
|
## Connect and stream
|
|
20
18
|
|
|
21
19
|
```ts
|
|
22
|
-
import { Laser
|
|
20
|
+
import { Laser } from "@laserdata/laser-sdk"
|
|
21
|
+
|
|
22
|
+
await using laser = await Laser.connect(
|
|
23
|
+
process.env.LASER_CONNECTION_STRING ?? "iggy:iggy@127.0.0.1:8090"
|
|
24
|
+
)
|
|
25
|
+
const topic = laser.stream("commerce").topic("orders")
|
|
26
|
+
await topic.ensure(4)
|
|
27
|
+
await topic.publish().json({ id: "order-1", total: 42 }).send()
|
|
28
|
+
|
|
29
|
+
const records = await (await topic.replay()).poll()
|
|
30
|
+
console.log(`read ${records.length} order(s)`)
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Use the bare `user:password@host:port` connection string. The SDK supplies the Apache Iggy TCP scheme internally. One connection addresses every stream on the server. Select a stream explicitly with `laser.stream(name)`, then a topic with `.topic(name)`. `Laser.connectWithStream()` only pins a default stream so `laser.topic(name)` can be used as a shortcut. It does not limit the connection to that stream. `Laser.connectEnv()` reads `LASER_CONNECTION_STRING` and the optional `LASER_STREAM`. `Laser.local()` targets the default local server. `Laser.builder()` accepts a connection string, an address and credentials, or an injected Apache Iggy client with explicit owned or borrowed lifetime.
|
|
34
|
+
|
|
35
|
+
Owned connections retry the initial handshake and reconnect after a dropped socket, with unlimited retries at one-second intervals by default. Set `reconnection_retries` to a non-negative integer and `reconnection_interval` to `250ms`, `1s`, or `1m` in the connection string to tune the policy. Laser owns this loop because the upstream Node reconnect path can leave its connect promise pending. An injected client remains under its caller's lifecycle and reconnect policy.
|
|
36
|
+
|
|
37
|
+
LaserData Cloud hostnames automatically use TLS with the public LaserData root CA embedded in the package. `LASER_TLS_CERT` selects another CA file and `LASER_NO_TLS` disables automatic TLS. Other hosts keep the connection string's TLS settings unchanged.
|
|
38
|
+
|
|
39
|
+
## Streaming model
|
|
40
|
+
|
|
41
|
+
`laser.stream(name).topic(name)` addresses any stream. `laser.topic(name)` is the default-stream shortcut. Topics support:
|
|
42
|
+
|
|
43
|
+
- raw, JSON, CBOR, MessagePack, Avro, Protobuf, and JSON Schema records
|
|
44
|
+
- exact headers, metadata, indexes, projection and schema IDs, inline payload, claim-check, routing keys, explicit partitions, and heterogeneous batches
|
|
45
|
+
- direct producers with bounded retry and explicit batching
|
|
46
|
+
- standalone and consumer-group readers with first, last, next, offset, or timestamp starts
|
|
47
|
+
- automatic or explicit offset commits, replay, cancellation, and bounded `nextWithin()` waits
|
|
48
|
+
|
|
49
|
+
Delivery is at least once. Ordering is per selected partition. A handler should make external effects idempotent, or use the fenced managed coordination path when a monotonic holder token is required.
|
|
50
|
+
|
|
51
|
+
## Runtime-checked records
|
|
52
|
+
|
|
53
|
+
TypeScript types disappear at runtime. A typed topic therefore takes an explicit codec that validates decoded values instead of pretending a generic parameter can validate bytes.
|
|
54
|
+
|
|
55
|
+
```ts
|
|
56
|
+
import { jsonCodec } from "@laserdata/laser-sdk"
|
|
23
57
|
|
|
24
58
|
interface Order {
|
|
25
59
|
readonly id: string
|
|
@@ -27,118 +61,108 @@ interface Order {
|
|
|
27
61
|
}
|
|
28
62
|
|
|
29
63
|
const orderCodec = jsonCodec<Order>((value) => {
|
|
30
|
-
if (typeof value !== "object" || value === null) throw new
|
|
64
|
+
if (typeof value !== "object" || value === null) throw new TypeError("order must be an object")
|
|
31
65
|
const order = value as Record<string, unknown>
|
|
32
66
|
if (typeof order.id !== "string" || typeof order.total !== "number") {
|
|
33
|
-
throw new
|
|
67
|
+
throw new TypeError("order fields are invalid")
|
|
34
68
|
}
|
|
35
69
|
return { id: order.id, total: order.total }
|
|
36
70
|
})
|
|
37
71
|
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
"commerce"
|
|
41
|
-
)
|
|
42
|
-
|
|
43
|
-
try {
|
|
44
|
-
const topic = laser.topic("orders")
|
|
45
|
-
await topic.ensure(4)
|
|
46
|
-
await topic.publish().json({ id: "order-1", total: 42 }, orderCodec).send()
|
|
72
|
+
const orders = laser.stream("commerce").topic("orders").json(orderCodec)
|
|
73
|
+
await orders.publish({ id: "order-1", total: 42 })
|
|
47
74
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
await laser.close()
|
|
52
|
-
}
|
|
75
|
+
const reader = await orders.records("orders-export")
|
|
76
|
+
const record = await reader.nextWithin(1_000)
|
|
77
|
+
console.log(record?.value)
|
|
53
78
|
```
|
|
54
79
|
|
|
55
|
-
|
|
56
|
-
for `LASER_CONNECTION_STRING` and `LASER_STREAM`, or `Laser.local()` for the
|
|
57
|
-
default local server. `Laser.builder()` accepts a connection string, an address
|
|
58
|
-
and credentials, or an injected Apache Iggy client with explicit owned or
|
|
59
|
-
borrowed lifetime.
|
|
80
|
+
Registered Avro, Protobuf, and JSON Schema topics compile the writer schema once, validate before transport I/O, stamp its schema ID, and decode through the same schema on reads.
|
|
60
81
|
|
|
61
|
-
|
|
62
|
-
CA embedded in the package. `LASER_TLS_CERT` selects another CA file and
|
|
63
|
-
`LASER_NO_TLS` disables automatic TLS. Other hosts keep the connection string's
|
|
64
|
-
TLS settings unchanged.
|
|
82
|
+
## Managed data surfaces
|
|
65
83
|
|
|
66
|
-
|
|
84
|
+
LaserData Cloud announces its capabilities during connection setup. Stock Apache Iggy serves streaming and returns `UnsupportedError` for managed calls. The same client code can feature-detect through `laser.capabilities()`.
|
|
67
85
|
|
|
68
|
-
|
|
69
|
-
the default-stream shortcut. Topics support:
|
|
86
|
+
The root client exposes query, projections, bindings, schemas, key-value and CAS, forks, graph traversal, RBAC, runs, watch feeds, and independent managed command batches. Query uses the managed command path, not a request topic. Every command is encoded through the same Rust-owned AGDX fixtures consumed by the other SDKs.
|
|
70
87
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
claim-check, routing keys, explicit partitions, and heterogeneous batches
|
|
74
|
-
- direct producers with bounded retry and explicit batching
|
|
75
|
-
- standalone and consumer-group readers with first, last, next, offset, or
|
|
76
|
-
timestamp starts
|
|
77
|
-
- automatic or explicit offset commits, replay, cancellation, and bounded
|
|
78
|
-
`nextWithin()` waits
|
|
88
|
+
```ts
|
|
89
|
+
import { graphNodeEntity } from "@laserdata/laser-sdk"
|
|
79
90
|
|
|
80
|
-
|
|
81
|
-
make external effects idempotent, or use the fenced managed coordination path
|
|
82
|
-
when a monotonic holder token is required.
|
|
91
|
+
const paid = await laser.query("orders_v1").whereEq("status", "paid").limit(20).fetch()
|
|
83
92
|
|
|
84
|
-
|
|
93
|
+
const key = new TextEncoder().encode("user:42")
|
|
94
|
+
const session = { cart: ["sku-1"] }
|
|
95
|
+
await laser.kv("sessions").set(key).json(session).ttl(300_000_000n).send()
|
|
96
|
+
const stored = await laser.kv("sessions").get(key)
|
|
97
|
+
|
|
98
|
+
const checkout = graphNodeEntity("Service", "checkout")
|
|
99
|
+
const nearby = await laser.graph("ops").neighbors(checkout.id, "out", undefined, 2)
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Accessors are cheap to construct. I/O happens at terminal verbs such as `send()`, `fetch()`, `poll()`, and `nextWithin()`.
|
|
85
103
|
|
|
86
|
-
|
|
87
|
-
Apache Iggy serves streaming and returns `UnsupportedError` for managed calls.
|
|
88
|
-
The same client code can feature-detect through `laser.capabilities()`.
|
|
104
|
+
Durable memory can use the default audit topic through `laser.memory(namespace)`, an existing isolated topic through `laser.memoryOnTopic(topic)`, or a configured topic:
|
|
89
105
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
106
|
+
```ts
|
|
107
|
+
const incidents = await laser.memoryTopic("incidents").partitions(4).ttl(86_400_000).build()
|
|
108
|
+
|
|
109
|
+
await incidents.remember(new TextEncoder().encode("checkout uses the read replica")).send()
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
TypeScript duration inputs use milliseconds. `noExpiry()` keeps the raw memory history until ordinary topic retention removes it.
|
|
95
113
|
|
|
96
114
|
## Agents and coordination
|
|
97
115
|
|
|
98
|
-
The agent layer adds provenance, typed AGDX commands and responses, chunked
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
116
|
+
The agent layer adds provenance, typed AGDX commands and responses, chunked streams, registry and presence, routing, reliable commit-after-handle delivery, deduplication, retry and dead-letter handling, contracts, scatter, and workflow execution. Workflow journals support replay and resume, verifier panels, budgets, compensation, and fenced steps.
|
|
117
|
+
|
|
118
|
+
Context, snapshots, log and vector memory, action governance, replayable intent decisions, Ed25519 signing, delegation, A2A, MCP, AG-UI, and edge authorization are available from the root package. The SDK transports model provenance but does not invoke a model.
|
|
119
|
+
|
|
120
|
+
```ts
|
|
121
|
+
import { Agent, AgentId, AgentTopic } from "@laserdata/laser-sdk"
|
|
122
|
+
|
|
123
|
+
await using handle = Agent.builder()
|
|
124
|
+
.id(AgentId.new("support"))
|
|
125
|
+
.listenOn(AgentTopic.Commands)
|
|
126
|
+
.respondOn(AgentTopic.Responses)
|
|
127
|
+
.handler({
|
|
128
|
+
handle(message, context) {
|
|
129
|
+
return context.respond(message.payload)
|
|
130
|
+
}
|
|
131
|
+
})
|
|
132
|
+
.spawn(laser)
|
|
133
|
+
|
|
134
|
+
await handle.ready()
|
|
135
|
+
// The agent now consumes with commit-after-handle delivery.
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
Waiting operations accept `AbortSignal` or an explicit timeout where their contract permits one. Owned roots and spawned handles must be closed or shut down. Scoped views do not own the shared connection.
|
|
139
|
+
|
|
140
|
+
## Errors and ownership
|
|
103
141
|
|
|
104
|
-
|
|
105
|
-
intent decisions, Ed25519 signing, delegation, A2A, MCP, AG-UI, and edge
|
|
106
|
-
authorization are available from the root package. The SDK transports model
|
|
107
|
-
provenance but does not invoke a model.
|
|
142
|
+
All SDK failures extend `LaserError` and carry a stable `kind`. Configuration, timeout, cancellation, unsupported managed capability, codec, transport, policy, and signature failures have dedicated subclasses. Catch the narrow subclass when recovery differs, otherwise report the base error with its cause.
|
|
108
143
|
|
|
109
|
-
|
|
110
|
-
contract permits one. Owned roots and spawned handles must be closed or shut
|
|
111
|
-
down. Scoped views do not own the shared connection.
|
|
144
|
+
`Laser.connect*()` owns its Apache Iggy client. `Laser.builder()` can instead borrow or own an injected client explicitly. `Laser`, `Producer`, `Consumer`, and `AgentHandle` support `await using`. Their explicit `close()` and `shutdown()` methods remain idempotent. Closing a scoped view never closes the root connection.
|
|
112
145
|
|
|
113
146
|
## Package exports
|
|
114
147
|
|
|
115
148
|
- `@laserdata/laser-sdk` is the ordinary application surface
|
|
116
149
|
- `@laserdata/laser-sdk/full` adds the complete native wire namespace
|
|
117
|
-
- `@laserdata/laser-sdk/testing` provides clocks, stores, fake transports,
|
|
118
|
-
factories, observers, and bounded eventually checks
|
|
150
|
+
- `@laserdata/laser-sdk/testing` provides clocks, stores, fake transports, factories, observers, and bounded eventually checks
|
|
119
151
|
- `@laserdata/laser-sdk/opentelemetry` adapts the observer seam to OpenTelemetry
|
|
120
152
|
|
|
121
|
-
`laser.iggyClient()` is the Apache Iggy escape hatch for native administrative
|
|
122
|
-
or transport operations that Laser does not wrap.
|
|
153
|
+
`laser.iggyClient()` is the Apache Iggy escape hatch for native administrative or transport operations that Laser does not wrap.
|
|
123
154
|
|
|
124
155
|
## Examples and verification
|
|
125
156
|
|
|
126
|
-
The nine non-benchmark examples live in
|
|
127
|
-
[`examples/typescript`](../../examples/typescript/README.md). Shared behavior is
|
|
128
|
-
covered by every feature under [`bdd/scenarios`](../../bdd/scenarios).
|
|
157
|
+
The nine non-benchmark examples live in [`examples/typescript`](../../examples/typescript/README.md). Shared behavior is covered by every feature under [`bdd/scenarios`](../../bdd/scenarios).
|
|
129
158
|
|
|
130
159
|
```sh
|
|
131
160
|
npm ci
|
|
132
161
|
npm run verify
|
|
133
162
|
```
|
|
134
163
|
|
|
135
|
-
`verify` runs style, formatting, lint, dependency boundaries, strict types,
|
|
136
|
-
builds, API reports, unit and wire tests, robustness, coverage, licenses, and
|
|
137
|
-
packed-consumer checks. Live Apache Iggy integration and shared BDD are separate
|
|
138
|
-
Docker-backed gates.
|
|
164
|
+
`verify` runs style, formatting, lint, dependency boundaries, strict types, builds, API reports, unit and wire tests, robustness, coverage, licenses, and packed-consumer checks. Live Apache Iggy integration and shared BDD are separate Docker-backed gates.
|
|
139
165
|
|
|
140
166
|
## Security and license
|
|
141
167
|
|
|
142
|
-
Report security issues through the repository security policy. The package is
|
|
143
|
-
Apache-2.0 licensed. Apache and Apache Iggy are trademarks of the Apache
|
|
144
|
-
Software Foundation.
|
|
168
|
+
Report security issues through the repository security policy. The package is Apache-2.0 licensed. Apache and Apache Iggy are trademarks of the Apache Software Foundation.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { type BytesLike } from "../client/bytes.js";
|
|
2
|
+
import type { LaserTransport } from "../iggy/apache-iggy.js";
|
|
3
|
+
import { type UlidSource } from "../runtime/ulid.js";
|
|
4
|
+
import { type SigningKey } from "../signing.js";
|
|
5
|
+
import { type AgentId as SdkAgentId, type ConversationId as SdkConversationId } from "../types/ids.js";
|
|
6
|
+
import { type AgentEnvelope, type AgentErrorBody, type IdempotencyKey, type TaskState, type TokenUsage } from "../wire/agent.js";
|
|
7
|
+
import { ContentType } from "../wire/content.js";
|
|
8
|
+
import { ChannelId, CorrelationId, type LogPosition, RecordId } from "../wire/ids.js";
|
|
9
|
+
import type { Value } from "../wire/value.js";
|
|
10
|
+
export declare const DEFAULT_CHUNK_FLUSH_BYTES = 512;
|
|
11
|
+
export declare const DEFAULT_CHUNK_LINGER_MS = 20;
|
|
12
|
+
export declare const MAX_CHUNK_BODY_BYTES: number;
|
|
13
|
+
export type AgdxLogPosition = LogPosition;
|
|
14
|
+
export interface Agdx {
|
|
15
|
+
readonly topicName: string;
|
|
16
|
+
command(correlation: CorrelationId, body: BytesLike): AgdxSend;
|
|
17
|
+
respond(correlation: CorrelationId, body: BytesLike): AgdxSend;
|
|
18
|
+
emit(body: BytesLike): AgdxSend;
|
|
19
|
+
status(operation: string): AgdxSend;
|
|
20
|
+
fail(correlation: CorrelationId, error: AgentErrorBody): AgdxSend;
|
|
21
|
+
stream(correlation: CorrelationId, purpose: string): AgdxStream;
|
|
22
|
+
requestInput(replyTopic: string, prompt: BytesLike, timeoutMs: number, options?: {
|
|
23
|
+
readonly signal?: AbortSignal;
|
|
24
|
+
}): Promise<Uint8Array>;
|
|
25
|
+
}
|
|
26
|
+
export declare function createAgdx(transport: LaserTransport, streamName: string, topicName: string, source: SdkAgentId, conversation: SdkConversationId, ulidSource?: UlidSource, govern?: (envelope: AgentEnvelope, willSign: boolean) => Promise<Uint8Array>): Agdx;
|
|
27
|
+
export interface AgdxSend {
|
|
28
|
+
withTarget(target: SdkAgentId): this;
|
|
29
|
+
withCause(cause: RecordId, causeAt?: LogPosition): this;
|
|
30
|
+
withCorrelation(correlation: CorrelationId): this;
|
|
31
|
+
withIdempotencyKey(key: IdempotencyKey): this;
|
|
32
|
+
withDeadlineMicros(deadlineMicros: bigint): this;
|
|
33
|
+
withTaskState(state: TaskState): this;
|
|
34
|
+
withOperation(operation: string): this;
|
|
35
|
+
withTool(tool: string): this;
|
|
36
|
+
withUsage(usage: TokenUsage): this;
|
|
37
|
+
withMetadata(key: string, value: Value): this;
|
|
38
|
+
last(): this;
|
|
39
|
+
contentType(contentType: ContentType): this;
|
|
40
|
+
body(body: BytesLike): this;
|
|
41
|
+
signedBy(key: SigningKey): this;
|
|
42
|
+
send(): Promise<RecordId | undefined>;
|
|
43
|
+
}
|
|
44
|
+
export interface AgdxStream {
|
|
45
|
+
readonly channel: ChannelId;
|
|
46
|
+
withDeadlineMicros(deadlineMicros: bigint): this;
|
|
47
|
+
withTarget(target: SdkAgentId): this;
|
|
48
|
+
contentType(contentType: ContentType): this;
|
|
49
|
+
buffered(maxChunks: number, lingerMs: number): this;
|
|
50
|
+
write(body: BytesLike): Promise<void>;
|
|
51
|
+
flush(): Promise<void>;
|
|
52
|
+
finish(finishReason: string, usage?: TokenUsage): Promise<void>;
|
|
53
|
+
fail(error: AgentErrorBody): Promise<void>;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=agdx.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agdx.d.ts","sourceRoot":"","sources":["../../src/agent/agdx.ts"],"names":[],"mappings":"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"}
|