devsper 2.1.8__tar.gz → 2.3.0__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 (689) hide show
  1. {devsper-2.1.8 → devsper-2.3.0}/CHANGELOG.md +33 -0
  2. {devsper-2.1.8 → devsper-2.3.0}/Cargo.lock +291 -6
  3. devsper-2.3.0/Cargo.toml +3 -0
  4. devsper-2.3.0/Dockerfile.local-pool +22 -0
  5. {devsper-2.1.8 → devsper-2.3.0}/PKG-INFO +70 -2
  6. {devsper-2.1.8 → devsper-2.3.0}/README.md +61 -1
  7. devsper-2.3.0/devsper/__init__.py +36 -0
  8. {devsper-2.1.8 → devsper-2.3.0}/devsper/agents/agent.py +405 -33
  9. devsper-2.3.0/devsper/agents/identity.py +38 -0
  10. devsper-2.3.0/devsper/agents/registry.py +46 -0
  11. devsper-2.3.0/devsper/budget.py +102 -0
  12. devsper-2.3.0/devsper/cli/commands/cloud.py +718 -0
  13. devsper-2.3.0/devsper/cli/export.py +16 -0
  14. {devsper-2.1.8 → devsper-2.3.0}/devsper/cli/init.py +48 -4
  15. {devsper-2.1.8 → devsper-2.3.0}/devsper/cli/main.py +1118 -99
  16. {devsper-2.1.8 → devsper-2.3.0}/devsper/cli/ui/components.py +18 -2
  17. {devsper-2.1.8 → devsper-2.3.0}/devsper/cli/ui/onboarding.py +15 -1
  18. {devsper-2.1.8 → devsper-2.3.0}/devsper/cli/ui/run_view.py +83 -5
  19. {devsper-2.1.8 → devsper-2.3.0}/devsper/config/__init__.py +4 -0
  20. {devsper-2.1.8 → devsper-2.3.0}/devsper/config/defaults.py +5 -3
  21. {devsper-2.1.8 → devsper-2.3.0}/devsper/config/resolver.py +101 -26
  22. {devsper-2.1.8 → devsper-2.3.0}/devsper/config/schema.py +76 -11
  23. devsper-2.3.0/devsper/connectors/__init__.py +18 -0
  24. devsper-2.3.0/devsper/connectors/base.py +59 -0
  25. devsper-2.3.0/devsper/connectors/registry.py +46 -0
  26. devsper-2.3.0/devsper/connectors/sample_connector.py +74 -0
  27. devsper-2.3.0/devsper/core/__init__.py +2 -0
  28. devsper-2.3.0/devsper/core/agent/__init__.py +4 -0
  29. devsper-2.3.0/devsper/core/agent/runner.py +14 -0
  30. devsper-2.3.0/devsper/core/hitl/__init__.py +4 -0
  31. devsper-2.3.0/devsper/core/hitl/state_machine.py +53 -0
  32. devsper-2.3.0/devsper/core/memory/__init__.py +4 -0
  33. devsper-2.3.0/devsper/core/memory/shared_memory.py +45 -0
  34. devsper-2.3.0/devsper/core/reporting/__init__.py +4 -0
  35. devsper-2.3.0/devsper/core/reporting/publisher.py +53 -0
  36. devsper-2.3.0/devsper/core/runtime/__init__.py +5 -0
  37. devsper-2.3.0/devsper/core/runtime/durability.py +45 -0
  38. devsper-2.3.0/devsper/core/runtime/orchestrator.py +14 -0
  39. devsper-2.3.0/devsper/core/tools/__init__.py +12 -0
  40. devsper-2.3.0/devsper/core/tools/base_tool.py +17 -0
  41. devsper-2.3.0/devsper/core/tools/loader.py +35 -0
  42. devsper-2.3.0/devsper/core/tools/registry.py +49 -0
  43. devsper-2.3.0/devsper/export/manifest.py +30 -0
  44. devsper-2.3.0/devsper/export/packager.py +56 -0
  45. {devsper-2.1.8 → devsper-2.3.0}/devsper/export/service.py +12 -0
  46. {devsper-2.1.8 → devsper-2.3.0}/devsper/memory/__init__.py +9 -2
  47. {devsper-2.1.8 → devsper-2.3.0}/devsper/memory/context.py +20 -3
  48. {devsper-2.1.8 → devsper-2.3.0}/devsper/memory/memory_index.py +75 -4
  49. devsper-2.3.0/devsper/memory/memory_router.py +120 -0
  50. {devsper-2.1.8 → devsper-2.3.0}/devsper/memory/memory_store.py +53 -43
  51. devsper-2.3.0/devsper/memory/platform_memory.py +95 -0
  52. devsper-2.3.0/devsper/memory/supermemory_rust_ranker.py +438 -0
  53. devsper-2.3.0/devsper/missions/__init__.py +16 -0
  54. devsper-2.3.0/devsper/missions/base_agent.py +22 -0
  55. devsper-2.3.0/devsper/missions/coding/__init__.py +13 -0
  56. devsper-2.3.0/devsper/missions/coding/architect_agent.py +10 -0
  57. devsper-2.3.0/devsper/missions/coding/coder_agent.py +10 -0
  58. devsper-2.3.0/devsper/missions/coding/debugger_agent.py +10 -0
  59. devsper-2.3.0/devsper/missions/coding/docs_agent.py +10 -0
  60. devsper-2.3.0/devsper/missions/coding/tester_agent.py +10 -0
  61. devsper-2.3.0/devsper/missions/iteration_loop.py +42 -0
  62. devsper-2.3.0/devsper/missions/mission_memory.py +70 -0
  63. devsper-2.3.0/devsper/missions/mission_planner.py +70 -0
  64. devsper-2.3.0/devsper/missions/mission_runner.py +232 -0
  65. devsper-2.3.0/devsper/missions/models.py +60 -0
  66. devsper-2.3.0/devsper/missions/research/__init__.py +6 -0
  67. devsper-2.3.0/devsper/missions/research/editor_agent.py +10 -0
  68. devsper-2.3.0/devsper/missions/research/researcher_agent.py +10 -0
  69. devsper-2.3.0/devsper/missions/research/reviewer_agent.py +10 -0
  70. devsper-2.3.0/devsper/missions/research/writer_agent.py +10 -0
  71. {devsper-2.1.8 → devsper-2.3.0}/devsper/nodes/controller.py +95 -6
  72. {devsper-2.1.8 → devsper-2.3.0}/devsper/nodes/worker.py +4 -1
  73. devsper-2.3.0/devsper/platform/__init__.py +6 -0
  74. devsper-2.3.0/devsper/platform/redis_results_sink.py +181 -0
  75. devsper-2.3.0/devsper/platform/reporter.py +104 -0
  76. devsper-2.3.0/devsper/platform/request_builder.py +227 -0
  77. devsper-2.3.0/devsper/platform/runtime_events.py +277 -0
  78. devsper-2.3.0/devsper/policy/client.py +32 -0
  79. devsper-2.3.0/devsper/pool/__init__.py +2 -0
  80. devsper-2.3.0/devsper/pool/config.py +46 -0
  81. devsper-2.3.0/devsper/pool/crypto.py +75 -0
  82. devsper-2.3.0/devsper/pool/local_pool.py +126 -0
  83. devsper-2.3.0/devsper/pool/manager.py +159 -0
  84. devsper-2.3.0/devsper/pool/models.py +55 -0
  85. devsper-2.3.0/devsper/pool/org_pool.py +38 -0
  86. devsper-2.3.0/devsper/pool/profiles/dev.toml +22 -0
  87. devsper-2.3.0/devsper/pool/profiles/local.toml +24 -0
  88. devsper-2.3.0/devsper/pool/profiles/prod.toml +27 -0
  89. devsper-2.3.0/devsper/pool/security.py +41 -0
  90. devsper-2.3.0/devsper/pool/store.py +203 -0
  91. devsper-2.3.0/devsper/pool/worker_runner.py +95 -0
  92. devsper-2.3.0/devsper/protocol/__init__.py +4 -0
  93. devsper-2.3.0/devsper/protocol/client.py +56 -0
  94. devsper-2.3.0/devsper/protocol/schema.py +47 -0
  95. devsper-2.3.0/devsper/protocol/server.py +74 -0
  96. {devsper-2.1.8 → devsper-2.3.0}/devsper/providers/base.py +9 -3
  97. {devsper-2.1.8 → devsper-2.3.0}/devsper/providers/router/factory.py +5 -0
  98. {devsper-2.1.8 → devsper-2.3.0}/devsper/runtime/clarification_manager.py +16 -0
  99. devsper-2.3.0/devsper/runtime/trace_tree.py +78 -0
  100. devsper-2.3.0/devsper/server/__init__.py +3 -0
  101. devsper-2.3.0/devsper/server/events.py +84 -0
  102. devsper-2.3.0/devsper/server/swarmworker.py +193 -0
  103. devsper-2.3.0/devsper/server/topology.py +93 -0
  104. devsper-2.3.0/devsper/storage/__init__.py +1 -0
  105. devsper-2.3.0/devsper/storage/uploads/__init__.py +4 -0
  106. devsper-2.3.0/devsper/storage/uploads/store.py +42 -0
  107. devsper-2.3.0/devsper/swarm/executor.py +708 -0
  108. {devsper-2.1.8 → devsper-2.3.0}/devsper/swarm/planner.py +99 -55
  109. devsper-2.3.0/devsper/swarm/swarm.py +649 -0
  110. devsper-2.3.0/devsper/telemetry/__init__.py +26 -0
  111. devsper-2.3.0/devsper/telemetry/otel.py +172 -0
  112. devsper-2.3.0/devsper/telemetry/pricing.py +27 -0
  113. devsper-2.3.0/devsper/tools/__init__.py +40 -0
  114. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/coding/run_python.py +2 -1
  115. devsper-2.3.0/devsper/tools/default/__init__.py +15 -0
  116. devsper-2.3.0/devsper/tools/default/fetch_url.py +46 -0
  117. devsper-2.3.0/devsper/tools/default/python_exec.py +37 -0
  118. devsper-2.3.0/devsper/tools/default/read_csv.py +80 -0
  119. devsper-2.3.0/devsper/tools/default/upload_file.py +36 -0
  120. devsper-2.3.0/devsper/tools/default/web_search.py +87 -0
  121. devsper-2.3.0/devsper/tools/hitl_request.py +53 -0
  122. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/memory/search_memory.py +8 -1
  123. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/memory/store_memory.py +6 -1
  124. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/registry.py +12 -18
  125. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/selector.py +11 -2
  126. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/system/run_shell_command.py +26 -8
  127. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/tool_runner.py +52 -30
  128. {devsper-2.1.8 → devsper-2.3.0}/devsper/tui/app.py +44 -1
  129. {devsper-2.1.8 → devsper-2.3.0}/devsper/tui/dashboard_screen.py +19 -0
  130. devsper-2.3.0/devsper/tui/mission_view.py +44 -0
  131. {devsper-2.1.8 → devsper-2.3.0}/devsper/types/event.py +25 -0
  132. {devsper-2.1.8 → devsper-2.3.0}/devsper/types/task.py +20 -0
  133. {devsper-2.1.8 → devsper-2.3.0}/devsper/utils/event_logger.py +54 -2
  134. {devsper-2.1.8 → devsper-2.3.0}/devsper/workflow/loader.py +45 -0
  135. {devsper-2.1.8 → devsper-2.3.0}/devsper.toml +11 -0
  136. {devsper-2.1.8 → devsper-2.3.0}/examples/distributed/README.md +1 -0
  137. {devsper-2.1.8 → devsper-2.3.0}/pyproject.toml +7 -2
  138. devsper-2.3.0/supermemory-core/Cargo.toml +12 -0
  139. devsper-2.3.0/supermemory-core/src/main.rs +371 -0
  140. devsper-2.3.0/tests/integration/test_controller_restart_hitl.py +37 -0
  141. devsper-2.3.0/tests/integration/test_duplicate_event_delivery.py +45 -0
  142. devsper-2.3.0/tests/integration/test_event_idempotency.py +34 -0
  143. devsper-2.3.0/tests/integration/test_event_retry.py +54 -0
  144. devsper-2.3.0/tests/integration/test_hitl_pause_resume.py +75 -0
  145. devsper-2.3.0/tests/integration/test_sse_reconnect.py +16 -0
  146. devsper-2.3.0/tests/integration/test_sse_stream.py +54 -0
  147. devsper-2.3.0/tests/integration/test_worker_crash_recovery.py +25 -0
  148. devsper-2.3.0/tests/memory/test_memory_context_run_scope.py +16 -0
  149. devsper-2.3.0/tests/memory/test_memory_index.py +291 -0
  150. devsper-2.3.0/tests/pool/__init__.py +1 -0
  151. devsper-2.3.0/tests/pool/fixtures.py +31 -0
  152. devsper-2.3.0/tests/pool/test_crypto.py +26 -0
  153. devsper-2.3.0/tests/pool/test_e2e_redis_loop.py +100 -0
  154. devsper-2.3.0/tests/pool/test_heartbeat_eviction.py +37 -0
  155. devsper-2.3.0/tests/pool/test_local_pool.py +30 -0
  156. devsper-2.3.0/tests/pool/test_org_pool.py +29 -0
  157. devsper-2.3.0/tests/pool/test_priority_chain.py +36 -0
  158. devsper-2.3.0/tests/pool/test_rate_limiting.py +20 -0
  159. devsper-2.3.0/tests/runtime/test_budget.py +15 -0
  160. devsper-2.3.0/tests/runtime/test_otel_phase1.py +40 -0
  161. devsper-2.3.0/tests/runtime/test_packager.py +9 -0
  162. devsper-2.3.0/tests/runtime/test_protocol_schema.py +13 -0
  163. {devsper-2.1.8 → devsper-2.3.0}/tests/test_clarification.py +86 -6
  164. {devsper-2.1.8 → devsper-2.3.0}/tests/test_init.py +14 -0
  165. devsper-2.3.0/tests/test_missions.py +20 -0
  166. devsper-2.3.0/tests/test_platform_runtime_events.py +37 -0
  167. devsper-2.3.0/tests/tools/test_core_tool_registry.py +25 -0
  168. {devsper-2.1.8 → devsper-2.3.0}/uv.lock +189 -5
  169. {devsper-2.1.8 → devsper-2.3.0}/worker/Cargo.toml +3 -0
  170. devsper-2.3.0/worker/src/budget.rs +9 -0
  171. {devsper-2.1.8 → devsper-2.3.0}/worker/src/lib.rs +2 -0
  172. {devsper-2.1.8 → devsper-2.3.0}/worker/src/main.rs +4 -0
  173. {devsper-2.1.8 → devsper-2.3.0}/worker/src/rpc.rs +30 -1
  174. devsper-2.3.0/worker/src/telemetry.rs +6 -0
  175. {devsper-2.1.8 → devsper-2.3.0}/worker/src/types/agent.rs +8 -0
  176. {devsper-2.1.8 → devsper-2.3.0}/worker/src/worker_node.rs +1 -0
  177. devsper-2.1.8/.github/workflows/publish-plugin.yml +0 -35
  178. devsper-2.1.8/Cargo.toml +0 -3
  179. devsper-2.1.8/devsper/__init__.py +0 -22
  180. devsper-2.1.8/devsper/cli/commands/reg.py +0 -733
  181. devsper-2.1.8/devsper/memory/memory_router.py +0 -67
  182. devsper-2.1.8/devsper/plugins/registry.py +0 -83
  183. devsper-2.1.8/devsper/swarm/executor.py +0 -621
  184. devsper-2.1.8/devsper/swarm/swarm.py +0 -575
  185. devsper-2.1.8/devsper/tools/__init__.py +0 -33
  186. devsper-2.1.8/tests/memory/test_memory_index.py +0 -68
  187. devsper-2.1.8/tests/test_reg.py +0 -809
  188. {devsper-2.1.8 → devsper-2.3.0}/.env.example +0 -0
  189. {devsper-2.1.8 → devsper-2.3.0}/.github/FUNDING.yml +0 -0
  190. {devsper-2.1.8 → devsper-2.3.0}/.github/workflows/pypi-publish.yml +0 -0
  191. {devsper-2.1.8 → devsper-2.3.0}/.github/workflows/release-on-tag.yml +0 -0
  192. {devsper-2.1.8 → devsper-2.3.0}/.github/workflows/worker-release.yml +0 -0
  193. {devsper-2.1.8 → devsper-2.3.0}/.gitignore +0 -0
  194. {devsper-2.1.8 → devsper-2.3.0}/.python-version +0 -0
  195. {devsper-2.1.8 → devsper-2.3.0}/CODE_OF_CONDUCT.md +0 -0
  196. {devsper-2.1.8 → devsper-2.3.0}/CONTRIBUTING.md +0 -0
  197. {devsper-2.1.8 → devsper-2.3.0}/LICENSE +0 -0
  198. {devsper-2.1.8 → devsper-2.3.0}/SECURITY.md +0 -0
  199. {devsper-2.1.8 → devsper-2.3.0}/benchmarks/__init__.py +0 -0
  200. {devsper-2.1.8 → devsper-2.3.0}/benchmarks/bench_dataset_analysis.py +0 -0
  201. {devsper-2.1.8 → devsper-2.3.0}/benchmarks/bench_repository_analysis.py +0 -0
  202. {devsper-2.1.8 → devsper-2.3.0}/benchmarks/bench_research_pipeline.py +0 -0
  203. {devsper-2.1.8 → devsper-2.3.0}/branding/logo.svg +0 -0
  204. {devsper-2.1.8 → devsper-2.3.0}/devsper/agents/a2a/__init__.py +0 -0
  205. {devsper-2.1.8 → devsper-2.3.0}/devsper/agents/a2a/client.py +0 -0
  206. {devsper-2.1.8 → devsper-2.3.0}/devsper/agents/a2a/discovery.py +0 -0
  207. {devsper-2.1.8 → devsper-2.3.0}/devsper/agents/a2a/server.py +0 -0
  208. {devsper-2.1.8 → devsper-2.3.0}/devsper/agents/a2a/tool_adapter.py +0 -0
  209. {devsper-2.1.8 → devsper-2.3.0}/devsper/agents/a2a/types.py +0 -0
  210. {devsper-2.1.8 → devsper-2.3.0}/devsper/agents/critic.py +0 -0
  211. {devsper-2.1.8 → devsper-2.3.0}/devsper/agents/message_bus.py +0 -0
  212. {devsper-2.1.8 → devsper-2.3.0}/devsper/agents/roles.py +0 -0
  213. {devsper-2.1.8 → devsper-2.3.0}/devsper/agents/run_agent.py +0 -0
  214. {devsper-2.1.8 → devsper-2.3.0}/devsper/analytics/__init__.py +0 -0
  215. {devsper-2.1.8 → devsper-2.3.0}/devsper/analytics/tool_analytics.py +0 -0
  216. {devsper-2.1.8 → devsper-2.3.0}/devsper/audit/__init__.py +0 -0
  217. {devsper-2.1.8 → devsper-2.3.0}/devsper/audit/logger.py +0 -0
  218. {devsper-2.1.8 → devsper-2.3.0}/devsper/bus/__init__.py +0 -0
  219. {devsper-2.1.8 → devsper-2.3.0}/devsper/bus/backends/__init__.py +0 -0
  220. {devsper-2.1.8 → devsper-2.3.0}/devsper/bus/backends/base.py +0 -0
  221. {devsper-2.1.8 → devsper-2.3.0}/devsper/bus/backends/memory.py +0 -0
  222. {devsper-2.1.8 → devsper-2.3.0}/devsper/bus/backends/redis.py +0 -0
  223. {devsper-2.1.8 → devsper-2.3.0}/devsper/bus/message.py +0 -0
  224. {devsper-2.1.8 → devsper-2.3.0}/devsper/bus/schema_version.py +0 -0
  225. {devsper-2.1.8 → devsper-2.3.0}/devsper/bus/topics.py +0 -0
  226. {devsper-2.1.8 → devsper-2.3.0}/devsper/cache/__init__.py +0 -0
  227. {devsper-2.1.8 → devsper-2.3.0}/devsper/cache/embedding_index.py +0 -0
  228. {devsper-2.1.8 → devsper-2.3.0}/devsper/cache/hashing.py +0 -0
  229. {devsper-2.1.8 → devsper-2.3.0}/devsper/cache/store.py +0 -0
  230. {devsper-2.1.8 → devsper-2.3.0}/devsper/cache/task_cache.py +0 -0
  231. {devsper-2.1.8 → devsper-2.3.0}/devsper/cli/__init__.py +0 -0
  232. {devsper-2.1.8 → devsper-2.3.0}/devsper/cli/github_oauth.py +0 -0
  233. {devsper-2.1.8 → devsper-2.3.0}/devsper/cli/run_progress.py +0 -0
  234. {devsper-2.1.8 → devsper-2.3.0}/devsper/cli/ui/__init__.py +0 -0
  235. {devsper-2.1.8 → devsper-2.3.0}/devsper/cli/ui/controller_run_view.py +0 -0
  236. {devsper-2.1.8 → devsper-2.3.0}/devsper/cli/ui/errors.py +0 -0
  237. {devsper-2.1.8 → devsper-2.3.0}/devsper/cli/ui/logging.py +0 -0
  238. {devsper-2.1.8 → devsper-2.3.0}/devsper/cli/ui/progress.py +0 -0
  239. {devsper-2.1.8 → devsper-2.3.0}/devsper/cli/ui/theme.py +0 -0
  240. {devsper-2.1.8 → devsper-2.3.0}/devsper/cluster/__init__.py +0 -0
  241. {devsper-2.1.8 → devsper-2.3.0}/devsper/cluster/election.py +0 -0
  242. {devsper-2.1.8 → devsper-2.3.0}/devsper/cluster/local.py +0 -0
  243. {devsper-2.1.8 → devsper-2.3.0}/devsper/cluster/node_info.py +0 -0
  244. {devsper-2.1.8 → devsper-2.3.0}/devsper/cluster/registry.py +0 -0
  245. {devsper-2.1.8 → devsper-2.3.0}/devsper/cluster/router.py +0 -0
  246. {devsper-2.1.8 → devsper-2.3.0}/devsper/cluster/state_backend.py +0 -0
  247. {devsper-2.1.8 → devsper-2.3.0}/devsper/compliance/__init__.py +0 -0
  248. {devsper-2.1.8 → devsper-2.3.0}/devsper/compliance/pii.py +0 -0
  249. {devsper-2.1.8 → devsper-2.3.0}/devsper/config/config_loader.py +0 -0
  250. {devsper-2.1.8 → devsper-2.3.0}/devsper/credentials/__init__.py +0 -0
  251. {devsper-2.1.8 → devsper-2.3.0}/devsper/credentials/cli.py +0 -0
  252. {devsper-2.1.8 → devsper-2.3.0}/devsper/credentials/migration.py +0 -0
  253. {devsper-2.1.8 → devsper-2.3.0}/devsper/credentials/store.py +0 -0
  254. {devsper-2.1.8 → devsper-2.3.0}/devsper/dashboard/__init__.py +0 -0
  255. {devsper-2.1.8 → devsper-2.3.0}/devsper/dashboard/dashboard.py +0 -0
  256. {devsper-2.1.8 → devsper-2.3.0}/devsper/dev/__init__.py +0 -0
  257. {devsper-2.1.8 → devsper-2.3.0}/devsper/dev/builder.py +0 -0
  258. {devsper-2.1.8 → devsper-2.3.0}/devsper/dev/debugger.py +0 -0
  259. {devsper-2.1.8 → devsper-2.3.0}/devsper/dev/repo_index.py +0 -0
  260. {devsper-2.1.8 → devsper-2.3.0}/devsper/dev/sandbox.py +0 -0
  261. {devsper-2.1.8 → devsper-2.3.0}/devsper/dev/scaffold.py +0 -0
  262. {devsper-2.1.8 → devsper-2.3.0}/devsper/docs/architecture/execution-model.md +0 -0
  263. {devsper-2.1.8 → devsper-2.3.0}/devsper/embeddings/__init__.py +0 -0
  264. {devsper-2.1.8 → devsper-2.3.0}/devsper/embeddings/service.py +0 -0
  265. {devsper-2.1.8 → devsper-2.3.0}/devsper/events.py +0 -0
  266. {devsper-2.1.8 → devsper-2.3.0}/devsper/explainability/__init__.py +0 -0
  267. {devsper-2.1.8 → devsper-2.3.0}/devsper/explainability/decision_tree.py +0 -0
  268. {devsper-2.1.8 → devsper-2.3.0}/devsper/explainability/rationale.py +0 -0
  269. {devsper-2.1.8 → devsper-2.3.0}/devsper/explainability/simulation.py +0 -0
  270. {devsper-2.1.8 → devsper-2.3.0}/devsper/export/__init__.py +0 -0
  271. {devsper-2.1.8 → devsper-2.3.0}/devsper/export/branding.py +0 -0
  272. {devsper-2.1.8 → devsper-2.3.0}/devsper/export/collector.py +0 -0
  273. {devsper-2.1.8 → devsper-2.3.0}/devsper/export/model.py +0 -0
  274. {devsper-2.1.8 → devsper-2.3.0}/devsper/export/pdf.py +0 -0
  275. {devsper-2.1.8 → devsper-2.3.0}/devsper/export/writers.py +0 -0
  276. {devsper-2.1.8 → devsper-2.3.0}/devsper/hitl/__init__.py +0 -0
  277. {devsper-2.1.8 → devsper-2.3.0}/devsper/hitl/approval.py +0 -0
  278. {devsper-2.1.8 → devsper-2.3.0}/devsper/hitl/escalation.py +0 -0
  279. {devsper-2.1.8 → devsper-2.3.0}/devsper/intelligence/__init__.py +0 -0
  280. {devsper-2.1.8 → devsper-2.3.0}/devsper/intelligence/adaptation.py +0 -0
  281. {devsper-2.1.8 → devsper-2.3.0}/devsper/intelligence/analysis/__init__.py +0 -0
  282. {devsper-2.1.8 → devsper-2.3.0}/devsper/intelligence/analysis/analyzer.py +0 -0
  283. {devsper-2.1.8 → devsper-2.3.0}/devsper/intelligence/analysis/cost_estimator.py +0 -0
  284. {devsper-2.1.8 → devsper-2.3.0}/devsper/intelligence/analysis/formatter.py +0 -0
  285. {devsper-2.1.8 → devsper-2.3.0}/devsper/intelligence/analysis/run_report.py +0 -0
  286. {devsper-2.1.8 → devsper-2.3.0}/devsper/intelligence/learning_engine.py +0 -0
  287. {devsper-2.1.8 → devsper-2.3.0}/devsper/intelligence/strategies/__init__.py +0 -0
  288. {devsper-2.1.8 → devsper-2.3.0}/devsper/intelligence/strategies/base.py +0 -0
  289. {devsper-2.1.8 → devsper-2.3.0}/devsper/intelligence/strategies/code_analysis_strategy.py +0 -0
  290. {devsper-2.1.8 → devsper-2.3.0}/devsper/intelligence/strategies/data_science_strategy.py +0 -0
  291. {devsper-2.1.8 → devsper-2.3.0}/devsper/intelligence/strategies/document_pipeline_strategy.py +0 -0
  292. {devsper-2.1.8 → devsper-2.3.0}/devsper/intelligence/strategies/experiment_strategy.py +0 -0
  293. {devsper-2.1.8 → devsper-2.3.0}/devsper/intelligence/strategies/research_strategy.py +0 -0
  294. {devsper-2.1.8 → devsper-2.3.0}/devsper/intelligence/strategy_selector.py +0 -0
  295. {devsper-2.1.8 → devsper-2.3.0}/devsper/intelligence/synthesis.py +0 -0
  296. {devsper-2.1.8 → devsper-2.3.0}/devsper/intelligence/task_optimizer.py +0 -0
  297. {devsper-2.1.8 → devsper-2.3.0}/devsper/knowledge/__init__.py +0 -0
  298. {devsper-2.1.8 → devsper-2.3.0}/devsper/knowledge/extractor.py +0 -0
  299. {devsper-2.1.8 → devsper-2.3.0}/devsper/knowledge/knowledge_graph.py +0 -0
  300. {devsper-2.1.8 → devsper-2.3.0}/devsper/knowledge/query.py +0 -0
  301. {devsper-2.1.8 → devsper-2.3.0}/devsper/memory/consolidation.py +0 -0
  302. {devsper-2.1.8 → devsper-2.3.0}/devsper/memory/embeddings.py +0 -0
  303. {devsper-2.1.8 → devsper-2.3.0}/devsper/memory/memory_types.py +0 -0
  304. {devsper-2.1.8 → devsper-2.3.0}/devsper/memory/namespaces.py +0 -0
  305. {devsper-2.1.8 → devsper-2.3.0}/devsper/memory/redis_memory.py +0 -0
  306. {devsper-2.1.8 → devsper-2.3.0}/devsper/memory/scoring.py +0 -0
  307. {devsper-2.1.8 → devsper-2.3.0}/devsper/memory/store.py +0 -0
  308. {devsper-2.1.8 → devsper-2.3.0}/devsper/memory/summarizer.py +0 -0
  309. {devsper-2.1.8 → devsper-2.3.0}/devsper/nodes/__init__.py +0 -0
  310. {devsper-2.1.8 → devsper-2.3.0}/devsper/nodes/rpc.py +0 -0
  311. {devsper-2.1.8 → devsper-2.3.0}/devsper/nodes/single.py +0 -0
  312. {devsper-2.1.8 → devsper-2.3.0}/devsper/orchestration/__init__.py +0 -0
  313. {devsper-2.1.8 → devsper-2.3.0}/devsper/orchestration/meta_planner.py +0 -0
  314. {devsper-2.1.8 → devsper-2.3.0}/devsper/orchestration/priority_queue.py +0 -0
  315. {devsper-2.1.8 → devsper-2.3.0}/devsper/plugins/__init__.py +0 -0
  316. {devsper-2.1.8 → devsper-2.3.0}/devsper/plugins/marketplace/__init__.py +0 -0
  317. {devsper-2.1.8 → devsper-2.3.0}/devsper/plugins/plugin_loader.py +0 -0
  318. {devsper-2.1.8 → devsper-2.3.0}/devsper/plugins/plugin_registry.py +0 -0
  319. {devsper-2.1.8 → devsper-2.3.0}/devsper/protocols/__init__.py +0 -0
  320. {devsper-2.1.8 → devsper-2.3.0}/devsper/providers/__init__.py +0 -0
  321. {devsper-2.1.8 → devsper-2.3.0}/devsper/providers/anthropic.py +0 -0
  322. {devsper-2.1.8 → devsper-2.3.0}/devsper/providers/complexity_router.py +0 -0
  323. {devsper-2.1.8 → devsper-2.3.0}/devsper/providers/gemini.py +0 -0
  324. {devsper-2.1.8 → devsper-2.3.0}/devsper/providers/github.py +0 -0
  325. {devsper-2.1.8 → devsper-2.3.0}/devsper/providers/model_router.py +0 -0
  326. {devsper-2.1.8 → devsper-2.3.0}/devsper/providers/openai.py +0 -0
  327. {devsper-2.1.8 → devsper-2.3.0}/devsper/providers/router/__init__.py +0 -0
  328. {devsper-2.1.8 → devsper-2.3.0}/devsper/providers/router/backends/__init__.py +0 -0
  329. {devsper-2.1.8 → devsper-2.3.0}/devsper/providers/router/backends/anthropic_backend.py +0 -0
  330. {devsper-2.1.8 → devsper-2.3.0}/devsper/providers/router/backends/custom_backend.py +0 -0
  331. {devsper-2.1.8 → devsper-2.3.0}/devsper/providers/router/backends/gemini_backend.py +0 -0
  332. {devsper-2.1.8 → devsper-2.3.0}/devsper/providers/router/backends/github_backend.py +0 -0
  333. {devsper-2.1.8 → devsper-2.3.0}/devsper/providers/router/backends/ollama_backend.py +0 -0
  334. {devsper-2.1.8 → devsper-2.3.0}/devsper/providers/router/backends/openai_backend.py +0 -0
  335. {devsper-2.1.8 → devsper-2.3.0}/devsper/providers/router/backends/vllm_backend.py +0 -0
  336. {devsper-2.1.8 → devsper-2.3.0}/devsper/providers/router/base.py +0 -0
  337. {devsper-2.1.8 → devsper-2.3.0}/devsper/providers/router/legacy.py +0 -0
  338. {devsper-2.1.8 → devsper-2.3.0}/devsper/providers/router/router.py +0 -0
  339. {devsper-2.1.8 → devsper-2.3.0}/devsper/reasoning/__init__.py +0 -0
  340. {devsper-2.1.8 → devsper-2.3.0}/devsper/reasoning/graph.py +0 -0
  341. {devsper-2.1.8 → devsper-2.3.0}/devsper/reasoning/nodes.py +0 -0
  342. {devsper-2.1.8 → devsper-2.3.0}/devsper/reasoning/store.py +0 -0
  343. {devsper-2.1.8 → devsper-2.3.0}/devsper/runtime/__init__.py +0 -0
  344. {devsper-2.1.8 → devsper-2.3.0}/devsper/runtime/executor.py +0 -0
  345. {devsper-2.1.8 → devsper-2.3.0}/devsper/runtime/health.py +0 -0
  346. {devsper-2.1.8 → devsper-2.3.0}/devsper/runtime/replay.py +0 -0
  347. {devsper-2.1.8 → devsper-2.3.0}/devsper/runtime/replay_engine.py +0 -0
  348. {devsper-2.1.8 → devsper-2.3.0}/devsper/runtime/run_history.py +0 -0
  349. {devsper-2.1.8 → devsper-2.3.0}/devsper/runtime/task_state.py +0 -0
  350. {devsper-2.1.8 → devsper-2.3.0}/devsper/runtime/telemetry.py +0 -0
  351. {devsper-2.1.8 → devsper-2.3.0}/devsper/runtime/visualize.py +0 -0
  352. {devsper-2.1.8 → devsper-2.3.0}/devsper/sandbox/__init__.py +0 -0
  353. {devsper-2.1.8 → devsper-2.3.0}/devsper/sandbox/sandbox.py +0 -0
  354. {devsper-2.1.8 → devsper-2.3.0}/devsper/swarm/checkpointer.py +0 -0
  355. {devsper-2.1.8 → devsper-2.3.0}/devsper/swarm/map_reduce.py +0 -0
  356. {devsper-2.1.8 → devsper-2.3.0}/devsper/swarm/prefetcher.py +0 -0
  357. {devsper-2.1.8 → devsper-2.3.0}/devsper/swarm/scheduler.py +0 -0
  358. {devsper-2.1.8 → devsper-2.3.0}/devsper/swarm/speculation.py +0 -0
  359. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/base.py +0 -0
  360. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/code_intelligence/__init__.py +0 -0
  361. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/code_intelligence/api_surface_extractor.py +0 -0
  362. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/code_intelligence/architecture_analyzer.py +0 -0
  363. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/code_intelligence/codebase_indexer.py +0 -0
  364. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/code_intelligence/dependency_graph_builder.py +0 -0
  365. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/code_intelligence/design_pattern_detector.py +0 -0
  366. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/code_intelligence/large_function_detector.py +0 -0
  367. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/code_intelligence/module_responsibility_mapper.py +0 -0
  368. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/code_intelligence/parallel_codebase_analysis.py +0 -0
  369. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/code_intelligence/refactor_candidate_detector.py +0 -0
  370. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/code_intelligence/repository_semantic_index.py +0 -0
  371. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/code_intelligence/test_coverage_estimator.py +0 -0
  372. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/coding/__init__.py +0 -0
  373. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/coding/analyze_code_complexity.py +0 -0
  374. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/coding/dependency_analyzer.py +0 -0
  375. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/coding/extract_functions.py +0 -0
  376. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/coding/format_python.py +0 -0
  377. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/coding/generate_docstrings.py +0 -0
  378. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/coding/generate_unit_tests.py +0 -0
  379. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/coding/lint_python.py +0 -0
  380. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/coding/refactor_function.py +0 -0
  381. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/coding/repo_structure_map.py +0 -0
  382. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/data/__init__.py +0 -0
  383. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/data/column_type_detection.py +0 -0
  384. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/data/csv_summary.py +0 -0
  385. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/data/dataframe_filter.py +0 -0
  386. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/data/dataframe_groupby.py +0 -0
  387. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/data/dataframe_stats.py +0 -0
  388. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/data/dataset_sampling.py +0 -0
  389. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/data/dataset_schema.py +0 -0
  390. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/data/json_pretty_print.py +0 -0
  391. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/data/json_query.py +0 -0
  392. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/data/missing_value_report.py +0 -0
  393. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/data_science/__init__.py +0 -0
  394. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/data_science/correlation_heatmap.py +0 -0
  395. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/data_science/dataset_bias_detector.py +0 -0
  396. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/data_science/dataset_distribution_report.py +0 -0
  397. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/data_science/dataset_drift_detector.py +0 -0
  398. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/data_science/dataset_outlier_detector.py +0 -0
  399. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/data_science/dataset_profile.py +0 -0
  400. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/data_science/distributed_dataset_processor.py +0 -0
  401. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/data_science/feature_engineering_suggestions.py +0 -0
  402. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/data_science/feature_importance_estimator.py +0 -0
  403. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/data_science/model_input_validator.py +0 -0
  404. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/data_science/time_series_analyzer.py +0 -0
  405. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/documents/__init__.py +0 -0
  406. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/documents/_docproc.py +0 -0
  407. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/documents/document_to_markdown.py +0 -0
  408. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/documents/extract_document_images.py +0 -0
  409. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/documents/extract_document_text.py +0 -0
  410. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/documents/extract_equations.py +0 -0
  411. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/documents/extract_tables.py +0 -0
  412. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/documents/summarize_document.py +0 -0
  413. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/documents/write_latex_document.py +0 -0
  414. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/documents/write_markdown_document.py +0 -0
  415. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/documents/write_word_document.py +0 -0
  416. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/experiments/__init__.py +0 -0
  417. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/experiments/bootstrap_estimator.py +0 -0
  418. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/experiments/experiment_report_generator.py +0 -0
  419. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/experiments/experiment_tracker.py +0 -0
  420. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/experiments/grid_search_runner.py +0 -0
  421. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/experiments/model_benchmark_runner.py +0 -0
  422. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/experiments/monte_carlo_experiment.py +0 -0
  423. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/experiments/parameter_sweep_runner.py +0 -0
  424. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/experiments/result_comparator.py +0 -0
  425. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/experiments/simulation_runner.py +0 -0
  426. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/experiments/statistical_significance_test.py +0 -0
  427. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/experiments/swarm_map_reduce.py +0 -0
  428. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/filesystem/__init__.py +0 -0
  429. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/filesystem/append_file.py +0 -0
  430. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/filesystem/file_hash.py +0 -0
  431. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/filesystem/file_line_count.py +0 -0
  432. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/filesystem/file_metadata.py +0 -0
  433. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/filesystem/file_preview.py +0 -0
  434. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/filesystem/find_large_files.py +0 -0
  435. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/filesystem/list_directory.py +0 -0
  436. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/filesystem/read_file.py +0 -0
  437. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/filesystem/search_files.py +0 -0
  438. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/filesystem/write_file.py +0 -0
  439. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/flagship/__init__.py +0 -0
  440. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/flagship/distributed_document_analysis.py +0 -0
  441. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/flagship/docproc_corpus_pipeline.py +0 -0
  442. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/flagship/repository_semantic_map.py +0 -0
  443. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/flagship/research_graph_builder.py +0 -0
  444. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/flagship/swarm_experiment_runner.py +0 -0
  445. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/knowledge/__init__.py +0 -0
  446. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/knowledge/citation_graph_builder.py +0 -0
  447. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/knowledge/concept_frequency_analyzer.py +0 -0
  448. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/knowledge/corpus_builder.py +0 -0
  449. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/knowledge/cross_document_entity_linker.py +0 -0
  450. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/knowledge/document_corpus_summary.py +0 -0
  451. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/knowledge/document_topic_extractor.py +0 -0
  452. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/knowledge/knowledge_graph_extractor.py +0 -0
  453. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/knowledge/timeline_extractor.py +0 -0
  454. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/math/__init__.py +0 -0
  455. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/math/calculate_expression.py +0 -0
  456. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/math/correlation.py +0 -0
  457. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/math/distribution_summary.py +0 -0
  458. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/math/histogram.py +0 -0
  459. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/math/linear_regression.py +0 -0
  460. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/math/matrix_multiply.py +0 -0
  461. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/math/mean_std.py +0 -0
  462. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/math/monte_carlo_simulation.py +0 -0
  463. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/math/polynomial_fit.py +0 -0
  464. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/math/random_sample.py +0 -0
  465. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/mcp/__init__.py +0 -0
  466. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/mcp/adapter.py +0 -0
  467. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/mcp/client.py +0 -0
  468. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/mcp/discovery.py +0 -0
  469. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/memory/__init__.py +0 -0
  470. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/memory/delete_memory.py +0 -0
  471. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/memory/list_memory.py +0 -0
  472. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/memory/summarize_memory.py +0 -0
  473. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/memory/tag_memory.py +0 -0
  474. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/pipelines.py +0 -0
  475. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/research/__init__.py +0 -0
  476. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/research/arxiv_download.py +0 -0
  477. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/research/arxiv_search.py +0 -0
  478. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/research/citation_extractor.py +0 -0
  479. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/research/duckduckgo_search.py +0 -0
  480. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/research/paper_metadata_extractor.py +0 -0
  481. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/research/paper_summarizer.py +0 -0
  482. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/research/research_question_generator.py +0 -0
  483. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/research/topic_cluster.py +0 -0
  484. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/research/web_search.py +0 -0
  485. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/research/wikipedia_lookup.py +0 -0
  486. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/research_advanced/__init__.py +0 -0
  487. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/research_advanced/citation_context_extractor.py +0 -0
  488. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/research_advanced/literature_review_generator.py +0 -0
  489. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/research_advanced/methodology_extractor.py +0 -0
  490. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/research_advanced/paper_contribution_extractor.py +0 -0
  491. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/research_advanced/paper_dataset_identifier.py +0 -0
  492. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/research_advanced/paper_method_comparator.py +0 -0
  493. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/research_advanced/paper_similarity_search.py +0 -0
  494. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/research_advanced/paper_trend_analyzer.py +0 -0
  495. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/research_advanced/parallel_document_analyzer.py +0 -0
  496. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/research_advanced/research_gap_finder.py +0 -0
  497. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/research_advanced/research_topic_mapper.py +0 -0
  498. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/research_advanced/swarm_literature_review.py +0 -0
  499. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/scoring/__init__.py +0 -0
  500. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/scoring/report.py +0 -0
  501. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/scoring/scorer.py +0 -0
  502. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/scoring/selector.py +0 -0
  503. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/scoring/store.py +0 -0
  504. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/system/__init__.py +0 -0
  505. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/system/cpu_usage.py +0 -0
  506. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/system/disk_usage.py +0 -0
  507. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/system/environment_variables.py +0 -0
  508. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/system/memory_usage.py +0 -0
  509. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/system/pip_install.py +0 -0
  510. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/system/pip_search.py +0 -0
  511. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/system/process_list.py +0 -0
  512. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/system/python_package_list.py +0 -0
  513. {devsper-2.1.8 → devsper-2.3.0}/devsper/tools/system/system_info.py +0 -0
  514. {devsper-2.1.8 → devsper-2.3.0}/devsper/tui/__init__.py +0 -0
  515. {devsper-2.1.8 → devsper-2.3.0}/devsper/tui/activity_feed_view.py +0 -0
  516. {devsper-2.1.8 → devsper-2.3.0}/devsper/tui/adaptive_tasks_view.py +0 -0
  517. {devsper-2.1.8 → devsper-2.3.0}/devsper/tui/agent_role_view.py +0 -0
  518. {devsper-2.1.8 → devsper-2.3.0}/devsper/tui/dev_view.py +0 -0
  519. {devsper-2.1.8 → devsper-2.3.0}/devsper/tui/inject_screen.py +0 -0
  520. {devsper-2.1.8 → devsper-2.3.0}/devsper/tui/knowledge_graph_view.py +0 -0
  521. {devsper-2.1.8 → devsper-2.3.0}/devsper/tui/layout.py +0 -0
  522. {devsper-2.1.8 → devsper-2.3.0}/devsper/tui/logs_view.py +0 -0
  523. {devsper-2.1.8 → devsper-2.3.0}/devsper/tui/memory_view.py +0 -0
  524. {devsper-2.1.8 → devsper-2.3.0}/devsper/tui/performance_view.py +0 -0
  525. {devsper-2.1.8 → devsper-2.3.0}/devsper/tui/reasoning_graph_view.py +0 -0
  526. {devsper-2.1.8 → devsper-2.3.0}/devsper/tui/results_view.py +0 -0
  527. {devsper-2.1.8 → devsper-2.3.0}/devsper/tui/swarm_view.py +0 -0
  528. {devsper-2.1.8 → devsper-2.3.0}/devsper/tui/task_detail_screen.py +0 -0
  529. {devsper-2.1.8 → devsper-2.3.0}/devsper/tui/task_view.py +0 -0
  530. {devsper-2.1.8 → devsper-2.3.0}/devsper/types/exceptions.py +0 -0
  531. {devsper-2.1.8 → devsper-2.3.0}/devsper/types/swarm.py +0 -0
  532. {devsper-2.1.8 → devsper-2.3.0}/devsper/upgrade/__init__.py +0 -0
  533. {devsper-2.1.8 → devsper-2.3.0}/devsper/upgrade/changelog.py +0 -0
  534. {devsper-2.1.8 → devsper-2.3.0}/devsper/upgrade/cli.py +0 -0
  535. {devsper-2.1.8 → devsper-2.3.0}/devsper/upgrade/installer.py +0 -0
  536. {devsper-2.1.8 → devsper-2.3.0}/devsper/upgrade/notifier.py +0 -0
  537. {devsper-2.1.8 → devsper-2.3.0}/devsper/upgrade/version_check.py +0 -0
  538. {devsper-2.1.8 → devsper-2.3.0}/devsper/utils/http.py +0 -0
  539. {devsper-2.1.8 → devsper-2.3.0}/devsper/utils/models.py +0 -0
  540. {devsper-2.1.8 → devsper-2.3.0}/devsper/visualization/__init__.py +0 -0
  541. {devsper-2.1.8 → devsper-2.3.0}/devsper/visualization/dag_export.py +0 -0
  542. {devsper-2.1.8 → devsper-2.3.0}/devsper/workflow/__init__.py +0 -0
  543. {devsper-2.1.8 → devsper-2.3.0}/devsper/workflow/conditions.py +0 -0
  544. {devsper-2.1.8 → devsper-2.3.0}/devsper/workflow/context.py +0 -0
  545. {devsper-2.1.8 → devsper-2.3.0}/devsper/workflow/resolver.py +0 -0
  546. {devsper-2.1.8 → devsper-2.3.0}/devsper/workflow/runner.py +0 -0
  547. {devsper-2.1.8 → devsper-2.3.0}/devsper/workflow/schema.py +0 -0
  548. {devsper-2.1.8 → devsper-2.3.0}/devsper/workflow/validator.py +0 -0
  549. {devsper-2.1.8 → devsper-2.3.0}/docker-compose.yml +0 -0
  550. {devsper-2.1.8 → devsper-2.3.0}/examples/__init__.py +0 -0
  551. {devsper-2.1.8 → devsper-2.3.0}/examples/_common.py +0 -0
  552. {devsper-2.1.8 → devsper-2.3.0}/examples/_config.py +0 -0
  553. {devsper-2.1.8 → devsper-2.3.0}/examples/coding/__init__.py +0 -0
  554. {devsper-2.1.8 → devsper-2.3.0}/examples/coding/analyze_repository.py +0 -0
  555. {devsper-2.1.8 → devsper-2.3.0}/examples/coding/generate_docs.py +0 -0
  556. {devsper-2.1.8 → devsper-2.3.0}/examples/coding/refactor_candidates.py +0 -0
  557. {devsper-2.1.8 → devsper-2.3.0}/examples/data_science/__init__.py +0 -0
  558. {devsper-2.1.8 → devsper-2.3.0}/examples/data_science/dataset_analysis.py +0 -0
  559. {devsper-2.1.8 → devsper-2.3.0}/examples/data_science/run_experiments.py +0 -0
  560. {devsper-2.1.8 → devsper-2.3.0}/examples/demo_swarm.py +0 -0
  561. {devsper-2.1.8 → devsper-2.3.0}/examples/distributed/controller.toml +0 -0
  562. {devsper-2.1.8 → devsper-2.3.0}/examples/distributed/parallel_survey.py +0 -0
  563. {devsper-2.1.8 → devsper-2.3.0}/examples/distributed/run_controller.py +0 -0
  564. {devsper-2.1.8 → devsper-2.3.0}/examples/distributed/run_demo.sh +0 -0
  565. {devsper-2.1.8 → devsper-2.3.0}/examples/distributed/run_worker.py +0 -0
  566. {devsper-2.1.8 → devsper-2.3.0}/examples/distributed/worker.toml +0 -0
  567. {devsper-2.1.8 → devsper-2.3.0}/examples/documents/__init__.py +0 -0
  568. {devsper-2.1.8 → devsper-2.3.0}/examples/documents/analyze_documents.py +0 -0
  569. {devsper-2.1.8 → devsper-2.3.0}/examples/experiments/__init__.py +0 -0
  570. {devsper-2.1.8 → devsper-2.3.0}/examples/experiments/monte_carlo_demo.py +0 -0
  571. {devsper-2.1.8 → devsper-2.3.0}/examples/experiments/parameter_sweep.py +0 -0
  572. {devsper-2.1.8 → devsper-2.3.0}/examples/research/__init__.py +0 -0
  573. {devsper-2.1.8 → devsper-2.3.0}/examples/research/literature_review.py +0 -0
  574. {devsper-2.1.8 → devsper-2.3.0}/examples/research/research_gap_analysis.py +0 -0
  575. {devsper-2.1.8 → devsper-2.3.0}/examples/research/research_graph.py +0 -0
  576. {devsper-2.1.8 → devsper-2.3.0}/requirements-docs.txt +0 -0
  577. {devsper-2.1.8 → devsper-2.3.0}/scripts/README.md +0 -0
  578. {devsper-2.1.8 → devsper-2.3.0}/scripts/seed_tool_scores.py +0 -0
  579. {devsper-2.1.8 → devsper-2.3.0}/scripts/test_tool_scoring_cli.sh +0 -0
  580. {devsper-2.1.8 → devsper-2.3.0}/scripts/test_tool_scoring_full.sh +0 -0
  581. {devsper-2.1.8 → devsper-2.3.0}/scripts/test_tool_scoring_smoke.py +0 -0
  582. {devsper-2.1.8 → devsper-2.3.0}/scripts/test_v2_router.py +0 -0
  583. {devsper-2.1.8 → devsper-2.3.0}/tests/agents/__init__.py +0 -0
  584. {devsper-2.1.8 → devsper-2.3.0}/tests/agents/test_roles.py +0 -0
  585. {devsper-2.1.8 → devsper-2.3.0}/tests/benchmarks/test_v16_perf.py +0 -0
  586. {devsper-2.1.8 → devsper-2.3.0}/tests/intelligence/__init__.py +0 -0
  587. {devsper-2.1.8 → devsper-2.3.0}/tests/intelligence/test_adaptation.py +0 -0
  588. {devsper-2.1.8 → devsper-2.3.0}/tests/intelligence/test_learning_engine.py +0 -0
  589. {devsper-2.1.8 → devsper-2.3.0}/tests/intelligence/test_strategy_selector.py +0 -0
  590. {devsper-2.1.8 → devsper-2.3.0}/tests/intelligence/test_task_optimizer.py +0 -0
  591. {devsper-2.1.8 → devsper-2.3.0}/tests/memory/__init__.py +0 -0
  592. {devsper-2.1.8 → devsper-2.3.0}/tests/memory/test_agent_memory_integration.py +0 -0
  593. {devsper-2.1.8 → devsper-2.3.0}/tests/memory/test_memory_router.py +0 -0
  594. {devsper-2.1.8 → devsper-2.3.0}/tests/memory/test_memory_store.py +0 -0
  595. {devsper-2.1.8 → devsper-2.3.0}/tests/reasoning/__init__.py +0 -0
  596. {devsper-2.1.8 → devsper-2.3.0}/tests/reasoning/test_reasoning_graph.py +0 -0
  597. {devsper-2.1.8 → devsper-2.3.0}/tests/runtime/__init__.py +0 -0
  598. {devsper-2.1.8 → devsper-2.3.0}/tests/runtime/test_replay.py +0 -0
  599. {devsper-2.1.8 → devsper-2.3.0}/tests/runtime/test_replay_engine.py +0 -0
  600. {devsper-2.1.8 → devsper-2.3.0}/tests/runtime/test_telemetry.py +0 -0
  601. {devsper-2.1.8 → devsper-2.3.0}/tests/runtime/test_visualize.py +0 -0
  602. {devsper-2.1.8 → devsper-2.3.0}/tests/test_agent.py +0 -0
  603. {devsper-2.1.8 → devsper-2.3.0}/tests/test_analysis.py +0 -0
  604. {devsper-2.1.8 → devsper-2.3.0}/tests/test_analytics.py +0 -0
  605. {devsper-2.1.8 → devsper-2.3.0}/tests/test_auto_model.py +0 -0
  606. {devsper-2.1.8 → devsper-2.3.0}/tests/test_clarification_multinode.py +0 -0
  607. {devsper-2.1.8 → devsper-2.3.0}/tests/test_config_loader.py +0 -0
  608. {devsper-2.1.8 → devsper-2.3.0}/tests/test_credentials.py +0 -0
  609. {devsper-2.1.8 → devsper-2.3.0}/tests/test_cross_boundary_serialization.py +0 -0
  610. {devsper-2.1.8 → devsper-2.3.0}/tests/test_dag_export.py +0 -0
  611. {devsper-2.1.8 → devsper-2.3.0}/tests/test_dev_agents.py +0 -0
  612. {devsper-2.1.8 → devsper-2.3.0}/tests/test_dev_build_cmd.py +0 -0
  613. {devsper-2.1.8 → devsper-2.3.0}/tests/test_dev_debugger.py +0 -0
  614. {devsper-2.1.8 → devsper-2.3.0}/tests/test_dev_repo_index.py +0 -0
  615. {devsper-2.1.8 → devsper-2.3.0}/tests/test_dev_sandbox.py +0 -0
  616. {devsper-2.1.8 → devsper-2.3.0}/tests/test_dev_scaffold.py +0 -0
  617. {devsper-2.1.8 → devsper-2.3.0}/tests/test_distributed_bugs.py +0 -0
  618. {devsper-2.1.8 → devsper-2.3.0}/tests/test_embeddings_service.py +0 -0
  619. {devsper-2.1.8 → devsper-2.3.0}/tests/test_event_logger.py +0 -0
  620. {devsper-2.1.8 → devsper-2.3.0}/tests/test_executor.py +0 -0
  621. {devsper-2.1.8 → devsper-2.3.0}/tests/test_export_runs.py +0 -0
  622. {devsper-2.1.8 → devsper-2.3.0}/tests/test_github_provider.py +0 -0
  623. {devsper-2.1.8 → devsper-2.3.0}/tests/test_knowledge_graph.py +0 -0
  624. {devsper-2.1.8 → devsper-2.3.0}/tests/test_knowledge_query.py +0 -0
  625. {devsper-2.1.8 → devsper-2.3.0}/tests/test_map_reduce.py +0 -0
  626. {devsper-2.1.8 → devsper-2.3.0}/tests/test_memory_evolution.py +0 -0
  627. {devsper-2.1.8 → devsper-2.3.0}/tests/test_memory_isolation.py +0 -0
  628. {devsper-2.1.8 → devsper-2.3.0}/tests/test_model_router.py +0 -0
  629. {devsper-2.1.8 → devsper-2.3.0}/tests/test_planner.py +0 -0
  630. {devsper-2.1.8 → devsper-2.3.0}/tests/test_plugins.py +0 -0
  631. {devsper-2.1.8 → devsper-2.3.0}/tests/test_protocols.py +0 -0
  632. {devsper-2.1.8 → devsper-2.3.0}/tests/test_router.py +0 -0
  633. {devsper-2.1.8 → devsper-2.3.0}/tests/test_scheduler.py +0 -0
  634. {devsper-2.1.8 → devsper-2.3.0}/tests/test_speculation.py +0 -0
  635. {devsper-2.1.8 → devsper-2.3.0}/tests/test_strategies.py +0 -0
  636. {devsper-2.1.8 → devsper-2.3.0}/tests/test_swarm.py +0 -0
  637. {devsper-2.1.8 → devsper-2.3.0}/tests/test_task_cache.py +0 -0
  638. {devsper-2.1.8 → devsper-2.3.0}/tests/test_tool_scoring.py +0 -0
  639. {devsper-2.1.8 → devsper-2.3.0}/tests/test_tool_selector.py +0 -0
  640. {devsper-2.1.8 → devsper-2.3.0}/tests/test_upgrade.py +0 -0
  641. {devsper-2.1.8 → devsper-2.3.0}/tests/test_v110.py +0 -0
  642. {devsper-2.1.8 → devsper-2.3.0}/tests/test_v16.py +0 -0
  643. {devsper-2.1.8 → devsper-2.3.0}/tests/test_v17.py +0 -0
  644. {devsper-2.1.8 → devsper-2.3.0}/tests/test_v18.py +0 -0
  645. {devsper-2.1.8 → devsper-2.3.0}/tests/test_v19.py +0 -0
  646. {devsper-2.1.8 → devsper-2.3.0}/tests/test_workflow.py +0 -0
  647. {devsper-2.1.8 → devsper-2.3.0}/tests/tools/__init__.py +0 -0
  648. {devsper-2.1.8 → devsper-2.3.0}/tests/tools/test_code_intelligence_tools.py +0 -0
  649. {devsper-2.1.8 → devsper-2.3.0}/tests/tools/test_coding_tools.py +0 -0
  650. {devsper-2.1.8 → devsper-2.3.0}/tests/tools/test_data_science_tools.py +0 -0
  651. {devsper-2.1.8 → devsper-2.3.0}/tests/tools/test_data_tools.py +0 -0
  652. {devsper-2.1.8 → devsper-2.3.0}/tests/tools/test_document_tools.py +0 -0
  653. {devsper-2.1.8 → devsper-2.3.0}/tests/tools/test_experiments_tools.py +0 -0
  654. {devsper-2.1.8 → devsper-2.3.0}/tests/tools/test_filesystem_tools.py +0 -0
  655. {devsper-2.1.8 → devsper-2.3.0}/tests/tools/test_flagship_tools.py +0 -0
  656. {devsper-2.1.8 → devsper-2.3.0}/tests/tools/test_knowledge_tools.py +0 -0
  657. {devsper-2.1.8 → devsper-2.3.0}/tests/tools/test_math_tools.py +0 -0
  658. {devsper-2.1.8 → devsper-2.3.0}/tests/tools/test_memory_tools.py +0 -0
  659. {devsper-2.1.8 → devsper-2.3.0}/tests/tools/test_pipelines.py +0 -0
  660. {devsper-2.1.8 → devsper-2.3.0}/tests/tools/test_registry.py +0 -0
  661. {devsper-2.1.8 → devsper-2.3.0}/tests/tools/test_research_advanced_tools.py +0 -0
  662. {devsper-2.1.8 → devsper-2.3.0}/tests/tools/test_research_tools.py +0 -0
  663. {devsper-2.1.8 → devsper-2.3.0}/tests/tools/test_system_tools.py +0 -0
  664. {devsper-2.1.8 → devsper-2.3.0}/tests/tools/test_tool_runner.py +0 -0
  665. {devsper-2.1.8 → devsper-2.3.0}/worker/.dockerignore +0 -0
  666. {devsper-2.1.8 → devsper-2.3.0}/worker/Cargo.lock +0 -0
  667. {devsper-2.1.8 → devsper-2.3.0}/worker/Dockerfile +0 -0
  668. {devsper-2.1.8 → devsper-2.3.0}/worker/README.md +0 -0
  669. {devsper-2.1.8 → devsper-2.3.0}/worker/src/bus.rs +0 -0
  670. {devsper-2.1.8 → devsper-2.3.0}/worker/src/claim.rs +0 -0
  671. {devsper-2.1.8 → devsper-2.3.0}/worker/src/clarification.rs +0 -0
  672. {devsper-2.1.8 → devsper-2.3.0}/worker/src/config.rs +0 -0
  673. {devsper-2.1.8 → devsper-2.3.0}/worker/src/controller.rs +0 -0
  674. {devsper-2.1.8 → devsper-2.3.0}/worker/src/election.rs +0 -0
  675. {devsper-2.1.8 → devsper-2.3.0}/worker/src/error.rs +0 -0
  676. {devsper-2.1.8 → devsper-2.3.0}/worker/src/executor.rs +0 -0
  677. {devsper-2.1.8 → devsper-2.3.0}/worker/src/health.rs +0 -0
  678. {devsper-2.1.8 → devsper-2.3.0}/worker/src/heartbeat.rs +0 -0
  679. {devsper-2.1.8 → devsper-2.3.0}/worker/src/metrics.rs +0 -0
  680. {devsper-2.1.8 → devsper-2.3.0}/worker/src/reconnect.rs +0 -0
  681. {devsper-2.1.8 → devsper-2.3.0}/worker/src/registry.rs +0 -0
  682. {devsper-2.1.8 → devsper-2.3.0}/worker/src/router.rs +0 -0
  683. {devsper-2.1.8 → devsper-2.3.0}/worker/src/scheduler.rs +0 -0
  684. {devsper-2.1.8 → devsper-2.3.0}/worker/src/snapshot.rs +0 -0
  685. {devsper-2.1.8 → devsper-2.3.0}/worker/src/types/event.rs +0 -0
  686. {devsper-2.1.8 → devsper-2.3.0}/worker/src/types/mod.rs +0 -0
  687. {devsper-2.1.8 → devsper-2.3.0}/worker/src/types/node.rs +0 -0
  688. {devsper-2.1.8 → devsper-2.3.0}/worker/src/types/task.rs +0 -0
  689. {devsper-2.1.8 → devsper-2.3.0}/worker/tests/integration.rs +0 -0
@@ -7,6 +7,39 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [2.3.0] — 2026-03-30
11
+
12
+ ### Added
13
+
14
+ - **Autonomous Missions capability layer** — New `devsper.missions` package for long-horizon autonomous execution across research, coding, and experiment workflows.
15
+ - **Mission planner and DAG generation** — Added `missions/mission_planner.py` to break goals into mission tasks, assign role agents, and define dependency graphs.
16
+ - **Research mission workflow** — Added mission agents (`researcher_agent`, `reviewer_agent`, `writer_agent`, `editor_agent`) and end-to-end flow: research → critique → improve → finalize.
17
+ - **Coding mission workflow** — Added mission agents (`architect_agent`, `coder_agent`, `tester_agent`, `debugger_agent`, `docs_agent`) and end-to-end flow: design → code → test → fix → document.
18
+ - **Iteration engine** — Added `missions/iteration_loop.py` for quality-threshold-driven iterative execution with critique/improvement cycles.
19
+ - **Mission memory** — Added `missions/mission_memory.py` to persist research findings, decisions, and experiment artifacts per mission.
20
+ - **Long-running mission support** — Added checkpointing/resume support in `missions/mission_runner.py` plus HITL task-gating callback support.
21
+ - **Mission UI** — Added dashboard `MissionView` and TUI mission execution path (`mission:research ...`, `mission:coding ...`, `mission:experiment ...`) to show goal, DAG, and iteration progress.
22
+
23
+ ### Changed
24
+
25
+ - **SDK surface** — Exported `MissionRunner` from `devsper` package root for straightforward mission execution from Python.
26
+ - **Testing** — Added runtime tests for mission DAG planning and checkpoint creation.
27
+
28
+ ## [2.2.0] — 2026-03-28
29
+
30
+ ### Added
31
+
32
+ - **Supermemory ranking backend** — `[memory] backend = "supermemory"` (default) uses the Rust `supermemory-core` ranker for hybrid lexical (+ optional embedding) memory retrieval, deduplication, and recency-aware context formatting.
33
+ - **Platform memory backends** — `[memory] backend` can be `platform` or `hybrid` with `platform_api_url` and `platform_org_slug`; config resolver honors `DEVSPER_PLATFORM_API_URL` and `DEVSPER_PLATFORM_ORG` when set.
34
+ - **Remote platform workflows** — `load_workflow("org/pkg@N")` fetches workflow specs from the Devsper Platform API when `DEVSPER_PLATFORM_API_URL`, `DEVSPER_PLATFORM_ORG`, and (when required) `DEVSPER_PLATFORM_TOKEN` are configured.
35
+ - **Local worker pool** — `devsper pool` subcommands to run the local worker pool manager (foreground spawner) alongside improved swarm execution when using pool-backed paths.
36
+ - **Devsper Cloud CLI** — `devsper cloud login`, `logout`, `run`, `status`, and `logs` for JWT authentication (OS keychain) and runs against the platform API.
37
+
38
+ ### Changed
39
+
40
+ - **Telemetry** — OpenTelemetry configuration and OTLP export wiring expanded (`otel_endpoint`, `otel_headers`, and related options).
41
+ - **Documentation** — README refresh; removed outdated standalone docs where superseded by the current `docs/` tree.
42
+
10
43
  ## [2.1.8] — 2026-03-24
11
44
 
12
45
  ### Changed
@@ -109,6 +109,28 @@ version = "0.5.1"
109
109
  source = "registry+https://github.com/rust-lang/crates.io-index"
110
110
  checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236"
111
111
 
112
+ [[package]]
113
+ name = "async-stream"
114
+ version = "0.3.6"
115
+ source = "registry+https://github.com/rust-lang/crates.io-index"
116
+ checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476"
117
+ dependencies = [
118
+ "async-stream-impl",
119
+ "futures-core",
120
+ "pin-project-lite",
121
+ ]
122
+
123
+ [[package]]
124
+ name = "async-stream-impl"
125
+ version = "0.3.6"
126
+ source = "registry+https://github.com/rust-lang/crates.io-index"
127
+ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d"
128
+ dependencies = [
129
+ "proc-macro2",
130
+ "quote",
131
+ "syn",
132
+ ]
133
+
112
134
  [[package]]
113
135
  name = "async-trait"
114
136
  version = "0.1.89"
@@ -438,6 +460,16 @@ version = "2.10.0"
438
460
  source = "registry+https://github.com/rust-lang/crates.io-index"
439
461
  checksum = "d7a1e2f27636f116493b8b860f5546edb47c8d8f8ea73e1d2a20be88e28d1fea"
440
462
 
463
+ [[package]]
464
+ name = "devsper-supermemory-core"
465
+ version = "0.1.0"
466
+ dependencies = [
467
+ "chrono",
468
+ "regex",
469
+ "serde",
470
+ "serde_json",
471
+ ]
472
+
441
473
  [[package]]
442
474
  name = "devsper-worker"
443
475
  version = "1.10.0"
@@ -450,6 +482,8 @@ dependencies = [
450
482
  "dashmap",
451
483
  "futures",
452
484
  "hostname",
485
+ "opentelemetry",
486
+ "opentelemetry-otlp",
453
487
  "pyo3",
454
488
  "redis",
455
489
  "regex",
@@ -464,6 +498,7 @@ dependencies = [
464
498
  "tower 0.4.13",
465
499
  "tower-http",
466
500
  "tracing",
501
+ "tracing-opentelemetry",
467
502
  "tracing-subscriber",
468
503
  "uuid",
469
504
  ]
@@ -498,6 +533,12 @@ dependencies = [
498
533
  "const-random",
499
534
  ]
500
535
 
536
+ [[package]]
537
+ name = "either"
538
+ version = "1.15.0"
539
+ source = "registry+https://github.com/rust-lang/crates.io-index"
540
+ checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
541
+
501
542
  [[package]]
502
543
  name = "encoding_rs"
503
544
  version = "0.8.35"
@@ -529,6 +570,12 @@ version = "0.1.9"
529
570
  source = "registry+https://github.com/rust-lang/crates.io-index"
530
571
  checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582"
531
572
 
573
+ [[package]]
574
+ name = "fnv"
575
+ version = "1.0.7"
576
+ source = "registry+https://github.com/rust-lang/crates.io-index"
577
+ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
578
+
532
579
  [[package]]
533
580
  name = "foldhash"
534
581
  version = "0.1.5"
@@ -666,6 +713,37 @@ dependencies = [
666
713
  "wasip3",
667
714
  ]
668
715
 
716
+ [[package]]
717
+ name = "glob"
718
+ version = "0.3.3"
719
+ source = "registry+https://github.com/rust-lang/crates.io-index"
720
+ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280"
721
+
722
+ [[package]]
723
+ name = "h2"
724
+ version = "0.4.13"
725
+ source = "registry+https://github.com/rust-lang/crates.io-index"
726
+ checksum = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54"
727
+ dependencies = [
728
+ "atomic-waker",
729
+ "bytes",
730
+ "fnv",
731
+ "futures-core",
732
+ "futures-sink",
733
+ "http",
734
+ "indexmap 2.13.0",
735
+ "slab",
736
+ "tokio",
737
+ "tokio-util",
738
+ "tracing",
739
+ ]
740
+
741
+ [[package]]
742
+ name = "hashbrown"
743
+ version = "0.12.3"
744
+ source = "registry+https://github.com/rust-lang/crates.io-index"
745
+ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
746
+
669
747
  [[package]]
670
748
  name = "hashbrown"
671
749
  version = "0.14.5"
@@ -778,6 +856,7 @@ dependencies = [
778
856
  "bytes",
779
857
  "futures-channel",
780
858
  "futures-core",
859
+ "h2",
781
860
  "http",
782
861
  "http-body",
783
862
  "httparse",
@@ -787,6 +866,20 @@ dependencies = [
787
866
  "pin-utils",
788
867
  "smallvec",
789
868
  "tokio",
869
+ "want",
870
+ ]
871
+
872
+ [[package]]
873
+ name = "hyper-timeout"
874
+ version = "0.5.2"
875
+ source = "registry+https://github.com/rust-lang/crates.io-index"
876
+ checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0"
877
+ dependencies = [
878
+ "hyper",
879
+ "hyper-util",
880
+ "pin-project-lite",
881
+ "tokio",
882
+ "tower-service",
790
883
  ]
791
884
 
792
885
  [[package]]
@@ -796,12 +889,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
796
889
  checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0"
797
890
  dependencies = [
798
891
  "bytes",
892
+ "futures-channel",
893
+ "futures-util",
799
894
  "http",
800
895
  "http-body",
801
896
  "hyper",
897
+ "libc",
802
898
  "pin-project-lite",
899
+ "socket2 0.6.3",
803
900
  "tokio",
804
901
  "tower-service",
902
+ "tracing",
805
903
  ]
806
904
 
807
905
  [[package]]
@@ -936,6 +1034,16 @@ dependencies = [
936
1034
  "icu_properties",
937
1035
  ]
938
1036
 
1037
+ [[package]]
1038
+ name = "indexmap"
1039
+ version = "1.9.3"
1040
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1041
+ checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
1042
+ dependencies = [
1043
+ "autocfg",
1044
+ "hashbrown 0.12.3",
1045
+ ]
1046
+
939
1047
  [[package]]
940
1048
  name = "indexmap"
941
1049
  version = "2.13.0"
@@ -963,6 +1071,15 @@ version = "1.70.2"
963
1071
  source = "registry+https://github.com/rust-lang/crates.io-index"
964
1072
  checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695"
965
1073
 
1074
+ [[package]]
1075
+ name = "itertools"
1076
+ version = "0.14.0"
1077
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1078
+ checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285"
1079
+ dependencies = [
1080
+ "either",
1081
+ ]
1082
+
966
1083
  [[package]]
967
1084
  name = "itoa"
968
1085
  version = "1.0.17"
@@ -1128,6 +1245,69 @@ version = "1.70.2"
1128
1245
  source = "registry+https://github.com/rust-lang/crates.io-index"
1129
1246
  checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe"
1130
1247
 
1248
+ [[package]]
1249
+ name = "opentelemetry"
1250
+ version = "0.24.0"
1251
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1252
+ checksum = "4c365a63eec4f55b7efeceb724f1336f26a9cf3427b70e59e2cd2a5b947fba96"
1253
+ dependencies = [
1254
+ "futures-core",
1255
+ "futures-sink",
1256
+ "js-sys",
1257
+ "once_cell",
1258
+ "pin-project-lite",
1259
+ "thiserror",
1260
+ ]
1261
+
1262
+ [[package]]
1263
+ name = "opentelemetry-otlp"
1264
+ version = "0.17.0"
1265
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1266
+ checksum = "6b925a602ffb916fb7421276b86756027b37ee708f9dce2dbdcc51739f07e727"
1267
+ dependencies = [
1268
+ "async-trait",
1269
+ "futures-core",
1270
+ "http",
1271
+ "opentelemetry",
1272
+ "opentelemetry-proto",
1273
+ "opentelemetry_sdk",
1274
+ "prost",
1275
+ "thiserror",
1276
+ "tokio",
1277
+ "tonic",
1278
+ ]
1279
+
1280
+ [[package]]
1281
+ name = "opentelemetry-proto"
1282
+ version = "0.7.0"
1283
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1284
+ checksum = "30ee9f20bff9c984511a02f082dc8ede839e4a9bf15cc2487c8d6fea5ad850d9"
1285
+ dependencies = [
1286
+ "opentelemetry",
1287
+ "opentelemetry_sdk",
1288
+ "prost",
1289
+ "tonic",
1290
+ ]
1291
+
1292
+ [[package]]
1293
+ name = "opentelemetry_sdk"
1294
+ version = "0.24.1"
1295
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1296
+ checksum = "692eac490ec80f24a17828d49b40b60f5aeaccdfe6a503f939713afd22bc28df"
1297
+ dependencies = [
1298
+ "async-trait",
1299
+ "futures-channel",
1300
+ "futures-executor",
1301
+ "futures-util",
1302
+ "glob",
1303
+ "once_cell",
1304
+ "opentelemetry",
1305
+ "percent-encoding",
1306
+ "rand",
1307
+ "serde_json",
1308
+ "thiserror",
1309
+ ]
1310
+
1131
1311
  [[package]]
1132
1312
  name = "ordered-multimap"
1133
1313
  version = "0.7.3"
@@ -1291,6 +1471,29 @@ dependencies = [
1291
1471
  "unicode-ident",
1292
1472
  ]
1293
1473
 
1474
+ [[package]]
1475
+ name = "prost"
1476
+ version = "0.13.5"
1477
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1478
+ checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5"
1479
+ dependencies = [
1480
+ "bytes",
1481
+ "prost-derive",
1482
+ ]
1483
+
1484
+ [[package]]
1485
+ name = "prost-derive"
1486
+ version = "0.13.5"
1487
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1488
+ checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d"
1489
+ dependencies = [
1490
+ "anyhow",
1491
+ "itertools",
1492
+ "proc-macro2",
1493
+ "quote",
1494
+ "syn",
1495
+ ]
1496
+
1294
1497
  [[package]]
1295
1498
  name = "pyo3"
1296
1499
  version = "0.21.2"
@@ -1875,7 +2078,7 @@ version = "0.22.27"
1875
2078
  source = "registry+https://github.com/rust-lang/crates.io-index"
1876
2079
  checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a"
1877
2080
  dependencies = [
1878
- "indexmap",
2081
+ "indexmap 2.13.0",
1879
2082
  "serde",
1880
2083
  "serde_spanned",
1881
2084
  "toml_datetime",
@@ -1889,12 +2092,51 @@ version = "0.1.2"
1889
2092
  source = "registry+https://github.com/rust-lang/crates.io-index"
1890
2093
  checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801"
1891
2094
 
2095
+ [[package]]
2096
+ name = "tonic"
2097
+ version = "0.12.3"
2098
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2099
+ checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52"
2100
+ dependencies = [
2101
+ "async-stream",
2102
+ "async-trait",
2103
+ "axum",
2104
+ "base64 0.22.1",
2105
+ "bytes",
2106
+ "h2",
2107
+ "http",
2108
+ "http-body",
2109
+ "http-body-util",
2110
+ "hyper",
2111
+ "hyper-timeout",
2112
+ "hyper-util",
2113
+ "percent-encoding",
2114
+ "pin-project",
2115
+ "prost",
2116
+ "socket2 0.5.10",
2117
+ "tokio",
2118
+ "tokio-stream",
2119
+ "tower 0.4.13",
2120
+ "tower-layer",
2121
+ "tower-service",
2122
+ "tracing",
2123
+ ]
2124
+
1892
2125
  [[package]]
1893
2126
  name = "tower"
1894
2127
  version = "0.4.13"
1895
2128
  source = "registry+https://github.com/rust-lang/crates.io-index"
1896
2129
  checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c"
1897
2130
  dependencies = [
2131
+ "futures-core",
2132
+ "futures-util",
2133
+ "indexmap 1.9.3",
2134
+ "pin-project",
2135
+ "pin-project-lite",
2136
+ "rand",
2137
+ "slab",
2138
+ "tokio",
2139
+ "tokio-util",
1898
2140
  "tower-layer",
1899
2141
  "tower-service",
1900
2142
  "tracing",
@@ -1989,6 +2231,24 @@ dependencies = [
1989
2231
  "tracing-core",
1990
2232
  ]
1991
2233
 
2234
+ [[package]]
2235
+ name = "tracing-opentelemetry"
2236
+ version = "0.25.0"
2237
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2238
+ checksum = "a9784ed4da7d921bc8df6963f8c80a0e4ce34ba6ba76668acadd3edbd985ff3b"
2239
+ dependencies = [
2240
+ "js-sys",
2241
+ "once_cell",
2242
+ "opentelemetry",
2243
+ "opentelemetry_sdk",
2244
+ "smallvec",
2245
+ "tracing",
2246
+ "tracing-core",
2247
+ "tracing-log",
2248
+ "tracing-subscriber",
2249
+ "web-time",
2250
+ ]
2251
+
1992
2252
  [[package]]
1993
2253
  name = "tracing-serde"
1994
2254
  version = "0.2.0"
@@ -2020,6 +2280,12 @@ dependencies = [
2020
2280
  "tracing-serde",
2021
2281
  ]
2022
2282
 
2283
+ [[package]]
2284
+ name = "try-lock"
2285
+ version = "0.2.5"
2286
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2287
+ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
2288
+
2023
2289
  [[package]]
2024
2290
  name = "tungstenite"
2025
2291
  version = "0.24.0"
@@ -2127,6 +2393,15 @@ version = "0.9.5"
2127
2393
  source = "registry+https://github.com/rust-lang/crates.io-index"
2128
2394
  checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
2129
2395
 
2396
+ [[package]]
2397
+ name = "want"
2398
+ version = "0.3.1"
2399
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2400
+ checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e"
2401
+ dependencies = [
2402
+ "try-lock",
2403
+ ]
2404
+
2130
2405
  [[package]]
2131
2406
  name = "wasi"
2132
2407
  version = "0.11.1+wasi-snapshot-preview1"
@@ -2213,7 +2488,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
2213
2488
  checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909"
2214
2489
  dependencies = [
2215
2490
  "anyhow",
2216
- "indexmap",
2491
+ "indexmap 2.13.0",
2217
2492
  "wasm-encoder",
2218
2493
  "wasmparser",
2219
2494
  ]
@@ -2226,10 +2501,20 @@ checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe"
2226
2501
  dependencies = [
2227
2502
  "bitflags",
2228
2503
  "hashbrown 0.15.5",
2229
- "indexmap",
2504
+ "indexmap 2.13.0",
2230
2505
  "semver",
2231
2506
  ]
2232
2507
 
2508
+ [[package]]
2509
+ name = "web-time"
2510
+ version = "1.1.0"
2511
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2512
+ checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb"
2513
+ dependencies = [
2514
+ "js-sys",
2515
+ "wasm-bindgen",
2516
+ ]
2517
+
2233
2518
  [[package]]
2234
2519
  name = "winapi"
2235
2520
  version = "0.3.9"
@@ -2430,7 +2715,7 @@ checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21"
2430
2715
  dependencies = [
2431
2716
  "anyhow",
2432
2717
  "heck 0.5.0",
2433
- "indexmap",
2718
+ "indexmap 2.13.0",
2434
2719
  "prettyplease",
2435
2720
  "syn",
2436
2721
  "wasm-metadata",
@@ -2461,7 +2746,7 @@ checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2"
2461
2746
  dependencies = [
2462
2747
  "anyhow",
2463
2748
  "bitflags",
2464
- "indexmap",
2749
+ "indexmap 2.13.0",
2465
2750
  "log",
2466
2751
  "serde",
2467
2752
  "serde_derive",
@@ -2480,7 +2765,7 @@ checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736"
2480
2765
  dependencies = [
2481
2766
  "anyhow",
2482
2767
  "id-arena",
2483
- "indexmap",
2768
+ "indexmap 2.13.0",
2484
2769
  "log",
2485
2770
  "semver",
2486
2771
  "serde",
@@ -0,0 +1,3 @@
1
+ [workspace]
2
+ resolver = "2"
3
+ members = ["worker", "supermemory-core"]
@@ -0,0 +1,22 @@
1
+ # Local pool supervisor: runs `devsper.pool.local_pool`, which spawns N `devsper-worker` processes.
2
+ # Build: docker build -f Dockerfile.local-pool -t devsper-local-pool .
3
+ # Context must be the `runtime/` directory.
4
+
5
+ FROM rust:1.82-slim AS rust-builder
6
+ RUN apt-get update && apt-get install -y --no-install-recommends pkg-config libssl-dev \
7
+ && rm -rf /var/lib/apt/lists/*
8
+ WORKDIR /build
9
+ COPY worker/Cargo.toml worker/Cargo.lock ./
10
+ COPY worker/src ./src
11
+ RUN cargo build --release --features subprocess-executor
12
+
13
+ FROM python:3.12-slim
14
+ RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates libssl3 curl \
15
+ && rm -rf /var/lib/apt/lists/*
16
+ COPY --from=rust-builder /build/target/release/devsper-worker /usr/local/bin/
17
+ WORKDIR /app
18
+ COPY pyproject.toml README.md LICENSE ./
19
+ COPY devsper ./devsper
20
+ RUN pip install --no-cache-dir -e ".[distributed]"
21
+ ENV DEVSPER_PROFILE=local
22
+ CMD ["python", "-m", "devsper.pool.local_pool", "--workers", "2"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: devsper
3
- Version: 2.1.8
3
+ Version: 2.3.0
4
4
  Summary: Orchestrate distributed swarms of AI agents that collaboratively solve complex tasks.
5
5
  Project-URL: Homepage, https://github.com/devsper-com/runtime
6
6
  Project-URL: Documentation, https://docs.devsper.com
@@ -17,6 +17,7 @@ Classifier: Programming Language :: Python :: 3.12
17
17
  Classifier: Programming Language :: Python :: 3.13
18
18
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
19
19
  Requires-Python: >=3.12
20
+ Requires-Dist: duckduckgo-search>=8.1.1
20
21
  Requires-Dist: httpx>=0.27.0
21
22
  Requires-Dist: keyring>=24.0
22
23
  Requires-Dist: langchain-anthropic>=1.3.4
@@ -25,6 +26,9 @@ Requires-Dist: langchain-openai>=1.1.10
25
26
  Requires-Dist: langchain>=1.2.10
26
27
  Requires-Dist: networkx>=3.6.1
27
28
  Requires-Dist: numpy>=2.4.2
29
+ Requires-Dist: opentelemetry-api>=1.27.0
30
+ Requires-Dist: opentelemetry-exporter-otlp-proto-grpc>=1.27.0
31
+ Requires-Dist: opentelemetry-sdk>=1.27.0
28
32
  Requires-Dist: pydantic>=2.12.5
29
33
  Requires-Dist: pyfiglet>=1.0
30
34
  Requires-Dist: python-dotenv>=1.2.2
@@ -64,6 +68,10 @@ Requires-Dist: httpx>=0.27; extra == 'mcp'
64
68
  Provides-Extra: ollama
65
69
  Provides-Extra: research
66
70
  Requires-Dist: duckduckgo-search>=6.0.0; extra == 'research'
71
+ Provides-Extra: server
72
+ Requires-Dist: fastapi>=0.110; extra == 'server'
73
+ Requires-Dist: sse-starlette>=2.0; extra == 'server'
74
+ Requires-Dist: uvicorn>=0.29; extra == 'server'
67
75
  Provides-Extra: worker
68
76
  Description-Content-Type: text/markdown
69
77
 
@@ -130,6 +138,50 @@ eval "$(devsper completion zsh)"
130
138
 
131
139
  ---
132
140
 
141
+ ## How devsper compares
142
+
143
+ | | devsper | swarms | crewai | autogen |
144
+ |--|---------|--------|--------|---------|
145
+ | Distributed execution | ✅ Python + Rust workers | ❌ Single process | ❌ | ❌ |
146
+ | Language-agnostic protocol | ✅ HTTP wire format | ❌ Python only | ❌ | ❌ |
147
+ | OpenTelemetry traces | ✅ Native | ❌ | ❌ | ❌ |
148
+ | Budget-aware execution | ✅ Per-run limits | ❌ | ❌ | ❌ |
149
+ | Persistent agent identities | ✅ Named + memory | ❌ | ⚠️ Partial | ❌ |
150
+ | DAG-based task scheduling | ✅ | ❌ Linear/basic | ❌ | ❌ |
151
+ | Event replay | ✅ Full run replay | ❌ | ❌ | ❌ |
152
+ | Rust worker support | ✅ | ❌ | ❌ | ❌ |
153
+ | Deployable agent packages | ✅ .devsper format | ❌ Prompts only | ❌ | ❌ |
154
+
155
+ ## Architecture diagram
156
+
157
+ ```mermaid
158
+ flowchart LR
159
+ Planner --> Scheduler --> Executor
160
+ Executor --> Agents
161
+ Agents --> Tools
162
+ Agents --> Memory --> KG[Knowledge Graph]
163
+ Executor --> RustWorkers[Rust Workers]
164
+ Executor --> RemoteAgents[Remote Polyglot Agents]
165
+ Executor --> EventLog
166
+ EventLog --> Replay
167
+ EventLog --> Trace
168
+ EventLog --> EventsAPI[SSE/Topology API]
169
+ ```
170
+
171
+ ## Why devsper
172
+
173
+ Devsper is distributed-first by design. The execution engine can run locally, across Redis-backed worker pools, or with Rust worker binaries for higher-throughput task execution.
174
+
175
+ It is observable by default. Runs emit structured events and OpenTelemetry spans for planner, scheduler, executor, agent, and tool boundaries so operators can replay, trace, and debug production runs.
176
+
177
+ It is polyglot-ready. The HTTP agent protocol allows Python, Rust, Go, and TypeScript services to participate as first-class agents while preserving orchestration controls such as budgeting and DAG scheduling.
178
+
179
+ ## Benchmarks
180
+
181
+ Performance scripts live in [`benchmarks/`](benchmarks/).
182
+
183
+ ---
184
+
133
185
  ## Run from code
134
186
 
135
187
  **From config file:**
@@ -200,6 +252,7 @@ See [Configuration](docs/configuration.md#credentials-api-keys) and [CLI](docs/c
200
252
  | `devsper analytics` | Tool usage stats |
201
253
  | `devsper build "app description" [-o dir]` | Autonomous app builder |
202
254
  | `devsper upgrade [--check \| -y]` | Check for updates / upgrade |
255
+ | `devsper cloud login` / `devsper cloud run` / `status` / `logs` | Hosted platform: auth (keychain), queue a job, poll results |
203
256
 
204
257
  Run `devsper --help` or `devsper <command> --help` for examples and options.
205
258
 
@@ -296,6 +349,8 @@ uv run python examples/distributed/run_controller.py "Your task" --parallel
296
349
 
297
350
  Rust workers: set `DEVSPER_WORKER_MODEL=github:gpt-4o` (or your model), `DEVSPER_PYTHON_BIN=.venv/bin/python`, `DEVSPER_RPC_PORT=0` for multiple workers on one host. Credentials load from keychain in the subprocess.
298
351
 
352
+ **Multi-process pool (Rust default):** with `devsper[distributed]` installed, `python -m devsper.pool.local_pool --workers N` supervises *N* `devsper-worker` processes against Redis (`REDIS_URL`). Override the worker command in `devsper/pool/profiles/local.toml` (`local_worker_cmd`) if you need the Python `devsper.pool.worker_runner` for debugging. The monorepo builds a combined image via `runtime/Dockerfile.local-pool` (used as `pool-manager` in the root `docker-compose.yml`).
353
+
299
354
  ---
300
355
 
301
356
  ## Examples
@@ -323,7 +378,7 @@ Full docs (with versioning and dark mode): **[docs.devsper.com](https://docs.dev
323
378
  | [Architecture](https://docs.devsper.com/docs/architecture) | Planner, Scheduler, Executor, Agents, Tools, Memory, strategies |
324
379
  | [Configuration](https://docs.devsper.com/docs/configuration) | TOML schema, locations, env, **credentials** |
325
380
  | [Swarm runtime](https://docs.devsper.com/docs/swarm_runtime) | Task lifecycle, flow, map-reduce |
326
- | [Tools](https://docs.devsper.com/docs/tools) | Registry, runner, smart selection, plugins |
381
+ | [Tools](https://docs.devsper.com/docs/tools) | Tool registration, runner, smart selection, plugins |
327
382
  | [Memory](https://docs.devsper.com/docs/memory_system) | Types, store, retrieval, knowledge graph |
328
383
  | [Providers](https://docs.devsper.com/docs/providers) | Provider routing, Azure, GitHub Models, auto routing |
329
384
  | [CLI](https://docs.devsper.com/docs/cli) | All commands, **credentials**, completion |
@@ -335,6 +390,19 @@ Full docs (with versioning and dark mode): **[docs.devsper.com](https://docs.dev
335
390
 
336
391
  ---
337
392
 
393
+ ## Attribution & Credits
394
+ This runtime includes a local “Supermemory-style” subset (`memory.backend="supermemory"`) implemented in Rust (`runtime/supermemory-core`).
395
+
396
+ What this subset does (local-only; no Supermemory hosted HTTP calls):
397
+ - Hybrid ranking: lexical/token overlap + optional embedding cosine similarity
398
+ - Relevance filtering: `min_similarity` + top-k truncation
399
+ - Deduplication: near-identical memories collapsed deterministically
400
+ - Recency tie-breaking: newer memories preferred when scores are close
401
+ - MemoryType weighting: research/artifact/semantic/episodic are scored with different multipliers
402
+ - Rust-driven `memory_context` formatting: user injections first, then ranked memories
403
+
404
+ Portions of the approach are inspired by the Supermemory project’s retrieval concepts (semantic recall, metadata/tag filtering, and relevance thresholding), documented in this repo under `supermemory/skills/supermemory/references/`.
405
+
338
406
  ## Contributing
339
407
 
340
408
  Contributions welcome. See [CONTRIBUTING.md](CONTRIBUTING.md).