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,304 @@
1
+ """Secrets Detector Examples
2
+
3
+ Demonstrates practical usage of the SecretsDetector module for
4
+ enterprise privacy integration.
5
+
6
+ Author: Empathy Framework Team
7
+ Version: 1.8.0-beta
8
+ """
9
+
10
+ from empathy_llm_toolkit.security import SecretsDetector, SecretType, Severity, detect_secrets
11
+
12
+
13
+ def example_1_basic_detection():
14
+ """Example 1: Basic secrets detection"""
15
+ print("=" * 60)
16
+ print("Example 1: Basic Secrets Detection")
17
+ print("=" * 60)
18
+
19
+ detector = SecretsDetector()
20
+
21
+ # Sample code with secrets
22
+ code = """
23
+ # Configuration
24
+ ANTHROPIC_API_KEY = "sk-ant-api03-abc123xyz789def456ghi789jkl012mno345pqr678stu901vwx"
25
+ password = "my_secret_password"
26
+ DATABASE_URL = "postgres://user:pass123@localhost:5432/db"
27
+ """
28
+
29
+ detections = detector.detect(code)
30
+
31
+ print(f"Found {len(detections)} secrets:\n")
32
+ for d in detections:
33
+ print(f" {d.secret_type.value}")
34
+ print(f" Severity: {d.severity.value}")
35
+ print(f" Location: Line {d.line_number}, Column {d.column_start}")
36
+ print(f" Context: {d.context_snippet}")
37
+ print()
38
+
39
+
40
+ def example_2_file_scanning():
41
+ """Example 2: Scan a configuration file"""
42
+ print("=" * 60)
43
+ print("Example 2: File Scanning")
44
+ print("=" * 60)
45
+
46
+ def scan_file_for_secrets(file_path: str) -> bool:
47
+ """Scan a file for secrets and report findings.
48
+
49
+ Returns:
50
+ True if no secrets found, False otherwise
51
+
52
+ """
53
+ detector = SecretsDetector()
54
+
55
+ try:
56
+ with open(file_path) as f:
57
+ content = f.read()
58
+
59
+ detections = detector.detect(content)
60
+
61
+ if detections:
62
+ print(f"⚠️ Found {len(detections)} secrets in {file_path}")
63
+
64
+ # Group by severity
65
+ critical = [d for d in detections if d.severity == Severity.CRITICAL]
66
+ high = [d for d in detections if d.severity == Severity.HIGH]
67
+ medium = [d for d in detections if d.severity == Severity.MEDIUM]
68
+
69
+ if critical:
70
+ print(f"\n CRITICAL ({len(critical)}):")
71
+ for d in critical:
72
+ print(f" - {d.secret_type.value} at line {d.line_number}")
73
+
74
+ if high:
75
+ print(f"\n HIGH ({len(high)}):")
76
+ for d in high:
77
+ print(f" - {d.secret_type.value} at line {d.line_number}")
78
+
79
+ if medium:
80
+ print(f"\n MEDIUM ({len(medium)}):")
81
+ for d in medium:
82
+ print(f" - {d.secret_type.value} at line {d.line_number}")
83
+
84
+ return False
85
+
86
+ print(f"✓ No secrets found in {file_path}")
87
+ return True
88
+
89
+ except FileNotFoundError:
90
+ print(f"❌ File not found: {file_path}")
91
+ return False
92
+
93
+ # Example usage
94
+ print("\nScanning example file...")
95
+ # In practice, you would scan actual files:
96
+ # scan_file_for_secrets(".env")
97
+ # scan_file_for_secrets("config.py")
98
+ print("(File scanning function ready to use)")
99
+
100
+
101
+ def example_3_custom_patterns():
102
+ """Example 3: Organization-specific secrets"""
103
+ print("\n" + "=" * 60)
104
+ print("Example 3: Custom Patterns for Organization Secrets")
105
+ print("=" * 60)
106
+
107
+ detector = SecretsDetector()
108
+
109
+ # Add company-specific patterns
110
+ detector.add_custom_pattern(name="acme_api_key", pattern=r"ACME_[A-Z0-9]{32}", severity="high")
111
+
112
+ detector.add_custom_pattern(
113
+ name="internal_token",
114
+ pattern=r"INT_TKN_[a-z0-9]{24}",
115
+ severity="medium",
116
+ )
117
+
118
+ # Test with custom secrets
119
+ code = (
120
+ "# Company-specific credentials\n"
121
+ "ACME_" + "A" * 32 + "\n" + "INT_TKN_abc123def456ghi789jkl012\n"
122
+ )
123
+
124
+ detections = detector.detect(code)
125
+
126
+ print(f"Found {len(detections)} company-specific secrets:\n")
127
+ for d in detections:
128
+ if "custom_pattern" in d.metadata:
129
+ print(f" Custom Pattern: {d.metadata['custom_pattern']}")
130
+ print(f" Severity: {d.severity.value}")
131
+ print(f" Location: Line {d.line_number}")
132
+ print()
133
+
134
+
135
+ def example_4_entropy_detection():
136
+ """Example 4: High entropy string detection"""
137
+ print("=" * 60)
138
+ print("Example 4: Entropy-Based Detection")
139
+ print("=" * 60)
140
+
141
+ # Enable entropy detection
142
+ detector = SecretsDetector(enable_entropy_analysis=True, entropy_threshold=4.5)
143
+
144
+ code = """
145
+ # High entropy strings (likely secrets)
146
+ token = "aB3xK9mQ7pL2wE5rT8uY1iO4sD6fG0hJ"
147
+
148
+ # Low entropy strings (not secrets)
149
+ name = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
150
+ """
151
+
152
+ detections = detector.detect(code)
153
+
154
+ print(f"Found {len(detections)} high-entropy strings:\n")
155
+ for d in detections:
156
+ if d.secret_type == SecretType.HIGH_ENTROPY_STRING:
157
+ print(" High Entropy String")
158
+ print(f" Confidence: {d.confidence:.2f}")
159
+ print(f" Entropy: {d.metadata.get('entropy', 'N/A')}")
160
+ print(f" Length: {d.metadata.get('length', 'N/A')}")
161
+ print(f" Location: Line {d.line_number}")
162
+ print()
163
+
164
+
165
+ def example_5_ci_cd_integration():
166
+ """Example 5: CI/CD Pipeline Integration"""
167
+ print("=" * 60)
168
+ print("Example 5: CI/CD Pipeline Integration")
169
+ print("=" * 60)
170
+
171
+ def pre_commit_secrets_check(staged_files: list[str]) -> bool:
172
+ """Pre-commit hook to check for secrets.
173
+
174
+ Args:
175
+ staged_files: List of files to check
176
+
177
+ Returns:
178
+ True if no secrets found, False if secrets detected
179
+
180
+ """
181
+ detector = SecretsDetector()
182
+ all_clean = True
183
+
184
+ for file_path in staged_files:
185
+ # Skip binary files, node_modules, etc.
186
+ if any(
187
+ skip in file_path
188
+ for skip in [
189
+ "node_modules/",
190
+ ".git/",
191
+ "__pycache__/",
192
+ ".pyc",
193
+ ".jpg",
194
+ ".png",
195
+ ]
196
+ ):
197
+ continue
198
+
199
+ try:
200
+ with open(file_path, encoding="utf-8") as f:
201
+ content = f.read()
202
+
203
+ detections = detector.detect(content)
204
+
205
+ if detections:
206
+ print(f"❌ SECRETS DETECTED in {file_path}")
207
+ for d in detections:
208
+ print(f" - {d.secret_type.value} at line {d.line_number}")
209
+ all_clean = False
210
+
211
+ except (UnicodeDecodeError, FileNotFoundError):
212
+ # Skip files that can't be read
213
+ continue
214
+
215
+ return all_clean
216
+
217
+ # Example usage
218
+ print("\nPre-commit hook function ready.")
219
+ print("In practice, integrate with git hooks:")
220
+ print(" - .git/hooks/pre-commit")
221
+ print(" - pre-commit framework")
222
+ print(" - GitHub Actions")
223
+
224
+
225
+ def example_6_audit_integration():
226
+ """Example 6: Integration with audit logging"""
227
+ print("\n" + "=" * 60)
228
+ print("Example 6: Audit Trail Integration")
229
+ print("=" * 60)
230
+
231
+ def detect_and_audit(content: str, user_id: str, file_path: str) -> dict:
232
+ """Detect secrets and create audit log entry.
233
+
234
+ Args:
235
+ content: Content to scan
236
+ user_id: User performing the action
237
+ file_path: Path to file being scanned
238
+
239
+ Returns:
240
+ Audit log entry dictionary
241
+
242
+ """
243
+ detector = SecretsDetector()
244
+ detections = detector.detect(content)
245
+
246
+ audit_entry = {
247
+ "timestamp": "2025-11-24T14:00:00Z",
248
+ "user_id": user_id,
249
+ "action": "secrets_scan",
250
+ "file_path": file_path,
251
+ "secrets_detected": len(detections),
252
+ "secret_types": [d.secret_type.value for d in detections],
253
+ "severity_counts": {
254
+ "critical": sum(1 for d in detections if d.severity == Severity.CRITICAL),
255
+ "high": sum(1 for d in detections if d.severity == Severity.HIGH),
256
+ "medium": sum(1 for d in detections if d.severity == Severity.MEDIUM),
257
+ "low": sum(1 for d in detections if d.severity == Severity.LOW),
258
+ },
259
+ "status": "blocked" if detections else "passed",
260
+ }
261
+
262
+ return audit_entry
263
+
264
+ # Example usage
265
+ code = 'api_key = "sk-test-abc123xyz789"'
266
+ audit_entry = detect_and_audit(code, "user@example.com", "config.py")
267
+
268
+ print("\nAudit Log Entry:")
269
+ for key, value in audit_entry.items():
270
+ print(f" {key}: {value}")
271
+
272
+
273
+ def example_7_convenience_function():
274
+ """Example 7: Quick one-liner detection"""
275
+ print("\n" + "=" * 60)
276
+ print("Example 7: Convenience Function")
277
+ print("=" * 60)
278
+
279
+ # One-liner for quick detection
280
+ detections = detect_secrets('password = "secret123"')
281
+
282
+ print(f"Quick detection: {len(detections)} secret(s) found")
283
+ if detections:
284
+ print(f" Type: {detections[0].secret_type.value}")
285
+ print(f" Severity: {detections[0].severity.value}")
286
+
287
+
288
+ def main():
289
+ """Run all examples"""
290
+ example_1_basic_detection()
291
+ example_2_file_scanning()
292
+ example_3_custom_patterns()
293
+ example_4_entropy_detection()
294
+ example_5_ci_cd_integration()
295
+ example_6_audit_integration()
296
+ example_7_convenience_function()
297
+
298
+ print("\n" + "=" * 60)
299
+ print("All examples completed!")
300
+ print("=" * 60)
301
+
302
+
303
+ if __name__ == "__main__":
304
+ main()