attune-ai 2.0.0__py3-none-any.whl
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.
- attune/__init__.py +358 -0
- attune/adaptive/__init__.py +13 -0
- attune/adaptive/task_complexity.py +127 -0
- attune/agent_monitoring.py +414 -0
- attune/cache/__init__.py +117 -0
- attune/cache/base.py +166 -0
- attune/cache/dependency_manager.py +256 -0
- attune/cache/hash_only.py +251 -0
- attune/cache/hybrid.py +457 -0
- attune/cache/storage.py +285 -0
- attune/cache_monitor.py +356 -0
- attune/cache_stats.py +298 -0
- attune/cli/__init__.py +152 -0
- attune/cli/__main__.py +12 -0
- attune/cli/commands/__init__.py +1 -0
- attune/cli/commands/batch.py +264 -0
- attune/cli/commands/cache.py +248 -0
- attune/cli/commands/help.py +331 -0
- attune/cli/commands/info.py +140 -0
- attune/cli/commands/inspect.py +436 -0
- attune/cli/commands/inspection.py +57 -0
- attune/cli/commands/memory.py +48 -0
- attune/cli/commands/metrics.py +92 -0
- attune/cli/commands/orchestrate.py +184 -0
- attune/cli/commands/patterns.py +207 -0
- attune/cli/commands/profiling.py +202 -0
- attune/cli/commands/provider.py +98 -0
- attune/cli/commands/routing.py +285 -0
- attune/cli/commands/setup.py +96 -0
- attune/cli/commands/status.py +235 -0
- attune/cli/commands/sync.py +166 -0
- attune/cli/commands/tier.py +121 -0
- attune/cli/commands/utilities.py +114 -0
- attune/cli/commands/workflow.py +579 -0
- attune/cli/core.py +32 -0
- attune/cli/parsers/__init__.py +68 -0
- attune/cli/parsers/batch.py +118 -0
- attune/cli/parsers/cache.py +65 -0
- attune/cli/parsers/help.py +41 -0
- attune/cli/parsers/info.py +26 -0
- attune/cli/parsers/inspect.py +66 -0
- attune/cli/parsers/metrics.py +42 -0
- attune/cli/parsers/orchestrate.py +61 -0
- attune/cli/parsers/patterns.py +54 -0
- attune/cli/parsers/provider.py +40 -0
- attune/cli/parsers/routing.py +110 -0
- attune/cli/parsers/setup.py +42 -0
- attune/cli/parsers/status.py +47 -0
- attune/cli/parsers/sync.py +31 -0
- attune/cli/parsers/tier.py +33 -0
- attune/cli/parsers/workflow.py +77 -0
- attune/cli/utils/__init__.py +1 -0
- attune/cli/utils/data.py +242 -0
- attune/cli/utils/helpers.py +68 -0
- attune/cli_legacy.py +3957 -0
- attune/cli_minimal.py +1159 -0
- attune/cli_router.py +437 -0
- attune/cli_unified.py +814 -0
- attune/config/__init__.py +66 -0
- attune/config/xml_config.py +286 -0
- attune/config.py +545 -0
- attune/coordination.py +870 -0
- attune/core.py +1511 -0
- attune/core_modules/__init__.py +15 -0
- attune/cost_tracker.py +626 -0
- attune/dashboard/__init__.py +41 -0
- attune/dashboard/app.py +512 -0
- attune/dashboard/simple_server.py +435 -0
- attune/dashboard/standalone_server.py +547 -0
- attune/discovery.py +306 -0
- attune/emergence.py +306 -0
- attune/exceptions.py +123 -0
- attune/feedback_loops.py +373 -0
- attune/hot_reload/README.md +473 -0
- attune/hot_reload/__init__.py +62 -0
- attune/hot_reload/config.py +83 -0
- attune/hot_reload/integration.py +229 -0
- attune/hot_reload/reloader.py +298 -0
- attune/hot_reload/watcher.py +183 -0
- attune/hot_reload/websocket.py +177 -0
- attune/levels.py +577 -0
- attune/leverage_points.py +441 -0
- attune/logging_config.py +261 -0
- attune/mcp/__init__.py +10 -0
- attune/mcp/server.py +506 -0
- attune/memory/__init__.py +237 -0
- attune/memory/claude_memory.py +469 -0
- attune/memory/config.py +224 -0
- attune/memory/control_panel.py +1290 -0
- attune/memory/control_panel_support.py +145 -0
- attune/memory/cross_session.py +845 -0
- attune/memory/edges.py +179 -0
- attune/memory/encryption.py +159 -0
- attune/memory/file_session.py +770 -0
- attune/memory/graph.py +570 -0
- attune/memory/long_term.py +913 -0
- attune/memory/long_term_types.py +99 -0
- attune/memory/mixins/__init__.py +25 -0
- attune/memory/mixins/backend_init_mixin.py +249 -0
- attune/memory/mixins/capabilities_mixin.py +208 -0
- attune/memory/mixins/handoff_mixin.py +208 -0
- attune/memory/mixins/lifecycle_mixin.py +49 -0
- attune/memory/mixins/long_term_mixin.py +352 -0
- attune/memory/mixins/promotion_mixin.py +109 -0
- attune/memory/mixins/short_term_mixin.py +182 -0
- attune/memory/nodes.py +179 -0
- attune/memory/redis_bootstrap.py +540 -0
- attune/memory/security/__init__.py +31 -0
- attune/memory/security/audit_logger.py +932 -0
- attune/memory/security/pii_scrubber.py +640 -0
- attune/memory/security/secrets_detector.py +678 -0
- attune/memory/short_term.py +2192 -0
- attune/memory/simple_storage.py +302 -0
- attune/memory/storage/__init__.py +15 -0
- attune/memory/storage_backend.py +167 -0
- attune/memory/summary_index.py +583 -0
- attune/memory/types.py +446 -0
- attune/memory/unified.py +182 -0
- attune/meta_workflows/__init__.py +74 -0
- attune/meta_workflows/agent_creator.py +248 -0
- attune/meta_workflows/builtin_templates.py +567 -0
- attune/meta_workflows/cli_commands/__init__.py +56 -0
- attune/meta_workflows/cli_commands/agent_commands.py +321 -0
- attune/meta_workflows/cli_commands/analytics_commands.py +442 -0
- attune/meta_workflows/cli_commands/config_commands.py +232 -0
- attune/meta_workflows/cli_commands/memory_commands.py +182 -0
- attune/meta_workflows/cli_commands/template_commands.py +354 -0
- attune/meta_workflows/cli_commands/workflow_commands.py +382 -0
- attune/meta_workflows/cli_meta_workflows.py +59 -0
- attune/meta_workflows/form_engine.py +292 -0
- attune/meta_workflows/intent_detector.py +409 -0
- attune/meta_workflows/models.py +569 -0
- attune/meta_workflows/pattern_learner.py +738 -0
- attune/meta_workflows/plan_generator.py +384 -0
- attune/meta_workflows/session_context.py +397 -0
- attune/meta_workflows/template_registry.py +229 -0
- attune/meta_workflows/workflow.py +984 -0
- attune/metrics/__init__.py +12 -0
- attune/metrics/collector.py +31 -0
- attune/metrics/prompt_metrics.py +194 -0
- attune/models/__init__.py +172 -0
- attune/models/__main__.py +13 -0
- attune/models/adaptive_routing.py +437 -0
- attune/models/auth_cli.py +444 -0
- attune/models/auth_strategy.py +450 -0
- attune/models/cli.py +655 -0
- attune/models/empathy_executor.py +354 -0
- attune/models/executor.py +257 -0
- attune/models/fallback.py +762 -0
- attune/models/provider_config.py +282 -0
- attune/models/registry.py +472 -0
- attune/models/tasks.py +359 -0
- attune/models/telemetry/__init__.py +71 -0
- attune/models/telemetry/analytics.py +594 -0
- attune/models/telemetry/backend.py +196 -0
- attune/models/telemetry/data_models.py +431 -0
- attune/models/telemetry/storage.py +489 -0
- attune/models/token_estimator.py +420 -0
- attune/models/validation.py +280 -0
- attune/monitoring/__init__.py +52 -0
- attune/monitoring/alerts.py +946 -0
- attune/monitoring/alerts_cli.py +448 -0
- attune/monitoring/multi_backend.py +271 -0
- attune/monitoring/otel_backend.py +362 -0
- attune/optimization/__init__.py +19 -0
- attune/optimization/context_optimizer.py +272 -0
- attune/orchestration/__init__.py +67 -0
- attune/orchestration/agent_templates.py +707 -0
- attune/orchestration/config_store.py +499 -0
- attune/orchestration/execution_strategies.py +2111 -0
- attune/orchestration/meta_orchestrator.py +1168 -0
- attune/orchestration/pattern_learner.py +696 -0
- attune/orchestration/real_tools.py +931 -0
- attune/pattern_cache.py +187 -0
- attune/pattern_library.py +542 -0
- attune/patterns/debugging/all_patterns.json +81 -0
- attune/patterns/debugging/workflow_20260107_1770825e.json +77 -0
- attune/patterns/refactoring_memory.json +89 -0
- attune/persistence.py +564 -0
- attune/platform_utils.py +265 -0
- attune/plugins/__init__.py +28 -0
- attune/plugins/base.py +361 -0
- attune/plugins/registry.py +268 -0
- attune/project_index/__init__.py +32 -0
- attune/project_index/cli.py +335 -0
- attune/project_index/index.py +667 -0
- attune/project_index/models.py +504 -0
- attune/project_index/reports.py +474 -0
- attune/project_index/scanner.py +777 -0
- attune/project_index/scanner_parallel.py +291 -0
- attune/prompts/__init__.py +61 -0
- attune/prompts/config.py +77 -0
- attune/prompts/context.py +177 -0
- attune/prompts/parser.py +285 -0
- attune/prompts/registry.py +313 -0
- attune/prompts/templates.py +208 -0
- attune/redis_config.py +302 -0
- attune/redis_memory.py +799 -0
- attune/resilience/__init__.py +56 -0
- attune/resilience/circuit_breaker.py +256 -0
- attune/resilience/fallback.py +179 -0
- attune/resilience/health.py +300 -0
- attune/resilience/retry.py +209 -0
- attune/resilience/timeout.py +135 -0
- attune/routing/__init__.py +43 -0
- attune/routing/chain_executor.py +433 -0
- attune/routing/classifier.py +217 -0
- attune/routing/smart_router.py +234 -0
- attune/routing/workflow_registry.py +343 -0
- attune/scaffolding/README.md +589 -0
- attune/scaffolding/__init__.py +35 -0
- attune/scaffolding/__main__.py +14 -0
- attune/scaffolding/cli.py +240 -0
- attune/scaffolding/templates/base_wizard.py.jinja2 +121 -0
- attune/scaffolding/templates/coach_wizard.py.jinja2 +321 -0
- attune/scaffolding/templates/domain_wizard.py.jinja2 +408 -0
- attune/scaffolding/templates/linear_flow_wizard.py.jinja2 +203 -0
- attune/socratic/__init__.py +256 -0
- attune/socratic/ab_testing.py +958 -0
- attune/socratic/blueprint.py +533 -0
- attune/socratic/cli.py +703 -0
- attune/socratic/collaboration.py +1114 -0
- attune/socratic/domain_templates.py +924 -0
- attune/socratic/embeddings.py +738 -0
- attune/socratic/engine.py +794 -0
- attune/socratic/explainer.py +682 -0
- attune/socratic/feedback.py +772 -0
- attune/socratic/forms.py +629 -0
- attune/socratic/generator.py +732 -0
- attune/socratic/llm_analyzer.py +637 -0
- attune/socratic/mcp_server.py +702 -0
- attune/socratic/session.py +312 -0
- attune/socratic/storage.py +667 -0
- attune/socratic/success.py +730 -0
- attune/socratic/visual_editor.py +860 -0
- attune/socratic/web_ui.py +958 -0
- attune/telemetry/__init__.py +39 -0
- attune/telemetry/agent_coordination.py +475 -0
- attune/telemetry/agent_tracking.py +367 -0
- attune/telemetry/approval_gates.py +545 -0
- attune/telemetry/cli.py +1231 -0
- attune/telemetry/commands/__init__.py +14 -0
- attune/telemetry/commands/dashboard_commands.py +696 -0
- attune/telemetry/event_streaming.py +409 -0
- attune/telemetry/feedback_loop.py +567 -0
- attune/telemetry/usage_tracker.py +591 -0
- attune/templates.py +754 -0
- attune/test_generator/__init__.py +38 -0
- attune/test_generator/__main__.py +14 -0
- attune/test_generator/cli.py +234 -0
- attune/test_generator/generator.py +355 -0
- attune/test_generator/risk_analyzer.py +216 -0
- attune/test_generator/templates/unit_test.py.jinja2 +272 -0
- attune/tier_recommender.py +384 -0
- attune/tools.py +183 -0
- attune/trust/__init__.py +28 -0
- attune/trust/circuit_breaker.py +579 -0
- attune/trust_building.py +527 -0
- attune/validation/__init__.py +19 -0
- attune/validation/xml_validator.py +281 -0
- attune/vscode_bridge.py +173 -0
- attune/workflow_commands.py +780 -0
- attune/workflow_patterns/__init__.py +33 -0
- attune/workflow_patterns/behavior.py +249 -0
- attune/workflow_patterns/core.py +76 -0
- attune/workflow_patterns/output.py +99 -0
- attune/workflow_patterns/registry.py +255 -0
- attune/workflow_patterns/structural.py +288 -0
- attune/workflows/__init__.py +539 -0
- attune/workflows/autonomous_test_gen.py +1268 -0
- attune/workflows/base.py +2667 -0
- attune/workflows/batch_processing.py +342 -0
- attune/workflows/bug_predict.py +1084 -0
- attune/workflows/builder.py +273 -0
- attune/workflows/caching.py +253 -0
- attune/workflows/code_review.py +1048 -0
- attune/workflows/code_review_adapters.py +312 -0
- attune/workflows/code_review_pipeline.py +722 -0
- attune/workflows/config.py +645 -0
- attune/workflows/dependency_check.py +644 -0
- attune/workflows/document_gen/__init__.py +25 -0
- attune/workflows/document_gen/config.py +30 -0
- attune/workflows/document_gen/report_formatter.py +162 -0
- attune/workflows/document_gen/workflow.py +1426 -0
- attune/workflows/document_manager.py +216 -0
- attune/workflows/document_manager_README.md +134 -0
- attune/workflows/documentation_orchestrator.py +1205 -0
- attune/workflows/history.py +510 -0
- attune/workflows/keyboard_shortcuts/__init__.py +39 -0
- attune/workflows/keyboard_shortcuts/generators.py +391 -0
- attune/workflows/keyboard_shortcuts/parsers.py +416 -0
- attune/workflows/keyboard_shortcuts/prompts.py +295 -0
- attune/workflows/keyboard_shortcuts/schema.py +193 -0
- attune/workflows/keyboard_shortcuts/workflow.py +509 -0
- attune/workflows/llm_base.py +363 -0
- attune/workflows/manage_docs.py +87 -0
- attune/workflows/manage_docs_README.md +134 -0
- attune/workflows/manage_documentation.py +821 -0
- attune/workflows/new_sample_workflow1.py +149 -0
- attune/workflows/new_sample_workflow1_README.md +150 -0
- attune/workflows/orchestrated_health_check.py +849 -0
- attune/workflows/orchestrated_release_prep.py +600 -0
- attune/workflows/output.py +413 -0
- attune/workflows/perf_audit.py +863 -0
- attune/workflows/pr_review.py +762 -0
- attune/workflows/progress.py +785 -0
- attune/workflows/progress_server.py +322 -0
- attune/workflows/progressive/README 2.md +454 -0
- attune/workflows/progressive/README.md +454 -0
- attune/workflows/progressive/__init__.py +82 -0
- attune/workflows/progressive/cli.py +219 -0
- attune/workflows/progressive/core.py +488 -0
- attune/workflows/progressive/orchestrator.py +723 -0
- attune/workflows/progressive/reports.py +520 -0
- attune/workflows/progressive/telemetry.py +274 -0
- attune/workflows/progressive/test_gen.py +495 -0
- attune/workflows/progressive/workflow.py +589 -0
- attune/workflows/refactor_plan.py +694 -0
- attune/workflows/release_prep.py +895 -0
- attune/workflows/release_prep_crew.py +969 -0
- attune/workflows/research_synthesis.py +404 -0
- attune/workflows/routing.py +168 -0
- attune/workflows/secure_release.py +593 -0
- attune/workflows/security_adapters.py +297 -0
- attune/workflows/security_audit.py +1329 -0
- attune/workflows/security_audit_phase3.py +355 -0
- attune/workflows/seo_optimization.py +633 -0
- attune/workflows/step_config.py +234 -0
- attune/workflows/telemetry_mixin.py +269 -0
- attune/workflows/test5.py +125 -0
- attune/workflows/test5_README.md +158 -0
- attune/workflows/test_coverage_boost_crew.py +849 -0
- attune/workflows/test_gen/__init__.py +52 -0
- attune/workflows/test_gen/ast_analyzer.py +249 -0
- attune/workflows/test_gen/config.py +88 -0
- attune/workflows/test_gen/data_models.py +38 -0
- attune/workflows/test_gen/report_formatter.py +289 -0
- attune/workflows/test_gen/test_templates.py +381 -0
- attune/workflows/test_gen/workflow.py +655 -0
- attune/workflows/test_gen.py +54 -0
- attune/workflows/test_gen_behavioral.py +477 -0
- attune/workflows/test_gen_parallel.py +341 -0
- attune/workflows/test_lifecycle.py +526 -0
- attune/workflows/test_maintenance.py +627 -0
- attune/workflows/test_maintenance_cli.py +590 -0
- attune/workflows/test_maintenance_crew.py +840 -0
- attune/workflows/test_runner.py +622 -0
- attune/workflows/tier_tracking.py +531 -0
- attune/workflows/xml_enhanced_crew.py +285 -0
- attune_ai-2.0.0.dist-info/METADATA +1026 -0
- attune_ai-2.0.0.dist-info/RECORD +457 -0
- attune_ai-2.0.0.dist-info/WHEEL +5 -0
- attune_ai-2.0.0.dist-info/entry_points.txt +26 -0
- attune_ai-2.0.0.dist-info/licenses/LICENSE +201 -0
- attune_ai-2.0.0.dist-info/licenses/LICENSE_CHANGE_ANNOUNCEMENT.md +101 -0
- attune_ai-2.0.0.dist-info/top_level.txt +5 -0
- attune_healthcare/__init__.py +13 -0
- attune_healthcare/monitors/__init__.py +9 -0
- attune_healthcare/monitors/clinical_protocol_monitor.py +315 -0
- attune_healthcare/monitors/monitoring/__init__.py +44 -0
- attune_healthcare/monitors/monitoring/protocol_checker.py +300 -0
- attune_healthcare/monitors/monitoring/protocol_loader.py +214 -0
- attune_healthcare/monitors/monitoring/sensor_parsers.py +306 -0
- attune_healthcare/monitors/monitoring/trajectory_analyzer.py +389 -0
- attune_llm/README.md +553 -0
- attune_llm/__init__.py +28 -0
- attune_llm/agent_factory/__init__.py +53 -0
- attune_llm/agent_factory/adapters/__init__.py +85 -0
- attune_llm/agent_factory/adapters/autogen_adapter.py +312 -0
- attune_llm/agent_factory/adapters/crewai_adapter.py +483 -0
- attune_llm/agent_factory/adapters/haystack_adapter.py +298 -0
- attune_llm/agent_factory/adapters/langchain_adapter.py +362 -0
- attune_llm/agent_factory/adapters/langgraph_adapter.py +333 -0
- attune_llm/agent_factory/adapters/native.py +228 -0
- attune_llm/agent_factory/adapters/wizard_adapter.py +423 -0
- attune_llm/agent_factory/base.py +305 -0
- attune_llm/agent_factory/crews/__init__.py +67 -0
- attune_llm/agent_factory/crews/code_review.py +1113 -0
- attune_llm/agent_factory/crews/health_check.py +1262 -0
- attune_llm/agent_factory/crews/refactoring.py +1128 -0
- attune_llm/agent_factory/crews/security_audit.py +1018 -0
- attune_llm/agent_factory/decorators.py +287 -0
- attune_llm/agent_factory/factory.py +558 -0
- attune_llm/agent_factory/framework.py +193 -0
- attune_llm/agent_factory/memory_integration.py +328 -0
- attune_llm/agent_factory/resilient.py +320 -0
- attune_llm/agents_md/__init__.py +22 -0
- attune_llm/agents_md/loader.py +218 -0
- attune_llm/agents_md/parser.py +271 -0
- attune_llm/agents_md/registry.py +307 -0
- attune_llm/claude_memory.py +466 -0
- attune_llm/cli/__init__.py +8 -0
- attune_llm/cli/sync_claude.py +487 -0
- attune_llm/code_health.py +1313 -0
- attune_llm/commands/__init__.py +51 -0
- attune_llm/commands/context.py +375 -0
- attune_llm/commands/loader.py +301 -0
- attune_llm/commands/models.py +231 -0
- attune_llm/commands/parser.py +371 -0
- attune_llm/commands/registry.py +429 -0
- attune_llm/config/__init__.py +29 -0
- attune_llm/config/unified.py +291 -0
- attune_llm/context/__init__.py +22 -0
- attune_llm/context/compaction.py +455 -0
- attune_llm/context/manager.py +434 -0
- attune_llm/contextual_patterns.py +361 -0
- attune_llm/core.py +907 -0
- attune_llm/git_pattern_extractor.py +435 -0
- attune_llm/hooks/__init__.py +24 -0
- attune_llm/hooks/config.py +306 -0
- attune_llm/hooks/executor.py +289 -0
- attune_llm/hooks/registry.py +302 -0
- attune_llm/hooks/scripts/__init__.py +39 -0
- attune_llm/hooks/scripts/evaluate_session.py +201 -0
- attune_llm/hooks/scripts/first_time_init.py +285 -0
- attune_llm/hooks/scripts/pre_compact.py +207 -0
- attune_llm/hooks/scripts/session_end.py +183 -0
- attune_llm/hooks/scripts/session_start.py +163 -0
- attune_llm/hooks/scripts/suggest_compact.py +225 -0
- attune_llm/learning/__init__.py +30 -0
- attune_llm/learning/evaluator.py +438 -0
- attune_llm/learning/extractor.py +514 -0
- attune_llm/learning/storage.py +560 -0
- attune_llm/levels.py +227 -0
- attune_llm/pattern_confidence.py +414 -0
- attune_llm/pattern_resolver.py +272 -0
- attune_llm/pattern_summary.py +350 -0
- attune_llm/providers.py +967 -0
- attune_llm/routing/__init__.py +32 -0
- attune_llm/routing/model_router.py +362 -0
- attune_llm/security/IMPLEMENTATION_SUMMARY.md +413 -0
- attune_llm/security/PHASE2_COMPLETE.md +384 -0
- attune_llm/security/PHASE2_SECRETS_DETECTOR_COMPLETE.md +271 -0
- attune_llm/security/QUICK_REFERENCE.md +316 -0
- attune_llm/security/README.md +262 -0
- attune_llm/security/__init__.py +62 -0
- attune_llm/security/audit_logger.py +929 -0
- attune_llm/security/audit_logger_example.py +152 -0
- attune_llm/security/pii_scrubber.py +640 -0
- attune_llm/security/secrets_detector.py +678 -0
- attune_llm/security/secrets_detector_example.py +304 -0
- attune_llm/security/secure_memdocs.py +1192 -0
- attune_llm/security/secure_memdocs_example.py +278 -0
- attune_llm/session_status.py +745 -0
- attune_llm/state.py +246 -0
- attune_llm/utils/__init__.py +5 -0
- attune_llm/utils/tokens.py +349 -0
- attune_software/SOFTWARE_PLUGIN_README.md +57 -0
- attune_software/__init__.py +13 -0
- attune_software/cli/__init__.py +120 -0
- attune_software/cli/inspect.py +362 -0
- attune_software/cli.py +574 -0
- attune_software/plugin.py +188 -0
- workflow_scaffolding/__init__.py +11 -0
- workflow_scaffolding/__main__.py +12 -0
- workflow_scaffolding/cli.py +206 -0
- workflow_scaffolding/generator.py +265 -0
|
@@ -0,0 +1,567 @@
|
|
|
1
|
+
"""Built-in meta-workflow templates.
|
|
2
|
+
|
|
3
|
+
These templates replace the deprecated Crew-based workflows with equivalent
|
|
4
|
+
functionality using the meta-workflow system.
|
|
5
|
+
|
|
6
|
+
Migration replacements:
|
|
7
|
+
- ReleasePreparationCrew → release-prep template
|
|
8
|
+
- TestCoverageBoostCrew → test-coverage-boost template
|
|
9
|
+
- TestMaintenanceCrew → test-maintenance template
|
|
10
|
+
- ManageDocumentationCrew → manage-docs template
|
|
11
|
+
|
|
12
|
+
Created: 2026-01-18
|
|
13
|
+
Purpose: Provide drop-in replacements for deprecated Crew workflows
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
from attune.meta_workflows.models import (
|
|
17
|
+
AgentCompositionRule,
|
|
18
|
+
FormQuestion,
|
|
19
|
+
FormSchema,
|
|
20
|
+
MetaWorkflowTemplate,
|
|
21
|
+
QuestionType,
|
|
22
|
+
TierStrategy,
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
# =============================================================================
|
|
26
|
+
# Release Preparation Template
|
|
27
|
+
# =============================================================================
|
|
28
|
+
|
|
29
|
+
RELEASE_PREP_TEMPLATE = MetaWorkflowTemplate(
|
|
30
|
+
template_id="release-prep",
|
|
31
|
+
name="Release Preparation",
|
|
32
|
+
description="Comprehensive release readiness assessment using multi-agent collaboration",
|
|
33
|
+
version="1.0.0",
|
|
34
|
+
tags=["release", "quality", "security", "testing", "documentation"],
|
|
35
|
+
author="empathy-framework",
|
|
36
|
+
estimated_cost_range=(0.10, 0.75),
|
|
37
|
+
estimated_duration_minutes=10,
|
|
38
|
+
form_schema=FormSchema(
|
|
39
|
+
title="Release Preparation Configuration",
|
|
40
|
+
description="Configure release readiness checks for your project",
|
|
41
|
+
questions=[
|
|
42
|
+
FormQuestion(
|
|
43
|
+
id="security_scan",
|
|
44
|
+
text="Run security vulnerability scan?",
|
|
45
|
+
type=QuestionType.BOOLEAN,
|
|
46
|
+
default="Yes",
|
|
47
|
+
help_text="Scan for OWASP Top 10 vulnerabilities and dependency issues",
|
|
48
|
+
),
|
|
49
|
+
FormQuestion(
|
|
50
|
+
id="test_coverage_check",
|
|
51
|
+
text="Verify test coverage meets threshold?",
|
|
52
|
+
type=QuestionType.BOOLEAN,
|
|
53
|
+
default="Yes",
|
|
54
|
+
help_text="Check that test coverage meets minimum requirements",
|
|
55
|
+
),
|
|
56
|
+
FormQuestion(
|
|
57
|
+
id="coverage_threshold",
|
|
58
|
+
text="Minimum coverage threshold (%)",
|
|
59
|
+
type=QuestionType.SINGLE_SELECT,
|
|
60
|
+
options=["70%", "80%", "85%", "90%"],
|
|
61
|
+
default="80%",
|
|
62
|
+
help_text="Tests must meet this coverage percentage",
|
|
63
|
+
),
|
|
64
|
+
FormQuestion(
|
|
65
|
+
id="quality_review",
|
|
66
|
+
text="Run code quality review?",
|
|
67
|
+
type=QuestionType.BOOLEAN,
|
|
68
|
+
default="Yes",
|
|
69
|
+
help_text="Check for code smells, complexity issues, and best practices",
|
|
70
|
+
),
|
|
71
|
+
FormQuestion(
|
|
72
|
+
id="doc_verification",
|
|
73
|
+
text="Verify documentation completeness?",
|
|
74
|
+
type=QuestionType.BOOLEAN,
|
|
75
|
+
default="Yes",
|
|
76
|
+
help_text="Check that all public APIs are documented",
|
|
77
|
+
),
|
|
78
|
+
],
|
|
79
|
+
),
|
|
80
|
+
agent_composition_rules=[
|
|
81
|
+
AgentCompositionRule(
|
|
82
|
+
role="Security Auditor",
|
|
83
|
+
base_template="security_auditor",
|
|
84
|
+
tier_strategy=TierStrategy.CAPABLE_FIRST,
|
|
85
|
+
tools=["grep", "bandit", "safety"],
|
|
86
|
+
required_responses={"security_scan": "Yes"},
|
|
87
|
+
config_mapping={},
|
|
88
|
+
success_criteria=[
|
|
89
|
+
"No critical vulnerabilities found",
|
|
90
|
+
"All dependencies are secure",
|
|
91
|
+
],
|
|
92
|
+
),
|
|
93
|
+
AgentCompositionRule(
|
|
94
|
+
role="Test Coverage Analyst",
|
|
95
|
+
base_template="test_coverage_analyzer",
|
|
96
|
+
tier_strategy=TierStrategy.PROGRESSIVE,
|
|
97
|
+
tools=["pytest", "coverage"],
|
|
98
|
+
required_responses={"test_coverage_check": "Yes"},
|
|
99
|
+
config_mapping={"coverage_threshold": "min_coverage"},
|
|
100
|
+
success_criteria=[
|
|
101
|
+
"Coverage meets threshold",
|
|
102
|
+
"All tests pass",
|
|
103
|
+
],
|
|
104
|
+
),
|
|
105
|
+
AgentCompositionRule(
|
|
106
|
+
role="Code Quality Reviewer",
|
|
107
|
+
base_template="code_reviewer",
|
|
108
|
+
tier_strategy=TierStrategy.PROGRESSIVE,
|
|
109
|
+
tools=["ruff", "mypy"],
|
|
110
|
+
required_responses={"quality_review": "Yes"},
|
|
111
|
+
config_mapping={},
|
|
112
|
+
success_criteria=[
|
|
113
|
+
"No high-severity issues",
|
|
114
|
+
"Complexity within bounds",
|
|
115
|
+
],
|
|
116
|
+
),
|
|
117
|
+
AgentCompositionRule(
|
|
118
|
+
role="Documentation Specialist",
|
|
119
|
+
base_template="documentation_writer",
|
|
120
|
+
tier_strategy=TierStrategy.CHEAP_ONLY,
|
|
121
|
+
tools=["pydocstyle"],
|
|
122
|
+
required_responses={"doc_verification": "Yes"},
|
|
123
|
+
config_mapping={},
|
|
124
|
+
success_criteria=[
|
|
125
|
+
"All public APIs documented",
|
|
126
|
+
"README is current",
|
|
127
|
+
],
|
|
128
|
+
),
|
|
129
|
+
],
|
|
130
|
+
)
|
|
131
|
+
|
|
132
|
+
# =============================================================================
|
|
133
|
+
# Test Coverage Boost Template
|
|
134
|
+
# =============================================================================
|
|
135
|
+
|
|
136
|
+
TEST_COVERAGE_BOOST_TEMPLATE = MetaWorkflowTemplate(
|
|
137
|
+
template_id="test-coverage-boost",
|
|
138
|
+
name="Test Coverage Boost",
|
|
139
|
+
description="Multi-agent test generation with gap analysis and validation",
|
|
140
|
+
version="1.0.0",
|
|
141
|
+
tags=["testing", "coverage", "test-generation"],
|
|
142
|
+
author="empathy-framework",
|
|
143
|
+
estimated_cost_range=(0.15, 1.00),
|
|
144
|
+
estimated_duration_minutes=15,
|
|
145
|
+
form_schema=FormSchema(
|
|
146
|
+
title="Test Coverage Boost Configuration",
|
|
147
|
+
description="Configure test generation to improve coverage",
|
|
148
|
+
questions=[
|
|
149
|
+
FormQuestion(
|
|
150
|
+
id="target_coverage",
|
|
151
|
+
text="Target coverage percentage",
|
|
152
|
+
type=QuestionType.SINGLE_SELECT,
|
|
153
|
+
options=["70%", "75%", "80%", "85%", "90%"],
|
|
154
|
+
default="80%",
|
|
155
|
+
help_text="Generate tests until this coverage is reached",
|
|
156
|
+
),
|
|
157
|
+
FormQuestion(
|
|
158
|
+
id="test_style",
|
|
159
|
+
text="Test style preference",
|
|
160
|
+
type=QuestionType.SINGLE_SELECT,
|
|
161
|
+
options=["pytest", "unittest", "auto-detect"],
|
|
162
|
+
default="auto-detect",
|
|
163
|
+
help_text="Test framework style to use",
|
|
164
|
+
),
|
|
165
|
+
FormQuestion(
|
|
166
|
+
id="prioritize_high_impact",
|
|
167
|
+
text="Prioritize high-impact files?",
|
|
168
|
+
type=QuestionType.BOOLEAN,
|
|
169
|
+
default="Yes",
|
|
170
|
+
help_text="Focus on complex, frequently-used code first",
|
|
171
|
+
),
|
|
172
|
+
FormQuestion(
|
|
173
|
+
id="include_edge_cases",
|
|
174
|
+
text="Include edge case tests?",
|
|
175
|
+
type=QuestionType.BOOLEAN,
|
|
176
|
+
default="Yes",
|
|
177
|
+
help_text="Generate tests for boundary conditions",
|
|
178
|
+
),
|
|
179
|
+
],
|
|
180
|
+
),
|
|
181
|
+
agent_composition_rules=[
|
|
182
|
+
AgentCompositionRule(
|
|
183
|
+
role="Gap Analyzer",
|
|
184
|
+
base_template="test_coverage_analyzer",
|
|
185
|
+
tier_strategy=TierStrategy.PROGRESSIVE,
|
|
186
|
+
tools=["pytest-cov", "coverage"],
|
|
187
|
+
required_responses={},
|
|
188
|
+
config_mapping={"target_coverage": "target_coverage"},
|
|
189
|
+
success_criteria=[
|
|
190
|
+
"Identified coverage gaps",
|
|
191
|
+
"Prioritized files by impact",
|
|
192
|
+
],
|
|
193
|
+
),
|
|
194
|
+
AgentCompositionRule(
|
|
195
|
+
role="Test Generator",
|
|
196
|
+
base_template="test_generator",
|
|
197
|
+
tier_strategy=TierStrategy.CAPABLE_FIRST,
|
|
198
|
+
tools=["ast", "pytest"],
|
|
199
|
+
required_responses={},
|
|
200
|
+
config_mapping={
|
|
201
|
+
"test_style": "test_style",
|
|
202
|
+
"include_edge_cases": "edge_cases",
|
|
203
|
+
},
|
|
204
|
+
success_criteria=[
|
|
205
|
+
"Tests are syntactically correct",
|
|
206
|
+
"Tests cover identified gaps",
|
|
207
|
+
],
|
|
208
|
+
),
|
|
209
|
+
AgentCompositionRule(
|
|
210
|
+
role="Test Validator",
|
|
211
|
+
base_template="test_validator",
|
|
212
|
+
tier_strategy=TierStrategy.CHEAP_ONLY,
|
|
213
|
+
tools=["pytest"],
|
|
214
|
+
required_responses={},
|
|
215
|
+
config_mapping={},
|
|
216
|
+
success_criteria=[
|
|
217
|
+
"Generated tests pass",
|
|
218
|
+
"Coverage improved",
|
|
219
|
+
],
|
|
220
|
+
),
|
|
221
|
+
],
|
|
222
|
+
)
|
|
223
|
+
|
|
224
|
+
# =============================================================================
|
|
225
|
+
# Test Maintenance Template
|
|
226
|
+
# =============================================================================
|
|
227
|
+
|
|
228
|
+
TEST_MAINTENANCE_TEMPLATE = MetaWorkflowTemplate(
|
|
229
|
+
template_id="test-maintenance",
|
|
230
|
+
name="Test Maintenance",
|
|
231
|
+
description="Automated test lifecycle management with gap analysis and validation",
|
|
232
|
+
version="1.0.0",
|
|
233
|
+
tags=["testing", "maintenance", "automation"],
|
|
234
|
+
author="empathy-framework",
|
|
235
|
+
estimated_cost_range=(0.10, 0.80),
|
|
236
|
+
estimated_duration_minutes=12,
|
|
237
|
+
form_schema=FormSchema(
|
|
238
|
+
title="Test Maintenance Configuration",
|
|
239
|
+
description="Configure test maintenance and generation",
|
|
240
|
+
questions=[
|
|
241
|
+
FormQuestion(
|
|
242
|
+
id="mode",
|
|
243
|
+
text="Maintenance mode",
|
|
244
|
+
type=QuestionType.SINGLE_SELECT,
|
|
245
|
+
options=["full", "analyze", "generate", "validate", "report"],
|
|
246
|
+
default="full",
|
|
247
|
+
help_text="Full runs all agents; other modes run specific phases",
|
|
248
|
+
),
|
|
249
|
+
FormQuestion(
|
|
250
|
+
id="max_files",
|
|
251
|
+
text="Maximum files to process",
|
|
252
|
+
type=QuestionType.SINGLE_SELECT,
|
|
253
|
+
options=["5", "10", "20", "30", "50"],
|
|
254
|
+
default="30",
|
|
255
|
+
help_text="Limit number of files to process per run",
|
|
256
|
+
),
|
|
257
|
+
FormQuestion(
|
|
258
|
+
id="staleness_threshold",
|
|
259
|
+
text="Staleness threshold (days)",
|
|
260
|
+
type=QuestionType.SINGLE_SELECT,
|
|
261
|
+
options=["3", "7", "14", "30"],
|
|
262
|
+
default="7",
|
|
263
|
+
help_text="Tests older than this are considered stale",
|
|
264
|
+
),
|
|
265
|
+
FormQuestion(
|
|
266
|
+
id="auto_validation",
|
|
267
|
+
text="Enable auto-validation?",
|
|
268
|
+
type=QuestionType.BOOLEAN,
|
|
269
|
+
default="Yes",
|
|
270
|
+
help_text="Automatically run generated tests to verify they work",
|
|
271
|
+
),
|
|
272
|
+
],
|
|
273
|
+
),
|
|
274
|
+
agent_composition_rules=[
|
|
275
|
+
AgentCompositionRule(
|
|
276
|
+
role="Test Analyst",
|
|
277
|
+
base_template="test_coverage_analyzer",
|
|
278
|
+
tier_strategy=TierStrategy.PROGRESSIVE,
|
|
279
|
+
tools=["pytest-cov", "coverage"],
|
|
280
|
+
required_responses={"mode": ["full", "analyze"]},
|
|
281
|
+
config_mapping={
|
|
282
|
+
"max_files": "max_files_per_run",
|
|
283
|
+
"staleness_threshold": "staleness_days",
|
|
284
|
+
},
|
|
285
|
+
success_criteria=[
|
|
286
|
+
"Coverage gaps identified",
|
|
287
|
+
"Stale tests detected",
|
|
288
|
+
],
|
|
289
|
+
),
|
|
290
|
+
AgentCompositionRule(
|
|
291
|
+
role="Test Generator",
|
|
292
|
+
base_template="test_generator",
|
|
293
|
+
tier_strategy=TierStrategy.CAPABLE_FIRST,
|
|
294
|
+
tools=["ast", "pytest"],
|
|
295
|
+
required_responses={"mode": ["full", "generate"]},
|
|
296
|
+
config_mapping={},
|
|
297
|
+
success_criteria=[
|
|
298
|
+
"Tests generated for priority files",
|
|
299
|
+
],
|
|
300
|
+
),
|
|
301
|
+
AgentCompositionRule(
|
|
302
|
+
role="Test Validator",
|
|
303
|
+
base_template="test_validator",
|
|
304
|
+
tier_strategy=TierStrategy.CHEAP_ONLY,
|
|
305
|
+
tools=["pytest"],
|
|
306
|
+
required_responses={"mode": ["full", "validate"], "auto_validation": "Yes"},
|
|
307
|
+
config_mapping={},
|
|
308
|
+
success_criteria=[
|
|
309
|
+
"Generated tests pass",
|
|
310
|
+
],
|
|
311
|
+
),
|
|
312
|
+
AgentCompositionRule(
|
|
313
|
+
role="Test Reporter",
|
|
314
|
+
base_template="report_generator",
|
|
315
|
+
tier_strategy=TierStrategy.CHEAP_ONLY,
|
|
316
|
+
tools=[],
|
|
317
|
+
required_responses={},
|
|
318
|
+
config_mapping={},
|
|
319
|
+
success_criteria=[
|
|
320
|
+
"Status report generated",
|
|
321
|
+
],
|
|
322
|
+
),
|
|
323
|
+
],
|
|
324
|
+
)
|
|
325
|
+
|
|
326
|
+
# =============================================================================
|
|
327
|
+
# Documentation Management Template
|
|
328
|
+
# =============================================================================
|
|
329
|
+
|
|
330
|
+
MANAGE_DOCS_TEMPLATE = MetaWorkflowTemplate(
|
|
331
|
+
template_id="manage-docs",
|
|
332
|
+
name="Documentation Management",
|
|
333
|
+
description="Ensure program files are documented and docs stay in sync with code",
|
|
334
|
+
version="1.0.0",
|
|
335
|
+
tags=["documentation", "docstrings", "readme"],
|
|
336
|
+
author="empathy-framework",
|
|
337
|
+
estimated_cost_range=(0.08, 0.50),
|
|
338
|
+
estimated_duration_minutes=8,
|
|
339
|
+
form_schema=FormSchema(
|
|
340
|
+
title="Documentation Management Configuration",
|
|
341
|
+
description="Configure documentation sync and gap detection",
|
|
342
|
+
questions=[
|
|
343
|
+
FormQuestion(
|
|
344
|
+
id="check_docstrings",
|
|
345
|
+
text="Check for missing docstrings?",
|
|
346
|
+
type=QuestionType.BOOLEAN,
|
|
347
|
+
default="Yes",
|
|
348
|
+
help_text="Identify functions and classes without docstrings",
|
|
349
|
+
),
|
|
350
|
+
FormQuestion(
|
|
351
|
+
id="check_readme",
|
|
352
|
+
text="Check README freshness?",
|
|
353
|
+
type=QuestionType.BOOLEAN,
|
|
354
|
+
default="Yes",
|
|
355
|
+
help_text="Verify README reflects recent code changes",
|
|
356
|
+
),
|
|
357
|
+
FormQuestion(
|
|
358
|
+
id="check_api_docs",
|
|
359
|
+
text="Check API documentation?",
|
|
360
|
+
type=QuestionType.BOOLEAN,
|
|
361
|
+
default="Yes",
|
|
362
|
+
help_text="Verify all public APIs are documented",
|
|
363
|
+
),
|
|
364
|
+
FormQuestion(
|
|
365
|
+
id="suggest_updates",
|
|
366
|
+
text="Generate update suggestions?",
|
|
367
|
+
type=QuestionType.BOOLEAN,
|
|
368
|
+
default="Yes",
|
|
369
|
+
help_text="Provide specific recommendations for documentation improvements",
|
|
370
|
+
),
|
|
371
|
+
],
|
|
372
|
+
),
|
|
373
|
+
agent_composition_rules=[
|
|
374
|
+
AgentCompositionRule(
|
|
375
|
+
role="Documentation Analyst",
|
|
376
|
+
base_template="documentation_analyst",
|
|
377
|
+
tier_strategy=TierStrategy.PROGRESSIVE,
|
|
378
|
+
tools=["ast", "pydocstyle"],
|
|
379
|
+
required_responses={},
|
|
380
|
+
config_mapping={
|
|
381
|
+
"check_docstrings": "analyze_docstrings",
|
|
382
|
+
"check_readme": "analyze_readme",
|
|
383
|
+
"check_api_docs": "analyze_api_docs",
|
|
384
|
+
},
|
|
385
|
+
success_criteria=[
|
|
386
|
+
"Documentation gaps identified",
|
|
387
|
+
],
|
|
388
|
+
),
|
|
389
|
+
AgentCompositionRule(
|
|
390
|
+
role="Documentation Reviewer",
|
|
391
|
+
base_template="documentation_writer",
|
|
392
|
+
tier_strategy=TierStrategy.PROGRESSIVE,
|
|
393
|
+
tools=[],
|
|
394
|
+
required_responses={},
|
|
395
|
+
config_mapping={},
|
|
396
|
+
success_criteria=[
|
|
397
|
+
"Findings validated",
|
|
398
|
+
"False positives removed",
|
|
399
|
+
],
|
|
400
|
+
),
|
|
401
|
+
AgentCompositionRule(
|
|
402
|
+
role="Documentation Synthesizer",
|
|
403
|
+
base_template="synthesizer",
|
|
404
|
+
tier_strategy=TierStrategy.CAPABLE_FIRST,
|
|
405
|
+
tools=[],
|
|
406
|
+
required_responses={"suggest_updates": "Yes"},
|
|
407
|
+
config_mapping={},
|
|
408
|
+
success_criteria=[
|
|
409
|
+
"Prioritized action plan created",
|
|
410
|
+
],
|
|
411
|
+
),
|
|
412
|
+
],
|
|
413
|
+
)
|
|
414
|
+
|
|
415
|
+
# =============================================================================
|
|
416
|
+
# Feature Overview Template
|
|
417
|
+
# =============================================================================
|
|
418
|
+
|
|
419
|
+
FEATURE_OVERVIEW_TEMPLATE = MetaWorkflowTemplate(
|
|
420
|
+
template_id="feature-overview",
|
|
421
|
+
name="Feature Overview Generator",
|
|
422
|
+
description="Generate comprehensive technical documentation for code modules, suitable for architects, engineers, and content creators",
|
|
423
|
+
version="1.0.0",
|
|
424
|
+
tags=["documentation", "architecture", "insights", "blog"],
|
|
425
|
+
author="empathy-framework",
|
|
426
|
+
estimated_cost_range=(0.40, 0.80),
|
|
427
|
+
estimated_duration_minutes=15,
|
|
428
|
+
form_schema=FormSchema(
|
|
429
|
+
title="Feature Overview Configuration",
|
|
430
|
+
description="Configure technical documentation generation",
|
|
431
|
+
questions=[
|
|
432
|
+
FormQuestion(
|
|
433
|
+
id="target_path",
|
|
434
|
+
text="Which module or directory to analyze?",
|
|
435
|
+
type=QuestionType.TEXT_INPUT,
|
|
436
|
+
default="src/",
|
|
437
|
+
help_text="Path to the code you want to document",
|
|
438
|
+
),
|
|
439
|
+
FormQuestion(
|
|
440
|
+
id="target_audience",
|
|
441
|
+
text="Who is the primary audience?",
|
|
442
|
+
type=QuestionType.SINGLE_SELECT,
|
|
443
|
+
options=["Architects", "Engineers", "Technical Writers", "All"],
|
|
444
|
+
default="Architects",
|
|
445
|
+
help_text="Tailors the depth and focus of documentation",
|
|
446
|
+
),
|
|
447
|
+
FormQuestion(
|
|
448
|
+
id="include_blog_summary",
|
|
449
|
+
text="Include blog-ready summary?",
|
|
450
|
+
type=QuestionType.BOOLEAN,
|
|
451
|
+
default="Yes",
|
|
452
|
+
help_text="Generate a summary suitable for technical blog posts",
|
|
453
|
+
),
|
|
454
|
+
FormQuestion(
|
|
455
|
+
id="include_diagrams",
|
|
456
|
+
text="Include architecture diagrams?",
|
|
457
|
+
type=QuestionType.BOOLEAN,
|
|
458
|
+
default="Yes",
|
|
459
|
+
help_text="Generate ASCII diagrams showing component relationships",
|
|
460
|
+
),
|
|
461
|
+
],
|
|
462
|
+
),
|
|
463
|
+
agent_composition_rules=[
|
|
464
|
+
AgentCompositionRule(
|
|
465
|
+
role="Code Scanner",
|
|
466
|
+
base_template="generic_agent",
|
|
467
|
+
tier_strategy=TierStrategy.CAPABLE_FIRST,
|
|
468
|
+
tools=["read", "grep", "glob"],
|
|
469
|
+
required_responses={},
|
|
470
|
+
config_mapping={"target_path": "path"},
|
|
471
|
+
success_criteria=[
|
|
472
|
+
"modules_identified",
|
|
473
|
+
"structure_mapped",
|
|
474
|
+
],
|
|
475
|
+
),
|
|
476
|
+
AgentCompositionRule(
|
|
477
|
+
role="Insights Reporter",
|
|
478
|
+
base_template="generic_agent",
|
|
479
|
+
tier_strategy=TierStrategy.CAPABLE_FIRST,
|
|
480
|
+
tools=["read"],
|
|
481
|
+
required_responses={},
|
|
482
|
+
config_mapping={"target_audience": "audience"},
|
|
483
|
+
success_criteria=[
|
|
484
|
+
"patterns_identified",
|
|
485
|
+
"insights_generated",
|
|
486
|
+
],
|
|
487
|
+
),
|
|
488
|
+
AgentCompositionRule(
|
|
489
|
+
role="Architecture Analyst",
|
|
490
|
+
base_template="architecture_analyst",
|
|
491
|
+
tier_strategy=TierStrategy.CAPABLE_FIRST,
|
|
492
|
+
tools=["read"],
|
|
493
|
+
required_responses={"include_diagrams": "Yes"},
|
|
494
|
+
config_mapping={},
|
|
495
|
+
success_criteria=[
|
|
496
|
+
"diagrams_created",
|
|
497
|
+
"relationships_mapped",
|
|
498
|
+
],
|
|
499
|
+
),
|
|
500
|
+
AgentCompositionRule(
|
|
501
|
+
role="Quality Reviewer",
|
|
502
|
+
base_template="code_reviewer",
|
|
503
|
+
tier_strategy=TierStrategy.PREMIUM_ONLY,
|
|
504
|
+
tools=["read"],
|
|
505
|
+
required_responses={},
|
|
506
|
+
config_mapping={},
|
|
507
|
+
success_criteria=[
|
|
508
|
+
"accuracy_validated",
|
|
509
|
+
"completeness_checked",
|
|
510
|
+
],
|
|
511
|
+
),
|
|
512
|
+
AgentCompositionRule(
|
|
513
|
+
role="Blog Content Creator",
|
|
514
|
+
base_template="generic_agent",
|
|
515
|
+
tier_strategy=TierStrategy.PREMIUM_ONLY,
|
|
516
|
+
tools=["write"],
|
|
517
|
+
required_responses={"include_blog_summary": "Yes"},
|
|
518
|
+
config_mapping={"target_audience": "audience"},
|
|
519
|
+
success_criteria=[
|
|
520
|
+
"blog_summary_created",
|
|
521
|
+
"audience_appropriate",
|
|
522
|
+
],
|
|
523
|
+
),
|
|
524
|
+
],
|
|
525
|
+
)
|
|
526
|
+
|
|
527
|
+
# =============================================================================
|
|
528
|
+
# Template Registry
|
|
529
|
+
# =============================================================================
|
|
530
|
+
|
|
531
|
+
BUILTIN_TEMPLATES = {
|
|
532
|
+
"release-prep": RELEASE_PREP_TEMPLATE,
|
|
533
|
+
"test-coverage-boost": TEST_COVERAGE_BOOST_TEMPLATE,
|
|
534
|
+
"test-maintenance": TEST_MAINTENANCE_TEMPLATE,
|
|
535
|
+
"manage-docs": MANAGE_DOCS_TEMPLATE,
|
|
536
|
+
"feature-overview": FEATURE_OVERVIEW_TEMPLATE,
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
|
|
540
|
+
def get_builtin_template(template_id: str) -> MetaWorkflowTemplate | None:
|
|
541
|
+
"""Get a built-in template by ID.
|
|
542
|
+
|
|
543
|
+
Args:
|
|
544
|
+
template_id: ID of the template to retrieve
|
|
545
|
+
|
|
546
|
+
Returns:
|
|
547
|
+
MetaWorkflowTemplate if found, None otherwise
|
|
548
|
+
"""
|
|
549
|
+
return BUILTIN_TEMPLATES.get(template_id)
|
|
550
|
+
|
|
551
|
+
|
|
552
|
+
def list_builtin_templates() -> list[str]:
|
|
553
|
+
"""List all built-in template IDs.
|
|
554
|
+
|
|
555
|
+
Returns:
|
|
556
|
+
List of template IDs
|
|
557
|
+
"""
|
|
558
|
+
return list(BUILTIN_TEMPLATES.keys())
|
|
559
|
+
|
|
560
|
+
|
|
561
|
+
def get_all_builtin_templates() -> dict[str, MetaWorkflowTemplate]:
|
|
562
|
+
"""Get all built-in templates.
|
|
563
|
+
|
|
564
|
+
Returns:
|
|
565
|
+
Dictionary mapping template_id → MetaWorkflowTemplate
|
|
566
|
+
"""
|
|
567
|
+
return BUILTIN_TEMPLATES.copy()
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"""CLI Commands Package for Meta-Workflows.
|
|
2
|
+
|
|
3
|
+
Organized command modules for meta-workflow system.
|
|
4
|
+
|
|
5
|
+
Copyright 2025 Smart-AI-Memory
|
|
6
|
+
Licensed under Fair Source License 0.9
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
import typer
|
|
10
|
+
|
|
11
|
+
# Create Typer app for meta-workflow commands
|
|
12
|
+
meta_workflow_app = typer.Typer(
|
|
13
|
+
name="meta-workflow",
|
|
14
|
+
help="Meta-workflow system for dynamic agent team generation",
|
|
15
|
+
no_args_is_help=True,
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
# Import all commands (they will auto-register with meta_workflow_app via decorators)
|
|
19
|
+
from .agent_commands import create_agent, create_team
|
|
20
|
+
from .analytics_commands import (
|
|
21
|
+
cleanup_executions,
|
|
22
|
+
list_runs,
|
|
23
|
+
show_analytics,
|
|
24
|
+
show_execution,
|
|
25
|
+
)
|
|
26
|
+
from .config_commands import show_migration_guide, suggest_defaults_cmd
|
|
27
|
+
from .memory_commands import search_memory, show_session_stats
|
|
28
|
+
from .template_commands import generate_plan_cmd, inspect_template, list_templates
|
|
29
|
+
from .workflow_commands import detect_intent, natural_language_run, run_workflow
|
|
30
|
+
|
|
31
|
+
__all__ = [
|
|
32
|
+
# Typer app
|
|
33
|
+
"meta_workflow_app",
|
|
34
|
+
# Template commands
|
|
35
|
+
"list_templates",
|
|
36
|
+
"inspect_template",
|
|
37
|
+
"generate_plan_cmd",
|
|
38
|
+
# Workflow commands
|
|
39
|
+
"run_workflow",
|
|
40
|
+
"natural_language_run",
|
|
41
|
+
"detect_intent",
|
|
42
|
+
# Analytics commands
|
|
43
|
+
"show_analytics",
|
|
44
|
+
"list_runs",
|
|
45
|
+
"show_execution",
|
|
46
|
+
"cleanup_executions",
|
|
47
|
+
# Memory commands
|
|
48
|
+
"search_memory",
|
|
49
|
+
"show_session_stats",
|
|
50
|
+
# Config commands
|
|
51
|
+
"suggest_defaults_cmd",
|
|
52
|
+
"show_migration_guide",
|
|
53
|
+
# Agent commands
|
|
54
|
+
"create_agent",
|
|
55
|
+
"create_team",
|
|
56
|
+
]
|