deepstrike 0.2.28__tar.gz → 0.2.31__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 (186) hide show
  1. {deepstrike-0.2.28 → deepstrike-0.2.31}/Cargo.lock +5 -5
  2. {deepstrike-0.2.28 → deepstrike-0.2.31}/Cargo.toml +2 -2
  3. {deepstrike-0.2.28 → deepstrike-0.2.31}/PKG-INFO +39 -12
  4. {deepstrike-0.2.28 → deepstrike-0.2.31}/README.md +38 -11
  5. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/governance/quota.rs +8 -0
  6. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/runtime/kernel.rs +410 -41
  7. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/scheduler/state_machine/gate.rs +26 -2
  8. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/scheduler/state_machine/mod.rs +36 -1
  9. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/scheduler/state_machine/workflow.rs +17 -0
  10. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/signals/queue.rs +28 -0
  11. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/signals/router.rs +49 -0
  12. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/types/signal.rs +20 -0
  13. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-py/src/lib.rs +32 -1
  14. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/__init__.py +51 -0
  15. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/harness/harness.py +14 -34
  16. deepstrike-0.2.31/deepstrike/harness/judge.py +98 -0
  17. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/providers/__init__.py +5 -3
  18. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/providers/anthropic.py +34 -18
  19. deepstrike-0.2.31/deepstrike/providers/anthropic_compatible.py +38 -0
  20. deepstrike-0.2.31/deepstrike/providers/deepseek.py +132 -0
  21. deepstrike-0.2.31/deepstrike/providers/factories.py +90 -0
  22. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/providers/gemini.py +48 -4
  23. deepstrike-0.2.31/deepstrike/providers/glm.py +62 -0
  24. deepstrike-0.2.31/deepstrike/providers/kimi.py +140 -0
  25. deepstrike-0.2.31/deepstrike/providers/minimax.py +115 -0
  26. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/providers/openai.py +135 -28
  27. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/providers/openai_responses.py +25 -5
  28. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/providers/qwen.py +147 -31
  29. deepstrike-0.2.31/deepstrike/providers/vendor_profiles.py +129 -0
  30. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/runtime/__init__.py +59 -0
  31. deepstrike-0.2.31/deepstrike/runtime/event_stream.py +80 -0
  32. deepstrike-0.2.31/deepstrike/runtime/facade.py +89 -0
  33. deepstrike-0.2.31/deepstrike/runtime/reactive_session.py +187 -0
  34. deepstrike-0.2.31/deepstrike/runtime/run_group.py +134 -0
  35. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/runtime/runner.py +100 -13
  36. deepstrike-0.2.31/deepstrike/runtime/turn_policy.py +103 -0
  37. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/signals/gateway.py +14 -3
  38. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/signals/types.py +13 -2
  39. {deepstrike-0.2.28 → deepstrike-0.2.31}/pyproject.toml +1 -1
  40. deepstrike-0.2.28/deepstrike/providers/deepseek.py +0 -238
  41. deepstrike-0.2.28/deepstrike/providers/glm.py +0 -50
  42. deepstrike-0.2.28/deepstrike/providers/kimi.py +0 -49
  43. deepstrike-0.2.28/deepstrike/providers/minimax.py +0 -260
  44. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/Cargo.toml +0 -0
  45. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/context/compression.rs +0 -0
  46. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/context/config.rs +0 -0
  47. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/context/dashboard.rs +0 -0
  48. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/context/manager.rs +0 -0
  49. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/context/mod.rs +0 -0
  50. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/context/partitions.rs +0 -0
  51. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/context/pressure.rs +0 -0
  52. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/context/renderer.rs +0 -0
  53. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/context/renewal.rs +0 -0
  54. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/context/sections.rs +0 -0
  55. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/context/skill_catalog.rs +0 -0
  56. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/context/snapshot.rs +0 -0
  57. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/context/summarizer.rs +0 -0
  58. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/context/task_state.rs +0 -0
  59. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/context/text.rs +0 -0
  60. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/context/token_engine.rs +0 -0
  61. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/governance/audit.rs +0 -0
  62. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/governance/constraint.rs +0 -0
  63. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/governance/mod.rs +0 -0
  64. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/governance/permission.rs +0 -0
  65. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/governance/pipeline.rs +0 -0
  66. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/governance/rate_limit.rs +0 -0
  67. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/governance/sandbox.rs +0 -0
  68. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/governance/tool_decision.rs +0 -0
  69. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/governance/veto.rs +0 -0
  70. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/harness/eval.rs +0 -0
  71. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/harness/mod.rs +0 -0
  72. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/lib.rs +0 -0
  73. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/memory/curator.rs +0 -0
  74. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/memory/durable.rs +0 -0
  75. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/memory/extractor.rs +0 -0
  76. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/memory/idle_pipeline.rs +0 -0
  77. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/memory/mod.rs +0 -0
  78. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/memory/runtime.rs +0 -0
  79. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/memory/semantic.rs +0 -0
  80. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/memory/session.rs +0 -0
  81. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/memory/synthesis.rs +0 -0
  82. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/memory/trace_analyzer.rs +0 -0
  83. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/memory/working.rs +0 -0
  84. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/mm/handle.rs +0 -0
  85. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/mm/memory.rs +0 -0
  86. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/mm/mod.rs +0 -0
  87. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/orchestration/mod.rs +0 -0
  88. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/orchestration/task_graph.rs +0 -0
  89. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/orchestration/tournament.rs +0 -0
  90. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/orchestration/workflow/mod.rs +0 -0
  91. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/orchestration/workflow/run.rs +0 -0
  92. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/proc/mod.rs +0 -0
  93. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/runtime/event_log.rs +0 -0
  94. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/runtime/mod.rs +0 -0
  95. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/runtime/repair.rs +0 -0
  96. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/runtime/replay.rs +0 -0
  97. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/runtime/session.rs +0 -0
  98. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/runtime/snapshot.rs +0 -0
  99. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/scheduler/milestone.rs +0 -0
  100. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/scheduler/mod.rs +0 -0
  101. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/scheduler/policy.rs +0 -0
  102. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/scheduler/rollback.rs +0 -0
  103. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/scheduler/state_machine/capability.rs +0 -0
  104. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/scheduler/state_machine/eviction.rs +0 -0
  105. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/scheduler/state_machine/milestone_exec.rs +0 -0
  106. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/scheduler/state_machine/process.rs +0 -0
  107. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/scheduler/state_machine/signal.rs +0 -0
  108. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/scheduler/state_machine/tests.rs +0 -0
  109. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/scheduler/tcb.rs +0 -0
  110. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/signals/attention.rs +0 -0
  111. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/signals/mod.rs +0 -0
  112. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/syscall/mod.rs +0 -0
  113. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/types/agent.rs +0 -0
  114. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/types/capability.rs +0 -0
  115. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/types/contract.rs +0 -0
  116. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/types/error.rs +0 -0
  117. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/types/message.rs +0 -0
  118. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/types/milestone.rs +0 -0
  119. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/types/mod.rs +0 -0
  120. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/types/model.rs +0 -0
  121. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/types/policy.rs +0 -0
  122. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/types/result.rs +0 -0
  123. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/types/skill.rs +0 -0
  124. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-core/src/types/task.rs +0 -0
  125. {deepstrike-0.2.28 → deepstrike-0.2.31}/crates/deepstrike-py/Cargo.toml +0 -0
  126. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/collaboration/__init__.py +0 -0
  127. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/collaboration/contract.py +0 -0
  128. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/collaboration/handoff.py +0 -0
  129. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/collaboration/harness.py +0 -0
  130. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/collaboration/modes.py +0 -0
  131. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/collaboration/pool.py +0 -0
  132. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/governance.py +0 -0
  133. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/harness/__init__.py +0 -0
  134. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/kernel/__init__.py +0 -0
  135. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/knowledge/__init__.py +0 -0
  136. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/knowledge/source.py +0 -0
  137. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/memory/__init__.py +0 -0
  138. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/memory/agent.py +0 -0
  139. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/memory/in_memory_store.py +0 -0
  140. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/memory/protocols.py +0 -0
  141. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/memory/working.py +0 -0
  142. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/providers/base.py +0 -0
  143. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/providers/ollama.py +0 -0
  144. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/providers/replay.py +0 -0
  145. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/providers/replay_validator.py +0 -0
  146. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/providers/stream.py +0 -0
  147. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/runtime/archive.py +0 -0
  148. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/runtime/credential_vault.py +0 -0
  149. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/runtime/eval.py +0 -0
  150. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/runtime/execution_plane.py +0 -0
  151. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/runtime/filtered_plane.py +0 -0
  152. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/runtime/kernel_event_log.py +0 -0
  153. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/runtime/kernel_step.py +0 -0
  154. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/runtime/large_result_spool.py +0 -0
  155. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/runtime/mcp_proxy_plane.py +0 -0
  156. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/runtime/os_profile.py +0 -0
  157. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/runtime/os_snapshot.py +0 -0
  158. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/runtime/output_schema.py +0 -0
  159. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/runtime/process_sandbox_plane.py +0 -0
  160. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/runtime/provider_replay.py +0 -0
  161. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/runtime/reducers.py +0 -0
  162. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/runtime/remote_vpc_plane.py +0 -0
  163. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/runtime/replay_fixture.py +0 -0
  164. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/runtime/replay_provider.py +0 -0
  165. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/runtime/replay_sanitize.py +0 -0
  166. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/runtime/session_log.py +0 -0
  167. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/runtime/session_repair.py +0 -0
  168. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/runtime/sub_agent_orchestrator.py +0 -0
  169. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/runtime/workflow_control_flow.py +0 -0
  170. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/runtime/workflow_store.py +0 -0
  171. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/runtime/worktree_plane.py +0 -0
  172. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/safety/__init__.py +0 -0
  173. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/safety/permissions.py +0 -0
  174. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/signals/__init__.py +0 -0
  175. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/signals/scheduled.py +0 -0
  176. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/skills/__init__.py +0 -0
  177. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/skills/registry.py +0 -0
  178. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/skills/watcher.py +0 -0
  179. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/tools/__init__.py +0 -0
  180. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/tools/builtin/__init__.py +0 -0
  181. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/tools/builtin/read_file.py +0 -0
  182. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/tools/errors.py +0 -0
  183. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/tools/execution.py +0 -0
  184. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/tools/registry.py +0 -0
  185. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/types/__init__.py +0 -0
  186. {deepstrike-0.2.28 → deepstrike-0.2.31}/deepstrike/types/agent.py +0 -0
@@ -194,7 +194,7 @@ dependencies = [
194
194
 
195
195
  [[package]]
196
196
  name = "deepstrike-core"
197
- version = "0.2.28"
197
+ version = "0.2.31"
198
198
  dependencies = [
199
199
  "compact_str",
200
200
  "pretty_assertions",
@@ -206,7 +206,7 @@ dependencies = [
206
206
 
207
207
  [[package]]
208
208
  name = "deepstrike-node"
209
- version = "0.2.28"
209
+ version = "0.2.31"
210
210
  dependencies = [
211
211
  "compact_str",
212
212
  "deepstrike-core",
@@ -218,7 +218,7 @@ dependencies = [
218
218
 
219
219
  [[package]]
220
220
  name = "deepstrike-py"
221
- version = "0.2.28"
221
+ version = "0.2.31"
222
222
  dependencies = [
223
223
  "compact_str",
224
224
  "deepstrike-core",
@@ -229,7 +229,7 @@ dependencies = [
229
229
 
230
230
  [[package]]
231
231
  name = "deepstrike-sdk"
232
- version = "0.2.28"
232
+ version = "0.2.31"
233
233
  dependencies = [
234
234
  "async-stream",
235
235
  "async-trait",
@@ -263,7 +263,7 @@ dependencies = [
263
263
 
264
264
  [[package]]
265
265
  name = "deepstrike-wasm"
266
- version = "0.2.28"
266
+ version = "0.2.31"
267
267
  dependencies = [
268
268
  "compact_str",
269
269
  "deepstrike-core",
@@ -3,13 +3,13 @@ resolver = "2"
3
3
  members = ["crates/deepstrike-core", "crates/deepstrike-py"]
4
4
 
5
5
  [workspace.package]
6
- version = "0.2.28"
6
+ version = "0.2.31"
7
7
  edition = "2024"
8
8
  license = "MIT"
9
9
  repository = "https://github.com/kongusen/deepstrike"
10
10
 
11
11
  [workspace.dependencies]
12
- deepstrike-core = { path = "crates/deepstrike-core", version = "0.2.28" }
12
+ deepstrike-core = { path = "crates/deepstrike-core", version = "0.2.31" }
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.28
3
+ Version: 0.2.31
4
4
  Requires-Dist: httpx>=0.27
5
5
  Requires-Dist: pyyaml>=6.0
6
6
  Requires-Dist: anyio>=4.0
@@ -68,6 +68,25 @@ asyncio.run(collect_text(runner.run(
68
68
  # => "45"
69
69
  ```
70
70
 
71
+ ### Recipes — the canonical entry points
72
+
73
+ Most apps need one of two shapes. Start with the facades; drop to `RuntimeRunner` for streaming, tools, signals, memory, or governance.
74
+
75
+ ```python
76
+ from deepstrike import run_agent, run_fanout
77
+
78
+ # 1) Single agent — one prompt, one model, the text back.
79
+ answer = await run_agent(provider=provider, goal="What is 17 + 28?", tools=[add])
80
+
81
+ # 2) Parallel fan-out → synthesize over the kernel-gated DAG (safe from a stateless handler).
82
+ out = await run_fanout(
83
+ provider=provider,
84
+ tasks=["Summarize the auth module", "Summarize the data layer"],
85
+ synthesize="Combine the findings into one summary.",
86
+ )
87
+ synthesis = out["synthesis"]
88
+ ```
89
+
71
90
  Same-session continuity is explicit via `session_id`:
72
91
 
73
92
  ```python
@@ -205,17 +224,25 @@ runner = RuntimeRunner(RuntimeOptions(
205
224
  ))
206
225
  ```
207
226
 
208
- | Class | Backend | Notes |
209
- |-------|---------|-------|
210
- | `OpenAIProvider` | OpenAI API | SSE tool-call accumulation |
211
- | `AnthropicProvider` | Anthropic API | Native SSE, `ThinkingDelta` support |
212
- | `QwenProvider` | DashScope | `enable_thinking` via extensions |
213
- | `DeepSeekProvider` | DeepSeek API | Reasoner models strip tools automatically |
214
- | `MiniMaxProvider` | MiniMax API | M1 reasoning via `expose_reasoning` |
215
- | `OllamaProvider` | Local Ollama | `http://localhost:11434` default |
216
- | `KimiProvider` | Moonshot API | |
217
-
218
- All providers accept `RetryConfig` for exponential backoff and share a `CircuitBreaker`.
227
+ The top-level package exports the base providers `OpenAIProvider`, `OpenAIResponsesProvider`, and
228
+ `AnthropicProvider`. **Every other backend is a factory function** in `deepstrike.providers`, with a
229
+ `protocol` argument where a backend speaks both the OpenAI- and Anthropic-compatible wire:
230
+
231
+ ```python
232
+ from deepstrike.providers import deepseek, kimi, minimax
233
+
234
+ ds = deepseek(api_key="...") # OpenAI-compatible wire (default)
235
+ dsA = deepseek(api_key="...", protocol="anthropic") # Anthropic-compatible wire
236
+ mm = minimax(api_key="...") # MiniMax defaults to the Anthropic wire
237
+ ```
238
+
239
+ | Entry | Import from | Backend |
240
+ |-------|-------------|---------|
241
+ | `OpenAIProvider` / `OpenAIResponsesProvider` | `deepstrike` | OpenAI (and OpenAI-compatible) |
242
+ | `AnthropicProvider` | `deepstrike` | Anthropic Messages API |
243
+ | `deepseek` · `kimi` · `qwen` · `glm` · `minimax` · `gemini` · `ollama` | `deepstrike.providers` | the respective vendor (factory functions) |
244
+
245
+ All providers accept `retry_config` for exponential backoff and share a `CircuitBreaker`.
219
246
 
220
247
  `extensions` are forwarded to the provider while SDK-owned structural fields remain protected.
221
248
 
@@ -55,6 +55,25 @@ asyncio.run(collect_text(runner.run(
55
55
  # => "45"
56
56
  ```
57
57
 
58
+ ### Recipes — the canonical entry points
59
+
60
+ Most apps need one of two shapes. Start with the facades; drop to `RuntimeRunner` for streaming, tools, signals, memory, or governance.
61
+
62
+ ```python
63
+ from deepstrike import run_agent, run_fanout
64
+
65
+ # 1) Single agent — one prompt, one model, the text back.
66
+ answer = await run_agent(provider=provider, goal="What is 17 + 28?", tools=[add])
67
+
68
+ # 2) Parallel fan-out → synthesize over the kernel-gated DAG (safe from a stateless handler).
69
+ out = await run_fanout(
70
+ provider=provider,
71
+ tasks=["Summarize the auth module", "Summarize the data layer"],
72
+ synthesize="Combine the findings into one summary.",
73
+ )
74
+ synthesis = out["synthesis"]
75
+ ```
76
+
58
77
  Same-session continuity is explicit via `session_id`:
59
78
 
60
79
  ```python
@@ -192,17 +211,25 @@ runner = RuntimeRunner(RuntimeOptions(
192
211
  ))
193
212
  ```
194
213
 
195
- | Class | Backend | Notes |
196
- |-------|---------|-------|
197
- | `OpenAIProvider` | OpenAI API | SSE tool-call accumulation |
198
- | `AnthropicProvider` | Anthropic API | Native SSE, `ThinkingDelta` support |
199
- | `QwenProvider` | DashScope | `enable_thinking` via extensions |
200
- | `DeepSeekProvider` | DeepSeek API | Reasoner models strip tools automatically |
201
- | `MiniMaxProvider` | MiniMax API | M1 reasoning via `expose_reasoning` |
202
- | `OllamaProvider` | Local Ollama | `http://localhost:11434` default |
203
- | `KimiProvider` | Moonshot API | |
204
-
205
- All providers accept `RetryConfig` for exponential backoff and share a `CircuitBreaker`.
214
+ The top-level package exports the base providers `OpenAIProvider`, `OpenAIResponsesProvider`, and
215
+ `AnthropicProvider`. **Every other backend is a factory function** in `deepstrike.providers`, with a
216
+ `protocol` argument where a backend speaks both the OpenAI- and Anthropic-compatible wire:
217
+
218
+ ```python
219
+ from deepstrike.providers import deepseek, kimi, minimax
220
+
221
+ ds = deepseek(api_key="...") # OpenAI-compatible wire (default)
222
+ dsA = deepseek(api_key="...", protocol="anthropic") # Anthropic-compatible wire
223
+ mm = minimax(api_key="...") # MiniMax defaults to the Anthropic wire
224
+ ```
225
+
226
+ | Entry | Import from | Backend |
227
+ |-------|-------------|---------|
228
+ | `OpenAIProvider` / `OpenAIResponsesProvider` | `deepstrike` | OpenAI (and OpenAI-compatible) |
229
+ | `AnthropicProvider` | `deepstrike` | Anthropic Messages API |
230
+ | `deepseek` · `kimi` · `qwen` · `glm` · `minimax` · `gemini` · `ollama` | `deepstrike.providers` | the respective vendor (factory functions) |
231
+
232
+ All providers accept `retry_config` for exponential backoff and share a `CircuitBreaker`.
206
233
 
207
234
  `extensions` are forwarded to the provider while SDK-owned structural fields remain protected.
208
235
 
@@ -17,8 +17,15 @@ use serde::{Deserialize, Serialize};
17
17
  #[derive(Debug, Clone, Default, Serialize, Deserialize)]
18
18
  pub struct ResourceQuota {
19
19
  /// Max sub-agents in the `Running` state at once. Further `Spawn`s are denied while at cap.
20
+ /// *Instantaneous* — vehicle-scoped (cannot span stateless replicas; spec §2.5).
20
21
  #[serde(default, skip_serializing_if = "Option::is_none")]
21
22
  pub max_concurrent_subagents: Option<u32>,
23
+ /// L1 (RunGroup): max sub-agents spawned *cumulatively* over the whole governance domain. Unlike
24
+ /// `max_concurrent_subagents` this counts every spawn ever (running + completed), seeded across
25
+ /// members via `group_spawns_base`, so it spans N stateless top-level runs. A hard `Deny` at cap
26
+ /// (a completed sibling never frees a cumulative slot).
27
+ #[serde(default, skip_serializing_if = "Option::is_none")]
28
+ pub max_total_subagents: Option<u32>,
22
29
  /// Max sub-agent nesting depth (direct children of the root loop are depth 1).
23
30
  #[serde(default, skip_serializing_if = "Option::is_none")]
24
31
  pub max_spawn_depth: Option<u32>,
@@ -37,6 +44,7 @@ impl ResourceQuota {
37
44
  /// Whether any limit is actually set (used to short-circuit the gate when fully open).
38
45
  pub fn is_open(&self) -> bool {
39
46
  self.max_concurrent_subagents.is_none()
47
+ && self.max_total_subagents.is_none()
40
48
  && self.max_spawn_depth.is_none()
41
49
  && self.memory_writes_per_window.is_none()
42
50
  && self.max_workflow_nodes.is_none()