peaks-loop 4.0.54 → 4.1.1

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 (1068) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/README-en.md +16 -1
  3. package/README.md +15 -1
  4. package/config/eslint/.peaks-rules.cjs +158 -13
  5. package/config/eslint/tsconfig.lint.json +47 -0
  6. package/dist/cli/cli-envelope.d.ts +114 -0
  7. package/dist/cli/cli-envelope.js +85 -0
  8. package/dist/cli/cli-helpers.d.ts +1 -1
  9. package/dist/cli/cli-helpers.js +8 -4
  10. package/dist/cli/commands/_cli-error-envelope.js +1 -1
  11. package/dist/cli/commands/_register.js +86 -39
  12. package/dist/cli/commands/_super.js +40 -7
  13. package/dist/cli/commands/adapter-commands-s2a.js +8 -7
  14. package/dist/cli/commands/adapter-commands.d.ts +2 -2
  15. package/dist/cli/commands/adapter-commands.js +7 -8
  16. package/dist/cli/commands/api-diff-commands.js +5 -4
  17. package/dist/cli/commands/asset-commands.d.ts +2 -2
  18. package/dist/cli/commands/asset-commands.js +135 -132
  19. package/dist/cli/commands/audit-commands.d.ts +1 -1
  20. package/dist/cli/commands/audit-commands.js +75 -32
  21. package/dist/cli/commands/autonomous-swarm-commands.d.ts +1 -1
  22. package/dist/cli/commands/autonomous-swarm-commands.js +14 -8
  23. package/dist/cli/commands/baseline-commands.js +34 -9
  24. package/dist/cli/commands/bee-commands.d.ts +1 -1
  25. package/dist/cli/commands/bee-commands.js +18 -21
  26. package/dist/cli/commands/best-practice-scan-command.js +6 -34
  27. package/dist/cli/commands/best-practice-scan-helpers.d.ts +12 -0
  28. package/dist/cli/commands/best-practice-scan-helpers.js +37 -0
  29. package/dist/cli/commands/capability-commands.d.ts +1 -1
  30. package/dist/cli/commands/capability-commands.js +14 -4
  31. package/dist/cli/commands/capability-worker-config-sc-commands.d.ts +1 -1
  32. package/dist/cli/commands/changeset-commands.js +21 -18
  33. package/dist/cli/commands/code-gate-command.js +9 -2
  34. package/dist/cli/commands/code-job-shape-commands-read-job-shape.d.ts +15 -0
  35. package/dist/cli/commands/code-job-shape-commands-read-job-shape.js +70 -0
  36. package/dist/cli/commands/code-job-shape-commands.js +21 -45
  37. package/dist/cli/commands/code-mode-gate-commands.d.ts +15 -1
  38. package/dist/cli/commands/code-mode-gate-commands.js +19 -199
  39. package/dist/cli/commands/code-mode-gate-plan-command.d.ts +14 -0
  40. package/dist/cli/commands/code-mode-gate-plan-command.js +23 -0
  41. package/dist/cli/commands/code-mode-gate-should-pause-command.d.ts +24 -0
  42. package/dist/cli/commands/code-mode-gate-should-pause-command.js +137 -0
  43. package/dist/cli/commands/code-mode-gate-should-pause-envelope.d.ts +59 -0
  44. package/dist/cli/commands/code-mode-gate-should-pause-envelope.js +144 -0
  45. package/dist/cli/commands/code-orchestrator-can-do.js +4 -4
  46. package/dist/cli/commands/code-review-commands.js +18 -3
  47. package/dist/cli/commands/code-run-command.js +44 -7
  48. package/dist/cli/commands/code-runtime-commands.d.ts +17 -0
  49. package/dist/cli/commands/code-runtime-commands.js +105 -73
  50. package/dist/cli/commands/codegraph-commands.js +11 -6
  51. package/dist/cli/commands/codegraph-status-command.js +6 -2
  52. package/dist/cli/commands/comments-commands.d.ts +14 -0
  53. package/dist/cli/commands/comments-commands.js +96 -0
  54. package/dist/cli/commands/compact-command.js +52 -26
  55. package/dist/cli/commands/complexity-commands.js +6 -7
  56. package/dist/cli/commands/config-commands.d.ts +1 -1
  57. package/dist/cli/commands/config-commands.js +33 -9
  58. package/dist/cli/commands/container-commands.js +39 -15
  59. package/dist/cli/commands/context-commands.d.ts +1 -1
  60. package/dist/cli/commands/context-commands.js +40 -13
  61. package/dist/cli/commands/core/artifacts-command.js +11 -3
  62. package/dist/cli/commands/core/binding-commands.js +9 -6
  63. package/dist/cli/commands/core/doctor-command.js +7 -4
  64. package/dist/cli/commands/core/memory-command.js +57 -21
  65. package/dist/cli/commands/core/proxy-command.js +3 -1
  66. package/dist/cli/commands/core/session-command.js +16 -8
  67. package/dist/cli/commands/core/skill-command.js +32 -17
  68. package/dist/cli/commands/core/standards-command.js +56 -14
  69. package/dist/cli/commands/cron-commands-actions.d.ts +43 -0
  70. package/dist/cli/commands/cron-commands-actions.js +128 -0
  71. package/dist/cli/commands/cron-commands-schedule.d.ts +86 -0
  72. package/dist/cli/commands/cron-commands-schedule.js +151 -0
  73. package/dist/cli/commands/cron-commands.d.ts +35 -32
  74. package/dist/cli/commands/cron-commands.js +167 -211
  75. package/dist/cli/commands/cron-scheduler-commands.js +40 -20
  76. package/dist/cli/commands/cron-scheduler-persist.d.ts +110 -0
  77. package/dist/cli/commands/cron-scheduler-persist.js +171 -0
  78. package/dist/cli/commands/dashboard-long-run.js +45 -14
  79. package/dist/cli/commands/dashboard-summary.js +15 -5
  80. package/dist/cli/commands/dispatch-commands.js +65 -32
  81. package/dist/cli/commands/dispatch-from-dag.js +9 -10
  82. package/dist/cli/commands/doc-commands.js +8 -9
  83. package/dist/cli/commands/doctor/invoke-from-code.js +1 -1
  84. package/dist/cli/commands/e2e-verify-env.d.ts +19 -0
  85. package/dist/cli/commands/e2e-verify-env.js +19 -0
  86. package/dist/cli/commands/e2e-verify.d.ts +3 -14
  87. package/dist/cli/commands/e2e-verify.js +49 -29
  88. package/dist/cli/commands/ecc-commands.d.ts +18 -23
  89. package/dist/cli/commands/ecc-commands.js +39 -36
  90. package/dist/cli/commands/evidence-commands.js +10 -6
  91. package/dist/cli/commands/evolution-commands.d.ts +2 -2
  92. package/dist/cli/commands/evolution-commands.js +109 -115
  93. package/dist/cli/commands/feedback-commands-helpers.d.ts +22 -0
  94. package/dist/cli/commands/feedback-commands-helpers.js +33 -0
  95. package/dist/cli/commands/feedback-commands.js +15 -38
  96. package/dist/cli/commands/final-review-commands.d.ts +1 -1
  97. package/dist/cli/commands/final-review-commands.js +24 -22
  98. package/dist/cli/commands/fixture-commands.d.ts +1 -1
  99. package/dist/cli/commands/fixture-commands.js +17 -6
  100. package/dist/cli/commands/fork-commands-sync-verify.d.ts +12 -0
  101. package/dist/cli/commands/fork-commands-sync-verify.js +72 -0
  102. package/dist/cli/commands/fork-commands.js +19 -51
  103. package/dist/cli/commands/fresh-context-commands.js +3 -1
  104. package/dist/cli/commands/gate-commands-enforce.d.ts +82 -0
  105. package/dist/cli/commands/gate-commands-enforce.js +210 -0
  106. package/dist/cli/commands/gate-commands.d.ts +1 -1
  107. package/dist/cli/commands/gate-commands.js +85 -205
  108. package/dist/cli/commands/governance-classify-contract-commands.d.ts +1 -1
  109. package/dist/cli/commands/governance-classify-contract-commands.js +28 -17
  110. package/dist/cli/commands/heartbeat-commands-action.d.ts +7 -0
  111. package/dist/cli/commands/heartbeat-commands-action.js +192 -0
  112. package/dist/cli/commands/heartbeat-commands-validation.d.ts +57 -0
  113. package/dist/cli/commands/heartbeat-commands-validation.js +120 -0
  114. package/dist/cli/commands/heartbeat-commands.d.ts +27 -6
  115. package/dist/cli/commands/heartbeat-commands.js +19 -198
  116. package/dist/cli/commands/hook-handle.d.ts +1 -1
  117. package/dist/cli/commands/hook-handle.js +46 -13
  118. package/dist/cli/commands/hooks-commands.d.ts +1 -1
  119. package/dist/cli/commands/hooks-commands.js +18 -6
  120. package/dist/cli/commands/ide-commands.d.ts +1 -1
  121. package/dist/cli/commands/ide-commands.js +5 -3
  122. package/dist/cli/commands/impact-commands.js +8 -2
  123. package/dist/cli/commands/job-add-slice-command.d.ts +43 -0
  124. package/dist/cli/commands/job-add-slice-command.js +151 -0
  125. package/dist/cli/commands/job-commands.d.ts +64 -0
  126. package/dist/cli/commands/job-commands.js +134 -63
  127. package/dist/cli/commands/lease-metrics-commands-support.d.ts +73 -0
  128. package/dist/cli/commands/lease-metrics-commands-support.js +67 -0
  129. package/dist/cli/commands/lease-metrics-commands.d.ts +3 -44
  130. package/dist/cli/commands/lease-metrics-commands.js +21 -61
  131. package/dist/cli/commands/lease-stats-commands.d.ts +1 -1
  132. package/dist/cli/commands/lease-stats-commands.js +9 -6
  133. package/dist/cli/commands/lint-commands.d.ts +9 -3
  134. package/dist/cli/commands/lint-commands.js +15 -8
  135. package/dist/cli/commands/log-commands.d.ts +1 -1
  136. package/dist/cli/commands/log-commands.js +8 -6
  137. package/dist/cli/commands/loop-commands.d.ts +1 -1
  138. package/dist/cli/commands/loop-commands.js +50 -50
  139. package/dist/cli/commands/loop-eval-commands.d.ts +1 -1
  140. package/dist/cli/commands/loop-eval-commands.js +101 -30
  141. package/dist/cli/commands/memory-commands.js +21 -13
  142. package/dist/cli/commands/migrate-1-4-1-command.js +1 -1
  143. package/dist/cli/commands/migrate-v2-10-to-v2-11-command.js +2 -2
  144. package/dist/cli/commands/mut-commands-helpers.d.ts +30 -0
  145. package/dist/cli/commands/mut-commands-helpers.js +43 -0
  146. package/dist/cli/commands/mut-commands.js +16 -58
  147. package/dist/cli/commands/observability-commands-queries.d.ts +37 -0
  148. package/dist/cli/commands/observability-commands-queries.js +113 -0
  149. package/dist/cli/commands/observability-commands.d.ts +1 -1
  150. package/dist/cli/commands/observability-commands.js +7 -92
  151. package/dist/cli/commands/openspec-commands.d.ts +1 -1
  152. package/dist/cli/commands/openspec-commands.js +20 -8
  153. package/dist/cli/commands/outer-cache-commands.js +18 -7
  154. package/dist/cli/commands/perf-audit-commands.d.ts +1 -1
  155. package/dist/cli/commands/perf-audit-commands.js +12 -7
  156. package/dist/cli/commands/perf-commands.d.ts +1 -1
  157. package/dist/cli/commands/perf-commands.js +5 -5
  158. package/dist/cli/commands/playwright-commands.d.ts +1 -1
  159. package/dist/cli/commands/playwright-commands.js +20 -8
  160. package/dist/cli/commands/polyrepo-commands.js +21 -19
  161. package/dist/cli/commands/prd-blocks-commands.js +1 -3
  162. package/dist/cli/commands/prd-commands.d.ts +1 -1
  163. package/dist/cli/commands/prd-commands.js +16 -6
  164. package/dist/cli/commands/preferences-commands.js +13 -12
  165. package/dist/cli/commands/primer-command.js +5 -5
  166. package/dist/cli/commands/project-commands.d.ts +1 -1
  167. package/dist/cli/commands/project-commands.js +33 -9
  168. package/dist/cli/commands/qa-business-review-commands.js +16 -12
  169. package/dist/cli/commands/qa-commands.d.ts +1 -1
  170. package/dist/cli/commands/qa-commands.js +3 -5
  171. package/dist/cli/commands/release-commands.d.ts +3 -1
  172. package/dist/cli/commands/release-commands.js +33 -22
  173. package/dist/cli/commands/request-commands.js +47 -30
  174. package/dist/cli/commands/request-format-helpers.js +1 -1
  175. package/dist/cli/commands/retrospective-commands.d.ts +18 -11
  176. package/dist/cli/commands/retrospective-commands.js +24 -173
  177. package/dist/cli/commands/retrospective-index-command.d.ts +26 -0
  178. package/dist/cli/commands/retrospective-index-command.js +99 -0
  179. package/dist/cli/commands/retrospective-project-root.d.ts +9 -0
  180. package/dist/cli/commands/retrospective-project-root.js +15 -0
  181. package/dist/cli/commands/retrospective-search-command.d.ts +27 -0
  182. package/dist/cli/commands/retrospective-search-command.js +97 -0
  183. package/dist/cli/commands/retrospective-show-command.d.ts +23 -0
  184. package/dist/cli/commands/retrospective-show-command.js +80 -0
  185. package/dist/cli/commands/reviewer-commands.d.ts +1 -1
  186. package/dist/cli/commands/role-commands.js +14 -9
  187. package/dist/cli/commands/runtime-commands.js +14 -7
  188. package/dist/cli/commands/sc-commands.d.ts +1 -1
  189. package/dist/cli/commands/sc-commands.js +39 -6
  190. package/dist/cli/commands/scan-commands.js +36 -13
  191. package/dist/cli/commands/security-audit-commands.d.ts +1 -1
  192. package/dist/cli/commands/security-audit-commands.js +12 -7
  193. package/dist/cli/commands/sediment-commands.d.ts +2 -2
  194. package/dist/cli/commands/sediment-commands.js +146 -139
  195. package/dist/cli/commands/session-24h-mode.js +15 -2
  196. package/dist/cli/commands/session-checkpoint-command.js +1 -1
  197. package/dist/cli/commands/session-migrate-skill-name.js +1 -1
  198. package/dist/cli/commands/shadcn-commands.d.ts +1 -1
  199. package/dist/cli/commands/shadcn-commands.js +3 -1
  200. package/dist/cli/commands/share-commands.js +38 -39
  201. package/dist/cli/commands/skill-conformance-commands.d.ts +1 -1
  202. package/dist/cli/commands/skill-conformance-commands.js +1 -1
  203. package/dist/cli/commands/skill-loop-engineering-readiness-commands.js +16 -17
  204. package/dist/cli/commands/skill-visibility.js +2 -2
  205. package/dist/cli/commands/slice-commands.d.ts +1 -1
  206. package/dist/cli/commands/slice-commands.js +36 -12
  207. package/dist/cli/commands/slice-integrate-commands.js +6 -7
  208. package/dist/cli/commands/slice-review-commands-helpers.d.ts +26 -0
  209. package/dist/cli/commands/slice-review-commands-helpers.js +26 -0
  210. package/dist/cli/commands/slice-review-commands.js +16 -24
  211. package/dist/cli/commands/smoke-commands-add-path.d.ts +14 -0
  212. package/dist/cli/commands/smoke-commands-add-path.js +39 -0
  213. package/dist/cli/commands/smoke-commands-define.d.ts +18 -0
  214. package/dist/cli/commands/smoke-commands-define.js +97 -0
  215. package/dist/cli/commands/smoke-commands-run.d.ts +18 -0
  216. package/dist/cli/commands/smoke-commands-run.js +119 -0
  217. package/dist/cli/commands/smoke-commands.d.ts +10 -1
  218. package/dist/cli/commands/smoke-commands.js +17 -179
  219. package/dist/cli/commands/sop-commands.d.ts +1 -1
  220. package/dist/cli/commands/sop-commands.js +38 -10
  221. package/dist/cli/commands/statusline-commands.d.ts +1 -1
  222. package/dist/cli/commands/statusline-commands.js +21 -10
  223. package/dist/cli/commands/sub-agent/detached.js +3 -3
  224. package/dist/cli/commands/sub-agent-dispatch-guard.d.ts +1 -1
  225. package/dist/cli/commands/sub-agent-shared.js +1 -1
  226. package/dist/cli/commands/sub-agent-shutdown-commands.js +17 -9
  227. package/dist/cli/commands/swarm-commands.d.ts +1 -1
  228. package/dist/cli/commands/swarm-commands.js +13 -6
  229. package/dist/cli/commands/tech-commands-helpers.d.ts +37 -0
  230. package/dist/cli/commands/tech-commands-helpers.js +24 -0
  231. package/dist/cli/commands/tech-commands.d.ts +2 -29
  232. package/dist/cli/commands/tech-commands.js +15 -28
  233. package/dist/cli/commands/test-commands.js +27 -7
  234. package/dist/cli/commands/user-touchpoint-commands.js +1 -3
  235. package/dist/cli/commands/verdict-aggregate-command.d.ts +1 -1
  236. package/dist/cli/commands/verdict-aggregate-command.js +20 -7
  237. package/dist/cli/commands/vm-commands.js +48 -19
  238. package/dist/cli/commands/wave-plan-commands.js +5 -2
  239. package/dist/cli/commands/web-commands.js +14 -4
  240. package/dist/cli/commands/web-lifecycle-commands.js +5 -3
  241. package/dist/cli/commands/workflow-commands.d.ts +1 -1
  242. package/dist/cli/commands/workflow-commands.js +64 -29
  243. package/dist/cli/commands/workflow-lifecycle-commands.js +19 -17
  244. package/dist/cli/commands/workflow-plan-commands-actions.d.ts +20 -0
  245. package/dist/cli/commands/workflow-plan-commands-actions.js +115 -0
  246. package/dist/cli/commands/workflow-plan-commands-session.d.ts +17 -0
  247. package/dist/cli/commands/workflow-plan-commands-session.js +59 -0
  248. package/dist/cli/commands/workflow-plan-commands.d.ts +10 -21
  249. package/dist/cli/commands/workflow-plan-commands.js +15 -141
  250. package/dist/cli/commands/workspace/clean-command.js +4 -1
  251. package/dist/cli/commands/workspace/helpers.js +2 -1
  252. package/dist/cli/commands/workspace/init-command.js +80 -20
  253. package/dist/cli/commands/workspace/reconcile-command.js +3 -1
  254. package/dist/cli/commands/workspace-commands.d.ts +1 -1
  255. package/dist/cli/commands/workspace-commands.js +1 -1
  256. package/dist/cli/commands/worktree-auth-commands.d.ts +1 -1
  257. package/dist/cli/commands/worktree-auth-commands.js +16 -169
  258. package/dist/cli/commands/worktree-auth-grant-command.d.ts +14 -0
  259. package/dist/cli/commands/worktree-auth-grant-command.js +118 -0
  260. package/dist/cli/commands/worktree-auth-manage-commands.d.ts +17 -0
  261. package/dist/cli/commands/worktree-auth-manage-commands.js +128 -0
  262. package/dist/cli/commands/worktree-lease-commands.d.ts +1 -1
  263. package/dist/cli/commands/worktree-lease-commands.js +65 -37
  264. package/dist/cli/index.js +6 -2
  265. package/dist/cli/program.js +8 -10
  266. package/dist/hooks/pre-tool-use-sub-agent.js +1 -6
  267. package/dist/reporters/bdd-reporter.js +9 -3
  268. package/dist/services/24h-mode/auto-engage.d.ts +19 -0
  269. package/dist/services/24h-mode/auto-engage.js +35 -0
  270. package/dist/services/24h-mode/decider.js +5 -1
  271. package/dist/services/24h-mode/store.js +4 -2
  272. package/dist/services/adapter/adapter-registry.js +20 -8
  273. package/dist/services/adapter/adapter.d.ts +2 -2
  274. package/dist/services/adapter/auto-adapter.d.ts +2 -2
  275. package/dist/services/adapter/auto-adapter.js +1 -1
  276. package/dist/services/adapter/claude-adapter.d.ts +1 -1
  277. package/dist/services/adapter/claude-adapter.js +8 -8
  278. package/dist/services/adapter/codex-adapter.d.ts +2 -2
  279. package/dist/services/adapter/codex-adapter.js +20 -8
  280. package/dist/services/adapter/copilot-adapter.d.ts +2 -2
  281. package/dist/services/adapter/copilot-adapter.js +20 -8
  282. package/dist/services/artifacts/artifact-prerequisites.js +10 -8
  283. package/dist/services/artifacts/artifact-service.js +3 -1
  284. package/dist/services/artifacts/artifact-template-bodies.d.ts +12 -0
  285. package/dist/services/artifacts/artifact-template-bodies.js +165 -0
  286. package/dist/services/artifacts/artifact-templates.js +26 -168
  287. package/dist/services/artifacts/request-artifact-service.js +14 -7
  288. package/dist/services/artifacts/request-artifact-state-helpers.d.ts +3 -2
  289. package/dist/services/artifacts/request-artifact-state-helpers.js +3 -5
  290. package/dist/services/artifacts/workspace-artifact-helpers.d.ts +28 -0
  291. package/dist/services/artifacts/workspace-artifact-helpers.js +54 -0
  292. package/dist/services/artifacts/workspace-service.d.ts +3 -22
  293. package/dist/services/artifacts/workspace-service.js +10 -60
  294. package/dist/services/audit/artifact-writer.js +21 -21
  295. package/dist/services/audit/audit-goal-service.js +2 -2
  296. package/dist/services/audit/backing-detector.js +7 -4
  297. package/dist/services/audit/classifier.js +3 -3
  298. package/dist/services/audit/decision-writer.js +13 -9
  299. package/dist/services/audit/enforcers/active-skill-resolver.js +15 -7
  300. package/dist/services/audit/enforcers/design-draft-confirm.js +4 -4
  301. package/dist/services/audit/enforcers/lint-audit-regression.js +10 -5
  302. package/dist/services/audit/enforcers/lint-bee-runtime-contract.js +16 -8
  303. package/dist/services/audit/enforcers/lint-catalog-governance.js +8 -4
  304. package/dist/services/audit/enforcers/lint-output-style.js +4 -2
  305. package/dist/services/audit/enforcers/lint-peaks-code-runtime.js +8 -3
  306. package/dist/services/audit/enforcers/lint-peaks-skill-runtime.js +8 -3
  307. package/dist/services/audit/enforcers/lint-peaks-ui-sc-txt-runtime.js +20 -20
  308. package/dist/services/audit/enforcers/lint-prd-artifact-handoff.js +5 -5
  309. package/dist/services/audit/enforcers/lint-prd-source-snapshot.d.ts +1 -1
  310. package/dist/services/audit/enforcers/lint-prd-source-snapshot.js +5 -5
  311. package/dist/services/audit/enforcers/lint-qa-gateguard-and-runtime.js +10 -10
  312. package/dist/services/audit/enforcers/lint-rd-handoff-coverage.js +10 -8
  313. package/dist/services/audit/enforcers/lint-reference-shape.js +50 -18
  314. package/dist/services/audit/enforcers/lint-skill-presence-mandatory.js +5 -5
  315. package/dist/services/audit/enforcers/lint-style.js +44 -11
  316. package/dist/services/audit/enforcers/lint-workflow-shape.js +4 -2
  317. package/dist/services/audit/enforcers/login-gate.js +2 -6
  318. package/dist/services/audit/enforcers/mock-placement.js +2 -2
  319. package/dist/services/audit/enforcers/no-root-pollution.js +38 -9
  320. package/dist/services/audit/enforcers/pre-rd-scan.js +1 -1
  321. package/dist/services/audit/enforcers/prototype-fidelity.js +1 -1
  322. package/dist/services/audit/enforcers/resume-detection.js +5 -4
  323. package/dist/services/audit/prose-ratio-calculator.js +1 -1
  324. package/dist/services/audit/red-line-catalog-p2-a-bee-runtime.d.ts +39 -0
  325. package/dist/services/audit/red-line-catalog-p2-a-bee-runtime.js +205 -0
  326. package/dist/services/audit/red-line-catalog-p2-a-lint-style.d.ts +52 -0
  327. package/dist/services/audit/red-line-catalog-p2-a-lint-style.js +205 -0
  328. package/dist/services/audit/red-line-catalog-p2-a.js +3 -374
  329. package/dist/services/audit/red-line-catalog-p2-b.js +26 -26
  330. package/dist/services/audit/red-line-catalog.js +26 -38
  331. package/dist/services/audit/red-lines-service.js +64 -49
  332. package/dist/services/audit/scanners/openspec-scanner.js +2 -2
  333. package/dist/services/audit/scanners/rules-tree-scanner.js +2 -2
  334. package/dist/services/audit/scanners/skills-tree-scanner.js +2 -2
  335. package/dist/services/audit/static-service.js +3 -3
  336. package/dist/services/audit-independent/index.d.ts +2 -2
  337. package/dist/services/audit-independent/index.js +2 -2
  338. package/dist/services/audit-independent/perf-audit-service.js +19 -8
  339. package/dist/services/audit-independent/security-audit-service.js +31 -16
  340. package/dist/services/autonomous-swarm/autonomous-swarm-service.js +75 -46
  341. package/dist/services/best-practice/output-formatter.js +7 -1
  342. package/dist/services/capability-audit-service/cross-check.js +11 -5
  343. package/dist/services/capability-audit-service/runner.js +15 -7
  344. package/dist/services/capability-baseline/store.js +16 -4
  345. package/dist/services/capability-baseline/types.js +15 -3
  346. package/dist/services/capability-baseline/validator.js +43 -7
  347. package/dist/services/capability-guard-runner/contracts/J02.js +36 -6
  348. package/dist/services/capability-guard-runner/contracts/J03.js +20 -11
  349. package/dist/services/capability-guard-runner/contracts/J04.js +24 -15
  350. package/dist/services/capability-guard-runner/contracts/J05.js +26 -10
  351. package/dist/services/capability-guard-runner/contracts/J07.js +8 -2
  352. package/dist/services/capability-guard-runner/contracts/J08.js +22 -5
  353. package/dist/services/capability-guard-runner/contracts/J10.js +6 -2
  354. package/dist/services/capability-guard-runner/contracts/J11.d.ts +5 -0
  355. package/dist/services/capability-guard-runner/contracts/J11.js +14 -2
  356. package/dist/services/capability-guard-runner/contracts/J12.js +12 -3
  357. package/dist/services/capability-guard-runner/diff.js +1 -5
  358. package/dist/services/changeset/changeset-check-service.js +1 -3
  359. package/dist/services/classify/classify-service.js +20 -8
  360. package/dist/services/classify/classify-types.js +22 -9
  361. package/dist/services/code/auto-compact-lifecycle.js +62 -39
  362. package/dist/services/code/auto-compact-modes.js +2 -2
  363. package/dist/services/code/auto-compact-orchestrator.js +14 -9
  364. package/dist/services/code/batch-heartbeat-poller.d.ts +10 -0
  365. package/dist/services/code/batch-heartbeat-poller.js +17 -1
  366. package/dist/services/code/compact-event-settle-types.d.ts +80 -0
  367. package/dist/services/code/compact-event-settle-types.js +20 -0
  368. package/dist/services/code/compact-event-settle.d.ts +3 -68
  369. package/dist/services/code/compact-event-settle.js +14 -10
  370. package/dist/services/code/dag-orchestrator.js +32 -26
  371. package/dist/services/code/job-shape-decision.js +3 -1
  372. package/dist/services/code/mode-gate-types.d.ts +57 -0
  373. package/dist/services/code/mode-gate-types.js +66 -0
  374. package/dist/services/code/mode-gate.d.ts +4 -58
  375. package/dist/services/code/mode-gate.js +25 -69
  376. package/dist/services/code/orchestrator-can-do-advisories.d.ts +30 -0
  377. package/dist/services/code/orchestrator-can-do-advisories.js +81 -0
  378. package/dist/services/code/orchestrator-can-do-probes.d.ts +30 -0
  379. package/dist/services/code/orchestrator-can-do-probes.js +77 -0
  380. package/dist/services/code/orchestrator-can-do.d.ts +11 -22
  381. package/dist/services/code/orchestrator-can-do.js +37 -137
  382. package/dist/services/code/post-compact-checkpoint.d.ts +28 -0
  383. package/dist/services/code/post-compact-checkpoint.js +57 -0
  384. package/dist/services/code/post-compact-detector.js +16 -48
  385. package/dist/services/code/step-08-gate.d.ts +4 -3
  386. package/dist/services/code/step-08-gate.js +21 -9
  387. package/dist/services/code/user-touchpoint-classifier.js +0 -7
  388. package/dist/services/code-review/ecc-bridge.d.ts +6 -6
  389. package/dist/services/code-review/ecc-bridge.js +23 -23
  390. package/dist/services/codegraph/codegraph-autorefresh.js +56 -39
  391. package/dist/services/codegraph/codegraph-config-repair-writer.js +4 -1
  392. package/dist/services/codegraph/codegraph-exclude-integrity.js +4 -1
  393. package/dist/services/codegraph/codegraph-exclude-repair.js +1 -2
  394. package/dist/services/codegraph/codegraph-index-integrity.js +1 -1
  395. package/dist/services/codegraph/codegraph-preflight-service.d.ts +3 -26
  396. package/dist/services/codegraph/codegraph-preflight-service.js +16 -37
  397. package/dist/services/codegraph/codegraph-preflight-structure.d.ts +32 -0
  398. package/dist/services/codegraph/codegraph-preflight-structure.js +33 -0
  399. package/dist/services/codegraph/codegraph-process-runner.js +12 -1
  400. package/dist/services/codegraph/codegraph-service.js +9 -1
  401. package/dist/services/comments/citation-rules.d.ts +154 -0
  402. package/dist/services/comments/citation-rules.js +241 -0
  403. package/dist/services/comments/comment-audit.d.ts +57 -0
  404. package/dist/services/comments/comment-audit.js +100 -0
  405. package/dist/services/comments/comment-citations.d.ts +60 -0
  406. package/dist/services/comments/comment-citations.js +186 -0
  407. package/dist/services/comments/comment-hygiene.d.ts +79 -0
  408. package/dist/services/comments/comment-hygiene.js +133 -0
  409. package/dist/services/comments/comment-prune.d.ts +88 -0
  410. package/dist/services/comments/comment-prune.js +148 -0
  411. package/dist/services/comments/prune-apply.d.ts +60 -0
  412. package/dist/services/comments/prune-apply.js +150 -0
  413. package/dist/services/comments/repo-path-probe.d.ts +43 -0
  414. package/dist/services/comments/repo-path-probe.js +78 -0
  415. package/dist/services/compact/request-transition-hook.js +2 -1
  416. package/dist/services/compact/suggest-service.d.ts +3 -61
  417. package/dist/services/compact/suggest-service.js +9 -12
  418. package/dist/services/compact/suggest-types.d.ts +76 -0
  419. package/dist/services/compact/suggest-types.js +10 -0
  420. package/dist/services/compact-history/compact-history-service.js +2 -2
  421. package/dist/services/compact-statusline/compact-lifecycle-store.d.ts +2 -32
  422. package/dist/services/compact-statusline/compact-lifecycle-store.js +7 -12
  423. package/dist/services/compact-statusline/compact-lifecycle-types.d.ts +32 -0
  424. package/dist/services/compact-statusline/compact-lifecycle-types.js +8 -0
  425. package/dist/services/compact-statusline/compact-statusline-cell-table.d.ts +42 -0
  426. package/dist/services/compact-statusline/compact-statusline-cell-table.js +63 -0
  427. package/dist/services/compact-statusline/compact-statusline-service.d.ts +4 -21
  428. package/dist/services/compact-statusline/compact-statusline-service.js +9 -101
  429. package/dist/services/compact-statusline/compact-statusline-state.d.ts +4 -0
  430. package/dist/services/compact-statusline/compact-statusline-state.js +50 -0
  431. package/dist/services/config/config-migration.js +2 -2
  432. package/dist/services/config/config-restore.js +1 -1
  433. package/dist/services/config/config-rollback.js +1 -1
  434. package/dist/services/config/config-safety.js +28 -10
  435. package/dist/services/config/config-service.js +114 -31
  436. package/dist/services/config/model-routing.js +5 -2
  437. package/dist/services/config/proxy-service.js +6 -1
  438. package/dist/services/config/workspace-state-service.js +17 -5
  439. package/dist/services/context/auto-compact-dispatcher-input.d.ts +38 -0
  440. package/dist/services/context/auto-compact-dispatcher-input.js +9 -0
  441. package/dist/services/context/auto-compact-dispatcher.d.ts +2 -30
  442. package/dist/services/context/auto-compact-reader-input.d.ts +30 -0
  443. package/dist/services/context/auto-compact-reader-input.js +8 -0
  444. package/dist/services/context/auto-compact-reader.d.ts +2 -24
  445. package/dist/services/context/auto-compact-reader.js +4 -1
  446. package/dist/services/context/auto-compact-thresholds.d.ts +54 -0
  447. package/dist/services/context/auto-compact-thresholds.js +19 -0
  448. package/dist/services/context/auto-compact-types.d.ts +2 -46
  449. package/dist/services/context/auto-compact-types.js +1 -11
  450. package/dist/services/context/build-dispatch-system-prompt.js +2 -2
  451. package/dist/services/context/collector.js +8 -10
  452. package/dist/services/context/context-audit-hint.js +7 -5
  453. package/dist/services/context/context-audit-keys.d.ts +15 -0
  454. package/dist/services/context/context-audit-keys.js +77 -0
  455. package/dist/services/context/context-audit-limits.d.ts +20 -0
  456. package/dist/services/context/context-audit-limits.js +31 -0
  457. package/dist/services/context/context-audit-scan.d.ts +19 -0
  458. package/dist/services/context/context-audit-scan.js +246 -0
  459. package/dist/services/context/context-audit-types.d.ts +65 -0
  460. package/dist/services/context/context-audit-types.js +10 -0
  461. package/dist/services/context/context-audit.d.ts +13 -59
  462. package/dist/services/context/context-audit.js +38 -254
  463. package/dist/services/context/context-builder.js +4 -4
  464. package/dist/services/context/context-schema.d.ts +1 -1
  465. package/dist/services/context/context-schema.js +13 -13
  466. package/dist/services/context/doc-retriever.js +2 -2
  467. package/dist/services/context/harness-context-witness.js +43 -24
  468. package/dist/services/context/harness-window-config.js +27 -7
  469. package/dist/services/context/ide-detect.js +2 -1
  470. package/dist/services/context/index.d.ts +1 -1
  471. package/dist/services/context/memory-index-reader.js +3 -9
  472. package/dist/services/context/memory-preflight-config.js +3 -5
  473. package/dist/services/context/memory-preflight-service.d.ts +2 -20
  474. package/dist/services/context/memory-preflight-service.js +37 -68
  475. package/dist/services/context/memory-preflight-support.d.ts +48 -0
  476. package/dist/services/context/memory-preflight-support.js +56 -0
  477. package/dist/services/context/post-compact-reinjection.js +3 -3
  478. package/dist/services/context/renderer.js +7 -3
  479. package/dist/services/context/spillover-store.js +3 -1
  480. package/dist/services/context/summary-view.js +1 -1
  481. package/dist/services/context/threshold.js +2 -2
  482. package/dist/services/context/tokenizer.js +3 -3
  483. package/dist/services/crystallization/crystallization-brief-schema.d.ts +80 -0
  484. package/dist/services/crystallization/crystallization-brief-schema.js +159 -0
  485. package/dist/services/crystallization/crystallization-service.d.ts +7 -7
  486. package/dist/services/crystallization/crystallization-service.js +56 -55
  487. package/dist/services/crystallization/crystallization-store.d.ts +2 -2
  488. package/dist/services/crystallization/crystallization-store.js +37 -20
  489. package/dist/services/crystallization/crystallization-types.d.ts +4 -56
  490. package/dist/services/crystallization/crystallization-types.js +31 -184
  491. package/dist/services/crystallization/evidence-brief-builder.d.ts +3 -3
  492. package/dist/services/crystallization/evidence-brief-builder.js +32 -38
  493. package/dist/services/crystallization/index.d.ts +4 -4
  494. package/dist/services/crystallization/index.js +4 -4
  495. package/dist/services/dashboard/project-dashboard-service.js +7 -1
  496. package/dist/services/dispatch/await-batch-helpers.d.ts +55 -0
  497. package/dist/services/dispatch/await-batch-helpers.js +206 -0
  498. package/dist/services/dispatch/await-batch.d.ts +50 -7
  499. package/dist/services/dispatch/await-batch.js +97 -194
  500. package/dist/services/dispatch/batch-counter.js +2 -1
  501. package/dist/services/dispatch/conflict-replay.js +2 -2
  502. package/dist/services/dispatch/contract-store.js +5 -2
  503. package/dist/services/dispatch/dispatch-record-input-types.d.ts +81 -0
  504. package/dist/services/dispatch/dispatch-record-input-types.js +1 -0
  505. package/dist/services/dispatch/dispatch-record-types.d.ts +6 -73
  506. package/dist/services/dispatch/dispatch-record-upgrade-fields.d.ts +72 -0
  507. package/dist/services/dispatch/dispatch-record-upgrade-fields.js +242 -0
  508. package/dist/services/dispatch/dispatch-record-upgrade-guards.d.ts +15 -0
  509. package/dist/services/dispatch/dispatch-record-upgrade-guards.js +55 -0
  510. package/dist/services/dispatch/dispatch-record-upgrade.d.ts +2 -4
  511. package/dist/services/dispatch/dispatch-record-upgrade.js +21 -213
  512. package/dist/services/dispatch/dispatch-record-writer.js +54 -26
  513. package/dist/services/dispatch/dispatch-sub-agent.js +7 -2
  514. package/dist/services/dispatch/e2e-fixtures.js +1 -1
  515. package/dist/services/dispatch/isolation-lease.js +39 -17
  516. package/dist/services/dispatch/merge-back-runner.js +51 -11
  517. package/dist/services/dispatch/service-shutdown.js +4 -1
  518. package/dist/services/dispatch/slice-dag-types.d.ts +116 -0
  519. package/dist/services/dispatch/slice-dag-types.js +41 -0
  520. package/dist/services/dispatch/slice-dag.d.ts +3 -109
  521. package/dist/services/dispatch/slice-dag.js +13 -36
  522. package/dist/services/dispatch/sub-agent-batch-await.d.ts +47 -0
  523. package/dist/services/dispatch/sub-agent-batch-await.js +73 -0
  524. package/dist/services/dispatch/sub-agent-dispatcher-types.d.ts +122 -0
  525. package/dist/services/dispatch/sub-agent-dispatcher-types.js +12 -0
  526. package/dist/services/dispatch/sub-agent-dispatcher.d.ts +3 -145
  527. package/dist/services/dispatch/sub-agent-dispatcher.js +14 -70
  528. package/dist/services/dispatch/test-tool-detection.js +12 -1
  529. package/dist/services/doc/doc-generator.js +19 -4
  530. package/dist/services/doctor/doctor-service/checks/check-id-schema.js +16 -8
  531. package/dist/services/doctor/doctor-service/checks/codegraph-capability.d.ts +7 -2
  532. package/dist/services/doctor/doctor-service/checks/codegraph-capability.js +26 -8
  533. package/dist/services/doctor/doctor-service/checks/codegraph-exclude-integrity.js +16 -8
  534. package/dist/services/doctor/doctor-service/checks/codegraph-index-integrity.js +16 -8
  535. package/dist/services/doctor/doctor-service/checks/dist-source-version.js +18 -9
  536. package/dist/services/doctor/doctor-service/checks/ecc-hooks-schema-drift.js +20 -10
  537. package/dist/services/doctor/doctor-service/checks/gateguard-conflict.js +18 -9
  538. package/dist/services/doctor/doctor-service/checks/l3-memory-health.js +25 -11
  539. package/dist/services/doctor/doctor-service/checks/l3-orphan-sessions.js +12 -6
  540. package/dist/services/doctor/doctor-service/checks/multi-binary-drift.d.ts +7 -16
  541. package/dist/services/doctor/doctor-service/checks/multi-binary-drift.js +50 -70
  542. package/dist/services/doctor/doctor-service/checks/schema-validity.js +5 -1
  543. package/dist/services/doctor/doctor-service/checks/skill-presence.js +4 -2
  544. package/dist/services/doctor/doctor-service/checks/statusline-install.js +8 -4
  545. package/dist/services/doctor/doctor-service/checks/statusline-runtime.js +8 -4
  546. package/dist/services/doctor/doctor-service/checks/user-config.js +4 -2
  547. package/dist/services/doctor/doctor-service/checks/workspace-init.js +8 -4
  548. package/dist/services/doctor/doctor-service/checks/workspace-layout.js +19 -11
  549. package/dist/services/doctor/doctor-service/index.js +4 -2
  550. package/dist/services/doctor/doctor-service/multi-binary-drift-helpers.d.ts +40 -0
  551. package/dist/services/doctor/doctor-service/multi-binary-drift-helpers.js +49 -0
  552. package/dist/services/doctor/doctor-service/plugin-registry.js +1 -1
  553. package/dist/services/doctor/doctor-service/probe-types.d.ts +210 -0
  554. package/dist/services/doctor/doctor-service/probe-types.js +14 -0
  555. package/dist/services/doctor/doctor-service/types.d.ts +7 -197
  556. package/dist/services/doctor/index.d.ts +1 -1
  557. package/dist/services/doctor/index.js +1 -1
  558. package/dist/services/env/shell-probe.js +8 -2
  559. package/dist/services/evidence/evidence-body-builders.d.ts +23 -0
  560. package/dist/services/evidence/evidence-body-builders.js +197 -0
  561. package/dist/services/evidence/evidence-generator.js +6 -187
  562. package/dist/services/evolution/evolution-constraints.d.ts +43 -0
  563. package/dist/services/evolution/evolution-constraints.js +54 -0
  564. package/dist/services/evolution/evolution-evaluation-schema.d.ts +43 -0
  565. package/dist/services/evolution/evolution-evaluation-schema.js +43 -0
  566. package/dist/services/evolution/evolution-service.d.ts +6 -6
  567. package/dist/services/evolution/evolution-service.js +58 -58
  568. package/dist/services/evolution/evolution-store.d.ts +2 -2
  569. package/dist/services/evolution/evolution-store.js +37 -51
  570. package/dist/services/evolution/evolution-types.d.ts +2 -22
  571. package/dist/services/evolution/evolution-types.js +41 -101
  572. package/dist/services/evolution/independent-evaluator-runner.d.ts +3 -3
  573. package/dist/services/evolution/independent-evaluator-runner.js +20 -22
  574. package/dist/services/evolution/regression-skeptic-runner.d.ts +2 -2
  575. package/dist/services/evolution/regression-skeptic-runner.js +18 -18
  576. package/dist/services/feedback/feedback-promotion-service.js +48 -12
  577. package/dist/services/feedback/promotion-artifact-evidence.d.ts +2 -16
  578. package/dist/services/feedback/promotion-artifact-evidence.js +6 -83
  579. package/dist/services/feedback/promotion-artifact-json-evidence.d.ts +29 -0
  580. package/dist/services/feedback/promotion-artifact-json-evidence.js +39 -0
  581. package/dist/services/feedback/promotion-source-comments.d.ts +47 -0
  582. package/dist/services/feedback/promotion-source-comments.js +61 -0
  583. package/dist/services/final-review/final-review-contract.d.ts +26 -0
  584. package/dist/services/final-review/final-review-contract.js +14 -0
  585. package/dist/services/final-review/final-review-delivery.d.ts +63 -0
  586. package/dist/services/final-review/final-review-delivery.js +124 -0
  587. package/dist/services/final-review/final-review-evidence-budget.d.ts +125 -0
  588. package/dist/services/final-review/final-review-evidence-budget.js +218 -0
  589. package/dist/services/final-review/final-review-evidence-collect.d.ts +4 -0
  590. package/dist/services/final-review/final-review-evidence-collect.js +230 -0
  591. package/dist/services/final-review/final-review-evidence-sources.d.ts +138 -0
  592. package/dist/services/final-review/final-review-evidence-sources.js +139 -0
  593. package/dist/services/final-review/final-review-fifth-dim.d.ts +8 -0
  594. package/dist/services/final-review/final-review-fifth-dim.js +20 -0
  595. package/dist/services/final-review/final-review-gates.d.ts +119 -0
  596. package/dist/services/final-review/final-review-gates.js +214 -0
  597. package/dist/services/final-review/final-review-output-budget.d.ts +88 -0
  598. package/dist/services/final-review/final-review-output-budget.js +161 -0
  599. package/dist/services/final-review/final-review-prompt.d.ts +35 -0
  600. package/dist/services/final-review/final-review-prompt.js +112 -0
  601. package/dist/services/final-review/final-review-reviewer.d.ts +57 -0
  602. package/dist/services/final-review/final-review-reviewer.js +95 -0
  603. package/dist/services/final-review/final-review-runner.d.ts +3 -0
  604. package/dist/services/final-review/final-review-runner.js +158 -0
  605. package/dist/services/final-review/final-review-service.d.ts +119 -373
  606. package/dist/services/final-review/final-review-service.js +48 -1380
  607. package/dist/services/final-review/final-review-verdicts.d.ts +60 -0
  608. package/dist/services/final-review/final-review-verdicts.js +91 -0
  609. package/dist/services/final-review/index.d.ts +3 -3
  610. package/dist/services/final-review/index.js +2 -2
  611. package/dist/services/final-review/pre-post-diff.js +32 -29
  612. package/dist/services/fixture/fixture-capture-service.js +14 -6
  613. package/dist/services/fresh-context/trigger-scan.js +13 -2
  614. package/dist/services/fuzzy-matching/fuzzy-match-service.js +1 -1
  615. package/dist/services/fuzzy-matching/fzf-pick-service.js +6 -1
  616. package/dist/services/hooks/pre-tool-code-gate.js +2 -2
  617. package/dist/services/hooks/presence-marker-detector.js +12 -2
  618. package/dist/services/hooks/worktree-authorization-gate.js +21 -7
  619. package/dist/services/ide/adapters/claude-code-adapter.js +30 -17
  620. package/dist/services/ide/adapters/codex-adapter.js +3 -5
  621. package/dist/services/ide/adapters/cursor-adapter.js +3 -5
  622. package/dist/services/ide/adapters/hermes-adapter.js +2 -4
  623. package/dist/services/ide/adapters/openclaw-adapter.js +2 -4
  624. package/dist/services/ide/adapters/qoder-adapter.js +2 -4
  625. package/dist/services/ide/adapters/tongyi-lingma-adapter.js +1 -1
  626. package/dist/services/ide/adapters/trae-adapter.js +3 -5
  627. package/dist/services/ide/adapters/zcode-adapter.js +8 -7
  628. package/dist/services/ide/current-model-detector.js +2 -1
  629. package/dist/services/ide/ide-compact-types.d.ts +153 -0
  630. package/dist/services/ide/ide-compact-types.js +1 -0
  631. package/dist/services/ide/ide-registry.js +1 -1
  632. package/dist/services/ide/ide-types.d.ts +7 -145
  633. package/dist/services/ide/resource-profile.js +1 -1
  634. package/dist/services/ide/shared/atomic-json.js +2 -1
  635. package/dist/services/impact/impact-scan-service.js +12 -5
  636. package/dist/services/job/job-commit-verification.d.ts +73 -0
  637. package/dist/services/job/job-commit-verification.js +72 -0
  638. package/dist/services/job/job-orchestrator.d.ts +42 -0
  639. package/dist/services/job/job-orchestrator.js +110 -10
  640. package/dist/services/job/job-progress-store.d.ts +75 -5
  641. package/dist/services/job/job-progress-store.js +83 -6
  642. package/dist/services/job/job-rotation.d.ts +1 -1
  643. package/dist/services/job/job-rotation.js +5 -1
  644. package/dist/services/job/job-state-store.js +2 -2
  645. package/dist/services/job/job-types.js +49 -20
  646. package/dist/services/job/subagent-job-wrapper.d.ts +1 -1
  647. package/dist/services/job/subagent-job-wrapper.js +5 -1
  648. package/dist/services/job-snapshot/snapshot.js +2 -2
  649. package/dist/services/karpathy-cost/karpathy-cost-check-service.js +23 -13
  650. package/dist/services/legacy/legacy-detector.js +51 -5
  651. package/dist/services/lint/detect-eslint.js +10 -4
  652. package/dist/services/lint/detect-ocr-18.js +11 -3
  653. package/dist/services/lint/eslint-runner-support.d.ts +22 -0
  654. package/dist/services/lint/eslint-runner-support.js +185 -0
  655. package/dist/services/lint/eslint-runner-types.d.ts +69 -0
  656. package/dist/services/lint/eslint-runner-types.js +11 -0
  657. package/dist/services/lint/eslint-runner.d.ts +4 -56
  658. package/dist/services/lint/eslint-runner.js +24 -178
  659. package/dist/services/lint/npx-resolver.js +1 -3
  660. package/dist/services/lint/ocr-18-acquire.js +15 -4
  661. package/dist/services/lint/ocr-multilang-adapter.js +4 -5
  662. package/dist/services/llm/anthropic-runner.js +4 -1
  663. package/dist/services/log/log-commands-service.js +2 -6
  664. package/dist/services/log/logger.js +15 -12
  665. package/dist/services/log/retention.d.ts +0 -16
  666. package/dist/services/log/retention.js +2 -18
  667. package/dist/services/loop/evaluator-dispatcher.js +78 -42
  668. package/dist/services/loop/loop-bee-relation-service.d.ts +4 -4
  669. package/dist/services/loop/loop-bee-relation-service.js +36 -40
  670. package/dist/services/loop/loop-bee-relation-store.d.ts +3 -3
  671. package/dist/services/loop/loop-bee-relation-store.js +9 -11
  672. package/dist/services/loop/loop-bee-relation-types.d.ts +1 -1
  673. package/dist/services/loop/loop-bee-relation-types.js +14 -25
  674. package/dist/services/loop/loop-release-service.d.ts +2 -2
  675. package/dist/services/loop/loop-release-service.js +3 -3
  676. package/dist/services/loop/loop-release-store.d.ts +2 -2
  677. package/dist/services/loop/loop-release-store.js +4 -6
  678. package/dist/services/loop/loop-release-types.d.ts +1 -1
  679. package/dist/services/loop/loop-release-types.js +21 -31
  680. package/dist/services/loop/monotonic-guard-types.d.ts +51 -0
  681. package/dist/services/loop/monotonic-guard-types.js +9 -0
  682. package/dist/services/loop/monotonic-guard.d.ts +2 -43
  683. package/dist/services/loop/monotonic-runner-types.d.ts +63 -0
  684. package/dist/services/loop/monotonic-runner-types.js +17 -0
  685. package/dist/services/loop/monotonic-runner.d.ts +3 -34
  686. package/dist/services/loop/monotonic-runner.js +10 -20
  687. package/dist/services/loop/run-driver.js +16 -8
  688. package/dist/services/loop/spec-service.d.ts +0 -5
  689. package/dist/services/loop/spec-service.js +49 -9
  690. package/dist/services/memory/llm-reranker-core.d.ts +108 -0
  691. package/dist/services/memory/llm-reranker-core.js +105 -0
  692. package/dist/services/memory/llm-reranker.d.ts +3 -94
  693. package/dist/services/memory/llm-reranker.js +13 -102
  694. package/dist/services/memory/memory-ingest-service.d.ts +1 -22
  695. package/dist/services/memory/memory-ingest-service.js +29 -76
  696. package/dist/services/memory/memory-ingest-support.d.ts +23 -0
  697. package/dist/services/memory/memory-ingest-support.js +81 -0
  698. package/dist/services/memory/memory-rotate-service.js +41 -8
  699. package/dist/services/memory/memory-search-service.js +8 -4
  700. package/dist/services/memory/project-context-service.js +26 -5
  701. package/dist/services/memory/project-memory-service/index/kind-dispatch.d.ts +2 -7
  702. package/dist/services/memory/project-memory-service/index/kind-dispatch.js +17 -136
  703. package/dist/services/memory/project-memory-service/index/project-memory-plan-exec.d.ts +7 -0
  704. package/dist/services/memory/project-memory-service/index/project-memory-plan-exec.js +150 -0
  705. package/dist/services/memory/project-memory-service/index/ranking.js +6 -3
  706. package/dist/services/memory/project-memory-service/index/reindex.js +14 -5
  707. package/dist/services/memory/project-memory-service/index.d.ts +1 -1
  708. package/dist/services/memory/project-memory-service/index.js +1 -1
  709. package/dist/services/memory/project-memory-service/memory-kinds.d.ts +31 -0
  710. package/dist/services/memory/project-memory-service/memory-kinds.js +87 -0
  711. package/dist/services/memory/project-memory-service/parsers/frontmatter-parse.d.ts +24 -0
  712. package/dist/services/memory/project-memory-service/parsers/frontmatter-parse.js +104 -0
  713. package/dist/services/memory/project-memory-service/parsers/frontmatter.d.ts +2 -24
  714. package/dist/services/memory/project-memory-service/parsers/frontmatter.js +28 -79
  715. package/dist/services/memory/project-memory-service/parsers/markdown-pure.js +15 -3
  716. package/dist/services/memory/project-memory-service/store/atomic-write.d.ts +19 -7
  717. package/dist/services/memory/project-memory-service/store/atomic-write.js +144 -38
  718. package/dist/services/memory/project-memory-service/store/paths.js +2 -1
  719. package/dist/services/memory/project-memory-service/types.d.ts +3 -31
  720. package/dist/services/memory/project-memory-service/types.js +1 -76
  721. package/dist/services/migrate-skill-name/migrate.js +1 -1
  722. package/dist/services/migrate-skill-name/schema.js +1 -1
  723. package/dist/services/mode/mode-enforcement.js +4 -2
  724. package/dist/services/mode/mode-status-service.d.ts +27 -9
  725. package/dist/services/mode/mode-status-service.js +64 -12
  726. package/dist/services/observability/aggregation-helpers.d.ts +22 -0
  727. package/dist/services/observability/aggregation-helpers.js +65 -0
  728. package/dist/services/observability/aggregation-types.d.ts +66 -0
  729. package/dist/services/observability/aggregation-types.js +34 -0
  730. package/dist/services/observability/aggregation.d.ts +5 -53
  731. package/dist/services/observability/aggregation.js +17 -80
  732. package/dist/services/observability/jsonl-store.js +2 -1
  733. package/dist/services/observability/observability-schema.d.ts +71 -0
  734. package/dist/services/observability/observability-schema.js +64 -0
  735. package/dist/services/observability/observability-service.d.ts +3 -56
  736. package/dist/services/observability/observability-service.js +9 -49
  737. package/dist/services/openspec/coverage-evidence-reader.js +18 -11
  738. package/dist/services/openspec/openspec-archive-service.js +31 -24
  739. package/dist/services/openspec/openspec-init-service.js +8 -2
  740. package/dist/services/openspec/openspec-propose-from-doctor-service.js +1 -1
  741. package/dist/services/openspec/openspec-scan-service.js +4 -1
  742. package/dist/services/openspec/openspec-validate-service.js +26 -5
  743. package/dist/services/perf/perf-baseline-service.js +2 -6
  744. package/dist/services/polyrepo/polyrepo-dispatcher.js +2 -1
  745. package/dist/services/polyrepo/polyrepo-scanner.js +4 -1
  746. package/dist/services/prd/handoff-frontmatter-shape.d.ts +42 -0
  747. package/dist/services/prd/handoff-frontmatter-shape.js +67 -0
  748. package/dist/services/prd/handoff-frontmatter.js +62 -1
  749. package/dist/services/prd/handoff-gate-evidence.js +14 -10
  750. package/dist/services/prd/handoff-path-resolution.d.ts +37 -0
  751. package/dist/services/prd/handoff-path-resolution.js +101 -0
  752. package/dist/services/prd/handoff-service.d.ts +12 -38
  753. package/dist/services/prd/handoff-service.js +25 -147
  754. package/dist/services/prd/handoff-types.d.ts +33 -1
  755. package/dist/services/prd/prd-blocks-checker.js +28 -8
  756. package/dist/services/prd/project-scan-bootstrap-service.js +1 -5
  757. package/dist/services/prd/project-scan-reader.js +1 -4
  758. package/dist/services/prd/project-scan-sediment.js +1 -4
  759. package/dist/services/preferences/preferences-service.js +6 -8
  760. package/dist/services/preferences/preferences-types.js +4 -4
  761. package/dist/services/qa/bdd-test-style-contract.d.ts +41 -0
  762. package/dist/services/qa/bdd-test-style-contract.js +37 -0
  763. package/dist/services/qa/bdd-test-style-verifier.d.ts +2 -24
  764. package/dist/services/qa/bdd-test-style-verifier.js +5 -31
  765. package/dist/services/qa/browser-event-logger.js +2 -1
  766. package/dist/services/qa/qa-business-review-state.js +20 -5
  767. package/dist/services/qa/screenshot-archive-service.js +1 -3
  768. package/dist/services/rd/ast-gate.js +2 -2
  769. package/dist/services/rd/impl.js +1 -1
  770. package/dist/services/rd/rd-service.js +117 -43
  771. package/dist/services/rd/reviewer-dispatch-policy.js +4 -7
  772. package/dist/services/rd/standards-diagnostic.js +4 -1
  773. package/dist/services/rd/strategy.js +10 -3
  774. package/dist/services/rd/tactical-stage.js +2 -2
  775. package/dist/services/rd/types.js +9 -7
  776. package/dist/services/rd-swarm/rd-swarm-service.d.ts +2 -45
  777. package/dist/services/rd-swarm/rd-swarm-service.js +140 -21
  778. package/dist/services/rd-swarm/rd-swarm-types.d.ts +54 -0
  779. package/dist/services/rd-swarm/rd-swarm-types.js +10 -0
  780. package/dist/services/recommendations/capability-map-service.js +10 -2
  781. package/dist/services/recommendations/capability-seed-items.js +81 -14
  782. package/dist/services/recommendations/capability-seed-mappings.js +420 -48
  783. package/dist/services/recommendations/capability-seed-sources-mcp-server.d.ts +9 -0
  784. package/dist/services/recommendations/capability-seed-sources-mcp-server.js +233 -0
  785. package/dist/services/recommendations/capability-seed-sources.js +127 -32
  786. package/dist/services/recommendations/installed-capability-detector.d.ts +5 -5
  787. package/dist/services/recommendations/installed-capability-detector.js +11 -10
  788. package/dist/services/release/release-state.d.ts +2 -2
  789. package/dist/services/release/release-state.js +44 -15
  790. package/dist/services/release/version-precheck-layer-changeset.d.ts +2 -0
  791. package/dist/services/release/version-precheck-layer-changeset.js +43 -0
  792. package/dist/services/release/version-precheck-service.d.ts +11 -36
  793. package/dist/services/release/version-precheck-service.js +20 -104
  794. package/dist/services/release/version-precheck-support.d.ts +53 -0
  795. package/dist/services/release/version-precheck-support.js +64 -0
  796. package/dist/services/retrospective/retrospective-index.js +17 -3
  797. package/dist/services/retrospective/retrospective-search-service.js +6 -2
  798. package/dist/services/retrospective/retrospective-show.js +4 -1
  799. package/dist/services/reviewer/model-family.js +7 -1
  800. package/dist/services/reviewer/providers/anthropic.d.ts +5 -0
  801. package/dist/services/reviewer/providers/anthropic.js +10 -1
  802. package/dist/services/reviewer/providers/openai.d.ts +5 -0
  803. package/dist/services/reviewer/providers/openai.js +10 -1
  804. package/dist/services/reviewer/reviewer-config.js +4 -2
  805. package/dist/services/reviewer/reviewer-service.d.ts +2 -36
  806. package/dist/services/reviewer/reviewer-service.js +2 -1
  807. package/dist/services/reviewer/reviewer-types.d.ts +43 -0
  808. package/dist/services/reviewer/reviewer-types.js +1 -0
  809. package/dist/services/role/role-registry.js +9 -1
  810. package/dist/services/runtime/runtime-detector.js +4 -1
  811. package/dist/services/runtime/vendors/claude-code.js +14 -6
  812. package/dist/services/runtime/vendors/codex.js +11 -3
  813. package/dist/services/runtime/vendors/copilot.js +11 -3
  814. package/dist/services/sc/sc-service.js +28 -15
  815. package/dist/services/scan/acceptance-coverage-service.js +4 -1
  816. package/dist/services/scan/api-diff-openapi-schema-read.d.ts +67 -0
  817. package/dist/services/scan/api-diff-openapi-schema-read.js +154 -0
  818. package/dist/services/scan/api-diff-openapi.d.ts +16 -2
  819. package/dist/services/scan/api-diff-openapi.js +19 -123
  820. package/dist/services/scan/api-diff-recorded.js +16 -3
  821. package/dist/services/scan/api-diff-service.js +49 -16
  822. package/dist/services/scan/api-diff-types.js +12 -3
  823. package/dist/services/scan/api-surface-helpers.d.ts +13 -0
  824. package/dist/services/scan/api-surface-helpers.js +31 -0
  825. package/dist/services/scan/api-surface-service.d.ts +2 -45
  826. package/dist/services/scan/api-surface-service.js +15 -26
  827. package/dist/services/scan/api-surface-types.d.ts +54 -0
  828. package/dist/services/scan/api-surface-types.js +10 -0
  829. package/dist/services/scan/archetype-detection.d.ts +74 -0
  830. package/dist/services/scan/archetype-detection.js +315 -0
  831. package/dist/services/scan/archetype-service.js +58 -133
  832. package/dist/services/scan/diff-scope-service.js +35 -15
  833. package/dist/services/scan/existing-system-service.js +16 -99
  834. package/dist/services/scan/existing-system-visual-tokens.d.ts +20 -0
  835. package/dist/services/scan/existing-system-visual-tokens.js +123 -0
  836. package/dist/services/scan/file-size-policy.d.ts +86 -0
  837. package/dist/services/scan/file-size-policy.js +184 -0
  838. package/dist/services/scan/file-size-scan.d.ts +30 -3
  839. package/dist/services/scan/file-size-scan.js +47 -9
  840. package/dist/services/scan/karpathy-service.js +6 -1
  841. package/dist/services/scan/orphan-service.js +86 -20
  842. package/dist/services/scan/scan-types.d.ts +9 -0
  843. package/dist/services/scan/type-sanity-service.js +104 -10
  844. package/dist/services/sediment/dispose-confirm.d.ts +2 -2
  845. package/dist/services/sediment/dispose-confirm.js +2 -2
  846. package/dist/services/sediment/json-schema.d.ts +1 -1
  847. package/dist/services/sediment/json-schema.js +25 -13
  848. package/dist/services/sediment/manifest-lint.d.ts +1 -12
  849. package/dist/services/sediment/manifest-lint.js +1 -7
  850. package/dist/services/sediment/pool-paths.js +13 -9
  851. package/dist/services/sediment/pool-read.d.ts +1 -1
  852. package/dist/services/sediment/pool-read.js +42 -18
  853. package/dist/services/sediment/pool-rebuild-index.d.ts +1 -1
  854. package/dist/services/sediment/pool-rebuild-index.js +5 -5
  855. package/dist/services/sediment/pool-write.d.ts +1 -1
  856. package/dist/services/sediment/pool-write.js +7 -7
  857. package/dist/services/sediment/promotion-gate.d.ts +1 -1
  858. package/dist/services/sediment/promotion-gate.js +9 -9
  859. package/dist/services/sediment/types.d.ts +8 -8
  860. package/dist/services/session/binding-status-service.js +14 -4
  861. package/dist/services/session/caller-binding-service.js +2 -1
  862. package/dist/services/session/getSessionDir.js +4 -1
  863. package/dist/services/session/index.d.ts +1 -1
  864. package/dist/services/session/index.js +1 -1
  865. package/dist/services/session/resolve-caller-id.js +7 -5
  866. package/dist/services/session/session-binding-bridge.js +26 -25
  867. package/dist/services/session/session-checkpoint-service.js +1 -1
  868. package/dist/services/session/session-file-schema.d.ts +70 -0
  869. package/dist/services/session/session-file-schema.js +68 -0
  870. package/dist/services/session/session-manager.d.ts +6 -6
  871. package/dist/services/session/session-manager.js +30 -29
  872. package/dist/services/session/session-resume-service.js +2 -1
  873. package/dist/services/share/bundle-format-constants.d.ts +85 -0
  874. package/dist/services/share/bundle-format-constants.js +100 -0
  875. package/dist/services/share/bundle-reader.d.ts +3 -3
  876. package/dist/services/share/bundle-reader.js +75 -68
  877. package/dist/services/share/bundle-types.d.ts +3 -70
  878. package/dist/services/share/bundle-types.js +38 -107
  879. package/dist/services/share/bundle-writer.d.ts +3 -3
  880. package/dist/services/share/bundle-writer.js +101 -91
  881. package/dist/services/share/run-state-contract.d.ts +1 -1
  882. package/dist/services/share/run-state-contract.js +7 -13
  883. package/dist/services/signal/cancel-handler.js +2 -1
  884. package/dist/services/skill/resume-detector.js +6 -4
  885. package/dist/services/skill/skill-scheduler.js +3 -1
  886. package/dist/services/skill/skill-search-service.js +4 -4
  887. package/dist/services/skillhub/release-diff.d.ts +2 -2
  888. package/dist/services/skillhub/release-diff.js +6 -10
  889. package/dist/services/skillhub/release-export.d.ts +2 -2
  890. package/dist/services/skillhub/release-export.js +15 -17
  891. package/dist/services/skillhub/release-gc-blobs.d.ts +2 -2
  892. package/dist/services/skillhub/release-gc-blobs.js +4 -4
  893. package/dist/services/skillhub/release-import.d.ts +2 -2
  894. package/dist/services/skillhub/release-import.js +13 -12
  895. package/dist/services/skillhub/release-retain.d.ts +3 -3
  896. package/dist/services/skillhub/release-retain.js +22 -22
  897. package/dist/services/skillhub/sqlite-store.d.ts +1 -1
  898. package/dist/services/skillhub/sqlite-store.js +12 -11
  899. package/dist/services/skillhub/tar-runtime.js +15 -15
  900. package/dist/services/skillhub/types.d.ts +4 -4
  901. package/dist/services/skills/hooks-codegate-superpowers.js +16 -7
  902. package/dist/services/skills/hooks-settings-service.js +61 -19
  903. package/dist/services/skills/presence-lease-service.js +26 -16
  904. package/dist/services/skills/presence-lease-types.d.ts +1 -1
  905. package/dist/services/skills/presence-lease-types.js +1 -1
  906. package/dist/services/skills/skill-conformance-service.js +40 -8
  907. package/dist/services/skills/skill-presence-service.js +16 -14
  908. package/dist/services/skills/skill-runbook-service.js +2 -1
  909. package/dist/services/skills/skill-statusline-model.d.ts +128 -0
  910. package/dist/services/skills/skill-statusline-model.js +163 -0
  911. package/dist/services/skills/skill-statusline-renderer.js +4 -3
  912. package/dist/services/skills/skill-statusline-service.d.ts +3 -100
  913. package/dist/services/skills/skill-statusline-service.js +56 -163
  914. package/dist/services/skills/statusline-palette.js +11 -6
  915. package/dist/services/skills/statusline-settings-service.js +2 -1
  916. package/dist/services/skills/sync-service-support.d.ts +65 -0
  917. package/dist/services/skills/sync-service-support.js +50 -0
  918. package/dist/services/skills/sync-service.d.ts +3 -66
  919. package/dist/services/skills/sync-service.js +15 -53
  920. package/dist/services/slice/calibration-store.js +8 -2
  921. package/dist/services/slice/cross-pass-edge-merger.d.ts +3 -28
  922. package/dist/services/slice/cross-pass-edge-merger.js +13 -63
  923. package/dist/services/slice/cross-pass-edge-static-scan-support.d.ts +69 -0
  924. package/dist/services/slice/cross-pass-edge-static-scan-support.js +74 -0
  925. package/dist/services/slice/granularity-decider.js +2 -2
  926. package/dist/services/slice/slice-archive-service.js +8 -3
  927. package/dist/services/slice/slice-check-service.js +19 -8
  928. package/dist/services/slice/slice-decompose-runners.js +61 -23
  929. package/dist/services/slice/slice-decompose-service.js +4 -4
  930. package/dist/services/slice/slice-review-state.js +8 -2
  931. package/dist/services/smoke/smoke-paths-state.js +9 -2
  932. package/dist/services/sop/gate-enforce-service.js +9 -2
  933. package/dist/services/sop/sop-advance-service.js +14 -2
  934. package/dist/services/sop/sop-check-service.js +16 -4
  935. package/dist/services/sop/sop-paths.js +3 -1
  936. package/dist/services/sop/sop-registry-service.js +5 -1
  937. package/dist/services/sop/sop-service.js +29 -7
  938. package/dist/services/sop/sop-types.js +5 -1
  939. package/dist/services/standards/ide-aware-standards-service.js +2 -2
  940. package/dist/services/standards/loop-engineering-lint.js +12 -5
  941. package/dist/services/standards/loop-engineering-readiness-lint.js +5 -5
  942. package/dist/services/standards/migrate-claude-rules-service.js +9 -7
  943. package/dist/services/standards/missing-standards-detector.js +1 -3
  944. package/dist/services/standards/project-context-support.d.ts +50 -0
  945. package/dist/services/standards/project-context-support.js +244 -0
  946. package/dist/services/standards/project-context-types.d.ts +30 -0
  947. package/dist/services/standards/project-context-types.js +11 -0
  948. package/dist/services/standards/project-context.d.ts +10 -22
  949. package/dist/services/standards/project-context.js +27 -214
  950. package/dist/services/standards/project-standards-service.js +43 -12
  951. package/dist/services/standards/standards-render-common.d.ts +15 -0
  952. package/dist/services/standards/standards-render-common.js +49 -0
  953. package/dist/services/standards/standards-render.d.ts +1 -2
  954. package/dist/services/standards/standards-render.js +31 -58
  955. package/dist/services/standards/ui-library-dispatch-block.js +1 -1
  956. package/dist/services/tech/tech-change-id-service.js +7 -7
  957. package/dist/services/tech/tech-service.js +73 -26
  958. package/dist/services/test-cache/test-cache-service.js +8 -3
  959. package/dist/services/verdict/envelope-parsers.d.ts +84 -0
  960. package/dist/services/verdict/envelope-parsers.js +146 -0
  961. package/dist/services/verdict/envelopes.d.ts +50 -60
  962. package/dist/services/verdict/envelopes.js +18 -156
  963. package/dist/services/verdict/verdict-aggregator.js +27 -3
  964. package/dist/services/vm/vm-lease.js +15 -3
  965. package/dist/services/web/aria-node.d.ts +27 -0
  966. package/dist/services/web/aria-node.js +1 -0
  967. package/dist/services/web/browser-acquire.js +3 -1
  968. package/dist/services/web/browser-cache-probe.d.ts +18 -0
  969. package/dist/services/web/browser-cache-probe.js +110 -0
  970. package/dist/services/web/browser-session-manager.js +6 -2
  971. package/dist/services/web/daemon-registry.js +4 -1
  972. package/dist/services/web/playwright-loader.d.ts +2 -70
  973. package/dist/services/web/playwright-types.d.ts +75 -0
  974. package/dist/services/web/playwright-types.js +1 -0
  975. package/dist/services/web/snapshot-pruner.d.ts +2 -23
  976. package/dist/services/web/snapshot-pruner.js +8 -3
  977. package/dist/services/web/web-daemon-service.js +1 -3
  978. package/dist/services/web/web-install-service.d.ts +3 -32
  979. package/dist/services/web/web-install-service.js +21 -100
  980. package/dist/services/web/web-install-types.d.ts +31 -0
  981. package/dist/services/web/web-install-types.js +13 -0
  982. package/dist/services/web/web-login-profile.js +7 -5
  983. package/dist/services/web/web-protocol.js +3 -1
  984. package/dist/services/workflow/pipeline-verify-gate-support.js +63 -17
  985. package/dist/services/workflow/pipeline-verify-service.js +17 -6
  986. package/dist/services/workflow/plan-reader.js +5 -1
  987. package/dist/services/workflow/plan-refresher.js +20 -6
  988. package/dist/services/workflow/plan-trigger-detector.js +31 -8
  989. package/dist/services/workflow/provision-dispatch-node.js +8 -3
  990. package/dist/services/workflow/workflow-autonomous-resume-helpers.d.ts +3 -1
  991. package/dist/services/workflow/workflow-autonomous-resume-helpers.js +35 -144
  992. package/dist/services/workflow/workflow-autonomous-resume-validation.d.ts +16 -0
  993. package/dist/services/workflow/workflow-autonomous-resume-validation.js +155 -0
  994. package/dist/services/workflow/workflow-autonomous-service.js +25 -13
  995. package/dist/services/workflow/workflow-graph-store-helpers.d.ts +51 -0
  996. package/dist/services/workflow/workflow-graph-store-helpers.js +111 -0
  997. package/dist/services/workflow/workflow-graph-store.d.ts +2 -35
  998. package/dist/services/workflow/workflow-graph-store.js +30 -107
  999. package/dist/services/workflow/workflow-graph-types.js +3 -3
  1000. package/dist/services/workflow/workflow-inflight-probe.js +14 -7
  1001. package/dist/services/workflow/workflow-loader.js +5 -1
  1002. package/dist/services/workflow/workflow-node-lifecycle.js +22 -21
  1003. package/dist/services/workflow/workflow-presence-lifecycle-types.d.ts +50 -0
  1004. package/dist/services/workflow/workflow-presence-lifecycle-types.js +1 -0
  1005. package/dist/services/workflow/workflow-presence-lifecycle.d.ts +2 -42
  1006. package/dist/services/workflow/workflow-presence-lifecycle.js +19 -21
  1007. package/dist/services/workflow/workflow-router-service.js +169 -27
  1008. package/dist/services/workflow/workflow-skip-service.js +14 -4
  1009. package/dist/services/workflow/workflow-spec-builders.d.ts +15 -0
  1010. package/dist/services/workflow/workflow-spec-builders.js +121 -0
  1011. package/dist/services/workflow/workflow-spec.d.ts +7 -6
  1012. package/dist/services/workflow/workflow-spec.js +22 -116
  1013. package/dist/services/workflow/workflow-state-store.js +2 -1
  1014. package/dist/services/workspace/generated-artifacts-stamp.d.ts +2 -2
  1015. package/dist/services/workspace/generated-artifacts-stamp.js +2 -2
  1016. package/dist/services/workspace/migrate-1-4-1-service.js +80 -14
  1017. package/dist/services/workspace/migrate-service.js +66 -16
  1018. package/dist/services/workspace/reconcile-migrate.js +6 -2
  1019. package/dist/services/workspace/reconcile-service.js +37 -16
  1020. package/dist/services/workspace/workspace-claude-settings-materializer.js +7 -5
  1021. package/dist/services/workspace/workspace-clean-service.js +4 -1
  1022. package/dist/services/workspace/workspace-service.js +12 -4
  1023. package/dist/services/workspace/workspace-state-service.js +1 -1
  1024. package/dist/services/worktree/git-worktree-parser.js +13 -3
  1025. package/dist/services/worktree/host-worktree-reconciler.js +8 -4
  1026. package/dist/services/worktree/long-path-cleanup.js +23 -6
  1027. package/dist/services/worktree/worktree-gc-guard.js +3 -1
  1028. package/dist/services/worktree/worktree-lease-types.d.ts +53 -0
  1029. package/dist/services/worktree/worktree-lease-types.js +10 -0
  1030. package/dist/services/worktree/worktree-lease.d.ts +2 -44
  1031. package/dist/shared/array-guards.d.ts +30 -0
  1032. package/dist/shared/array-guards.js +32 -0
  1033. package/dist/shared/format-md-compact-internals.d.ts +26 -0
  1034. package/dist/shared/format-md-compact-internals.js +125 -0
  1035. package/dist/shared/format-md-compact.js +1 -117
  1036. package/dist/shared/fs-utils.js +2 -1
  1037. package/dist/shared/incrementing-number.js +3 -3
  1038. package/dist/shared/json-parse.d.ts +71 -0
  1039. package/dist/shared/json-parse.js +32 -0
  1040. package/dist/shared/json-schema-mini.js +3 -1
  1041. package/dist/shared/path-safety.js +3 -1
  1042. package/dist/shared/path-utils.d.ts +20 -0
  1043. package/dist/shared/path-utils.js +26 -0
  1044. package/dist/shared/planner-response.js +3 -3
  1045. package/dist/shared/stale-policy.js +1 -3
  1046. package/dist/skills/peaks-maker/index.js +11 -11
  1047. package/package.json +31 -8
  1048. package/scripts/clean-dist.mjs +1 -2
  1049. package/scripts/copy-templates.mjs +2 -4
  1050. package/scripts/install-skills.mjs +286 -283
  1051. package/scripts/sync-version.mjs +25 -8
  1052. package/scripts/watch.mjs +8 -2
  1053. package/skills/bee/peaks-qa/references/reading-handoff-frontmatter.md +3 -1
  1054. package/skills/bee/peaks-rd/references/parallel-review-fanout.md +1 -1
  1055. package/skills/bee/peaks-rd/references/rd-fanout-contracts.md +3 -2
  1056. package/skills/bee/peaks-rd/references/writing-handoff-frontmatter.md +29 -7
  1057. package/skills/peaks-code/SKILL.md +1 -1
  1058. package/skills/peaks-code/references/frontend-only-mode.md +2 -2
  1059. package/skills/peaks-code/references/startup-sequence.md +0 -4
  1060. package/dist/cli/commands/upgrade-commands.d.ts +0 -25
  1061. package/dist/cli/commands/upgrade-commands.js +0 -154
  1062. package/dist/services/upgrade/1x-detector-service.d.ts +0 -7
  1063. package/dist/services/upgrade/1x-detector-service.js +0 -94
  1064. package/dist/services/upgrade/gitignore-migrate-service.d.ts +0 -56
  1065. package/dist/services/upgrade/gitignore-migrate-service.js +0 -170
  1066. package/dist/services/upgrade/upgrade-service.d.ts +0 -81
  1067. package/dist/services/upgrade/upgrade-service.js +0 -405
  1068. package/skills/peaks-code/references/step-0-55-1x-detection.md +0 -83
@@ -1,6 +1,22 @@
1
1
  #!/usr/bin/env node
2
- import { closeSync, constants, existsSync, fchmodSync, fstatSync, lstatSync, mkdirSync, openSync, readFileSync, readlinkSync, realpathSync, readdirSync, renameSync, symlinkSync, unlinkSync, writeFileSync } from 'node:fs';
3
- import { spawnSync } from 'node:child_process';
2
+ import {
3
+ closeSync,
4
+ constants,
5
+ existsSync,
6
+ fchmodSync,
7
+ fstatSync,
8
+ lstatSync,
9
+ mkdirSync,
10
+ openSync,
11
+ readFileSync,
12
+ readlinkSync,
13
+ realpathSync,
14
+ readdirSync,
15
+ renameSync,
16
+ symlinkSync,
17
+ unlinkSync,
18
+ writeFileSync
19
+ } from 'node:fs';
4
20
  import { createHash, randomUUID } from 'node:crypto';
5
21
  import { homedir } from 'node:os';
6
22
  import { basename, dirname, isAbsolute, join, relative, resolve } from 'node:path';
@@ -35,7 +51,12 @@ function validateManagedMarkerPath(markerPath) {
35
51
  function validateOpenFile(fd, path, errorMessage) {
36
52
  const fdStats = fstatSync(fd);
37
53
  const pathStats = lstatSync(path);
38
- if (!fdStats.isFile() || !pathStats.isFile() || fdStats.dev !== pathStats.dev || fdStats.ino !== pathStats.ino) {
54
+ if (
55
+ !fdStats.isFile() ||
56
+ !pathStats.isFile() ||
57
+ fdStats.dev !== pathStats.dev ||
58
+ fdStats.ino !== pathStats.ino
59
+ ) {
39
60
  throw new Error(errorMessage);
40
61
  }
41
62
  if (fdStats.nlink !== 1 || pathStats.nlink !== 1) {
@@ -54,11 +75,19 @@ function createFileIdentity(path) {
54
75
  function isSameFileIdentity(path, identity) {
55
76
  if (identity === null) return false;
56
77
  const stats = getPathStats(path);
57
- return Boolean(stats?.isFile() && !stats.isSymbolicLink() && stats.nlink === 1 && stats.dev === identity.dev && stats.ino === identity.ino);
78
+ return Boolean(
79
+ stats?.isFile() &&
80
+ !stats.isSymbolicLink() &&
81
+ stats.nlink === 1 &&
82
+ stats.dev === identity.dev &&
83
+ stats.ino === identity.ino
84
+ );
58
85
  }
59
86
 
60
87
  function getSafeReadOpenFlags() {
61
- return typeof constants.O_NOFOLLOW === 'number' ? constants.O_RDONLY | constants.O_NOFOLLOW : constants.O_RDONLY;
88
+ return typeof constants.O_NOFOLLOW === 'number'
89
+ ? constants.O_RDONLY | constants.O_NOFOLLOW
90
+ : constants.O_RDONLY;
62
91
  }
63
92
 
64
93
  function readFileSafely(path, errorMessage) {
@@ -83,7 +112,12 @@ function getManagedTarget(targetPath) {
83
112
  function markManagedPeaksLink(targetPath, sourcePath) {
84
113
  const markerPath = `${targetPath}.peaks-managed`;
85
114
  validateManagedMarkerPath(markerPath);
86
- writeFileAtomically(markerPath, `${sourcePath}\n`, 'Peaks managed marker path changed during write', () => validateManagedMarkerPath(markerPath));
115
+ writeFileAtomically(
116
+ markerPath,
117
+ `${sourcePath}\n`,
118
+ 'Peaks managed marker path changed during write',
119
+ () => validateManagedMarkerPath(markerPath)
120
+ );
87
121
  }
88
122
 
89
123
  function readPackageSourceFile(path) {
@@ -111,7 +145,13 @@ function parseManagedOutputStyleMarker(managedTarget) {
111
145
  if (managedTarget === null) return null;
112
146
  try {
113
147
  const marker = JSON.parse(managedTarget);
114
- if (marker?.version !== 1 || marker?.kind !== 'output-style' || typeof marker.outputStyleName !== 'string' || typeof marker.sourcePath !== 'string' || typeof marker.contentSha256 !== 'string') {
148
+ if (
149
+ marker?.version !== 1 ||
150
+ marker?.kind !== 'output-style' ||
151
+ typeof marker.outputStyleName !== 'string' ||
152
+ typeof marker.sourcePath !== 'string' ||
153
+ typeof marker.contentSha256 !== 'string'
154
+ ) {
115
155
  return null;
116
156
  }
117
157
  return marker;
@@ -121,13 +161,28 @@ function parseManagedOutputStyleMarker(managedTarget) {
121
161
  }
122
162
 
123
163
  function isTrustedOutputStyleSource(marker, sourcePath, outputStyleName) {
124
- return marker.outputStyleName === outputStyleName && resolve(marker.sourcePath) === resolve(sourcePath) && basename(resolve(marker.sourcePath)) === outputStyleName;
164
+ return (
165
+ marker.outputStyleName === outputStyleName &&
166
+ resolve(marker.sourcePath) === resolve(sourcePath) &&
167
+ basename(resolve(marker.sourcePath)) === outputStyleName
168
+ );
125
169
  }
126
170
 
127
- function getManagedPeaksOutputStyleIdentity(managedTarget, targetPath, sourcePath, outputStyleName) {
171
+ function getManagedPeaksOutputStyleIdentity(
172
+ managedTarget,
173
+ targetPath,
174
+ sourcePath,
175
+ outputStyleName
176
+ ) {
128
177
  const marker = parseManagedOutputStyleMarker(managedTarget);
129
178
  const sourceHash = hashContent(readPackageSourceFile(sourcePath));
130
- if (marker === null || !isTrustedOutputStyleSource(marker, sourcePath, outputStyleName) || !existsSync(targetPath) || hashFileContent(targetPath) !== sourceHash || marker.contentSha256 !== sourceHash) {
179
+ if (
180
+ marker === null ||
181
+ !isTrustedOutputStyleSource(marker, sourcePath, outputStyleName) ||
182
+ !existsSync(targetPath) ||
183
+ hashFileContent(targetPath) !== sourceHash ||
184
+ marker.contentSha256 !== sourceHash
185
+ ) {
131
186
  return null;
132
187
  }
133
188
  return createFileIdentity(targetPath);
@@ -172,15 +227,15 @@ function readPackageVersion(packageRoot = resolvePackageRoot()) {
172
227
  }
173
228
 
174
229
  function createConfigDefaults(packageRoot) {
175
- return {
230
+ return {
176
231
  version: readPackageVersion(packageRoot),
177
232
  currentWorkspace: null,
178
- workspaces: [],
179
- language: 'en',
180
- economyMode: true,
181
- swarmMode: true,
182
- tokens: {},
183
- proxy: {}
233
+ workspaces: [],
234
+ language: 'en',
235
+ economyMode: true,
236
+ swarmMode: true,
237
+ tokens: {},
238
+ proxy: {}
184
239
  };
185
240
  }
186
241
 
@@ -198,18 +253,21 @@ function isPlainObject(value) {
198
253
  }
199
254
 
200
255
  function mergeMissingConfigValues(existing, defaults) {
201
- return Object.entries(defaults).reduce((next, [key, defaultValue]) => {
202
- if (!(key in next)) {
203
- return { ...next, [key]: defaultValue };
204
- }
256
+ return Object.entries(defaults).reduce(
257
+ (next, [key, defaultValue]) => {
258
+ if (!(key in next)) {
259
+ return { ...next, [key]: defaultValue };
260
+ }
205
261
 
206
- const existingValue = next[key];
207
- if (isPlainObject(existingValue) && isPlainObject(defaultValue)) {
208
- return { ...next, [key]: mergeMissingConfigValues(existingValue, defaultValue) };
209
- }
262
+ const existingValue = next[key];
263
+ if (isPlainObject(existingValue) && isPlainObject(defaultValue)) {
264
+ return { ...next, [key]: mergeMissingConfigValues(existingValue, defaultValue) };
265
+ }
210
266
 
211
- return next;
212
- }, { ...existing });
267
+ return next;
268
+ },
269
+ { ...existing }
270
+ );
213
271
  }
214
272
 
215
273
  function readConfigFile(configPath, label) {
@@ -218,14 +276,21 @@ function readConfigFile(configPath, label) {
218
276
  }
219
277
 
220
278
  try {
221
- const parsed = JSON.parse(readFileSafely(configPath, `${label} config path changed during read`));
279
+ const parsed = JSON.parse(
280
+ readFileSafely(configPath, `${label} config path changed during read`)
281
+ );
222
282
  if (!isPlainObject(parsed)) {
223
283
  throw new Error(`${label} config must contain a JSON object`);
224
284
  }
225
285
 
226
286
  return parsed;
227
287
  } catch (error) {
228
- const message = error instanceof SyntaxError ? `${label} config must contain valid JSON` : error instanceof Error ? error.message : String(error);
288
+ const message =
289
+ error instanceof SyntaxError
290
+ ? `${label} config must contain valid JSON`
291
+ : error instanceof Error
292
+ ? error.message
293
+ : String(error);
229
294
  throw new Error(message);
230
295
  }
231
296
  }
@@ -234,7 +299,11 @@ function validateConfigPath(root, peaksRoot, configPath, label) {
234
299
  const rootReal = realpathSync(root);
235
300
  const peaksStats = lstatSync(peaksRoot);
236
301
  const peaksReal = realpathSync(peaksRoot);
237
- if (!peaksStats.isDirectory() || peaksStats.isSymbolicLink() || peaksReal !== resolve(rootReal, '.peaks')) {
302
+ if (
303
+ !peaksStats.isDirectory() ||
304
+ peaksStats.isSymbolicLink() ||
305
+ peaksReal !== resolve(rootReal, '.peaks')
306
+ ) {
238
307
  throw new Error(`${label} config path must stay inside the ${label.toLowerCase()} root`);
239
308
  }
240
309
 
@@ -342,7 +411,9 @@ function writeFileAtomically(configPath, content, errorMessage, validateBeforeWr
342
411
  }
343
412
 
344
413
  function writeUserConfig(userRoot, peaksRoot, configPath, content) {
345
- writeFileAtomically(configPath, content, 'User config path changed during write', () => validateUserConfigPaths(userRoot, peaksRoot, configPath));
414
+ writeFileAtomically(configPath, content, 'User config path changed during write', () =>
415
+ validateUserConfigPaths(userRoot, peaksRoot, configPath)
416
+ );
346
417
  }
347
418
 
348
419
  function resolveProjectRoot(options) {
@@ -387,7 +458,7 @@ export const IDE_DETECTION_DIRS = [
387
458
  { id: 'tongyi-lingma', dir: '.tongyi-lingma' },
388
459
  { id: 'zcode', dir: '.zcode' },
389
460
  { id: 'hermes', dir: '.hermes' },
390
- { id: 'openclaw', dir: '.openclaw' },
461
+ { id: 'openclaw', dir: '.openclaw' }
391
462
  ];
392
463
 
393
464
  /**
@@ -418,15 +489,15 @@ export const IDE_SKILL_INSTALL_PROFILES = {
418
489
  agentsDir: join(homedir(), '.claude', 'agents'),
419
490
  envVar: 'PEAKS_CLAUDE_SKILLS_DIR',
420
491
  outputStylesEnvVar: 'PEAKS_CLAUDE_OUTPUT_STYLES_DIR',
421
- agentsEnvVar: 'PEAKS_CLAUDE_AGENTS_DIR',
492
+ agentsEnvVar: 'PEAKS_CLAUDE_AGENTS_DIR'
422
493
  },
423
- 'trae': {
494
+ trae: {
424
495
  skillsDir: join(homedir(), '.trae', 'skills'),
425
496
  outputStylesDir: join(homedir(), '.trae', 'output-styles'),
426
497
  agentsDir: join(homedir(), '.trae', 'agents'),
427
498
  envVar: 'PEAKS_TRAE_SKILLS_DIR',
428
499
  outputStylesEnvVar: 'PEAKS_TRAE_OUTPUT_STYLES_DIR',
429
- agentsEnvVar: 'PEAKS_TRAE_AGENTS_DIR',
500
+ agentsEnvVar: 'PEAKS_TRAE_AGENTS_DIR'
430
501
  },
431
502
  'trae-cn': {
432
503
  skillsDir: join(homedir(), '.trae-cn', 'skills'),
@@ -434,56 +505,56 @@ export const IDE_SKILL_INSTALL_PROFILES = {
434
505
  agentsDir: join(homedir(), '.trae-cn', 'agents'),
435
506
  envVar: 'PEAKS_TRAE_CN_SKILLS_DIR',
436
507
  outputStylesEnvVar: 'PEAKS_TRAE_CN_OUTPUT_STYLES_DIR',
437
- agentsEnvVar: 'PEAKS_TRAE_CN_AGENTS_DIR',
508
+ agentsEnvVar: 'PEAKS_TRAE_CN_AGENTS_DIR'
438
509
  },
439
- 'codex': {
510
+ codex: {
440
511
  skillsDir: join(homedir(), '.codex', 'skills'),
441
512
  outputStylesDir: join(homedir(), '.codex', 'output-styles'),
442
513
  agentsDir: join(homedir(), '.codex', 'agents'),
443
514
  envVar: 'PEAKS_CODEX_SKILLS_DIR',
444
515
  outputStylesEnvVar: 'PEAKS_CODEX_OUTPUT_STYLES_DIR',
445
- agentsEnvVar: 'PEAKS_CODEX_AGENTS_DIR',
516
+ agentsEnvVar: 'PEAKS_CODEX_AGENTS_DIR'
446
517
  },
447
- 'cursor': {
518
+ cursor: {
448
519
  skillsDir: join(homedir(), '.cursor', 'skills'),
449
520
  outputStylesDir: join(homedir(), '.cursor', 'output-styles'),
450
521
  agentsDir: join(homedir(), '.cursor', 'agents'),
451
522
  envVar: 'PEAKS_CURSOR_SKILLS_DIR',
452
523
  outputStylesEnvVar: 'PEAKS_CURSOR_OUTPUT_STYLES_DIR',
453
- agentsEnvVar: 'PEAKS_CURSOR_AGENTS_DIR',
524
+ agentsEnvVar: 'PEAKS_CURSOR_AGENTS_DIR'
454
525
  },
455
- 'qoder': {
526
+ qoder: {
456
527
  skillsDir: join(homedir(), '.qoder', 'skills'),
457
528
  outputStylesDir: join(homedir(), '.qoder', 'output-styles'),
458
529
  envVar: 'PEAKS_QODER_SKILLS_DIR',
459
- outputStylesEnvVar: 'PEAKS_QODER_OUTPUT_STYLES_DIR',
530
+ outputStylesEnvVar: 'PEAKS_QODER_OUTPUT_STYLES_DIR'
460
531
  },
461
532
  'tongyi-lingma': {
462
533
  skillsDir: join(homedir(), '.tongyi-lingma', 'skills'),
463
534
  outputStylesDir: join(homedir(), '.tongyi-lingma', 'output-styles'),
464
535
  envVar: 'PEAKS_TONGYI_SKILLS_DIR',
465
- outputStylesEnvVar: 'PEAKS_TONGYI_OUTPUT_STYLES_DIR',
536
+ outputStylesEnvVar: 'PEAKS_TONGYI_OUTPUT_STYLES_DIR'
466
537
  },
467
- 'hermes': {
538
+ hermes: {
468
539
  skillsDir: join(homedir(), '.hermes', 'skills'),
469
540
  outputStylesDir: join(homedir(), '.hermes', 'output-styles'),
470
541
  envVar: 'PEAKS_HERMES_SKILLS_DIR',
471
- outputStylesEnvVar: 'PEAKS_HERMES_OUTPUT_STYLES_DIR',
542
+ outputStylesEnvVar: 'PEAKS_HERMES_OUTPUT_STYLES_DIR'
472
543
  },
473
- 'openclaw': {
544
+ openclaw: {
474
545
  skillsDir: join(homedir(), '.openclaw', 'skills'),
475
546
  outputStylesDir: join(homedir(), '.openclaw', 'output-styles'),
476
547
  envVar: 'PEAKS_OPENCLAW_SKILLS_DIR',
477
- outputStylesEnvVar: 'PEAKS_OPENCLAW_OUTPUT_STYLES_DIR',
548
+ outputStylesEnvVar: 'PEAKS_OPENCLAW_OUTPUT_STYLES_DIR'
478
549
  },
479
- 'zcode': {
550
+ zcode: {
480
551
  skillsDir: join(homedir(), '.zcode', 'skills'),
481
552
  outputStylesDir: join(homedir(), '.zcode', 'output-styles'),
482
553
  agentsDir: join(homedir(), '.zcode', 'agents'),
483
554
  envVar: 'PEAKS_ZCODE_SKILLS_DIR',
484
555
  outputStylesEnvVar: 'PEAKS_ZCODE_OUTPUT_STYLES_DIR',
485
- agentsEnvVar: 'PEAKS_ZCODE_AGENTS_DIR',
486
- },
556
+ agentsEnvVar: 'PEAKS_ZCODE_AGENTS_DIR'
557
+ }
487
558
  };
488
559
 
489
560
  function detectInstalledIdeId(projectRoot) {
@@ -535,7 +606,11 @@ function resolveIdeSkillInstallProfile(ideId) {
535
606
  function isPlatformPresent(ideId, profile, projectRoot) {
536
607
  if (profile.alwaysPresent === true) return true;
537
608
  const detection = IDE_DETECTION_DIRS.find((entry) => entry.id === ideId);
538
- if (detection !== undefined && projectRoot !== null && existsSync(join(projectRoot, detection.dir))) {
609
+ if (
610
+ detection !== undefined &&
611
+ projectRoot !== null &&
612
+ existsSync(join(projectRoot, detection.dir))
613
+ ) {
539
614
  return true;
540
615
  }
541
616
  return existsSync(dirname(profile.skillsDir));
@@ -560,7 +635,10 @@ function warnNoIdeDetected(projectRoot) {
560
635
 
561
636
  function writeMergedConfig(configPath, label, defaults, writeConfig) {
562
637
  const existing = readConfigFile(configPath, label);
563
- const next = { ...(existing === null ? defaults : mergeMissingConfigValues(existing, defaults)), version: defaults.version };
638
+ const next = {
639
+ ...(existing === null ? defaults : mergeMissingConfigValues(existing, defaults)),
640
+ version: defaults.version
641
+ };
564
642
  const currentJson = existing === null ? null : `${JSON.stringify(existing, null, 2)}\n`;
565
643
  const nextJson = `${JSON.stringify(next, null, 2)}\n`;
566
644
 
@@ -573,7 +651,10 @@ function writeMergedConfig(configPath, label, defaults, writeConfig) {
573
651
  }
574
652
 
575
653
  export function installUserConfig(options = {}) {
576
- if (process.env.PEAKS_SKIP_SKILL_INSTALL === '1' || process.env.PEAKS_SKIP_USER_CONFIG_INSTALL === '1') {
654
+ if (
655
+ process.env.PEAKS_SKIP_SKILL_INSTALL === '1' ||
656
+ process.env.PEAKS_SKIP_USER_CONFIG_INSTALL === '1'
657
+ ) {
577
658
  return createConfigResult({ skipped: true });
578
659
  }
579
660
 
@@ -589,7 +670,12 @@ export function installUserConfig(options = {}) {
589
670
  }
590
671
  validateUserConfigPaths(userRoot, peaksRoot, configPath);
591
672
 
592
- return writeMergedConfig(configPath, 'User', createConfigDefaults(options.packageRoot), (content) => writeUserConfig(userRoot, peaksRoot, configPath, content));
673
+ return writeMergedConfig(
674
+ configPath,
675
+ 'User',
676
+ createConfigDefaults(options.packageRoot),
677
+ (content) => writeUserConfig(userRoot, peaksRoot, configPath, content)
678
+ );
593
679
  }
594
680
 
595
681
  /*
@@ -631,20 +717,32 @@ export function installBundledSkills(options = {}) {
631
717
  const detectedIdeId = detectInstalledIdeId(projectRoot);
632
718
  const detectedProfile = resolveIdeSkillInstallProfile(detectedIdeId);
633
719
 
634
- if (options.targetRoot === undefined && options.ideId === undefined && detectedProfile === null && detectedIdeId !== null) {
720
+ if (
721
+ options.targetRoot === undefined &&
722
+ options.ideId === undefined &&
723
+ detectedProfile === null &&
724
+ detectedIdeId !== null
725
+ ) {
635
726
  warnUnverifiedIde(detectedIdeId, projectRoot ?? '(project root unknown)');
636
727
  }
637
- if (options.targetRoot === undefined && options.ideId === undefined && detectedIdeId === null && projectRoot !== null) {
728
+ if (
729
+ options.targetRoot === undefined &&
730
+ options.ideId === undefined &&
731
+ detectedIdeId === null &&
732
+ projectRoot !== null
733
+ ) {
638
734
  warnNoIdeDetected(projectRoot);
639
735
  }
640
736
 
641
737
  const profileSkillsDir = detectedProfile?.skillsDir ?? null;
642
738
  const targetRoot = resolve(
643
- options.targetRoot
644
- ?? (options.ideId !== undefined ? resolveIdeSkillInstallProfile(options.ideId)?.skillsDir ?? null : null)
645
- ?? process.env.PEAKS_CLAUDE_SKILLS_DIR
646
- ?? profileSkillsDir
647
- ?? join(homedir(), '.claude', 'skills')
739
+ options.targetRoot ??
740
+ (options.ideId !== undefined
741
+ ? (resolveIdeSkillInstallProfile(options.ideId)?.skillsDir ?? null)
742
+ : null) ??
743
+ process.env.PEAKS_CLAUDE_SKILLS_DIR ??
744
+ profileSkillsDir ??
745
+ join(homedir(), '.claude', 'skills')
648
746
  );
649
747
 
650
748
  const installed = [];
@@ -782,11 +880,13 @@ export function installBundledOutputStyles(options = {}) {
782
880
 
783
881
  const profileOutputStylesDir = detectedProfile?.outputStylesDir ?? null;
784
882
  const targetRoot = resolve(
785
- options.targetRoot
786
- ?? (options.ideId !== undefined ? resolveIdeSkillInstallProfile(options.ideId)?.outputStylesDir ?? null : null)
787
- ?? process.env.PEAKS_CLAUDE_OUTPUT_STYLES_DIR
788
- ?? profileOutputStylesDir
789
- ?? join(homedir(), '.claude', 'output-styles')
883
+ options.targetRoot ??
884
+ (options.ideId !== undefined
885
+ ? (resolveIdeSkillInstallProfile(options.ideId)?.outputStylesDir ?? null)
886
+ : null) ??
887
+ process.env.PEAKS_CLAUDE_OUTPUT_STYLES_DIR ??
888
+ profileOutputStylesDir ??
889
+ join(homedir(), '.claude', 'output-styles')
790
890
  );
791
891
 
792
892
  const installed = [];
@@ -805,7 +905,12 @@ export function installBundledOutputStyles(options = {}) {
805
905
  const current = getPathStats(targetPath);
806
906
  if (current) {
807
907
  const managedTarget = getManagedTarget(targetPath);
808
- const managedTargetIdentity = getManagedPeaksOutputStyleIdentity(managedTarget, targetPath, sourcePath, outputStyleName);
908
+ const managedTargetIdentity = getManagedPeaksOutputStyleIdentity(
909
+ managedTarget,
910
+ targetPath,
911
+ sourcePath,
912
+ outputStyleName
913
+ );
809
914
  if (isSameFileIdentity(targetPath, managedTargetIdentity)) {
810
915
  validateOutputStylesRoot();
811
916
  if (!isSameFileIdentity(targetPath, managedTargetIdentity)) {
@@ -826,12 +931,22 @@ export function installBundledOutputStyles(options = {}) {
826
931
  validateOutputStylesRoot();
827
932
  unlinkSync(markerPath);
828
933
  }
829
- const createdTargetIdentity = writeFileExclusively(targetPath, readPackageSourceFile(sourcePath), 'Peaks output style path changed during write', validateOutputStylesRoot);
934
+ const createdTargetIdentity = writeFileExclusively(
935
+ targetPath,
936
+ readPackageSourceFile(sourcePath),
937
+ 'Peaks output style path changed during write',
938
+ validateOutputStylesRoot
939
+ );
830
940
  try {
831
- writeFileExclusively(markerPath, createManagedOutputStyleMarker(sourcePath, outputStyleName), 'Peaks managed marker path changed during write', () => {
832
- validateOutputStylesRoot();
833
- validateManagedMarkerPath(markerPath);
834
- });
941
+ writeFileExclusively(
942
+ markerPath,
943
+ createManagedOutputStyleMarker(sourcePath, outputStyleName),
944
+ 'Peaks managed marker path changed during write',
945
+ () => {
946
+ validateOutputStylesRoot();
947
+ validateManagedMarkerPath(markerPath);
948
+ }
949
+ );
835
950
  } catch (error) {
836
951
  validateOutputStylesRoot();
837
952
  if (isSameFileIdentity(targetPath, createdTargetIdentity)) {
@@ -883,14 +998,17 @@ function resolveSettingsFilePath(options = {}) {
883
998
  }
884
999
 
885
1000
  export function installBundledOutputStyleDefault(options = {}) {
886
- if (process.env.PEAKS_SKIP_SKILL_INSTALL === '1' || process.env.PEAKS_SKIP_OUTPUT_STYLE_DEFAULT === '1') {
1001
+ if (
1002
+ process.env.PEAKS_SKIP_SKILL_INSTALL === '1' ||
1003
+ process.env.PEAKS_SKIP_OUTPUT_STYLE_DEFAULT === '1'
1004
+ ) {
887
1005
  return { skipped: true, reason: 'PEAKS_SKIP_OUTPUT_STYLE_DEFAULT=1' };
888
1006
  }
889
1007
 
890
1008
  const bundledStylesDir = resolve(
891
- options.targetRoot
892
- ?? process.env.PEAKS_CLAUDE_OUTPUT_STYLES_DIR
893
- ?? join(homedir(), '.claude', 'output-styles')
1009
+ options.targetRoot ??
1010
+ process.env.PEAKS_CLAUDE_OUTPUT_STYLES_DIR ??
1011
+ join(homedir(), '.claude', 'output-styles')
894
1012
  );
895
1013
  const settingsPath = resolveSettingsFilePath(options);
896
1014
  const bundledStyleName = 'peaks-skill-swarm.md';
@@ -938,13 +1056,21 @@ export function installBundledOutputStyleDefault(options = {}) {
938
1056
  }
939
1057
 
940
1058
  // User-authored outputStyle wins — never overwrite.
941
- if (existing !== null && typeof existing.outputStyle === 'string' && existing.outputStyle.length > 0) {
942
- return { skipped: true, reason: `user-defined outputStyle already set: ${existing.outputStyle}` };
1059
+ if (
1060
+ existing !== null &&
1061
+ typeof existing.outputStyle === 'string' &&
1062
+ existing.outputStyle.length > 0
1063
+ ) {
1064
+ return {
1065
+ skipped: true,
1066
+ reason: `user-defined outputStyle already set: ${existing.outputStyle}`
1067
+ };
943
1068
  }
944
1069
 
945
- const next = existing === null
946
- ? { outputStyle: 'peaks-skill-swarm' }
947
- : { ...existing, outputStyle: 'peaks-skill-swarm' };
1070
+ const next =
1071
+ existing === null
1072
+ ? { outputStyle: 'peaks-skill-swarm' }
1073
+ : { ...existing, outputStyle: 'peaks-skill-swarm' };
948
1074
 
949
1075
  const existingJson = existing === null ? null : `${JSON.stringify(existing, null, 2)}\n`;
950
1076
  const nextJson = `${JSON.stringify(next, null, 2)}\n`;
@@ -978,7 +1104,7 @@ export function installBundledOutputStyleDefault(options = {}) {
978
1104
  created: existing === null,
979
1105
  updated: existing !== null,
980
1106
  settingsPath,
981
- outputStyle: 'peaks-skill-swarm',
1107
+ outputStyle: 'peaks-skill-swarm'
982
1108
  };
983
1109
  }
984
1110
 
@@ -1013,7 +1139,13 @@ function parseManagedAgentMarker(managedTarget) {
1013
1139
  if (managedTarget === null) return null;
1014
1140
  try {
1015
1141
  const marker = JSON.parse(managedTarget);
1016
- if (marker?.version !== 1 || marker?.kind !== 'agent' || typeof marker.agentName !== 'string' || typeof marker.sourcePath !== 'string' || typeof marker.contentSha256 !== 'string') {
1142
+ if (
1143
+ marker?.version !== 1 ||
1144
+ marker?.kind !== 'agent' ||
1145
+ typeof marker.agentName !== 'string' ||
1146
+ typeof marker.sourcePath !== 'string' ||
1147
+ typeof marker.contentSha256 !== 'string'
1148
+ ) {
1017
1149
  return null;
1018
1150
  }
1019
1151
  return marker;
@@ -1023,13 +1155,23 @@ function parseManagedAgentMarker(managedTarget) {
1023
1155
  }
1024
1156
 
1025
1157
  function isTrustedAgentSource(marker, sourcePath, agentName) {
1026
- return marker.agentName === agentName && resolve(marker.sourcePath) === resolve(sourcePath) && basename(resolve(marker.sourcePath)) === agentName;
1158
+ return (
1159
+ marker.agentName === agentName &&
1160
+ resolve(marker.sourcePath) === resolve(sourcePath) &&
1161
+ basename(resolve(marker.sourcePath)) === agentName
1162
+ );
1027
1163
  }
1028
1164
 
1029
1165
  function getManagedPeaksAgentIdentity(managedTarget, targetPath, sourcePath, agentName) {
1030
1166
  const marker = parseManagedAgentMarker(managedTarget);
1031
1167
  const sourceHash = hashContent(readPackageSourceFile(sourcePath));
1032
- if (marker === null || !isTrustedAgentSource(marker, sourcePath, agentName) || !existsSync(targetPath) || hashFileContent(targetPath) !== sourceHash || marker.contentSha256 !== sourceHash) {
1168
+ if (
1169
+ marker === null ||
1170
+ !isTrustedAgentSource(marker, sourcePath, agentName) ||
1171
+ !existsSync(targetPath) ||
1172
+ hashFileContent(targetPath) !== sourceHash ||
1173
+ marker.contentSha256 !== sourceHash
1174
+ ) {
1033
1175
  return null;
1034
1176
  }
1035
1177
  return createFileIdentity(targetPath);
@@ -1042,7 +1184,11 @@ export function installBundledAgents(options = {}) {
1042
1184
  // Per-IDE env-var override (claude-code only today): PEAKS_CLAUDE_AGENTS_DIR.
1043
1185
  // Universal escape hatch: PEAKS_SKIP_AGENT_INSTALL=1 (parallel to
1044
1186
  // PEAKS_SKIP_SKILL_INSTALL).
1045
- if (process.env.PEAKS_SKIP_SKILL_INSTALL === '1' || process.env.PEAKS_SKIP_AGENT_INSTALL === '1' || !existsSync(agentsRoot)) {
1187
+ if (
1188
+ process.env.PEAKS_SKIP_SKILL_INSTALL === '1' ||
1189
+ process.env.PEAKS_SKIP_AGENT_INSTALL === '1' ||
1190
+ !existsSync(agentsRoot)
1191
+ ) {
1046
1192
  return createInstallResult();
1047
1193
  }
1048
1194
 
@@ -1053,11 +1199,13 @@ export function installBundledAgents(options = {}) {
1053
1199
 
1054
1200
  const profileAgentsDir = detectedProfile?.agentsDir ?? null;
1055
1201
  const targetRoot = resolve(
1056
- options.targetRoot
1057
- ?? (options.ideId !== undefined ? resolveIdeSkillInstallProfile(options.ideId)?.agentsDir ?? null : null)
1058
- ?? process.env.PEAKS_CLAUDE_AGENTS_DIR
1059
- ?? profileAgentsDir
1060
- ?? join(homedir(), '.claude', 'agents')
1202
+ options.targetRoot ??
1203
+ (options.ideId !== undefined
1204
+ ? (resolveIdeSkillInstallProfile(options.ideId)?.agentsDir ?? null)
1205
+ : null) ??
1206
+ process.env.PEAKS_CLAUDE_AGENTS_DIR ??
1207
+ profileAgentsDir ??
1208
+ join(homedir(), '.claude', 'agents')
1061
1209
  );
1062
1210
 
1063
1211
  const installed = [];
@@ -1076,7 +1224,12 @@ export function installBundledAgents(options = {}) {
1076
1224
  const current = getPathStats(targetPath);
1077
1225
  if (current) {
1078
1226
  const managedTarget = getManagedTarget(targetPath);
1079
- const managedTargetIdentity = getManagedPeaksAgentIdentity(managedTarget, targetPath, sourcePath, agentFileName);
1227
+ const managedTargetIdentity = getManagedPeaksAgentIdentity(
1228
+ managedTarget,
1229
+ targetPath,
1230
+ sourcePath,
1231
+ agentFileName
1232
+ );
1080
1233
  if (isSameFileIdentity(targetPath, managedTargetIdentity)) {
1081
1234
  validateAgentsRoot();
1082
1235
  if (!isSameFileIdentity(targetPath, managedTargetIdentity)) {
@@ -1097,12 +1250,22 @@ export function installBundledAgents(options = {}) {
1097
1250
  validateAgentsRoot();
1098
1251
  unlinkSync(markerPath);
1099
1252
  }
1100
- const createdTargetIdentity = writeFileExclusively(targetPath, readPackageSourceFile(sourcePath), 'Peaks agent path changed during write', validateAgentsRoot);
1253
+ const createdTargetIdentity = writeFileExclusively(
1254
+ targetPath,
1255
+ readPackageSourceFile(sourcePath),
1256
+ 'Peaks agent path changed during write',
1257
+ validateAgentsRoot
1258
+ );
1101
1259
  try {
1102
- writeFileExclusively(markerPath, createManagedAgentMarker(sourcePath, agentFileName), 'Peaks managed marker path changed during write', () => {
1103
- validateAgentsRoot();
1104
- validateManagedMarkerPath(markerPath);
1105
- });
1260
+ writeFileExclusively(
1261
+ markerPath,
1262
+ createManagedAgentMarker(sourcePath, agentFileName),
1263
+ 'Peaks managed marker path changed during write',
1264
+ () => {
1265
+ validateAgentsRoot();
1266
+ validateManagedMarkerPath(markerPath);
1267
+ }
1268
+ );
1106
1269
  } catch (error) {
1107
1270
  validateAgentsRoot();
1108
1271
  if (isSameFileIdentity(targetPath, createdTargetIdentity)) {
@@ -1149,20 +1312,19 @@ export function installBundledAgentsForAllPlatforms(options = {}) {
1149
1312
  // claude-code iteration, if the env var is set, use it as
1150
1313
  // `targetRoot` (so the env var takes priority over the profile).
1151
1314
  // For test mode, options.targetRoot also wins.
1152
- const envOverride = ideId === 'claude-code'
1153
- ? process.env.PEAKS_CLAUDE_AGENTS_DIR
1154
- : undefined;
1155
- const platformOpts = (envOverride !== undefined && envOverride.length > 0)
1156
- ? { ...options, ideId, targetRoot: envOverride }
1157
- : (options.targetRoot !== undefined
1158
- ? { ...options, ideId, targetRoot: options.targetRoot }
1159
- : { ...options, ideId });
1315
+ const envOverride = ideId === 'claude-code' ? process.env.PEAKS_CLAUDE_AGENTS_DIR : undefined;
1316
+ const platformOpts =
1317
+ envOverride !== undefined && envOverride.length > 0
1318
+ ? { ...options, ideId, targetRoot: envOverride }
1319
+ : options.targetRoot !== undefined
1320
+ ? { ...options, ideId, targetRoot: options.targetRoot }
1321
+ : { ...options, ideId };
1160
1322
  const result = installBundledAgents(platformOpts);
1161
1323
  perPlatform.push({
1162
1324
  ideId,
1163
1325
  agentsDir: profile.agentsDir,
1164
1326
  installed: result.installed,
1165
- skipped: result.skipped,
1327
+ skipped: result.skipped
1166
1328
  });
1167
1329
  } catch (err) {
1168
1330
  const message = err instanceof Error ? err.message : String(err);
@@ -1174,7 +1336,7 @@ export function installBundledAgentsForAllPlatforms(options = {}) {
1174
1336
  agentsDir: profile.agentsDir,
1175
1337
  installed: [],
1176
1338
  skipped: [],
1177
- error: message,
1339
+ error: message
1178
1340
  });
1179
1341
  }
1180
1342
  }
@@ -1227,7 +1389,7 @@ export function installBundledSkillsForAllPlatforms(options = {}) {
1227
1389
  ideId,
1228
1390
  skillsDir: IDE_SKILL_INSTALL_PROFILES[ideId]?.skillsDir ?? '(unknown)',
1229
1391
  installed: result.installed,
1230
- skipped: result.skipped,
1392
+ skipped: result.skipped
1231
1393
  });
1232
1394
  } catch (err) {
1233
1395
  const message = err instanceof Error ? err.message : String(err);
@@ -1239,162 +1401,17 @@ export function installBundledSkillsForAllPlatforms(options = {}) {
1239
1401
  skillsDir: IDE_SKILL_INSTALL_PROFILES[ideId]?.skillsDir ?? '(unknown)',
1240
1402
  installed: [],
1241
1403
  skipped: [],
1242
- error: message,
1404
+ error: message
1243
1405
  });
1244
1406
  }
1245
1407
  }
1246
1408
  return perPlatform;
1247
1409
  }
1248
1410
 
1249
- /**
1250
- * 1.x → 2.0 detection — sniff for legacy 1.x project state
1251
- * in `cwd`. Returns a 1.x detection envelope with the
1252
- * detected signals (so the postinstall can decide whether
1253
- * to auto-upgrade).
1254
- *
1255
- * 1.x signals (any one fires the detection):
1256
- * - `~/.peaks/config.json` exists with `version: '1.4.2'` (or
1257
- * any '1.x' version that predates the 2.0 schema)
1258
- * - `.claude/rules/common/dev-preference.md` exists and
1259
- * references "peaks progress" (the 1.x CLI surface
1260
- * removed in slice #014)
1261
- * - `<cwd>/.peaks/preferences.json` missing OR has no
1262
- * `schema_version: '2.0.0'` field
1263
- *
1264
- * Returns:
1265
- * { isOneX: boolean, signals: string[], projectRoot: string|null,
1266
- * configPath: string|null }
1267
- */
1268
- export function detect1xProjectState(cwd = process.cwd()) {
1269
- const home = homedir();
1270
- const signals = [];
1271
- let projectRoot = null;
1272
- let configPath = null;
1273
-
1274
- // Walk up from cwd looking for .peaks/_runtime (signals
1275
- // we're inside a peaks project).
1276
- let dir = cwd;
1277
- for (let i = 0; i < 8; i += 1) {
1278
- const peaksRuntime = join(dir, '.peaks', '_runtime');
1279
- if (existsSync(peaksRuntime)) {
1280
- projectRoot = dir;
1281
- break;
1282
- }
1283
- const parent = dirname(dir);
1284
- if (parent === dir) break;
1285
- dir = parent;
1286
- }
1287
-
1288
- // Signal 1: ~/.peaks/config.json with 1.x version
1289
- const globalConfig = join(home, '.peaks', 'config.json');
1290
- if (existsSync(globalConfig)) {
1291
- try {
1292
- const raw = JSON.parse(readFileSync(globalConfig, 'utf8'));
1293
- if (typeof raw.version === 'string' && /^1\./.test(raw.version)) {
1294
- signals.push(`global config at ${globalConfig} is 1.x (${raw.version})`);
1295
- if (configPath === null) configPath = globalConfig;
1296
- }
1297
- } catch {
1298
- // ignore parse error — the 1.x detection is best-effort
1299
- }
1300
- }
1301
-
1302
- // Signal 2: .claude/rules/common/dev-preference.md with peaks progress
1303
- if (projectRoot !== null) {
1304
- const devPref = join(projectRoot, '.claude', 'rules', 'common', 'dev-preference.md');
1305
- if (existsSync(devPref)) {
1306
- try {
1307
- const body = readFileSync(devPref, 'utf8');
1308
- if (/peaks progress/i.test(body)) {
1309
- signals.push(`${devPref} references "peaks progress" (1.x CLI surface, removed in slice #014)`);
1310
- }
1311
- } catch {
1312
- // ignore
1313
- }
1314
- }
1315
- // Signal 3: project preferences.json missing or 1.x
1316
- const prefs = join(projectRoot, '.peaks', 'preferences.json');
1317
- if (!existsSync(prefs)) {
1318
- signals.push(`${prefs} does not exist (1.x project never migrated)`);
1319
- } else {
1320
- try {
1321
- const raw = JSON.parse(readFileSync(prefs, 'utf8'));
1322
- if (raw.schema_version !== '2.0.0') {
1323
- signals.push(`${prefs} has schema_version ${JSON.stringify(raw.schema_version)}, expected '2.0.0'`);
1324
- }
1325
- } catch {
1326
- signals.push(`${prefs} exists but is not valid JSON`);
1327
- }
1328
- }
1329
- }
1330
-
1331
- return {
1332
- isOneX: signals.length > 0,
1333
- signals,
1334
- projectRoot,
1335
- configPath,
1336
- };
1337
- }
1338
-
1339
- /**
1340
- * Postinstall auto-upgrade — when the user just ran
1341
- * `npm i -g peaks-loop@2.0` and `cwd` is a 1.x peaks-loop
1342
- * project, this shells out to the installed `peaks`
1343
- * binary to run the umbrella `peaks upgrade --to 2.0 --auto`.
1344
- *
1345
- * Per the "minimal-user-operation" tenet, the user should
1346
- * never have to run a second command after `npm i -g`. The
1347
- * upgrade CLI (if installed) is at the resolved `peaks`
1348
- * binary path; if not, the user gets a hint to run it
1349
- * manually.
1350
- *
1351
- * The auto-upgrade is opt-out via:
1352
- * PEAKS_SKIP_AUTO_UPGRADE=1
1353
- * (so a CI box that installs 2.0 but never wants the
1354
- * project-level migration can suppress the auto-step).
1355
- */
1356
- export async function autoUpgrade1xProjectIfPresent(options = {}) {
1357
- if (process.env.PEAKS_SKIP_AUTO_UPGRADE === '1') {
1358
- return { ran: false, reason: 'PEAKS_SKIP_AUTO_UPGRADE=1' };
1359
- }
1360
- const state = detect1xProjectState(options.cwd ?? process.cwd());
1361
- if (!state.isOneX) {
1362
- return { ran: false, reason: 'no 1.x project state detected' };
1363
- }
1364
- if (state.projectRoot === null) {
1365
- return { ran: false, reason: 'cwd is not a peaks project (no .peaks/_runtime/)' };
1366
- }
1367
- // The peaks binary should be on PATH after `npm i -g`.
1368
- // We shell out via spawnSync (synchronous; the postinstall
1369
- // is already synchronous and the umbrella is fast).
1370
- try {
1371
- const result = spawnSync('peaks', ['upgrade', '--to', '2.0', '--auto', '--project', state.projectRoot], {
1372
- encoding: 'utf8',
1373
- stdio: ['ignore', 'pipe', 'pipe'],
1374
- timeout: 120_000,
1375
- windowsHide: true,
1376
- });
1377
- return {
1378
- ran: true,
1379
- reason: 'auto-upgrade dispatched',
1380
- signals: state.signals,
1381
- projectRoot: state.projectRoot,
1382
- exitCode: result.status,
1383
- stdout: result.stdout ?? '',
1384
- stderr: result.stderr ?? '',
1385
- };
1386
- } catch (err) {
1387
- return {
1388
- ran: true,
1389
- reason: 'auto-upgrade dispatched but failed',
1390
- signals: state.signals,
1391
- projectRoot: state.projectRoot,
1392
- error: err instanceof Error ? err.message : String(err),
1393
- };
1394
- }
1395
- }
1396
-
1397
- if (process.argv[1] !== undefined && import.meta.url === pathToFileURL(resolve(process.argv[1])).href) {
1411
+ if (
1412
+ process.argv[1] !== undefined &&
1413
+ import.meta.url === pathToFileURL(resolve(process.argv[1])).href
1414
+ ) {
1398
1415
  try {
1399
1416
  // 2.0 fix for the 1.x Trae bug (per real user feedback
1400
1417
  // 2026-06-11): iterate every platform the user HAS, not just the
@@ -1439,10 +1456,14 @@ if (process.argv[1] !== undefined && import.meta.url === pathToFileURL(resolve(p
1439
1456
  process.stderr.write(`Peaks user config was not installed: ${message}\n`);
1440
1457
  }
1441
1458
  if (outputStylesResult.installed.length > 0) {
1442
- process.stdout.write(`Peaks output styles installed: ${outputStylesResult.installed.join(', ')}\n`);
1459
+ process.stdout.write(
1460
+ `Peaks output styles installed: ${outputStylesResult.installed.join(', ')}\n`
1461
+ );
1443
1462
  }
1444
1463
  if (outputStylesResult.skipped.length > 0) {
1445
- process.stderr.write(`Peaks output styles skipped because local files already exist: ${outputStylesResult.skipped.join(', ')}\n`);
1464
+ process.stderr.write(
1465
+ `Peaks output styles skipped because local files already exist: ${outputStylesResult.skipped.join(', ')}\n`
1466
+ );
1446
1467
  }
1447
1468
 
1448
1469
  // Slice 2026-08-02 — auto-register bundled output style.
@@ -1465,9 +1486,11 @@ if (process.argv[1] !== undefined && import.meta.url === pathToFileURL(resolve(p
1465
1486
  // style file was dispatched to an env-overridden dir, the
1466
1487
  // auto-register step checks THAT dir, not the user's homedir.
1467
1488
  try {
1468
- const dispatchTargetRoot = process.env.PEAKS_CLAUDE_OUTPUT_STYLES_DIR
1469
- ?? join(homedir(), '.claude', 'output-styles');
1470
- const styleDefaultResult = installBundledOutputStyleDefault({ targetRoot: dispatchTargetRoot });
1489
+ const dispatchTargetRoot =
1490
+ process.env.PEAKS_CLAUDE_OUTPUT_STYLES_DIR ?? join(homedir(), '.claude', 'output-styles');
1491
+ const styleDefaultResult = installBundledOutputStyleDefault({
1492
+ targetRoot: dispatchTargetRoot
1493
+ });
1471
1494
  if (styleDefaultResult.installed) {
1472
1495
  process.stdout.write(
1473
1496
  `Peaks output style auto-registered: ${styleDefaultResult.outputStyle}\n` +
@@ -1481,26 +1504,6 @@ if (process.argv[1] !== undefined && import.meta.url === pathToFileURL(resolve(p
1481
1504
  if (userConfigResult.created) {
1482
1505
  process.stdout.write('Peaks user config created: ~/.peaks/config.json\n');
1483
1506
  }
1484
-
1485
- // 2.0 postinstall: auto-detect 1.x project state in cwd
1486
- // and dispatch the upgrade umbrella. This makes the
1487
- // user's `npm i -g peaks-loop@2.0` truly one-key.
1488
- if (process.env.PEAKS_SKIP_AUTO_UPGRADE !== '1') {
1489
- // Fire-and-forget; the upgrade is async by design so
1490
- // the npm install output isn't blocked. We print a
1491
- // one-line hint so the user knows the auto-step
1492
- // happened.
1493
- autoUpgrade1xProjectIfPresent().then((result) => {
1494
- if (result.ran) {
1495
- process.stdout.write(
1496
- `\n✓ Detected 1.x peaks-loop project at ${result.projectRoot}\n` +
1497
- ` → auto-upgraded to 2.0 (${result.signals?.length ?? 0} signals resolved)\n` +
1498
- ` Run \`peaks audit red-lines --project .\` to verify.\n`
1499
- );
1500
- }
1501
- // When !result.ran we say nothing — silent on success.
1502
- });
1503
- }
1504
1507
  if (userConfigResult.updated) {
1505
1508
  process.stdout.write('Peaks user config updated: ~/.peaks/config.json\n');
1506
1509
  }