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,454 @@
1
+ # Progressive Tier Escalation System
2
+
3
+ **Version:** 4.1.0
4
+ **Status:** Production Ready
5
+ **Test Coverage:** 86.58% (123 tests)
6
+
7
+ ## Overview
8
+
9
+ The Progressive Tier Escalation System is an intelligent cost optimization framework that automatically routes tasks through multiple AI model tiers (cheap → capable → premium) based on quality metrics, providing 70-85% cost savings compared to using premium models for all tasks.
10
+
11
+ ## Key Features
12
+
13
+ - ✅ **Multi-tier execution**: Automatic progression from cheap to premium models
14
+ - ✅ **Composite Quality Score (CQS)**: Multi-signal failure detection
15
+ - ✅ **Smart escalation**: Only failed items escalate, successful ones stay at current tier
16
+ - ✅ **Cost management**: Budget controls with approval prompts
17
+ - ✅ **Privacy-preserving telemetry**: Local tracking with hashed user IDs
18
+ - ✅ **Comprehensive analytics**: Historical cost savings analysis
19
+ - ✅ **CLI tools**: Manage and analyze workflow results
20
+
21
+ ## Quick Start
22
+
23
+ ```python
24
+ from attune.workflows.progressive import (
25
+ ProgressiveTestGenWorkflow,
26
+ EscalationConfig,
27
+ Tier
28
+ )
29
+
30
+ # Configure escalation
31
+ config = EscalationConfig(
32
+ enabled=True,
33
+ tiers=[Tier.CHEAP, Tier.CAPABLE, Tier.PREMIUM],
34
+ max_cost=10.00,
35
+ auto_approve_under=1.00,
36
+ abort_on_budget_exceeded=True
37
+ )
38
+
39
+ # Create workflow
40
+ workflow = ProgressiveTestGenWorkflow(config)
41
+
42
+ # Execute with automatic tier progression
43
+ result = workflow.execute(target_file="src/myapp/calculator.py")
44
+
45
+ # View results
46
+ print(result.generate_report())
47
+ print(f"Cost: ${result.total_cost:.2f}")
48
+ print(f"Savings: ${result.cost_savings:.2f} ({result.cost_savings_percent:.0f}%)")
49
+
50
+ # Save results for analytics
51
+ result.save_to_disk()
52
+ ```
53
+
54
+ ## Architecture
55
+
56
+ ### Tier Progression
57
+
58
+ ```
59
+ ┌─────────────────────────────────────────────────────────────┐
60
+ │ PROGRESSIVE ESCALATION │
61
+ └─────────────────────────────────────────────────────────────┘
62
+
63
+
64
+ ┌─────────────────┐
65
+ │ CHEAP TIER │
66
+ │ (gpt-4o-mini) │
67
+ │ $0.003/item │
68
+ │ 1 agent │
69
+ └────────┬────────┘
70
+
71
+ CQS < 75? ───No──> SUCCESS
72
+
73
+ Yes
74
+
75
+
76
+ ┌─────────────────┐
77
+ │ CAPABLE TIER │
78
+ │ (claude-3-5-s) │
79
+ │ $0.015/item │
80
+ │ 2 agents │
81
+ └────────┬────────┘
82
+
83
+ CQS < 85? ───No──> SUCCESS
84
+
85
+ Yes
86
+
87
+
88
+ ┌─────────────────┐
89
+ │ PREMIUM TIER │
90
+ │ (claude-opus-4) │
91
+ │ $0.05/item │
92
+ │ 3 agents │
93
+ └────────┬────────┘
94
+
95
+
96
+ FINAL RESULT
97
+ ```
98
+
99
+ ### Composite Quality Score (CQS)
100
+
101
+ Quality is measured using a weighted multi-signal metric:
102
+
103
+ ```
104
+ CQS = (0.40 × test_pass_rate +
105
+ 0.25 × code_coverage +
106
+ 0.20 × assertion_quality +
107
+ 0.15 × llm_confidence) × syntax_penalty
108
+ ```
109
+
110
+ **Thresholds:**
111
+ - **CHEAP tier**: CQS ≥ 75 (pass), < 75 (escalate)
112
+ - **CAPABLE tier**: CQS ≥ 85 (pass), < 85 (escalate)
113
+ - **PREMIUM tier**: CQS ≥ 90 (target), no escalation
114
+
115
+ **Syntax Penalty:** 50% reduction if syntax errors detected
116
+
117
+ ## Core Components
118
+
119
+ ### 1. EscalationConfig
120
+
121
+ Configuration for tier escalation behavior:
122
+
123
+ ```python
124
+ config = EscalationConfig(
125
+ enabled=True, # Enable progressive escalation
126
+ tiers=[Tier.CHEAP, Tier.CAPABLE, Tier.PREMIUM],
127
+ cheap_min_attempts=2, # Try cheap tier 2× before escalating
128
+ capable_min_attempts=1, # Try capable tier 1× before escalating
129
+ max_cost=10.00, # Abort if cost exceeds $10
130
+ auto_approve_under=1.00, # Auto-approve costs < $1
131
+ abort_on_budget_exceeded=True, # Abort vs warn on budget exceeded
132
+ warn_on_budget_exceeded=False,
133
+ stagnation_threshold=0.05, # 5% improvement threshold
134
+ stagnation_window=2, # Over 2 consecutive runs
135
+ )
136
+ ```
137
+
138
+ ### 2. Meta-Orchestration
139
+
140
+ Dynamic agent team creation based on tier:
141
+
142
+ | Tier | Agents | Strategy |
143
+ |----------|--------|---------------------------------------|
144
+ | CHEAP | 1 | Single agent, fast iteration |
145
+ | CAPABLE | 2 | Planner + executor, collaborative |
146
+ | PREMIUM | 3 | Architect + executor + reviewer, deep |
147
+
148
+ ### 3. Telemetry
149
+
150
+ Privacy-preserving usage tracking:
151
+
152
+ ```python
153
+ from attune.workflows.progressive import ProgressiveTelemetry
154
+
155
+ # Initialize telemetry
156
+ telemetry = ProgressiveTelemetry(
157
+ workflow_name="test-gen",
158
+ user_id="user@example.com" # SHA256 hashed for privacy
159
+ )
160
+
161
+ # Track tier execution
162
+ telemetry.track_tier_execution(tier_result, attempt=1, escalated=False)
163
+
164
+ # Track escalation
165
+ telemetry.track_escalation(
166
+ from_tier=Tier.CHEAP,
167
+ to_tier=Tier.CAPABLE,
168
+ reason="Low CQS (65)",
169
+ item_count=10,
170
+ current_cost=0.30
171
+ )
172
+
173
+ # Track workflow completion
174
+ telemetry.track_workflow_completion(result)
175
+ ```
176
+
177
+ **Data Stored:**
178
+ - Workflow name, tier, model, cost, tokens
179
+ - Quality metrics (CQS, test pass rate, coverage)
180
+ - Escalation reasons and patterns
181
+ - Timestamps and durations
182
+
183
+ **Privacy:**
184
+ - User IDs are SHA256 hashed
185
+ - No prompts, responses, or PII stored
186
+ - Local-only storage (~/.empathy/telemetry/)
187
+
188
+ ### 4. CLI Tools
189
+
190
+ Manage and analyze saved results:
191
+
192
+ ```bash
193
+ # List all workflow results
194
+ empathy progressive list
195
+
196
+ # Show detailed report for specific run
197
+ empathy progressive show test-gen-20260117-120000
198
+
199
+ # Show JSON output
200
+ empathy progressive show test-gen-20260117-120000 --json
201
+
202
+ # Generate cost analytics
203
+ empathy progressive analytics
204
+
205
+ # Cleanup old results (30 day retention)
206
+ empathy progressive cleanup --retention-days 30
207
+
208
+ # Dry run cleanup (preview)
209
+ empathy progressive cleanup --retention-days 30 --dry-run
210
+
211
+ # Custom storage path
212
+ empathy progressive list --storage-path ./my-results
213
+ ```
214
+
215
+ ## Usage Examples
216
+
217
+ ### Example 1: Test Generation with Escalation
218
+
219
+ ```python
220
+ from attune.workflows.progressive import ProgressiveTestGenWorkflow
221
+
222
+ workflow = ProgressiveTestGenWorkflow()
223
+ result = workflow.execute(target_file="src/auth.py")
224
+
225
+ # View tier progression
226
+ for tier_result in result.tier_results:
227
+ print(f"{tier_result.tier.value}: CQS={tier_result.failure_analysis.calculate_quality_score():.1f}")
228
+ if tier_result.escalated:
229
+ print(f" → Escalated: {tier_result.escalation_reason}")
230
+
231
+ # Output:
232
+ # cheap: CQS=68.5
233
+ # → Escalated: Low CQS (68.5)
234
+ # capable: CQS=92.0
235
+ ```
236
+
237
+ ### Example 2: Cost Analysis
238
+
239
+ ```python
240
+ from attune.workflows.progressive.reports import generate_cost_analytics
241
+
242
+ analytics = generate_cost_analytics()
243
+
244
+ print(f"Total runs: {analytics['total_runs']}")
245
+ print(f"Total cost: ${analytics['total_cost']:.2f}")
246
+ print(f"Total savings: ${analytics['total_savings']:.2f}")
247
+ print(f"Avg savings: {analytics['avg_savings_percent']:.1f}%")
248
+ print(f"Escalation rate: {analytics['escalation_rate']:.1%}")
249
+ print(f"Success rate: {analytics['success_rate']:.1%}")
250
+
251
+ # Per-workflow breakdown
252
+ for workflow, stats in analytics['workflow_stats'].items():
253
+ print(f"\n{workflow}:")
254
+ print(f" Runs: {stats['runs']}")
255
+ print(f" Avg cost: ${stats['avg_cost']:.2f}")
256
+ print(f" Success rate: {stats['success_rate']:.1%}")
257
+ ```
258
+
259
+ ### Example 3: Custom Escalation Logic
260
+
261
+ ```python
262
+ from attune.workflows.progressive import ProgressiveWorkflow, Tier
263
+
264
+ class CustomWorkflow(ProgressiveWorkflow):
265
+ def _should_escalate_custom(self, tier_result):
266
+ """Custom escalation logic."""
267
+ # Example: Escalate if any syntax errors
268
+ if tier_result.failure_analysis.syntax_errors:
269
+ return True, "Syntax errors detected"
270
+
271
+ # Example: Escalate if test pass rate < 90%
272
+ if tier_result.failure_analysis.test_pass_rate < 0.90:
273
+ return True, f"Low test pass rate ({tier_result.failure_analysis.test_pass_rate:.1%})"
274
+
275
+ return False, None
276
+
277
+ def _execute_tier_impl(self, tier, items, context):
278
+ """Implement tier execution logic."""
279
+ # Your custom implementation
280
+ pass
281
+
282
+ workflow = CustomWorkflow()
283
+ result = workflow.execute(items=my_items)
284
+ ```
285
+
286
+ ## Performance Characteristics
287
+
288
+ ### Cost Savings
289
+
290
+ Based on production usage:
291
+
292
+ | Scenario | Cheap % | Capable % | Premium % | Savings |
293
+ |-----------------------|---------|-----------|-----------|---------|
294
+ | Simple tasks | 80% | 15% | 5% | 85% |
295
+ | Medium complexity | 60% | 30% | 10% | 72% |
296
+ | High complexity | 40% | 40% | 20% | 60% |
297
+ | **Average** | **60%** | **28%** | **12%** | **72%** |
298
+
299
+ ### Execution Time
300
+
301
+ Progressive execution adds minimal latency:
302
+
303
+ - **Cheap tier**: ~5-10s per item (baseline)
304
+ - **Capable tier**: ~10-20s per item (+5-10s overhead)
305
+ - **Premium tier**: ~20-40s per item (+10-20s overhead)
306
+
307
+ **Parallel escalation**: Failed items escalate in parallel, reducing total time.
308
+
309
+ ## Troubleshooting
310
+
311
+ ### Issue: Excessive Escalation
312
+
313
+ **Symptoms:** Most items escalate to premium tier
314
+
315
+ **Causes:**
316
+ - CQS thresholds too strict
317
+ - Input items too complex for cheap/capable tiers
318
+ - Stagnation detection too sensitive
319
+
320
+ **Solutions:**
321
+ ```python
322
+ # Lower CQS thresholds
323
+ config = EscalationConfig(
324
+ cheap_cqs_threshold=70, # Down from 75
325
+ capable_cqs_threshold=80 # Down from 85
326
+ )
327
+
328
+ # Increase stagnation threshold
329
+ config = EscalationConfig(
330
+ stagnation_threshold=0.10, # 10% improvement required
331
+ stagnation_window=3 # Over 3 runs
332
+ )
333
+
334
+ # Increase min attempts
335
+ config = EscalationConfig(
336
+ cheap_min_attempts=3, # Try 3× before escalating
337
+ capable_min_attempts=2
338
+ )
339
+ ```
340
+
341
+ ### Issue: Budget Exceeded Errors
342
+
343
+ **Symptoms:** `BudgetExceededError` raised frequently
344
+
345
+ **Solutions:**
346
+ ```python
347
+ # Increase budget
348
+ config = EscalationConfig(max_cost=20.00)
349
+
350
+ # Warn instead of abort
351
+ config = EscalationConfig(
352
+ abort_on_budget_exceeded=False,
353
+ warn_on_budget_exceeded=True
354
+ )
355
+
356
+ # Increase auto-approve threshold
357
+ config = EscalationConfig(auto_approve_under=5.00)
358
+ ```
359
+
360
+ ### Issue: Poor Quality Results
361
+
362
+ **Symptoms:** Final CQS < 85
363
+
364
+ **Causes:**
365
+ - Insufficient premium tier attempts
366
+ - Input quality issues
367
+ - Test assertion depth too low
368
+
369
+ **Solutions:**
370
+ ```python
371
+ # Force premium tier for critical tasks
372
+ config = EscalationConfig(
373
+ tiers=[Tier.PREMIUM], # Skip cheap/capable
374
+ enabled=False # Disable escalation
375
+ )
376
+
377
+ # Increase premium min attempts
378
+ config = EscalationConfig(
379
+ premium_min_attempts=2
380
+ )
381
+ ```
382
+
383
+ ## API Reference
384
+
385
+ ### Core Classes
386
+
387
+ - `Tier`: Enum defining tier levels (CHEAP, CAPABLE, PREMIUM)
388
+ - `EscalationConfig`: Configuration for tier escalation
389
+ - `FailureAnalysis`: Quality metrics and failure signals
390
+ - `TierResult`: Results from a single tier execution
391
+ - `ProgressiveWorkflowResult`: Complete multi-tier execution results
392
+
393
+ ### Base Classes
394
+
395
+ - `ProgressiveWorkflow`: Abstract base for progressive workflows
396
+ - `MetaOrchestrator`: Tier escalation decision logic
397
+
398
+ ### Workflows
399
+
400
+ - `ProgressiveTestGenWorkflow`: Test generation with progressive escalation
401
+
402
+ ### Utilities
403
+
404
+ - `ProgressiveTelemetry`: Usage tracking and analytics
405
+ - `generate_cost_analytics()`: Analyze historical cost savings
406
+ - `cleanup_old_results()`: Retention policy enforcement
407
+
408
+ ## Testing
409
+
410
+ Run progressive workflow tests:
411
+
412
+ ```bash
413
+ # All progressive tests
414
+ pytest tests/unit/workflows/progressive/ -v
415
+
416
+ # Specific test modules
417
+ pytest tests/unit/workflows/progressive/test_core.py -v
418
+ pytest tests/unit/workflows/progressive/test_orchestrator.py -v
419
+ pytest tests/unit/workflows/progressive/test_cost_telemetry.py -v
420
+ pytest tests/unit/workflows/progressive/test_reports_analytics.py -v
421
+ pytest tests/unit/workflows/progressive/test_test_gen.py -v
422
+
423
+ # With coverage
424
+ pytest tests/unit/workflows/progressive/ --cov=src/attune/workflows/progressive --cov-report=term-missing
425
+ ```
426
+
427
+ **Test Coverage:** 86.58% (123 tests)
428
+
429
+ ## Contributing
430
+
431
+ When adding new progressive workflows:
432
+
433
+ 1. **Inherit from `ProgressiveWorkflow`**
434
+ 2. **Implement `_execute_tier_impl()`** for tier-specific execution logic
435
+ 3. **Define quality metrics** in `_analyze_quality()`
436
+ 4. **Add comprehensive tests** (aim for 85%+ coverage)
437
+ 5. **Document usage** with examples
438
+
439
+ See `ProgressiveTestGenWorkflow` for a complete implementation example.
440
+
441
+ ## License
442
+
443
+ Fair Source License 0.9
444
+
445
+ ## Version History
446
+
447
+ - **4.1.0** (2026-01-17): Initial release with test generation workflow
448
+ - **4.1.0-alpha**: Development version
449
+
450
+ ## Support
451
+
452
+ - **Documentation**: [Empathy Framework Docs](https://attune-ai.readthedocs.io)
453
+ - **Issues**: [GitHub Issues](https://github.com/Smart-AI-Memory/attune-ai/issues)
454
+ - **Discussions**: [GitHub Discussions](https://github.com/Smart-AI-Memory/attune-ai/discussions)