deepstrike 0.2.71__tar.gz → 0.2.72__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 (261) hide show
  1. {deepstrike-0.2.71 → deepstrike-0.2.72}/Cargo.lock +6 -6
  2. {deepstrike-0.2.71 → deepstrike-0.2.72}/Cargo.toml +3 -3
  3. {deepstrike-0.2.71 → deepstrike-0.2.72}/PKG-INFO +1 -1
  4. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-py/src/lib.rs +12 -12
  5. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/__init__.py +2 -2
  6. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/memory/extraction.py +2 -2
  7. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/memory/protocols.py +3 -3
  8. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/providers/anthropic.py +5 -5
  9. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/providers/anthropic_adapter.py +3 -3
  10. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/providers/base.py +10 -10
  11. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/providers/gemini.py +3 -3
  12. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/providers/gemini_adapter.py +4 -4
  13. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/providers/ollama.py +2 -2
  14. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/providers/ollama_adapter.py +3 -3
  15. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/providers/openai.py +7 -7
  16. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/providers/openai_chat_adapter.py +3 -3
  17. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/providers/openai_responses.py +6 -6
  18. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/providers/protocol_adapter.py +2 -2
  19. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/providers/qwen.py +5 -5
  20. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/providers/replay.py +4 -4
  21. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/providers/replay_validator.py +5 -5
  22. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/providers/request_plan.py +1 -1
  23. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/runtime/archive.py +9 -9
  24. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/runtime/canonical_kernel_step.py +5 -5
  25. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/runtime/eval.py +2 -2
  26. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/runtime/kernel_step.py +5 -5
  27. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/runtime/replay_fixture.py +5 -5
  28. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/runtime/replay_provider.py +5 -5
  29. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/runtime/runner.py +30 -30
  30. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/runtime/sub_agent_orchestrator.py +4 -4
  31. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/types/content.py +3 -3
  32. {deepstrike-0.2.71 → deepstrike-0.2.72}/pyproject.toml +1 -1
  33. {deepstrike-0.2.71 → deepstrike-0.2.72}/LICENSE +0 -0
  34. {deepstrike-0.2.71 → deepstrike-0.2.72}/README.md +0 -0
  35. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/Cargo.toml +0 -0
  36. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/LICENSE +0 -0
  37. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/benches/kernel_baseline.rs +0 -0
  38. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/benches/verifiable_baseline.rs +0 -0
  39. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/benches/wait_index_baseline.rs +0 -0
  40. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/benchmark/mod.rs +0 -0
  41. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/bin/deepstrike.rs +0 -0
  42. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/bin/support/evidence_io.rs +0 -0
  43. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/context/compression.rs +0 -0
  44. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/context/config.rs +0 -0
  45. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/context/execution.rs +0 -0
  46. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/context/fault.rs +0 -0
  47. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/context/manager.rs +0 -0
  48. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/context/measurement.rs +0 -0
  49. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/context/mod.rs +0 -0
  50. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/context/partitions.rs +0 -0
  51. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/context/policy.rs +0 -0
  52. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/context/pressure.rs +0 -0
  53. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/context/renderer.rs +0 -0
  54. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/context/renewal.rs +0 -0
  55. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/context/skill_catalog.rs +0 -0
  56. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/context/summarizer.rs +0 -0
  57. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/context/task_state.rs +0 -0
  58. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/context/text.rs +0 -0
  59. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/context/token_engine.rs +0 -0
  60. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/context/units.rs +0 -0
  61. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/context/utility.rs +0 -0
  62. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/evolution.rs +0 -0
  63. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/governance/constraint.rs +0 -0
  64. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/governance/mod.rs +0 -0
  65. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/governance/permission.rs +0 -0
  66. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/governance/pipeline.rs +0 -0
  67. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/governance/quota.rs +0 -0
  68. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/governance/rate_limit.rs +0 -0
  69. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/governance/repeat_fuse.rs +0 -0
  70. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/governance/veto.rs +0 -0
  71. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/harness/eval.rs +0 -0
  72. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/harness/mod.rs +0 -0
  73. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/lexical.rs +0 -0
  74. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/lib.rs +0 -0
  75. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/memory/curator.rs +0 -0
  76. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/memory/durable.rs +0 -0
  77. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/memory/mod.rs +0 -0
  78. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/mm/handle.rs +0 -0
  79. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/mm/memory.rs +0 -0
  80. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/mm/mod.rs +0 -0
  81. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/mm/value.rs +0 -0
  82. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/orchestration/mod.rs +0 -0
  83. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/orchestration/task_graph.rs +0 -0
  84. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/orchestration/tournament.rs +0 -0
  85. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/orchestration/workflow/mod.rs +0 -0
  86. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/orchestration/workflow/run.rs +0 -0
  87. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/proc/mod.rs +0 -0
  88. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/projection_pairs.rs +0 -0
  89. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/runtime/chain_validator/mod.rs +0 -0
  90. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/runtime/event_log.rs +0 -0
  91. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/runtime/kernel/observation.rs +0 -0
  92. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/runtime/kernel/wire/binding.rs +0 -0
  93. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/runtime/kernel/wire/checkpoint.rs +0 -0
  94. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/runtime/kernel/wire/command.rs +0 -0
  95. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/runtime/kernel/wire/config.rs +0 -0
  96. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/runtime/kernel/wire/crash_point.rs +0 -0
  97. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/runtime/kernel/wire/driver/continuation.rs +0 -0
  98. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/runtime/kernel/wire/driver/effects.rs +0 -0
  99. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/runtime/kernel/wire/driver/events.rs +0 -0
  100. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/runtime/kernel/wire/driver/planning.rs +0 -0
  101. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/runtime/kernel/wire/driver/projection.rs +0 -0
  102. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/runtime/kernel/wire/driver/provider.rs +0 -0
  103. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/runtime/kernel/wire/driver/syscall.rs +0 -0
  104. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/runtime/kernel/wire/driver/tests.rs +0 -0
  105. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/runtime/kernel/wire/driver.rs +0 -0
  106. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/runtime/kernel/wire/effect.rs +0 -0
  107. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/runtime/kernel/wire/envelope.rs +0 -0
  108. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/runtime/kernel/wire/event.rs +0 -0
  109. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/runtime/kernel/wire/fault.rs +0 -0
  110. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/runtime/kernel/wire/projection.rs +0 -0
  111. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/runtime/kernel/wire/record.rs +0 -0
  112. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/runtime/kernel/wire/restore.rs +0 -0
  113. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/runtime/kernel/wire/root.rs +0 -0
  114. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/runtime/kernel/wire/scalar.rs +0 -0
  115. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/runtime/kernel/wire/syscall.rs +0 -0
  116. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/runtime/kernel/wire/terminal.rs +0 -0
  117. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/runtime/kernel/wire/tests.rs +0 -0
  118. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/runtime/kernel/wire/transaction.rs +0 -0
  119. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/runtime/kernel/wire.rs +0 -0
  120. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/runtime/kernel.rs +0 -0
  121. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/runtime/mod.rs +0 -0
  122. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/runtime/repair.rs +0 -0
  123. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/runtime/replay.rs +0 -0
  124. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/runtime/session.rs +0 -0
  125. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/runtime/verifiable.rs +0 -0
  126. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/scheduler/budget_grant.rs +0 -0
  127. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/scheduler/cross_operation.rs +0 -0
  128. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/scheduler/entropy.rs +0 -0
  129. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/scheduler/mailbox.rs +0 -0
  130. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/scheduler/milestone.rs +0 -0
  131. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/scheduler/mod.rs +0 -0
  132. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/scheduler/policy.rs +0 -0
  133. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/scheduler/rollback.rs +0 -0
  134. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/scheduler/runnable.rs +0 -0
  135. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/scheduler/state_machine/cancellation.rs +0 -0
  136. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/scheduler/state_machine/capability.rs +0 -0
  137. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/scheduler/state_machine/eviction.rs +0 -0
  138. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/scheduler/state_machine/gate.rs +0 -0
  139. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/scheduler/state_machine/milestone_exec.rs +0 -0
  140. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/scheduler/state_machine/mod.rs +0 -0
  141. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/scheduler/state_machine/process.rs +0 -0
  142. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/scheduler/state_machine/signal.rs +0 -0
  143. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/scheduler/state_machine/tests.rs +0 -0
  144. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/scheduler/state_machine/workflow.rs +0 -0
  145. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/scheduler/tcb.rs +0 -0
  146. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/scheduler/wait_index.rs +0 -0
  147. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/signals/attention.rs +0 -0
  148. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/signals/mod.rs +0 -0
  149. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/signals/queue.rs +0 -0
  150. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/signals/router.rs +0 -0
  151. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/syscall/mod.rs +0 -0
  152. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/types/agent.rs +0 -0
  153. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/types/capability.rs +0 -0
  154. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/types/contract.rs +0 -0
  155. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/types/durable_content.rs +0 -0
  156. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/types/error.rs +0 -0
  157. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/types/message.rs +0 -0
  158. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/types/milestone.rs +0 -0
  159. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/types/mod.rs +0 -0
  160. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/types/policy.rs +0 -0
  161. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/types/result.rs +0 -0
  162. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/types/signal.rs +0 -0
  163. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/types/skill.rs +0 -0
  164. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-core/src/types/task.rs +0 -0
  165. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-py/Cargo.toml +0 -0
  166. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-py/LICENSE +0 -0
  167. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-tokenizer/Cargo.toml +0 -0
  168. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-tokenizer/LICENSE +0 -0
  169. {deepstrike-0.2.71 → deepstrike-0.2.72}/crates/deepstrike-tokenizer/src/lib.rs +0 -0
  170. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/agent.py +0 -0
  171. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/agent_ir.py +0 -0
  172. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/collaboration/__init__.py +0 -0
  173. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/collaboration/contract.py +0 -0
  174. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/collaboration/handoff.py +0 -0
  175. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/collaboration/harness.py +0 -0
  176. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/collaboration/modes.py +0 -0
  177. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/collaboration/pool.py +0 -0
  178. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/governance.py +0 -0
  179. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/harness/__init__.py +0 -0
  180. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/harness/harness.py +0 -0
  181. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/harness/judge.py +0 -0
  182. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/kernel/__init__.py +0 -0
  183. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/kernel/canonical.py +0 -0
  184. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/knowledge/__init__.py +0 -0
  185. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/knowledge/source.py +0 -0
  186. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/memory/__init__.py +0 -0
  187. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/memory/agent.py +0 -0
  188. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/memory/durable.py +0 -0
  189. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/memory/in_memory_store.py +0 -0
  190. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/memory/ranking.py +0 -0
  191. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/memory/retention.py +0 -0
  192. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/memory/working.py +0 -0
  193. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/providers/__init__.py +0 -0
  194. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/providers/anthropic_compatible.py +0 -0
  195. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/providers/capability_router.py +0 -0
  196. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/providers/credentials.py +0 -0
  197. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/providers/embedding.py +0 -0
  198. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/providers/factories.py +0 -0
  199. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/providers/model_catalog.py +0 -0
  200. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/providers/model_registry.py +0 -0
  201. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/providers/prepared_request.py +0 -0
  202. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/providers/provider_error.py +0 -0
  203. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/providers/runtime_registry.py +0 -0
  204. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/providers/stop_reason.py +0 -0
  205. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/providers/stream.py +0 -0
  206. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/providers/usage.py +0 -0
  207. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/providers/vendor_profiles.py +0 -0
  208. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/runtime/__init__.py +0 -0
  209. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/runtime/context.py +0 -0
  210. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/runtime/context_policy.py +0 -0
  211. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/runtime/credential_vault.py +0 -0
  212. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/runtime/durable_content.py +0 -0
  213. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/runtime/event_stream.py +0 -0
  214. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/runtime/evolution.py +0 -0
  215. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/runtime/execution_evidence.py +0 -0
  216. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/runtime/execution_plane.py +0 -0
  217. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/runtime/facade.py +0 -0
  218. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/runtime/filtered_plane.py +0 -0
  219. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/runtime/kernel_event_log.py +0 -0
  220. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/runtime/kernel_journal.py +0 -0
  221. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/runtime/loop_driver.py +0 -0
  222. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/runtime/mcp_proxy_plane.py +0 -0
  223. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/runtime/os_profile.py +0 -0
  224. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/runtime/os_snapshot.py +0 -0
  225. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/runtime/output_schema.py +0 -0
  226. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/runtime/payload_store.py +0 -0
  227. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/runtime/process_sandbox_plane.py +0 -0
  228. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/runtime/provider_replay.py +0 -0
  229. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/runtime/reaction_checkpoint.py +0 -0
  230. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/runtime/reactive_session.py +0 -0
  231. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/runtime/reducers.py +0 -0
  232. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/runtime/reliability.py +0 -0
  233. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/runtime/remote_vpc_plane.py +0 -0
  234. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/runtime/replay_sanitize.py +0 -0
  235. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/runtime/run_group.py +0 -0
  236. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/runtime/session_log.py +0 -0
  237. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/runtime/session_repair.py +0 -0
  238. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/runtime/turn_policy.py +0 -0
  239. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/runtime/verifiable_report.py +0 -0
  240. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/runtime/workflow_control_flow.py +0 -0
  241. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/runtime/workflow_store.py +0 -0
  242. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/runtime/worktree_plane.py +0 -0
  243. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/safety/__init__.py +0 -0
  244. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/safety/permissions.py +0 -0
  245. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/signals/__init__.py +0 -0
  246. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/signals/gateway.py +0 -0
  247. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/signals/scheduled.py +0 -0
  248. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/signals/types.py +0 -0
  249. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/skills/__init__.py +0 -0
  250. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/skills/loader.py +0 -0
  251. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/skills/registry.py +0 -0
  252. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/skills/watcher.py +0 -0
  253. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/tools/__init__.py +0 -0
  254. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/tools/builtin/__init__.py +0 -0
  255. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/tools/builtin/read_file.py +0 -0
  256. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/tools/errors.py +0 -0
  257. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/tools/execution.py +0 -0
  258. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/tools/registry.py +0 -0
  259. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/types/__init__.py +0 -0
  260. {deepstrike-0.2.71 → deepstrike-0.2.72}/deepstrike/types/agent.py +0 -0
  261. {deepstrike-0.2.71 → deepstrike-0.2.72}/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.72"
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.72"
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.72"
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.72"
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.72"
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.72"
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.72"
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.72" }
12
+ deepstrike-tokenizer = { path = "crates/deepstrike-tokenizer", version = "0.2.72" }
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.72
4
4
  Requires-Dist: httpx>=0.27
5
5
  Requires-Dist: pyyaml>=6.0
6
6
  Requires-Dist: anyio>=4.0
@@ -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 (
@@ -378,7 +378,7 @@ __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",
@@ -3,7 +3,7 @@ from __future__ import annotations
3
3
  import json
4
4
  from typing import Any
5
5
 
6
- from deepstrike._kernel import ProviderMessage
6
+ from deepstrike._kernel import ModelMessage
7
7
  from deepstrike.memory.protocols import MemoryProvenance, MemoryRecord, MemoryScope, SessionData
8
8
  from deepstrike.providers.base import RenderedContext
9
9
  from deepstrike.providers.stream import TextDelta
@@ -20,7 +20,7 @@ async def extract_session_memories(provider: Any, session: SessionData, scope: M
20
20
  system_prompt,
21
21
  "Extract durable, reusable facts from this completed session. Return only JSON; do not include transient progress or guesses.",
22
22
  ])),
23
- turns=[ProviderMessage(
23
+ turns=[ModelMessage(
24
24
  role="user",
25
25
  content=(transcript + '\n\nReturn {"memories":[{"name":"stable-kebab-key",'
26
26
  '"kind":"user|feedback|project|reference","content":"fact",'
@@ -3,7 +3,7 @@ from dataclasses import dataclass, field
3
3
  from typing import TYPE_CHECKING, Any, Literal, Protocol, runtime_checkable
4
4
 
5
5
  if TYPE_CHECKING:
6
- from deepstrike._kernel import ProviderMessage
6
+ from deepstrike._kernel import ModelMessage
7
7
 
8
8
 
9
9
  # ─── Durable-memory types ────────────────────────────────────────────────────
@@ -101,8 +101,8 @@ class MemoryStore(Protocol):
101
101
  class SessionData:
102
102
  session_id: str
103
103
  agent_id: str
104
- """ProviderMessage objects using the kernel message contract."""
105
- messages: list["ProviderMessage"]
104
+ """ModelMessage objects using the kernel message contract."""
105
+ messages: list["ModelMessage"]
106
106
  metadata: Any = None
107
107
  created_at_ms: int = 0
108
108
  updated_at_ms: int = 0
@@ -6,7 +6,7 @@ import logging
6
6
  from types import SimpleNamespace
7
7
  from typing import AsyncIterator
8
8
  from anthropic import AsyncAnthropic
9
- from deepstrike._kernel import ProviderMessage, ToolCall, ToolSchema
9
+ from deepstrike._kernel import ModelMessage, ToolCall, ToolSchema
10
10
  from .stream import StreamEvent
11
11
  from .base import RetryConfig, CircuitBreaker, ProviderDescriptor, RenderedContext, RuntimePolicy, normalize_tool_call, parse_tool_arguments, to_anthropic_content, to_anthropic_messages
12
12
  from .anthropic_adapter import AnthropicMessagesAdapter
@@ -98,7 +98,7 @@ class AnthropicProvider:
98
98
  blocks.append({"type": "text", "text": knowledge, **cc})
99
99
  return blocks or None
100
100
 
101
- def _build_messages(self, turns: list[ProviderMessage], state_turn=None, frozen_prefix_len=None, strategy: str = "default", cache_control: dict | None = None) -> list[dict]:
101
+ def _build_messages(self, turns: list[ModelMessage], state_turn=None, frozen_prefix_len=None, strategy: str = "default", cache_control: dict | None = None) -> list[dict]:
102
102
  msgs = to_anthropic_messages(
103
103
  turns,
104
104
  native_replay=lambda message: self._native_assistant_blocks.get(
@@ -191,7 +191,7 @@ class AnthropicProvider:
191
191
  confidence="exact",
192
192
  )
193
193
 
194
- async def complete(self, context: RenderedContext, tools: list[ToolSchema], extensions: dict | None = None) -> ProviderMessage:
194
+ async def complete(self, context: RenderedContext, tools: list[ToolSchema], extensions: dict | None = None) -> ModelMessage:
195
195
  if self._circuit.is_open():
196
196
  raise RuntimeError("Circuit breaker open")
197
197
 
@@ -238,7 +238,7 @@ class AnthropicProvider:
238
238
  if finalized.replay:
239
239
  self._remember_native_blocks(stream_state.final_text, stream_state.final_tool_calls, finalized.replay["native_blocks"])
240
240
 
241
- def _assistant_replay_key(self, message: ProviderMessage) -> str:
241
+ def _assistant_replay_key(self, message: ModelMessage) -> str:
242
242
  return self._assistant_replay_key_parts(message.content, message.tool_calls or [])
243
243
 
244
244
  def _assistant_replay_key_parts(self, content: str, tool_calls: list[ToolCall]) -> str:
@@ -317,7 +317,7 @@ def _apply_message_cache_control(msgs: list[dict], frozen_prefix_len: "int | Non
317
317
  body is promoted to a cache-bearing text block."""
318
318
  if not msgs:
319
319
  return
320
- # ProviderMessage-level cache_control is emitted under "default" and "frozen-prefix" only.
320
+ # ModelMessage-level cache_control is emitted under "default" and "frozen-prefix" only.
321
321
  if strategy in ("tools-only", "system-only", "none"):
322
322
  return
323
323
  targets = {len(msgs) - 1}
@@ -6,7 +6,7 @@ import math
6
6
  from dataclasses import dataclass, field
7
7
  from typing import Any
8
8
 
9
- from deepstrike._kernel import ProviderMessage, ToolCall, ToolSchema
9
+ from deepstrike._kernel import ModelMessage, ToolCall, ToolSchema
10
10
  from deepstrike.providers.base import normalize_tool_call, parse_tool_arguments, to_anthropic_messages
11
11
  from deepstrike.providers.protocol_adapter import AdapterOutput, ProtocolResponseError
12
12
  from deepstrike.providers.stop_reason import canonicalize_stop_reason
@@ -171,7 +171,7 @@ class AnthropicMessagesAdapter:
171
171
  },
172
172
  )
173
173
 
174
- def decode_complete(self, raw: Any, input: CanonicalAdapterInput) -> tuple[ProviderMessage, dict | None]:
174
+ def decode_complete(self, raw: Any, input: CanonicalAdapterInput) -> tuple[ModelMessage, dict | None]:
175
175
  content = ""
176
176
  calls: list[ToolCall] = []
177
177
  native_blocks: list[dict] = []
@@ -194,7 +194,7 @@ class AnthropicMessagesAdapter:
194
194
  ):
195
195
  raise _textual_tool_call_error()
196
196
  usage = self.normalize_usage(_get(raw, "usage"))
197
- message = ProviderMessage(role="assistant", content=content, tool_calls=calls or None)
197
+ message = ModelMessage(role="assistant", content=content, tool_calls=calls or None)
198
198
  return message, ({"native_blocks": native_blocks} if native_blocks else None)
199
199
 
200
200
  def create_stream_state(self, input: CanonicalAdapterInput, cache_slots: dict[str, bool] | None = None) -> AnthropicStreamState:
@@ -5,7 +5,7 @@ import logging
5
5
  import time
6
6
  from typing import Any, AsyncIterator, Callable, Protocol, TypeVar, runtime_checkable
7
7
  from dataclasses import dataclass, field
8
- from deepstrike._kernel import ProviderMessage, ToolCall, ToolSchema
8
+ from deepstrike._kernel import ModelMessage, ToolCall, ToolSchema
9
9
  from .stream import StreamEvent
10
10
  from deepstrike.types.content import (
11
11
  normalize_canonical_adapter_input,
@@ -159,8 +159,8 @@ def _tool_result_anthropic_content(p: Any) -> "str | list[dict]":
159
159
  return p.output
160
160
 
161
161
 
162
- def to_anthropic_content(msg: ProviderMessage) -> str | list[dict]:
163
- """Convert ProviderMessage to Anthropic API content format."""
162
+ def to_anthropic_content(msg: ModelMessage) -> str | list[dict]:
163
+ """Convert ModelMessage to Anthropic API content format."""
164
164
  validate_rendered_message(msg)
165
165
  if not getattr(msg, "content_parts", None):
166
166
  return msg.content
@@ -201,8 +201,8 @@ def _openai_audio_format(media_type: str | None) -> str:
201
201
  return sub
202
202
 
203
203
 
204
- def to_openai_content(msg: ProviderMessage) -> str | list[dict]:
205
- """Convert ProviderMessage to OpenAI API content format."""
204
+ def to_openai_content(msg: ModelMessage) -> str | list[dict]:
205
+ """Convert ModelMessage to OpenAI API content format."""
206
206
  validate_rendered_message(msg)
207
207
  if not getattr(msg, "content_parts", None):
208
208
  return msg.content
@@ -231,8 +231,8 @@ def to_openai_content(msg: ProviderMessage) -> str | list[dict]:
231
231
 
232
232
 
233
233
  def to_anthropic_messages(
234
- turns: list[ProviderMessage],
235
- native_replay: Callable[[ProviderMessage], list[dict] | None] | None = None,
234
+ turns: list[ModelMessage],
235
+ native_replay: Callable[[ModelMessage], list[dict] | None] | None = None,
236
236
  resolved=None,
237
237
  ) -> list[dict]:
238
238
  """Serialize provider-neutral turns into Anthropic-native messages."""
@@ -403,7 +403,7 @@ class ContextBudgetOverflow:
403
403
  @dataclass
404
404
  class RenderedContext:
405
405
  system_text: str = ""
406
- turns: list[ProviderMessage] = field(default_factory=list)
406
+ turns: list[ModelMessage] = field(default_factory=list)
407
407
  # Identity partition (Anthropic system[0] with cache_control). Empty when the
408
408
  # kernel did not partition the system prompt.
409
409
  system_stable: str = ""
@@ -412,7 +412,7 @@ class RenderedContext:
412
412
  # Volatile State turn (task_state + signals), rendered after the cacheable
413
413
  # history. None when produced by an older binding — then the State turn is
414
414
  # still inside turns[0] and providers render turns as-is.
415
- state_turn: "ProviderMessage | None" = None
415
+ state_turn: "ModelMessage | None" = None
416
416
  # P1-E: count of leading turns forming the frozen prefix (byte-stable until the
417
417
  # next compaction). The Anthropic provider pins a deep cache breakpoint here and
418
418
  # rolls the other at the tail; None ⇒ rolling-pair fallback.
@@ -450,7 +450,7 @@ class ProviderDescriptor:
450
450
 
451
451
  @runtime_checkable
452
452
  class LLMProvider(Protocol):
453
- async def complete(self, context: RenderedContext, tools: list[ToolSchema], extensions: dict | None = None) -> ProviderMessage: ...
453
+ async def complete(self, context: RenderedContext, tools: list[ToolSchema], extensions: dict | None = None) -> ModelMessage: ...
454
454
  def stream(
455
455
  self,
456
456
  context: RenderedContext,
@@ -8,7 +8,7 @@ try:
8
8
  from google import genai as google_genai
9
9
  except ImportError: # pragma: no cover - exercised only when optional provider dep is absent.
10
10
  google_genai = None
11
- from deepstrike._kernel import ProviderMessage, ToolSchema
11
+ from deepstrike._kernel import ModelMessage, ToolSchema
12
12
  from .stream import StreamEvent
13
13
  from .base import RetryConfig, CircuitBreaker, RenderedContext, RuntimePolicy
14
14
  from .gemini_adapter import GeminiAdapter
@@ -63,7 +63,7 @@ class GeminiProvider:
63
63
  def runtime_policy(self) -> RuntimePolicy:
64
64
  return _GEMINI_POLICIES.get(self._model_name, RuntimePolicy())
65
65
 
66
- def _build_contents(self, turns: list[ProviderMessage]) -> list[dict]:
66
+ def _build_contents(self, turns: list[ModelMessage]) -> list[dict]:
67
67
  return self._adapter.build_contents(turns)
68
68
 
69
69
  def _build_tools(self, tools: list[ToolSchema]) -> list[dict] | None:
@@ -140,7 +140,7 @@ class GeminiProvider:
140
140
  confidence="exact",
141
141
  )
142
142
 
143
- async def complete(self, context: RenderedContext, tools: list[ToolSchema], extensions: dict | None = None) -> ProviderMessage:
143
+ async def complete(self, context: RenderedContext, tools: list[ToolSchema], extensions: dict | None = None) -> ModelMessage:
144
144
  if self._circuit.is_open():
145
145
  raise RuntimeError("Circuit breaker open")
146
146
 
@@ -6,7 +6,7 @@ import math
6
6
  from dataclasses import dataclass, field
7
7
  from typing import Any
8
8
 
9
- from deepstrike._kernel import ProviderMessage, ToolSchema
9
+ from deepstrike._kernel import ModelMessage, ToolSchema
10
10
  from deepstrike.providers.base import RenderedContext, UnsupportedModalityError
11
11
  from deepstrike.providers.protocol_adapter import AdapterOutput, ProtocolResponseError
12
12
  from deepstrike.providers.stop_reason import canonicalize_stop_reason
@@ -53,7 +53,7 @@ class GeminiAdapter:
53
53
  def __init__(self, model: str):
54
54
  self._model = model
55
55
 
56
- def build_contents(self, turns: list[ProviderMessage]) -> list[dict]:
56
+ def build_contents(self, turns: list[ModelMessage]) -> list[dict]:
57
57
  contents: list[dict] = []
58
58
  for msg in turns:
59
59
  if msg.role == "tool":
@@ -153,7 +153,7 @@ class GeminiAdapter:
153
153
  def _function_call(part: Any) -> Any:
154
154
  return _get(part, "function_call")
155
155
 
156
- def decode_complete(self, raw: Any, input: CanonicalAdapterInput) -> ProviderMessage:
156
+ def decode_complete(self, raw: Any, input: CanonicalAdapterInput) -> ModelMessage:
157
157
  content = ""
158
158
  tool_calls = []
159
159
  for part in self._response_parts(raw):
@@ -172,7 +172,7 @@ class GeminiAdapter:
172
172
  tool_calls.append(normalized)
173
173
  usage = _get(raw, "usage_metadata")
174
174
  total = _usage_number(usage, "total_token_count") if usage is not None else None
175
- return ProviderMessage(role="assistant", content=content, tool_calls=tool_calls or None)
175
+ return ModelMessage(role="assistant", content=content, tool_calls=tool_calls or None)
176
176
 
177
177
  def create_stream_state(self, input: CanonicalAdapterInput) -> GeminiStreamState:
178
178
  return GeminiStreamState()
@@ -4,7 +4,7 @@ from .prepared_request import PreparedProviderRequest
4
4
  import logging
5
5
  from typing import AsyncIterator
6
6
  import httpx
7
- from deepstrike._kernel import ProviderMessage, ToolSchema
7
+ from deepstrike._kernel import ModelMessage, ToolSchema
8
8
  from .stream import StreamEvent
9
9
  from .base import RetryConfig, CircuitBreaker, RenderedContext, RuntimePolicy
10
10
  from .ollama_adapter import OllamaAdapter
@@ -55,7 +55,7 @@ class OllamaProvider:
55
55
  body["stream"] = stream
56
56
  return body
57
57
 
58
- async def complete(self, context: RenderedContext, tools: list[ToolSchema], extensions: dict | None = None) -> ProviderMessage:
58
+ async def complete(self, context: RenderedContext, tools: list[ToolSchema], extensions: dict | None = None) -> ModelMessage:
59
59
  if self._circuit.is_open():
60
60
  raise Exception("Circuit breaker open")
61
61
 
@@ -6,7 +6,7 @@ import math
6
6
  from dataclasses import dataclass, field
7
7
  from typing import Any
8
8
 
9
- from deepstrike._kernel import ProviderMessage, ToolSchema
9
+ from deepstrike._kernel import ModelMessage, ToolSchema
10
10
  from deepstrike.providers.base import UnsupportedModalityError, normalize_tool_call
11
11
  from deepstrike.providers.protocol_adapter import AdapterOutput, ProtocolResponseError
12
12
  from deepstrike.providers.stop_reason import canonicalize_stop_reason
@@ -113,7 +113,7 @@ class OllamaAdapter:
113
113
  def _model_from_context(input: CanonicalAdapterInput) -> str:
114
114
  return str(input.extensions.get("model") or "")
115
115
 
116
- def decode_complete(self, raw: dict, input: CanonicalAdapterInput) -> ProviderMessage:
116
+ def decode_complete(self, raw: dict, input: CanonicalAdapterInput) -> ModelMessage:
117
117
  message = raw.get("message") or {}
118
118
  tool_calls = []
119
119
  for call in message.get("tool_calls") or []:
@@ -121,7 +121,7 @@ class OllamaAdapter:
121
121
  normalized = normalize_tool_call(call.get("id", ""), function.get("name", ""), function.get("arguments", {}))
122
122
  if normalized:
123
123
  tool_calls.append(normalized)
124
- return ProviderMessage(role="assistant", content=message.get("content") or "", tool_calls=tool_calls or None)
124
+ return ModelMessage(role="assistant", content=message.get("content") or "", tool_calls=tool_calls or None)
125
125
 
126
126
  def create_stream_state(self, input: CanonicalAdapterInput) -> OllamaStreamState:
127
127
  return OllamaStreamState()
@@ -7,7 +7,7 @@ from dataclasses import dataclass, field
7
7
  from typing import Any, AsyncIterator
8
8
  import httpx
9
9
  from openai import AsyncOpenAI
10
- from deepstrike._kernel import ProviderMessage, ToolCall, ToolSchema
10
+ from deepstrike._kernel import ModelMessage, ToolCall, ToolSchema
11
11
  from .stream import StreamEvent, TextDelta, ToolCallEvent, ThinkingDelta, UsageEvent
12
12
  from .base import RetryConfig, CircuitBreaker, ProviderDescriptor, RenderedContext, RuntimePolicy, normalize_tool_call, openai_cached_prompt_tokens, stable_prompt_cache_key, to_openai_message_params, ThinkingTagStreamExtractor, wire_request_extensions
13
13
  from .replay import ReasoningReplayMixin, assistant_replay_key
@@ -224,7 +224,7 @@ class OpenAIProvider(ReasoningReplayMixin):
224
224
  return
225
225
  if reasoning.native_tool_calls:
226
226
  envelope["tool_calls"] = reasoning.native_tool_calls
227
- self.remember_replay_fields(ProviderMessage(role="assistant", content=content, tool_calls=tool_calls or None), envelope)
227
+ self.remember_replay_fields(ModelMessage(role="assistant", content=content, tool_calls=tool_calls or None), envelope)
228
228
 
229
229
  def assess_replayability(self, context: RenderedContext, extensions: dict | None = None) -> dict:
230
230
  """Pre-flight query: would this history validate against this provider with
@@ -382,7 +382,7 @@ class OpenAIProvider(ReasoningReplayMixin):
382
382
  context: RenderedContext,
383
383
  tools: list[ToolSchema],
384
384
  extensions: dict | None,
385
- ) -> ProviderMessage:
385
+ ) -> ModelMessage:
386
386
  adapter_input = self._canonical_input(context, tools, extensions)
387
387
  plan = self._adapter.build_request(adapter_input, self._wire_dialect, self._replay_for_assistant)
388
388
  last_exc = None
@@ -413,7 +413,7 @@ class OpenAIProvider(ReasoningReplayMixin):
413
413
  output = self._adapter.push_stream_chunk(chunk, stream_state)
414
414
  if output.replay:
415
415
  self.remember_replay_fields(
416
- ProviderMessage(role="assistant", content=stream_state.accumulated_content,
416
+ ModelMessage(role="assistant", content=stream_state.accumulated_content,
417
417
  tool_calls=self._adapter._final_tool_calls(stream_state.tool_call_buffers) or None),
418
418
  output.replay,
419
419
  )
@@ -422,14 +422,14 @@ class OpenAIProvider(ReasoningReplayMixin):
422
422
  output = self._adapter.finish_stream(stream_state)
423
423
  if output.replay:
424
424
  self.remember_replay_fields(
425
- ProviderMessage(role="assistant", content=stream_state.accumulated_content,
425
+ ModelMessage(role="assistant", content=stream_state.accumulated_content,
426
426
  tool_calls=self._adapter._final_tool_calls(stream_state.tool_call_buffers) or None),
427
427
  output.replay,
428
428
  )
429
429
  for event in output.events:
430
430
  yield event
431
431
 
432
- async def complete(self, context: RenderedContext, tools: list[ToolSchema], extensions: dict | None = None) -> ProviderMessage:
432
+ async def complete(self, context: RenderedContext, tools: list[ToolSchema], extensions: dict | None = None) -> ModelMessage:
433
433
  if self._circuit.is_open():
434
434
  raise RuntimeError("Circuit breaker open")
435
435
 
@@ -472,7 +472,7 @@ class OpenAIProvider(ReasoningReplayMixin):
472
472
  ],
473
473
  ))
474
474
 
475
- return ProviderMessage(
475
+ return ModelMessage(
476
476
  role="assistant",
477
477
  content=content,
478
478
  tool_calls=tool_calls or None,
@@ -5,7 +5,7 @@ import json
5
5
  from dataclasses import dataclass, field
6
6
  from typing import Any, Callable
7
7
 
8
- from deepstrike._kernel import ProviderMessage, ToolCall, ToolSchema
8
+ from deepstrike._kernel import ModelMessage, ToolCall, ToolSchema
9
9
  from deepstrike.providers.base import (
10
10
  ThinkingTagStreamExtractor,
11
11
  openai_cached_prompt_tokens,
@@ -35,7 +35,7 @@ class OpenAIChatRequestPlan:
35
35
 
36
36
  @dataclass(frozen=True)
37
37
  class OpenAIChatDecodeResult:
38
- message: ProviderMessage
38
+ message: ModelMessage
39
39
  replay: dict[str, Any] | None = None
40
40
 
41
41
 
@@ -250,7 +250,7 @@ class OpenAIChatAdapter:
250
250
  }} for call in native_calls],
251
251
  )
252
252
  return OpenAIChatDecodeResult(
253
- message=ProviderMessage(role="assistant", content=content, tool_calls=tool_calls or None),
253
+ message=ModelMessage(role="assistant", content=content, tool_calls=tool_calls or None),
254
254
  replay=replay,
255
255
  )
256
256
 
@@ -19,7 +19,7 @@ from dataclasses import dataclass, field
19
19
  from types import SimpleNamespace
20
20
  from typing import Any, AsyncIterator
21
21
  from openai import AsyncOpenAI
22
- from deepstrike._kernel import ProviderMessage, ToolCall, ToolSchema
22
+ from deepstrike._kernel import ModelMessage, ToolCall, ToolSchema
23
23
  from .stream import StreamEvent, TextDelta, ToolCallEvent, UsageEvent
24
24
  from .base import (
25
25
  RetryConfig,
@@ -81,7 +81,7 @@ class OpenAIResponsesStreamState:
81
81
  function_calls: dict[int, dict] = field(default_factory=dict)
82
82
 
83
83
 
84
- def _message_content(message: ProviderMessage) -> Any:
84
+ def _message_content(message: ModelMessage) -> Any:
85
85
  """Responses-native content for a message: a plain string when it has no parts, else a list of
86
86
  ``input_text``/``input_image`` blocks (mirrors the Node adapter)."""
87
87
  parts = getattr(message, "content_parts", None)
@@ -167,7 +167,7 @@ class OpenAIResponsesAdapter:
167
167
 
168
168
  return input_items
169
169
 
170
- def _append_message(self, input_items: list[dict], message: ProviderMessage) -> None:
170
+ def _append_message(self, input_items: list[dict], message: ModelMessage) -> None:
171
171
  if message.role == "assistant" and getattr(message, "tool_calls", None):
172
172
  if message.content or getattr(message, "content_parts", None):
173
173
  input_items.append({"role": "assistant", "content": _message_content(message)})
@@ -267,7 +267,7 @@ class OpenAIResponsesAdapter:
267
267
  self._number(output_details, "reasoning_tokens")
268
268
  return normalize_usage(raw)
269
269
 
270
- def decode_complete(self, raw: Any, input: CanonicalAdapterInput) -> ProviderMessage:
270
+ def decode_complete(self, raw: Any, input: CanonicalAdapterInput) -> ModelMessage:
271
271
  output = self._get(raw, "output") or []
272
272
  decoded = self.decode_output([
273
273
  item if isinstance(item, dict) else item.model_dump() if hasattr(item, "model_dump") else item
@@ -275,7 +275,7 @@ class OpenAIResponsesAdapter:
275
275
  ])
276
276
  usage = self._get(raw, "usage")
277
277
  self.normalize_usage(usage)
278
- return ProviderMessage(role="assistant", content=decoded["content"], tool_calls=decoded["tool_calls"] or None)
278
+ return ModelMessage(role="assistant", content=decoded["content"], tool_calls=decoded["tool_calls"] or None)
279
279
 
280
280
  def create_stream_state(
281
281
  self,
@@ -415,7 +415,7 @@ class OpenAIResponsesProvider:
415
415
  resolved=getattr(self, "_resolved_runtime", None),
416
416
  )
417
417
 
418
- async def complete(self, context: RenderedContext, tools: list[ToolSchema], extensions: dict | None = None) -> ProviderMessage:
418
+ async def complete(self, context: RenderedContext, tools: list[ToolSchema], extensions: dict | None = None) -> ModelMessage:
419
419
  if self._circuit.is_open():
420
420
  raise RuntimeError("Circuit breaker open")
421
421
 
@@ -9,7 +9,7 @@ from __future__ import annotations
9
9
  from dataclasses import dataclass, field
10
10
  from typing import Any, Generic, Protocol, TypeVar
11
11
 
12
- from deepstrike._kernel import ProviderMessage
12
+ from deepstrike._kernel import ModelMessage
13
13
  from deepstrike.providers.stream import StreamEvent
14
14
  from deepstrike.types.content import CanonicalAdapterInput
15
15
 
@@ -56,7 +56,7 @@ class ProtocolAdapter(Protocol, Generic[RequestT, CompleteT, ChunkT, StateT, Fin
56
56
  protocol: str
57
57
 
58
58
  def build_request(self, input: CanonicalAdapterInput) -> RequestT: ...
59
- def decode_complete(self, raw: CompleteT, input: CanonicalAdapterInput) -> ProviderMessage: ...
59
+ def decode_complete(self, raw: CompleteT, input: CanonicalAdapterInput) -> ModelMessage: ...
60
60
  def create_stream_state(self, input: CanonicalAdapterInput) -> StateT: ...
61
61
  def push_stream_chunk(self, chunk: ChunkT, state: StateT) -> AdapterOutput: ...
62
62
  def finish_stream(self, state: StateT, final: FinalT) -> AdapterOutput: ...