devflow-kit 1.8.2 → 2.0.0

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 (867) hide show
  1. package/CHANGELOG.md +191 -6
  2. package/LICENSE +1 -1
  3. package/README.md +139 -219
  4. package/dist/cli/agents-view/index.js +9 -0
  5. package/dist/cli/agents-view/render.js +310 -0
  6. package/dist/cli/agents-view/state.js +423 -0
  7. package/dist/cli/agents-view/terminal.js +179 -0
  8. package/dist/cli/commands/agents.js +585 -0
  9. package/dist/cli/commands/ambient.js +231 -0
  10. package/dist/cli/commands/capture.js +133 -0
  11. package/dist/cli/commands/compliance-prompts.js +174 -0
  12. package/dist/cli/commands/compliance.js +337 -0
  13. package/dist/cli/commands/context.js +66 -0
  14. package/dist/cli/commands/debug.js +122 -0
  15. package/dist/cli/commands/flags.js +119 -0
  16. package/dist/cli/commands/hud.js +229 -0
  17. package/dist/cli/commands/init-seed.js +226 -0
  18. package/dist/cli/commands/init.js +1786 -0
  19. package/dist/cli/commands/knowledge/index.js +25 -0
  20. package/dist/cli/commands/knowledge/list.js +115 -0
  21. package/dist/cli/commands/knowledge/toggle.js +84 -0
  22. package/dist/cli/commands/learning.js +311 -0
  23. package/dist/cli/commands/legacy-hooks.js +40 -0
  24. package/dist/cli/commands/memory.js +349 -0
  25. package/dist/cli/commands/proxy.js +1435 -0
  26. package/dist/cli/commands/rules.js +334 -0
  27. package/dist/cli/commands/safe-delete.js +140 -0
  28. package/dist/cli/commands/security.js +179 -0
  29. package/dist/cli/commands/skills.js +140 -0
  30. package/dist/cli/commands/uninstall.js +1214 -0
  31. package/dist/cli.js +35 -10
  32. package/dist/commands/bug-analysis.md +400 -0
  33. package/dist/commands/code-review.md +403 -0
  34. package/dist/commands/debug.md +282 -0
  35. package/dist/commands/dynamic-build.md +972 -0
  36. package/dist/commands/dynamic-plan.md +383 -0
  37. package/dist/commands/dynamic-profile.md +206 -0
  38. package/dist/commands/dynamic-tickets.md +583 -0
  39. package/dist/commands/explore.md +208 -0
  40. package/dist/commands/implement.md +590 -0
  41. package/dist/commands/plan.md +570 -0
  42. package/dist/commands/release.md +206 -0
  43. package/dist/commands/research.md +212 -0
  44. package/dist/commands/resolve.md +731 -0
  45. package/dist/commands/self-review.md +251 -0
  46. package/dist/core/agent-frontmatter.js +209 -0
  47. package/dist/core/agent-models.js +556 -0
  48. package/dist/core/agent-state.js +44 -0
  49. package/dist/core/assets.js +39 -0
  50. package/dist/core/cache.js +205 -0
  51. package/dist/core/codex-auth-inspect.js +128 -0
  52. package/dist/core/compliance-compose.js +458 -0
  53. package/dist/core/compliance.js +165 -0
  54. package/dist/core/external-models.js +76 -0
  55. package/dist/core/feature-config.js +125 -0
  56. package/dist/core/flags.js +309 -0
  57. package/dist/core/fs-atomic.js +74 -0
  58. package/dist/core/git.js +61 -0
  59. package/dist/core/learning-queue-cleanup.js +92 -0
  60. package/dist/core/learning-tuning-config.js +78 -0
  61. package/dist/core/manifest.js +171 -0
  62. package/dist/core/migrations.js +330 -0
  63. package/dist/core/model-discovery.js +655 -0
  64. package/dist/core/observation-io.js +50 -0
  65. package/dist/core/observations.js +109 -0
  66. package/dist/core/orphan-sweep.js +92 -0
  67. package/dist/core/paths.js +48 -0
  68. package/dist/core/plugins.js +525 -0
  69. package/dist/core/project-paths.js +159 -0
  70. package/dist/core/proxy-log.js +165 -0
  71. package/dist/core/proxy-state.js +305 -0
  72. package/dist/core/safe-delete-install.js +191 -0
  73. package/dist/core/teammate-mode-cleanup.js +33 -0
  74. package/dist/hud/colors.js +13 -2
  75. package/dist/hud/components/config-counts.js +2 -2
  76. package/dist/hud/components/context-usage.js +2 -2
  77. package/dist/hud/components/learning-counts.js +92 -0
  78. package/dist/hud/components/session-cost.js +10 -2
  79. package/dist/hud/components/usage-quota.js +43 -8
  80. package/dist/hud/components/version-badge.js +17 -7
  81. package/dist/hud/config.js +4 -2
  82. package/dist/hud/cost-history.js +281 -0
  83. package/dist/hud/git.js +112 -71
  84. package/dist/hud/index.js +47 -4
  85. package/dist/hud/render.js +8 -20
  86. package/dist/hud/transcript.js +5 -6
  87. package/dist/targets/claude-code/claude-paths.js +106 -0
  88. package/dist/targets/claude-code/compliance-install.js +305 -0
  89. package/dist/targets/claude-code/hooks.js +9 -0
  90. package/dist/targets/claude-code/installer.js +458 -0
  91. package/dist/targets/claude-code/legacy.js +239 -0
  92. package/dist/targets/claude-code/post-install.js +971 -0
  93. package/package.json +23 -17
  94. package/src/assets/agents/code.md +244 -0
  95. package/src/assets/agents/design.md +113 -0
  96. package/src/assets/agents/diagnose.md +210 -0
  97. package/src/assets/agents/evaluate.md +117 -0
  98. package/src/assets/agents/git.md +938 -0
  99. package/src/assets/agents/knowledge.md +89 -0
  100. package/src/assets/agents/learning.md +203 -0
  101. package/src/assets/agents/research.md +134 -0
  102. package/src/assets/agents/review.md +220 -0
  103. package/src/assets/agents/scrutinize.md +95 -0
  104. package/src/assets/agents/simplify.md +108 -0
  105. package/src/assets/agents/skim.md +136 -0
  106. package/src/assets/agents/synthesize.md +402 -0
  107. package/src/assets/agents/test.md +155 -0
  108. package/src/assets/agents/triage.md +141 -0
  109. package/src/assets/agents/validate.md +103 -0
  110. package/src/assets/commands/_partials/_compliance.mds +5 -0
  111. package/src/assets/commands/_partials/_decisions.mds +20 -0
  112. package/src/assets/commands/_partials/_engine.mds +244 -0
  113. package/src/assets/commands/_partials/_factory.mds +216 -0
  114. package/src/assets/commands/_partials/_knowledge.mds +95 -0
  115. package/src/assets/commands/_partials/_plan_contract.mds +51 -0
  116. package/src/assets/commands/_partials/_preamble.mds +82 -0
  117. package/src/assets/commands/_partials/_publication.mds +7 -0
  118. package/src/assets/commands/_partials/_roster.mds +31 -0
  119. package/src/assets/commands/_partials/_ticket_template.mds +59 -0
  120. package/src/assets/commands/_partials/_wave.mds +123 -0
  121. package/src/assets/commands/bug-analysis.mds +353 -0
  122. package/src/assets/commands/code-review.mds +355 -0
  123. package/src/assets/commands/debug.mds +224 -0
  124. package/src/assets/commands/dynamic-build.mds +534 -0
  125. package/src/assets/commands/dynamic-plan.mds +244 -0
  126. package/src/assets/commands/dynamic-profile.mds +132 -0
  127. package/src/assets/commands/dynamic-tickets.mds +226 -0
  128. package/src/assets/commands/explore.mds +150 -0
  129. package/src/assets/commands/implement.mds +496 -0
  130. package/src/assets/commands/plan.mds +523 -0
  131. package/src/assets/commands/release.md +206 -0
  132. package/src/assets/commands/research.mds +164 -0
  133. package/src/assets/commands/resolve.mds +636 -0
  134. package/src/assets/commands/self-review.mds +156 -0
  135. package/src/assets/rules/accessibility.md +11 -0
  136. package/src/assets/rules/compliance.md +15 -0
  137. package/src/assets/rules/engineering.md +13 -0
  138. package/src/assets/rules/go.md +12 -0
  139. package/src/assets/rules/java.md +12 -0
  140. package/src/assets/rules/python.md +12 -0
  141. package/src/assets/rules/quality.md +14 -0
  142. package/src/assets/rules/react.md +11 -0
  143. package/src/assets/rules/reliability.md +12 -0
  144. package/src/assets/rules/rust.md +12 -0
  145. package/src/assets/rules/security.md +12 -0
  146. package/src/assets/rules/typescript.md +12 -0
  147. package/src/assets/rules/ui-design.md +11 -0
  148. package/src/assets/scripts/hooks/assets/orchestrator-charter.md +21 -0
  149. package/src/assets/scripts/hooks/background-memory-update +460 -0
  150. package/src/assets/scripts/hooks/capture-prompt +87 -0
  151. package/src/assets/scripts/hooks/capture-question +153 -0
  152. package/src/assets/scripts/hooks/capture-turn +105 -0
  153. package/src/assets/scripts/hooks/debug-trace +75 -0
  154. package/src/assets/scripts/hooks/decisions-usage-scan.cjs +131 -0
  155. package/src/assets/scripts/hooks/ensure-devflow-init +39 -0
  156. package/src/assets/scripts/hooks/ensure-proxy +294 -0
  157. package/src/assets/scripts/hooks/ensure-root-gitignore +116 -0
  158. package/src/assets/scripts/hooks/get-mtime +23 -0
  159. package/src/assets/scripts/hooks/git-marker +16 -0
  160. package/src/assets/scripts/hooks/hook-bootstrap +25 -0
  161. package/src/assets/scripts/hooks/hook-log-init +41 -0
  162. package/src/assets/scripts/hooks/json-helper.cjs +725 -0
  163. package/src/assets/scripts/hooks/json-parse +243 -0
  164. package/src/assets/scripts/hooks/learning-lock +44 -0
  165. package/src/assets/scripts/hooks/lib/decisions-format.cjs +301 -0
  166. package/src/assets/scripts/hooks/lib/mkdir-lock.cjs +106 -0
  167. package/src/assets/scripts/hooks/lib/project-paths.cjs +230 -0
  168. package/src/assets/scripts/hooks/lib/render-decisions.cjs +398 -0
  169. package/src/assets/scripts/hooks/lib/safe-path.cjs +29 -0
  170. package/src/assets/scripts/hooks/log-paths +24 -0
  171. package/src/assets/scripts/hooks/memory-worker +101 -0
  172. package/src/assets/scripts/hooks/pre-compact-memory +126 -0
  173. package/src/assets/scripts/hooks/preamble +77 -0
  174. package/src/assets/scripts/hooks/queue-append +120 -0
  175. package/src/assets/scripts/hooks/resolve-project-root +37 -0
  176. package/src/assets/scripts/hooks/run-hook +31 -0
  177. package/src/assets/scripts/hooks/session-start-context +180 -0
  178. package/src/assets/scripts/hooks/session-start-memory +318 -0
  179. package/src/assets/scripts/hooks/session-start-orchestrator +54 -0
  180. package/src/assets/scripts/hud.sh +5 -0
  181. package/src/assets/scripts/redact-secrets.cjs +410 -0
  182. package/src/assets/skills/accessibility/SKILL.md +145 -0
  183. package/src/assets/skills/accessibility/references/patterns.md +398 -0
  184. package/src/assets/skills/accessibility/references/sources.md +26 -0
  185. package/src/assets/skills/accessibility/references/violations.md +358 -0
  186. package/src/assets/skills/apply-decisions/SKILL.md +100 -0
  187. package/src/assets/skills/apply-feature-knowledge/SKILL.md +69 -0
  188. package/src/assets/skills/architecture/SKILL.md +138 -0
  189. package/src/assets/skills/architecture/references/patterns.md +378 -0
  190. package/src/assets/skills/architecture/references/sources.md +41 -0
  191. package/src/assets/skills/architecture/references/violations.md +314 -0
  192. package/src/assets/skills/boundary-validation/SKILL.md +119 -0
  193. package/src/assets/skills/boundary-validation/references/detection.md +283 -0
  194. package/src/assets/skills/boundary-validation/references/patterns.md +283 -0
  195. package/src/assets/skills/boundary-validation/references/sources.md +41 -0
  196. package/src/assets/skills/boundary-validation/references/violations.md +211 -0
  197. package/src/assets/skills/complexity/SKILL.md +150 -0
  198. package/src/assets/skills/compliance/SKILL.md +121 -0
  199. package/src/assets/skills/compliance/frameworks/gdpr/fragment.md +11 -0
  200. package/src/assets/skills/compliance/frameworks/gdpr/reference.md +50 -0
  201. package/src/assets/skills/compliance/frameworks/hipaa/fragment.md +11 -0
  202. package/src/assets/skills/compliance/frameworks/hipaa/reference.md +44 -0
  203. package/src/assets/skills/compliance/frameworks/iso-27001/fragment.md +10 -0
  204. package/src/assets/skills/compliance/frameworks/iso-27001/reference.md +45 -0
  205. package/src/assets/skills/compliance/frameworks/pci-dss/fragment.md +11 -0
  206. package/src/assets/skills/compliance/frameworks/pci-dss/reference.md +55 -0
  207. package/src/assets/skills/compliance/frameworks/soc2/fragment.md +10 -0
  208. package/src/assets/skills/compliance/frameworks/soc2/reference.md +53 -0
  209. package/src/assets/skills/compliance/frameworks/sox/fragment.md +10 -0
  210. package/src/assets/skills/compliance/frameworks/sox/reference.md +67 -0
  211. package/src/assets/skills/compliance/references/detection.md +108 -0
  212. package/src/assets/skills/compliance/references/sources.md +28 -0
  213. package/src/assets/skills/consistency/SKILL.md +140 -0
  214. package/src/assets/skills/database/SKILL.md +134 -0
  215. package/src/assets/skills/dependencies/SKILL.md +141 -0
  216. package/src/assets/skills/dependency-research/SKILL.md +133 -0
  217. package/src/assets/skills/dependency-research/references/evaluation-criteria.md +101 -0
  218. package/src/assets/skills/design-review/SKILL.md +155 -0
  219. package/src/assets/skills/design-review/references/anti-patterns.md +207 -0
  220. package/src/assets/skills/docs-framework/SKILL.md +190 -0
  221. package/src/assets/skills/docs-framework/references/patterns.md +381 -0
  222. package/src/assets/skills/docs-framework/references/violations.md +221 -0
  223. package/src/assets/skills/documentation/SKILL.md +126 -0
  224. package/src/assets/skills/feature-knowledge/SKILL.md +341 -0
  225. package/src/assets/skills/gap-analysis/SKILL.md +151 -0
  226. package/src/assets/skills/gap-analysis/references/check-layers.md +125 -0
  227. package/src/assets/skills/git/SKILL.md +287 -0
  228. package/src/assets/skills/git/references/github-api.md +666 -0
  229. package/src/assets/skills/git/references/patterns.md +324 -0
  230. package/src/assets/skills/git/references/sources.md +16 -0
  231. package/src/assets/skills/git/references/violations.md +128 -0
  232. package/src/assets/skills/go/SKILL.md +147 -0
  233. package/src/assets/skills/go/references/concurrency.md +335 -0
  234. package/src/assets/skills/go/references/patterns.md +278 -0
  235. package/src/assets/skills/go/references/sources.md +41 -0
  236. package/src/assets/skills/go/references/violations.md +262 -0
  237. package/src/assets/skills/java/SKILL.md +148 -0
  238. package/src/assets/skills/java/references/modern-java.md +335 -0
  239. package/src/assets/skills/java/references/patterns.md +311 -0
  240. package/src/assets/skills/java/references/sources.md +44 -0
  241. package/src/assets/skills/java/references/violations.md +257 -0
  242. package/src/assets/skills/patterns/SKILL.md +162 -0
  243. package/src/assets/skills/performance/SKILL.md +135 -0
  244. package/src/assets/skills/performance/references/patterns.md +516 -0
  245. package/src/assets/skills/performance/references/sources.md +41 -0
  246. package/src/assets/skills/performance/references/violations.md +417 -0
  247. package/src/assets/skills/python/SKILL.md +156 -0
  248. package/src/assets/skills/python/references/async.md +255 -0
  249. package/src/assets/skills/python/references/patterns.md +280 -0
  250. package/src/assets/skills/python/references/sources.md +41 -0
  251. package/src/assets/skills/python/references/violations.md +272 -0
  252. package/src/assets/skills/qa/SKILL.md +136 -0
  253. package/src/assets/skills/qa/references/browser-testing.md +97 -0
  254. package/src/assets/skills/qa/references/patterns.md +118 -0
  255. package/src/assets/skills/qa/references/scenario-templates.md +102 -0
  256. package/src/assets/skills/qa/references/sources.md +30 -0
  257. package/src/assets/skills/qa/references/violations.md +98 -0
  258. package/src/assets/skills/quality-gates/SKILL.md +152 -0
  259. package/src/assets/skills/quality-gates/references/stub-detection.md +135 -0
  260. package/src/assets/skills/react/SKILL.md +143 -0
  261. package/src/assets/skills/react/references/error-handling.md +179 -0
  262. package/src/assets/skills/react/references/forms.md +214 -0
  263. package/src/assets/skills/react/references/hooks.md +193 -0
  264. package/src/assets/skills/react/references/patterns.md +1336 -0
  265. package/src/assets/skills/react/references/sources.md +35 -0
  266. package/src/assets/skills/react/references/violations.md +570 -0
  267. package/src/assets/skills/regression/SKILL.md +146 -0
  268. package/src/assets/skills/reliability/SKILL.md +153 -0
  269. package/src/assets/skills/reliability/references/detection.md +66 -0
  270. package/src/assets/skills/reliability/references/patterns.md +151 -0
  271. package/src/assets/skills/reliability/references/sources.md +27 -0
  272. package/src/assets/skills/reliability/references/violations.md +125 -0
  273. package/src/assets/skills/research-codebase/SKILL.md +135 -0
  274. package/src/assets/skills/research-competitor/SKILL.md +145 -0
  275. package/src/assets/skills/research-external/SKILL.md +141 -0
  276. package/src/assets/skills/research-market/SKILL.md +145 -0
  277. package/src/assets/skills/research-technology/SKILL.md +180 -0
  278. package/src/assets/skills/review-methodology/SKILL.md +121 -0
  279. package/src/assets/skills/review-methodology/references/patterns.md +186 -0
  280. package/src/assets/skills/review-methodology/references/report-template.md +142 -0
  281. package/src/assets/skills/review-methodology/references/violations.md +125 -0
  282. package/src/assets/skills/rust/SKILL.md +148 -0
  283. package/src/assets/skills/rust/references/ownership.md +278 -0
  284. package/src/assets/skills/rust/references/patterns.md +247 -0
  285. package/src/assets/skills/rust/references/sources.md +46 -0
  286. package/src/assets/skills/rust/references/violations.md +252 -0
  287. package/src/assets/skills/security/SKILL.md +121 -0
  288. package/src/assets/skills/security/references/patterns.md +271 -0
  289. package/src/assets/skills/security/references/sources.md +41 -0
  290. package/src/assets/skills/security/references/violations.md +241 -0
  291. package/src/assets/skills/software-design/SKILL.md +143 -0
  292. package/src/assets/skills/software-design/references/checklist.md +259 -0
  293. package/src/assets/skills/software-design/references/code-smell-violations.md +189 -0
  294. package/src/assets/skills/software-design/references/patterns.md +359 -0
  295. package/src/assets/skills/software-design/references/sources.md +41 -0
  296. package/src/assets/skills/software-design/references/violations.md +341 -0
  297. package/src/assets/skills/test-driven-development/SKILL.md +197 -0
  298. package/src/assets/skills/testing/SKILL.md +139 -0
  299. package/src/assets/skills/testing/references/patterns.md +346 -0
  300. package/src/assets/skills/testing/references/sources.md +53 -0
  301. package/src/assets/skills/testing/references/violations.md +322 -0
  302. package/src/assets/skills/typescript/SKILL.md +150 -0
  303. package/src/assets/skills/typescript/references/async.md +333 -0
  304. package/src/assets/skills/typescript/references/patterns.md +440 -0
  305. package/src/assets/skills/typescript/references/sources.md +41 -0
  306. package/src/assets/skills/typescript/references/type-guards.md +333 -0
  307. package/src/assets/skills/typescript/references/utility-types.md +255 -0
  308. package/src/assets/skills/typescript/references/violations.md +285 -0
  309. package/src/assets/skills/ui-design/SKILL.md +144 -0
  310. package/src/assets/skills/ui-design/references/patterns.md +341 -0
  311. package/src/assets/skills/ui-design/references/sources.md +41 -0
  312. package/src/assets/skills/ui-design/references/violations.md +312 -0
  313. package/src/assets/skills/worktree-support/SKILL.md +92 -0
  314. package/src/targets/claude-code/templates/claudeignore.template +188 -0
  315. package/src/targets/claude-code/templates/settings.json +86 -0
  316. package/dist/cli.d.ts +0 -3
  317. package/dist/commands/ambient.d.ts +0 -18
  318. package/dist/commands/ambient.js +0 -137
  319. package/dist/commands/hud.d.ts +0 -22
  320. package/dist/commands/hud.js +0 -180
  321. package/dist/commands/init.d.ts +0 -16
  322. package/dist/commands/init.js +0 -738
  323. package/dist/commands/list.d.ts +0 -24
  324. package/dist/commands/list.js +0 -89
  325. package/dist/commands/memory.d.ts +0 -22
  326. package/dist/commands/memory.js +0 -175
  327. package/dist/commands/skills.d.ts +0 -11
  328. package/dist/commands/skills.js +0 -116
  329. package/dist/commands/uninstall.d.ts +0 -22
  330. package/dist/commands/uninstall.js +0 -558
  331. package/dist/hud/cache.d.ts +0 -14
  332. package/dist/hud/cache.js +0 -54
  333. package/dist/hud/colors.d.ts +0 -23
  334. package/dist/hud/components/config-counts.d.ts +0 -8
  335. package/dist/hud/components/context-usage.d.ts +0 -8
  336. package/dist/hud/components/diff-stats.d.ts +0 -3
  337. package/dist/hud/components/directory.d.ts +0 -3
  338. package/dist/hud/components/git-ahead-behind.d.ts +0 -3
  339. package/dist/hud/components/git-branch.d.ts +0 -3
  340. package/dist/hud/components/model.d.ts +0 -3
  341. package/dist/hud/components/release-info.d.ts +0 -3
  342. package/dist/hud/components/session-cost.d.ts +0 -3
  343. package/dist/hud/components/session-duration.d.ts +0 -3
  344. package/dist/hud/components/todo-progress.d.ts +0 -3
  345. package/dist/hud/components/usage-quota.d.ts +0 -3
  346. package/dist/hud/components/version-badge.d.ts +0 -3
  347. package/dist/hud/components/worktree-count.d.ts +0 -3
  348. package/dist/hud/config.d.ts +0 -10
  349. package/dist/hud/credentials.d.ts +0 -17
  350. package/dist/hud/credentials.js +0 -99
  351. package/dist/hud/git.d.ts +0 -7
  352. package/dist/hud/index.d.ts +0 -2
  353. package/dist/hud/render.d.ts +0 -7
  354. package/dist/hud/stdin.d.ts +0 -6
  355. package/dist/hud/transcript.d.ts +0 -7
  356. package/dist/hud/types.d.ts +0 -116
  357. package/dist/hud/usage-api.d.ts +0 -7
  358. package/dist/hud/usage-api.js +0 -84
  359. package/dist/plugins.d.ts +0 -46
  360. package/dist/plugins.js +0 -233
  361. package/dist/utils/cli.d.ts +0 -5
  362. package/dist/utils/cli.js +0 -14
  363. package/dist/utils/git.d.ts +0 -11
  364. package/dist/utils/git.js +0 -36
  365. package/dist/utils/installer.d.ts +0 -41
  366. package/dist/utils/installer.js +0 -195
  367. package/dist/utils/manifest.d.ts +0 -46
  368. package/dist/utils/manifest.js +0 -100
  369. package/dist/utils/paths.d.ts +0 -42
  370. package/dist/utils/paths.js +0 -106
  371. package/dist/utils/post-install.d.ts +0 -87
  372. package/dist/utils/post-install.js +0 -546
  373. package/dist/utils/safe-delete-install.d.ts +0 -29
  374. package/dist/utils/safe-delete-install.js +0 -191
  375. package/dist/utils/safe-delete.d.ts +0 -12
  376. package/plugins/devflow-accessibility/.claude-plugin/plugin.json +0 -21
  377. package/plugins/devflow-accessibility/skills/accessibility/SKILL.md +0 -229
  378. package/plugins/devflow-accessibility/skills/accessibility/references/patterns.md +0 -670
  379. package/plugins/devflow-accessibility/skills/accessibility/references/violations.md +0 -419
  380. package/plugins/devflow-ambient/.claude-plugin/plugin.json +0 -33
  381. package/plugins/devflow-ambient/README.md +0 -68
  382. package/plugins/devflow-ambient/agents/coder.md +0 -135
  383. package/plugins/devflow-ambient/agents/reviewer.md +0 -165
  384. package/plugins/devflow-ambient/agents/scrutinizer.md +0 -82
  385. package/plugins/devflow-ambient/agents/shepherd.md +0 -108
  386. package/plugins/devflow-ambient/agents/simplifier.md +0 -102
  387. package/plugins/devflow-ambient/agents/skimmer.md +0 -143
  388. package/plugins/devflow-ambient/agents/validator.md +0 -86
  389. package/plugins/devflow-ambient/skills/ambient-router/SKILL.md +0 -145
  390. package/plugins/devflow-ambient/skills/ambient-router/references/skill-catalog.md +0 -74
  391. package/plugins/devflow-ambient/skills/debug-orchestration/SKILL.md +0 -69
  392. package/plugins/devflow-ambient/skills/implementation-orchestration/SKILL.md +0 -92
  393. package/plugins/devflow-ambient/skills/plan-orchestration/SKILL.md +0 -71
  394. package/plugins/devflow-audit-claude/.claude-plugin/plugin.json +0 -19
  395. package/plugins/devflow-audit-claude/README.md +0 -46
  396. package/plugins/devflow-audit-claude/agents/claude-md-auditor.md +0 -134
  397. package/plugins/devflow-audit-claude/commands/audit-claude.md +0 -89
  398. package/plugins/devflow-code-review/.claude-plugin/plugin.json +0 -38
  399. package/plugins/devflow-code-review/README.md +0 -73
  400. package/plugins/devflow-code-review/agents/git.md +0 -277
  401. package/plugins/devflow-code-review/agents/reviewer.md +0 -165
  402. package/plugins/devflow-code-review/agents/synthesizer.md +0 -211
  403. package/plugins/devflow-code-review/commands/code-review-teams.md +0 -285
  404. package/plugins/devflow-code-review/commands/code-review.md +0 -163
  405. package/plugins/devflow-code-review/skills/agent-teams/SKILL.md +0 -124
  406. package/plugins/devflow-code-review/skills/agent-teams/references/cleanup.md +0 -104
  407. package/plugins/devflow-code-review/skills/agent-teams/references/communication.md +0 -122
  408. package/plugins/devflow-code-review/skills/agent-teams/references/team-patterns.md +0 -217
  409. package/plugins/devflow-code-review/skills/architecture-patterns/SKILL.md +0 -153
  410. package/plugins/devflow-code-review/skills/architecture-patterns/references/patterns.md +0 -873
  411. package/plugins/devflow-code-review/skills/architecture-patterns/references/violations.md +0 -575
  412. package/plugins/devflow-code-review/skills/complexity-patterns/SKILL.md +0 -143
  413. package/plugins/devflow-code-review/skills/consistency-patterns/SKILL.md +0 -140
  414. package/plugins/devflow-code-review/skills/database-patterns/SKILL.md +0 -134
  415. package/plugins/devflow-code-review/skills/dependencies-patterns/SKILL.md +0 -141
  416. package/plugins/devflow-code-review/skills/documentation-patterns/SKILL.md +0 -125
  417. package/plugins/devflow-code-review/skills/knowledge-persistence/SKILL.md +0 -128
  418. package/plugins/devflow-code-review/skills/knowledge-persistence/references/examples.md +0 -44
  419. package/plugins/devflow-code-review/skills/performance-patterns/SKILL.md +0 -154
  420. package/plugins/devflow-code-review/skills/performance-patterns/references/patterns.md +0 -503
  421. package/plugins/devflow-code-review/skills/performance-patterns/references/violations.md +0 -354
  422. package/plugins/devflow-code-review/skills/regression-patterns/SKILL.md +0 -146
  423. package/plugins/devflow-code-review/skills/review-methodology/SKILL.md +0 -119
  424. package/plugins/devflow-code-review/skills/review-methodology/references/patterns.md +0 -186
  425. package/plugins/devflow-code-review/skills/review-methodology/references/report-template.md +0 -142
  426. package/plugins/devflow-code-review/skills/review-methodology/references/violations.md +0 -125
  427. package/plugins/devflow-code-review/skills/security-patterns/SKILL.md +0 -156
  428. package/plugins/devflow-code-review/skills/security-patterns/references/patterns.md +0 -507
  429. package/plugins/devflow-code-review/skills/security-patterns/references/violations.md +0 -237
  430. package/plugins/devflow-code-review/skills/test-patterns/SKILL.md +0 -183
  431. package/plugins/devflow-code-review/skills/test-patterns/references/patterns.md +0 -220
  432. package/plugins/devflow-code-review/skills/test-patterns/references/violations.md +0 -221
  433. package/plugins/devflow-core-skills/.claude-plugin/plugin.json +0 -31
  434. package/plugins/devflow-core-skills/README.md +0 -50
  435. package/plugins/devflow-core-skills/skills/core-patterns/SKILL.md +0 -162
  436. package/plugins/devflow-core-skills/skills/core-patterns/references/checklist.md +0 -276
  437. package/plugins/devflow-core-skills/skills/core-patterns/references/code-smell-violations.md +0 -144
  438. package/plugins/devflow-core-skills/skills/core-patterns/references/patterns.md +0 -576
  439. package/plugins/devflow-core-skills/skills/core-patterns/references/violations.md +0 -369
  440. package/plugins/devflow-core-skills/skills/docs-framework/SKILL.md +0 -143
  441. package/plugins/devflow-core-skills/skills/docs-framework/references/patterns.md +0 -346
  442. package/plugins/devflow-core-skills/skills/docs-framework/references/violations.md +0 -221
  443. package/plugins/devflow-core-skills/skills/git-safety/SKILL.md +0 -122
  444. package/plugins/devflow-core-skills/skills/git-safety/references/patterns.md +0 -289
  445. package/plugins/devflow-core-skills/skills/git-safety/references/violations.md +0 -18
  446. package/plugins/devflow-core-skills/skills/git-workflow/SKILL.md +0 -158
  447. package/plugins/devflow-core-skills/skills/git-workflow/references/commit-patterns.md +0 -115
  448. package/plugins/devflow-core-skills/skills/git-workflow/references/commit-violations.md +0 -77
  449. package/plugins/devflow-core-skills/skills/git-workflow/references/pr-patterns.md +0 -127
  450. package/plugins/devflow-core-skills/skills/git-workflow/references/pr-violations.md +0 -96
  451. package/plugins/devflow-core-skills/skills/github-patterns/SKILL.md +0 -153
  452. package/plugins/devflow-core-skills/skills/github-patterns/references/patterns.md +0 -572
  453. package/plugins/devflow-core-skills/skills/github-patterns/references/violations.md +0 -298
  454. package/plugins/devflow-core-skills/skills/input-validation/SKILL.md +0 -148
  455. package/plugins/devflow-core-skills/skills/input-validation/references/detection.md +0 -283
  456. package/plugins/devflow-core-skills/skills/input-validation/references/patterns.md +0 -361
  457. package/plugins/devflow-core-skills/skills/input-validation/references/violations.md +0 -224
  458. package/plugins/devflow-core-skills/skills/search-first/SKILL.md +0 -133
  459. package/plugins/devflow-core-skills/skills/search-first/references/evaluation-criteria.md +0 -101
  460. package/plugins/devflow-core-skills/skills/test-driven-development/SKILL.md +0 -137
  461. package/plugins/devflow-core-skills/skills/test-patterns/SKILL.md +0 -183
  462. package/plugins/devflow-core-skills/skills/test-patterns/references/detection.md +0 -149
  463. package/plugins/devflow-core-skills/skills/test-patterns/references/patterns.md +0 -220
  464. package/plugins/devflow-core-skills/skills/test-patterns/references/report-template.md +0 -108
  465. package/plugins/devflow-core-skills/skills/test-patterns/references/violations.md +0 -221
  466. package/plugins/devflow-debug/.claude-plugin/plugin.json +0 -26
  467. package/plugins/devflow-debug/README.md +0 -65
  468. package/plugins/devflow-debug/agents/git.md +0 -277
  469. package/plugins/devflow-debug/agents/synthesizer.md +0 -211
  470. package/plugins/devflow-debug/commands/debug-teams.md +0 -245
  471. package/plugins/devflow-debug/commands/debug.md +0 -174
  472. package/plugins/devflow-debug/skills/agent-teams/SKILL.md +0 -124
  473. package/plugins/devflow-debug/skills/agent-teams/references/cleanup.md +0 -104
  474. package/plugins/devflow-debug/skills/agent-teams/references/communication.md +0 -122
  475. package/plugins/devflow-debug/skills/agent-teams/references/team-patterns.md +0 -217
  476. package/plugins/devflow-debug/skills/git-safety/SKILL.md +0 -122
  477. package/plugins/devflow-debug/skills/git-safety/references/detection.md +0 -290
  478. package/plugins/devflow-debug/skills/git-safety/references/patterns.md +0 -289
  479. package/plugins/devflow-debug/skills/git-safety/references/violations.md +0 -18
  480. package/plugins/devflow-debug/skills/knowledge-persistence/SKILL.md +0 -128
  481. package/plugins/devflow-debug/skills/knowledge-persistence/references/examples.md +0 -44
  482. package/plugins/devflow-frontend-design/.claude-plugin/plugin.json +0 -21
  483. package/plugins/devflow-frontend-design/skills/frontend-design/SKILL.md +0 -254
  484. package/plugins/devflow-frontend-design/skills/frontend-design/references/patterns.md +0 -511
  485. package/plugins/devflow-frontend-design/skills/frontend-design/references/violations.md +0 -453
  486. package/plugins/devflow-go/.claude-plugin/plugin.json +0 -21
  487. package/plugins/devflow-go/skills/go/SKILL.md +0 -187
  488. package/plugins/devflow-go/skills/go/references/concurrency.md +0 -312
  489. package/plugins/devflow-go/skills/go/references/patterns.md +0 -232
  490. package/plugins/devflow-go/skills/go/references/violations.md +0 -205
  491. package/plugins/devflow-implement/.claude-plugin/plugin.json +0 -35
  492. package/plugins/devflow-implement/README.md +0 -71
  493. package/plugins/devflow-implement/agents/coder.md +0 -135
  494. package/plugins/devflow-implement/agents/git.md +0 -277
  495. package/plugins/devflow-implement/agents/scrutinizer.md +0 -82
  496. package/plugins/devflow-implement/agents/shepherd.md +0 -108
  497. package/plugins/devflow-implement/agents/simplifier.md +0 -102
  498. package/plugins/devflow-implement/agents/skimmer.md +0 -143
  499. package/plugins/devflow-implement/agents/synthesizer.md +0 -211
  500. package/plugins/devflow-implement/agents/validator.md +0 -86
  501. package/plugins/devflow-implement/commands/implement-teams.md +0 -620
  502. package/plugins/devflow-implement/commands/implement.md +0 -430
  503. package/plugins/devflow-implement/skills/agent-teams/SKILL.md +0 -124
  504. package/plugins/devflow-implement/skills/agent-teams/references/cleanup.md +0 -104
  505. package/plugins/devflow-implement/skills/agent-teams/references/communication.md +0 -122
  506. package/plugins/devflow-implement/skills/agent-teams/references/team-patterns.md +0 -217
  507. package/plugins/devflow-implement/skills/implementation-patterns/SKILL.md +0 -162
  508. package/plugins/devflow-implement/skills/knowledge-persistence/SKILL.md +0 -128
  509. package/plugins/devflow-implement/skills/knowledge-persistence/references/examples.md +0 -44
  510. package/plugins/devflow-implement/skills/self-review/SKILL.md +0 -149
  511. package/plugins/devflow-implement/skills/self-review/references/stub-detection.md +0 -135
  512. package/plugins/devflow-java/.claude-plugin/plugin.json +0 -21
  513. package/plugins/devflow-java/skills/java/SKILL.md +0 -183
  514. package/plugins/devflow-java/skills/java/references/modern-java.md +0 -270
  515. package/plugins/devflow-java/skills/java/references/patterns.md +0 -235
  516. package/plugins/devflow-java/skills/java/references/violations.md +0 -213
  517. package/plugins/devflow-python/.claude-plugin/plugin.json +0 -21
  518. package/plugins/devflow-python/skills/python/SKILL.md +0 -188
  519. package/plugins/devflow-python/skills/python/references/async.md +0 -220
  520. package/plugins/devflow-python/skills/python/references/patterns.md +0 -226
  521. package/plugins/devflow-python/skills/python/references/violations.md +0 -204
  522. package/plugins/devflow-react/.claude-plugin/plugin.json +0 -21
  523. package/plugins/devflow-react/skills/react/SKILL.md +0 -276
  524. package/plugins/devflow-react/skills/react/references/patterns.md +0 -1331
  525. package/plugins/devflow-react/skills/react/references/violations.md +0 -565
  526. package/plugins/devflow-resolve/.claude-plugin/plugin.json +0 -29
  527. package/plugins/devflow-resolve/README.md +0 -65
  528. package/plugins/devflow-resolve/agents/git.md +0 -277
  529. package/plugins/devflow-resolve/agents/resolver.md +0 -131
  530. package/plugins/devflow-resolve/agents/simplifier.md +0 -102
  531. package/plugins/devflow-resolve/commands/resolve-teams.md +0 -307
  532. package/plugins/devflow-resolve/commands/resolve.md +0 -246
  533. package/plugins/devflow-resolve/skills/agent-teams/SKILL.md +0 -124
  534. package/plugins/devflow-resolve/skills/agent-teams/references/cleanup.md +0 -104
  535. package/plugins/devflow-resolve/skills/agent-teams/references/communication.md +0 -122
  536. package/plugins/devflow-resolve/skills/agent-teams/references/team-patterns.md +0 -217
  537. package/plugins/devflow-resolve/skills/implementation-patterns/SKILL.md +0 -162
  538. package/plugins/devflow-resolve/skills/implementation-patterns/references/patterns.md +0 -1063
  539. package/plugins/devflow-resolve/skills/implementation-patterns/references/violations.md +0 -483
  540. package/plugins/devflow-resolve/skills/knowledge-persistence/SKILL.md +0 -128
  541. package/plugins/devflow-resolve/skills/knowledge-persistence/references/examples.md +0 -44
  542. package/plugins/devflow-resolve/skills/security-patterns/SKILL.md +0 -156
  543. package/plugins/devflow-resolve/skills/security-patterns/references/detection.md +0 -287
  544. package/plugins/devflow-resolve/skills/security-patterns/references/patterns.md +0 -507
  545. package/plugins/devflow-resolve/skills/security-patterns/references/violations.md +0 -237
  546. package/plugins/devflow-rust/.claude-plugin/plugin.json +0 -21
  547. package/plugins/devflow-rust/skills/rust/SKILL.md +0 -193
  548. package/plugins/devflow-rust/skills/rust/references/ownership.md +0 -242
  549. package/plugins/devflow-rust/skills/rust/references/patterns.md +0 -210
  550. package/plugins/devflow-rust/skills/rust/references/violations.md +0 -191
  551. package/plugins/devflow-self-review/.claude-plugin/plugin.json +0 -26
  552. package/plugins/devflow-self-review/README.md +0 -38
  553. package/plugins/devflow-self-review/agents/scrutinizer.md +0 -82
  554. package/plugins/devflow-self-review/agents/simplifier.md +0 -102
  555. package/plugins/devflow-self-review/agents/validator.md +0 -86
  556. package/plugins/devflow-self-review/commands/self-review.md +0 -132
  557. package/plugins/devflow-self-review/skills/core-patterns/SKILL.md +0 -162
  558. package/plugins/devflow-self-review/skills/core-patterns/references/checklist.md +0 -276
  559. package/plugins/devflow-self-review/skills/core-patterns/references/code-smell-violations.md +0 -144
  560. package/plugins/devflow-self-review/skills/core-patterns/references/detection.md +0 -303
  561. package/plugins/devflow-self-review/skills/core-patterns/references/patterns.md +0 -576
  562. package/plugins/devflow-self-review/skills/core-patterns/references/violations.md +0 -369
  563. package/plugins/devflow-self-review/skills/self-review/SKILL.md +0 -149
  564. package/plugins/devflow-self-review/skills/self-review/references/patterns.md +0 -405
  565. package/plugins/devflow-self-review/skills/self-review/references/report-template.md +0 -253
  566. package/plugins/devflow-self-review/skills/self-review/references/stub-detection.md +0 -135
  567. package/plugins/devflow-self-review/skills/self-review/references/violations.md +0 -308
  568. package/plugins/devflow-specify/.claude-plugin/plugin.json +0 -25
  569. package/plugins/devflow-specify/README.md +0 -46
  570. package/plugins/devflow-specify/agents/skimmer.md +0 -143
  571. package/plugins/devflow-specify/agents/synthesizer.md +0 -211
  572. package/plugins/devflow-specify/commands/specify-teams.md +0 -321
  573. package/plugins/devflow-specify/commands/specify.md +0 -186
  574. package/plugins/devflow-specify/skills/agent-teams/SKILL.md +0 -124
  575. package/plugins/devflow-specify/skills/agent-teams/references/cleanup.md +0 -104
  576. package/plugins/devflow-specify/skills/agent-teams/references/communication.md +0 -122
  577. package/plugins/devflow-specify/skills/agent-teams/references/team-patterns.md +0 -217
  578. package/plugins/devflow-typescript/.claude-plugin/plugin.json +0 -21
  579. package/plugins/devflow-typescript/skills/typescript/SKILL.md +0 -176
  580. package/plugins/devflow-typescript/skills/typescript/references/patterns.md +0 -1105
  581. package/plugins/devflow-typescript/skills/typescript/references/violations.md +0 -433
  582. package/scripts/hooks/ambient-prompt +0 -50
  583. package/scripts/hooks/background-memory-update +0 -257
  584. package/scripts/hooks/ensure-memory-gitignore +0 -17
  585. package/scripts/hooks/pre-compact-memory +0 -87
  586. package/scripts/hooks/run-hook +0 -23
  587. package/scripts/hooks/session-start-memory +0 -165
  588. package/scripts/hooks/stop-update-memory +0 -85
  589. package/scripts/hud/cache.d.ts +0 -14
  590. package/scripts/hud/cache.d.ts.map +0 -1
  591. package/scripts/hud/cache.js +0 -54
  592. package/scripts/hud/cache.js.map +0 -1
  593. package/scripts/hud/colors.d.ts +0 -23
  594. package/scripts/hud/colors.d.ts.map +0 -1
  595. package/scripts/hud/colors.js +0 -62
  596. package/scripts/hud/colors.js.map +0 -1
  597. package/scripts/hud/components/config-counts.d.ts +0 -8
  598. package/scripts/hud/components/config-counts.d.ts.map +0 -1
  599. package/scripts/hud/components/config-counts.js +0 -91
  600. package/scripts/hud/components/config-counts.js.map +0 -1
  601. package/scripts/hud/components/context-usage.d.ts +0 -8
  602. package/scripts/hud/components/context-usage.d.ts.map +0 -1
  603. package/scripts/hud/components/context-usage.js +0 -49
  604. package/scripts/hud/components/context-usage.js.map +0 -1
  605. package/scripts/hud/components/diff-stats.d.ts +0 -3
  606. package/scripts/hud/components/diff-stats.d.ts.map +0 -1
  607. package/scripts/hud/components/diff-stats.js +0 -36
  608. package/scripts/hud/components/diff-stats.js.map +0 -1
  609. package/scripts/hud/components/directory.d.ts +0 -3
  610. package/scripts/hud/components/directory.d.ts.map +0 -1
  611. package/scripts/hud/components/directory.js +0 -10
  612. package/scripts/hud/components/directory.js.map +0 -1
  613. package/scripts/hud/components/git-ahead-behind.d.ts +0 -3
  614. package/scripts/hud/components/git-ahead-behind.d.ts.map +0 -1
  615. package/scripts/hud/components/git-ahead-behind.js +0 -16
  616. package/scripts/hud/components/git-ahead-behind.js.map +0 -1
  617. package/scripts/hud/components/git-branch.d.ts +0 -3
  618. package/scripts/hud/components/git-branch.d.ts.map +0 -1
  619. package/scripts/hud/components/git-branch.js +0 -14
  620. package/scripts/hud/components/git-branch.js.map +0 -1
  621. package/scripts/hud/components/model.d.ts +0 -3
  622. package/scripts/hud/components/model.d.ts.map +0 -1
  623. package/scripts/hud/components/model.js +0 -21
  624. package/scripts/hud/components/model.js.map +0 -1
  625. package/scripts/hud/components/release-info.d.ts +0 -3
  626. package/scripts/hud/components/release-info.d.ts.map +0 -1
  627. package/scripts/hud/components/release-info.js +0 -9
  628. package/scripts/hud/components/release-info.js.map +0 -1
  629. package/scripts/hud/components/session-cost.d.ts +0 -3
  630. package/scripts/hud/components/session-cost.d.ts.map +0 -1
  631. package/scripts/hud/components/session-cost.js +0 -9
  632. package/scripts/hud/components/session-cost.js.map +0 -1
  633. package/scripts/hud/components/session-duration.d.ts +0 -3
  634. package/scripts/hud/components/session-duration.d.ts.map +0 -1
  635. package/scripts/hud/components/session-duration.js +0 -18
  636. package/scripts/hud/components/session-duration.js.map +0 -1
  637. package/scripts/hud/components/todo-progress.d.ts +0 -3
  638. package/scripts/hud/components/todo-progress.d.ts.map +0 -1
  639. package/scripts/hud/components/todo-progress.js +0 -11
  640. package/scripts/hud/components/todo-progress.js.map +0 -1
  641. package/scripts/hud/components/usage-quota.d.ts +0 -3
  642. package/scripts/hud/components/usage-quota.d.ts.map +0 -1
  643. package/scripts/hud/components/usage-quota.js +0 -45
  644. package/scripts/hud/components/usage-quota.js.map +0 -1
  645. package/scripts/hud/components/version-badge.d.ts +0 -3
  646. package/scripts/hud/components/version-badge.d.ts.map +0 -1
  647. package/scripts/hud/components/version-badge.js +0 -80
  648. package/scripts/hud/components/version-badge.js.map +0 -1
  649. package/scripts/hud/components/worktree-count.d.ts +0 -3
  650. package/scripts/hud/components/worktree-count.d.ts.map +0 -1
  651. package/scripts/hud/components/worktree-count.js +0 -8
  652. package/scripts/hud/components/worktree-count.js.map +0 -1
  653. package/scripts/hud/config.d.ts +0 -10
  654. package/scripts/hud/config.d.ts.map +0 -1
  655. package/scripts/hud/config.js +0 -55
  656. package/scripts/hud/config.js.map +0 -1
  657. package/scripts/hud/credentials.d.ts +0 -17
  658. package/scripts/hud/credentials.d.ts.map +0 -1
  659. package/scripts/hud/credentials.js +0 -99
  660. package/scripts/hud/credentials.js.map +0 -1
  661. package/scripts/hud/git.d.ts +0 -7
  662. package/scripts/hud/git.d.ts.map +0 -1
  663. package/scripts/hud/git.js +0 -153
  664. package/scripts/hud/git.js.map +0 -1
  665. package/scripts/hud/index.d.ts +0 -2
  666. package/scripts/hud/index.d.ts.map +0 -1
  667. package/scripts/hud/index.js +0 -81
  668. package/scripts/hud/index.js.map +0 -1
  669. package/scripts/hud/render.d.ts +0 -7
  670. package/scripts/hud/render.d.ts.map +0 -1
  671. package/scripts/hud/render.js +0 -111
  672. package/scripts/hud/render.js.map +0 -1
  673. package/scripts/hud/stdin.d.ts +0 -6
  674. package/scripts/hud/stdin.d.ts.map +0 -1
  675. package/scripts/hud/stdin.js +0 -25
  676. package/scripts/hud/stdin.js.map +0 -1
  677. package/scripts/hud/transcript.d.ts +0 -7
  678. package/scripts/hud/transcript.d.ts.map +0 -1
  679. package/scripts/hud/transcript.js +0 -130
  680. package/scripts/hud/transcript.js.map +0 -1
  681. package/scripts/hud/types.d.ts +0 -116
  682. package/scripts/hud/types.d.ts.map +0 -1
  683. package/scripts/hud/types.js +0 -2
  684. package/scripts/hud/types.js.map +0 -1
  685. package/scripts/hud/usage-api.d.ts +0 -7
  686. package/scripts/hud/usage-api.d.ts.map +0 -1
  687. package/scripts/hud/usage-api.js +0 -84
  688. package/scripts/hud/usage-api.js.map +0 -1
  689. package/scripts/hud.sh +0 -5
  690. package/shared/agents/coder.md +0 -135
  691. package/shared/agents/git.md +0 -277
  692. package/shared/agents/resolver.md +0 -131
  693. package/shared/agents/reviewer.md +0 -165
  694. package/shared/agents/scrutinizer.md +0 -82
  695. package/shared/agents/shepherd.md +0 -108
  696. package/shared/agents/simplifier.md +0 -102
  697. package/shared/agents/skimmer.md +0 -143
  698. package/shared/agents/synthesizer.md +0 -211
  699. package/shared/agents/validator.md +0 -86
  700. package/shared/skills/accessibility/SKILL.md +0 -229
  701. package/shared/skills/accessibility/references/detection.md +0 -171
  702. package/shared/skills/accessibility/references/patterns.md +0 -670
  703. package/shared/skills/accessibility/references/violations.md +0 -419
  704. package/shared/skills/agent-teams/SKILL.md +0 -124
  705. package/shared/skills/agent-teams/references/cleanup.md +0 -104
  706. package/shared/skills/agent-teams/references/communication.md +0 -122
  707. package/shared/skills/agent-teams/references/team-patterns.md +0 -217
  708. package/shared/skills/ambient-router/SKILL.md +0 -145
  709. package/shared/skills/ambient-router/references/skill-catalog.md +0 -74
  710. package/shared/skills/architecture-patterns/SKILL.md +0 -153
  711. package/shared/skills/architecture-patterns/references/detection.md +0 -337
  712. package/shared/skills/architecture-patterns/references/patterns.md +0 -873
  713. package/shared/skills/architecture-patterns/references/violations.md +0 -575
  714. package/shared/skills/complexity-patterns/SKILL.md +0 -143
  715. package/shared/skills/complexity-patterns/references/detection.md +0 -264
  716. package/shared/skills/complexity-patterns/references/patterns.md +0 -487
  717. package/shared/skills/complexity-patterns/references/violations.md +0 -361
  718. package/shared/skills/consistency-patterns/SKILL.md +0 -140
  719. package/shared/skills/consistency-patterns/references/detection.md +0 -207
  720. package/shared/skills/consistency-patterns/references/patterns.md +0 -202
  721. package/shared/skills/consistency-patterns/references/violations.md +0 -213
  722. package/shared/skills/core-patterns/SKILL.md +0 -162
  723. package/shared/skills/core-patterns/references/checklist.md +0 -276
  724. package/shared/skills/core-patterns/references/code-smell-violations.md +0 -144
  725. package/shared/skills/core-patterns/references/detection.md +0 -303
  726. package/shared/skills/core-patterns/references/patterns.md +0 -576
  727. package/shared/skills/core-patterns/references/violations.md +0 -369
  728. package/shared/skills/database-patterns/SKILL.md +0 -134
  729. package/shared/skills/database-patterns/references/detection.md +0 -208
  730. package/shared/skills/database-patterns/references/patterns.md +0 -394
  731. package/shared/skills/database-patterns/references/violations.md +0 -332
  732. package/shared/skills/debug-orchestration/SKILL.md +0 -69
  733. package/shared/skills/dependencies-patterns/SKILL.md +0 -141
  734. package/shared/skills/dependencies-patterns/references/detection.md +0 -181
  735. package/shared/skills/dependencies-patterns/references/patterns.md +0 -225
  736. package/shared/skills/dependencies-patterns/references/violations.md +0 -247
  737. package/shared/skills/docs-framework/SKILL.md +0 -143
  738. package/shared/skills/docs-framework/references/patterns.md +0 -346
  739. package/shared/skills/docs-framework/references/violations.md +0 -221
  740. package/shared/skills/documentation-patterns/SKILL.md +0 -125
  741. package/shared/skills/documentation-patterns/references/detection.md +0 -190
  742. package/shared/skills/documentation-patterns/references/patterns.md +0 -189
  743. package/shared/skills/documentation-patterns/references/violations.md +0 -163
  744. package/shared/skills/frontend-design/SKILL.md +0 -254
  745. package/shared/skills/frontend-design/references/detection.md +0 -184
  746. package/shared/skills/frontend-design/references/patterns.md +0 -511
  747. package/shared/skills/frontend-design/references/violations.md +0 -453
  748. package/shared/skills/git-safety/SKILL.md +0 -122
  749. package/shared/skills/git-safety/references/detection.md +0 -290
  750. package/shared/skills/git-safety/references/patterns.md +0 -289
  751. package/shared/skills/git-safety/references/violations.md +0 -18
  752. package/shared/skills/git-workflow/SKILL.md +0 -158
  753. package/shared/skills/git-workflow/references/commit-patterns.md +0 -115
  754. package/shared/skills/git-workflow/references/commit-violations.md +0 -77
  755. package/shared/skills/git-workflow/references/pr-patterns.md +0 -127
  756. package/shared/skills/git-workflow/references/pr-violations.md +0 -96
  757. package/shared/skills/github-patterns/SKILL.md +0 -153
  758. package/shared/skills/github-patterns/references/patterns.md +0 -572
  759. package/shared/skills/github-patterns/references/violations.md +0 -298
  760. package/shared/skills/go/SKILL.md +0 -187
  761. package/shared/skills/go/references/concurrency.md +0 -312
  762. package/shared/skills/go/references/detection.md +0 -129
  763. package/shared/skills/go/references/patterns.md +0 -232
  764. package/shared/skills/go/references/violations.md +0 -205
  765. package/shared/skills/implementation-orchestration/SKILL.md +0 -92
  766. package/shared/skills/implementation-patterns/SKILL.md +0 -162
  767. package/shared/skills/implementation-patterns/references/patterns.md +0 -1063
  768. package/shared/skills/implementation-patterns/references/violations.md +0 -483
  769. package/shared/skills/input-validation/SKILL.md +0 -148
  770. package/shared/skills/input-validation/references/detection.md +0 -283
  771. package/shared/skills/input-validation/references/patterns.md +0 -361
  772. package/shared/skills/input-validation/references/violations.md +0 -224
  773. package/shared/skills/java/SKILL.md +0 -183
  774. package/shared/skills/java/references/detection.md +0 -120
  775. package/shared/skills/java/references/modern-java.md +0 -270
  776. package/shared/skills/java/references/patterns.md +0 -235
  777. package/shared/skills/java/references/violations.md +0 -213
  778. package/shared/skills/knowledge-persistence/SKILL.md +0 -128
  779. package/shared/skills/knowledge-persistence/references/examples.md +0 -44
  780. package/shared/skills/performance-patterns/SKILL.md +0 -154
  781. package/shared/skills/performance-patterns/references/detection.md +0 -351
  782. package/shared/skills/performance-patterns/references/patterns.md +0 -503
  783. package/shared/skills/performance-patterns/references/violations.md +0 -354
  784. package/shared/skills/plan-orchestration/SKILL.md +0 -71
  785. package/shared/skills/python/SKILL.md +0 -188
  786. package/shared/skills/python/references/async.md +0 -220
  787. package/shared/skills/python/references/detection.md +0 -128
  788. package/shared/skills/python/references/patterns.md +0 -226
  789. package/shared/skills/python/references/violations.md +0 -204
  790. package/shared/skills/react/SKILL.md +0 -276
  791. package/shared/skills/react/references/patterns.md +0 -1331
  792. package/shared/skills/react/references/violations.md +0 -565
  793. package/shared/skills/regression-patterns/SKILL.md +0 -146
  794. package/shared/skills/regression-patterns/references/detection.md +0 -237
  795. package/shared/skills/regression-patterns/references/patterns.md +0 -226
  796. package/shared/skills/regression-patterns/references/violations.md +0 -225
  797. package/shared/skills/review-methodology/SKILL.md +0 -119
  798. package/shared/skills/review-methodology/references/patterns.md +0 -186
  799. package/shared/skills/review-methodology/references/report-template.md +0 -142
  800. package/shared/skills/review-methodology/references/violations.md +0 -125
  801. package/shared/skills/rust/SKILL.md +0 -193
  802. package/shared/skills/rust/references/detection.md +0 -131
  803. package/shared/skills/rust/references/ownership.md +0 -242
  804. package/shared/skills/rust/references/patterns.md +0 -210
  805. package/shared/skills/rust/references/violations.md +0 -191
  806. package/shared/skills/search-first/SKILL.md +0 -133
  807. package/shared/skills/search-first/references/evaluation-criteria.md +0 -101
  808. package/shared/skills/security-patterns/SKILL.md +0 -156
  809. package/shared/skills/security-patterns/references/detection.md +0 -287
  810. package/shared/skills/security-patterns/references/patterns.md +0 -507
  811. package/shared/skills/security-patterns/references/violations.md +0 -237
  812. package/shared/skills/self-review/SKILL.md +0 -149
  813. package/shared/skills/self-review/references/patterns.md +0 -405
  814. package/shared/skills/self-review/references/report-template.md +0 -253
  815. package/shared/skills/self-review/references/stub-detection.md +0 -135
  816. package/shared/skills/self-review/references/violations.md +0 -308
  817. package/shared/skills/test-driven-development/SKILL.md +0 -137
  818. package/shared/skills/test-driven-development/references/rationalization-prevention.md +0 -111
  819. package/shared/skills/test-patterns/SKILL.md +0 -183
  820. package/shared/skills/test-patterns/references/detection.md +0 -149
  821. package/shared/skills/test-patterns/references/patterns.md +0 -220
  822. package/shared/skills/test-patterns/references/report-template.md +0 -108
  823. package/shared/skills/test-patterns/references/violations.md +0 -221
  824. package/shared/skills/typescript/SKILL.md +0 -176
  825. package/shared/skills/typescript/references/patterns.md +0 -1105
  826. package/shared/skills/typescript/references/violations.md +0 -433
  827. package/src/templates/claudeignore.template +0 -188
  828. package/src/templates/settings.json +0 -59
  829. /package/dist/{utils → core}/safe-delete.js +0 -0
  830. /package/{plugins/devflow-accessibility → src/assets}/skills/accessibility/references/detection.md +0 -0
  831. /package/{plugins/devflow-code-review/skills/architecture-patterns → src/assets/skills/architecture}/references/detection.md +0 -0
  832. /package/{plugins/devflow-code-review/skills/complexity-patterns → src/assets/skills/complexity}/references/detection.md +0 -0
  833. /package/{plugins/devflow-code-review/skills/complexity-patterns → src/assets/skills/complexity}/references/patterns.md +0 -0
  834. /package/{plugins/devflow-code-review/skills/complexity-patterns → src/assets/skills/complexity}/references/violations.md +0 -0
  835. /package/{plugins/devflow-code-review/skills/consistency-patterns → src/assets/skills/consistency}/references/detection.md +0 -0
  836. /package/{plugins/devflow-code-review/skills/consistency-patterns → src/assets/skills/consistency}/references/patterns.md +0 -0
  837. /package/{plugins/devflow-code-review/skills/consistency-patterns → src/assets/skills/consistency}/references/violations.md +0 -0
  838. /package/{plugins/devflow-code-review/skills/database-patterns → src/assets/skills/database}/references/detection.md +0 -0
  839. /package/{plugins/devflow-code-review/skills/database-patterns → src/assets/skills/database}/references/patterns.md +0 -0
  840. /package/{plugins/devflow-code-review/skills/database-patterns → src/assets/skills/database}/references/violations.md +0 -0
  841. /package/{plugins/devflow-code-review/skills/dependencies-patterns → src/assets/skills/dependencies}/references/detection.md +0 -0
  842. /package/{plugins/devflow-code-review/skills/dependencies-patterns → src/assets/skills/dependencies}/references/patterns.md +0 -0
  843. /package/{plugins/devflow-code-review/skills/dependencies-patterns → src/assets/skills/dependencies}/references/violations.md +0 -0
  844. /package/{plugins/devflow-code-review/skills/documentation-patterns → src/assets/skills/documentation}/references/detection.md +0 -0
  845. /package/{plugins/devflow-code-review/skills/documentation-patterns → src/assets/skills/documentation}/references/patterns.md +0 -0
  846. /package/{plugins/devflow-code-review/skills/documentation-patterns → src/assets/skills/documentation}/references/violations.md +0 -0
  847. /package/{plugins/devflow-core-skills/skills/git-safety → src/assets/skills/git}/references/detection.md +0 -0
  848. /package/{plugins/devflow-go → src/assets}/skills/go/references/detection.md +0 -0
  849. /package/{plugins/devflow-java → src/assets}/skills/java/references/detection.md +0 -0
  850. /package/{plugins/devflow-implement/skills/implementation-patterns → src/assets/skills/patterns}/references/patterns.md +0 -0
  851. /package/{plugins/devflow-implement/skills/implementation-patterns → src/assets/skills/patterns}/references/violations.md +0 -0
  852. /package/{plugins/devflow-code-review/skills/performance-patterns → src/assets/skills/performance}/references/detection.md +0 -0
  853. /package/{plugins/devflow-python → src/assets}/skills/python/references/detection.md +0 -0
  854. /package/{plugins/devflow-implement/skills/self-review → src/assets/skills/quality-gates}/references/patterns.md +0 -0
  855. /package/{plugins/devflow-implement/skills/self-review → src/assets/skills/quality-gates}/references/report-template.md +0 -0
  856. /package/{plugins/devflow-implement/skills/self-review → src/assets/skills/quality-gates}/references/violations.md +0 -0
  857. /package/{plugins/devflow-code-review/skills/regression-patterns → src/assets/skills/regression}/references/detection.md +0 -0
  858. /package/{plugins/devflow-code-review/skills/regression-patterns → src/assets/skills/regression}/references/patterns.md +0 -0
  859. /package/{plugins/devflow-code-review/skills/regression-patterns → src/assets/skills/regression}/references/violations.md +0 -0
  860. /package/{plugins/devflow-rust → src/assets}/skills/rust/references/detection.md +0 -0
  861. /package/{plugins/devflow-code-review/skills/security-patterns → src/assets/skills/security}/references/detection.md +0 -0
  862. /package/{plugins/devflow-core-skills/skills/core-patterns → src/assets/skills/software-design}/references/detection.md +0 -0
  863. /package/{plugins/devflow-core-skills → src/assets}/skills/test-driven-development/references/rationalization-prevention.md +0 -0
  864. /package/{plugins/devflow-code-review/skills/test-patterns → src/assets/skills/testing}/references/detection.md +0 -0
  865. /package/{plugins/devflow-code-review/skills/test-patterns → src/assets/skills/testing}/references/report-template.md +0 -0
  866. /package/{plugins/devflow-frontend-design/skills/frontend-design → src/assets/skills/ui-design}/references/detection.md +0 -0
  867. /package/src/{templates → targets/claude-code/templates}/managed-settings.json +0 -0
@@ -0,0 +1,92 @@
1
+ /**
2
+ * @file learning-queue-cleanup.ts
3
+ *
4
+ * Shared cleanup helpers for `.devflow/learning/`. Imported solely by
5
+ * `src/cli/commands/learning.ts`:
6
+ * - `sweepLegacyDreamMarkers` — used by `devflow learning --reset`
7
+ * - `drainLearningQueue` — used by `devflow learning --clear` / `--disable`
8
+ */
9
+ import { promises as fs } from 'fs';
10
+ import * as path from 'path';
11
+ import { getLearningPendingTurnsPath, getLearningPendingTurnsProcessingPath, } from './project-paths.js';
12
+ // ---------------------------------------------------------------------------
13
+ // Legacy marker-pipeline sweep
14
+ // ---------------------------------------------------------------------------
15
+ /** Fixed-name stamps left by the retired dream marker pipeline. */
16
+ const LEGACY_FIXED_STAMPS = ['.decisions-runs-today', '.curation-last', '.processor-spawned-at'];
17
+ /** Per-session marker variants: (decisions|curation).*.{json,processing,retries,failed} */
18
+ function isLegacyPerSessionMarker(name) {
19
+ return ((name.startsWith('decisions.') || name.startsWith('curation.')) &&
20
+ (name.endsWith('.json') || name.endsWith('.processing') || name.endsWith('.retries') || name.endsWith('.failed')));
21
+ }
22
+ /**
23
+ * Sweep legacy marker-pipeline files from a `.devflow/learning/` directory:
24
+ * the fixed-name stamps above, plus per-session `decisions.*`/`curation.*`
25
+ * markers. Never touches `learning.json` or the live
26
+ * `.pending-turns.jsonl`/`.pending-turns.processing` queue files.
27
+ *
28
+ * ENOENT-idempotent (missing learning dir or already-removed files are not
29
+ * errors). Non-ENOENT errors are rethrown — callers that need best-effort
30
+ * semantics (e.g. `--reset`, which must still finish releasing its lock)
31
+ * should wrap the call in their own try/catch.
32
+ *
33
+ * @returns number of files removed
34
+ */
35
+ export async function sweepLegacyDreamMarkers(learningDir) {
36
+ let removed = 0;
37
+ for (const name of LEGACY_FIXED_STAMPS) {
38
+ try {
39
+ await fs.unlink(path.join(learningDir, name));
40
+ removed++;
41
+ }
42
+ catch (err) {
43
+ const code = err.code;
44
+ if (code !== 'ENOENT')
45
+ throw err;
46
+ }
47
+ }
48
+ try {
49
+ const entries = await fs.readdir(learningDir);
50
+ for (const entry of entries) {
51
+ if (isLegacyPerSessionMarker(entry)) {
52
+ try {
53
+ await fs.unlink(path.join(learningDir, entry));
54
+ removed++;
55
+ }
56
+ catch (err) {
57
+ const code = err.code;
58
+ if (code !== 'ENOENT')
59
+ throw err;
60
+ }
61
+ }
62
+ }
63
+ }
64
+ catch (err) {
65
+ const code = err.code;
66
+ if (code !== 'ENOENT')
67
+ throw err;
68
+ }
69
+ return removed;
70
+ }
71
+ // ---------------------------------------------------------------------------
72
+ // Live queue drain
73
+ // ---------------------------------------------------------------------------
74
+ /**
75
+ * Drain the learning (decisions-detection) pending-turns queue so stale turns
76
+ * don't process later — used by both `--clear` and `--disable`. A mid-run
77
+ * Learning agent whose claimed batch vanishes aborts without changes, which is
78
+ * the desired outcome in both cases. ENOENT-tolerant; other errors propagate.
79
+ */
80
+ export async function drainLearningQueue(gitRoot) {
81
+ await Promise.all([
82
+ fs.unlink(getLearningPendingTurnsPath(gitRoot)).catch((e) => {
83
+ if (e.code !== 'ENOENT')
84
+ throw e;
85
+ }),
86
+ fs.unlink(getLearningPendingTurnsProcessingPath(gitRoot)).catch((e) => {
87
+ if (e.code !== 'ENOENT')
88
+ throw e;
89
+ }),
90
+ ]);
91
+ }
92
+ //# sourceMappingURL=learning-queue-cleanup.js.map
@@ -0,0 +1,78 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ import { getDevFlowDirectory } from '../targets/claude-code/claude-paths.js';
4
+ import { getLearningTuningConfigPath } from './project-paths.js';
5
+ const VALID_MODELS = new Set(['opus', 'sonnet', 'haiku']);
6
+ function isValidModel(value) {
7
+ return typeof value === 'string' && VALID_MODELS.has(value);
8
+ }
9
+ const DEFAULTS = {
10
+ model: 'opus',
11
+ debug: false,
12
+ };
13
+ /**
14
+ * Apply a single JSON config layer onto a LearningTuningConfig, returning a new object.
15
+ * Skips fields with wrong types. Swallows parse errors — callers see defaults.
16
+ * Unknown fields (e.g. an old config still on disk with extra knobs) are
17
+ * silently ignored, not an error.
18
+ */
19
+ export function applyLearningTuningConfigLayer(config, json) {
20
+ try {
21
+ const parsed = JSON.parse(json);
22
+ // Object-shape guard mirrors coerceConfig in feature-config.ts: a JSON
23
+ // array, null, or primitive can't be treated as a config record.
24
+ if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
25
+ return { ...config };
26
+ }
27
+ const raw = parsed;
28
+ return {
29
+ // Only accept a model value that belongs to the closed LearningModelAlias domain.
30
+ model: isValidModel(raw.model) ? raw.model : config.model,
31
+ debug: typeof raw.debug === 'boolean' ? raw.debug : config.debug,
32
+ };
33
+ }
34
+ catch {
35
+ return { ...config };
36
+ }
37
+ }
38
+ /**
39
+ * Read a JSON config file and return its contents as a string, or null if absent.
40
+ * Returns null (not throws) on ENOENT or any other read error.
41
+ */
42
+ function readConfigFile(filePath) {
43
+ try {
44
+ return fs.readFileSync(filePath, 'utf-8');
45
+ }
46
+ catch (err) {
47
+ if (err.code !== 'ENOENT') {
48
+ // Warn but don't crash — callers fall back to defaults.
49
+ console.warn(`[learning-tuning-config] warning: could not read ${filePath}: ${err.message}`);
50
+ }
51
+ return null;
52
+ }
53
+ }
54
+ /**
55
+ * Load and merge learning agent tuning configuration.
56
+ *
57
+ * Priority (highest wins): project config → global config → defaults.
58
+ *
59
+ * - Global: `~/.devflow/learning.json`
60
+ * - Project: `<cwd>/.devflow/learning/learning.json`
61
+ *
62
+ * Invalid JSON in either file is silently ignored and treated as absent.
63
+ */
64
+ export function loadLearningTuningConfig(cwd) {
65
+ const globalConfigPath = path.join(getDevFlowDirectory(), 'learning.json');
66
+ const projectConfigPath = getLearningTuningConfigPath(cwd);
67
+ let config = { ...DEFAULTS };
68
+ const globalJson = readConfigFile(globalConfigPath);
69
+ if (globalJson !== null) {
70
+ config = applyLearningTuningConfigLayer(config, globalJson);
71
+ }
72
+ const projectJson = readConfigFile(projectConfigPath);
73
+ if (projectJson !== null) {
74
+ config = applyLearningTuningConfigLayer(config, projectJson);
75
+ }
76
+ return config;
77
+ }
78
+ //# sourceMappingURL=learning-tuning-config.js.map
@@ -0,0 +1,171 @@
1
+ import { promises as fs } from 'fs';
2
+ import * as path from 'path';
3
+ import { LEGACY_PLUGIN_NAMES, DELETED_PLUGIN_NAMES } from './plugins.js';
4
+ import { VIEW_MODES } from './flags.js';
5
+ import { normalizeComplianceFeature } from './compliance.js';
6
+ /**
7
+ * Read and parse the manifest file. Returns null if missing or corrupt.
8
+ */
9
+ export async function readManifest(devflowDir) {
10
+ const manifestPath = path.join(devflowDir, 'manifest.json');
11
+ try {
12
+ const content = await fs.readFile(manifestPath, 'utf-8');
13
+ const data = JSON.parse(content);
14
+ const features = data.features;
15
+ if (!data.version ||
16
+ !Array.isArray(data.plugins) ||
17
+ !data.scope ||
18
+ typeof features !== 'object' ||
19
+ features === null ||
20
+ typeof features.ambient !== 'boolean' ||
21
+ typeof features.memory !== 'boolean' ||
22
+ typeof data.installedAt !== 'string' ||
23
+ typeof data.updatedAt !== 'string') {
24
+ return null;
25
+ }
26
+ // Self-heal: rename features.kb → features.knowledge on disk
27
+ const knowledge = typeof features.knowledge === 'boolean' ? features.knowledge
28
+ : typeof features.kb === 'boolean' ? features.kb
29
+ : false;
30
+ // Self-heal: rename features.decisions → features.learning on disk
31
+ // Coalesce: features.learning wins; fall back to features.decisions; default false.
32
+ const learning = typeof features.learning === 'boolean' ? features.learning
33
+ : typeof features.decisions === 'boolean' ? features.decisions
34
+ : false;
35
+ const needsHeal = features.kb !== undefined || features.decisions !== undefined;
36
+ const SECURITY_MODES = ['none', 'user', 'managed'];
37
+ // Self-heal: non-string-array or absent knownFlags/knownPlugins → undefined (never partial/garbage)
38
+ const asStringArray = (val) => Array.isArray(val) && val.every(e => typeof e === 'string')
39
+ ? val
40
+ : undefined;
41
+ const knownFlags = asStringArray(features.knownFlags);
42
+ const knownPlugins = asStringArray(data.knownPlugins);
43
+ const manifest = {
44
+ version: data.version,
45
+ plugins: data.plugins,
46
+ scope: data.scope,
47
+ knownPlugins,
48
+ features: {
49
+ ambient: features.ambient,
50
+ memory: features.memory,
51
+ hud: typeof features.hud === 'boolean' ? features.hud : false,
52
+ knowledge,
53
+ learning,
54
+ rules: typeof features.rules === 'boolean' ? features.rules : true,
55
+ flags: Array.isArray(features.flags) ? features.flags : [],
56
+ knownFlags,
57
+ viewMode: typeof features.viewMode === 'string' && VIEW_MODES.includes(features.viewMode)
58
+ ? features.viewMode
59
+ : undefined,
60
+ security: typeof features.security === 'string' && SECURITY_MODES.includes(features.security)
61
+ ? features.security
62
+ : undefined,
63
+ // Self-heal: absent proxy field defaults to false (applies ADR-014 self-heal idiom)
64
+ proxy: typeof features.proxy === 'boolean' ? features.proxy : false,
65
+ // Self-heal: absent/malformed compliance → {enabled:false, frameworks:[]}
66
+ // (applies ADR-014 self-heal idiom; normalizeComplianceFeature is in TOLERANT section)
67
+ compliance: normalizeComplianceFeature(features.compliance),
68
+ },
69
+ installedAt: data.installedAt,
70
+ updatedAt: data.updatedAt,
71
+ };
72
+ if (needsHeal) {
73
+ await writeManifest(devflowDir, manifest);
74
+ }
75
+ return manifest;
76
+ }
77
+ catch {
78
+ return null;
79
+ }
80
+ }
81
+ /**
82
+ * Write manifest to disk. Creates parent directory if needed.
83
+ */
84
+ export async function writeManifest(devflowDir, data) {
85
+ await fs.mkdir(devflowDir, { recursive: true });
86
+ const manifestPath = path.join(devflowDir, 'manifest.json');
87
+ await fs.writeFile(manifestPath, JSON.stringify(data, null, 2) + '\n', 'utf-8');
88
+ }
89
+ /**
90
+ * Update a single feature field in the manifest. No-op when no manifest exists.
91
+ * Reads, mutates, and writes atomically. The `updatedAt` timestamp is always refreshed.
92
+ *
93
+ * Use this in toggle commands (ambient, hud, memory, decisions, security) instead of
94
+ * the repeated read → if-exists → mutate → write pattern.
95
+ */
96
+ export async function syncManifestFeature(devflowDir, key, value) {
97
+ const manifest = await readManifest(devflowDir);
98
+ if (!manifest)
99
+ return;
100
+ manifest.features[key] = value;
101
+ manifest.updatedAt = new Date().toISOString();
102
+ await writeManifest(devflowDir, manifest);
103
+ }
104
+ /**
105
+ * Merge new plugins into existing plugin list (union, no duplicates).
106
+ * Preserves order: existing plugins first, then new ones appended.
107
+ */
108
+ export function mergeManifestPlugins(existing, newPlugins) {
109
+ const merged = [...existing];
110
+ for (const plugin of newPlugins) {
111
+ if (!merged.includes(plugin)) {
112
+ merged.push(plugin);
113
+ }
114
+ }
115
+ return merged;
116
+ }
117
+ /**
118
+ * Compare two semver strings. Returns -1, 0, or 1.
119
+ * Handles simple x.y.z versions; returns null for unparseable input.
120
+ *
121
+ * Note: Pre-release suffixes (e.g., `-beta.1`, `-rc.2`) are silently ignored.
122
+ * `1.0.0-beta.1` and `1.0.0` compare as equal. Build metadata is also ignored.
123
+ */
124
+ function compareSemver(a, b) {
125
+ const parse = (v) => {
126
+ const match = v.match(/^v?(\d+)\.(\d+)\.(\d+)/);
127
+ return match ? [Number(match[1]), Number(match[2]), Number(match[3])] : [];
128
+ };
129
+ const pa = parse(a);
130
+ const pb = parse(b);
131
+ if (pa.length === 0 || pb.length === 0)
132
+ return null;
133
+ for (let i = 0; i < 3; i++) {
134
+ if (pa[i] > pb[i])
135
+ return 1;
136
+ if (pa[i] < pb[i])
137
+ return -1;
138
+ }
139
+ return 0;
140
+ }
141
+ /**
142
+ * Resolve the final plugin list for a manifest write.
143
+ * On partial installs (--plugin flag), merge newly installed plugins into
144
+ * the existing manifest's plugin list. On full installs, replace entirely.
145
+ */
146
+ export function resolvePluginList(installedPluginNames, existingManifest, isPartialInstall) {
147
+ if (existingManifest && isPartialInstall) {
148
+ const deletedSet = new Set(DELETED_PLUGIN_NAMES);
149
+ const cleaned = existingManifest.plugins
150
+ .filter(p => !deletedSet.has(p))
151
+ .map(p => LEGACY_PLUGIN_NAMES[p] ?? p);
152
+ return mergeManifestPlugins(cleaned, installedPluginNames);
153
+ }
154
+ return installedPluginNames;
155
+ }
156
+ export function detectUpgrade(currentVersion, installedVersion) {
157
+ if (!installedVersion) {
158
+ return { isUpgrade: false, isDowngrade: false, isSameVersion: false, previousVersion: null };
159
+ }
160
+ const cmp = compareSemver(currentVersion, installedVersion);
161
+ if (cmp === null) {
162
+ return { isUpgrade: false, isDowngrade: false, isSameVersion: false, previousVersion: installedVersion };
163
+ }
164
+ return {
165
+ isUpgrade: cmp > 0,
166
+ isDowngrade: cmp < 0,
167
+ isSameVersion: cmp === 0,
168
+ previousVersion: installedVersion,
169
+ };
170
+ }
171
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1,330 @@
1
+ /**
2
+ * @file migrations.ts
3
+ *
4
+ * Run-once migration registry for devflow init. Migrations execute at most once
5
+ * per machine (global scope) or once per machine across all discovered projects
6
+ * (per-project scope). State is persisted at ~/.devflow/migrations.json.
7
+ *
8
+ * Registry holds 2.x entries only (first: canonicalise-agent-keys-v1). To add a
9
+ * migration, append an entry to MIGRATIONS below. No 1.x → 2.0 upgrade path.
10
+ */
11
+ import { promises as fs } from 'fs';
12
+ import * as path from 'path';
13
+ import * as os from 'os';
14
+ import { writeFileAtomicExclusive } from './fs-atomic.js';
15
+ import { getMemoryDir } from './project-paths.js';
16
+ import { LEGACY_AGENT_KEYS, canonicaliseAgentKeys, parseAgentMappingEnvelope } from './agent-models.js';
17
+ /**
18
+ * D31: Registry pattern over scattered `if (!applied.includes(...))` conditionals.
19
+ *
20
+ * A typed array of Migration entries provides:
21
+ * - Single authoritative list of all one-time migrations (no hunting across files)
22
+ * - Explicit scope field that drives the runner's dispatch logic without branching
23
+ * on migration IDs
24
+ * - Append-only growth: adding a migration = adding an entry here, nothing else
25
+ *
26
+ * The `scope` field distinguishes global (one run per machine, no project context
27
+ * needed) from per-project (sweeps every discovered Claude-enabled project root).
28
+ *
29
+ * Append new migrations here.
30
+ *
31
+ * KNOWN ISSUE (out of scope for this wave): the migration runner retries a
32
+ * THROWING migration on every `devflow init`, forever, with no cap or backoff.
33
+ * This was acceptable with an empty MIGRATIONS registry (D37: the vacuous-truth
34
+ * case); this registry's first real entry is added below. Fix deferred.
35
+ *
36
+ * Note how that interacts with `canonicalise-agent-keys-v1`: runGlobalMigration
37
+ * marks a migration applied for ANY non-throwing return, and that entry never
38
+ * throws — it catches every I/O and parse failure and returns it as a *warning*.
39
+ * So it does NOT hit the unbounded-retry path. It hits the opposite one: a
40
+ * transient EACCES or a failed write records the migration as applied and it
41
+ * never runs again, leaving legacy keys on disk permanently.
42
+ *
43
+ * That is survivable by design rather than by luck: `readAgentMapping` applies
44
+ * canonicaliseAgentKeys on EVERY read, so a user whose disk migration silently
45
+ * failed still resolves their overrides correctly, and the next write persists
46
+ * the canonical keys. The disk file self-heals; only the one-time rewrite is
47
+ * lost. A future fix should make genuine I/O failure (as distinct from
48
+ * "malformed file, skip it") throw so the runner retries it.
49
+ */
50
+ export const MIGRATIONS = [
51
+ {
52
+ id: 'canonicalise-agent-keys-v1',
53
+ description: 'Rename legacy agent keys in ~/.devflow/agent-models.json to their canonical names',
54
+ scope: 'global',
55
+ async run(ctx) {
56
+ const infos = [];
57
+ const warnings = [];
58
+ // Fast path: no legacy keys defined — skip without touching the file.
59
+ if (Object.keys(LEGACY_AGENT_KEYS).length === 0)
60
+ return { infos, warnings };
61
+ const filePath = path.join(ctx.devflowDir, 'agent-models.json');
62
+ // parseAgentMappingEnvelope handles IO, BOM-strip, JSON parse, and shape validation.
63
+ // Raw read intentionally avoids readAgentMapping (which would drop unknown fields).
64
+ const envelope = await parseAgentMappingEnvelope(filePath);
65
+ if (envelope.kind === 'skip')
66
+ return { infos, warnings };
67
+ if (envelope.kind === 'warn') {
68
+ warnings.push(`canonicalise-agent-keys-v1: ${envelope.message}`);
69
+ return { infos, warnings };
70
+ }
71
+ const onWarning = (msg) => warnings.push(msg);
72
+ const { agents: migrated, didMutate, renamed, dropped, guardDropped } = canonicaliseAgentKeys(envelope.rawAgents, onWarning);
73
+ if (!didMutate)
74
+ return { infos, warnings };
75
+ // Write back with the canonical keys, preserving the rest of the envelope.
76
+ // Idempotent under concurrent execution (no lock needed; see D31 comment above).
77
+ const updated = { ...envelope.envelope, agents: migrated };
78
+ try {
79
+ await writeFileAtomicExclusive(filePath, JSON.stringify(updated, null, 2) + '\n');
80
+ }
81
+ catch (err) {
82
+ warnings.push(`canonicalise-agent-keys-v1: failed to write ${filePath}: ${err.message}`);
83
+ return { infos, warnings };
84
+ }
85
+ if (renamed.length > 0) {
86
+ infos.push(`Migrated agent-models.json: renamed ${renamed.map(k => `'${k}' → '${LEGACY_AGENT_KEYS[k]}'`).join(', ')}`);
87
+ }
88
+ if (dropped.length > 0) {
89
+ warnings.push(`canonicalise-agent-keys-v1: dropped legacy key(s) ${dropped.map(k => `'${k}'`).join(', ')} — canonical key already present, existing value kept`);
90
+ }
91
+ if (guardDropped.length > 0) {
92
+ warnings.push(`canonicalise-agent-keys-v1: dropped legacy key(s) ${guardDropped.map(k => `'${k}'`).join(', ')} — skipped due to prototype-pollution guard`);
93
+ }
94
+ return { infos, warnings };
95
+ },
96
+ },
97
+ ];
98
+ const MIGRATIONS_FILE = 'migrations.json';
99
+ /**
100
+ * D30: State lives at `~/.devflow/migrations.json` (scope-independent) rather
101
+ * than the install manifest because:
102
+ *
103
+ * - The install manifest is scope-specific: user-scope manifests live at
104
+ * `~/.devflow/manifest.json` while local-scope manifests live at
105
+ * `.devflow/manifest.json` inside the repo. A migration that runs on user-scope
106
+ * init wouldn't be recorded in a local-scope manifest, so the migration would
107
+ * re-run on the next local-scope init.
108
+ * - Migration state is machine-wide: once a global migration runs on a machine it
109
+ * should never re-run regardless of which project or scope triggered devflow init.
110
+ * - `~/.devflow/migrations.json` is always writable (home-dir location), whereas
111
+ * local-scope devflowDir may be inside a read-only checkout.
112
+ *
113
+ * @param devflowDir - absolute path to `~/.devflow` (always the home-dir location)
114
+ */
115
+ export async function readAppliedMigrations(devflowDir) {
116
+ const filePath = path.join(devflowDir, MIGRATIONS_FILE);
117
+ try {
118
+ const raw = await fs.readFile(filePath, 'utf-8');
119
+ const parsed = JSON.parse(raw);
120
+ if (!Array.isArray(parsed.applied))
121
+ return [];
122
+ return parsed.applied;
123
+ }
124
+ catch {
125
+ // File missing or malformed — treat as empty
126
+ return [];
127
+ }
128
+ }
129
+ /**
130
+ * Write applied migration IDs to `~/.devflow/migrations.json` atomically.
131
+ * Uses exclusive-create tmp + rename so readers never observe a partial file
132
+ * and a stale tmp from a previous crash does not silently overwrite good data.
133
+ *
134
+ * Delegates to `writeFileAtomicExclusive` in fs-atomic.ts (D34/D39: canonical
135
+ * TS atomic-write helper with race-tolerant unlink before retry).
136
+ *
137
+ * @param devflowDir - absolute path to `~/.devflow`
138
+ * @param ids - full list of applied migration IDs (cumulative, not incremental)
139
+ */
140
+ export async function writeAppliedMigrations(devflowDir, ids) {
141
+ await fs.mkdir(devflowDir, { recursive: true });
142
+ const filePath = path.join(devflowDir, MIGRATIONS_FILE);
143
+ const data = { applied: ids };
144
+ const content = JSON.stringify(data, null, 2) + '\n';
145
+ await writeFileAtomicExclusive(filePath, content);
146
+ }
147
+ /**
148
+ * Surface migration result infos, warnings, failures, and newly-applied IDs
149
+ * to the user via the provided logger.
150
+ *
151
+ * Extracted from runMigrationsWithFallback (init.ts) so reporting can be
152
+ * tested independently of the project-list routing logic.
153
+ */
154
+ export function reportMigrationResult(result, logger, verbose) {
155
+ for (const f of result.failures) {
156
+ // D33: Non-fatal — warn but continue; migration will retry on next init
157
+ const where = f.project ? ` in ${path.basename(f.project)}` : '';
158
+ logger.warn(`Migration '${f.id}'${where} failed: ${f.error.message}`);
159
+ }
160
+ for (const info of result.infos) {
161
+ logger.info(info);
162
+ }
163
+ for (const warn of result.warnings) {
164
+ logger.warn(warn);
165
+ }
166
+ if (result.newlyApplied.length > 0) {
167
+ logger.success(`Applied ${result.newlyApplied.length} migration(s)`);
168
+ }
169
+ if (verbose) {
170
+ for (const id of result.newlyApplied)
171
+ logger.info(` ✓ ${id}`);
172
+ }
173
+ }
174
+ /**
175
+ * Process an array of items with at most `limit` concurrent Promises.
176
+ * Returns PromiseSettledResult for every item in the original order.
177
+ */
178
+ async function pooled(items, limit, fn) {
179
+ const results = [];
180
+ for (let i = 0; i < items.length; i += limit) {
181
+ const chunk = items.slice(i, i + limit);
182
+ const chunkResults = await Promise.allSettled(chunk.map(fn));
183
+ results.push(...chunkResults);
184
+ }
185
+ return results;
186
+ }
187
+ /**
188
+ * Run a single global migration, returning { applied, failure, infos, warnings }.
189
+ *
190
+ * D33: Non-fatal semantics — if a global migration fails, we record the failure
191
+ * and continue. The failing migration is NOT marked as applied so it retries on
192
+ * the next `devflow init` run (transient errors such as filesystem contention
193
+ * are eventually resolved without blocking the install).
194
+ */
195
+ async function runGlobalMigration(migration, ctx) {
196
+ try {
197
+ const runResult = await migration.run(ctx);
198
+ return { applied: true, failure: null, infos: runResult.infos, warnings: runResult.warnings };
199
+ }
200
+ catch (error) {
201
+ return {
202
+ applied: false,
203
+ failure: {
204
+ id: migration.id,
205
+ scope: migration.scope,
206
+ error: error instanceof Error ? error : new Error(String(error)),
207
+ },
208
+ infos: [],
209
+ warnings: [],
210
+ };
211
+ }
212
+ }
213
+ /**
214
+ * Run a single per-project migration across all discovered project roots with a
215
+ * concurrency cap, returning { applied, failures, infos, warnings }.
216
+ *
217
+ * D35: Per-project migrations run across all discovered projects with a
218
+ * concurrency cap of 16 to avoid EMFILE on machines with 50–200 projects.
219
+ * This matches the pattern used by `installClaudeignore` in init.ts for
220
+ * multi-project install — each project has its own `.memory/.decisions.lock`
221
+ * so there is no cross-project contention. Promise.allSettled collects all
222
+ * outcomes without short-circuiting on partial failures.
223
+ *
224
+ * Marking strategy: the migration is considered applied globally only when
225
+ * ALL projects succeed. Any per-project failure causes the ID to remain
226
+ * unapplied so the next `devflow init` (which may discover the same or
227
+ * additional projects) can retry the failed projects.
228
+ *
229
+ * D37: runPerProjectMigration is unreachable in production — MIGRATIONS holds
230
+ * only a global migration (`canonicalise-agent-keys-v1`). The vacuous-truth
231
+ * analysis is preserved for correctness: if a per-project migration is ever
232
+ * added, an empty discoveredProjects list marks it applied (empty-discovery-marks-applied
233
+ * intended); the applied-set write is skipped only when newlyApplied is empty,
234
+ * which is guaranteed when MIGRATIONS has no per-project entries.
235
+ */
236
+ async function runPerProjectMigration(migration, ctx, discoveredProjects) {
237
+ const results = await pooled(discoveredProjects, 16, (projectRoot) => {
238
+ const memoryDir = getMemoryDir(projectRoot);
239
+ return migration.run({
240
+ scope: 'per-project',
241
+ devflowDir: ctx.devflowDir,
242
+ memoryDir,
243
+ projectRoot,
244
+ });
245
+ });
246
+ const failures = [];
247
+ const infos = [];
248
+ const warnings = [];
249
+ for (const [i, result] of results.entries()) {
250
+ if (result.status === 'rejected') {
251
+ failures.push({
252
+ id: migration.id,
253
+ scope: migration.scope,
254
+ project: discoveredProjects[i],
255
+ error: result.reason instanceof Error ? result.reason : new Error(String(result.reason)),
256
+ });
257
+ }
258
+ else {
259
+ infos.push(...result.value.infos);
260
+ warnings.push(...result.value.warnings);
261
+ }
262
+ }
263
+ const applied = results.every(r => r.status === 'fulfilled');
264
+ return { applied, failures, infos, warnings };
265
+ }
266
+ /**
267
+ * Run all unapplied migrations from MIGRATIONS.
268
+ *
269
+ * D32: Always-run-unapplied semantics (no fresh-vs-upgrade branch).
270
+ * MIGRATIONS currently holds one global migration (`canonicalise-agent-keys-v1`);
271
+ * on a fresh machine the loop executes once and writes migrations.json. On
272
+ * subsequent runs the ID is already in the applied set and the loop is a no-op.
273
+ *
274
+ * @param ctx - devflowDir (memoryDir and projectRoot filled per-project)
275
+ * @param discoveredProjects - absolute paths to discovered Claude-enabled project roots
276
+ * @param registryOverride - override MIGRATIONS for testing (defaults to module-level MIGRATIONS)
277
+ */
278
+ export async function runMigrations(ctx, discoveredProjects, registryOverride) {
279
+ const registry = registryOverride ?? MIGRATIONS;
280
+ // Always read from home-dir devflow location so state is machine-wide
281
+ const homeDevflowDir = path.join(os.homedir(), '.devflow');
282
+ const appliedArray = await readAppliedMigrations(homeDevflowDir);
283
+ // Convert to Set once for O(1) lookups throughout the loop (issue #9)
284
+ const applied = new Set(appliedArray);
285
+ const newlyApplied = [];
286
+ const failures = [];
287
+ const infos = [];
288
+ const warnings = [];
289
+ for (const migration of registry) {
290
+ if (applied.has(migration.id))
291
+ continue; // Already done — skip
292
+ if (migration.scope === 'global') {
293
+ const globalCtx = {
294
+ scope: 'global',
295
+ devflowDir: ctx.devflowDir,
296
+ };
297
+ const outcome = await runGlobalMigration(migration, globalCtx);
298
+ if (outcome.applied) {
299
+ newlyApplied.push(migration.id);
300
+ infos.push(...outcome.infos);
301
+ warnings.push(...outcome.warnings);
302
+ }
303
+ else if (outcome.failure) {
304
+ failures.push(outcome.failure);
305
+ }
306
+ }
307
+ else if (migration.scope === 'per-project') {
308
+ const outcome = await runPerProjectMigration(migration, ctx, discoveredProjects);
309
+ failures.push(...outcome.failures);
310
+ infos.push(...outcome.infos);
311
+ warnings.push(...outcome.warnings);
312
+ if (outcome.applied) {
313
+ newlyApplied.push(migration.id);
314
+ }
315
+ }
316
+ else {
317
+ // Exhaustiveness check — AnyMigration covers all MigrationScope values;
318
+ // migration is narrowed to `never` here so this branch is unreachable at runtime.
319
+ const _exhaustive = migration;
320
+ void _exhaustive;
321
+ throw new Error('Unknown migration scope');
322
+ }
323
+ }
324
+ // Write state once at end, accumulating all newly applied IDs (issue #5 — O(N²) → O(1))
325
+ if (newlyApplied.length > 0) {
326
+ await writeAppliedMigrations(homeDevflowDir, [...appliedArray, ...newlyApplied]);
327
+ }
328
+ return { newlyApplied, failures, infos, warnings };
329
+ }
330
+ //# sourceMappingURL=migrations.js.map