empathy-framework 2.4.0__py3-none-any.whl → 3.8.2__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.
- coach_wizards/__init__.py +13 -12
- coach_wizards/accessibility_wizard.py +12 -12
- coach_wizards/api_wizard.py +12 -12
- coach_wizards/base_wizard.py +26 -20
- coach_wizards/cicd_wizard.py +15 -13
- coach_wizards/code_reviewer_README.md +60 -0
- coach_wizards/code_reviewer_wizard.py +180 -0
- coach_wizards/compliance_wizard.py +12 -12
- coach_wizards/database_wizard.py +12 -12
- coach_wizards/debugging_wizard.py +12 -12
- coach_wizards/documentation_wizard.py +12 -12
- coach_wizards/generate_wizards.py +1 -2
- coach_wizards/localization_wizard.py +101 -19
- coach_wizards/migration_wizard.py +12 -12
- coach_wizards/monitoring_wizard.py +12 -12
- coach_wizards/observability_wizard.py +12 -12
- coach_wizards/performance_wizard.py +12 -12
- coach_wizards/prompt_engineering_wizard.py +661 -0
- coach_wizards/refactoring_wizard.py +12 -12
- coach_wizards/scaling_wizard.py +12 -12
- coach_wizards/security_wizard.py +12 -12
- coach_wizards/testing_wizard.py +12 -12
- empathy_framework-3.8.2.dist-info/METADATA +1176 -0
- empathy_framework-3.8.2.dist-info/RECORD +333 -0
- empathy_framework-3.8.2.dist-info/entry_points.txt +22 -0
- {empathy_framework-2.4.0.dist-info → empathy_framework-3.8.2.dist-info}/top_level.txt +5 -1
- empathy_healthcare_plugin/__init__.py +1 -2
- empathy_healthcare_plugin/monitors/__init__.py +9 -0
- empathy_healthcare_plugin/monitors/clinical_protocol_monitor.py +315 -0
- empathy_healthcare_plugin/monitors/monitoring/__init__.py +44 -0
- empathy_healthcare_plugin/monitors/monitoring/protocol_checker.py +300 -0
- empathy_healthcare_plugin/monitors/monitoring/protocol_loader.py +214 -0
- empathy_healthcare_plugin/monitors/monitoring/sensor_parsers.py +306 -0
- empathy_healthcare_plugin/monitors/monitoring/trajectory_analyzer.py +389 -0
- empathy_llm_toolkit/__init__.py +7 -7
- empathy_llm_toolkit/agent_factory/__init__.py +53 -0
- empathy_llm_toolkit/agent_factory/adapters/__init__.py +85 -0
- empathy_llm_toolkit/agent_factory/adapters/autogen_adapter.py +312 -0
- empathy_llm_toolkit/agent_factory/adapters/crewai_adapter.py +454 -0
- empathy_llm_toolkit/agent_factory/adapters/haystack_adapter.py +298 -0
- empathy_llm_toolkit/agent_factory/adapters/langchain_adapter.py +362 -0
- empathy_llm_toolkit/agent_factory/adapters/langgraph_adapter.py +333 -0
- empathy_llm_toolkit/agent_factory/adapters/native.py +228 -0
- empathy_llm_toolkit/agent_factory/adapters/wizard_adapter.py +426 -0
- empathy_llm_toolkit/agent_factory/base.py +305 -0
- empathy_llm_toolkit/agent_factory/crews/__init__.py +67 -0
- empathy_llm_toolkit/agent_factory/crews/code_review.py +1113 -0
- empathy_llm_toolkit/agent_factory/crews/health_check.py +1246 -0
- empathy_llm_toolkit/agent_factory/crews/refactoring.py +1128 -0
- empathy_llm_toolkit/agent_factory/crews/security_audit.py +1018 -0
- empathy_llm_toolkit/agent_factory/decorators.py +286 -0
- empathy_llm_toolkit/agent_factory/factory.py +558 -0
- empathy_llm_toolkit/agent_factory/framework.py +192 -0
- empathy_llm_toolkit/agent_factory/memory_integration.py +324 -0
- empathy_llm_toolkit/agent_factory/resilient.py +320 -0
- empathy_llm_toolkit/claude_memory.py +14 -15
- empathy_llm_toolkit/cli/__init__.py +8 -0
- empathy_llm_toolkit/cli/sync_claude.py +487 -0
- empathy_llm_toolkit/code_health.py +186 -28
- empathy_llm_toolkit/config/__init__.py +29 -0
- empathy_llm_toolkit/config/unified.py +295 -0
- empathy_llm_toolkit/contextual_patterns.py +11 -12
- empathy_llm_toolkit/core.py +168 -53
- empathy_llm_toolkit/git_pattern_extractor.py +17 -13
- empathy_llm_toolkit/levels.py +6 -13
- empathy_llm_toolkit/pattern_confidence.py +14 -18
- empathy_llm_toolkit/pattern_resolver.py +10 -12
- empathy_llm_toolkit/pattern_summary.py +16 -14
- empathy_llm_toolkit/providers.py +194 -28
- empathy_llm_toolkit/routing/__init__.py +32 -0
- empathy_llm_toolkit/routing/model_router.py +362 -0
- empathy_llm_toolkit/security/IMPLEMENTATION_SUMMARY.md +413 -0
- empathy_llm_toolkit/security/PHASE2_COMPLETE.md +384 -0
- empathy_llm_toolkit/security/PHASE2_SECRETS_DETECTOR_COMPLETE.md +271 -0
- empathy_llm_toolkit/security/QUICK_REFERENCE.md +316 -0
- empathy_llm_toolkit/security/README.md +262 -0
- empathy_llm_toolkit/security/__init__.py +62 -0
- empathy_llm_toolkit/security/audit_logger.py +929 -0
- empathy_llm_toolkit/security/audit_logger_example.py +152 -0
- empathy_llm_toolkit/security/pii_scrubber.py +640 -0
- empathy_llm_toolkit/security/secrets_detector.py +678 -0
- empathy_llm_toolkit/security/secrets_detector_example.py +304 -0
- empathy_llm_toolkit/security/secure_memdocs.py +1192 -0
- empathy_llm_toolkit/security/secure_memdocs_example.py +278 -0
- empathy_llm_toolkit/session_status.py +20 -22
- empathy_llm_toolkit/state.py +28 -21
- empathy_llm_toolkit/wizards/__init__.py +38 -0
- empathy_llm_toolkit/wizards/base_wizard.py +364 -0
- empathy_llm_toolkit/wizards/customer_support_wizard.py +190 -0
- empathy_llm_toolkit/wizards/healthcare_wizard.py +362 -0
- empathy_llm_toolkit/wizards/patient_assessment_README.md +64 -0
- empathy_llm_toolkit/wizards/patient_assessment_wizard.py +193 -0
- empathy_llm_toolkit/wizards/technology_wizard.py +194 -0
- empathy_os/__init__.py +125 -84
- empathy_os/adaptive/__init__.py +13 -0
- empathy_os/adaptive/task_complexity.py +127 -0
- empathy_os/{monitoring.py → agent_monitoring.py} +28 -28
- empathy_os/cache/__init__.py +117 -0
- empathy_os/cache/base.py +166 -0
- empathy_os/cache/dependency_manager.py +253 -0
- empathy_os/cache/hash_only.py +248 -0
- empathy_os/cache/hybrid.py +390 -0
- empathy_os/cache/storage.py +282 -0
- empathy_os/cli.py +1516 -70
- empathy_os/cli_unified.py +597 -0
- empathy_os/config/__init__.py +63 -0
- empathy_os/config/xml_config.py +239 -0
- empathy_os/config.py +95 -37
- empathy_os/coordination.py +72 -68
- empathy_os/core.py +94 -107
- empathy_os/cost_tracker.py +74 -55
- empathy_os/dashboard/__init__.py +15 -0
- empathy_os/dashboard/server.py +743 -0
- empathy_os/discovery.py +17 -14
- empathy_os/emergence.py +21 -22
- empathy_os/exceptions.py +18 -30
- empathy_os/feedback_loops.py +30 -33
- empathy_os/levels.py +32 -35
- empathy_os/leverage_points.py +31 -32
- empathy_os/logging_config.py +19 -16
- empathy_os/memory/__init__.py +195 -0
- empathy_os/memory/claude_memory.py +466 -0
- empathy_os/memory/config.py +224 -0
- empathy_os/memory/control_panel.py +1298 -0
- empathy_os/memory/edges.py +179 -0
- empathy_os/memory/graph.py +567 -0
- empathy_os/memory/long_term.py +1194 -0
- empathy_os/memory/nodes.py +179 -0
- empathy_os/memory/redis_bootstrap.py +540 -0
- empathy_os/memory/security/__init__.py +31 -0
- empathy_os/memory/security/audit_logger.py +930 -0
- empathy_os/memory/security/pii_scrubber.py +640 -0
- empathy_os/memory/security/secrets_detector.py +678 -0
- empathy_os/memory/short_term.py +2119 -0
- empathy_os/memory/storage/__init__.py +15 -0
- empathy_os/memory/summary_index.py +583 -0
- empathy_os/memory/unified.py +619 -0
- empathy_os/metrics/__init__.py +12 -0
- empathy_os/metrics/prompt_metrics.py +190 -0
- empathy_os/models/__init__.py +136 -0
- empathy_os/models/__main__.py +13 -0
- empathy_os/models/cli.py +655 -0
- empathy_os/models/empathy_executor.py +354 -0
- empathy_os/models/executor.py +252 -0
- empathy_os/models/fallback.py +671 -0
- empathy_os/models/provider_config.py +563 -0
- empathy_os/models/registry.py +382 -0
- empathy_os/models/tasks.py +302 -0
- empathy_os/models/telemetry.py +548 -0
- empathy_os/models/token_estimator.py +378 -0
- empathy_os/models/validation.py +274 -0
- empathy_os/monitoring/__init__.py +52 -0
- empathy_os/monitoring/alerts.py +23 -0
- empathy_os/monitoring/alerts_cli.py +268 -0
- empathy_os/monitoring/multi_backend.py +271 -0
- empathy_os/monitoring/otel_backend.py +363 -0
- empathy_os/optimization/__init__.py +19 -0
- empathy_os/optimization/context_optimizer.py +272 -0
- empathy_os/pattern_library.py +30 -29
- empathy_os/persistence.py +35 -37
- empathy_os/platform_utils.py +261 -0
- empathy_os/plugins/__init__.py +28 -0
- empathy_os/plugins/base.py +361 -0
- empathy_os/plugins/registry.py +268 -0
- empathy_os/project_index/__init__.py +30 -0
- empathy_os/project_index/cli.py +335 -0
- empathy_os/project_index/crew_integration.py +430 -0
- empathy_os/project_index/index.py +425 -0
- empathy_os/project_index/models.py +501 -0
- empathy_os/project_index/reports.py +473 -0
- empathy_os/project_index/scanner.py +538 -0
- empathy_os/prompts/__init__.py +61 -0
- empathy_os/prompts/config.py +77 -0
- empathy_os/prompts/context.py +177 -0
- empathy_os/prompts/parser.py +285 -0
- empathy_os/prompts/registry.py +313 -0
- empathy_os/prompts/templates.py +208 -0
- empathy_os/redis_config.py +144 -58
- empathy_os/redis_memory.py +79 -77
- empathy_os/resilience/__init__.py +56 -0
- empathy_os/resilience/circuit_breaker.py +256 -0
- empathy_os/resilience/fallback.py +179 -0
- empathy_os/resilience/health.py +300 -0
- empathy_os/resilience/retry.py +209 -0
- empathy_os/resilience/timeout.py +135 -0
- empathy_os/routing/__init__.py +43 -0
- empathy_os/routing/chain_executor.py +433 -0
- empathy_os/routing/classifier.py +217 -0
- empathy_os/routing/smart_router.py +234 -0
- empathy_os/routing/wizard_registry.py +307 -0
- empathy_os/templates.py +19 -14
- empathy_os/trust/__init__.py +28 -0
- empathy_os/trust/circuit_breaker.py +579 -0
- empathy_os/trust_building.py +67 -58
- empathy_os/validation/__init__.py +19 -0
- empathy_os/validation/xml_validator.py +281 -0
- empathy_os/wizard_factory_cli.py +170 -0
- empathy_os/{workflows.py → workflow_commands.py} +131 -37
- empathy_os/workflows/__init__.py +360 -0
- empathy_os/workflows/base.py +1660 -0
- empathy_os/workflows/bug_predict.py +962 -0
- empathy_os/workflows/code_review.py +960 -0
- empathy_os/workflows/code_review_adapters.py +310 -0
- empathy_os/workflows/code_review_pipeline.py +720 -0
- empathy_os/workflows/config.py +600 -0
- empathy_os/workflows/dependency_check.py +648 -0
- empathy_os/workflows/document_gen.py +1069 -0
- empathy_os/workflows/documentation_orchestrator.py +1205 -0
- empathy_os/workflows/health_check.py +679 -0
- empathy_os/workflows/keyboard_shortcuts/__init__.py +39 -0
- empathy_os/workflows/keyboard_shortcuts/generators.py +386 -0
- empathy_os/workflows/keyboard_shortcuts/parsers.py +414 -0
- empathy_os/workflows/keyboard_shortcuts/prompts.py +295 -0
- empathy_os/workflows/keyboard_shortcuts/schema.py +193 -0
- empathy_os/workflows/keyboard_shortcuts/workflow.py +505 -0
- empathy_os/workflows/manage_documentation.py +804 -0
- empathy_os/workflows/new_sample_workflow1.py +146 -0
- empathy_os/workflows/new_sample_workflow1_README.md +150 -0
- empathy_os/workflows/perf_audit.py +687 -0
- empathy_os/workflows/pr_review.py +748 -0
- empathy_os/workflows/progress.py +445 -0
- empathy_os/workflows/progress_server.py +322 -0
- empathy_os/workflows/refactor_plan.py +693 -0
- empathy_os/workflows/release_prep.py +808 -0
- empathy_os/workflows/research_synthesis.py +404 -0
- empathy_os/workflows/secure_release.py +585 -0
- empathy_os/workflows/security_adapters.py +297 -0
- empathy_os/workflows/security_audit.py +1046 -0
- empathy_os/workflows/step_config.py +234 -0
- empathy_os/workflows/test5.py +125 -0
- empathy_os/workflows/test5_README.md +158 -0
- empathy_os/workflows/test_gen.py +1855 -0
- empathy_os/workflows/test_lifecycle.py +526 -0
- empathy_os/workflows/test_maintenance.py +626 -0
- empathy_os/workflows/test_maintenance_cli.py +590 -0
- empathy_os/workflows/test_maintenance_crew.py +821 -0
- empathy_os/workflows/xml_enhanced_crew.py +285 -0
- empathy_software_plugin/__init__.py +1 -2
- empathy_software_plugin/cli/__init__.py +120 -0
- empathy_software_plugin/cli/inspect.py +362 -0
- empathy_software_plugin/cli.py +49 -27
- empathy_software_plugin/plugin.py +4 -8
- empathy_software_plugin/wizards/__init__.py +42 -0
- empathy_software_plugin/wizards/advanced_debugging_wizard.py +392 -0
- empathy_software_plugin/wizards/agent_orchestration_wizard.py +511 -0
- empathy_software_plugin/wizards/ai_collaboration_wizard.py +503 -0
- empathy_software_plugin/wizards/ai_context_wizard.py +441 -0
- empathy_software_plugin/wizards/ai_documentation_wizard.py +503 -0
- empathy_software_plugin/wizards/base_wizard.py +288 -0
- empathy_software_plugin/wizards/book_chapter_wizard.py +519 -0
- empathy_software_plugin/wizards/code_review_wizard.py +606 -0
- empathy_software_plugin/wizards/debugging/__init__.py +50 -0
- empathy_software_plugin/wizards/debugging/bug_risk_analyzer.py +414 -0
- empathy_software_plugin/wizards/debugging/config_loaders.py +442 -0
- empathy_software_plugin/wizards/debugging/fix_applier.py +469 -0
- empathy_software_plugin/wizards/debugging/language_patterns.py +383 -0
- empathy_software_plugin/wizards/debugging/linter_parsers.py +470 -0
- empathy_software_plugin/wizards/debugging/verification.py +369 -0
- empathy_software_plugin/wizards/enhanced_testing_wizard.py +537 -0
- empathy_software_plugin/wizards/memory_enhanced_debugging_wizard.py +816 -0
- empathy_software_plugin/wizards/multi_model_wizard.py +501 -0
- empathy_software_plugin/wizards/pattern_extraction_wizard.py +422 -0
- empathy_software_plugin/wizards/pattern_retriever_wizard.py +400 -0
- empathy_software_plugin/wizards/performance/__init__.py +9 -0
- empathy_software_plugin/wizards/performance/bottleneck_detector.py +221 -0
- empathy_software_plugin/wizards/performance/profiler_parsers.py +278 -0
- empathy_software_plugin/wizards/performance/trajectory_analyzer.py +429 -0
- empathy_software_plugin/wizards/performance_profiling_wizard.py +305 -0
- empathy_software_plugin/wizards/prompt_engineering_wizard.py +425 -0
- empathy_software_plugin/wizards/rag_pattern_wizard.py +461 -0
- empathy_software_plugin/wizards/security/__init__.py +32 -0
- empathy_software_plugin/wizards/security/exploit_analyzer.py +290 -0
- empathy_software_plugin/wizards/security/owasp_patterns.py +241 -0
- empathy_software_plugin/wizards/security/vulnerability_scanner.py +604 -0
- empathy_software_plugin/wizards/security_analysis_wizard.py +322 -0
- empathy_software_plugin/wizards/security_learning_wizard.py +740 -0
- empathy_software_plugin/wizards/tech_debt_wizard.py +726 -0
- empathy_software_plugin/wizards/testing/__init__.py +27 -0
- empathy_software_plugin/wizards/testing/coverage_analyzer.py +459 -0
- empathy_software_plugin/wizards/testing/quality_analyzer.py +531 -0
- empathy_software_plugin/wizards/testing/test_suggester.py +533 -0
- empathy_software_plugin/wizards/testing_wizard.py +274 -0
- hot_reload/README.md +473 -0
- hot_reload/__init__.py +62 -0
- hot_reload/config.py +84 -0
- hot_reload/integration.py +228 -0
- hot_reload/reloader.py +298 -0
- hot_reload/watcher.py +179 -0
- hot_reload/websocket.py +176 -0
- scaffolding/README.md +589 -0
- scaffolding/__init__.py +35 -0
- scaffolding/__main__.py +14 -0
- scaffolding/cli.py +240 -0
- test_generator/__init__.py +38 -0
- test_generator/__main__.py +14 -0
- test_generator/cli.py +226 -0
- test_generator/generator.py +325 -0
- test_generator/risk_analyzer.py +216 -0
- workflow_patterns/__init__.py +33 -0
- workflow_patterns/behavior.py +249 -0
- workflow_patterns/core.py +76 -0
- workflow_patterns/output.py +99 -0
- workflow_patterns/registry.py +255 -0
- workflow_patterns/structural.py +288 -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
- agents/code_inspection/patterns/inspection/recurring_B112.json +0 -18
- agents/code_inspection/patterns/inspection/recurring_F541.json +0 -16
- agents/code_inspection/patterns/inspection/recurring_FORMAT.json +0 -25
- agents/code_inspection/patterns/inspection/recurring_bug_20250822_def456.json +0 -16
- agents/code_inspection/patterns/inspection/recurring_bug_20250915_abc123.json +0 -16
- agents/code_inspection/patterns/inspection/recurring_bug_20251212_3c5b9951.json +0 -16
- agents/code_inspection/patterns/inspection/recurring_bug_20251212_97c0f72f.json +0 -16
- agents/code_inspection/patterns/inspection/recurring_bug_20251212_a0871d53.json +0 -16
- agents/code_inspection/patterns/inspection/recurring_bug_20251212_a9b6ec41.json +0 -16
- agents/code_inspection/patterns/inspection/recurring_bug_null_001.json +0 -16
- agents/code_inspection/patterns/inspection/recurring_builtin.json +0 -16
- agents/compliance_anticipation_agent.py +0 -1427
- agents/epic_integration_wizard.py +0 -541
- agents/trust_building_behaviors.py +0 -891
- empathy_framework-2.4.0.dist-info/METADATA +0 -485
- empathy_framework-2.4.0.dist-info/RECORD +0 -102
- empathy_framework-2.4.0.dist-info/entry_points.txt +0 -6
- empathy_llm_toolkit/htmlcov/status.json +0 -1
- empathy_llm_toolkit/security/htmlcov/status.json +0 -1
- {empathy_framework-2.4.0.dist-info → empathy_framework-3.8.2.dist-info}/WHEEL +0 -0
- {empathy_framework-2.4.0.dist-info → empathy_framework-3.8.2.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
"""Multi-Model Workflow Templates for Empathy Framework
|
|
2
|
+
|
|
3
|
+
Cost-optimized workflow patterns that leverage 3-tier model routing:
|
|
4
|
+
- Haiku (cheap): Summarization, classification, triage
|
|
5
|
+
- Sonnet (capable): Analysis, code generation, security review
|
|
6
|
+
- Opus (premium): Synthesis, architectural decisions, coordination
|
|
7
|
+
|
|
8
|
+
Usage:
|
|
9
|
+
from empathy_os.workflows import ResearchSynthesisWorkflow
|
|
10
|
+
|
|
11
|
+
workflow = ResearchSynthesisWorkflow()
|
|
12
|
+
result = await workflow.execute(
|
|
13
|
+
sources=["doc1.md", "doc2.md"],
|
|
14
|
+
question="What are the key patterns?"
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
print(f"Cost: ${result.cost_report.total_cost:.4f}")
|
|
18
|
+
print(f"Saved: {result.cost_report.savings_percent:.1f}% vs premium-only")
|
|
19
|
+
|
|
20
|
+
Workflow Discovery:
|
|
21
|
+
Workflows can be discovered via entry points (pyproject.toml):
|
|
22
|
+
|
|
23
|
+
[project.entry-points."empathy.workflows"]
|
|
24
|
+
my-workflow = "my_package.workflows:MyWorkflow"
|
|
25
|
+
|
|
26
|
+
Then call discover_workflows() to load all registered workflows.
|
|
27
|
+
|
|
28
|
+
Copyright 2025 Smart-AI-Memory
|
|
29
|
+
Licensed under Fair Source License 0.9
|
|
30
|
+
"""
|
|
31
|
+
|
|
32
|
+
import importlib.metadata
|
|
33
|
+
import importlib.util
|
|
34
|
+
import os
|
|
35
|
+
from typing import TYPE_CHECKING
|
|
36
|
+
|
|
37
|
+
if TYPE_CHECKING:
|
|
38
|
+
from .base import BaseWorkflow
|
|
39
|
+
|
|
40
|
+
from .base import (
|
|
41
|
+
PROVIDER_MODELS,
|
|
42
|
+
BaseWorkflow,
|
|
43
|
+
CostReport,
|
|
44
|
+
ModelProvider,
|
|
45
|
+
ModelTier,
|
|
46
|
+
WorkflowResult,
|
|
47
|
+
WorkflowStage,
|
|
48
|
+
get_workflow_stats,
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
# New high-value workflows
|
|
52
|
+
from .bug_predict import BugPredictionWorkflow
|
|
53
|
+
from .code_review import CodeReviewWorkflow
|
|
54
|
+
|
|
55
|
+
# Code review crew integration (v3.1)
|
|
56
|
+
from .code_review_pipeline import CodeReviewPipeline, CodeReviewPipelineResult
|
|
57
|
+
from .config import DEFAULT_MODELS, ModelConfig, WorkflowConfig, create_example_config, get_model
|
|
58
|
+
from .dependency_check import DependencyCheckWorkflow
|
|
59
|
+
from .document_gen import DocumentGenerationWorkflow
|
|
60
|
+
from .documentation_orchestrator import DocumentationOrchestrator, OrchestratorResult
|
|
61
|
+
from .health_check import HealthCheckWorkflow
|
|
62
|
+
|
|
63
|
+
# Keyboard Conductor (v3.6) - keyboard shortcut generation
|
|
64
|
+
from .keyboard_shortcuts import KeyboardShortcutWorkflow
|
|
65
|
+
from .manage_documentation import ManageDocumentationCrew, ManageDocumentationCrewResult
|
|
66
|
+
from .perf_audit import PerformanceAuditWorkflow
|
|
67
|
+
from .pr_review import PRReviewResult, PRReviewWorkflow
|
|
68
|
+
from .refactor_plan import RefactorPlanWorkflow
|
|
69
|
+
from .release_prep import ReleasePreparationWorkflow
|
|
70
|
+
from .research_synthesis import ResearchSynthesisWorkflow
|
|
71
|
+
|
|
72
|
+
# Security crew integration (v3.0)
|
|
73
|
+
from .secure_release import SecureReleasePipeline, SecureReleaseResult
|
|
74
|
+
from .security_audit import SecurityAuditWorkflow
|
|
75
|
+
from .step_config import WorkflowStepConfig, steps_from_tier_map, validate_step_config
|
|
76
|
+
|
|
77
|
+
# User-generated workflows
|
|
78
|
+
from .test5 import Test5Workflow
|
|
79
|
+
from .test_gen import TestGenerationWorkflow
|
|
80
|
+
|
|
81
|
+
# Re-export CLI commands from workflow_commands.py
|
|
82
|
+
_parent_dir = os.path.dirname(os.path.dirname(__file__))
|
|
83
|
+
_workflows_module_path = os.path.join(_parent_dir, "workflow_commands.py")
|
|
84
|
+
|
|
85
|
+
# Initialize to None for type checking
|
|
86
|
+
cmd_morning = None
|
|
87
|
+
cmd_ship = None
|
|
88
|
+
cmd_fix_all = None
|
|
89
|
+
cmd_learn = None
|
|
90
|
+
|
|
91
|
+
if os.path.exists(_workflows_module_path):
|
|
92
|
+
_spec = importlib.util.spec_from_file_location("_workflows_cli", _workflows_module_path)
|
|
93
|
+
if _spec is not None and _spec.loader is not None:
|
|
94
|
+
_workflows_cli = importlib.util.module_from_spec(_spec)
|
|
95
|
+
_spec.loader.exec_module(_workflows_cli)
|
|
96
|
+
|
|
97
|
+
# Re-export CLI commands
|
|
98
|
+
cmd_morning = _workflows_cli.cmd_morning
|
|
99
|
+
cmd_ship = _workflows_cli.cmd_ship
|
|
100
|
+
cmd_fix_all = _workflows_cli.cmd_fix_all
|
|
101
|
+
cmd_learn = _workflows_cli.cmd_learn
|
|
102
|
+
|
|
103
|
+
# Default workflow registry (statically defined for backwards compatibility)
|
|
104
|
+
# Note: Some entries are composite pipelines, not direct BaseWorkflow subclasses
|
|
105
|
+
_DEFAULT_WORKFLOWS: dict[str, type] = {
|
|
106
|
+
# Core workflows
|
|
107
|
+
"code-review": CodeReviewWorkflow,
|
|
108
|
+
"doc-gen": DocumentGenerationWorkflow,
|
|
109
|
+
# Analysis workflows
|
|
110
|
+
"bug-predict": BugPredictionWorkflow,
|
|
111
|
+
"security-audit": SecurityAuditWorkflow,
|
|
112
|
+
"perf-audit": PerformanceAuditWorkflow,
|
|
113
|
+
# Generation workflows
|
|
114
|
+
"test-gen": TestGenerationWorkflow, # Enabled by default for test coverage
|
|
115
|
+
"refactor-plan": RefactorPlanWorkflow,
|
|
116
|
+
# Operational workflows
|
|
117
|
+
"dependency-check": DependencyCheckWorkflow,
|
|
118
|
+
"release-prep": ReleasePreparationWorkflow,
|
|
119
|
+
# Composite security pipeline (v3.0)
|
|
120
|
+
"secure-release": SecureReleasePipeline,
|
|
121
|
+
# Code review crew integration (v3.1)
|
|
122
|
+
"pro-review": CodeReviewPipeline,
|
|
123
|
+
"pr-review": PRReviewWorkflow,
|
|
124
|
+
# Health check crew integration (v3.1)
|
|
125
|
+
"health-check": HealthCheckWorkflow,
|
|
126
|
+
# Documentation management (v3.5)
|
|
127
|
+
"doc-orchestrator": DocumentationOrchestrator,
|
|
128
|
+
"manage-docs": ManageDocumentationCrew,
|
|
129
|
+
# Keyboard Conductor (v3.6) - keyboard shortcut generation
|
|
130
|
+
"keyboard-shortcuts": KeyboardShortcutWorkflow,
|
|
131
|
+
# User-generated workflows
|
|
132
|
+
"test5": Test5Workflow,
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
# Opt-in workflows - not included by default, must be explicitly enabled
|
|
136
|
+
# Currently empty - all workflows are enabled by default
|
|
137
|
+
# Use disabled_workflows in config to turn off specific workflows
|
|
138
|
+
_OPT_IN_WORKFLOWS: dict[str, type] = {}
|
|
139
|
+
|
|
140
|
+
# Workflow registry populated at module load
|
|
141
|
+
WORKFLOW_REGISTRY: dict[str, type[BaseWorkflow]] = {}
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
def discover_workflows(
|
|
145
|
+
include_defaults: bool = True,
|
|
146
|
+
config: "WorkflowConfig | None" = None,
|
|
147
|
+
) -> dict[str, type[BaseWorkflow]]:
|
|
148
|
+
"""Discover workflows via entry points and config.
|
|
149
|
+
|
|
150
|
+
This function loads workflows registered as entry points under the
|
|
151
|
+
'empathy.workflows' group. This allows third-party packages to register
|
|
152
|
+
custom workflows that integrate with the Empathy Framework.
|
|
153
|
+
|
|
154
|
+
Workflow availability is controlled by:
|
|
155
|
+
1. Default workflows (always included unless disabled)
|
|
156
|
+
2. Opt-in workflows (test-gen) - must be explicitly enabled OR compliance_mode=hipaa
|
|
157
|
+
3. enabled_workflows config - explicitly enable specific workflows
|
|
158
|
+
4. disabled_workflows config - explicitly disable specific workflows
|
|
159
|
+
5. Entry point discovery - third-party workflows
|
|
160
|
+
|
|
161
|
+
Args:
|
|
162
|
+
include_defaults: Whether to include default built-in workflows
|
|
163
|
+
config: Optional WorkflowConfig for enabled/disabled workflows
|
|
164
|
+
|
|
165
|
+
Returns:
|
|
166
|
+
Dictionary mapping workflow names to workflow classes
|
|
167
|
+
|
|
168
|
+
Example:
|
|
169
|
+
# In your pyproject.toml:
|
|
170
|
+
[project.entry-points."empathy.workflows"]
|
|
171
|
+
my-workflow = "my_package.workflows:MyCustomWorkflow"
|
|
172
|
+
|
|
173
|
+
# In your code:
|
|
174
|
+
from empathy_os.workflows import discover_workflows
|
|
175
|
+
workflows = discover_workflows()
|
|
176
|
+
MyWorkflow = workflows.get("my-workflow")
|
|
177
|
+
|
|
178
|
+
# With HIPAA mode (enables test-gen):
|
|
179
|
+
config = WorkflowConfig.load() # compliance_mode: hipaa
|
|
180
|
+
workflows = discover_workflows(config=config)
|
|
181
|
+
|
|
182
|
+
"""
|
|
183
|
+
discovered: dict[str, type[BaseWorkflow]] = {}
|
|
184
|
+
|
|
185
|
+
# Include default workflows if requested
|
|
186
|
+
if include_defaults:
|
|
187
|
+
discovered.update(_DEFAULT_WORKFLOWS)
|
|
188
|
+
|
|
189
|
+
# Add opt-in workflows based on config
|
|
190
|
+
if config is not None:
|
|
191
|
+
# HIPAA mode auto-enables healthcare workflows
|
|
192
|
+
if config.is_hipaa_mode():
|
|
193
|
+
discovered.update(_OPT_IN_WORKFLOWS)
|
|
194
|
+
|
|
195
|
+
# Explicitly enabled workflows
|
|
196
|
+
for workflow_name in config.enabled_workflows:
|
|
197
|
+
if workflow_name in _OPT_IN_WORKFLOWS:
|
|
198
|
+
discovered[workflow_name] = _OPT_IN_WORKFLOWS[workflow_name]
|
|
199
|
+
|
|
200
|
+
# Explicitly disabled workflows
|
|
201
|
+
for workflow_name in config.disabled_workflows:
|
|
202
|
+
discovered.pop(workflow_name, None)
|
|
203
|
+
|
|
204
|
+
# Discover via entry points
|
|
205
|
+
try:
|
|
206
|
+
eps = importlib.metadata.entry_points(group="empathy.workflows")
|
|
207
|
+
for ep in eps:
|
|
208
|
+
try:
|
|
209
|
+
workflow_cls = ep.load()
|
|
210
|
+
# Validate it's a proper workflow class
|
|
211
|
+
if isinstance(workflow_cls, type) and hasattr(workflow_cls, "execute"):
|
|
212
|
+
# Check if disabled in config
|
|
213
|
+
if config is None or ep.name not in config.disabled_workflows:
|
|
214
|
+
discovered[ep.name] = workflow_cls
|
|
215
|
+
except Exception:
|
|
216
|
+
# Skip invalid entry points silently
|
|
217
|
+
pass
|
|
218
|
+
except Exception:
|
|
219
|
+
# If entry point discovery fails, just use defaults
|
|
220
|
+
pass
|
|
221
|
+
|
|
222
|
+
return discovered
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
def refresh_workflow_registry(config: "WorkflowConfig | None" = None) -> None:
|
|
226
|
+
"""Refresh the global WORKFLOW_REGISTRY by re-discovering all workflows.
|
|
227
|
+
|
|
228
|
+
Call this after installing new packages that register workflows,
|
|
229
|
+
or after changing the WorkflowConfig (e.g., enabling HIPAA mode).
|
|
230
|
+
|
|
231
|
+
Args:
|
|
232
|
+
config: Optional WorkflowConfig for enabled/disabled workflows
|
|
233
|
+
|
|
234
|
+
"""
|
|
235
|
+
global WORKFLOW_REGISTRY
|
|
236
|
+
WORKFLOW_REGISTRY.clear()
|
|
237
|
+
WORKFLOW_REGISTRY.update(discover_workflows(config=config))
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
def get_opt_in_workflows() -> dict[str, type]:
|
|
241
|
+
"""Get the list of opt-in workflows that require explicit enabling.
|
|
242
|
+
|
|
243
|
+
Returns:
|
|
244
|
+
Dictionary of workflow name to class for opt-in workflows
|
|
245
|
+
|
|
246
|
+
"""
|
|
247
|
+
return dict(_OPT_IN_WORKFLOWS)
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
# Initialize registry on module load
|
|
251
|
+
WORKFLOW_REGISTRY.update(discover_workflows())
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
def get_workflow(name: str) -> type[BaseWorkflow]:
|
|
255
|
+
"""Get a workflow class by name.
|
|
256
|
+
|
|
257
|
+
Args:
|
|
258
|
+
name: Workflow name (e.g., "research", "code-review", "doc-gen")
|
|
259
|
+
|
|
260
|
+
Returns:
|
|
261
|
+
Workflow class
|
|
262
|
+
|
|
263
|
+
Raises:
|
|
264
|
+
KeyError: If workflow not found
|
|
265
|
+
|
|
266
|
+
"""
|
|
267
|
+
if name not in WORKFLOW_REGISTRY:
|
|
268
|
+
available = ", ".join(WORKFLOW_REGISTRY.keys())
|
|
269
|
+
raise KeyError(f"Unknown workflow: {name}. Available: {available}")
|
|
270
|
+
return WORKFLOW_REGISTRY[name]
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
def list_workflows() -> list[dict]:
|
|
274
|
+
"""List all available workflows with descriptions.
|
|
275
|
+
|
|
276
|
+
Returns:
|
|
277
|
+
List of workflow info dicts
|
|
278
|
+
|
|
279
|
+
"""
|
|
280
|
+
workflows = []
|
|
281
|
+
for name, cls in WORKFLOW_REGISTRY.items():
|
|
282
|
+
# Handle both BaseWorkflow subclasses and composite pipelines
|
|
283
|
+
stages = getattr(cls, "stages", [])
|
|
284
|
+
tier_map = getattr(cls, "tier_map", {})
|
|
285
|
+
description = getattr(cls, "description", "No description")
|
|
286
|
+
|
|
287
|
+
workflows.append(
|
|
288
|
+
{
|
|
289
|
+
"name": name,
|
|
290
|
+
"class": cls.__name__,
|
|
291
|
+
"description": description,
|
|
292
|
+
"stages": stages,
|
|
293
|
+
"tier_map": {k: v.value for k, v in tier_map.items()} if tier_map else {},
|
|
294
|
+
},
|
|
295
|
+
)
|
|
296
|
+
return workflows
|
|
297
|
+
|
|
298
|
+
|
|
299
|
+
__all__ = [
|
|
300
|
+
"DEFAULT_MODELS",
|
|
301
|
+
"PROVIDER_MODELS",
|
|
302
|
+
# Registry and discovery
|
|
303
|
+
"WORKFLOW_REGISTRY",
|
|
304
|
+
# Base classes
|
|
305
|
+
"BaseWorkflow",
|
|
306
|
+
# New high-value workflows
|
|
307
|
+
"BugPredictionWorkflow",
|
|
308
|
+
# Code review crew integration (v3.1)
|
|
309
|
+
"CodeReviewPipeline",
|
|
310
|
+
"CodeReviewPipelineResult",
|
|
311
|
+
"CodeReviewWorkflow",
|
|
312
|
+
"CostReport",
|
|
313
|
+
"DependencyCheckWorkflow",
|
|
314
|
+
"DocumentGenerationWorkflow",
|
|
315
|
+
# Documentation management (v3.5)
|
|
316
|
+
"DocumentationOrchestrator",
|
|
317
|
+
# Health check crew integration (v3.1)
|
|
318
|
+
"HealthCheckWorkflow",
|
|
319
|
+
# Keyboard Conductor (v3.6)
|
|
320
|
+
"KeyboardShortcutWorkflow",
|
|
321
|
+
"ManageDocumentationCrew",
|
|
322
|
+
"ManageDocumentationCrewResult",
|
|
323
|
+
"ModelConfig",
|
|
324
|
+
"ModelProvider",
|
|
325
|
+
"ModelTier",
|
|
326
|
+
"OrchestratorResult",
|
|
327
|
+
"PRReviewResult",
|
|
328
|
+
"PRReviewWorkflow",
|
|
329
|
+
"PerformanceAuditWorkflow",
|
|
330
|
+
"RefactorPlanWorkflow",
|
|
331
|
+
"ReleasePreparationWorkflow",
|
|
332
|
+
# Workflow implementations
|
|
333
|
+
"ResearchSynthesisWorkflow",
|
|
334
|
+
# Security crew integration (v3.0)
|
|
335
|
+
"SecureReleasePipeline",
|
|
336
|
+
"SecureReleaseResult",
|
|
337
|
+
"SecurityAuditWorkflow",
|
|
338
|
+
"TestGenerationWorkflow",
|
|
339
|
+
# Configuration
|
|
340
|
+
"WorkflowConfig",
|
|
341
|
+
"WorkflowResult",
|
|
342
|
+
"WorkflowStage",
|
|
343
|
+
# Step configuration (new)
|
|
344
|
+
"WorkflowStepConfig",
|
|
345
|
+
"cmd_fix_all",
|
|
346
|
+
"cmd_learn",
|
|
347
|
+
# CLI commands (re-exported from workflow_commands.py)
|
|
348
|
+
"cmd_morning",
|
|
349
|
+
"cmd_ship",
|
|
350
|
+
"create_example_config",
|
|
351
|
+
"discover_workflows",
|
|
352
|
+
"get_model",
|
|
353
|
+
"get_workflow",
|
|
354
|
+
# Stats for dashboard
|
|
355
|
+
"get_workflow_stats",
|
|
356
|
+
"list_workflows",
|
|
357
|
+
"refresh_workflow_registry",
|
|
358
|
+
"steps_from_tier_map",
|
|
359
|
+
"validate_step_config",
|
|
360
|
+
]
|