empathy-framework 3.2.3__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 +11 -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 +22 -25
- 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.2.3.dist-info → empathy_framework-3.8.2.dist-info}/METADATA +513 -58
- empathy_framework-3.8.2.dist-info/RECORD +333 -0
- empathy_framework-3.8.2.dist-info/entry_points.txt +22 -0
- {empathy_framework-3.2.3.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 +177 -22
- 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 +51 -49
- empathy_llm_toolkit/git_pattern_extractor.py +16 -12
- 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 +13 -11
- 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 +18 -20
- empathy_llm_toolkit/state.py +20 -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 +76 -77
- empathy_os/adaptive/__init__.py +13 -0
- empathy_os/adaptive/task_complexity.py +127 -0
- empathy_os/{monitoring.py → agent_monitoring.py} +27 -27
- 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 +515 -109
- empathy_os/cli_unified.py +189 -42
- empathy_os/config/__init__.py +63 -0
- empathy_os/config/xml_config.py +239 -0
- empathy_os/config.py +87 -36
- empathy_os/coordination.py +48 -54
- empathy_os/core.py +90 -99
- empathy_os/cost_tracker.py +20 -23
- empathy_os/dashboard/__init__.py +15 -0
- empathy_os/dashboard/server.py +743 -0
- empathy_os/discovery.py +9 -11
- empathy_os/emergence.py +20 -21
- empathy_os/exceptions.py +18 -30
- empathy_os/feedback_loops.py +27 -30
- empathy_os/levels.py +31 -34
- empathy_os/leverage_points.py +27 -28
- empathy_os/logging_config.py +11 -12
- 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 +29 -28
- empathy_os/persistence.py +30 -34
- 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 +53 -56
- 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 +12 -11
- empathy_os/trust/__init__.py +28 -0
- empathy_os/trust/circuit_breaker.py +579 -0
- empathy_os/trust_building.py +44 -36
- 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} +123 -31
- 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 +35 -26
- 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-3.2.3.dist-info/RECORD +0 -104
- empathy_framework-3.2.3.dist-info/entry_points.txt +0 -7
- empathy_llm_toolkit/htmlcov/status.json +0 -1
- empathy_llm_toolkit/security/htmlcov/status.json +0 -1
- {empathy_framework-3.2.3.dist-info → empathy_framework-3.8.2.dist-info}/WHEEL +0 -0
- {empathy_framework-3.2.3.dist-info → empathy_framework-3.8.2.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
"""Testing Wizard - Level 4 Anticipatory Empathy
|
|
2
|
+
|
|
3
|
+
Alerts developers to testing bottlenecks before they become critical.
|
|
4
|
+
|
|
5
|
+
In our experience developing the Empathy Framework across multiple projects,
|
|
6
|
+
this wizard identified testing scalability issues that would have surfaced
|
|
7
|
+
weeks later, enabling us to implement automation frameworks proactively.
|
|
8
|
+
|
|
9
|
+
Copyright 2025 Smart AI Memory, LLC
|
|
10
|
+
Licensed under Fair Source 0.9
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
import os
|
|
14
|
+
import sys
|
|
15
|
+
from typing import Any
|
|
16
|
+
|
|
17
|
+
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "..", "src"))
|
|
18
|
+
|
|
19
|
+
from empathy_os.plugins import BaseWizard
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class TestingWizard(BaseWizard):
|
|
23
|
+
"""Wizard that analyzes testing patterns and alerts to bottlenecks.
|
|
24
|
+
|
|
25
|
+
Level 4 Anticipatory: Detects when testing burden will become
|
|
26
|
+
unsustainable based on growth trajectory, and suggests automation
|
|
27
|
+
frameworks before the crisis hits.
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
def __init__(self):
|
|
31
|
+
super().__init__(
|
|
32
|
+
name="Testing Strategy Wizard",
|
|
33
|
+
domain="software",
|
|
34
|
+
empathy_level=4, # Anticipatory
|
|
35
|
+
category="quality_assurance",
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
def get_required_context(self) -> list[str]:
|
|
39
|
+
"""Required context for testing analysis"""
|
|
40
|
+
return [
|
|
41
|
+
"project_path", # Path to project
|
|
42
|
+
"test_files", # List of test files
|
|
43
|
+
"test_framework", # pytest, jest, junit, etc.
|
|
44
|
+
"recent_commits", # Optional: commit history
|
|
45
|
+
"team_size", # Optional: for growth analysis
|
|
46
|
+
]
|
|
47
|
+
|
|
48
|
+
async def analyze(self, context: dict[str, Any]) -> dict[str, Any]:
|
|
49
|
+
"""Analyze testing patterns and predict bottlenecks.
|
|
50
|
+
|
|
51
|
+
Args:
|
|
52
|
+
context: Must contain fields from get_required_context()
|
|
53
|
+
|
|
54
|
+
Returns:
|
|
55
|
+
Dictionary with:
|
|
56
|
+
- issues: Current testing problems
|
|
57
|
+
- predictions: Future bottlenecks (Level 4)
|
|
58
|
+
- recommendations: Actionable steps
|
|
59
|
+
- patterns: Detected patterns for pattern library
|
|
60
|
+
- confidence: Analysis confidence (0.0-1.0)
|
|
61
|
+
|
|
62
|
+
"""
|
|
63
|
+
# Validate context
|
|
64
|
+
self.validate_context(context)
|
|
65
|
+
|
|
66
|
+
# Extract context
|
|
67
|
+
test_files = context["test_files"]
|
|
68
|
+
test_framework = context.get("test_framework", "unknown")
|
|
69
|
+
team_size = context.get("team_size", 1)
|
|
70
|
+
|
|
71
|
+
# Analyze current state
|
|
72
|
+
issues = await self._analyze_current_tests(test_files, test_framework)
|
|
73
|
+
|
|
74
|
+
# Level 4: Predict future bottlenecks
|
|
75
|
+
predictions = await self._predict_bottlenecks(test_files, team_size, context)
|
|
76
|
+
|
|
77
|
+
# Generate recommendations
|
|
78
|
+
recommendations = self._generate_recommendations(issues, predictions)
|
|
79
|
+
|
|
80
|
+
# Extract patterns for cross-domain learning
|
|
81
|
+
patterns = self._extract_patterns(test_files, issues, predictions)
|
|
82
|
+
|
|
83
|
+
# Calculate confidence
|
|
84
|
+
confidence = self._calculate_confidence(context)
|
|
85
|
+
|
|
86
|
+
return {
|
|
87
|
+
"issues": issues,
|
|
88
|
+
"predictions": predictions,
|
|
89
|
+
"recommendations": recommendations,
|
|
90
|
+
"patterns": patterns,
|
|
91
|
+
"confidence": confidence,
|
|
92
|
+
"metadata": {
|
|
93
|
+
"wizard": self.name,
|
|
94
|
+
"empathy_level": self.empathy_level,
|
|
95
|
+
"test_count": len(test_files),
|
|
96
|
+
"framework": test_framework,
|
|
97
|
+
},
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
async def _analyze_current_tests(
|
|
101
|
+
self,
|
|
102
|
+
test_files: list[str],
|
|
103
|
+
framework: str,
|
|
104
|
+
) -> list[dict[str, Any]]:
|
|
105
|
+
"""Analyze current testing state (Level 1-3).
|
|
106
|
+
|
|
107
|
+
Returns list of current issues.
|
|
108
|
+
"""
|
|
109
|
+
issues = []
|
|
110
|
+
|
|
111
|
+
# Check test coverage
|
|
112
|
+
if len(test_files) < 5:
|
|
113
|
+
issues.append(
|
|
114
|
+
{
|
|
115
|
+
"severity": "warning",
|
|
116
|
+
"type": "low_test_coverage",
|
|
117
|
+
"message": "Low test count - consider adding more tests",
|
|
118
|
+
"impact": "medium",
|
|
119
|
+
},
|
|
120
|
+
)
|
|
121
|
+
|
|
122
|
+
# Check for test organization
|
|
123
|
+
if not self._has_test_structure(test_files):
|
|
124
|
+
issues.append(
|
|
125
|
+
{
|
|
126
|
+
"severity": "info",
|
|
127
|
+
"type": "test_organization",
|
|
128
|
+
"message": "Tests lack clear organization structure",
|
|
129
|
+
"impact": "low",
|
|
130
|
+
},
|
|
131
|
+
)
|
|
132
|
+
|
|
133
|
+
return issues
|
|
134
|
+
|
|
135
|
+
async def _predict_bottlenecks(
|
|
136
|
+
self,
|
|
137
|
+
test_files: list[str],
|
|
138
|
+
team_size: int,
|
|
139
|
+
context: dict[str, Any],
|
|
140
|
+
) -> list[dict[str, Any]]:
|
|
141
|
+
"""Level 4 Anticipatory: Predict future testing bottlenecks.
|
|
142
|
+
|
|
143
|
+
Based on our experience: manual testing becomes unsustainable
|
|
144
|
+
when test count exceeds ~25 or execution time > 15 minutes.
|
|
145
|
+
"""
|
|
146
|
+
predictions = []
|
|
147
|
+
|
|
148
|
+
test_count = len(test_files)
|
|
149
|
+
|
|
150
|
+
# Pattern from experience: Testing burden grows with codebase
|
|
151
|
+
if test_count > 15:
|
|
152
|
+
predictions.append(
|
|
153
|
+
{
|
|
154
|
+
"type": "testing_bottleneck",
|
|
155
|
+
"alert": (
|
|
156
|
+
"Testing burden approaching critical threshold. "
|
|
157
|
+
"In our experience, manual testing becomes unsustainable "
|
|
158
|
+
"around 25+ tests. Consider implementing test automation "
|
|
159
|
+
"framework before this becomes blocking."
|
|
160
|
+
),
|
|
161
|
+
"probability": "medium-high",
|
|
162
|
+
"impact": "high",
|
|
163
|
+
"prevention_steps": [
|
|
164
|
+
"Design test automation framework",
|
|
165
|
+
"Implement shared test fixtures",
|
|
166
|
+
"Create parameterized test generation",
|
|
167
|
+
"Set up CI/CD integration",
|
|
168
|
+
],
|
|
169
|
+
"reasoning": (
|
|
170
|
+
"Test count trajectory suggests manual testing overhead "
|
|
171
|
+
"will become bottleneck. Proactive automation prevents "
|
|
172
|
+
"future crisis."
|
|
173
|
+
),
|
|
174
|
+
},
|
|
175
|
+
)
|
|
176
|
+
|
|
177
|
+
# Check for test duplication patterns
|
|
178
|
+
if self._detect_test_duplication(test_files):
|
|
179
|
+
predictions.append(
|
|
180
|
+
{
|
|
181
|
+
"type": "maintenance_burden",
|
|
182
|
+
"alert": (
|
|
183
|
+
"Duplicated test patterns detected. These typically lead "
|
|
184
|
+
"to maintenance burden as codebase evolves."
|
|
185
|
+
),
|
|
186
|
+
"probability": "high",
|
|
187
|
+
"impact": "medium",
|
|
188
|
+
"prevention_steps": [
|
|
189
|
+
"Extract shared test utilities",
|
|
190
|
+
"Create test base classes",
|
|
191
|
+
"Implement fixture library",
|
|
192
|
+
],
|
|
193
|
+
},
|
|
194
|
+
)
|
|
195
|
+
|
|
196
|
+
return predictions
|
|
197
|
+
|
|
198
|
+
def _generate_recommendations(self, issues: list[dict], predictions: list[dict]) -> list[str]:
|
|
199
|
+
"""Generate actionable recommendations"""
|
|
200
|
+
recommendations = []
|
|
201
|
+
|
|
202
|
+
# Address high-impact predictions first
|
|
203
|
+
for prediction in predictions:
|
|
204
|
+
if prediction.get("impact") == "high":
|
|
205
|
+
recommendations.append(f"[ALERT] {prediction['alert']}")
|
|
206
|
+
recommendations.extend(f" - {step}" for step in prediction["prevention_steps"])
|
|
207
|
+
|
|
208
|
+
# Address current issues
|
|
209
|
+
for issue in issues:
|
|
210
|
+
if issue.get("severity") == "warning":
|
|
211
|
+
recommendations.append(f"[WARNING] {issue['message']}")
|
|
212
|
+
|
|
213
|
+
return recommendations
|
|
214
|
+
|
|
215
|
+
def _extract_patterns(
|
|
216
|
+
self,
|
|
217
|
+
test_files: list[str],
|
|
218
|
+
issues: list[dict],
|
|
219
|
+
predictions: list[dict],
|
|
220
|
+
) -> list[dict[str, Any]]:
|
|
221
|
+
"""Extract patterns for cross-domain learning (Level 5).
|
|
222
|
+
|
|
223
|
+
These patterns can be applied across software, healthcare, finance, etc.
|
|
224
|
+
"""
|
|
225
|
+
patterns = []
|
|
226
|
+
|
|
227
|
+
# Pattern: Growth trajectory alerts
|
|
228
|
+
if predictions:
|
|
229
|
+
patterns.append(
|
|
230
|
+
{
|
|
231
|
+
"pattern_type": "growth_trajectory_alert",
|
|
232
|
+
"description": (
|
|
233
|
+
"When system component count follows growth trajectory, "
|
|
234
|
+
"alert before threshold is reached rather than after"
|
|
235
|
+
),
|
|
236
|
+
"domain_agnostic": True,
|
|
237
|
+
"applicable_to": [
|
|
238
|
+
"software testing",
|
|
239
|
+
"healthcare documentation",
|
|
240
|
+
"compliance tracking",
|
|
241
|
+
"any growing system",
|
|
242
|
+
],
|
|
243
|
+
},
|
|
244
|
+
)
|
|
245
|
+
|
|
246
|
+
return patterns
|
|
247
|
+
|
|
248
|
+
def _calculate_confidence(self, context: dict[str, Any]) -> float:
|
|
249
|
+
"""Calculate confidence in analysis.
|
|
250
|
+
|
|
251
|
+
Higher confidence when we have more context (team size, history, etc.)
|
|
252
|
+
"""
|
|
253
|
+
confidence = 0.7 # Base confidence
|
|
254
|
+
|
|
255
|
+
if "team_size" in context:
|
|
256
|
+
confidence += 0.1
|
|
257
|
+
|
|
258
|
+
if "recent_commits" in context:
|
|
259
|
+
confidence += 0.1
|
|
260
|
+
|
|
261
|
+
return min(1.0, confidence)
|
|
262
|
+
|
|
263
|
+
def _has_test_structure(self, test_files: list[str]) -> bool:
|
|
264
|
+
"""Check if tests follow organizational structure"""
|
|
265
|
+
# Simple heuristic: check for directories
|
|
266
|
+
return any("/" in f for f in test_files)
|
|
267
|
+
|
|
268
|
+
def _detect_test_duplication(self, test_files: list[str]) -> bool:
|
|
269
|
+
"""Detect if tests have duplication patterns"""
|
|
270
|
+
# Simplified detection - in real implementation, analyze AST
|
|
271
|
+
# For now, heuristic based on similar naming
|
|
272
|
+
names = [f.split("/")[-1] for f in test_files]
|
|
273
|
+
unique_names = set(names)
|
|
274
|
+
return len(unique_names) < len(names) * 0.8 # >20% duplication
|