devsper 2.5.0__tar.gz → 2.6.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.5.0 → devsper-2.6.0}/CHANGELOG.md +14 -0
- {devsper-2.5.0 → devsper-2.6.0}/PKG-INFO +3 -1
- {devsper-2.5.0 → devsper-2.6.0}/devsper/agents/agent.py +2 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/cli/main.py +50 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/config/schema.py +2 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/swarm/swarm.py +61 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/telemetry/__init__.py +8 -0
- devsper-2.6.0/devsper/telemetry/trulens.py +119 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper.toml +2 -0
- {devsper-2.5.0 → devsper-2.6.0}/pyproject.toml +10 -1
- {devsper-2.5.0 → devsper-2.6.0}/uv.lock +198 -2
- {devsper-2.5.0 → devsper-2.6.0}/.env.example +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/.github/FUNDING.yml +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/.github/workflows/pypi-publish.yml +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/.github/workflows/release-on-tag.yml +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/.github/workflows/worker-release.yml +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/.gitignore +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/.python-version +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/CODE_OF_CONDUCT.md +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/CONTRIBUTING.md +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/Cargo.lock +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/Cargo.toml +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/Dockerfile.local-pool +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/LICENSE +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/README.md +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/SECURITY.md +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/benchmarks/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/benchmarks/bench_dataset_analysis.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/benchmarks/bench_repository_analysis.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/benchmarks/bench_research_pipeline.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/branding/logo.svg +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/README.md +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/agents/a2a/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/agents/a2a/client.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/agents/a2a/discovery.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/agents/a2a/server.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/agents/a2a/tool_adapter.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/agents/a2a/types.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/agents/critic.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/agents/identity.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/agents/message_bus.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/agents/registry.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/agents/roles.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/agents/run_agent.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/analytics/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/analytics/tool_analytics.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/audit/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/audit/logger.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/budget.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/bus/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/bus/backends/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/bus/backends/base.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/bus/backends/memory.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/bus/backends/redis.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/bus/message.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/bus/schema_version.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/bus/topics.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/cache/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/cache/embedding_index.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/cache/hashing.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/cache/store.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/cache/task_cache.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/cli/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/cli/commands/cloud.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/cli/export.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/cli/github_oauth.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/cli/init.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/cli/run_progress.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/cli/ui/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/cli/ui/components.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/cli/ui/controller_run_view.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/cli/ui/errors.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/cli/ui/logging.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/cli/ui/onboarding.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/cli/ui/progress.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/cli/ui/run_view.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/cli/ui/theme.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/cluster/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/cluster/election.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/cluster/local.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/cluster/node_info.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/cluster/registry.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/cluster/router.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/cluster/state_backend.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/compliance/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/compliance/pii.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/config/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/config/config_loader.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/config/defaults.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/config/resolver.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/connectors/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/connectors/base.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/connectors/registry.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/connectors/sample_connector.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/contracts/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/contracts/platform_event_type.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/core/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/core/agent/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/core/agent/runner.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/core/hitl/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/core/hitl/state_machine.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/core/memory/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/core/memory/shared_memory.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/core/reporting/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/core/reporting/publisher.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/core/runtime/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/core/runtime/durability.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/core/runtime/orchestrator.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/core/tools/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/core/tools/base_tool.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/core/tools/loader.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/core/tools/registry.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/credentials/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/credentials/cli.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/credentials/migration.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/credentials/store.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/dashboard/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/dashboard/dashboard.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/debug_events.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/dev/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/dev/builder.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/dev/debugger.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/dev/repo_index.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/dev/sandbox.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/dev/scaffold.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/distributed/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/distributed/controller.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/distributed/worker_runtime.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/docs/architecture/execution-model.md +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/embeddings/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/embeddings/service.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/events.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/explainability/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/explainability/decision_tree.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/explainability/rationale.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/explainability/simulation.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/export/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/export/branding.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/export/collector.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/export/manifest.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/export/model.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/export/packager.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/export/pdf.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/export/service.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/export/writers.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/hitl/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/hitl/approval.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/hitl/escalation.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/integrations/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/integrations/langchain_adapter.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/integrations/langgraph_adapter.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/intelligence/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/intelligence/adaptation.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/intelligence/analysis/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/intelligence/analysis/analyzer.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/intelligence/analysis/cost_estimator.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/intelligence/analysis/formatter.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/intelligence/analysis/run_report.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/intelligence/learning_engine.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/intelligence/strategies/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/intelligence/strategies/base.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/intelligence/strategies/code_analysis_strategy.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/intelligence/strategies/data_science_strategy.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/intelligence/strategies/document_pipeline_strategy.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/intelligence/strategies/experiment_strategy.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/intelligence/strategies/research_strategy.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/intelligence/strategy_selector.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/intelligence/synthesis.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/intelligence/task_optimizer.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/knowledge/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/knowledge/extractor.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/knowledge/knowledge_graph.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/knowledge/query.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/memory/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/memory/consolidation.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/memory/context.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/memory/embeddings.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/memory/memory_index.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/memory/memory_router.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/memory/memory_store.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/memory/memory_types.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/memory/namespaces.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/memory/platform_memory.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/memory/redis_memory.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/memory/scoring.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/memory/store.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/memory/summarizer.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/memory/supermemory_rust_ranker.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/missions/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/missions/base_agent.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/missions/coding/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/missions/coding/architect_agent.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/missions/coding/coder_agent.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/missions/coding/debugger_agent.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/missions/coding/docs_agent.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/missions/coding/tester_agent.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/missions/iteration_loop.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/missions/mission_memory.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/missions/mission_planner.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/missions/mission_runner.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/missions/models.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/missions/research/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/missions/research/editor_agent.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/missions/research/researcher_agent.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/missions/research/reviewer_agent.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/missions/research/writer_agent.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/nodes/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/nodes/controller.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/nodes/rpc.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/nodes/single.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/nodes/worker.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/orchestration/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/orchestration/meta_planner.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/orchestration/priority_queue.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/platform/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/platform/redis_results_sink.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/platform/reporter.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/platform/request_builder.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/platform/run_context.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/platform/runtime_events.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/plugins/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/plugins/marketplace/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/plugins/plugin_loader.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/plugins/plugin_registry.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/policy/client.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/pool/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/pool/config.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/pool/crypto.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/pool/local_pool.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/pool/manager.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/pool/models.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/pool/org_pool.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/pool/profiles/dev.toml +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/pool/profiles/local.toml +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/pool/profiles/prod.toml +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/pool/security.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/pool/store.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/pool/worker_runner.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/protocol/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/protocol/client.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/protocol/schema.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/protocol/server.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/protocols/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/providers/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/providers/anthropic.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/providers/base.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/providers/complexity_router.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/providers/gemini.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/providers/github.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/providers/model_router.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/providers/openai.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/providers/router/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/providers/router/backends/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/providers/router/backends/anthropic_backend.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/providers/router/backends/custom_backend.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/providers/router/backends/gemini_backend.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/providers/router/backends/github_backend.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/providers/router/backends/ollama_backend.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/providers/router/backends/openai_backend.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/providers/router/backends/vllm_backend.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/providers/router/base.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/providers/router/factory.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/providers/router/legacy.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/providers/router/router.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/reasoning/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/reasoning/graph.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/reasoning/nodes.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/reasoning/store.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/runtime/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/runtime/agent_pool.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/runtime/agent_runner.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/runtime/clarification_manager.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/runtime/event_stream.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/runtime/execution_graph.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/runtime/executor.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/runtime/health.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/runtime/hitl.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/runtime/model_router.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/runtime/planner.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/runtime/replay.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/runtime/replay_engine.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/runtime/retry.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/runtime/run_history.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/runtime/speculative_planner.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/runtime/state_manager.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/runtime/task_runner.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/runtime/task_state.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/runtime/telemetry.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/runtime/tool_runner.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/runtime/trace_tree.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/runtime/visualize.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/sandbox/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/sandbox/sandbox.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/server/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/server/events.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/server/memory_utils.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/server/swarmworker.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/server/topology.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/storage/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/storage/uploads/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/storage/uploads/store.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/swarm/checkpointer.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/swarm/executor.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/swarm/map_reduce.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/swarm/planner.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/swarm/prefetcher.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/swarm/scheduler.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/swarm/speculation.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/telemetry/otel.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/telemetry/pricing.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/base.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/code_intelligence/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/code_intelligence/api_surface_extractor.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/code_intelligence/architecture_analyzer.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/code_intelligence/codebase_indexer.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/code_intelligence/dependency_graph_builder.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/code_intelligence/design_pattern_detector.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/code_intelligence/large_function_detector.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/code_intelligence/module_responsibility_mapper.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/code_intelligence/parallel_codebase_analysis.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/code_intelligence/refactor_candidate_detector.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/code_intelligence/repository_semantic_index.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/code_intelligence/test_coverage_estimator.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/coding/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/coding/analyze_code_complexity.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/coding/dependency_analyzer.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/coding/extract_functions.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/coding/format_python.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/coding/generate_docstrings.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/coding/generate_unit_tests.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/coding/lint_python.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/coding/refactor_function.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/coding/repo_structure_map.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/coding/run_python.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/data/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/data/column_type_detection.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/data/csv_summary.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/data/dataframe_filter.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/data/dataframe_groupby.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/data/dataframe_stats.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/data/dataset_sampling.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/data/dataset_schema.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/data/json_pretty_print.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/data/json_query.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/data/missing_value_report.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/data_science/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/data_science/correlation_heatmap.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/data_science/dataset_bias_detector.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/data_science/dataset_distribution_report.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/data_science/dataset_drift_detector.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/data_science/dataset_outlier_detector.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/data_science/dataset_profile.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/data_science/distributed_dataset_processor.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/data_science/feature_engineering_suggestions.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/data_science/feature_importance_estimator.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/data_science/model_input_validator.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/data_science/time_series_analyzer.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/default/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/default/fetch_url.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/default/python_exec.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/default/read_csv.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/default/upload_file.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/default/web_search.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/documents/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/documents/_docproc.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/documents/document_to_markdown.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/documents/extract_document_images.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/documents/extract_document_text.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/documents/extract_equations.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/documents/extract_tables.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/documents/summarize_document.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/documents/write_latex_document.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/documents/write_markdown_document.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/documents/write_word_document.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/experiments/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/experiments/bootstrap_estimator.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/experiments/experiment_report_generator.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/experiments/experiment_tracker.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/experiments/grid_search_runner.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/experiments/model_benchmark_runner.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/experiments/monte_carlo_experiment.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/experiments/parameter_sweep_runner.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/experiments/result_comparator.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/experiments/simulation_runner.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/experiments/statistical_significance_test.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/experiments/swarm_map_reduce.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/filesystem/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/filesystem/append_file.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/filesystem/file_hash.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/filesystem/file_line_count.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/filesystem/file_metadata.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/filesystem/file_preview.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/filesystem/find_large_files.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/filesystem/list_directory.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/filesystem/read_file.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/filesystem/search_files.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/filesystem/write_file.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/flagship/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/flagship/distributed_document_analysis.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/flagship/docproc_corpus_pipeline.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/flagship/repository_semantic_map.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/flagship/research_graph_builder.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/flagship/swarm_experiment_runner.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/hitl_request.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/knowledge/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/knowledge/citation_graph_builder.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/knowledge/concept_frequency_analyzer.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/knowledge/corpus_builder.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/knowledge/cross_document_entity_linker.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/knowledge/document_corpus_summary.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/knowledge/document_topic_extractor.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/knowledge/knowledge_graph_extractor.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/knowledge/timeline_extractor.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/math/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/math/calculate_expression.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/math/correlation.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/math/distribution_summary.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/math/histogram.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/math/linear_regression.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/math/matrix_multiply.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/math/mean_std.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/math/monte_carlo_simulation.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/math/polynomial_fit.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/math/random_sample.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/mcp/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/mcp/adapter.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/mcp/client.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/mcp/discovery.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/memory/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/memory/delete_memory.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/memory/list_memory.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/memory/search_memory.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/memory/store_memory.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/memory/summarize_memory.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/memory/tag_memory.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/pipelines.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/registry.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/research/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/research/arxiv_download.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/research/arxiv_search.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/research/citation_extractor.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/research/duckduckgo_search.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/research/paper_metadata_extractor.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/research/paper_summarizer.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/research/research_question_generator.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/research/topic_cluster.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/research/web_search.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/research/wikipedia_lookup.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/research_advanced/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/research_advanced/citation_context_extractor.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/research_advanced/literature_review_generator.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/research_advanced/methodology_extractor.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/research_advanced/paper_contribution_extractor.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/research_advanced/paper_dataset_identifier.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/research_advanced/paper_method_comparator.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/research_advanced/paper_similarity_search.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/research_advanced/paper_trend_analyzer.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/research_advanced/parallel_document_analyzer.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/research_advanced/research_gap_finder.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/research_advanced/research_topic_mapper.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/research_advanced/swarm_literature_review.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/scoring/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/scoring/report.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/scoring/scorer.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/scoring/selector.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/scoring/store.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/selector.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/system/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/system/cpu_usage.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/system/disk_usage.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/system/environment_variables.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/system/memory_usage.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/system/pip_install.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/system/pip_search.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/system/process_list.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/system/python_package_list.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/system/run_shell_command.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/system/system_info.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tools/tool_runner.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tui/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tui/activity_feed_view.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tui/adaptive_tasks_view.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tui/agent_role_view.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tui/app.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tui/dashboard_screen.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tui/dev_view.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tui/inject_screen.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tui/knowledge_graph_view.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tui/layout.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tui/logs_view.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tui/memory_view.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tui/mission_view.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tui/performance_view.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tui/reasoning_graph_view.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tui/results_view.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tui/swarm_view.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tui/task_detail_screen.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/tui/task_view.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/types/event.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/types/exceptions.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/types/swarm.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/types/task.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/upgrade/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/upgrade/changelog.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/upgrade/cli.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/upgrade/installer.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/upgrade/notifier.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/upgrade/version_check.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/utils/event_logger.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/utils/http.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/utils/models.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/visualization/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/visualization/dag_export.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/workflow/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/workflow/conditions.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/workflow/context.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/workflow/loader.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/workflow/resolver.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/workflow/runner.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/workflow/schema.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/devsper/workflow/validator.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/docker-compose.yml +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/examples/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/examples/_common.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/examples/_config.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/examples/coding/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/examples/coding/analyze_repository.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/examples/coding/generate_docs.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/examples/coding/refactor_candidates.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/examples/data_science/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/examples/data_science/dataset_analysis.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/examples/data_science/run_experiments.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/examples/demo_swarm.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/examples/distributed/README.md +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/examples/distributed/controller.toml +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/examples/distributed/parallel_survey.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/examples/distributed/run_controller.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/examples/distributed/run_demo.sh +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/examples/distributed/run_worker.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/examples/distributed/worker.toml +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/examples/documents/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/examples/documents/analyze_documents.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/examples/experiments/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/examples/experiments/monte_carlo_demo.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/examples/experiments/parameter_sweep.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/examples/langchain_agent.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/examples/langgraph_swarm.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/examples/research/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/examples/research/literature_review.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/examples/research/research_gap_analysis.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/examples/research/research_graph.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/memory_utils.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/scripts/README.md +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/scripts/qa_e2e_stabilization.sh +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/scripts/seed_tool_scores.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/scripts/test_tool_scoring_cli.sh +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/scripts/test_tool_scoring_full.sh +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/scripts/test_tool_scoring_smoke.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/scripts/test_v2_router.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/supermemory-core/Cargo.toml +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/supermemory-core/src/main.rs +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/agents/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/agents/test_roles.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/benchmarks/test_v16_perf.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/integration/test_controller_restart_hitl.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/integration/test_duplicate_event_delivery.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/integration/test_event_idempotency.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/integration/test_event_retry.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/integration/test_hitl_pause_resume.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/integration/test_sse_reconnect.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/integration/test_sse_stream.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/integration/test_worker_crash_recovery.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/intelligence/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/intelligence/test_adaptation.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/intelligence/test_learning_engine.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/intelligence/test_strategy_selector.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/intelligence/test_task_optimizer.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/memory/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/memory/test_agent_memory_integration.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/memory/test_memory_context_run_scope.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/memory/test_memory_index.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/memory/test_memory_router.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/memory/test_memory_store.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/pool/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/pool/fixtures.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/pool/test_crypto.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/pool/test_e2e_redis_loop.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/pool/test_heartbeat_eviction.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/pool/test_local_pool.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/pool/test_org_pool.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/pool/test_priority_chain.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/pool/test_rate_limiting.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/reasoning/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/reasoning/test_reasoning_graph.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/runtime/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/runtime/test_budget.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/runtime/test_otel_phase1.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/runtime/test_packager.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/runtime/test_protocol_schema.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/runtime/test_replay.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/runtime/test_replay_engine.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/runtime/test_telemetry.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/runtime/test_visualize.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_agent.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_analysis.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_analytics.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_auto_model.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_clarification.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_clarification_multinode.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_config_loader.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_credentials.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_cross_boundary_serialization.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_dag_export.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_dev_agents.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_dev_build_cmd.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_dev_debugger.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_dev_repo_index.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_dev_sandbox.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_dev_scaffold.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_distributed_bugs.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_embeddings_service.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_event_logger.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_execution_graph_meta.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_executor.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_export_runs.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_github_provider.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_init.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_knowledge_graph.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_knowledge_query.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_langchain_adapter.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_langgraph_adapter.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_map_reduce.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_memory_evolution.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_memory_isolation.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_missions.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_model_router.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_planner.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_platform_runtime_events.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_plugins.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_protocols.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_router.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_scheduler.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_speculation.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_strategies.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_swarm.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_task_cache.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_tool_scoring.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_tool_selector.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_upgrade.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_v110.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_v16.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_v17.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_v18.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_v19.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/test_workflow.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/tools/__init__.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/tools/test_code_intelligence_tools.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/tools/test_coding_tools.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/tools/test_core_tool_registry.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/tools/test_data_science_tools.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/tools/test_data_tools.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/tools/test_document_tools.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/tools/test_experiments_tools.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/tools/test_filesystem_tools.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/tools/test_flagship_tools.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/tools/test_knowledge_tools.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/tools/test_math_tools.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/tools/test_memory_tools.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/tools/test_pipelines.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/tools/test_registry.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/tools/test_research_advanced_tools.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/tools/test_research_tools.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/tools/test_system_tools.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/tests/tools/test_tool_runner.py +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/worker/.dockerignore +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/worker/Cargo.lock +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/worker/Cargo.toml +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/worker/Dockerfile +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/worker/README.md +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/worker/src/budget.rs +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/worker/src/bus.rs +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/worker/src/claim.rs +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/worker/src/clarification.rs +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/worker/src/config.rs +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/worker/src/controller.rs +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/worker/src/election.rs +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/worker/src/error.rs +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/worker/src/executor.rs +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/worker/src/health.rs +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/worker/src/heartbeat.rs +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/worker/src/lib.rs +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/worker/src/main.rs +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/worker/src/metrics.rs +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/worker/src/reconnect.rs +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/worker/src/registry.rs +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/worker/src/router.rs +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/worker/src/rpc.rs +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/worker/src/scheduler.rs +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/worker/src/snapshot.rs +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/worker/src/telemetry.rs +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/worker/src/types/agent.rs +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/worker/src/types/event.rs +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/worker/src/types/mod.rs +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/worker/src/types/node.rs +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/worker/src/types/task.rs +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/worker/src/worker_node.rs +0 -0
- {devsper-2.5.0 → devsper-2.6.0}/worker/tests/integration.rs +0 -0
|
@@ -7,6 +7,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [2.6.0] — 2026-04-06
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **TruLens observability integration** — Added first-class TruLens instrumentation for swarm runs and agent calls, with configurable runtime toggles in `[telemetry]` (`trulens_enabled`, `trulens_database_url`) and recorder/session exports in `devsper.telemetry`.
|
|
15
|
+
- **CLI observability dashboard command** — Added `devsper observe` to launch the TruLens dashboard locally with optional `--port` and `--db` overrides.
|
|
16
|
+
- **Optional `trulens` extra** — Added `devsper[trulens]` dependency group for straightforward TruLens installation.
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
|
|
20
|
+
- **Swarm execution path** — `Swarm.run` now records via a TruLens custom app wrapper when enabled, with safe fallback to the standard runtime path if TruLens initialization or recorder setup fails.
|
|
21
|
+
- **Agent call capture** — `Agent.run` is instrumented for per-call telemetry capture when TruLens is installed.
|
|
22
|
+
- **Telemetry defaults and examples** — Updated default config template to include TruLens options and local database guidance.
|
|
23
|
+
|
|
10
24
|
## [2.5.0] — 2026-04-06
|
|
11
25
|
|
|
12
26
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: devsper
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.6.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
|
|
@@ -75,6 +75,8 @@ Requires-Dist: fastapi>=0.110; extra == 'server'
|
|
|
75
75
|
Requires-Dist: sse-starlette>=2.0; extra == 'server'
|
|
76
76
|
Requires-Dist: uvicorn>=0.29; extra == 'server'
|
|
77
77
|
Requires-Dist: vektori>=0.1.1; extra == 'server'
|
|
78
|
+
Provides-Extra: trulens
|
|
79
|
+
Requires-Dist: trulens-core>=1.0; extra == 'trulens'
|
|
78
80
|
Provides-Extra: worker
|
|
79
81
|
Description-Content-Type: text/markdown
|
|
80
82
|
|
|
@@ -15,6 +15,7 @@ from devsper.events import (
|
|
|
15
15
|
ClarificationField,
|
|
16
16
|
ClarificationRequest,
|
|
17
17
|
)
|
|
18
|
+
from devsper.telemetry.trulens import instrument as _tru_instrument
|
|
18
19
|
|
|
19
20
|
log = logging.getLogger(__name__)
|
|
20
21
|
|
|
@@ -765,6 +766,7 @@ class Agent:
|
|
|
765
766
|
answers[f.question] = self._default_answer_for_field(f)
|
|
766
767
|
return answers
|
|
767
768
|
|
|
769
|
+
@_tru_instrument
|
|
768
770
|
def run(self, request: AgentRequest) -> AgentResponse:
|
|
769
771
|
"""Stateless run: all context in AgentRequest, all output in AgentResponse."""
|
|
770
772
|
import time
|
|
@@ -2068,6 +2068,33 @@ def _run_analytics() -> int:
|
|
|
2068
2068
|
return 0
|
|
2069
2069
|
|
|
2070
2070
|
|
|
2071
|
+
def _run_observe(port: int = 8501, db: str = "") -> int:
|
|
2072
|
+
"""Launch the TruLens observability dashboard."""
|
|
2073
|
+
try:
|
|
2074
|
+
from devsper.telemetry.trulens import init_trulens, get_session
|
|
2075
|
+
except ImportError:
|
|
2076
|
+
print("TruLens is not installed. Run: uv pip install 'devsper[trulens]'")
|
|
2077
|
+
return 1
|
|
2078
|
+
|
|
2079
|
+
session = get_session() or init_trulens(database_url=db)
|
|
2080
|
+
if session is None:
|
|
2081
|
+
print(
|
|
2082
|
+
"TruLens is not installed or failed to initialize.\n"
|
|
2083
|
+
"Run: uv pip install 'devsper[trulens]'"
|
|
2084
|
+
)
|
|
2085
|
+
return 1
|
|
2086
|
+
|
|
2087
|
+
db_url = getattr(session, "connector", None)
|
|
2088
|
+
db_label = str(db or ".devsper/trulens.sqlite")
|
|
2089
|
+
print(f"Opening TruLens dashboard — db: {db_label} port: {port}")
|
|
2090
|
+
print("Press Ctrl-C to stop.")
|
|
2091
|
+
try:
|
|
2092
|
+
session.run_dashboard(port=port)
|
|
2093
|
+
except KeyboardInterrupt:
|
|
2094
|
+
pass
|
|
2095
|
+
return 0
|
|
2096
|
+
|
|
2097
|
+
|
|
2071
2098
|
def _run_tools(args: object) -> int:
|
|
2072
2099
|
"""List tools with reliability scores, or reset score history."""
|
|
2073
2100
|
from rich.console import Console
|
|
@@ -4032,6 +4059,29 @@ Examples:
|
|
|
4032
4059
|
)
|
|
4033
4060
|
version_parser.set_defaults(func=_run_version)
|
|
4034
4061
|
|
|
4062
|
+
observe_parser = subparsers.add_parser(
|
|
4063
|
+
"observe",
|
|
4064
|
+
help="Launch TruLens observability dashboard",
|
|
4065
|
+
description="Open the TruLens dashboard for browsing run records, traces, and feedback.",
|
|
4066
|
+
epilog="""
|
|
4067
|
+
Examples:
|
|
4068
|
+
devsper observe
|
|
4069
|
+
devsper observe --port 8502
|
|
4070
|
+
devsper observe --db sqlite:///custom.sqlite
|
|
4071
|
+
""",
|
|
4072
|
+
formatter_class=argparse.RawDescriptionHelpFormatter,
|
|
4073
|
+
)
|
|
4074
|
+
observe_parser.add_argument(
|
|
4075
|
+
"--port", type=int, default=8501, help="Dashboard port (default: 8501)"
|
|
4076
|
+
)
|
|
4077
|
+
observe_parser.add_argument(
|
|
4078
|
+
"--db",
|
|
4079
|
+
default="",
|
|
4080
|
+
metavar="URL",
|
|
4081
|
+
help="TruLens database URL (default: sqlite:///.devsper/trulens.sqlite)",
|
|
4082
|
+
)
|
|
4083
|
+
observe_parser.set_defaults(func=lambda a: _run_observe(a.port, a.db))
|
|
4084
|
+
|
|
4035
4085
|
health_parser = subparsers.add_parser(
|
|
4036
4086
|
"health",
|
|
4037
4087
|
help="Health and readiness check",
|
|
@@ -109,6 +109,8 @@ class TelemetryConfig(BaseModel):
|
|
|
109
109
|
otel_endpoint: str = ""
|
|
110
110
|
otel_headers: dict[str, str] = Field(default_factory=dict)
|
|
111
111
|
cost_tracking: bool = True
|
|
112
|
+
trulens_enabled: bool = True
|
|
113
|
+
trulens_database_url: str = "" # empty = SQLite default (~/.trulens/)
|
|
112
114
|
|
|
113
115
|
|
|
114
116
|
class BudgetConfig(BaseModel):
|
|
@@ -11,11 +11,14 @@ User code:
|
|
|
11
11
|
|
|
12
12
|
import asyncio
|
|
13
13
|
import json
|
|
14
|
+
import logging
|
|
14
15
|
import os
|
|
15
16
|
import threading
|
|
16
17
|
from pathlib import Path
|
|
17
18
|
from datetime import datetime, timezone
|
|
18
19
|
|
|
20
|
+
log = logging.getLogger(__name__)
|
|
21
|
+
|
|
19
22
|
from devsper.types.task import Task
|
|
20
23
|
from devsper.types.event import Event, events
|
|
21
24
|
from devsper.utils.event_logger import EventLog
|
|
@@ -28,6 +31,12 @@ from devsper.agents.agent import Agent
|
|
|
28
31
|
from devsper.agents.registry import AgentRegistry
|
|
29
32
|
from devsper.budget import BudgetManager
|
|
30
33
|
from devsper.telemetry import instrument_swarm_run, record_exception
|
|
34
|
+
from devsper.telemetry.trulens import (
|
|
35
|
+
init_trulens,
|
|
36
|
+
get_session,
|
|
37
|
+
make_recorder,
|
|
38
|
+
instrument as _tru_instrument,
|
|
39
|
+
)
|
|
31
40
|
|
|
32
41
|
|
|
33
42
|
def _fake_config():
|
|
@@ -79,6 +88,22 @@ def _persist_dag(scheduler: Scheduler, event_log: EventLog, execution_graph: obj
|
|
|
79
88
|
json.dump({"nodes": nodes, "edges": edges}, f, indent=0)
|
|
80
89
|
|
|
81
90
|
|
|
91
|
+
class _TruSwarmApp:
|
|
92
|
+
"""Thin TruLens-instrumented wrapper for swarm execution.
|
|
93
|
+
|
|
94
|
+
TruLens @instrument marks this method so every call is captured as a record
|
|
95
|
+
when a TruCustomApp recorder is active. The Swarm delegates to this wrapper
|
|
96
|
+
only when TruLens is enabled; otherwise _run_core() is called directly.
|
|
97
|
+
"""
|
|
98
|
+
|
|
99
|
+
def __init__(self, swarm: "Swarm") -> None:
|
|
100
|
+
self._swarm = swarm
|
|
101
|
+
|
|
102
|
+
@_tru_instrument
|
|
103
|
+
def execute(self, user_task: str, hitl_resolver: object = None) -> dict:
|
|
104
|
+
return self._swarm._run_core(user_task, hitl_resolver)
|
|
105
|
+
|
|
106
|
+
|
|
82
107
|
class RunResult(dict):
|
|
83
108
|
"""Backward-compatible run result map with optional metadata."""
|
|
84
109
|
|
|
@@ -200,6 +225,18 @@ class Swarm:
|
|
|
200
225
|
self._last_reasoning_store = None
|
|
201
226
|
self._pause_event = threading.Event()
|
|
202
227
|
self._pause_event.set()
|
|
228
|
+
# Initialize TruLens session if enabled in config
|
|
229
|
+
_tele = getattr(cfg, "telemetry", None) if cfg is not None else None
|
|
230
|
+
if getattr(_tele, "trulens_enabled", True):
|
|
231
|
+
try:
|
|
232
|
+
from devsper import __version__
|
|
233
|
+
|
|
234
|
+
init_trulens(
|
|
235
|
+
database_url=str(getattr(_tele, "trulens_database_url", "") or ""),
|
|
236
|
+
app_version=__version__,
|
|
237
|
+
)
|
|
238
|
+
except Exception as _tlu_exc:
|
|
239
|
+
log.warning("TruLens init skipped: %s", _tlu_exc)
|
|
203
240
|
|
|
204
241
|
def pause(self) -> None:
|
|
205
242
|
"""Pause the executor: currently-running tasks finish, no new tasks start."""
|
|
@@ -209,11 +246,35 @@ class Swarm:
|
|
|
209
246
|
"""Resume the executor so new tasks can be picked."""
|
|
210
247
|
self._pause_event.set()
|
|
211
248
|
|
|
249
|
+
def _trulens_enabled(self) -> bool:
|
|
250
|
+
"""Return True if TruLens recording is configured and a session exists."""
|
|
251
|
+
tele = getattr(self._config, "telemetry", None)
|
|
252
|
+
enabled = bool(getattr(tele, "trulens_enabled", True)) if tele else True
|
|
253
|
+
return enabled and get_session() is not None
|
|
254
|
+
|
|
212
255
|
def run(self, user_task: str, hitl_resolver: object = None) -> dict[str, str]:
|
|
213
256
|
"""
|
|
214
257
|
Create root task → plan subtasks → add to scheduler → run executor → return task_id → result.
|
|
215
258
|
hitl_resolver: optional (approval, policy) -> bool for in-process approval prompts.
|
|
259
|
+
|
|
260
|
+
When TruLens is enabled the run is recorded via TruCustomApp so inputs,
|
|
261
|
+
outputs, and per-agent calls are stored in the TruLens database.
|
|
216
262
|
"""
|
|
263
|
+
if self._trulens_enabled():
|
|
264
|
+
try:
|
|
265
|
+
from devsper import __version__
|
|
266
|
+
|
|
267
|
+
_app = _TruSwarmApp(self)
|
|
268
|
+
recorder = make_recorder(_app, app_name="devsper", app_version=__version__)
|
|
269
|
+
if recorder is not None:
|
|
270
|
+
with recorder as _recording:
|
|
271
|
+
return _app.execute(user_task, hitl_resolver)
|
|
272
|
+
except Exception as _tru_exc:
|
|
273
|
+
log.warning("TruLens recording setup failed, falling back: %s", _tru_exc)
|
|
274
|
+
return self._run_core(user_task, hitl_resolver)
|
|
275
|
+
|
|
276
|
+
def _run_core(self, user_task: str, hitl_resolver: object = None) -> dict[str, str]:
|
|
277
|
+
"""Internal run implementation (called directly or via TruLens wrapper)."""
|
|
217
278
|
run_id = getattr(self.event_log, "run_id", "") or ""
|
|
218
279
|
with instrument_swarm_run(run_id, user_task) as span:
|
|
219
280
|
if span is not None:
|
|
@@ -7,13 +7,21 @@ from devsper.telemetry.otel import (
|
|
|
7
7
|
record_exception,
|
|
8
8
|
)
|
|
9
9
|
from devsper.telemetry.pricing import PRICING, estimate_cost_usd
|
|
10
|
+
from devsper.telemetry.trulens import (
|
|
11
|
+
get_session as get_trulens_session,
|
|
12
|
+
init_trulens,
|
|
13
|
+
make_recorder as make_trulens_recorder,
|
|
14
|
+
)
|
|
10
15
|
|
|
11
16
|
__all__ = [
|
|
12
17
|
"PRICING",
|
|
13
18
|
"annotate_span",
|
|
14
19
|
"estimate_cost_usd",
|
|
15
20
|
"get_tracer",
|
|
21
|
+
"get_trulens_session",
|
|
22
|
+
"init_trulens",
|
|
16
23
|
"instrument_swarm_run",
|
|
24
|
+
"make_trulens_recorder",
|
|
17
25
|
"record_exception",
|
|
18
26
|
]
|
|
19
27
|
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"""TruLens observability — default for devsper 2.6.0+.
|
|
2
|
+
|
|
3
|
+
TruLens records every swarm run (input task → output results) and every agent
|
|
4
|
+
call (prompt → completion) into a local SQLite database at
|
|
5
|
+
``.devsper/trulens.sqlite`` (same directory as memory.db and tool_analytics.db).
|
|
6
|
+
|
|
7
|
+
The TruLens dashboard can be launched with::
|
|
8
|
+
|
|
9
|
+
from devsper.telemetry import get_trulens_session
|
|
10
|
+
get_trulens_session().run_dashboard()
|
|
11
|
+
|
|
12
|
+
OTEL spans are still emitted alongside TruLens records — they are complementary.
|
|
13
|
+
TruLens is the new *default* export layer; OTEL remains available for
|
|
14
|
+
infrastructure-level tracing (Grafana, Jaeger, etc.).
|
|
15
|
+
|
|
16
|
+
Configuration (devsper.toml):
|
|
17
|
+
|
|
18
|
+
[telemetry]
|
|
19
|
+
trulens_enabled = true
|
|
20
|
+
trulens_database_url = "" # empty = sqlite:///.devsper/trulens.sqlite
|
|
21
|
+
|
|
22
|
+
Install::
|
|
23
|
+
|
|
24
|
+
uv pip install "devsper[trulens]"
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
from __future__ import annotations
|
|
28
|
+
|
|
29
|
+
import logging
|
|
30
|
+
import os
|
|
31
|
+
from typing import Any
|
|
32
|
+
|
|
33
|
+
log = logging.getLogger(__name__)
|
|
34
|
+
|
|
35
|
+
# Default SQLite path — mirrors memory.db / tool_analytics.db location.
|
|
36
|
+
_DEFAULT_DB_PATH = ".devsper/trulens.sqlite"
|
|
37
|
+
_DEFAULT_DB_URL = f"sqlite:///{_DEFAULT_DB_PATH}"
|
|
38
|
+
|
|
39
|
+
try:
|
|
40
|
+
from trulens.core import TruSession
|
|
41
|
+
from trulens.apps.custom import TruCustomApp, instrument
|
|
42
|
+
|
|
43
|
+
_TRULENS_AVAILABLE = True
|
|
44
|
+
except ImportError:
|
|
45
|
+
_TRULENS_AVAILABLE = False
|
|
46
|
+
TruSession = None # type: ignore[assignment,misc]
|
|
47
|
+
TruCustomApp = None # type: ignore[assignment,misc]
|
|
48
|
+
|
|
49
|
+
def instrument(fn): # type: ignore[misc] # noqa: E306
|
|
50
|
+
"""No-op fallback when trulens-core is not installed."""
|
|
51
|
+
return fn
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
_session: Any = None # TruSession | None
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def init_trulens(
|
|
58
|
+
*,
|
|
59
|
+
database_url: str = "",
|
|
60
|
+
app_name: str = "devsper",
|
|
61
|
+
app_version: str = "",
|
|
62
|
+
) -> Any:
|
|
63
|
+
"""Initialize global TruLens session (idempotent).
|
|
64
|
+
|
|
65
|
+
Defaults to ``sqlite:///.devsper/trulens.sqlite`` — the same ``.devsper/``
|
|
66
|
+
directory used by ``memory.db`` and ``tool_analytics.db``.
|
|
67
|
+
|
|
68
|
+
Returns the session on success, or None if trulens-core is not installed
|
|
69
|
+
or initialization fails.
|
|
70
|
+
"""
|
|
71
|
+
global _session
|
|
72
|
+
if not _TRULENS_AVAILABLE:
|
|
73
|
+
log.debug("trulens-core not installed; TruLens observability skipped")
|
|
74
|
+
return None
|
|
75
|
+
if _session is not None:
|
|
76
|
+
return _session
|
|
77
|
+
url = database_url.strip() if database_url else _DEFAULT_DB_URL
|
|
78
|
+
# Ensure the .devsper/ directory exists for the default SQLite path.
|
|
79
|
+
if url == _DEFAULT_DB_URL:
|
|
80
|
+
os.makedirs(os.path.dirname(_DEFAULT_DB_PATH), exist_ok=True)
|
|
81
|
+
try:
|
|
82
|
+
_session = TruSession(database_url=url)
|
|
83
|
+
log.info(
|
|
84
|
+
"TruLens session initialized (app=%s v%s db=%s)",
|
|
85
|
+
app_name,
|
|
86
|
+
app_version or "?",
|
|
87
|
+
url,
|
|
88
|
+
)
|
|
89
|
+
except Exception as exc:
|
|
90
|
+
log.warning("TruLens init failed: %s", exc)
|
|
91
|
+
return _session
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
def get_session() -> Any:
|
|
95
|
+
"""Return the active TruLens session, or None."""
|
|
96
|
+
return _session
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
def make_recorder(
|
|
100
|
+
app: Any,
|
|
101
|
+
*,
|
|
102
|
+
app_name: str = "devsper",
|
|
103
|
+
app_version: str = "",
|
|
104
|
+
) -> Any:
|
|
105
|
+
"""Wrap an instrumented app with TruCustomApp for recording.
|
|
106
|
+
|
|
107
|
+
Returns a TruCustomApp recorder, or None if TruLens is unavailable /
|
|
108
|
+
the session has not been initialized.
|
|
109
|
+
"""
|
|
110
|
+
if not _TRULENS_AVAILABLE or _session is None or TruCustomApp is None:
|
|
111
|
+
return None
|
|
112
|
+
try:
|
|
113
|
+
kwargs: dict[str, Any] = {"app_name": app_name}
|
|
114
|
+
if app_version:
|
|
115
|
+
kwargs["app_version"] = app_version
|
|
116
|
+
return TruCustomApp(app, **kwargs)
|
|
117
|
+
except Exception as exc:
|
|
118
|
+
log.warning("TruLens make_recorder failed: %s", exc)
|
|
119
|
+
return None
|
|
@@ -7,7 +7,7 @@ packages = ["devsper"]
|
|
|
7
7
|
|
|
8
8
|
[project]
|
|
9
9
|
name = "devsper"
|
|
10
|
-
version = "2.
|
|
10
|
+
version = "2.6.0"
|
|
11
11
|
description = "Orchestrate distributed swarms of AI agents that collaboratively solve complex tasks."
|
|
12
12
|
readme = "README.md"
|
|
13
13
|
license = "GPL-3.0-or-later"
|
|
@@ -70,6 +70,9 @@ distributed = [
|
|
|
70
70
|
"uvicorn>=0.29.0",
|
|
71
71
|
"hiredis>=2.3.0",
|
|
72
72
|
]
|
|
73
|
+
# TruLens observability (default since 2.6.0).
|
|
74
|
+
# trulens-core pins rich<14; we override that constraint via [tool.uv.override-dependencies].
|
|
75
|
+
trulens = ["trulens-core>=1.0"]
|
|
73
76
|
# Pin LangGraph explicitly for integrators (also pulled in via langchain).
|
|
74
77
|
langgraph = ["langgraph>=1.0.0,<2"]
|
|
75
78
|
worker = [] # distributed worker is a separate Rust binary (devsper-worker)
|
|
@@ -88,3 +91,9 @@ dev = [
|
|
|
88
91
|
"respx>=0.22.0",
|
|
89
92
|
"ruff>=0.15.5",
|
|
90
93
|
]
|
|
94
|
+
|
|
95
|
+
[tool.uv]
|
|
96
|
+
# trulens-core pins rich<14; textual (and devsper's TUI) requires rich>=14.
|
|
97
|
+
# Override so uv resolves to the version we actually need — rich 14.x is
|
|
98
|
+
# backward-compatible with the Console/Table APIs trulens uses.
|
|
99
|
+
override-dependencies = ["rich>=14.3.3"]
|