empathy-framework 4.6.6__py3-none-any.whl → 4.7.1__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.
- empathy_framework-4.7.1.dist-info/METADATA +690 -0
- empathy_framework-4.7.1.dist-info/RECORD +379 -0
- {empathy_framework-4.6.6.dist-info → empathy_framework-4.7.1.dist-info}/top_level.txt +1 -2
- empathy_healthcare_plugin/monitors/monitoring/__init__.py +9 -9
- empathy_llm_toolkit/agent_factory/__init__.py +6 -6
- empathy_llm_toolkit/agent_factory/adapters/wizard_adapter.py +7 -10
- empathy_llm_toolkit/agents_md/__init__.py +22 -0
- empathy_llm_toolkit/agents_md/loader.py +218 -0
- empathy_llm_toolkit/agents_md/parser.py +271 -0
- empathy_llm_toolkit/agents_md/registry.py +307 -0
- empathy_llm_toolkit/commands/__init__.py +51 -0
- empathy_llm_toolkit/commands/context.py +375 -0
- empathy_llm_toolkit/commands/loader.py +301 -0
- empathy_llm_toolkit/commands/models.py +231 -0
- empathy_llm_toolkit/commands/parser.py +371 -0
- empathy_llm_toolkit/commands/registry.py +429 -0
- empathy_llm_toolkit/config/__init__.py +8 -8
- empathy_llm_toolkit/config/unified.py +3 -7
- empathy_llm_toolkit/context/__init__.py +22 -0
- empathy_llm_toolkit/context/compaction.py +455 -0
- empathy_llm_toolkit/context/manager.py +434 -0
- empathy_llm_toolkit/hooks/__init__.py +24 -0
- empathy_llm_toolkit/hooks/config.py +306 -0
- empathy_llm_toolkit/hooks/executor.py +289 -0
- empathy_llm_toolkit/hooks/registry.py +302 -0
- empathy_llm_toolkit/hooks/scripts/__init__.py +39 -0
- empathy_llm_toolkit/hooks/scripts/evaluate_session.py +201 -0
- empathy_llm_toolkit/hooks/scripts/first_time_init.py +285 -0
- empathy_llm_toolkit/hooks/scripts/pre_compact.py +207 -0
- empathy_llm_toolkit/hooks/scripts/session_end.py +183 -0
- empathy_llm_toolkit/hooks/scripts/session_start.py +163 -0
- empathy_llm_toolkit/hooks/scripts/suggest_compact.py +225 -0
- empathy_llm_toolkit/learning/__init__.py +30 -0
- empathy_llm_toolkit/learning/evaluator.py +438 -0
- empathy_llm_toolkit/learning/extractor.py +514 -0
- empathy_llm_toolkit/learning/storage.py +560 -0
- empathy_llm_toolkit/providers.py +4 -11
- empathy_llm_toolkit/security/__init__.py +17 -17
- empathy_llm_toolkit/utils/tokens.py +2 -5
- empathy_os/__init__.py +202 -70
- empathy_os/cache_monitor.py +5 -3
- empathy_os/cli/__init__.py +11 -55
- empathy_os/cli/__main__.py +29 -15
- empathy_os/cli/commands/inspection.py +21 -12
- empathy_os/cli/commands/memory.py +4 -12
- empathy_os/cli/commands/profiling.py +198 -0
- empathy_os/cli/commands/utilities.py +27 -7
- empathy_os/cli.py +28 -57
- empathy_os/cli_unified.py +525 -1164
- empathy_os/cost_tracker.py +9 -3
- empathy_os/dashboard/server.py +200 -2
- empathy_os/hot_reload/__init__.py +7 -7
- empathy_os/hot_reload/config.py +6 -7
- empathy_os/hot_reload/integration.py +35 -35
- empathy_os/hot_reload/reloader.py +57 -57
- empathy_os/hot_reload/watcher.py +28 -28
- empathy_os/hot_reload/websocket.py +2 -2
- empathy_os/memory/__init__.py +11 -4
- empathy_os/memory/claude_memory.py +1 -1
- empathy_os/memory/cross_session.py +8 -12
- empathy_os/memory/edges.py +6 -6
- empathy_os/memory/file_session.py +770 -0
- empathy_os/memory/graph.py +30 -30
- empathy_os/memory/nodes.py +6 -6
- empathy_os/memory/short_term.py +15 -9
- empathy_os/memory/unified.py +606 -140
- empathy_os/meta_workflows/agent_creator.py +3 -9
- empathy_os/meta_workflows/cli_meta_workflows.py +113 -53
- empathy_os/meta_workflows/form_engine.py +6 -18
- empathy_os/meta_workflows/intent_detector.py +64 -24
- empathy_os/meta_workflows/models.py +3 -1
- empathy_os/meta_workflows/pattern_learner.py +13 -31
- empathy_os/meta_workflows/plan_generator.py +55 -47
- empathy_os/meta_workflows/session_context.py +2 -3
- empathy_os/meta_workflows/workflow.py +20 -51
- empathy_os/models/cli.py +2 -2
- empathy_os/models/tasks.py +1 -2
- empathy_os/models/telemetry.py +4 -1
- empathy_os/models/token_estimator.py +3 -1
- empathy_os/monitoring/alerts.py +938 -9
- empathy_os/monitoring/alerts_cli.py +346 -183
- empathy_os/orchestration/execution_strategies.py +12 -29
- empathy_os/orchestration/pattern_learner.py +20 -26
- empathy_os/orchestration/real_tools.py +6 -15
- empathy_os/platform_utils.py +2 -1
- empathy_os/plugins/__init__.py +2 -2
- empathy_os/plugins/base.py +64 -64
- empathy_os/plugins/registry.py +32 -32
- empathy_os/project_index/index.py +49 -15
- empathy_os/project_index/models.py +1 -2
- empathy_os/project_index/reports.py +1 -1
- empathy_os/project_index/scanner.py +1 -0
- empathy_os/redis_memory.py +10 -7
- empathy_os/resilience/__init__.py +1 -1
- empathy_os/resilience/health.py +10 -10
- empathy_os/routing/__init__.py +7 -7
- empathy_os/routing/chain_executor.py +37 -37
- empathy_os/routing/classifier.py +36 -36
- empathy_os/routing/smart_router.py +40 -40
- empathy_os/routing/{wizard_registry.py → workflow_registry.py} +47 -47
- empathy_os/scaffolding/__init__.py +8 -8
- empathy_os/scaffolding/__main__.py +1 -1
- empathy_os/scaffolding/cli.py +28 -28
- empathy_os/socratic/__init__.py +3 -19
- empathy_os/socratic/ab_testing.py +25 -36
- empathy_os/socratic/blueprint.py +38 -38
- empathy_os/socratic/cli.py +34 -20
- empathy_os/socratic/collaboration.py +30 -28
- empathy_os/socratic/domain_templates.py +9 -1
- empathy_os/socratic/embeddings.py +17 -13
- empathy_os/socratic/engine.py +135 -70
- empathy_os/socratic/explainer.py +70 -60
- empathy_os/socratic/feedback.py +24 -19
- empathy_os/socratic/forms.py +15 -10
- empathy_os/socratic/generator.py +51 -35
- empathy_os/socratic/llm_analyzer.py +25 -23
- empathy_os/socratic/mcp_server.py +99 -159
- empathy_os/socratic/session.py +19 -13
- empathy_os/socratic/storage.py +98 -67
- empathy_os/socratic/success.py +38 -27
- empathy_os/socratic/visual_editor.py +51 -39
- empathy_os/socratic/web_ui.py +99 -66
- empathy_os/telemetry/cli.py +3 -1
- empathy_os/telemetry/usage_tracker.py +1 -3
- empathy_os/test_generator/__init__.py +3 -3
- empathy_os/test_generator/cli.py +28 -28
- empathy_os/test_generator/generator.py +64 -66
- empathy_os/test_generator/risk_analyzer.py +11 -11
- empathy_os/vscode_bridge 2.py +173 -0
- empathy_os/vscode_bridge.py +173 -0
- empathy_os/workflows/__init__.py +212 -120
- empathy_os/workflows/batch_processing.py +8 -24
- empathy_os/workflows/bug_predict.py +1 -1
- empathy_os/workflows/code_review.py +20 -5
- empathy_os/workflows/code_review_pipeline.py +13 -8
- empathy_os/workflows/keyboard_shortcuts/workflow.py +6 -2
- empathy_os/workflows/manage_documentation.py +1 -0
- empathy_os/workflows/orchestrated_health_check.py +6 -11
- empathy_os/workflows/orchestrated_release_prep.py +3 -3
- empathy_os/workflows/pr_review.py +18 -10
- empathy_os/workflows/progressive/README 2.md +454 -0
- empathy_os/workflows/progressive/__init__ 2.py +92 -0
- empathy_os/workflows/progressive/__init__.py +2 -12
- empathy_os/workflows/progressive/cli 2.py +242 -0
- empathy_os/workflows/progressive/cli.py +14 -37
- empathy_os/workflows/progressive/core 2.py +488 -0
- empathy_os/workflows/progressive/core.py +12 -12
- empathy_os/workflows/progressive/orchestrator 2.py +701 -0
- empathy_os/workflows/progressive/orchestrator.py +166 -144
- empathy_os/workflows/progressive/reports 2.py +528 -0
- empathy_os/workflows/progressive/reports.py +22 -31
- empathy_os/workflows/progressive/telemetry 2.py +280 -0
- empathy_os/workflows/progressive/telemetry.py +8 -14
- empathy_os/workflows/progressive/test_gen 2.py +514 -0
- empathy_os/workflows/progressive/test_gen.py +29 -48
- empathy_os/workflows/progressive/workflow 2.py +628 -0
- empathy_os/workflows/progressive/workflow.py +31 -70
- empathy_os/workflows/release_prep.py +21 -6
- empathy_os/workflows/release_prep_crew.py +1 -0
- empathy_os/workflows/secure_release.py +13 -6
- empathy_os/workflows/security_audit.py +8 -3
- empathy_os/workflows/test_coverage_boost_crew.py +3 -2
- empathy_os/workflows/test_maintenance_crew.py +1 -0
- empathy_os/workflows/test_runner.py +16 -12
- empathy_software_plugin/SOFTWARE_PLUGIN_README.md +25 -703
- empathy_software_plugin/cli.py +0 -122
- patterns/README.md +119 -0
- patterns/__init__.py +95 -0
- patterns/behavior.py +298 -0
- patterns/code_review_memory.json +441 -0
- patterns/core.py +97 -0
- patterns/debugging.json +3763 -0
- patterns/empathy.py +268 -0
- patterns/health_check_memory.json +505 -0
- patterns/input.py +161 -0
- patterns/memory_graph.json +8 -0
- patterns/refactoring_memory.json +1113 -0
- patterns/registry.py +663 -0
- patterns/security_memory.json +8 -0
- patterns/structural.py +415 -0
- patterns/validation.py +194 -0
- coach_wizards/__init__.py +0 -45
- coach_wizards/accessibility_wizard.py +0 -91
- coach_wizards/api_wizard.py +0 -91
- coach_wizards/base_wizard.py +0 -209
- coach_wizards/cicd_wizard.py +0 -91
- coach_wizards/code_reviewer_README.md +0 -60
- coach_wizards/code_reviewer_wizard.py +0 -180
- coach_wizards/compliance_wizard.py +0 -91
- coach_wizards/database_wizard.py +0 -91
- coach_wizards/debugging_wizard.py +0 -91
- coach_wizards/documentation_wizard.py +0 -91
- coach_wizards/generate_wizards.py +0 -347
- coach_wizards/localization_wizard.py +0 -173
- coach_wizards/migration_wizard.py +0 -91
- coach_wizards/monitoring_wizard.py +0 -91
- coach_wizards/observability_wizard.py +0 -91
- coach_wizards/performance_wizard.py +0 -91
- coach_wizards/prompt_engineering_wizard.py +0 -661
- coach_wizards/refactoring_wizard.py +0 -91
- coach_wizards/scaling_wizard.py +0 -90
- coach_wizards/security_wizard.py +0 -92
- coach_wizards/testing_wizard.py +0 -91
- empathy_framework-4.6.6.dist-info/METADATA +0 -1597
- empathy_framework-4.6.6.dist-info/RECORD +0 -410
- empathy_llm_toolkit/wizards/__init__.py +0 -43
- empathy_llm_toolkit/wizards/base_wizard.py +0 -364
- empathy_llm_toolkit/wizards/customer_support_wizard.py +0 -190
- empathy_llm_toolkit/wizards/healthcare_wizard.py +0 -378
- empathy_llm_toolkit/wizards/patient_assessment_README.md +0 -64
- empathy_llm_toolkit/wizards/patient_assessment_wizard.py +0 -193
- empathy_llm_toolkit/wizards/technology_wizard.py +0 -209
- empathy_os/wizard_factory_cli.py +0 -170
- empathy_software_plugin/wizards/__init__.py +0 -42
- empathy_software_plugin/wizards/advanced_debugging_wizard.py +0 -395
- empathy_software_plugin/wizards/agent_orchestration_wizard.py +0 -511
- empathy_software_plugin/wizards/ai_collaboration_wizard.py +0 -503
- empathy_software_plugin/wizards/ai_context_wizard.py +0 -441
- empathy_software_plugin/wizards/ai_documentation_wizard.py +0 -503
- empathy_software_plugin/wizards/base_wizard.py +0 -288
- empathy_software_plugin/wizards/book_chapter_wizard.py +0 -519
- empathy_software_plugin/wizards/code_review_wizard.py +0 -604
- empathy_software_plugin/wizards/debugging/__init__.py +0 -50
- empathy_software_plugin/wizards/debugging/bug_risk_analyzer.py +0 -414
- empathy_software_plugin/wizards/debugging/config_loaders.py +0 -446
- empathy_software_plugin/wizards/debugging/fix_applier.py +0 -469
- empathy_software_plugin/wizards/debugging/language_patterns.py +0 -385
- empathy_software_plugin/wizards/debugging/linter_parsers.py +0 -470
- empathy_software_plugin/wizards/debugging/verification.py +0 -369
- empathy_software_plugin/wizards/enhanced_testing_wizard.py +0 -537
- empathy_software_plugin/wizards/memory_enhanced_debugging_wizard.py +0 -816
- empathy_software_plugin/wizards/multi_model_wizard.py +0 -501
- empathy_software_plugin/wizards/pattern_extraction_wizard.py +0 -422
- empathy_software_plugin/wizards/pattern_retriever_wizard.py +0 -400
- empathy_software_plugin/wizards/performance/__init__.py +0 -9
- empathy_software_plugin/wizards/performance/bottleneck_detector.py +0 -221
- empathy_software_plugin/wizards/performance/profiler_parsers.py +0 -278
- empathy_software_plugin/wizards/performance/trajectory_analyzer.py +0 -429
- empathy_software_plugin/wizards/performance_profiling_wizard.py +0 -305
- empathy_software_plugin/wizards/prompt_engineering_wizard.py +0 -425
- empathy_software_plugin/wizards/rag_pattern_wizard.py +0 -461
- empathy_software_plugin/wizards/security/__init__.py +0 -32
- empathy_software_plugin/wizards/security/exploit_analyzer.py +0 -290
- empathy_software_plugin/wizards/security/owasp_patterns.py +0 -241
- empathy_software_plugin/wizards/security/vulnerability_scanner.py +0 -604
- empathy_software_plugin/wizards/security_analysis_wizard.py +0 -322
- empathy_software_plugin/wizards/security_learning_wizard.py +0 -740
- empathy_software_plugin/wizards/tech_debt_wizard.py +0 -726
- empathy_software_plugin/wizards/testing/__init__.py +0 -27
- empathy_software_plugin/wizards/testing/coverage_analyzer.py +0 -459
- empathy_software_plugin/wizards/testing/quality_analyzer.py +0 -525
- empathy_software_plugin/wizards/testing/test_suggester.py +0 -533
- empathy_software_plugin/wizards/testing_wizard.py +0 -274
- wizards/__init__.py +0 -82
- wizards/admission_assessment_wizard.py +0 -644
- wizards/care_plan.py +0 -321
- wizards/clinical_assessment.py +0 -769
- wizards/discharge_planning.py +0 -77
- wizards/discharge_summary_wizard.py +0 -468
- wizards/dosage_calculation.py +0 -497
- wizards/incident_report_wizard.py +0 -454
- wizards/medication_reconciliation.py +0 -85
- wizards/nursing_assessment.py +0 -171
- wizards/patient_education.py +0 -654
- wizards/quality_improvement.py +0 -705
- wizards/sbar_report.py +0 -324
- wizards/sbar_wizard.py +0 -608
- wizards/shift_handoff_wizard.py +0 -535
- wizards/soap_note_wizard.py +0 -679
- wizards/treatment_plan.py +0 -15
- {empathy_framework-4.6.6.dist-info → empathy_framework-4.7.1.dist-info}/WHEEL +0 -0
- {empathy_framework-4.6.6.dist-info → empathy_framework-4.7.1.dist-info}/entry_points.txt +0 -0
- {empathy_framework-4.6.6.dist-info → empathy_framework-4.7.1.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,288 +0,0 @@
|
|
|
1
|
-
"""Base Wizard for Software Development Plugin
|
|
2
|
-
|
|
3
|
-
Foundation for all software development wizards.
|
|
4
|
-
|
|
5
|
-
Copyright 2025 Smart AI Memory, LLC
|
|
6
|
-
Licensed under Fair Source 0.9
|
|
7
|
-
"""
|
|
8
|
-
|
|
9
|
-
import hashlib
|
|
10
|
-
import json
|
|
11
|
-
import logging
|
|
12
|
-
from abc import ABC, abstractmethod
|
|
13
|
-
from typing import Any
|
|
14
|
-
|
|
15
|
-
from empathy_os.redis_memory import (
|
|
16
|
-
AccessTier,
|
|
17
|
-
AgentCredentials,
|
|
18
|
-
RedisShortTermMemory,
|
|
19
|
-
StagedPattern,
|
|
20
|
-
)
|
|
21
|
-
|
|
22
|
-
logger = logging.getLogger(__name__)
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
class BaseWizard(ABC):
|
|
26
|
-
"""Base class for all software development wizards.
|
|
27
|
-
|
|
28
|
-
All wizards implement Level 4 Anticipatory Empathy:
|
|
29
|
-
- Analyze current state
|
|
30
|
-
- Predict future problems
|
|
31
|
-
- Provide prevention steps
|
|
32
|
-
|
|
33
|
-
With Redis short-term memory, wizards can:
|
|
34
|
-
- Cache analysis results for reuse
|
|
35
|
-
- Share context with other wizards
|
|
36
|
-
- Stage discovered patterns for validation
|
|
37
|
-
- Coordinate with multi-agent teams
|
|
38
|
-
"""
|
|
39
|
-
|
|
40
|
-
def __init__(
|
|
41
|
-
self,
|
|
42
|
-
short_term_memory: RedisShortTermMemory | None = None,
|
|
43
|
-
cache_ttl_seconds: int = 3600,
|
|
44
|
-
):
|
|
45
|
-
"""Initialize base wizard.
|
|
46
|
-
|
|
47
|
-
Args:
|
|
48
|
-
short_term_memory: Optional Redis memory for caching/sharing
|
|
49
|
-
cache_ttl_seconds: Cache duration for analysis results (default 1 hour)
|
|
50
|
-
|
|
51
|
-
"""
|
|
52
|
-
self.logger = logger
|
|
53
|
-
self.short_term_memory = short_term_memory
|
|
54
|
-
self.cache_ttl = cache_ttl_seconds
|
|
55
|
-
|
|
56
|
-
# Create credentials for this wizard
|
|
57
|
-
self._credentials = AgentCredentials(
|
|
58
|
-
agent_id=f"wizard_{self.__class__.__name__}",
|
|
59
|
-
tier=AccessTier.CONTRIBUTOR,
|
|
60
|
-
)
|
|
61
|
-
|
|
62
|
-
@property
|
|
63
|
-
@abstractmethod
|
|
64
|
-
def name(self) -> str:
|
|
65
|
-
"""Wizard name"""
|
|
66
|
-
|
|
67
|
-
@property
|
|
68
|
-
@abstractmethod
|
|
69
|
-
def level(self) -> int:
|
|
70
|
-
"""Empathy level (1-5)"""
|
|
71
|
-
|
|
72
|
-
@abstractmethod
|
|
73
|
-
async def analyze(self, context: dict[str, Any]) -> dict[str, Any]:
|
|
74
|
-
"""Analyze the given context and return results.
|
|
75
|
-
|
|
76
|
-
Args:
|
|
77
|
-
context: Dictionary with wizard-specific inputs
|
|
78
|
-
|
|
79
|
-
Returns:
|
|
80
|
-
Dictionary with:
|
|
81
|
-
- predictions: List of Level 4 predictions
|
|
82
|
-
- recommendations: List of actionable steps
|
|
83
|
-
- confidence: Float 0.0-1.0
|
|
84
|
-
- Additional wizard-specific data
|
|
85
|
-
|
|
86
|
-
"""
|
|
87
|
-
|
|
88
|
-
# =========================================================================
|
|
89
|
-
# SHORT-TERM MEMORY (Caching & Sharing)
|
|
90
|
-
# =========================================================================
|
|
91
|
-
|
|
92
|
-
def _cache_key(self, context: dict[str, Any]) -> str:
|
|
93
|
-
"""Generate a cache key from context."""
|
|
94
|
-
# Create deterministic hash of context
|
|
95
|
-
context_str = json.dumps(context, sort_keys=True, default=str)
|
|
96
|
-
hash_val = hashlib.md5(context_str.encode(), usedforsecurity=False).hexdigest()[:12]
|
|
97
|
-
return f"{self.name}:{hash_val}"
|
|
98
|
-
|
|
99
|
-
def has_memory(self) -> bool:
|
|
100
|
-
"""Check if short-term memory is available."""
|
|
101
|
-
return self.short_term_memory is not None
|
|
102
|
-
|
|
103
|
-
def get_cached_result(self, context: dict[str, Any]) -> dict[str, Any] | None:
|
|
104
|
-
"""Get cached analysis result if available.
|
|
105
|
-
|
|
106
|
-
Args:
|
|
107
|
-
context: The analysis context (used for cache key)
|
|
108
|
-
|
|
109
|
-
Returns:
|
|
110
|
-
Cached result dict, or None if not cached
|
|
111
|
-
|
|
112
|
-
"""
|
|
113
|
-
if self.short_term_memory is None:
|
|
114
|
-
return None
|
|
115
|
-
|
|
116
|
-
key = self._cache_key(context)
|
|
117
|
-
result = self.short_term_memory.retrieve(key, self._credentials)
|
|
118
|
-
return dict(result) if result else None
|
|
119
|
-
|
|
120
|
-
def cache_result(self, context: dict[str, Any], result: dict[str, Any]) -> bool:
|
|
121
|
-
"""Cache analysis result for future reuse.
|
|
122
|
-
|
|
123
|
-
Args:
|
|
124
|
-
context: The analysis context (used for cache key)
|
|
125
|
-
result: The analysis result to cache
|
|
126
|
-
|
|
127
|
-
Returns:
|
|
128
|
-
True if cached successfully
|
|
129
|
-
|
|
130
|
-
"""
|
|
131
|
-
if self.short_term_memory is None:
|
|
132
|
-
return False
|
|
133
|
-
|
|
134
|
-
key = self._cache_key(context)
|
|
135
|
-
return bool(self.short_term_memory.stash(key, result, self._credentials))
|
|
136
|
-
|
|
137
|
-
async def analyze_with_cache(self, context: dict[str, Any]) -> dict[str, Any]:
|
|
138
|
-
"""Analyze with automatic caching.
|
|
139
|
-
|
|
140
|
-
First checks cache for existing result. If not found,
|
|
141
|
-
runs analysis and caches the result.
|
|
142
|
-
|
|
143
|
-
Args:
|
|
144
|
-
context: Dictionary with wizard-specific inputs
|
|
145
|
-
|
|
146
|
-
Returns:
|
|
147
|
-
Analysis result (from cache or fresh)
|
|
148
|
-
|
|
149
|
-
"""
|
|
150
|
-
# Try cache first
|
|
151
|
-
cached = self.get_cached_result(context)
|
|
152
|
-
if cached is not None:
|
|
153
|
-
self.logger.debug(f"{self.name}: Using cached result")
|
|
154
|
-
cached["_from_cache"] = True
|
|
155
|
-
return cached
|
|
156
|
-
|
|
157
|
-
# Run fresh analysis
|
|
158
|
-
result = await self.analyze(context)
|
|
159
|
-
result["_from_cache"] = False
|
|
160
|
-
|
|
161
|
-
# Cache the result
|
|
162
|
-
self.cache_result(context, result)
|
|
163
|
-
|
|
164
|
-
return result
|
|
165
|
-
|
|
166
|
-
def share_context(self, key: str, data: Any) -> bool:
|
|
167
|
-
"""Share context data for other wizards to use.
|
|
168
|
-
|
|
169
|
-
Use this to pass intermediate results or discovered insights
|
|
170
|
-
to subsequent wizards in a pipeline.
|
|
171
|
-
|
|
172
|
-
Shared context uses a global namespace accessible to all wizards.
|
|
173
|
-
|
|
174
|
-
Args:
|
|
175
|
-
key: Unique key for this shared data
|
|
176
|
-
data: Any JSON-serializable data
|
|
177
|
-
|
|
178
|
-
Returns:
|
|
179
|
-
True if shared successfully
|
|
180
|
-
|
|
181
|
-
"""
|
|
182
|
-
if self.short_term_memory is None:
|
|
183
|
-
return False
|
|
184
|
-
|
|
185
|
-
# Use global credentials for shared context (accessible to all wizards)
|
|
186
|
-
global_creds = AgentCredentials(
|
|
187
|
-
agent_id="wizard_shared",
|
|
188
|
-
tier=AccessTier.CONTRIBUTOR,
|
|
189
|
-
)
|
|
190
|
-
return bool(
|
|
191
|
-
self.short_term_memory.stash(
|
|
192
|
-
f"shared:{key}",
|
|
193
|
-
data,
|
|
194
|
-
global_creds,
|
|
195
|
-
),
|
|
196
|
-
)
|
|
197
|
-
|
|
198
|
-
def get_shared_context(self, key: str, from_wizard: str | None = None) -> Any | None:
|
|
199
|
-
"""Get context data shared by another wizard.
|
|
200
|
-
|
|
201
|
-
If from_wizard is specified, looks in that wizard's private namespace.
|
|
202
|
-
Otherwise, looks in the global shared namespace.
|
|
203
|
-
|
|
204
|
-
Args:
|
|
205
|
-
key: Key for the shared data
|
|
206
|
-
from_wizard: Specific wizard to get from (e.g., "SecurityAnalysisWizard")
|
|
207
|
-
If None, uses global shared namespace.
|
|
208
|
-
|
|
209
|
-
Returns:
|
|
210
|
-
The shared data, or None if not found
|
|
211
|
-
|
|
212
|
-
"""
|
|
213
|
-
if self.short_term_memory is None:
|
|
214
|
-
return None
|
|
215
|
-
|
|
216
|
-
# Use global shared namespace by default, or specific wizard if requested
|
|
217
|
-
agent_id = f"wizard_{from_wizard}" if from_wizard else "wizard_shared"
|
|
218
|
-
return self.short_term_memory.retrieve(
|
|
219
|
-
f"shared:{key}",
|
|
220
|
-
self._credentials,
|
|
221
|
-
agent_id=agent_id,
|
|
222
|
-
)
|
|
223
|
-
|
|
224
|
-
def stage_discovered_pattern(
|
|
225
|
-
self,
|
|
226
|
-
pattern_id: str,
|
|
227
|
-
pattern_type: str,
|
|
228
|
-
name: str,
|
|
229
|
-
description: str,
|
|
230
|
-
confidence: float = 0.5,
|
|
231
|
-
code: str | None = None,
|
|
232
|
-
) -> bool:
|
|
233
|
-
"""Stage a pattern discovered during analysis.
|
|
234
|
-
|
|
235
|
-
When a wizard discovers a reusable pattern, it can stage it
|
|
236
|
-
for validation and eventual promotion to the pattern library.
|
|
237
|
-
|
|
238
|
-
Args:
|
|
239
|
-
pattern_id: Unique pattern identifier
|
|
240
|
-
pattern_type: Type (e.g., "security", "performance", "testing")
|
|
241
|
-
name: Human-readable name
|
|
242
|
-
description: What this pattern does
|
|
243
|
-
confidence: Discovery confidence (0.0-1.0)
|
|
244
|
-
code: Optional code example
|
|
245
|
-
|
|
246
|
-
Returns:
|
|
247
|
-
True if staged successfully
|
|
248
|
-
|
|
249
|
-
"""
|
|
250
|
-
if self.short_term_memory is None:
|
|
251
|
-
return False
|
|
252
|
-
|
|
253
|
-
pattern = StagedPattern(
|
|
254
|
-
pattern_id=pattern_id,
|
|
255
|
-
agent_id=self._credentials.agent_id,
|
|
256
|
-
pattern_type=pattern_type,
|
|
257
|
-
name=name,
|
|
258
|
-
description=description,
|
|
259
|
-
confidence=confidence,
|
|
260
|
-
code=code,
|
|
261
|
-
context={"wizard": self.name, "level": self.level},
|
|
262
|
-
)
|
|
263
|
-
|
|
264
|
-
return bool(self.short_term_memory.stage_pattern(pattern, self._credentials))
|
|
265
|
-
|
|
266
|
-
def send_signal(self, signal_type: str, data: dict) -> bool:
|
|
267
|
-
"""Send a coordination signal.
|
|
268
|
-
|
|
269
|
-
Use to notify completion, request help, or broadcast status.
|
|
270
|
-
|
|
271
|
-
Args:
|
|
272
|
-
signal_type: Type of signal
|
|
273
|
-
data: Signal payload
|
|
274
|
-
|
|
275
|
-
Returns:
|
|
276
|
-
True if sent successfully
|
|
277
|
-
|
|
278
|
-
"""
|
|
279
|
-
if self.short_term_memory is None:
|
|
280
|
-
return False
|
|
281
|
-
|
|
282
|
-
return bool(
|
|
283
|
-
self.short_term_memory.send_signal(
|
|
284
|
-
signal_type=signal_type,
|
|
285
|
-
data={"wizard": self.name, **data},
|
|
286
|
-
credentials=self._credentials,
|
|
287
|
-
),
|
|
288
|
-
)
|