peaks-loop 4.0.0-beta.8 → 4.0.0-beta.9

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 (1064) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/bin/peaks.js +1 -1
  3. package/dist/cli/cli-helpers.d.ts +43 -0
  4. package/dist/cli/cli-helpers.js +86 -0
  5. package/dist/cli/commands/_cli-error-envelope.d.ts +19 -0
  6. package/dist/cli/commands/_cli-error-envelope.js +50 -0
  7. package/dist/cli/commands/adapter-commands-s2a.d.ts +34 -0
  8. package/dist/cli/commands/adapter-commands-s2a.js +92 -0
  9. package/dist/cli/commands/adapter-commands.d.ts +30 -0
  10. package/dist/cli/commands/adapter-commands.js +35 -0
  11. package/dist/cli/commands/agent-commands.d.ts +20 -0
  12. package/dist/cli/commands/agent-commands.js +48 -0
  13. package/dist/cli/commands/asset-commands.d.ts +45 -0
  14. package/dist/cli/commands/asset-commands.js +404 -0
  15. package/dist/cli/commands/audit-commands.d.ts +28 -0
  16. package/dist/cli/commands/audit-commands.js +437 -0
  17. package/dist/cli/commands/bee-commands.d.ts +26 -0
  18. package/dist/cli/commands/bee-commands.js +169 -0
  19. package/dist/cli/commands/capability-commands.d.ts +16 -0
  20. package/dist/cli/commands/capability-commands.js +45 -0
  21. package/dist/cli/commands/capability-worker-config-sc-commands.d.ts +3 -0
  22. package/dist/cli/commands/capability-worker-config-sc-commands.js +10 -0
  23. package/dist/cli/commands/classify-classify-commands.d.ts +19 -0
  24. package/dist/cli/commands/classify-classify-commands.js +151 -0
  25. package/dist/cli/commands/code-commands.d.ts +80 -0
  26. package/dist/cli/commands/code-commands.js +798 -0
  27. package/dist/cli/commands/code-review-commands.d.ts +34 -0
  28. package/dist/cli/commands/code-review-commands.js +83 -0
  29. package/dist/cli/commands/codegraph-commands.d.ts +3 -0
  30. package/dist/cli/commands/codegraph-commands.js +99 -0
  31. package/dist/cli/commands/compact-command.d.ts +21 -0
  32. package/dist/cli/commands/compact-command.js +252 -0
  33. package/dist/cli/commands/complexity-commands.d.ts +9 -0
  34. package/dist/cli/commands/complexity-commands.js +34 -0
  35. package/dist/cli/commands/config-commands.d.ts +3 -0
  36. package/dist/cli/commands/config-commands.js +220 -0
  37. package/dist/cli/commands/context-builder-commands.d.ts +11 -0
  38. package/dist/cli/commands/context-builder-commands.js +85 -0
  39. package/dist/cli/commands/context-commands.d.ts +21 -0
  40. package/dist/cli/commands/context-commands.js +254 -0
  41. package/dist/cli/commands/contract-commands.d.ts +26 -0
  42. package/dist/cli/commands/contract-commands.js +114 -0
  43. package/dist/cli/commands/core/artifacts-command.d.ts +3 -0
  44. package/dist/cli/commands/core/artifacts-command.js +62 -0
  45. package/dist/cli/commands/core/binding-commands.d.ts +3 -0
  46. package/dist/cli/commands/core/binding-commands.js +58 -0
  47. package/dist/cli/commands/core/doctor-command.d.ts +11 -0
  48. package/dist/cli/commands/core/doctor-command.js +204 -0
  49. package/dist/cli/commands/core/memory-command.d.ts +3 -0
  50. package/dist/cli/commands/core/memory-command.js +98 -0
  51. package/dist/cli/commands/core/profile-command.d.ts +3 -0
  52. package/dist/cli/commands/core/profile-command.js +9 -0
  53. package/dist/cli/commands/core/proxy-command.d.ts +3 -0
  54. package/dist/cli/commands/core/proxy-command.js +26 -0
  55. package/dist/cli/commands/core/session-command.d.ts +3 -0
  56. package/dist/cli/commands/core/session-command.js +241 -0
  57. package/dist/cli/commands/core/skill-command.d.ts +3 -0
  58. package/dist/cli/commands/core/skill-command.js +300 -0
  59. package/dist/cli/commands/core/standards-command.d.ts +3 -0
  60. package/dist/cli/commands/core/standards-command.js +95 -0
  61. package/dist/cli/commands/core-artifact-commands.d.ts +15 -0
  62. package/dist/cli/commands/core-artifact-commands.js +31 -0
  63. package/dist/cli/commands/dispatch-commands.d.ts +10 -0
  64. package/dist/cli/commands/dispatch-commands.js +351 -0
  65. package/dist/cli/commands/dispatch-from-dag.d.ts +3 -0
  66. package/dist/cli/commands/dispatch-from-dag.js +251 -0
  67. package/dist/cli/commands/doc-commands.d.ts +11 -0
  68. package/dist/cli/commands/doc-commands.js +65 -0
  69. package/dist/cli/commands/evolution-commands.d.ts +27 -0
  70. package/dist/cli/commands/evolution-commands.js +393 -0
  71. package/dist/cli/commands/feedback-commands.d.ts +18 -0
  72. package/dist/cli/commands/feedback-commands.js +145 -0
  73. package/dist/cli/commands/final-review-commands.d.ts +31 -0
  74. package/dist/cli/commands/final-review-commands.js +161 -0
  75. package/dist/cli/commands/fixture-commands.d.ts +32 -0
  76. package/dist/cli/commands/fixture-commands.js +91 -0
  77. package/dist/cli/commands/fork-commands.d.ts +16 -0
  78. package/dist/cli/commands/fork-commands.js +163 -0
  79. package/dist/cli/commands/gate-commands.d.ts +3 -0
  80. package/dist/cli/commands/gate-commands.js +117 -0
  81. package/dist/cli/commands/heartbeat-commands.d.ts +3 -0
  82. package/dist/cli/commands/heartbeat-commands.js +135 -0
  83. package/dist/cli/commands/hook-handle.d.ts +17 -0
  84. package/dist/cli/commands/hook-handle.js +157 -0
  85. package/dist/cli/commands/hooks-commands.d.ts +3 -0
  86. package/dist/cli/commands/hooks-commands.js +156 -0
  87. package/dist/cli/commands/ide-commands.d.ts +25 -0
  88. package/dist/cli/commands/ide-commands.js +42 -0
  89. package/dist/cli/commands/impact-commands.d.ts +15 -0
  90. package/dist/cli/commands/impact-commands.js +62 -0
  91. package/dist/cli/commands/job-commands.d.ts +3 -0
  92. package/dist/cli/commands/job-commands.js +289 -0
  93. package/dist/cli/commands/legacy-commands.d.ts +11 -0
  94. package/dist/cli/commands/legacy-commands.js +32 -0
  95. package/dist/cli/commands/log-commands.d.ts +17 -0
  96. package/dist/cli/commands/log-commands.js +64 -0
  97. package/dist/cli/commands/loop-commands.d.ts +27 -0
  98. package/dist/cli/commands/loop-commands.js +262 -0
  99. package/dist/cli/commands/loop-eval-commands.d.ts +20 -0
  100. package/dist/cli/commands/loop-eval-commands.js +526 -0
  101. package/dist/cli/commands/memory-commands.d.ts +23 -0
  102. package/dist/cli/commands/memory-commands.js +129 -0
  103. package/dist/cli/commands/migrate-1-4-1-command.d.ts +11 -0
  104. package/dist/cli/commands/migrate-1-4-1-command.js +34 -0
  105. package/dist/cli/commands/migrate-v2-10-to-v2-11-command.d.ts +20 -0
  106. package/dist/cli/commands/migrate-v2-10-to-v2-11-command.js +52 -0
  107. package/dist/cli/commands/mut-commands.d.ts +20 -0
  108. package/dist/cli/commands/mut-commands.js +239 -0
  109. package/dist/cli/commands/observability-commands.d.ts +22 -0
  110. package/dist/cli/commands/observability-commands.js +201 -0
  111. package/dist/cli/commands/openspec-commands.d.ts +3 -0
  112. package/dist/cli/commands/openspec-commands.js +237 -0
  113. package/dist/cli/commands/perf-audit-commands.d.ts +22 -0
  114. package/dist/cli/commands/perf-audit-commands.js +132 -0
  115. package/dist/cli/commands/perf-commands.d.ts +3 -0
  116. package/dist/cli/commands/perf-commands.js +41 -0
  117. package/dist/cli/commands/playwright-commands.d.ts +95 -0
  118. package/dist/cli/commands/playwright-commands.js +432 -0
  119. package/dist/cli/commands/polyrepo-commands.d.ts +37 -0
  120. package/dist/cli/commands/polyrepo-commands.js +155 -0
  121. package/dist/cli/commands/prd-blocks-commands.d.ts +18 -0
  122. package/dist/cli/commands/prd-blocks-commands.js +50 -0
  123. package/dist/cli/commands/prd-commands.d.ts +18 -0
  124. package/dist/cli/commands/prd-commands.js +141 -0
  125. package/dist/cli/commands/preferences-commands.d.ts +2 -0
  126. package/dist/cli/commands/preferences-commands.js +197 -0
  127. package/dist/cli/commands/project-commands.d.ts +3 -0
  128. package/dist/cli/commands/project-commands.js +253 -0
  129. package/dist/cli/commands/qa-business-review-commands.d.ts +17 -0
  130. package/dist/cli/commands/qa-business-review-commands.js +148 -0
  131. package/dist/cli/commands/qa-commands.d.ts +94 -0
  132. package/dist/cli/commands/qa-commands.js +271 -0
  133. package/dist/cli/commands/release-commands.d.ts +24 -0
  134. package/dist/cli/commands/release-commands.js +231 -0
  135. package/dist/cli/commands/request-commands.d.ts +3 -0
  136. package/dist/cli/commands/request-commands.js +548 -0
  137. package/dist/cli/commands/retrospective-commands.d.ts +12 -0
  138. package/dist/cli/commands/retrospective-commands.js +175 -0
  139. package/dist/cli/commands/reviewer-commands.d.ts +14 -0
  140. package/dist/cli/commands/reviewer-commands.js +64 -0
  141. package/dist/cli/commands/role-commands.d.ts +13 -0
  142. package/dist/cli/commands/role-commands.js +85 -0
  143. package/dist/cli/commands/runtime-commands.d.ts +52 -0
  144. package/dist/cli/commands/runtime-commands.js +150 -0
  145. package/dist/cli/commands/sc-commands.d.ts +3 -0
  146. package/dist/cli/commands/sc-commands.js +45 -0
  147. package/dist/cli/commands/scan-commands.d.ts +3 -0
  148. package/dist/cli/commands/scan-commands.js +445 -0
  149. package/dist/cli/commands/security-audit-commands.d.ts +23 -0
  150. package/dist/cli/commands/security-audit-commands.js +132 -0
  151. package/dist/cli/commands/sediment-commands.d.ts +80 -0
  152. package/dist/cli/commands/sediment-commands.js +649 -0
  153. package/dist/cli/commands/session-auto-compact-hook-command.d.ts +37 -0
  154. package/dist/cli/commands/session-auto-compact-hook-command.js +127 -0
  155. package/dist/cli/commands/session-checkpoint-command.d.ts +10 -0
  156. package/dist/cli/commands/session-checkpoint-command.js +100 -0
  157. package/dist/cli/commands/session-migrate-skill-name.d.ts +17 -0
  158. package/dist/cli/commands/session-migrate-skill-name.js +41 -0
  159. package/dist/cli/commands/session-resume-command.d.ts +11 -0
  160. package/dist/cli/commands/session-resume-command.js +83 -0
  161. package/dist/cli/commands/share-commands.d.ts +17 -0
  162. package/dist/cli/commands/share-commands.js +296 -0
  163. package/dist/cli/commands/skill-conformance-commands.d.ts +9 -0
  164. package/dist/cli/commands/skill-conformance-commands.js +39 -0
  165. package/dist/cli/commands/skill-loop-engineering-readiness-commands.d.ts +67 -0
  166. package/dist/cli/commands/skill-loop-engineering-readiness-commands.js +173 -0
  167. package/dist/cli/commands/skill-search-commands.d.ts +25 -0
  168. package/dist/cli/commands/skill-search-commands.js +68 -0
  169. package/dist/cli/commands/skill-visibility.d.ts +8 -0
  170. package/dist/cli/commands/skill-visibility.js +63 -0
  171. package/dist/cli/commands/slice-commands.d.ts +24 -0
  172. package/dist/cli/commands/slice-commands.js +492 -0
  173. package/dist/cli/commands/slice-integrate-commands.d.ts +11 -0
  174. package/dist/cli/commands/slice-integrate-commands.js +74 -0
  175. package/dist/cli/commands/slice-review-commands.d.ts +23 -0
  176. package/dist/cli/commands/slice-review-commands.js +162 -0
  177. package/dist/cli/commands/smoke-commands.d.ts +21 -0
  178. package/dist/cli/commands/smoke-commands.js +203 -0
  179. package/dist/cli/commands/sop-commands.d.ts +3 -0
  180. package/dist/cli/commands/sop-commands.js +215 -0
  181. package/dist/cli/commands/statusline-commands.d.ts +3 -0
  182. package/dist/cli/commands/statusline-commands.js +169 -0
  183. package/dist/cli/commands/sub-agent-commands.d.ts +22 -0
  184. package/dist/cli/commands/sub-agent-commands.js +19 -0
  185. package/dist/cli/commands/sub-agent-dispatch-guard.d.ts +55 -0
  186. package/dist/cli/commands/sub-agent-dispatch-guard.js +57 -0
  187. package/dist/cli/commands/sub-agent-shared.d.ts +99 -0
  188. package/dist/cli/commands/sub-agent-shared.js +67 -0
  189. package/dist/cli/commands/test-commands.d.ts +47 -0
  190. package/dist/cli/commands/test-commands.js +204 -0
  191. package/dist/cli/commands/understand-commands.d.ts +3 -0
  192. package/dist/cli/commands/understand-commands.js +148 -0
  193. package/dist/cli/commands/upgrade-commands.d.ts +23 -0
  194. package/dist/cli/commands/upgrade-commands.js +119 -0
  195. package/dist/cli/commands/user-touchpoint-commands.d.ts +18 -0
  196. package/dist/cli/commands/user-touchpoint-commands.js +78 -0
  197. package/dist/cli/commands/verdict-aggregate-command.d.ts +14 -0
  198. package/dist/cli/commands/verdict-aggregate-command.js +106 -0
  199. package/dist/cli/commands/worker-commands.d.ts +3 -0
  200. package/dist/cli/commands/worker-commands.js +52 -0
  201. package/dist/cli/commands/workflow-commands.d.ts +3 -0
  202. package/dist/cli/commands/workflow-commands.js +544 -0
  203. package/dist/cli/commands/workflow-plan-commands.d.ts +39 -0
  204. package/dist/cli/commands/workflow-plan-commands.js +163 -0
  205. package/dist/cli/commands/workspace/clean-command.d.ts +14 -0
  206. package/dist/cli/commands/workspace/clean-command.js +49 -0
  207. package/dist/cli/commands/workspace/helpers.d.ts +28 -0
  208. package/dist/cli/commands/workspace/helpers.js +87 -0
  209. package/dist/cli/commands/workspace/init-command.d.ts +139 -0
  210. package/dist/cli/commands/workspace/init-command.js +505 -0
  211. package/dist/cli/commands/workspace/migrate-command.d.ts +11 -0
  212. package/dist/cli/commands/workspace/migrate-command.js +91 -0
  213. package/dist/cli/commands/workspace/reconcile-command.d.ts +14 -0
  214. package/dist/cli/commands/workspace/reconcile-command.js +103 -0
  215. package/dist/cli/commands/workspace-commands.d.ts +18 -0
  216. package/dist/cli/commands/workspace-commands.js +50 -0
  217. package/dist/cli/index.d.ts +1 -0
  218. package/dist/cli/index.js +30 -0
  219. package/dist/cli/program.d.ts +5 -0
  220. package/dist/cli/program.js +408 -0
  221. package/dist/hooks/pre-tool-use-sub-agent.d.ts +28 -0
  222. package/dist/hooks/pre-tool-use-sub-agent.js +105 -0
  223. package/dist/lib/render/message-renderer.d.ts +20 -0
  224. package/dist/lib/render/message-renderer.js +80 -0
  225. package/dist/services/adapter/adapter-registry.d.ts +48 -0
  226. package/dist/services/adapter/adapter-registry.js +186 -0
  227. package/dist/services/adapter/adapter.d.ts +27 -0
  228. package/dist/services/adapter/adapter.js +5 -0
  229. package/dist/services/adapter/auto-adapter.d.ts +11 -0
  230. package/dist/services/adapter/auto-adapter.js +15 -0
  231. package/dist/services/adapter/claude-adapter.d.ts +14 -0
  232. package/dist/services/adapter/claude-adapter.js +40 -0
  233. package/dist/services/adapter/codex-adapter.d.ts +14 -0
  234. package/dist/services/adapter/codex-adapter.js +14 -0
  235. package/dist/services/adapter/copilot-adapter.d.ts +14 -0
  236. package/dist/services/adapter/copilot-adapter.js +14 -0
  237. package/dist/services/agent/ecc-agent-service.d.ts +47 -0
  238. package/dist/services/agent/ecc-agent-service.js +143 -0
  239. package/dist/services/artifacts/artifact-lint-service.d.ts +23 -0
  240. package/dist/services/artifacts/artifact-lint-service.js +99 -0
  241. package/dist/services/artifacts/artifact-prerequisites.d.ts +78 -0
  242. package/dist/services/artifacts/artifact-prerequisites.js +491 -0
  243. package/dist/services/artifacts/artifact-service.d.ts +43 -0
  244. package/dist/services/artifacts/artifact-service.js +98 -0
  245. package/dist/services/artifacts/artifact-templates.d.ts +30 -0
  246. package/dist/services/artifacts/artifact-templates.js +302 -0
  247. package/dist/services/artifacts/repair-cycle-service.d.ts +23 -0
  248. package/dist/services/artifacts/repair-cycle-service.js +52 -0
  249. package/dist/services/artifacts/request-artifact-service.d.ts +116 -0
  250. package/dist/services/artifacts/request-artifact-service.js +451 -0
  251. package/dist/services/artifacts/request-artifact-state-helpers.d.ts +51 -0
  252. package/dist/services/artifacts/request-artifact-state-helpers.js +114 -0
  253. package/dist/services/artifacts/workspace-service.d.ts +34 -0
  254. package/dist/services/artifacts/workspace-service.js +272 -0
  255. package/dist/services/audit/artifact-writer.d.ts +93 -0
  256. package/dist/services/audit/artifact-writer.js +303 -0
  257. package/dist/services/audit/audit-goal-service.d.ts +35 -0
  258. package/dist/services/audit/audit-goal-service.js +75 -0
  259. package/dist/services/audit/audit-goal-types.d.ts +40 -0
  260. package/dist/services/audit/audit-goal-types.js +15 -0
  261. package/dist/services/audit/backing-detector.d.ts +24 -0
  262. package/dist/services/audit/backing-detector.js +59 -0
  263. package/dist/services/audit/classifier.d.ts +38 -0
  264. package/dist/services/audit/classifier.js +134 -0
  265. package/dist/services/audit/decision-writer.d.ts +76 -0
  266. package/dist/services/audit/decision-writer.js +217 -0
  267. package/dist/services/audit/enforcers/active-skill-resolver.d.ts +29 -0
  268. package/dist/services/audit/enforcers/active-skill-resolver.js +71 -0
  269. package/dist/services/audit/enforcers/code-ban.d.ts +23 -0
  270. package/dist/services/audit/enforcers/code-ban.js +27 -0
  271. package/dist/services/audit/enforcers/design-draft-confirm.d.ts +24 -0
  272. package/dist/services/audit/enforcers/design-draft-confirm.js +58 -0
  273. package/dist/services/audit/enforcers/lint-audit-regression.d.ts +21 -0
  274. package/dist/services/audit/enforcers/lint-audit-regression.js +86 -0
  275. package/dist/services/audit/enforcers/lint-catalog-governance.d.ts +32 -0
  276. package/dist/services/audit/enforcers/lint-catalog-governance.js +48 -0
  277. package/dist/services/audit/enforcers/lint-cli-back.d.ts +16 -0
  278. package/dist/services/audit/enforcers/lint-cli-back.js +35 -0
  279. package/dist/services/audit/enforcers/lint-output-style.d.ts +11 -0
  280. package/dist/services/audit/enforcers/lint-output-style.js +94 -0
  281. package/dist/services/audit/enforcers/lint-reference-integrity.d.ts +6 -0
  282. package/dist/services/audit/enforcers/lint-reference-integrity.js +83 -0
  283. package/dist/services/audit/enforcers/lint-reference-shape.d.ts +30 -0
  284. package/dist/services/audit/enforcers/lint-reference-shape.js +272 -0
  285. package/dist/services/audit/enforcers/lint-style.d.ts +49 -0
  286. package/dist/services/audit/enforcers/lint-style.js +173 -0
  287. package/dist/services/audit/enforcers/lint-workflow-shape.d.ts +4 -0
  288. package/dist/services/audit/enforcers/lint-workflow-shape.js +100 -0
  289. package/dist/services/audit/enforcers/login-gate.d.ts +23 -0
  290. package/dist/services/audit/enforcers/login-gate.js +40 -0
  291. package/dist/services/audit/enforcers/mock-placement.d.ts +25 -0
  292. package/dist/services/audit/enforcers/mock-placement.js +48 -0
  293. package/dist/services/audit/enforcers/no-root-pollution.d.ts +21 -0
  294. package/dist/services/audit/enforcers/no-root-pollution.js +56 -0
  295. package/dist/services/audit/enforcers/pre-rd-scan.d.ts +22 -0
  296. package/dist/services/audit/enforcers/pre-rd-scan.js +23 -0
  297. package/dist/services/audit/enforcers/prototype-fidelity.d.ts +25 -0
  298. package/dist/services/audit/enforcers/prototype-fidelity.js +75 -0
  299. package/dist/services/audit/enforcers/resume-detection.d.ts +21 -0
  300. package/dist/services/audit/enforcers/resume-detection.js +52 -0
  301. package/dist/services/audit/enforcers/sub-agent-sid.d.ts +25 -0
  302. package/dist/services/audit/enforcers/sub-agent-sid.js +63 -0
  303. package/dist/services/audit/prose-ratio-calculator.d.ts +45 -0
  304. package/dist/services/audit/prose-ratio-calculator.js +52 -0
  305. package/dist/services/audit/red-line-catalog-p2-a.d.ts +21 -0
  306. package/dist/services/audit/red-line-catalog-p2-a.js +229 -0
  307. package/dist/services/audit/red-line-catalog-p2-b.d.ts +19 -0
  308. package/dist/services/audit/red-line-catalog-p2-b.js +225 -0
  309. package/dist/services/audit/red-line-catalog.d.ts +51 -0
  310. package/dist/services/audit/red-line-catalog.js +195 -0
  311. package/dist/services/audit/red-lines-service.d.ts +23 -0
  312. package/dist/services/audit/red-lines-service.js +464 -0
  313. package/dist/services/audit/scanners/openspec-scanner.d.ts +15 -0
  314. package/dist/services/audit/scanners/openspec-scanner.js +55 -0
  315. package/dist/services/audit/scanners/rules-tree-scanner.d.ts +16 -0
  316. package/dist/services/audit/scanners/rules-tree-scanner.js +56 -0
  317. package/dist/services/audit/scanners/skills-tree-scanner.d.ts +17 -0
  318. package/dist/services/audit/scanners/skills-tree-scanner.js +68 -0
  319. package/dist/services/audit/static-service.d.ts +60 -0
  320. package/dist/services/audit/static-service.js +130 -0
  321. package/dist/services/audit/types.d.ts +86 -0
  322. package/dist/services/audit/types.js +13 -0
  323. package/dist/services/audit-independent/perf-audit-service.d.ts +151 -0
  324. package/dist/services/audit-independent/perf-audit-service.js +316 -0
  325. package/dist/services/audit-independent/security-audit-service.d.ts +155 -0
  326. package/dist/services/audit-independent/security-audit-service.js +316 -0
  327. package/dist/services/classify/classify-service.d.ts +42 -0
  328. package/dist/services/classify/classify-service.js +122 -0
  329. package/dist/services/classify/classify-types.d.ts +79 -0
  330. package/dist/services/classify/classify-types.js +90 -0
  331. package/dist/services/code/auto-compact-orchestrator.d.ts +98 -0
  332. package/dist/services/code/auto-compact-orchestrator.js +343 -0
  333. package/dist/services/code/batch-heartbeat-poller.d.ts +51 -0
  334. package/dist/services/code/batch-heartbeat-poller.js +88 -0
  335. package/dist/services/code/dag-orchestrator.d.ts +128 -0
  336. package/dist/services/code/dag-orchestrator.js +304 -0
  337. package/dist/services/code/emit-handoff.d.ts +49 -0
  338. package/dist/services/code/emit-handoff.js +79 -0
  339. package/dist/services/code/job-shape-decision.d.ts +71 -0
  340. package/dist/services/code/job-shape-decision.js +151 -0
  341. package/dist/services/code/mode-gate.d.ts +163 -0
  342. package/dist/services/code/mode-gate.js +212 -0
  343. package/dist/services/code/post-compact-detector.d.ts +61 -0
  344. package/dist/services/code/post-compact-detector.js +240 -0
  345. package/dist/services/code/status-line-renderer.d.ts +34 -0
  346. package/dist/services/code/status-line-renderer.js +55 -0
  347. package/dist/services/code/step-08-gate.d.ts +90 -0
  348. package/dist/services/code/step-08-gate.js +136 -0
  349. package/dist/services/code/user-touchpoint-classifier.d.ts +44 -0
  350. package/dist/services/code/user-touchpoint-classifier.js +145 -0
  351. package/dist/services/code-review/ecc-bridge.d.ts +148 -0
  352. package/dist/services/code-review/ecc-bridge.js +242 -0
  353. package/dist/services/code-review/ocr-service.d.ts +129 -0
  354. package/dist/services/code-review/ocr-service.js +369 -0
  355. package/dist/services/codegraph/codegraph-process-runner.d.ts +2 -0
  356. package/dist/services/codegraph/codegraph-process-runner.js +93 -0
  357. package/dist/services/codegraph/codegraph-service.d.ts +43 -0
  358. package/dist/services/codegraph/codegraph-service.js +160 -0
  359. package/dist/services/compact/decision-tables.d.ts +66 -0
  360. package/dist/services/compact/decision-tables.js +127 -0
  361. package/dist/services/compact/request-transition-hook.d.ts +20 -0
  362. package/dist/services/compact/request-transition-hook.js +110 -0
  363. package/dist/services/compact/suggest-service.d.ts +74 -0
  364. package/dist/services/compact/suggest-service.js +203 -0
  365. package/dist/services/complexity/complexity-estimator.d.ts +34 -0
  366. package/dist/services/complexity/complexity-estimator.js +64 -0
  367. package/dist/services/config/config-migration.d.ts +45 -0
  368. package/dist/services/config/config-migration.js +154 -0
  369. package/dist/services/config/config-restore.d.ts +10 -0
  370. package/dist/services/config/config-restore.js +47 -0
  371. package/dist/services/config/config-rollback.d.ts +13 -0
  372. package/dist/services/config/config-rollback.js +26 -0
  373. package/dist/services/config/config-safety.d.ts +40 -0
  374. package/dist/services/config/config-safety.js +359 -0
  375. package/dist/services/config/config-service.d.ts +69 -0
  376. package/dist/services/config/config-service.js +814 -0
  377. package/dist/services/config/config-types.d.ts +119 -0
  378. package/dist/services/config/config-types.js +18 -0
  379. package/dist/services/config/model-routing.d.ts +66 -0
  380. package/dist/services/config/model-routing.js +105 -0
  381. package/dist/services/config/provider-service.d.ts +48 -0
  382. package/dist/services/config/provider-service.js +143 -0
  383. package/dist/services/config/proxy-service.d.ts +21 -0
  384. package/dist/services/config/proxy-service.js +44 -0
  385. package/dist/services/config/sidecar-store.d.ts +25 -0
  386. package/dist/services/config/sidecar-store.js +61 -0
  387. package/dist/services/config/workspace-state-service.d.ts +30 -0
  388. package/dist/services/config/workspace-state-service.js +142 -0
  389. package/dist/services/context/artifact-meta.d.ts +72 -0
  390. package/dist/services/context/artifact-meta.js +105 -0
  391. package/dist/services/context/auto-compact-dispatcher.d.ts +37 -0
  392. package/dist/services/context/auto-compact-dispatcher.js +240 -0
  393. package/dist/services/context/auto-compact-reader.d.ts +51 -0
  394. package/dist/services/context/auto-compact-reader.js +164 -0
  395. package/dist/services/context/auto-compact-types.d.ts +143 -0
  396. package/dist/services/context/auto-compact-types.js +36 -0
  397. package/dist/services/context/collector.d.ts +24 -0
  398. package/dist/services/context/collector.js +133 -0
  399. package/dist/services/context/context-builder.d.ts +30 -0
  400. package/dist/services/context/context-builder.js +78 -0
  401. package/dist/services/context/context-guard.d.ts +49 -0
  402. package/dist/services/context/context-guard.js +91 -0
  403. package/dist/services/context/context-schema.d.ts +415 -0
  404. package/dist/services/context/context-schema.js +73 -0
  405. package/dist/services/context/dispatch-context-guard.d.ts +27 -0
  406. package/dist/services/context/dispatch-context-guard.js +192 -0
  407. package/dist/services/context/doc-retriever.d.ts +26 -0
  408. package/dist/services/context/doc-retriever.js +51 -0
  409. package/dist/services/context/headroom-client.d.ts +34 -0
  410. package/dist/services/context/headroom-client.js +117 -0
  411. package/dist/services/context/headroom-fetcher.d.ts +6 -0
  412. package/dist/services/context/headroom-fetcher.js +28 -0
  413. package/dist/services/context/headroom-prefs.d.ts +46 -0
  414. package/dist/services/context/headroom-prefs.js +34 -0
  415. package/dist/services/context/index.d.ts +7 -0
  416. package/dist/services/context/index.js +6 -0
  417. package/dist/services/context/main-session-monitor.d.ts +89 -0
  418. package/dist/services/context/main-session-monitor.js +142 -0
  419. package/dist/services/context/renderer.d.ts +20 -0
  420. package/dist/services/context/renderer.js +30 -0
  421. package/dist/services/context/shared-channel.d.ts +93 -0
  422. package/dist/services/context/shared-channel.js +308 -0
  423. package/dist/services/context/threshold.d.ts +35 -0
  424. package/dist/services/context/threshold.js +76 -0
  425. package/dist/services/context/tokenizer.d.ts +12 -0
  426. package/dist/services/context/tokenizer.js +43 -0
  427. package/dist/services/context/types.d.ts +93 -0
  428. package/dist/services/context/types.js +9 -0
  429. package/dist/services/crystallization/crystallization-service.d.ts +239 -0
  430. package/dist/services/crystallization/crystallization-service.js +397 -0
  431. package/dist/services/crystallization/crystallization-store.d.ts +75 -0
  432. package/dist/services/crystallization/crystallization-store.js +193 -0
  433. package/dist/services/crystallization/crystallization-types.d.ts +313 -0
  434. package/dist/services/crystallization/crystallization-types.js +299 -0
  435. package/dist/services/crystallization/evidence-brief-builder.d.ts +237 -0
  436. package/dist/services/crystallization/evidence-brief-builder.js +240 -0
  437. package/dist/services/dashboard/project-dashboard-service.d.ts +91 -0
  438. package/dist/services/dashboard/project-dashboard-service.js +147 -0
  439. package/dist/services/dispatch/batch-counter.d.ts +27 -0
  440. package/dist/services/dispatch/batch-counter.js +102 -0
  441. package/dist/services/dispatch/contract-store.d.ts +63 -0
  442. package/dist/services/dispatch/contract-store.js +157 -0
  443. package/dist/services/dispatch/dispatch-record-writer.d.ts +138 -0
  444. package/dist/services/dispatch/dispatch-record-writer.js +460 -0
  445. package/dist/services/dispatch/heartbeat-truncator.d.ts +26 -0
  446. package/dist/services/dispatch/heartbeat-truncator.js +13 -0
  447. package/dist/services/dispatch/leak-detector.d.ts +11 -0
  448. package/dist/services/dispatch/leak-detector.js +72 -0
  449. package/dist/services/dispatch/slice-dag.d.ts +81 -0
  450. package/dist/services/dispatch/slice-dag.js +238 -0
  451. package/dist/services/dispatch/sub-agent-dispatcher.d.ts +239 -0
  452. package/dist/services/dispatch/sub-agent-dispatcher.js +382 -0
  453. package/dist/services/dispatch/test-tool-detection.d.ts +36 -0
  454. package/dist/services/dispatch/test-tool-detection.js +46 -0
  455. package/dist/services/doc/doc-generator.d.ts +38 -0
  456. package/dist/services/doc/doc-generator.js +122 -0
  457. package/dist/services/doctor/doctor-service.d.ts +149 -0
  458. package/dist/services/doctor/doctor-service.js +929 -0
  459. package/dist/services/evolution/evolution-service.d.ts +137 -0
  460. package/dist/services/evolution/evolution-service.js +281 -0
  461. package/dist/services/evolution/evolution-store.d.ts +57 -0
  462. package/dist/services/evolution/evolution-store.js +232 -0
  463. package/dist/services/evolution/evolution-types.d.ts +706 -0
  464. package/dist/services/evolution/evolution-types.js +286 -0
  465. package/dist/services/evolution/independent-evaluator-runner.d.ts +90 -0
  466. package/dist/services/evolution/independent-evaluator-runner.js +106 -0
  467. package/dist/services/evolution/regression-skeptic-runner.d.ts +64 -0
  468. package/dist/services/evolution/regression-skeptic-runner.js +113 -0
  469. package/dist/services/feedback/feedback-promotion-service.d.ts +123 -0
  470. package/dist/services/feedback/feedback-promotion-service.js +300 -0
  471. package/dist/services/filesystem/file-lock.d.ts +11 -0
  472. package/dist/services/filesystem/file-lock.js +152 -0
  473. package/dist/services/final-review/final-review-service.d.ts +12 -0
  474. package/dist/services/final-review/final-review-service.js +52 -0
  475. package/dist/services/final-review/final-review-types.d.ts +42 -0
  476. package/dist/services/final-review/final-review-types.js +18 -0
  477. package/dist/services/fixture/fixture-capture-service.d.ts +87 -0
  478. package/dist/services/fixture/fixture-capture-service.js +317 -0
  479. package/dist/services/fixture/fixture-sanitize-service.d.ts +117 -0
  480. package/dist/services/fixture/fixture-sanitize-service.js +161 -0
  481. package/dist/services/fixture/index.d.ts +8 -0
  482. package/dist/services/fixture/index.js +8 -0
  483. package/dist/services/fork/fork-sync-state.d.ts +85 -0
  484. package/dist/services/fork/fork-sync-state.js +130 -0
  485. package/dist/services/fuzzy-matching/fuzzy-match-service.d.ts +15 -0
  486. package/dist/services/fuzzy-matching/fuzzy-match-service.js +56 -0
  487. package/dist/services/fuzzy-matching/fzf-pick-service.d.ts +68 -0
  488. package/dist/services/fuzzy-matching/fzf-pick-service.js +158 -0
  489. package/dist/services/fuzzy-matching/types.d.ts +20 -0
  490. package/dist/services/fuzzy-matching/types.js +1 -0
  491. package/dist/services/handoff/handoff-parser.d.ts +28 -0
  492. package/dist/services/handoff/handoff-parser.js +69 -0
  493. package/dist/services/handoff/handoff-types.d.ts +39 -0
  494. package/dist/services/handoff/handoff-types.js +19 -0
  495. package/dist/services/handoff/handoff-writer.d.ts +23 -0
  496. package/dist/services/handoff/handoff-writer.js +30 -0
  497. package/dist/services/hooks/auto-compact-hook-install.d.ts +104 -0
  498. package/dist/services/hooks/auto-compact-hook-install.js +157 -0
  499. package/dist/services/hooks/output.d.ts +92 -0
  500. package/dist/services/hooks/output.js +111 -0
  501. package/dist/services/hooks/presence-marker-detector.d.ts +16 -0
  502. package/dist/services/hooks/presence-marker-detector.js +105 -0
  503. package/dist/services/ide/adapters/claude-code-adapter.d.ts +18 -0
  504. package/dist/services/ide/adapters/claude-code-adapter.js +103 -0
  505. package/dist/services/ide/adapters/codex-adapter.d.ts +46 -0
  506. package/dist/services/ide/adapters/codex-adapter.js +97 -0
  507. package/dist/services/ide/adapters/cursor-adapter.d.ts +36 -0
  508. package/dist/services/ide/adapters/cursor-adapter.js +84 -0
  509. package/dist/services/ide/adapters/hermes-adapter.d.ts +21 -0
  510. package/dist/services/ide/adapters/hermes-adapter.js +51 -0
  511. package/dist/services/ide/adapters/openclaw-adapter.d.ts +14 -0
  512. package/dist/services/ide/adapters/openclaw-adapter.js +42 -0
  513. package/dist/services/ide/adapters/trae-adapter.d.ts +42 -0
  514. package/dist/services/ide/adapters/trae-adapter.js +83 -0
  515. package/dist/services/ide/adapters/zcode-adapter.d.ts +40 -0
  516. package/dist/services/ide/adapters/zcode-adapter.js +220 -0
  517. package/dist/services/ide/current-model-detector.d.ts +14 -0
  518. package/dist/services/ide/current-model-detector.js +60 -0
  519. package/dist/services/ide/hook-protocol.d.ts +47 -0
  520. package/dist/services/ide/hook-protocol.js +74 -0
  521. package/dist/services/ide/hook-translator.d.ts +72 -0
  522. package/dist/services/ide/hook-translator.js +128 -0
  523. package/dist/services/ide/ide-detector.d.ts +10 -0
  524. package/dist/services/ide/ide-detector.js +19 -0
  525. package/dist/services/ide/ide-registry.d.ts +14 -0
  526. package/dist/services/ide/ide-registry.js +63 -0
  527. package/dist/services/ide/ide-types.d.ts +253 -0
  528. package/dist/services/ide/ide-types.js +2 -0
  529. package/dist/services/ide/resource-profile.d.ts +52 -0
  530. package/dist/services/ide/resource-profile.js +33 -0
  531. package/dist/services/ide/shared/atomic-json.d.ts +15 -0
  532. package/dist/services/ide/shared/atomic-json.js +58 -0
  533. package/dist/services/ide/shared/safe-path.d.ts +11 -0
  534. package/dist/services/ide/shared/safe-path.js +29 -0
  535. package/dist/services/impact/impact-scan-service.d.ts +66 -0
  536. package/dist/services/impact/impact-scan-service.js +197 -0
  537. package/dist/services/job/job-event-emitter.d.ts +30 -0
  538. package/dist/services/job/job-event-emitter.js +5 -0
  539. package/dist/services/job/job-orchestrator.d.ts +50 -0
  540. package/dist/services/job/job-orchestrator.js +104 -0
  541. package/dist/services/job/job-progress-store.d.ts +60 -0
  542. package/dist/services/job/job-progress-store.js +70 -0
  543. package/dist/services/job/job-resource-snapshot.d.ts +7 -0
  544. package/dist/services/job/job-resource-snapshot.js +75 -0
  545. package/dist/services/job/job-rotation.d.ts +17 -0
  546. package/dist/services/job/job-rotation.js +30 -0
  547. package/dist/services/job/job-state-store.d.ts +24 -0
  548. package/dist/services/job/job-state-store.js +60 -0
  549. package/dist/services/job/job-types.d.ts +444 -0
  550. package/dist/services/job/job-types.js +87 -0
  551. package/dist/services/job/subagent-job-wrapper.d.ts +35 -0
  552. package/dist/services/job/subagent-job-wrapper.js +30 -0
  553. package/dist/services/legacy/legacy-detector.d.ts +34 -0
  554. package/dist/services/legacy/legacy-detector.js +111 -0
  555. package/dist/services/log/log-commands-service.d.ts +54 -0
  556. package/dist/services/log/log-commands-service.js +83 -0
  557. package/dist/services/log/logger.d.ts +103 -0
  558. package/dist/services/log/logger.js +224 -0
  559. package/dist/services/log/redact.d.ts +32 -0
  560. package/dist/services/log/redact.js +89 -0
  561. package/dist/services/log/retention.d.ts +34 -0
  562. package/dist/services/log/retention.js +78 -0
  563. package/dist/services/loop/evaluator-dispatcher.d.ts +50 -0
  564. package/dist/services/loop/evaluator-dispatcher.js +552 -0
  565. package/dist/services/loop/loop-bee-relation-service.d.ts +107 -0
  566. package/dist/services/loop/loop-bee-relation-service.js +211 -0
  567. package/dist/services/loop/loop-bee-relation-store.d.ts +53 -0
  568. package/dist/services/loop/loop-bee-relation-store.js +130 -0
  569. package/dist/services/loop/loop-bee-relation-types.d.ts +118 -0
  570. package/dist/services/loop/loop-bee-relation-types.js +114 -0
  571. package/dist/services/loop/loop-release-service.d.ts +46 -0
  572. package/dist/services/loop/loop-release-service.js +66 -0
  573. package/dist/services/loop/loop-release-store.d.ts +55 -0
  574. package/dist/services/loop/loop-release-store.js +134 -0
  575. package/dist/services/loop/loop-release-types.d.ts +250 -0
  576. package/dist/services/loop/loop-release-types.js +162 -0
  577. package/dist/services/loop/monotonic-guard.d.ts +80 -0
  578. package/dist/services/loop/monotonic-guard.js +232 -0
  579. package/dist/services/loop/monotonic-runner.d.ts +58 -0
  580. package/dist/services/loop/monotonic-runner.js +231 -0
  581. package/dist/services/loop/run-driver.d.ts +70 -0
  582. package/dist/services/loop/run-driver.js +400 -0
  583. package/dist/services/loop/spec-service.d.ts +90 -0
  584. package/dist/services/loop/spec-service.js +497 -0
  585. package/dist/services/memory/llm-reranker.d.ts +174 -0
  586. package/dist/services/memory/llm-reranker.js +284 -0
  587. package/dist/services/memory/memory-search-service.d.ts +93 -0
  588. package/dist/services/memory/memory-search-service.js +117 -0
  589. package/dist/services/memory/project-context-service.d.ts +21 -0
  590. package/dist/services/memory/project-context-service.js +161 -0
  591. package/dist/services/memory/project-memory-service.d.ts +167 -0
  592. package/dist/services/memory/project-memory-service.js +817 -0
  593. package/dist/services/migrate-skill-name/migrate.d.ts +17 -0
  594. package/dist/services/migrate-skill-name/migrate.js +152 -0
  595. package/dist/services/migrate-skill-name/schema.d.ts +42 -0
  596. package/dist/services/migrate-skill-name/schema.js +25 -0
  597. package/dist/services/migration/v2-10-to-v2-11-service.d.ts +44 -0
  598. package/dist/services/migration/v2-10-to-v2-11-service.js +190 -0
  599. package/dist/services/migration/v2-10-to-v2-11-types.d.ts +41 -0
  600. package/dist/services/migration/v2-10-to-v2-11-types.js +23 -0
  601. package/dist/services/mode/bypass-tracker.d.ts +4 -0
  602. package/dist/services/mode/bypass-tracker.js +31 -0
  603. package/dist/services/mode/mode-enforcement.d.ts +14 -0
  604. package/dist/services/mode/mode-enforcement.js +84 -0
  605. package/dist/services/mut/assert-scanner.d.ts +6 -0
  606. package/dist/services/mut/assert-scanner.js +116 -0
  607. package/dist/services/mut/index.d.ts +8 -0
  608. package/dist/services/mut/index.js +7 -0
  609. package/dist/services/mut/mut-runner.d.ts +39 -0
  610. package/dist/services/mut/mut-runner.js +29 -0
  611. package/dist/services/mut/production-stryker.d.ts +2 -0
  612. package/dist/services/mut/production-stryker.js +75 -0
  613. package/dist/services/mut/report-builder.d.ts +11 -0
  614. package/dist/services/mut/report-builder.js +110 -0
  615. package/dist/services/mut/report-loader.d.ts +31 -0
  616. package/dist/services/mut/report-loader.js +78 -0
  617. package/dist/services/mut/thresholds.d.ts +21 -0
  618. package/dist/services/mut/thresholds.js +22 -0
  619. package/dist/services/mut/types.d.ts +336 -0
  620. package/dist/services/mut/types.js +59 -0
  621. package/dist/services/observability/aggregation.d.ts +64 -0
  622. package/dist/services/observability/aggregation.js +217 -0
  623. package/dist/services/observability/jsonl-store.d.ts +59 -0
  624. package/dist/services/observability/jsonl-store.js +120 -0
  625. package/dist/services/observability/observability-service.d.ts +95 -0
  626. package/dist/services/observability/observability-service.js +119 -0
  627. package/dist/services/observability/report-formatter.d.ts +42 -0
  628. package/dist/services/observability/report-formatter.js +156 -0
  629. package/dist/services/openspec/openspec-archive-service.d.ts +12 -0
  630. package/dist/services/openspec/openspec-archive-service.js +28 -0
  631. package/dist/services/openspec/openspec-bridge-service.d.ts +16 -0
  632. package/dist/services/openspec/openspec-bridge-service.js +76 -0
  633. package/dist/services/openspec/openspec-init-service.d.ts +23 -0
  634. package/dist/services/openspec/openspec-init-service.js +122 -0
  635. package/dist/services/openspec/openspec-propose-from-doctor-service.d.ts +31 -0
  636. package/dist/services/openspec/openspec-propose-from-doctor-service.js +95 -0
  637. package/dist/services/openspec/openspec-render-service.d.ts +38 -0
  638. package/dist/services/openspec/openspec-render-service.js +130 -0
  639. package/dist/services/openspec/openspec-scan-service.d.ts +6 -0
  640. package/dist/services/openspec/openspec-scan-service.js +123 -0
  641. package/dist/services/openspec/openspec-types.d.ts +39 -0
  642. package/dist/services/openspec/openspec-types.js +1 -0
  643. package/dist/services/openspec/openspec-validate-service.d.ts +27 -0
  644. package/dist/services/openspec/openspec-validate-service.js +77 -0
  645. package/dist/services/perf/perf-baseline-service.d.ts +70 -0
  646. package/dist/services/perf/perf-baseline-service.js +214 -0
  647. package/dist/services/polyrepo/polyrepo-dispatcher.d.ts +34 -0
  648. package/dist/services/polyrepo/polyrepo-dispatcher.js +119 -0
  649. package/dist/services/polyrepo/polyrepo-scanner.d.ts +9 -0
  650. package/dist/services/polyrepo/polyrepo-scanner.js +94 -0
  651. package/dist/services/polyrepo/polyrepo-service.d.ts +34 -0
  652. package/dist/services/polyrepo/polyrepo-service.js +49 -0
  653. package/dist/services/polyrepo/polyrepo-types.d.ts +55 -0
  654. package/dist/services/polyrepo/polyrepo-types.js +1 -0
  655. package/dist/services/prd/handoff-auto-regen.d.ts +22 -0
  656. package/dist/services/prd/handoff-auto-regen.js +73 -0
  657. package/dist/services/prd/handoff-service.d.ts +54 -0
  658. package/dist/services/prd/handoff-service.js +142 -0
  659. package/dist/services/prd/handoff-types.d.ts +64 -0
  660. package/dist/services/prd/handoff-types.js +22 -0
  661. package/dist/services/prd/prd-blocks-checker.d.ts +51 -0
  662. package/dist/services/prd/prd-blocks-checker.js +130 -0
  663. package/dist/services/prd/project-scan-bootstrap-service.d.ts +52 -0
  664. package/dist/services/prd/project-scan-bootstrap-service.js +445 -0
  665. package/dist/services/prd/project-scan-reader.d.ts +24 -0
  666. package/dist/services/prd/project-scan-reader.js +150 -0
  667. package/dist/services/prd/project-scan-sediment.d.ts +97 -0
  668. package/dist/services/prd/project-scan-sediment.js +445 -0
  669. package/dist/services/prd/project-scan-types.d.ts +66 -0
  670. package/dist/services/prd/project-scan-types.js +20 -0
  671. package/dist/services/preferences/preferences-service.d.ts +38 -0
  672. package/dist/services/preferences/preferences-service.js +198 -0
  673. package/dist/services/preferences/preferences-types.d.ts +148 -0
  674. package/dist/services/preferences/preferences-types.js +53 -0
  675. package/dist/services/profiles/profile-service.d.ts +6 -0
  676. package/dist/services/profiles/profile-service.js +19 -0
  677. package/dist/services/progress/progress-service.d.ts +125 -0
  678. package/dist/services/progress/progress-service.js +192 -0
  679. package/dist/services/providers/minimax-provider-service.d.ts +24 -0
  680. package/dist/services/providers/minimax-provider-service.js +143 -0
  681. package/dist/services/providers/minimax-worker-service.d.ts +21 -0
  682. package/dist/services/providers/minimax-worker-service.js +83 -0
  683. package/dist/services/proxy/proxy-service.d.ts +7 -0
  684. package/dist/services/proxy/proxy-service.js +31 -0
  685. package/dist/services/qa/browser-event-logger.d.ts +40 -0
  686. package/dist/services/qa/browser-event-logger.js +54 -0
  687. package/dist/services/qa/browser-restart-detector.d.ts +74 -0
  688. package/dist/services/qa/browser-restart-detector.js +138 -0
  689. package/dist/services/qa/browser-reuse-hint.d.ts +18 -0
  690. package/dist/services/qa/browser-reuse-hint.js +18 -0
  691. package/dist/services/qa/browser-wrapper-service.d.ts +37 -0
  692. package/dist/services/qa/browser-wrapper-service.js +88 -0
  693. package/dist/services/qa/qa-business-review-state.d.ts +47 -0
  694. package/dist/services/qa/qa-business-review-state.js +96 -0
  695. package/dist/services/rd/ast-gate.d.ts +19 -0
  696. package/dist/services/rd/ast-gate.js +71 -0
  697. package/dist/services/rd/impl.d.ts +9 -0
  698. package/dist/services/rd/impl.js +57 -0
  699. package/dist/services/rd/rd-service.d.ts +129 -0
  700. package/dist/services/rd/rd-service.js +441 -0
  701. package/dist/services/rd/reviewer-dispatch-policy.d.ts +122 -0
  702. package/dist/services/rd/reviewer-dispatch-policy.js +148 -0
  703. package/dist/services/rd/standards-diagnostic.d.ts +76 -0
  704. package/dist/services/rd/standards-diagnostic.js +166 -0
  705. package/dist/services/rd/strategic-stage.d.ts +4 -0
  706. package/dist/services/rd/strategic-stage.js +15 -0
  707. package/dist/services/rd/strategy.d.ts +13 -0
  708. package/dist/services/rd/strategy.js +60 -0
  709. package/dist/services/rd/tactical-stage.d.ts +33 -0
  710. package/dist/services/rd/tactical-stage.js +62 -0
  711. package/dist/services/rd/types.d.ts +252 -0
  712. package/dist/services/rd/types.js +47 -0
  713. package/dist/services/recommendations/capability-availability.d.ts +5 -0
  714. package/dist/services/recommendations/capability-availability.js +40 -0
  715. package/dist/services/recommendations/capability-map-service.d.ts +7 -0
  716. package/dist/services/recommendations/capability-map-service.js +131 -0
  717. package/dist/services/recommendations/capability-seed-items.d.ts +2 -0
  718. package/dist/services/recommendations/capability-seed-items.js +140 -0
  719. package/dist/services/recommendations/capability-seed-mappings.d.ts +2 -0
  720. package/dist/services/recommendations/capability-seed-mappings.js +54 -0
  721. package/dist/services/recommendations/capability-seed-sources.d.ts +2 -0
  722. package/dist/services/recommendations/capability-seed-sources.js +35 -0
  723. package/dist/services/recommendations/recommendation-service.d.ts +8 -0
  724. package/dist/services/recommendations/recommendation-service.js +106 -0
  725. package/dist/services/recommendations/recommendation-types.d.ts +129 -0
  726. package/dist/services/recommendations/recommendation-types.js +1 -0
  727. package/dist/services/recommendations/seed-capability-catalog.d.ts +3 -0
  728. package/dist/services/recommendations/seed-capability-catalog.js +3 -0
  729. package/dist/services/refactor/refactor-service.d.ts +9 -0
  730. package/dist/services/refactor/refactor-service.js +36 -0
  731. package/dist/services/release/release-state.d.ts +70 -0
  732. package/dist/services/release/release-state.js +140 -0
  733. package/dist/services/retrospective/retrospective-index.d.ts +37 -0
  734. package/dist/services/retrospective/retrospective-index.js +110 -0
  735. package/dist/services/retrospective/retrospective-search-service.d.ts +55 -0
  736. package/dist/services/retrospective/retrospective-search-service.js +107 -0
  737. package/dist/services/retrospective/retrospective-show.d.ts +40 -0
  738. package/dist/services/retrospective/retrospective-show.js +109 -0
  739. package/dist/services/reviewer/model-family.d.ts +18 -0
  740. package/dist/services/reviewer/model-family.js +70 -0
  741. package/dist/services/reviewer/providers/anthropic.d.ts +2 -0
  742. package/dist/services/reviewer/providers/anthropic.js +61 -0
  743. package/dist/services/reviewer/providers/ollama.d.ts +26 -0
  744. package/dist/services/reviewer/providers/ollama.js +38 -0
  745. package/dist/services/reviewer/providers/openai.d.ts +2 -0
  746. package/dist/services/reviewer/providers/openai.js +63 -0
  747. package/dist/services/reviewer/reviewer-config.d.ts +34 -0
  748. package/dist/services/reviewer/reviewer-config.js +100 -0
  749. package/dist/services/reviewer/reviewer-service.d.ts +56 -0
  750. package/dist/services/reviewer/reviewer-service.js +263 -0
  751. package/dist/services/reviewer/selection-strategies.d.ts +27 -0
  752. package/dist/services/reviewer/selection-strategies.js +53 -0
  753. package/dist/services/role/role-registry.d.ts +38 -0
  754. package/dist/services/role/role-registry.js +83 -0
  755. package/dist/services/runtime/runtime-detector.d.ts +15 -0
  756. package/dist/services/runtime/runtime-detector.js +62 -0
  757. package/dist/services/runtime/runtime-service.d.ts +59 -0
  758. package/dist/services/runtime/runtime-service.js +51 -0
  759. package/dist/services/runtime/vendor-adapter.d.ts +59 -0
  760. package/dist/services/runtime/vendor-adapter.js +1 -0
  761. package/dist/services/runtime/vendors/claude-code.d.ts +7 -0
  762. package/dist/services/runtime/vendors/claude-code.js +39 -0
  763. package/dist/services/runtime/vendors/codex.d.ts +7 -0
  764. package/dist/services/runtime/vendors/codex.js +43 -0
  765. package/dist/services/runtime/vendors/copilot.d.ts +7 -0
  766. package/dist/services/runtime/vendors/copilot.js +40 -0
  767. package/dist/services/sc/index.d.ts +1 -0
  768. package/dist/services/sc/index.js +1 -0
  769. package/dist/services/sc/sc-service.d.ts +131 -0
  770. package/dist/services/sc/sc-service.js +552 -0
  771. package/dist/services/scan/acceptance-coverage-service.d.ts +42 -0
  772. package/dist/services/scan/acceptance-coverage-service.js +140 -0
  773. package/dist/services/scan/api-surface-service.d.ts +69 -0
  774. package/dist/services/scan/api-surface-service.js +239 -0
  775. package/dist/services/scan/archetype-service.d.ts +5 -0
  776. package/dist/services/scan/archetype-service.js +254 -0
  777. package/dist/services/scan/diff-scope-service.d.ts +40 -0
  778. package/dist/services/scan/diff-scope-service.js +198 -0
  779. package/dist/services/scan/existing-system-service.d.ts +7 -0
  780. package/dist/services/scan/existing-system-service.js +300 -0
  781. package/dist/services/scan/file-size-scan.d.ts +23 -0
  782. package/dist/services/scan/file-size-scan.js +68 -0
  783. package/dist/services/scan/karpathy-service.d.ts +60 -0
  784. package/dist/services/scan/karpathy-service.js +228 -0
  785. package/dist/services/scan/libraries-service.d.ts +24 -0
  786. package/dist/services/scan/libraries-service.js +419 -0
  787. package/dist/services/scan/libraries-types.d.ts +59 -0
  788. package/dist/services/scan/libraries-types.js +9 -0
  789. package/dist/services/scan/orphan-service.d.ts +76 -0
  790. package/dist/services/scan/orphan-service.js +538 -0
  791. package/dist/services/scan/scan-types.d.ts +59 -0
  792. package/dist/services/scan/scan-types.js +1 -0
  793. package/dist/services/scan/type-sanity-service.d.ts +23 -0
  794. package/dist/services/scan/type-sanity-service.js +116 -0
  795. package/dist/services/security/safe-settings-path.d.ts +12 -0
  796. package/dist/services/security/safe-settings-path.js +104 -0
  797. package/dist/services/sediment/dispose-confirm.d.ts +9 -0
  798. package/dist/services/sediment/dispose-confirm.js +5 -0
  799. package/dist/services/sediment/json-schema.d.ts +247 -0
  800. package/dist/services/sediment/json-schema.js +26 -0
  801. package/dist/services/sediment/manifest-lint.d.ts +13 -0
  802. package/dist/services/sediment/manifest-lint.js +11 -0
  803. package/dist/services/sediment/pool-paths.d.ts +22 -0
  804. package/dist/services/sediment/pool-paths.js +25 -0
  805. package/dist/services/sediment/pool-read.d.ts +20 -0
  806. package/dist/services/sediment/pool-read.js +73 -0
  807. package/dist/services/sediment/pool-rebuild-index.d.ts +15 -0
  808. package/dist/services/sediment/pool-rebuild-index.js +28 -0
  809. package/dist/services/sediment/pool-write.d.ts +14 -0
  810. package/dist/services/sediment/pool-write.js +25 -0
  811. package/dist/services/sediment/promotion-gate.d.ts +12 -0
  812. package/dist/services/sediment/promotion-gate.js +20 -0
  813. package/dist/services/sediment/types.d.ts +52 -0
  814. package/dist/services/sediment/types.js +1 -0
  815. package/dist/services/session/binding-status-service.d.ts +56 -0
  816. package/dist/services/session/binding-status-service.js +106 -0
  817. package/dist/services/session/binding-store.d.ts +161 -0
  818. package/dist/services/session/binding-store.js +509 -0
  819. package/dist/services/session/caller-binding-service.d.ts +70 -0
  820. package/dist/services/session/caller-binding-service.js +148 -0
  821. package/dist/services/session/caller-id-types.d.ts +77 -0
  822. package/dist/services/session/caller-id-types.js +46 -0
  823. package/dist/services/session/getSessionDir.d.ts +1 -0
  824. package/dist/services/session/getSessionDir.js +27 -0
  825. package/dist/services/session/index.d.ts +6 -0
  826. package/dist/services/session/index.js +7 -0
  827. package/dist/services/session/platform-fallbacks.d.ts +31 -0
  828. package/dist/services/session/platform-fallbacks.js +35 -0
  829. package/dist/services/session/resolve-caller-id.d.ts +57 -0
  830. package/dist/services/session/resolve-caller-id.js +88 -0
  831. package/dist/services/session/session-binding-bridge.d.ts +76 -0
  832. package/dist/services/session/session-binding-bridge.js +247 -0
  833. package/dist/services/session/session-checkpoint-service.d.ts +57 -0
  834. package/dist/services/session/session-checkpoint-service.js +143 -0
  835. package/dist/services/session/session-manager.d.ts +168 -0
  836. package/dist/services/session/session-manager.js +502 -0
  837. package/dist/services/session/session-resume-service.d.ts +25 -0
  838. package/dist/services/session/session-resume-service.js +101 -0
  839. package/dist/services/share/bundle-reader.d.ts +100 -0
  840. package/dist/services/share/bundle-reader.js +434 -0
  841. package/dist/services/share/bundle-types.d.ts +392 -0
  842. package/dist/services/share/bundle-types.js +318 -0
  843. package/dist/services/share/bundle-writer.d.ts +97 -0
  844. package/dist/services/share/bundle-writer.js +429 -0
  845. package/dist/services/share/run-state-contract.d.ts +133 -0
  846. package/dist/services/share/run-state-contract.js +138 -0
  847. package/dist/services/signal/cancel-handler.d.ts +14 -0
  848. package/dist/services/signal/cancel-handler.js +76 -0
  849. package/dist/services/skill/resume-detector.d.ts +54 -0
  850. package/dist/services/skill/resume-detector.js +334 -0
  851. package/dist/services/skill/skill-scheduler.d.ts +40 -0
  852. package/dist/services/skill/skill-scheduler.js +53 -0
  853. package/dist/services/skill/skill-search-service.d.ts +88 -0
  854. package/dist/services/skill/skill-search-service.js +228 -0
  855. package/dist/services/skillhub/release-diff.d.ts +18 -0
  856. package/dist/services/skillhub/release-diff.js +38 -0
  857. package/dist/services/skillhub/release-export.d.ts +8 -0
  858. package/dist/services/skillhub/release-export.js +31 -0
  859. package/dist/services/skillhub/release-gc-blobs.d.ts +13 -0
  860. package/dist/services/skillhub/release-gc-blobs.js +32 -0
  861. package/dist/services/skillhub/release-import.d.ts +7 -0
  862. package/dist/services/skillhub/release-import.js +64 -0
  863. package/dist/services/skillhub/release-retain.d.ts +23 -0
  864. package/dist/services/skillhub/release-retain.js +94 -0
  865. package/dist/services/skillhub/sqlite-store.d.ts +22 -0
  866. package/dist/services/skillhub/sqlite-store.js +63 -0
  867. package/dist/services/skillhub/tar-runtime.d.ts +21 -0
  868. package/dist/services/skillhub/tar-runtime.js +91 -0
  869. package/dist/services/skillhub/types.d.ts +115 -0
  870. package/dist/services/skillhub/types.js +1 -0
  871. package/dist/services/skills/hooks-settings-service.d.ts +137 -0
  872. package/dist/services/skills/hooks-settings-service.js +396 -0
  873. package/dist/services/skills/skill-conformance-service.d.ts +40 -0
  874. package/dist/services/skills/skill-conformance-service.js +139 -0
  875. package/dist/services/skills/skill-presence-service.d.ts +158 -0
  876. package/dist/services/skills/skill-presence-service.js +474 -0
  877. package/dist/services/skills/skill-registry.d.ts +17 -0
  878. package/dist/services/skills/skill-registry.js +67 -0
  879. package/dist/services/skills/skill-runbook-service.d.ts +11 -0
  880. package/dist/services/skills/skill-runbook-service.js +128 -0
  881. package/dist/services/skills/skill-statusline-renderer.d.ts +6 -0
  882. package/dist/services/skills/skill-statusline-renderer.js +55 -0
  883. package/dist/services/skills/skill-statusline-service.d.ts +24 -0
  884. package/dist/services/skills/skill-statusline-service.js +110 -0
  885. package/dist/services/skills/statusline-settings-service.d.ts +59 -0
  886. package/dist/services/skills/statusline-settings-service.js +141 -0
  887. package/dist/services/skills/sync-service.d.ts +86 -0
  888. package/dist/services/skills/sync-service.js +271 -0
  889. package/dist/services/slice/calibration-store.d.ts +39 -0
  890. package/dist/services/slice/calibration-store.js +68 -0
  891. package/dist/services/slice/cross-pass-edge-merger.d.ts +53 -0
  892. package/dist/services/slice/cross-pass-edge-merger.js +246 -0
  893. package/dist/services/slice/granularity-decider.d.ts +37 -0
  894. package/dist/services/slice/granularity-decider.js +40 -0
  895. package/dist/services/slice/llm-arbitrator.d.ts +35 -0
  896. package/dist/services/slice/llm-arbitrator.js +63 -0
  897. package/dist/services/slice/multi-pass-orchestrator.d.ts +67 -0
  898. package/dist/services/slice/multi-pass-orchestrator.js +225 -0
  899. package/dist/services/slice/schema-router.d.ts +44 -0
  900. package/dist/services/slice/schema-router.js +61 -0
  901. package/dist/services/slice/slice-archive-service.d.ts +20 -0
  902. package/dist/services/slice/slice-archive-service.js +111 -0
  903. package/dist/services/slice/slice-benchmark-service.d.ts +19 -0
  904. package/dist/services/slice/slice-benchmark-service.js +60 -0
  905. package/dist/services/slice/slice-check-service.d.ts +2 -0
  906. package/dist/services/slice/slice-check-service.js +459 -0
  907. package/dist/services/slice/slice-check-types.d.ts +104 -0
  908. package/dist/services/slice/slice-check-types.js +28 -0
  909. package/dist/services/slice/slice-decompose-runners.d.ts +23 -0
  910. package/dist/services/slice/slice-decompose-runners.js +174 -0
  911. package/dist/services/slice/slice-decompose-service.d.ts +24 -0
  912. package/dist/services/slice/slice-decompose-service.js +532 -0
  913. package/dist/services/slice/slice-decompose-types.d.ts +263 -0
  914. package/dist/services/slice/slice-decompose-types.js +30 -0
  915. package/dist/services/slice/slice-integration.d.ts +43 -0
  916. package/dist/services/slice/slice-integration.js +106 -0
  917. package/dist/services/slice/slice-pick-service.d.ts +32 -0
  918. package/dist/services/slice/slice-pick-service.js +75 -0
  919. package/dist/services/slice/slice-review-state.d.ts +70 -0
  920. package/dist/services/slice/slice-review-state.js +109 -0
  921. package/dist/services/slice/slice-topology-types.d.ts +115 -0
  922. package/dist/services/slice/slice-topology-types.js +20 -0
  923. package/dist/services/smoke/smoke-paths-state.d.ts +73 -0
  924. package/dist/services/smoke/smoke-paths-state.js +117 -0
  925. package/dist/services/sop/gate-enforce-service.d.ts +33 -0
  926. package/dist/services/sop/gate-enforce-service.js +168 -0
  927. package/dist/services/sop/sop-advance-service.d.ts +74 -0
  928. package/dist/services/sop/sop-advance-service.js +115 -0
  929. package/dist/services/sop/sop-check-service.d.ts +45 -0
  930. package/dist/services/sop/sop-check-service.js +181 -0
  931. package/dist/services/sop/sop-paths.d.ts +62 -0
  932. package/dist/services/sop/sop-paths.js +92 -0
  933. package/dist/services/sop/sop-registry-service.d.ts +46 -0
  934. package/dist/services/sop/sop-registry-service.js +89 -0
  935. package/dist/services/sop/sop-service.d.ts +55 -0
  936. package/dist/services/sop/sop-service.js +222 -0
  937. package/dist/services/sop/sop-types.d.ts +95 -0
  938. package/dist/services/sop/sop-types.js +11 -0
  939. package/dist/services/standards/ide-aware-standards-service.d.ts +94 -0
  940. package/dist/services/standards/ide-aware-standards-service.js +91 -0
  941. package/dist/services/standards/loop-engineering-lint.d.ts +38 -0
  942. package/dist/services/standards/loop-engineering-lint.js +101 -0
  943. package/dist/services/standards/loop-engineering-readiness-lint.d.ts +111 -0
  944. package/dist/services/standards/loop-engineering-readiness-lint.js +248 -0
  945. package/dist/services/standards/migrate-claude-rules-service.d.ts +19 -0
  946. package/dist/services/standards/migrate-claude-rules-service.js +214 -0
  947. package/dist/services/standards/migrate-service.d.ts +63 -0
  948. package/dist/services/standards/migrate-service.js +193 -0
  949. package/dist/services/standards/missing-standards-detector.d.ts +81 -0
  950. package/dist/services/standards/missing-standards-detector.js +139 -0
  951. package/dist/services/standards/project-context.d.ts +24 -0
  952. package/dist/services/standards/project-context.js +314 -0
  953. package/dist/services/standards/project-standards-service.d.ts +114 -0
  954. package/dist/services/standards/project-standards-service.js +693 -0
  955. package/dist/services/tech/tech-service.d.ts +69 -0
  956. package/dist/services/tech/tech-service.js +299 -0
  957. package/dist/services/test-cache/test-cache-service.d.ts +70 -0
  958. package/dist/services/test-cache/test-cache-service.js +175 -0
  959. package/dist/services/understand/hybrid-types.d.ts +32 -0
  960. package/dist/services/understand/hybrid-types.js +1 -0
  961. package/dist/services/understand/understand-hybrid-service.d.ts +10 -0
  962. package/dist/services/understand/understand-hybrid-service.js +100 -0
  963. package/dist/services/understand/understand-scan-service.d.ts +28 -0
  964. package/dist/services/understand/understand-scan-service.js +170 -0
  965. package/dist/services/understand/understand-types.d.ts +50 -0
  966. package/dist/services/understand/understand-types.js +1 -0
  967. package/dist/services/upgrade/1x-detector-service.d.ts +7 -0
  968. package/dist/services/upgrade/1x-detector-service.js +94 -0
  969. package/dist/services/upgrade/gitignore-migrate-service.d.ts +56 -0
  970. package/dist/services/upgrade/gitignore-migrate-service.js +170 -0
  971. package/dist/services/upgrade/upgrade-service.d.ts +81 -0
  972. package/dist/services/upgrade/upgrade-service.js +403 -0
  973. package/dist/services/verdict/envelopes.d.ts +93 -0
  974. package/dist/services/verdict/envelopes.js +349 -0
  975. package/dist/services/verdict/verdict-aggregator.d.ts +94 -0
  976. package/dist/services/verdict/verdict-aggregator.js +112 -0
  977. package/dist/services/workflow/artifact-paths.d.ts +59 -0
  978. package/dist/services/workflow/artifact-paths.js +166 -0
  979. package/dist/services/workflow/autonomous-resume-writer.d.ts +16 -0
  980. package/dist/services/workflow/autonomous-resume-writer.js +170 -0
  981. package/dist/services/workflow/pipeline-verify-service.d.ts +90 -0
  982. package/dist/services/workflow/pipeline-verify-service.js +449 -0
  983. package/dist/services/workflow/plan-reader.d.ts +29 -0
  984. package/dist/services/workflow/plan-reader.js +174 -0
  985. package/dist/services/workflow/plan-refresher.d.ts +32 -0
  986. package/dist/services/workflow/plan-refresher.js +353 -0
  987. package/dist/services/workflow/plan-trigger-detector.d.ts +55 -0
  988. package/dist/services/workflow/plan-trigger-detector.js +142 -0
  989. package/dist/services/workflow/workflow-autonomous-resume-helpers.d.ts +19 -0
  990. package/dist/services/workflow/workflow-autonomous-resume-helpers.js +300 -0
  991. package/dist/services/workflow/workflow-autonomous-service.d.ts +100 -0
  992. package/dist/services/workflow/workflow-autonomous-service.js +306 -0
  993. package/dist/services/workflow/workflow-loader.d.ts +63 -0
  994. package/dist/services/workflow/workflow-loader.js +168 -0
  995. package/dist/services/workflow/workflow-router-service.d.ts +85 -0
  996. package/dist/services/workflow/workflow-router-service.js +233 -0
  997. package/dist/services/workflow/workflow-skip-service.d.ts +106 -0
  998. package/dist/services/workflow/workflow-skip-service.js +209 -0
  999. package/dist/services/workflow/workflow-spec.d.ts +116 -0
  1000. package/dist/services/workflow/workflow-spec.js +431 -0
  1001. package/dist/services/workflow/workflow-state-store.d.ts +27 -0
  1002. package/dist/services/workflow/workflow-state-store.js +95 -0
  1003. package/dist/services/workspace/claude-settings-template.d.ts +101 -0
  1004. package/dist/services/workspace/claude-settings-template.js +254 -0
  1005. package/dist/services/workspace/migrate-1-4-1-service.d.ts +44 -0
  1006. package/dist/services/workspace/migrate-1-4-1-service.js +195 -0
  1007. package/dist/services/workspace/migrate-service.d.ts +2 -0
  1008. package/dist/services/workspace/migrate-service.js +613 -0
  1009. package/dist/services/workspace/migrate-types.d.ts +127 -0
  1010. package/dist/services/workspace/migrate-types.js +21 -0
  1011. package/dist/services/workspace/reconcile-service.d.ts +188 -0
  1012. package/dist/services/workspace/reconcile-service.js +683 -0
  1013. package/dist/services/workspace/reconcile-types.d.ts +130 -0
  1014. package/dist/services/workspace/reconcile-types.js +13 -0
  1015. package/dist/services/workspace/sid-naming-guard.d.ts +17 -0
  1016. package/dist/services/workspace/sid-naming-guard.js +34 -0
  1017. package/dist/services/workspace/templates/project-scan/audit-output-schema.md +100 -0
  1018. package/dist/services/workspace/templates/project-scan/business-knowledge.md +44 -0
  1019. package/dist/services/workspace/templates/project-scan/index.d.ts +34 -0
  1020. package/dist/services/workspace/templates/project-scan/index.js +60 -0
  1021. package/dist/services/workspace/templates/project-scan/perf-template.md +109 -0
  1022. package/dist/services/workspace/templates/project-scan/security-template.md +99 -0
  1023. package/dist/services/workspace/workspace-claude-settings-materializer.d.ts +45 -0
  1024. package/dist/services/workspace/workspace-claude-settings-materializer.js +194 -0
  1025. package/dist/services/workspace/workspace-clean-service.d.ts +28 -0
  1026. package/dist/services/workspace/workspace-clean-service.js +46 -0
  1027. package/dist/services/workspace/workspace-service.d.ts +177 -0
  1028. package/dist/services/workspace/workspace-service.js +432 -0
  1029. package/dist/services/workspace/workspace-state-service.d.ts +7 -0
  1030. package/dist/services/workspace/workspace-state-service.js +43 -0
  1031. package/dist/shared/format-md-compact.d.ts +32 -0
  1032. package/dist/shared/format-md-compact.js +297 -0
  1033. package/dist/shared/frontmatter.d.ts +6 -0
  1034. package/dist/shared/frontmatter.js +165 -0
  1035. package/dist/shared/fs-utils.d.ts +4 -0
  1036. package/dist/shared/fs-utils.js +16 -0
  1037. package/dist/shared/fs.d.ts +4 -0
  1038. package/dist/shared/fs.js +26 -0
  1039. package/dist/shared/incrementing-number.d.ts +23 -0
  1040. package/dist/shared/incrementing-number.js +68 -0
  1041. package/dist/shared/json-schema-mini.d.ts +10 -0
  1042. package/dist/shared/json-schema-mini.js +113 -0
  1043. package/dist/shared/path-safety.d.ts +21 -0
  1044. package/dist/shared/path-safety.js +54 -0
  1045. package/dist/shared/path-utils.d.ts +13 -0
  1046. package/dist/shared/path-utils.js +56 -0
  1047. package/dist/shared/paths.d.ts +6 -0
  1048. package/dist/shared/paths.js +50 -0
  1049. package/dist/shared/planner-response.d.ts +21 -0
  1050. package/dist/shared/planner-response.js +26 -0
  1051. package/dist/shared/platform.d.ts +6 -0
  1052. package/dist/shared/platform.js +11 -0
  1053. package/dist/shared/process.d.ts +5 -0
  1054. package/dist/shared/process.js +12 -0
  1055. package/dist/shared/result.d.ts +22 -0
  1056. package/dist/shared/result.js +46 -0
  1057. package/dist/shared/stale-policy.d.ts +67 -0
  1058. package/dist/shared/stale-policy.js +85 -0
  1059. package/dist/shared/version.d.ts +1 -0
  1060. package/dist/shared/version.js +1 -0
  1061. package/dist/skills/peaks-maker/index.d.ts +5 -0
  1062. package/dist/skills/peaks-maker/index.js +32 -0
  1063. package/package.json +5 -4
  1064. package/scripts/copy-templates.mjs +1 -1
@@ -0,0 +1,505 @@
1
+ /**
2
+ * `peaks workspace init` — slice 006 + 007 + 014 + 018 + 2026-06-16-peaks-code-auto-scaffold.
3
+ *
4
+ * Extracted from `src/cli/commands/workspace-commands.ts` (slice
5
+ * 2026-06-16-workspace-commands-split) to keep that entry file under the
6
+ * 800-line Karpathy cap. Owns:
7
+ * - commander option wiring (`--project`, `--session-id`, `--change-id`, etc.)
8
+ * - canonical project-root resolution
9
+ * - session id resolution (with slice-018 rotation)
10
+ * - first-time hooks install prompt + sticky marker
11
+ * - missing-standards diagnostic surface (AC1-AC7) and `--init-standards` apply
12
+ *
13
+ * Imports the shared hooks-decision marker helpers from `./helpers.ts`.
14
+ */
15
+ import { initWorkspace, InvalidSessionIdError, ConflictingSessionError, LegacyChangeIdSiblingError } from '../../../services/workspace/workspace-service.js';
16
+ // Slice 2026-06-29-change-id-root-removal: `LegacyChangeIdBindingError`
17
+ // was removed with the change-id axis. The legacy symlink-detection
18
+ // branch below no longer fires — the binding file at
19
+ // `.peaks/_runtime/current-change` is no longer written by init
20
+ // either. The sibling-dir guard (`LegacyChangeIdSiblingError`) is
21
+ // preserved because the 2.8.3 hard-ban still applies to date-stamped
22
+ // session-id-shaped directories at the `.peaks/_runtime/` sibling
23
+ // level.
24
+ import { ensureSessionWithRotation } from '../../../services/session/session-manager.js';
25
+ import { resolveCanonicalProjectRoot } from '../../../services/config/config-service.js';
26
+ import { applyHookInstall, readHookStatus } from '../../../services/skills/hooks-settings-service.js';
27
+ import { clearStalePresenceOnRotation } from '../../../services/skills/skill-presence-service.js';
28
+ import { fail, ok } from '../../../shared/result.js';
29
+ import { addJsonOption, getErrorMessage, printResult } from '../../cli-helpers.js';
30
+ import { hasStandardsCheckedMarker, markStandardsChecked } from '../../../services/standards/missing-standards-detector.js';
31
+ import { bootstrapProjectScan } from '../../../services/prd/project-scan-bootstrap-service.js';
32
+ import { readDecisionMarker, writeDecisionMarker, promptYesNo } from './helpers.js';
33
+ export function registerWorkspaceInitCommand(workspace, io) {
34
+ addJsonOption(workspace
35
+ .command('init')
36
+ .description('Create the .peaks/_runtime/<session-id>/ directory with ONLY the session.json metadata file (slice 006: role subdirs prd/ui/rd/qa/sc/txt and the system/ subdir are created lazily by writers, not pre-created at init). Pass --session-id to use a specific id, or omit it to auto-generate one (and adopt an existing binding if present). On the first call for a project, also handles the one-time "install peaks hooks" decision (sticky-marker stored in .peaks/.peaks-init-hooks-decision.json).')
37
+ .requiredOption('--project <path>', 'target project root')
38
+ .option('--session-id <id>', 'optional session id in YYYY-MM-DD-<kebab-slug> format. When omitted, the CLI is the single source of truth: an existing binding is reused, otherwise a fresh id is auto-generated.')
39
+ .option('--allow-session-rebind', 'overwrite an existing session binding when the requested session id differs from the project current one', false)
40
+ .option('--no-rotate-on-outer-mismatch', 'suppress the auto-rotation of the project session binding when the outer (Claude / harness) session id has changed. Default rotates on mismatch.')
41
+ .option('--install-hooks <mode>', 'first-time hooks install behaviour: ask (default in TTY, prompt once + sticky-marker), auto (default in --json / non-TTY, install silently + sticky-marker), skip (sticky-marker skipped, do not install)', (value) => {
42
+ if (value !== 'ask' && value !== 'auto' && value !== 'skip') {
43
+ throw new Error(`--install-hooks must be one of: ask, auto, skip (got "${value}")`);
44
+ }
45
+ return value;
46
+ })
47
+ .option('--no-claude-hooks', 'do NOT materialize .claude/settings.local.json (slice 2.0.1-bug3 fact-forcing bypass). Default: hooks installed so tool calls inside .peaks/** are not blocked by the [Fact-Forcing Gate].')
48
+ .option('--init-standards', 'slice 2026-06-16-peaks-code-auto-scaffold: when the consumer project\'s .claude/rules/ is missing or empty, auto-apply `peaks standards init --project <path> --apply` after emitting the diagnostic. Default: diagnostic only (no write).')
49
+ .option('--no-project-scan-bootstrap', 'slice 2026-07-15-project-scan-bootstrap: skip the bootstrap of .peaks/project-scan/{project-scan.md + 4 audit/business templates} that runs after init succeeds. Default: bootstrap runs (idempotent: existing files are kept unless --force-project-scan-templates is also passed).')
50
+ .option('--force-project-scan-templates', 'slice 2026-07-15-project-scan-bootstrap (AC10): overwrite the 4 audit/business templates under .peaks/project-scan/ (business-knowledge.md, security-template.md, perf-template.md, audit-output-schema.md) even when they already exist. Default: skip existing files (sediment-preserved).', false)).action(async (options) => {
51
+ try {
52
+ // Resolve the session id. Two paths:
53
+ // - explicit --session-id: use it as the requested binding target
54
+ // (ConflictingSessionError fires if it conflicts with an in-flight
55
+ // session, unless --allow-session-rebind is set)
56
+ // - omitted: defer to ensureSession(), which reuses an existing
57
+ // binding or auto-generates a fresh one. The init then writes
58
+ // .peaks/_runtime/session.json so the binding sticks.
59
+ //
60
+ // Before that: canonicalise the project root. If the user (or the
61
+ // LLM via "$(pwd)") passed a sub-directory of a real git repo
62
+ // (e.g. prompt-project/prompt-project/ inside the outer
63
+ // prompt-project/.git), promote the path to the git root. Without
64
+ // this, peaks would build a parallel .peaks/ tree under the
65
+ // nested sub-folder and silently break the project-binding model
66
+ // (the same regression that produced prompt-project/.peaks/ in
67
+ // the 5/27-5/29 sessions). When startPath is not inside any
68
+ // git repo, the helper falls through to the cwd verbatim.
69
+ const projectRoot = resolveCanonicalProjectRoot(options.project);
70
+ // Slice 018: outer-session-mismatch auto-rotation. When the
71
+ // user did NOT pass --session-id explicitly, run
72
+ // `ensureSessionWithRotation` so the binding is rotated on
73
+ // outer-mismatch before `initWorkspace` is called. The
74
+ // rotation result is surfaced in the JSON envelope via
75
+ // `data.rotation`. When --session-id IS passed, the user has
76
+ // explicitly told us which session to bind — we honor that
77
+ // verbatim and do NOT rotate (rotation only fires for the
78
+ // auto-detect path).
79
+ let sessionId;
80
+ let rotation = {
81
+ previousSessionId: null,
82
+ reason: null
83
+ };
84
+ if (options.sessionId !== undefined && options.sessionId.length > 0) {
85
+ sessionId = options.sessionId;
86
+ }
87
+ else {
88
+ const result = await ensureSessionWithRotation(projectRoot, {
89
+ // Commander translates `--no-rotate-on-outer-mismatch` into
90
+ // `options.rotateOnOuterMismatch = false` (the `--no-` prefix
91
+ // is consumed and the remainder becomes the JS property name,
92
+ // with the boolean value flipped). The pre-slice-014 anti-
93
+ // pattern (reading `options.<flag-with-no-prefix> === true`)
94
+ // is NOT used here. The default (no flag) leaves
95
+ // `options.rotateOnOuterMismatch` undefined, which is not
96
+ // equal to `false`, so the default is "rotate on mismatch"
97
+ // (the new auto-roll).
98
+ skipRotateOnOuterMismatch: options.rotateOnOuterMismatch === false
99
+ });
100
+ sessionId = result.sessionId;
101
+ rotation = {
102
+ previousSessionId: result.previousSessionId,
103
+ reason: result.rotationReason
104
+ };
105
+ }
106
+ const report = await initWorkspace({
107
+ projectRoot,
108
+ sessionId,
109
+ allowSessionRebind: options.allowSessionRebind === true,
110
+ // Commander translates `--no-claude-hooks` into
111
+ // `options.claudeHooks = false`. The default (no flag) leaves
112
+ // `options.claudeHooks` undefined, which is not equal to
113
+ // `false`, so the default is "install hooks" (the bypass is
114
+ // on). Pass `--no-claude-hooks` to opt out.
115
+ noClaudeHooks: options.claudeHooks === false,
116
+ // Slice 2026-06-16-peaks-code-auto-scaffold (RD#7): opt-in
117
+ // auto-apply for the missing-standards scaffold. Default false
118
+ // — only the diagnostic is emitted. Pass --init-standards to
119
+ // also run `executeProjectStandardsInit({ apply: true })`.
120
+ initStandards: options.initStandards === true
121
+ });
122
+ // Slice 2026-07-15-project-scan-bootstrap (G2 / G4b / AC9):
123
+ // After the workspace dir is initialized, also bootstrap the
124
+ // `.peaks/project-scan/` artifact tree (project-scan.md + 4
125
+ // bundled audit/business templates). Idempotent — when the user
126
+ // re-runs `workspace init`, the existing files are kept (their
127
+ // sediment is user-authored). Pass `--no-project-scan-bootstrap`
128
+ // to skip, or `--force-project-scan-templates` to overwrite the
129
+ // 4 bundled templates anyway.
130
+ let projectScanEnvelope = null;
131
+ let projectScanError = null;
132
+ if (options.projectScanBootstrap === false) {
133
+ // Explicit opt-out. The envelope stays null; the JSON
134
+ // response carries `projectScan: { skipped: true, ... }` so
135
+ // callers can distinguish "skipped by flag" from "skipped by
136
+ // idempotency".
137
+ projectScanEnvelope = {
138
+ created: false,
139
+ skipped: true,
140
+ templatesBooted: 0,
141
+ templatesSkipped: 0,
142
+ projectScanPath: `${projectRoot}/.peaks/project-scan/project-scan.md`,
143
+ durationMs: 0
144
+ };
145
+ }
146
+ else {
147
+ try {
148
+ projectScanEnvelope = await bootstrapProjectScan({
149
+ projectRoot,
150
+ ...(options.forceProjectScanTemplates === true ? { forceTemplates: true } : {})
151
+ });
152
+ }
153
+ catch (error) {
154
+ // Don't fail init over a project-scan issue — the workspace
155
+ // is already initialized and the user has the JSON envelope.
156
+ // Surface the failure as a warning so the LLM can decide.
157
+ projectScanError = getErrorMessage(error);
158
+ }
159
+ }
160
+ const nextActions = [];
161
+ if (report.previousSessionId !== null && report.bound) {
162
+ nextActions.push(`Replaced prior session binding "${report.previousSessionId}" with "${report.sessionId}".`);
163
+ }
164
+ if (rotation.previousSessionId !== null && rotation.reason === 'outer-session-mismatch') {
165
+ // Outer-session-mismatch rotation: the previous Claude / harness
166
+ // session is no longer the LLM driver. The new binding is fresh,
167
+ // the old session dir is preserved on disk.
168
+ nextActions.push(`Auto-rotated session binding: outer session id changed (was "${rotation.previousSessionId}"). ` +
169
+ `New binding is "${sessionId}". The previous session dir is preserved at .peaks/_runtime/${rotation.previousSessionId}/. ` +
170
+ `Re-run with --no-rotate-on-outer-mismatch to suppress this rotation.`);
171
+ // Slice 002 (v2.15.0) AC-1: a presence marker stamped by the
172
+ // OLD outer session is now stale (defect A from the PRD).
173
+ // peaks-code Step 1 would otherwise pick up the old `mode`
174
+ // field and silently lock the new session into a mode the
175
+ // user never explicitly chose. Clear it here so Step 1's
176
+ // presence:check-stale reports `reason: 'no-presence'` and
177
+ // the re-ask fires.
178
+ const presenceClearOutcome = clearStalePresenceOnRotation({
179
+ projectRootOverride: projectRoot,
180
+ currentOuterSessionId: process.env.PEAKS_OUTER_SESSION_ID
181
+ ?? process.env.CLAUDE_CODE_SESSION_ID,
182
+ rotatedOutSessionId: rotation.previousSessionId
183
+ });
184
+ if (presenceClearOutcome.cleared) {
185
+ nextActions.push(`Auto-cleared stale skill presence (recorded outer id "${presenceClearOutcome.recordedOuter ?? '?'}" did not match the new outer session). ` +
186
+ 'peaks-code Step 1 will now AskUserQuestion to confirm the mode.');
187
+ }
188
+ else if (presenceClearOutcome.reason === 'recorded-by-different-outer') {
189
+ nextActions.push(`Kept skill presence: it was recorded by a different live outer session (id "${presenceClearOutcome.recordedOuter ?? '?'}"). ` +
190
+ 'The new outer session will not auto-clear it.');
191
+ }
192
+ else if (presenceClearOutcome.reason === 'not-stale') {
193
+ nextActions.push('Kept skill presence: it was re-stamped by the new outer session during the rotation window (not stale).');
194
+ }
195
+ }
196
+ if (report.created.length === 0) {
197
+ nextActions.push('Workspace already initialized — proceed to project scan.');
198
+ }
199
+ else {
200
+ nextActions.push('Run `peaks scan archetype --project <path> --json` next to populate rd/project-scan.md.');
201
+ }
202
+ // Slice 2.0.1-bug3-fact-forcing-bypass: surface the consumer-
203
+ // project .claude/settings.local.json materialization outcome.
204
+ // When the bypass is in effect, the LLM knows subsequent Writes
205
+ // and Bash calls targeting .peaks/** will not be blocked by the
206
+ // [Fact-Forcing Gate]. When the user opted out, we surface a
207
+ // nextAction so the manual recovery is documented.
208
+ if (report.claudeSettings.action === 'written' || report.claudeSettings.action === 'refreshed') {
209
+ nextActions.push(`Materialized .claude/settings.local.json (action: ${report.claudeSettings.action}) — ` +
210
+ `the [Fact-Forcing Gate] is bypassed for tool calls inside .peaks/**. ` +
211
+ 'Restart Claude Code so the hooks take effect.');
212
+ }
213
+ else if (report.claudeSettings.action === 'already-current') {
214
+ // No-op: the bypass is already in effect and matches the
215
+ // current release. Do not spam the nextAction list on every
216
+ // init.
217
+ }
218
+ else if (report.claudeSettings.action === 'skipped') {
219
+ nextActions.push('Skipped .claude/settings.local.json materialization (--no-claude-hooks). ' +
220
+ 'If the [Fact-Forcing Gate] blocks subsequent Writes, run `peaks workspace init` ' +
221
+ 'again without --no-claude-hooks, or drop the contents of ' +
222
+ '`.peaks/.claude-settings-template.json` into `.claude/settings.local.json` manually.');
223
+ }
224
+ // Slice 2026-06-13-selfheal-claude-settings-template: surface
225
+ // the self-heal outcome for the offline
226
+ // `.peaks/.claude-settings-template.json` copy. When the offline
227
+ // file was refreshed (i.e. the previous peaks-loop release left
228
+ // a stale version without the `node -e "..."` wrapper), the user
229
+ // benefits from seeing that the manual-recovery anchor now
230
+ // points at the corrected template. We surface `written` and
231
+ // `refreshed` as the actionable events; `already-current` is
232
+ // silent (same rationale as the consumer-project no-op above).
233
+ //
234
+ // The `refreshed` nextAction also carries a loud warning that any
235
+ // MANUAL EDITS the user made to the offline template have been
236
+ // overwritten — drift detection cannot tell stale-from-prior-release
237
+ // apart from user-customised, so we surface the warning unconditionally
238
+ // to make sure anyone who customised sees the prompt.
239
+ if (report.claudeSettings.offlineTemplate.action === 'refreshed') {
240
+ nextActions.push(`Self-healed .peaks/.claude-settings-template.json (action: refreshed) — ` +
241
+ 'the offline recovery anchor now matches the current peaks-loop template. ' +
242
+ 'No action required; future manual recoveries will copy the corrected wrapper.');
243
+ nextActions.push('⚠️ If you had manually edited .peaks/.claude-settings-template.json, ' +
244
+ 'those edits have been overwritten by the self-heal. ' +
245
+ 'Re-apply your custom matchers / commands on top of the freshly-written template, ' +
246
+ 'or open an issue if your customisation is a recurring need (the team may promote it to the canonical template).');
247
+ }
248
+ else if (report.claudeSettings.offlineTemplate.action === 'written') {
249
+ nextActions.push(`Wrote .peaks/.claude-settings-template.json (action: written) — ` +
250
+ 'the offline recovery anchor is now in place for future manual recoveries.');
251
+ }
252
+ // Slice 2026-07-15-project-scan-bootstrap (G2): surface the
253
+ // bootstrap outcome. The envelope carries the write counts and
254
+ // duration so the LLM (and the human) see what landed. The
255
+ // nextAction only fires when the project-scan tree is fresh —
256
+ // idempotent re-runs are silent to keep the nextAction list
257
+ // scannable.
258
+ // (deferred until after warningsForEnvelope is declared below)
259
+ // First-time hooks install decision. Sticky-marker at
260
+ // .peaks/.peaks-init-hooks-decision.json records the user's answer
261
+ // (or the auto-decision) so subsequent inits for new sessions in the
262
+ // same project do not re-prompt. The marker is the only state that
263
+ // survives across sessions — without it, every new session would
264
+ // re-trigger the question.
265
+ const hooksOutcome = await resolveFirstTimeHooksInstall({
266
+ projectRoot,
267
+ ...(options.installHooks !== undefined ? { explicitMode: options.installHooks } : {}),
268
+ jsonMode: options.json === true
269
+ });
270
+ if (hooksOutcome.decision === 'installed') {
271
+ nextActions.push(hooksOutcome.action === 'reinstalled'
272
+ ? 'Re-installed the peaks-managed PreToolUse hooks (Bash→gate enforce, Task→progress start) — the marker said installed but the hooks were missing.'
273
+ : 'Installed the peaks-managed PreToolUse hooks (Bash→gate enforce, Task→progress start). Restart Claude Code so the hooks take effect.');
274
+ }
275
+ else if (hooksOutcome.action === 'first-decision' && hooksOutcome.decision === 'skipped') {
276
+ nextActions.push('Skipped peaks-managed hook install for this project. Re-run with --install-hooks=auto (or peaks hooks install) to install later.');
277
+ }
278
+ // Slice 2026-06-16-peaks-code-auto-scaffold (RD#7):
279
+ // - When the consumer project's `.claude/rules/` is missing or
280
+ // empty, emit the copy-pasteable diagnostic to stderr (via
281
+ // the JSON envelope `warnings` array) AND surface the
282
+ // structured descriptor in `data.standardsMissing`.
283
+ // - AC7: skip the diagnostic banner on subsequent invocations
284
+ // within the same session — the once-per-session marker
285
+ // `.peaks/_runtime/<sid>/.standards-checked` is written after
286
+ // the FIRST diagnostic emit.
287
+ // - AC3: when --init-standards was passed and the detector
288
+ // reported missing, `report.standardsApplied` already lists the
289
+ // freshly-written files. Surface that as a nextAction so the
290
+ // human sees what was written.
291
+ const warningsForEnvelope = [];
292
+ if (report.standardsMissing.missing && !hasStandardsCheckedMarker(projectRoot, sessionId)) {
293
+ warningsForEnvelope.push(report.standardsMissing.remediation);
294
+ nextActions.push(`Run \`peaks workspace init --init-standards --project ${projectRoot}\` to auto-apply the scaffold, or \`peaks standards init --project ${projectRoot} --apply\` manually.`);
295
+ }
296
+ if (report.standardsApplied !== undefined) {
297
+ nextActions.push(`Auto-applied .claude/rules/${report.standardsApplied.language}/ scaffold (slice 2026-06-16-peaks-code-auto-scaffold): ` +
298
+ `wrote ${report.standardsApplied.writtenFiles.length} file(s), ` +
299
+ `kept ${report.standardsApplied.skippedFiles.length} existing file(s).`);
300
+ }
301
+ // Slice 2026-07-15-project-scan-bootstrap (G2): surface the
302
+ // bootstrap outcome. The envelope carries the write counts and
303
+ // duration so the LLM (and the human) see what landed. The
304
+ // nextAction only fires when the project-scan tree is fresh —
305
+ // idempotent re-runs are silent to keep the nextAction list
306
+ // scannable.
307
+ if (projectScanError !== null) {
308
+ warningsForEnvelope.push(`project-scan bootstrap failed: ${projectScanError}`);
309
+ }
310
+ else if (projectScanEnvelope !== null && projectScanEnvelope.created) {
311
+ nextActions.push(`Bootstrapped .peaks/project-scan/ (project-scan.md + 4 audit/business templates) — ` +
312
+ `${projectScanEnvelope.templatesBooted} file(s) written, ${projectScanEnvelope.templatesSkipped} preserved. ` +
313
+ `Run \`peaks scan archetype --project ${projectRoot}\` and \`peaks scan libraries --project ${projectRoot}\` next to refresh the scan.`);
314
+ }
315
+ // Write the once-per-session marker AFTER the envelope is built
316
+ // (so subsequent inits skip the warning even on rapid back-to-back
317
+ // calls).
318
+ if (report.standardsMissing.missing) {
319
+ markStandardsChecked(projectRoot, sessionId);
320
+ }
321
+ printResult(io, ok('workspace.init', {
322
+ ...report,
323
+ // Slice 018: surface outer-session-mismatch rotation in the
324
+ // JSON envelope so the LLM and the human both see the swap.
325
+ // Field is omitted (not null) when no rotation fired.
326
+ ...(rotation.previousSessionId !== null && rotation.reason !== null
327
+ ? { rotation: { previousSessionId: rotation.previousSessionId, reason: rotation.reason } }
328
+ : {}),
329
+ hooksInstall: {
330
+ decision: hooksOutcome.decision,
331
+ action: hooksOutcome.action,
332
+ scope: hooksOutcome.scope,
333
+ ...(hooksOutcome.reason !== undefined ? { reason: hooksOutcome.reason } : {})
334
+ },
335
+ // Slice 2026-07-15-project-scan-bootstrap (G2): envelope
336
+ // for the .peaks/project-scan/ bootstrap. Always present
337
+ // (even when skipped / errored) so downstream readers can
338
+ // rely on the shape.
339
+ ...(projectScanEnvelope !== null
340
+ ? { projectScan: { ...projectScanEnvelope, ...(projectScanError !== null ? { error: projectScanError } : {}) } }
341
+ : {})
342
+ }, warningsForEnvelope, nextActions), options.json);
343
+ }
344
+ catch (error) {
345
+ if (error instanceof InvalidSessionIdError) {
346
+ printResult(io, fail('workspace.init', error.code, error.message, { sessionId: options.sessionId }, ['Use a date-prefixed kebab slug like 2026-05-25-add-user-auth']), options.json);
347
+ process.exitCode = 1;
348
+ return;
349
+ }
350
+ if (error instanceof ConflictingSessionError) {
351
+ printResult(io, fail('workspace.init', error.code, error.message, {
352
+ existingSessionId: error.existingSessionId,
353
+ requestedSessionId: error.requestedSessionId
354
+ }, [
355
+ `Finish or abandon session "${error.existingSessionId}" first, then re-run workspace init.`,
356
+ 'Or pass --allow-session-rebind to override the binding (overwrites the prior binding).'
357
+ ]), options.json);
358
+ process.exitCode = 1;
359
+ return;
360
+ }
361
+ if (error instanceof LegacyChangeIdSiblingError) {
362
+ // Slice 2.8.3: a 2.8.0-era orphan `.peaks/_runtime/<change-id>/` was
363
+ // found at top level. The CLI surfaces the migration steps
364
+ // verbatim from the error message plus three concrete
365
+ // nextActions so the user (or LLM driver) has an unambiguous
366
+ // recovery path. We do NOT auto-migrate because the legacy
367
+ // sibling dir may contain user-authored content.
368
+ printResult(io, fail('workspace.init', error.code, error.message, {
369
+ sessionId: error.sessionId,
370
+ legacyPath: error.legacyPath
371
+ }, [
372
+ `Inspect ${error.legacyPath} for any user-authored content you want to keep.`,
373
+ `Move any desired files into .peaks/_runtime/<sessionId>/<role>/ (gitignored), then delete ${error.legacyPath}.`,
374
+ `Re-run \`peaks workspace init --project <path>\` to bind a fresh session.`
375
+ ]), options.json);
376
+ process.exitCode = 1;
377
+ return;
378
+ }
379
+ // Slice 2026-06-29-change-id-root-removal: the
380
+ // `LegacyChangeIdBindingError` catch branch is gone — the change-id
381
+ // binding file at `.peaks/_runtime/current-change` is no longer
382
+ // written by init, so there is no legacy binding to detect.
383
+ printResult(io, fail('workspace.init', 'WORKSPACE_INIT_FAILED', getErrorMessage(error), { projectRoot: options.project, sessionId: options.sessionId }, ['Verify the project path exists and is writable']), options.json);
384
+ process.exitCode = 1;
385
+ }
386
+ });
387
+ }
388
+ /**
389
+ * Resolve the first-time "install peaks hooks" decision for this project.
390
+ * Decision tree:
391
+ *
392
+ * 1. Read the sticky marker.
393
+ * - Marker present:
394
+ * - marker.decision === 'installed' AND hooks are present → action: marker-honored, no side effects
395
+ * - marker.decision === 'installed' AND hooks are MISSING → re-install, action: reinstalled
396
+ * - marker.decision === 'skipped' → action: marker-honored, no install
397
+ * - Marker absent:
398
+ * - hooks already present → write a fresh 'installed' marker, action: already-installed
399
+ * - otherwise:
400
+ * - explicit --install-hooks=auto → install + marker, action: first-decision
401
+ * - explicit --install-hooks=skip → marker only, action: first-decision
402
+ * - explicit --install-hooks=ask OR default in TTY:
403
+ * - jsonMode → silently auto-install (LLM cannot answer), action: first-decision
404
+ * - TTY → prompt; on yes install + marker, on no marker-only
405
+ * - default in non-TTY → auto-install, action: first-decision
406
+ *
407
+ * Project scope is the only supported scope here; global scope is reserved
408
+ * for explicit `peaks hooks install --global` invocations.
409
+ */
410
+ export async function resolveFirstTimeHooksInstall(options) {
411
+ const { projectRoot, jsonMode } = options;
412
+ const existingMarker = readDecisionMarker(projectRoot);
413
+ // readHookStatus can throw (e.g. .claude is a symlink → safety check rejects).
414
+ // Treat any throw as "hooks status unknown → treat as not-installed" so the
415
+ // function still reaches the install path; the install will surface the same
416
+ // error in a more specific reason field.
417
+ let hookStatus;
418
+ try {
419
+ hookStatus = readHookStatus('project', projectRoot);
420
+ }
421
+ catch (error) {
422
+ hookStatus = { installed: false };
423
+ // Fall through to the install path; the failure will be captured below.
424
+ void error;
425
+ }
426
+ if (existingMarker !== null) {
427
+ if (existingMarker.decision === 'installed' && !hookStatus.installed) {
428
+ try {
429
+ applyHookInstall('project', projectRoot);
430
+ return { decision: 'installed', action: 'reinstalled', scope: 'project', reason: 'marker-said-installed-hooks-missing' };
431
+ }
432
+ catch (error) {
433
+ return { decision: existingMarker.decision, action: 'marker-honored', scope: 'project', reason: `reinstall-failed: ${getErrorMessage(error)}` };
434
+ }
435
+ }
436
+ return { decision: existingMarker.decision, action: 'marker-honored', scope: existingMarker.scope };
437
+ }
438
+ // No marker yet — first decision.
439
+ if (hookStatus.installed) {
440
+ writeDecisionMarker(projectRoot, 'installed');
441
+ return { decision: 'installed', action: 'already-installed', scope: 'project' };
442
+ }
443
+ // Determine effective mode (explicit flag wins; default depends on TTY + jsonMode).
444
+ const explicitMode = options.explicitMode;
445
+ const effectiveMode = explicitMode ??
446
+ (jsonMode ? 'auto' : (process.stdin.isTTY === true ? 'ask' : 'auto'));
447
+ if (effectiveMode === 'skip') {
448
+ writeDecisionMarker(projectRoot, 'skipped');
449
+ return { decision: 'skipped', action: 'first-decision', scope: 'project', reason: 'explicit-skip' };
450
+ }
451
+ if (effectiveMode === 'auto' || jsonMode) {
452
+ // The reason code distinguishes the path the user took to reach auto-install:
453
+ // - explicit-auto: user passed --install-hooks=auto
454
+ // - json-mode: no --install-hooks flag, but --json was set
455
+ // - non-tty-default: no flag, no --json, stdin is not a TTY
456
+ let autoReason;
457
+ if (explicitMode === 'auto') {
458
+ autoReason = 'explicit-auto';
459
+ }
460
+ else if (jsonMode) {
461
+ autoReason = 'json-mode';
462
+ }
463
+ else {
464
+ autoReason = 'non-tty-default';
465
+ }
466
+ try {
467
+ applyHookInstall('project', projectRoot);
468
+ writeDecisionMarker(projectRoot, 'installed');
469
+ return { decision: 'installed', action: 'first-decision', scope: 'project', reason: autoReason };
470
+ }
471
+ catch (error) {
472
+ // Auto-install failed: still record the decision so we do not keep retrying
473
+ // every workspace init. The user can fix the underlying problem and run
474
+ // `peaks hooks install` manually.
475
+ writeDecisionMarker(projectRoot, 'installed');
476
+ return { decision: 'installed', action: 'first-decision', scope: 'project', reason: `install-failed: ${getErrorMessage(error)}` };
477
+ }
478
+ }
479
+ // effectiveMode === 'ask' AND TTY: prompt once.
480
+ process.stderr.write('\nPeaks-Cli: install the PreToolUse hooks for this project now?\n' +
481
+ ' → Bash matcher: `peaks gate enforce` (SOP gate enforcement)\n' +
482
+ 'The gate-enforce hook runs on every Claude Code tool call without further prompting. The decision is sticky\n' +
483
+ '(recorded in .peaks/.peaks-init-hooks-decision.json) and re-runs of `workspace init` will\n' +
484
+ 'honour it. Re-run with --install-hooks=skip or --install-hooks=auto to override.\n\n' +
485
+ 'Install now? [Y/n]: ');
486
+ const answer = await promptYesNo('');
487
+ if (answer === null) {
488
+ // TTY disappeared mid-prompt (rare): treat as skip + write marker.
489
+ writeDecisionMarker(projectRoot, 'skipped');
490
+ return { decision: 'skipped', action: 'first-decision', scope: 'project', reason: 'tty-prompt-aborted' };
491
+ }
492
+ if (!answer) {
493
+ writeDecisionMarker(projectRoot, 'skipped');
494
+ return { decision: 'skipped', action: 'first-decision', scope: 'project', reason: 'user-answered-no' };
495
+ }
496
+ try {
497
+ applyHookInstall('project', projectRoot);
498
+ writeDecisionMarker(projectRoot, 'installed');
499
+ return { decision: 'installed', action: 'first-decision', scope: 'project', reason: 'user-answered-yes' };
500
+ }
501
+ catch (error) {
502
+ writeDecisionMarker(projectRoot, 'installed');
503
+ return { decision: 'installed', action: 'first-decision', scope: 'project', reason: `install-failed: ${getErrorMessage(error)}` };
504
+ }
505
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * `peaks workspace migrate` — slice 003 (--to-runtime).
3
+ *
4
+ * Extracted from `src/cli/commands/workspace-commands.ts` (slice
5
+ * 2026-06-16-workspace-commands-split) to keep that entry file under the
6
+ * 800-line Karpathy cap. Migrates legacy `.peaks/_runtime/<sid>/<role>/<file>`
7
+ * into the new `.peaks/retrospective/<change-id>/<role>/<file>` layout.
8
+ */
9
+ import type { Command } from 'commander';
10
+ import { type ProgramIO } from '../../cli-helpers.js';
11
+ export declare function registerWorkspaceMigrateCommand(workspace: Command, io: ProgramIO): void;
@@ -0,0 +1,91 @@
1
+ /**
2
+ * `peaks workspace migrate` — slice 003 (--to-runtime).
3
+ *
4
+ * Extracted from `src/cli/commands/workspace-commands.ts` (slice
5
+ * 2026-06-16-workspace-commands-split) to keep that entry file under the
6
+ * 800-line Karpathy cap. Migrates legacy `.peaks/_runtime/<sid>/<role>/<file>`
7
+ * into the new `.peaks/retrospective/<change-id>/<role>/<file>` layout.
8
+ */
9
+ import { migrateWorkspace } from '../../../services/workspace/migrate-service.js';
10
+ import { resolveCanonicalProjectRoot } from '../../../services/config/config-service.js';
11
+ import { fail, ok } from '../../../shared/result.js';
12
+ import { addJsonOption, getErrorMessage, printResult } from '../../cli-helpers.js';
13
+ export function registerWorkspaceMigrateCommand(workspace, io) {
14
+ addJsonOption(workspace
15
+ .command('migrate')
16
+ .description('Migrate legacy `.peaks/_runtime/<session-id>/<role>/<file>` content into the new layout: ' +
17
+ '`.peaks/retrospective/<change-id>/<role>/<file>`. Each file is routed by a 4-tier ' +
18
+ 'change-id resolver (filename regex → content H1 → body frontmatter → per-session fallback ' +
19
+ 'to the most recent rd/requests entry). Cross-cutting files (project-scan, perf-baseline) ' +
20
+ 'and transient runtime files (session.json, system/) are skipped with reasons in the ' +
21
+ 'response. By default the command is a dry-run: it reports the planned moves + conflicts ' +
22
+ 'and the session dirs that WOULD be deleted. Pass --apply to actually `git mv` the files ' +
23
+ 'and `rm -rf` the emptied session dirs. Idempotent: re-running on an already-migrated tree ' +
24
+ 'is a no-op (all files report conflicts with identical content).' +
25
+ '\n\nSlice 003 (--to-runtime): moves every top-level `.peaks/_runtime/<sid>/` to `.peaks/_runtime/<sid>/` ' +
26
+ 'for projects still on the pre-runtime-layer layout. Idempotent: re-running on a tree ' +
27
+ 'that is already canonical is a no-op. F15 carve-out: top-level `rd/project-scan.md` is ' +
28
+ 'never overwritten when the runtime copy already exists with different content.')
29
+ .requiredOption('--project <path>', 'target project root')
30
+ .option('--apply', 'actually `git mv` the files and delete the emptied session dirs (destructive); without it, dry-run only', false)
31
+ .option('--to-runtime', 'slice 003: also consolidate every top-level .peaks/_runtime/<sid>/ dir into .peaks/_runtime/<sid>/. Idempotent; conflicts are logged but never overwrite.', false)).action(async (options) => {
32
+ try {
33
+ const projectRoot = resolveCanonicalProjectRoot(options.project);
34
+ const apply = options.apply === true;
35
+ const toRuntime = options.toRuntime === true;
36
+ const result = await migrateWorkspace({ projectRoot, apply, toRuntime });
37
+ const warnings = [];
38
+ if (result.sessions.length === 0 && (result.toRuntimePlans?.length ?? 0) === 0) {
39
+ warnings.push('No legacy session directories found under .peaks/. Nothing to migrate.');
40
+ }
41
+ else if (result.wouldMove.length === 0 && (result.toRuntimePlans?.length ?? 0) === 0) {
42
+ warnings.push('Legacy session dirs found but no reviewable content to migrate (all files were cross-cutting or transient).');
43
+ }
44
+ const nextActions = [];
45
+ if (!apply && result.wouldMove.length > 0) {
46
+ nextActions.push(`Re-run with --apply to perform ${result.wouldMove.length} move(s) and delete ${result.wouldDeleteSessions.length} session dir(s).`);
47
+ }
48
+ if (result.conflicts.length > 0) {
49
+ nextActions.push(`${result.conflicts.length} file(s) already exist at the target path; review before --apply (or re-run after a partial migrate).`);
50
+ }
51
+ if (toRuntime) {
52
+ const plans = result.toRuntimePlans ?? [];
53
+ if (apply) {
54
+ if ((result.toRuntimeMoved?.length ?? 0) > 0) {
55
+ nextActions.push(`Moved ${result.toRuntimeMoved?.length} top-level session dir(s) to .peaks/_runtime/ (slice 003 --to-runtime).`);
56
+ }
57
+ if ((result.toRuntimeConflicts?.length ?? 0) > 0) {
58
+ nextActions.push(`${result.toRuntimeConflicts?.length} --to-runtime conflict(s) — see response. ${plans.filter((p) => p.action === 'f15-conflict-project-scan').length} are F15 carve-outs (deferred to a separate slice).`);
59
+ }
60
+ }
61
+ else {
62
+ const wouldMoveCount = plans.filter((p) => p.action === 'moved').length;
63
+ const wouldSkipCount = plans.filter((p) => p.action === 'skipped-already-canonical').length;
64
+ if (wouldMoveCount > 0) {
65
+ nextActions.push(`Re-run with --apply to move ${wouldMoveCount} top-level session dir(s) to .peaks/_runtime/; ${wouldSkipCount} already canonical.`);
66
+ }
67
+ else if (wouldSkipCount > 0) {
68
+ nextActions.push(`All ${wouldSkipCount} top-level session dir(s) are already canonical — no moves needed.`);
69
+ }
70
+ const f15Count = plans.filter((p) => p.action === 'f15-conflict-project-scan').length;
71
+ if (f15Count > 0) {
72
+ nextActions.push(`${f15Count} F15 carve-out conflict(s) (rd/project-scan.md differs from runtime copy) — see response.`);
73
+ }
74
+ }
75
+ }
76
+ if (apply) {
77
+ if (result.moved.length > 0) {
78
+ nextActions.push(`Migrated ${result.moved.length} file(s) into .peaks/retrospective/.`);
79
+ }
80
+ if (result.deletedSessions.length > 0) {
81
+ nextActions.push(`Deleted ${result.deletedSessions.length} emptied session dir(s).`);
82
+ }
83
+ }
84
+ printResult(io, ok('workspace.migrate', result, warnings, nextActions), options.json ?? false);
85
+ }
86
+ catch (error) {
87
+ printResult(io, fail('workspace.migrate', 'WORKSPACE_MIGRATE_FAILED', getErrorMessage(error), { projectRoot: options.project }, ['Verify the project path exists and is writable']), options.json ?? false);
88
+ process.exitCode = 1;
89
+ }
90
+ });
91
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * `peaks workspace reconcile` — slice 006 + slice 0.5.
3
+ *
4
+ * Extracted from `src/cli/commands/workspace-commands.ts` (slice
5
+ * 2026-06-16-workspace-commands-split) to keep that entry file under the
6
+ * 800-line Karpathy cap. Scans the legacy 2026-MM-DD-session dirs and
7
+ * consolidates the runtime state.
8
+ *
9
+ * Migration (1), repoint (2), and marker sync (3) always run regardless
10
+ * of `--apply`. Deletion of old session dirs is dry-run by default.
11
+ */
12
+ import type { Command } from 'commander';
13
+ import { type ProgramIO } from '../../cli-helpers.js';
14
+ export declare function registerWorkspaceReconcileCommand(workspace: Command, io: ProgramIO): void;