attune-ai 2.0.0__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 (457) hide show
  1. attune/__init__.py +358 -0
  2. attune/adaptive/__init__.py +13 -0
  3. attune/adaptive/task_complexity.py +127 -0
  4. attune/agent_monitoring.py +414 -0
  5. attune/cache/__init__.py +117 -0
  6. attune/cache/base.py +166 -0
  7. attune/cache/dependency_manager.py +256 -0
  8. attune/cache/hash_only.py +251 -0
  9. attune/cache/hybrid.py +457 -0
  10. attune/cache/storage.py +285 -0
  11. attune/cache_monitor.py +356 -0
  12. attune/cache_stats.py +298 -0
  13. attune/cli/__init__.py +152 -0
  14. attune/cli/__main__.py +12 -0
  15. attune/cli/commands/__init__.py +1 -0
  16. attune/cli/commands/batch.py +264 -0
  17. attune/cli/commands/cache.py +248 -0
  18. attune/cli/commands/help.py +331 -0
  19. attune/cli/commands/info.py +140 -0
  20. attune/cli/commands/inspect.py +436 -0
  21. attune/cli/commands/inspection.py +57 -0
  22. attune/cli/commands/memory.py +48 -0
  23. attune/cli/commands/metrics.py +92 -0
  24. attune/cli/commands/orchestrate.py +184 -0
  25. attune/cli/commands/patterns.py +207 -0
  26. attune/cli/commands/profiling.py +202 -0
  27. attune/cli/commands/provider.py +98 -0
  28. attune/cli/commands/routing.py +285 -0
  29. attune/cli/commands/setup.py +96 -0
  30. attune/cli/commands/status.py +235 -0
  31. attune/cli/commands/sync.py +166 -0
  32. attune/cli/commands/tier.py +121 -0
  33. attune/cli/commands/utilities.py +114 -0
  34. attune/cli/commands/workflow.py +579 -0
  35. attune/cli/core.py +32 -0
  36. attune/cli/parsers/__init__.py +68 -0
  37. attune/cli/parsers/batch.py +118 -0
  38. attune/cli/parsers/cache.py +65 -0
  39. attune/cli/parsers/help.py +41 -0
  40. attune/cli/parsers/info.py +26 -0
  41. attune/cli/parsers/inspect.py +66 -0
  42. attune/cli/parsers/metrics.py +42 -0
  43. attune/cli/parsers/orchestrate.py +61 -0
  44. attune/cli/parsers/patterns.py +54 -0
  45. attune/cli/parsers/provider.py +40 -0
  46. attune/cli/parsers/routing.py +110 -0
  47. attune/cli/parsers/setup.py +42 -0
  48. attune/cli/parsers/status.py +47 -0
  49. attune/cli/parsers/sync.py +31 -0
  50. attune/cli/parsers/tier.py +33 -0
  51. attune/cli/parsers/workflow.py +77 -0
  52. attune/cli/utils/__init__.py +1 -0
  53. attune/cli/utils/data.py +242 -0
  54. attune/cli/utils/helpers.py +68 -0
  55. attune/cli_legacy.py +3957 -0
  56. attune/cli_minimal.py +1159 -0
  57. attune/cli_router.py +437 -0
  58. attune/cli_unified.py +814 -0
  59. attune/config/__init__.py +66 -0
  60. attune/config/xml_config.py +286 -0
  61. attune/config.py +545 -0
  62. attune/coordination.py +870 -0
  63. attune/core.py +1511 -0
  64. attune/core_modules/__init__.py +15 -0
  65. attune/cost_tracker.py +626 -0
  66. attune/dashboard/__init__.py +41 -0
  67. attune/dashboard/app.py +512 -0
  68. attune/dashboard/simple_server.py +435 -0
  69. attune/dashboard/standalone_server.py +547 -0
  70. attune/discovery.py +306 -0
  71. attune/emergence.py +306 -0
  72. attune/exceptions.py +123 -0
  73. attune/feedback_loops.py +373 -0
  74. attune/hot_reload/README.md +473 -0
  75. attune/hot_reload/__init__.py +62 -0
  76. attune/hot_reload/config.py +83 -0
  77. attune/hot_reload/integration.py +229 -0
  78. attune/hot_reload/reloader.py +298 -0
  79. attune/hot_reload/watcher.py +183 -0
  80. attune/hot_reload/websocket.py +177 -0
  81. attune/levels.py +577 -0
  82. attune/leverage_points.py +441 -0
  83. attune/logging_config.py +261 -0
  84. attune/mcp/__init__.py +10 -0
  85. attune/mcp/server.py +506 -0
  86. attune/memory/__init__.py +237 -0
  87. attune/memory/claude_memory.py +469 -0
  88. attune/memory/config.py +224 -0
  89. attune/memory/control_panel.py +1290 -0
  90. attune/memory/control_panel_support.py +145 -0
  91. attune/memory/cross_session.py +845 -0
  92. attune/memory/edges.py +179 -0
  93. attune/memory/encryption.py +159 -0
  94. attune/memory/file_session.py +770 -0
  95. attune/memory/graph.py +570 -0
  96. attune/memory/long_term.py +913 -0
  97. attune/memory/long_term_types.py +99 -0
  98. attune/memory/mixins/__init__.py +25 -0
  99. attune/memory/mixins/backend_init_mixin.py +249 -0
  100. attune/memory/mixins/capabilities_mixin.py +208 -0
  101. attune/memory/mixins/handoff_mixin.py +208 -0
  102. attune/memory/mixins/lifecycle_mixin.py +49 -0
  103. attune/memory/mixins/long_term_mixin.py +352 -0
  104. attune/memory/mixins/promotion_mixin.py +109 -0
  105. attune/memory/mixins/short_term_mixin.py +182 -0
  106. attune/memory/nodes.py +179 -0
  107. attune/memory/redis_bootstrap.py +540 -0
  108. attune/memory/security/__init__.py +31 -0
  109. attune/memory/security/audit_logger.py +932 -0
  110. attune/memory/security/pii_scrubber.py +640 -0
  111. attune/memory/security/secrets_detector.py +678 -0
  112. attune/memory/short_term.py +2192 -0
  113. attune/memory/simple_storage.py +302 -0
  114. attune/memory/storage/__init__.py +15 -0
  115. attune/memory/storage_backend.py +167 -0
  116. attune/memory/summary_index.py +583 -0
  117. attune/memory/types.py +446 -0
  118. attune/memory/unified.py +182 -0
  119. attune/meta_workflows/__init__.py +74 -0
  120. attune/meta_workflows/agent_creator.py +248 -0
  121. attune/meta_workflows/builtin_templates.py +567 -0
  122. attune/meta_workflows/cli_commands/__init__.py +56 -0
  123. attune/meta_workflows/cli_commands/agent_commands.py +321 -0
  124. attune/meta_workflows/cli_commands/analytics_commands.py +442 -0
  125. attune/meta_workflows/cli_commands/config_commands.py +232 -0
  126. attune/meta_workflows/cli_commands/memory_commands.py +182 -0
  127. attune/meta_workflows/cli_commands/template_commands.py +354 -0
  128. attune/meta_workflows/cli_commands/workflow_commands.py +382 -0
  129. attune/meta_workflows/cli_meta_workflows.py +59 -0
  130. attune/meta_workflows/form_engine.py +292 -0
  131. attune/meta_workflows/intent_detector.py +409 -0
  132. attune/meta_workflows/models.py +569 -0
  133. attune/meta_workflows/pattern_learner.py +738 -0
  134. attune/meta_workflows/plan_generator.py +384 -0
  135. attune/meta_workflows/session_context.py +397 -0
  136. attune/meta_workflows/template_registry.py +229 -0
  137. attune/meta_workflows/workflow.py +984 -0
  138. attune/metrics/__init__.py +12 -0
  139. attune/metrics/collector.py +31 -0
  140. attune/metrics/prompt_metrics.py +194 -0
  141. attune/models/__init__.py +172 -0
  142. attune/models/__main__.py +13 -0
  143. attune/models/adaptive_routing.py +437 -0
  144. attune/models/auth_cli.py +444 -0
  145. attune/models/auth_strategy.py +450 -0
  146. attune/models/cli.py +655 -0
  147. attune/models/empathy_executor.py +354 -0
  148. attune/models/executor.py +257 -0
  149. attune/models/fallback.py +762 -0
  150. attune/models/provider_config.py +282 -0
  151. attune/models/registry.py +472 -0
  152. attune/models/tasks.py +359 -0
  153. attune/models/telemetry/__init__.py +71 -0
  154. attune/models/telemetry/analytics.py +594 -0
  155. attune/models/telemetry/backend.py +196 -0
  156. attune/models/telemetry/data_models.py +431 -0
  157. attune/models/telemetry/storage.py +489 -0
  158. attune/models/token_estimator.py +420 -0
  159. attune/models/validation.py +280 -0
  160. attune/monitoring/__init__.py +52 -0
  161. attune/monitoring/alerts.py +946 -0
  162. attune/monitoring/alerts_cli.py +448 -0
  163. attune/monitoring/multi_backend.py +271 -0
  164. attune/monitoring/otel_backend.py +362 -0
  165. attune/optimization/__init__.py +19 -0
  166. attune/optimization/context_optimizer.py +272 -0
  167. attune/orchestration/__init__.py +67 -0
  168. attune/orchestration/agent_templates.py +707 -0
  169. attune/orchestration/config_store.py +499 -0
  170. attune/orchestration/execution_strategies.py +2111 -0
  171. attune/orchestration/meta_orchestrator.py +1168 -0
  172. attune/orchestration/pattern_learner.py +696 -0
  173. attune/orchestration/real_tools.py +931 -0
  174. attune/pattern_cache.py +187 -0
  175. attune/pattern_library.py +542 -0
  176. attune/patterns/debugging/all_patterns.json +81 -0
  177. attune/patterns/debugging/workflow_20260107_1770825e.json +77 -0
  178. attune/patterns/refactoring_memory.json +89 -0
  179. attune/persistence.py +564 -0
  180. attune/platform_utils.py +265 -0
  181. attune/plugins/__init__.py +28 -0
  182. attune/plugins/base.py +361 -0
  183. attune/plugins/registry.py +268 -0
  184. attune/project_index/__init__.py +32 -0
  185. attune/project_index/cli.py +335 -0
  186. attune/project_index/index.py +667 -0
  187. attune/project_index/models.py +504 -0
  188. attune/project_index/reports.py +474 -0
  189. attune/project_index/scanner.py +777 -0
  190. attune/project_index/scanner_parallel.py +291 -0
  191. attune/prompts/__init__.py +61 -0
  192. attune/prompts/config.py +77 -0
  193. attune/prompts/context.py +177 -0
  194. attune/prompts/parser.py +285 -0
  195. attune/prompts/registry.py +313 -0
  196. attune/prompts/templates.py +208 -0
  197. attune/redis_config.py +302 -0
  198. attune/redis_memory.py +799 -0
  199. attune/resilience/__init__.py +56 -0
  200. attune/resilience/circuit_breaker.py +256 -0
  201. attune/resilience/fallback.py +179 -0
  202. attune/resilience/health.py +300 -0
  203. attune/resilience/retry.py +209 -0
  204. attune/resilience/timeout.py +135 -0
  205. attune/routing/__init__.py +43 -0
  206. attune/routing/chain_executor.py +433 -0
  207. attune/routing/classifier.py +217 -0
  208. attune/routing/smart_router.py +234 -0
  209. attune/routing/workflow_registry.py +343 -0
  210. attune/scaffolding/README.md +589 -0
  211. attune/scaffolding/__init__.py +35 -0
  212. attune/scaffolding/__main__.py +14 -0
  213. attune/scaffolding/cli.py +240 -0
  214. attune/scaffolding/templates/base_wizard.py.jinja2 +121 -0
  215. attune/scaffolding/templates/coach_wizard.py.jinja2 +321 -0
  216. attune/scaffolding/templates/domain_wizard.py.jinja2 +408 -0
  217. attune/scaffolding/templates/linear_flow_wizard.py.jinja2 +203 -0
  218. attune/socratic/__init__.py +256 -0
  219. attune/socratic/ab_testing.py +958 -0
  220. attune/socratic/blueprint.py +533 -0
  221. attune/socratic/cli.py +703 -0
  222. attune/socratic/collaboration.py +1114 -0
  223. attune/socratic/domain_templates.py +924 -0
  224. attune/socratic/embeddings.py +738 -0
  225. attune/socratic/engine.py +794 -0
  226. attune/socratic/explainer.py +682 -0
  227. attune/socratic/feedback.py +772 -0
  228. attune/socratic/forms.py +629 -0
  229. attune/socratic/generator.py +732 -0
  230. attune/socratic/llm_analyzer.py +637 -0
  231. attune/socratic/mcp_server.py +702 -0
  232. attune/socratic/session.py +312 -0
  233. attune/socratic/storage.py +667 -0
  234. attune/socratic/success.py +730 -0
  235. attune/socratic/visual_editor.py +860 -0
  236. attune/socratic/web_ui.py +958 -0
  237. attune/telemetry/__init__.py +39 -0
  238. attune/telemetry/agent_coordination.py +475 -0
  239. attune/telemetry/agent_tracking.py +367 -0
  240. attune/telemetry/approval_gates.py +545 -0
  241. attune/telemetry/cli.py +1231 -0
  242. attune/telemetry/commands/__init__.py +14 -0
  243. attune/telemetry/commands/dashboard_commands.py +696 -0
  244. attune/telemetry/event_streaming.py +409 -0
  245. attune/telemetry/feedback_loop.py +567 -0
  246. attune/telemetry/usage_tracker.py +591 -0
  247. attune/templates.py +754 -0
  248. attune/test_generator/__init__.py +38 -0
  249. attune/test_generator/__main__.py +14 -0
  250. attune/test_generator/cli.py +234 -0
  251. attune/test_generator/generator.py +355 -0
  252. attune/test_generator/risk_analyzer.py +216 -0
  253. attune/test_generator/templates/unit_test.py.jinja2 +272 -0
  254. attune/tier_recommender.py +384 -0
  255. attune/tools.py +183 -0
  256. attune/trust/__init__.py +28 -0
  257. attune/trust/circuit_breaker.py +579 -0
  258. attune/trust_building.py +527 -0
  259. attune/validation/__init__.py +19 -0
  260. attune/validation/xml_validator.py +281 -0
  261. attune/vscode_bridge.py +173 -0
  262. attune/workflow_commands.py +780 -0
  263. attune/workflow_patterns/__init__.py +33 -0
  264. attune/workflow_patterns/behavior.py +249 -0
  265. attune/workflow_patterns/core.py +76 -0
  266. attune/workflow_patterns/output.py +99 -0
  267. attune/workflow_patterns/registry.py +255 -0
  268. attune/workflow_patterns/structural.py +288 -0
  269. attune/workflows/__init__.py +539 -0
  270. attune/workflows/autonomous_test_gen.py +1268 -0
  271. attune/workflows/base.py +2667 -0
  272. attune/workflows/batch_processing.py +342 -0
  273. attune/workflows/bug_predict.py +1084 -0
  274. attune/workflows/builder.py +273 -0
  275. attune/workflows/caching.py +253 -0
  276. attune/workflows/code_review.py +1048 -0
  277. attune/workflows/code_review_adapters.py +312 -0
  278. attune/workflows/code_review_pipeline.py +722 -0
  279. attune/workflows/config.py +645 -0
  280. attune/workflows/dependency_check.py +644 -0
  281. attune/workflows/document_gen/__init__.py +25 -0
  282. attune/workflows/document_gen/config.py +30 -0
  283. attune/workflows/document_gen/report_formatter.py +162 -0
  284. attune/workflows/document_gen/workflow.py +1426 -0
  285. attune/workflows/document_manager.py +216 -0
  286. attune/workflows/document_manager_README.md +134 -0
  287. attune/workflows/documentation_orchestrator.py +1205 -0
  288. attune/workflows/history.py +510 -0
  289. attune/workflows/keyboard_shortcuts/__init__.py +39 -0
  290. attune/workflows/keyboard_shortcuts/generators.py +391 -0
  291. attune/workflows/keyboard_shortcuts/parsers.py +416 -0
  292. attune/workflows/keyboard_shortcuts/prompts.py +295 -0
  293. attune/workflows/keyboard_shortcuts/schema.py +193 -0
  294. attune/workflows/keyboard_shortcuts/workflow.py +509 -0
  295. attune/workflows/llm_base.py +363 -0
  296. attune/workflows/manage_docs.py +87 -0
  297. attune/workflows/manage_docs_README.md +134 -0
  298. attune/workflows/manage_documentation.py +821 -0
  299. attune/workflows/new_sample_workflow1.py +149 -0
  300. attune/workflows/new_sample_workflow1_README.md +150 -0
  301. attune/workflows/orchestrated_health_check.py +849 -0
  302. attune/workflows/orchestrated_release_prep.py +600 -0
  303. attune/workflows/output.py +413 -0
  304. attune/workflows/perf_audit.py +863 -0
  305. attune/workflows/pr_review.py +762 -0
  306. attune/workflows/progress.py +785 -0
  307. attune/workflows/progress_server.py +322 -0
  308. attune/workflows/progressive/README 2.md +454 -0
  309. attune/workflows/progressive/README.md +454 -0
  310. attune/workflows/progressive/__init__.py +82 -0
  311. attune/workflows/progressive/cli.py +219 -0
  312. attune/workflows/progressive/core.py +488 -0
  313. attune/workflows/progressive/orchestrator.py +723 -0
  314. attune/workflows/progressive/reports.py +520 -0
  315. attune/workflows/progressive/telemetry.py +274 -0
  316. attune/workflows/progressive/test_gen.py +495 -0
  317. attune/workflows/progressive/workflow.py +589 -0
  318. attune/workflows/refactor_plan.py +694 -0
  319. attune/workflows/release_prep.py +895 -0
  320. attune/workflows/release_prep_crew.py +969 -0
  321. attune/workflows/research_synthesis.py +404 -0
  322. attune/workflows/routing.py +168 -0
  323. attune/workflows/secure_release.py +593 -0
  324. attune/workflows/security_adapters.py +297 -0
  325. attune/workflows/security_audit.py +1329 -0
  326. attune/workflows/security_audit_phase3.py +355 -0
  327. attune/workflows/seo_optimization.py +633 -0
  328. attune/workflows/step_config.py +234 -0
  329. attune/workflows/telemetry_mixin.py +269 -0
  330. attune/workflows/test5.py +125 -0
  331. attune/workflows/test5_README.md +158 -0
  332. attune/workflows/test_coverage_boost_crew.py +849 -0
  333. attune/workflows/test_gen/__init__.py +52 -0
  334. attune/workflows/test_gen/ast_analyzer.py +249 -0
  335. attune/workflows/test_gen/config.py +88 -0
  336. attune/workflows/test_gen/data_models.py +38 -0
  337. attune/workflows/test_gen/report_formatter.py +289 -0
  338. attune/workflows/test_gen/test_templates.py +381 -0
  339. attune/workflows/test_gen/workflow.py +655 -0
  340. attune/workflows/test_gen.py +54 -0
  341. attune/workflows/test_gen_behavioral.py +477 -0
  342. attune/workflows/test_gen_parallel.py +341 -0
  343. attune/workflows/test_lifecycle.py +526 -0
  344. attune/workflows/test_maintenance.py +627 -0
  345. attune/workflows/test_maintenance_cli.py +590 -0
  346. attune/workflows/test_maintenance_crew.py +840 -0
  347. attune/workflows/test_runner.py +622 -0
  348. attune/workflows/tier_tracking.py +531 -0
  349. attune/workflows/xml_enhanced_crew.py +285 -0
  350. attune_ai-2.0.0.dist-info/METADATA +1026 -0
  351. attune_ai-2.0.0.dist-info/RECORD +457 -0
  352. attune_ai-2.0.0.dist-info/WHEEL +5 -0
  353. attune_ai-2.0.0.dist-info/entry_points.txt +26 -0
  354. attune_ai-2.0.0.dist-info/licenses/LICENSE +201 -0
  355. attune_ai-2.0.0.dist-info/licenses/LICENSE_CHANGE_ANNOUNCEMENT.md +101 -0
  356. attune_ai-2.0.0.dist-info/top_level.txt +5 -0
  357. attune_healthcare/__init__.py +13 -0
  358. attune_healthcare/monitors/__init__.py +9 -0
  359. attune_healthcare/monitors/clinical_protocol_monitor.py +315 -0
  360. attune_healthcare/monitors/monitoring/__init__.py +44 -0
  361. attune_healthcare/monitors/monitoring/protocol_checker.py +300 -0
  362. attune_healthcare/monitors/monitoring/protocol_loader.py +214 -0
  363. attune_healthcare/monitors/monitoring/sensor_parsers.py +306 -0
  364. attune_healthcare/monitors/monitoring/trajectory_analyzer.py +389 -0
  365. attune_llm/README.md +553 -0
  366. attune_llm/__init__.py +28 -0
  367. attune_llm/agent_factory/__init__.py +53 -0
  368. attune_llm/agent_factory/adapters/__init__.py +85 -0
  369. attune_llm/agent_factory/adapters/autogen_adapter.py +312 -0
  370. attune_llm/agent_factory/adapters/crewai_adapter.py +483 -0
  371. attune_llm/agent_factory/adapters/haystack_adapter.py +298 -0
  372. attune_llm/agent_factory/adapters/langchain_adapter.py +362 -0
  373. attune_llm/agent_factory/adapters/langgraph_adapter.py +333 -0
  374. attune_llm/agent_factory/adapters/native.py +228 -0
  375. attune_llm/agent_factory/adapters/wizard_adapter.py +423 -0
  376. attune_llm/agent_factory/base.py +305 -0
  377. attune_llm/agent_factory/crews/__init__.py +67 -0
  378. attune_llm/agent_factory/crews/code_review.py +1113 -0
  379. attune_llm/agent_factory/crews/health_check.py +1262 -0
  380. attune_llm/agent_factory/crews/refactoring.py +1128 -0
  381. attune_llm/agent_factory/crews/security_audit.py +1018 -0
  382. attune_llm/agent_factory/decorators.py +287 -0
  383. attune_llm/agent_factory/factory.py +558 -0
  384. attune_llm/agent_factory/framework.py +193 -0
  385. attune_llm/agent_factory/memory_integration.py +328 -0
  386. attune_llm/agent_factory/resilient.py +320 -0
  387. attune_llm/agents_md/__init__.py +22 -0
  388. attune_llm/agents_md/loader.py +218 -0
  389. attune_llm/agents_md/parser.py +271 -0
  390. attune_llm/agents_md/registry.py +307 -0
  391. attune_llm/claude_memory.py +466 -0
  392. attune_llm/cli/__init__.py +8 -0
  393. attune_llm/cli/sync_claude.py +487 -0
  394. attune_llm/code_health.py +1313 -0
  395. attune_llm/commands/__init__.py +51 -0
  396. attune_llm/commands/context.py +375 -0
  397. attune_llm/commands/loader.py +301 -0
  398. attune_llm/commands/models.py +231 -0
  399. attune_llm/commands/parser.py +371 -0
  400. attune_llm/commands/registry.py +429 -0
  401. attune_llm/config/__init__.py +29 -0
  402. attune_llm/config/unified.py +291 -0
  403. attune_llm/context/__init__.py +22 -0
  404. attune_llm/context/compaction.py +455 -0
  405. attune_llm/context/manager.py +434 -0
  406. attune_llm/contextual_patterns.py +361 -0
  407. attune_llm/core.py +907 -0
  408. attune_llm/git_pattern_extractor.py +435 -0
  409. attune_llm/hooks/__init__.py +24 -0
  410. attune_llm/hooks/config.py +306 -0
  411. attune_llm/hooks/executor.py +289 -0
  412. attune_llm/hooks/registry.py +302 -0
  413. attune_llm/hooks/scripts/__init__.py +39 -0
  414. attune_llm/hooks/scripts/evaluate_session.py +201 -0
  415. attune_llm/hooks/scripts/first_time_init.py +285 -0
  416. attune_llm/hooks/scripts/pre_compact.py +207 -0
  417. attune_llm/hooks/scripts/session_end.py +183 -0
  418. attune_llm/hooks/scripts/session_start.py +163 -0
  419. attune_llm/hooks/scripts/suggest_compact.py +225 -0
  420. attune_llm/learning/__init__.py +30 -0
  421. attune_llm/learning/evaluator.py +438 -0
  422. attune_llm/learning/extractor.py +514 -0
  423. attune_llm/learning/storage.py +560 -0
  424. attune_llm/levels.py +227 -0
  425. attune_llm/pattern_confidence.py +414 -0
  426. attune_llm/pattern_resolver.py +272 -0
  427. attune_llm/pattern_summary.py +350 -0
  428. attune_llm/providers.py +967 -0
  429. attune_llm/routing/__init__.py +32 -0
  430. attune_llm/routing/model_router.py +362 -0
  431. attune_llm/security/IMPLEMENTATION_SUMMARY.md +413 -0
  432. attune_llm/security/PHASE2_COMPLETE.md +384 -0
  433. attune_llm/security/PHASE2_SECRETS_DETECTOR_COMPLETE.md +271 -0
  434. attune_llm/security/QUICK_REFERENCE.md +316 -0
  435. attune_llm/security/README.md +262 -0
  436. attune_llm/security/__init__.py +62 -0
  437. attune_llm/security/audit_logger.py +929 -0
  438. attune_llm/security/audit_logger_example.py +152 -0
  439. attune_llm/security/pii_scrubber.py +640 -0
  440. attune_llm/security/secrets_detector.py +678 -0
  441. attune_llm/security/secrets_detector_example.py +304 -0
  442. attune_llm/security/secure_memdocs.py +1192 -0
  443. attune_llm/security/secure_memdocs_example.py +278 -0
  444. attune_llm/session_status.py +745 -0
  445. attune_llm/state.py +246 -0
  446. attune_llm/utils/__init__.py +5 -0
  447. attune_llm/utils/tokens.py +349 -0
  448. attune_software/SOFTWARE_PLUGIN_README.md +57 -0
  449. attune_software/__init__.py +13 -0
  450. attune_software/cli/__init__.py +120 -0
  451. attune_software/cli/inspect.py +362 -0
  452. attune_software/cli.py +574 -0
  453. attune_software/plugin.py +188 -0
  454. workflow_scaffolding/__init__.py +11 -0
  455. workflow_scaffolding/__main__.py +12 -0
  456. workflow_scaffolding/cli.py +206 -0
  457. workflow_scaffolding/generator.py +265 -0
@@ -0,0 +1,589 @@
1
+ # Wizard Scaffolding System
2
+
3
+ **Fast, pattern-based wizard creation for Empathy Framework**
4
+
5
+ Generate production-ready wizards in 10 minutes instead of 2 hours using proven patterns extracted from 78 existing wizards.
6
+
7
+ ---
8
+
9
+ ## Table of Contents
10
+
11
+ - [Quick Start](#quick-start)
12
+ - [Methodologies](#methodologies)
13
+ - [Commands](#commands)
14
+ - [Patterns](#patterns)
15
+ - [Examples](#examples)
16
+ - [Advanced Usage](#advanced-usage)
17
+ - [Troubleshooting](#troubleshooting)
18
+
19
+ ---
20
+
21
+ ## Quick Start
22
+
23
+ ### Create Your First Wizard
24
+
25
+ ```bash
26
+ # Recommended: Pattern-Compose methodology
27
+ python -m scaffolding create patient_intake --domain healthcare
28
+
29
+ # This generates:
30
+ # - attune_llm/wizards/patient_intake_wizard.py (production-ready)
31
+ # - tests/unit/wizards/test_patient_intake_wizard.py (comprehensive tests)
32
+ # - tests/unit/wizards/fixtures_patient_intake.py (test fixtures)
33
+ # - attune_llm/wizards/patient_intake_README.md (documentation)
34
+ ```
35
+
36
+ ### View Available Patterns
37
+
38
+ ```bash
39
+ python -m scaffolding list-patterns
40
+
41
+ # Output:
42
+ # STRUCTURAL (3 patterns):
43
+ # - linear_flow | Linear Flow | Reusability: 0.92
44
+ # - phased_processing | Phased Processing | Reusability: 0.82
45
+ # - session_based | Session Based | Reusability: 0.95
46
+ # ...
47
+ ```
48
+
49
+ ### Interactive Mode
50
+
51
+ ```bash
52
+ python -m scaffolding create my_wizard --interactive --domain finance
53
+
54
+ # Prompts:
55
+ # Select patterns (comma-separated numbers, or 'all' for all):
56
+ # 1. Linear Flow - Step-by-step linear wizard flow
57
+ # 2. Structured Fields - Strongly typed field validation
58
+ # 3. Approval Pattern - Preview before finalize workflow
59
+ # 4. Educational Banner - Level-based user guidance
60
+ # >
61
+ ```
62
+
63
+ ---
64
+
65
+ ## Methodologies
66
+
67
+ ### Pattern-Compose (RECOMMENDED)
68
+
69
+ **Best for:** Most wizards (95% of use cases)
70
+
71
+ **Workflow:**
72
+ 1. Recommends patterns based on domain and type
73
+ 2. User selects patterns (or uses all recommended)
74
+ 3. Generates complete wizard from patterns
75
+ 4. Generates comprehensive tests automatically
76
+ 5. Generates documentation
77
+
78
+ **Pros:**
79
+ - ✅ Fast (10 minutes)
80
+ - ✅ Leverages proven patterns (from 78 existing wizards)
81
+ - ✅ Automatic test generation
82
+ - ✅ High quality, consistent code
83
+ - ✅ Great for newcomers
84
+
85
+ **Example:**
86
+ ```bash
87
+ python -m scaffolding create soap_note --domain healthcare --methodology pattern
88
+
89
+ # Generated files:
90
+ # - attune_llm/wizards/soap_note_wizard.py
91
+ # - tests/unit/wizards/test_soap_note_wizard.py (with risk-based priorities)
92
+ # - tests/unit/wizards/fixtures_soap_note.py
93
+ # - attune_llm/wizards/soap_note_README.md
94
+ ```
95
+
96
+ ### TDD-First
97
+
98
+ **Best for:** Experienced developers who prefer test-driven development
99
+
100
+ **Workflow:**
101
+ 1. Generates comprehensive tests FIRST
102
+ 2. Generates minimal wizard skeleton
103
+ 3. User implements to make tests pass
104
+ 4. Iterative red-green-refactor cycle
105
+
106
+ **Pros:**
107
+ - ✅ Tests drive design
108
+ - ✅ 100% coverage from start
109
+ - ✅ Prevents scope creep
110
+ - ✅ Great for complex logic
111
+
112
+ **Cons:**
113
+ - ⚠️ Slower (requires implementation time)
114
+ - ⚠️ Assumes TDD experience
115
+
116
+ **Example:**
117
+ ```bash
118
+ python -m scaffolding create debugging --methodology tdd --domain software
119
+
120
+ # Generated files (tests first!):
121
+ # - tests/unit/wizards/test_debugging_wizard.py (comprehensive tests)
122
+ # - coach_wizards/debugging_wizard.py (minimal skeleton)
123
+ # - tests/unit/wizards/fixtures_debugging.py
124
+
125
+ # Next steps:
126
+ # 1. Run tests (they should fail): pytest tests/unit/wizards/test_debugging_wizard.py
127
+ # 2. Implement wizard methods to make tests pass
128
+ # 3. Refactor for quality
129
+ # 4. Repeat until all tests pass
130
+ ```
131
+
132
+ ---
133
+
134
+ ## Commands
135
+
136
+ ### `create` - Create a New Wizard
137
+
138
+ ```bash
139
+ python -m scaffolding create <name> [OPTIONS]
140
+ ```
141
+
142
+ **Required Arguments:**
143
+ - `<name>` - Wizard name (snake_case, e.g., `patient_intake`)
144
+
145
+ **Options:**
146
+ - `--domain, -d` - Domain (e.g., healthcare, finance, legal)
147
+ - `--type, -t` - Wizard type (choices: domain, coach, ai; default: domain)
148
+ - `--methodology, -m` - Methodology (choices: pattern, tdd; default: pattern)
149
+ - `--patterns, -p` - Comma-separated pattern IDs (manual selection)
150
+ - `--interactive, -i` - Interactive pattern selection
151
+
152
+ **Examples:**
153
+
154
+ ```bash
155
+ # Basic usage (recommended patterns automatically selected)
156
+ python -m scaffolding create patient_intake --domain healthcare
157
+
158
+ # TDD methodology
159
+ python -m scaffolding create my_wizard --methodology tdd --domain finance
160
+
161
+ # Interactive pattern selection
162
+ python -m scaffolding create my_wizard --interactive --domain legal
163
+
164
+ # Manual pattern selection
165
+ python -m scaffolding create my_wizard --patterns linear_flow,approval,structured_fields
166
+
167
+ # Coach wizard type
168
+ python -m scaffolding create debugging --domain software --type coach
169
+
170
+ # AI wizard type
171
+ python -m scaffolding create code_fix --domain software --type ai
172
+ ```
173
+
174
+ ### `list-patterns` - View Available Patterns
175
+
176
+ ```bash
177
+ python -m scaffolding list-patterns
178
+ ```
179
+
180
+ **Output:**
181
+ - Patterns grouped by category (structural, input, validation, behavior, empathy)
182
+ - Pattern ID, name, and reusability score
183
+ - Total patterns and average reusability
184
+
185
+ ---
186
+
187
+ ## Patterns
188
+
189
+ ### Pattern Categories
190
+
191
+ | Category | Description | Example Patterns |
192
+ |----------|-------------|------------------|
193
+ | **Structural** | Wizard flow and architecture | linear_flow, phased_processing |
194
+ | **Input** | How wizards receive data | structured_fields, code_analysis_input |
195
+ | **Validation** | Data validation approaches | step_validation, approval |
196
+ | **Behavior** | Wizard capabilities | risk_assessment, prediction, fix_application |
197
+ | **Empathy** | User experience enhancements | empathy_level, educational_banner, user_guidance |
198
+
199
+ ### Recommended Patterns by Domain
200
+
201
+ #### Healthcare Wizards
202
+ - `linear_flow` - Step-by-step workflow
203
+ - `structured_fields` - HIPAA-compliant field validation
204
+ - `approval` - Preview before finalize (critical for medical notes)
205
+ - `educational_banner` - Level 2+ empathy for guidance
206
+
207
+ #### Coach Wizards (Software Development)
208
+ - `code_analysis_input` - Parse and analyze code
209
+ - `risk_assessment` - Identify code risks
210
+ - `prediction` - Predict future issues
211
+ - `fix_application` - Suggest and apply fixes
212
+
213
+ #### AI Wizards
214
+ - `phased_processing` - Multi-phase execution
215
+ - `context_based_input` - Rich context handling
216
+ - `ai_enhancement` - LLM-powered capabilities
217
+
218
+ #### Finance Wizards
219
+ - `approval` - Required for financial transactions
220
+ - `risk_assessment` - Financial risk analysis
221
+ - `step_validation` - Strict step sequencing
222
+
223
+ ### Pattern Details
224
+
225
+ Run `python -m scaffolding list-patterns` to see:
226
+ - All 15 patterns
227
+ - Descriptions
228
+ - Reusability scores (0.0-1.0)
229
+ - Which wizards use each pattern
230
+
231
+ ---
232
+
233
+ ## Examples
234
+
235
+ ### Example 1: Healthcare SOAP Note Wizard
236
+
237
+ ```bash
238
+ python -m scaffolding create soap_note --domain healthcare
239
+
240
+ # Generated wizard includes:
241
+ # - 5-step linear flow (Subjective, Objective, Assessment, Plan, Review)
242
+ # - Structured fields with validation
243
+ # - Preview before save (approval pattern)
244
+ # - Educational banners (Level 2 empathy)
245
+ # - Comprehensive tests (90%+ coverage recommended)
246
+ ```
247
+
248
+ **Generated Code Structure:**
249
+ ```python
250
+ # soap_note_wizard.py
251
+ @router.post("/start")
252
+ async def start_wizard(request: StartRequest) -> StartResponse:
253
+ # Initialize wizard session
254
+ # Returns wizard_id, current_step, total_steps, educational_banner
255
+
256
+ @router.post("/{wizard_id}/step")
257
+ async def submit_step(wizard_id: str, submission: StepSubmission) -> StepResult:
258
+ # Submit step data with validation
259
+ # Returns next_step_guidance (Level 2 empathy)
260
+
261
+ @router.post("/{wizard_id}/preview")
262
+ async def generate_preview(wizard_id: str) -> PreviewResult:
263
+ # Generate preview for user review (approval pattern)
264
+
265
+ @router.post("/{wizard_id}/save")
266
+ async def save_with_approval(wizard_id: str, request: SaveRequest) -> SaveResult:
267
+ # Save with user approval
268
+ ```
269
+
270
+ ### Example 2: Debugging Coach Wizard
271
+
272
+ ```bash
273
+ python -m scaffolding create debugging --domain software --type coach
274
+
275
+ # Generated wizard includes:
276
+ # - Code analysis endpoint
277
+ # - Risk assessment
278
+ # - Prediction of future issues
279
+ # - Fix suggestions
280
+ # - Fix application with approval
281
+ ```
282
+
283
+ **Generated Code Structure:**
284
+ ```python
285
+ # debugging_wizard.py
286
+ @router.post("/analyze")
287
+ async def analyze_code(request: AnalysisRequest) -> AnalysisResult:
288
+ # Analyze code
289
+ # Returns analysis, risk_assessment, predictions, suggested_fixes
290
+
291
+ @router.post("/fix/apply")
292
+ async def apply_fix(request: FixRequest) -> FixResult:
293
+ # Apply fix with user approval
294
+ # Returns modified_code
295
+ ```
296
+
297
+ ### Example 3: TDD Approach for Custom Wizard
298
+
299
+ ```bash
300
+ python -m scaffolding create invoice_processor --methodology tdd --domain finance
301
+
302
+ # Step 1: Generated tests (these will fail initially)
303
+ # tests/unit/wizards/test_invoice_processor_wizard.py
304
+
305
+ # Step 2: Implement to make tests pass
306
+ # wizards/invoice_processor_wizard.py
307
+
308
+ # Step 3: Run tests iteratively
309
+ pytest tests/unit/wizards/test_invoice_processor_wizard.py
310
+
311
+ # Tests include:
312
+ # - CRITICAL (Priority 1): Approval workflow, step validation
313
+ # - HIGH (Priority 2): Risk assessment
314
+ # - MEDIUM (Priority 3): Validation points
315
+ # - LOW (Priority 4): Success path
316
+ ```
317
+
318
+ ---
319
+
320
+ ## Advanced Usage
321
+
322
+ ### Custom Output Directory
323
+
324
+ ```python
325
+ from scaffolding.methodologies.pattern_compose import PatternCompose
326
+ from pathlib import Path
327
+
328
+ method = PatternCompose()
329
+ result = method.create_wizard(
330
+ name="custom_wizard",
331
+ domain="custom",
332
+ wizard_type="domain",
333
+ output_dir=Path("custom/wizards"),
334
+ )
335
+
336
+ print(f"Generated files: {result['files']}")
337
+ print(f"Patterns used: {result['patterns']}")
338
+ print(f"Next steps: {result['next_steps']}")
339
+ ```
340
+
341
+ ### Programmatic Pattern Selection
342
+
343
+ ```python
344
+ from patterns import get_pattern_registry
345
+
346
+ registry = get_pattern_registry()
347
+
348
+ # Get recommendations
349
+ recommended = registry.recommend_for_wizard(
350
+ wizard_type="domain",
351
+ domain="healthcare",
352
+ )
353
+
354
+ # Filter patterns
355
+ selected = [p.id for p in recommended if p.reusability_score > 0.8]
356
+
357
+ # Create wizard with selected patterns
358
+ method = PatternCompose()
359
+ result = method.create_wizard(
360
+ name="my_wizard",
361
+ domain="healthcare",
362
+ wizard_type="domain",
363
+ selected_patterns=selected,
364
+ )
365
+ ```
366
+
367
+ ### Integration with Wizard API
368
+
369
+ After generating a wizard, register it with the Wizard API:
370
+
371
+ ```python
372
+ # backend/api/wizard_api.py
373
+ from wizards.soap_note_wizard import router as soap_note_router
374
+
375
+ # Register router
376
+ app.include_router(soap_note_router, prefix="/api/wizard")
377
+
378
+ # Register wizard class (for hot-reload)
379
+ from wizards.soap_note_wizard import SOAPNoteWizard
380
+ register_wizard("soap_note", SOAPNoteWizard)
381
+ ```
382
+
383
+ ### Hot-Reload Integration
384
+
385
+ Generated wizards work seamlessly with hot-reload:
386
+
387
+ ```python
388
+ # Enable hot-reload
389
+ export HOT_RELOAD_ENABLED=true
390
+ export HOT_RELOAD_WATCH_DIRS="wizards,coach_wizards,attune_llm/wizards"
391
+
392
+ # Start server
393
+ uvicorn backend.main:app --reload
394
+
395
+ # Edit generated wizard - server auto-reloads!
396
+ # vim wizards/soap_note_wizard.py
397
+ ```
398
+
399
+ ---
400
+
401
+ ## Troubleshooting
402
+
403
+ ### Issue: Generated wizard has import errors
404
+
405
+ **Cause:** Module paths differ based on wizard type
406
+
407
+ **Solution:**
408
+ - Domain wizards → `attune_llm/wizards/`
409
+ - Coach wizards → `coach_wizards/`
410
+ - AI wizards → `wizards/`
411
+
412
+ Verify wizard was generated in correct directory based on `--type` flag.
413
+
414
+ ### Issue: Tests fail after generation
415
+
416
+ **Cause:** Generated tests are placeholders for custom logic
417
+
418
+ **Solution:**
419
+ 1. Review generated tests
420
+ 2. Implement custom logic in wizard
421
+ 3. Update test expectations
422
+ 4. Run: `pytest tests/unit/wizards/test_<name>_wizard.py`
423
+
424
+ ### Issue: Pattern not found
425
+
426
+ **Cause:** Invalid pattern ID in `--patterns` flag
427
+
428
+ **Solution:**
429
+ Run `python -m scaffolding list-patterns` to see valid pattern IDs.
430
+
431
+ ### Issue: Template rendering error
432
+
433
+ **Cause:** Missing context variables for template
434
+
435
+ **Solution:**
436
+ File a bug with:
437
+ ```bash
438
+ python -m scaffolding create <name> --domain <domain> --type <type> 2>&1 | tee error.log
439
+ ```
440
+
441
+ ### Issue: Permission denied creating files
442
+
443
+ **Cause:** Output directory doesn't exist or lacks write permissions
444
+
445
+ **Solution:**
446
+ ```bash
447
+ # Create output directory
448
+ mkdir -p wizards coach_wizards attune_llm/wizards tests/unit/wizards
449
+
450
+ # Fix permissions
451
+ chmod -R u+w wizards coach_wizards attune_llm/wizards tests/unit/wizards
452
+ ```
453
+
454
+ ---
455
+
456
+ ## Architecture
457
+
458
+ ### How It Works
459
+
460
+ 1. **Pattern Registry** - 15 pre-loaded patterns from 78 existing wizards
461
+ 2. **Pattern Recommendation** - AI-powered pattern selection based on domain/type
462
+ 3. **Template Selection** - Choose template based on wizard type and patterns
463
+ 4. **Code Generation** - Jinja2 rendering with pattern-specific logic
464
+ 5. **Test Generation** - Risk-based test prioritization via TestGenerator
465
+ 6. **Documentation** - Auto-generated README with usage examples
466
+
467
+ ### Directory Structure
468
+
469
+ ```
470
+ scaffolding/
471
+ ├── __init__.py # Package exports
472
+ ├── __main__.py # Module entry point
473
+ ├── cli.py # CLI commands (create, list-patterns)
474
+ ├── README.md # This file
475
+ ├── methodologies/
476
+ │ ├── __init__.py
477
+ │ ├── pattern_compose.py # Pattern-Compose methodology (RECOMMENDED)
478
+ │ └── tdd_first.py # TDD-First methodology
479
+ └── templates/
480
+ ├── linear_flow_wizard.py.jinja2 # Linear flow template
481
+ ├── coach_wizard.py.jinja2 # Coach wizard template
482
+ ├── domain_wizard.py.jinja2 # Domain wizard template
483
+ └── base_wizard.py.jinja2 # Generic fallback
484
+ ```
485
+
486
+ ### Integration Points
487
+
488
+ - **patterns/** - Pattern library and registry
489
+ - **test_generator/** - Risk-driven test generation
490
+ - **hot_reload/** - Hot-reload infrastructure for development
491
+ - **backend/api/wizard_api.py** - Wizard registration
492
+
493
+ ---
494
+
495
+ ## Next Steps
496
+
497
+ 1. **Create your first wizard:**
498
+ ```bash
499
+ python -m scaffolding create my_wizard --domain healthcare --interactive
500
+ ```
501
+
502
+ 2. **Review generated code:**
503
+ - Wizard implementation
504
+ - Generated tests
505
+ - README documentation
506
+
507
+ 3. **Register with API:**
508
+ - Add to `backend/api/wizard_api.py`
509
+ - Test via API: `POST /api/wizard/my_wizard/start`
510
+
511
+ 4. **Enable hot-reload:**
512
+ ```bash
513
+ export HOT_RELOAD_ENABLED=true
514
+ uvicorn backend.main:app --reload
515
+ ```
516
+
517
+ 5. **Iterate and customize:**
518
+ - Edit generated wizard
519
+ - Add domain-specific logic
520
+ - Run tests: `pytest tests/unit/wizards/test_my_wizard_wizard.py`
521
+
522
+ ---
523
+
524
+ ## Contributing
525
+
526
+ ### Adding New Patterns
527
+
528
+ 1. Define pattern in `patterns/<category>.py`
529
+ 2. Register in `patterns/registry.py`
530
+ 3. Add pattern detection logic
531
+ 4. Update recommendation algorithm
532
+ 5. Add tests
533
+
534
+ ### Adding New Templates
535
+
536
+ 1. Create template in `scaffolding/templates/`
537
+ 2. Update `PatternCompose._get_template_name()`
538
+ 3. Add template context variables
539
+ 4. Test with various pattern combinations
540
+
541
+ ### Improving Methodologies
542
+
543
+ 1. Create new methodology in `scaffolding/methodologies/`
544
+ 2. Implement `create_wizard()` method
545
+ 3. Add CLI integration in `scaffolding/cli.py`
546
+ 4. Document in this README
547
+
548
+ ---
549
+
550
+ ## Performance
551
+
552
+ - **Pattern-Compose:** ~10 minutes (12x faster than manual)
553
+ - **TDD-First:** ~30 minutes (4x faster than manual)
554
+ - **Manual wizard creation:** ~2 hours
555
+
556
+ ---
557
+
558
+ ## FAQ
559
+
560
+ **Q: Which methodology should I use?**
561
+ A: Pattern-Compose for 95% of wizards. TDD-First if you're experienced with TDD and have complex logic.
562
+
563
+ **Q: Can I modify generated code?**
564
+ A: Absolutely! Generated code is a starting point. Customize as needed.
565
+
566
+ **Q: How do I add custom patterns?**
567
+ A: See [Contributing](#contributing) → Adding New Patterns
568
+
569
+ **Q: Can I use multiple patterns?**
570
+ A: Yes! Most wizards use 3-5 patterns. Use `--interactive` to select.
571
+
572
+ **Q: How do I test generated wizards?**
573
+ A: Run `pytest tests/unit/wizards/test_<name>_wizard.py`
574
+
575
+ **Q: What's the difference between wizard types?**
576
+ A: Domain (business logic), Coach (code analysis), AI (LLM-powered)
577
+
578
+ ---
579
+
580
+ ## License
581
+
582
+ Copyright 2025 Smart AI Memory, LLC
583
+ Licensed under Fair Source 0.9
584
+
585
+ ---
586
+
587
+ **Generated by:** Empathy Framework - Wizard Factory
588
+ **Version:** 1.8.0-alpha
589
+ **Last Updated:** 2025-01-05
@@ -0,0 +1,35 @@
1
+ """Methodology Scaffolding for Workflow Factory.
2
+
3
+ Provides CLI tools and methodologies for creating new workflows quickly
4
+ using proven patterns.
5
+
6
+ Methodologies:
7
+ - Pattern-Compose: Select patterns, compose workflow (Recommended)
8
+ - TDD-First: Write tests first, implement workflow
9
+ - Prototype-Refine: Quick prototype, then refactor
10
+ - Risk-Driven: Focus on high-risk paths first
11
+ - Empathy-Centered: Design for user experience
12
+
13
+ Usage:
14
+ # Create workflow using Pattern-Compose (recommended)
15
+ python -m scaffolding create my_workflow --domain healthcare
16
+
17
+ # Create with specific methodology
18
+ python -m scaffolding create my_workflow --methodology tdd
19
+
20
+ # Interactive mode
21
+ python -m scaffolding create my_workflow --interactive
22
+
23
+ Copyright 2025 Smart AI Memory, LLC
24
+ Licensed under Fair Source 0.9
25
+ """
26
+
27
+ from .methodologies.pattern_compose import PatternCompose
28
+ from .methodologies.tdd_first import TDDFirst
29
+
30
+ __all__ = [
31
+ "PatternCompose",
32
+ "TDDFirst",
33
+ ]
34
+
35
+ __version__ = "1.0.0"
@@ -0,0 +1,14 @@
1
+ """Scaffolding module entry point.
2
+
3
+ Usage:
4
+ python -m scaffolding create my_workflow --domain healthcare
5
+ python -m scaffolding list-patterns
6
+
7
+ Copyright 2025 Smart AI Memory, LLC
8
+ Licensed under Fair Source 0.9
9
+ """
10
+
11
+ from .cli import main
12
+
13
+ if __name__ == "__main__":
14
+ main()