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,567 @@
1
+ """Built-in meta-workflow templates.
2
+
3
+ These templates replace the deprecated Crew-based workflows with equivalent
4
+ functionality using the meta-workflow system.
5
+
6
+ Migration replacements:
7
+ - ReleasePreparationCrew → release-prep template
8
+ - TestCoverageBoostCrew → test-coverage-boost template
9
+ - TestMaintenanceCrew → test-maintenance template
10
+ - ManageDocumentationCrew → manage-docs template
11
+
12
+ Created: 2026-01-18
13
+ Purpose: Provide drop-in replacements for deprecated Crew workflows
14
+ """
15
+
16
+ from attune.meta_workflows.models import (
17
+ AgentCompositionRule,
18
+ FormQuestion,
19
+ FormSchema,
20
+ MetaWorkflowTemplate,
21
+ QuestionType,
22
+ TierStrategy,
23
+ )
24
+
25
+ # =============================================================================
26
+ # Release Preparation Template
27
+ # =============================================================================
28
+
29
+ RELEASE_PREP_TEMPLATE = MetaWorkflowTemplate(
30
+ template_id="release-prep",
31
+ name="Release Preparation",
32
+ description="Comprehensive release readiness assessment using multi-agent collaboration",
33
+ version="1.0.0",
34
+ tags=["release", "quality", "security", "testing", "documentation"],
35
+ author="empathy-framework",
36
+ estimated_cost_range=(0.10, 0.75),
37
+ estimated_duration_minutes=10,
38
+ form_schema=FormSchema(
39
+ title="Release Preparation Configuration",
40
+ description="Configure release readiness checks for your project",
41
+ questions=[
42
+ FormQuestion(
43
+ id="security_scan",
44
+ text="Run security vulnerability scan?",
45
+ type=QuestionType.BOOLEAN,
46
+ default="Yes",
47
+ help_text="Scan for OWASP Top 10 vulnerabilities and dependency issues",
48
+ ),
49
+ FormQuestion(
50
+ id="test_coverage_check",
51
+ text="Verify test coverage meets threshold?",
52
+ type=QuestionType.BOOLEAN,
53
+ default="Yes",
54
+ help_text="Check that test coverage meets minimum requirements",
55
+ ),
56
+ FormQuestion(
57
+ id="coverage_threshold",
58
+ text="Minimum coverage threshold (%)",
59
+ type=QuestionType.SINGLE_SELECT,
60
+ options=["70%", "80%", "85%", "90%"],
61
+ default="80%",
62
+ help_text="Tests must meet this coverage percentage",
63
+ ),
64
+ FormQuestion(
65
+ id="quality_review",
66
+ text="Run code quality review?",
67
+ type=QuestionType.BOOLEAN,
68
+ default="Yes",
69
+ help_text="Check for code smells, complexity issues, and best practices",
70
+ ),
71
+ FormQuestion(
72
+ id="doc_verification",
73
+ text="Verify documentation completeness?",
74
+ type=QuestionType.BOOLEAN,
75
+ default="Yes",
76
+ help_text="Check that all public APIs are documented",
77
+ ),
78
+ ],
79
+ ),
80
+ agent_composition_rules=[
81
+ AgentCompositionRule(
82
+ role="Security Auditor",
83
+ base_template="security_auditor",
84
+ tier_strategy=TierStrategy.CAPABLE_FIRST,
85
+ tools=["grep", "bandit", "safety"],
86
+ required_responses={"security_scan": "Yes"},
87
+ config_mapping={},
88
+ success_criteria=[
89
+ "No critical vulnerabilities found",
90
+ "All dependencies are secure",
91
+ ],
92
+ ),
93
+ AgentCompositionRule(
94
+ role="Test Coverage Analyst",
95
+ base_template="test_coverage_analyzer",
96
+ tier_strategy=TierStrategy.PROGRESSIVE,
97
+ tools=["pytest", "coverage"],
98
+ required_responses={"test_coverage_check": "Yes"},
99
+ config_mapping={"coverage_threshold": "min_coverage"},
100
+ success_criteria=[
101
+ "Coverage meets threshold",
102
+ "All tests pass",
103
+ ],
104
+ ),
105
+ AgentCompositionRule(
106
+ role="Code Quality Reviewer",
107
+ base_template="code_reviewer",
108
+ tier_strategy=TierStrategy.PROGRESSIVE,
109
+ tools=["ruff", "mypy"],
110
+ required_responses={"quality_review": "Yes"},
111
+ config_mapping={},
112
+ success_criteria=[
113
+ "No high-severity issues",
114
+ "Complexity within bounds",
115
+ ],
116
+ ),
117
+ AgentCompositionRule(
118
+ role="Documentation Specialist",
119
+ base_template="documentation_writer",
120
+ tier_strategy=TierStrategy.CHEAP_ONLY,
121
+ tools=["pydocstyle"],
122
+ required_responses={"doc_verification": "Yes"},
123
+ config_mapping={},
124
+ success_criteria=[
125
+ "All public APIs documented",
126
+ "README is current",
127
+ ],
128
+ ),
129
+ ],
130
+ )
131
+
132
+ # =============================================================================
133
+ # Test Coverage Boost Template
134
+ # =============================================================================
135
+
136
+ TEST_COVERAGE_BOOST_TEMPLATE = MetaWorkflowTemplate(
137
+ template_id="test-coverage-boost",
138
+ name="Test Coverage Boost",
139
+ description="Multi-agent test generation with gap analysis and validation",
140
+ version="1.0.0",
141
+ tags=["testing", "coverage", "test-generation"],
142
+ author="empathy-framework",
143
+ estimated_cost_range=(0.15, 1.00),
144
+ estimated_duration_minutes=15,
145
+ form_schema=FormSchema(
146
+ title="Test Coverage Boost Configuration",
147
+ description="Configure test generation to improve coverage",
148
+ questions=[
149
+ FormQuestion(
150
+ id="target_coverage",
151
+ text="Target coverage percentage",
152
+ type=QuestionType.SINGLE_SELECT,
153
+ options=["70%", "75%", "80%", "85%", "90%"],
154
+ default="80%",
155
+ help_text="Generate tests until this coverage is reached",
156
+ ),
157
+ FormQuestion(
158
+ id="test_style",
159
+ text="Test style preference",
160
+ type=QuestionType.SINGLE_SELECT,
161
+ options=["pytest", "unittest", "auto-detect"],
162
+ default="auto-detect",
163
+ help_text="Test framework style to use",
164
+ ),
165
+ FormQuestion(
166
+ id="prioritize_high_impact",
167
+ text="Prioritize high-impact files?",
168
+ type=QuestionType.BOOLEAN,
169
+ default="Yes",
170
+ help_text="Focus on complex, frequently-used code first",
171
+ ),
172
+ FormQuestion(
173
+ id="include_edge_cases",
174
+ text="Include edge case tests?",
175
+ type=QuestionType.BOOLEAN,
176
+ default="Yes",
177
+ help_text="Generate tests for boundary conditions",
178
+ ),
179
+ ],
180
+ ),
181
+ agent_composition_rules=[
182
+ AgentCompositionRule(
183
+ role="Gap Analyzer",
184
+ base_template="test_coverage_analyzer",
185
+ tier_strategy=TierStrategy.PROGRESSIVE,
186
+ tools=["pytest-cov", "coverage"],
187
+ required_responses={},
188
+ config_mapping={"target_coverage": "target_coverage"},
189
+ success_criteria=[
190
+ "Identified coverage gaps",
191
+ "Prioritized files by impact",
192
+ ],
193
+ ),
194
+ AgentCompositionRule(
195
+ role="Test Generator",
196
+ base_template="test_generator",
197
+ tier_strategy=TierStrategy.CAPABLE_FIRST,
198
+ tools=["ast", "pytest"],
199
+ required_responses={},
200
+ config_mapping={
201
+ "test_style": "test_style",
202
+ "include_edge_cases": "edge_cases",
203
+ },
204
+ success_criteria=[
205
+ "Tests are syntactically correct",
206
+ "Tests cover identified gaps",
207
+ ],
208
+ ),
209
+ AgentCompositionRule(
210
+ role="Test Validator",
211
+ base_template="test_validator",
212
+ tier_strategy=TierStrategy.CHEAP_ONLY,
213
+ tools=["pytest"],
214
+ required_responses={},
215
+ config_mapping={},
216
+ success_criteria=[
217
+ "Generated tests pass",
218
+ "Coverage improved",
219
+ ],
220
+ ),
221
+ ],
222
+ )
223
+
224
+ # =============================================================================
225
+ # Test Maintenance Template
226
+ # =============================================================================
227
+
228
+ TEST_MAINTENANCE_TEMPLATE = MetaWorkflowTemplate(
229
+ template_id="test-maintenance",
230
+ name="Test Maintenance",
231
+ description="Automated test lifecycle management with gap analysis and validation",
232
+ version="1.0.0",
233
+ tags=["testing", "maintenance", "automation"],
234
+ author="empathy-framework",
235
+ estimated_cost_range=(0.10, 0.80),
236
+ estimated_duration_minutes=12,
237
+ form_schema=FormSchema(
238
+ title="Test Maintenance Configuration",
239
+ description="Configure test maintenance and generation",
240
+ questions=[
241
+ FormQuestion(
242
+ id="mode",
243
+ text="Maintenance mode",
244
+ type=QuestionType.SINGLE_SELECT,
245
+ options=["full", "analyze", "generate", "validate", "report"],
246
+ default="full",
247
+ help_text="Full runs all agents; other modes run specific phases",
248
+ ),
249
+ FormQuestion(
250
+ id="max_files",
251
+ text="Maximum files to process",
252
+ type=QuestionType.SINGLE_SELECT,
253
+ options=["5", "10", "20", "30", "50"],
254
+ default="30",
255
+ help_text="Limit number of files to process per run",
256
+ ),
257
+ FormQuestion(
258
+ id="staleness_threshold",
259
+ text="Staleness threshold (days)",
260
+ type=QuestionType.SINGLE_SELECT,
261
+ options=["3", "7", "14", "30"],
262
+ default="7",
263
+ help_text="Tests older than this are considered stale",
264
+ ),
265
+ FormQuestion(
266
+ id="auto_validation",
267
+ text="Enable auto-validation?",
268
+ type=QuestionType.BOOLEAN,
269
+ default="Yes",
270
+ help_text="Automatically run generated tests to verify they work",
271
+ ),
272
+ ],
273
+ ),
274
+ agent_composition_rules=[
275
+ AgentCompositionRule(
276
+ role="Test Analyst",
277
+ base_template="test_coverage_analyzer",
278
+ tier_strategy=TierStrategy.PROGRESSIVE,
279
+ tools=["pytest-cov", "coverage"],
280
+ required_responses={"mode": ["full", "analyze"]},
281
+ config_mapping={
282
+ "max_files": "max_files_per_run",
283
+ "staleness_threshold": "staleness_days",
284
+ },
285
+ success_criteria=[
286
+ "Coverage gaps identified",
287
+ "Stale tests detected",
288
+ ],
289
+ ),
290
+ AgentCompositionRule(
291
+ role="Test Generator",
292
+ base_template="test_generator",
293
+ tier_strategy=TierStrategy.CAPABLE_FIRST,
294
+ tools=["ast", "pytest"],
295
+ required_responses={"mode": ["full", "generate"]},
296
+ config_mapping={},
297
+ success_criteria=[
298
+ "Tests generated for priority files",
299
+ ],
300
+ ),
301
+ AgentCompositionRule(
302
+ role="Test Validator",
303
+ base_template="test_validator",
304
+ tier_strategy=TierStrategy.CHEAP_ONLY,
305
+ tools=["pytest"],
306
+ required_responses={"mode": ["full", "validate"], "auto_validation": "Yes"},
307
+ config_mapping={},
308
+ success_criteria=[
309
+ "Generated tests pass",
310
+ ],
311
+ ),
312
+ AgentCompositionRule(
313
+ role="Test Reporter",
314
+ base_template="report_generator",
315
+ tier_strategy=TierStrategy.CHEAP_ONLY,
316
+ tools=[],
317
+ required_responses={},
318
+ config_mapping={},
319
+ success_criteria=[
320
+ "Status report generated",
321
+ ],
322
+ ),
323
+ ],
324
+ )
325
+
326
+ # =============================================================================
327
+ # Documentation Management Template
328
+ # =============================================================================
329
+
330
+ MANAGE_DOCS_TEMPLATE = MetaWorkflowTemplate(
331
+ template_id="manage-docs",
332
+ name="Documentation Management",
333
+ description="Ensure program files are documented and docs stay in sync with code",
334
+ version="1.0.0",
335
+ tags=["documentation", "docstrings", "readme"],
336
+ author="empathy-framework",
337
+ estimated_cost_range=(0.08, 0.50),
338
+ estimated_duration_minutes=8,
339
+ form_schema=FormSchema(
340
+ title="Documentation Management Configuration",
341
+ description="Configure documentation sync and gap detection",
342
+ questions=[
343
+ FormQuestion(
344
+ id="check_docstrings",
345
+ text="Check for missing docstrings?",
346
+ type=QuestionType.BOOLEAN,
347
+ default="Yes",
348
+ help_text="Identify functions and classes without docstrings",
349
+ ),
350
+ FormQuestion(
351
+ id="check_readme",
352
+ text="Check README freshness?",
353
+ type=QuestionType.BOOLEAN,
354
+ default="Yes",
355
+ help_text="Verify README reflects recent code changes",
356
+ ),
357
+ FormQuestion(
358
+ id="check_api_docs",
359
+ text="Check API documentation?",
360
+ type=QuestionType.BOOLEAN,
361
+ default="Yes",
362
+ help_text="Verify all public APIs are documented",
363
+ ),
364
+ FormQuestion(
365
+ id="suggest_updates",
366
+ text="Generate update suggestions?",
367
+ type=QuestionType.BOOLEAN,
368
+ default="Yes",
369
+ help_text="Provide specific recommendations for documentation improvements",
370
+ ),
371
+ ],
372
+ ),
373
+ agent_composition_rules=[
374
+ AgentCompositionRule(
375
+ role="Documentation Analyst",
376
+ base_template="documentation_analyst",
377
+ tier_strategy=TierStrategy.PROGRESSIVE,
378
+ tools=["ast", "pydocstyle"],
379
+ required_responses={},
380
+ config_mapping={
381
+ "check_docstrings": "analyze_docstrings",
382
+ "check_readme": "analyze_readme",
383
+ "check_api_docs": "analyze_api_docs",
384
+ },
385
+ success_criteria=[
386
+ "Documentation gaps identified",
387
+ ],
388
+ ),
389
+ AgentCompositionRule(
390
+ role="Documentation Reviewer",
391
+ base_template="documentation_writer",
392
+ tier_strategy=TierStrategy.PROGRESSIVE,
393
+ tools=[],
394
+ required_responses={},
395
+ config_mapping={},
396
+ success_criteria=[
397
+ "Findings validated",
398
+ "False positives removed",
399
+ ],
400
+ ),
401
+ AgentCompositionRule(
402
+ role="Documentation Synthesizer",
403
+ base_template="synthesizer",
404
+ tier_strategy=TierStrategy.CAPABLE_FIRST,
405
+ tools=[],
406
+ required_responses={"suggest_updates": "Yes"},
407
+ config_mapping={},
408
+ success_criteria=[
409
+ "Prioritized action plan created",
410
+ ],
411
+ ),
412
+ ],
413
+ )
414
+
415
+ # =============================================================================
416
+ # Feature Overview Template
417
+ # =============================================================================
418
+
419
+ FEATURE_OVERVIEW_TEMPLATE = MetaWorkflowTemplate(
420
+ template_id="feature-overview",
421
+ name="Feature Overview Generator",
422
+ description="Generate comprehensive technical documentation for code modules, suitable for architects, engineers, and content creators",
423
+ version="1.0.0",
424
+ tags=["documentation", "architecture", "insights", "blog"],
425
+ author="empathy-framework",
426
+ estimated_cost_range=(0.40, 0.80),
427
+ estimated_duration_minutes=15,
428
+ form_schema=FormSchema(
429
+ title="Feature Overview Configuration",
430
+ description="Configure technical documentation generation",
431
+ questions=[
432
+ FormQuestion(
433
+ id="target_path",
434
+ text="Which module or directory to analyze?",
435
+ type=QuestionType.TEXT_INPUT,
436
+ default="src/",
437
+ help_text="Path to the code you want to document",
438
+ ),
439
+ FormQuestion(
440
+ id="target_audience",
441
+ text="Who is the primary audience?",
442
+ type=QuestionType.SINGLE_SELECT,
443
+ options=["Architects", "Engineers", "Technical Writers", "All"],
444
+ default="Architects",
445
+ help_text="Tailors the depth and focus of documentation",
446
+ ),
447
+ FormQuestion(
448
+ id="include_blog_summary",
449
+ text="Include blog-ready summary?",
450
+ type=QuestionType.BOOLEAN,
451
+ default="Yes",
452
+ help_text="Generate a summary suitable for technical blog posts",
453
+ ),
454
+ FormQuestion(
455
+ id="include_diagrams",
456
+ text="Include architecture diagrams?",
457
+ type=QuestionType.BOOLEAN,
458
+ default="Yes",
459
+ help_text="Generate ASCII diagrams showing component relationships",
460
+ ),
461
+ ],
462
+ ),
463
+ agent_composition_rules=[
464
+ AgentCompositionRule(
465
+ role="Code Scanner",
466
+ base_template="generic_agent",
467
+ tier_strategy=TierStrategy.CAPABLE_FIRST,
468
+ tools=["read", "grep", "glob"],
469
+ required_responses={},
470
+ config_mapping={"target_path": "path"},
471
+ success_criteria=[
472
+ "modules_identified",
473
+ "structure_mapped",
474
+ ],
475
+ ),
476
+ AgentCompositionRule(
477
+ role="Insights Reporter",
478
+ base_template="generic_agent",
479
+ tier_strategy=TierStrategy.CAPABLE_FIRST,
480
+ tools=["read"],
481
+ required_responses={},
482
+ config_mapping={"target_audience": "audience"},
483
+ success_criteria=[
484
+ "patterns_identified",
485
+ "insights_generated",
486
+ ],
487
+ ),
488
+ AgentCompositionRule(
489
+ role="Architecture Analyst",
490
+ base_template="architecture_analyst",
491
+ tier_strategy=TierStrategy.CAPABLE_FIRST,
492
+ tools=["read"],
493
+ required_responses={"include_diagrams": "Yes"},
494
+ config_mapping={},
495
+ success_criteria=[
496
+ "diagrams_created",
497
+ "relationships_mapped",
498
+ ],
499
+ ),
500
+ AgentCompositionRule(
501
+ role="Quality Reviewer",
502
+ base_template="code_reviewer",
503
+ tier_strategy=TierStrategy.PREMIUM_ONLY,
504
+ tools=["read"],
505
+ required_responses={},
506
+ config_mapping={},
507
+ success_criteria=[
508
+ "accuracy_validated",
509
+ "completeness_checked",
510
+ ],
511
+ ),
512
+ AgentCompositionRule(
513
+ role="Blog Content Creator",
514
+ base_template="generic_agent",
515
+ tier_strategy=TierStrategy.PREMIUM_ONLY,
516
+ tools=["write"],
517
+ required_responses={"include_blog_summary": "Yes"},
518
+ config_mapping={"target_audience": "audience"},
519
+ success_criteria=[
520
+ "blog_summary_created",
521
+ "audience_appropriate",
522
+ ],
523
+ ),
524
+ ],
525
+ )
526
+
527
+ # =============================================================================
528
+ # Template Registry
529
+ # =============================================================================
530
+
531
+ BUILTIN_TEMPLATES = {
532
+ "release-prep": RELEASE_PREP_TEMPLATE,
533
+ "test-coverage-boost": TEST_COVERAGE_BOOST_TEMPLATE,
534
+ "test-maintenance": TEST_MAINTENANCE_TEMPLATE,
535
+ "manage-docs": MANAGE_DOCS_TEMPLATE,
536
+ "feature-overview": FEATURE_OVERVIEW_TEMPLATE,
537
+ }
538
+
539
+
540
+ def get_builtin_template(template_id: str) -> MetaWorkflowTemplate | None:
541
+ """Get a built-in template by ID.
542
+
543
+ Args:
544
+ template_id: ID of the template to retrieve
545
+
546
+ Returns:
547
+ MetaWorkflowTemplate if found, None otherwise
548
+ """
549
+ return BUILTIN_TEMPLATES.get(template_id)
550
+
551
+
552
+ def list_builtin_templates() -> list[str]:
553
+ """List all built-in template IDs.
554
+
555
+ Returns:
556
+ List of template IDs
557
+ """
558
+ return list(BUILTIN_TEMPLATES.keys())
559
+
560
+
561
+ def get_all_builtin_templates() -> dict[str, MetaWorkflowTemplate]:
562
+ """Get all built-in templates.
563
+
564
+ Returns:
565
+ Dictionary mapping template_id → MetaWorkflowTemplate
566
+ """
567
+ return BUILTIN_TEMPLATES.copy()
@@ -0,0 +1,56 @@
1
+ """CLI Commands Package for Meta-Workflows.
2
+
3
+ Organized command modules for meta-workflow system.
4
+
5
+ Copyright 2025 Smart-AI-Memory
6
+ Licensed under Fair Source License 0.9
7
+ """
8
+
9
+ import typer
10
+
11
+ # Create Typer app for meta-workflow commands
12
+ meta_workflow_app = typer.Typer(
13
+ name="meta-workflow",
14
+ help="Meta-workflow system for dynamic agent team generation",
15
+ no_args_is_help=True,
16
+ )
17
+
18
+ # Import all commands (they will auto-register with meta_workflow_app via decorators)
19
+ from .agent_commands import create_agent, create_team
20
+ from .analytics_commands import (
21
+ cleanup_executions,
22
+ list_runs,
23
+ show_analytics,
24
+ show_execution,
25
+ )
26
+ from .config_commands import show_migration_guide, suggest_defaults_cmd
27
+ from .memory_commands import search_memory, show_session_stats
28
+ from .template_commands import generate_plan_cmd, inspect_template, list_templates
29
+ from .workflow_commands import detect_intent, natural_language_run, run_workflow
30
+
31
+ __all__ = [
32
+ # Typer app
33
+ "meta_workflow_app",
34
+ # Template commands
35
+ "list_templates",
36
+ "inspect_template",
37
+ "generate_plan_cmd",
38
+ # Workflow commands
39
+ "run_workflow",
40
+ "natural_language_run",
41
+ "detect_intent",
42
+ # Analytics commands
43
+ "show_analytics",
44
+ "list_runs",
45
+ "show_execution",
46
+ "cleanup_executions",
47
+ # Memory commands
48
+ "search_memory",
49
+ "show_session_stats",
50
+ # Config commands
51
+ "suggest_defaults_cmd",
52
+ "show_migration_guide",
53
+ # Agent commands
54
+ "create_agent",
55
+ "create_team",
56
+ ]