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,454 @@
|
|
|
1
|
+
# Progressive Tier Escalation System
|
|
2
|
+
|
|
3
|
+
**Version:** 4.1.0
|
|
4
|
+
**Status:** Production Ready
|
|
5
|
+
**Test Coverage:** 86.58% (123 tests)
|
|
6
|
+
|
|
7
|
+
## Overview
|
|
8
|
+
|
|
9
|
+
The Progressive Tier Escalation System is an intelligent cost optimization framework that automatically routes tasks through multiple AI model tiers (cheap → capable → premium) based on quality metrics, providing 70-85% cost savings compared to using premium models for all tasks.
|
|
10
|
+
|
|
11
|
+
## Key Features
|
|
12
|
+
|
|
13
|
+
- ✅ **Multi-tier execution**: Automatic progression from cheap to premium models
|
|
14
|
+
- ✅ **Composite Quality Score (CQS)**: Multi-signal failure detection
|
|
15
|
+
- ✅ **Smart escalation**: Only failed items escalate, successful ones stay at current tier
|
|
16
|
+
- ✅ **Cost management**: Budget controls with approval prompts
|
|
17
|
+
- ✅ **Privacy-preserving telemetry**: Local tracking with hashed user IDs
|
|
18
|
+
- ✅ **Comprehensive analytics**: Historical cost savings analysis
|
|
19
|
+
- ✅ **CLI tools**: Manage and analyze workflow results
|
|
20
|
+
|
|
21
|
+
## Quick Start
|
|
22
|
+
|
|
23
|
+
```python
|
|
24
|
+
from attune.workflows.progressive import (
|
|
25
|
+
ProgressiveTestGenWorkflow,
|
|
26
|
+
EscalationConfig,
|
|
27
|
+
Tier
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
# Configure escalation
|
|
31
|
+
config = EscalationConfig(
|
|
32
|
+
enabled=True,
|
|
33
|
+
tiers=[Tier.CHEAP, Tier.CAPABLE, Tier.PREMIUM],
|
|
34
|
+
max_cost=10.00,
|
|
35
|
+
auto_approve_under=1.00,
|
|
36
|
+
abort_on_budget_exceeded=True
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
# Create workflow
|
|
40
|
+
workflow = ProgressiveTestGenWorkflow(config)
|
|
41
|
+
|
|
42
|
+
# Execute with automatic tier progression
|
|
43
|
+
result = workflow.execute(target_file="src/myapp/calculator.py")
|
|
44
|
+
|
|
45
|
+
# View results
|
|
46
|
+
print(result.generate_report())
|
|
47
|
+
print(f"Cost: ${result.total_cost:.2f}")
|
|
48
|
+
print(f"Savings: ${result.cost_savings:.2f} ({result.cost_savings_percent:.0f}%)")
|
|
49
|
+
|
|
50
|
+
# Save results for analytics
|
|
51
|
+
result.save_to_disk()
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Architecture
|
|
55
|
+
|
|
56
|
+
### Tier Progression
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
60
|
+
│ PROGRESSIVE ESCALATION │
|
|
61
|
+
└─────────────────────────────────────────────────────────────┘
|
|
62
|
+
│
|
|
63
|
+
▼
|
|
64
|
+
┌─────────────────┐
|
|
65
|
+
│ CHEAP TIER │
|
|
66
|
+
│ (gpt-4o-mini) │
|
|
67
|
+
│ $0.003/item │
|
|
68
|
+
│ 1 agent │
|
|
69
|
+
└────────┬────────┘
|
|
70
|
+
│
|
|
71
|
+
CQS < 75? ───No──> SUCCESS
|
|
72
|
+
│
|
|
73
|
+
Yes
|
|
74
|
+
│
|
|
75
|
+
▼
|
|
76
|
+
┌─────────────────┐
|
|
77
|
+
│ CAPABLE TIER │
|
|
78
|
+
│ (claude-3-5-s) │
|
|
79
|
+
│ $0.015/item │
|
|
80
|
+
│ 2 agents │
|
|
81
|
+
└────────┬────────┘
|
|
82
|
+
│
|
|
83
|
+
CQS < 85? ───No──> SUCCESS
|
|
84
|
+
│
|
|
85
|
+
Yes
|
|
86
|
+
│
|
|
87
|
+
▼
|
|
88
|
+
┌─────────────────┐
|
|
89
|
+
│ PREMIUM TIER │
|
|
90
|
+
│ (claude-opus-4) │
|
|
91
|
+
│ $0.05/item │
|
|
92
|
+
│ 3 agents │
|
|
93
|
+
└────────┬────────┘
|
|
94
|
+
│
|
|
95
|
+
▼
|
|
96
|
+
FINAL RESULT
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Composite Quality Score (CQS)
|
|
100
|
+
|
|
101
|
+
Quality is measured using a weighted multi-signal metric:
|
|
102
|
+
|
|
103
|
+
```
|
|
104
|
+
CQS = (0.40 × test_pass_rate +
|
|
105
|
+
0.25 × code_coverage +
|
|
106
|
+
0.20 × assertion_quality +
|
|
107
|
+
0.15 × llm_confidence) × syntax_penalty
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
**Thresholds:**
|
|
111
|
+
- **CHEAP tier**: CQS ≥ 75 (pass), < 75 (escalate)
|
|
112
|
+
- **CAPABLE tier**: CQS ≥ 85 (pass), < 85 (escalate)
|
|
113
|
+
- **PREMIUM tier**: CQS ≥ 90 (target), no escalation
|
|
114
|
+
|
|
115
|
+
**Syntax Penalty:** 50% reduction if syntax errors detected
|
|
116
|
+
|
|
117
|
+
## Core Components
|
|
118
|
+
|
|
119
|
+
### 1. EscalationConfig
|
|
120
|
+
|
|
121
|
+
Configuration for tier escalation behavior:
|
|
122
|
+
|
|
123
|
+
```python
|
|
124
|
+
config = EscalationConfig(
|
|
125
|
+
enabled=True, # Enable progressive escalation
|
|
126
|
+
tiers=[Tier.CHEAP, Tier.CAPABLE, Tier.PREMIUM],
|
|
127
|
+
cheap_min_attempts=2, # Try cheap tier 2× before escalating
|
|
128
|
+
capable_min_attempts=1, # Try capable tier 1× before escalating
|
|
129
|
+
max_cost=10.00, # Abort if cost exceeds $10
|
|
130
|
+
auto_approve_under=1.00, # Auto-approve costs < $1
|
|
131
|
+
abort_on_budget_exceeded=True, # Abort vs warn on budget exceeded
|
|
132
|
+
warn_on_budget_exceeded=False,
|
|
133
|
+
stagnation_threshold=0.05, # 5% improvement threshold
|
|
134
|
+
stagnation_window=2, # Over 2 consecutive runs
|
|
135
|
+
)
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### 2. Meta-Orchestration
|
|
139
|
+
|
|
140
|
+
Dynamic agent team creation based on tier:
|
|
141
|
+
|
|
142
|
+
| Tier | Agents | Strategy |
|
|
143
|
+
|----------|--------|---------------------------------------|
|
|
144
|
+
| CHEAP | 1 | Single agent, fast iteration |
|
|
145
|
+
| CAPABLE | 2 | Planner + executor, collaborative |
|
|
146
|
+
| PREMIUM | 3 | Architect + executor + reviewer, deep |
|
|
147
|
+
|
|
148
|
+
### 3. Telemetry
|
|
149
|
+
|
|
150
|
+
Privacy-preserving usage tracking:
|
|
151
|
+
|
|
152
|
+
```python
|
|
153
|
+
from attune.workflows.progressive import ProgressiveTelemetry
|
|
154
|
+
|
|
155
|
+
# Initialize telemetry
|
|
156
|
+
telemetry = ProgressiveTelemetry(
|
|
157
|
+
workflow_name="test-gen",
|
|
158
|
+
user_id="user@example.com" # SHA256 hashed for privacy
|
|
159
|
+
)
|
|
160
|
+
|
|
161
|
+
# Track tier execution
|
|
162
|
+
telemetry.track_tier_execution(tier_result, attempt=1, escalated=False)
|
|
163
|
+
|
|
164
|
+
# Track escalation
|
|
165
|
+
telemetry.track_escalation(
|
|
166
|
+
from_tier=Tier.CHEAP,
|
|
167
|
+
to_tier=Tier.CAPABLE,
|
|
168
|
+
reason="Low CQS (65)",
|
|
169
|
+
item_count=10,
|
|
170
|
+
current_cost=0.30
|
|
171
|
+
)
|
|
172
|
+
|
|
173
|
+
# Track workflow completion
|
|
174
|
+
telemetry.track_workflow_completion(result)
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
**Data Stored:**
|
|
178
|
+
- Workflow name, tier, model, cost, tokens
|
|
179
|
+
- Quality metrics (CQS, test pass rate, coverage)
|
|
180
|
+
- Escalation reasons and patterns
|
|
181
|
+
- Timestamps and durations
|
|
182
|
+
|
|
183
|
+
**Privacy:**
|
|
184
|
+
- User IDs are SHA256 hashed
|
|
185
|
+
- No prompts, responses, or PII stored
|
|
186
|
+
- Local-only storage (~/.empathy/telemetry/)
|
|
187
|
+
|
|
188
|
+
### 4. CLI Tools
|
|
189
|
+
|
|
190
|
+
Manage and analyze saved results:
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
# List all workflow results
|
|
194
|
+
empathy progressive list
|
|
195
|
+
|
|
196
|
+
# Show detailed report for specific run
|
|
197
|
+
empathy progressive show test-gen-20260117-120000
|
|
198
|
+
|
|
199
|
+
# Show JSON output
|
|
200
|
+
empathy progressive show test-gen-20260117-120000 --json
|
|
201
|
+
|
|
202
|
+
# Generate cost analytics
|
|
203
|
+
empathy progressive analytics
|
|
204
|
+
|
|
205
|
+
# Cleanup old results (30 day retention)
|
|
206
|
+
empathy progressive cleanup --retention-days 30
|
|
207
|
+
|
|
208
|
+
# Dry run cleanup (preview)
|
|
209
|
+
empathy progressive cleanup --retention-days 30 --dry-run
|
|
210
|
+
|
|
211
|
+
# Custom storage path
|
|
212
|
+
empathy progressive list --storage-path ./my-results
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
## Usage Examples
|
|
216
|
+
|
|
217
|
+
### Example 1: Test Generation with Escalation
|
|
218
|
+
|
|
219
|
+
```python
|
|
220
|
+
from attune.workflows.progressive import ProgressiveTestGenWorkflow
|
|
221
|
+
|
|
222
|
+
workflow = ProgressiveTestGenWorkflow()
|
|
223
|
+
result = workflow.execute(target_file="src/auth.py")
|
|
224
|
+
|
|
225
|
+
# View tier progression
|
|
226
|
+
for tier_result in result.tier_results:
|
|
227
|
+
print(f"{tier_result.tier.value}: CQS={tier_result.failure_analysis.calculate_quality_score():.1f}")
|
|
228
|
+
if tier_result.escalated:
|
|
229
|
+
print(f" → Escalated: {tier_result.escalation_reason}")
|
|
230
|
+
|
|
231
|
+
# Output:
|
|
232
|
+
# cheap: CQS=68.5
|
|
233
|
+
# → Escalated: Low CQS (68.5)
|
|
234
|
+
# capable: CQS=92.0
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
### Example 2: Cost Analysis
|
|
238
|
+
|
|
239
|
+
```python
|
|
240
|
+
from attune.workflows.progressive.reports import generate_cost_analytics
|
|
241
|
+
|
|
242
|
+
analytics = generate_cost_analytics()
|
|
243
|
+
|
|
244
|
+
print(f"Total runs: {analytics['total_runs']}")
|
|
245
|
+
print(f"Total cost: ${analytics['total_cost']:.2f}")
|
|
246
|
+
print(f"Total savings: ${analytics['total_savings']:.2f}")
|
|
247
|
+
print(f"Avg savings: {analytics['avg_savings_percent']:.1f}%")
|
|
248
|
+
print(f"Escalation rate: {analytics['escalation_rate']:.1%}")
|
|
249
|
+
print(f"Success rate: {analytics['success_rate']:.1%}")
|
|
250
|
+
|
|
251
|
+
# Per-workflow breakdown
|
|
252
|
+
for workflow, stats in analytics['workflow_stats'].items():
|
|
253
|
+
print(f"\n{workflow}:")
|
|
254
|
+
print(f" Runs: {stats['runs']}")
|
|
255
|
+
print(f" Avg cost: ${stats['avg_cost']:.2f}")
|
|
256
|
+
print(f" Success rate: {stats['success_rate']:.1%}")
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
### Example 3: Custom Escalation Logic
|
|
260
|
+
|
|
261
|
+
```python
|
|
262
|
+
from attune.workflows.progressive import ProgressiveWorkflow, Tier
|
|
263
|
+
|
|
264
|
+
class CustomWorkflow(ProgressiveWorkflow):
|
|
265
|
+
def _should_escalate_custom(self, tier_result):
|
|
266
|
+
"""Custom escalation logic."""
|
|
267
|
+
# Example: Escalate if any syntax errors
|
|
268
|
+
if tier_result.failure_analysis.syntax_errors:
|
|
269
|
+
return True, "Syntax errors detected"
|
|
270
|
+
|
|
271
|
+
# Example: Escalate if test pass rate < 90%
|
|
272
|
+
if tier_result.failure_analysis.test_pass_rate < 0.90:
|
|
273
|
+
return True, f"Low test pass rate ({tier_result.failure_analysis.test_pass_rate:.1%})"
|
|
274
|
+
|
|
275
|
+
return False, None
|
|
276
|
+
|
|
277
|
+
def _execute_tier_impl(self, tier, items, context):
|
|
278
|
+
"""Implement tier execution logic."""
|
|
279
|
+
# Your custom implementation
|
|
280
|
+
pass
|
|
281
|
+
|
|
282
|
+
workflow = CustomWorkflow()
|
|
283
|
+
result = workflow.execute(items=my_items)
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
## Performance Characteristics
|
|
287
|
+
|
|
288
|
+
### Cost Savings
|
|
289
|
+
|
|
290
|
+
Based on production usage:
|
|
291
|
+
|
|
292
|
+
| Scenario | Cheap % | Capable % | Premium % | Savings |
|
|
293
|
+
|-----------------------|---------|-----------|-----------|---------|
|
|
294
|
+
| Simple tasks | 80% | 15% | 5% | 85% |
|
|
295
|
+
| Medium complexity | 60% | 30% | 10% | 72% |
|
|
296
|
+
| High complexity | 40% | 40% | 20% | 60% |
|
|
297
|
+
| **Average** | **60%** | **28%** | **12%** | **72%** |
|
|
298
|
+
|
|
299
|
+
### Execution Time
|
|
300
|
+
|
|
301
|
+
Progressive execution adds minimal latency:
|
|
302
|
+
|
|
303
|
+
- **Cheap tier**: ~5-10s per item (baseline)
|
|
304
|
+
- **Capable tier**: ~10-20s per item (+5-10s overhead)
|
|
305
|
+
- **Premium tier**: ~20-40s per item (+10-20s overhead)
|
|
306
|
+
|
|
307
|
+
**Parallel escalation**: Failed items escalate in parallel, reducing total time.
|
|
308
|
+
|
|
309
|
+
## Troubleshooting
|
|
310
|
+
|
|
311
|
+
### Issue: Excessive Escalation
|
|
312
|
+
|
|
313
|
+
**Symptoms:** Most items escalate to premium tier
|
|
314
|
+
|
|
315
|
+
**Causes:**
|
|
316
|
+
- CQS thresholds too strict
|
|
317
|
+
- Input items too complex for cheap/capable tiers
|
|
318
|
+
- Stagnation detection too sensitive
|
|
319
|
+
|
|
320
|
+
**Solutions:**
|
|
321
|
+
```python
|
|
322
|
+
# Lower CQS thresholds
|
|
323
|
+
config = EscalationConfig(
|
|
324
|
+
cheap_cqs_threshold=70, # Down from 75
|
|
325
|
+
capable_cqs_threshold=80 # Down from 85
|
|
326
|
+
)
|
|
327
|
+
|
|
328
|
+
# Increase stagnation threshold
|
|
329
|
+
config = EscalationConfig(
|
|
330
|
+
stagnation_threshold=0.10, # 10% improvement required
|
|
331
|
+
stagnation_window=3 # Over 3 runs
|
|
332
|
+
)
|
|
333
|
+
|
|
334
|
+
# Increase min attempts
|
|
335
|
+
config = EscalationConfig(
|
|
336
|
+
cheap_min_attempts=3, # Try 3× before escalating
|
|
337
|
+
capable_min_attempts=2
|
|
338
|
+
)
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
### Issue: Budget Exceeded Errors
|
|
342
|
+
|
|
343
|
+
**Symptoms:** `BudgetExceededError` raised frequently
|
|
344
|
+
|
|
345
|
+
**Solutions:**
|
|
346
|
+
```python
|
|
347
|
+
# Increase budget
|
|
348
|
+
config = EscalationConfig(max_cost=20.00)
|
|
349
|
+
|
|
350
|
+
# Warn instead of abort
|
|
351
|
+
config = EscalationConfig(
|
|
352
|
+
abort_on_budget_exceeded=False,
|
|
353
|
+
warn_on_budget_exceeded=True
|
|
354
|
+
)
|
|
355
|
+
|
|
356
|
+
# Increase auto-approve threshold
|
|
357
|
+
config = EscalationConfig(auto_approve_under=5.00)
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
### Issue: Poor Quality Results
|
|
361
|
+
|
|
362
|
+
**Symptoms:** Final CQS < 85
|
|
363
|
+
|
|
364
|
+
**Causes:**
|
|
365
|
+
- Insufficient premium tier attempts
|
|
366
|
+
- Input quality issues
|
|
367
|
+
- Test assertion depth too low
|
|
368
|
+
|
|
369
|
+
**Solutions:**
|
|
370
|
+
```python
|
|
371
|
+
# Force premium tier for critical tasks
|
|
372
|
+
config = EscalationConfig(
|
|
373
|
+
tiers=[Tier.PREMIUM], # Skip cheap/capable
|
|
374
|
+
enabled=False # Disable escalation
|
|
375
|
+
)
|
|
376
|
+
|
|
377
|
+
# Increase premium min attempts
|
|
378
|
+
config = EscalationConfig(
|
|
379
|
+
premium_min_attempts=2
|
|
380
|
+
)
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
## API Reference
|
|
384
|
+
|
|
385
|
+
### Core Classes
|
|
386
|
+
|
|
387
|
+
- `Tier`: Enum defining tier levels (CHEAP, CAPABLE, PREMIUM)
|
|
388
|
+
- `EscalationConfig`: Configuration for tier escalation
|
|
389
|
+
- `FailureAnalysis`: Quality metrics and failure signals
|
|
390
|
+
- `TierResult`: Results from a single tier execution
|
|
391
|
+
- `ProgressiveWorkflowResult`: Complete multi-tier execution results
|
|
392
|
+
|
|
393
|
+
### Base Classes
|
|
394
|
+
|
|
395
|
+
- `ProgressiveWorkflow`: Abstract base for progressive workflows
|
|
396
|
+
- `MetaOrchestrator`: Tier escalation decision logic
|
|
397
|
+
|
|
398
|
+
### Workflows
|
|
399
|
+
|
|
400
|
+
- `ProgressiveTestGenWorkflow`: Test generation with progressive escalation
|
|
401
|
+
|
|
402
|
+
### Utilities
|
|
403
|
+
|
|
404
|
+
- `ProgressiveTelemetry`: Usage tracking and analytics
|
|
405
|
+
- `generate_cost_analytics()`: Analyze historical cost savings
|
|
406
|
+
- `cleanup_old_results()`: Retention policy enforcement
|
|
407
|
+
|
|
408
|
+
## Testing
|
|
409
|
+
|
|
410
|
+
Run progressive workflow tests:
|
|
411
|
+
|
|
412
|
+
```bash
|
|
413
|
+
# All progressive tests
|
|
414
|
+
pytest tests/unit/workflows/progressive/ -v
|
|
415
|
+
|
|
416
|
+
# Specific test modules
|
|
417
|
+
pytest tests/unit/workflows/progressive/test_core.py -v
|
|
418
|
+
pytest tests/unit/workflows/progressive/test_orchestrator.py -v
|
|
419
|
+
pytest tests/unit/workflows/progressive/test_cost_telemetry.py -v
|
|
420
|
+
pytest tests/unit/workflows/progressive/test_reports_analytics.py -v
|
|
421
|
+
pytest tests/unit/workflows/progressive/test_test_gen.py -v
|
|
422
|
+
|
|
423
|
+
# With coverage
|
|
424
|
+
pytest tests/unit/workflows/progressive/ --cov=src/attune/workflows/progressive --cov-report=term-missing
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
**Test Coverage:** 86.58% (123 tests)
|
|
428
|
+
|
|
429
|
+
## Contributing
|
|
430
|
+
|
|
431
|
+
When adding new progressive workflows:
|
|
432
|
+
|
|
433
|
+
1. **Inherit from `ProgressiveWorkflow`**
|
|
434
|
+
2. **Implement `_execute_tier_impl()`** for tier-specific execution logic
|
|
435
|
+
3. **Define quality metrics** in `_analyze_quality()`
|
|
436
|
+
4. **Add comprehensive tests** (aim for 85%+ coverage)
|
|
437
|
+
5. **Document usage** with examples
|
|
438
|
+
|
|
439
|
+
See `ProgressiveTestGenWorkflow` for a complete implementation example.
|
|
440
|
+
|
|
441
|
+
## License
|
|
442
|
+
|
|
443
|
+
Fair Source License 0.9
|
|
444
|
+
|
|
445
|
+
## Version History
|
|
446
|
+
|
|
447
|
+
- **4.1.0** (2026-01-17): Initial release with test generation workflow
|
|
448
|
+
- **4.1.0-alpha**: Development version
|
|
449
|
+
|
|
450
|
+
## Support
|
|
451
|
+
|
|
452
|
+
- **Documentation**: [Empathy Framework Docs](https://attune-ai.readthedocs.io)
|
|
453
|
+
- **Issues**: [GitHub Issues](https://github.com/Smart-AI-Memory/attune-ai/issues)
|
|
454
|
+
- **Discussions**: [GitHub Discussions](https://github.com/Smart-AI-Memory/attune-ai/discussions)
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"""Progressive tier escalation system for cost-efficient, quality-driven workflows.
|
|
2
|
+
|
|
3
|
+
This module implements automatic model tier escalation (cheap → capable → premium)
|
|
4
|
+
based on failure analysis and quality metrics. Key features:
|
|
5
|
+
|
|
6
|
+
- Multi-signal failure detection (syntax, execution, coverage, confidence)
|
|
7
|
+
- Composite Quality Score (CQS) for objective quality measurement
|
|
8
|
+
- LLM-guided retry logic with stagnation detection
|
|
9
|
+
- Meta-orchestration with dynamic agent team creation
|
|
10
|
+
- Cost management with budget controls and approval prompts
|
|
11
|
+
- Comprehensive observability and reporting
|
|
12
|
+
|
|
13
|
+
Usage:
|
|
14
|
+
from attune.workflows.progressive import (
|
|
15
|
+
ProgressiveWorkflow,
|
|
16
|
+
EscalationConfig,
|
|
17
|
+
Tier,
|
|
18
|
+
FailureAnalysis
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
# Configure escalation
|
|
22
|
+
config = EscalationConfig(
|
|
23
|
+
enabled=True,
|
|
24
|
+
max_cost=10.00,
|
|
25
|
+
auto_approve_under=5.00
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
# Create workflow
|
|
29
|
+
workflow = ProgressiveTestGenWorkflow(config)
|
|
30
|
+
result = workflow.execute(target_file="app.py")
|
|
31
|
+
|
|
32
|
+
# View report
|
|
33
|
+
print(result.generate_report())
|
|
34
|
+
|
|
35
|
+
Version: 4.1.0
|
|
36
|
+
Author: Empathy Framework Team
|
|
37
|
+
"""
|
|
38
|
+
|
|
39
|
+
from attune.workflows.progressive.core import (
|
|
40
|
+
EscalationConfig,
|
|
41
|
+
FailureAnalysis,
|
|
42
|
+
ProgressiveWorkflowResult,
|
|
43
|
+
Tier,
|
|
44
|
+
TierResult,
|
|
45
|
+
)
|
|
46
|
+
from attune.workflows.progressive.orchestrator import MetaOrchestrator
|
|
47
|
+
from attune.workflows.progressive.telemetry import ProgressiveTelemetry
|
|
48
|
+
from attune.workflows.progressive.test_gen import (
|
|
49
|
+
ProgressiveTestGenWorkflow,
|
|
50
|
+
calculate_coverage,
|
|
51
|
+
execute_test_file,
|
|
52
|
+
)
|
|
53
|
+
from attune.workflows.progressive.workflow import (
|
|
54
|
+
BudgetExceededError,
|
|
55
|
+
ProgressiveWorkflow,
|
|
56
|
+
UserCancelledError,
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
__all__ = [
|
|
60
|
+
# Enums
|
|
61
|
+
"Tier",
|
|
62
|
+
# Core data structures
|
|
63
|
+
"FailureAnalysis",
|
|
64
|
+
"TierResult",
|
|
65
|
+
"ProgressiveWorkflowResult",
|
|
66
|
+
"EscalationConfig",
|
|
67
|
+
# Base classes
|
|
68
|
+
"ProgressiveWorkflow",
|
|
69
|
+
"MetaOrchestrator",
|
|
70
|
+
# Telemetry
|
|
71
|
+
"ProgressiveTelemetry",
|
|
72
|
+
# Exceptions
|
|
73
|
+
"BudgetExceededError",
|
|
74
|
+
"UserCancelledError",
|
|
75
|
+
# Workflows
|
|
76
|
+
"ProgressiveTestGenWorkflow",
|
|
77
|
+
# Utilities
|
|
78
|
+
"execute_test_file",
|
|
79
|
+
"calculate_coverage",
|
|
80
|
+
]
|
|
81
|
+
|
|
82
|
+
__version__ = "4.1.1"
|