devsper 2.2.0__tar.gz → 2.4.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.
- {devsper-2.2.0 → devsper-2.4.0}/CHANGELOG.md +37 -0
- {devsper-2.2.0 → devsper-2.4.0}/PKG-INFO +2 -1
- devsper-2.4.0/devsper/README.md +148 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/__init__.py +5 -1
- {devsper-2.2.0 → devsper-2.4.0}/devsper/agents/agent.py +405 -33
- devsper-2.4.0/devsper/cli/commands/cloud.py +718 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/cli/main.py +319 -70
- {devsper-2.2.0 → devsper-2.4.0}/devsper/cli/ui/components.py +18 -2
- {devsper-2.2.0 → devsper-2.4.0}/devsper/cli/ui/run_view.py +76 -2
- {devsper-2.2.0 → devsper-2.4.0}/devsper/config/defaults.py +5 -3
- {devsper-2.2.0 → devsper-2.4.0}/devsper/config/resolver.py +76 -27
- {devsper-2.2.0 → devsper-2.4.0}/devsper/config/schema.py +50 -11
- devsper-2.4.0/devsper/connectors/__init__.py +18 -0
- devsper-2.4.0/devsper/connectors/base.py +59 -0
- devsper-2.4.0/devsper/connectors/registry.py +46 -0
- devsper-2.4.0/devsper/connectors/sample_connector.py +74 -0
- devsper-2.4.0/devsper/core/__init__.py +2 -0
- devsper-2.4.0/devsper/core/agent/__init__.py +4 -0
- devsper-2.4.0/devsper/core/agent/runner.py +14 -0
- devsper-2.4.0/devsper/core/hitl/__init__.py +4 -0
- devsper-2.4.0/devsper/core/hitl/state_machine.py +53 -0
- devsper-2.4.0/devsper/core/memory/__init__.py +4 -0
- devsper-2.4.0/devsper/core/memory/shared_memory.py +45 -0
- devsper-2.4.0/devsper/core/reporting/__init__.py +4 -0
- devsper-2.4.0/devsper/core/reporting/publisher.py +53 -0
- devsper-2.4.0/devsper/core/runtime/__init__.py +5 -0
- devsper-2.4.0/devsper/core/runtime/durability.py +45 -0
- devsper-2.4.0/devsper/core/runtime/orchestrator.py +14 -0
- devsper-2.4.0/devsper/core/tools/__init__.py +12 -0
- devsper-2.4.0/devsper/core/tools/base_tool.py +17 -0
- devsper-2.4.0/devsper/core/tools/loader.py +35 -0
- devsper-2.4.0/devsper/core/tools/registry.py +49 -0
- devsper-2.4.0/devsper/distributed/__init__.py +7 -0
- devsper-2.4.0/devsper/distributed/controller.py +70 -0
- devsper-2.4.0/devsper/distributed/worker_runtime.py +43 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/memory/context.py +20 -3
- devsper-2.4.0/devsper/missions/__init__.py +16 -0
- devsper-2.4.0/devsper/missions/base_agent.py +22 -0
- devsper-2.4.0/devsper/missions/coding/__init__.py +13 -0
- devsper-2.4.0/devsper/missions/coding/architect_agent.py +10 -0
- devsper-2.4.0/devsper/missions/coding/coder_agent.py +10 -0
- devsper-2.4.0/devsper/missions/coding/debugger_agent.py +10 -0
- devsper-2.4.0/devsper/missions/coding/docs_agent.py +10 -0
- devsper-2.4.0/devsper/missions/coding/tester_agent.py +10 -0
- devsper-2.4.0/devsper/missions/iteration_loop.py +42 -0
- devsper-2.4.0/devsper/missions/mission_memory.py +70 -0
- devsper-2.4.0/devsper/missions/mission_planner.py +70 -0
- devsper-2.4.0/devsper/missions/mission_runner.py +232 -0
- devsper-2.4.0/devsper/missions/models.py +60 -0
- devsper-2.4.0/devsper/missions/research/__init__.py +6 -0
- devsper-2.4.0/devsper/missions/research/editor_agent.py +10 -0
- devsper-2.4.0/devsper/missions/research/researcher_agent.py +10 -0
- devsper-2.4.0/devsper/missions/research/reviewer_agent.py +10 -0
- devsper-2.4.0/devsper/missions/research/writer_agent.py +10 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/nodes/controller.py +95 -6
- devsper-2.4.0/devsper/platform/redis_results_sink.py +181 -0
- devsper-2.4.0/devsper/platform/reporter.py +104 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/platform/request_builder.py +18 -1
- {devsper-2.2.0 → devsper-2.4.0}/devsper/platform/runtime_events.py +63 -7
- {devsper-2.2.0 → devsper-2.4.0}/devsper/providers/base.py +9 -3
- devsper-2.4.0/devsper/runtime/__init__.py +34 -0
- devsper-2.4.0/devsper/runtime/agent_pool.py +85 -0
- devsper-2.4.0/devsper/runtime/agent_runner.py +79 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/runtime/clarification_manager.py +16 -0
- devsper-2.4.0/devsper/runtime/event_stream.py +58 -0
- devsper-2.4.0/devsper/runtime/execution_graph.py +101 -0
- devsper-2.4.0/devsper/runtime/executor.py +210 -0
- devsper-2.4.0/devsper/runtime/hitl.py +71 -0
- devsper-2.4.0/devsper/runtime/model_router.py +44 -0
- devsper-2.4.0/devsper/runtime/planner.py +28 -0
- devsper-2.4.0/devsper/runtime/retry.py +61 -0
- devsper-2.4.0/devsper/runtime/speculative_planner.py +51 -0
- devsper-2.4.0/devsper/runtime/state_manager.py +52 -0
- devsper-2.4.0/devsper/runtime/task_runner.py +87 -0
- devsper-2.4.0/devsper/runtime/tool_runner.py +169 -0
- devsper-2.4.0/devsper/server/swarmworker.py +193 -0
- devsper-2.4.0/devsper/storage/__init__.py +1 -0
- devsper-2.4.0/devsper/storage/uploads/__init__.py +4 -0
- devsper-2.4.0/devsper/storage/uploads/store.py +42 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/swarm/executor.py +33 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/swarm/swarm.py +1 -1
- devsper-2.4.0/devsper/tools/__init__.py +40 -0
- devsper-2.4.0/devsper/tools/default/__init__.py +15 -0
- devsper-2.4.0/devsper/tools/default/fetch_url.py +46 -0
- devsper-2.4.0/devsper/tools/default/python_exec.py +37 -0
- devsper-2.4.0/devsper/tools/default/read_csv.py +80 -0
- devsper-2.4.0/devsper/tools/default/upload_file.py +36 -0
- devsper-2.4.0/devsper/tools/default/web_search.py +87 -0
- devsper-2.4.0/devsper/tools/hitl_request.py +53 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/memory/store_memory.py +6 -1
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/registry.py +12 -18
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/system/run_shell_command.py +26 -8
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/tool_runner.py +2 -1
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tui/app.py +40 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tui/dashboard_screen.py +19 -0
- devsper-2.4.0/devsper/tui/mission_view.py +44 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/types/event.py +22 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/utils/event_logger.py +41 -9
- {devsper-2.2.0 → devsper-2.4.0}/pyproject.toml +2 -2
- devsper-2.4.0/tests/integration/test_controller_restart_hitl.py +37 -0
- devsper-2.4.0/tests/integration/test_duplicate_event_delivery.py +45 -0
- devsper-2.4.0/tests/integration/test_event_idempotency.py +34 -0
- devsper-2.4.0/tests/integration/test_event_retry.py +54 -0
- devsper-2.4.0/tests/integration/test_hitl_pause_resume.py +75 -0
- devsper-2.4.0/tests/integration/test_sse_reconnect.py +16 -0
- devsper-2.4.0/tests/integration/test_sse_stream.py +54 -0
- devsper-2.4.0/tests/integration/test_worker_crash_recovery.py +25 -0
- devsper-2.4.0/tests/memory/test_memory_context_run_scope.py +16 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_clarification.py +86 -6
- devsper-2.4.0/tests/test_missions.py +20 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_platform_runtime_events.py +17 -1
- devsper-2.4.0/tests/tools/test_core_tool_registry.py +25 -0
- {devsper-2.2.0 → devsper-2.4.0}/uv.lock +3 -1
- devsper-2.2.0/devsper/cli/commands/cloud.py +0 -349
- devsper-2.2.0/devsper/runtime/__init__.py +0 -12
- devsper-2.2.0/devsper/runtime/executor.py +0 -5
- devsper-2.2.0/devsper/tools/__init__.py +0 -33
- {devsper-2.2.0 → devsper-2.4.0}/.env.example +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/.github/FUNDING.yml +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/.github/workflows/pypi-publish.yml +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/.github/workflows/release-on-tag.yml +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/.github/workflows/worker-release.yml +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/.gitignore +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/.python-version +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/CODE_OF_CONDUCT.md +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/CONTRIBUTING.md +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/Cargo.lock +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/Cargo.toml +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/Dockerfile.local-pool +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/LICENSE +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/README.md +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/SECURITY.md +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/benchmarks/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/benchmarks/bench_dataset_analysis.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/benchmarks/bench_repository_analysis.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/benchmarks/bench_research_pipeline.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/branding/logo.svg +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/agents/a2a/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/agents/a2a/client.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/agents/a2a/discovery.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/agents/a2a/server.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/agents/a2a/tool_adapter.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/agents/a2a/types.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/agents/critic.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/agents/identity.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/agents/message_bus.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/agents/registry.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/agents/roles.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/agents/run_agent.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/analytics/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/analytics/tool_analytics.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/audit/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/audit/logger.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/budget.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/bus/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/bus/backends/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/bus/backends/base.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/bus/backends/memory.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/bus/backends/redis.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/bus/message.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/bus/schema_version.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/bus/topics.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/cache/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/cache/embedding_index.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/cache/hashing.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/cache/store.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/cache/task_cache.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/cli/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/cli/export.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/cli/github_oauth.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/cli/init.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/cli/run_progress.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/cli/ui/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/cli/ui/controller_run_view.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/cli/ui/errors.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/cli/ui/logging.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/cli/ui/onboarding.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/cli/ui/progress.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/cli/ui/theme.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/cluster/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/cluster/election.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/cluster/local.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/cluster/node_info.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/cluster/registry.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/cluster/router.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/cluster/state_backend.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/compliance/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/compliance/pii.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/config/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/config/config_loader.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/credentials/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/credentials/cli.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/credentials/migration.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/credentials/store.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/dashboard/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/dashboard/dashboard.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/dev/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/dev/builder.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/dev/debugger.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/dev/repo_index.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/dev/sandbox.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/dev/scaffold.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/docs/architecture/execution-model.md +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/embeddings/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/embeddings/service.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/events.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/explainability/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/explainability/decision_tree.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/explainability/rationale.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/explainability/simulation.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/export/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/export/branding.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/export/collector.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/export/manifest.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/export/model.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/export/packager.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/export/pdf.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/export/service.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/export/writers.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/hitl/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/hitl/approval.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/hitl/escalation.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/intelligence/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/intelligence/adaptation.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/intelligence/analysis/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/intelligence/analysis/analyzer.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/intelligence/analysis/cost_estimator.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/intelligence/analysis/formatter.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/intelligence/analysis/run_report.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/intelligence/learning_engine.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/intelligence/strategies/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/intelligence/strategies/base.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/intelligence/strategies/code_analysis_strategy.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/intelligence/strategies/data_science_strategy.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/intelligence/strategies/document_pipeline_strategy.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/intelligence/strategies/experiment_strategy.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/intelligence/strategies/research_strategy.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/intelligence/strategy_selector.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/intelligence/synthesis.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/intelligence/task_optimizer.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/knowledge/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/knowledge/extractor.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/knowledge/knowledge_graph.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/knowledge/query.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/memory/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/memory/consolidation.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/memory/embeddings.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/memory/memory_index.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/memory/memory_router.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/memory/memory_store.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/memory/memory_types.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/memory/namespaces.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/memory/platform_memory.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/memory/redis_memory.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/memory/scoring.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/memory/store.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/memory/summarizer.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/memory/supermemory_rust_ranker.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/nodes/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/nodes/rpc.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/nodes/single.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/nodes/worker.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/orchestration/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/orchestration/meta_planner.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/orchestration/priority_queue.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/platform/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/plugins/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/plugins/marketplace/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/plugins/plugin_loader.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/plugins/plugin_registry.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/policy/client.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/pool/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/pool/config.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/pool/crypto.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/pool/local_pool.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/pool/manager.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/pool/models.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/pool/org_pool.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/pool/profiles/dev.toml +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/pool/profiles/local.toml +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/pool/profiles/prod.toml +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/pool/security.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/pool/store.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/pool/worker_runner.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/protocol/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/protocol/client.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/protocol/schema.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/protocol/server.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/protocols/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/providers/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/providers/anthropic.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/providers/complexity_router.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/providers/gemini.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/providers/github.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/providers/model_router.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/providers/openai.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/providers/router/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/providers/router/backends/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/providers/router/backends/anthropic_backend.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/providers/router/backends/custom_backend.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/providers/router/backends/gemini_backend.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/providers/router/backends/github_backend.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/providers/router/backends/ollama_backend.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/providers/router/backends/openai_backend.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/providers/router/backends/vllm_backend.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/providers/router/base.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/providers/router/factory.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/providers/router/legacy.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/providers/router/router.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/reasoning/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/reasoning/graph.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/reasoning/nodes.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/reasoning/store.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/runtime/health.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/runtime/replay.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/runtime/replay_engine.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/runtime/run_history.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/runtime/task_state.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/runtime/telemetry.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/runtime/trace_tree.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/runtime/visualize.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/sandbox/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/sandbox/sandbox.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/server/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/server/events.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/server/topology.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/swarm/checkpointer.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/swarm/map_reduce.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/swarm/planner.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/swarm/prefetcher.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/swarm/scheduler.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/swarm/speculation.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/telemetry/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/telemetry/otel.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/telemetry/pricing.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/base.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/code_intelligence/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/code_intelligence/api_surface_extractor.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/code_intelligence/architecture_analyzer.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/code_intelligence/codebase_indexer.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/code_intelligence/dependency_graph_builder.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/code_intelligence/design_pattern_detector.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/code_intelligence/large_function_detector.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/code_intelligence/module_responsibility_mapper.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/code_intelligence/parallel_codebase_analysis.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/code_intelligence/refactor_candidate_detector.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/code_intelligence/repository_semantic_index.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/code_intelligence/test_coverage_estimator.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/coding/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/coding/analyze_code_complexity.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/coding/dependency_analyzer.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/coding/extract_functions.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/coding/format_python.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/coding/generate_docstrings.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/coding/generate_unit_tests.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/coding/lint_python.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/coding/refactor_function.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/coding/repo_structure_map.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/coding/run_python.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/data/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/data/column_type_detection.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/data/csv_summary.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/data/dataframe_filter.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/data/dataframe_groupby.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/data/dataframe_stats.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/data/dataset_sampling.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/data/dataset_schema.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/data/json_pretty_print.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/data/json_query.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/data/missing_value_report.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/data_science/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/data_science/correlation_heatmap.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/data_science/dataset_bias_detector.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/data_science/dataset_distribution_report.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/data_science/dataset_drift_detector.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/data_science/dataset_outlier_detector.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/data_science/dataset_profile.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/data_science/distributed_dataset_processor.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/data_science/feature_engineering_suggestions.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/data_science/feature_importance_estimator.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/data_science/model_input_validator.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/data_science/time_series_analyzer.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/documents/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/documents/_docproc.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/documents/document_to_markdown.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/documents/extract_document_images.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/documents/extract_document_text.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/documents/extract_equations.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/documents/extract_tables.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/documents/summarize_document.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/documents/write_latex_document.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/documents/write_markdown_document.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/documents/write_word_document.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/experiments/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/experiments/bootstrap_estimator.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/experiments/experiment_report_generator.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/experiments/experiment_tracker.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/experiments/grid_search_runner.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/experiments/model_benchmark_runner.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/experiments/monte_carlo_experiment.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/experiments/parameter_sweep_runner.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/experiments/result_comparator.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/experiments/simulation_runner.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/experiments/statistical_significance_test.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/experiments/swarm_map_reduce.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/filesystem/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/filesystem/append_file.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/filesystem/file_hash.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/filesystem/file_line_count.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/filesystem/file_metadata.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/filesystem/file_preview.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/filesystem/find_large_files.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/filesystem/list_directory.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/filesystem/read_file.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/filesystem/search_files.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/filesystem/write_file.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/flagship/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/flagship/distributed_document_analysis.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/flagship/docproc_corpus_pipeline.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/flagship/repository_semantic_map.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/flagship/research_graph_builder.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/flagship/swarm_experiment_runner.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/knowledge/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/knowledge/citation_graph_builder.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/knowledge/concept_frequency_analyzer.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/knowledge/corpus_builder.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/knowledge/cross_document_entity_linker.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/knowledge/document_corpus_summary.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/knowledge/document_topic_extractor.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/knowledge/knowledge_graph_extractor.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/knowledge/timeline_extractor.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/math/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/math/calculate_expression.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/math/correlation.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/math/distribution_summary.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/math/histogram.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/math/linear_regression.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/math/matrix_multiply.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/math/mean_std.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/math/monte_carlo_simulation.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/math/polynomial_fit.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/math/random_sample.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/mcp/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/mcp/adapter.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/mcp/client.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/mcp/discovery.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/memory/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/memory/delete_memory.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/memory/list_memory.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/memory/search_memory.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/memory/summarize_memory.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/memory/tag_memory.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/pipelines.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/research/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/research/arxiv_download.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/research/arxiv_search.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/research/citation_extractor.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/research/duckduckgo_search.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/research/paper_metadata_extractor.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/research/paper_summarizer.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/research/research_question_generator.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/research/topic_cluster.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/research/web_search.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/research/wikipedia_lookup.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/research_advanced/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/research_advanced/citation_context_extractor.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/research_advanced/literature_review_generator.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/research_advanced/methodology_extractor.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/research_advanced/paper_contribution_extractor.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/research_advanced/paper_dataset_identifier.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/research_advanced/paper_method_comparator.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/research_advanced/paper_similarity_search.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/research_advanced/paper_trend_analyzer.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/research_advanced/parallel_document_analyzer.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/research_advanced/research_gap_finder.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/research_advanced/research_topic_mapper.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/research_advanced/swarm_literature_review.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/scoring/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/scoring/report.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/scoring/scorer.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/scoring/selector.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/scoring/store.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/selector.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/system/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/system/cpu_usage.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/system/disk_usage.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/system/environment_variables.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/system/memory_usage.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/system/pip_install.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/system/pip_search.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/system/process_list.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/system/python_package_list.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tools/system/system_info.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tui/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tui/activity_feed_view.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tui/adaptive_tasks_view.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tui/agent_role_view.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tui/dev_view.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tui/inject_screen.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tui/knowledge_graph_view.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tui/layout.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tui/logs_view.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tui/memory_view.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tui/performance_view.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tui/reasoning_graph_view.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tui/results_view.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tui/swarm_view.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tui/task_detail_screen.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/tui/task_view.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/types/exceptions.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/types/swarm.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/types/task.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/upgrade/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/upgrade/changelog.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/upgrade/cli.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/upgrade/installer.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/upgrade/notifier.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/upgrade/version_check.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/utils/http.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/utils/models.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/visualization/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/visualization/dag_export.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/workflow/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/workflow/conditions.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/workflow/context.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/workflow/loader.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/workflow/resolver.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/workflow/runner.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/workflow/schema.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper/workflow/validator.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/devsper.toml +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/docker-compose.yml +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/examples/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/examples/_common.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/examples/_config.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/examples/coding/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/examples/coding/analyze_repository.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/examples/coding/generate_docs.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/examples/coding/refactor_candidates.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/examples/data_science/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/examples/data_science/dataset_analysis.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/examples/data_science/run_experiments.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/examples/demo_swarm.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/examples/distributed/README.md +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/examples/distributed/controller.toml +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/examples/distributed/parallel_survey.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/examples/distributed/run_controller.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/examples/distributed/run_demo.sh +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/examples/distributed/run_worker.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/examples/distributed/worker.toml +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/examples/documents/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/examples/documents/analyze_documents.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/examples/experiments/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/examples/experiments/monte_carlo_demo.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/examples/experiments/parameter_sweep.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/examples/research/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/examples/research/literature_review.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/examples/research/research_gap_analysis.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/examples/research/research_graph.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/requirements-docs.txt +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/scripts/README.md +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/scripts/seed_tool_scores.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/scripts/test_tool_scoring_cli.sh +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/scripts/test_tool_scoring_full.sh +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/scripts/test_tool_scoring_smoke.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/scripts/test_v2_router.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/supermemory-core/Cargo.toml +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/supermemory-core/src/main.rs +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/agents/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/agents/test_roles.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/benchmarks/test_v16_perf.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/intelligence/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/intelligence/test_adaptation.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/intelligence/test_learning_engine.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/intelligence/test_strategy_selector.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/intelligence/test_task_optimizer.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/memory/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/memory/test_agent_memory_integration.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/memory/test_memory_index.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/memory/test_memory_router.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/memory/test_memory_store.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/pool/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/pool/fixtures.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/pool/test_crypto.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/pool/test_e2e_redis_loop.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/pool/test_heartbeat_eviction.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/pool/test_local_pool.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/pool/test_org_pool.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/pool/test_priority_chain.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/pool/test_rate_limiting.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/reasoning/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/reasoning/test_reasoning_graph.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/runtime/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/runtime/test_budget.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/runtime/test_otel_phase1.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/runtime/test_packager.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/runtime/test_protocol_schema.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/runtime/test_replay.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/runtime/test_replay_engine.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/runtime/test_telemetry.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/runtime/test_visualize.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_agent.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_analysis.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_analytics.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_auto_model.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_clarification_multinode.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_config_loader.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_credentials.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_cross_boundary_serialization.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_dag_export.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_dev_agents.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_dev_build_cmd.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_dev_debugger.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_dev_repo_index.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_dev_sandbox.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_dev_scaffold.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_distributed_bugs.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_embeddings_service.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_event_logger.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_executor.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_export_runs.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_github_provider.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_init.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_knowledge_graph.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_knowledge_query.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_map_reduce.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_memory_evolution.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_memory_isolation.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_model_router.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_planner.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_plugins.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_protocols.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_router.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_scheduler.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_speculation.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_strategies.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_swarm.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_task_cache.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_tool_scoring.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_tool_selector.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_upgrade.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_v110.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_v16.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_v17.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_v18.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_v19.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/test_workflow.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/tools/__init__.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/tools/test_code_intelligence_tools.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/tools/test_coding_tools.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/tools/test_data_science_tools.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/tools/test_data_tools.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/tools/test_document_tools.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/tools/test_experiments_tools.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/tools/test_filesystem_tools.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/tools/test_flagship_tools.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/tools/test_knowledge_tools.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/tools/test_math_tools.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/tools/test_memory_tools.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/tools/test_pipelines.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/tools/test_registry.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/tools/test_research_advanced_tools.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/tools/test_research_tools.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/tools/test_system_tools.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/tests/tools/test_tool_runner.py +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/worker/.dockerignore +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/worker/Cargo.lock +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/worker/Cargo.toml +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/worker/Dockerfile +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/worker/README.md +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/worker/src/budget.rs +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/worker/src/bus.rs +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/worker/src/claim.rs +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/worker/src/clarification.rs +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/worker/src/config.rs +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/worker/src/controller.rs +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/worker/src/election.rs +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/worker/src/error.rs +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/worker/src/executor.rs +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/worker/src/health.rs +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/worker/src/heartbeat.rs +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/worker/src/lib.rs +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/worker/src/main.rs +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/worker/src/metrics.rs +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/worker/src/reconnect.rs +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/worker/src/registry.rs +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/worker/src/router.rs +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/worker/src/rpc.rs +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/worker/src/scheduler.rs +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/worker/src/snapshot.rs +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/worker/src/telemetry.rs +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/worker/src/types/agent.rs +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/worker/src/types/event.rs +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/worker/src/types/mod.rs +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/worker/src/types/node.rs +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/worker/src/types/task.rs +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/worker/src/worker_node.rs +0 -0
- {devsper-2.2.0 → devsper-2.4.0}/worker/tests/integration.rs +0 -0
|
@@ -7,6 +7,43 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [2.4.0] — 2026-03-31
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **Distributed runtime extension layer** — Added `devsper.distributed` package with controller and worker-runtime wrappers for clean orchestration composition.
|
|
15
|
+
- **Agent pool** — Added `runtime/agent_pool.py` with reusable, worker-aware concurrent agent leasing (`acquire_agent`, `release_agent`, `run_agent`, `run_parallel`).
|
|
16
|
+
- **Model router (runtime layer)** — Added `runtime/model_router.py` for planning/reasoning/validation model routing with fallback chains.
|
|
17
|
+
- **Speculative planner (runtime layer)** — Added `runtime/speculative_planner.py` to predict and stage speculative successor tasks.
|
|
18
|
+
- **Runtime HITL manager** — Added `runtime/hitl.py` for pause/resume and explicit human-input request lifecycle handling.
|
|
19
|
+
- **Execution graph upgrades** — Extended runtime execution graph with worker assignment metadata and distributed lineage tracking.
|
|
20
|
+
|
|
21
|
+
### Changed
|
|
22
|
+
|
|
23
|
+
- **Executor composition** — Runtime executor now integrates AgentPool, ModelRouter, speculative planning hooks, and distributed assignment tracking while preserving default behavior.
|
|
24
|
+
- **Task runner routing** — Task execution now supports pool-backed agent execution, scoped model routing, and fallback chain handling.
|
|
25
|
+
- **Tool execution control** — Runtime ToolRunner now supports bounded concurrency, dependency-aware batching, per-call timeout, cancellation, and structured results.
|
|
26
|
+
- **Event backpressure handling** — Runtime event stream now uses bounded queues with controlled overflow behavior.
|
|
27
|
+
- **Runtime docs** — Updated runtime architecture docs in `devsper/README.md` with distributed flow, worker/controller lifecycle, and HITL/speculative execution details.
|
|
28
|
+
|
|
29
|
+
## [2.3.0] — 2026-03-30
|
|
30
|
+
|
|
31
|
+
### Added
|
|
32
|
+
|
|
33
|
+
- **Autonomous Missions capability layer** — New `devsper.missions` package for long-horizon autonomous execution across research, coding, and experiment workflows.
|
|
34
|
+
- **Mission planner and DAG generation** — Added `missions/mission_planner.py` to break goals into mission tasks, assign role agents, and define dependency graphs.
|
|
35
|
+
- **Research mission workflow** — Added mission agents (`researcher_agent`, `reviewer_agent`, `writer_agent`, `editor_agent`) and end-to-end flow: research → critique → improve → finalize.
|
|
36
|
+
- **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.
|
|
37
|
+
- **Iteration engine** — Added `missions/iteration_loop.py` for quality-threshold-driven iterative execution with critique/improvement cycles.
|
|
38
|
+
- **Mission memory** — Added `missions/mission_memory.py` to persist research findings, decisions, and experiment artifacts per mission.
|
|
39
|
+
- **Long-running mission support** — Added checkpointing/resume support in `missions/mission_runner.py` plus HITL task-gating callback support.
|
|
40
|
+
- **Mission UI** — Added dashboard `MissionView` and TUI mission execution path (`mission:research ...`, `mission:coding ...`, `mission:experiment ...`) to show goal, DAG, and iteration progress.
|
|
41
|
+
|
|
42
|
+
### Changed
|
|
43
|
+
|
|
44
|
+
- **SDK surface** — Exported `MissionRunner` from `devsper` package root for straightforward mission execution from Python.
|
|
45
|
+
- **Testing** — Added runtime tests for mission DAG planning and checkpoint creation.
|
|
46
|
+
|
|
10
47
|
## [2.2.0] — 2026-03-28
|
|
11
48
|
|
|
12
49
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: devsper
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.4.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
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
# Devsper Runtime Core
|
|
2
|
+
|
|
3
|
+
Devsper runtime is built as a modular orchestration core with bounded concurrency, dynamic DAG mutation, and event-stream-driven observability.
|
|
4
|
+
|
|
5
|
+
## Runtime Architecture Diagram
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
User Task
|
|
9
|
+
|
|
|
10
|
+
v
|
|
11
|
+
Swarm.run()
|
|
12
|
+
|
|
|
13
|
+
v
|
|
14
|
+
Planner -> Scheduler (DAG)
|
|
15
|
+
|
|
|
16
|
+
v
|
|
17
|
+
Runtime Executor ------------------------------+
|
|
18
|
+
| |
|
|
19
|
+
+-> RuntimeStateManager |
|
|
20
|
+
+-> ExecutionGraph |
|
|
21
|
+
+-> RuntimeEventStream -> EventLog -> SSE |
|
|
22
|
+
+-> TaskRunner |
|
|
23
|
+
+-> AgentRunner (optional stream-tool loop)
|
|
24
|
+
+-> Agent
|
|
25
|
+
+-> ToolRunner / tools.tool_runner
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Core Components
|
|
29
|
+
|
|
30
|
+
- `swarm/swarm.py`
|
|
31
|
+
- Public entrypoint (`Swarm`), config/wiring, planning and execution bootstrap.
|
|
32
|
+
- `runtime/executor.py`
|
|
33
|
+
- Event-driven scheduler loop, bounded parallel execution, cancellation propagation, dynamic task injection.
|
|
34
|
+
- `runtime/state_manager.py`
|
|
35
|
+
- Concurrency-safe task state transitions and runtime DAG mutation entrypoint.
|
|
36
|
+
- `runtime/execution_graph.py`
|
|
37
|
+
- Execution graph with lineage, edges, attempts, and status transitions.
|
|
38
|
+
- `runtime/planner.py`
|
|
39
|
+
- Runtime wrapper for dynamic planner expansion and parent-child lineage.
|
|
40
|
+
- `runtime/task_runner.py`
|
|
41
|
+
- Task lifecycle orchestration with scoped retries and fallback model handling.
|
|
42
|
+
- `runtime/agent_runner.py`
|
|
43
|
+
- Async agent wrapper with optional streaming tool invocation loop.
|
|
44
|
+
- `runtime/tool_runner.py`
|
|
45
|
+
- Parallel tool scheduler with bounded concurrency, dependency-aware batching, timeout, and cancellation.
|
|
46
|
+
- `runtime/event_stream.py`
|
|
47
|
+
- In-process stream with queue backpressure policy (drop-oldest on overflow).
|
|
48
|
+
- `runtime/retry.py`
|
|
49
|
+
- Retry scopes (`tool`, `agent`, `task`, `model_fallback`) and backoff policies.
|
|
50
|
+
|
|
51
|
+
## Execution Lifecycle
|
|
52
|
+
|
|
53
|
+
1. `Swarm.run()` creates root task, plans subtasks, and builds scheduler DAG.
|
|
54
|
+
2. Executor emits `EXECUTOR_STARTED` and begins bounded task dispatch.
|
|
55
|
+
3. Ready tasks transition to running through `RuntimeStateManager`.
|
|
56
|
+
4. `TaskRunner` executes with scoped retries.
|
|
57
|
+
5. `AgentRunner` may invoke tools (normal or streaming tool loop).
|
|
58
|
+
6. Task completion/failure updates scheduler + execution graph.
|
|
59
|
+
7. Adaptive mode can inject follow-up tasks at runtime.
|
|
60
|
+
8. Executor emits `EXECUTOR_FINISHED` and `RUN_COMPLETED`.
|
|
61
|
+
|
|
62
|
+
## Tool Calling Flow
|
|
63
|
+
|
|
64
|
+
1. Agent determines tool intent from model output.
|
|
65
|
+
2. Tool calls are parsed and scheduled.
|
|
66
|
+
3. `ToolRunner.run_many(...)` executes calls in parallel with:
|
|
67
|
+
- `max_concurrency` semaphore
|
|
68
|
+
- dependency constraints (`depends_on`)
|
|
69
|
+
- per-call timeouts
|
|
70
|
+
- cancellation checks
|
|
71
|
+
4. Results are isolated per call and fed back into agent loop.
|
|
72
|
+
|
|
73
|
+
## Planner Flow
|
|
74
|
+
|
|
75
|
+
1. Initial decomposition by `swarm/planner.py`.
|
|
76
|
+
2. Runtime execution completes a task.
|
|
77
|
+
3. `RuntimePlanner.expand(...)` optionally creates follow-up tasks.
|
|
78
|
+
4. `RuntimeStateManager.add_tasks(...)` mutates DAG safely.
|
|
79
|
+
5. `ExecutionGraph` records lineage from parent task.
|
|
80
|
+
|
|
81
|
+
## Concurrency Model
|
|
82
|
+
|
|
83
|
+
- Bounded executor workers (`worker_count`).
|
|
84
|
+
- Bounded tool concurrency (`ToolRunner` semaphore).
|
|
85
|
+
- Queue backpressure in event streaming (`max_queue_size` with controlled dropping).
|
|
86
|
+
- Cooperative pause/resume and cancellation propagation across runtime loops.
|
|
87
|
+
- Lock-guarded scheduler mutations via `RuntimeStateManager`.
|
|
88
|
+
|
|
89
|
+
## Distributed Runtime Architecture
|
|
90
|
+
|
|
91
|
+
```text
|
|
92
|
+
Controller
|
|
93
|
+
|
|
|
94
|
+
v
|
|
95
|
+
Worker Pool
|
|
96
|
+
|
|
|
97
|
+
v
|
|
98
|
+
Worker Runtime
|
|
99
|
+
|
|
|
100
|
+
v
|
|
101
|
+
Runtime Executor
|
|
102
|
+
|
|
|
103
|
+
v
|
|
104
|
+
Agent Pool
|
|
105
|
+
|
|
|
106
|
+
v
|
|
107
|
+
Tool Runner
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
- `distributed/controller.py`
|
|
111
|
+
- Worker registry, health state, load-aware assignment, reassignment hooks.
|
|
112
|
+
- `distributed/worker_runtime.py`
|
|
113
|
+
- Worker-local runtime composition: `Executor`, `AgentPool`, `ModelRouter`, `ToolRunner`.
|
|
114
|
+
- Existing multi-node transport/control remains in `nodes/controller.py` and `nodes/worker.py`.
|
|
115
|
+
|
|
116
|
+
## Worker Lifecycle
|
|
117
|
+
|
|
118
|
+
1. Worker registers with controller.
|
|
119
|
+
2. Controller assigns tasks based on health and load.
|
|
120
|
+
3. Worker executes task locally through runtime executor stack.
|
|
121
|
+
4. Worker returns completion/failure.
|
|
122
|
+
5. Controller updates worker/task state and reassigns on failure.
|
|
123
|
+
|
|
124
|
+
## Controller Lifecycle
|
|
125
|
+
|
|
126
|
+
1. Track worker registration and health.
|
|
127
|
+
2. Assign ready tasks using load-aware strategy.
|
|
128
|
+
3. Handle failures and perform retry/reassignment.
|
|
129
|
+
4. Maintain global execution progress via event/log channels.
|
|
130
|
+
|
|
131
|
+
## Agent Pool
|
|
132
|
+
|
|
133
|
+
- `AgentPool` manages reusable agent instances per worker.
|
|
134
|
+
- Supports `acquire_agent`, `release_agent`, `run_agent`, and `run_parallel`.
|
|
135
|
+
- Enables worker-local, concurrent, reuse-based execution.
|
|
136
|
+
|
|
137
|
+
## Speculative Execution
|
|
138
|
+
|
|
139
|
+
- `SpeculativePlanner` predicts likely successor tasks.
|
|
140
|
+
- Executor marks/schedules speculative tasks early.
|
|
141
|
+
- Unused speculative branches can be cancelled on dependency failure.
|
|
142
|
+
|
|
143
|
+
## HITL Flow
|
|
144
|
+
|
|
145
|
+
1. Agent indicates human input is required.
|
|
146
|
+
2. Runtime emits HITL/clarification event.
|
|
147
|
+
3. Task pauses until response or timeout.
|
|
148
|
+
4. Execution resumes or fails based on response policy.
|
|
@@ -20,7 +20,7 @@ except Exception: # pragma: no cover - missing dist metadata (e.g. bare checkou
|
|
|
20
20
|
|
|
21
21
|
from devsper.config import get_config
|
|
22
22
|
|
|
23
|
-
__all__ = ["Swarm", "get_config", "__version__"]
|
|
23
|
+
__all__ = ["Swarm", "MissionRunner", "get_config", "__version__"]
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
def __getattr__(name: str):
|
|
@@ -29,4 +29,8 @@ def __getattr__(name: str):
|
|
|
29
29
|
from devsper.swarm.swarm import Swarm # local import
|
|
30
30
|
|
|
31
31
|
return Swarm
|
|
32
|
+
if name == "MissionRunner":
|
|
33
|
+
from devsper.missions import MissionRunner # local import
|
|
34
|
+
|
|
35
|
+
return MissionRunner
|
|
32
36
|
raise AttributeError(name)
|