deepstrike 0.2.71__tar.gz → 0.2.73__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 (263) hide show
  1. {deepstrike-0.2.71 → deepstrike-0.2.73}/Cargo.lock +6 -6
  2. {deepstrike-0.2.71 → deepstrike-0.2.73}/Cargo.toml +3 -3
  3. {deepstrike-0.2.71 → deepstrike-0.2.73}/PKG-INFO +11 -23
  4. {deepstrike-0.2.71 → deepstrike-0.2.73}/README.md +10 -22
  5. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/context/measurement.rs +1 -2
  6. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/config.rs +3 -8
  7. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/driver/effects.rs +0 -8
  8. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/effect.rs +6 -67
  9. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/projection.rs +1 -11
  10. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-py/src/lib.rs +12 -12
  11. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/__init__.py +4 -4
  12. deepstrike-0.2.73/deepstrike/agent.py +125 -0
  13. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/memory/extraction.py +2 -2
  14. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/memory/protocols.py +3 -3
  15. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/providers/anthropic.py +5 -5
  16. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/providers/anthropic_adapter.py +3 -3
  17. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/providers/base.py +12 -13
  18. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/providers/gemini.py +3 -3
  19. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/providers/gemini_adapter.py +4 -4
  20. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/providers/model_registry.py +1 -7
  21. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/providers/ollama.py +2 -2
  22. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/providers/ollama_adapter.py +3 -3
  23. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/providers/openai.py +7 -7
  24. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/providers/openai_chat_adapter.py +3 -3
  25. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/providers/openai_responses.py +6 -6
  26. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/providers/protocol_adapter.py +2 -2
  27. deepstrike-0.2.73/deepstrike/providers/protocols.py +18 -0
  28. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/providers/qwen.py +5 -5
  29. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/providers/replay.py +4 -4
  30. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/providers/replay_validator.py +5 -5
  31. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/providers/request_plan.py +1 -1
  32. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/runtime/archive.py +9 -9
  33. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/runtime/canonical_kernel_step.py +5 -5
  34. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/runtime/eval.py +2 -2
  35. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/runtime/kernel_step.py +5 -5
  36. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/runtime/replay_fixture.py +5 -5
  37. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/runtime/replay_provider.py +5 -5
  38. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/runtime/runner.py +30 -30
  39. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/runtime/sub_agent_orchestrator.py +4 -4
  40. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/types/content.py +3 -3
  41. {deepstrike-0.2.71 → deepstrike-0.2.73}/pyproject.toml +1 -1
  42. deepstrike-0.2.71/deepstrike/agent.py +0 -69
  43. {deepstrike-0.2.71 → deepstrike-0.2.73}/LICENSE +0 -0
  44. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/Cargo.toml +0 -0
  45. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/LICENSE +0 -0
  46. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/benches/kernel_baseline.rs +0 -0
  47. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/benches/verifiable_baseline.rs +0 -0
  48. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/benches/wait_index_baseline.rs +0 -0
  49. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/benchmark/mod.rs +0 -0
  50. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/bin/deepstrike.rs +0 -0
  51. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/bin/support/evidence_io.rs +0 -0
  52. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/context/compression.rs +0 -0
  53. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/context/config.rs +0 -0
  54. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/context/execution.rs +0 -0
  55. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/context/fault.rs +0 -0
  56. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/context/manager.rs +0 -0
  57. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/context/mod.rs +0 -0
  58. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/context/partitions.rs +0 -0
  59. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/context/policy.rs +0 -0
  60. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/context/pressure.rs +0 -0
  61. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/context/renderer.rs +0 -0
  62. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/context/renewal.rs +0 -0
  63. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/context/skill_catalog.rs +0 -0
  64. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/context/summarizer.rs +0 -0
  65. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/context/task_state.rs +0 -0
  66. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/context/text.rs +0 -0
  67. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/context/token_engine.rs +0 -0
  68. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/context/units.rs +0 -0
  69. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/context/utility.rs +0 -0
  70. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/evolution.rs +0 -0
  71. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/governance/constraint.rs +0 -0
  72. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/governance/mod.rs +0 -0
  73. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/governance/permission.rs +0 -0
  74. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/governance/pipeline.rs +0 -0
  75. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/governance/quota.rs +0 -0
  76. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/governance/rate_limit.rs +0 -0
  77. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/governance/repeat_fuse.rs +0 -0
  78. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/governance/veto.rs +0 -0
  79. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/harness/eval.rs +0 -0
  80. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/harness/mod.rs +0 -0
  81. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/lexical.rs +0 -0
  82. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/lib.rs +0 -0
  83. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/memory/curator.rs +0 -0
  84. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/memory/durable.rs +0 -0
  85. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/memory/mod.rs +0 -0
  86. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/mm/handle.rs +0 -0
  87. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/mm/memory.rs +0 -0
  88. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/mm/mod.rs +0 -0
  89. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/mm/value.rs +0 -0
  90. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/orchestration/mod.rs +0 -0
  91. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/orchestration/task_graph.rs +0 -0
  92. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/orchestration/tournament.rs +0 -0
  93. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/orchestration/workflow/mod.rs +0 -0
  94. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/orchestration/workflow/run.rs +0 -0
  95. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/proc/mod.rs +0 -0
  96. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/projection_pairs.rs +0 -0
  97. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/chain_validator/mod.rs +0 -0
  98. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/event_log.rs +0 -0
  99. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/observation.rs +0 -0
  100. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/binding.rs +0 -0
  101. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/checkpoint.rs +0 -0
  102. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/command.rs +0 -0
  103. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/crash_point.rs +0 -0
  104. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/driver/continuation.rs +0 -0
  105. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/driver/events.rs +0 -0
  106. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/driver/planning.rs +0 -0
  107. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/driver/projection.rs +0 -0
  108. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/driver/provider.rs +0 -0
  109. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/driver/syscall.rs +0 -0
  110. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/driver/tests.rs +0 -0
  111. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/driver.rs +0 -0
  112. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/envelope.rs +0 -0
  113. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/event.rs +0 -0
  114. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/fault.rs +0 -0
  115. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/record.rs +0 -0
  116. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/restore.rs +0 -0
  117. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/root.rs +0 -0
  118. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/scalar.rs +0 -0
  119. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/syscall.rs +0 -0
  120. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/terminal.rs +0 -0
  121. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/tests.rs +0 -0
  122. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire/transaction.rs +0 -0
  123. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel/wire.rs +0 -0
  124. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/kernel.rs +0 -0
  125. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/mod.rs +0 -0
  126. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/repair.rs +0 -0
  127. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/replay.rs +0 -0
  128. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/session.rs +0 -0
  129. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/runtime/verifiable.rs +0 -0
  130. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/scheduler/budget_grant.rs +0 -0
  131. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/scheduler/cross_operation.rs +0 -0
  132. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/scheduler/entropy.rs +0 -0
  133. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/scheduler/mailbox.rs +0 -0
  134. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/scheduler/milestone.rs +0 -0
  135. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/scheduler/mod.rs +0 -0
  136. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/scheduler/policy.rs +0 -0
  137. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/scheduler/rollback.rs +0 -0
  138. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/scheduler/runnable.rs +0 -0
  139. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/scheduler/state_machine/cancellation.rs +0 -0
  140. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/scheduler/state_machine/capability.rs +0 -0
  141. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/scheduler/state_machine/eviction.rs +0 -0
  142. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/scheduler/state_machine/gate.rs +0 -0
  143. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/scheduler/state_machine/milestone_exec.rs +0 -0
  144. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/scheduler/state_machine/mod.rs +0 -0
  145. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/scheduler/state_machine/process.rs +0 -0
  146. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/scheduler/state_machine/signal.rs +0 -0
  147. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/scheduler/state_machine/tests.rs +0 -0
  148. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/scheduler/state_machine/workflow.rs +0 -0
  149. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/scheduler/tcb.rs +0 -0
  150. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/scheduler/wait_index.rs +0 -0
  151. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/signals/attention.rs +0 -0
  152. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/signals/mod.rs +0 -0
  153. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/signals/queue.rs +0 -0
  154. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/signals/router.rs +0 -0
  155. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/syscall/mod.rs +0 -0
  156. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/types/agent.rs +0 -0
  157. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/types/capability.rs +0 -0
  158. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/types/contract.rs +0 -0
  159. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/types/durable_content.rs +0 -0
  160. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/types/error.rs +0 -0
  161. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/types/message.rs +0 -0
  162. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/types/milestone.rs +0 -0
  163. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/types/mod.rs +0 -0
  164. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/types/policy.rs +0 -0
  165. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/types/result.rs +0 -0
  166. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/types/signal.rs +0 -0
  167. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/types/skill.rs +0 -0
  168. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-core/src/types/task.rs +0 -0
  169. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-py/Cargo.toml +0 -0
  170. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-py/LICENSE +0 -0
  171. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-tokenizer/Cargo.toml +0 -0
  172. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-tokenizer/LICENSE +0 -0
  173. {deepstrike-0.2.71 → deepstrike-0.2.73}/crates/deepstrike-tokenizer/src/lib.rs +0 -0
  174. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/agent_ir.py +0 -0
  175. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/collaboration/__init__.py +0 -0
  176. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/collaboration/contract.py +0 -0
  177. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/collaboration/handoff.py +0 -0
  178. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/collaboration/harness.py +0 -0
  179. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/collaboration/modes.py +0 -0
  180. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/collaboration/pool.py +0 -0
  181. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/governance.py +0 -0
  182. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/harness/__init__.py +0 -0
  183. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/harness/harness.py +0 -0
  184. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/harness/judge.py +0 -0
  185. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/kernel/__init__.py +0 -0
  186. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/kernel/canonical.py +0 -0
  187. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/knowledge/__init__.py +0 -0
  188. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/knowledge/source.py +0 -0
  189. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/memory/__init__.py +0 -0
  190. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/memory/agent.py +0 -0
  191. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/memory/durable.py +0 -0
  192. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/memory/in_memory_store.py +0 -0
  193. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/memory/ranking.py +0 -0
  194. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/memory/retention.py +0 -0
  195. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/memory/working.py +0 -0
  196. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/providers/__init__.py +0 -0
  197. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/providers/anthropic_compatible.py +0 -0
  198. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/providers/capability_router.py +0 -0
  199. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/providers/credentials.py +0 -0
  200. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/providers/embedding.py +0 -0
  201. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/providers/factories.py +0 -0
  202. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/providers/model_catalog.py +0 -0
  203. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/providers/prepared_request.py +0 -0
  204. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/providers/provider_error.py +0 -0
  205. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/providers/runtime_registry.py +0 -0
  206. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/providers/stop_reason.py +0 -0
  207. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/providers/stream.py +0 -0
  208. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/providers/usage.py +0 -0
  209. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/providers/vendor_profiles.py +0 -0
  210. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/runtime/__init__.py +0 -0
  211. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/runtime/context.py +0 -0
  212. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/runtime/context_policy.py +0 -0
  213. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/runtime/credential_vault.py +0 -0
  214. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/runtime/durable_content.py +0 -0
  215. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/runtime/event_stream.py +0 -0
  216. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/runtime/evolution.py +0 -0
  217. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/runtime/execution_evidence.py +0 -0
  218. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/runtime/execution_plane.py +0 -0
  219. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/runtime/facade.py +0 -0
  220. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/runtime/filtered_plane.py +0 -0
  221. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/runtime/kernel_event_log.py +0 -0
  222. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/runtime/kernel_journal.py +0 -0
  223. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/runtime/loop_driver.py +0 -0
  224. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/runtime/mcp_proxy_plane.py +0 -0
  225. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/runtime/os_profile.py +0 -0
  226. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/runtime/os_snapshot.py +0 -0
  227. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/runtime/output_schema.py +0 -0
  228. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/runtime/payload_store.py +0 -0
  229. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/runtime/process_sandbox_plane.py +0 -0
  230. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/runtime/provider_replay.py +0 -0
  231. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/runtime/reaction_checkpoint.py +0 -0
  232. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/runtime/reactive_session.py +0 -0
  233. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/runtime/reducers.py +0 -0
  234. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/runtime/reliability.py +0 -0
  235. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/runtime/remote_vpc_plane.py +0 -0
  236. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/runtime/replay_sanitize.py +0 -0
  237. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/runtime/run_group.py +0 -0
  238. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/runtime/session_log.py +0 -0
  239. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/runtime/session_repair.py +0 -0
  240. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/runtime/turn_policy.py +0 -0
  241. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/runtime/verifiable_report.py +0 -0
  242. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/runtime/workflow_control_flow.py +0 -0
  243. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/runtime/workflow_store.py +0 -0
  244. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/runtime/worktree_plane.py +0 -0
  245. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/safety/__init__.py +0 -0
  246. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/safety/permissions.py +0 -0
  247. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/signals/__init__.py +0 -0
  248. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/signals/gateway.py +0 -0
  249. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/signals/scheduled.py +0 -0
  250. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/signals/types.py +0 -0
  251. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/skills/__init__.py +0 -0
  252. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/skills/loader.py +0 -0
  253. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/skills/registry.py +0 -0
  254. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/skills/watcher.py +0 -0
  255. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/tools/__init__.py +0 -0
  256. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/tools/builtin/__init__.py +0 -0
  257. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/tools/builtin/read_file.py +0 -0
  258. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/tools/errors.py +0 -0
  259. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/tools/execution.py +0 -0
  260. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/tools/registry.py +0 -0
  261. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/types/__init__.py +0 -0
  262. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/types/agent.py +0 -0
  263. {deepstrike-0.2.71 → deepstrike-0.2.73}/deepstrike/types/content_policy.py +0 -0
@@ -254,7 +254,7 @@ dependencies = [
254
254
 
255
255
  [[package]]
256
256
  name = "deepstrike-core"
257
- version = "0.2.71"
257
+ version = "0.2.73"
258
258
  dependencies = [
259
259
  "compact_str",
260
260
  "deepstrike-tokenizer",
@@ -268,7 +268,7 @@ dependencies = [
268
268
 
269
269
  [[package]]
270
270
  name = "deepstrike-node"
271
- version = "0.2.71"
271
+ version = "0.2.73"
272
272
  dependencies = [
273
273
  "compact_str",
274
274
  "deepstrike-core",
@@ -280,7 +280,7 @@ dependencies = [
280
280
 
281
281
  [[package]]
282
282
  name = "deepstrike-py"
283
- version = "0.2.71"
283
+ version = "0.2.73"
284
284
  dependencies = [
285
285
  "compact_str",
286
286
  "deepstrike-core",
@@ -291,7 +291,7 @@ dependencies = [
291
291
 
292
292
  [[package]]
293
293
  name = "deepstrike-sdk"
294
- version = "0.2.71"
294
+ version = "0.2.73"
295
295
  dependencies = [
296
296
  "async-stream",
297
297
  "async-trait",
@@ -327,7 +327,7 @@ dependencies = [
327
327
 
328
328
  [[package]]
329
329
  name = "deepstrike-tokenizer"
330
- version = "0.2.71"
330
+ version = "0.2.73"
331
331
  dependencies = [
332
332
  "pretty_assertions",
333
333
  "tiktoken-rs",
@@ -335,7 +335,7 @@ dependencies = [
335
335
 
336
336
  [[package]]
337
337
  name = "deepstrike-wasm"
338
- version = "0.2.71"
338
+ version = "0.2.73"
339
339
  dependencies = [
340
340
  "compact_str",
341
341
  "deepstrike-core",
@@ -3,13 +3,13 @@ resolver = "2"
3
3
  members = ["crates/deepstrike-core", "crates/deepstrike-tokenizer", "crates/deepstrike-py"]
4
4
 
5
5
  [workspace.package]
6
- version = "0.2.71"
6
+ version = "0.2.73"
7
7
  edition = "2024"
8
8
  repository = "https://github.com/kongusen/deepstrike"
9
9
 
10
10
  [workspace.dependencies]
11
- deepstrike-core = { path = "crates/deepstrike-core", version = "0.2.71" }
12
- deepstrike-tokenizer = { path = "crates/deepstrike-tokenizer", version = "0.2.71" }
11
+ deepstrike-core = { path = "crates/deepstrike-core", version = "0.2.73" }
12
+ deepstrike-tokenizer = { path = "crates/deepstrike-tokenizer", version = "0.2.73" }
13
13
  notify = "6"
14
14
  serde = { version = "1", features = ["derive"] }
15
15
  serde_json = "1"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: deepstrike
3
- Version: 0.2.71
3
+ Version: 0.2.73
4
4
  Requires-Dist: httpx>=0.27
5
5
  Requires-Dist: pyyaml>=6.0
6
6
  Requires-Dist: anyio>=4.0
@@ -42,40 +42,28 @@ maturin develop --manifest-path crates/deepstrike-py/Cargo.toml
42
42
 
43
43
  ```python
44
44
  import asyncio
45
- from deepstrike import (
46
- FileSessionLog,
47
- InMemorySessionLog,
48
- LocalExecutionPlane,
49
- OpenAIProvider,
50
- RuntimeOptions,
51
- RuntimeRunner,
52
- collect_text,
53
- tool,
54
- )
45
+ from deepstrike import OpenAIProvider, create_agent, tool
55
46
 
56
47
  @tool
57
48
  async def add(x: int, y: int) -> str:
58
49
  """Add two numbers."""
59
50
  return str(x + y)
60
51
 
61
- plane = LocalExecutionPlane().register(add)
62
- runner = RuntimeRunner(RuntimeOptions(
63
- provider=OpenAIProvider(api_key="sk-...", model="gpt-5-mini"),
64
- session_log=FileSessionLog(".deepstrike/sessions"),
65
- execution_plane=plane,
66
- max_tokens=4096,
67
- ))
52
+ agent = create_agent(
53
+ "math",
54
+ model="openai/gpt-5-mini",
55
+ runtime_binding={"provider": OpenAIProvider(api_key="sk-...", model="gpt-5-mini")},
56
+ tools=[add],
57
+ )
68
58
 
69
- asyncio.run(collect_text(runner.run(
70
- session_id="math-1",
71
- goal="What is 17 + 28?",
72
- )))
59
+ result = asyncio.run(agent.run("What is 17 + 28?", session_id="math-1"))
60
+ print(result["output"])
73
61
  # => "45"
74
62
  ```
75
63
 
76
64
  ### Recipes — the canonical entry points
77
65
 
78
- Most apps need one of two shapes. Start with the facades; drop to `RuntimeRunner` for streaming, tools, signals, memory, or governance.
66
+ Most apps start with `Agent`; use `RuntimeRunner` from the runtime submodule only for custom host control.
79
67
 
80
68
  ```python
81
69
  from deepstrike import run_agent, run_fanout
@@ -28,40 +28,28 @@ maturin develop --manifest-path crates/deepstrike-py/Cargo.toml
28
28
 
29
29
  ```python
30
30
  import asyncio
31
- from deepstrike import (
32
- FileSessionLog,
33
- InMemorySessionLog,
34
- LocalExecutionPlane,
35
- OpenAIProvider,
36
- RuntimeOptions,
37
- RuntimeRunner,
38
- collect_text,
39
- tool,
40
- )
31
+ from deepstrike import OpenAIProvider, create_agent, tool
41
32
 
42
33
  @tool
43
34
  async def add(x: int, y: int) -> str:
44
35
  """Add two numbers."""
45
36
  return str(x + y)
46
37
 
47
- plane = LocalExecutionPlane().register(add)
48
- runner = RuntimeRunner(RuntimeOptions(
49
- provider=OpenAIProvider(api_key="sk-...", model="gpt-5-mini"),
50
- session_log=FileSessionLog(".deepstrike/sessions"),
51
- execution_plane=plane,
52
- max_tokens=4096,
53
- ))
38
+ agent = create_agent(
39
+ "math",
40
+ model="openai/gpt-5-mini",
41
+ runtime_binding={"provider": OpenAIProvider(api_key="sk-...", model="gpt-5-mini")},
42
+ tools=[add],
43
+ )
54
44
 
55
- asyncio.run(collect_text(runner.run(
56
- session_id="math-1",
57
- goal="What is 17 + 28?",
58
- )))
45
+ result = asyncio.run(agent.run("What is 17 + 28?", session_id="math-1"))
46
+ print(result["output"])
59
47
  # => "45"
60
48
  ```
61
49
 
62
50
  ### Recipes — the canonical entry points
63
51
 
64
- Most apps need one of two shapes. Start with the facades; drop to `RuntimeRunner` for streaming, tools, signals, memory, or governance.
52
+ Most apps start with `Agent`; use `RuntimeRunner` from the runtime submodule only for custom host control.
65
53
 
66
54
  ```python
67
55
  from deepstrike import run_agent, run_fanout
@@ -2,8 +2,7 @@
2
2
  //! ("measure provider-visible input, never underestimate") requires between what a request is
3
3
  //! *estimated* to cost before it is sent (`PromptMeasurement`, this module), what the provider
4
4
  //! actually reports back (`ProviderUsage`, Node/Python Host layer — not this crate). This module
5
- //! only defines a preflight fact. The `MeasurePrompt` wire tag is reserved, but A-00R removed its
6
- //! scheduler producer until request fingerprinting and durable replay semantics are defined.
5
+ //! only defines a host-side preflight fact for provider-visible request preparation.
7
6
 
8
7
  use serde::{Deserialize, Serialize};
9
8
 
@@ -2557,7 +2557,7 @@ mod tests {
2557
2557
  serde_json::from_value::<HostEffectSupport>(json!({ "supported": ["load_payload"] }))
2558
2558
  .is_ok()
2559
2559
  );
2560
- assert_eq!(EffectKindTag::ALL.len(), 11);
2560
+ assert_eq!(EffectKindTag::ALL.len(), 10);
2561
2561
  }
2562
2562
 
2563
2563
  // -----------------------------------------------------------------------------------------
@@ -2926,17 +2926,12 @@ mod tests {
2926
2926
  // required kind from the
2927
2927
  // support declaration must be refused — and the rejection must name the kind, because a
2928
2928
  // host reading it has to know which declaration to fix. Iterating `ALL` also means a new
2929
- // effect kind cannot be added without deciding what switches it on. `MeasurePrompt` is a
2930
- // reserved wire shape with no scheduler producer after SPC-013 A-00R, so it deliberately
2931
- // imposes no host-support requirement.
2929
+ // effect kind cannot be added without deciding what switches it on.
2932
2930
  let full = fully_populated_config();
2933
2931
  full.resolve(&defaults())
2934
2932
  .expect("declaring every kind satisfies every trigger");
2935
2933
 
2936
- for dropped in EffectKindTag::ALL
2937
- .into_iter()
2938
- .filter(|kind| *kind != EffectKindTag::MeasurePrompt)
2939
- {
2934
+ for dropped in EffectKindTag::ALL {
2940
2935
  let mut config = full.clone();
2941
2936
  config.host_effect_support = HostEffectSupport::new(
2942
2937
  EffectKindTag::ALL
@@ -220,10 +220,6 @@ impl CanonicalOperationDriver {
220
220
  EffectSuccess::PayloadLoaded(loaded) => {
221
221
  self.commit_payload_load(context, effect_id, loaded)
222
222
  }
223
- EffectSuccess::PromptMeasured(_) => Err(KernelFault::new(
224
- KernelFaultCode::UnexpectedEffectOutcome,
225
- "prompt measurement outcomes are reserved but adaptive measurement has no scheduler producer",
226
- )),
227
223
  }
228
224
  }
229
225
 
@@ -462,10 +458,6 @@ impl CanonicalOperationDriver {
462
458
  step.focus = self.focus.clone();
463
459
  Ok(step)
464
460
  }
465
- EffectKindTag::MeasurePrompt => Err(KernelFault::new(
466
- KernelFaultCode::UnexpectedEffectOutcome,
467
- "prompt measurement failures are reserved but adaptive measurement has no scheduler producer",
468
- )),
469
461
  }
470
462
  }
471
463
 
@@ -26,7 +26,7 @@ use serde::de::{self, Deserializer, Visitor};
26
26
  use serde::{Deserialize, Serialize, Serializer};
27
27
 
28
28
  use crate::context::execution::ContextCandidate;
29
- use crate::context::measurement::{PromptMeasurement, ToolMeasurement};
29
+ use crate::context::measurement::ToolMeasurement;
30
30
  use crate::types::durable_content::DurableContent;
31
31
 
32
32
  use super::root::{LogicalAgentSpec, MessageRole};
@@ -260,8 +260,6 @@ pub enum EffectKind {
260
260
  /// to it instead of scanning a session log for the original bytes (§7.10 rule 4).
261
261
  LoadPayload(LoadPayloadEffect),
262
262
  EvaluateMilestone(EvaluateMilestoneEffect),
263
- /// spc_011-C-02: preflight prompt-token measurement — see [`MeasurePromptEffect`].
264
- MeasurePrompt(MeasurePromptEffect),
265
263
  }
266
264
 
267
265
  impl EffectKind {
@@ -277,7 +275,6 @@ impl EffectKind {
277
275
  Self::ArchivePageOut(_) => EffectKindTag::ArchivePageOut,
278
276
  Self::LoadPayload(_) => EffectKindTag::LoadPayload,
279
277
  Self::EvaluateMilestone(_) => EffectKindTag::EvaluateMilestone,
280
- Self::MeasurePrompt(_) => EffectKindTag::MeasurePrompt,
281
278
  }
282
279
  }
283
280
  }
@@ -301,12 +298,10 @@ pub enum EffectKindTag {
301
298
  ArchivePageOut,
302
299
  LoadPayload,
303
300
  EvaluateMilestone,
304
- /// spc_011-C-02.
305
- MeasurePrompt,
306
301
  }
307
302
 
308
303
  impl EffectKindTag {
309
- pub const ALL: [Self; 11] = [
304
+ pub const ALL: [Self; 10] = [
310
305
  Self::CallProvider,
311
306
  Self::ExecuteTools,
312
307
  Self::RequestApproval,
@@ -317,7 +312,6 @@ impl EffectKindTag {
317
312
  Self::ArchivePageOut,
318
313
  Self::LoadPayload,
319
314
  Self::EvaluateMilestone,
320
- Self::MeasurePrompt,
321
315
  ];
322
316
 
323
317
  pub fn as_str(self) -> &'static str {
@@ -332,7 +326,6 @@ impl EffectKindTag {
332
326
  Self::ArchivePageOut => "archive_page_out",
333
327
  Self::LoadPayload => "load_payload",
334
328
  Self::EvaluateMilestone => "evaluate_milestone",
335
- Self::MeasurePrompt => "measure_prompt",
336
329
  }
337
330
  }
338
331
 
@@ -349,7 +342,6 @@ impl EffectKindTag {
349
342
  Self::ArchivePageOut => EffectSuccessTag::PageOutArchived,
350
343
  Self::LoadPayload => EffectSuccessTag::PayloadLoaded,
351
344
  Self::EvaluateMilestone => EffectSuccessTag::MilestoneEvaluated,
352
- Self::MeasurePrompt => EffectSuccessTag::PromptMeasured,
353
345
  }
354
346
  }
355
347
  }
@@ -375,27 +367,6 @@ pub struct CallProviderEffect {
375
367
  pub tools: Vec<ToolSchema>,
376
368
  }
377
369
 
378
- /// spc_011-C-02: a preflight token-count request. Reuses the same `RenderedContext`/`ToolSchema`
379
- /// shape `CallProviderEffect` already carries, rather than inventing a parallel candidate-request
380
- /// type — the kernel is asking "how many tokens would *this* request cost", the same request it
381
- /// would otherwise hand to `CallProvider`.
382
- ///
383
- /// spc_011-C-06: no `provider`/`model` fields, matching `CallProviderEffect` exactly. An earlier
384
- /// draft of this struct carried both, reasoning that "the answer is meaningless without knowing
385
- /// which vendor should answer it" — but the kernel has no provider/model identity to put there:
386
- /// `OperationConfig` carries no such field, vendor selection is entirely a Host-side concern (the
387
- /// same Host that will execute `CallProvider` for this operation already knows which provider it
388
- /// dispatches to, the same way it already resolves that for `CallProviderEffect`, which has never
389
- /// carried these fields). This surfaced only when 011-C-06 tried to actually construct one inside
390
- /// the kernel and found nothing to put in `provider`/`model`.
391
- #[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
392
- #[serde(deny_unknown_fields)]
393
- pub struct MeasurePromptEffect {
394
- pub context: RenderedContext,
395
- #[serde(default, skip_serializing_if = "Vec::is_empty")]
396
- pub tools: Vec<ToolSchema>,
397
- }
398
-
399
370
  #[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
400
371
  #[serde(deny_unknown_fields)]
401
372
  pub struct ExecuteToolsEffect {
@@ -777,8 +748,6 @@ pub enum EffectSuccess {
777
748
  PageOutArchived(PageOutArchivedSuccess),
778
749
  PayloadLoaded(PayloadLoadedSuccess),
779
750
  MilestoneEvaluated(MilestoneEvaluatedSuccess),
780
- /// spc_011-C-02.
781
- PromptMeasured(PromptMeasuredSuccess),
782
751
  }
783
752
 
784
753
  impl EffectSuccess {
@@ -794,7 +763,6 @@ impl EffectSuccess {
794
763
  Self::PageOutArchived(_) => EffectSuccessTag::PageOutArchived,
795
764
  Self::PayloadLoaded(_) => EffectSuccessTag::PayloadLoaded,
796
765
  Self::MilestoneEvaluated(_) => EffectSuccessTag::MilestoneEvaluated,
797
- Self::PromptMeasured(_) => EffectSuccessTag::PromptMeasured,
798
766
  }
799
767
  }
800
768
  }
@@ -813,12 +781,10 @@ pub enum EffectSuccessTag {
813
781
  PageOutArchived,
814
782
  PayloadLoaded,
815
783
  MilestoneEvaluated,
816
- /// spc_011-C-02.
817
- PromptMeasured,
818
784
  }
819
785
 
820
786
  impl EffectSuccessTag {
821
- pub const ALL: [Self; 11] = [
787
+ pub const ALL: [Self; 10] = [
822
788
  Self::Provider,
823
789
  Self::Tools,
824
790
  Self::Approval,
@@ -829,7 +795,6 @@ impl EffectSuccessTag {
829
795
  Self::PageOutArchived,
830
796
  Self::PayloadLoaded,
831
797
  Self::MilestoneEvaluated,
832
- Self::PromptMeasured,
833
798
  ];
834
799
 
835
800
  pub fn as_str(self) -> &'static str {
@@ -844,7 +809,6 @@ impl EffectSuccessTag {
844
809
  Self::PageOutArchived => "page_out_archived",
845
810
  Self::PayloadLoaded => "payload_loaded",
846
811
  Self::MilestoneEvaluated => "milestone_evaluated",
847
- Self::PromptMeasured => "prompt_measured",
848
812
  }
849
813
  }
850
814
 
@@ -862,7 +826,6 @@ impl EffectSuccessTag {
862
826
  Self::PageOutArchived => EffectKindTag::ArchivePageOut,
863
827
  Self::PayloadLoaded => EffectKindTag::LoadPayload,
864
828
  Self::MilestoneEvaluated => EffectKindTag::EvaluateMilestone,
865
- Self::PromptMeasured => EffectKindTag::MeasurePrompt,
866
829
  }
867
830
  }
868
831
  }
@@ -1153,14 +1116,6 @@ pub struct MilestoneCheckResult {
1153
1116
  pub notes: String,
1154
1117
  }
1155
1118
 
1156
- /// spc_011-C-02: the answer to a `MeasurePrompt` effect — one [`PromptMeasurement`] fact, wrapped
1157
- /// the same way every other effect wraps its one matching success payload.
1158
- #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
1159
- #[serde(deny_unknown_fields)]
1160
- pub struct PromptMeasuredSuccess {
1161
- pub measurement: PromptMeasurement,
1162
- }
1163
-
1164
1119
  // ---------------------------------------------------------------------------------------------
1165
1120
  // §7.10 · inline / external payload
1166
1121
  // ---------------------------------------------------------------------------------------------
@@ -1354,9 +1309,7 @@ mod tests {
1354
1309
 
1355
1310
  use serde_json::{Value, json};
1356
1311
 
1357
- use crate::context::measurement::{
1358
- MeasurementConfidence, MeasurementSource, PromptMeasurement, ToolMeasurement,
1359
- };
1312
+ use crate::context::measurement::ToolMeasurement;
1360
1313
 
1361
1314
  use super::super::*;
1362
1315
 
@@ -1551,10 +1504,6 @@ mod tests {
1551
1504
  phase_id: "phase-2".to_string(),
1552
1505
  },
1553
1506
  }),
1554
- EffectKind::MeasurePrompt(MeasurePromptEffect {
1555
- context: RenderedContext::default(),
1556
- tools: Vec::new(),
1557
- }),
1558
1507
  ]
1559
1508
  }
1560
1509
 
@@ -1657,15 +1606,6 @@ mod tests {
1657
1606
  notes: String::new(),
1658
1607
  },
1659
1608
  }),
1660
- EffectSuccess::PromptMeasured(PromptMeasuredSuccess {
1661
- measurement: PromptMeasurement {
1662
- input_tokens: 4200,
1663
- source: MeasurementSource::Native {
1664
- provider: "anthropic".to_string(),
1665
- },
1666
- confidence: MeasurementConfidence::Exact,
1667
- },
1668
- }),
1669
1609
  ]
1670
1610
  }
1671
1611
 
@@ -1682,7 +1622,7 @@ mod tests {
1682
1622
  // -----------------------------------------------------------------------------------------
1683
1623
 
1684
1624
  #[test]
1685
- fn the_effect_union_is_exactly_the_eleven_host_executable_actions() {
1625
+ fn the_effect_union_is_exactly_the_ten_host_executable_actions() {
1686
1626
  let tags: BTreeSet<&str> = EffectKindTag::ALL.iter().map(|tag| tag.as_str()).collect();
1687
1627
  assert_eq!(
1688
1628
  tags,
@@ -1697,10 +1637,9 @@ mod tests {
1697
1637
  "archive_page_out",
1698
1638
  "load_payload",
1699
1639
  "evaluate_milestone",
1700
- "measure_prompt",
1701
1640
  ])
1702
1641
  );
1703
- assert_eq!(EffectKindTag::ALL.len(), 11);
1642
+ assert_eq!(EffectKindTag::ALL.len(), 10);
1704
1643
 
1705
1644
  let sampled: Vec<EffectKindTag> = effect_samples().iter().map(EffectKind::tag).collect();
1706
1645
  assert_eq!(
@@ -9,7 +9,7 @@ use serde::{Deserialize, Serialize};
9
9
  use super::driver::PlannedStep;
10
10
  use super::effect::{
11
11
  ArchivePageOutEffect, CallProviderEffect, EffectKind, EffectKindTag, EvaluateMilestoneEffect,
12
- ExecuteToolsEffect, KernelEffect, LoadPayloadEffect, MeasurePromptEffect, PersistMemoryEffect,
12
+ ExecuteToolsEffect, KernelEffect, LoadPayloadEffect, PersistMemoryEffect,
13
13
  PreemptTasksEffect, QueryMemoryEffect, RequestApprovalEffect, SpawnTasksEffect,
14
14
  };
15
15
  use super::scalar::EffectId;
@@ -77,11 +77,6 @@ pub enum CanonicalHostAction {
77
77
  causation_input_id: super::scalar::InputId,
78
78
  payload: EvaluateMilestoneEffect,
79
79
  },
80
- MeasurePrompt {
81
- effect_id: EffectId,
82
- causation_input_id: super::scalar::InputId,
83
- payload: MeasurePromptEffect,
84
- },
85
80
  }
86
81
 
87
82
  #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
@@ -152,11 +147,6 @@ pub fn project_effect(effect: &KernelEffect) -> CanonicalHostAction {
152
147
  causation_input_id,
153
148
  payload: payload.clone(),
154
149
  },
155
- EffectKind::MeasurePrompt(payload) => CanonicalHostAction::MeasurePrompt {
156
- effect_id,
157
- causation_input_id,
158
- payload: payload.clone(),
159
- },
160
150
  }
161
151
  }
162
152
 
@@ -336,7 +336,7 @@ impl ContentPartObj {
336
336
 
337
337
  #[pyclass]
338
338
  #[derive(Clone)]
339
- struct ProviderMessage {
339
+ struct ModelMessage {
340
340
  #[pyo3(get, set)]
341
341
  role: String,
342
342
  #[pyo3(get, set)]
@@ -348,7 +348,7 @@ struct ProviderMessage {
348
348
  }
349
349
 
350
350
  #[pymethods]
351
- impl ProviderMessage {
351
+ impl ModelMessage {
352
352
  #[new]
353
353
  #[pyo3(signature = (role, content, tool_calls = None, content_parts = None))]
354
354
  fn new(
@@ -371,7 +371,7 @@ impl ProviderMessage {
371
371
  None => String::new(),
372
372
  };
373
373
  format!(
374
- "ProviderMessage(role={:?}, content={:?}{})",
374
+ "ModelMessage(role={:?}, content={:?}{})",
375
375
  self.role, self.content, parts_info
376
376
  )
377
377
  }
@@ -535,7 +535,7 @@ fn content_part_from_rust(p: &ContentPart) -> ContentPartObj {
535
535
  }
536
536
  }
537
537
 
538
- impl ProviderMessage {
538
+ impl ModelMessage {
539
539
  fn from_rust(msg: &RustMessage) -> Self {
540
540
  let role = match msg.role {
541
541
  Role::System => "system",
@@ -728,7 +728,7 @@ struct LoopResult {
728
728
  #[pyo3(get)]
729
729
  termination: String,
730
730
  #[pyo3(get)]
731
- final_message: Option<ProviderMessage>,
731
+ final_message: Option<ModelMessage>,
732
732
  #[pyo3(get)]
733
733
  turns_used: u32,
734
734
  #[pyo3(get)]
@@ -841,10 +841,10 @@ struct RenderedContext {
841
841
  system_knowledge: String,
842
842
  /// History turns only — the stable, cacheable message prefix.
843
843
  #[pyo3(get)]
844
- turns: Vec<ProviderMessage>,
844
+ turns: Vec<ModelMessage>,
845
845
  /// Volatile State turn (task_state + signals), rendered after the cacheable history.
846
846
  #[pyo3(get)]
847
- state_turn: Option<ProviderMessage>,
847
+ state_turn: Option<ModelMessage>,
848
848
  /// P1-E: count of leading `turns` forming the frozen prefix (byte-stable until the next
849
849
  /// compaction). Providers pin a deep cache breakpoint here; absent ⇒ rolling-pair fallback.
850
850
  #[pyo3(get)]
@@ -1396,7 +1396,7 @@ struct SessionData {
1396
1396
  #[pyo3(get, set)]
1397
1397
  agent_id: String,
1398
1398
  #[pyo3(get, set)]
1399
- messages: Vec<ProviderMessage>,
1399
+ messages: Vec<ModelMessage>,
1400
1400
  /// JSON-encoded metadata blob.
1401
1401
  #[pyo3(get, set)]
1402
1402
  metadata: String,
@@ -1413,7 +1413,7 @@ impl SessionData {
1413
1413
  fn new(
1414
1414
  session_id: String,
1415
1415
  agent_id: String,
1416
- messages: Vec<ProviderMessage>,
1416
+ messages: Vec<ModelMessage>,
1417
1417
  metadata: String,
1418
1418
  created_at_ms: f64,
1419
1419
  updated_at_ms: f64,
@@ -1693,7 +1693,7 @@ fn build_eval_messages(
1693
1693
  result: String,
1694
1694
  attempt: u32,
1695
1695
  extract_skill_on_pass: bool,
1696
- ) -> Vec<ProviderMessage> {
1696
+ ) -> Vec<ModelMessage> {
1697
1697
  let rust_criteria = criteria_from_py(criteria);
1698
1698
  rust_build_eval_messages(
1699
1699
  &goal,
@@ -1703,7 +1703,7 @@ fn build_eval_messages(
1703
1703
  extract_skill_on_pass,
1704
1704
  )
1705
1705
  .iter()
1706
- .map(ProviderMessage::from_rust)
1706
+ .map(ModelMessage::from_rust)
1707
1707
  .collect()
1708
1708
  }
1709
1709
 
@@ -1756,7 +1756,7 @@ fn _kernel(m: &Bound<'_, PyModule>) -> PyResult<()> {
1756
1756
  m.add("ABI", deepstrike_core::runtime::kernel::wire::ABI)?;
1757
1757
  // POD types
1758
1758
  m.add_class::<ContentPartObj>()?;
1759
- m.add_class::<ProviderMessage>()?;
1759
+ m.add_class::<ModelMessage>()?;
1760
1760
  m.add_class::<ToolCall>()?;
1761
1761
  m.add_class::<ToolExecutionResult>()?;
1762
1762
  m.add_class::<ToolSchema>()?;
@@ -6,7 +6,7 @@ except PackageNotFoundError:
6
6
  __version__ = "0+unknown"
7
7
 
8
8
  from deepstrike._kernel import (
9
- ProviderMessage, ToolCall, ToolExecutionResult, ToolSchema,
9
+ ModelMessage, ToolCall, ToolExecutionResult, ToolSchema,
10
10
  SkillMetadata,
11
11
  )
12
12
  from deepstrike.runtime import (
@@ -201,7 +201,7 @@ from deepstrike.types.agent import (
201
201
  workflow_budget_note,
202
202
  fanout_synthesize, generate_and_filter, verify_rules, gen_eval,
203
203
  )
204
- from deepstrike.agent import Agent, AgentDefinition, AgentMemory, MemoryReference, ModelRef
204
+ from deepstrike.agent import Agent, AgentDefinition, AgentMemory, MemoryReference, ModelRef, create_agent
205
205
  from deepstrike.agent_ir import lower_agent, normalize_agent
206
206
  from deepstrike.runtime.durable_content import (
207
207
  DurableContentError,
@@ -378,11 +378,11 @@ __all__ = [
378
378
  "KnowledgeSource",
379
379
  "RuntimeSignal", "SignalClaim", "SignalDeliveryReceipt",
380
380
  "SignalSource", "ScheduledPrompt", "SignalGateway",
381
- "ProviderMessage", "ToolCall", "ToolExecutionResult", "ToolSchema",
381
+ "ModelMessage", "ToolCall", "ToolExecutionResult", "ToolSchema",
382
382
  "SkillMetadata",
383
383
  # Sub-agent isolation
384
384
  "AgentIdentity", "AgentCapabilityFilter", "AgentRunSpec",
385
- "Agent", "AgentDefinition", "AgentMemory", "MemoryReference", "ModelRef", "lower_agent", "normalize_agent",
385
+ "Agent", "create_agent", "AgentDefinition", "AgentMemory", "MemoryReference", "ModelRef", "lower_agent", "normalize_agent",
386
386
  "AgentProcessChangedObservation", "SubAgentResult", "LoopResult",
387
387
  "KernelAgentRole", "AgentIsolation", "ContextInheritance",
388
388
  "MilestoneContract", "MilestonePhase", "MilestoneCheckResult", "MilestonePolicy",