devsquad 4.5.9__tar.gz → 4.5.18__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.
- {devsquad-4.5.9 → devsquad-4.5.18}/PKG-INFO +22 -19
- {devsquad-4.5.9 → devsquad-4.5.18}/README.md +16 -16
- {devsquad-4.5.9 → devsquad-4.5.18}/devsquad.egg-info/PKG-INFO +22 -19
- {devsquad-4.5.9 → devsquad-4.5.18}/devsquad.egg-info/SOURCES.txt +8 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/devsquad.egg-info/requires.txt +5 -2
- {devsquad-4.5.9 → devsquad-4.5.18}/pyproject.toml +10 -4
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/api/routes/dispatch.py +1 -1
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/api/routes/lifecycle.py +2 -2
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/api/routes/metrics_gates.py +1 -1
- devsquad-4.5.18/scripts/check_bandit.py +185 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/check_dependency_sync.py +22 -5
- devsquad-4.5.18/scripts/check_dispatcher_size.py +198 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/check_doc_consistency.py +20 -1
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/check_hidden_content.py +70 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/check_module_activation.py +304 -17
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/check_test_quality.py +1 -1
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/check_version_consistency.py +174 -5
- devsquad-4.5.18/scripts/cli/__init__.py +8 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/cli/cli_visual.py +11 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/cli.py +67 -39
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/cli_dispatch.py +36 -6
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/cli_metrics.py +81 -2
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/cli_risks.py +108 -72
- devsquad-4.5.18/scripts/collaboration/_version.py +2 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/artifact_store.py +6 -3
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/async_coeffect_resolver.py +3 -2
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/async_coordinator.py +3 -2
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/ccr_store.py +8 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/code_graph_storage.py +15 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/coeffect.py +13 -9
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/config_manager.py +2 -2
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/dispatcher_mixins.py +9 -2
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/file_risk_store.py +169 -8
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/host_llm_bridge.py +122 -6
- devsquad-4.5.18/scripts/collaboration/host_llm_bridge_v2.py +699 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/llm_backend.py +191 -192
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/module_fiber.py +1 -1
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/order_chain_detector.py +51 -33
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/output_validator.py +2 -2
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/prometheus_metrics.py +60 -4
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/scratchpad_history_store.py +13 -5
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/skill_registry.py +67 -43
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/skillifier.py +1 -1
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/task_scale_gate.py +2 -2
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/worker.py +137 -98
- devsquad-4.5.18/scripts/collect_trae_traces.py +351 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/dashboard/components.py +1 -1
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/dashboard/dag_views.py +1 -1
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/dashboard/i18n.py +1 -1
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/history_manager.py +10 -1
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/mcp_server.py +1 -1
- devsquad-4.5.18/scripts/perf_baseline.py +89 -0
- devsquad-4.5.18/scripts/sync_skill_pack.py +501 -0
- devsquad-4.5.18/scripts/verify_prometheus_e2e.py +292 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/skills/__init__.py +1 -1
- devsquad-4.5.18/tests/test_check_bandit.py +246 -0
- devsquad-4.5.18/tests/test_check_dispatcher_size.py +176 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_check_version_consistency.py +59 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_cli_metrics.py +4 -2
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_docker_deployment.py +2 -2
- devsquad-4.5.18/tests/test_host_llm_bridge_v2.py +465 -0
- devsquad-4.5.9/scripts/cli/__init__.py +0 -1
- devsquad-4.5.9/scripts/collaboration/_version.py +0 -1
- devsquad-4.5.9/scripts/collaboration/host_llm_bridge_v2.py +0 -502
- devsquad-4.5.9/tests/test_host_llm_bridge_v2.py +0 -297
- {devsquad-4.5.9 → devsquad-4.5.18}/LICENSE +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/devsquad.egg-info/dependency_links.txt +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/devsquad.egg-info/entry_points.txt +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/devsquad.egg-info/top_level.txt +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/__init__.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/api/__init__.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/api/models.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/api/rate_limit.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/api/routes/__init__.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/api/routes/metrics.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/api/security.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/api_server.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/auth.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/benchmark_async_dispatch.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/benchmark_ponytail_smart.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/benchmark_real_llm.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/check_async_coverage.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/check_config_consistency.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/check_constructor_params.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/check_dependency_lock.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/check_test_pyramid.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/cli_audit.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/cli_backend.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/cli_doctor.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/cli_lifecycle.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/cli_modules.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/cli_sessions.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/cli_utils.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/__init__.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/adaptive_role_selector.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/adversarial_verify.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/agent_briefing.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/agent_identity.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/ai_semantic_matcher.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/anchor_checker.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/anti_rationalization.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/approval_gate.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/async_adapter.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/async_llm_backend.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/audit_logger.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/autonomous/__init__.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/autonomous/git_driver.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/autonomous/loop_controller.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/autonomous/notes_memory.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/autonomous/run_state.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/autonomous/sleep_guard.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/autonomous/smart_confirmation.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/backend_config.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/backend_paths.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/batch_scheduler.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/benchmark_regression_checker.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/cache_interface.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/checkpoint_manager.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/ci_feedback_adapter.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/cli_command_classifier.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/code_graph_query.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/code_knowledge_graph.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/code_map_generator.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/concern_pack_loader.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/confidence_score.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/connector_framework.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/consensus.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/consensus_gate.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/constants.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/content_cache.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/content_crusher.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/context_compressor.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/coordinator.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/dashboard_live_mode.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/debt_collector.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/dependency_hallucination_checker.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/deployment_compliance_checker.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/dispatch_audit.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/dispatch_component_factory.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/dispatch_effect.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/dispatch_hooks.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/dispatch_lifecycle.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/dispatch_models.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/dispatch_performance.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/dispatch_pre_steps.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/dispatch_rbac.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/dispatch_result_assembler.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/dispatch_services.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/dispatch_steps.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/dispatch_steps_base.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/dispatch_steps_consensus_mixin.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/dispatch_steps_feedback_mixin.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/dispatch_steps_mixins.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/dispatch_steps_quality_mixin.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/dispatch_steps_services_mixin.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/dispatcher.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/dispatcher_async_mixin.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/dispatcher_audit_mixin.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/dispatcher_base.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/dispatcher_config.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/dispatcher_error_mixin.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/dispatcher_factory.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/dispatcher_intent_mapper.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/dispatcher_lifecycle_mixin.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/dispatcher_loop_controller.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/dispatcher_status_mixin.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/dispatcher_transaction.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/dispatcher_utils_mixin.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/dora_metrics_collector.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/dual_layer_context.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/effect_registry.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/enhanced_worker.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/enterprise_feature.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/error_budget_tracker.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/event_bus.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/execution_guard.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/feature_usage_tracker.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/feedback_control_loop.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/file_bundler.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/five_axis_consensus.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/gap_analyzer.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/gather_core.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/gitlab_connector.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/input_validator.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/intent_workflow_mapper.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/judge_agent.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/language_parsers.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/learned_rule_store.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/lifecycle_gate.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/lifecycle_protocol.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/lifecycle_shortcut_adapter.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/lifecycle_shortcut_helpers.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/lifecycle_templates.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/llm_cache.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/llm_cache_async.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/llm_cache_base.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/llm_retry.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/llm_retry_async.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/llm_retry_base.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/loop_engineering/__init__.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/loop_engineering/discovery_probe.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/loop_engineering/handoff_adapter.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/loop_engineering/independent_evaluator.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/loop_engineering/kernel.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/loop_engineering/loop_scheduler.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/loop_engineering/models.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/loop_engineering/protocols.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/loop_engineering/rollback_strategy.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/loop_engineering/unified_memory.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/mce_adapter.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/memory_bridge.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/memory_claw_source.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/memory_forgetting.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/memory_index.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/memory_query.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/memory_serializer.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/memory_types.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/meta_skill_layering.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/micro_task_planner.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/models.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/models_base.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/models_dispatch.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/models_lifecycle.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/moka_backend.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/multi_host_adapter.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/multi_level_cache.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/multi_tenant.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/null_providers.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/operation_classifier.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/output_slicer.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/perf_baseline.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/performance_fingerprint.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/performance_monitor.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/permission_guard.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/plugins/__init__.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/plugins/hot_loader.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/ponytail_rule_injector.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/prompt_assembler.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/prompt_assembler_base.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/prompt_assembler_formatting_mixin.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/prompt_assembler_mixins.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/prompt_assembler_substitution_mixin.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/prompt_assembler_template_mixin.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/prompt_assembler_validation_mixin.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/prompt_dials.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/protocols.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/quality_calibration_gate.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/quality_probe_slice.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/rbac_engine.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/redesign_auditor.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/redesign_checkers.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/redis_cache.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/report_formatter.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/requirement_tracer.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/retrospective.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/review_checkers.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/risk_register.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/role_matcher.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/role_skill_loader.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/role_specific_mock_backend.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/rule_collector.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/scratchpad.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/secret_patterns.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/severity_router.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/similar_task_recommender.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/skill_extractor.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/skill_provider_builtin.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/skill_provider_mcp.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/skill_storage.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/standardized_role_template.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/task_completion_checker.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/tech_debt_manager.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/test_quality_guard.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/todo_drift_monitor.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/two_stage_review_gate.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/ue_test_accessibility_mixin.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/ue_test_framework.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/ue_test_framework_base.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/ue_test_heuristic_mixin.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/ue_test_journey_mixin.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/ue_test_mixins.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/ue_test_persona_mixin.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/unified_gate_engine.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/usage_tracker.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/user_friendly_error.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/verification_gate.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/viewpoint_registry.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/warmup_manager.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/workflow_engine.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/workflow_engine_base.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/workflow_engine_lifecycle_mixin.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/workflow_engine_mixins.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/workflow_engine_persistence_mixin.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/workflow_engine_state_mixin.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/workflow_engine_transition_mixin.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collaboration/yagni_checker.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/collect_baseline.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/dashboard/__init__.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/dashboard/app.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/dashboard/auth_views.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/dashboard/dispatch_views.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/dashboard/lifecycle_views.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/dashboard/metrics_views.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/dashboard/state.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/dashboard/v43_panels.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/dashboard.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/generate_benchmark_report.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/generate_quality_decision_report.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/qa/__init__.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/qa/deterministic_rule_engine.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/qa/models.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/qa/taste_dials.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/qa/uiux_analyzer.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/qa/uiux_subitems.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/qa/visual_regression.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/scan_pickle_payloads.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/utils/__init__.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/scripts/utils/_find_missing_hints.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/setup.cfg +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/skills/_version.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/skills/dispatch/handler.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/skills/intent/handler.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/skills/prototype/handler.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/skills/registry.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/skills/retrospective/__init__.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/skills/retrospective/handler.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/skills/review/handler.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/skills/security/handler.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/skills/teach/handler.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/skills/test/__init__.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/skills/test/handler.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_4pt_grid.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_adaptive_role_selector.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_adversarial_verify.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_agent_briefing.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_anchor_retrospective.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_anti_rationalization.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_antipattern_bans.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_api_budget_status_endpoint.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_api_security.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_api_server_v362.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_approval_gate.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_artifact_effect_binding.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_artifact_store.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_async_coordinator.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_async_modules.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_audit_logger.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_auth_phase5.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_autonomous.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_backend_config.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_benchmark_ponytail_smart.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_cache_interface.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_ccr_store.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_check_async_coverage.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_check_config_consistency.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_check_constructor_params.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_check_dependency_lock.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_check_hidden_content.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_check_test_pyramid.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_check_test_quality.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_ci_feedback_adapter.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_cli_audit.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_cli_command_classifier.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_cli_deep_v362.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_cli_doctor.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_cli_lifecycle.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_cli_phase5.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_code_knowledge_graph.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_collaboration_claw_integration_test.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_collaboration_context_compressor_test.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_collaboration_core_test.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_collaboration_dispatcher_test.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_collaboration_dispatcher_ux_test.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_collaboration_e2e_test.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_collaboration_enhanced_e2e_test.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_collaboration_llm_cache_test.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_collaboration_llm_retry_test.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_collaboration_mce_adapter_test.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_collaboration_memory_bridge_test.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_collaboration_performance_monitor_test.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_collaboration_permission_guard_test.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_collaboration_prompt_optimization_test.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_collaboration_role_mapping_test.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_collaboration_skillifier_test.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_collaboration_test_quality_guard.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_collaboration_test_quality_guard_test.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_collaboration_upstream_test.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_collaboration_warmup_manager_test.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_confidence_score.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_config_injection.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_consensus_dissent.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_consensus_fatigue.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_consensus_gate.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_content_cache.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_content_crusher.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_coordinator_smart_compression.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_dag_views.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_dashboard_live_mode.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_dashboard_split.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_dashboard_ui_e2e.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_dashboard_v43_panels.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_data_backup.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_debt_collector.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_deep_shallow.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_deletion_test.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_dependency_hallucination_checker.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_dependency_lock.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_deployment_compliance_checker.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_deterministic_rule_engine.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_dispatch_audit.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_dispatch_performance.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_dispatch_rbac.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_dispatch_steps.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_dispatcher_intent_mapper.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_dispatcher_loop_controller.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_dispatcher_mixins.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_dispatcher_phase5_core.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_dispatcher_transaction.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_dual_layer_context.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_effect_registry.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_enhanced_worker.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_fallback_fuse.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_feedback_control_loop.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_five_axis_consensus.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_flow_standalone.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_full_lifecycle_adapter.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_git_guardrails.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_gitlab_connector.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_glossary_loader.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_grilling_mode.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_handoff_redaction.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_history_manager_v362.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_host_bridge_unit.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_input_validator_phase5.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_input_validator_sensitive.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_intent_workflow_mapper.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_judge_agent.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_learned_rule_phase4.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_lifecycle_protocol.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_llm_auto_fallback.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_llm_backend_resolve.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_llm_cache_protocol.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_loop_engineering.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_loop_engineering_rollback.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_mcp_server_v362.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_memory_benchmarks.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_meta_skill_layering.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_micro_task_planner.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_moka_backend.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_multi_host_adapter.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_multi_tenant.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_multi_tenant_isolation_e2e.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_no_op_test.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_node_type_separation.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_null_providers.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_oklch_color.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_operation_classifier.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_order_chain_detector.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_output_slicer.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_output_validator_prompt_injection.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_perf_baseline.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_perf_baseline_ci_gate.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_performance_benchmarks.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_performance_fingerprint.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_performance_monitor_protocol.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_permission_guard_human_gate.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_permission_guard_phase5.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_phase4_ghost_feature_defense.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_pipeline_step19_20.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_plan_c_unified_architecture.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_plugins_hot_loader.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_ponytail_rule_injector.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_production_features.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_prometheus_metrics.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_prompt_dials.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_protocols.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_prototype_skill.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_qa_uiux_visual_regression.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_quick_bonus.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_rate_limit.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_rbac_engine.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_rbac_fail_closed.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_red_capable_gate.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_redesign_auditor.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_redis_cache.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_requirement_tracer.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_retry_jitter_strategies.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_role_skill_loader.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_rule_collector.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_rule_injection_security.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_secret_patterns.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_severity_router.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_similar_task_recommender.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_skill_registry_coverage.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_skill_security.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_sleep_guard.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_standardized_role_template.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_start_script.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_step_node_types.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_suggested_next_steps.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_task_completion_checker.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_task_scale_gate.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_taste_dials.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_tautological_seams.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_teach_skill.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_tech_debt_manager.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_todo_drift_monitor.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_token_budget_compressed_scratchpad.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_triage_label.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_two_stage_review_gate.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_ue_test_framework.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_uiux_subitems.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_usage_tracker_coverage.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_v39_e2e.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_v39_performance.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_v411_security_hardening.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_verification_gate.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_version.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_vertical_slice.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_worker_artifact_integration.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_workflow_engine.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_workflow_engine_base.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_workflow_engine_lifecycle.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_workflow_engine_state.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_workflow_engine_transition.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_workflow_persistence_coverage.py +0 -0
- {devsquad-4.5.9 → devsquad-4.5.18}/tests/test_yagni_checker.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: devsquad
|
|
3
|
-
Version: 4.5.
|
|
3
|
+
Version: 4.5.18
|
|
4
4
|
Summary: Production-Ready Multi-Role AI Task Orchestrator
|
|
5
5
|
Author-email: DevSquad Team <devsquad@example.com>
|
|
6
6
|
License: MIT
|
|
@@ -58,12 +58,15 @@ Requires-Dist: ruff==0.15.20; extra == "dev"
|
|
|
58
58
|
Requires-Dist: mypy==2.2.0; extra == "dev"
|
|
59
59
|
Requires-Dist: black==26.5.1; extra == "dev"
|
|
60
60
|
Requires-Dist: flake8>=6.0; extra == "dev"
|
|
61
|
-
Requires-Dist: httpx2>=2.
|
|
61
|
+
Requires-Dist: httpx2>=2.12.0; extra == "dev"
|
|
62
62
|
Requires-Dist: streamlit>=1.28.0; extra == "dev"
|
|
63
63
|
Requires-Dist: Pillow>=10.0.0; extra == "dev"
|
|
64
64
|
Requires-Dist: fakeredis>=2.30; extra == "dev"
|
|
65
65
|
Requires-Dist: redis>=5.0; extra == "dev"
|
|
66
66
|
Requires-Dist: hypothesis>=6.0; extra == "dev"
|
|
67
|
+
Requires-Dist: bandit[toml]>=1.7; extra == "dev"
|
|
68
|
+
Requires-Dist: pip-audit>=2.7; extra == "dev"
|
|
69
|
+
Requires-Dist: radon>=6.0; extra == "dev"
|
|
67
70
|
Provides-Extra: all
|
|
68
71
|
Requires-Dist: openai>=1.0; extra == "all"
|
|
69
72
|
Requires-Dist: anthropic>=0.18; extra == "all"
|
|
@@ -85,7 +88,7 @@ Requires-Dist: ruff>=0.4.0; extra == "all"
|
|
|
85
88
|
Requires-Dist: mypy>=1.0; extra == "all"
|
|
86
89
|
Requires-Dist: black>=23.0; extra == "all"
|
|
87
90
|
Requires-Dist: flake8>=6.0; extra == "all"
|
|
88
|
-
Requires-Dist: httpx2>=2.
|
|
91
|
+
Requires-Dist: httpx2>=2.12.0; extra == "all"
|
|
89
92
|
Requires-Dist: fakeredis>=2.30; extra == "all"
|
|
90
93
|
Requires-Dist: redis>=5.0; extra == "all"
|
|
91
94
|
Requires-Dist: hypothesis>=6.0; extra == "all"
|
|
@@ -96,14 +99,14 @@ Dynamic: license-file
|
|
|
96
99
|
<p align="center">
|
|
97
100
|
<strong>🎯 把「单个 AI 助手」升级成「7 人 AI 专业团队」</strong>
|
|
98
101
|
<br>
|
|
99
|
-
<em>One task → Multi-role AI collaboration → One conclusion | V4.5.9 (Unified Gather Execution Core + Native Async Worker: 执行层统一 gather 化 + Worker 原生异步) | V4.5.8 (FileRiskStore persistence + risks add/assess/mitigate/close + exposure filters) | V4.5.7 (Coeffect Async + Risk Register UX CLI) | V4.5.6 (Module Fiber + Coeffect: 6-state FSM + topological activation + modules CLI) | V4.5.3 (Artifacts + Effect — ArtifactStore + DispatchEffect + EffectRegistry + Audit CLI) | V4.5.2 (Experience polish: MOKA + Metrics + GitLab + Doctor + BackendConfig) | V4.5.0 (cross-session continuity + protocol-native skills)</em>
|
|
102
|
+
<em>One task → Multi-role AI collaboration → One conclusion | V4.5.17 (V4.6.1-cleanup: PR #9 CI repair + e2e portability + release-readiness) | V4.5.16 (Housekeeping + Digital Truth PATCH: 18-file SSOT sync, badge 9400+/204+, date 2026-09-03) | V4.5.15 (Skill registration gate + Prometheus E2E + 3-level TRAE cache sync) | V4.5.10 (HostLLMBridge v2 production wiring + --async CLI: v2 protocol hardening + factory v2 default + v1/v2 isolation) | V4.5.9 (Unified Gather Execution Core + Native Async Worker: 执行层统一 gather 化 + Worker 原生异步) | V4.5.8 (FileRiskStore persistence + risks add/assess/mitigate/close + exposure filters) | V4.5.7 (Coeffect Async + Risk Register UX CLI) | V4.5.6 (Module Fiber + Coeffect: 6-state FSM + topological activation + modules CLI) | V4.5.3 (Artifacts + Effect — ArtifactStore + DispatchEffect + EffectRegistry + Audit CLI) | V4.5.2 (Experience polish: MOKA + Metrics + GitLab + Doctor + BackendConfig) | V4.5.0 (cross-session continuity + protocol-native skills)</em>
|
|
100
103
|
</p>
|
|
101
104
|
|
|
102
105
|
<p align="center">
|
|
103
106
|
<img alt="Python" src="https://img.shields.io/badge/Python-3.10+-blue?logo=python&logoColor=white" />
|
|
104
107
|
<img alt="License" src="https://img.shields.io/badge/License-MIT-green" />
|
|
105
|
-
<img alt="Tests" src="https://img.shields.io/badge/Tests-
|
|
106
|
-
<img alt="Version" src="https://img.shields.io/badge/V4.5.
|
|
108
|
+
<img alt="Tests" src="https://img.shields.io/badge/Tests-9400%2B%20passing-brightgreen" />
|
|
109
|
+
<img alt="Version" src="https://img.shields.io/badge/V4.5.18-success" />
|
|
107
110
|
<img alt="CI" src="https://img.shields.io/badge/CI-GitHub_Actions-blue?logo=githubactions" />
|
|
108
111
|
<img alt="Quality" src="https://img.shields.io/badge/Code%20Quality-4.3%2F5%20%E2%98%85%E2%98%85%E2%98%85%E2%98%85%E2%98%86-blue" />
|
|
109
112
|
<img alt="Security" src="https://img.shields.io/badge/Security-5%2F5%20%E2%98%85%E2%98%85%E2%98%85%E2%98%85%E2%98%85-success" />
|
|
@@ -157,7 +160,7 @@ devsquad run "设计一个安全的用户认证系统" --roles architect,securit
|
|
|
157
160
|
| 复杂系统设计(需要多视角) | **DevSquad 多角色协作** 🎯 |
|
|
158
161
|
| 生产环境自动化流程 | **DevSquad + REST API + Dashboard** 🎯 |
|
|
159
162
|
|
|
160
|
-
📚 **想深入了解?** → [完整快速入门指南](QUICKSTART.md) | [
|
|
163
|
+
📚 **想深入了解?** → [完整快速入门指南](QUICKSTART.md) | [204+ 模块详细参考](SKILL.md)
|
|
161
164
|
|
|
162
165
|
---
|
|
163
166
|
|
|
@@ -218,7 +221,7 @@ Every new module includes `_call_counter` mechanism + E2E anti_ghost test + CI `
|
|
|
218
221
|
### Test Pyramid Achieved
|
|
219
222
|
- **Contract tests**: 5.2% (target ≥5% ✅)
|
|
220
223
|
- **Integration tests**: 15.1% (target ≥15% ✅)
|
|
221
|
-
- **Total tests**:
|
|
224
|
+
- **Total tests**: 9400+ (CI authoritative)
|
|
222
225
|
- **E2E coverage**: 107 e2e + 1244 integration + 13 V4.4.0 anti-ghost + 12 V4.5.2 anti-ghost
|
|
223
226
|
|
|
224
227
|
### Historical Features (V4.0.0-V4.3.3)
|
|
@@ -235,7 +238,7 @@ Every new module includes `_call_counter` mechanism + E2E anti_ghost test + CI `
|
|
|
235
238
|
- **V4.0.0 P3-1 Autonomous**: plan → dev → verify → fix 4-stage autonomous iteration
|
|
236
239
|
- **V4.0.0 P3-2 Plugin Hot-Loading**: 3 loading paths + path traversal 3-layer protection + reload rollback
|
|
237
240
|
|
|
238
|
-
|
|
241
|
+
9400+ tests passing (CI authoritative).
|
|
239
242
|
|
|
240
243
|
---
|
|
241
244
|
|
|
@@ -341,7 +344,7 @@ DEVSQUAD_API_PORT=9000 ./scripts/start.sh
|
|
|
341
344
|
|
|
342
345
|
## 🏗️ Five Capability Domains (Architecture Overview)
|
|
343
346
|
|
|
344
|
-
DevSquad's
|
|
347
|
+
DevSquad's 204+ modules are organized into **5 capability domains**, each solving a specific problem:
|
|
345
348
|
|
|
346
349
|
### 🎯 Domain 1: Task Orchestration Engine (Core)
|
|
347
350
|
|
|
@@ -635,11 +638,11 @@ devsquad dispatch -t "Design user authentication system"
|
|
|
635
638
|
```bash
|
|
636
639
|
# Check version
|
|
637
640
|
devsquad --version
|
|
638
|
-
# Expected: devsquad 4.
|
|
641
|
+
# Expected: devsquad 4.5.18
|
|
639
642
|
|
|
640
643
|
# Run tests
|
|
641
644
|
pytest tests/ -v --tb=short
|
|
642
|
-
# Expected:
|
|
645
|
+
# Expected: 9400+ passed
|
|
643
646
|
```
|
|
644
647
|
|
|
645
648
|
---
|
|
@@ -690,14 +693,14 @@ export DEVSQUAD_OPENAI_API_KEY=sk-...
|
|
|
690
693
|
|
|
691
694
|
### Quick Smoke Test (< 30 seconds)
|
|
692
695
|
```bash
|
|
693
|
-
python3 scripts/cli.py --version # Expected: DevSquad 4.
|
|
696
|
+
python3 scripts/cli.py --version # Expected: DevSquad 4.5.18
|
|
694
697
|
python3 scripts/cli.py status # Expected: System ready
|
|
695
698
|
python3 scripts/cli.py roles # Expected: 7 core roles listed
|
|
696
699
|
```
|
|
697
700
|
|
|
698
701
|
### Full Test Suite
|
|
699
702
|
```bash
|
|
700
|
-
# Run all tests (
|
|
703
|
+
# Run all tests (9400+ tests passing)
|
|
701
704
|
python3 -m pytest tests/ -q --tb=line
|
|
702
705
|
|
|
703
706
|
# With coverage report
|
|
@@ -714,7 +717,7 @@ python3 -m pytest tests/ --cov=scripts --cov-report=term-missing
|
|
|
714
717
|
| **P2** | Integration & E2E | Full lifecycle dispatch, cross-module integration | ~200 |
|
|
715
718
|
| **P3** | Unit per Module | Core dispatcher, RoleMapping, MCEAdapter, LLM backends | ~400+ |
|
|
716
719
|
|
|
717
|
-
**Total:
|
|
720
|
+
**Total: 9400+ CI tests / 266 e2e (9400+ collected)**
|
|
718
721
|
|
|
719
722
|
Run by priority:
|
|
720
723
|
```bash
|
|
@@ -735,15 +738,15 @@ python3 -m pytest tests/ -q --tb=line
|
|
|
735
738
|
| Document | Description | Language |
|
|
736
739
|
|----------|-------------|----------|
|
|
737
740
|
| [**QUICKSTART.md**](QUICKSTART.md) | **⭐ 30 秒快速入门指南(推荐新用户)** | 中文 |
|
|
738
|
-
| [SKILL.md](SKILL.md) | 完整技能手册 +
|
|
741
|
+
| [SKILL.md](SKILL.md) | 完整技能手册 + 204+ 模块参考 | EN/CN/JP |
|
|
739
742
|
| [GUIDE.md](GUIDE.md) | 完全用户指南 | 中文 |
|
|
740
743
|
| [INSTALL.md](INSTALL.md) | 安装指南 (Unix + Windows) | EN/CN |
|
|
741
744
|
| [EXAMPLES.md](EXAMPLES.md) | 实际使用示例 | EN |
|
|
742
745
|
| [CHANGELOG.md](CHANGELOG.md) | 版本历史记录 | EN |
|
|
743
746
|
| [README-CN.md](README-CN.md) | 中文说明 | 中文 |
|
|
744
747
|
| [README-JP.md](README-JP.md) | 日本語説明 | 日本語 |
|
|
745
|
-
| [docs/
|
|
746
|
-
| [docs/
|
|
748
|
+
| [docs/prd/V4.6.1_cleanup_PRD.md](docs/prd/V4.6.1_cleanup_PRD.md) | 产品需求文档 | 中文 |
|
|
749
|
+
| [docs/architecture/ARCHITECTURE_V4.md](docs/architecture/ARCHITECTURE_V4.md) | 技术架构文档 | 中文 |
|
|
747
750
|
| [docs/planning/V43_ROADMAP_PROPOSAL.md](docs/planning/V43_ROADMAP_PROPOSAL.md) | V4.3 统一推进方案 v1.2(7-Role 共识达成) | 中文 |
|
|
748
751
|
| [docs/prd/V4.3.0_PRD.md](docs/prd/V4.3.0_PRD.md) | V4.3.0 PRD(需求/用户故事/验收标准) | 中文 |
|
|
749
752
|
| [docs/architecture/V4.3.0_ARCHITECTURE.md](docs/architecture/V4.3.0_ARCHITECTURE.md) | V4.3.0 架构设计(模块边界/接口契约/依赖图) | 中文 |
|
|
@@ -815,6 +818,6 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
|
|
|
815
818
|
|
|
816
819
|
---
|
|
817
820
|
|
|
818
|
-
*Last updated: 2026-
|
|
821
|
+
*Last updated: 2026-09-14 | Version: V4.5.17 (V4.6.1-cleanup: PR #9 CI repair + e2e portability + release-readiness) | V4.5.16 (Housekeeping + Digital Truth PATCH: 18-file SSOT sync, badges 9400+/204+, date 2026-09-03) | V4.5.15 (Skill registration gate + Prometheus E2E + 3-level TRAE cache sync) | V4.5.10 (HostLLMBridge v2 production wiring + --async CLI) | V4.5.9 (Unified Gather Execution Core + Native Async Worker) | V4.5.8 (FileRiskStore persistence + risks add/assess/mitigate/close + exposure filters) | V4.5.7 (Coeffect Async + Risk Register UX CLI) | V4.5.6 (Module Fiber + Coeffect: 6-state FSM + topological activation + modules CLI) | V4.5.3 (Artifacts + Effect — ArtifactStore + DispatchEffect + EffectRegistry + Audit CLI) | V4.5.2 (Experience polish: MOKA + Metrics + GitLab + Doctor + BackendConfig) | V4.5.0 (cross-session continuity + protocol-native skills) | V4.4.0 (5 new enhancement modules: RiskRegister / ViewpointRegistry / ErrorBudgetTracker / GapAnalyzer / DoraMetricsCollector — see [CHANGELOG.md](CHANGELOG.md))*
|
|
819
822
|
|
|
820
823
|
</details>
|
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
<p align="center">
|
|
4
4
|
<strong>🎯 把「单个 AI 助手」升级成「7 人 AI 专业团队」</strong>
|
|
5
5
|
<br>
|
|
6
|
-
<em>One task → Multi-role AI collaboration → One conclusion | V4.5.9 (Unified Gather Execution Core + Native Async Worker: 执行层统一 gather 化 + Worker 原生异步) | V4.5.8 (FileRiskStore persistence + risks add/assess/mitigate/close + exposure filters) | V4.5.7 (Coeffect Async + Risk Register UX CLI) | V4.5.6 (Module Fiber + Coeffect: 6-state FSM + topological activation + modules CLI) | V4.5.3 (Artifacts + Effect — ArtifactStore + DispatchEffect + EffectRegistry + Audit CLI) | V4.5.2 (Experience polish: MOKA + Metrics + GitLab + Doctor + BackendConfig) | V4.5.0 (cross-session continuity + protocol-native skills)</em>
|
|
6
|
+
<em>One task → Multi-role AI collaboration → One conclusion | V4.5.17 (V4.6.1-cleanup: PR #9 CI repair + e2e portability + release-readiness) | V4.5.16 (Housekeeping + Digital Truth PATCH: 18-file SSOT sync, badge 9400+/204+, date 2026-09-03) | V4.5.15 (Skill registration gate + Prometheus E2E + 3-level TRAE cache sync) | V4.5.10 (HostLLMBridge v2 production wiring + --async CLI: v2 protocol hardening + factory v2 default + v1/v2 isolation) | V4.5.9 (Unified Gather Execution Core + Native Async Worker: 执行层统一 gather 化 + Worker 原生异步) | V4.5.8 (FileRiskStore persistence + risks add/assess/mitigate/close + exposure filters) | V4.5.7 (Coeffect Async + Risk Register UX CLI) | V4.5.6 (Module Fiber + Coeffect: 6-state FSM + topological activation + modules CLI) | V4.5.3 (Artifacts + Effect — ArtifactStore + DispatchEffect + EffectRegistry + Audit CLI) | V4.5.2 (Experience polish: MOKA + Metrics + GitLab + Doctor + BackendConfig) | V4.5.0 (cross-session continuity + protocol-native skills)</em>
|
|
7
7
|
</p>
|
|
8
8
|
|
|
9
9
|
<p align="center">
|
|
10
10
|
<img alt="Python" src="https://img.shields.io/badge/Python-3.10+-blue?logo=python&logoColor=white" />
|
|
11
11
|
<img alt="License" src="https://img.shields.io/badge/License-MIT-green" />
|
|
12
|
-
<img alt="Tests" src="https://img.shields.io/badge/Tests-
|
|
13
|
-
<img alt="Version" src="https://img.shields.io/badge/V4.5.
|
|
12
|
+
<img alt="Tests" src="https://img.shields.io/badge/Tests-9400%2B%20passing-brightgreen" />
|
|
13
|
+
<img alt="Version" src="https://img.shields.io/badge/V4.5.18-success" />
|
|
14
14
|
<img alt="CI" src="https://img.shields.io/badge/CI-GitHub_Actions-blue?logo=githubactions" />
|
|
15
15
|
<img alt="Quality" src="https://img.shields.io/badge/Code%20Quality-4.3%2F5%20%E2%98%85%E2%98%85%E2%98%85%E2%98%85%E2%98%86-blue" />
|
|
16
16
|
<img alt="Security" src="https://img.shields.io/badge/Security-5%2F5%20%E2%98%85%E2%98%85%E2%98%85%E2%98%85%E2%98%85-success" />
|
|
@@ -64,7 +64,7 @@ devsquad run "设计一个安全的用户认证系统" --roles architect,securit
|
|
|
64
64
|
| 复杂系统设计(需要多视角) | **DevSquad 多角色协作** 🎯 |
|
|
65
65
|
| 生产环境自动化流程 | **DevSquad + REST API + Dashboard** 🎯 |
|
|
66
66
|
|
|
67
|
-
📚 **想深入了解?** → [完整快速入门指南](QUICKSTART.md) | [
|
|
67
|
+
📚 **想深入了解?** → [完整快速入门指南](QUICKSTART.md) | [204+ 模块详细参考](SKILL.md)
|
|
68
68
|
|
|
69
69
|
---
|
|
70
70
|
|
|
@@ -125,7 +125,7 @@ Every new module includes `_call_counter` mechanism + E2E anti_ghost test + CI `
|
|
|
125
125
|
### Test Pyramid Achieved
|
|
126
126
|
- **Contract tests**: 5.2% (target ≥5% ✅)
|
|
127
127
|
- **Integration tests**: 15.1% (target ≥15% ✅)
|
|
128
|
-
- **Total tests**:
|
|
128
|
+
- **Total tests**: 9400+ (CI authoritative)
|
|
129
129
|
- **E2E coverage**: 107 e2e + 1244 integration + 13 V4.4.0 anti-ghost + 12 V4.5.2 anti-ghost
|
|
130
130
|
|
|
131
131
|
### Historical Features (V4.0.0-V4.3.3)
|
|
@@ -142,7 +142,7 @@ Every new module includes `_call_counter` mechanism + E2E anti_ghost test + CI `
|
|
|
142
142
|
- **V4.0.0 P3-1 Autonomous**: plan → dev → verify → fix 4-stage autonomous iteration
|
|
143
143
|
- **V4.0.0 P3-2 Plugin Hot-Loading**: 3 loading paths + path traversal 3-layer protection + reload rollback
|
|
144
144
|
|
|
145
|
-
|
|
145
|
+
9400+ tests passing (CI authoritative).
|
|
146
146
|
|
|
147
147
|
---
|
|
148
148
|
|
|
@@ -248,7 +248,7 @@ DEVSQUAD_API_PORT=9000 ./scripts/start.sh
|
|
|
248
248
|
|
|
249
249
|
## 🏗️ Five Capability Domains (Architecture Overview)
|
|
250
250
|
|
|
251
|
-
DevSquad's
|
|
251
|
+
DevSquad's 204+ modules are organized into **5 capability domains**, each solving a specific problem:
|
|
252
252
|
|
|
253
253
|
### 🎯 Domain 1: Task Orchestration Engine (Core)
|
|
254
254
|
|
|
@@ -542,11 +542,11 @@ devsquad dispatch -t "Design user authentication system"
|
|
|
542
542
|
```bash
|
|
543
543
|
# Check version
|
|
544
544
|
devsquad --version
|
|
545
|
-
# Expected: devsquad 4.
|
|
545
|
+
# Expected: devsquad 4.5.18
|
|
546
546
|
|
|
547
547
|
# Run tests
|
|
548
548
|
pytest tests/ -v --tb=short
|
|
549
|
-
# Expected:
|
|
549
|
+
# Expected: 9400+ passed
|
|
550
550
|
```
|
|
551
551
|
|
|
552
552
|
---
|
|
@@ -597,14 +597,14 @@ export DEVSQUAD_OPENAI_API_KEY=sk-...
|
|
|
597
597
|
|
|
598
598
|
### Quick Smoke Test (< 30 seconds)
|
|
599
599
|
```bash
|
|
600
|
-
python3 scripts/cli.py --version # Expected: DevSquad 4.
|
|
600
|
+
python3 scripts/cli.py --version # Expected: DevSquad 4.5.18
|
|
601
601
|
python3 scripts/cli.py status # Expected: System ready
|
|
602
602
|
python3 scripts/cli.py roles # Expected: 7 core roles listed
|
|
603
603
|
```
|
|
604
604
|
|
|
605
605
|
### Full Test Suite
|
|
606
606
|
```bash
|
|
607
|
-
# Run all tests (
|
|
607
|
+
# Run all tests (9400+ tests passing)
|
|
608
608
|
python3 -m pytest tests/ -q --tb=line
|
|
609
609
|
|
|
610
610
|
# With coverage report
|
|
@@ -621,7 +621,7 @@ python3 -m pytest tests/ --cov=scripts --cov-report=term-missing
|
|
|
621
621
|
| **P2** | Integration & E2E | Full lifecycle dispatch, cross-module integration | ~200 |
|
|
622
622
|
| **P3** | Unit per Module | Core dispatcher, RoleMapping, MCEAdapter, LLM backends | ~400+ |
|
|
623
623
|
|
|
624
|
-
**Total:
|
|
624
|
+
**Total: 9400+ CI tests / 266 e2e (9400+ collected)**
|
|
625
625
|
|
|
626
626
|
Run by priority:
|
|
627
627
|
```bash
|
|
@@ -642,15 +642,15 @@ python3 -m pytest tests/ -q --tb=line
|
|
|
642
642
|
| Document | Description | Language |
|
|
643
643
|
|----------|-------------|----------|
|
|
644
644
|
| [**QUICKSTART.md**](QUICKSTART.md) | **⭐ 30 秒快速入门指南(推荐新用户)** | 中文 |
|
|
645
|
-
| [SKILL.md](SKILL.md) | 完整技能手册 +
|
|
645
|
+
| [SKILL.md](SKILL.md) | 完整技能手册 + 204+ 模块参考 | EN/CN/JP |
|
|
646
646
|
| [GUIDE.md](GUIDE.md) | 完全用户指南 | 中文 |
|
|
647
647
|
| [INSTALL.md](INSTALL.md) | 安装指南 (Unix + Windows) | EN/CN |
|
|
648
648
|
| [EXAMPLES.md](EXAMPLES.md) | 实际使用示例 | EN |
|
|
649
649
|
| [CHANGELOG.md](CHANGELOG.md) | 版本历史记录 | EN |
|
|
650
650
|
| [README-CN.md](README-CN.md) | 中文说明 | 中文 |
|
|
651
651
|
| [README-JP.md](README-JP.md) | 日本語説明 | 日本語 |
|
|
652
|
-
| [docs/
|
|
653
|
-
| [docs/
|
|
652
|
+
| [docs/prd/V4.6.1_cleanup_PRD.md](docs/prd/V4.6.1_cleanup_PRD.md) | 产品需求文档 | 中文 |
|
|
653
|
+
| [docs/architecture/ARCHITECTURE_V4.md](docs/architecture/ARCHITECTURE_V4.md) | 技术架构文档 | 中文 |
|
|
654
654
|
| [docs/planning/V43_ROADMAP_PROPOSAL.md](docs/planning/V43_ROADMAP_PROPOSAL.md) | V4.3 统一推进方案 v1.2(7-Role 共识达成) | 中文 |
|
|
655
655
|
| [docs/prd/V4.3.0_PRD.md](docs/prd/V4.3.0_PRD.md) | V4.3.0 PRD(需求/用户故事/验收标准) | 中文 |
|
|
656
656
|
| [docs/architecture/V4.3.0_ARCHITECTURE.md](docs/architecture/V4.3.0_ARCHITECTURE.md) | V4.3.0 架构设计(模块边界/接口契约/依赖图) | 中文 |
|
|
@@ -722,6 +722,6 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
|
|
|
722
722
|
|
|
723
723
|
---
|
|
724
724
|
|
|
725
|
-
*Last updated: 2026-
|
|
725
|
+
*Last updated: 2026-09-14 | Version: V4.5.17 (V4.6.1-cleanup: PR #9 CI repair + e2e portability + release-readiness) | V4.5.16 (Housekeeping + Digital Truth PATCH: 18-file SSOT sync, badges 9400+/204+, date 2026-09-03) | V4.5.15 (Skill registration gate + Prometheus E2E + 3-level TRAE cache sync) | V4.5.10 (HostLLMBridge v2 production wiring + --async CLI) | V4.5.9 (Unified Gather Execution Core + Native Async Worker) | V4.5.8 (FileRiskStore persistence + risks add/assess/mitigate/close + exposure filters) | V4.5.7 (Coeffect Async + Risk Register UX CLI) | V4.5.6 (Module Fiber + Coeffect: 6-state FSM + topological activation + modules CLI) | V4.5.3 (Artifacts + Effect — ArtifactStore + DispatchEffect + EffectRegistry + Audit CLI) | V4.5.2 (Experience polish: MOKA + Metrics + GitLab + Doctor + BackendConfig) | V4.5.0 (cross-session continuity + protocol-native skills) | V4.4.0 (5 new enhancement modules: RiskRegister / ViewpointRegistry / ErrorBudgetTracker / GapAnalyzer / DoraMetricsCollector — see [CHANGELOG.md](CHANGELOG.md))*
|
|
726
726
|
|
|
727
727
|
</details>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: devsquad
|
|
3
|
-
Version: 4.5.
|
|
3
|
+
Version: 4.5.18
|
|
4
4
|
Summary: Production-Ready Multi-Role AI Task Orchestrator
|
|
5
5
|
Author-email: DevSquad Team <devsquad@example.com>
|
|
6
6
|
License: MIT
|
|
@@ -58,12 +58,15 @@ Requires-Dist: ruff==0.15.20; extra == "dev"
|
|
|
58
58
|
Requires-Dist: mypy==2.2.0; extra == "dev"
|
|
59
59
|
Requires-Dist: black==26.5.1; extra == "dev"
|
|
60
60
|
Requires-Dist: flake8>=6.0; extra == "dev"
|
|
61
|
-
Requires-Dist: httpx2>=2.
|
|
61
|
+
Requires-Dist: httpx2>=2.12.0; extra == "dev"
|
|
62
62
|
Requires-Dist: streamlit>=1.28.0; extra == "dev"
|
|
63
63
|
Requires-Dist: Pillow>=10.0.0; extra == "dev"
|
|
64
64
|
Requires-Dist: fakeredis>=2.30; extra == "dev"
|
|
65
65
|
Requires-Dist: redis>=5.0; extra == "dev"
|
|
66
66
|
Requires-Dist: hypothesis>=6.0; extra == "dev"
|
|
67
|
+
Requires-Dist: bandit[toml]>=1.7; extra == "dev"
|
|
68
|
+
Requires-Dist: pip-audit>=2.7; extra == "dev"
|
|
69
|
+
Requires-Dist: radon>=6.0; extra == "dev"
|
|
67
70
|
Provides-Extra: all
|
|
68
71
|
Requires-Dist: openai>=1.0; extra == "all"
|
|
69
72
|
Requires-Dist: anthropic>=0.18; extra == "all"
|
|
@@ -85,7 +88,7 @@ Requires-Dist: ruff>=0.4.0; extra == "all"
|
|
|
85
88
|
Requires-Dist: mypy>=1.0; extra == "all"
|
|
86
89
|
Requires-Dist: black>=23.0; extra == "all"
|
|
87
90
|
Requires-Dist: flake8>=6.0; extra == "all"
|
|
88
|
-
Requires-Dist: httpx2>=2.
|
|
91
|
+
Requires-Dist: httpx2>=2.12.0; extra == "all"
|
|
89
92
|
Requires-Dist: fakeredis>=2.30; extra == "all"
|
|
90
93
|
Requires-Dist: redis>=5.0; extra == "all"
|
|
91
94
|
Requires-Dist: hypothesis>=6.0; extra == "all"
|
|
@@ -96,14 +99,14 @@ Dynamic: license-file
|
|
|
96
99
|
<p align="center">
|
|
97
100
|
<strong>🎯 把「单个 AI 助手」升级成「7 人 AI 专业团队」</strong>
|
|
98
101
|
<br>
|
|
99
|
-
<em>One task → Multi-role AI collaboration → One conclusion | V4.5.9 (Unified Gather Execution Core + Native Async Worker: 执行层统一 gather 化 + Worker 原生异步) | V4.5.8 (FileRiskStore persistence + risks add/assess/mitigate/close + exposure filters) | V4.5.7 (Coeffect Async + Risk Register UX CLI) | V4.5.6 (Module Fiber + Coeffect: 6-state FSM + topological activation + modules CLI) | V4.5.3 (Artifacts + Effect — ArtifactStore + DispatchEffect + EffectRegistry + Audit CLI) | V4.5.2 (Experience polish: MOKA + Metrics + GitLab + Doctor + BackendConfig) | V4.5.0 (cross-session continuity + protocol-native skills)</em>
|
|
102
|
+
<em>One task → Multi-role AI collaboration → One conclusion | V4.5.17 (V4.6.1-cleanup: PR #9 CI repair + e2e portability + release-readiness) | V4.5.16 (Housekeeping + Digital Truth PATCH: 18-file SSOT sync, badge 9400+/204+, date 2026-09-03) | V4.5.15 (Skill registration gate + Prometheus E2E + 3-level TRAE cache sync) | V4.5.10 (HostLLMBridge v2 production wiring + --async CLI: v2 protocol hardening + factory v2 default + v1/v2 isolation) | V4.5.9 (Unified Gather Execution Core + Native Async Worker: 执行层统一 gather 化 + Worker 原生异步) | V4.5.8 (FileRiskStore persistence + risks add/assess/mitigate/close + exposure filters) | V4.5.7 (Coeffect Async + Risk Register UX CLI) | V4.5.6 (Module Fiber + Coeffect: 6-state FSM + topological activation + modules CLI) | V4.5.3 (Artifacts + Effect — ArtifactStore + DispatchEffect + EffectRegistry + Audit CLI) | V4.5.2 (Experience polish: MOKA + Metrics + GitLab + Doctor + BackendConfig) | V4.5.0 (cross-session continuity + protocol-native skills)</em>
|
|
100
103
|
</p>
|
|
101
104
|
|
|
102
105
|
<p align="center">
|
|
103
106
|
<img alt="Python" src="https://img.shields.io/badge/Python-3.10+-blue?logo=python&logoColor=white" />
|
|
104
107
|
<img alt="License" src="https://img.shields.io/badge/License-MIT-green" />
|
|
105
|
-
<img alt="Tests" src="https://img.shields.io/badge/Tests-
|
|
106
|
-
<img alt="Version" src="https://img.shields.io/badge/V4.5.
|
|
108
|
+
<img alt="Tests" src="https://img.shields.io/badge/Tests-9400%2B%20passing-brightgreen" />
|
|
109
|
+
<img alt="Version" src="https://img.shields.io/badge/V4.5.18-success" />
|
|
107
110
|
<img alt="CI" src="https://img.shields.io/badge/CI-GitHub_Actions-blue?logo=githubactions" />
|
|
108
111
|
<img alt="Quality" src="https://img.shields.io/badge/Code%20Quality-4.3%2F5%20%E2%98%85%E2%98%85%E2%98%85%E2%98%85%E2%98%86-blue" />
|
|
109
112
|
<img alt="Security" src="https://img.shields.io/badge/Security-5%2F5%20%E2%98%85%E2%98%85%E2%98%85%E2%98%85%E2%98%85-success" />
|
|
@@ -157,7 +160,7 @@ devsquad run "设计一个安全的用户认证系统" --roles architect,securit
|
|
|
157
160
|
| 复杂系统设计(需要多视角) | **DevSquad 多角色协作** 🎯 |
|
|
158
161
|
| 生产环境自动化流程 | **DevSquad + REST API + Dashboard** 🎯 |
|
|
159
162
|
|
|
160
|
-
📚 **想深入了解?** → [完整快速入门指南](QUICKSTART.md) | [
|
|
163
|
+
📚 **想深入了解?** → [完整快速入门指南](QUICKSTART.md) | [204+ 模块详细参考](SKILL.md)
|
|
161
164
|
|
|
162
165
|
---
|
|
163
166
|
|
|
@@ -218,7 +221,7 @@ Every new module includes `_call_counter` mechanism + E2E anti_ghost test + CI `
|
|
|
218
221
|
### Test Pyramid Achieved
|
|
219
222
|
- **Contract tests**: 5.2% (target ≥5% ✅)
|
|
220
223
|
- **Integration tests**: 15.1% (target ≥15% ✅)
|
|
221
|
-
- **Total tests**:
|
|
224
|
+
- **Total tests**: 9400+ (CI authoritative)
|
|
222
225
|
- **E2E coverage**: 107 e2e + 1244 integration + 13 V4.4.0 anti-ghost + 12 V4.5.2 anti-ghost
|
|
223
226
|
|
|
224
227
|
### Historical Features (V4.0.0-V4.3.3)
|
|
@@ -235,7 +238,7 @@ Every new module includes `_call_counter` mechanism + E2E anti_ghost test + CI `
|
|
|
235
238
|
- **V4.0.0 P3-1 Autonomous**: plan → dev → verify → fix 4-stage autonomous iteration
|
|
236
239
|
- **V4.0.0 P3-2 Plugin Hot-Loading**: 3 loading paths + path traversal 3-layer protection + reload rollback
|
|
237
240
|
|
|
238
|
-
|
|
241
|
+
9400+ tests passing (CI authoritative).
|
|
239
242
|
|
|
240
243
|
---
|
|
241
244
|
|
|
@@ -341,7 +344,7 @@ DEVSQUAD_API_PORT=9000 ./scripts/start.sh
|
|
|
341
344
|
|
|
342
345
|
## 🏗️ Five Capability Domains (Architecture Overview)
|
|
343
346
|
|
|
344
|
-
DevSquad's
|
|
347
|
+
DevSquad's 204+ modules are organized into **5 capability domains**, each solving a specific problem:
|
|
345
348
|
|
|
346
349
|
### 🎯 Domain 1: Task Orchestration Engine (Core)
|
|
347
350
|
|
|
@@ -635,11 +638,11 @@ devsquad dispatch -t "Design user authentication system"
|
|
|
635
638
|
```bash
|
|
636
639
|
# Check version
|
|
637
640
|
devsquad --version
|
|
638
|
-
# Expected: devsquad 4.
|
|
641
|
+
# Expected: devsquad 4.5.18
|
|
639
642
|
|
|
640
643
|
# Run tests
|
|
641
644
|
pytest tests/ -v --tb=short
|
|
642
|
-
# Expected:
|
|
645
|
+
# Expected: 9400+ passed
|
|
643
646
|
```
|
|
644
647
|
|
|
645
648
|
---
|
|
@@ -690,14 +693,14 @@ export DEVSQUAD_OPENAI_API_KEY=sk-...
|
|
|
690
693
|
|
|
691
694
|
### Quick Smoke Test (< 30 seconds)
|
|
692
695
|
```bash
|
|
693
|
-
python3 scripts/cli.py --version # Expected: DevSquad 4.
|
|
696
|
+
python3 scripts/cli.py --version # Expected: DevSquad 4.5.18
|
|
694
697
|
python3 scripts/cli.py status # Expected: System ready
|
|
695
698
|
python3 scripts/cli.py roles # Expected: 7 core roles listed
|
|
696
699
|
```
|
|
697
700
|
|
|
698
701
|
### Full Test Suite
|
|
699
702
|
```bash
|
|
700
|
-
# Run all tests (
|
|
703
|
+
# Run all tests (9400+ tests passing)
|
|
701
704
|
python3 -m pytest tests/ -q --tb=line
|
|
702
705
|
|
|
703
706
|
# With coverage report
|
|
@@ -714,7 +717,7 @@ python3 -m pytest tests/ --cov=scripts --cov-report=term-missing
|
|
|
714
717
|
| **P2** | Integration & E2E | Full lifecycle dispatch, cross-module integration | ~200 |
|
|
715
718
|
| **P3** | Unit per Module | Core dispatcher, RoleMapping, MCEAdapter, LLM backends | ~400+ |
|
|
716
719
|
|
|
717
|
-
**Total:
|
|
720
|
+
**Total: 9400+ CI tests / 266 e2e (9400+ collected)**
|
|
718
721
|
|
|
719
722
|
Run by priority:
|
|
720
723
|
```bash
|
|
@@ -735,15 +738,15 @@ python3 -m pytest tests/ -q --tb=line
|
|
|
735
738
|
| Document | Description | Language |
|
|
736
739
|
|----------|-------------|----------|
|
|
737
740
|
| [**QUICKSTART.md**](QUICKSTART.md) | **⭐ 30 秒快速入门指南(推荐新用户)** | 中文 |
|
|
738
|
-
| [SKILL.md](SKILL.md) | 完整技能手册 +
|
|
741
|
+
| [SKILL.md](SKILL.md) | 完整技能手册 + 204+ 模块参考 | EN/CN/JP |
|
|
739
742
|
| [GUIDE.md](GUIDE.md) | 完全用户指南 | 中文 |
|
|
740
743
|
| [INSTALL.md](INSTALL.md) | 安装指南 (Unix + Windows) | EN/CN |
|
|
741
744
|
| [EXAMPLES.md](EXAMPLES.md) | 实际使用示例 | EN |
|
|
742
745
|
| [CHANGELOG.md](CHANGELOG.md) | 版本历史记录 | EN |
|
|
743
746
|
| [README-CN.md](README-CN.md) | 中文说明 | 中文 |
|
|
744
747
|
| [README-JP.md](README-JP.md) | 日本語説明 | 日本語 |
|
|
745
|
-
| [docs/
|
|
746
|
-
| [docs/
|
|
748
|
+
| [docs/prd/V4.6.1_cleanup_PRD.md](docs/prd/V4.6.1_cleanup_PRD.md) | 产品需求文档 | 中文 |
|
|
749
|
+
| [docs/architecture/ARCHITECTURE_V4.md](docs/architecture/ARCHITECTURE_V4.md) | 技术架构文档 | 中文 |
|
|
747
750
|
| [docs/planning/V43_ROADMAP_PROPOSAL.md](docs/planning/V43_ROADMAP_PROPOSAL.md) | V4.3 统一推进方案 v1.2(7-Role 共识达成) | 中文 |
|
|
748
751
|
| [docs/prd/V4.3.0_PRD.md](docs/prd/V4.3.0_PRD.md) | V4.3.0 PRD(需求/用户故事/验收标准) | 中文 |
|
|
749
752
|
| [docs/architecture/V4.3.0_ARCHITECTURE.md](docs/architecture/V4.3.0_ARCHITECTURE.md) | V4.3.0 架构设计(模块边界/接口契约/依赖图) | 中文 |
|
|
@@ -815,6 +818,6 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
|
|
|
815
818
|
|
|
816
819
|
---
|
|
817
820
|
|
|
818
|
-
*Last updated: 2026-
|
|
821
|
+
*Last updated: 2026-09-14 | Version: V4.5.17 (V4.6.1-cleanup: PR #9 CI repair + e2e portability + release-readiness) | V4.5.16 (Housekeeping + Digital Truth PATCH: 18-file SSOT sync, badges 9400+/204+, date 2026-09-03) | V4.5.15 (Skill registration gate + Prometheus E2E + 3-level TRAE cache sync) | V4.5.10 (HostLLMBridge v2 production wiring + --async CLI) | V4.5.9 (Unified Gather Execution Core + Native Async Worker) | V4.5.8 (FileRiskStore persistence + risks add/assess/mitigate/close + exposure filters) | V4.5.7 (Coeffect Async + Risk Register UX CLI) | V4.5.6 (Module Fiber + Coeffect: 6-state FSM + topological activation + modules CLI) | V4.5.3 (Artifacts + Effect — ArtifactStore + DispatchEffect + EffectRegistry + Audit CLI) | V4.5.2 (Experience polish: MOKA + Metrics + GitLab + Doctor + BackendConfig) | V4.5.0 (cross-session continuity + protocol-native skills) | V4.4.0 (5 new enhancement modules: RiskRegister / ViewpointRegistry / ErrorBudgetTracker / GapAnalyzer / DoraMetricsCollector — see [CHANGELOG.md](CHANGELOG.md))*
|
|
819
822
|
|
|
820
823
|
</details>
|
|
@@ -14,10 +14,12 @@ scripts/benchmark_async_dispatch.py
|
|
|
14
14
|
scripts/benchmark_ponytail_smart.py
|
|
15
15
|
scripts/benchmark_real_llm.py
|
|
16
16
|
scripts/check_async_coverage.py
|
|
17
|
+
scripts/check_bandit.py
|
|
17
18
|
scripts/check_config_consistency.py
|
|
18
19
|
scripts/check_constructor_params.py
|
|
19
20
|
scripts/check_dependency_lock.py
|
|
20
21
|
scripts/check_dependency_sync.py
|
|
22
|
+
scripts/check_dispatcher_size.py
|
|
21
23
|
scripts/check_doc_consistency.py
|
|
22
24
|
scripts/check_hidden_content.py
|
|
23
25
|
scripts/check_module_activation.py
|
|
@@ -36,12 +38,16 @@ scripts/cli_risks.py
|
|
|
36
38
|
scripts/cli_sessions.py
|
|
37
39
|
scripts/cli_utils.py
|
|
38
40
|
scripts/collect_baseline.py
|
|
41
|
+
scripts/collect_trae_traces.py
|
|
39
42
|
scripts/dashboard.py
|
|
40
43
|
scripts/generate_benchmark_report.py
|
|
41
44
|
scripts/generate_quality_decision_report.py
|
|
42
45
|
scripts/history_manager.py
|
|
43
46
|
scripts/mcp_server.py
|
|
47
|
+
scripts/perf_baseline.py
|
|
44
48
|
scripts/scan_pickle_payloads.py
|
|
49
|
+
scripts/sync_skill_pack.py
|
|
50
|
+
scripts/verify_prometheus_e2e.py
|
|
45
51
|
scripts/api/__init__.py
|
|
46
52
|
scripts/api/models.py
|
|
47
53
|
scripts/api/rate_limit.py
|
|
@@ -334,9 +340,11 @@ tests/test_benchmark_ponytail_smart.py
|
|
|
334
340
|
tests/test_cache_interface.py
|
|
335
341
|
tests/test_ccr_store.py
|
|
336
342
|
tests/test_check_async_coverage.py
|
|
343
|
+
tests/test_check_bandit.py
|
|
337
344
|
tests/test_check_config_consistency.py
|
|
338
345
|
tests/test_check_constructor_params.py
|
|
339
346
|
tests/test_check_dependency_lock.py
|
|
347
|
+
tests/test_check_dispatcher_size.py
|
|
340
348
|
tests/test_check_hidden_content.py
|
|
341
349
|
tests/test_check_test_pyramid.py
|
|
342
350
|
tests/test_check_test_quality.py
|
|
@@ -27,7 +27,7 @@ ruff>=0.4.0
|
|
|
27
27
|
mypy>=1.0
|
|
28
28
|
black>=23.0
|
|
29
29
|
flake8>=6.0
|
|
30
|
-
httpx2>=2.
|
|
30
|
+
httpx2>=2.12.0
|
|
31
31
|
fakeredis>=2.30
|
|
32
32
|
redis>=5.0
|
|
33
33
|
hypothesis>=6.0
|
|
@@ -51,12 +51,15 @@ ruff==0.15.20
|
|
|
51
51
|
mypy==2.2.0
|
|
52
52
|
black==26.5.1
|
|
53
53
|
flake8>=6.0
|
|
54
|
-
httpx2>=2.
|
|
54
|
+
httpx2>=2.12.0
|
|
55
55
|
streamlit>=1.28.0
|
|
56
56
|
Pillow>=10.0.0
|
|
57
57
|
fakeredis>=2.30
|
|
58
58
|
redis>=5.0
|
|
59
59
|
hypothesis>=6.0
|
|
60
|
+
bandit[toml]>=1.7
|
|
61
|
+
pip-audit>=2.7
|
|
62
|
+
radon>=6.0
|
|
60
63
|
|
|
61
64
|
[mcp]
|
|
62
65
|
mcp>=0.9
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "devsquad"
|
|
7
|
-
version = "4.5.
|
|
7
|
+
version = "4.5.18"
|
|
8
8
|
description = "Production-Ready Multi-Role AI Task Orchestrator"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = {text = "MIT"}
|
|
@@ -67,12 +67,15 @@ dev = [
|
|
|
67
67
|
"mypy==2.2.0",
|
|
68
68
|
"black==26.5.1",
|
|
69
69
|
"flake8>=6.0",
|
|
70
|
-
"httpx2>=2.
|
|
70
|
+
"httpx2>=2.12.0",
|
|
71
71
|
"streamlit>=1.28.0",
|
|
72
72
|
"Pillow>=10.0.0",
|
|
73
73
|
"fakeredis>=2.30",
|
|
74
74
|
"redis>=5.0",
|
|
75
75
|
"hypothesis>=6.0",
|
|
76
|
+
"bandit[toml]>=1.7",
|
|
77
|
+
"pip-audit>=2.7",
|
|
78
|
+
"radon>=6.0",
|
|
76
79
|
]
|
|
77
80
|
all = [
|
|
78
81
|
"openai>=1.0",
|
|
@@ -95,7 +98,7 @@ all = [
|
|
|
95
98
|
"mypy>=1.0",
|
|
96
99
|
"black>=23.0",
|
|
97
100
|
"flake8>=6.0",
|
|
98
|
-
"httpx2>=2.
|
|
101
|
+
"httpx2>=2.12.0",
|
|
99
102
|
"fakeredis>=2.30",
|
|
100
103
|
"redis>=5.0",
|
|
101
104
|
"hypothesis>=6.0",
|
|
@@ -182,7 +185,10 @@ files = ["scripts", "skills"]
|
|
|
182
185
|
module = "scripts.mcp_server"
|
|
183
186
|
disallow_untyped_decorators = false
|
|
184
187
|
|
|
185
|
-
|
|
188
|
+
[[tool.mypy.overrides]]
|
|
189
|
+
module = "scripts.collaboration.config_manager"
|
|
190
|
+
disallow_untyped_decorators = false
|
|
191
|
+
|
|
186
192
|
# @app.on_event) which return untyped decorators. Same pattern as mcp_server.
|
|
187
193
|
# Also applies to FastAPI route modules under scripts/api/routes/ and
|
|
188
194
|
# scripts/dashboard/*_views.py — all use @app.route/@router.* decorators.
|
|
@@ -455,7 +455,7 @@ async def list_roles(
|
|
|
455
455
|
logger.error("Failed to list roles: %s", e)
|
|
456
456
|
raise HTTPException(status_code=500, detail=f"Failed to retrieve roles: {str(e)}") from None
|
|
457
457
|
except Exception as e:
|
|
458
|
-
logger.
|
|
458
|
+
logger.exception("Unexpected error listing roles: %s", e)
|
|
459
459
|
raise HTTPException(status_code=500, detail=f"Failed to retrieve roles: {str(e)}") from None
|
|
460
460
|
|
|
461
461
|
|
|
@@ -233,7 +233,7 @@ async def get_lifecycle_status(
|
|
|
233
233
|
logger.error("Failed to get lifecycle status: %s", e)
|
|
234
234
|
raise HTTPException(status_code=500, detail=str(e)) from None
|
|
235
235
|
except Exception as e:
|
|
236
|
-
logger.
|
|
236
|
+
logger.exception("Unexpected error getting lifecycle status: %s", e)
|
|
237
237
|
raise HTTPException(status_code=500, detail=str(e)) from None
|
|
238
238
|
|
|
239
239
|
|
|
@@ -395,5 +395,5 @@ async def list_command_mappings(
|
|
|
395
395
|
logger.error("Failed to list mappings: %s", e)
|
|
396
396
|
raise HTTPException(status_code=500, detail=str(e)) from None
|
|
397
397
|
except Exception as e:
|
|
398
|
-
logger.
|
|
398
|
+
logger.exception("Unexpected error listing mappings: %s", e)
|
|
399
399
|
raise HTTPException(status_code=500, detail=str(e)) from None
|
|
@@ -329,7 +329,7 @@ async def check_specific_gate(
|
|
|
329
329
|
logger.error("Failed to check gate for %s: %s", request.command, e)
|
|
330
330
|
raise HTTPException(status_code=500, detail=str(e)) from None
|
|
331
331
|
except Exception as e:
|
|
332
|
-
logger.
|
|
332
|
+
logger.exception("Unexpected error checking gate for %s: %s", request.command, e)
|
|
333
333
|
raise HTTPException(status_code=500, detail=str(e)) from None
|
|
334
334
|
|
|
335
335
|
|