devsquad 4.5.0__tar.gz → 4.5.4__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.0 → devsquad-4.5.4}/PKG-INFO +23 -12
- {devsquad-4.5.0 → devsquad-4.5.4}/README.md +22 -11
- {devsquad-4.5.0 → devsquad-4.5.4}/devsquad.egg-info/PKG-INFO +23 -12
- {devsquad-4.5.0 → devsquad-4.5.4}/devsquad.egg-info/SOURCES.txt +40 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/pyproject.toml +5 -1
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/api/routes/dispatch.py +16 -3
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/check_doc_consistency.py +1 -1
- devsquad-4.5.4/scripts/check_module_activation.py +273 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/cli.py +91 -0
- devsquad-4.5.4/scripts/cli_audit.py +272 -0
- devsquad-4.5.4/scripts/cli_backend.py +111 -0
- devsquad-4.5.4/scripts/cli_doctor.py +273 -0
- devsquad-4.5.4/scripts/cli_metrics.py +181 -0
- devsquad-4.5.4/scripts/cli_modules.py +171 -0
- devsquad-4.5.4/scripts/collaboration/_version.py +1 -0
- devsquad-4.5.4/scripts/collaboration/approval_gate.py +197 -0
- devsquad-4.5.4/scripts/collaboration/artifact_store.py +466 -0
- devsquad-4.5.4/scripts/collaboration/backend_config.py +237 -0
- devsquad-4.5.4/scripts/collaboration/backend_paths.py +195 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/cli_command_classifier.py +7 -0
- devsquad-4.5.4/scripts/collaboration/coeffect.py +239 -0
- devsquad-4.5.4/scripts/collaboration/connector_framework.py +341 -0
- devsquad-4.5.4/scripts/collaboration/dispatch_effect.py +239 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/dispatch_models.py +50 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/dispatch_pre_steps.py +74 -4
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/dispatcher.py +199 -10
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/dispatcher_base.py +18 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/dispatcher_config.py +8 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/dispatcher_mixins.py +16 -2
- devsquad-4.5.4/scripts/collaboration/effect_registry.py +122 -0
- devsquad-4.5.4/scripts/collaboration/gitlab_connector.py +366 -0
- devsquad-4.5.4/scripts/collaboration/host_llm_bridge.py +454 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/llm_backend.py +336 -75
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/models_dispatch.py +10 -0
- devsquad-4.5.4/scripts/collaboration/module_fiber.py +195 -0
- devsquad-4.5.4/scripts/collaboration/moka_backend.py +177 -0
- devsquad-4.5.4/scripts/collaboration/order_chain_detector.py +262 -0
- devsquad-4.5.4/scripts/collaboration/perf_baseline.py +393 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/prometheus_metrics.py +139 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/scratchpad.py +2 -3
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/scratchpad_history_store.py +2 -3
- devsquad-4.5.4/scripts/collaboration/task_scale_gate.py +312 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/worker.py +18 -0
- devsquad-4.5.4/scripts/collect_baseline.py +160 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/skills/__init__.py +1 -1
- devsquad-4.5.4/tests/test_approval_gate.py +398 -0
- devsquad-4.5.4/tests/test_artifact_effect_binding.py +129 -0
- devsquad-4.5.4/tests/test_artifact_store.py +306 -0
- devsquad-4.5.4/tests/test_backend_config.py +239 -0
- devsquad-4.5.4/tests/test_cli_audit.py +263 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_cli_command_classifier.py +6 -4
- devsquad-4.5.4/tests/test_cli_doctor.py +226 -0
- devsquad-4.5.4/tests/test_cli_metrics.py +151 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_collaboration_dispatcher_ux_test.py +5 -1
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_dispatcher_mixins.py +62 -0
- devsquad-4.5.4/tests/test_effect_registry.py +401 -0
- devsquad-4.5.4/tests/test_fallback_fuse.py +214 -0
- devsquad-4.5.4/tests/test_gitlab_connector.py +295 -0
- devsquad-4.5.4/tests/test_host_bridge_unit.py +354 -0
- devsquad-4.5.4/tests/test_llm_backend_resolve.py +370 -0
- devsquad-4.5.4/tests/test_moka_backend.py +306 -0
- devsquad-4.5.4/tests/test_order_chain_detector.py +242 -0
- devsquad-4.5.4/tests/test_perf_baseline.py +341 -0
- devsquad-4.5.4/tests/test_perf_baseline_ci_gate.py +257 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_prometheus_metrics.py +158 -7
- devsquad-4.5.4/tests/test_task_scale_gate.py +247 -0
- devsquad-4.5.4/tests/test_worker_artifact_integration.py +139 -0
- devsquad-4.5.0/scripts/collaboration/_version.py +0 -1
- {devsquad-4.5.0 → devsquad-4.5.4}/LICENSE +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/devsquad.egg-info/dependency_links.txt +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/devsquad.egg-info/entry_points.txt +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/devsquad.egg-info/requires.txt +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/devsquad.egg-info/top_level.txt +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/__init__.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/api/__init__.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/api/models.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/api/rate_limit.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/api/routes/__init__.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/api/routes/lifecycle.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/api/routes/metrics.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/api/routes/metrics_gates.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/api/security.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/api_server.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/auth.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/benchmark_async_dispatch.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/benchmark_ponytail_smart.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/benchmark_real_llm.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/check_async_coverage.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/check_config_consistency.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/check_constructor_params.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/check_dependency_lock.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/check_dependency_sync.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/check_hidden_content.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/check_test_pyramid.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/check_test_quality.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/check_version_consistency.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/cli/__init__.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/cli/cli_visual.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/cli_dispatch.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/cli_lifecycle.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/cli_sessions.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/cli_utils.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/__init__.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/adaptive_role_selector.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/adversarial_verify.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/agent_briefing.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/agent_identity.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/ai_semantic_matcher.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/anchor_checker.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/anti_rationalization.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/async_adapter.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/async_coordinator.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/async_llm_backend.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/audit_logger.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/autonomous/__init__.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/autonomous/git_driver.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/autonomous/loop_controller.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/autonomous/notes_memory.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/autonomous/run_state.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/autonomous/sleep_guard.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/autonomous/smart_confirmation.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/batch_scheduler.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/benchmark_regression_checker.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/cache_interface.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/ccr_store.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/checkpoint_manager.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/ci_feedback_adapter.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/code_graph_query.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/code_graph_storage.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/code_knowledge_graph.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/code_map_generator.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/concern_pack_loader.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/confidence_score.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/config_manager.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/consensus.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/consensus_gate.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/constants.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/content_cache.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/content_crusher.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/context_compressor.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/coordinator.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/dashboard_live_mode.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/debt_collector.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/dependency_hallucination_checker.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/deployment_compliance_checker.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/dispatch_audit.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/dispatch_component_factory.py +1 -1
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/dispatch_hooks.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/dispatch_lifecycle.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/dispatch_performance.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/dispatch_rbac.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/dispatch_result_assembler.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/dispatch_services.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/dispatch_steps.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/dispatch_steps_base.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/dispatch_steps_consensus_mixin.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/dispatch_steps_feedback_mixin.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/dispatch_steps_mixins.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/dispatch_steps_quality_mixin.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/dispatch_steps_services_mixin.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/dispatcher_async_mixin.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/dispatcher_audit_mixin.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/dispatcher_error_mixin.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/dispatcher_factory.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/dispatcher_lifecycle_mixin.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/dispatcher_status_mixin.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/dispatcher_utils_mixin.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/dora_metrics_collector.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/dual_layer_context.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/enhanced_worker.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/enterprise_feature.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/error_budget_tracker.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/event_bus.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/execution_guard.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/feature_usage_tracker.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/feedback_control_loop.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/file_bundler.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/five_axis_consensus.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/gap_analyzer.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/input_validator.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/intent_workflow_mapper.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/judge_agent.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/language_parsers.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/learned_rule_store.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/lifecycle_gate.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/lifecycle_protocol.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/lifecycle_shortcut_adapter.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/lifecycle_shortcut_helpers.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/lifecycle_templates.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/llm_cache.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/llm_cache_async.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/llm_cache_base.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/llm_retry.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/llm_retry_async.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/llm_retry_base.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/loop_engineering/__init__.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/loop_engineering/discovery_probe.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/loop_engineering/handoff_adapter.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/loop_engineering/independent_evaluator.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/loop_engineering/kernel.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/loop_engineering/loop_scheduler.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/loop_engineering/models.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/loop_engineering/protocols.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/loop_engineering/rollback_strategy.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/loop_engineering/unified_memory.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/mce_adapter.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/memory_bridge.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/memory_claw_source.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/memory_forgetting.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/memory_index.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/memory_query.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/memory_serializer.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/memory_types.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/meta_skill_layering.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/micro_task_planner.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/models.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/models_base.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/models_lifecycle.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/multi_host_adapter.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/multi_level_cache.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/multi_tenant.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/null_providers.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/operation_classifier.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/output_slicer.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/output_validator.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/performance_fingerprint.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/performance_monitor.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/permission_guard.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/plugins/__init__.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/plugins/hot_loader.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/ponytail_rule_injector.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/prompt_assembler.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/prompt_assembler_base.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/prompt_assembler_formatting_mixin.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/prompt_assembler_mixins.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/prompt_assembler_substitution_mixin.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/prompt_assembler_template_mixin.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/prompt_assembler_validation_mixin.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/prompt_dials.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/protocols.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/quality_calibration_gate.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/quality_probe_slice.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/rbac_engine.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/redesign_auditor.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/redesign_checkers.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/redis_cache.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/report_formatter.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/requirement_tracer.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/retrospective.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/review_checkers.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/risk_register.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/role_matcher.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/role_skill_loader.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/role_specific_mock_backend.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/rule_collector.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/secret_patterns.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/severity_router.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/similar_task_recommender.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/skill_extractor.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/skill_provider_builtin.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/skill_provider_mcp.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/skill_registry.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/skill_storage.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/skillifier.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/standardized_role_template.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/task_completion_checker.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/tech_debt_manager.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/test_quality_guard.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/todo_drift_monitor.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/two_stage_review_gate.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/ue_test_accessibility_mixin.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/ue_test_framework.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/ue_test_framework_base.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/ue_test_heuristic_mixin.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/ue_test_journey_mixin.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/ue_test_mixins.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/ue_test_persona_mixin.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/unified_gate_engine.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/usage_tracker.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/user_friendly_error.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/verification_gate.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/viewpoint_registry.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/warmup_manager.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/workflow_engine.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/workflow_engine_base.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/workflow_engine_lifecycle_mixin.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/workflow_engine_mixins.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/workflow_engine_persistence_mixin.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/workflow_engine_state_mixin.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/workflow_engine_transition_mixin.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/collaboration/yagni_checker.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/dashboard/__init__.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/dashboard/app.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/dashboard/auth_views.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/dashboard/components.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/dashboard/dag_views.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/dashboard/dispatch_views.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/dashboard/i18n.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/dashboard/lifecycle_views.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/dashboard/metrics_views.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/dashboard/state.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/dashboard/v43_panels.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/dashboard.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/generate_benchmark_report.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/generate_quality_decision_report.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/history_manager.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/mcp_server.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/qa/__init__.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/qa/deterministic_rule_engine.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/qa/models.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/qa/taste_dials.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/qa/uiux_analyzer.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/qa/uiux_subitems.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/qa/visual_regression.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/scan_pickle_payloads.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/utils/__init__.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/scripts/utils/_find_missing_hints.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/setup.cfg +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/skills/_version.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/skills/dispatch/handler.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/skills/intent/handler.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/skills/prototype/handler.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/skills/registry.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/skills/retrospective/__init__.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/skills/retrospective/handler.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/skills/review/handler.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/skills/security/handler.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/skills/teach/handler.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/skills/test/__init__.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/skills/test/handler.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_4pt_grid.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_adaptive_role_selector.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_adversarial_verify.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_agent_briefing.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_anchor_retrospective.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_anti_rationalization.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_antipattern_bans.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_api_budget_status_endpoint.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_api_security.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_api_server_v362.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_async_coordinator.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_async_modules.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_audit_logger.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_auth_phase5.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_autonomous.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_benchmark_ponytail_smart.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_cache_interface.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_ccr_store.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_check_async_coverage.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_check_config_consistency.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_check_constructor_params.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_check_dependency_lock.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_check_hidden_content.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_check_test_pyramid.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_check_test_quality.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_check_version_consistency.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_ci_feedback_adapter.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_cli_deep_v362.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_cli_lifecycle.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_cli_phase5.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_code_knowledge_graph.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_collaboration_claw_integration_test.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_collaboration_context_compressor_test.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_collaboration_core_test.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_collaboration_dispatcher_test.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_collaboration_e2e_test.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_collaboration_enhanced_e2e_test.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_collaboration_llm_cache_test.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_collaboration_llm_retry_test.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_collaboration_mce_adapter_test.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_collaboration_memory_bridge_test.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_collaboration_performance_monitor_test.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_collaboration_permission_guard_test.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_collaboration_prompt_optimization_test.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_collaboration_role_mapping_test.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_collaboration_skillifier_test.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_collaboration_test_quality_guard.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_collaboration_test_quality_guard_test.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_collaboration_upstream_test.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_collaboration_warmup_manager_test.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_confidence_score.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_config_injection.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_consensus_dissent.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_consensus_fatigue.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_consensus_gate.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_content_cache.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_content_crusher.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_coordinator_smart_compression.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_dag_views.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_dashboard_live_mode.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_dashboard_split.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_dashboard_ui_e2e.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_dashboard_v43_panels.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_data_backup.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_debt_collector.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_deep_shallow.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_deletion_test.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_dependency_hallucination_checker.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_dependency_lock.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_deployment_compliance_checker.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_deterministic_rule_engine.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_dispatch_audit.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_dispatch_performance.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_dispatch_rbac.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_dispatch_steps.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_dispatcher_phase5_core.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_docker_deployment.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_dual_layer_context.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_enhanced_worker.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_feedback_control_loop.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_five_axis_consensus.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_flow_standalone.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_full_lifecycle_adapter.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_git_guardrails.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_glossary_loader.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_grilling_mode.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_handoff_redaction.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_history_manager_v362.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_input_validator_phase5.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_input_validator_sensitive.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_intent_workflow_mapper.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_judge_agent.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_learned_rule_phase4.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_lifecycle_protocol.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_llm_auto_fallback.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_llm_cache_protocol.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_loop_engineering.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_loop_engineering_rollback.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_mcp_server_v362.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_memory_benchmarks.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_meta_skill_layering.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_micro_task_planner.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_multi_host_adapter.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_multi_tenant.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_multi_tenant_isolation_e2e.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_no_op_test.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_node_type_separation.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_null_providers.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_oklch_color.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_operation_classifier.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_output_slicer.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_output_validator_prompt_injection.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_performance_benchmarks.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_performance_fingerprint.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_performance_monitor_protocol.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_permission_guard_human_gate.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_permission_guard_phase5.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_phase4_ghost_feature_defense.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_pipeline_step19_20.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_plan_c_unified_architecture.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_plugins_hot_loader.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_ponytail_rule_injector.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_production_features.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_prompt_dials.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_protocols.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_prototype_skill.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_qa_uiux_visual_regression.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_quick_bonus.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_rate_limit.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_rbac_engine.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_rbac_fail_closed.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_red_capable_gate.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_redesign_auditor.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_redis_cache.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_requirement_tracer.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_retry_jitter_strategies.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_role_skill_loader.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_rule_collector.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_rule_injection_security.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_secret_patterns.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_severity_router.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_similar_task_recommender.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_skill_registry_coverage.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_skill_security.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_sleep_guard.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_standardized_role_template.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_start_script.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_step_node_types.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_suggested_next_steps.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_task_completion_checker.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_taste_dials.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_tautological_seams.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_teach_skill.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_tech_debt_manager.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_todo_drift_monitor.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_token_budget_compressed_scratchpad.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_triage_label.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_two_stage_review_gate.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_ue_test_framework.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_uiux_subitems.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_usage_tracker_coverage.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_v39_e2e.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_v39_performance.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_v411_security_hardening.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_verification_gate.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_version.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_vertical_slice.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_workflow_engine.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_workflow_engine_base.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_workflow_engine_lifecycle.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_workflow_engine_state.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_workflow_engine_transition.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/tests/test_workflow_persistence_coverage.py +0 -0
- {devsquad-4.5.0 → devsquad-4.5.4}/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.4
|
|
4
4
|
Summary: Production-Ready Multi-Role AI Task Orchestrator
|
|
5
5
|
Author-email: DevSquad Team <devsquad@example.com>
|
|
6
6
|
License: MIT
|
|
@@ -96,14 +96,14 @@ Dynamic: license-file
|
|
|
96
96
|
<p align="center">
|
|
97
97
|
<strong>🎯 把「单个 AI 助手」升级成「7 人 AI 专业团队」</strong>
|
|
98
98
|
<br>
|
|
99
|
-
<em>One task → Multi-role AI collaboration → One conclusion | V4.5.0 (cross-session continuity + protocol-native skills
|
|
99
|
+
<em>One task → Multi-role AI collaboration → One conclusion | V4.5.4 (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 enhancement modules)</em>
|
|
100
100
|
</p>
|
|
101
101
|
|
|
102
102
|
<p align="center">
|
|
103
103
|
<img alt="Python" src="https://img.shields.io/badge/Python-3.10+-blue?logo=python&logoColor=white" />
|
|
104
104
|
<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.
|
|
105
|
+
<img alt="Tests" src="https://img.shields.io/badge/Tests-8996%2B%20passing-brightgreen" />
|
|
106
|
+
<img alt="Version" src="https://img.shields.io/badge/V4.5.4-success" />
|
|
107
107
|
<img alt="CI" src="https://img.shields.io/badge/CI-GitHub_Actions-blue?logo=githubactions" />
|
|
108
108
|
<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
109
|
<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,14 +157,25 @@ devsquad run "设计一个安全的用户认证系统" --roles architect,securit
|
|
|
157
157
|
| 复杂系统设计(需要多视角) | **DevSquad 多角色协作** 🎯 |
|
|
158
158
|
| 生产环境自动化流程 | **DevSquad + REST API + Dashboard** 🎯 |
|
|
159
159
|
|
|
160
|
-
📚 **想深入了解?** → [完整快速入门指南](QUICKSTART.md) | [
|
|
160
|
+
📚 **想深入了解?** → [完整快速入门指南](QUICKSTART.md) | [193 模块详细参考](SKILL.md)
|
|
161
161
|
|
|
162
162
|
---
|
|
163
163
|
|
|
164
164
|
<details>
|
|
165
165
|
<summary>🔍 点击展开:完整功能介绍与架构详解</summary>
|
|
166
166
|
|
|
167
|
-
## 🚀 V4.5.
|
|
167
|
+
## 🚀 V4.5.2: Approval Gate + Connector Framework + Anti-Ghost E2E
|
|
168
|
+
|
|
169
|
+
**DevSquad V4.5.2** (PATCH release, SemVer compliant) introduces 2 new modules and completes 3 ROADMAP items (V451-1, V451-2, V451-7/8/9). All new modules default to safe, backward-compatible behavior — no API breaking changes. See [docs/release_notes/V4.5.2_RELEASE_NOTES.md](docs/release_notes/V4.5.2_RELEASE_NOTES.md) for full release notes.
|
|
170
|
+
|
|
171
|
+
### V4.5.2 — 2 New Modules + 3 ROADMAP Items
|
|
172
|
+
- **ApprovalGate**: User-level approval mechanism for external operations. Fail-closed on callback exceptions. Auto-approve fallback when no callback configured (backward compatible).
|
|
173
|
+
- **ConnectorFramework**: Protocol-based interface for external system integration (GitHub first). `Connector` Protocol + `GitHubConnector` (api/cli/simulation modes). `simulation=True` enforced by default in dispatch pipeline.
|
|
174
|
+
- **V451-7 Dashboard browser-level E2E**: 11 AppTest cases (Streamlit AppTest replaces Playwright — avoids heavy browser deps while still being browser-level DOM simulation)
|
|
175
|
+
- **V451-8 REST API end-to-end user journey E2E**: 190 E2E tests covering dispatch→history→roles→quick dispatch→error handling→lifecycle→cross-entry
|
|
176
|
+
- **V451-9 Connector Framework anti-ghost E2E**: 12 E2E tests (AG-1 through AG-8) proving pipeline activation
|
|
177
|
+
|
|
178
|
+
### V4.5.0 — Cross-Session Continuity + Protocol-Native Skills + Action-First Reports
|
|
168
179
|
|
|
169
180
|
**DevSquad V4.5.0** (merging V4.4.3 + V4.4.4 + V4.5.0 changes) delivers 10 new features for cross-session continuity, protocol-native skill architecture, and action-first reporting. The 7-role AI team orchestrates complex engineering tasks with full audit trails and consensus mechanisms. See [docs/VISION.md](docs/VISION.md) for the project vision.
|
|
170
181
|
|
|
@@ -202,13 +213,13 @@ devsquad run "设计一个安全的用户认证系统" --roles architect,securit
|
|
|
202
213
|
- 13 E2E tests xpass + anti-ghost counters
|
|
203
214
|
|
|
204
215
|
### Anti-Ghost Feature Guarantee
|
|
205
|
-
Every new module includes `_call_counter` mechanism + E2E anti_ghost test + CI `check_module_activation.py` verification. Modules must be truly integrated into dispatch pipeline (not just instantiated), with Markdown report sections user-visible.
|
|
216
|
+
Every new module includes `_call_counter` mechanism + E2E anti_ghost test + CI `check_module_activation.py` verification. Modules must be truly integrated into dispatch pipeline (not just instantiated), with Markdown report sections user-visible. V4.5.2 extends this pattern from V4.4.0 (RiskRegister / ViewpointRegistry / ErrorBudgetTracker / GapAnalyzer / DoraMetricsCollector) to V4.5.2 (ApprovalGate / ConnectorFramework).
|
|
206
217
|
|
|
207
218
|
### Test Pyramid Achieved
|
|
208
219
|
- **Contract tests**: 5.2% (target ≥5% ✅)
|
|
209
220
|
- **Integration tests**: 15.1% (target ≥15% ✅)
|
|
210
|
-
- **Total tests**:
|
|
211
|
-
- **E2E coverage**: 107 e2e + 1244 integration + 13 V4.4.0 anti-ghost
|
|
221
|
+
- **Total tests**: 8392+ (CI authoritative)
|
|
222
|
+
- **E2E coverage**: 107 e2e + 1244 integration + 13 V4.4.0 anti-ghost + 12 V4.5.2 anti-ghost
|
|
212
223
|
|
|
213
224
|
### Historical Features (V4.0.0-V4.3.3)
|
|
214
225
|
- **V4.3.3**: P0-P3 enhancement E2E skeletons (xfail TDD for V4.4.0)
|
|
@@ -224,7 +235,7 @@ Every new module includes `_call_counter` mechanism + E2E anti_ghost test + CI `
|
|
|
224
235
|
- **V4.0.0 P3-1 Autonomous**: plan → dev → verify → fix 4-stage autonomous iteration
|
|
225
236
|
- **V4.0.0 P3-2 Plugin Hot-Loading**: 3 loading paths + path traversal 3-layer protection + reload rollback
|
|
226
237
|
|
|
227
|
-
|
|
238
|
+
8996+ tests passing (CI authoritative).
|
|
228
239
|
|
|
229
240
|
---
|
|
230
241
|
|
|
@@ -724,7 +735,7 @@ python3 -m pytest tests/ -q --tb=line
|
|
|
724
735
|
| Document | Description | Language |
|
|
725
736
|
|----------|-------------|----------|
|
|
726
737
|
| [**QUICKSTART.md**](QUICKSTART.md) | **⭐ 30 秒快速入门指南(推荐新用户)** | 中文 |
|
|
727
|
-
| [SKILL.md](SKILL.md) | 完整技能手册 +
|
|
738
|
+
| [SKILL.md](SKILL.md) | 完整技能手册 + 187+ 模块参考 | EN/CN/JP |
|
|
728
739
|
| [GUIDE.md](GUIDE.md) | 完全用户指南 | 中文 |
|
|
729
740
|
| [INSTALL.md](INSTALL.md) | 安装指南 (Unix + Windows) | EN/CN |
|
|
730
741
|
| [EXAMPLES.md](EXAMPLES.md) | 实际使用示例 | EN |
|
|
@@ -804,6 +815,6 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
|
|
|
804
815
|
|
|
805
816
|
---
|
|
806
817
|
|
|
807
|
-
*Last updated: 2026-08-
|
|
818
|
+
*Last updated: 2026-08-05 | Version: V4.5.2 (Approval Gate + Connector Framework + anti-ghost E2E — 2 new modules, 3 ROADMAP items completed) | V4.5.0 (cross-session continuity + protocol-native skills + action-first reports — 10 new features) | V4.4.0 (5 enhancement modules: RiskRegister / ViewpointRegistry / ErrorBudgetTracker / GapAnalyzer / DoraMetricsCollector — see [CHANGELOG.md](CHANGELOG.md))*
|
|
808
819
|
|
|
809
820
|
</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.0 (cross-session continuity + protocol-native skills
|
|
6
|
+
<em>One task → Multi-role AI collaboration → One conclusion | V4.5.4 (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 enhancement modules)</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-8996%2B%20passing-brightgreen" />
|
|
13
|
+
<img alt="Version" src="https://img.shields.io/badge/V4.5.4-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,14 +64,25 @@ devsquad run "设计一个安全的用户认证系统" --roles architect,securit
|
|
|
64
64
|
| 复杂系统设计(需要多视角) | **DevSquad 多角色协作** 🎯 |
|
|
65
65
|
| 生产环境自动化流程 | **DevSquad + REST API + Dashboard** 🎯 |
|
|
66
66
|
|
|
67
|
-
📚 **想深入了解?** → [完整快速入门指南](QUICKSTART.md) | [
|
|
67
|
+
📚 **想深入了解?** → [完整快速入门指南](QUICKSTART.md) | [193 模块详细参考](SKILL.md)
|
|
68
68
|
|
|
69
69
|
---
|
|
70
70
|
|
|
71
71
|
<details>
|
|
72
72
|
<summary>🔍 点击展开:完整功能介绍与架构详解</summary>
|
|
73
73
|
|
|
74
|
-
## 🚀 V4.5.
|
|
74
|
+
## 🚀 V4.5.2: Approval Gate + Connector Framework + Anti-Ghost E2E
|
|
75
|
+
|
|
76
|
+
**DevSquad V4.5.2** (PATCH release, SemVer compliant) introduces 2 new modules and completes 3 ROADMAP items (V451-1, V451-2, V451-7/8/9). All new modules default to safe, backward-compatible behavior — no API breaking changes. See [docs/release_notes/V4.5.2_RELEASE_NOTES.md](docs/release_notes/V4.5.2_RELEASE_NOTES.md) for full release notes.
|
|
77
|
+
|
|
78
|
+
### V4.5.2 — 2 New Modules + 3 ROADMAP Items
|
|
79
|
+
- **ApprovalGate**: User-level approval mechanism for external operations. Fail-closed on callback exceptions. Auto-approve fallback when no callback configured (backward compatible).
|
|
80
|
+
- **ConnectorFramework**: Protocol-based interface for external system integration (GitHub first). `Connector` Protocol + `GitHubConnector` (api/cli/simulation modes). `simulation=True` enforced by default in dispatch pipeline.
|
|
81
|
+
- **V451-7 Dashboard browser-level E2E**: 11 AppTest cases (Streamlit AppTest replaces Playwright — avoids heavy browser deps while still being browser-level DOM simulation)
|
|
82
|
+
- **V451-8 REST API end-to-end user journey E2E**: 190 E2E tests covering dispatch→history→roles→quick dispatch→error handling→lifecycle→cross-entry
|
|
83
|
+
- **V451-9 Connector Framework anti-ghost E2E**: 12 E2E tests (AG-1 through AG-8) proving pipeline activation
|
|
84
|
+
|
|
85
|
+
### V4.5.0 — Cross-Session Continuity + Protocol-Native Skills + Action-First Reports
|
|
75
86
|
|
|
76
87
|
**DevSquad V4.5.0** (merging V4.4.3 + V4.4.4 + V4.5.0 changes) delivers 10 new features for cross-session continuity, protocol-native skill architecture, and action-first reporting. The 7-role AI team orchestrates complex engineering tasks with full audit trails and consensus mechanisms. See [docs/VISION.md](docs/VISION.md) for the project vision.
|
|
77
88
|
|
|
@@ -109,13 +120,13 @@ devsquad run "设计一个安全的用户认证系统" --roles architect,securit
|
|
|
109
120
|
- 13 E2E tests xpass + anti-ghost counters
|
|
110
121
|
|
|
111
122
|
### Anti-Ghost Feature Guarantee
|
|
112
|
-
Every new module includes `_call_counter` mechanism + E2E anti_ghost test + CI `check_module_activation.py` verification. Modules must be truly integrated into dispatch pipeline (not just instantiated), with Markdown report sections user-visible.
|
|
123
|
+
Every new module includes `_call_counter` mechanism + E2E anti_ghost test + CI `check_module_activation.py` verification. Modules must be truly integrated into dispatch pipeline (not just instantiated), with Markdown report sections user-visible. V4.5.2 extends this pattern from V4.4.0 (RiskRegister / ViewpointRegistry / ErrorBudgetTracker / GapAnalyzer / DoraMetricsCollector) to V4.5.2 (ApprovalGate / ConnectorFramework).
|
|
113
124
|
|
|
114
125
|
### Test Pyramid Achieved
|
|
115
126
|
- **Contract tests**: 5.2% (target ≥5% ✅)
|
|
116
127
|
- **Integration tests**: 15.1% (target ≥15% ✅)
|
|
117
|
-
- **Total tests**:
|
|
118
|
-
- **E2E coverage**: 107 e2e + 1244 integration + 13 V4.4.0 anti-ghost
|
|
128
|
+
- **Total tests**: 8392+ (CI authoritative)
|
|
129
|
+
- **E2E coverage**: 107 e2e + 1244 integration + 13 V4.4.0 anti-ghost + 12 V4.5.2 anti-ghost
|
|
119
130
|
|
|
120
131
|
### Historical Features (V4.0.0-V4.3.3)
|
|
121
132
|
- **V4.3.3**: P0-P3 enhancement E2E skeletons (xfail TDD for V4.4.0)
|
|
@@ -131,7 +142,7 @@ Every new module includes `_call_counter` mechanism + E2E anti_ghost test + CI `
|
|
|
131
142
|
- **V4.0.0 P3-1 Autonomous**: plan → dev → verify → fix 4-stage autonomous iteration
|
|
132
143
|
- **V4.0.0 P3-2 Plugin Hot-Loading**: 3 loading paths + path traversal 3-layer protection + reload rollback
|
|
133
144
|
|
|
134
|
-
|
|
145
|
+
8996+ tests passing (CI authoritative).
|
|
135
146
|
|
|
136
147
|
---
|
|
137
148
|
|
|
@@ -631,7 +642,7 @@ python3 -m pytest tests/ -q --tb=line
|
|
|
631
642
|
| Document | Description | Language |
|
|
632
643
|
|----------|-------------|----------|
|
|
633
644
|
| [**QUICKSTART.md**](QUICKSTART.md) | **⭐ 30 秒快速入门指南(推荐新用户)** | 中文 |
|
|
634
|
-
| [SKILL.md](SKILL.md) | 完整技能手册 +
|
|
645
|
+
| [SKILL.md](SKILL.md) | 完整技能手册 + 187+ 模块参考 | EN/CN/JP |
|
|
635
646
|
| [GUIDE.md](GUIDE.md) | 完全用户指南 | 中文 |
|
|
636
647
|
| [INSTALL.md](INSTALL.md) | 安装指南 (Unix + Windows) | EN/CN |
|
|
637
648
|
| [EXAMPLES.md](EXAMPLES.md) | 实际使用示例 | EN |
|
|
@@ -711,6 +722,6 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
|
|
|
711
722
|
|
|
712
723
|
---
|
|
713
724
|
|
|
714
|
-
*Last updated: 2026-08-
|
|
725
|
+
*Last updated: 2026-08-05 | Version: V4.5.2 (Approval Gate + Connector Framework + anti-ghost E2E — 2 new modules, 3 ROADMAP items completed) | V4.5.0 (cross-session continuity + protocol-native skills + action-first reports — 10 new features) | V4.4.0 (5 enhancement modules: RiskRegister / ViewpointRegistry / ErrorBudgetTracker / GapAnalyzer / DoraMetricsCollector — see [CHANGELOG.md](CHANGELOG.md))*
|
|
715
726
|
|
|
716
727
|
</details>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: devsquad
|
|
3
|
-
Version: 4.5.
|
|
3
|
+
Version: 4.5.4
|
|
4
4
|
Summary: Production-Ready Multi-Role AI Task Orchestrator
|
|
5
5
|
Author-email: DevSquad Team <devsquad@example.com>
|
|
6
6
|
License: MIT
|
|
@@ -96,14 +96,14 @@ Dynamic: license-file
|
|
|
96
96
|
<p align="center">
|
|
97
97
|
<strong>🎯 把「单个 AI 助手」升级成「7 人 AI 专业团队」</strong>
|
|
98
98
|
<br>
|
|
99
|
-
<em>One task → Multi-role AI collaboration → One conclusion | V4.5.0 (cross-session continuity + protocol-native skills
|
|
99
|
+
<em>One task → Multi-role AI collaboration → One conclusion | V4.5.4 (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 enhancement modules)</em>
|
|
100
100
|
</p>
|
|
101
101
|
|
|
102
102
|
<p align="center">
|
|
103
103
|
<img alt="Python" src="https://img.shields.io/badge/Python-3.10+-blue?logo=python&logoColor=white" />
|
|
104
104
|
<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.
|
|
105
|
+
<img alt="Tests" src="https://img.shields.io/badge/Tests-8996%2B%20passing-brightgreen" />
|
|
106
|
+
<img alt="Version" src="https://img.shields.io/badge/V4.5.4-success" />
|
|
107
107
|
<img alt="CI" src="https://img.shields.io/badge/CI-GitHub_Actions-blue?logo=githubactions" />
|
|
108
108
|
<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
109
|
<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,14 +157,25 @@ devsquad run "设计一个安全的用户认证系统" --roles architect,securit
|
|
|
157
157
|
| 复杂系统设计(需要多视角) | **DevSquad 多角色协作** 🎯 |
|
|
158
158
|
| 生产环境自动化流程 | **DevSquad + REST API + Dashboard** 🎯 |
|
|
159
159
|
|
|
160
|
-
📚 **想深入了解?** → [完整快速入门指南](QUICKSTART.md) | [
|
|
160
|
+
📚 **想深入了解?** → [完整快速入门指南](QUICKSTART.md) | [193 模块详细参考](SKILL.md)
|
|
161
161
|
|
|
162
162
|
---
|
|
163
163
|
|
|
164
164
|
<details>
|
|
165
165
|
<summary>🔍 点击展开:完整功能介绍与架构详解</summary>
|
|
166
166
|
|
|
167
|
-
## 🚀 V4.5.
|
|
167
|
+
## 🚀 V4.5.2: Approval Gate + Connector Framework + Anti-Ghost E2E
|
|
168
|
+
|
|
169
|
+
**DevSquad V4.5.2** (PATCH release, SemVer compliant) introduces 2 new modules and completes 3 ROADMAP items (V451-1, V451-2, V451-7/8/9). All new modules default to safe, backward-compatible behavior — no API breaking changes. See [docs/release_notes/V4.5.2_RELEASE_NOTES.md](docs/release_notes/V4.5.2_RELEASE_NOTES.md) for full release notes.
|
|
170
|
+
|
|
171
|
+
### V4.5.2 — 2 New Modules + 3 ROADMAP Items
|
|
172
|
+
- **ApprovalGate**: User-level approval mechanism for external operations. Fail-closed on callback exceptions. Auto-approve fallback when no callback configured (backward compatible).
|
|
173
|
+
- **ConnectorFramework**: Protocol-based interface for external system integration (GitHub first). `Connector` Protocol + `GitHubConnector` (api/cli/simulation modes). `simulation=True` enforced by default in dispatch pipeline.
|
|
174
|
+
- **V451-7 Dashboard browser-level E2E**: 11 AppTest cases (Streamlit AppTest replaces Playwright — avoids heavy browser deps while still being browser-level DOM simulation)
|
|
175
|
+
- **V451-8 REST API end-to-end user journey E2E**: 190 E2E tests covering dispatch→history→roles→quick dispatch→error handling→lifecycle→cross-entry
|
|
176
|
+
- **V451-9 Connector Framework anti-ghost E2E**: 12 E2E tests (AG-1 through AG-8) proving pipeline activation
|
|
177
|
+
|
|
178
|
+
### V4.5.0 — Cross-Session Continuity + Protocol-Native Skills + Action-First Reports
|
|
168
179
|
|
|
169
180
|
**DevSquad V4.5.0** (merging V4.4.3 + V4.4.4 + V4.5.0 changes) delivers 10 new features for cross-session continuity, protocol-native skill architecture, and action-first reporting. The 7-role AI team orchestrates complex engineering tasks with full audit trails and consensus mechanisms. See [docs/VISION.md](docs/VISION.md) for the project vision.
|
|
170
181
|
|
|
@@ -202,13 +213,13 @@ devsquad run "设计一个安全的用户认证系统" --roles architect,securit
|
|
|
202
213
|
- 13 E2E tests xpass + anti-ghost counters
|
|
203
214
|
|
|
204
215
|
### Anti-Ghost Feature Guarantee
|
|
205
|
-
Every new module includes `_call_counter` mechanism + E2E anti_ghost test + CI `check_module_activation.py` verification. Modules must be truly integrated into dispatch pipeline (not just instantiated), with Markdown report sections user-visible.
|
|
216
|
+
Every new module includes `_call_counter` mechanism + E2E anti_ghost test + CI `check_module_activation.py` verification. Modules must be truly integrated into dispatch pipeline (not just instantiated), with Markdown report sections user-visible. V4.5.2 extends this pattern from V4.4.0 (RiskRegister / ViewpointRegistry / ErrorBudgetTracker / GapAnalyzer / DoraMetricsCollector) to V4.5.2 (ApprovalGate / ConnectorFramework).
|
|
206
217
|
|
|
207
218
|
### Test Pyramid Achieved
|
|
208
219
|
- **Contract tests**: 5.2% (target ≥5% ✅)
|
|
209
220
|
- **Integration tests**: 15.1% (target ≥15% ✅)
|
|
210
|
-
- **Total tests**:
|
|
211
|
-
- **E2E coverage**: 107 e2e + 1244 integration + 13 V4.4.0 anti-ghost
|
|
221
|
+
- **Total tests**: 8392+ (CI authoritative)
|
|
222
|
+
- **E2E coverage**: 107 e2e + 1244 integration + 13 V4.4.0 anti-ghost + 12 V4.5.2 anti-ghost
|
|
212
223
|
|
|
213
224
|
### Historical Features (V4.0.0-V4.3.3)
|
|
214
225
|
- **V4.3.3**: P0-P3 enhancement E2E skeletons (xfail TDD for V4.4.0)
|
|
@@ -224,7 +235,7 @@ Every new module includes `_call_counter` mechanism + E2E anti_ghost test + CI `
|
|
|
224
235
|
- **V4.0.0 P3-1 Autonomous**: plan → dev → verify → fix 4-stage autonomous iteration
|
|
225
236
|
- **V4.0.0 P3-2 Plugin Hot-Loading**: 3 loading paths + path traversal 3-layer protection + reload rollback
|
|
226
237
|
|
|
227
|
-
|
|
238
|
+
8996+ tests passing (CI authoritative).
|
|
228
239
|
|
|
229
240
|
---
|
|
230
241
|
|
|
@@ -724,7 +735,7 @@ python3 -m pytest tests/ -q --tb=line
|
|
|
724
735
|
| Document | Description | Language |
|
|
725
736
|
|----------|-------------|----------|
|
|
726
737
|
| [**QUICKSTART.md**](QUICKSTART.md) | **⭐ 30 秒快速入门指南(推荐新用户)** | 中文 |
|
|
727
|
-
| [SKILL.md](SKILL.md) | 完整技能手册 +
|
|
738
|
+
| [SKILL.md](SKILL.md) | 完整技能手册 + 187+ 模块参考 | EN/CN/JP |
|
|
728
739
|
| [GUIDE.md](GUIDE.md) | 完全用户指南 | 中文 |
|
|
729
740
|
| [INSTALL.md](INSTALL.md) | 安装指南 (Unix + Windows) | EN/CN |
|
|
730
741
|
| [EXAMPLES.md](EXAMPLES.md) | 实际使用示例 | EN |
|
|
@@ -804,6 +815,6 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
|
|
|
804
815
|
|
|
805
816
|
---
|
|
806
817
|
|
|
807
|
-
*Last updated: 2026-08-
|
|
818
|
+
*Last updated: 2026-08-05 | Version: V4.5.2 (Approval Gate + Connector Framework + anti-ghost E2E — 2 new modules, 3 ROADMAP items completed) | V4.5.0 (cross-session continuity + protocol-native skills + action-first reports — 10 new features) | V4.4.0 (5 enhancement modules: RiskRegister / ViewpointRegistry / ErrorBudgetTracker / GapAnalyzer / DoraMetricsCollector — see [CHANGELOG.md](CHANGELOG.md))*
|
|
808
819
|
|
|
809
820
|
</details>
|
|
@@ -20,14 +20,21 @@ scripts/check_dependency_lock.py
|
|
|
20
20
|
scripts/check_dependency_sync.py
|
|
21
21
|
scripts/check_doc_consistency.py
|
|
22
22
|
scripts/check_hidden_content.py
|
|
23
|
+
scripts/check_module_activation.py
|
|
23
24
|
scripts/check_test_pyramid.py
|
|
24
25
|
scripts/check_test_quality.py
|
|
25
26
|
scripts/check_version_consistency.py
|
|
26
27
|
scripts/cli.py
|
|
28
|
+
scripts/cli_audit.py
|
|
29
|
+
scripts/cli_backend.py
|
|
27
30
|
scripts/cli_dispatch.py
|
|
31
|
+
scripts/cli_doctor.py
|
|
28
32
|
scripts/cli_lifecycle.py
|
|
33
|
+
scripts/cli_metrics.py
|
|
34
|
+
scripts/cli_modules.py
|
|
29
35
|
scripts/cli_sessions.py
|
|
30
36
|
scripts/cli_utils.py
|
|
37
|
+
scripts/collect_baseline.py
|
|
31
38
|
scripts/dashboard.py
|
|
32
39
|
scripts/generate_benchmark_report.py
|
|
33
40
|
scripts/generate_quality_decision_report.py
|
|
@@ -54,10 +61,14 @@ scripts/collaboration/agent_identity.py
|
|
|
54
61
|
scripts/collaboration/ai_semantic_matcher.py
|
|
55
62
|
scripts/collaboration/anchor_checker.py
|
|
56
63
|
scripts/collaboration/anti_rationalization.py
|
|
64
|
+
scripts/collaboration/approval_gate.py
|
|
65
|
+
scripts/collaboration/artifact_store.py
|
|
57
66
|
scripts/collaboration/async_adapter.py
|
|
58
67
|
scripts/collaboration/async_coordinator.py
|
|
59
68
|
scripts/collaboration/async_llm_backend.py
|
|
60
69
|
scripts/collaboration/audit_logger.py
|
|
70
|
+
scripts/collaboration/backend_config.py
|
|
71
|
+
scripts/collaboration/backend_paths.py
|
|
61
72
|
scripts/collaboration/batch_scheduler.py
|
|
62
73
|
scripts/collaboration/benchmark_regression_checker.py
|
|
63
74
|
scripts/collaboration/cache_interface.py
|
|
@@ -69,9 +80,11 @@ scripts/collaboration/code_graph_query.py
|
|
|
69
80
|
scripts/collaboration/code_graph_storage.py
|
|
70
81
|
scripts/collaboration/code_knowledge_graph.py
|
|
71
82
|
scripts/collaboration/code_map_generator.py
|
|
83
|
+
scripts/collaboration/coeffect.py
|
|
72
84
|
scripts/collaboration/concern_pack_loader.py
|
|
73
85
|
scripts/collaboration/confidence_score.py
|
|
74
86
|
scripts/collaboration/config_manager.py
|
|
87
|
+
scripts/collaboration/connector_framework.py
|
|
75
88
|
scripts/collaboration/consensus.py
|
|
76
89
|
scripts/collaboration/consensus_gate.py
|
|
77
90
|
scripts/collaboration/constants.py
|
|
@@ -85,6 +98,7 @@ scripts/collaboration/dependency_hallucination_checker.py
|
|
|
85
98
|
scripts/collaboration/deployment_compliance_checker.py
|
|
86
99
|
scripts/collaboration/dispatch_audit.py
|
|
87
100
|
scripts/collaboration/dispatch_component_factory.py
|
|
101
|
+
scripts/collaboration/dispatch_effect.py
|
|
88
102
|
scripts/collaboration/dispatch_hooks.py
|
|
89
103
|
scripts/collaboration/dispatch_lifecycle.py
|
|
90
104
|
scripts/collaboration/dispatch_models.py
|
|
@@ -113,6 +127,7 @@ scripts/collaboration/dispatcher_status_mixin.py
|
|
|
113
127
|
scripts/collaboration/dispatcher_utils_mixin.py
|
|
114
128
|
scripts/collaboration/dora_metrics_collector.py
|
|
115
129
|
scripts/collaboration/dual_layer_context.py
|
|
130
|
+
scripts/collaboration/effect_registry.py
|
|
116
131
|
scripts/collaboration/enhanced_worker.py
|
|
117
132
|
scripts/collaboration/enterprise_feature.py
|
|
118
133
|
scripts/collaboration/error_budget_tracker.py
|
|
@@ -123,6 +138,8 @@ scripts/collaboration/feedback_control_loop.py
|
|
|
123
138
|
scripts/collaboration/file_bundler.py
|
|
124
139
|
scripts/collaboration/five_axis_consensus.py
|
|
125
140
|
scripts/collaboration/gap_analyzer.py
|
|
141
|
+
scripts/collaboration/gitlab_connector.py
|
|
142
|
+
scripts/collaboration/host_llm_bridge.py
|
|
126
143
|
scripts/collaboration/input_validator.py
|
|
127
144
|
scripts/collaboration/intent_workflow_mapper.py
|
|
128
145
|
scripts/collaboration/judge_agent.py
|
|
@@ -154,13 +171,17 @@ scripts/collaboration/models.py
|
|
|
154
171
|
scripts/collaboration/models_base.py
|
|
155
172
|
scripts/collaboration/models_dispatch.py
|
|
156
173
|
scripts/collaboration/models_lifecycle.py
|
|
174
|
+
scripts/collaboration/module_fiber.py
|
|
175
|
+
scripts/collaboration/moka_backend.py
|
|
157
176
|
scripts/collaboration/multi_host_adapter.py
|
|
158
177
|
scripts/collaboration/multi_level_cache.py
|
|
159
178
|
scripts/collaboration/multi_tenant.py
|
|
160
179
|
scripts/collaboration/null_providers.py
|
|
161
180
|
scripts/collaboration/operation_classifier.py
|
|
181
|
+
scripts/collaboration/order_chain_detector.py
|
|
162
182
|
scripts/collaboration/output_slicer.py
|
|
163
183
|
scripts/collaboration/output_validator.py
|
|
184
|
+
scripts/collaboration/perf_baseline.py
|
|
164
185
|
scripts/collaboration/performance_fingerprint.py
|
|
165
186
|
scripts/collaboration/performance_monitor.py
|
|
166
187
|
scripts/collaboration/permission_guard.py
|
|
@@ -203,6 +224,7 @@ scripts/collaboration/skill_storage.py
|
|
|
203
224
|
scripts/collaboration/skillifier.py
|
|
204
225
|
scripts/collaboration/standardized_role_template.py
|
|
205
226
|
scripts/collaboration/task_completion_checker.py
|
|
227
|
+
scripts/collaboration/task_scale_gate.py
|
|
206
228
|
scripts/collaboration/tech_debt_manager.py
|
|
207
229
|
scripts/collaboration/test_quality_guard.py
|
|
208
230
|
scripts/collaboration/todo_drift_monitor.py
|
|
@@ -291,11 +313,15 @@ tests/test_antipattern_bans.py
|
|
|
291
313
|
tests/test_api_budget_status_endpoint.py
|
|
292
314
|
tests/test_api_security.py
|
|
293
315
|
tests/test_api_server_v362.py
|
|
316
|
+
tests/test_approval_gate.py
|
|
317
|
+
tests/test_artifact_effect_binding.py
|
|
318
|
+
tests/test_artifact_store.py
|
|
294
319
|
tests/test_async_coordinator.py
|
|
295
320
|
tests/test_async_modules.py
|
|
296
321
|
tests/test_audit_logger.py
|
|
297
322
|
tests/test_auth_phase5.py
|
|
298
323
|
tests/test_autonomous.py
|
|
324
|
+
tests/test_backend_config.py
|
|
299
325
|
tests/test_benchmark_ponytail_smart.py
|
|
300
326
|
tests/test_cache_interface.py
|
|
301
327
|
tests/test_ccr_store.py
|
|
@@ -308,9 +334,12 @@ tests/test_check_test_pyramid.py
|
|
|
308
334
|
tests/test_check_test_quality.py
|
|
309
335
|
tests/test_check_version_consistency.py
|
|
310
336
|
tests/test_ci_feedback_adapter.py
|
|
337
|
+
tests/test_cli_audit.py
|
|
311
338
|
tests/test_cli_command_classifier.py
|
|
312
339
|
tests/test_cli_deep_v362.py
|
|
340
|
+
tests/test_cli_doctor.py
|
|
313
341
|
tests/test_cli_lifecycle.py
|
|
342
|
+
tests/test_cli_metrics.py
|
|
314
343
|
tests/test_cli_phase5.py
|
|
315
344
|
tests/test_code_knowledge_graph.py
|
|
316
345
|
tests/test_collaboration_claw_integration_test.py
|
|
@@ -362,16 +391,20 @@ tests/test_dispatcher_mixins.py
|
|
|
362
391
|
tests/test_dispatcher_phase5_core.py
|
|
363
392
|
tests/test_docker_deployment.py
|
|
364
393
|
tests/test_dual_layer_context.py
|
|
394
|
+
tests/test_effect_registry.py
|
|
365
395
|
tests/test_enhanced_worker.py
|
|
396
|
+
tests/test_fallback_fuse.py
|
|
366
397
|
tests/test_feedback_control_loop.py
|
|
367
398
|
tests/test_five_axis_consensus.py
|
|
368
399
|
tests/test_flow_standalone.py
|
|
369
400
|
tests/test_full_lifecycle_adapter.py
|
|
370
401
|
tests/test_git_guardrails.py
|
|
402
|
+
tests/test_gitlab_connector.py
|
|
371
403
|
tests/test_glossary_loader.py
|
|
372
404
|
tests/test_grilling_mode.py
|
|
373
405
|
tests/test_handoff_redaction.py
|
|
374
406
|
tests/test_history_manager_v362.py
|
|
407
|
+
tests/test_host_bridge_unit.py
|
|
375
408
|
tests/test_input_validator_phase5.py
|
|
376
409
|
tests/test_input_validator_sensitive.py
|
|
377
410
|
tests/test_intent_workflow_mapper.py
|
|
@@ -379,6 +412,7 @@ tests/test_judge_agent.py
|
|
|
379
412
|
tests/test_learned_rule_phase4.py
|
|
380
413
|
tests/test_lifecycle_protocol.py
|
|
381
414
|
tests/test_llm_auto_fallback.py
|
|
415
|
+
tests/test_llm_backend_resolve.py
|
|
382
416
|
tests/test_llm_cache_protocol.py
|
|
383
417
|
tests/test_loop_engineering.py
|
|
384
418
|
tests/test_loop_engineering_rollback.py
|
|
@@ -386,6 +420,7 @@ tests/test_mcp_server_v362.py
|
|
|
386
420
|
tests/test_memory_benchmarks.py
|
|
387
421
|
tests/test_meta_skill_layering.py
|
|
388
422
|
tests/test_micro_task_planner.py
|
|
423
|
+
tests/test_moka_backend.py
|
|
389
424
|
tests/test_multi_host_adapter.py
|
|
390
425
|
tests/test_multi_tenant.py
|
|
391
426
|
tests/test_multi_tenant_isolation_e2e.py
|
|
@@ -394,8 +429,11 @@ tests/test_node_type_separation.py
|
|
|
394
429
|
tests/test_null_providers.py
|
|
395
430
|
tests/test_oklch_color.py
|
|
396
431
|
tests/test_operation_classifier.py
|
|
432
|
+
tests/test_order_chain_detector.py
|
|
397
433
|
tests/test_output_slicer.py
|
|
398
434
|
tests/test_output_validator_prompt_injection.py
|
|
435
|
+
tests/test_perf_baseline.py
|
|
436
|
+
tests/test_perf_baseline_ci_gate.py
|
|
399
437
|
tests/test_performance_benchmarks.py
|
|
400
438
|
tests/test_performance_fingerprint.py
|
|
401
439
|
tests/test_performance_monitor_protocol.py
|
|
@@ -435,6 +473,7 @@ tests/test_start_script.py
|
|
|
435
473
|
tests/test_step_node_types.py
|
|
436
474
|
tests/test_suggested_next_steps.py
|
|
437
475
|
tests/test_task_completion_checker.py
|
|
476
|
+
tests/test_task_scale_gate.py
|
|
438
477
|
tests/test_taste_dials.py
|
|
439
478
|
tests/test_tautological_seams.py
|
|
440
479
|
tests/test_teach_skill.py
|
|
@@ -452,6 +491,7 @@ tests/test_v411_security_hardening.py
|
|
|
452
491
|
tests/test_verification_gate.py
|
|
453
492
|
tests/test_version.py
|
|
454
493
|
tests/test_vertical_slice.py
|
|
494
|
+
tests/test_worker_artifact_integration.py
|
|
455
495
|
tests/test_workflow_engine.py
|
|
456
496
|
tests/test_workflow_engine_base.py
|
|
457
497
|
tests/test_workflow_engine_lifecycle.py
|
|
@@ -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.4"
|
|
8
8
|
description = "Production-Ready Multi-Role AI Task Orchestrator"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = {text = "MIT"}
|
|
@@ -219,6 +219,10 @@ markers = [
|
|
|
219
219
|
"unit: marks tests as unit tests",
|
|
220
220
|
"smoke: marks tests as release smoke tests",
|
|
221
221
|
"asyncio: async tests using pytest-asyncio",
|
|
222
|
+
"security: security tests (no-secrets-in-repo, redteam)",
|
|
223
|
+
"contract: cross-module API contract tests",
|
|
224
|
+
"openai: real OpenAI API tests (release-only)",
|
|
225
|
+
"moka: real MOKA AI API tests (release-only)",
|
|
222
226
|
]
|
|
223
227
|
filterwarnings = [
|
|
224
228
|
"ignore::DeprecationWarning",
|
|
@@ -49,12 +49,22 @@ _global_dispatcher: MultiAgentDispatcher | None = None
|
|
|
49
49
|
|
|
50
50
|
|
|
51
51
|
def _get_dispatcher() -> MultiAgentDispatcher:
|
|
52
|
-
"""Get or create the global MultiAgentDispatcher instance.
|
|
52
|
+
"""Get or create the global MultiAgentDispatcher instance.
|
|
53
|
+
|
|
54
|
+
RBAC mode is selected by environment:
|
|
55
|
+
- ``DEVSQUAD_API_AUTH_DISABLED=1`` → development_mode=True (RBAC open,
|
|
56
|
+
for E2E tests and local dev). This env var already disables API key
|
|
57
|
+
auth, so treating it as a dev/test signal is consistent.
|
|
58
|
+
- Otherwise → development_mode=False (HC-1: production RBAC fail-closed).
|
|
59
|
+
"""
|
|
53
60
|
global _global_dispatcher
|
|
54
61
|
if _global_dispatcher is None:
|
|
55
62
|
try:
|
|
56
63
|
from scripts.collaboration.dispatcher import MultiAgentDispatcher
|
|
57
64
|
|
|
65
|
+
_is_dev_mode = os.environ.get("DEVSQUAD_API_AUTH_DISABLED", "").strip() in (
|
|
66
|
+
"1", "true", "True", "TRUE",
|
|
67
|
+
)
|
|
58
68
|
_global_dispatcher = MultiAgentDispatcher(
|
|
59
69
|
enable_warmup=True,
|
|
60
70
|
enable_compression=True,
|
|
@@ -62,9 +72,12 @@ def _get_dispatcher() -> MultiAgentDispatcher:
|
|
|
62
72
|
enable_memory=True,
|
|
63
73
|
enable_skillify=True,
|
|
64
74
|
enable_quality_guard=False,
|
|
65
|
-
development_mode=
|
|
75
|
+
development_mode=_is_dev_mode, # HC-1: prod fail-closed; dev open
|
|
76
|
+
)
|
|
77
|
+
logger.info(
|
|
78
|
+
"MultiAgentDispatcher initialized (development_mode=%s)",
|
|
79
|
+
_is_dev_mode,
|
|
66
80
|
)
|
|
67
|
-
logger.info("MultiAgentDispatcher initialized successfully")
|
|
68
81
|
except (ImportError, RuntimeError) as e:
|
|
69
82
|
logger.error("Failed to initialize MultiAgentDispatcher: %s", e)
|
|
70
83
|
raise HTTPException(status_code=503, detail=f"Dispatcher initialization failed: {str(e)}") from None
|
|
@@ -18,7 +18,7 @@ from __future__ import annotations
|
|
|
18
18
|
|
|
19
19
|
import re
|
|
20
20
|
import sys
|
|
21
|
-
from dataclasses import dataclass
|
|
21
|
+
from dataclasses import dataclass
|
|
22
22
|
from pathlib import Path
|
|
23
23
|
|
|
24
24
|
__all__ = ["Violation", "check_test_count_consistency", "check_module_count_consistency", "main"]
|