peaks-loop 4.0.54 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1028) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/README-en.md +16 -1
  3. package/README.md +15 -1
  4. package/config/eslint/.peaks-rules.cjs +158 -13
  5. package/config/eslint/tsconfig.lint.json +47 -0
  6. package/dist/cli/cli-envelope.d.ts +114 -0
  7. package/dist/cli/cli-envelope.js +85 -0
  8. package/dist/cli/cli-helpers.d.ts +1 -1
  9. package/dist/cli/cli-helpers.js +8 -4
  10. package/dist/cli/commands/_cli-error-envelope.js +1 -1
  11. package/dist/cli/commands/_register.js +85 -38
  12. package/dist/cli/commands/_super.js +40 -7
  13. package/dist/cli/commands/adapter-commands-s2a.js +8 -7
  14. package/dist/cli/commands/adapter-commands.d.ts +2 -2
  15. package/dist/cli/commands/adapter-commands.js +7 -8
  16. package/dist/cli/commands/api-diff-commands.js +5 -4
  17. package/dist/cli/commands/asset-commands.d.ts +2 -2
  18. package/dist/cli/commands/asset-commands.js +135 -132
  19. package/dist/cli/commands/audit-commands.d.ts +1 -1
  20. package/dist/cli/commands/audit-commands.js +75 -32
  21. package/dist/cli/commands/autonomous-swarm-commands.d.ts +1 -1
  22. package/dist/cli/commands/autonomous-swarm-commands.js +14 -8
  23. package/dist/cli/commands/baseline-commands.js +34 -9
  24. package/dist/cli/commands/bee-commands.d.ts +1 -1
  25. package/dist/cli/commands/bee-commands.js +18 -21
  26. package/dist/cli/commands/best-practice-scan-command.js +6 -34
  27. package/dist/cli/commands/best-practice-scan-helpers.d.ts +12 -0
  28. package/dist/cli/commands/best-practice-scan-helpers.js +37 -0
  29. package/dist/cli/commands/capability-commands.d.ts +1 -1
  30. package/dist/cli/commands/capability-commands.js +14 -4
  31. package/dist/cli/commands/capability-worker-config-sc-commands.d.ts +1 -1
  32. package/dist/cli/commands/changeset-commands.js +21 -18
  33. package/dist/cli/commands/code-gate-command.js +9 -2
  34. package/dist/cli/commands/code-job-shape-commands-read-job-shape.d.ts +15 -0
  35. package/dist/cli/commands/code-job-shape-commands-read-job-shape.js +70 -0
  36. package/dist/cli/commands/code-job-shape-commands.js +21 -45
  37. package/dist/cli/commands/code-mode-gate-commands.d.ts +15 -1
  38. package/dist/cli/commands/code-mode-gate-commands.js +19 -199
  39. package/dist/cli/commands/code-mode-gate-plan-command.d.ts +14 -0
  40. package/dist/cli/commands/code-mode-gate-plan-command.js +23 -0
  41. package/dist/cli/commands/code-mode-gate-should-pause-command.d.ts +24 -0
  42. package/dist/cli/commands/code-mode-gate-should-pause-command.js +137 -0
  43. package/dist/cli/commands/code-mode-gate-should-pause-envelope.d.ts +59 -0
  44. package/dist/cli/commands/code-mode-gate-should-pause-envelope.js +144 -0
  45. package/dist/cli/commands/code-orchestrator-can-do.js +4 -4
  46. package/dist/cli/commands/code-review-commands.js +18 -3
  47. package/dist/cli/commands/code-run-command.js +44 -7
  48. package/dist/cli/commands/code-runtime-commands.d.ts +17 -0
  49. package/dist/cli/commands/code-runtime-commands.js +105 -73
  50. package/dist/cli/commands/codegraph-commands.js +11 -6
  51. package/dist/cli/commands/codegraph-status-command.js +6 -2
  52. package/dist/cli/commands/compact-command.js +52 -26
  53. package/dist/cli/commands/complexity-commands.js +6 -7
  54. package/dist/cli/commands/config-commands.d.ts +1 -1
  55. package/dist/cli/commands/config-commands.js +33 -9
  56. package/dist/cli/commands/container-commands.js +39 -15
  57. package/dist/cli/commands/context-commands.d.ts +1 -1
  58. package/dist/cli/commands/context-commands.js +40 -13
  59. package/dist/cli/commands/core/artifacts-command.js +11 -3
  60. package/dist/cli/commands/core/binding-commands.js +9 -6
  61. package/dist/cli/commands/core/doctor-command.js +7 -4
  62. package/dist/cli/commands/core/memory-command.js +47 -21
  63. package/dist/cli/commands/core/proxy-command.js +3 -1
  64. package/dist/cli/commands/core/session-command.js +16 -8
  65. package/dist/cli/commands/core/skill-command.js +31 -16
  66. package/dist/cli/commands/core/standards-command.js +55 -13
  67. package/dist/cli/commands/cron-commands-actions.d.ts +43 -0
  68. package/dist/cli/commands/cron-commands-actions.js +128 -0
  69. package/dist/cli/commands/cron-commands-schedule.d.ts +86 -0
  70. package/dist/cli/commands/cron-commands-schedule.js +151 -0
  71. package/dist/cli/commands/cron-commands.d.ts +35 -32
  72. package/dist/cli/commands/cron-commands.js +167 -211
  73. package/dist/cli/commands/cron-scheduler-commands.js +40 -20
  74. package/dist/cli/commands/cron-scheduler-persist.d.ts +110 -0
  75. package/dist/cli/commands/cron-scheduler-persist.js +171 -0
  76. package/dist/cli/commands/dashboard-long-run.js +45 -14
  77. package/dist/cli/commands/dashboard-summary.js +15 -5
  78. package/dist/cli/commands/dispatch-commands.js +65 -32
  79. package/dist/cli/commands/dispatch-from-dag.js +9 -10
  80. package/dist/cli/commands/doc-commands.js +8 -9
  81. package/dist/cli/commands/doctor/invoke-from-code.js +1 -1
  82. package/dist/cli/commands/e2e-verify-env.d.ts +19 -0
  83. package/dist/cli/commands/e2e-verify-env.js +19 -0
  84. package/dist/cli/commands/e2e-verify.d.ts +3 -14
  85. package/dist/cli/commands/e2e-verify.js +49 -29
  86. package/dist/cli/commands/ecc-commands.d.ts +1 -1
  87. package/dist/cli/commands/ecc-commands.js +8 -17
  88. package/dist/cli/commands/evidence-commands.js +10 -6
  89. package/dist/cli/commands/evolution-commands.d.ts +2 -2
  90. package/dist/cli/commands/evolution-commands.js +109 -115
  91. package/dist/cli/commands/feedback-commands-helpers.d.ts +22 -0
  92. package/dist/cli/commands/feedback-commands-helpers.js +33 -0
  93. package/dist/cli/commands/feedback-commands.js +15 -38
  94. package/dist/cli/commands/final-review-commands.d.ts +1 -1
  95. package/dist/cli/commands/final-review-commands.js +24 -22
  96. package/dist/cli/commands/fixture-commands.d.ts +1 -1
  97. package/dist/cli/commands/fixture-commands.js +17 -6
  98. package/dist/cli/commands/fork-commands-sync-verify.d.ts +12 -0
  99. package/dist/cli/commands/fork-commands-sync-verify.js +72 -0
  100. package/dist/cli/commands/fork-commands.js +19 -51
  101. package/dist/cli/commands/fresh-context-commands.js +3 -1
  102. package/dist/cli/commands/gate-commands-enforce.d.ts +82 -0
  103. package/dist/cli/commands/gate-commands-enforce.js +210 -0
  104. package/dist/cli/commands/gate-commands.d.ts +1 -1
  105. package/dist/cli/commands/gate-commands.js +85 -205
  106. package/dist/cli/commands/governance-classify-contract-commands.d.ts +1 -1
  107. package/dist/cli/commands/governance-classify-contract-commands.js +28 -17
  108. package/dist/cli/commands/heartbeat-commands-action.d.ts +7 -0
  109. package/dist/cli/commands/heartbeat-commands-action.js +192 -0
  110. package/dist/cli/commands/heartbeat-commands-validation.d.ts +57 -0
  111. package/dist/cli/commands/heartbeat-commands-validation.js +120 -0
  112. package/dist/cli/commands/heartbeat-commands.d.ts +27 -6
  113. package/dist/cli/commands/heartbeat-commands.js +19 -198
  114. package/dist/cli/commands/hook-handle.d.ts +1 -1
  115. package/dist/cli/commands/hook-handle.js +46 -13
  116. package/dist/cli/commands/hooks-commands.d.ts +1 -1
  117. package/dist/cli/commands/hooks-commands.js +18 -6
  118. package/dist/cli/commands/ide-commands.d.ts +1 -1
  119. package/dist/cli/commands/ide-commands.js +5 -3
  120. package/dist/cli/commands/impact-commands.js +8 -2
  121. package/dist/cli/commands/job-add-slice-command.d.ts +43 -0
  122. package/dist/cli/commands/job-add-slice-command.js +151 -0
  123. package/dist/cli/commands/job-commands.d.ts +64 -0
  124. package/dist/cli/commands/job-commands.js +134 -63
  125. package/dist/cli/commands/lease-metrics-commands-support.d.ts +73 -0
  126. package/dist/cli/commands/lease-metrics-commands-support.js +67 -0
  127. package/dist/cli/commands/lease-metrics-commands.d.ts +3 -44
  128. package/dist/cli/commands/lease-metrics-commands.js +21 -61
  129. package/dist/cli/commands/lease-stats-commands.d.ts +1 -1
  130. package/dist/cli/commands/lease-stats-commands.js +9 -6
  131. package/dist/cli/commands/lint-commands.d.ts +9 -3
  132. package/dist/cli/commands/lint-commands.js +15 -8
  133. package/dist/cli/commands/log-commands.d.ts +1 -1
  134. package/dist/cli/commands/log-commands.js +8 -6
  135. package/dist/cli/commands/loop-commands.d.ts +1 -1
  136. package/dist/cli/commands/loop-commands.js +50 -50
  137. package/dist/cli/commands/loop-eval-commands.d.ts +1 -1
  138. package/dist/cli/commands/loop-eval-commands.js +101 -30
  139. package/dist/cli/commands/memory-commands.js +21 -13
  140. package/dist/cli/commands/migrate-1-4-1-command.js +1 -1
  141. package/dist/cli/commands/migrate-v2-10-to-v2-11-command.js +2 -2
  142. package/dist/cli/commands/mut-commands-helpers.d.ts +30 -0
  143. package/dist/cli/commands/mut-commands-helpers.js +43 -0
  144. package/dist/cli/commands/mut-commands.js +16 -58
  145. package/dist/cli/commands/observability-commands-queries.d.ts +37 -0
  146. package/dist/cli/commands/observability-commands-queries.js +113 -0
  147. package/dist/cli/commands/observability-commands.d.ts +1 -1
  148. package/dist/cli/commands/observability-commands.js +7 -92
  149. package/dist/cli/commands/openspec-commands.d.ts +1 -1
  150. package/dist/cli/commands/openspec-commands.js +20 -8
  151. package/dist/cli/commands/outer-cache-commands.js +18 -7
  152. package/dist/cli/commands/perf-audit-commands.d.ts +1 -1
  153. package/dist/cli/commands/perf-audit-commands.js +12 -7
  154. package/dist/cli/commands/perf-commands.d.ts +1 -1
  155. package/dist/cli/commands/perf-commands.js +5 -5
  156. package/dist/cli/commands/playwright-commands.d.ts +1 -1
  157. package/dist/cli/commands/playwright-commands.js +20 -8
  158. package/dist/cli/commands/polyrepo-commands.js +21 -19
  159. package/dist/cli/commands/prd-blocks-commands.js +1 -3
  160. package/dist/cli/commands/prd-commands.d.ts +1 -1
  161. package/dist/cli/commands/prd-commands.js +8 -4
  162. package/dist/cli/commands/preferences-commands.js +13 -12
  163. package/dist/cli/commands/primer-command.js +5 -5
  164. package/dist/cli/commands/project-commands.d.ts +1 -1
  165. package/dist/cli/commands/project-commands.js +33 -9
  166. package/dist/cli/commands/qa-business-review-commands.js +16 -12
  167. package/dist/cli/commands/qa-commands.d.ts +1 -1
  168. package/dist/cli/commands/qa-commands.js +3 -5
  169. package/dist/cli/commands/release-commands.d.ts +3 -1
  170. package/dist/cli/commands/release-commands.js +33 -22
  171. package/dist/cli/commands/request-commands.js +47 -30
  172. package/dist/cli/commands/request-format-helpers.js +1 -1
  173. package/dist/cli/commands/retrospective-commands.d.ts +18 -11
  174. package/dist/cli/commands/retrospective-commands.js +24 -173
  175. package/dist/cli/commands/retrospective-index-command.d.ts +26 -0
  176. package/dist/cli/commands/retrospective-index-command.js +99 -0
  177. package/dist/cli/commands/retrospective-project-root.d.ts +9 -0
  178. package/dist/cli/commands/retrospective-project-root.js +15 -0
  179. package/dist/cli/commands/retrospective-search-command.d.ts +27 -0
  180. package/dist/cli/commands/retrospective-search-command.js +97 -0
  181. package/dist/cli/commands/retrospective-show-command.d.ts +23 -0
  182. package/dist/cli/commands/retrospective-show-command.js +80 -0
  183. package/dist/cli/commands/reviewer-commands.d.ts +1 -1
  184. package/dist/cli/commands/role-commands.js +14 -9
  185. package/dist/cli/commands/runtime-commands.js +14 -7
  186. package/dist/cli/commands/sc-commands.d.ts +1 -1
  187. package/dist/cli/commands/sc-commands.js +39 -6
  188. package/dist/cli/commands/scan-commands.js +36 -13
  189. package/dist/cli/commands/security-audit-commands.d.ts +1 -1
  190. package/dist/cli/commands/security-audit-commands.js +12 -7
  191. package/dist/cli/commands/sediment-commands.d.ts +2 -2
  192. package/dist/cli/commands/sediment-commands.js +146 -139
  193. package/dist/cli/commands/session-24h-mode.js +15 -2
  194. package/dist/cli/commands/session-checkpoint-command.js +1 -1
  195. package/dist/cli/commands/session-migrate-skill-name.js +1 -1
  196. package/dist/cli/commands/shadcn-commands.d.ts +1 -1
  197. package/dist/cli/commands/shadcn-commands.js +3 -1
  198. package/dist/cli/commands/share-commands.js +38 -39
  199. package/dist/cli/commands/skill-conformance-commands.d.ts +1 -1
  200. package/dist/cli/commands/skill-conformance-commands.js +1 -1
  201. package/dist/cli/commands/skill-loop-engineering-readiness-commands.js +16 -17
  202. package/dist/cli/commands/skill-visibility.js +2 -2
  203. package/dist/cli/commands/slice-commands.d.ts +1 -1
  204. package/dist/cli/commands/slice-commands.js +36 -12
  205. package/dist/cli/commands/slice-integrate-commands.js +6 -7
  206. package/dist/cli/commands/slice-review-commands-helpers.d.ts +26 -0
  207. package/dist/cli/commands/slice-review-commands-helpers.js +26 -0
  208. package/dist/cli/commands/slice-review-commands.js +16 -24
  209. package/dist/cli/commands/smoke-commands-add-path.d.ts +14 -0
  210. package/dist/cli/commands/smoke-commands-add-path.js +39 -0
  211. package/dist/cli/commands/smoke-commands-define.d.ts +18 -0
  212. package/dist/cli/commands/smoke-commands-define.js +97 -0
  213. package/dist/cli/commands/smoke-commands-run.d.ts +18 -0
  214. package/dist/cli/commands/smoke-commands-run.js +119 -0
  215. package/dist/cli/commands/smoke-commands.d.ts +10 -1
  216. package/dist/cli/commands/smoke-commands.js +17 -179
  217. package/dist/cli/commands/sop-commands.d.ts +1 -1
  218. package/dist/cli/commands/sop-commands.js +38 -10
  219. package/dist/cli/commands/statusline-commands.d.ts +1 -1
  220. package/dist/cli/commands/statusline-commands.js +21 -10
  221. package/dist/cli/commands/sub-agent/detached.js +3 -3
  222. package/dist/cli/commands/sub-agent-dispatch-guard.d.ts +1 -1
  223. package/dist/cli/commands/sub-agent-shared.js +1 -1
  224. package/dist/cli/commands/sub-agent-shutdown-commands.js +17 -9
  225. package/dist/cli/commands/swarm-commands.d.ts +1 -1
  226. package/dist/cli/commands/swarm-commands.js +13 -6
  227. package/dist/cli/commands/tech-commands-helpers.d.ts +37 -0
  228. package/dist/cli/commands/tech-commands-helpers.js +24 -0
  229. package/dist/cli/commands/tech-commands.d.ts +2 -29
  230. package/dist/cli/commands/tech-commands.js +15 -28
  231. package/dist/cli/commands/test-commands.js +27 -7
  232. package/dist/cli/commands/upgrade-commands.d.ts +1 -1
  233. package/dist/cli/commands/user-touchpoint-commands.js +1 -3
  234. package/dist/cli/commands/verdict-aggregate-command.d.ts +1 -1
  235. package/dist/cli/commands/verdict-aggregate-command.js +20 -7
  236. package/dist/cli/commands/vm-commands.js +48 -19
  237. package/dist/cli/commands/wave-plan-commands.js +5 -2
  238. package/dist/cli/commands/web-commands.js +14 -4
  239. package/dist/cli/commands/web-lifecycle-commands.js +5 -3
  240. package/dist/cli/commands/workflow-commands.d.ts +1 -1
  241. package/dist/cli/commands/workflow-commands.js +64 -29
  242. package/dist/cli/commands/workflow-lifecycle-commands.js +19 -17
  243. package/dist/cli/commands/workflow-plan-commands-actions.d.ts +20 -0
  244. package/dist/cli/commands/workflow-plan-commands-actions.js +115 -0
  245. package/dist/cli/commands/workflow-plan-commands-session.d.ts +17 -0
  246. package/dist/cli/commands/workflow-plan-commands-session.js +59 -0
  247. package/dist/cli/commands/workflow-plan-commands.d.ts +10 -21
  248. package/dist/cli/commands/workflow-plan-commands.js +15 -141
  249. package/dist/cli/commands/workspace/clean-command.js +4 -1
  250. package/dist/cli/commands/workspace/helpers.js +2 -1
  251. package/dist/cli/commands/workspace/init-command.js +80 -20
  252. package/dist/cli/commands/workspace/reconcile-command.js +3 -1
  253. package/dist/cli/commands/workspace-commands.d.ts +1 -1
  254. package/dist/cli/commands/workspace-commands.js +1 -1
  255. package/dist/cli/commands/worktree-auth-commands.d.ts +1 -1
  256. package/dist/cli/commands/worktree-auth-commands.js +16 -169
  257. package/dist/cli/commands/worktree-auth-grant-command.d.ts +14 -0
  258. package/dist/cli/commands/worktree-auth-grant-command.js +118 -0
  259. package/dist/cli/commands/worktree-auth-manage-commands.d.ts +17 -0
  260. package/dist/cli/commands/worktree-auth-manage-commands.js +128 -0
  261. package/dist/cli/commands/worktree-lease-commands.d.ts +1 -1
  262. package/dist/cli/commands/worktree-lease-commands.js +65 -37
  263. package/dist/cli/index.js +6 -2
  264. package/dist/cli/program.js +6 -3
  265. package/dist/hooks/pre-tool-use-sub-agent.js +1 -6
  266. package/dist/reporters/bdd-reporter.js +9 -3
  267. package/dist/services/24h-mode/auto-engage.d.ts +19 -0
  268. package/dist/services/24h-mode/auto-engage.js +35 -0
  269. package/dist/services/24h-mode/decider.js +5 -1
  270. package/dist/services/24h-mode/store.js +4 -2
  271. package/dist/services/adapter/adapter-registry.js +20 -8
  272. package/dist/services/adapter/adapter.d.ts +2 -2
  273. package/dist/services/adapter/auto-adapter.d.ts +2 -2
  274. package/dist/services/adapter/auto-adapter.js +1 -1
  275. package/dist/services/adapter/claude-adapter.d.ts +1 -1
  276. package/dist/services/adapter/claude-adapter.js +8 -8
  277. package/dist/services/adapter/codex-adapter.d.ts +2 -2
  278. package/dist/services/adapter/codex-adapter.js +20 -8
  279. package/dist/services/adapter/copilot-adapter.d.ts +2 -2
  280. package/dist/services/adapter/copilot-adapter.js +20 -8
  281. package/dist/services/artifacts/artifact-prerequisites.js +10 -8
  282. package/dist/services/artifacts/artifact-service.js +3 -1
  283. package/dist/services/artifacts/artifact-template-bodies.d.ts +12 -0
  284. package/dist/services/artifacts/artifact-template-bodies.js +165 -0
  285. package/dist/services/artifacts/artifact-templates.js +26 -168
  286. package/dist/services/artifacts/request-artifact-service.js +14 -7
  287. package/dist/services/artifacts/request-artifact-state-helpers.d.ts +3 -2
  288. package/dist/services/artifacts/request-artifact-state-helpers.js +3 -5
  289. package/dist/services/artifacts/workspace-artifact-helpers.d.ts +28 -0
  290. package/dist/services/artifacts/workspace-artifact-helpers.js +54 -0
  291. package/dist/services/artifacts/workspace-service.d.ts +3 -22
  292. package/dist/services/artifacts/workspace-service.js +10 -60
  293. package/dist/services/audit/artifact-writer.js +21 -21
  294. package/dist/services/audit/audit-goal-service.js +2 -2
  295. package/dist/services/audit/backing-detector.js +7 -4
  296. package/dist/services/audit/classifier.js +3 -3
  297. package/dist/services/audit/decision-writer.js +13 -9
  298. package/dist/services/audit/enforcers/active-skill-resolver.js +15 -7
  299. package/dist/services/audit/enforcers/design-draft-confirm.js +4 -4
  300. package/dist/services/audit/enforcers/lint-audit-regression.js +10 -5
  301. package/dist/services/audit/enforcers/lint-bee-runtime-contract.js +16 -8
  302. package/dist/services/audit/enforcers/lint-catalog-governance.js +8 -4
  303. package/dist/services/audit/enforcers/lint-output-style.js +4 -2
  304. package/dist/services/audit/enforcers/lint-peaks-code-runtime.js +8 -3
  305. package/dist/services/audit/enforcers/lint-peaks-skill-runtime.js +8 -3
  306. package/dist/services/audit/enforcers/lint-peaks-ui-sc-txt-runtime.js +20 -20
  307. package/dist/services/audit/enforcers/lint-prd-artifact-handoff.js +5 -5
  308. package/dist/services/audit/enforcers/lint-prd-source-snapshot.d.ts +1 -1
  309. package/dist/services/audit/enforcers/lint-prd-source-snapshot.js +5 -5
  310. package/dist/services/audit/enforcers/lint-qa-gateguard-and-runtime.js +10 -10
  311. package/dist/services/audit/enforcers/lint-rd-handoff-coverage.js +10 -8
  312. package/dist/services/audit/enforcers/lint-reference-shape.js +50 -18
  313. package/dist/services/audit/enforcers/lint-skill-presence-mandatory.js +5 -5
  314. package/dist/services/audit/enforcers/lint-style.js +44 -11
  315. package/dist/services/audit/enforcers/lint-workflow-shape.js +4 -2
  316. package/dist/services/audit/enforcers/login-gate.js +2 -6
  317. package/dist/services/audit/enforcers/mock-placement.js +2 -2
  318. package/dist/services/audit/enforcers/no-root-pollution.js +38 -9
  319. package/dist/services/audit/enforcers/pre-rd-scan.js +1 -1
  320. package/dist/services/audit/enforcers/prototype-fidelity.js +1 -1
  321. package/dist/services/audit/enforcers/resume-detection.js +5 -4
  322. package/dist/services/audit/prose-ratio-calculator.js +1 -1
  323. package/dist/services/audit/red-line-catalog-p2-a-bee-runtime.d.ts +39 -0
  324. package/dist/services/audit/red-line-catalog-p2-a-bee-runtime.js +205 -0
  325. package/dist/services/audit/red-line-catalog-p2-a-lint-style.d.ts +52 -0
  326. package/dist/services/audit/red-line-catalog-p2-a-lint-style.js +205 -0
  327. package/dist/services/audit/red-line-catalog-p2-a.js +3 -374
  328. package/dist/services/audit/red-line-catalog-p2-b.js +26 -26
  329. package/dist/services/audit/red-line-catalog.js +26 -38
  330. package/dist/services/audit/red-lines-service.js +64 -49
  331. package/dist/services/audit/scanners/openspec-scanner.js +2 -2
  332. package/dist/services/audit/scanners/rules-tree-scanner.js +2 -2
  333. package/dist/services/audit/scanners/skills-tree-scanner.js +2 -2
  334. package/dist/services/audit/static-service.js +3 -3
  335. package/dist/services/audit-independent/index.d.ts +2 -2
  336. package/dist/services/audit-independent/index.js +2 -2
  337. package/dist/services/audit-independent/perf-audit-service.js +19 -8
  338. package/dist/services/audit-independent/security-audit-service.js +31 -16
  339. package/dist/services/autonomous-swarm/autonomous-swarm-service.js +75 -46
  340. package/dist/services/best-practice/output-formatter.js +7 -1
  341. package/dist/services/capability-audit-service/cross-check.js +11 -5
  342. package/dist/services/capability-audit-service/runner.js +15 -7
  343. package/dist/services/capability-baseline/store.js +16 -4
  344. package/dist/services/capability-baseline/types.js +15 -3
  345. package/dist/services/capability-baseline/validator.js +43 -7
  346. package/dist/services/capability-guard-runner/contracts/J02.js +36 -6
  347. package/dist/services/capability-guard-runner/contracts/J03.js +20 -11
  348. package/dist/services/capability-guard-runner/contracts/J04.js +24 -15
  349. package/dist/services/capability-guard-runner/contracts/J05.js +26 -10
  350. package/dist/services/capability-guard-runner/contracts/J07.js +8 -2
  351. package/dist/services/capability-guard-runner/contracts/J08.js +22 -5
  352. package/dist/services/capability-guard-runner/contracts/J10.js +6 -2
  353. package/dist/services/capability-guard-runner/contracts/J11.d.ts +5 -0
  354. package/dist/services/capability-guard-runner/contracts/J11.js +14 -2
  355. package/dist/services/capability-guard-runner/contracts/J12.js +12 -3
  356. package/dist/services/capability-guard-runner/diff.js +1 -5
  357. package/dist/services/changeset/changeset-check-service.js +1 -3
  358. package/dist/services/classify/classify-service.js +20 -8
  359. package/dist/services/classify/classify-types.js +22 -9
  360. package/dist/services/code/auto-compact-lifecycle.js +62 -39
  361. package/dist/services/code/auto-compact-modes.js +2 -2
  362. package/dist/services/code/auto-compact-orchestrator.js +14 -9
  363. package/dist/services/code/batch-heartbeat-poller.d.ts +10 -0
  364. package/dist/services/code/batch-heartbeat-poller.js +17 -1
  365. package/dist/services/code/compact-event-settle-types.d.ts +80 -0
  366. package/dist/services/code/compact-event-settle-types.js +20 -0
  367. package/dist/services/code/compact-event-settle.d.ts +3 -68
  368. package/dist/services/code/compact-event-settle.js +14 -10
  369. package/dist/services/code/dag-orchestrator.js +32 -26
  370. package/dist/services/code/job-shape-decision.js +3 -1
  371. package/dist/services/code/mode-gate-types.d.ts +57 -0
  372. package/dist/services/code/mode-gate-types.js +67 -0
  373. package/dist/services/code/mode-gate.d.ts +4 -58
  374. package/dist/services/code/mode-gate.js +24 -60
  375. package/dist/services/code/orchestrator-can-do-advisories.d.ts +30 -0
  376. package/dist/services/code/orchestrator-can-do-advisories.js +81 -0
  377. package/dist/services/code/orchestrator-can-do-probes.d.ts +30 -0
  378. package/dist/services/code/orchestrator-can-do-probes.js +77 -0
  379. package/dist/services/code/orchestrator-can-do.d.ts +11 -22
  380. package/dist/services/code/orchestrator-can-do.js +37 -137
  381. package/dist/services/code/post-compact-checkpoint.d.ts +28 -0
  382. package/dist/services/code/post-compact-checkpoint.js +57 -0
  383. package/dist/services/code/post-compact-detector.js +16 -48
  384. package/dist/services/code/step-08-gate.d.ts +4 -3
  385. package/dist/services/code/step-08-gate.js +21 -9
  386. package/dist/services/code-review/ecc-bridge.js +23 -23
  387. package/dist/services/codegraph/codegraph-autorefresh.js +56 -39
  388. package/dist/services/codegraph/codegraph-config-repair-writer.js +4 -1
  389. package/dist/services/codegraph/codegraph-exclude-integrity.js +4 -1
  390. package/dist/services/codegraph/codegraph-exclude-repair.js +1 -2
  391. package/dist/services/codegraph/codegraph-index-integrity.js +1 -1
  392. package/dist/services/codegraph/codegraph-preflight-service.d.ts +3 -26
  393. package/dist/services/codegraph/codegraph-preflight-service.js +16 -37
  394. package/dist/services/codegraph/codegraph-preflight-structure.d.ts +32 -0
  395. package/dist/services/codegraph/codegraph-preflight-structure.js +33 -0
  396. package/dist/services/codegraph/codegraph-process-runner.js +12 -1
  397. package/dist/services/codegraph/codegraph-service.js +9 -1
  398. package/dist/services/compact/request-transition-hook.js +2 -1
  399. package/dist/services/compact/suggest-service.d.ts +3 -61
  400. package/dist/services/compact/suggest-service.js +9 -12
  401. package/dist/services/compact/suggest-types.d.ts +76 -0
  402. package/dist/services/compact/suggest-types.js +10 -0
  403. package/dist/services/compact-history/compact-history-service.js +2 -2
  404. package/dist/services/compact-statusline/compact-lifecycle-store.d.ts +2 -32
  405. package/dist/services/compact-statusline/compact-lifecycle-store.js +7 -12
  406. package/dist/services/compact-statusline/compact-lifecycle-types.d.ts +32 -0
  407. package/dist/services/compact-statusline/compact-lifecycle-types.js +8 -0
  408. package/dist/services/compact-statusline/compact-statusline-cell-table.d.ts +42 -0
  409. package/dist/services/compact-statusline/compact-statusline-cell-table.js +63 -0
  410. package/dist/services/compact-statusline/compact-statusline-service.d.ts +4 -21
  411. package/dist/services/compact-statusline/compact-statusline-service.js +9 -101
  412. package/dist/services/compact-statusline/compact-statusline-state.d.ts +4 -0
  413. package/dist/services/compact-statusline/compact-statusline-state.js +50 -0
  414. package/dist/services/config/config-migration.js +2 -2
  415. package/dist/services/config/config-restore.js +1 -1
  416. package/dist/services/config/config-rollback.js +1 -1
  417. package/dist/services/config/config-safety.js +28 -10
  418. package/dist/services/config/config-service.js +114 -31
  419. package/dist/services/config/model-routing.js +5 -2
  420. package/dist/services/config/proxy-service.js +6 -1
  421. package/dist/services/config/workspace-state-service.js +17 -5
  422. package/dist/services/context/auto-compact-dispatcher-input.d.ts +38 -0
  423. package/dist/services/context/auto-compact-dispatcher-input.js +9 -0
  424. package/dist/services/context/auto-compact-dispatcher.d.ts +2 -30
  425. package/dist/services/context/auto-compact-reader-input.d.ts +30 -0
  426. package/dist/services/context/auto-compact-reader-input.js +8 -0
  427. package/dist/services/context/auto-compact-reader.d.ts +2 -24
  428. package/dist/services/context/auto-compact-reader.js +4 -1
  429. package/dist/services/context/auto-compact-thresholds.d.ts +54 -0
  430. package/dist/services/context/auto-compact-thresholds.js +19 -0
  431. package/dist/services/context/auto-compact-types.d.ts +2 -46
  432. package/dist/services/context/auto-compact-types.js +1 -11
  433. package/dist/services/context/build-dispatch-system-prompt.js +2 -2
  434. package/dist/services/context/collector.js +8 -10
  435. package/dist/services/context/context-audit-hint.js +7 -5
  436. package/dist/services/context/context-audit-keys.d.ts +15 -0
  437. package/dist/services/context/context-audit-keys.js +77 -0
  438. package/dist/services/context/context-audit-limits.d.ts +20 -0
  439. package/dist/services/context/context-audit-limits.js +31 -0
  440. package/dist/services/context/context-audit-scan.d.ts +19 -0
  441. package/dist/services/context/context-audit-scan.js +246 -0
  442. package/dist/services/context/context-audit-types.d.ts +65 -0
  443. package/dist/services/context/context-audit-types.js +10 -0
  444. package/dist/services/context/context-audit.d.ts +13 -59
  445. package/dist/services/context/context-audit.js +38 -254
  446. package/dist/services/context/context-builder.js +4 -4
  447. package/dist/services/context/context-schema.d.ts +1 -1
  448. package/dist/services/context/context-schema.js +13 -13
  449. package/dist/services/context/doc-retriever.js +2 -2
  450. package/dist/services/context/harness-context-witness.js +43 -24
  451. package/dist/services/context/harness-window-config.js +27 -7
  452. package/dist/services/context/ide-detect.js +2 -1
  453. package/dist/services/context/index.d.ts +1 -1
  454. package/dist/services/context/memory-index-reader.js +3 -9
  455. package/dist/services/context/memory-preflight-config.js +3 -5
  456. package/dist/services/context/memory-preflight-service.d.ts +2 -20
  457. package/dist/services/context/memory-preflight-service.js +37 -68
  458. package/dist/services/context/memory-preflight-support.d.ts +48 -0
  459. package/dist/services/context/memory-preflight-support.js +56 -0
  460. package/dist/services/context/post-compact-reinjection.js +3 -3
  461. package/dist/services/context/renderer.js +7 -3
  462. package/dist/services/context/spillover-store.js +3 -1
  463. package/dist/services/context/summary-view.js +1 -1
  464. package/dist/services/context/threshold.js +2 -2
  465. package/dist/services/context/tokenizer.js +3 -3
  466. package/dist/services/crystallization/crystallization-brief-schema.d.ts +80 -0
  467. package/dist/services/crystallization/crystallization-brief-schema.js +159 -0
  468. package/dist/services/crystallization/crystallization-service.d.ts +7 -7
  469. package/dist/services/crystallization/crystallization-service.js +56 -55
  470. package/dist/services/crystallization/crystallization-store.d.ts +2 -2
  471. package/dist/services/crystallization/crystallization-store.js +37 -20
  472. package/dist/services/crystallization/crystallization-types.d.ts +4 -56
  473. package/dist/services/crystallization/crystallization-types.js +31 -184
  474. package/dist/services/crystallization/evidence-brief-builder.d.ts +3 -3
  475. package/dist/services/crystallization/evidence-brief-builder.js +32 -38
  476. package/dist/services/crystallization/index.d.ts +4 -4
  477. package/dist/services/crystallization/index.js +4 -4
  478. package/dist/services/dashboard/project-dashboard-service.js +7 -1
  479. package/dist/services/dispatch/await-batch-helpers.d.ts +55 -0
  480. package/dist/services/dispatch/await-batch-helpers.js +206 -0
  481. package/dist/services/dispatch/await-batch.d.ts +50 -7
  482. package/dist/services/dispatch/await-batch.js +97 -194
  483. package/dist/services/dispatch/batch-counter.js +2 -1
  484. package/dist/services/dispatch/conflict-replay.js +2 -2
  485. package/dist/services/dispatch/contract-store.js +5 -2
  486. package/dist/services/dispatch/dispatch-record-input-types.d.ts +81 -0
  487. package/dist/services/dispatch/dispatch-record-input-types.js +1 -0
  488. package/dist/services/dispatch/dispatch-record-types.d.ts +6 -73
  489. package/dist/services/dispatch/dispatch-record-upgrade-fields.d.ts +72 -0
  490. package/dist/services/dispatch/dispatch-record-upgrade-fields.js +242 -0
  491. package/dist/services/dispatch/dispatch-record-upgrade-guards.d.ts +15 -0
  492. package/dist/services/dispatch/dispatch-record-upgrade-guards.js +55 -0
  493. package/dist/services/dispatch/dispatch-record-upgrade.d.ts +2 -4
  494. package/dist/services/dispatch/dispatch-record-upgrade.js +21 -213
  495. package/dist/services/dispatch/dispatch-record-writer.js +54 -26
  496. package/dist/services/dispatch/dispatch-sub-agent.js +7 -2
  497. package/dist/services/dispatch/e2e-fixtures.js +1 -1
  498. package/dist/services/dispatch/isolation-lease.js +39 -17
  499. package/dist/services/dispatch/merge-back-runner.js +51 -11
  500. package/dist/services/dispatch/service-shutdown.js +4 -1
  501. package/dist/services/dispatch/slice-dag-types.d.ts +116 -0
  502. package/dist/services/dispatch/slice-dag-types.js +41 -0
  503. package/dist/services/dispatch/slice-dag.d.ts +3 -109
  504. package/dist/services/dispatch/slice-dag.js +13 -36
  505. package/dist/services/dispatch/sub-agent-batch-await.d.ts +47 -0
  506. package/dist/services/dispatch/sub-agent-batch-await.js +73 -0
  507. package/dist/services/dispatch/sub-agent-dispatcher-types.d.ts +122 -0
  508. package/dist/services/dispatch/sub-agent-dispatcher-types.js +12 -0
  509. package/dist/services/dispatch/sub-agent-dispatcher.d.ts +3 -145
  510. package/dist/services/dispatch/sub-agent-dispatcher.js +14 -70
  511. package/dist/services/dispatch/test-tool-detection.js +12 -1
  512. package/dist/services/doc/doc-generator.js +19 -4
  513. package/dist/services/doctor/doctor-service/checks/check-id-schema.js +16 -8
  514. package/dist/services/doctor/doctor-service/checks/codegraph-capability.d.ts +7 -2
  515. package/dist/services/doctor/doctor-service/checks/codegraph-capability.js +26 -8
  516. package/dist/services/doctor/doctor-service/checks/codegraph-exclude-integrity.js +16 -8
  517. package/dist/services/doctor/doctor-service/checks/codegraph-index-integrity.js +16 -8
  518. package/dist/services/doctor/doctor-service/checks/dist-source-version.js +18 -9
  519. package/dist/services/doctor/doctor-service/checks/ecc-hooks-schema-drift.js +20 -10
  520. package/dist/services/doctor/doctor-service/checks/gateguard-conflict.js +18 -9
  521. package/dist/services/doctor/doctor-service/checks/l3-memory-health.js +25 -11
  522. package/dist/services/doctor/doctor-service/checks/l3-orphan-sessions.js +12 -6
  523. package/dist/services/doctor/doctor-service/checks/multi-binary-drift.d.ts +7 -16
  524. package/dist/services/doctor/doctor-service/checks/multi-binary-drift.js +50 -70
  525. package/dist/services/doctor/doctor-service/checks/schema-validity.js +5 -1
  526. package/dist/services/doctor/doctor-service/checks/skill-presence.js +4 -2
  527. package/dist/services/doctor/doctor-service/checks/statusline-install.js +8 -4
  528. package/dist/services/doctor/doctor-service/checks/statusline-runtime.js +8 -4
  529. package/dist/services/doctor/doctor-service/checks/user-config.js +4 -2
  530. package/dist/services/doctor/doctor-service/checks/workspace-init.js +8 -4
  531. package/dist/services/doctor/doctor-service/checks/workspace-layout.js +19 -11
  532. package/dist/services/doctor/doctor-service/index.js +4 -2
  533. package/dist/services/doctor/doctor-service/multi-binary-drift-helpers.d.ts +40 -0
  534. package/dist/services/doctor/doctor-service/multi-binary-drift-helpers.js +49 -0
  535. package/dist/services/doctor/doctor-service/plugin-registry.js +1 -1
  536. package/dist/services/doctor/doctor-service/probe-types.d.ts +210 -0
  537. package/dist/services/doctor/doctor-service/probe-types.js +14 -0
  538. package/dist/services/doctor/doctor-service/types.d.ts +7 -197
  539. package/dist/services/doctor/index.d.ts +1 -1
  540. package/dist/services/doctor/index.js +1 -1
  541. package/dist/services/env/shell-probe.js +8 -2
  542. package/dist/services/evidence/evidence-body-builders.d.ts +23 -0
  543. package/dist/services/evidence/evidence-body-builders.js +197 -0
  544. package/dist/services/evidence/evidence-generator.js +6 -187
  545. package/dist/services/evolution/evolution-constraints.d.ts +43 -0
  546. package/dist/services/evolution/evolution-constraints.js +54 -0
  547. package/dist/services/evolution/evolution-evaluation-schema.d.ts +43 -0
  548. package/dist/services/evolution/evolution-evaluation-schema.js +43 -0
  549. package/dist/services/evolution/evolution-service.d.ts +6 -6
  550. package/dist/services/evolution/evolution-service.js +58 -58
  551. package/dist/services/evolution/evolution-store.d.ts +2 -2
  552. package/dist/services/evolution/evolution-store.js +37 -51
  553. package/dist/services/evolution/evolution-types.d.ts +2 -22
  554. package/dist/services/evolution/evolution-types.js +41 -101
  555. package/dist/services/evolution/independent-evaluator-runner.d.ts +3 -3
  556. package/dist/services/evolution/independent-evaluator-runner.js +20 -22
  557. package/dist/services/evolution/regression-skeptic-runner.d.ts +2 -2
  558. package/dist/services/evolution/regression-skeptic-runner.js +18 -18
  559. package/dist/services/feedback/feedback-promotion-service.js +48 -12
  560. package/dist/services/feedback/promotion-artifact-evidence.d.ts +2 -16
  561. package/dist/services/feedback/promotion-artifact-evidence.js +6 -83
  562. package/dist/services/feedback/promotion-artifact-json-evidence.d.ts +29 -0
  563. package/dist/services/feedback/promotion-artifact-json-evidence.js +39 -0
  564. package/dist/services/feedback/promotion-source-comments.d.ts +47 -0
  565. package/dist/services/feedback/promotion-source-comments.js +61 -0
  566. package/dist/services/final-review/final-review-contract.d.ts +26 -0
  567. package/dist/services/final-review/final-review-contract.js +14 -0
  568. package/dist/services/final-review/final-review-delivery.d.ts +63 -0
  569. package/dist/services/final-review/final-review-delivery.js +124 -0
  570. package/dist/services/final-review/final-review-evidence-budget.d.ts +125 -0
  571. package/dist/services/final-review/final-review-evidence-budget.js +218 -0
  572. package/dist/services/final-review/final-review-evidence-collect.d.ts +4 -0
  573. package/dist/services/final-review/final-review-evidence-collect.js +230 -0
  574. package/dist/services/final-review/final-review-evidence-sources.d.ts +138 -0
  575. package/dist/services/final-review/final-review-evidence-sources.js +139 -0
  576. package/dist/services/final-review/final-review-fifth-dim.d.ts +8 -0
  577. package/dist/services/final-review/final-review-fifth-dim.js +20 -0
  578. package/dist/services/final-review/final-review-gates.d.ts +119 -0
  579. package/dist/services/final-review/final-review-gates.js +214 -0
  580. package/dist/services/final-review/final-review-output-budget.d.ts +88 -0
  581. package/dist/services/final-review/final-review-output-budget.js +161 -0
  582. package/dist/services/final-review/final-review-prompt.d.ts +35 -0
  583. package/dist/services/final-review/final-review-prompt.js +112 -0
  584. package/dist/services/final-review/final-review-reviewer.d.ts +57 -0
  585. package/dist/services/final-review/final-review-reviewer.js +95 -0
  586. package/dist/services/final-review/final-review-runner.d.ts +3 -0
  587. package/dist/services/final-review/final-review-runner.js +158 -0
  588. package/dist/services/final-review/final-review-service.d.ts +119 -373
  589. package/dist/services/final-review/final-review-service.js +48 -1380
  590. package/dist/services/final-review/final-review-verdicts.d.ts +60 -0
  591. package/dist/services/final-review/final-review-verdicts.js +91 -0
  592. package/dist/services/final-review/index.d.ts +3 -3
  593. package/dist/services/final-review/index.js +2 -2
  594. package/dist/services/final-review/pre-post-diff.js +32 -29
  595. package/dist/services/fixture/fixture-capture-service.js +14 -6
  596. package/dist/services/fresh-context/trigger-scan.js +13 -2
  597. package/dist/services/fuzzy-matching/fuzzy-match-service.js +1 -1
  598. package/dist/services/fuzzy-matching/fzf-pick-service.js +6 -1
  599. package/dist/services/hooks/pre-tool-code-gate.js +2 -2
  600. package/dist/services/hooks/presence-marker-detector.js +12 -2
  601. package/dist/services/hooks/worktree-authorization-gate.js +21 -7
  602. package/dist/services/ide/adapters/claude-code-adapter.js +30 -17
  603. package/dist/services/ide/adapters/codex-adapter.js +3 -5
  604. package/dist/services/ide/adapters/cursor-adapter.js +3 -5
  605. package/dist/services/ide/adapters/hermes-adapter.js +2 -4
  606. package/dist/services/ide/adapters/openclaw-adapter.js +2 -4
  607. package/dist/services/ide/adapters/qoder-adapter.js +2 -4
  608. package/dist/services/ide/adapters/tongyi-lingma-adapter.js +1 -1
  609. package/dist/services/ide/adapters/trae-adapter.js +3 -5
  610. package/dist/services/ide/adapters/zcode-adapter.js +8 -7
  611. package/dist/services/ide/current-model-detector.js +2 -1
  612. package/dist/services/ide/ide-compact-types.d.ts +153 -0
  613. package/dist/services/ide/ide-compact-types.js +1 -0
  614. package/dist/services/ide/ide-registry.js +1 -1
  615. package/dist/services/ide/ide-types.d.ts +7 -145
  616. package/dist/services/ide/resource-profile.js +1 -1
  617. package/dist/services/ide/shared/atomic-json.js +2 -1
  618. package/dist/services/impact/impact-scan-service.js +12 -5
  619. package/dist/services/job/job-commit-verification.d.ts +73 -0
  620. package/dist/services/job/job-commit-verification.js +72 -0
  621. package/dist/services/job/job-orchestrator.d.ts +42 -0
  622. package/dist/services/job/job-orchestrator.js +110 -10
  623. package/dist/services/job/job-progress-store.d.ts +75 -5
  624. package/dist/services/job/job-progress-store.js +83 -6
  625. package/dist/services/job/job-rotation.d.ts +1 -1
  626. package/dist/services/job/job-rotation.js +5 -1
  627. package/dist/services/job/job-state-store.js +2 -2
  628. package/dist/services/job/job-types.js +49 -20
  629. package/dist/services/job/subagent-job-wrapper.d.ts +1 -1
  630. package/dist/services/job/subagent-job-wrapper.js +5 -1
  631. package/dist/services/job-snapshot/snapshot.js +2 -2
  632. package/dist/services/karpathy-cost/karpathy-cost-check-service.js +23 -13
  633. package/dist/services/legacy/legacy-detector.js +51 -5
  634. package/dist/services/lint/detect-eslint.js +10 -4
  635. package/dist/services/lint/detect-ocr-18.js +11 -3
  636. package/dist/services/lint/eslint-runner-support.d.ts +22 -0
  637. package/dist/services/lint/eslint-runner-support.js +185 -0
  638. package/dist/services/lint/eslint-runner-types.d.ts +69 -0
  639. package/dist/services/lint/eslint-runner-types.js +11 -0
  640. package/dist/services/lint/eslint-runner.d.ts +4 -56
  641. package/dist/services/lint/eslint-runner.js +24 -178
  642. package/dist/services/lint/npx-resolver.js +1 -3
  643. package/dist/services/lint/ocr-18-acquire.js +15 -4
  644. package/dist/services/lint/ocr-multilang-adapter.js +4 -5
  645. package/dist/services/llm/anthropic-runner.js +4 -1
  646. package/dist/services/log/log-commands-service.js +2 -6
  647. package/dist/services/log/logger.js +15 -12
  648. package/dist/services/log/retention.js +3 -2
  649. package/dist/services/loop/evaluator-dispatcher.js +78 -42
  650. package/dist/services/loop/loop-bee-relation-service.d.ts +4 -4
  651. package/dist/services/loop/loop-bee-relation-service.js +36 -40
  652. package/dist/services/loop/loop-bee-relation-store.d.ts +3 -3
  653. package/dist/services/loop/loop-bee-relation-store.js +9 -11
  654. package/dist/services/loop/loop-bee-relation-types.d.ts +1 -1
  655. package/dist/services/loop/loop-bee-relation-types.js +14 -25
  656. package/dist/services/loop/loop-release-service.d.ts +2 -2
  657. package/dist/services/loop/loop-release-service.js +3 -3
  658. package/dist/services/loop/loop-release-store.d.ts +2 -2
  659. package/dist/services/loop/loop-release-store.js +4 -6
  660. package/dist/services/loop/loop-release-types.d.ts +1 -1
  661. package/dist/services/loop/loop-release-types.js +21 -31
  662. package/dist/services/loop/monotonic-guard-types.d.ts +51 -0
  663. package/dist/services/loop/monotonic-guard-types.js +9 -0
  664. package/dist/services/loop/monotonic-guard.d.ts +2 -43
  665. package/dist/services/loop/monotonic-runner-types.d.ts +63 -0
  666. package/dist/services/loop/monotonic-runner-types.js +17 -0
  667. package/dist/services/loop/monotonic-runner.d.ts +3 -34
  668. package/dist/services/loop/monotonic-runner.js +10 -20
  669. package/dist/services/loop/run-driver.js +16 -8
  670. package/dist/services/loop/spec-service.d.ts +0 -5
  671. package/dist/services/loop/spec-service.js +49 -9
  672. package/dist/services/memory/llm-reranker-core.d.ts +108 -0
  673. package/dist/services/memory/llm-reranker-core.js +105 -0
  674. package/dist/services/memory/llm-reranker.d.ts +3 -94
  675. package/dist/services/memory/llm-reranker.js +13 -102
  676. package/dist/services/memory/memory-ingest-service.d.ts +1 -22
  677. package/dist/services/memory/memory-ingest-service.js +29 -76
  678. package/dist/services/memory/memory-ingest-support.d.ts +23 -0
  679. package/dist/services/memory/memory-ingest-support.js +81 -0
  680. package/dist/services/memory/memory-rotate-service.js +41 -8
  681. package/dist/services/memory/memory-search-service.js +8 -4
  682. package/dist/services/memory/project-context-service.js +26 -5
  683. package/dist/services/memory/project-memory-service/index/kind-dispatch.d.ts +2 -7
  684. package/dist/services/memory/project-memory-service/index/kind-dispatch.js +17 -136
  685. package/dist/services/memory/project-memory-service/index/project-memory-plan-exec.d.ts +7 -0
  686. package/dist/services/memory/project-memory-service/index/project-memory-plan-exec.js +150 -0
  687. package/dist/services/memory/project-memory-service/index/ranking.js +6 -3
  688. package/dist/services/memory/project-memory-service/index/reindex.js +14 -5
  689. package/dist/services/memory/project-memory-service/memory-kinds.d.ts +31 -0
  690. package/dist/services/memory/project-memory-service/memory-kinds.js +87 -0
  691. package/dist/services/memory/project-memory-service/parsers/frontmatter-parse.d.ts +24 -0
  692. package/dist/services/memory/project-memory-service/parsers/frontmatter-parse.js +104 -0
  693. package/dist/services/memory/project-memory-service/parsers/frontmatter.d.ts +2 -24
  694. package/dist/services/memory/project-memory-service/parsers/frontmatter.js +28 -79
  695. package/dist/services/memory/project-memory-service/parsers/markdown-pure.js +15 -3
  696. package/dist/services/memory/project-memory-service/store/atomic-write.js +34 -22
  697. package/dist/services/memory/project-memory-service/store/paths.js +2 -1
  698. package/dist/services/memory/project-memory-service/types.d.ts +3 -31
  699. package/dist/services/memory/project-memory-service/types.js +1 -76
  700. package/dist/services/migrate-skill-name/migrate.js +1 -1
  701. package/dist/services/migrate-skill-name/schema.js +1 -1
  702. package/dist/services/mode/mode-enforcement.js +4 -2
  703. package/dist/services/mode/mode-status-service.d.ts +27 -9
  704. package/dist/services/mode/mode-status-service.js +64 -12
  705. package/dist/services/observability/aggregation-helpers.d.ts +22 -0
  706. package/dist/services/observability/aggregation-helpers.js +65 -0
  707. package/dist/services/observability/aggregation-types.d.ts +66 -0
  708. package/dist/services/observability/aggregation-types.js +34 -0
  709. package/dist/services/observability/aggregation.d.ts +5 -53
  710. package/dist/services/observability/aggregation.js +17 -80
  711. package/dist/services/observability/jsonl-store.js +2 -1
  712. package/dist/services/observability/observability-schema.d.ts +71 -0
  713. package/dist/services/observability/observability-schema.js +64 -0
  714. package/dist/services/observability/observability-service.d.ts +3 -56
  715. package/dist/services/observability/observability-service.js +9 -49
  716. package/dist/services/openspec/coverage-evidence-reader.js +18 -11
  717. package/dist/services/openspec/openspec-archive-service.js +31 -24
  718. package/dist/services/openspec/openspec-init-service.js +8 -2
  719. package/dist/services/openspec/openspec-propose-from-doctor-service.js +1 -1
  720. package/dist/services/openspec/openspec-scan-service.js +4 -1
  721. package/dist/services/openspec/openspec-validate-service.js +26 -5
  722. package/dist/services/perf/perf-baseline-service.js +2 -6
  723. package/dist/services/polyrepo/polyrepo-dispatcher.js +2 -1
  724. package/dist/services/polyrepo/polyrepo-scanner.js +4 -1
  725. package/dist/services/prd/handoff-frontmatter-shape.d.ts +42 -0
  726. package/dist/services/prd/handoff-frontmatter-shape.js +67 -0
  727. package/dist/services/prd/handoff-frontmatter.js +1 -1
  728. package/dist/services/prd/handoff-path-resolution.d.ts +37 -0
  729. package/dist/services/prd/handoff-path-resolution.js +101 -0
  730. package/dist/services/prd/handoff-service.d.ts +1 -37
  731. package/dist/services/prd/handoff-service.js +16 -148
  732. package/dist/services/prd/prd-blocks-checker.js +28 -8
  733. package/dist/services/prd/project-scan-bootstrap-service.js +1 -5
  734. package/dist/services/prd/project-scan-reader.js +1 -4
  735. package/dist/services/prd/project-scan-sediment.js +1 -4
  736. package/dist/services/preferences/preferences-service.js +6 -8
  737. package/dist/services/preferences/preferences-types.js +4 -4
  738. package/dist/services/qa/bdd-test-style-contract.d.ts +41 -0
  739. package/dist/services/qa/bdd-test-style-contract.js +37 -0
  740. package/dist/services/qa/bdd-test-style-verifier.d.ts +2 -24
  741. package/dist/services/qa/bdd-test-style-verifier.js +5 -31
  742. package/dist/services/qa/browser-event-logger.js +2 -1
  743. package/dist/services/qa/qa-business-review-state.js +20 -5
  744. package/dist/services/qa/screenshot-archive-service.js +1 -3
  745. package/dist/services/rd/ast-gate.js +2 -2
  746. package/dist/services/rd/impl.js +1 -1
  747. package/dist/services/rd/rd-service.js +117 -43
  748. package/dist/services/rd/reviewer-dispatch-policy.js +4 -7
  749. package/dist/services/rd/standards-diagnostic.js +4 -1
  750. package/dist/services/rd/strategy.js +10 -3
  751. package/dist/services/rd/tactical-stage.js +2 -2
  752. package/dist/services/rd/types.js +9 -7
  753. package/dist/services/rd-swarm/rd-swarm-service.d.ts +2 -45
  754. package/dist/services/rd-swarm/rd-swarm-service.js +140 -21
  755. package/dist/services/rd-swarm/rd-swarm-types.d.ts +54 -0
  756. package/dist/services/rd-swarm/rd-swarm-types.js +10 -0
  757. package/dist/services/recommendations/capability-map-service.js +10 -2
  758. package/dist/services/recommendations/capability-seed-items.js +81 -14
  759. package/dist/services/recommendations/capability-seed-mappings.js +420 -48
  760. package/dist/services/recommendations/capability-seed-sources-mcp-server.d.ts +9 -0
  761. package/dist/services/recommendations/capability-seed-sources-mcp-server.js +233 -0
  762. package/dist/services/recommendations/capability-seed-sources.js +127 -32
  763. package/dist/services/release/release-state.d.ts +2 -2
  764. package/dist/services/release/release-state.js +44 -15
  765. package/dist/services/release/version-precheck-layer-changeset.d.ts +2 -0
  766. package/dist/services/release/version-precheck-layer-changeset.js +43 -0
  767. package/dist/services/release/version-precheck-service.d.ts +11 -36
  768. package/dist/services/release/version-precheck-service.js +20 -104
  769. package/dist/services/release/version-precheck-support.d.ts +53 -0
  770. package/dist/services/release/version-precheck-support.js +64 -0
  771. package/dist/services/retrospective/retrospective-index.js +17 -3
  772. package/dist/services/retrospective/retrospective-search-service.js +6 -2
  773. package/dist/services/retrospective/retrospective-show.js +4 -1
  774. package/dist/services/reviewer/model-family.js +7 -1
  775. package/dist/services/reviewer/providers/anthropic.d.ts +5 -0
  776. package/dist/services/reviewer/providers/anthropic.js +10 -1
  777. package/dist/services/reviewer/providers/openai.d.ts +5 -0
  778. package/dist/services/reviewer/providers/openai.js +10 -1
  779. package/dist/services/reviewer/reviewer-config.js +4 -2
  780. package/dist/services/reviewer/reviewer-service.d.ts +2 -36
  781. package/dist/services/reviewer/reviewer-service.js +2 -1
  782. package/dist/services/reviewer/reviewer-types.d.ts +43 -0
  783. package/dist/services/reviewer/reviewer-types.js +1 -0
  784. package/dist/services/role/role-registry.js +9 -1
  785. package/dist/services/runtime/runtime-detector.js +4 -1
  786. package/dist/services/runtime/vendors/claude-code.js +14 -6
  787. package/dist/services/runtime/vendors/codex.js +11 -3
  788. package/dist/services/runtime/vendors/copilot.js +11 -3
  789. package/dist/services/sc/sc-service.js +28 -15
  790. package/dist/services/scan/acceptance-coverage-service.js +4 -1
  791. package/dist/services/scan/api-diff-openapi-schema-read.d.ts +67 -0
  792. package/dist/services/scan/api-diff-openapi-schema-read.js +154 -0
  793. package/dist/services/scan/api-diff-openapi.d.ts +16 -2
  794. package/dist/services/scan/api-diff-openapi.js +19 -123
  795. package/dist/services/scan/api-diff-recorded.js +16 -3
  796. package/dist/services/scan/api-diff-service.js +49 -16
  797. package/dist/services/scan/api-diff-types.js +12 -3
  798. package/dist/services/scan/api-surface-helpers.d.ts +13 -0
  799. package/dist/services/scan/api-surface-helpers.js +31 -0
  800. package/dist/services/scan/api-surface-service.d.ts +2 -45
  801. package/dist/services/scan/api-surface-service.js +15 -26
  802. package/dist/services/scan/api-surface-types.d.ts +54 -0
  803. package/dist/services/scan/api-surface-types.js +10 -0
  804. package/dist/services/scan/archetype-detection.d.ts +37 -0
  805. package/dist/services/scan/archetype-detection.js +142 -0
  806. package/dist/services/scan/archetype-service.js +36 -125
  807. package/dist/services/scan/diff-scope-service.js +35 -15
  808. package/dist/services/scan/existing-system-service.js +16 -99
  809. package/dist/services/scan/existing-system-visual-tokens.d.ts +20 -0
  810. package/dist/services/scan/existing-system-visual-tokens.js +123 -0
  811. package/dist/services/scan/file-size-policy.d.ts +86 -0
  812. package/dist/services/scan/file-size-policy.js +184 -0
  813. package/dist/services/scan/file-size-scan.d.ts +30 -3
  814. package/dist/services/scan/file-size-scan.js +47 -9
  815. package/dist/services/scan/karpathy-service.js +6 -1
  816. package/dist/services/scan/orphan-service.js +86 -20
  817. package/dist/services/scan/type-sanity-service.js +104 -10
  818. package/dist/services/sediment/dispose-confirm.d.ts +2 -2
  819. package/dist/services/sediment/dispose-confirm.js +2 -2
  820. package/dist/services/sediment/json-schema.d.ts +1 -1
  821. package/dist/services/sediment/json-schema.js +25 -13
  822. package/dist/services/sediment/manifest-lint.d.ts +1 -12
  823. package/dist/services/sediment/manifest-lint.js +1 -7
  824. package/dist/services/sediment/pool-paths.js +13 -9
  825. package/dist/services/sediment/pool-read.d.ts +1 -1
  826. package/dist/services/sediment/pool-read.js +42 -18
  827. package/dist/services/sediment/pool-rebuild-index.d.ts +1 -1
  828. package/dist/services/sediment/pool-rebuild-index.js +5 -5
  829. package/dist/services/sediment/pool-write.d.ts +1 -1
  830. package/dist/services/sediment/pool-write.js +7 -7
  831. package/dist/services/sediment/promotion-gate.d.ts +1 -1
  832. package/dist/services/sediment/promotion-gate.js +9 -9
  833. package/dist/services/sediment/types.d.ts +8 -8
  834. package/dist/services/session/binding-status-service.js +14 -4
  835. package/dist/services/session/caller-binding-service.js +2 -1
  836. package/dist/services/session/getSessionDir.js +4 -1
  837. package/dist/services/session/index.d.ts +1 -1
  838. package/dist/services/session/index.js +1 -1
  839. package/dist/services/session/resolve-caller-id.js +7 -5
  840. package/dist/services/session/session-binding-bridge.js +26 -25
  841. package/dist/services/session/session-checkpoint-service.js +1 -1
  842. package/dist/services/session/session-file-schema.d.ts +70 -0
  843. package/dist/services/session/session-file-schema.js +68 -0
  844. package/dist/services/session/session-manager.d.ts +6 -6
  845. package/dist/services/session/session-manager.js +30 -29
  846. package/dist/services/session/session-resume-service.js +2 -1
  847. package/dist/services/share/bundle-format-constants.d.ts +85 -0
  848. package/dist/services/share/bundle-format-constants.js +100 -0
  849. package/dist/services/share/bundle-reader.d.ts +3 -3
  850. package/dist/services/share/bundle-reader.js +75 -68
  851. package/dist/services/share/bundle-types.d.ts +3 -70
  852. package/dist/services/share/bundle-types.js +38 -107
  853. package/dist/services/share/bundle-writer.d.ts +3 -3
  854. package/dist/services/share/bundle-writer.js +101 -91
  855. package/dist/services/share/run-state-contract.d.ts +1 -1
  856. package/dist/services/share/run-state-contract.js +7 -13
  857. package/dist/services/signal/cancel-handler.js +2 -1
  858. package/dist/services/skill/resume-detector.js +6 -4
  859. package/dist/services/skill/skill-scheduler.js +3 -1
  860. package/dist/services/skill/skill-search-service.js +4 -4
  861. package/dist/services/skillhub/release-diff.d.ts +2 -2
  862. package/dist/services/skillhub/release-diff.js +6 -10
  863. package/dist/services/skillhub/release-export.d.ts +2 -2
  864. package/dist/services/skillhub/release-export.js +15 -17
  865. package/dist/services/skillhub/release-gc-blobs.d.ts +2 -2
  866. package/dist/services/skillhub/release-gc-blobs.js +4 -4
  867. package/dist/services/skillhub/release-import.d.ts +2 -2
  868. package/dist/services/skillhub/release-import.js +13 -12
  869. package/dist/services/skillhub/release-retain.d.ts +3 -3
  870. package/dist/services/skillhub/release-retain.js +22 -22
  871. package/dist/services/skillhub/sqlite-store.d.ts +1 -1
  872. package/dist/services/skillhub/sqlite-store.js +12 -11
  873. package/dist/services/skillhub/tar-runtime.js +15 -15
  874. package/dist/services/skillhub/types.d.ts +4 -4
  875. package/dist/services/skills/hooks-codegate-superpowers.js +16 -7
  876. package/dist/services/skills/hooks-settings-service.js +61 -19
  877. package/dist/services/skills/presence-lease-service.js +26 -16
  878. package/dist/services/skills/presence-lease-types.d.ts +1 -1
  879. package/dist/services/skills/presence-lease-types.js +1 -1
  880. package/dist/services/skills/skill-conformance-service.js +40 -8
  881. package/dist/services/skills/skill-presence-service.js +16 -14
  882. package/dist/services/skills/skill-runbook-service.js +2 -1
  883. package/dist/services/skills/skill-statusline-model.d.ts +128 -0
  884. package/dist/services/skills/skill-statusline-model.js +163 -0
  885. package/dist/services/skills/skill-statusline-renderer.js +4 -3
  886. package/dist/services/skills/skill-statusline-service.d.ts +3 -100
  887. package/dist/services/skills/skill-statusline-service.js +56 -163
  888. package/dist/services/skills/statusline-palette.js +11 -6
  889. package/dist/services/skills/statusline-settings-service.js +2 -1
  890. package/dist/services/skills/sync-service-support.d.ts +65 -0
  891. package/dist/services/skills/sync-service-support.js +50 -0
  892. package/dist/services/skills/sync-service.d.ts +3 -66
  893. package/dist/services/skills/sync-service.js +15 -53
  894. package/dist/services/slice/calibration-store.js +8 -2
  895. package/dist/services/slice/cross-pass-edge-merger.d.ts +3 -28
  896. package/dist/services/slice/cross-pass-edge-merger.js +13 -63
  897. package/dist/services/slice/cross-pass-edge-static-scan-support.d.ts +69 -0
  898. package/dist/services/slice/cross-pass-edge-static-scan-support.js +74 -0
  899. package/dist/services/slice/granularity-decider.js +2 -2
  900. package/dist/services/slice/slice-archive-service.js +8 -3
  901. package/dist/services/slice/slice-check-service.js +19 -8
  902. package/dist/services/slice/slice-decompose-runners.js +61 -23
  903. package/dist/services/slice/slice-decompose-service.js +4 -4
  904. package/dist/services/slice/slice-review-state.js +8 -2
  905. package/dist/services/smoke/smoke-paths-state.js +9 -2
  906. package/dist/services/sop/gate-enforce-service.js +9 -2
  907. package/dist/services/sop/sop-advance-service.js +14 -2
  908. package/dist/services/sop/sop-check-service.js +16 -4
  909. package/dist/services/sop/sop-paths.js +3 -1
  910. package/dist/services/sop/sop-registry-service.js +5 -1
  911. package/dist/services/sop/sop-service.js +29 -7
  912. package/dist/services/sop/sop-types.js +5 -1
  913. package/dist/services/standards/ide-aware-standards-service.js +2 -2
  914. package/dist/services/standards/loop-engineering-lint.js +12 -5
  915. package/dist/services/standards/loop-engineering-readiness-lint.js +5 -5
  916. package/dist/services/standards/migrate-claude-rules-service.js +9 -7
  917. package/dist/services/standards/missing-standards-detector.js +1 -3
  918. package/dist/services/standards/project-context-support.d.ts +50 -0
  919. package/dist/services/standards/project-context-support.js +244 -0
  920. package/dist/services/standards/project-context-types.d.ts +30 -0
  921. package/dist/services/standards/project-context-types.js +11 -0
  922. package/dist/services/standards/project-context.d.ts +10 -22
  923. package/dist/services/standards/project-context.js +27 -214
  924. package/dist/services/standards/project-standards-service.js +43 -12
  925. package/dist/services/standards/standards-render-common.d.ts +15 -0
  926. package/dist/services/standards/standards-render-common.js +49 -0
  927. package/dist/services/standards/standards-render.d.ts +1 -2
  928. package/dist/services/standards/standards-render.js +31 -58
  929. package/dist/services/standards/ui-library-dispatch-block.js +1 -1
  930. package/dist/services/tech/tech-change-id-service.js +7 -7
  931. package/dist/services/tech/tech-service.js +73 -26
  932. package/dist/services/test-cache/test-cache-service.js +8 -3
  933. package/dist/services/upgrade/1x-detector-service.js +5 -3
  934. package/dist/services/upgrade/gitignore-migrate-service.js +5 -5
  935. package/dist/services/upgrade/upgrade-service.js +36 -13
  936. package/dist/services/verdict/envelope-parsers.d.ts +84 -0
  937. package/dist/services/verdict/envelope-parsers.js +146 -0
  938. package/dist/services/verdict/envelopes.d.ts +50 -60
  939. package/dist/services/verdict/envelopes.js +18 -156
  940. package/dist/services/verdict/verdict-aggregator.js +27 -3
  941. package/dist/services/vm/vm-lease.js +15 -3
  942. package/dist/services/web/aria-node.d.ts +27 -0
  943. package/dist/services/web/aria-node.js +1 -0
  944. package/dist/services/web/browser-acquire.js +3 -1
  945. package/dist/services/web/browser-cache-probe.d.ts +18 -0
  946. package/dist/services/web/browser-cache-probe.js +110 -0
  947. package/dist/services/web/browser-session-manager.js +6 -2
  948. package/dist/services/web/daemon-registry.js +4 -1
  949. package/dist/services/web/playwright-loader.d.ts +2 -70
  950. package/dist/services/web/playwright-types.d.ts +75 -0
  951. package/dist/services/web/playwright-types.js +1 -0
  952. package/dist/services/web/snapshot-pruner.d.ts +2 -23
  953. package/dist/services/web/snapshot-pruner.js +8 -3
  954. package/dist/services/web/web-daemon-service.js +1 -3
  955. package/dist/services/web/web-install-service.d.ts +3 -32
  956. package/dist/services/web/web-install-service.js +21 -100
  957. package/dist/services/web/web-install-types.d.ts +31 -0
  958. package/dist/services/web/web-install-types.js +13 -0
  959. package/dist/services/web/web-login-profile.js +7 -5
  960. package/dist/services/web/web-protocol.js +3 -1
  961. package/dist/services/workflow/pipeline-verify-gate-support.js +63 -17
  962. package/dist/services/workflow/pipeline-verify-service.js +17 -6
  963. package/dist/services/workflow/plan-reader.js +5 -1
  964. package/dist/services/workflow/plan-refresher.js +20 -6
  965. package/dist/services/workflow/plan-trigger-detector.js +31 -8
  966. package/dist/services/workflow/provision-dispatch-node.js +8 -3
  967. package/dist/services/workflow/workflow-autonomous-resume-helpers.d.ts +3 -1
  968. package/dist/services/workflow/workflow-autonomous-resume-helpers.js +35 -144
  969. package/dist/services/workflow/workflow-autonomous-resume-validation.d.ts +16 -0
  970. package/dist/services/workflow/workflow-autonomous-resume-validation.js +155 -0
  971. package/dist/services/workflow/workflow-autonomous-service.js +25 -13
  972. package/dist/services/workflow/workflow-graph-store-helpers.d.ts +51 -0
  973. package/dist/services/workflow/workflow-graph-store-helpers.js +111 -0
  974. package/dist/services/workflow/workflow-graph-store.d.ts +2 -35
  975. package/dist/services/workflow/workflow-graph-store.js +30 -107
  976. package/dist/services/workflow/workflow-graph-types.js +3 -3
  977. package/dist/services/workflow/workflow-inflight-probe.js +14 -7
  978. package/dist/services/workflow/workflow-loader.js +5 -1
  979. package/dist/services/workflow/workflow-node-lifecycle.js +22 -21
  980. package/dist/services/workflow/workflow-presence-lifecycle-types.d.ts +50 -0
  981. package/dist/services/workflow/workflow-presence-lifecycle-types.js +1 -0
  982. package/dist/services/workflow/workflow-presence-lifecycle.d.ts +2 -42
  983. package/dist/services/workflow/workflow-presence-lifecycle.js +19 -21
  984. package/dist/services/workflow/workflow-router-service.js +169 -27
  985. package/dist/services/workflow/workflow-skip-service.js +14 -4
  986. package/dist/services/workflow/workflow-spec-builders.d.ts +15 -0
  987. package/dist/services/workflow/workflow-spec-builders.js +121 -0
  988. package/dist/services/workflow/workflow-spec.d.ts +7 -6
  989. package/dist/services/workflow/workflow-spec.js +22 -116
  990. package/dist/services/workflow/workflow-state-store.js +2 -1
  991. package/dist/services/workspace/migrate-1-4-1-service.js +80 -14
  992. package/dist/services/workspace/migrate-service.js +66 -16
  993. package/dist/services/workspace/reconcile-migrate.js +6 -2
  994. package/dist/services/workspace/reconcile-service.js +37 -16
  995. package/dist/services/workspace/workspace-claude-settings-materializer.js +7 -5
  996. package/dist/services/workspace/workspace-clean-service.js +4 -1
  997. package/dist/services/workspace/workspace-service.js +11 -3
  998. package/dist/services/workspace/workspace-state-service.js +1 -1
  999. package/dist/services/worktree/git-worktree-parser.js +13 -3
  1000. package/dist/services/worktree/host-worktree-reconciler.js +8 -4
  1001. package/dist/services/worktree/long-path-cleanup.js +23 -6
  1002. package/dist/services/worktree/worktree-gc-guard.js +3 -1
  1003. package/dist/services/worktree/worktree-lease-types.d.ts +53 -0
  1004. package/dist/services/worktree/worktree-lease-types.js +10 -0
  1005. package/dist/services/worktree/worktree-lease.d.ts +2 -44
  1006. package/dist/shared/array-guards.d.ts +30 -0
  1007. package/dist/shared/array-guards.js +32 -0
  1008. package/dist/shared/format-md-compact-internals.d.ts +26 -0
  1009. package/dist/shared/format-md-compact-internals.js +125 -0
  1010. package/dist/shared/format-md-compact.js +1 -117
  1011. package/dist/shared/fs-utils.js +2 -1
  1012. package/dist/shared/incrementing-number.js +3 -3
  1013. package/dist/shared/json-parse.d.ts +71 -0
  1014. package/dist/shared/json-parse.js +32 -0
  1015. package/dist/shared/json-schema-mini.js +3 -1
  1016. package/dist/shared/path-safety.js +3 -1
  1017. package/dist/shared/path-utils.d.ts +20 -0
  1018. package/dist/shared/path-utils.js +26 -0
  1019. package/dist/shared/planner-response.js +3 -3
  1020. package/dist/shared/stale-policy.js +1 -3
  1021. package/dist/skills/peaks-maker/index.js +11 -11
  1022. package/package.json +31 -8
  1023. package/scripts/clean-dist.mjs +1 -2
  1024. package/scripts/copy-templates.mjs +2 -4
  1025. package/scripts/install-skills.mjs +305 -125
  1026. package/scripts/sync-version.mjs +25 -8
  1027. package/scripts/watch.mjs +8 -2
  1028. package/skills/peaks-code/SKILL.md +1 -1
@@ -23,144 +23,20 @@
23
23
  // runs (even if every write was skipped) so the index is always
24
24
  // rebuilt against the current directory.
25
25
  // ---------------------------------------------------------------------------
26
- import { copyFileSync, mkdirSync, readFileSync } from 'node:fs';
27
- import { dirname, join, relative } from 'node:path';
26
+ import { mkdirSync, readFileSync } from 'node:fs';
27
+ import { join, relative } from 'node:path';
28
28
  import { isInsidePath, resolveInputPath, stablePath, stableRealPath } from '../../../../shared/path-utils.js';
29
29
  import { renderMemoryFile, slugify } from '../parsers/frontmatter.js';
30
- import { extractStableProjectMemoriesWithDiagnostics, summarizeBackupResult, summarizeExtractResult } from '../parsers/markdown-pure.js';
31
- import { assertInsideProject, assertSafeProjectMemoryDir, assertSafeSessionDir, normalizeRoot, realPathOrThrow } from '../store/paths.js';
32
- import { assertSafeMemoryFileContent, writeNewFile } from '../store/atomic-write.js';
30
+ import { extractStableProjectMemoriesWithDiagnostics } from '../parsers/markdown-pure.js';
31
+ import { assertSafeProjectMemoryDir, assertSafeSessionDir, normalizeRoot } from '../store/paths.js';
32
+ import { writeNewFile } from '../store/atomic-write.js';
33
33
  import { generateMemoryIndexFile, readStoredMemoryNames } from './ranking.js';
34
34
  import { listMarkdownFiles } from './search.js';
35
- export function createProjectMemoryExtractPlan(options) {
36
- const projectRoot = normalizeRoot(options.projectRoot);
37
- const primaryMemoryDir = assertSafeProjectMemoryDir(projectRoot);
38
- const extractedMemories = [];
39
- const droppedBlocks = [];
40
- for (const artifactPath of options.artifactPaths) {
41
- const safeArtifactPath = assertInsideProject(artifactPath, projectRoot);
42
- const relativeArtifactPath = relative(projectRoot, safeArtifactPath).replaceAll('\\', '/');
43
- const extracted = extractStableProjectMemoriesWithDiagnostics(readFileSync(safeArtifactPath, 'utf8'), relativeArtifactPath);
44
- // Push order + the sort below are the pre-existing ordering contract:
45
- // artifacts in argument order, memories sorted by slug.
46
- extractedMemories.push(...extracted.memories);
47
- droppedBlocks.push(...extracted.dropped);
48
- }
49
- extractedMemories.sort((left, right) => slugify(left.title).localeCompare(slugify(right.title)));
50
- const slugCounts = new Map();
51
- for (const memory of extractedMemories) {
52
- const slug = slugify(memory.title);
53
- slugCounts.set(slug, (slugCounts.get(slug) ?? 0) + 1);
54
- }
55
- const duplicateTitles = [...slugCounts.entries()].filter(([, count]) => count > 1).map(([slug]) => slug);
56
- if (duplicateTitles.length > 0) {
57
- throw new Error(`Duplicate memory titles are not allowed: ${duplicateTitles.join(', ')}`);
58
- }
59
- const plannedWrites = extractedMemories.map((memory) => ({
60
- memory,
61
- filePath: join(primaryMemoryDir, `${slugify(memory.title)}.md`),
62
- content: renderMemoryFile(memory)
63
- }));
64
- return {
65
- apply: options.apply ?? false,
66
- projectRoot,
67
- primaryMemoryDir,
68
- backupPolicy: 'project-memory-primary-artifact-backup',
69
- extractedMemories,
70
- plannedWrites,
71
- droppedBlocks
72
- };
73
- }
74
- export function executeProjectMemoryExtract(options) {
75
- const plan = createProjectMemoryExtractPlan(options);
76
- const writtenFiles = [];
77
- if (plan.apply) {
78
- mkdirSync(plan.primaryMemoryDir, { recursive: true });
79
- const safeMemoryDir = assertSafeProjectMemoryDir(plan.projectRoot);
80
- // Idempotency: skip writes for memories whose slug already lives in
81
- // .peaks/memory/. Re-running `peaks memory extract --apply` on the
82
- // same handoff is a normal peaks-code / peaks-txt retry pattern (the
83
- // skill prompt may invoke extract more than once when a handoff is
84
- // edited and re-extracted). Without this, writeNewFile's O_EXCL
85
- // throws EEXIST and aborts the whole batch. Symmetric with
86
- // extractSessionMemories (line ~614) which does the same skip.
87
- const existingNames = readStoredMemoryNames(plan.primaryMemoryDir);
88
- for (const write of plan.plannedWrites) {
89
- const slug = slugify(write.memory.title);
90
- if (existingNames.has(slug))
91
- continue;
92
- const targetPath = resolveInputPath(write.filePath);
93
- const stableTargetPath = stablePath(targetPath);
94
- if (!isInsidePath(stableTargetPath, stableRealPath(safeMemoryDir))) {
95
- throw new Error('Project memory write target must stay inside the project memory directory');
96
- }
97
- writeNewFile(targetPath, write.content);
98
- writtenFiles.push(targetPath);
99
- }
100
- // After writing any markdown, regenerate the index so downstream
101
- // readers (peaks project memory-index, peaks-txt re-runs, the next
102
- // session's presence-set bootstrap) see the new memory. Without
103
- // this, `peaks memory extract --apply` would leave the index stale
104
- // and `readMemoryIndex` would either return the empty bootstrap or
105
- // — pre-bootstrap-fix — return null. Symmetric with
106
- // extractSessionMemories, which already regenerates the index on
107
- // apply (see line ~626). We regen whenever --apply is set, even
108
- // if every write was skipped by idempotency, so the index is
109
- // always rebuilt against the current .peaks/memory/ directory.
110
- const indexPath = join(plan.primaryMemoryDir, 'index.json');
111
- generateMemoryIndexFile(plan.projectRoot, plan.primaryMemoryDir, indexPath);
112
- }
113
- return { ...plan, writtenFiles };
114
- }
115
- export function createProjectMemoryBackupPlan(options) {
116
- const projectRoot = normalizeRoot(options.projectRoot);
117
- const artifactWorkspacePath = normalizeRoot(options.artifactWorkspacePath);
118
- if (isInsidePath(artifactWorkspacePath, projectRoot)) {
119
- throw new Error('Artifact workspace must be outside the project root');
120
- }
121
- const primaryMemoryDir = assertSafeProjectMemoryDir(projectRoot);
122
- const backupMemoryDir = join(artifactWorkspacePath, '.peaks', 'memory-backups', 'project-memory-primary');
123
- const plannedCopies = listMarkdownFiles(primaryMemoryDir).map((sourcePath) => {
124
- assertSafeMemoryFileContent(readFileSync(sourcePath, 'utf8'));
125
- const relativeMemoryPath = relative(primaryMemoryDir, sourcePath);
126
- return {
127
- sourcePath,
128
- targetPath: join(backupMemoryDir, relativeMemoryPath)
129
- };
130
- });
131
- return {
132
- apply: options.apply ?? false,
133
- projectRoot,
134
- artifactWorkspacePath,
135
- primaryMemoryDir,
136
- backupMemoryDir,
137
- plannedCopies
138
- };
139
- }
140
- export function executeProjectMemoryBackup(options) {
141
- const plan = createProjectMemoryBackupPlan(options);
142
- const copiedFiles = [];
143
- if (plan.apply) {
144
- const safeMemoryDir = assertSafeProjectMemoryDir(plan.projectRoot);
145
- mkdirSync(plan.backupMemoryDir, { recursive: true });
146
- for (const copy of plan.plannedCopies) {
147
- const sourcePath = realPathOrThrow(copy.sourcePath, 'Project memory source must stay inside the project memory directory', 'Project memory source does not exist');
148
- if (!isInsidePath(sourcePath, stableRealPath(safeMemoryDir))) {
149
- throw new Error('Project memory source must stay inside the project memory directory');
150
- }
151
- mkdirSync(dirname(copy.targetPath), { recursive: true });
152
- copyFileSync(sourcePath, copy.targetPath);
153
- copiedFiles.push(copy.targetPath);
154
- }
155
- }
156
- return { ...plan, copiedFiles };
157
- }
158
- export function summarizeProjectMemoryExtractResult(result) {
159
- return summarizeExtractResult(result);
160
- }
161
- export function summarizeProjectMemoryBackupResult(result) {
162
- return summarizeBackupResult(result);
163
- }
35
+ // The `peaks memory extract` / `backup` plan-execute-summarize surface now
36
+ // lives in `./project-memory-plan-exec.ts`. Re-exported here so the `index.ts`
37
+ // barrel and `memory-path-missing-vs-escape.test.ts` keep resolving it from
38
+ // `./index/kind-dispatch.js` unchanged.
39
+ export { createProjectMemoryBackupPlan, createProjectMemoryExtractPlan, executeProjectMemoryBackup, executeProjectMemoryExtract, summarizeProjectMemoryBackupResult, summarizeProjectMemoryExtractResult } from './project-memory-plan-exec.js';
164
40
  export function extractSessionMemories(options) {
165
41
  const projectRoot = normalizeRoot(options.projectRoot);
166
42
  const apply = options.apply ?? false;
@@ -223,7 +99,10 @@ export function extractSessionMemories(options) {
223
99
  // string arithmetic on two already-validated absolute path strings and
224
100
  // does not throw for them, so hoisting it cannot turn a path-join problem
225
101
  // into a fatal error that the old swallow would have absorbed.
226
- scanFailures.push({ file: relativePath, detail: error instanceof Error ? error.message : String(error) });
102
+ scanFailures.push({
103
+ file: relativePath,
104
+ detail: error instanceof Error ? error.message : String(error)
105
+ });
227
106
  }
228
107
  }
229
108
  if (allExtracted.length === 0) {
@@ -246,7 +125,9 @@ export function extractSessionMemories(options) {
246
125
  const slug = slugify(memory.title);
247
126
  slugCounts.set(slug, (slugCounts.get(slug) ?? 0) + 1);
248
127
  }
249
- const duplicateTitles = [...slugCounts.entries()].filter(([, count]) => count > 1).map(([slug]) => slug);
128
+ const duplicateTitles = [...slugCounts.entries()]
129
+ .filter(([, count]) => count > 1)
130
+ .map(([slug]) => slug);
250
131
  if (duplicateTitles.length > 0) {
251
132
  throw new Error(`Duplicate memory titles are not allowed: ${duplicateTitles.join(', ')}`);
252
133
  }
@@ -0,0 +1,7 @@
1
+ import type { BackupPlanOptions, ExtractPlanOptions, ProjectMemoryBackupPlan, ProjectMemoryBackupResult, ProjectMemoryBackupSummary, ProjectMemoryExtractPlan, ProjectMemoryExtractResult, ProjectMemoryExtractSummary } from '../types.js';
2
+ export declare function createProjectMemoryExtractPlan(options: ExtractPlanOptions): ProjectMemoryExtractPlan;
3
+ export declare function executeProjectMemoryExtract(options: ExtractPlanOptions): ProjectMemoryExtractResult;
4
+ export declare function createProjectMemoryBackupPlan(options: BackupPlanOptions): ProjectMemoryBackupPlan;
5
+ export declare function executeProjectMemoryBackup(options: BackupPlanOptions): ProjectMemoryBackupResult;
6
+ export declare function summarizeProjectMemoryExtractResult(result: ProjectMemoryExtractResult): ProjectMemoryExtractSummary;
7
+ export declare function summarizeProjectMemoryBackupResult(result: ProjectMemoryBackupResult): ProjectMemoryBackupSummary;
@@ -0,0 +1,150 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Project-memory create-plan / execute / summarize orchestrators.
3
+ //
4
+ // Split out of `./kind-dispatch.ts` by the `b1-filesplit-campaign` (wave 3,
5
+ // leaf `b1w3-c-memory`): the four `peaks memory extract` / `backup` entry
6
+ // points and their two projectors. `./kind-dispatch.ts` re-exports them so
7
+ // the `index.ts` barrel and `memory-path-missing-vs-escape.test.ts` keep
8
+ // resolving them from `./index/kind-dispatch.js` unchanged. The session-dir
9
+ // extractor (`extractSessionMemories`) stays in `kind-dispatch.ts`.
10
+ // ---------------------------------------------------------------------------
11
+ import { copyFileSync, mkdirSync, readFileSync } from 'node:fs';
12
+ import { dirname, join, relative } from 'node:path';
13
+ import { isInsidePath, resolveInputPath, stablePath, stableRealPath } from '../../../../shared/path-utils.js';
14
+ import { renderMemoryFile, slugify } from '../parsers/frontmatter.js';
15
+ import { extractStableProjectMemoriesWithDiagnostics, summarizeBackupResult, summarizeExtractResult } from '../parsers/markdown-pure.js';
16
+ import { assertInsideProject, assertSafeProjectMemoryDir, normalizeRoot, realPathOrThrow } from '../store/paths.js';
17
+ import { assertSafeMemoryFileContent, writeNewFile } from '../store/atomic-write.js';
18
+ import { generateMemoryIndexFile, readStoredMemoryNames } from './ranking.js';
19
+ import { listMarkdownFiles } from './search.js';
20
+ export function createProjectMemoryExtractPlan(options) {
21
+ const projectRoot = normalizeRoot(options.projectRoot);
22
+ const primaryMemoryDir = assertSafeProjectMemoryDir(projectRoot);
23
+ const extractedMemories = [];
24
+ const droppedBlocks = [];
25
+ for (const artifactPath of options.artifactPaths) {
26
+ const safeArtifactPath = assertInsideProject(artifactPath, projectRoot);
27
+ const relativeArtifactPath = relative(projectRoot, safeArtifactPath).replaceAll('\\', '/');
28
+ const extracted = extractStableProjectMemoriesWithDiagnostics(readFileSync(safeArtifactPath, 'utf8'), relativeArtifactPath);
29
+ // Push order + the sort below are the pre-existing ordering contract:
30
+ // artifacts in argument order, memories sorted by slug.
31
+ extractedMemories.push(...extracted.memories);
32
+ droppedBlocks.push(...extracted.dropped);
33
+ }
34
+ extractedMemories.sort((left, right) => slugify(left.title).localeCompare(slugify(right.title)));
35
+ const slugCounts = new Map();
36
+ for (const memory of extractedMemories) {
37
+ const slug = slugify(memory.title);
38
+ slugCounts.set(slug, (slugCounts.get(slug) ?? 0) + 1);
39
+ }
40
+ const duplicateTitles = [...slugCounts.entries()]
41
+ .filter(([, count]) => count > 1)
42
+ .map(([slug]) => slug);
43
+ if (duplicateTitles.length > 0) {
44
+ throw new Error(`Duplicate memory titles are not allowed: ${duplicateTitles.join(', ')}`);
45
+ }
46
+ const plannedWrites = extractedMemories.map((memory) => ({
47
+ memory,
48
+ filePath: join(primaryMemoryDir, `${slugify(memory.title)}.md`),
49
+ content: renderMemoryFile(memory)
50
+ }));
51
+ return {
52
+ apply: options.apply ?? false,
53
+ projectRoot,
54
+ primaryMemoryDir,
55
+ backupPolicy: 'project-memory-primary-artifact-backup',
56
+ extractedMemories,
57
+ plannedWrites,
58
+ droppedBlocks
59
+ };
60
+ }
61
+ export function executeProjectMemoryExtract(options) {
62
+ const plan = createProjectMemoryExtractPlan(options);
63
+ const writtenFiles = [];
64
+ if (plan.apply) {
65
+ mkdirSync(plan.primaryMemoryDir, { recursive: true });
66
+ const safeMemoryDir = assertSafeProjectMemoryDir(plan.projectRoot);
67
+ // Idempotency: skip writes for memories whose slug already lives in
68
+ // .peaks/memory/. Re-running `peaks memory extract --apply` on the
69
+ // same handoff is a normal peaks-code / peaks-txt retry pattern (the
70
+ // skill prompt may invoke extract more than once when a handoff is
71
+ // edited and re-extracted). Without this, writeNewFile's O_EXCL
72
+ // throws EEXIST and aborts the whole batch. Symmetric with
73
+ // extractSessionMemories (line ~614) which does the same skip.
74
+ const existingNames = readStoredMemoryNames(plan.primaryMemoryDir);
75
+ for (const write of plan.plannedWrites) {
76
+ const slug = slugify(write.memory.title);
77
+ if (existingNames.has(slug))
78
+ continue;
79
+ const targetPath = resolveInputPath(write.filePath);
80
+ const stableTargetPath = stablePath(targetPath);
81
+ if (!isInsidePath(stableTargetPath, stableRealPath(safeMemoryDir))) {
82
+ throw new Error('Project memory write target must stay inside the project memory directory');
83
+ }
84
+ writeNewFile(targetPath, write.content);
85
+ writtenFiles.push(targetPath);
86
+ }
87
+ // After writing any markdown, regenerate the index so downstream
88
+ // readers (peaks project memory-index, peaks-txt re-runs, the next
89
+ // session's presence-set bootstrap) see the new memory. Without
90
+ // this, `peaks memory extract --apply` would leave the index stale
91
+ // and `readMemoryIndex` would either return the empty bootstrap or
92
+ // — pre-bootstrap-fix — return null. Symmetric with
93
+ // extractSessionMemories, which already regenerates the index on
94
+ // apply (see line ~626). We regen whenever --apply is set, even
95
+ // if every write was skipped by idempotency, so the index is
96
+ // always rebuilt against the current .peaks/memory/ directory.
97
+ const indexPath = join(plan.primaryMemoryDir, 'index.json');
98
+ generateMemoryIndexFile(plan.projectRoot, plan.primaryMemoryDir, indexPath);
99
+ }
100
+ return { ...plan, writtenFiles };
101
+ }
102
+ export function createProjectMemoryBackupPlan(options) {
103
+ const projectRoot = normalizeRoot(options.projectRoot);
104
+ const artifactWorkspacePath = normalizeRoot(options.artifactWorkspacePath);
105
+ if (isInsidePath(artifactWorkspacePath, projectRoot)) {
106
+ throw new Error('Artifact workspace must be outside the project root');
107
+ }
108
+ const primaryMemoryDir = assertSafeProjectMemoryDir(projectRoot);
109
+ const backupMemoryDir = join(artifactWorkspacePath, '.peaks', 'memory-backups', 'project-memory-primary');
110
+ const plannedCopies = listMarkdownFiles(primaryMemoryDir).map((sourcePath) => {
111
+ assertSafeMemoryFileContent(readFileSync(sourcePath, 'utf8'));
112
+ const relativeMemoryPath = relative(primaryMemoryDir, sourcePath);
113
+ return {
114
+ sourcePath,
115
+ targetPath: join(backupMemoryDir, relativeMemoryPath)
116
+ };
117
+ });
118
+ return {
119
+ apply: options.apply ?? false,
120
+ projectRoot,
121
+ artifactWorkspacePath,
122
+ primaryMemoryDir,
123
+ backupMemoryDir,
124
+ plannedCopies
125
+ };
126
+ }
127
+ export function executeProjectMemoryBackup(options) {
128
+ const plan = createProjectMemoryBackupPlan(options);
129
+ const copiedFiles = [];
130
+ if (plan.apply) {
131
+ const safeMemoryDir = assertSafeProjectMemoryDir(plan.projectRoot);
132
+ mkdirSync(plan.backupMemoryDir, { recursive: true });
133
+ for (const copy of plan.plannedCopies) {
134
+ const sourcePath = realPathOrThrow(copy.sourcePath, 'Project memory source must stay inside the project memory directory', 'Project memory source does not exist');
135
+ if (!isInsidePath(sourcePath, stableRealPath(safeMemoryDir))) {
136
+ throw new Error('Project memory source must stay inside the project memory directory');
137
+ }
138
+ mkdirSync(dirname(copy.targetPath), { recursive: true });
139
+ copyFileSync(sourcePath, copy.targetPath);
140
+ copiedFiles.push(copy.targetPath);
141
+ }
142
+ }
143
+ return { ...plan, copiedFiles };
144
+ }
145
+ export function summarizeProjectMemoryExtractResult(result) {
146
+ return summarizeExtractResult(result);
147
+ }
148
+ export function summarizeProjectMemoryBackupResult(result) {
149
+ return summarizeBackupResult(result);
150
+ }
@@ -55,7 +55,8 @@ export function readStoredMemoryNames(memoryDir) {
55
55
  if (parsed)
56
56
  names.add(parsed.name);
57
57
  }
58
- catch { // TODO(g2): legacy silent catch — grace: 1 minor release (v2.14.0)
58
+ catch {
59
+ // TODO(g2): legacy silent catch — grace: 1 minor release (v2.14.0)
59
60
  // ignore unreadable files
60
61
  }
61
62
  }
@@ -125,7 +126,8 @@ export function readExistingIndex(indexPath) {
125
126
  return parsed;
126
127
  return null;
127
128
  }
128
- catch { // TODO(g2): legacy silent catch — grace: 1 minor release (v2.14.0)
129
+ catch {
130
+ // TODO(g2): legacy silent catch — grace: 1 minor release (v2.14.0)
129
131
  return null;
130
132
  }
131
133
  }
@@ -175,7 +177,8 @@ export function readMemoryIndex(projectRoot) {
175
177
  try {
176
178
  generateMemoryIndexFile(normalizedRoot, memoryDir, indexPath);
177
179
  }
178
- catch { // TODO(g2): legacy silent catch — grace: 1 minor release (v2.14.0)
180
+ catch {
181
+ // TODO(g2): legacy silent catch — grace: 1 minor release (v2.14.0)
179
182
  // fall through to read existing
180
183
  }
181
184
  }
@@ -67,7 +67,12 @@ function collectUnclassified(diskFiles) {
67
67
  }
68
68
  catch {
69
69
  // Unreadable file: still report it rather than dropping it silently.
70
- unclassified.push({ name: basename(filePath, '.md'), filePath, rawKind: null, reason: 'file could not be read' });
70
+ unclassified.push({
71
+ name: basename(filePath, '.md'),
72
+ filePath,
73
+ rawKind: null,
74
+ reason: 'file could not be read'
75
+ });
71
76
  continue;
72
77
  }
73
78
  if (parsed.kind.kind !== null)
@@ -112,7 +117,10 @@ function collectNameConflicts(diskFiles) {
112
117
  }
113
118
  return [...byName.entries()]
114
119
  .filter(([, filePaths]) => filePaths.length > 1)
115
- .map(([name, filePaths]) => ({ name, filePaths: [...filePaths].sort((left, right) => left.localeCompare(right)) }))
120
+ .map(([name, filePaths]) => ({
121
+ name,
122
+ filePaths: [...filePaths].sort((left, right) => left.localeCompare(right))
123
+ }))
116
124
  .sort((left, right) => left.name.localeCompare(right.name));
117
125
  }
118
126
  /**
@@ -131,8 +139,7 @@ export function renderMemoryMarkdown(index, memoryDir) {
131
139
  ''
132
140
  ];
133
141
  for (const kind of KIND_ORDER) {
134
- const entries = [...(index.hot[kind] ?? []), ...(index.warm[kind] ?? [])]
135
- .sort((left, right) => left.name.localeCompare(right.name));
142
+ const entries = [...(index.hot[kind] ?? []), ...(index.warm[kind] ?? [])].sort((left, right) => left.name.localeCompare(right.name));
136
143
  if (entries.length === 0)
137
144
  continue;
138
145
  lines.push(`## ${kind} (${entries.length})`, '');
@@ -156,7 +163,9 @@ export function executeMemoryReindex(options) {
156
163
  const memoryMdPath = join(memoryDir, MEMORY_MD_FILENAME);
157
164
  const diskFiles = listMarkdownFiles(memoryDir).filter((filePath) => basename(filePath) !== MEMORY_MD_FILENAME);
158
165
  const orphanIndex = readPreviousIndexEntries(indexPath)
159
- .filter((entry) => typeof entry.sourcePath !== 'string' || entry.sourcePath.length === 0 || !existsSync(entry.sourcePath))
166
+ .filter((entry) => typeof entry.sourcePath !== 'string' ||
167
+ entry.sourcePath.length === 0 ||
168
+ !existsSync(entry.sourcePath))
160
169
  .map((entry) => ({ name: entry.name, kind: entry.kind, sourcePath: entry.sourcePath }))
161
170
  .sort((left, right) => left.name.localeCompare(right.name));
162
171
  const unclassified = collectUnclassified(diskFiles);
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Canonical memory-kind vocabulary — the single source of truth.
3
+ *
4
+ * The union type, the accepted-kind set in the frontmatter parser, the
5
+ * hot/warm tier map below, `KIND_ORDER` in the reindex view, and the CLI
6
+ * `--kind` help text all derive from this tuple. Adding a kind here is the
7
+ * only edit required; TypeScript then forces `MEMORY_KIND_TIER` to cover it.
8
+ *
9
+ * Slice 2026-09-10-memory-vocab-and-rotate (E): the original 8 kinds are
10
+ * unchanged. The 13 appended kinds were observed on disk with real values
11
+ * that the index schema rejected (`peaks memory reindex` reported them as
12
+ * `unrecognized kind value`). Accepting them moves those files into the
13
+ * index; files with no kind field at all stay reported as unclassified.
14
+ */
15
+ export declare const PROJECT_MEMORY_KINDS: readonly ["project", "rule", "decision", "reference", "feedback", "convention", "module", "lesson", "bug", "investigation", "technical-pattern", "project-rule", "design", "handoff", "session-handoff", "project-todo", "publish-closure", "project-closure", "slice-closure", "slice-pilot-findings", "sediment"];
16
+ export type ProjectMemoryKind = (typeof PROJECT_MEMORY_KINDS)[number];
17
+ /** Hot kinds keep their body in the always-available index; warm kinds are
18
+ * indexed with the same entry shape but read on demand. */
19
+ export type MemoryKindTier = 'hot' | 'warm';
20
+ /**
21
+ * Hot/warm tier per kind. Insertion order IS the deterministic section order
22
+ * used by the generated `MEMORY.md` (`KIND_ORDER` in `index/reindex.ts`),
23
+ * so this object's key order is load-bearing — append new kinds at the end
24
+ * of their tier block rather than reshuffling existing entries.
25
+ *
26
+ * The `Record<ProjectMemoryKind, MemoryKindTier>` annotation makes a missing
27
+ * tier a compile error whenever `PROJECT_MEMORY_KINDS` grows.
28
+ */
29
+ export declare const MEMORY_KIND_TIER: Record<ProjectMemoryKind, MemoryKindTier>;
30
+ export declare const HOT_MEMORY_KINDS: readonly ProjectMemoryKind[];
31
+ export declare const WARM_MEMORY_KINDS: readonly ProjectMemoryKind[];
@@ -0,0 +1,87 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Canonical memory-kind vocabulary + hot/warm tier map.
3
+ //
4
+ // Extracted from `types.ts` by the `b1-filesplit-campaign` (wave 3, leaf
5
+ // `b1w3-c-memory`). This module has no imports — the tuple, the derived
6
+ // union type, the tier map and the two tier-filtered arrays reference only
7
+ // each other — so it is the leaf of the dependency graph. `types.ts`
8
+ // re-exports every name below so downstream callers (the `index.ts` barrel,
9
+ // the frontmatter parser, memory-rotate / memory-ingest) keep importing
10
+ // them from `./types.js` unchanged.
11
+ // ---------------------------------------------------------------------------
12
+ /**
13
+ * Canonical memory-kind vocabulary — the single source of truth.
14
+ *
15
+ * The union type, the accepted-kind set in the frontmatter parser, the
16
+ * hot/warm tier map below, `KIND_ORDER` in the reindex view, and the CLI
17
+ * `--kind` help text all derive from this tuple. Adding a kind here is the
18
+ * only edit required; TypeScript then forces `MEMORY_KIND_TIER` to cover it.
19
+ *
20
+ * Slice 2026-09-10-memory-vocab-and-rotate (E): the original 8 kinds are
21
+ * unchanged. The 13 appended kinds were observed on disk with real values
22
+ * that the index schema rejected (`peaks memory reindex` reported them as
23
+ * `unrecognized kind value`). Accepting them moves those files into the
24
+ * index; files with no kind field at all stay reported as unclassified.
25
+ */
26
+ export const PROJECT_MEMORY_KINDS = [
27
+ // Original 8 (pre-2026-09-10).
28
+ 'project',
29
+ 'rule',
30
+ 'decision',
31
+ 'reference',
32
+ 'feedback',
33
+ 'convention',
34
+ 'module',
35
+ 'lesson',
36
+ // Slice E expansion — observed on-disk values, hot tier.
37
+ 'bug',
38
+ 'investigation',
39
+ 'technical-pattern',
40
+ 'project-rule',
41
+ // Slice E expansion — observed on-disk values, warm tier.
42
+ 'design',
43
+ 'handoff',
44
+ 'session-handoff',
45
+ 'project-todo',
46
+ 'publish-closure',
47
+ 'project-closure',
48
+ 'slice-closure',
49
+ 'slice-pilot-findings',
50
+ 'sediment'
51
+ ];
52
+ /**
53
+ * Hot/warm tier per kind. Insertion order IS the deterministic section order
54
+ * used by the generated `MEMORY.md` (`KIND_ORDER` in `index/reindex.ts`),
55
+ * so this object's key order is load-bearing — append new kinds at the end
56
+ * of their tier block rather than reshuffling existing entries.
57
+ *
58
+ * The `Record<ProjectMemoryKind, MemoryKindTier>` annotation makes a missing
59
+ * tier a compile error whenever `PROJECT_MEMORY_KINDS` grows.
60
+ */
61
+ export const MEMORY_KIND_TIER = {
62
+ // hot — full body kept in the index
63
+ feedback: 'hot',
64
+ decision: 'hot',
65
+ rule: 'hot',
66
+ convention: 'hot',
67
+ module: 'hot',
68
+ lesson: 'hot',
69
+ bug: 'hot',
70
+ investigation: 'hot',
71
+ 'technical-pattern': 'hot',
72
+ 'project-rule': 'hot',
73
+ // warm — same entry shape, read on demand
74
+ project: 'warm',
75
+ reference: 'warm',
76
+ design: 'warm',
77
+ handoff: 'warm',
78
+ 'session-handoff': 'warm',
79
+ 'project-todo': 'warm',
80
+ 'publish-closure': 'warm',
81
+ 'project-closure': 'warm',
82
+ 'slice-closure': 'warm',
83
+ 'slice-pilot-findings': 'warm',
84
+ sediment: 'warm'
85
+ };
86
+ export const HOT_MEMORY_KINDS = PROJECT_MEMORY_KINDS.filter((kind) => MEMORY_KIND_TIER[kind] === 'hot');
87
+ export const WARM_MEMORY_KINDS = PROJECT_MEMORY_KINDS.filter((kind) => MEMORY_KIND_TIER[kind] === 'warm');
@@ -0,0 +1,24 @@
1
+ import { type ExtractedProjectMemory, type MemoryBlockParse, type ProjectMemoryKind } from '../types.js';
2
+ /** Accepted-kind set, derived from the canonical `PROJECT_MEMORY_KINDS`
3
+ * tuple so the parser cannot drift from the union type / tier map. */
4
+ export declare const VALID_MEMORY_KINDS: ReadonlySet<ProjectMemoryKind>;
5
+ /** Exported for guard tests + tooling that needs to enumerate the accepted
6
+ * set (CLI help text, `--kind` validation) without duplicating the literal. */
7
+ export declare const VALID_PROJECT_MEMORY_KINDS: readonly ProjectMemoryKind[];
8
+ export declare function slugify(title: string): string;
9
+ /**
10
+ * Single implementation of the extract-path block parse. Returns a
11
+ * discriminated result so the caller can say WHY a found block was rejected.
12
+ *
13
+ * The precondition order mirrors the original combined `if` exactly
14
+ * (separator → title → kind present → kind valid → body non-empty), so the
15
+ * accepted set is bit-for-bit what it always was; only the explanation is new.
16
+ */
17
+ export declare function parseBlockResult(block: string, sourceArtifact: string): MemoryBlockParse;
18
+ /**
19
+ * `null`-on-failure projection of `parseBlockResult`. Kept because callers
20
+ * (and the parser's own contract) consume a plain nullable value; both views
21
+ * come from the one implementation above, so they cannot diverge.
22
+ */
23
+ export declare function parseBlock(block: string, sourceArtifact: string): ExtractedProjectMemory | null;
24
+ export declare function renderMemoryFile(memory: ExtractedProjectMemory): string;
@@ -0,0 +1,104 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Frontmatter extract-path surface for project memory files.
3
+ //
4
+ // Split out of `./frontmatter.ts` by the `b1-filesplit-campaign` (wave 3,
5
+ // leaf `b1w3-c-memory`): the accepted-kind allow-list, the `slugify` helper,
6
+ // and the extract-path block parser / renderer. `./frontmatter.ts` re-exports
7
+ // every name here so the `index.ts` barrel, `markdown-pure.ts` and the CLI
8
+ // keep importing them from `./parsers/frontmatter.js` unchanged.
9
+ // ---------------------------------------------------------------------------
10
+ import { PROJECT_MEMORY_KINDS } from '../types.js';
11
+ /** Accepted-kind set, derived from the canonical `PROJECT_MEMORY_KINDS`
12
+ * tuple so the parser cannot drift from the union type / tier map. */
13
+ export const VALID_MEMORY_KINDS = new Set(PROJECT_MEMORY_KINDS);
14
+ /** Exported for guard tests + tooling that needs to enumerate the accepted
15
+ * set (CLI help text, `--kind` validation) without duplicating the literal. */
16
+ export const VALID_PROJECT_MEMORY_KINDS = PROJECT_MEMORY_KINDS;
17
+ export function slugify(title) {
18
+ const slug = title
19
+ .toLowerCase()
20
+ .replace(/[^a-z0-9]+/g, '-')
21
+ .replace(/^-+|-+$/g, '');
22
+ return slug.length > 0 ? slug : 'project-memory';
23
+ }
24
+ /**
25
+ * Single implementation of the extract-path block parse. Returns a
26
+ * discriminated result so the caller can say WHY a found block was rejected.
27
+ *
28
+ * The precondition order mirrors the original combined `if` exactly
29
+ * (separator → title → kind present → kind valid → body non-empty), so the
30
+ * accepted set is bit-for-bit what it always was; only the explanation is new.
31
+ */
32
+ export function parseBlockResult(block, sourceArtifact) {
33
+ const normalizedBlock = block.replace(/\r\n/g, '\n');
34
+ const separatorIndex = normalizedBlock.indexOf('\n---\n');
35
+ if (separatorIndex < 0) {
36
+ return {
37
+ ok: false,
38
+ reason: 'missing-separator',
39
+ detail: "block header is not followed by a '---' separator line"
40
+ };
41
+ }
42
+ const header = normalizedBlock.slice(0, separatorIndex).trim();
43
+ const body = normalizedBlock.slice(separatorIndex + '\n---\n'.length).trim();
44
+ const fields = new Map();
45
+ for (const line of header.split('\n')) {
46
+ const [key, ...valueParts] = line.split(':');
47
+ const normalizedKey = key?.trim();
48
+ const value = valueParts.join(':').trim();
49
+ if (normalizedKey && value) {
50
+ fields.set(normalizedKey, value);
51
+ }
52
+ }
53
+ const title = fields.get('title')?.trim();
54
+ const kind = fields.get('kind')?.trim();
55
+ if (!title) {
56
+ return {
57
+ ok: false,
58
+ reason: 'missing-title',
59
+ detail: "block header has no non-empty 'title:' field"
60
+ };
61
+ }
62
+ if (!kind) {
63
+ return {
64
+ ok: false,
65
+ reason: 'missing-kind',
66
+ detail: "block header has no non-empty 'kind:' field"
67
+ };
68
+ }
69
+ if (!VALID_MEMORY_KINDS.has(kind)) {
70
+ return {
71
+ ok: false,
72
+ reason: 'unknown-kind',
73
+ detail: `block declares kind '${kind}', which is not an accepted memory kind`
74
+ };
75
+ }
76
+ if (body.length === 0) {
77
+ return { ok: false, reason: 'empty-body', detail: 'block body is empty' };
78
+ }
79
+ return { ok: true, memory: { title, kind, body, sourceArtifact } };
80
+ }
81
+ /**
82
+ * `null`-on-failure projection of `parseBlockResult`. Kept because callers
83
+ * (and the parser's own contract) consume a plain nullable value; both views
84
+ * come from the one implementation above, so they cannot diverge.
85
+ */
86
+ export function parseBlock(block, sourceArtifact) {
87
+ const parsed = parseBlockResult(block, sourceArtifact);
88
+ return parsed.ok ? parsed.memory : null;
89
+ }
90
+ export function renderMemoryFile(memory) {
91
+ const name = slugify(memory.title);
92
+ return [
93
+ '---',
94
+ `name: ${name}`,
95
+ `description: ${memory.title}`,
96
+ 'metadata:',
97
+ ` type: ${memory.kind}`,
98
+ ` sourceArtifact: ${memory.sourceArtifact}`,
99
+ '---',
100
+ '',
101
+ memory.body,
102
+ ''
103
+ ].join('\n');
104
+ }