laser-sdk 0.8.2__tar.gz → 0.9.0.dev2__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.
Files changed (567) hide show
  1. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/Cargo.toml +12 -11
  2. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/PKG-INFO +15 -9
  3. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/README.md +14 -8
  4. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/Cargo.lock +56 -30
  5. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/Cargo.toml +3 -3
  6. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/README.md +14 -8
  7. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/iggy_test_server.py +218 -19
  8. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/laser_sdk.pyi +120 -52
  9. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/agent_runtime.rs +8 -5
  10. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/client.rs +21 -2
  11. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/consumer_group.rs +98 -48
  12. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/context.rs +1 -1
  13. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/errors.rs +40 -0
  14. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/filters.rs +136 -74
  15. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/lib.rs +1 -1
  16. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/session_reads.rs +1 -1
  17. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/stream.rs +31 -9
  18. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/transport.rs +53 -17
  19. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/tests/test_addressed_calls.py +1 -1
  20. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/tests/test_agdx_envelope.py +7 -0
  21. laser_sdk-0.9.0.dev2/foreign/python/tests/test_cluster.py +467 -0
  22. laser_sdk-0.9.0.dev2/foreign/python/tests/test_cluster_filters.py +348 -0
  23. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/tests/test_coordination_client.py +7 -0
  24. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/tests/test_filter_surface.py +12 -2
  25. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/tests/test_filters.py +219 -30
  26. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/tests/test_integration.py +227 -32
  27. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/tests/test_parity.py +68 -3
  28. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/tests/test_pause.py +0 -1
  29. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/tests/test_publish_failures.py +7 -1
  30. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/tests/test_smoke.py +31 -0
  31. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/tests/test_workflow_callbacks.py +0 -3
  32. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/laser_sdk.pyi +120 -52
  33. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/Cargo.toml +2 -2
  34. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/README.md +15 -9
  35. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/agent/agdx.rs +1 -1
  36. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/agent/builder.rs +53 -42
  37. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/agent/consumer.rs +336 -68
  38. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/agent/laser.rs +17 -9
  39. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/agent/mod.rs +1 -0
  40. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/agent/pause.rs +96 -79
  41. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/agent/registry.rs +33 -12
  42. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/agent/replies.rs +199 -120
  43. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/agent/session.rs +1 -0
  44. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/agent/session_reads.rs +42 -5
  45. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/capabilities.rs +5 -0
  46. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/context.rs +35 -7
  47. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/control.rs +2 -0
  48. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/cursor.rs +34 -10
  49. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/error.rs +2 -0
  50. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/filters/client.rs +70 -26
  51. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/filters/group.rs +94 -25
  52. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/filters/guard.rs +3 -4
  53. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/filters/mod.rs +11 -15
  54. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/filters/progress.rs +68 -14
  55. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/filters/reader.rs +1143 -239
  56. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/graph.rs +2 -0
  57. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/kv/client.rs +4 -0
  58. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/laser.rs +281 -331
  59. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/lib.rs +2 -1
  60. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/memory.rs +29 -5
  61. laser_sdk-0.9.0.dev2/sdk/src/nodes.rs +387 -0
  62. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/poll.rs +104 -12
  63. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/prelude.rs +0 -1
  64. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/projections.rs +65 -1
  65. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/publish_options.rs +19 -89
  66. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/query/client.rs +28 -10
  67. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/snapshot.rs +31 -33
  68. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/stream/consumer_group.rs +44 -67
  69. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/stream/transport.rs +1064 -246
  70. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/stream.rs +20 -3
  71. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/types/ids.rs +57 -24
  72. laser_sdk-0.9.0.dev2/sdk/tests/future_depth.rs +121 -0
  73. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/tests/integration/contract.rs +18 -0
  74. laser_sdk-0.9.0.dev2/sdk/tests/integration/filtered_wait.rs +317 -0
  75. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/tests/integration/filters.rs +2 -3
  76. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/tests/integration/filters_group.rs +986 -769
  77. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/tests/integration/governance.rs +1 -1
  78. laser_sdk-0.9.0.dev2/sdk/tests/integration/harness.rs +379 -0
  79. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/tests/integration/main.rs +1 -0
  80. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/tests/integration/memory.rs +1 -1
  81. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/tests/integration/pause.rs +151 -4
  82. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/tests/integration/reconnect.rs +10 -70
  83. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/tests/integration/reliable.rs +2 -2
  84. laser_sdk-0.9.0.dev2/sdk/tests/integration/request.rs +380 -0
  85. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/tests/integration/session.rs +10 -6
  86. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/tests/integration/signing.rs +5 -5
  87. laser_sdk-0.9.0.dev2/sdk/tests/integration/streaming.rs +1900 -0
  88. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/tests/integration/typed_topics.rs +6 -2
  89. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/tests/integration/workflow.rs +1 -1
  90. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/tests/support/test_iggy.rs +177 -26
  91. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/README.md +6 -6
  92. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/checkpoint_public_mutation_discriminants.bin +0 -0
  93. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/destination_checkpoint_status.bin +0 -0
  94. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/destination_issue.json +1 -1
  95. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/destination_page.json +1 -1
  96. laser_sdk-0.9.0.dev2/wire/fixtures/filter_ack.bin +0 -0
  97. laser_sdk-0.9.0.dev2/wire/fixtures/filter_ack_unfiltered.bin +0 -0
  98. laser_sdk-0.9.0.dev2/wire/fixtures/filter_mutation_configure_group.bin +0 -0
  99. laser_sdk-0.9.0.dev2/wire/fixtures/filter_mutation_configure_group.json +120 -0
  100. laser_sdk-0.9.0.dev2/wire/fixtures/filter_poll_request.bin +0 -0
  101. laser_sdk-0.9.0.dev2/wire/fixtures/filter_poll_request_group_auto.bin +0 -0
  102. laser_sdk-0.9.0.dev2/wire/fixtures/filter_poll_request_group_id.bin +0 -0
  103. laser_sdk-0.9.0.dev2/wire/fixtures/filter_reply_acknowledged.bin +0 -0
  104. laser_sdk-0.9.0.dev2/wire/fixtures/filter_reply_cancelled.bin +1 -0
  105. laser_sdk-0.9.0.dev2/wire/fixtures/filter_reply_error.bin +1 -0
  106. laser_sdk-0.9.0.dev2/wire/fixtures/filter_reply_page.bin +0 -0
  107. laser_sdk-0.9.0.dev2/wire/fixtures/filter_reply_page_unfiltered.bin +0 -0
  108. laser_sdk-0.9.0.dev2/wire/fixtures/filter_reply_ready.bin +1 -0
  109. laser_sdk-0.9.0.dev2/wire/fixtures/filter_wait_cancel.bin +1 -0
  110. laser_sdk-0.9.0.dev2/wire/fixtures/filter_wait_request.bin +0 -0
  111. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/start_policy_discriminants.bin +0 -0
  112. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/agent.rs +15 -0
  113. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/checkpoint.rs +1 -1
  114. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/codes.rs +8 -2
  115. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/control.rs +286 -4
  116. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/destination.rs +2 -4
  117. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/dispatch.rs +4 -0
  118. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/filter/catalog.rs +201 -13
  119. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/filter/mod.rs +9 -8
  120. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/filter/read.rs +252 -57
  121. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/fixtures.rs +7 -3
  122. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/hello.rs +8 -0
  123. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/http.rs +77 -0
  124. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/kv.rs +1 -1
  125. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/lib.rs +1 -1
  126. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/limits.rs +22 -0
  127. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/session.rs +97 -6
  128. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/source.rs +5 -7
  129. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/validate.rs +193 -5
  130. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/tests/constants.rs +15 -0
  131. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/tests/wire_fixtures.rs +191 -73
  132. laser_sdk-0.8.2/sdk/src/filters/route.rs +0 -578
  133. laser_sdk-0.8.2/sdk/src/managed_route.rs +0 -178
  134. laser_sdk-0.8.2/sdk/tests/integration/harness.rs +0 -116
  135. laser_sdk-0.8.2/sdk/tests/integration/request.rs +0 -165
  136. laser_sdk-0.8.2/sdk/tests/integration/streaming.rs +0 -779
  137. laser_sdk-0.8.2/wire/fixtures/filter_ack.bin +0 -0
  138. laser_sdk-0.8.2/wire/fixtures/filter_ack_unfiltered.bin +0 -0
  139. laser_sdk-0.8.2/wire/fixtures/filter_mutation_configure_group.bin +0 -0
  140. laser_sdk-0.8.2/wire/fixtures/filter_mutation_configure_group.json +0 -117
  141. laser_sdk-0.8.2/wire/fixtures/filter_poll_request.bin +0 -0
  142. laser_sdk-0.8.2/wire/fixtures/filter_poll_request_group_auto.bin +0 -0
  143. laser_sdk-0.8.2/wire/fixtures/filter_poll_request_group_id.bin +0 -0
  144. laser_sdk-0.8.2/wire/fixtures/filter_reply_acknowledged.bin +0 -0
  145. laser_sdk-0.8.2/wire/fixtures/filter_reply_error.bin +0 -1
  146. laser_sdk-0.8.2/wire/fixtures/filter_reply_page.bin +0 -0
  147. laser_sdk-0.8.2/wire/fixtures/filter_reply_page_unfiltered.bin +0 -0
  148. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/.gitignore +0 -0
  149. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/agdx.rs +0 -0
  150. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/agent.rs +0 -0
  151. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/async_bridge.rs +0 -0
  152. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/batching.rs +0 -0
  153. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/bin/stub_gen.rs +0 -0
  154. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/blob.rs +0 -0
  155. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/chunks.rs +0 -0
  156. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/codecs.rs +0 -0
  157. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/control.rs +0 -0
  158. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/convert.rs +0 -0
  159. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/coordination.rs +0 -0
  160. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/crash_context.rs +0 -0
  161. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/destinations.rs +0 -0
  162. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/fork.rs +0 -0
  163. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/govern.rs +0 -0
  164. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/graph.rs +0 -0
  165. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/ids.rs +0 -0
  166. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/intent.rs +0 -0
  167. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/interop.rs +0 -0
  168. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/kv.rs +0 -0
  169. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/memory.rs +0 -0
  170. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/memory_handler.rs +0 -0
  171. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/parity_helpers.rs +0 -0
  172. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/projections.rs +0 -0
  173. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/publish.rs +0 -0
  174. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/query.rs +0 -0
  175. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/rbac.rs +0 -0
  176. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/reader.rs +0 -0
  177. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/registry.rs +0 -0
  178. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/schema.rs +0 -0
  179. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/session.rs +0 -0
  180. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/session_ops.rs +0 -0
  181. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/sign.rs +0 -0
  182. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/snapshot.rs +0 -0
  183. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/state_store.rs +0 -0
  184. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/swarm.rs +0 -0
  185. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/typed.rs +0 -0
  186. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/watch.rs +0 -0
  187. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/src/workflow.rs +0 -0
  188. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/tests/conftest.py +0 -0
  189. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/tests/test_agent_surface.py +0 -0
  190. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/tests/test_callback_bridge.py +0 -0
  191. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/tests/test_close_logging.py +0 -0
  192. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/tests/test_connect_timeout.py +0 -0
  193. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/tests/test_control_builders.py +0 -0
  194. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/tests/test_data_surface.py +0 -0
  195. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/tests/test_errors.py +0 -0
  196. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/tests/test_parity_helpers.py +0 -0
  197. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/tests/test_query_wire.py +0 -0
  198. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/tests/test_rbac.py +0 -0
  199. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/tests/test_readme_snippets.py +0 -0
  200. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/tests/test_reconnect.py +0 -0
  201. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/tests/test_record_helpers.py +0 -0
  202. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/tests/test_resource_naming.py +0 -0
  203. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/tests/test_resume_parity.py +0 -0
  204. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/tests/test_snapshot_callbacks.py +0 -0
  205. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/tests/test_trait_hooks.py +0 -0
  206. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/foreign/python/uv.lock +0 -0
  207. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/pyproject.toml +0 -0
  208. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/LICENSE +0 -0
  209. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/NOTICE +0 -0
  210. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/certs/laserdata.crt +0 -0
  211. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/a2a.rs +0 -0
  212. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/agent/assembler.rs +0 -0
  213. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/agent/budget.rs +0 -0
  214. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/agent/clock.rs +0 -0
  215. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/agent/contract.rs +0 -0
  216. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/agent/control.rs +0 -0
  217. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/agent/ctx.rs +0 -0
  218. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/agent/lease.rs +0 -0
  219. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/agent/memory_handler.rs +0 -0
  220. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/agent/partitioning.rs +0 -0
  221. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/agent/router.rs +0 -0
  222. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/agent/scope.rs +0 -0
  223. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/agent/session_ops.rs +0 -0
  224. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/agent/state.rs +0 -0
  225. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/agent/workflow.rs +0 -0
  226. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/agui.rs +0 -0
  227. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/batching.rs +0 -0
  228. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/blob.rs +0 -0
  229. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/bridge_hops.rs +0 -0
  230. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/connect_options.rs +0 -0
  231. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/context_scope.rs +0 -0
  232. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/crash_context.rs +0 -0
  233. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/destinations.rs +0 -0
  234. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/edge_auth.rs +0 -0
  235. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/fork/client.rs +0 -0
  236. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/fork/mod.rs +0 -0
  237. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/govern.rs +0 -0
  238. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/intent.rs +0 -0
  239. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/kv/coordination.rs +0 -0
  240. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/kv/mod.rs +0 -0
  241. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/managed.rs +0 -0
  242. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/mcp.rs +0 -0
  243. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/message.rs +0 -0
  244. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/provenance/keys.rs +0 -0
  245. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/provenance/mod.rs +0 -0
  246. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/provenance/runtime.rs +0 -0
  247. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/provenance/topic.rs +0 -0
  248. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/query/mod.rs +0 -0
  249. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/rbac/mod.rs +0 -0
  250. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/retry.rs +0 -0
  251. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/schema_codecs.rs +0 -0
  252. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/sign.rs +0 -0
  253. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/state_store.rs +0 -0
  254. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/stream/producer_statistics.rs +0 -0
  255. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/stream/publish.rs +0 -0
  256. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/stream/record.rs +0 -0
  257. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/swarm.rs +0 -0
  258. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/testing.rs +0 -0
  259. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/typed.rs +0 -0
  260. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/types/mod.rs +0 -0
  261. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/src/watch.rs +0 -0
  262. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/tests/alloc.rs +0 -0
  263. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/tests/fixtures/retry-table.json +0 -0
  264. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/tests/fixtures/typescript_signature.json +0 -0
  265. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/tests/integration/a2a.rs +0 -0
  266. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/tests/integration/agdx_consume.rs +0 -0
  267. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/tests/integration/agdx_stream.rs +0 -0
  268. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/tests/integration/agui.rs +0 -0
  269. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/tests/integration/budget.rs +0 -0
  270. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/tests/integration/context.rs +0 -0
  271. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/tests/integration/deadletter.rs +0 -0
  272. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/tests/integration/decomposition.rs +0 -0
  273. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/tests/integration/fanout.rs +0 -0
  274. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/tests/integration/handoff.rs +0 -0
  275. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/tests/integration/human_input.rs +0 -0
  276. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/tests/integration/managed_unsupported.rs +0 -0
  277. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/tests/integration/mcp.rs +0 -0
  278. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/tests/integration/provenance.rs +0 -0
  279. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/tests/integration/queue_pressure.rs +0 -0
  280. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/tests/integration/replay.rs +0 -0
  281. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/tests/integration/runtime.rs +0 -0
  282. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/tests/integration/shutdown.rs +0 -0
  283. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/tests/integration/state.rs +0 -0
  284. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/tests/integration/warm_dedup.rs +0 -0
  285. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/tests/signature_interop.rs +0 -0
  286. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/sdk/tests/support/owned_server.rs +0 -0
  287. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/Cargo.toml +0 -0
  288. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/LICENSE +0 -0
  289. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/NOTICE +0 -0
  290. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/accepted_operation.json +0 -0
  291. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/agent_body_ref.bin +0 -0
  292. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/agent_card.bin +0 -0
  293. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/agent_chunk.bin +0 -0
  294. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/agent_chunk_open.bin +0 -0
  295. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/agent_chunk_terminal.bin +0 -0
  296. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/agent_command.bin +0 -0
  297. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/agent_command_signed.bin +0 -0
  298. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/agent_dead_letter.bin +0 -0
  299. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/agent_error.bin +0 -0
  300. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/agent_error_body.bin +0 -0
  301. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/agent_event.bin +0 -0
  302. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/agent_invalid_chunk_late_deadline.bin +0 -0
  303. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/agent_invalid_chunk_no_sequence.bin +0 -0
  304. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/agent_invalid_chunk_open_no_operation.bin +0 -0
  305. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/agent_invalid_command_no_correlation.bin +0 -0
  306. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/agent_invalid_error_last.bin +0 -0
  307. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/agent_invalid_event_task_state.bin +0 -0
  308. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/agent_invalid_response_channel.bin +0 -0
  309. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/agent_invalid_status_bad_operation.bin +0 -0
  310. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/agent_invalid_status_no_operation.bin +0 -0
  311. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/agent_must_understand.bin +0 -0
  312. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/agent_presence.bin +0 -0
  313. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/agent_record.bin +0 -0
  314. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/agent_response.bin +0 -0
  315. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/agent_session_end.bin +0 -0
  316. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/agent_session_parking.bin +0 -0
  317. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/agent_session_start.bin +0 -0
  318. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/agent_session_status.bin +0 -0
  319. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/agent_session_transition.bin +0 -0
  320. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/agent_signature.bin +0 -0
  321. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/agent_status_card.bin +0 -0
  322. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/agent_status_session.bin +0 -0
  323. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/agent_status_task.bin +0 -0
  324. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/agent_usage_cost.bin +0 -0
  325. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/arrow_ipc_metadata.bin +0 -0
  326. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/arrow_ipc_policy.bin +0 -0
  327. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/authz_bind_roles.bin +0 -0
  328. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/authz_get_role_reply.bin +0 -0
  329. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/authz_history_reply.bin +0 -0
  330. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/authz_history_request.bin +0 -0
  331. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/authz_role.bin +0 -0
  332. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/authz_whoami_reply.bin +0 -0
  333. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/backend_announce.bin +0 -0
  334. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/backend_announce_topology.bin +0 -0
  335. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/backend_announce_unavailable.bin +0 -0
  336. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/batch_reply.bin +0 -0
  337. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/batch_request.bin +0 -0
  338. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/browse_projections.json +0 -0
  339. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/browse_reply_decoded.bin +0 -0
  340. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/browse_reply_projections.bin +0 -0
  341. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/browse_reply_schema_registered.bin +0 -0
  342. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/browse_reply_schemas.bin +0 -0
  343. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/browse_schemas.json +0 -0
  344. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/capabilities.json +0 -0
  345. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/change_record.bin +0 -0
  346. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/checkpoint_mutation_replicated.bin +0 -0
  347. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/checkpoint_reply_destination.bin +0 -0
  348. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/checkpoint_reply_query_route.bin +0 -0
  349. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/checkpoint_request_public.bin +0 -0
  350. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/client_metadata_list.bin +0 -0
  351. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/client_metadata_query.bin +0 -0
  352. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/context_compaction.bin +0 -0
  353. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/context_manifest.bin +0 -0
  354. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/context_retrieval.bin +0 -0
  355. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/control_accept_gap.bin +0 -0
  356. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/control_apply_binding.bin +0 -0
  357. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/control_drop_schema.bin +0 -0
  358. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/control_filter_catalog.bin +0 -0
  359. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/control_register_projection.bin +0 -0
  360. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/control_register_schema_avro.bin +0 -0
  361. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/control_register_schema_json.bin +0 -0
  362. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/control_register_schema_protobuf.bin +0 -0
  363. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/control_register_session_source_all.bin +0 -0
  364. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/control_register_session_source_named.bin +0 -0
  365. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/control_remove_binding.bin +0 -0
  366. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/control_remove_session_source.bin +0 -0
  367. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/control_skip_record.bin +0 -0
  368. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/control_stamped_remove_binding.bin +0 -0
  369. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/data_stack_string_discriminants.bin +0 -0
  370. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/decode_record.bin +0 -0
  371. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/dispatch_cases.json +0 -0
  372. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/error_body.json +0 -0
  373. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/filter_catalog_reply_bound.bin +0 -0
  374. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/filter_catalog_reply_configured.bin +0 -0
  375. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/filter_catalog_reply_registered.bin +0 -0
  376. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/filter_catalog_reply_revision_state.bin +0 -0
  377. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/filter_catalog_reply_revisions.bin +0 -0
  378. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/filter_catalog_reply_unbound.bin +0 -0
  379. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/filter_codec_cases.json +0 -0
  380. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/filter_consumer_filter.bin +0 -0
  381. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/filter_consumer_filter.json +0 -0
  382. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/filter_eval_cases.json +0 -0
  383. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/filter_mutation_register.bin +0 -0
  384. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/filter_mutation_register.json +0 -0
  385. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/filter_mutation_revision_state.bin +0 -0
  386. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/filter_mutation_revision_state.json +0 -0
  387. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/filter_mutation_unbind_exact.bin +0 -0
  388. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/filter_mutation_unbind_exact.json +0 -0
  389. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/filter_reply_revision_disabled.bin +0 -0
  390. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/filter_validation.json +0 -0
  391. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/fold_snapshot.bin +0 -0
  392. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/fork_create.bin +0 -0
  393. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/fork_info.json +0 -0
  394. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/fork_put.bin +0 -0
  395. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/fork_reply_created.bin +0 -0
  396. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/forwarded_command.bin +0 -0
  397. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/forwarded_command_positioned.bin +0 -0
  398. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/forwarded_command_scoped.bin +0 -0
  399. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/forwarded_query.bin +0 -0
  400. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/forwarded_query_scoped.bin +0 -0
  401. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/graph_edge.bin +0 -0
  402. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/graph_edge_conversation.bin +0 -0
  403. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/graph_edge_producer.bin +0 -0
  404. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/graph_edge_sourced.bin +0 -0
  405. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/graph_neighbors.bin +0 -0
  406. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/graph_neighbors_conversation.bin +0 -0
  407. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/graph_node.bin +0 -0
  408. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/graph_node_conversation.bin +0 -0
  409. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/graph_node_producer.bin +0 -0
  410. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/graph_node_sourced.bin +0 -0
  411. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/graph_query.bin +0 -0
  412. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/graph_query_conversation.bin +0 -0
  413. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/graph_reply.bin +0 -0
  414. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/graph_upsert.bin +0 -0
  415. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/graph_upsert_session.bin +0 -0
  416. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/header_block_envelope.json +0 -0
  417. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/header_block_generic.json +0 -0
  418. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/hello_reply.bin +0 -0
  419. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/hello_reply_agent.bin +0 -0
  420. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/hello_reply_features.bin +0 -0
  421. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/json_patch/cases.json +0 -0
  422. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/key_record.bin +0 -0
  423. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/kv_cas.bin +0 -0
  424. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/kv_cas_fenced.bin +0 -0
  425. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/kv_cas_session.bin +0 -0
  426. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/kv_copy.bin +0 -0
  427. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/kv_delete_session.bin +0 -0
  428. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/kv_entry_memory_scope.bin +0 -0
  429. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/kv_get_barriered.bin +0 -0
  430. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/kv_lease.bin +0 -0
  431. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/kv_lease_renew.bin +0 -0
  432. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/kv_move.bin +0 -0
  433. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/kv_namespaces.bin +0 -0
  434. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/kv_page_view.json +0 -0
  435. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/kv_patch_session.bin +0 -0
  436. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/kv_release.bin +0 -0
  437. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/kv_reply_committed.bin +0 -0
  438. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/kv_reply_leased.bin +0 -0
  439. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/kv_reply_namespaces.bin +0 -0
  440. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/kv_reply_page.bin +0 -0
  441. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/kv_reply_renewed.bin +0 -0
  442. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/kv_reply_stale.bin +0 -0
  443. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/kv_reply_version_conflict.bin +0 -0
  444. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/kv_scan.bin +0 -0
  445. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/kv_set.bin +0 -0
  446. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/kv_set_session.bin +0 -0
  447. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/logical_schema.bin +0 -0
  448. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/logical_type_discriminants.bin +0 -0
  449. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/managed_read.bin +0 -0
  450. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/managed_reply.bin +0 -0
  451. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/managed_request.bin +0 -0
  452. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/materialization_destination.bin +0 -0
  453. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/memory_feedback_scoped.bin +0 -0
  454. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/memory_forget_scoped.bin +0 -0
  455. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/memory_item_origin.bin +0 -0
  456. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/mutation_command.bin +0 -0
  457. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/mutation_command_scoped.bin +0 -0
  458. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/producer_presence.bin +0 -0
  459. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/query_cancel.bin +0 -0
  460. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/query_envelope.bin +0 -0
  461. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/query_envelope_aggregate.bin +0 -0
  462. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/query_envelope_raw_sql.bin +0 -0
  463. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/query_envelope_read_your_writes.bin +0 -0
  464. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/query_envelope_text.bin +0 -0
  465. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/query_error_discriminants.bin +0 -0
  466. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/query_execution.json +0 -0
  467. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/query_page.bin +0 -0
  468. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/query_reply_err_stale.bin +0 -0
  469. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/query_reply_err_too_large.bin +0 -0
  470. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/query_reply_ok.bin +0 -0
  471. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/query_result.json +0 -0
  472. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/query_route.bin +0 -0
  473. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/query_route_page.json +0 -0
  474. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/query_status.bin +0 -0
  475. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/query_status_reply.bin +0 -0
  476. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/query_target_discriminants.bin +0 -0
  477. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/register_schema_managed.bin +0 -0
  478. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/schema_def.json +0 -0
  479. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/session_changes.bin +0 -0
  480. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/session_events.bin +0 -0
  481. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/session_get.bin +0 -0
  482. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/session_heartbeat.bin +0 -0
  483. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/session_http_changes_empty.json +0 -0
  484. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/session_http_changes_gap.json +0 -0
  485. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/session_http_changes_legacy.json +0 -0
  486. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/session_http_changes_no_retained_rows.json +0 -0
  487. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/session_http_changes_origins.json +0 -0
  488. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/session_http_changes_page.json +0 -0
  489. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/session_http_changes_start.json +0 -0
  490. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/session_http_changes_start_new.json +0 -0
  491. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/session_http_changes_truncated.json +0 -0
  492. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/session_http_error.json +0 -0
  493. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/session_http_events.json +0 -0
  494. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/session_http_info.json +0 -0
  495. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/session_http_links.json +0 -0
  496. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/session_http_page.json +0 -0
  497. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/session_http_page_rebuilding.json +0 -0
  498. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/session_http_sources.json +0 -0
  499. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/session_http_state.json +0 -0
  500. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/session_link_relation.bin +0 -0
  501. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/session_link_surface.bin +0 -0
  502. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/session_links.bin +0 -0
  503. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/session_list.bin +0 -0
  504. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/session_ref.bin +0 -0
  505. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/session_reply_changes.bin +0 -0
  506. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/session_reply_error.bin +0 -0
  507. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/session_reply_events.bin +0 -0
  508. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/session_reply_info.bin +0 -0
  509. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/session_reply_links.bin +0 -0
  510. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/session_reply_page.bin +0 -0
  511. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/session_reply_page_rebuilding.bin +0 -0
  512. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/session_reply_sources.bin +0 -0
  513. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/session_reply_state.bin +0 -0
  514. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/session_sources.bin +0 -0
  515. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/session_sources_lane_only.bin +0 -0
  516. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/session_state.bin +0 -0
  517. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/snapshot_page.json +0 -0
  518. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/source_ref_generation.bin +0 -0
  519. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/state_delta.bin +0 -0
  520. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/state_snapshot.bin +0 -0
  521. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/table_file_page.json +0 -0
  522. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/table_metrics.json +0 -0
  523. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/table_schema_view.json +0 -0
  524. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/table_view.json +0 -0
  525. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/token_estimates.json +0 -0
  526. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/fixtures/typed_value_discriminants.bin +0 -0
  527. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/arrow.rs +0 -0
  528. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/authz.rs +0 -0
  529. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/batch.rs +0 -0
  530. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/browse.rs +0 -0
  531. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/change.rs +0 -0
  532. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/clients.rs +0 -0
  533. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/codecs.rs +0 -0
  534. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/commands.rs +0 -0
  535. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/content.rs +0 -0
  536. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/encoding.rs +0 -0
  537. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/error.rs +0 -0
  538. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/filter/cbor.rs +0 -0
  539. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/filter/codecs.rs +0 -0
  540. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/filter/coerce.rs +0 -0
  541. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/filter/eval.rs +0 -0
  542. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/filter/expr.rs +0 -0
  543. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/filter/headers.rs +0 -0
  544. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/filter/path.rs +0 -0
  545. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/filter/text.rs +0 -0
  546. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/fork.rs +0 -0
  547. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/forward.rs +0 -0
  548. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/framing.rs +0 -0
  549. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/graph.rs +0 -0
  550. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/hashing.rs +0 -0
  551. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/headers.rs +0 -0
  552. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/http_client.rs +0 -0
  553. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/keys.rs +0 -0
  554. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/memory.rs +0 -0
  555. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/mutation.rs +0 -0
  556. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/query.rs +0 -0
  557. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/result.rs +0 -0
  558. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/schema.rs +0 -0
  559. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/snapshot.rs +0 -0
  560. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/topics.rs +0 -0
  561. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/src/topology.rs +0 -0
  562. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/tests/dispatch.rs +0 -0
  563. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/tests/filter_eval_corpus.rs +0 -0
  564. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/tests/headers.rs +0 -0
  565. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/tests/json_patch.rs +0 -0
  566. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/tests/producer_presence.rs +0 -0
  567. {laser_sdk-0.8.2 → laser_sdk-0.9.0.dev2}/wire/tests/robustness.rs +0 -0
@@ -1,6 +1,6 @@
1
1
  [workspace]
2
2
  exclude = ["bdd/rust", "bench", "foreign/python", "fuzz"]
3
- members = ["examples/rust", "sdk", "wire"]
3
+ members = ["examples/rust", "sdk", "test-support", "wire"]
4
4
  resolver = "2"
5
5
 
6
6
  [workspace.package]
@@ -8,14 +8,14 @@ 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.8.2"
11
+ version = "0.9.0-dev.2"
12
12
 
13
13
  [workspace.dependencies]
14
14
  apache-avro = { version = "0.22.0" }
15
15
  async-trait = { version = "0.1.92" }
16
16
  axum = { version = "0.8.9" }
17
17
  blake3 = { version = "1.8.7" }
18
- bon = { version = "3.10.2" }
18
+ bon = { version = "3.10.3" }
19
19
  bson = { version = "3.1.0", features = ["serde"] }
20
20
  bytes = { version = "1.12.1" }
21
21
  ciborium = { version = "0.2.2" }
@@ -23,18 +23,19 @@ colored = { version = "3.1.1" }
23
23
  dashmap = { version = "6.2.1" }
24
24
  ed25519-dalek = { version = "3.0.0" }
25
25
  futures = { version = "0.3.34" }
26
- iggy = { version = "0.11.0" }
27
- iggy_binary_protocol = { version = "0.11.0" }
28
- iggy_common = { version = "0.11.0" }
26
+ iggy = { version = "0.11.1-edge.9" }
27
+ iggy_binary_protocol = { version = "0.11.1-edge.8" }
28
+ iggy_common = { version = "0.11.1-edge.10" }
29
29
  json-patch = { version = "4.2.0" }
30
- jsonschema = { version = "0.58.5", default-features = false }
30
+ jsonschema = { version = "0.60.1", default-features = false }
31
31
  laser-sdk = { path = "sdk" }
32
- laser-wire = { path = "wire", version = "0.8.2" }
32
+ laser-test-support = { path = "test-support" }
33
+ laser-wire = { path = "wire", version = "0.9.0-dev.2" }
33
34
  memchr = { version = "2.8.3" }
34
35
  ouroboros = { version = "0.18.5" }
35
36
  prost = { version = "0.14.4" }
36
37
  prost-reflect = { version = "0.16.5", features = ["serde"] }
37
- protox = { version = "0.9.1" }
38
+ protox = { version = "0.10.0" }
38
39
  regex = { version = "1.13.1" }
39
40
  reqwest = { version = "0.13.5", default-features = false, features = ["json", "rustls"] }
40
41
  rmp-serde = { version = "1.3.1" }
@@ -43,12 +44,12 @@ serde = { version = "1.0", features = ["derive"] }
43
44
  serde_json = { version = "1.0" }
44
45
  serde_urlencoded = { version = "0.7.1" }
45
46
  serial_test = { version = "4.0.1" }
46
- sha2 = { version = "0.11.0" }
47
+ sha2 = { version = "0.11.1" }
47
48
  strum = { version = "0.28.0", features = ["derive"] }
48
49
  tempfile = { version = "3.27.0" }
49
50
  thiserror = { version = "2.0.21" }
50
51
  time = { version = "0.3.55", default-features = false }
51
- tokio = { version = "1.53.2", features = ["fs", "macros", "process", "rt", "rt-multi-thread", "sync", "time"] }
52
+ tokio = { version = "1.54.1", features = ["fs", "macros", "process", "rt", "rt-multi-thread", "sync", "time"] }
52
53
  tracing = { version = "0.1.44" }
53
54
  tracing-subscriber = { version = "0.3.23", features = ["env-filter"] }
54
55
  trait-variant = { version = "0.1.3" }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: laser-sdk
3
- Version: 0.8.2
3
+ Version: 0.9.0.dev2
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.8.0`. The wire contract and public API use semantic versioning. Before `1.0.0`, minor releases can contain breaking changes.
35
+ > This source tree targets `0.9.0-dev.2`. 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
 
@@ -74,7 +74,7 @@ Python uses the Rust client reconnect policy. TCP connections retry a failed dia
74
74
 
75
75
  `Laser.connect` calls Rust `Laser::connect`. Hosts under `*.laserdata.cloud` and `*.laserdata.com` use TLS with the bundled LaserData root CA. `LASER_TLS_CERT=<path>` selects an explicit certificate. `LASER_NO_TLS=1` disables automatic TLS. Other hosts retain their connection-string configuration.
76
76
 
77
- LaserData Cloud and Laser Stack enable managed surfaces only when their backend announcement reports ready. `await laser.refresh_capabilities()` re-probes a long-lived connection after startup or a backend restart. The returned `Capabilities` groups each managed surface: `caps.query` is a `QueryCaps` (`available`, `consistency`), `caps.kv` a `KvCaps` (`available`, `cas`, `fenced_leases`), `caps.filters` a `FilterCaps`, and `caps.destinations` a `DestinationCaps`. It also carries `versions: OpVersions | None` and the advertised backends. Apache Iggy keeps every managed surface off and reports no operation versions.
77
+ LaserData Cloud and Laser Stack enable managed surfaces only when their backend announcement reports ready. `await laser.refresh_capabilities()` re-probes a long-lived connection after startup or a backend restart. The returned `Capabilities` groups each managed surface: `caps.query` is a `QueryCaps` (`available`, `consistency`), `caps.kv` a `KvCaps` (`available`, `cas`, `fenced_leases`), `caps.filters` a `FilterCaps` (`native`, `catalog`, `group_policy_reads`, `evaluation`, and `max_wait_ms`, the longest filtered wait the server holds, zero when it holds none), and `caps.destinations` a `DestinationCaps`. It also carries `versions: OpVersions | None` and the advertised backends. Apache Iggy keeps every managed surface off and reports no operation versions.
78
78
 
79
79
  ## Connect timeout
80
80
 
@@ -101,6 +101,8 @@ print(committed.confirmations)
101
101
 
102
102
  Producers and publish builders return `SendMessagesResponse`. Each `SendMessagesConfirmationResponse` identifies a committed batch by stream, topic, partition, and first offset. The list can be empty when the server does not report offsets. Completion follows the topic durability policy.
103
103
 
104
+ On a cluster, `replication_factor` sets how many nodes store each partition of a topic the call creates, as in `readings.ensure(4, replication_factor=2)` or `readings.producer(partitions=4, replication_factor=2)`. It must be 1 to `MAX_REPLICATION_FACTOR` (32) and at most the node count. Without it the server's default applies, and an existing topic keeps its own. A factor outside 1 to 32 raises `InvalidError` before anything is sent, and the server's refusal of a factor above its node count raises `TransportError`.
105
+
104
106
  ## Batch and any payload
105
107
 
106
108
  `publish_batch` groups records for sending. A `topic(..).replay()` cursor reads retained records and saves the next offset for each partition. Each poll reads at most 10,000 messages per partition. Later polls resume from the saved offsets. Failed or canceled polls leave those offsets unchanged.
@@ -135,7 +137,7 @@ batch_committed = await producer.send_batch(
135
137
 
136
138
  consumer = topic.consumer_group("workers").consumer(
137
139
  batch_length=1000,
138
- poll_interval_ms=5,
140
+ max_wait_ms=5000,
139
141
  auto_commit="disabled",
140
142
  )
141
143
  await consumer.init()
@@ -148,7 +150,9 @@ finally:
148
150
  await consumer.shutdown()
149
151
  ```
150
152
 
151
- Header values accept ordinary Python scalar values. For an exact Apache Iggy numeric type, pass `(kind, value)`. `ConsumerMessage.header_kinds` reports the received types. The default `auto_commit="polling"` with `commit_interval_ms=0` matches the Rust default `Polling` policy. The other modes are `"all"`, `"each"`, `"every"` with `commit_every=`, `"interval"`, and `"disabled"`. A `commit_interval_ms` above zero adds a timer to the chosen mode, so `auto_commit="each"` with `commit_interval_ms=1000` stores on each message or each second. `"interval"` requires `commit_interval_ms` above zero. `next_within(wait_secs)` waits a bounded time and raises `TimeoutError` when nothing arrives, like Rust `next_within`.
153
+ Header values accept ordinary Python scalar values. For an exact Apache Iggy numeric type, pass `(kind, value)`. `ConsumerMessage.header_kinds` reports the received types. The default `auto_commit="polling"` with `commit_interval_ms=0` matches the Rust default `Polling` policy. The other modes are `"all"`, `"each"`, `"every"` with `commit_every=`, `"interval"`, and `"disabled"`. A `commit_interval_ms` above zero adds a timer to the chosen mode, so `auto_commit="each"` with `commit_interval_ms=1000` stores on each message or each second. `"interval"` requires `commit_interval_ms` above zero. `next_within(wait_secs)` waits a bounded time and raises `TimeoutError` when nothing arrives, like Rust `next_within`. A group consumer always resumes after the group's stored offset. Its `polling`, `offset` or `timestamp_micros` start only seeds a partition the group never stored, before its first read, and the native consumer of a server without group policy reads seeds only the partitions it holds when it joins, as [client behavior](../../docs/client-behavior.md#consumers-and-polling) describes.
154
+
155
+ Polls are held on the server. `max_wait_ms` (default 5000, 0 to 600000) is how long the server holds a poll that finds fewer than `min_count` new records (default 1, at most `batch_length`), and `max_bytes` (default 1048576) caps the record bytes of one reply. A new record ends the wait at once, so a caught-up consumer sees it without client-side polling. A group consumer always joins its group.
152
156
 
153
157
  With automatic commits disabled, call `commit(message)` after successful handling. `shutdown()` does not advance the offset past that commit. `Consumer` waits for new records. A `replay()` cursor reads retained records in bounded polls and stops its iterator when caught up.
154
158
 
@@ -354,7 +358,7 @@ safe_mode = ls.ConsumerFilter.json(
354
358
  )
355
359
  topic = laser.stream("orbit").topic("fleet_changes")
356
360
  group = topic.consumer_group("anomaly-desk")
357
- info = await group.create(filter=safe_mode) # Run once during setup.
361
+ info = await group.create(filter=safe_mode, filter_name="safe-mode") # Run once during setup.
358
362
 
359
363
  # Every consumer instance needs only the group name or info.id.
360
364
  consumer = group.consumer(batch_length=100, auto_commit="disabled")
@@ -368,13 +372,13 @@ finally:
368
372
 
369
373
  `batch_length=100` examines at most 100 source records per partition request. It may deliver fewer matches, including none. An empty scan advances over rejected records and does not mean end of stream. The consumer continues bounded scans and waits only when caught up. Manual `commit(record)` stores safe contiguous progress after processing. Automatic policies commit the delivered prefix at their configured cadence and at shutdown. The native Apache Iggy path retains its own documented commit timing.
370
374
 
371
- For batch handling, build `await group.reader(count=100, max_examined=1000)`, then use `next_page()` and `ack_page()`. `start=` takes `"next"`, `"first"`, `"last"`, `{"offset": n}`, or `{"timestamp": micros}`. Here `count` limits returned records, while `max_examined` independently limits the scan. Each reader joins as a member, and Iggy distributes partitions across instances. Acknowledgments preserve pending earlier work and reject stale source or policy generations. A reader keeps at most 1024 unacknowledged record-bearing pages per partition by default, so a reader that never acknowledges stops at that bound instead of growing without limit. Set `max_unacked_pages=` to change it.
375
+ For batch handling, build `await group.reader(count=100, max_examined=1000)`, then use `next_page()` and `ack_page()`. `start=` takes `"next"`, `"first"`, `"last"`, `{"offset": n}`, or `{"timestamp": micros}`. Here `count` limits returned records, while `max_examined` independently limits the scan. Each reader joins as a member, and Iggy distributes partitions across instances. Acknowledgments preserve pending earlier work and reject stale source or policy generations. A reader keeps at most 1024 unacknowledged record-bearing pages per partition by default, so a reader that never acknowledges stops at that bound instead of growing without limit. Set `max_unacked_pages=` to change it. After a round that found nothing new, the reader waits in a filtered wait the server holds until one of its partitions has a new record, at most `max_wait_ms` (default 5000) and the server's `caps.filters.max_wait_ms`. On a server that holds no filtered wait it sleeps `idle_interval_ms` instead. `ack`, `close` and the other reader calls end that wait, so they never wait for the server.
372
376
 
373
377
  For an application checkpoint inside a filtered page, call `await reader.ack_through(record)` after persisting the checkpoint and processing all preceding records on that partition. Later records in the same page stay pending. Use `ack_page` when the whole page is complete.
374
378
 
375
379
  Use separate groups for A/B revisions so their offsets remain independent, and pause or resume a revision with `set_revision_enabled`. A fresh named consumer with the default `polling="next"` starts at the first retained record, and a stable name resumes durable progress. On the native Apache Iggy path the default `auto_commit="polling"` commits each polled batch before delivery, so a later consumer can resume after records the application did not process. Disable auto-commit and commit after successful processing when that matters.
376
380
 
377
- `group.filter()` provides `configure`, `get`, `revisions`, `revise`, `set_revision_enabled`, `release`, `delete`, `preview` and `test`. `delete()` removes the group's own filter with every revision and releases the group first. Pass `operation_id` to configuration when setup must resume with the same operation ID after a lost reply. `topic.consumer_group_id(id)` addresses the saved group by numeric ID. Catalog failures, denied reads and paused revisions never broaden into unfiltered delivery. Original Apache Iggy uses native group consumption, while an older managed server without group-aware reads returns an explicit upgrade error.
381
+ `filter_name` is required with `filter`. It names the group's own filter in the catalog, follows the registered filter name rule (1 to 128 bytes of ASCII letters, digits, `-`, `_` and `.`) and need not be unique. `group.filter()` provides `configure(name, filter)`, `configure_with` and `configure_as` (`filter=` with `filter_name=`, or `filter_id=` with `revision=`), `get`, `summary`, `revisions`, `revise`, `set_revision_enabled`, `release`, `delete`, `preview` and `test`. Configuring the same digest under another name keeps the binding and renames the filter. `summary()` returns the group's own filter as a catalog row dict with the caller's `name` and the owning group under `owner`, or `None`. `delete()` removes the group's own filter with every revision and releases the group first. Pass `operation_id` to configuration when setup must resume with the same operation ID after a lost reply. `topic.consumer_group_id(id)` addresses the saved group by numeric ID. Catalog failures, denied reads and paused revisions never broaden into unfiltered delivery. Original Apache Iggy uses native group consumption, while an older managed server without group-aware reads returns an explicit upgrade error.
378
382
 
379
383
  Filters support JSON, CBOR, Avro, Protobuf and typed headers. Avro and Protobuf filters use registered writer schemas, immutable schema IDs in the filter, and the `agdx.sid` header on each record. Headers-only filters work with any payload format and never decode the payload. `CompiledFilter.compile(filter).evaluate(payload)` runs the evaluator locally, and `explain(payload)` returns its verdict tree. `FilterExpr.text(field, kind, pattern)` matches case-sensitively, and chaining `.case_insensitive()` ignores case. `with_fault_policy`, `with_foreign_policy` and `with_mismatch_policy` control invalid records. Passed invalid records and unfiltered records have `evaluated` false. Failures raise `FilterError` with a `reason`, and every `LaserError` carries `filter_reason`. A fault or oversized stop also sets `partition_id` and `offset`. Unknown header value kinds remain raw bytes. Malformed entries set `headers_malformed` while valid headers and the payload remain readable. A structurally truncated block has empty headers. A `next_record` call cancelled after it read a record yields that record again on the next call.
380
384
 
@@ -434,6 +438,8 @@ print(bytes(reply.payload).decode())
434
438
  await handle_agent.shutdown()
435
439
  ```
436
440
 
441
+ The agent's reads are held on the server: `max_wait_ms` (default 5000) is how long a read that finds nothing new waits before it answers, and a record ends the wait at once.
442
+
437
443
  Keep the handle until `shutdown()` or `join()`. Dropping it signals a graceful stop and cancels periodic consolidation, and `abort()` stops the agent immediately. `async with laser.spawn_agent(...) as handle:` waits for readiness and stops the agent on exit.
438
444
 
439
445
  Each agent id reads through its own consumer group, named after the agent id unless `consumer_group=` names another, so every instance of one agent shares its work. The handler only sees work for this agent: commands addressed to it or to every agent. Replies, status records, and records for other agents are committed without calling it. On `agent.sessions` and `agent.control`, when the server resolves group policies and serves filtered reads and the filter catalog, the group is bound to the addressee filter `agdx.to In [<agent id>, "*"]` before the first read, so the server sends only those records. Otherwise the agent reads every record and sorts them itself. [Agents, groups, and layouts](../../docs/building-agents.md#agents-groups-and-layouts) explains how to pick a layout.
@@ -779,7 +785,7 @@ later = await session.turns_since(ls.Checkpoint.from_json(saved))
779
785
 
780
786
  `laser.context(conversation)` returns a `ContextScope`. Its `fetch(n=50, token_budget=)` and `block` read `agent.sessions` unless `topics=` names others, and return `ContextMessage` records (`id`, `provenance`, `payload`, `envelope`, `topic`). `fetch_with(topics, Chain([LastN(20), TokenBudget(4_000)]))` takes the policy objects `LastN`, `TokenBudget(max_tokens, estimator=None)`, `RoleFilter(agents)`, and `Chain`. `state(topics, init, fold, last_n=|from_offsets=|from_checkpoint=|at=|full=True)`, `state_with(store, topics, init, fold)`, and `checkpoint(topics)` fold the conversation log like Rust. `context_checkpoint(laser, topics)` captures a checkpoint without a conversation, and `ConversationState.load(laser, conversation, topics, init, fold)` folds one directly with the same bounds. Each read covers at most the newest `CONTEXT_READ_WINDOW` (10,000) messages per partition.
781
787
 
782
- `ContextMessage` also carries `timestamp_micros`, the broker append time, and the numeric `stream_id` and `topic_id`. `LastN`, `TokenBudget`, `RoleFilter`, and `Chain` report `name`, `version`, and `selection(history)`, which a context manifest records. A custom policy can set `name` and `version` attributes. Every SDK estimates tokens the same way: the byte count divided by four, rounded up.
788
+ `ContextMessage` also carries `timestamp_micros`, the server append time, and the numeric `stream_id` and `topic_id`. `LastN`, `TokenBudget`, `RoleFilter`, and `Chain` report `name`, `version`, and `selection(history)`, which a context manifest records. A custom policy can set `name` and `version` attributes. Every SDK estimates tokens the same way: the byte count divided by four, rounded up.
783
789
 
784
790
  ## Memory and state
785
791
 
@@ -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.8.0`. The wire contract and public API use semantic versioning. Before `1.0.0`, minor releases can contain breaking changes.
7
+ > This source tree targets `0.9.0-dev.2`. 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
 
@@ -46,7 +46,7 @@ Python uses the Rust client reconnect policy. TCP connections retry a failed dia
46
46
 
47
47
  `Laser.connect` calls Rust `Laser::connect`. Hosts under `*.laserdata.cloud` and `*.laserdata.com` use TLS with the bundled LaserData root CA. `LASER_TLS_CERT=<path>` selects an explicit certificate. `LASER_NO_TLS=1` disables automatic TLS. Other hosts retain their connection-string configuration.
48
48
 
49
- LaserData Cloud and Laser Stack enable managed surfaces only when their backend announcement reports ready. `await laser.refresh_capabilities()` re-probes a long-lived connection after startup or a backend restart. The returned `Capabilities` groups each managed surface: `caps.query` is a `QueryCaps` (`available`, `consistency`), `caps.kv` a `KvCaps` (`available`, `cas`, `fenced_leases`), `caps.filters` a `FilterCaps`, and `caps.destinations` a `DestinationCaps`. It also carries `versions: OpVersions | None` and the advertised backends. Apache Iggy keeps every managed surface off and reports no operation versions.
49
+ LaserData Cloud and Laser Stack enable managed surfaces only when their backend announcement reports ready. `await laser.refresh_capabilities()` re-probes a long-lived connection after startup or a backend restart. The returned `Capabilities` groups each managed surface: `caps.query` is a `QueryCaps` (`available`, `consistency`), `caps.kv` a `KvCaps` (`available`, `cas`, `fenced_leases`), `caps.filters` a `FilterCaps` (`native`, `catalog`, `group_policy_reads`, `evaluation`, and `max_wait_ms`, the longest filtered wait the server holds, zero when it holds none), and `caps.destinations` a `DestinationCaps`. It also carries `versions: OpVersions | None` and the advertised backends. Apache Iggy keeps every managed surface off and reports no operation versions.
50
50
 
51
51
  ## Connect timeout
52
52
 
@@ -73,6 +73,8 @@ print(committed.confirmations)
73
73
 
74
74
  Producers and publish builders return `SendMessagesResponse`. Each `SendMessagesConfirmationResponse` identifies a committed batch by stream, topic, partition, and first offset. The list can be empty when the server does not report offsets. Completion follows the topic durability policy.
75
75
 
76
+ On a cluster, `replication_factor` sets how many nodes store each partition of a topic the call creates, as in `readings.ensure(4, replication_factor=2)` or `readings.producer(partitions=4, replication_factor=2)`. It must be 1 to `MAX_REPLICATION_FACTOR` (32) and at most the node count. Without it the server's default applies, and an existing topic keeps its own. A factor outside 1 to 32 raises `InvalidError` before anything is sent, and the server's refusal of a factor above its node count raises `TransportError`.
77
+
76
78
  ## Batch and any payload
77
79
 
78
80
  `publish_batch` groups records for sending. A `topic(..).replay()` cursor reads retained records and saves the next offset for each partition. Each poll reads at most 10,000 messages per partition. Later polls resume from the saved offsets. Failed or canceled polls leave those offsets unchanged.
@@ -107,7 +109,7 @@ batch_committed = await producer.send_batch(
107
109
 
108
110
  consumer = topic.consumer_group("workers").consumer(
109
111
  batch_length=1000,
110
- poll_interval_ms=5,
112
+ max_wait_ms=5000,
111
113
  auto_commit="disabled",
112
114
  )
113
115
  await consumer.init()
@@ -120,7 +122,9 @@ finally:
120
122
  await consumer.shutdown()
121
123
  ```
122
124
 
123
- Header values accept ordinary Python scalar values. For an exact Apache Iggy numeric type, pass `(kind, value)`. `ConsumerMessage.header_kinds` reports the received types. The default `auto_commit="polling"` with `commit_interval_ms=0` matches the Rust default `Polling` policy. The other modes are `"all"`, `"each"`, `"every"` with `commit_every=`, `"interval"`, and `"disabled"`. A `commit_interval_ms` above zero adds a timer to the chosen mode, so `auto_commit="each"` with `commit_interval_ms=1000` stores on each message or each second. `"interval"` requires `commit_interval_ms` above zero. `next_within(wait_secs)` waits a bounded time and raises `TimeoutError` when nothing arrives, like Rust `next_within`.
125
+ Header values accept ordinary Python scalar values. For an exact Apache Iggy numeric type, pass `(kind, value)`. `ConsumerMessage.header_kinds` reports the received types. The default `auto_commit="polling"` with `commit_interval_ms=0` matches the Rust default `Polling` policy. The other modes are `"all"`, `"each"`, `"every"` with `commit_every=`, `"interval"`, and `"disabled"`. A `commit_interval_ms` above zero adds a timer to the chosen mode, so `auto_commit="each"` with `commit_interval_ms=1000` stores on each message or each second. `"interval"` requires `commit_interval_ms` above zero. `next_within(wait_secs)` waits a bounded time and raises `TimeoutError` when nothing arrives, like Rust `next_within`. A group consumer always resumes after the group's stored offset. Its `polling`, `offset` or `timestamp_micros` start only seeds a partition the group never stored, before its first read, and the native consumer of a server without group policy reads seeds only the partitions it holds when it joins, as [client behavior](../../docs/client-behavior.md#consumers-and-polling) describes.
126
+
127
+ Polls are held on the server. `max_wait_ms` (default 5000, 0 to 600000) is how long the server holds a poll that finds fewer than `min_count` new records (default 1, at most `batch_length`), and `max_bytes` (default 1048576) caps the record bytes of one reply. A new record ends the wait at once, so a caught-up consumer sees it without client-side polling. A group consumer always joins its group.
124
128
 
125
129
  With automatic commits disabled, call `commit(message)` after successful handling. `shutdown()` does not advance the offset past that commit. `Consumer` waits for new records. A `replay()` cursor reads retained records in bounded polls and stops its iterator when caught up.
126
130
 
@@ -326,7 +330,7 @@ safe_mode = ls.ConsumerFilter.json(
326
330
  )
327
331
  topic = laser.stream("orbit").topic("fleet_changes")
328
332
  group = topic.consumer_group("anomaly-desk")
329
- info = await group.create(filter=safe_mode) # Run once during setup.
333
+ info = await group.create(filter=safe_mode, filter_name="safe-mode") # Run once during setup.
330
334
 
331
335
  # Every consumer instance needs only the group name or info.id.
332
336
  consumer = group.consumer(batch_length=100, auto_commit="disabled")
@@ -340,13 +344,13 @@ finally:
340
344
 
341
345
  `batch_length=100` examines at most 100 source records per partition request. It may deliver fewer matches, including none. An empty scan advances over rejected records and does not mean end of stream. The consumer continues bounded scans and waits only when caught up. Manual `commit(record)` stores safe contiguous progress after processing. Automatic policies commit the delivered prefix at their configured cadence and at shutdown. The native Apache Iggy path retains its own documented commit timing.
342
346
 
343
- For batch handling, build `await group.reader(count=100, max_examined=1000)`, then use `next_page()` and `ack_page()`. `start=` takes `"next"`, `"first"`, `"last"`, `{"offset": n}`, or `{"timestamp": micros}`. Here `count` limits returned records, while `max_examined` independently limits the scan. Each reader joins as a member, and Iggy distributes partitions across instances. Acknowledgments preserve pending earlier work and reject stale source or policy generations. A reader keeps at most 1024 unacknowledged record-bearing pages per partition by default, so a reader that never acknowledges stops at that bound instead of growing without limit. Set `max_unacked_pages=` to change it.
347
+ For batch handling, build `await group.reader(count=100, max_examined=1000)`, then use `next_page()` and `ack_page()`. `start=` takes `"next"`, `"first"`, `"last"`, `{"offset": n}`, or `{"timestamp": micros}`. Here `count` limits returned records, while `max_examined` independently limits the scan. Each reader joins as a member, and Iggy distributes partitions across instances. Acknowledgments preserve pending earlier work and reject stale source or policy generations. A reader keeps at most 1024 unacknowledged record-bearing pages per partition by default, so a reader that never acknowledges stops at that bound instead of growing without limit. Set `max_unacked_pages=` to change it. After a round that found nothing new, the reader waits in a filtered wait the server holds until one of its partitions has a new record, at most `max_wait_ms` (default 5000) and the server's `caps.filters.max_wait_ms`. On a server that holds no filtered wait it sleeps `idle_interval_ms` instead. `ack`, `close` and the other reader calls end that wait, so they never wait for the server.
344
348
 
345
349
  For an application checkpoint inside a filtered page, call `await reader.ack_through(record)` after persisting the checkpoint and processing all preceding records on that partition. Later records in the same page stay pending. Use `ack_page` when the whole page is complete.
346
350
 
347
351
  Use separate groups for A/B revisions so their offsets remain independent, and pause or resume a revision with `set_revision_enabled`. A fresh named consumer with the default `polling="next"` starts at the first retained record, and a stable name resumes durable progress. On the native Apache Iggy path the default `auto_commit="polling"` commits each polled batch before delivery, so a later consumer can resume after records the application did not process. Disable auto-commit and commit after successful processing when that matters.
348
352
 
349
- `group.filter()` provides `configure`, `get`, `revisions`, `revise`, `set_revision_enabled`, `release`, `delete`, `preview` and `test`. `delete()` removes the group's own filter with every revision and releases the group first. Pass `operation_id` to configuration when setup must resume with the same operation ID after a lost reply. `topic.consumer_group_id(id)` addresses the saved group by numeric ID. Catalog failures, denied reads and paused revisions never broaden into unfiltered delivery. Original Apache Iggy uses native group consumption, while an older managed server without group-aware reads returns an explicit upgrade error.
353
+ `filter_name` is required with `filter`. It names the group's own filter in the catalog, follows the registered filter name rule (1 to 128 bytes of ASCII letters, digits, `-`, `_` and `.`) and need not be unique. `group.filter()` provides `configure(name, filter)`, `configure_with` and `configure_as` (`filter=` with `filter_name=`, or `filter_id=` with `revision=`), `get`, `summary`, `revisions`, `revise`, `set_revision_enabled`, `release`, `delete`, `preview` and `test`. Configuring the same digest under another name keeps the binding and renames the filter. `summary()` returns the group's own filter as a catalog row dict with the caller's `name` and the owning group under `owner`, or `None`. `delete()` removes the group's own filter with every revision and releases the group first. Pass `operation_id` to configuration when setup must resume with the same operation ID after a lost reply. `topic.consumer_group_id(id)` addresses the saved group by numeric ID. Catalog failures, denied reads and paused revisions never broaden into unfiltered delivery. Original Apache Iggy uses native group consumption, while an older managed server without group-aware reads returns an explicit upgrade error.
350
354
 
351
355
  Filters support JSON, CBOR, Avro, Protobuf and typed headers. Avro and Protobuf filters use registered writer schemas, immutable schema IDs in the filter, and the `agdx.sid` header on each record. Headers-only filters work with any payload format and never decode the payload. `CompiledFilter.compile(filter).evaluate(payload)` runs the evaluator locally, and `explain(payload)` returns its verdict tree. `FilterExpr.text(field, kind, pattern)` matches case-sensitively, and chaining `.case_insensitive()` ignores case. `with_fault_policy`, `with_foreign_policy` and `with_mismatch_policy` control invalid records. Passed invalid records and unfiltered records have `evaluated` false. Failures raise `FilterError` with a `reason`, and every `LaserError` carries `filter_reason`. A fault or oversized stop also sets `partition_id` and `offset`. Unknown header value kinds remain raw bytes. Malformed entries set `headers_malformed` while valid headers and the payload remain readable. A structurally truncated block has empty headers. A `next_record` call cancelled after it read a record yields that record again on the next call.
352
356
 
@@ -406,6 +410,8 @@ print(bytes(reply.payload).decode())
406
410
  await handle_agent.shutdown()
407
411
  ```
408
412
 
413
+ The agent's reads are held on the server: `max_wait_ms` (default 5000) is how long a read that finds nothing new waits before it answers, and a record ends the wait at once.
414
+
409
415
  Keep the handle until `shutdown()` or `join()`. Dropping it signals a graceful stop and cancels periodic consolidation, and `abort()` stops the agent immediately. `async with laser.spawn_agent(...) as handle:` waits for readiness and stops the agent on exit.
410
416
 
411
417
  Each agent id reads through its own consumer group, named after the agent id unless `consumer_group=` names another, so every instance of one agent shares its work. The handler only sees work for this agent: commands addressed to it or to every agent. Replies, status records, and records for other agents are committed without calling it. On `agent.sessions` and `agent.control`, when the server resolves group policies and serves filtered reads and the filter catalog, the group is bound to the addressee filter `agdx.to In [<agent id>, "*"]` before the first read, so the server sends only those records. Otherwise the agent reads every record and sorts them itself. [Agents, groups, and layouts](../../docs/building-agents.md#agents-groups-and-layouts) explains how to pick a layout.
@@ -751,7 +757,7 @@ later = await session.turns_since(ls.Checkpoint.from_json(saved))
751
757
 
752
758
  `laser.context(conversation)` returns a `ContextScope`. Its `fetch(n=50, token_budget=)` and `block` read `agent.sessions` unless `topics=` names others, and return `ContextMessage` records (`id`, `provenance`, `payload`, `envelope`, `topic`). `fetch_with(topics, Chain([LastN(20), TokenBudget(4_000)]))` takes the policy objects `LastN`, `TokenBudget(max_tokens, estimator=None)`, `RoleFilter(agents)`, and `Chain`. `state(topics, init, fold, last_n=|from_offsets=|from_checkpoint=|at=|full=True)`, `state_with(store, topics, init, fold)`, and `checkpoint(topics)` fold the conversation log like Rust. `context_checkpoint(laser, topics)` captures a checkpoint without a conversation, and `ConversationState.load(laser, conversation, topics, init, fold)` folds one directly with the same bounds. Each read covers at most the newest `CONTEXT_READ_WINDOW` (10,000) messages per partition.
753
759
 
754
- `ContextMessage` also carries `timestamp_micros`, the broker append time, and the numeric `stream_id` and `topic_id`. `LastN`, `TokenBudget`, `RoleFilter`, and `Chain` report `name`, `version`, and `selection(history)`, which a context manifest records. A custom policy can set `name` and `version` attributes. Every SDK estimates tokens the same way: the byte count divided by four, rounded up.
760
+ `ContextMessage` also carries `timestamp_micros`, the server append time, and the numeric `stream_id` and `topic_id`. `LastN`, `TokenBudget`, `RoleFilter`, and `Chain` report `name`, `version`, and `selection(history)`, which a context manifest records. A custom policy can set `name` and `version` attributes. Every SDK estimates tokens the same way: the byte count divided by four, rounded up.
755
761
 
756
762
  ## Memory and state
757
763
 
@@ -27,6 +27,7 @@ dependencies = [
27
27
  "cipher",
28
28
  "cpubits",
29
29
  "cpufeatures",
30
+ "zeroize",
30
31
  ]
31
32
 
32
33
  [[package]]
@@ -41,6 +42,22 @@ dependencies = [
41
42
  "ctr",
42
43
  "ctutils",
43
44
  "ghash",
45
+ "zeroize",
46
+ ]
47
+
48
+ [[package]]
49
+ name = "aes-gcm-siv"
50
+ version = "0.12.1"
51
+ source = "registry+https://github.com/rust-lang/crates.io-index"
52
+ checksum = "4c32325128cb24de2a2d14d92da7569dae7073f9e47334521d494747fa94d902"
53
+ dependencies = [
54
+ "aead",
55
+ "aes",
56
+ "cipher",
57
+ "ctr",
58
+ "ctutils",
59
+ "polyval",
60
+ "zeroize",
44
61
  ]
45
62
 
46
63
  [[package]]
@@ -379,18 +396,18 @@ dependencies = [
379
396
 
380
397
  [[package]]
381
398
  name = "bon"
382
- version = "3.10.2"
399
+ version = "3.10.3"
383
400
  source = "registry+https://github.com/rust-lang/crates.io-index"
384
- checksum = "214f5df094ce551a10a30ffb9c70243d61f121a3d985a6495933e181dee6a7d2"
401
+ checksum = "a05442cd7005532d0cfedec676b5b9333d2b4c7c3afabe2b1a9ce2742fbe2ee6"
385
402
  dependencies = [
386
403
  "bon-macros",
387
404
  ]
388
405
 
389
406
  [[package]]
390
407
  name = "bon-macros"
391
- version = "3.10.2"
408
+ version = "3.10.3"
392
409
  source = "registry+https://github.com/rust-lang/crates.io-index"
393
- checksum = "2706da6c749998cc555d04184909608956a69ad3f8ab1a076fbc867b4a3c3ce5"
410
+ checksum = "93833e97ac7c46ba97045afcf247238c27057538fcf2f06344662ddd5f567be6"
394
411
  dependencies = [
395
412
  "darling 0.24.1",
396
413
  "ident_case",
@@ -1334,6 +1351,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1334
1351
  checksum = "2eecf2d5dc9b66b732b97707a0210906b1d30523eb773193ab777c0c84b3e8d5"
1335
1352
  dependencies = [
1336
1353
  "polyval",
1354
+ "zeroize",
1337
1355
  ]
1338
1356
 
1339
1357
  [[package]]
@@ -1637,9 +1655,9 @@ dependencies = [
1637
1655
 
1638
1656
  [[package]]
1639
1657
  name = "iggy"
1640
- version = "0.11.0"
1658
+ version = "0.11.1-edge.9"
1641
1659
  source = "registry+https://github.com/rust-lang/crates.io-index"
1642
- checksum = "13d604e5573ec5f6bed2fcc3103f7d7ec2d42207312012b7d96487008a0c8d24"
1660
+ checksum = "2c9b83c24f73c6cd17f0b2a364dbfe0cad895eba5bb32b32fc2c5e1df2d84aee"
1643
1661
  dependencies = [
1644
1662
  "async-broadcast",
1645
1663
  "async-dropper",
@@ -1653,11 +1671,14 @@ dependencies = [
1653
1671
  "futures-util",
1654
1672
  "iggy_binary_protocol",
1655
1673
  "iggy_common",
1674
+ "percent-encoding",
1656
1675
  "quinn",
1676
+ "rand 0.10.3",
1657
1677
  "reqwest",
1658
1678
  "reqwest-middleware",
1659
1679
  "reqwest-retry",
1660
1680
  "reqwest-tracing",
1681
+ "ring",
1661
1682
  "rustls",
1662
1683
  "secrecy",
1663
1684
  "serde",
@@ -1672,25 +1693,28 @@ dependencies = [
1672
1693
 
1673
1694
  [[package]]
1674
1695
  name = "iggy_binary_protocol"
1675
- version = "0.11.0"
1696
+ version = "0.11.1-edge.8"
1676
1697
  source = "registry+https://github.com/rust-lang/crates.io-index"
1677
- checksum = "dc1dfab100ec08e587dc5348c6cbfa52353d93e7cc03f63655e2251ac3adc230"
1698
+ checksum = "100cfadd4d45558876544a8eed23a86d730c66d550deef18a42d239d3c7e03bb"
1678
1699
  dependencies = [
1679
1700
  "bytemuck",
1680
1701
  "bytes",
1681
1702
  "enumset",
1703
+ "ring",
1682
1704
  "secrecy",
1705
+ "serde",
1683
1706
  "thiserror",
1684
1707
  "twox-hash",
1685
1708
  ]
1686
1709
 
1687
1710
  [[package]]
1688
1711
  name = "iggy_common"
1689
- version = "0.11.0"
1712
+ version = "0.11.1-edge.10"
1690
1713
  source = "registry+https://github.com/rust-lang/crates.io-index"
1691
- checksum = "15e5cd528c3222e3e785148f1a888e736fa83a0bf429aec6f5a95a67fa7103a3"
1714
+ checksum = "788e55b79b0a750f0a1326937ce34b51828dda3cc7fbf09f81a9b99cce1e24a1"
1692
1715
  dependencies = [
1693
1716
  "aes-gcm",
1717
+ "aes-gcm-siv",
1694
1718
  "async-broadcast",
1695
1719
  "async-trait",
1696
1720
  "base64 0.23.1",
@@ -1705,6 +1729,7 @@ dependencies = [
1705
1729
  "humantime",
1706
1730
  "iggy_binary_protocol",
1707
1731
  "papaya",
1732
+ "pin-project-lite",
1708
1733
  "ring",
1709
1734
  "secrecy",
1710
1735
  "serde",
@@ -1958,9 +1983,9 @@ dependencies = [
1958
1983
 
1959
1984
  [[package]]
1960
1985
  name = "jsonschema"
1961
- version = "0.58.5"
1986
+ version = "0.60.1"
1962
1987
  source = "registry+https://github.com/rust-lang/crates.io-index"
1963
- checksum = "ea18b8d5e1469b1bdd6b349169305141316a7c26da27f239773b65c830c0f5d6"
1988
+ checksum = "65de752665c4a06528af6759955eecf60ba73ae7442d35349963a09c8031cd71"
1964
1989
  dependencies = [
1965
1990
  "ahash",
1966
1991
  "bytecount",
@@ -1986,23 +2011,24 @@ dependencies = [
1986
2011
 
1987
2012
  [[package]]
1988
2013
  name = "jsonschema-regex"
1989
- version = "0.58.5"
2014
+ version = "0.60.1"
1990
2015
  source = "registry+https://github.com/rust-lang/crates.io-index"
1991
- checksum = "854e9e22c420535035e95eed240cbfb4a5f4b7da74d122d63144e0c31926dbfd"
2016
+ checksum = "6f8a848331614144c03e815fb931f238c9e342bd7ab501b29e35d647e7cd5688"
1992
2017
  dependencies = [
1993
2018
  "regex-syntax",
1994
2019
  ]
1995
2020
 
1996
2021
  [[package]]
1997
2022
  name = "jsonschema-value"
1998
- version = "0.58.5"
2023
+ version = "0.60.1"
1999
2024
  source = "registry+https://github.com/rust-lang/crates.io-index"
2000
- checksum = "4e3bfac11ac357ec620880025757d38c67da8fd5b9ef5024d19f0f360002b4ca"
2025
+ checksum = "5a5a947ef798eeacacb43edf29b1d0ab64bdf5e2c9fbcaad10ee8663d922b544"
2001
2026
  dependencies = [
2002
2027
  "ahash",
2003
2028
  "bytecount",
2004
2029
  "fraction",
2005
2030
  "getrandom 0.3.4",
2031
+ "memchr",
2006
2032
  "num-cmp",
2007
2033
  "num-traits",
2008
2034
  "serde_json",
@@ -2017,7 +2043,7 @@ checksum = "507460a910eb7b32ee961886ff48539633b788a36b65692b95f225b844c82553"
2017
2043
 
2018
2044
  [[package]]
2019
2045
  name = "laser-sdk"
2020
- version = "0.8.2"
2046
+ version = "0.9.0-dev.2"
2021
2047
  dependencies = [
2022
2048
  "apache-avro",
2023
2049
  "async-trait",
@@ -2033,7 +2059,6 @@ dependencies = [
2033
2059
  "jsonschema",
2034
2060
  "laser-wire",
2035
2061
  "prost-reflect",
2036
- "secrecy",
2037
2062
  "serde",
2038
2063
  "serde_json",
2039
2064
  "sha2",
@@ -2047,7 +2072,7 @@ dependencies = [
2047
2072
 
2048
2073
  [[package]]
2049
2074
  name = "laser-sdk-python"
2050
- version = "0.8.2"
2075
+ version = "0.9.0-dev.2"
2051
2076
  dependencies = [
2052
2077
  "async-trait",
2053
2078
  "bytes",
@@ -2066,7 +2091,7 @@ dependencies = [
2066
2091
 
2067
2092
  [[package]]
2068
2093
  name = "laser-wire"
2069
- version = "0.8.2"
2094
+ version = "0.9.0-dev.2"
2070
2095
  dependencies = [
2071
2096
  "apache-avro",
2072
2097
  "bon",
@@ -2497,6 +2522,7 @@ dependencies = [
2497
2522
  "cpubits",
2498
2523
  "cpufeatures",
2499
2524
  "universal-hash",
2525
+ "zeroize",
2500
2526
  ]
2501
2527
 
2502
2528
  [[package]]
@@ -2983,9 +3009,9 @@ dependencies = [
2983
3009
 
2984
3010
  [[package]]
2985
3011
  name = "referencing"
2986
- version = "0.58.5"
3012
+ version = "0.60.1"
2987
3013
  source = "registry+https://github.com/rust-lang/crates.io-index"
2988
- checksum = "590efadb0a669f1712c1e3ab810a55d4c3d20d0127c455f7236dd0710aba0346"
3014
+ checksum = "922268812b6f9e20b4ab0f1efe8e07036958eed7346ceddb31c777b5531fd11f"
2989
3015
  dependencies = [
2990
3016
  "ahash",
2991
3017
  "fluent-uri",
@@ -3511,9 +3537,9 @@ dependencies = [
3511
3537
 
3512
3538
  [[package]]
3513
3539
  name = "serde_json"
3514
- version = "1.0.151"
3540
+ version = "1.0.154"
3515
3541
  source = "registry+https://github.com/rust-lang/crates.io-index"
3516
- checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14"
3542
+ checksum = "e7e9cc8b1b85264074fbcc02a88680c4096b1e47df8f739dceb03bf482f04bd6"
3517
3543
  dependencies = [
3518
3544
  "itoa",
3519
3545
  "memchr",
@@ -3589,9 +3615,9 @@ dependencies = [
3589
3615
 
3590
3616
  [[package]]
3591
3617
  name = "sha2"
3592
- version = "0.11.0"
3618
+ version = "0.11.1"
3593
3619
  source = "registry+https://github.com/rust-lang/crates.io-index"
3594
- checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4"
3620
+ checksum = "47d7069beb7d6ac7b9acd1039986e73443f24234f41074da099d6f994ac9ad19"
3595
3621
  dependencies = [
3596
3622
  "cfg-if",
3597
3623
  "cpufeatures",
@@ -3859,9 +3885,9 @@ checksum = "fd3ca314f692efd6c868f8408f53fe444634a845f96c028b97d35f6a1f79f0ee"
3859
3885
 
3860
3886
  [[package]]
3861
3887
  name = "tokio"
3862
- version = "1.53.2"
3888
+ version = "1.54.1"
3863
3889
  source = "registry+https://github.com/rust-lang/crates.io-index"
3864
- checksum = "e95f91fcc7a621e8b030f6aa23c71fe9838ae2fb4d8118b75602a328f5144044"
3890
+ checksum = "b52fd3255258d26fac7264ab5a76b53c13367136dc011d3d6ad4f8ed070396a3"
3865
3891
  dependencies = [
3866
3892
  "bytes",
3867
3893
  "libc",
@@ -4251,9 +4277,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
4251
4277
 
4252
4278
  [[package]]
4253
4279
  name = "uuid"
4254
- version = "1.27.0"
4280
+ version = "1.29.0"
4255
4281
  source = "registry+https://github.com/rust-lang/crates.io-index"
4256
- checksum = "97277d36b9c3ace13e58fa6e753f8b0bbbf302a18dd193240d70f9e29681059a"
4282
+ checksum = "4a0e2d11620c50695fe12bbbfde96b3477fe606e7284c22d505c12ce51214514"
4257
4283
  dependencies = [
4258
4284
  "getrandom 0.4.3",
4259
4285
  "js-sys",
@@ -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.8.2"
9
+ version = "0.9.0-dev.2"
10
10
  edition = "2024"
11
11
  license = "Apache-2.0"
12
12
  repository = "https://github.com/laserdata/laser-sdk"
@@ -34,11 +34,11 @@ extension-module = ["pyo3/extension-module"]
34
34
  [dependencies]
35
35
  async-trait = "0.1.92"
36
36
  bytes = "1.12.1"
37
- iggy = { version = "0.11.0" }
37
+ 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.8.2", features = ["a2a-bridge", "agent", "agui", "managed", "mcp-bridge", "provenance", "schema-codecs", "sign", "streaming"] }
41
+ laser-sdk = { path = "../../sdk", version = "0.9.0-dev.2", 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"] }