empathy-framework 3.7.0__py3-none-any.whl → 3.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.
Files changed (267) hide show
  1. coach_wizards/code_reviewer_README.md +60 -0
  2. coach_wizards/code_reviewer_wizard.py +180 -0
  3. {empathy_framework-3.7.0.dist-info → empathy_framework-3.7.1.dist-info}/METADATA +20 -2
  4. empathy_framework-3.7.1.dist-info/RECORD +327 -0
  5. {empathy_framework-3.7.0.dist-info → empathy_framework-3.7.1.dist-info}/top_level.txt +5 -1
  6. empathy_healthcare_plugin/monitors/__init__.py +9 -0
  7. empathy_healthcare_plugin/monitors/clinical_protocol_monitor.py +315 -0
  8. empathy_healthcare_plugin/monitors/monitoring/__init__.py +44 -0
  9. empathy_healthcare_plugin/monitors/monitoring/protocol_checker.py +300 -0
  10. empathy_healthcare_plugin/monitors/monitoring/protocol_loader.py +214 -0
  11. empathy_healthcare_plugin/monitors/monitoring/sensor_parsers.py +306 -0
  12. empathy_healthcare_plugin/monitors/monitoring/trajectory_analyzer.py +389 -0
  13. empathy_llm_toolkit/agent_factory/__init__.py +53 -0
  14. empathy_llm_toolkit/agent_factory/adapters/__init__.py +85 -0
  15. empathy_llm_toolkit/agent_factory/adapters/autogen_adapter.py +312 -0
  16. empathy_llm_toolkit/agent_factory/adapters/crewai_adapter.py +454 -0
  17. empathy_llm_toolkit/agent_factory/adapters/haystack_adapter.py +298 -0
  18. empathy_llm_toolkit/agent_factory/adapters/langchain_adapter.py +362 -0
  19. empathy_llm_toolkit/agent_factory/adapters/langgraph_adapter.py +333 -0
  20. empathy_llm_toolkit/agent_factory/adapters/native.py +228 -0
  21. empathy_llm_toolkit/agent_factory/adapters/wizard_adapter.py +426 -0
  22. empathy_llm_toolkit/agent_factory/base.py +305 -0
  23. empathy_llm_toolkit/agent_factory/crews/__init__.py +67 -0
  24. empathy_llm_toolkit/agent_factory/crews/code_review.py +1113 -0
  25. empathy_llm_toolkit/agent_factory/crews/health_check.py +1246 -0
  26. empathy_llm_toolkit/agent_factory/crews/refactoring.py +1128 -0
  27. empathy_llm_toolkit/agent_factory/crews/security_audit.py +1018 -0
  28. empathy_llm_toolkit/agent_factory/decorators.py +286 -0
  29. empathy_llm_toolkit/agent_factory/factory.py +558 -0
  30. empathy_llm_toolkit/agent_factory/framework.py +192 -0
  31. empathy_llm_toolkit/agent_factory/memory_integration.py +324 -0
  32. empathy_llm_toolkit/agent_factory/resilient.py +320 -0
  33. empathy_llm_toolkit/cli/__init__.py +8 -0
  34. empathy_llm_toolkit/cli/sync_claude.py +487 -0
  35. empathy_llm_toolkit/code_health.py +150 -3
  36. empathy_llm_toolkit/config/__init__.py +29 -0
  37. empathy_llm_toolkit/config/unified.py +295 -0
  38. empathy_llm_toolkit/routing/__init__.py +32 -0
  39. empathy_llm_toolkit/routing/model_router.py +362 -0
  40. empathy_llm_toolkit/security/IMPLEMENTATION_SUMMARY.md +413 -0
  41. empathy_llm_toolkit/security/PHASE2_COMPLETE.md +384 -0
  42. empathy_llm_toolkit/security/PHASE2_SECRETS_DETECTOR_COMPLETE.md +271 -0
  43. empathy_llm_toolkit/security/QUICK_REFERENCE.md +316 -0
  44. empathy_llm_toolkit/security/README.md +262 -0
  45. empathy_llm_toolkit/security/__init__.py +62 -0
  46. empathy_llm_toolkit/security/audit_logger.py +929 -0
  47. empathy_llm_toolkit/security/audit_logger_example.py +152 -0
  48. empathy_llm_toolkit/security/pii_scrubber.py +640 -0
  49. empathy_llm_toolkit/security/secrets_detector.py +678 -0
  50. empathy_llm_toolkit/security/secrets_detector_example.py +304 -0
  51. empathy_llm_toolkit/security/secure_memdocs.py +1192 -0
  52. empathy_llm_toolkit/security/secure_memdocs_example.py +278 -0
  53. empathy_llm_toolkit/wizards/__init__.py +38 -0
  54. empathy_llm_toolkit/wizards/base_wizard.py +364 -0
  55. empathy_llm_toolkit/wizards/customer_support_wizard.py +190 -0
  56. empathy_llm_toolkit/wizards/healthcare_wizard.py +362 -0
  57. empathy_llm_toolkit/wizards/patient_assessment_README.md +64 -0
  58. empathy_llm_toolkit/wizards/patient_assessment_wizard.py +193 -0
  59. empathy_llm_toolkit/wizards/technology_wizard.py +194 -0
  60. empathy_os/__init__.py +52 -52
  61. empathy_os/adaptive/__init__.py +13 -0
  62. empathy_os/adaptive/task_complexity.py +127 -0
  63. empathy_os/cli.py +118 -8
  64. empathy_os/cli_unified.py +121 -1
  65. empathy_os/config/__init__.py +63 -0
  66. empathy_os/config/xml_config.py +239 -0
  67. empathy_os/dashboard/__init__.py +15 -0
  68. empathy_os/dashboard/server.py +743 -0
  69. empathy_os/memory/__init__.py +195 -0
  70. empathy_os/memory/claude_memory.py +466 -0
  71. empathy_os/memory/config.py +224 -0
  72. empathy_os/memory/control_panel.py +1298 -0
  73. empathy_os/memory/edges.py +179 -0
  74. empathy_os/memory/graph.py +567 -0
  75. empathy_os/memory/long_term.py +1193 -0
  76. empathy_os/memory/nodes.py +179 -0
  77. empathy_os/memory/redis_bootstrap.py +540 -0
  78. empathy_os/memory/security/__init__.py +31 -0
  79. empathy_os/memory/security/audit_logger.py +930 -0
  80. empathy_os/memory/security/pii_scrubber.py +640 -0
  81. empathy_os/memory/security/secrets_detector.py +678 -0
  82. empathy_os/memory/short_term.py +2119 -0
  83. empathy_os/memory/storage/__init__.py +15 -0
  84. empathy_os/memory/summary_index.py +583 -0
  85. empathy_os/memory/unified.py +619 -0
  86. empathy_os/metrics/__init__.py +12 -0
  87. empathy_os/metrics/prompt_metrics.py +190 -0
  88. empathy_os/models/__init__.py +136 -0
  89. empathy_os/models/__main__.py +13 -0
  90. empathy_os/models/cli.py +655 -0
  91. empathy_os/models/empathy_executor.py +354 -0
  92. empathy_os/models/executor.py +252 -0
  93. empathy_os/models/fallback.py +671 -0
  94. empathy_os/models/provider_config.py +563 -0
  95. empathy_os/models/registry.py +382 -0
  96. empathy_os/models/tasks.py +302 -0
  97. empathy_os/models/telemetry.py +548 -0
  98. empathy_os/models/token_estimator.py +378 -0
  99. empathy_os/models/validation.py +274 -0
  100. empathy_os/monitoring/__init__.py +52 -0
  101. empathy_os/monitoring/alerts.py +23 -0
  102. empathy_os/monitoring/alerts_cli.py +268 -0
  103. empathy_os/monitoring/multi_backend.py +271 -0
  104. empathy_os/monitoring/otel_backend.py +363 -0
  105. empathy_os/optimization/__init__.py +19 -0
  106. empathy_os/optimization/context_optimizer.py +272 -0
  107. empathy_os/plugins/__init__.py +28 -0
  108. empathy_os/plugins/base.py +361 -0
  109. empathy_os/plugins/registry.py +268 -0
  110. empathy_os/project_index/__init__.py +30 -0
  111. empathy_os/project_index/cli.py +335 -0
  112. empathy_os/project_index/crew_integration.py +430 -0
  113. empathy_os/project_index/index.py +425 -0
  114. empathy_os/project_index/models.py +501 -0
  115. empathy_os/project_index/reports.py +473 -0
  116. empathy_os/project_index/scanner.py +538 -0
  117. empathy_os/prompts/__init__.py +61 -0
  118. empathy_os/prompts/config.py +77 -0
  119. empathy_os/prompts/context.py +177 -0
  120. empathy_os/prompts/parser.py +285 -0
  121. empathy_os/prompts/registry.py +313 -0
  122. empathy_os/prompts/templates.py +208 -0
  123. empathy_os/resilience/__init__.py +56 -0
  124. empathy_os/resilience/circuit_breaker.py +256 -0
  125. empathy_os/resilience/fallback.py +179 -0
  126. empathy_os/resilience/health.py +300 -0
  127. empathy_os/resilience/retry.py +209 -0
  128. empathy_os/resilience/timeout.py +135 -0
  129. empathy_os/routing/__init__.py +43 -0
  130. empathy_os/routing/chain_executor.py +433 -0
  131. empathy_os/routing/classifier.py +217 -0
  132. empathy_os/routing/smart_router.py +234 -0
  133. empathy_os/routing/wizard_registry.py +307 -0
  134. empathy_os/trust/__init__.py +28 -0
  135. empathy_os/trust/circuit_breaker.py +579 -0
  136. empathy_os/validation/__init__.py +19 -0
  137. empathy_os/validation/xml_validator.py +281 -0
  138. empathy_os/wizard_factory_cli.py +170 -0
  139. empathy_os/workflows/__init__.py +360 -0
  140. empathy_os/workflows/base.py +1530 -0
  141. empathy_os/workflows/bug_predict.py +962 -0
  142. empathy_os/workflows/code_review.py +960 -0
  143. empathy_os/workflows/code_review_adapters.py +310 -0
  144. empathy_os/workflows/code_review_pipeline.py +720 -0
  145. empathy_os/workflows/config.py +600 -0
  146. empathy_os/workflows/dependency_check.py +648 -0
  147. empathy_os/workflows/document_gen.py +1069 -0
  148. empathy_os/workflows/documentation_orchestrator.py +1205 -0
  149. empathy_os/workflows/health_check.py +679 -0
  150. empathy_os/workflows/keyboard_shortcuts/__init__.py +39 -0
  151. empathy_os/workflows/keyboard_shortcuts/generators.py +386 -0
  152. empathy_os/workflows/keyboard_shortcuts/parsers.py +414 -0
  153. empathy_os/workflows/keyboard_shortcuts/prompts.py +295 -0
  154. empathy_os/workflows/keyboard_shortcuts/schema.py +193 -0
  155. empathy_os/workflows/keyboard_shortcuts/workflow.py +505 -0
  156. empathy_os/workflows/manage_documentation.py +804 -0
  157. empathy_os/workflows/new_sample_workflow1.py +146 -0
  158. empathy_os/workflows/new_sample_workflow1_README.md +150 -0
  159. empathy_os/workflows/perf_audit.py +687 -0
  160. empathy_os/workflows/pr_review.py +748 -0
  161. empathy_os/workflows/progress.py +445 -0
  162. empathy_os/workflows/progress_server.py +322 -0
  163. empathy_os/workflows/refactor_plan.py +691 -0
  164. empathy_os/workflows/release_prep.py +808 -0
  165. empathy_os/workflows/research_synthesis.py +404 -0
  166. empathy_os/workflows/secure_release.py +585 -0
  167. empathy_os/workflows/security_adapters.py +297 -0
  168. empathy_os/workflows/security_audit.py +1050 -0
  169. empathy_os/workflows/step_config.py +234 -0
  170. empathy_os/workflows/test5.py +125 -0
  171. empathy_os/workflows/test5_README.md +158 -0
  172. empathy_os/workflows/test_gen.py +1855 -0
  173. empathy_os/workflows/test_lifecycle.py +526 -0
  174. empathy_os/workflows/test_maintenance.py +626 -0
  175. empathy_os/workflows/test_maintenance_cli.py +590 -0
  176. empathy_os/workflows/test_maintenance_crew.py +821 -0
  177. empathy_os/workflows/xml_enhanced_crew.py +285 -0
  178. empathy_software_plugin/cli/__init__.py +120 -0
  179. empathy_software_plugin/cli/inspect.py +362 -0
  180. empathy_software_plugin/cli.py +3 -1
  181. empathy_software_plugin/wizards/__init__.py +42 -0
  182. empathy_software_plugin/wizards/advanced_debugging_wizard.py +392 -0
  183. empathy_software_plugin/wizards/agent_orchestration_wizard.py +511 -0
  184. empathy_software_plugin/wizards/ai_collaboration_wizard.py +503 -0
  185. empathy_software_plugin/wizards/ai_context_wizard.py +441 -0
  186. empathy_software_plugin/wizards/ai_documentation_wizard.py +503 -0
  187. empathy_software_plugin/wizards/base_wizard.py +288 -0
  188. empathy_software_plugin/wizards/book_chapter_wizard.py +519 -0
  189. empathy_software_plugin/wizards/code_review_wizard.py +606 -0
  190. empathy_software_plugin/wizards/debugging/__init__.py +50 -0
  191. empathy_software_plugin/wizards/debugging/bug_risk_analyzer.py +414 -0
  192. empathy_software_plugin/wizards/debugging/config_loaders.py +442 -0
  193. empathy_software_plugin/wizards/debugging/fix_applier.py +469 -0
  194. empathy_software_plugin/wizards/debugging/language_patterns.py +383 -0
  195. empathy_software_plugin/wizards/debugging/linter_parsers.py +470 -0
  196. empathy_software_plugin/wizards/debugging/verification.py +369 -0
  197. empathy_software_plugin/wizards/enhanced_testing_wizard.py +537 -0
  198. empathy_software_plugin/wizards/memory_enhanced_debugging_wizard.py +816 -0
  199. empathy_software_plugin/wizards/multi_model_wizard.py +501 -0
  200. empathy_software_plugin/wizards/pattern_extraction_wizard.py +422 -0
  201. empathy_software_plugin/wizards/pattern_retriever_wizard.py +400 -0
  202. empathy_software_plugin/wizards/performance/__init__.py +9 -0
  203. empathy_software_plugin/wizards/performance/bottleneck_detector.py +221 -0
  204. empathy_software_plugin/wizards/performance/profiler_parsers.py +278 -0
  205. empathy_software_plugin/wizards/performance/trajectory_analyzer.py +429 -0
  206. empathy_software_plugin/wizards/performance_profiling_wizard.py +305 -0
  207. empathy_software_plugin/wizards/prompt_engineering_wizard.py +425 -0
  208. empathy_software_plugin/wizards/rag_pattern_wizard.py +461 -0
  209. empathy_software_plugin/wizards/security/__init__.py +32 -0
  210. empathy_software_plugin/wizards/security/exploit_analyzer.py +290 -0
  211. empathy_software_plugin/wizards/security/owasp_patterns.py +241 -0
  212. empathy_software_plugin/wizards/security/vulnerability_scanner.py +604 -0
  213. empathy_software_plugin/wizards/security_analysis_wizard.py +322 -0
  214. empathy_software_plugin/wizards/security_learning_wizard.py +740 -0
  215. empathy_software_plugin/wizards/tech_debt_wizard.py +726 -0
  216. empathy_software_plugin/wizards/testing/__init__.py +27 -0
  217. empathy_software_plugin/wizards/testing/coverage_analyzer.py +459 -0
  218. empathy_software_plugin/wizards/testing/quality_analyzer.py +531 -0
  219. empathy_software_plugin/wizards/testing/test_suggester.py +533 -0
  220. empathy_software_plugin/wizards/testing_wizard.py +274 -0
  221. hot_reload/README.md +473 -0
  222. hot_reload/__init__.py +62 -0
  223. hot_reload/config.py +84 -0
  224. hot_reload/integration.py +228 -0
  225. hot_reload/reloader.py +298 -0
  226. hot_reload/watcher.py +179 -0
  227. hot_reload/websocket.py +176 -0
  228. scaffolding/README.md +589 -0
  229. scaffolding/__init__.py +35 -0
  230. scaffolding/__main__.py +14 -0
  231. scaffolding/cli.py +240 -0
  232. test_generator/__init__.py +38 -0
  233. test_generator/__main__.py +14 -0
  234. test_generator/cli.py +226 -0
  235. test_generator/generator.py +325 -0
  236. test_generator/risk_analyzer.py +216 -0
  237. workflow_patterns/__init__.py +33 -0
  238. workflow_patterns/behavior.py +249 -0
  239. workflow_patterns/core.py +76 -0
  240. workflow_patterns/output.py +99 -0
  241. workflow_patterns/registry.py +255 -0
  242. workflow_patterns/structural.py +288 -0
  243. workflow_scaffolding/__init__.py +11 -0
  244. workflow_scaffolding/__main__.py +12 -0
  245. workflow_scaffolding/cli.py +206 -0
  246. workflow_scaffolding/generator.py +265 -0
  247. agents/code_inspection/patterns/inspection/recurring_B112.json +0 -18
  248. agents/code_inspection/patterns/inspection/recurring_F541.json +0 -16
  249. agents/code_inspection/patterns/inspection/recurring_FORMAT.json +0 -25
  250. agents/code_inspection/patterns/inspection/recurring_bug_20250822_def456.json +0 -16
  251. agents/code_inspection/patterns/inspection/recurring_bug_20250915_abc123.json +0 -16
  252. agents/code_inspection/patterns/inspection/recurring_bug_20251212_3c5b9951.json +0 -16
  253. agents/code_inspection/patterns/inspection/recurring_bug_20251212_97c0f72f.json +0 -16
  254. agents/code_inspection/patterns/inspection/recurring_bug_20251212_a0871d53.json +0 -16
  255. agents/code_inspection/patterns/inspection/recurring_bug_20251212_a9b6ec41.json +0 -16
  256. agents/code_inspection/patterns/inspection/recurring_bug_null_001.json +0 -16
  257. agents/code_inspection/patterns/inspection/recurring_builtin.json +0 -16
  258. agents/compliance_anticipation_agent.py +0 -1422
  259. agents/compliance_db.py +0 -339
  260. agents/epic_integration_wizard.py +0 -530
  261. agents/notifications.py +0 -291
  262. agents/trust_building_behaviors.py +0 -872
  263. empathy_framework-3.7.0.dist-info/RECORD +0 -105
  264. {empathy_framework-3.7.0.dist-info → empathy_framework-3.7.1.dist-info}/WHEEL +0 -0
  265. {empathy_framework-3.7.0.dist-info → empathy_framework-3.7.1.dist-info}/entry_points.txt +0 -0
  266. {empathy_framework-3.7.0.dist-info → empathy_framework-3.7.1.dist-info}/licenses/LICENSE +0 -0
  267. /empathy_os/{monitoring.py → agent_monitoring.py} +0 -0
@@ -0,0 +1,362 @@
1
+ """Code Inspection CLI
2
+
3
+ Command-line interface for the Code Inspection Agent Pipeline.
4
+
5
+ Usage:
6
+ empathy-inspect [path] [options]
7
+
8
+ Examples:
9
+ empathy-inspect . # Inspect current directory
10
+ empathy-inspect ./src --parallel # Parallel mode
11
+ empathy-inspect . --format json # JSON output
12
+ empathy-inspect . --staged # Only staged changes
13
+ empathy-inspect . --fix # Auto-fix safe issues
14
+
15
+ Copyright 2025 Smart AI Memory, LLC
16
+ Licensed under Fair Source 0.9
17
+
18
+ """
19
+
20
+ import argparse
21
+ import asyncio
22
+ import sys
23
+ from pathlib import Path
24
+
25
+
26
+ async def run_auto_fix(project_path: str, verbose: bool = False) -> int:
27
+ """Run auto-fix using ruff.
28
+
29
+ Args:
30
+ project_path: Path to project to fix
31
+ verbose: Whether to show verbose output
32
+
33
+ Returns:
34
+ Number of issues fixed
35
+
36
+ """
37
+ import subprocess
38
+
39
+ fixed_count = 0
40
+
41
+ # Run ruff check with --fix
42
+ try:
43
+ print("\nRunning ruff --fix...")
44
+ result = subprocess.run(
45
+ ["ruff", "check", project_path, "--fix", "--exit-zero"],
46
+ check=False,
47
+ capture_output=True,
48
+ text=True,
49
+ )
50
+
51
+ if verbose and result.stdout:
52
+ print(result.stdout)
53
+
54
+ # Count fixes from output
55
+ if "Fixed" in result.stdout:
56
+ # Parse "Fixed X errors" or similar
57
+ import re
58
+
59
+ match = re.search(r"Fixed (\d+)", result.stdout)
60
+ if match:
61
+ fixed_count += int(match.group(1))
62
+
63
+ except FileNotFoundError:
64
+ print("Warning: ruff not found. Install with: pip install ruff")
65
+ except Exception as e:
66
+ print(f"Warning: ruff fix failed: {e}")
67
+
68
+ # Run ruff format for formatting fixes
69
+ try:
70
+ print("Running ruff format...")
71
+ result = subprocess.run(
72
+ ["ruff", "format", project_path],
73
+ check=False,
74
+ capture_output=True,
75
+ text=True,
76
+ )
77
+
78
+ if verbose and result.stdout:
79
+ print(result.stdout)
80
+
81
+ # Count formatted files
82
+ if "file" in result.stderr.lower():
83
+ import re
84
+
85
+ match = re.search(r"(\d+) file", result.stderr)
86
+ if match:
87
+ fixed_count += int(match.group(1))
88
+
89
+ except FileNotFoundError:
90
+ pass # Already warned above
91
+ except Exception as e:
92
+ if verbose:
93
+ print(f"Warning: ruff format failed: {e}")
94
+
95
+ # Run isort for import sorting
96
+ try:
97
+ print("Running isort...")
98
+ result = subprocess.run(
99
+ ["isort", project_path, "--profile", "black"],
100
+ check=False,
101
+ capture_output=True,
102
+ text=True,
103
+ )
104
+
105
+ if verbose and result.stdout:
106
+ print(result.stdout)
107
+
108
+ # isort shows "Fixing" for each file
109
+ if "Fixing" in result.stdout:
110
+ fixed_count += result.stdout.count("Fixing")
111
+
112
+ except FileNotFoundError:
113
+ if verbose:
114
+ print("Note: isort not found. Install with: pip install isort")
115
+ except Exception as e:
116
+ if verbose:
117
+ print(f"Warning: isort failed: {e}")
118
+
119
+ return fixed_count
120
+
121
+
122
+ def parse_args() -> argparse.Namespace:
123
+ """Parse command-line arguments."""
124
+ parser = argparse.ArgumentParser(
125
+ prog="empathy-inspect",
126
+ description="Code Inspection Agent Pipeline",
127
+ formatter_class=argparse.RawDescriptionHelpFormatter,
128
+ epilog="""
129
+ Examples:
130
+ empathy-inspect . Inspect current directory
131
+ empathy-inspect ./src --parallel Run static checks in parallel
132
+ empathy-inspect . --format json Output as JSON
133
+ empathy-inspect . --staged Inspect staged git changes only
134
+ empathy-inspect . --quick Quick mode (skip slow checks)
135
+ """,
136
+ )
137
+
138
+ parser.add_argument(
139
+ "path",
140
+ nargs="?",
141
+ default=".",
142
+ help="Path to inspect (default: current directory)",
143
+ )
144
+
145
+ parser.add_argument(
146
+ "--parallel",
147
+ action="store_true",
148
+ default=True,
149
+ help="Run Phase 1 tools in parallel (default: True)",
150
+ )
151
+
152
+ parser.add_argument(
153
+ "--no-parallel",
154
+ action="store_true",
155
+ help="Disable parallel execution",
156
+ )
157
+
158
+ parser.add_argument(
159
+ "--learning",
160
+ action="store_true",
161
+ default=True,
162
+ help="Enable pattern learning (default: True)",
163
+ )
164
+
165
+ parser.add_argument(
166
+ "--no-learning",
167
+ action="store_true",
168
+ help="Disable pattern learning",
169
+ )
170
+
171
+ parser.add_argument(
172
+ "--format",
173
+ "-f",
174
+ choices=["terminal", "json", "markdown", "sarif", "html"],
175
+ default="terminal",
176
+ help="Output format (default: terminal). Use 'sarif' for GitHub Actions.",
177
+ )
178
+
179
+ parser.add_argument(
180
+ "--staged",
181
+ action="store_true",
182
+ help="Only inspect staged git changes",
183
+ )
184
+
185
+ parser.add_argument(
186
+ "--changed",
187
+ action="store_true",
188
+ help="Only inspect changed files (vs HEAD)",
189
+ )
190
+
191
+ parser.add_argument(
192
+ "--quick",
193
+ "-q",
194
+ action="store_true",
195
+ help="Quick mode (skip slow checks like deep debugging)",
196
+ )
197
+
198
+ parser.add_argument(
199
+ "--fix",
200
+ action="store_true",
201
+ help="Auto-fix safe issues (formatting, imports)",
202
+ )
203
+
204
+ parser.add_argument(
205
+ "--verbose",
206
+ "-v",
207
+ action="store_true",
208
+ help="Verbose output",
209
+ )
210
+
211
+ parser.add_argument(
212
+ "--output",
213
+ "-o",
214
+ type=str,
215
+ help="Write report to file",
216
+ )
217
+
218
+ parser.add_argument(
219
+ "--exclude",
220
+ "-e",
221
+ type=str,
222
+ action="append",
223
+ default=[],
224
+ help="Glob patterns to exclude (can be used multiple times)",
225
+ )
226
+
227
+ # Baseline/suppression options
228
+ parser.add_argument(
229
+ "--no-baseline",
230
+ action="store_true",
231
+ help="Disable baseline filtering (show all findings)",
232
+ )
233
+
234
+ parser.add_argument(
235
+ "--baseline-init",
236
+ action="store_true",
237
+ help="Create an empty .empathy-baseline.json file",
238
+ )
239
+
240
+ parser.add_argument(
241
+ "--baseline-cleanup",
242
+ action="store_true",
243
+ help="Remove expired suppressions from baseline",
244
+ )
245
+
246
+ return parser.parse_args()
247
+
248
+
249
+ async def run_inspection(args: argparse.Namespace) -> int:
250
+ """Run the inspection and return exit code."""
251
+ # Import here to avoid slow startup
252
+ from agents.code_inspection import CodeInspectionAgent
253
+
254
+ # Resolve path
255
+ project_path = str(Path(args.path).resolve())
256
+
257
+ # Determine target mode
258
+ if args.staged:
259
+ target_mode = "staged"
260
+ elif args.changed:
261
+ target_mode = "changed"
262
+ else:
263
+ target_mode = "all"
264
+
265
+ # Create agent
266
+ agent = CodeInspectionAgent(
267
+ parallel_mode=args.parallel and not args.no_parallel,
268
+ learning_enabled=args.learning and not args.no_learning,
269
+ baseline_enabled=not args.no_baseline,
270
+ )
271
+
272
+ # Configure verbose logging
273
+ if args.verbose:
274
+ import logging
275
+
276
+ logging.basicConfig(level=logging.DEBUG)
277
+
278
+ # Run inspection
279
+ state = await agent.inspect(
280
+ project_path=project_path,
281
+ target_mode=target_mode,
282
+ exclude_patterns=args.exclude if args.exclude else None,
283
+ )
284
+
285
+ # Format report
286
+ report = agent.format_report(state, args.format)
287
+
288
+ # Output
289
+ if args.output:
290
+ output_path = Path(args.output)
291
+ output_path.write_text(report)
292
+ print(f"Report written to {output_path}")
293
+ else:
294
+ print(report)
295
+
296
+ # Auto-fix if requested
297
+ if args.fix:
298
+ fixed_count = await run_auto_fix(project_path, args.verbose)
299
+ if fixed_count > 0:
300
+ print(f"\nAuto-fixed {fixed_count} issues. Run inspection again to verify.")
301
+
302
+ # Return exit code based on health status
303
+ if state["health_status"] == "fail":
304
+ return 1
305
+ if state["health_status"] == "warn":
306
+ return 0 # Warn but don't fail
307
+ return 0
308
+
309
+
310
+ def handle_baseline_commands(args: argparse.Namespace) -> bool:
311
+ """Handle baseline-specific commands.
312
+
313
+ Returns:
314
+ True if a baseline command was handled (and should exit)
315
+
316
+ """
317
+ from agents.code_inspection.baseline import BaselineManager, create_baseline_file
318
+
319
+ project_path = str(Path(args.path).resolve())
320
+
321
+ if args.baseline_init:
322
+ baseline_path = create_baseline_file(project_path)
323
+ print(f"Created baseline file: {baseline_path}")
324
+ return True
325
+
326
+ if args.baseline_cleanup:
327
+ manager = BaselineManager(project_path)
328
+ if manager.load():
329
+ removed = manager.cleanup_expired()
330
+ print(f"Removed {removed} expired suppressions")
331
+ else:
332
+ print("No baseline file found")
333
+ return True
334
+
335
+ return False
336
+
337
+
338
+ def main():
339
+ """Main entry point for CLI."""
340
+ args = parse_args()
341
+
342
+ try:
343
+ # Handle baseline commands first
344
+ if handle_baseline_commands(args):
345
+ sys.exit(0)
346
+
347
+ exit_code = asyncio.run(run_inspection(args))
348
+ sys.exit(exit_code)
349
+ except KeyboardInterrupt:
350
+ print("\nInspection cancelled.")
351
+ sys.exit(130)
352
+ except Exception as e:
353
+ print(f"Error: {e}", file=sys.stderr)
354
+ if args.verbose:
355
+ import traceback
356
+
357
+ traceback.print_exc()
358
+ sys.exit(1)
359
+
360
+
361
+ if __name__ == "__main__":
362
+ main()
@@ -662,7 +662,9 @@ def scan_command():
662
662
  severity_icon = (
663
663
  "🔴"
664
664
  if issue.severity == "high"
665
- else "🟡" if issue.severity == "medium" else "🔵"
665
+ else "🟡"
666
+ if issue.severity == "medium"
667
+ else "🔵"
666
668
  )
667
669
  print(f" {severity_icon} Line {issue.line_number}: {issue.message}")
668
670
  if len(result.issues) > 3:
@@ -0,0 +1,42 @@
1
+ """Software Development Wizards
2
+
3
+ Production-ready wizards for software development with memory enhancement.
4
+
5
+ Memory-Enhanced Wizards (Level 4+):
6
+ - MemoryEnhancedDebuggingWizard: Bug correlation with historical patterns
7
+ - TechDebtWizard: Tech debt trajectory tracking and prediction
8
+ - SecurityLearningWizard: Security scanning with false positive learning
9
+
10
+ Utility Wizards:
11
+ - PatternRetrieverWizard: Pattern search and retrieval (Level 3)
12
+ - PatternExtractionWizard: Auto-detect fixes and suggest patterns (Level 3)
13
+ - CodeReviewWizard: Pattern-based code review (Level 4)
14
+
15
+ Core Wizards:
16
+ - SecurityAnalysisWizard: OWASP vulnerability detection
17
+ - AdvancedDebuggingWizard: Protocol-based debugging
18
+ - PerformanceProfilingWizard: Performance analysis
19
+ - TestingWizard: Test coverage and quality
20
+ - AIDocumentationWizard: Documentation generation
21
+
22
+ Copyright 2025 Smart AI Memory, LLC
23
+ Licensed under Fair Source 0.9
24
+ """
25
+
26
+ from .base_wizard import BaseWizard
27
+ from .code_review_wizard import CodeReviewWizard
28
+ from .memory_enhanced_debugging_wizard import MemoryEnhancedDebuggingWizard
29
+ from .pattern_extraction_wizard import PatternExtractionWizard
30
+ from .pattern_retriever_wizard import PatternRetrieverWizard
31
+ from .security_learning_wizard import SecurityLearningWizard
32
+ from .tech_debt_wizard import TechDebtWizard
33
+
34
+ __all__ = [
35
+ "BaseWizard",
36
+ "CodeReviewWizard",
37
+ "MemoryEnhancedDebuggingWizard",
38
+ "PatternExtractionWizard",
39
+ "PatternRetrieverWizard",
40
+ "SecurityLearningWizard",
41
+ "TechDebtWizard",
42
+ ]