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,194 @@
|
|
|
1
|
+
"""Technology/IT Wizard - System Security Compliant AI Assistant
|
|
2
|
+
|
|
3
|
+
Specialized wizard for IT and technology operations with system security,
|
|
4
|
+
infrastructure data protection, and comprehensive audit logging.
|
|
5
|
+
|
|
6
|
+
Key Features:
|
|
7
|
+
- System and infrastructure data protection
|
|
8
|
+
- Secrets detection (API keys, credentials, tokens)
|
|
9
|
+
- Security log analysis
|
|
10
|
+
- Comprehensive audit trail
|
|
11
|
+
- DevOps and infrastructure security
|
|
12
|
+
- Automatic classification as INTERNAL
|
|
13
|
+
|
|
14
|
+
Copyright 2025 Smart AI Memory, LLC
|
|
15
|
+
Licensed under Fair Source 0.9
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
import logging
|
|
19
|
+
|
|
20
|
+
from empathy_llm_toolkit import EmpathyLLM
|
|
21
|
+
|
|
22
|
+
from .base_wizard import BaseWizard, WizardConfig
|
|
23
|
+
|
|
24
|
+
logger = logging.getLogger(__name__)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
# Technology/IT PII patterns
|
|
28
|
+
TECHNOLOGY_PII_PATTERNS = [
|
|
29
|
+
# Standard PII
|
|
30
|
+
"email",
|
|
31
|
+
"phone",
|
|
32
|
+
"ip_address",
|
|
33
|
+
# Technology-specific
|
|
34
|
+
"api_key",
|
|
35
|
+
"access_token",
|
|
36
|
+
"ssh_key",
|
|
37
|
+
"database_credential",
|
|
38
|
+
]
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
class TechnologyWizard(BaseWizard):
|
|
42
|
+
"""System security compliant technology and IT AI assistant
|
|
43
|
+
|
|
44
|
+
Implements data protection for IT operations:
|
|
45
|
+
1. Infrastructure data detection and protection
|
|
46
|
+
2. Enhanced secrets detection (API keys, credentials)
|
|
47
|
+
3. Encryption for sensitive system data
|
|
48
|
+
4. Comprehensive audit logging
|
|
49
|
+
5. 1-year retention
|
|
50
|
+
6. Access control enforcement
|
|
51
|
+
|
|
52
|
+
Example:
|
|
53
|
+
>>> from empathy_llm_toolkit import EmpathyLLM
|
|
54
|
+
>>> from empathy_llm_toolkit.wizards import TechnologyWizard
|
|
55
|
+
>>>
|
|
56
|
+
>>> llm = EmpathyLLM(
|
|
57
|
+
... provider="anthropic",
|
|
58
|
+
... api_key=os.getenv("ANTHROPIC_API_KEY"),
|
|
59
|
+
... enable_security=True,
|
|
60
|
+
... )
|
|
61
|
+
>>>
|
|
62
|
+
>>> wizard = TechnologyWizard(llm)
|
|
63
|
+
>>>
|
|
64
|
+
>>> result = await wizard.process(
|
|
65
|
+
... user_input="Help me troubleshoot this infrastructure issue",
|
|
66
|
+
... user_id="sysadmin@company.com"
|
|
67
|
+
... )
|
|
68
|
+
|
|
69
|
+
"""
|
|
70
|
+
|
|
71
|
+
def __init__(
|
|
72
|
+
self,
|
|
73
|
+
llm: EmpathyLLM,
|
|
74
|
+
custom_pii_patterns: list[str] | None = None,
|
|
75
|
+
):
|
|
76
|
+
"""Initialize technology/IT wizard
|
|
77
|
+
|
|
78
|
+
Args:
|
|
79
|
+
llm: EmpathyLLM instance (security should be enabled)
|
|
80
|
+
custom_pii_patterns: Additional organization-specific patterns
|
|
81
|
+
|
|
82
|
+
"""
|
|
83
|
+
pii_patterns = TECHNOLOGY_PII_PATTERNS.copy()
|
|
84
|
+
|
|
85
|
+
if custom_pii_patterns:
|
|
86
|
+
pii_patterns.extend(custom_pii_patterns)
|
|
87
|
+
|
|
88
|
+
config = WizardConfig(
|
|
89
|
+
name="Technology & IT Assistant",
|
|
90
|
+
description="System security compliant AI assistant for IT operations",
|
|
91
|
+
domain="technology",
|
|
92
|
+
default_empathy_level=3, # Proactive
|
|
93
|
+
enable_security=True,
|
|
94
|
+
pii_patterns=pii_patterns,
|
|
95
|
+
enable_secrets_detection=True,
|
|
96
|
+
block_on_secrets=True, # CRITICAL for IT security
|
|
97
|
+
audit_all_access=True,
|
|
98
|
+
retention_days=365, # 1 year for system logs
|
|
99
|
+
default_classification="INTERNAL",
|
|
100
|
+
auto_classify=True,
|
|
101
|
+
)
|
|
102
|
+
|
|
103
|
+
super().__init__(llm, config)
|
|
104
|
+
|
|
105
|
+
if not llm.enable_security:
|
|
106
|
+
logger.warning(
|
|
107
|
+
"TechnologyWizard initialized with security DISABLED. "
|
|
108
|
+
"IT security requires enable_security=True in EmpathyLLM.",
|
|
109
|
+
)
|
|
110
|
+
|
|
111
|
+
logger.info(
|
|
112
|
+
f"TechnologyWizard initialized: {len(pii_patterns)} PII patterns, "
|
|
113
|
+
f"empathy level={config.default_empathy_level}, security={llm.enable_security}",
|
|
114
|
+
)
|
|
115
|
+
|
|
116
|
+
def _build_system_prompt(self, user_input: str = "") -> str:
|
|
117
|
+
"""Build technology/IT system prompt
|
|
118
|
+
|
|
119
|
+
Uses XML-enhanced prompts if enabled for improved precision
|
|
120
|
+
and reduced errors in critical IT operations.
|
|
121
|
+
"""
|
|
122
|
+
# Check if XML prompts are enabled
|
|
123
|
+
if self._is_xml_enabled():
|
|
124
|
+
# Use XML-enhanced prompt for better structure
|
|
125
|
+
return self._render_xml_prompt(
|
|
126
|
+
role="system security compliant AI technology and IT assistant for infrastructure operations",
|
|
127
|
+
goal="Assist IT professionals with secure, reliable system administration, infrastructure design, and DevOps automation",
|
|
128
|
+
instructions=[
|
|
129
|
+
"Assist IT professionals with system administration, troubleshooting, and operations",
|
|
130
|
+
"Support infrastructure design, optimization, and scalability planning",
|
|
131
|
+
"Provide security analysis, incident response guidance, and threat mitigation",
|
|
132
|
+
"Help with DevOps automation, CI/CD pipelines, and deployment strategies",
|
|
133
|
+
"Base recommendations on industry best practices (NIST, CIS, OWASP)",
|
|
134
|
+
"Acknowledge compliance requirements (SOC2, ISO 27001, PCI-DSS, GDPR)",
|
|
135
|
+
],
|
|
136
|
+
constraints=[
|
|
137
|
+
"CRITICAL: System data automatically protected - never request or display API keys, credentials, passwords, tokens",
|
|
138
|
+
"You are an IT support tool, NOT a replacement for sysadmin or security expert judgment",
|
|
139
|
+
"CANNOT make production deployment, security policy, or infrastructure decisions autonomously",
|
|
140
|
+
"Always defer to IT leadership for critical infrastructure changes",
|
|
141
|
+
"Maintain strict confidentiality of infrastructure data",
|
|
142
|
+
"System security and data protection paramount - all interactions logged for audit",
|
|
143
|
+
],
|
|
144
|
+
input_type="it_query",
|
|
145
|
+
input_payload=user_input if user_input else "[IT professional query]",
|
|
146
|
+
extra={
|
|
147
|
+
"domain": "Technology / IT Operations / DevOps / Infrastructure",
|
|
148
|
+
"empathy_level": self.config.default_empathy_level,
|
|
149
|
+
"secrets_detection_enabled": self.config.enable_secrets_detection,
|
|
150
|
+
"retention_days": self.config.retention_days,
|
|
151
|
+
},
|
|
152
|
+
)
|
|
153
|
+
else:
|
|
154
|
+
# Fallback to legacy plain text prompt
|
|
155
|
+
return """You are a system security compliant AI technology and IT assistant.
|
|
156
|
+
|
|
157
|
+
**Domain**: Technology / IT Operations / DevOps / Infrastructure
|
|
158
|
+
|
|
159
|
+
**Your Role**:
|
|
160
|
+
- Assist IT professionals with system administration and troubleshooting
|
|
161
|
+
- Support infrastructure design and optimization
|
|
162
|
+
- Help with security analysis and incident response
|
|
163
|
+
- Provide guidance on DevOps and automation
|
|
164
|
+
|
|
165
|
+
**Security**:
|
|
166
|
+
- All system information is automatically protected before you see it
|
|
167
|
+
- Never request or display API keys, credentials, passwords, or tokens
|
|
168
|
+
- Maintain strict confidentiality of infrastructure data
|
|
169
|
+
- All interactions comply with IT security policies
|
|
170
|
+
|
|
171
|
+
**Technology Guidelines**:
|
|
172
|
+
- Base recommendations on industry best practices and security standards
|
|
173
|
+
- Acknowledge compliance requirements (SOC2, ISO 27001, etc.)
|
|
174
|
+
- Provide practical technical guidance
|
|
175
|
+
- Follow DevOps and SRE principles
|
|
176
|
+
|
|
177
|
+
**Communication Style**:
|
|
178
|
+
- Technical and precise
|
|
179
|
+
- Clear and actionable
|
|
180
|
+
- Security-focused
|
|
181
|
+
- Problem-solving oriented
|
|
182
|
+
|
|
183
|
+
**Important Disclaimers**:
|
|
184
|
+
- You are an IT support tool, not a replacement for sysadmin judgment
|
|
185
|
+
- Cannot make production deployment or security policy decisions
|
|
186
|
+
- Not a substitute for qualified IT professionals and security experts
|
|
187
|
+
- Always defer to IT leadership for critical infrastructure decisions
|
|
188
|
+
|
|
189
|
+
Remember: System security and data protection are paramount. Interactions are logged.
|
|
190
|
+
"""
|
|
191
|
+
|
|
192
|
+
def get_pii_patterns(self) -> list[str]:
|
|
193
|
+
"""Get list of technology PII patterns being detected"""
|
|
194
|
+
return self.config.pii_patterns.copy()
|
empathy_os/__init__.py
CHANGED
|
@@ -1,17 +1,65 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Empathy Framework - AI-Human Collaboration Library
|
|
1
|
+
"""Empathy Framework - AI-Human Collaboration Library
|
|
3
2
|
|
|
4
3
|
A five-level maturity model for building AI systems that progress from
|
|
5
4
|
reactive responses to anticipatory problem prevention.
|
|
6
5
|
|
|
6
|
+
QUICK START:
|
|
7
|
+
from empathy_os import EmpathyOS
|
|
8
|
+
|
|
9
|
+
# Create an EmpathyOS instance
|
|
10
|
+
empathy = EmpathyOS(user_id="developer@company.com")
|
|
11
|
+
|
|
12
|
+
# Use Level 4 (Anticipatory) for predictions
|
|
13
|
+
response = empathy.level_4_anticipatory(
|
|
14
|
+
user_input="How do I optimize database queries?",
|
|
15
|
+
context={"domain": "software"},
|
|
16
|
+
history=[]
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
print(f"Response: {response['response']}")
|
|
20
|
+
print(f"Predictions: {response.get('predictions', [])}")
|
|
21
|
+
|
|
22
|
+
# Store patterns in memory
|
|
23
|
+
empathy.stash("session_context", {"topic": "database optimization"})
|
|
24
|
+
empathy.persist_pattern(
|
|
25
|
+
content="Query optimization technique",
|
|
26
|
+
pattern_type="technique"
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
MEMORY OPERATIONS:
|
|
30
|
+
from empathy_os import UnifiedMemory, Classification
|
|
31
|
+
|
|
32
|
+
# Initialize unified memory (auto-detects environment)
|
|
33
|
+
memory = UnifiedMemory(user_id="agent@company.com")
|
|
34
|
+
|
|
35
|
+
# Short-term (Redis-backed, TTL-based)
|
|
36
|
+
memory.stash("working_data", {"status": "processing"})
|
|
37
|
+
data = memory.retrieve("working_data")
|
|
38
|
+
|
|
39
|
+
# Long-term (persistent, classified)
|
|
40
|
+
result = memory.persist_pattern(
|
|
41
|
+
content="Optimization algorithm for X",
|
|
42
|
+
pattern_type="algorithm",
|
|
43
|
+
classification=Classification.INTERNAL,
|
|
44
|
+
)
|
|
45
|
+
pattern = memory.recall_pattern(result["pattern_id"])
|
|
46
|
+
|
|
47
|
+
KEY EXPORTS:
|
|
48
|
+
- EmpathyOS: Main orchestration class
|
|
49
|
+
- UnifiedMemory: Two-tier memory (short + long term)
|
|
50
|
+
- MemoryConfig, Environment: Memory configuration
|
|
51
|
+
- Classification, AccessTier: Security/access enums
|
|
52
|
+
- Level1-5 classes: Empathy level implementations
|
|
53
|
+
|
|
7
54
|
Copyright 2025 Smart AI Memory, LLC
|
|
8
55
|
Licensed under Fair Source 0.9
|
|
9
56
|
"""
|
|
10
57
|
|
|
11
|
-
__version__ = "
|
|
58
|
+
__version__ = "3.8.2"
|
|
12
59
|
__author__ = "Patrick Roebuck"
|
|
13
60
|
__email__ = "hello@deepstudy.ai"
|
|
14
61
|
|
|
62
|
+
from .agent_monitoring import AgentMetrics, AgentMonitor, TeamMetrics
|
|
15
63
|
from .config import EmpathyConfig, load_config
|
|
16
64
|
from .coordination import (
|
|
17
65
|
AgentCoordinator,
|
|
@@ -36,20 +84,14 @@ from .exceptions import (
|
|
|
36
84
|
ValidationError,
|
|
37
85
|
)
|
|
38
86
|
from .feedback_loops import FeedbackLoopDetector
|
|
39
|
-
from .levels import
|
|
40
|
-
Level1Reactive,
|
|
41
|
-
Level2Guided,
|
|
42
|
-
Level3Proactive,
|
|
43
|
-
Level4Anticipatory,
|
|
44
|
-
Level5Systems,
|
|
45
|
-
)
|
|
87
|
+
from .levels import Level1Reactive, Level2Guided, Level3Proactive, Level4Anticipatory, Level5Systems
|
|
46
88
|
from .leverage_points import LeveragePointAnalyzer
|
|
47
89
|
from .logging_config import LoggingConfig, get_logger
|
|
48
90
|
|
|
49
91
|
# Memory module (unified short-term + long-term + security)
|
|
50
|
-
from .memory import (
|
|
92
|
+
from .memory import (
|
|
51
93
|
AccessTier,
|
|
52
|
-
AgentCredentials,
|
|
94
|
+
AgentCredentials, # Memory module imports
|
|
53
95
|
AuditEvent,
|
|
54
96
|
AuditLogger,
|
|
55
97
|
Classification,
|
|
@@ -84,100 +126,99 @@ from .memory import ( # Short-term (Redis); Security - Audit; Claude Memory; Se
|
|
|
84
126
|
get_redis_config,
|
|
85
127
|
get_redis_memory,
|
|
86
128
|
)
|
|
87
|
-
from .monitoring import AgentMetrics, AgentMonitor, TeamMetrics
|
|
88
129
|
from .pattern_library import Pattern, PatternLibrary, PatternMatch
|
|
89
130
|
from .persistence import MetricsCollector, PatternPersistence, StateManager
|
|
90
131
|
from .trust_building import TrustBuildingBehaviors
|
|
91
132
|
|
|
92
133
|
__all__ = [
|
|
134
|
+
"AccessTier",
|
|
135
|
+
"AgentCoordinator",
|
|
136
|
+
"AgentCredentials",
|
|
137
|
+
"AgentMetrics",
|
|
138
|
+
# Monitoring (Multi-Agent)
|
|
139
|
+
"AgentMonitor",
|
|
140
|
+
"AgentTask",
|
|
141
|
+
"AuditEvent",
|
|
142
|
+
# Security - Audit
|
|
143
|
+
"AuditLogger",
|
|
144
|
+
"Classification",
|
|
145
|
+
"ClassificationRules",
|
|
146
|
+
# Claude Memory
|
|
147
|
+
"ClaudeMemoryConfig",
|
|
148
|
+
"ClaudeMemoryLoader",
|
|
149
|
+
"CollaborationStateError",
|
|
150
|
+
"ConfidenceThresholdError",
|
|
151
|
+
"ConflictContext",
|
|
152
|
+
# Coordination (Multi-Agent)
|
|
153
|
+
"ConflictResolver",
|
|
154
|
+
"EmergenceDetector",
|
|
155
|
+
# Configuration
|
|
156
|
+
"EmpathyConfig",
|
|
157
|
+
# Exceptions
|
|
158
|
+
"EmpathyFrameworkError",
|
|
159
|
+
"EmpathyLevelError",
|
|
93
160
|
"EmpathyOS",
|
|
94
|
-
|
|
95
|
-
"UnifiedMemory",
|
|
96
|
-
"MemoryConfig",
|
|
161
|
+
"EncryptionManager",
|
|
97
162
|
"Environment",
|
|
163
|
+
"FeedbackLoopDetector",
|
|
164
|
+
"FeedbackLoopError",
|
|
98
165
|
"Level1Reactive",
|
|
99
166
|
"Level2Guided",
|
|
100
167
|
"Level3Proactive",
|
|
101
168
|
"Level4Anticipatory",
|
|
102
169
|
"Level5Systems",
|
|
103
|
-
"FeedbackLoopDetector",
|
|
104
170
|
"LeveragePointAnalyzer",
|
|
105
|
-
"
|
|
171
|
+
"LeveragePointError",
|
|
172
|
+
"LoggingConfig",
|
|
173
|
+
"MemDocsStorage",
|
|
174
|
+
"MemoryConfig",
|
|
175
|
+
"MemoryPermissionError",
|
|
176
|
+
"MetricsCollector",
|
|
177
|
+
"PIIDetection",
|
|
178
|
+
"PIIPattern",
|
|
179
|
+
# Security - PII
|
|
180
|
+
"PIIScrubber",
|
|
181
|
+
"Pattern",
|
|
106
182
|
# Pattern Library
|
|
107
183
|
"PatternLibrary",
|
|
108
|
-
"Pattern",
|
|
109
184
|
"PatternMatch",
|
|
110
|
-
|
|
111
|
-
"
|
|
112
|
-
"ResolutionResult",
|
|
113
|
-
"ResolutionStrategy",
|
|
114
|
-
"TeamPriorities",
|
|
115
|
-
"AgentCoordinator",
|
|
116
|
-
"AgentTask",
|
|
117
|
-
"TeamSession",
|
|
118
|
-
# Monitoring (Multi-Agent)
|
|
119
|
-
"AgentMonitor",
|
|
120
|
-
"AgentMetrics",
|
|
121
|
-
"TeamMetrics",
|
|
122
|
-
# Redis Short-Term Memory
|
|
123
|
-
"RedisShortTermMemory",
|
|
124
|
-
"AccessTier",
|
|
125
|
-
"AgentCredentials",
|
|
126
|
-
"StagedPattern",
|
|
127
|
-
"ConflictContext",
|
|
128
|
-
"TTLStrategy",
|
|
129
|
-
# Redis Configuration
|
|
130
|
-
"get_redis_memory",
|
|
131
|
-
"get_redis_config",
|
|
132
|
-
"get_railway_redis",
|
|
133
|
-
"check_redis_connection",
|
|
134
|
-
# Trust
|
|
135
|
-
"TrustBuildingBehaviors",
|
|
185
|
+
"PatternMetadata",
|
|
186
|
+
"PatternNotFoundError",
|
|
136
187
|
# Persistence
|
|
137
188
|
"PatternPersistence",
|
|
138
|
-
|
|
139
|
-
"
|
|
140
|
-
|
|
141
|
-
"
|
|
142
|
-
"
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
"
|
|
146
|
-
# Exceptions
|
|
147
|
-
"EmpathyFrameworkError",
|
|
148
|
-
"ValidationError",
|
|
149
|
-
"PatternNotFoundError",
|
|
150
|
-
"TrustThresholdError",
|
|
151
|
-
"ConfidenceThresholdError",
|
|
152
|
-
"EmpathyLevelError",
|
|
153
|
-
"LeveragePointError",
|
|
154
|
-
"FeedbackLoopError",
|
|
155
|
-
"CollaborationStateError",
|
|
189
|
+
# Redis Short-Term Memory
|
|
190
|
+
"RedisShortTermMemory",
|
|
191
|
+
"ResolutionResult",
|
|
192
|
+
"ResolutionStrategy",
|
|
193
|
+
"SecretDetection",
|
|
194
|
+
"SecretType",
|
|
195
|
+
# Security - Secrets
|
|
196
|
+
"SecretsDetector",
|
|
156
197
|
# Long-term Memory
|
|
157
198
|
"SecureMemDocsIntegration",
|
|
158
|
-
"Classification",
|
|
159
|
-
"ClassificationRules",
|
|
160
|
-
"PatternMetadata",
|
|
161
199
|
"SecurePattern",
|
|
162
|
-
"MemDocsStorage",
|
|
163
|
-
"EncryptionManager",
|
|
164
200
|
"SecurityError",
|
|
165
|
-
"
|
|
166
|
-
# Claude Memory
|
|
167
|
-
"ClaudeMemoryConfig",
|
|
168
|
-
"ClaudeMemoryLoader",
|
|
169
|
-
# Security - PII
|
|
170
|
-
"PIIScrubber",
|
|
171
|
-
"PIIDetection",
|
|
172
|
-
"PIIPattern",
|
|
173
|
-
# Security - Secrets
|
|
174
|
-
"SecretsDetector",
|
|
175
|
-
"SecretDetection",
|
|
176
|
-
"SecretType",
|
|
201
|
+
"SecurityViolation",
|
|
177
202
|
"Severity",
|
|
203
|
+
"StagedPattern",
|
|
204
|
+
"StateManager",
|
|
205
|
+
"TTLStrategy",
|
|
206
|
+
"TeamMetrics",
|
|
207
|
+
"TeamPriorities",
|
|
208
|
+
"TeamSession",
|
|
209
|
+
# Trust
|
|
210
|
+
"TrustBuildingBehaviors",
|
|
211
|
+
"TrustThresholdError",
|
|
212
|
+
# Unified Memory Interface
|
|
213
|
+
"UnifiedMemory",
|
|
214
|
+
"ValidationError",
|
|
215
|
+
"check_redis_connection",
|
|
178
216
|
"detect_secrets",
|
|
179
|
-
#
|
|
180
|
-
"
|
|
181
|
-
"
|
|
182
|
-
"
|
|
217
|
+
# Logging
|
|
218
|
+
"get_logger",
|
|
219
|
+
"get_railway_redis",
|
|
220
|
+
"get_redis_config",
|
|
221
|
+
# Redis Configuration
|
|
222
|
+
"get_redis_memory",
|
|
223
|
+
"load_config",
|
|
183
224
|
]
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"""Adaptive prompting system for dynamic model and compression selection.
|
|
2
|
+
|
|
3
|
+
Copyright 2026 Smart-AI-Memory
|
|
4
|
+
Licensed under Fair Source License 0.9
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from empathy_os.adaptive.task_complexity import (
|
|
8
|
+
ComplexityScore,
|
|
9
|
+
TaskComplexity,
|
|
10
|
+
TaskComplexityScorer,
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
__all__ = ["TaskComplexity", "ComplexityScore", "TaskComplexityScorer"]
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"""Task complexity scoring for adaptive prompt selection.
|
|
2
|
+
|
|
3
|
+
Uses simple heuristics (token count, LOC) to classify tasks as
|
|
4
|
+
simple, moderate, complex, or very complex, enabling dynamic
|
|
5
|
+
model tier and compression level selection.
|
|
6
|
+
|
|
7
|
+
Copyright 2026 Smart-AI-Memory
|
|
8
|
+
Licensed under Fair Source License 0.9
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
from dataclasses import dataclass
|
|
12
|
+
from enum import Enum
|
|
13
|
+
|
|
14
|
+
try:
|
|
15
|
+
import tiktoken
|
|
16
|
+
except ImportError:
|
|
17
|
+
tiktoken = None # type: ignore[assignment]
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class TaskComplexity(Enum):
|
|
21
|
+
"""Task complexity levels for adaptive prompting."""
|
|
22
|
+
|
|
23
|
+
SIMPLE = "simple" # <100 tokens, <50 LOC
|
|
24
|
+
MODERATE = "moderate" # 100-500 tokens, 50-200 LOC
|
|
25
|
+
COMPLEX = "complex" # 500-2000 tokens, 200-1000 LOC
|
|
26
|
+
VERY_COMPLEX = "very_complex" # >2000 tokens, >1000 LOC
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
@dataclass
|
|
30
|
+
class ComplexityScore:
|
|
31
|
+
"""Task complexity scoring result.
|
|
32
|
+
|
|
33
|
+
Attributes:
|
|
34
|
+
token_count: Estimated input tokens
|
|
35
|
+
line_count: Lines of code in context
|
|
36
|
+
file_count: Number of files involved
|
|
37
|
+
complexity_level: Classified complexity
|
|
38
|
+
confidence: Confidence in classification (0-1)
|
|
39
|
+
"""
|
|
40
|
+
|
|
41
|
+
token_count: int
|
|
42
|
+
line_count: int
|
|
43
|
+
file_count: int
|
|
44
|
+
complexity_level: TaskComplexity
|
|
45
|
+
confidence: float
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
class TaskComplexityScorer:
|
|
49
|
+
"""Scores task complexity using simple heuristics.
|
|
50
|
+
|
|
51
|
+
Uses token counting (via tiktoken if available) and line counting
|
|
52
|
+
to estimate task complexity for adaptive prompt selection.
|
|
53
|
+
|
|
54
|
+
Usage:
|
|
55
|
+
scorer = TaskComplexityScorer()
|
|
56
|
+
score = scorer.score_task(
|
|
57
|
+
description="Refactor authentication module",
|
|
58
|
+
context=source_code,
|
|
59
|
+
files=["auth.py", "session.py"]
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
if score.complexity_level == TaskComplexity.VERY_COMPLEX:
|
|
63
|
+
use_premium_model()
|
|
64
|
+
"""
|
|
65
|
+
|
|
66
|
+
def __init__(self):
|
|
67
|
+
"""Initialize complexity scorer."""
|
|
68
|
+
if tiktoken:
|
|
69
|
+
self.tokenizer = tiktoken.get_encoding("cl100k_base")
|
|
70
|
+
else:
|
|
71
|
+
self.tokenizer = None
|
|
72
|
+
|
|
73
|
+
def score_task(
|
|
74
|
+
self,
|
|
75
|
+
description: str,
|
|
76
|
+
context: str | None = None,
|
|
77
|
+
files: list[str] | None = None,
|
|
78
|
+
) -> ComplexityScore:
|
|
79
|
+
"""Score task complexity.
|
|
80
|
+
|
|
81
|
+
Args:
|
|
82
|
+
description: Task description
|
|
83
|
+
context: Optional context (code, docs, etc.)
|
|
84
|
+
files: Optional list of file paths
|
|
85
|
+
|
|
86
|
+
Returns:
|
|
87
|
+
ComplexityScore with classification and metrics
|
|
88
|
+
"""
|
|
89
|
+
# Count tokens
|
|
90
|
+
if self.tokenizer:
|
|
91
|
+
token_count = len(self.tokenizer.encode(description))
|
|
92
|
+
if context:
|
|
93
|
+
token_count += len(self.tokenizer.encode(context))
|
|
94
|
+
else:
|
|
95
|
+
# Fallback: rough estimate (4 chars per token)
|
|
96
|
+
token_count = len(description) // 4
|
|
97
|
+
if context:
|
|
98
|
+
token_count += len(context) // 4
|
|
99
|
+
|
|
100
|
+
# Count lines of code
|
|
101
|
+
line_count = 0
|
|
102
|
+
if context:
|
|
103
|
+
line_count = len(context.split("\n"))
|
|
104
|
+
|
|
105
|
+
# Count files
|
|
106
|
+
file_count = len(files) if files else 0
|
|
107
|
+
|
|
108
|
+
# Determine complexity level using thresholds
|
|
109
|
+
if token_count < 100 and line_count < 50:
|
|
110
|
+
complexity = TaskComplexity.SIMPLE
|
|
111
|
+
elif token_count < 500 and line_count < 200:
|
|
112
|
+
complexity = TaskComplexity.MODERATE
|
|
113
|
+
elif token_count < 2000 and line_count < 1000:
|
|
114
|
+
complexity = TaskComplexity.COMPLEX
|
|
115
|
+
else:
|
|
116
|
+
complexity = TaskComplexity.VERY_COMPLEX
|
|
117
|
+
|
|
118
|
+
# Confidence is moderate for simple heuristics
|
|
119
|
+
confidence = 0.8 if self.tokenizer else 0.6
|
|
120
|
+
|
|
121
|
+
return ComplexityScore(
|
|
122
|
+
token_count=token_count,
|
|
123
|
+
line_count=line_count,
|
|
124
|
+
file_count=file_count,
|
|
125
|
+
complexity_level=complexity,
|
|
126
|
+
confidence=confidence,
|
|
127
|
+
)
|