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,539 @@
1
+ """Multi-Model Workflow Templates for Empathy Framework
2
+
3
+ Cost-optimized workflow patterns that leverage 3-tier model routing:
4
+ - Haiku (cheap): Summarization, classification, triage
5
+ - Sonnet (capable): Analysis, code generation, security review
6
+ - Opus (premium): Synthesis, architectural decisions, coordination
7
+
8
+ Usage:
9
+ from attune.workflows import ResearchSynthesisWorkflow
10
+
11
+ workflow = ResearchSynthesisWorkflow()
12
+ result = await workflow.execute(
13
+ sources=["doc1.md", "doc2.md"],
14
+ question="What are the key patterns?"
15
+ )
16
+
17
+ print(f"Cost: ${result.cost_report.total_cost:.4f}")
18
+ print(f"Saved: {result.cost_report.savings_percent:.1f}% vs premium-only")
19
+
20
+ Workflow Discovery:
21
+ Workflows can be discovered via entry points (pyproject.toml):
22
+
23
+ [project.entry-points."empathy.workflows"]
24
+ my-workflow = "my_package.workflows:MyWorkflow"
25
+
26
+ Then call discover_workflows() to load all registered workflows.
27
+
28
+ Copyright 2025 Smart-AI-Memory
29
+ Licensed under Fair Source License 0.9
30
+ """
31
+
32
+ import importlib.metadata
33
+ import importlib.util
34
+ import os
35
+ from typing import TYPE_CHECKING
36
+
37
+ # =============================================================================
38
+ # LAZY IMPORTS - Deferred loading for faster startup
39
+ # =============================================================================
40
+ # Workflow imports are deferred until actually accessed, reducing initial
41
+ # import time from ~0.5s to ~0.05s for simple use cases.
42
+
43
+ if TYPE_CHECKING:
44
+ from .base import BaseWorkflow
45
+ from .bug_predict import BugPredictionWorkflow
46
+ from .code_review import CodeReviewWorkflow
47
+ from .code_review_pipeline import CodeReviewPipeline, CodeReviewPipelineResult
48
+ from .config import DEFAULT_MODELS, ModelConfig, WorkflowConfig
49
+ from .dependency_check import DependencyCheckWorkflow
50
+ from .document_gen import DocumentGenerationWorkflow
51
+ from .document_manager import DocumentManagerWorkflow
52
+ from .documentation_orchestrator import DocumentationOrchestrator, OrchestratorResult
53
+ from .keyboard_shortcuts import KeyboardShortcutWorkflow
54
+ from .manage_documentation import ManageDocumentationCrew, ManageDocumentationCrewResult
55
+ from .orchestrated_health_check import HealthCheckReport, OrchestratedHealthCheckWorkflow
56
+ from .orchestrated_release_prep import OrchestratedReleasePrepWorkflow, ReleaseReadinessReport
57
+ from .perf_audit import PerformanceAuditWorkflow
58
+ from .pr_review import PRReviewResult, PRReviewWorkflow
59
+ from .refactor_plan import RefactorPlanWorkflow
60
+ from .release_prep import ReleasePreparationWorkflow
61
+ from .release_prep_crew import ReleasePreparationCrew, ReleasePreparationCrewResult
62
+ from .research_synthesis import ResearchSynthesisWorkflow
63
+ from .secure_release import SecureReleasePipeline, SecureReleaseResult
64
+ from .security_audit import SecurityAuditWorkflow
65
+ from .seo_optimization import SEOOptimizationWorkflow
66
+ from .step_config import WorkflowStepConfig
67
+ from .test5 import Test5Workflow
68
+ from .test_coverage_boost_crew import TestCoverageBoostCrew, TestCoverageBoostCrewResult
69
+ from .test_gen import TestGenerationWorkflow
70
+ from .test_gen_behavioral import BehavioralTestGenerationWorkflow
71
+ from .test_gen_parallel import ParallelTestGenerationWorkflow
72
+ from .xml_enhanced_crew import XMLAgent, XMLTask
73
+
74
+ # Only import base module eagerly (small, needed for type checks)
75
+ from .base import (
76
+ PROVIDER_MODELS,
77
+ BaseWorkflow,
78
+ CostReport,
79
+ ModelProvider,
80
+ ModelTier,
81
+ WorkflowResult,
82
+ WorkflowStage,
83
+ get_workflow_stats,
84
+ )
85
+
86
+ # Builder pattern for workflow construction
87
+ from .builder import WorkflowBuilder, workflow_builder
88
+
89
+ # Config is small and frequently needed
90
+ from .config import DEFAULT_MODELS, ModelConfig, WorkflowConfig, create_example_config, get_model
91
+
92
+ # Routing strategies (small, frequently needed for builder pattern)
93
+ from .routing import (
94
+ BalancedRouting,
95
+ CostOptimizedRouting,
96
+ PerformanceOptimizedRouting,
97
+ RoutingContext,
98
+ TierRoutingStrategy,
99
+ )
100
+ from .step_config import WorkflowStepConfig, steps_from_tier_map, validate_step_config
101
+
102
+ # Lazy import mapping for workflow classes
103
+ _LAZY_WORKFLOW_IMPORTS: dict[str, tuple[str, str]] = {
104
+ # Core workflows
105
+ "BugPredictionWorkflow": (".bug_predict", "BugPredictionWorkflow"),
106
+ "CodeReviewWorkflow": (".code_review", "CodeReviewWorkflow"),
107
+ "CodeReviewPipeline": (".code_review_pipeline", "CodeReviewPipeline"),
108
+ "CodeReviewPipelineResult": (".code_review_pipeline", "CodeReviewPipelineResult"),
109
+ "DependencyCheckWorkflow": (".dependency_check", "DependencyCheckWorkflow"),
110
+ "DocumentGenerationWorkflow": (".document_gen", "DocumentGenerationWorkflow"),
111
+ "DocumentManagerWorkflow": (".document_manager", "DocumentManagerWorkflow"),
112
+ "DocumentationOrchestrator": (".documentation_orchestrator", "DocumentationOrchestrator"),
113
+ "OrchestratorResult": (".documentation_orchestrator", "OrchestratorResult"),
114
+ "KeyboardShortcutWorkflow": (".keyboard_shortcuts", "KeyboardShortcutWorkflow"),
115
+ "ManageDocumentationCrew": (".manage_documentation", "ManageDocumentationCrew"),
116
+ "ManageDocumentationCrewResult": (".manage_documentation", "ManageDocumentationCrewResult"),
117
+ "OrchestratedHealthCheckWorkflow": (
118
+ ".orchestrated_health_check",
119
+ "OrchestratedHealthCheckWorkflow",
120
+ ),
121
+ "HealthCheckReport": (".orchestrated_health_check", "HealthCheckReport"),
122
+ "OrchestratedReleasePrepWorkflow": (
123
+ ".orchestrated_release_prep",
124
+ "OrchestratedReleasePrepWorkflow",
125
+ ),
126
+ "ReleaseReadinessReport": (".orchestrated_release_prep", "ReleaseReadinessReport"),
127
+ "PerformanceAuditWorkflow": (".perf_audit", "PerformanceAuditWorkflow"),
128
+ "PRReviewWorkflow": (".pr_review", "PRReviewWorkflow"),
129
+ "PRReviewResult": (".pr_review", "PRReviewResult"),
130
+ "RefactorPlanWorkflow": (".refactor_plan", "RefactorPlanWorkflow"),
131
+ "ReleasePreparationWorkflow": (".release_prep", "ReleasePreparationWorkflow"),
132
+ "ReleasePreparationCrew": (".release_prep_crew", "ReleasePreparationCrew"),
133
+ "ReleasePreparationCrewResult": (".release_prep_crew", "ReleasePreparationCrewResult"),
134
+ "ResearchSynthesisWorkflow": (".research_synthesis", "ResearchSynthesisWorkflow"),
135
+ "SecureReleasePipeline": (".secure_release", "SecureReleasePipeline"),
136
+ "SecureReleaseResult": (".secure_release", "SecureReleaseResult"),
137
+ "SecurityAuditWorkflow": (".security_audit", "SecurityAuditWorkflow"),
138
+ "SEOOptimizationWorkflow": (".seo_optimization", "SEOOptimizationWorkflow"),
139
+ "Test5Workflow": (".test5", "Test5Workflow"),
140
+ "TestCoverageBoostCrew": (".test_coverage_boost_crew", "TestCoverageBoostCrew"),
141
+ "TestCoverageBoostCrewResult": (".test_coverage_boost_crew", "TestCoverageBoostCrewResult"),
142
+ "TestGenerationWorkflow": (".test_gen", "TestGenerationWorkflow"),
143
+ "BehavioralTestGenerationWorkflow": (".test_gen_behavioral", "BehavioralTestGenerationWorkflow"),
144
+ "ParallelTestGenerationWorkflow": (".test_gen_parallel", "ParallelTestGenerationWorkflow"),
145
+ "XMLAgent": (".xml_enhanced_crew", "XMLAgent"),
146
+ "XMLTask": (".xml_enhanced_crew", "XMLTask"),
147
+ "parse_xml_response": (".xml_enhanced_crew", "parse_xml_response"),
148
+ }
149
+
150
+ # Cache for loaded workflow classes
151
+ _loaded_workflow_modules: dict[str, object] = {}
152
+
153
+
154
+ def _lazy_import_workflow(name: str) -> object:
155
+ """Import a workflow class lazily."""
156
+ if name not in _LAZY_WORKFLOW_IMPORTS:
157
+ raise AttributeError(f"module 'attune.workflows' has no attribute '{name}'")
158
+
159
+ module_path, attr_name = _LAZY_WORKFLOW_IMPORTS[name]
160
+
161
+ # Check cache first
162
+ cache_key = f"{module_path}.{attr_name}"
163
+ if cache_key in _loaded_workflow_modules:
164
+ return _loaded_workflow_modules[cache_key]
165
+
166
+ # Import the module and get the attribute
167
+ import importlib
168
+
169
+ module = importlib.import_module(module_path, package="attune.workflows")
170
+ attr = getattr(module, attr_name)
171
+
172
+ # Cache and return
173
+ _loaded_workflow_modules[cache_key] = attr
174
+ return attr
175
+
176
+
177
+ # Re-export CLI commands from workflow_commands.py (lazy loaded)
178
+ _parent_dir = os.path.dirname(os.path.dirname(__file__))
179
+ _workflows_module_path = os.path.join(_parent_dir, "workflow_commands.py")
180
+
181
+ # Initialize to None for type checking - loaded lazily via __getattr__
182
+ cmd_morning = None
183
+ cmd_ship = None
184
+ cmd_fix_all = None
185
+ cmd_learn = None
186
+ _cli_loaded = False
187
+
188
+
189
+ def _load_cli_commands() -> None:
190
+ """Load CLI commands lazily."""
191
+ global cmd_morning, cmd_ship, cmd_fix_all, cmd_learn, _cli_loaded
192
+ if _cli_loaded:
193
+ return
194
+
195
+ if os.path.exists(_workflows_module_path):
196
+ _spec = importlib.util.spec_from_file_location("_workflows_cli", _workflows_module_path)
197
+ if _spec is not None and _spec.loader is not None:
198
+ _workflows_cli = importlib.util.module_from_spec(_spec)
199
+ _spec.loader.exec_module(_workflows_cli)
200
+
201
+ # Re-export CLI commands
202
+ cmd_morning = _workflows_cli.cmd_morning
203
+ cmd_ship = _workflows_cli.cmd_ship
204
+ cmd_fix_all = _workflows_cli.cmd_fix_all
205
+ cmd_learn = _workflows_cli.cmd_learn
206
+
207
+ _cli_loaded = True
208
+
209
+
210
+ # Default workflow registry - uses CLASS NAMES (strings) for lazy loading
211
+ # Actual classes are loaded on first access via _get_workflow_class()
212
+ _DEFAULT_WORKFLOW_NAMES: dict[str, str] = {
213
+ # Core workflows
214
+ "code-review": "CodeReviewWorkflow",
215
+ # Documentation workflows
216
+ "doc-gen": "DocumentGenerationWorkflow",
217
+ "seo-optimization": "SEOOptimizationWorkflow",
218
+ # Analysis workflows
219
+ "bug-predict": "BugPredictionWorkflow",
220
+ "security-audit": "SecurityAuditWorkflow",
221
+ "perf-audit": "PerformanceAuditWorkflow",
222
+ # Generation workflows
223
+ "test-gen": "TestGenerationWorkflow",
224
+ "test-gen-behavioral": "BehavioralTestGenerationWorkflow",
225
+ "test-gen-parallel": "ParallelTestGenerationWorkflow",
226
+ "refactor-plan": "RefactorPlanWorkflow",
227
+ # Operational workflows
228
+ "dependency-check": "DependencyCheckWorkflow",
229
+ "release-prep-legacy": "ReleasePreparationWorkflow",
230
+ # Composite security pipeline (v3.0)
231
+ "secure-release": "SecureReleasePipeline",
232
+ # Code review crew integration (v3.1)
233
+ "pro-review": "CodeReviewPipeline",
234
+ "pr-review": "PRReviewWorkflow",
235
+ # Documentation management (v3.5)
236
+ "doc-orchestrator": "DocumentationOrchestrator",
237
+ "manage-docs": "DocumentationOrchestrator", # Points to orchestrator (crew deprecated)
238
+ # Keyboard Conductor (v3.6)
239
+ "keyboard-shortcuts": "KeyboardShortcutWorkflow",
240
+ # User-generated workflows
241
+ "document-manager": "DocumentManagerWorkflow",
242
+ "test5": "Test5Workflow",
243
+ # Meta-orchestration workflows (v4.0.0 - CANONICAL)
244
+ "orchestrated-health-check": "OrchestratedHealthCheckWorkflow",
245
+ "orchestrated-release-prep": "OrchestratedReleasePrepWorkflow",
246
+ # Backward compatibility aliases (point to orchestrated versions)
247
+ "release-prep": "OrchestratedReleasePrepWorkflow",
248
+ "orchestrated-health-check-experimental": "OrchestratedHealthCheckWorkflow",
249
+ "orchestrated-release-prep-experimental": "OrchestratedReleasePrepWorkflow",
250
+ }
251
+
252
+ # Opt-in workflows - class names for lazy loading
253
+ _OPT_IN_WORKFLOW_NAMES: dict[str, str] = {}
254
+
255
+ # Workflow registry - populated lazily on first access
256
+ WORKFLOW_REGISTRY: dict[str, type[BaseWorkflow]] = {}
257
+ _registry_initialized = False
258
+
259
+
260
+ def _get_workflow_class(class_name: str) -> type[BaseWorkflow]:
261
+ """Get a workflow class by name (lazy loading)."""
262
+ return _lazy_import_workflow(class_name)
263
+
264
+
265
+ def _ensure_registry_initialized() -> None:
266
+ """Initialize workflow registry on first access."""
267
+ global _registry_initialized
268
+ if not _registry_initialized:
269
+ WORKFLOW_REGISTRY.update(discover_workflows())
270
+ _registry_initialized = True
271
+
272
+
273
+ def discover_workflows(
274
+ include_defaults: bool = True,
275
+ config: "WorkflowConfig | None" = None,
276
+ ) -> dict[str, type[BaseWorkflow]]:
277
+ """Discover workflows via entry points and config.
278
+
279
+ This function loads workflows registered as entry points under the
280
+ 'empathy.workflows' group. This allows third-party packages to register
281
+ custom workflows that integrate with the Empathy Framework.
282
+
283
+ Note: Workflows are loaded lazily - classes are only imported when
284
+ the workflow is actually used, reducing initial import time.
285
+
286
+ Args:
287
+ include_defaults: Whether to include default built-in workflows
288
+ config: Optional WorkflowConfig for enabled/disabled workflows
289
+
290
+ Returns:
291
+ Dictionary mapping workflow names to workflow classes
292
+
293
+ Example:
294
+ from attune.workflows import discover_workflows
295
+ workflows = discover_workflows()
296
+ MyWorkflow = workflows.get("code-review")
297
+
298
+ """
299
+ discovered: dict[str, type[BaseWorkflow]] = {}
300
+
301
+ # Include default workflows if requested (lazy load each)
302
+ if include_defaults:
303
+ for workflow_id, class_name in _DEFAULT_WORKFLOW_NAMES.items():
304
+ try:
305
+ discovered[workflow_id] = _get_workflow_class(class_name)
306
+ except (ImportError, AttributeError):
307
+ # Skip workflows that fail to load
308
+ pass
309
+
310
+ # Add opt-in workflows based on config
311
+ if config is not None:
312
+ # HIPAA mode auto-enables healthcare workflows
313
+ if config.is_hipaa_mode():
314
+ for workflow_id, class_name in _OPT_IN_WORKFLOW_NAMES.items():
315
+ try:
316
+ discovered[workflow_id] = _get_workflow_class(class_name)
317
+ except (ImportError, AttributeError):
318
+ pass
319
+
320
+ # Explicitly enabled workflows
321
+ for workflow_name in config.enabled_workflows:
322
+ if workflow_name in _OPT_IN_WORKFLOW_NAMES:
323
+ try:
324
+ discovered[workflow_name] = _get_workflow_class(
325
+ _OPT_IN_WORKFLOW_NAMES[workflow_name]
326
+ )
327
+ except (ImportError, AttributeError):
328
+ pass
329
+
330
+ # Explicitly disabled workflows
331
+ for workflow_name in config.disabled_workflows:
332
+ discovered.pop(workflow_name, None)
333
+
334
+ # Discover via entry points
335
+ try:
336
+ eps = importlib.metadata.entry_points(group="empathy.workflows")
337
+ for ep in eps:
338
+ try:
339
+ workflow_cls = ep.load()
340
+ if isinstance(workflow_cls, type) and hasattr(workflow_cls, "execute"):
341
+ if config is None or ep.name not in config.disabled_workflows:
342
+ discovered[ep.name] = workflow_cls
343
+ except Exception:
344
+ pass
345
+ except Exception:
346
+ pass
347
+
348
+ return discovered
349
+
350
+
351
+ def refresh_workflow_registry(config: "WorkflowConfig | None" = None) -> None:
352
+ """Refresh the global WORKFLOW_REGISTRY by re-discovering all workflows.
353
+
354
+ Call this after installing new packages that register workflows,
355
+ or after changing the WorkflowConfig (e.g., enabling HIPAA mode).
356
+
357
+ Args:
358
+ config: Optional WorkflowConfig for enabled/disabled workflows
359
+
360
+ """
361
+ global WORKFLOW_REGISTRY
362
+ WORKFLOW_REGISTRY.clear()
363
+ WORKFLOW_REGISTRY.update(discover_workflows(config=config))
364
+
365
+
366
+ def get_opt_in_workflows() -> dict[str, type]:
367
+ """Get the list of opt-in workflows that require explicit enabling.
368
+
369
+ Returns:
370
+ Dictionary of workflow name to class for opt-in workflows
371
+
372
+ """
373
+ result = {}
374
+ for name, class_name in _OPT_IN_WORKFLOW_NAMES.items():
375
+ try:
376
+ result[name] = _get_workflow_class(class_name)
377
+ except (ImportError, AttributeError):
378
+ pass
379
+ return result
380
+
381
+
382
+ # Note: Registry is initialized lazily on first access via _ensure_registry_initialized()
383
+ # Do NOT call discover_workflows() here - it defeats lazy loading
384
+
385
+
386
+ def get_workflow(name: str) -> type[BaseWorkflow]:
387
+ """Get a workflow class by name.
388
+
389
+ Args:
390
+ name: Workflow name (e.g., "research", "code-review", "doc-gen")
391
+
392
+ Returns:
393
+ Workflow class
394
+
395
+ Raises:
396
+ KeyError: If workflow not found
397
+
398
+ """
399
+ _ensure_registry_initialized()
400
+ if name not in WORKFLOW_REGISTRY:
401
+ available = ", ".join(WORKFLOW_REGISTRY.keys())
402
+ raise KeyError(f"Unknown workflow: {name}. Available: {available}")
403
+ return WORKFLOW_REGISTRY[name]
404
+
405
+
406
+ def list_workflows() -> list[dict]:
407
+ """List all available workflows with descriptions.
408
+
409
+ Returns:
410
+ List of workflow info dicts
411
+
412
+ """
413
+ _ensure_registry_initialized()
414
+ workflows = []
415
+ for name, cls in WORKFLOW_REGISTRY.items():
416
+ # Handle both BaseWorkflow subclasses and composite pipelines
417
+ stages = getattr(cls, "stages", [])
418
+ tier_map = getattr(cls, "tier_map", {})
419
+ description = getattr(cls, "description", "No description")
420
+
421
+ workflows.append(
422
+ {
423
+ "name": name,
424
+ "class": cls.__name__,
425
+ "description": description,
426
+ "stages": stages,
427
+ "tier_map": {k: v.value for k, v in tier_map.items()} if tier_map else {},
428
+ },
429
+ )
430
+ return workflows
431
+
432
+
433
+ def __getattr__(name: str) -> object:
434
+ """Lazy import handler for workflow classes."""
435
+ if name in _LAZY_WORKFLOW_IMPORTS:
436
+ return _lazy_import_workflow(name)
437
+
438
+ # Handle CLI commands
439
+ if name in ("cmd_morning", "cmd_ship", "cmd_fix_all", "cmd_learn"):
440
+ _load_cli_commands()
441
+ return globals().get(name)
442
+
443
+ raise AttributeError(f"module 'attune.workflows' has no attribute '{name}'")
444
+
445
+
446
+ __all__ = [
447
+ "DEFAULT_MODELS",
448
+ "PROVIDER_MODELS",
449
+ # Registry and discovery
450
+ "WORKFLOW_REGISTRY",
451
+ # Base classes
452
+ "BaseWorkflow",
453
+ # Routing strategies
454
+ "TierRoutingStrategy",
455
+ "RoutingContext",
456
+ "CostOptimizedRouting",
457
+ "PerformanceOptimizedRouting",
458
+ "BalancedRouting",
459
+ # Builder pattern
460
+ "WorkflowBuilder",
461
+ "workflow_builder",
462
+ # New high-value workflows
463
+ "BugPredictionWorkflow",
464
+ # Code review crew integration (v3.1)
465
+ "CodeReviewPipeline",
466
+ "CodeReviewPipelineResult",
467
+ "CodeReviewWorkflow",
468
+ "CostReport",
469
+ "DependencyCheckWorkflow",
470
+ "DocumentGenerationWorkflow",
471
+ "DocumentManagerWorkflow",
472
+ # Documentation management (v3.5)
473
+ "DocumentationOrchestrator",
474
+ # Health check crew integration (v3.1)
475
+ # Removed deprecated: "HealthCheckWorkflow" (use OrchestratedHealthCheckWorkflow)
476
+ "HealthCheckReport",
477
+ # Keyboard Conductor (v3.6)
478
+ "KeyboardShortcutWorkflow",
479
+ "ManageDocumentationCrew",
480
+ "ManageDocumentationCrewResult",
481
+ "ModelConfig",
482
+ "ModelProvider",
483
+ "ModelTier",
484
+ "OrchestratorResult",
485
+ "PRReviewResult",
486
+ "PRReviewWorkflow",
487
+ "PerformanceAuditWorkflow",
488
+ "RefactorPlanWorkflow",
489
+ "ReleasePreparationWorkflow",
490
+ # Workflow implementations
491
+ "ResearchSynthesisWorkflow",
492
+ # Security crew integration (v3.0)
493
+ "SecureReleasePipeline",
494
+ "SecureReleaseResult",
495
+ "SecurityAuditWorkflow",
496
+ "SEOOptimizationWorkflow",
497
+ "TestGenerationWorkflow",
498
+ "BehavioralTestGenerationWorkflow",
499
+ "ParallelTestGenerationWorkflow",
500
+ # Configuration
501
+ "WorkflowConfig",
502
+ "WorkflowResult",
503
+ "WorkflowStage",
504
+ # Step configuration (new)
505
+ "WorkflowStepConfig",
506
+ "cmd_fix_all",
507
+ "cmd_learn",
508
+ # CLI commands (re-exported from workflow_commands.py)
509
+ "cmd_morning",
510
+ "cmd_ship",
511
+ "create_example_config",
512
+ "discover_workflows",
513
+ "get_model",
514
+ "get_workflow",
515
+ # Stats for dashboard
516
+ "get_workflow_stats",
517
+ "list_workflows",
518
+ "refresh_workflow_registry",
519
+ "steps_from_tier_map",
520
+ "validate_step_config",
521
+ # CrewAI-based multi-agent workflows (v4.0.0)
522
+ # Removed deprecated: "HealthCheckCrew" (use OrchestratedHealthCheckWorkflow)
523
+ # Removed deprecated: "HealthCheckCrewResult"
524
+ "ReleasePreparationCrew",
525
+ "ReleasePreparationCrewResult",
526
+ "TestCoverageBoostCrew",
527
+ "TestCoverageBoostCrewResult",
528
+ # Removed deprecated: "TestCoverageBoostWorkflow" (use TestCoverageBoostCrew)
529
+ # Removed deprecated: "CoverageBoostResult"
530
+ # Experimental: Meta-orchestration
531
+ "OrchestratedHealthCheckWorkflow",
532
+ "OrchestratedReleasePrepWorkflow",
533
+ "HealthCheckReport",
534
+ "ReleaseReadinessReport",
535
+ # XML-enhanced prompting
536
+ "XMLAgent",
537
+ "XMLTask",
538
+ "parse_xml_response",
539
+ ]