laser-sdk 0.9.0.dev2__tar.gz → 0.9.0.dev3__tar.gz
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.
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/Cargo.toml +2 -2
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/PKG-INFO +2 -2
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/README.md +1 -1
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/Cargo.lock +3 -3
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/Cargo.toml +2 -2
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/README.md +1 -1
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/README.md +2 -2
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/tests/integration/pause.rs +19 -3
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/README.md +1 -1
- laser_sdk-0.9.0.dev3/wire/fixtures/control_stamped_caller.bin +0 -0
- laser_sdk-0.9.0.dev3/wire/fixtures/forwarded_command_agent.bin +0 -0
- laser_sdk-0.9.0.dev3/wire/fixtures/forwarded_command_on_behalf_of.bin +0 -0
- laser_sdk-0.9.0.dev3/wire/fixtures/mutation_command_caller.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/control.rs +6 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/fixtures.rs +4 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/forward.rs +119 -2
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/http.rs +5 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/mutation.rs +6 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/tests/wire_fixtures.rs +126 -8
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/.gitignore +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/iggy_test_server.py +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/laser_sdk.pyi +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/agdx.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/agent.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/agent_runtime.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/async_bridge.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/batching.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/bin/stub_gen.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/blob.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/chunks.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/client.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/codecs.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/consumer_group.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/context.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/control.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/convert.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/coordination.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/crash_context.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/destinations.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/errors.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/filters.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/fork.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/govern.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/graph.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/ids.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/intent.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/interop.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/kv.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/lib.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/memory.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/memory_handler.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/parity_helpers.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/projections.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/publish.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/query.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/rbac.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/reader.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/registry.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/schema.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/session.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/session_ops.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/session_reads.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/sign.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/snapshot.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/state_store.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/stream.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/swarm.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/transport.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/typed.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/watch.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/src/workflow.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/tests/conftest.py +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/tests/test_addressed_calls.py +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/tests/test_agdx_envelope.py +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/tests/test_agent_surface.py +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/tests/test_callback_bridge.py +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/tests/test_close_logging.py +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/tests/test_cluster.py +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/tests/test_cluster_filters.py +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/tests/test_connect_timeout.py +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/tests/test_control_builders.py +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/tests/test_coordination_client.py +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/tests/test_data_surface.py +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/tests/test_errors.py +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/tests/test_filter_surface.py +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/tests/test_filters.py +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/tests/test_integration.py +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/tests/test_parity.py +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/tests/test_parity_helpers.py +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/tests/test_pause.py +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/tests/test_publish_failures.py +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/tests/test_query_wire.py +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/tests/test_rbac.py +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/tests/test_readme_snippets.py +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/tests/test_reconnect.py +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/tests/test_record_helpers.py +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/tests/test_resource_naming.py +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/tests/test_resume_parity.py +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/tests/test_smoke.py +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/tests/test_snapshot_callbacks.py +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/tests/test_trait_hooks.py +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/tests/test_workflow_callbacks.py +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/foreign/python/uv.lock +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/laser_sdk.pyi +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/pyproject.toml +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/Cargo.toml +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/LICENSE +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/NOTICE +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/certs/laserdata.crt +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/a2a.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/agent/agdx.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/agent/assembler.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/agent/budget.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/agent/builder.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/agent/clock.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/agent/consumer.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/agent/contract.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/agent/control.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/agent/ctx.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/agent/laser.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/agent/lease.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/agent/memory_handler.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/agent/mod.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/agent/partitioning.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/agent/pause.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/agent/registry.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/agent/replies.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/agent/router.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/agent/scope.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/agent/session.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/agent/session_ops.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/agent/session_reads.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/agent/state.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/agent/workflow.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/agui.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/batching.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/blob.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/bridge_hops.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/capabilities.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/connect_options.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/context.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/context_scope.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/control.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/crash_context.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/cursor.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/destinations.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/edge_auth.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/error.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/filters/client.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/filters/group.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/filters/guard.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/filters/mod.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/filters/progress.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/filters/reader.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/fork/client.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/fork/mod.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/govern.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/graph.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/intent.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/kv/client.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/kv/coordination.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/kv/mod.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/laser.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/lib.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/managed.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/mcp.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/memory.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/message.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/nodes.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/poll.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/prelude.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/projections.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/provenance/keys.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/provenance/mod.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/provenance/runtime.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/provenance/topic.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/publish_options.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/query/client.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/query/mod.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/rbac/mod.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/retry.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/schema_codecs.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/sign.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/snapshot.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/state_store.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/stream/consumer_group.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/stream/producer_statistics.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/stream/publish.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/stream/record.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/stream/transport.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/stream.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/swarm.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/testing.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/typed.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/types/ids.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/types/mod.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/src/watch.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/tests/alloc.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/tests/fixtures/retry-table.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/tests/fixtures/typescript_signature.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/tests/future_depth.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/tests/integration/a2a.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/tests/integration/agdx_consume.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/tests/integration/agdx_stream.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/tests/integration/agui.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/tests/integration/budget.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/tests/integration/context.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/tests/integration/contract.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/tests/integration/deadletter.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/tests/integration/decomposition.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/tests/integration/fanout.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/tests/integration/filtered_wait.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/tests/integration/filters.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/tests/integration/filters_group.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/tests/integration/governance.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/tests/integration/handoff.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/tests/integration/harness.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/tests/integration/human_input.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/tests/integration/main.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/tests/integration/managed_unsupported.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/tests/integration/mcp.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/tests/integration/memory.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/tests/integration/provenance.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/tests/integration/queue_pressure.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/tests/integration/reconnect.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/tests/integration/reliable.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/tests/integration/replay.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/tests/integration/request.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/tests/integration/runtime.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/tests/integration/session.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/tests/integration/shutdown.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/tests/integration/signing.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/tests/integration/state.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/tests/integration/streaming.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/tests/integration/typed_topics.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/tests/integration/warm_dedup.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/tests/integration/workflow.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/tests/signature_interop.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/tests/support/owned_server.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/sdk/tests/support/test_iggy.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/Cargo.toml +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/LICENSE +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/NOTICE +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/accepted_operation.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/agent_body_ref.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/agent_card.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/agent_chunk.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/agent_chunk_open.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/agent_chunk_terminal.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/agent_command.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/agent_command_signed.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/agent_dead_letter.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/agent_error.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/agent_error_body.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/agent_event.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/agent_invalid_chunk_late_deadline.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/agent_invalid_chunk_no_sequence.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/agent_invalid_chunk_open_no_operation.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/agent_invalid_command_no_correlation.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/agent_invalid_error_last.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/agent_invalid_event_task_state.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/agent_invalid_response_channel.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/agent_invalid_status_bad_operation.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/agent_invalid_status_no_operation.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/agent_must_understand.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/agent_presence.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/agent_record.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/agent_response.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/agent_session_end.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/agent_session_parking.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/agent_session_start.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/agent_session_status.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/agent_session_transition.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/agent_signature.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/agent_status_card.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/agent_status_session.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/agent_status_task.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/agent_usage_cost.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/arrow_ipc_metadata.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/arrow_ipc_policy.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/authz_bind_roles.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/authz_get_role_reply.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/authz_history_reply.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/authz_history_request.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/authz_role.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/authz_whoami_reply.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/backend_announce.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/backend_announce_topology.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/backend_announce_unavailable.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/batch_reply.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/batch_request.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/browse_projections.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/browse_reply_decoded.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/browse_reply_projections.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/browse_reply_schema_registered.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/browse_reply_schemas.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/browse_schemas.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/capabilities.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/change_record.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/checkpoint_mutation_replicated.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/checkpoint_public_mutation_discriminants.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/checkpoint_reply_destination.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/checkpoint_reply_query_route.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/checkpoint_request_public.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/client_metadata_list.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/client_metadata_query.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/context_compaction.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/context_manifest.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/context_retrieval.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/control_accept_gap.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/control_apply_binding.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/control_drop_schema.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/control_filter_catalog.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/control_register_projection.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/control_register_schema_avro.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/control_register_schema_json.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/control_register_schema_protobuf.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/control_register_session_source_all.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/control_register_session_source_named.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/control_remove_binding.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/control_remove_session_source.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/control_skip_record.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/control_stamped_remove_binding.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/data_stack_string_discriminants.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/decode_record.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/destination_checkpoint_status.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/destination_issue.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/destination_page.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/dispatch_cases.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/error_body.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/filter_ack.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/filter_ack_unfiltered.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/filter_catalog_reply_bound.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/filter_catalog_reply_configured.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/filter_catalog_reply_registered.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/filter_catalog_reply_revision_state.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/filter_catalog_reply_revisions.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/filter_catalog_reply_unbound.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/filter_codec_cases.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/filter_consumer_filter.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/filter_consumer_filter.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/filter_eval_cases.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/filter_mutation_configure_group.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/filter_mutation_configure_group.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/filter_mutation_register.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/filter_mutation_register.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/filter_mutation_revision_state.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/filter_mutation_revision_state.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/filter_mutation_unbind_exact.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/filter_mutation_unbind_exact.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/filter_poll_request.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/filter_poll_request_group_auto.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/filter_poll_request_group_id.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/filter_reply_acknowledged.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/filter_reply_cancelled.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/filter_reply_error.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/filter_reply_page.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/filter_reply_page_unfiltered.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/filter_reply_ready.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/filter_reply_revision_disabled.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/filter_validation.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/filter_wait_cancel.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/filter_wait_request.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/fold_snapshot.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/fork_create.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/fork_info.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/fork_put.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/fork_reply_created.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/forwarded_command.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/forwarded_command_positioned.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/forwarded_command_scoped.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/forwarded_query.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/forwarded_query_scoped.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/graph_edge.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/graph_edge_conversation.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/graph_edge_producer.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/graph_edge_sourced.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/graph_neighbors.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/graph_neighbors_conversation.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/graph_node.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/graph_node_conversation.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/graph_node_producer.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/graph_node_sourced.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/graph_query.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/graph_query_conversation.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/graph_reply.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/graph_upsert.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/graph_upsert_session.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/header_block_envelope.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/header_block_generic.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/hello_reply.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/hello_reply_agent.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/hello_reply_features.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/json_patch/cases.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/key_record.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/kv_cas.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/kv_cas_fenced.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/kv_cas_session.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/kv_copy.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/kv_delete_session.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/kv_entry_memory_scope.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/kv_get_barriered.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/kv_lease.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/kv_lease_renew.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/kv_move.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/kv_namespaces.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/kv_page_view.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/kv_patch_session.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/kv_release.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/kv_reply_committed.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/kv_reply_leased.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/kv_reply_namespaces.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/kv_reply_page.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/kv_reply_renewed.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/kv_reply_stale.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/kv_reply_version_conflict.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/kv_scan.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/kv_set.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/kv_set_session.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/logical_schema.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/logical_type_discriminants.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/managed_read.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/managed_reply.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/managed_request.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/materialization_destination.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/memory_feedback_scoped.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/memory_forget_scoped.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/memory_item_origin.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/mutation_command.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/mutation_command_scoped.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/producer_presence.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/query_cancel.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/query_envelope.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/query_envelope_aggregate.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/query_envelope_raw_sql.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/query_envelope_read_your_writes.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/query_envelope_text.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/query_error_discriminants.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/query_execution.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/query_page.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/query_reply_err_stale.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/query_reply_err_too_large.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/query_reply_ok.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/query_result.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/query_route.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/query_route_page.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/query_status.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/query_status_reply.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/query_target_discriminants.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/register_schema_managed.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/schema_def.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/session_changes.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/session_events.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/session_get.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/session_heartbeat.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/session_http_changes_empty.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/session_http_changes_gap.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/session_http_changes_legacy.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/session_http_changes_no_retained_rows.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/session_http_changes_origins.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/session_http_changes_page.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/session_http_changes_start.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/session_http_changes_start_new.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/session_http_changes_truncated.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/session_http_error.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/session_http_events.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/session_http_info.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/session_http_links.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/session_http_page.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/session_http_page_rebuilding.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/session_http_sources.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/session_http_state.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/session_link_relation.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/session_link_surface.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/session_links.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/session_list.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/session_ref.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/session_reply_changes.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/session_reply_error.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/session_reply_events.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/session_reply_info.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/session_reply_links.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/session_reply_page.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/session_reply_page_rebuilding.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/session_reply_sources.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/session_reply_state.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/session_sources.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/session_sources_lane_only.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/session_state.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/snapshot_page.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/source_ref_generation.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/start_policy_discriminants.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/state_delta.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/state_snapshot.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/table_file_page.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/table_metrics.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/table_schema_view.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/table_view.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/token_estimates.json +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/fixtures/typed_value_discriminants.bin +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/agent.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/arrow.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/authz.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/batch.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/browse.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/change.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/checkpoint.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/clients.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/codecs.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/codes.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/commands.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/content.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/destination.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/dispatch.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/encoding.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/error.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/filter/catalog.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/filter/cbor.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/filter/codecs.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/filter/coerce.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/filter/eval.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/filter/expr.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/filter/headers.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/filter/mod.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/filter/path.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/filter/read.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/filter/text.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/fork.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/framing.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/graph.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/hashing.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/headers.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/hello.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/http_client.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/keys.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/kv.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/lib.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/limits.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/memory.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/query.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/result.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/schema.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/session.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/snapshot.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/source.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/topics.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/topology.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/src/validate.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/tests/constants.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/tests/dispatch.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/tests/filter_eval_corpus.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/tests/headers.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/tests/json_patch.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/tests/producer_presence.rs +0 -0
- {laser_sdk-0.9.0.dev2 → laser_sdk-0.9.0.dev3}/wire/tests/robustness.rs +0 -0
|
@@ -8,7 +8,7 @@ edition = "2024"
|
|
|
8
8
|
license = "Apache-2.0"
|
|
9
9
|
repository = "https://github.com/laserdata/laser-sdk"
|
|
10
10
|
rust-version = "1.98.0"
|
|
11
|
-
version = "0.9.0-dev.
|
|
11
|
+
version = "0.9.0-dev.3"
|
|
12
12
|
|
|
13
13
|
[workspace.dependencies]
|
|
14
14
|
apache-avro = { version = "0.22.0" }
|
|
@@ -30,7 +30,7 @@ json-patch = { version = "4.2.0" }
|
|
|
30
30
|
jsonschema = { version = "0.60.1", default-features = false }
|
|
31
31
|
laser-sdk = { path = "sdk" }
|
|
32
32
|
laser-test-support = { path = "test-support" }
|
|
33
|
-
laser-wire = { path = "wire", version = "0.9.0-dev.
|
|
33
|
+
laser-wire = { path = "wire", version = "0.9.0-dev.3" }
|
|
34
34
|
memchr = { version = "2.8.3" }
|
|
35
35
|
ouroboros = { version = "0.18.5" }
|
|
36
36
|
prost = { version = "0.14.4" }
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: laser-sdk
|
|
3
|
-
Version: 0.9.0.
|
|
3
|
+
Version: 0.9.0.dev3
|
|
4
4
|
Classifier: Programming Language :: Rust
|
|
5
5
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
6
6
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|
@@ -32,7 +32,7 @@ This package provides the Python Laser SDK for Apache Iggy. [LaserData, Inc.](ht
|
|
|
32
32
|
|
|
33
33
|
Rust and Python share the data contract and Rust implementation. The bindings expose Python forms of the SDK operations, configuration, and errors. Shared examples and behavior scenarios cover language-neutral behavior.
|
|
34
34
|
|
|
35
|
-
> This source tree targets `0.9.0-dev.
|
|
35
|
+
> This source tree targets `0.9.0-dev.3`. The wire contract and public API use semantic versioning. Before `1.0.0`, minor releases can contain breaking changes.
|
|
36
36
|
|
|
37
37
|
`spawn_agent(agent_id, ..., consumer_group=None)` separates agent identity from its consumer group. The default group uses the agent ID spelling. Set `consumer_group` when the deployment needs a different group.
|
|
38
38
|
|
|
@@ -4,7 +4,7 @@ This package provides the Python Laser SDK for Apache Iggy. [LaserData, Inc.](ht
|
|
|
4
4
|
|
|
5
5
|
Rust and Python share the data contract and Rust implementation. The bindings expose Python forms of the SDK operations, configuration, and errors. Shared examples and behavior scenarios cover language-neutral behavior.
|
|
6
6
|
|
|
7
|
-
> This source tree targets `0.9.0-dev.
|
|
7
|
+
> This source tree targets `0.9.0-dev.3`. The wire contract and public API use semantic versioning. Before `1.0.0`, minor releases can contain breaking changes.
|
|
8
8
|
|
|
9
9
|
`spawn_agent(agent_id, ..., consumer_group=None)` separates agent identity from its consumer group. The default group uses the agent ID spelling. Set `consumer_group` when the deployment needs a different group.
|
|
10
10
|
|
|
@@ -2043,7 +2043,7 @@ checksum = "507460a910eb7b32ee961886ff48539633b788a36b65692b95f225b844c82553"
|
|
|
2043
2043
|
|
|
2044
2044
|
[[package]]
|
|
2045
2045
|
name = "laser-sdk"
|
|
2046
|
-
version = "0.9.0-dev.
|
|
2046
|
+
version = "0.9.0-dev.3"
|
|
2047
2047
|
dependencies = [
|
|
2048
2048
|
"apache-avro",
|
|
2049
2049
|
"async-trait",
|
|
@@ -2072,7 +2072,7 @@ dependencies = [
|
|
|
2072
2072
|
|
|
2073
2073
|
[[package]]
|
|
2074
2074
|
name = "laser-sdk-python"
|
|
2075
|
-
version = "0.9.0-dev.
|
|
2075
|
+
version = "0.9.0-dev.3"
|
|
2076
2076
|
dependencies = [
|
|
2077
2077
|
"async-trait",
|
|
2078
2078
|
"bytes",
|
|
@@ -2091,7 +2091,7 @@ dependencies = [
|
|
|
2091
2091
|
|
|
2092
2092
|
[[package]]
|
|
2093
2093
|
name = "laser-wire"
|
|
2094
|
-
version = "0.9.0-dev.
|
|
2094
|
+
version = "0.9.0-dev.3"
|
|
2095
2095
|
dependencies = [
|
|
2096
2096
|
"apache-avro",
|
|
2097
2097
|
"bon",
|
|
@@ -6,7 +6,7 @@ name = "laser-sdk-python"
|
|
|
6
6
|
# The Python package version tracks the Rust workspace release train (one
|
|
7
7
|
# version across laser-wire, laser-sdk, and the Python SDK), and the dependency
|
|
8
8
|
# below tracks the Rust laser-sdk it wraps.
|
|
9
|
-
version = "0.9.0-dev.
|
|
9
|
+
version = "0.9.0-dev.3"
|
|
10
10
|
edition = "2024"
|
|
11
11
|
license = "Apache-2.0"
|
|
12
12
|
repository = "https://github.com/laserdata/laser-sdk"
|
|
@@ -38,7 +38,7 @@ iggy = { version = "0.11.1-edge.9" }
|
|
|
38
38
|
# Path wins for the in-monorepo wheel build. The version lets a source build (an
|
|
39
39
|
# sdist on a platform with no prebuilt wheel) fetch laser-sdk from crates.io once
|
|
40
40
|
# it is published. Wheels carry it compiled in and pull nothing at install.
|
|
41
|
-
laser-sdk = { path = "../../sdk", version = "0.9.0-dev.
|
|
41
|
+
laser-sdk = { path = "../../sdk", version = "0.9.0-dev.3", features = ["a2a-bridge", "agent", "agui", "managed", "mcp-bridge", "provenance", "schema-codecs", "sign", "streaming"] }
|
|
42
42
|
log = "0.4"
|
|
43
43
|
pyo3 = { version = "0.29.3", features = ["abi3-py310", "experimental-async", "multiple-pymethods"] }
|
|
44
44
|
pyo3-async-runtimes = { version = "0.29.0", features = ["attributes", "tokio-runtime"] }
|
|
@@ -4,7 +4,7 @@ This package provides the Python Laser SDK for Apache Iggy. [LaserData, Inc.](ht
|
|
|
4
4
|
|
|
5
5
|
Rust and Python share the data contract and Rust implementation. The bindings expose Python forms of the SDK operations, configuration, and errors. Shared examples and behavior scenarios cover language-neutral behavior.
|
|
6
6
|
|
|
7
|
-
> This source tree targets `0.9.0-dev.
|
|
7
|
+
> This source tree targets `0.9.0-dev.3`. The wire contract and public API use semantic versioning. Before `1.0.0`, minor releases can contain breaking changes.
|
|
8
8
|
|
|
9
9
|
`spawn_agent(agent_id, ..., consumer_group=None)` separates agent identity from its consumer group. The default group uses the agent ID spelling. Set `consumer_group` when the deployment needs a different group.
|
|
10
10
|
|
|
@@ -21,9 +21,9 @@ The [`laser-wire`](https://crates.io/crates/laser-wire) crate defines encoded me
|
|
|
21
21
|
|
|
22
22
|
```toml
|
|
23
23
|
[dependencies]
|
|
24
|
-
laser-sdk = "0.9.0-dev.
|
|
24
|
+
laser-sdk = "0.9.0-dev.3" # typed streaming plus provenance
|
|
25
25
|
# Add only the layers the application uses:
|
|
26
|
-
laser-sdk = { version = "0.9.0-dev.
|
|
26
|
+
laser-sdk = { version = "0.9.0-dev.3", features = ["agent", "managed"] }
|
|
27
27
|
```
|
|
28
28
|
|
|
29
29
|
## Quick example
|
|
@@ -2,6 +2,7 @@ use crate::harness;
|
|
|
2
2
|
use crate::test_iggy::TestIggyCluster;
|
|
3
3
|
use async_trait::async_trait;
|
|
4
4
|
use iggy::prelude::{Identifier, StreamClient, TopicClient};
|
|
5
|
+
use iggy_common::calculate_32;
|
|
5
6
|
use laser_sdk::agent::{ParkedRecords, SessionControl};
|
|
6
7
|
use laser_sdk::govern::{ActionDecision, ActionGovernor, ActionKind, GovernedAction, GovernorMode};
|
|
7
8
|
use laser_sdk::prelude::full::*;
|
|
@@ -240,9 +241,7 @@ async fn pauses_across_nodes(cluster: &mut TestIggyCluster, stream: &str) {
|
|
|
240
241
|
// and resume each one. Every acknowledgment arrives within `bound` of its
|
|
241
242
|
// request. Returns the control partition of each pause.
|
|
242
243
|
async fn pause_round(laser: &Laser, seen: &Seen, body: &str, bound: Duration) -> Vec<u32> {
|
|
243
|
-
let sessions
|
|
244
|
-
.map(|_| ConversationId::new())
|
|
245
|
-
.collect();
|
|
244
|
+
let sessions = spread_sessions();
|
|
246
245
|
for session in &sessions {
|
|
247
246
|
send_work(laser, *session, body).await;
|
|
248
247
|
}
|
|
@@ -261,6 +260,23 @@ async fn pause_round(laser: &Laser, seen: &Seen, body: &str, bound: Duration) ->
|
|
|
261
260
|
partitions
|
|
262
261
|
}
|
|
263
262
|
|
|
263
|
+
// Sessions over every control partition, the same number on each, by the key
|
|
264
|
+
// rule Iggy routes a conversation id with. Random ids can all land on one
|
|
265
|
+
// partition, which would leave one primary to pause through.
|
|
266
|
+
fn spread_sessions() -> Vec<ConversationId> {
|
|
267
|
+
let per_partition = CLUSTER_SESSIONS / CLUSTER_PARTITIONS as usize;
|
|
268
|
+
let mut buckets: Vec<Vec<ConversationId>> = vec![Vec::new(); CLUSTER_PARTITIONS as usize];
|
|
269
|
+
while buckets.iter().any(|bucket| bucket.len() < per_partition) {
|
|
270
|
+
let session = ConversationId::new();
|
|
271
|
+
let partition = calculate_32(session.to_string().as_bytes()) % CLUSTER_PARTITIONS;
|
|
272
|
+
let bucket = &mut buckets[partition as usize];
|
|
273
|
+
if bucket.len() < per_partition {
|
|
274
|
+
bucket.push(session);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
buckets.into_iter().flatten().collect()
|
|
278
|
+
}
|
|
279
|
+
|
|
264
280
|
async fn wait_acknowledged_within(
|
|
265
281
|
laser: &Laser,
|
|
266
282
|
session: ConversationId,
|
|
@@ -53,7 +53,7 @@ Modules group related types and operations. Features select optional dependencie
|
|
|
53
53
|
| `session` | the seven session read requests (each naming its stream first), `SessionReply` with `SessionInfo`, `SessionPage` (whose `rebuilding` says the index is rebuilding or catching up, so the page can be incomplete), `SessionEventsPage`, `SessionStateView`, `SessionLinksView`, `SessionSources`, and `SessionChanges`, the frontier and gap types, `SessionError`, and the process heartbeat body `SessionHeartbeat` |
|
|
54
54
|
| `dispatch` | the timeline `display_type` mapping, the reliable-consumer `classify` and `classify_generic` dispatch classification, the control operation names, and the addressee filters `addressee_filter(me)` and `broadcast_filter()` with `ADDRESSEE_FILTER_NAME`, the name an agent runtime saves its addressee policy under, pinned by `fixtures/dispatch_cases.json` |
|
|
55
55
|
| `snapshot` | `FoldSnapshot` names one stream and fold. Sorted `SnapshotOffset` entries pin each topic creation time, partition, and last folded offset. |
|
|
56
|
-
| `forward` | the forwarded managed-request frames (`ForwardedQuery`/`ForwardedCommand`, the command carrying the optional stable `operation_id` a mutation forwards under
|
|
56
|
+
| `forward` | the forwarded managed-request frames (`ForwardedQuery`/`ForwardedCommand`, the command carrying the optional stable `operation_id` a mutation forwards under and the agent the calling connection declared, a claim nothing verifies), the server-stamped `ForwardedScope { stream_id, stream, stream_created_at_micros }` a session command needs, and `Caller { user_id, agent, on_behalf_of }`, which control stamps and mutation envelopes carry when a client asked |
|
|
57
57
|
| `mutation` | the managed mutation identity contract: `ManagedRequestEnvelope` (the client wrapper carrying one nonzero `operation_id` per logical mutation) and `MutationCommandEnvelope` (the durable record a deployment appends and folds, carrying the trusted `scope` into replay). Which codes must carry the identity is the `codes` module's shared `is_idempotent_managed_request` classifier |
|
|
58
58
|
| `keys` | the versioned managed key record (`KeyRecord`, `KeyKind`, `KEY_RECORD_VERSION`): the one storage representation every port's managed key registry reads and writes |
|
|
59
59
|
| `commands` | the `Command` trait pairing each code with its request/reply types |
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -981,6 +981,11 @@ pub struct ControlStamp {
|
|
|
981
981
|
pub stream_generation: Option<ControlStreamGeneration>,
|
|
982
982
|
/// Identifies the sealing key without revealing it.
|
|
983
983
|
pub key_id: u64,
|
|
984
|
+
/// The client that asked for the record. Absent on a record the backend or
|
|
985
|
+
/// the streaming server issues on its own, so it tells the root user, id
|
|
986
|
+
/// zero, apart from them.
|
|
987
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
988
|
+
pub caller: Option<crate::forward::Caller>,
|
|
984
989
|
}
|
|
985
990
|
|
|
986
991
|
/// One incarnation of a stream: a deleted and recreated stream has a new
|
|
@@ -1532,6 +1537,7 @@ mod wire_tests {
|
|
|
1532
1537
|
created_at_micros: 1_700_000_000_000_000,
|
|
1533
1538
|
}),
|
|
1534
1539
|
key_id: u64::MAX,
|
|
1540
|
+
caller: None,
|
|
1535
1541
|
}),
|
|
1536
1542
|
};
|
|
1537
1543
|
let back: ControlEnvelope =
|
|
@@ -128,6 +128,7 @@ corpus!(
|
|
|
128
128
|
"control_register_schema_protobuf.bin",
|
|
129
129
|
"control_accept_gap.bin",
|
|
130
130
|
"control_skip_record.bin",
|
|
131
|
+
"control_stamped_caller.bin",
|
|
131
132
|
"control_stamped_remove_binding.bin",
|
|
132
133
|
"control_register_session_source_all.bin",
|
|
133
134
|
"control_register_session_source_named.bin",
|
|
@@ -181,6 +182,8 @@ corpus!(
|
|
|
181
182
|
"fork_put.bin",
|
|
182
183
|
"fork_reply_created.bin",
|
|
183
184
|
"forwarded_command.bin",
|
|
185
|
+
"forwarded_command_agent.bin",
|
|
186
|
+
"forwarded_command_on_behalf_of.bin",
|
|
184
187
|
"forwarded_command_positioned.bin",
|
|
185
188
|
"forwarded_command_scoped.bin",
|
|
186
189
|
"forwarded_query.bin",
|
|
@@ -238,6 +241,7 @@ corpus!(
|
|
|
238
241
|
"memory_forget_scoped.bin",
|
|
239
242
|
"memory_item_origin.bin",
|
|
240
243
|
"mutation_command.bin",
|
|
244
|
+
"mutation_command_caller.bin",
|
|
241
245
|
"mutation_command_scoped.bin",
|
|
242
246
|
"query_envelope.bin",
|
|
243
247
|
"query_envelope_aggregate.bin",
|
|
@@ -4,6 +4,24 @@
|
|
|
4
4
|
|
|
5
5
|
use serde::{Deserialize, Serialize};
|
|
6
6
|
|
|
7
|
+
/// Who asked for a request the managed backend records, present only when a
|
|
8
|
+
/// client asked. A record the backend or the streaming server issues on its own
|
|
9
|
+
/// carries none.
|
|
10
|
+
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
11
|
+
pub struct Caller {
|
|
12
|
+
/// The authenticated user. The root user is id zero.
|
|
13
|
+
pub user_id: u32,
|
|
14
|
+
/// The agent the caller's connection declared in its presence. A claim the
|
|
15
|
+
/// client makes, never verified.
|
|
16
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
17
|
+
pub agent: Option<crate::agent::AgentId>,
|
|
18
|
+
/// The end user an intermediary wrote for, as it named that user in
|
|
19
|
+
/// [`ON_BEHALF_OF_HEADER`](crate::http::ON_BEHALF_OF_HEADER). A claim the
|
|
20
|
+
/// backend records, never verified.
|
|
21
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
22
|
+
pub on_behalf_of: Option<String>,
|
|
23
|
+
}
|
|
24
|
+
|
|
7
25
|
/// Trusted stream identity stamped by the server before forwarding a session request.
|
|
8
26
|
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
|
|
9
27
|
pub struct ForwardedScope {
|
|
@@ -19,7 +37,8 @@ pub struct ForwardedQuery {
|
|
|
19
37
|
/// Authenticated identity. Audit today, per-user stream scoping later.
|
|
20
38
|
/// Trusted: set by the server, not the client.
|
|
21
39
|
pub user_id: u32,
|
|
22
|
-
/// Originating client id, for logging and audit only.
|
|
40
|
+
/// Originating client id, for logging and audit only. Never zero for a
|
|
41
|
+
/// client, zero on a request the server issues itself.
|
|
23
42
|
pub client_id: u128,
|
|
24
43
|
/// `gen_ai.conversation.id` echoed for the audit log, never used to route.
|
|
25
44
|
pub correlation: Option<String>,
|
|
@@ -50,7 +69,8 @@ pub struct ForwardedCommand {
|
|
|
50
69
|
/// Authenticated identity, set by the server. The key-value store scopes its
|
|
51
70
|
/// rows by this `user_id`, and the SDK cannot set it.
|
|
52
71
|
pub user_id: u32,
|
|
53
|
-
///
|
|
72
|
+
/// The caller's consensus client id, for logging and audit only. Never zero
|
|
73
|
+
/// for a client, zero on a request the server issues itself.
|
|
54
74
|
pub client_id: u128,
|
|
55
75
|
/// `gen_ai.conversation.id` echoed for the audit log, never used to route.
|
|
56
76
|
pub correlation: Option<String>,
|
|
@@ -101,6 +121,17 @@ pub struct ForwardedCommand {
|
|
|
101
121
|
/// backend refuses a frame whose tenancy differs from its own.
|
|
102
122
|
#[serde(default, skip_serializing_if = "crate::authz::Tenancy::is_deployment")]
|
|
103
123
|
pub tenancy: crate::authz::Tenancy,
|
|
124
|
+
/// Set by the server on a mutation a client sent over the binary protocol:
|
|
125
|
+
/// the agent the calling connection declared in its presence. A claim the
|
|
126
|
+
/// client makes, never verified. Absent over HTTP and on the server's own
|
|
127
|
+
/// requests.
|
|
128
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
129
|
+
pub agent: Option<crate::agent::AgentId>,
|
|
130
|
+
/// Set by the server from [`ON_BEHALF_OF_HEADER`](crate::http::ON_BEHALF_OF_HEADER)
|
|
131
|
+
/// on an HTTP write: the end user an intermediary wrote for. A claim, never
|
|
132
|
+
/// verified.
|
|
133
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
134
|
+
pub on_behalf_of: Option<String>,
|
|
104
135
|
}
|
|
105
136
|
|
|
106
137
|
#[expect(clippy::trivially_copy_pass_by_ref, reason = "serde skip predicate")]
|
|
@@ -159,6 +190,8 @@ mod tests {
|
|
|
159
190
|
command_code: 1_000_000,
|
|
160
191
|
payload: vec![0x90; 5],
|
|
161
192
|
grants: Vec::new(),
|
|
193
|
+
agent: None,
|
|
194
|
+
on_behalf_of: None,
|
|
162
195
|
})
|
|
163
196
|
.expect("encodes");
|
|
164
197
|
assert!(
|
|
@@ -201,9 +234,93 @@ mod tests {
|
|
|
201
234
|
command_code: 42,
|
|
202
235
|
payload: vec![0xde, 0xad, 0xbe, 0xef],
|
|
203
236
|
grants: Vec::new(),
|
|
237
|
+
agent: None,
|
|
238
|
+
on_behalf_of: None,
|
|
204
239
|
};
|
|
205
240
|
let back: ForwardedCommand =
|
|
206
241
|
decode_named(&encode_named(&command).expect("encodes")).expect("decodes");
|
|
207
242
|
assert_eq!(back, command);
|
|
208
243
|
}
|
|
244
|
+
|
|
245
|
+
#[test]
|
|
246
|
+
fn given_a_root_caller_with_an_agent_when_round_tripped_then_should_keep_both() {
|
|
247
|
+
let caller = Caller {
|
|
248
|
+
user_id: 0,
|
|
249
|
+
agent: Some("orbit-planner".parse().expect("agent id")),
|
|
250
|
+
on_behalf_of: None,
|
|
251
|
+
};
|
|
252
|
+
|
|
253
|
+
let back: Caller = decode_named(&encode_named(&caller).expect("encodes")).expect("decodes");
|
|
254
|
+
|
|
255
|
+
assert_eq!(back, caller);
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
#[test]
|
|
259
|
+
fn given_a_caller_written_for_an_end_user_when_round_tripped_then_should_keep_who_it_was_for() {
|
|
260
|
+
let caller = Caller {
|
|
261
|
+
user_id: 3,
|
|
262
|
+
agent: None,
|
|
263
|
+
on_behalf_of: Some("1793690355287073".to_owned()),
|
|
264
|
+
};
|
|
265
|
+
|
|
266
|
+
let back: Caller = decode_named(&encode_named(&caller).expect("encodes")).expect("decodes");
|
|
267
|
+
|
|
268
|
+
assert_eq!(back, caller);
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
#[test]
|
|
272
|
+
fn given_a_caller_with_an_empty_agent_when_decoded_then_should_be_refused() {
|
|
273
|
+
#[derive(serde::Serialize)]
|
|
274
|
+
struct Unchecked<'a> {
|
|
275
|
+
user_id: u32,
|
|
276
|
+
agent: &'a str,
|
|
277
|
+
}
|
|
278
|
+
let frame = encode_named(&Unchecked {
|
|
279
|
+
user_id: 3,
|
|
280
|
+
agent: "",
|
|
281
|
+
})
|
|
282
|
+
.expect("encodes");
|
|
283
|
+
|
|
284
|
+
assert!(decode_named::<Caller>(&frame).is_err());
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
#[test]
|
|
288
|
+
fn given_a_forwarded_command_with_an_agent_when_read_without_the_field_then_should_ignore_it() {
|
|
289
|
+
#[derive(Debug, PartialEq, serde::Deserialize)]
|
|
290
|
+
struct BeforeAgent {
|
|
291
|
+
user_id: u32,
|
|
292
|
+
client_id: u128,
|
|
293
|
+
command_code: u32,
|
|
294
|
+
}
|
|
295
|
+
let command = ForwardedCommand {
|
|
296
|
+
read_barrier: false,
|
|
297
|
+
min_position: None,
|
|
298
|
+
positioned_reply: false,
|
|
299
|
+
min_sessions: Vec::new(),
|
|
300
|
+
tenancy: Default::default(),
|
|
301
|
+
user_id: 0,
|
|
302
|
+
client_id: 9,
|
|
303
|
+
correlation: None,
|
|
304
|
+
operation_id: Some(9),
|
|
305
|
+
read_all: false,
|
|
306
|
+
scope: None,
|
|
307
|
+
command_code: 42,
|
|
308
|
+
payload: vec![1],
|
|
309
|
+
grants: Vec::new(),
|
|
310
|
+
agent: Some("orbit-planner".parse().expect("agent id")),
|
|
311
|
+
on_behalf_of: None,
|
|
312
|
+
};
|
|
313
|
+
|
|
314
|
+
let before: BeforeAgent =
|
|
315
|
+
decode_named(&encode_named(&command).expect("encodes")).expect("decodes");
|
|
316
|
+
|
|
317
|
+
assert_eq!(
|
|
318
|
+
before,
|
|
319
|
+
BeforeAgent {
|
|
320
|
+
user_id: 0,
|
|
321
|
+
client_id: 9,
|
|
322
|
+
command_code: 42,
|
|
323
|
+
}
|
|
324
|
+
);
|
|
325
|
+
}
|
|
209
326
|
}
|
|
@@ -1318,6 +1318,11 @@ pub const PARAM_EXPECT_ABSENT: &str = "expect_absent";
|
|
|
1318
1318
|
/// wire constant rather than an unscoped string. Absent means no expiry.
|
|
1319
1319
|
pub const KV_EXPIRES_AT_MICROS_HEADER: &str = "agdx-expires-at-micros";
|
|
1320
1320
|
|
|
1321
|
+
/// Request header an intermediary sets on a managed HTTP write to name the end
|
|
1322
|
+
/// user it writes for. The streaming server forwards it to the backend, which
|
|
1323
|
+
/// records it beside the authenticated user and never trusts it.
|
|
1324
|
+
pub const ON_BEHALF_OF_HEADER: &str = "agdx-on-behalf-of";
|
|
1325
|
+
|
|
1321
1326
|
/// `GET /agdx/projections` filters. Every field is optional, and an absent field is
|
|
1322
1327
|
/// omitted from the query string (no empty `topic=`). Field names are the
|
|
1323
1328
|
/// `PARAM_*` consts verbatim, so the client serializer and the server parser
|
|
@@ -191,6 +191,10 @@ pub struct MutationCommandEnvelope {
|
|
|
191
191
|
pub scope: Option<crate::forward::ForwardedScope>,
|
|
192
192
|
#[serde(with = "crate::encoding::bin_bytes")]
|
|
193
193
|
pub payload: Vec<u8>,
|
|
194
|
+
/// The client that asked for the command. Absent on a command the backend
|
|
195
|
+
/// issues on its own.
|
|
196
|
+
#[serde(default, skip_serializing_if = "Option::is_none")]
|
|
197
|
+
pub caller: Option<crate::forward::Caller>,
|
|
194
198
|
}
|
|
195
199
|
|
|
196
200
|
impl MutationCommandEnvelope {
|
|
@@ -318,6 +322,7 @@ mod tests {
|
|
|
318
322
|
command_code: AGDX_KV_SET_CODE,
|
|
319
323
|
scope: None,
|
|
320
324
|
payload: vec![0, 1, 2, 255],
|
|
325
|
+
caller: None,
|
|
321
326
|
};
|
|
322
327
|
let bytes = encode_named(&envelope).expect("encodes");
|
|
323
328
|
let back: MutationCommandEnvelope = decode_named(&bytes).expect("decodes");
|
|
@@ -362,6 +367,7 @@ mod tests {
|
|
|
362
367
|
command_code: AGDX_KV_SET_CODE,
|
|
363
368
|
scope: None,
|
|
364
369
|
payload: Vec::new(),
|
|
370
|
+
caller: None,
|
|
365
371
|
};
|
|
366
372
|
|
|
367
373
|
assert!(request.validate().is_err());
|
|
@@ -33,9 +33,10 @@ use laser_wire::checkpoint::{
|
|
|
33
33
|
};
|
|
34
34
|
use laser_wire::clients::{ClientMetadata, ClientMetadataList, ClientMetadataQuery};
|
|
35
35
|
use laser_wire::codes::{
|
|
36
|
-
AGDX_KV_SET_CODE, AGENT_OP_VERSION, AUTHZ_OP_VERSION,
|
|
37
|
-
|
|
38
|
-
GRAPH_OP_VERSION, KV_LEASE_OP_VERSION, KV_OP_VERSION,
|
|
36
|
+
AGDX_CONTROL_PUBLISH_CODE, AGDX_KV_SET_CODE, AGENT_OP_VERSION, AUTHZ_OP_VERSION,
|
|
37
|
+
BATCH_OP_VERSION, CHANGE_OP_VERSION, CHECKPOINT_OP_VERSION, CLIENT_METADATA_OP_VERSION,
|
|
38
|
+
CONTROL_OP_VERSION, FORK_OP_VERSION, GRAPH_OP_VERSION, KV_LEASE_OP_VERSION, KV_OP_VERSION,
|
|
39
|
+
QUERY_OP_VERSION,
|
|
39
40
|
};
|
|
40
41
|
use laser_wire::content::ContentType;
|
|
41
42
|
use laser_wire::control::{
|
|
@@ -63,7 +64,7 @@ use laser_wire::filter::{
|
|
|
63
64
|
use laser_wire::fork::{
|
|
64
65
|
ForkCreate, ForkInfo, ForkKind, ForkOutcome, ForkPut, ForkReply, ForkStatus,
|
|
65
66
|
};
|
|
66
|
-
use laser_wire::forward::{ForwardedCommand, ForwardedQuery, ForwardedScope};
|
|
67
|
+
use laser_wire::forward::{Caller, ForwardedCommand, ForwardedQuery, ForwardedScope};
|
|
67
68
|
use laser_wire::framing::{decode_named, encode_named};
|
|
68
69
|
use laser_wire::graph::{
|
|
69
70
|
EdgeDir, GraphEdge, GraphNeighbors, GraphNode, GraphQuery, GraphReply, GraphResult,
|
|
@@ -117,6 +118,9 @@ use laser_wire::topology::WireTopology;
|
|
|
117
118
|
use laser_wire::validate::Validate;
|
|
118
119
|
use serde::de::DeserializeOwned;
|
|
119
120
|
use serde::{Deserialize, Serialize};
|
|
121
|
+
use std::collections::BTreeMap;
|
|
122
|
+
use std::io::Read;
|
|
123
|
+
use std::path::{Path as FilePath, PathBuf};
|
|
120
124
|
|
|
121
125
|
#[test]
|
|
122
126
|
fn given_session_read_requests_when_encoded_then_should_match_golden_fixtures() {
|
|
@@ -202,8 +206,6 @@ fn given_session_read_requests_when_encoded_then_should_match_golden_fixtures()
|
|
|
202
206
|
laser_wire::framing::decode_named::<session_request::SessionGet>(&missing_stream).is_err()
|
|
203
207
|
);
|
|
204
208
|
}
|
|
205
|
-
use std::collections::BTreeMap;
|
|
206
|
-
use std::path::PathBuf;
|
|
207
209
|
|
|
208
210
|
const REGEN_ENV: &str = "AGDX_WIRE_FIXTURES_REGEN";
|
|
209
211
|
const TIMESTAMP_MICROS: u64 = 1_717_171_717_000_000;
|
|
@@ -445,6 +447,33 @@ fn fixture_path(name: &str) -> PathBuf {
|
|
|
445
447
|
.join(name)
|
|
446
448
|
}
|
|
447
449
|
|
|
450
|
+
fn write_fixture(path: &FilePath, encoded: impl AsRef<[u8]>) {
|
|
451
|
+
let mut temporary = path.as_os_str().to_os_string();
|
|
452
|
+
temporary.push(format!(".{}.tmp", std::process::id()));
|
|
453
|
+
let temporary = PathBuf::from(temporary);
|
|
454
|
+
std::fs::write(&temporary, encoded).expect("write fixture");
|
|
455
|
+
std::fs::rename(&temporary, path).expect("replace fixture");
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
#[test]
|
|
459
|
+
fn given_an_open_fixture_when_regenerated_then_should_keep_the_reader_on_a_complete_snapshot() {
|
|
460
|
+
let path = std::env::temp_dir().join(format!("laser-wire-fixture-{}.bin", std::process::id()));
|
|
461
|
+
std::fs::write(&path, b"original fixture").expect("initial fixture");
|
|
462
|
+
let mut reader = std::fs::File::open(&path).expect("open fixture");
|
|
463
|
+
|
|
464
|
+
write_fixture(&path, b"replacement fixture");
|
|
465
|
+
|
|
466
|
+
let mut snapshot = Vec::new();
|
|
467
|
+
reader
|
|
468
|
+
.read_to_end(&mut snapshot)
|
|
469
|
+
.expect("read open fixture");
|
|
470
|
+
let replacement = std::fs::read(&path).expect("read replacement");
|
|
471
|
+
drop(reader);
|
|
472
|
+
std::fs::remove_file(&path).expect("remove fixture");
|
|
473
|
+
assert_eq!(snapshot, b"original fixture");
|
|
474
|
+
assert_eq!(replacement, b"replacement fixture");
|
|
475
|
+
}
|
|
476
|
+
|
|
448
477
|
fn assert_frame<T>(name: &str, value: &T)
|
|
449
478
|
where
|
|
450
479
|
T: Serialize + DeserializeOwned,
|
|
@@ -452,7 +481,7 @@ where
|
|
|
452
481
|
let encoded = encode_named(value).expect("fixture value serializes");
|
|
453
482
|
let path = fixture_path(name);
|
|
454
483
|
if std::env::var(REGEN_ENV).is_ok() {
|
|
455
|
-
|
|
484
|
+
write_fixture(&path, &encoded);
|
|
456
485
|
}
|
|
457
486
|
let golden = std::fs::read(&path)
|
|
458
487
|
.unwrap_or_else(|error| panic!("read fixture {name}: {error} (regen with {REGEN_ENV}=1)"));
|
|
@@ -473,7 +502,7 @@ where
|
|
|
473
502
|
let encoded = serde_json::to_string_pretty(value).expect("fixture value serializes");
|
|
474
503
|
let path = fixture_path(name);
|
|
475
504
|
if std::env::var(REGEN_ENV).is_ok() {
|
|
476
|
-
|
|
505
|
+
write_fixture(&path, &encoded);
|
|
477
506
|
}
|
|
478
507
|
let golden = std::fs::read_to_string(&path)
|
|
479
508
|
.unwrap_or_else(|error| panic!("read fixture {name}: {error} (regen with {REGEN_ENV}=1)"));
|
|
@@ -1567,6 +1596,27 @@ fn given_control_frames_when_encoded_then_should_match_golden_fixtures() {
|
|
|
1567
1596
|
created_at_micros: 1_700_000_000_000_000,
|
|
1568
1597
|
}),
|
|
1569
1598
|
key_id: 11,
|
|
1599
|
+
caller: None,
|
|
1600
|
+
});
|
|
1601
|
+
stamped
|
|
1602
|
+
});
|
|
1603
|
+
assert_frame("control_stamped_caller.bin", &{
|
|
1604
|
+
let mut stamped = envelope(ControlCommand::DropSchema(4));
|
|
1605
|
+
stamped.stream = Some("fleet".to_owned());
|
|
1606
|
+
stamped.stamp = Some(ControlStamp {
|
|
1607
|
+
deployment_id: 7,
|
|
1608
|
+
actor_user_id: 3,
|
|
1609
|
+
operation_id: 0x0123_4567_89ab_cdef_0123_4567_89ab_cdf0,
|
|
1610
|
+
stream_generation: Some(ControlStreamGeneration {
|
|
1611
|
+
stream_id: 3,
|
|
1612
|
+
created_at_micros: 1_700_000_000_000_000,
|
|
1613
|
+
}),
|
|
1614
|
+
key_id: 11,
|
|
1615
|
+
caller: Some(Caller {
|
|
1616
|
+
user_id: 3,
|
|
1617
|
+
agent: None,
|
|
1618
|
+
on_behalf_of: Some("1793690355287073".to_owned()),
|
|
1619
|
+
}),
|
|
1570
1620
|
});
|
|
1571
1621
|
stamped
|
|
1572
1622
|
});
|
|
@@ -2315,6 +2365,50 @@ fn given_forwarded_frames_when_encoded_then_should_match_golden_fixtures() {
|
|
|
2315
2365
|
command_code: AGDX_KV_SET_CODE,
|
|
2316
2366
|
payload: vec![9, 9, 9],
|
|
2317
2367
|
grants: Vec::new(),
|
|
2368
|
+
agent: None,
|
|
2369
|
+
on_behalf_of: None,
|
|
2370
|
+
},
|
|
2371
|
+
);
|
|
2372
|
+
assert_frame(
|
|
2373
|
+
"forwarded_command_agent.bin",
|
|
2374
|
+
&ForwardedCommand {
|
|
2375
|
+
read_barrier: false,
|
|
2376
|
+
min_position: None,
|
|
2377
|
+
positioned_reply: true,
|
|
2378
|
+
min_sessions: Vec::new(),
|
|
2379
|
+
tenancy: Default::default(),
|
|
2380
|
+
user_id: 0,
|
|
2381
|
+
client_id: 42,
|
|
2382
|
+
correlation: None,
|
|
2383
|
+
operation_id: Some(17),
|
|
2384
|
+
read_all: false,
|
|
2385
|
+
scope: None,
|
|
2386
|
+
command_code: laser_wire::codes::AGDX_FORK_CREATE_CODE,
|
|
2387
|
+
payload: vec![9, 9, 9],
|
|
2388
|
+
grants: Vec::new(),
|
|
2389
|
+
agent: Some("orbit-planner".parse().expect("agent id")),
|
|
2390
|
+
on_behalf_of: None,
|
|
2391
|
+
},
|
|
2392
|
+
);
|
|
2393
|
+
assert_frame(
|
|
2394
|
+
"forwarded_command_on_behalf_of.bin",
|
|
2395
|
+
&ForwardedCommand {
|
|
2396
|
+
read_barrier: false,
|
|
2397
|
+
min_position: None,
|
|
2398
|
+
positioned_reply: false,
|
|
2399
|
+
min_sessions: Vec::new(),
|
|
2400
|
+
tenancy: Default::default(),
|
|
2401
|
+
user_id: 3,
|
|
2402
|
+
client_id: 42,
|
|
2403
|
+
correlation: None,
|
|
2404
|
+
operation_id: Some(18),
|
|
2405
|
+
read_all: false,
|
|
2406
|
+
scope: None,
|
|
2407
|
+
command_code: AGDX_CONTROL_PUBLISH_CODE,
|
|
2408
|
+
payload: vec![9, 9, 9],
|
|
2409
|
+
grants: Vec::new(),
|
|
2410
|
+
agent: None,
|
|
2411
|
+
on_behalf_of: Some("1793690355287073".to_owned()),
|
|
2318
2412
|
},
|
|
2319
2413
|
);
|
|
2320
2414
|
let scope = ForwardedScope {
|
|
@@ -2339,6 +2433,8 @@ fn given_forwarded_frames_when_encoded_then_should_match_golden_fixtures() {
|
|
|
2339
2433
|
command_code: AGDX_KV_SET_CODE,
|
|
2340
2434
|
payload: vec![9, 9, 9],
|
|
2341
2435
|
grants: Vec::new(),
|
|
2436
|
+
agent: None,
|
|
2437
|
+
on_behalf_of: None,
|
|
2342
2438
|
},
|
|
2343
2439
|
);
|
|
2344
2440
|
assert_frame(
|
|
@@ -2369,6 +2465,8 @@ fn given_forwarded_frames_when_encoded_then_should_match_golden_fixtures() {
|
|
|
2369
2465
|
command_code: laser_wire::codes::AGDX_KV_GET_CODE,
|
|
2370
2466
|
payload: vec![9, 9, 9],
|
|
2371
2467
|
grants: Vec::new(),
|
|
2468
|
+
agent: None,
|
|
2469
|
+
on_behalf_of: None,
|
|
2372
2470
|
},
|
|
2373
2471
|
);
|
|
2374
2472
|
assert_frame(
|
|
@@ -2569,6 +2667,25 @@ fn given_hello_reply_frame_when_encoded_then_should_match_golden_fixture() {
|
|
|
2569
2667
|
expires_at_micros: Some(1_700_000_000_000_000),
|
|
2570
2668
|
})
|
|
2571
2669
|
.expect("kv set encodes"),
|
|
2670
|
+
caller: None,
|
|
2671
|
+
},
|
|
2672
|
+
);
|
|
2673
|
+
assert_frame(
|
|
2674
|
+
"mutation_command_caller.bin",
|
|
2675
|
+
&MutationCommandEnvelope {
|
|
2676
|
+
v: FORK_OP_VERSION,
|
|
2677
|
+
operation_id: 44,
|
|
2678
|
+
actor_user_id: 0,
|
|
2679
|
+
deployment_id: 7,
|
|
2680
|
+
timestamp_micros: 1_700_000_000_000_000,
|
|
2681
|
+
command_code: laser_wire::codes::AGDX_FORK_CREATE_CODE,
|
|
2682
|
+
scope: None,
|
|
2683
|
+
payload: vec![9, 9, 9],
|
|
2684
|
+
caller: Some(Caller {
|
|
2685
|
+
user_id: 0,
|
|
2686
|
+
agent: Some("orbit-planner".parse().expect("agent id")),
|
|
2687
|
+
on_behalf_of: None,
|
|
2688
|
+
}),
|
|
2572
2689
|
},
|
|
2573
2690
|
);
|
|
2574
2691
|
assert_frame(
|
|
@@ -2586,6 +2703,7 @@ fn given_hello_reply_frame_when_encoded_then_should_match_golden_fixture() {
|
|
|
2586
2703
|
stream_created_at_micros: 1_700_000_000_000_000,
|
|
2587
2704
|
}),
|
|
2588
2705
|
payload: vec![9, 9, 9],
|
|
2706
|
+
caller: None,
|
|
2589
2707
|
},
|
|
2590
2708
|
);
|
|
2591
2709
|
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|