peaks-loop 4.1.1 → 4.1.2

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 (776) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/README-en.md +4 -4
  3. package/README.md +25 -4
  4. package/bin/node-floor.mjs +59 -0
  5. package/bin/peaks.js +13 -0
  6. package/config/eslint/tsconfig.lint.json +2 -1
  7. package/dist/cli/cli-helpers.d.ts +0 -1
  8. package/dist/cli/cli-helpers.js +0 -1
  9. package/dist/cli/commands/_cli-error-envelope.js +0 -3
  10. package/dist/cli/commands/adapter-commands-s2a.d.ts +0 -1
  11. package/dist/cli/commands/adapter-commands.d.ts +0 -1
  12. package/dist/cli/commands/api-diff-commands.d.ts +0 -1
  13. package/dist/cli/commands/api-diff-commands.js +0 -1
  14. package/dist/cli/commands/audit-commands.js +21 -24
  15. package/dist/cli/commands/autonomous-swarm-commands.js +0 -1
  16. package/dist/cli/commands/bee-commands.d.ts +0 -2
  17. package/dist/cli/commands/bee-commands.js +0 -2
  18. package/dist/cli/commands/best-practice-scan-command.d.ts +0 -1
  19. package/dist/cli/commands/best-practice-scan-helpers.js +0 -1
  20. package/dist/cli/commands/changeset-commands.d.ts +0 -2
  21. package/dist/cli/commands/changeset-commands.js +0 -2
  22. package/dist/cli/commands/code-commands.d.ts +0 -3
  23. package/dist/cli/commands/code-commands.js +0 -3
  24. package/dist/cli/commands/code-gate-command.d.ts +0 -1
  25. package/dist/cli/commands/code-gate-command.js +0 -1
  26. package/dist/cli/commands/code-job-shape-commands-read-job-shape.d.ts +0 -1
  27. package/dist/cli/commands/code-job-shape-commands-read-job-shape.js +0 -1
  28. package/dist/cli/commands/code-job-shape-commands.d.ts +0 -2
  29. package/dist/cli/commands/code-job-shape-commands.js +0 -3
  30. package/dist/cli/commands/code-mode-gate-commands.d.ts +0 -2
  31. package/dist/cli/commands/code-mode-gate-commands.js +0 -3
  32. package/dist/cli/commands/code-mode-gate-should-pause-command.js +0 -4
  33. package/dist/cli/commands/code-mode-gate-should-pause-envelope.d.ts +0 -1
  34. package/dist/cli/commands/code-mode-gate-should-pause-envelope.js +0 -2
  35. package/dist/cli/commands/code-mode-status-command.d.ts +0 -1
  36. package/dist/cli/commands/code-mode-status-command.js +0 -1
  37. package/dist/cli/commands/code-orchestrator-can-do.d.ts +0 -1
  38. package/dist/cli/commands/code-orchestrator-can-do.js +0 -1
  39. package/dist/cli/commands/code-run-command.js +0 -1
  40. package/dist/cli/commands/code-runtime-commands.d.ts +0 -3
  41. package/dist/cli/commands/code-runtime-commands.js +0 -15
  42. package/dist/cli/commands/codegraph-command-runtime.d.ts +6 -0
  43. package/dist/cli/commands/codegraph-command-runtime.js +19 -7
  44. package/dist/cli/commands/codegraph-commands.js +20 -193
  45. package/dist/cli/commands/codegraph-init-command.d.ts +8 -0
  46. package/dist/cli/commands/codegraph-init-command.js +162 -0
  47. package/dist/cli/commands/codegraph-status-command.js +5 -6
  48. package/dist/cli/commands/compact-command.d.ts +0 -1
  49. package/dist/cli/commands/compact-command.js +0 -4
  50. package/dist/cli/commands/container-commands.d.ts +0 -1
  51. package/dist/cli/commands/container-commands.js +0 -1
  52. package/dist/cli/commands/context-commands.d.ts +0 -1
  53. package/dist/cli/commands/context-commands.js +0 -1
  54. package/dist/cli/commands/core/doctor-command.d.ts +0 -1
  55. package/dist/cli/commands/core/doctor-command.js +0 -9
  56. package/dist/cli/commands/core/memory-command.js +0 -1
  57. package/dist/cli/commands/core/session-command.js +0 -14
  58. package/dist/cli/commands/core/skill-command.js +0 -9
  59. package/dist/cli/commands/core-artifact-commands.d.ts +0 -1
  60. package/dist/cli/commands/core-artifact-commands.js +0 -1
  61. package/dist/cli/commands/cron-commands-actions.d.ts +0 -1
  62. package/dist/cli/commands/cron-commands-actions.js +0 -2
  63. package/dist/cli/commands/cron-commands-schedule.d.ts +0 -3
  64. package/dist/cli/commands/cron-commands-schedule.js +0 -1
  65. package/dist/cli/commands/cron-commands.d.ts +0 -1
  66. package/dist/cli/commands/cron-commands.js +0 -2
  67. package/dist/cli/commands/cron-scheduler-commands.d.ts +0 -1
  68. package/dist/cli/commands/cron-scheduler-commands.js +0 -1
  69. package/dist/cli/commands/cron-scheduler-persist.d.ts +0 -5
  70. package/dist/cli/commands/cron-scheduler-persist.js +0 -5
  71. package/dist/cli/commands/dashboard-summary.d.ts +0 -1
  72. package/dist/cli/commands/dispatch-commands.d.ts +0 -1
  73. package/dist/cli/commands/dispatch-commands.js +10 -37
  74. package/dist/cli/commands/dispatch-from-dag.js +0 -4
  75. package/dist/cli/commands/doctor/invoke-from-code.js +0 -1
  76. package/dist/cli/commands/e2e-verify.d.ts +0 -1
  77. package/dist/cli/commands/ecc-commands.d.ts +0 -1
  78. package/dist/cli/commands/evolution-commands.d.ts +0 -1
  79. package/dist/cli/commands/evolution-commands.js +0 -1
  80. package/dist/cli/commands/feedback-commands.d.ts +0 -1
  81. package/dist/cli/commands/feedback-commands.js +0 -2
  82. package/dist/cli/commands/fixture-commands.d.ts +0 -2
  83. package/dist/cli/commands/fresh-context-commands.d.ts +0 -1
  84. package/dist/cli/commands/gate-commands-enforce.d.ts +0 -3
  85. package/dist/cli/commands/gate-commands-enforce.js +0 -4
  86. package/dist/cli/commands/gate-commands.js +0 -2
  87. package/dist/cli/commands/governance-classify-contract-commands.d.ts +0 -3
  88. package/dist/cli/commands/governance-classify-contract-commands.js +0 -4
  89. package/dist/cli/commands/heartbeat-commands-action.js +0 -6
  90. package/dist/cli/commands/heartbeat-commands-validation.d.ts +0 -2
  91. package/dist/cli/commands/heartbeat-commands-validation.js +0 -2
  92. package/dist/cli/commands/heartbeat-commands.d.ts +0 -1
  93. package/dist/cli/commands/heartbeat-commands.js +0 -1
  94. package/dist/cli/commands/hooks-commands.js +0 -11
  95. package/dist/cli/commands/ide-commands.d.ts +0 -1
  96. package/dist/cli/commands/job-add-slice-command.d.ts +0 -2
  97. package/dist/cli/commands/job-add-slice-command.js +0 -2
  98. package/dist/cli/commands/job-commands.js +0 -4
  99. package/dist/cli/commands/lease-metrics-commands.d.ts +0 -1
  100. package/dist/cli/commands/lease-metrics-commands.js +0 -1
  101. package/dist/cli/commands/lease-stats-commands.d.ts +0 -1
  102. package/dist/cli/commands/lease-stats-commands.js +0 -1
  103. package/dist/cli/commands/log-commands.d.ts +0 -2
  104. package/dist/cli/commands/log-commands.js +0 -3
  105. package/dist/cli/commands/loop-eval-commands.js +0 -3
  106. package/dist/cli/commands/memory-commands.d.ts +0 -1
  107. package/dist/cli/commands/memory-commands.js +0 -1
  108. package/dist/cli/commands/observability-commands.d.ts +0 -6
  109. package/dist/cli/commands/observability-commands.js +0 -6
  110. package/dist/cli/commands/outer-cache-commands.js +0 -2
  111. package/dist/cli/commands/playwright-commands.d.ts +0 -1
  112. package/dist/cli/commands/playwright-commands.js +0 -1
  113. package/dist/cli/commands/polyrepo-commands.d.ts +0 -1
  114. package/dist/cli/commands/prd-commands.d.ts +0 -1
  115. package/dist/cli/commands/prd-commands.js +0 -2
  116. package/dist/cli/commands/preferences-commands.js +0 -2
  117. package/dist/cli/commands/primer-command.d.ts +0 -1
  118. package/dist/cli/commands/primer-command.js +0 -1
  119. package/dist/cli/commands/project-commands.js +0 -1
  120. package/dist/cli/commands/qa-commands.d.ts +0 -1
  121. package/dist/cli/commands/qa-commands.js +0 -2
  122. package/dist/cli/commands/release-commands.js +0 -9
  123. package/dist/cli/commands/request-commands.d.ts +0 -1
  124. package/dist/cli/commands/request-commands.js +0 -10
  125. package/dist/cli/commands/request-format-helpers.d.ts +0 -1
  126. package/dist/cli/commands/request-format-helpers.js +0 -2
  127. package/dist/cli/commands/runtime-commands.d.ts +0 -1
  128. package/dist/cli/commands/sc-commands.js +0 -1
  129. package/dist/cli/commands/session-24h-mode.d.ts +0 -1
  130. package/dist/cli/commands/session-24h-mode.js +0 -2
  131. package/dist/cli/commands/session-checkpoint-command.d.ts +0 -1
  132. package/dist/cli/commands/session-checkpoint-command.js +0 -1
  133. package/dist/cli/commands/session-resume-command.d.ts +0 -1
  134. package/dist/cli/commands/session-resume-command.js +0 -1
  135. package/dist/cli/commands/shadcn-commands.js +0 -2
  136. package/dist/cli/commands/share-commands.d.ts +0 -3
  137. package/dist/cli/commands/share-commands.js +0 -13
  138. package/dist/cli/commands/skill-search-commands.d.ts +0 -2
  139. package/dist/cli/commands/slice-commands.js +0 -2
  140. package/dist/cli/commands/slice-integrate-commands.js +0 -1
  141. package/dist/cli/commands/spill-demo-command.d.ts +0 -1
  142. package/dist/cli/commands/statusline-commands.js +0 -4
  143. package/dist/cli/commands/sub-agent/detached.js +0 -2
  144. package/dist/cli/commands/sub-agent-commands.d.ts +0 -3
  145. package/dist/cli/commands/sub-agent-shared.d.ts +0 -8
  146. package/dist/cli/commands/sub-agent-shared.js +0 -5
  147. package/dist/cli/commands/sub-agent-shutdown-commands.d.ts +0 -1
  148. package/dist/cli/commands/tech-commands.d.ts +0 -4
  149. package/dist/cli/commands/tech-commands.js +0 -4
  150. package/dist/cli/commands/vendor-detect.d.ts +0 -3
  151. package/dist/cli/commands/vendor-detect.js +0 -2
  152. package/dist/cli/commands/verdict-aggregate-command.d.ts +0 -1
  153. package/dist/cli/commands/verdict-aggregate-command.js +0 -7
  154. package/dist/cli/commands/vm-commands.d.ts +0 -1
  155. package/dist/cli/commands/vm-commands.js +5 -29
  156. package/dist/cli/commands/vm-hypervisor-probe.d.ts +27 -0
  157. package/dist/cli/commands/vm-hypervisor-probe.js +78 -0
  158. package/dist/cli/commands/vm-status-command.d.ts +3 -0
  159. package/dist/cli/commands/vm-status-command.js +50 -0
  160. package/dist/cli/commands/wave-plan-commands.d.ts +0 -1
  161. package/dist/cli/commands/web-lifecycle-commands.d.ts +0 -1
  162. package/dist/cli/commands/workflow-commands.js +0 -14
  163. package/dist/cli/commands/workflow-plan-commands-actions.js +0 -2
  164. package/dist/cli/commands/workflow-plan-commands-session.js +0 -2
  165. package/dist/cli/commands/workflow-plan-commands.d.ts +0 -1
  166. package/dist/cli/commands/workspace/clean-command.d.ts +0 -1
  167. package/dist/cli/commands/workspace/clean-command.js +0 -1
  168. package/dist/cli/commands/workspace/helpers.d.ts +0 -1
  169. package/dist/cli/commands/workspace/helpers.js +0 -1
  170. package/dist/cli/commands/workspace/init-command.d.ts +0 -6
  171. package/dist/cli/commands/workspace/init-command.js +0 -17
  172. package/dist/cli/commands/workspace/migrate-command.d.ts +0 -2
  173. package/dist/cli/commands/workspace/migrate-command.js +0 -2
  174. package/dist/cli/commands/workspace/reconcile-command.d.ts +0 -2
  175. package/dist/cli/commands/workspace/reconcile-command.js +0 -3
  176. package/dist/cli/commands/workspace-commands.d.ts +0 -2
  177. package/dist/cli/commands/workspace-commands.js +0 -4
  178. package/dist/cli/commands/worktree-auth-commands.d.ts +0 -1
  179. package/dist/cli/commands/worktree-auth-commands.js +0 -1
  180. package/dist/cli/commands/worktree-auth-grant-command.d.ts +0 -1
  181. package/dist/cli/commands/worktree-auth-grant-command.js +0 -1
  182. package/dist/cli/commands/worktree-auth-manage-commands.d.ts +0 -1
  183. package/dist/cli/commands/worktree-auth-manage-commands.js +0 -1
  184. package/dist/cli/commands/worktree-lease-commands.js +0 -1
  185. package/dist/cli/program.js +0 -7
  186. package/dist/reporters/bdd-reporter.js +0 -1
  187. package/dist/services/24h-mode/auto-engage.d.ts +0 -1
  188. package/dist/services/24h-mode/auto-engage.js +0 -1
  189. package/dist/services/24h-mode/decider.d.ts +0 -3
  190. package/dist/services/24h-mode/decider.js +0 -3
  191. package/dist/services/24h-mode/index.d.ts +0 -2
  192. package/dist/services/24h-mode/index.js +0 -2
  193. package/dist/services/24h-mode/state.d.ts +0 -1
  194. package/dist/services/24h-mode/state.js +0 -1
  195. package/dist/services/24h-mode/store.d.ts +0 -1
  196. package/dist/services/24h-mode/store.js +0 -1
  197. package/dist/services/adapter/adapter-registry.js +0 -1
  198. package/dist/services/artifacts/artifact-prerequisites.d.ts +0 -5
  199. package/dist/services/artifacts/artifact-prerequisites.js +0 -19
  200. package/dist/services/artifacts/artifact-templates.d.ts +0 -1
  201. package/dist/services/artifacts/artifact-templates.js +0 -1
  202. package/dist/services/artifacts/request-artifact-service.d.ts +0 -5
  203. package/dist/services/artifacts/request-artifact-service.js +0 -12
  204. package/dist/services/artifacts/request-artifact-state-helpers.d.ts +0 -1
  205. package/dist/services/artifacts/request-artifact-state-helpers.js +0 -1
  206. package/dist/services/audit/artifact-writer.d.ts +0 -1
  207. package/dist/services/audit/artifact-writer.js +0 -1
  208. package/dist/services/audit/decision-writer.js +3 -1
  209. package/dist/services/audit/enforcer-liveness.js +0 -1
  210. package/dist/services/audit/enforcers/active-skill-resolver.d.ts +0 -2
  211. package/dist/services/audit/enforcers/active-skill-resolver.js +0 -2
  212. package/dist/services/audit/red-line-audit-input.d.ts +11 -0
  213. package/dist/services/audit/red-line-audit-input.js +103 -0
  214. package/dist/services/audit/red-line-catalog-p2-a-bee-runtime.d.ts +0 -1
  215. package/dist/services/audit/red-line-catalog-p2-a.js +0 -9
  216. package/dist/services/audit/types.d.ts +0 -2
  217. package/dist/services/audit/types.js +0 -2
  218. package/dist/services/audit-independent/perf-audit-service.d.ts +0 -2
  219. package/dist/services/audit-independent/security-audit-service.d.ts +0 -5
  220. package/dist/services/audit-independent/security-audit-service.js +0 -2
  221. package/dist/services/autonomous-swarm/autonomous-swarm-service.d.ts +0 -5
  222. package/dist/services/autonomous-swarm/autonomous-swarm-service.js +0 -5
  223. package/dist/services/best-practice/language-detector.js +0 -1
  224. package/dist/services/best-practice/output-formatter.d.ts +0 -1
  225. package/dist/services/best-practice/scan-orchestrator.d.ts +0 -1
  226. package/dist/services/capability-audit-service/types.d.ts +1 -3
  227. package/dist/services/capability-guard-runner/contracts/J08.js +2 -2
  228. package/dist/services/changeset/changeset-check-service.d.ts +0 -3
  229. package/dist/services/changeset/changeset-check-service.js +0 -3
  230. package/dist/services/classify/classify-service.d.ts +0 -1
  231. package/dist/services/classify/classify-service.js +0 -1
  232. package/dist/services/classify/classify-types.d.ts +0 -1
  233. package/dist/services/classify/classify-types.js +0 -1
  234. package/dist/services/code/auto-compact-lifecycle.d.ts +0 -11
  235. package/dist/services/code/auto-compact-lifecycle.js +0 -10
  236. package/dist/services/code/auto-compact-modes.d.ts +0 -3
  237. package/dist/services/code/auto-compact-modes.js +0 -3
  238. package/dist/services/code/auto-compact-orchestrator.d.ts +0 -9
  239. package/dist/services/code/auto-compact-orchestrator.js +0 -29
  240. package/dist/services/code/batch-heartbeat-poller.js +0 -1
  241. package/dist/services/code/compact-event-settle.js +0 -1
  242. package/dist/services/code/dag-orchestrator.d.ts +0 -1
  243. package/dist/services/code/dag-orchestrator.js +0 -1
  244. package/dist/services/code/mode-gate-types.d.ts +0 -2
  245. package/dist/services/code/mode-gate-types.js +0 -1
  246. package/dist/services/code/mode-gate.d.ts +0 -5
  247. package/dist/services/code/mode-gate.js +0 -5
  248. package/dist/services/code/orchestrator-can-do-advisories.d.ts +0 -2
  249. package/dist/services/code/orchestrator-can-do-advisories.js +0 -5
  250. package/dist/services/code/orchestrator-can-do.d.ts +0 -4
  251. package/dist/services/code/orchestrator-can-do.js +0 -3
  252. package/dist/services/code/status-line-renderer.js +0 -1
  253. package/dist/services/code-review/ecc-bridge.d.ts +0 -1
  254. package/dist/services/codegraph/codegraph-autorefresh.js +6 -4
  255. package/dist/services/codegraph/codegraph-backend-advice.d.ts +26 -0
  256. package/dist/services/codegraph/codegraph-backend-advice.js +166 -0
  257. package/dist/services/codegraph/codegraph-config-repair-writer.d.ts +0 -24
  258. package/dist/services/codegraph/codegraph-config-repair-writer.js +32 -73
  259. package/dist/services/codegraph/codegraph-exclude-integrity.d.ts +14 -6
  260. package/dist/services/codegraph/codegraph-exclude-integrity.js +24 -14
  261. package/dist/services/codegraph/codegraph-exclude-reconciler.d.ts +9 -2
  262. package/dist/services/codegraph/codegraph-exclude-reconciler.js +87 -18
  263. package/dist/services/codegraph/codegraph-exclude-repair.d.ts +9 -61
  264. package/dist/services/codegraph/codegraph-exclude-repair.js +67 -139
  265. package/dist/services/codegraph/codegraph-foreign-removal.d.ts +21 -0
  266. package/dist/services/codegraph/codegraph-foreign-removal.js +77 -0
  267. package/dist/services/codegraph/codegraph-index-integrity.d.ts +12 -25
  268. package/dist/services/codegraph/codegraph-index-integrity.js +84 -23
  269. package/dist/services/codegraph/codegraph-preflight-service.js +15 -6
  270. package/dist/services/codegraph/codegraph-project-config.d.ts +35 -0
  271. package/dist/services/codegraph/codegraph-project-config.js +90 -0
  272. package/dist/services/codegraph/codegraph-service.d.ts +1 -2
  273. package/dist/services/codegraph/codegraph-service.js +11 -11
  274. package/dist/services/codegraph/codegraph-upstream-layout.d.ts +24 -0
  275. package/dist/services/codegraph/codegraph-upstream-layout.js +85 -0
  276. package/dist/services/comments/comment-audit.d.ts +15 -4
  277. package/dist/services/comments/comment-audit.js +25 -4
  278. package/dist/services/comments/comment-citations.d.ts +8 -2
  279. package/dist/services/comments/comment-citations.js +31 -33
  280. package/dist/services/comments/comment-hygiene.d.ts +29 -3
  281. package/dist/services/comments/comment-hygiene.js +40 -3
  282. package/dist/services/comments/comment-prune.js +52 -4
  283. package/dist/services/comments/comment-spans.d.ts +30 -0
  284. package/dist/services/comments/comment-spans.js +266 -0
  285. package/dist/services/comments/prune-apply.d.ts +22 -0
  286. package/dist/services/comments/prune-apply.js +69 -2
  287. package/dist/services/compact/decision-tables.d.ts +0 -2
  288. package/dist/services/compact/decision-tables.js +0 -2
  289. package/dist/services/compact/request-transition-hook.js +0 -2
  290. package/dist/services/compact-history/compact-history-service.d.ts +0 -2
  291. package/dist/services/compact-history/compact-history-service.js +0 -1
  292. package/dist/services/compact-statusline/compact-lifecycle-store.js +0 -2
  293. package/dist/services/compact-statusline/compact-lifecycle-types.d.ts +0 -1
  294. package/dist/services/compact-statusline/compact-statusline-service.js +0 -4
  295. package/dist/services/config/config-rollback.js +0 -1
  296. package/dist/services/config/config-safety.d.ts +0 -1
  297. package/dist/services/config/config-safety.js +0 -1
  298. package/dist/services/config/config-service.d.ts +0 -1
  299. package/dist/services/config/config-service.js +0 -1
  300. package/dist/services/config/model-routing.d.ts +0 -3
  301. package/dist/services/config/model-routing.js +0 -5
  302. package/dist/services/container/container-lease.d.ts +0 -1
  303. package/dist/services/container/container-lease.js +0 -1
  304. package/dist/services/context/artifact-meta.js +0 -1
  305. package/dist/services/context/auto-compact-dispatcher-input.d.ts +0 -3
  306. package/dist/services/context/auto-compact-dispatcher.js +0 -14
  307. package/dist/services/context/auto-compact-reader-input.d.ts +0 -1
  308. package/dist/services/context/auto-compact-reader.d.ts +0 -2
  309. package/dist/services/context/auto-compact-reader.js +0 -7
  310. package/dist/services/context/auto-compact-types.d.ts +0 -11
  311. package/dist/services/context/auto-compact-types.js +0 -1
  312. package/dist/services/context/build-dispatch-system-prompt.d.ts +11 -29
  313. package/dist/services/context/build-dispatch-system-prompt.js +8 -27
  314. package/dist/services/context/codegraph-unavailable-block.d.ts +38 -0
  315. package/dist/services/context/codegraph-unavailable-block.js +77 -0
  316. package/dist/services/context/context-audit-hint.d.ts +0 -1
  317. package/dist/services/context/context-audit-hint.js +0 -1
  318. package/dist/services/context/context-audit.d.ts +0 -1
  319. package/dist/services/context/context-audit.js +0 -1
  320. package/dist/services/context/harness-window-config.d.ts +0 -4
  321. package/dist/services/context/harness-window-config.js +0 -4
  322. package/dist/services/context/main-session-monitor.d.ts +0 -2
  323. package/dist/services/context/main-session-monitor.js +0 -2
  324. package/dist/services/context/memory-index-reader.d.ts +0 -2
  325. package/dist/services/context/memory-index-reader.js +0 -1
  326. package/dist/services/context/memory-preflight-config.d.ts +0 -1
  327. package/dist/services/context/memory-preflight-service.d.ts +0 -1
  328. package/dist/services/context/memory-preflight-service.js +0 -3
  329. package/dist/services/context/memory-preflight-support.d.ts +0 -5
  330. package/dist/services/context/post-compact-reinjection.d.ts +0 -1
  331. package/dist/services/context/post-compact-reinjection.js +0 -1
  332. package/dist/services/context/summary-view.d.ts +0 -1
  333. package/dist/services/context/summary-view.js +0 -1
  334. package/dist/services/crystallization/crystallization-service.d.ts +5 -11
  335. package/dist/services/crystallization/crystallization-service.js +3 -11
  336. package/dist/services/crystallization/crystallization-store.d.ts +6 -6
  337. package/dist/services/dispatch/await-batch-helpers.js +0 -3
  338. package/dist/services/dispatch/await-batch.d.ts +0 -1
  339. package/dist/services/dispatch/await-batch.js +0 -4
  340. package/dist/services/dispatch/batch-counter.js +0 -1
  341. package/dist/services/dispatch/conflict-replay.d.ts +0 -1
  342. package/dist/services/dispatch/conflict-replay.js +0 -1
  343. package/dist/services/dispatch/contract-store.d.ts +0 -2
  344. package/dist/services/dispatch/contract-store.js +0 -2
  345. package/dist/services/dispatch/dispatch-record-input-types.d.ts +0 -2
  346. package/dist/services/dispatch/dispatch-record-types.d.ts +0 -10
  347. package/dist/services/dispatch/dispatch-record-upgrade-fields.js +0 -7
  348. package/dist/services/dispatch/dispatch-record-upgrade-guards.js +0 -2
  349. package/dist/services/dispatch/dispatch-record-writer.d.ts +0 -5
  350. package/dist/services/dispatch/dispatch-record-writer.js +0 -21
  351. package/dist/services/dispatch/dispatch-sub-agent.d.ts +0 -1
  352. package/dist/services/dispatch/dispatch-sub-agent.js +0 -1
  353. package/dist/services/dispatch/e2e-fixtures.js +0 -1
  354. package/dist/services/dispatch/file-overlap-wave-planner.d.ts +0 -1
  355. package/dist/services/dispatch/file-overlap-wave-planner.js +0 -1
  356. package/dist/services/dispatch/isolation-lease.d.ts +0 -2
  357. package/dist/services/dispatch/isolation-lease.js +0 -2
  358. package/dist/services/dispatch/service-shutdown.js +0 -1
  359. package/dist/services/dispatch/session-capsule.js +0 -1
  360. package/dist/services/dispatch/slice-dag-types.d.ts +0 -1
  361. package/dist/services/dispatch/slice-dag.js +0 -2
  362. package/dist/services/dispatch/stage-enum.d.ts +0 -1
  363. package/dist/services/dispatch/stage-enum.js +0 -1
  364. package/dist/services/dispatch/startup-timeout.d.ts +0 -1
  365. package/dist/services/dispatch/sub-agent-batch-await.js +0 -3
  366. package/dist/services/dispatch/sub-agent-dispatcher-types.d.ts +0 -1
  367. package/dist/services/dispatch/sub-agent-dispatcher.js +0 -2
  368. package/dist/services/dispatch/test-tool-detection.d.ts +0 -3
  369. package/dist/services/dispatch/test-tool-detection.js +0 -2
  370. package/dist/services/doctor/doctor-service/checks/codegraph-capability.js +19 -12
  371. package/dist/services/doctor/doctor-service/checks/codegraph-index-integrity.js +1 -2
  372. package/dist/services/doctor/doctor-service/checks/l3-memory-health.d.ts +0 -2
  373. package/dist/services/doctor/doctor-service/checks/l3-memory-health.js +0 -2
  374. package/dist/services/doctor/doctor-service/checks/l3-orphan-sessions.d.ts +0 -1
  375. package/dist/services/doctor/doctor-service/checks/l3-orphan-sessions.js +0 -1
  376. package/dist/services/doctor/doctor-service/checks/multi-binary-drift.d.ts +0 -1
  377. package/dist/services/doctor/doctor-service/checks/multi-binary-drift.js +0 -3
  378. package/dist/services/doctor/doctor-service/checks/workspace-layout.js +0 -2
  379. package/dist/services/doctor/doctor-service/index.d.ts +0 -1
  380. package/dist/services/doctor/doctor-service/index.js +0 -1
  381. package/dist/services/doctor/doctor-service/plugin-registry.d.ts +0 -2
  382. package/dist/services/doctor/doctor-service/plugin-registry.js +0 -2
  383. package/dist/services/doctor/doctor-service/probe-types.d.ts +0 -4
  384. package/dist/services/doctor/doctor-service/report/final-summary.d.ts +0 -1
  385. package/dist/services/doctor/doctor-service/report/final-summary.js +0 -1
  386. package/dist/services/doctor/doctor-service/types.d.ts +0 -5
  387. package/dist/services/doctor/doctor-service/types.js +0 -1
  388. package/dist/services/doctor/doctor-service.d.ts +0 -1
  389. package/dist/services/doctor/doctor-service.js +0 -2
  390. package/dist/services/env/shell-probe.js +0 -1
  391. package/dist/services/evidence/evidence-generator.js +0 -8
  392. package/dist/services/evolution/evolution-constraints.d.ts +0 -2
  393. package/dist/services/evolution/evolution-constraints.js +0 -2
  394. package/dist/services/evolution/evolution-service.d.ts +2 -12
  395. package/dist/services/evolution/evolution-service.js +0 -9
  396. package/dist/services/evolution/evolution-store.d.ts +6 -8
  397. package/dist/services/evolution/evolution-store.js +1 -3
  398. package/dist/services/evolution/evolution-types.d.ts +0 -2
  399. package/dist/services/evolution/evolution-types.js +0 -6
  400. package/dist/services/evolution/independent-evaluator-runner.d.ts +0 -3
  401. package/dist/services/evolution/independent-evaluator-runner.js +0 -1
  402. package/dist/services/evolution/regression-skeptic-runner.d.ts +0 -1
  403. package/dist/services/feedback/feedback-promotion-service.d.ts +0 -8
  404. package/dist/services/feedback/feedback-promotion-service.js +0 -10
  405. package/dist/services/feedback/promotion-artifact-evidence.d.ts +0 -1
  406. package/dist/services/feedback/promotion-artifact-evidence.js +0 -1
  407. package/dist/services/final-review/final-review-evidence-budget.d.ts +0 -3
  408. package/dist/services/final-review/final-review-evidence-budget.js +0 -5
  409. package/dist/services/final-review/final-review-evidence-sources.d.ts +0 -1
  410. package/dist/services/final-review/final-review-evidence-sources.js +0 -1
  411. package/dist/services/final-review/final-review-output-budget.d.ts +0 -1
  412. package/dist/services/final-review/final-review-output-budget.js +0 -3
  413. package/dist/services/final-review/final-review-service.d.ts +0 -1
  414. package/dist/services/final-review/final-review-service.js +0 -1
  415. package/dist/services/fixture/fixture-capture-service.js +0 -1
  416. package/dist/services/fixture/fixture-sanitize-service.d.ts +0 -3
  417. package/dist/services/fixture/fixture-sanitize-service.js +0 -3
  418. package/dist/services/fresh-context/config.js +0 -1
  419. package/dist/services/fresh-context/fresh-context-block.js +0 -1
  420. package/dist/services/fresh-context/trigger-scan.d.ts +0 -1
  421. package/dist/services/fresh-context/trigger-scan.js +0 -1
  422. package/dist/services/fuzzy-matching/fzf-pick-service.d.ts +0 -1
  423. package/dist/services/fuzzy-matching/fzf-pick-service.js +0 -1
  424. package/dist/services/handoff/handoff-parser.d.ts +0 -1
  425. package/dist/services/handoff/handoff-parser.js +0 -1
  426. package/dist/services/handoff/handoff-types.d.ts +0 -1
  427. package/dist/services/handoff/handoff-types.js +0 -1
  428. package/dist/services/handoff/handoff-writer.d.ts +0 -1
  429. package/dist/services/handoff/handoff-writer.js +0 -1
  430. package/dist/services/hooks/auto-compact-hook-install.d.ts +0 -1
  431. package/dist/services/hooks/auto-compact-hook-install.js +0 -1
  432. package/dist/services/hooks/output.d.ts +0 -1
  433. package/dist/services/hooks/output.js +0 -1
  434. package/dist/services/hooks/pre-tool-code-gate.d.ts +0 -1
  435. package/dist/services/hooks/pre-tool-code-gate.js +0 -1
  436. package/dist/services/hooks/presence-marker-detector.js +0 -1
  437. package/dist/services/hooks/worktree-authorization-gate.d.ts +0 -3
  438. package/dist/services/hooks/worktree-authorization-gate.js +0 -1
  439. package/dist/services/ide/adapters/claude-code-adapter.d.ts +0 -5
  440. package/dist/services/ide/adapters/claude-code-adapter.js +0 -11
  441. package/dist/services/ide/adapters/qoder-adapter.d.ts +0 -3
  442. package/dist/services/ide/adapters/qoder-adapter.js +0 -5
  443. package/dist/services/ide/adapters/tongyi-lingma-adapter.d.ts +0 -2
  444. package/dist/services/ide/adapters/tongyi-lingma-adapter.js +0 -2
  445. package/dist/services/ide/adapters/trae-adapter.d.ts +0 -3
  446. package/dist/services/ide/adapters/trae-adapter.js +3 -6
  447. package/dist/services/ide/adapters/zcode-adapter.js +0 -2
  448. package/dist/services/ide/current-model-detector.js +0 -1
  449. package/dist/services/ide/hook-protocol.d.ts +0 -2
  450. package/dist/services/ide/hook-protocol.js +0 -2
  451. package/dist/services/ide/ide-compact-types.d.ts +0 -7
  452. package/dist/services/ide/ide-types.d.ts +0 -12
  453. package/dist/services/ide/resource-profile.d.ts +0 -1
  454. package/dist/services/job/job-commit-verification.d.ts +0 -2
  455. package/dist/services/job/job-commit-verification.js +0 -2
  456. package/dist/services/job/job-orchestrator.d.ts +0 -1
  457. package/dist/services/job/job-orchestrator.js +0 -1
  458. package/dist/services/job/job-progress-store.d.ts +0 -2
  459. package/dist/services/job/job-progress-store.js +0 -3
  460. package/dist/services/job/job-types.js +0 -1
  461. package/dist/services/job-snapshot/snapshot.js +0 -1
  462. package/dist/services/karpathy-cost/karpathy-cost-check-service.js +0 -1
  463. package/dist/services/legacy/legacy-detector.js +0 -1
  464. package/dist/services/log/log-commands-service.d.ts +0 -2
  465. package/dist/services/log/log-commands-service.js +0 -2
  466. package/dist/services/log/logger.d.ts +0 -1
  467. package/dist/services/log/logger.js +0 -1
  468. package/dist/services/log/redact.d.ts +0 -1
  469. package/dist/services/log/redact.js +0 -1
  470. package/dist/services/log/retention.d.ts +0 -1
  471. package/dist/services/log/retention.js +0 -1
  472. package/dist/services/loop/loop-bee-relation-service.d.ts +3 -3
  473. package/dist/services/loop/loop-bee-relation-service.js +14 -13
  474. package/dist/services/loop/loop-bee-relation-store.d.ts +9 -10
  475. package/dist/services/loop/loop-bee-relation-store.js +1 -2
  476. package/dist/services/loop/loop-bee-relation-types.d.ts +1 -1
  477. package/dist/services/loop/loop-bee-relation-types.js +1 -1
  478. package/dist/services/loop/loop-release-service.d.ts +3 -3
  479. package/dist/services/loop/loop-release-service.js +1 -1
  480. package/dist/services/loop/loop-release-store.d.ts +6 -7
  481. package/dist/services/loop/loop-release-store.js +0 -1
  482. package/dist/services/loop/monotonic-guard.d.ts +0 -1
  483. package/dist/services/loop/monotonic-guard.js +0 -1
  484. package/dist/services/memory/memory-ingest-service.js +0 -1
  485. package/dist/services/memory/project-context-service.d.ts +0 -1
  486. package/dist/services/memory/project-context-service.js +0 -1
  487. package/dist/services/memory/project-memory-service/index/reindex.d.ts +0 -2
  488. package/dist/services/memory/project-memory-service/index/reindex.js +0 -1
  489. package/dist/services/memory/project-memory-service/index/search.d.ts +0 -1
  490. package/dist/services/memory/project-memory-service/index/search.js +0 -1
  491. package/dist/services/memory/project-memory-service/memory-kinds.d.ts +0 -1
  492. package/dist/services/memory/project-memory-service/memory-kinds.js +0 -1
  493. package/dist/services/memory/project-memory-service/parsers/frontmatter.d.ts +0 -1
  494. package/dist/services/memory/project-memory-service/parsers/frontmatter.js +0 -1
  495. package/dist/services/memory/project-memory-service.js +0 -1
  496. package/dist/services/mode/mode-enforcement.js +0 -1
  497. package/dist/services/mode/mode-status-service.d.ts +0 -2
  498. package/dist/services/mode/mode-status-service.js +0 -2
  499. package/dist/services/observability/aggregation.d.ts +0 -4
  500. package/dist/services/observability/aggregation.js +0 -6
  501. package/dist/services/observability/observability-schema.js +0 -1
  502. package/dist/services/observability/observability-service.d.ts +0 -5
  503. package/dist/services/observability/observability-service.js +0 -4
  504. package/dist/services/observability/report-formatter.d.ts +0 -2
  505. package/dist/services/observability/report-formatter.js +0 -2
  506. package/dist/services/openspec/artifact-boundary.d.ts +0 -4
  507. package/dist/services/openspec/artifact-boundary.js +0 -4
  508. package/dist/services/openspec/coverage-evidence-reader.d.ts +0 -1
  509. package/dist/services/openspec/coverage-evidence-reader.js +0 -1
  510. package/dist/services/polyrepo/polyrepo-dispatcher.js +0 -1
  511. package/dist/services/polyrepo/polyrepo-scanner.js +0 -1
  512. package/dist/services/polyrepo/polyrepo-service.js +0 -1
  513. package/dist/services/polyrepo/polyrepo-types.d.ts +0 -1
  514. package/dist/services/prd/best-practice-auto-trigger.d.ts +0 -2
  515. package/dist/services/prd/best-practice-auto-trigger.js +0 -2
  516. package/dist/services/prd/gate-evidence-derivation.d.ts +0 -4
  517. package/dist/services/prd/gate-evidence-derivation.js +0 -5
  518. package/dist/services/prd/handoff-auto-regen.js +0 -5
  519. package/dist/services/prd/handoff-frontmatter-shape.d.ts +0 -2
  520. package/dist/services/prd/handoff-frontmatter-shape.js +0 -2
  521. package/dist/services/prd/handoff-frontmatter.d.ts +0 -1
  522. package/dist/services/prd/handoff-frontmatter.js +0 -2
  523. package/dist/services/prd/handoff-gate-evidence.d.ts +0 -1
  524. package/dist/services/prd/handoff-gate-evidence.js +0 -4
  525. package/dist/services/prd/handoff-path-resolution.d.ts +0 -7
  526. package/dist/services/prd/handoff-path-resolution.js +0 -10
  527. package/dist/services/prd/handoff-service.d.ts +0 -2
  528. package/dist/services/prd/handoff-service.js +0 -2
  529. package/dist/services/prd/handoff-types.d.ts +0 -2
  530. package/dist/services/prd/handoff-types.js +0 -1
  531. package/dist/services/prd/project-scan-bootstrap-service.d.ts +0 -1
  532. package/dist/services/prd/project-scan-bootstrap-service.js +0 -4
  533. package/dist/services/prd/project-scan-types.d.ts +0 -1
  534. package/dist/services/prd/project-scan-types.js +0 -1
  535. package/dist/services/preferences/preferences-service.d.ts +0 -1
  536. package/dist/services/preferences/preferences-service.js +0 -5
  537. package/dist/services/preferences/preferences-types.d.ts +0 -14
  538. package/dist/services/preferences/preferences-types.js +0 -4
  539. package/dist/services/progress/progress-service.js +0 -1
  540. package/dist/services/qa/bdd-test-style-verifier.d.ts +0 -1
  541. package/dist/services/qa/bdd-test-style-verifier.js +0 -1
  542. package/dist/services/qa/browser-event-logger.d.ts +0 -1
  543. package/dist/services/qa/browser-event-logger.js +0 -1
  544. package/dist/services/qa/browser-restart-detector.d.ts +0 -1
  545. package/dist/services/qa/browser-restart-detector.js +0 -1
  546. package/dist/services/qa/browser-reuse-hint.d.ts +0 -1
  547. package/dist/services/qa/browser-reuse-hint.js +0 -1
  548. package/dist/services/qa/qa-business-review-state.js +0 -2
  549. package/dist/services/qa/screenshot-archive-service.d.ts +0 -1
  550. package/dist/services/qa/screenshot-archive-service.js +0 -1
  551. package/dist/services/rd/impl.js +0 -1
  552. package/dist/services/rd/rd-service.d.ts +0 -5
  553. package/dist/services/rd/rd-service.js +0 -5
  554. package/dist/services/rd/reviewer-dispatch-policy.d.ts +0 -4
  555. package/dist/services/rd/reviewer-dispatch-policy.js +0 -4
  556. package/dist/services/rd/standards-diagnostic.js +0 -1
  557. package/dist/services/rd/tactical-stage.js +0 -1
  558. package/dist/services/rd-swarm/rd-swarm-types.d.ts +0 -1
  559. package/dist/services/rd-swarm/rd-swarm-types.js +0 -1
  560. package/dist/services/recommendations/installed-capability-detector.d.ts +0 -1
  561. package/dist/services/recommendations/installed-capability-detector.js +0 -1
  562. package/dist/services/release/version-precheck-service.d.ts +0 -2
  563. package/dist/services/release/version-precheck-service.js +0 -3
  564. package/dist/services/retrospective/retrospective-index.d.ts +0 -1
  565. package/dist/services/retrospective/retrospective-index.js +0 -1
  566. package/dist/services/retrospective/retrospective-show.d.ts +0 -1
  567. package/dist/services/retrospective/retrospective-show.js +0 -1
  568. package/dist/services/reviewer/model-family.js +0 -1
  569. package/dist/services/reviewer/reviewer-config.js +0 -1
  570. package/dist/services/reviewer/reviewer-service.d.ts +0 -1
  571. package/dist/services/reviewer/reviewer-service.js +0 -3
  572. package/dist/services/reviewer/selection-strategies.js +0 -1
  573. package/dist/services/runtime/runtime-detector.js +0 -1
  574. package/dist/services/runtime/runtime-service.d.ts +0 -2
  575. package/dist/services/runtime/vendor-adapter.d.ts +0 -7
  576. package/dist/services/runtime/vendors/claude-code.js +0 -1
  577. package/dist/services/runtime/vendors/codex.js +0 -1
  578. package/dist/services/runtime/vendors/copilot.js +0 -1
  579. package/dist/services/sc/sc-service.js +0 -6
  580. package/dist/services/scan/acceptance-coverage-service.js +0 -2
  581. package/dist/services/scan/api-diff-recorded.d.ts +0 -1
  582. package/dist/services/scan/api-diff-recorded.js +0 -1
  583. package/dist/services/scan/api-diff-service.d.ts +0 -1
  584. package/dist/services/scan/api-diff-service.js +0 -1
  585. package/dist/services/scan/api-diff-types.d.ts +0 -1
  586. package/dist/services/scan/api-diff-types.js +0 -1
  587. package/dist/services/scan/archetype-service.js +0 -1
  588. package/dist/services/scan/file-size-policy.d.ts +0 -1
  589. package/dist/services/scan/file-size-policy.js +0 -5
  590. package/dist/services/scan/file-size-scan.d.ts +0 -1
  591. package/dist/services/security/safe-settings-path.js +0 -1
  592. package/dist/services/session/binding-store.d.ts +0 -4
  593. package/dist/services/session/binding-store.js +0 -7
  594. package/dist/services/session/caller-binding-service.d.ts +0 -6
  595. package/dist/services/session/caller-binding-service.js +0 -4
  596. package/dist/services/session/caller-id-types.d.ts +0 -3
  597. package/dist/services/session/caller-id-types.js +0 -2
  598. package/dist/services/session/getSessionDir.js +0 -1
  599. package/dist/services/session/index.js +0 -1
  600. package/dist/services/session/platform-fallbacks.d.ts +0 -3
  601. package/dist/services/session/platform-fallbacks.js +0 -3
  602. package/dist/services/session/resolve-caller-id.d.ts +0 -2
  603. package/dist/services/session/resolve-caller-id.js +0 -2
  604. package/dist/services/session/session-binding-bridge.d.ts +0 -2
  605. package/dist/services/session/session-binding-bridge.js +0 -15
  606. package/dist/services/session/session-checkpoint-service.d.ts +0 -1
  607. package/dist/services/session/session-checkpoint-service.js +0 -1
  608. package/dist/services/session/session-manager.d.ts +0 -8
  609. package/dist/services/session/session-manager.js +0 -19
  610. package/dist/services/session/session-resume-service.d.ts +0 -1
  611. package/dist/services/session/session-resume-service.js +0 -1
  612. package/dist/services/share/bundle-reader.d.ts +2 -5
  613. package/dist/services/share/bundle-reader.js +6 -8
  614. package/dist/services/share/bundle-writer.d.ts +2 -2
  615. package/dist/services/skill/resume-detector.js +0 -3
  616. package/dist/services/skill/skill-scheduler.d.ts +0 -1
  617. package/dist/services/skill/skill-scheduler.js +0 -1
  618. package/dist/services/skill/skill-search-service.d.ts +0 -2
  619. package/dist/services/skill/skill-search-service.js +0 -2
  620. package/dist/services/skillhub/release-diff.d.ts +2 -2
  621. package/dist/services/skillhub/release-export.d.ts +2 -2
  622. package/dist/services/skillhub/release-gc-blobs.d.ts +2 -2
  623. package/dist/services/skillhub/release-import.d.ts +2 -2
  624. package/dist/services/skillhub/release-import.js +2 -1
  625. package/dist/services/skillhub/release-retain.d.ts +2 -2
  626. package/dist/services/skillhub/release-retain.js +2 -1
  627. package/dist/services/skillhub/sqlite-store.d.ts +3 -3
  628. package/dist/services/skillhub/sqlite-store.js +4 -5
  629. package/dist/services/skills/hooks-codegate-superpowers.d.ts +0 -3
  630. package/dist/services/skills/hooks-codegate-superpowers.js +0 -14
  631. package/dist/services/skills/hooks-settings-service.d.ts +0 -2
  632. package/dist/services/skills/hooks-settings-service.js +0 -6
  633. package/dist/services/skills/presence-lease-service.d.ts +0 -1
  634. package/dist/services/skills/presence-lease-service.js +0 -1
  635. package/dist/services/skills/session-start-hook-constants.d.ts +0 -4
  636. package/dist/services/skills/session-start-hook-constants.js +0 -4
  637. package/dist/services/skills/skill-presence-service.d.ts +0 -8
  638. package/dist/services/skills/skill-presence-service.js +0 -13
  639. package/dist/services/skills/skill-statusline-model.d.ts +0 -6
  640. package/dist/services/skills/skill-statusline-model.js +1 -4
  641. package/dist/services/skills/skill-statusline-renderer.d.ts +0 -1
  642. package/dist/services/skills/skill-statusline-renderer.js +0 -12
  643. package/dist/services/skills/skill-statusline-service.js +0 -6
  644. package/dist/services/skills/skill-statusline-sid-suffix.d.ts +0 -2
  645. package/dist/services/skills/skill-statusline-sid-suffix.js +0 -2
  646. package/dist/services/skills/statusline-palette.d.ts +0 -2
  647. package/dist/services/skills/statusline-palette.js +0 -3
  648. package/dist/services/slice/slice-archive-service.js +0 -1
  649. package/dist/services/slice/slice-benchmark-service.d.ts +0 -1
  650. package/dist/services/slice/slice-benchmark-service.js +0 -1
  651. package/dist/services/slice/slice-check-service.js +0 -6
  652. package/dist/services/slice/slice-check-types.d.ts +0 -1
  653. package/dist/services/slice/slice-pick-service.d.ts +0 -1
  654. package/dist/services/slice/slice-pick-service.js +0 -1
  655. package/dist/services/slice/slice-review-state.js +0 -2
  656. package/dist/services/sqlite/sqlite-driver.d.ts +118 -0
  657. package/dist/services/sqlite/sqlite-driver.js +159 -0
  658. package/dist/services/standards/ide-aware-standards-service.d.ts +0 -2
  659. package/dist/services/standards/ide-aware-standards-service.js +0 -1
  660. package/dist/services/standards/loop-engineering-readiness-lint.d.ts +0 -1
  661. package/dist/services/standards/loop-engineering-readiness-lint.js +0 -1
  662. package/dist/services/standards/migrate-claude-rules-service.js +0 -3
  663. package/dist/services/standards/migrate-service.d.ts +0 -1
  664. package/dist/services/standards/migrate-service.js +0 -1
  665. package/dist/services/standards/missing-standards-detector.d.ts +0 -2
  666. package/dist/services/standards/missing-standards-detector.js +0 -3
  667. package/dist/services/standards/project-standards-service.d.ts +0 -1
  668. package/dist/services/standards/project-standards-service.js +0 -1
  669. package/dist/services/standards/standards-render.d.ts +0 -1
  670. package/dist/services/standards/standards-render.js +0 -1
  671. package/dist/services/standards/ui-library-dispatch-block.d.ts +0 -1
  672. package/dist/services/standards/ui-library-dispatch-block.js +0 -1
  673. package/dist/services/tech/tech-change-id-service.d.ts +0 -7
  674. package/dist/services/tech/tech-change-id-service.js +0 -7
  675. package/dist/services/tech/tech-service.js +0 -5
  676. package/dist/services/verdict/envelope-parsers.d.ts +0 -2
  677. package/dist/services/verdict/envelope-parsers.js +0 -2
  678. package/dist/services/verdict/envelopes.d.ts +0 -1
  679. package/dist/services/vm/vm-lease.js +0 -1
  680. package/dist/services/web/aria-node.d.ts +0 -1
  681. package/dist/services/web/bounded-output.d.ts +0 -1
  682. package/dist/services/web/bounded-output.js +0 -1
  683. package/dist/services/web/browser-acquire.js +0 -1
  684. package/dist/services/web/browser-cache-probe.js +0 -1
  685. package/dist/services/web/browser-session-manager.js +0 -1
  686. package/dist/services/web/daemon-entry.js +0 -1
  687. package/dist/services/web/daemon-registry.js +0 -1
  688. package/dist/services/web/daemon-supervisor.d.ts +4 -3
  689. package/dist/services/web/daemon-supervisor.js +4 -4
  690. package/dist/services/web/playwright-loader.js +0 -1
  691. package/dist/services/web/playwright-types.d.ts +0 -1
  692. package/dist/services/web/snapshot-pruner.js +0 -1
  693. package/dist/services/web/untrusted-envelope.d.ts +0 -1
  694. package/dist/services/web/web-artifact-paths.js +0 -1
  695. package/dist/services/web/web-client.d.ts +0 -1
  696. package/dist/services/web/web-daemon-service.js +0 -1
  697. package/dist/services/web/web-fallback.d.ts +0 -1
  698. package/dist/services/web/web-fallback.js +0 -1
  699. package/dist/services/web/web-install-service.js +0 -1
  700. package/dist/services/web/web-login-profile.js +0 -1
  701. package/dist/services/web/web-protocol.d.ts +0 -1
  702. package/dist/services/web/web-protocol.js +0 -1
  703. package/dist/services/web/web-status-report.js +0 -1
  704. package/dist/services/workflow/artifact-paths.js +0 -3
  705. package/dist/services/workflow/autonomous-resume-writer.js +0 -2
  706. package/dist/services/workflow/pipeline-verify-gate-support.d.ts +0 -5
  707. package/dist/services/workflow/pipeline-verify-gate-support.js +0 -11
  708. package/dist/services/workflow/pipeline-verify-service.d.ts +0 -2
  709. package/dist/services/workflow/pipeline-verify-service.js +0 -15
  710. package/dist/services/workflow/pipeline-verify-types.d.ts +0 -10
  711. package/dist/services/workflow/pipeline-verify-types.js +0 -2
  712. package/dist/services/workflow/plan-reader.d.ts +0 -1
  713. package/dist/services/workflow/plan-reader.js +0 -5
  714. package/dist/services/workflow/plan-refresher.js +0 -2
  715. package/dist/services/workflow/plan-trigger-detector.d.ts +0 -2
  716. package/dist/services/workflow/plan-trigger-detector.js +0 -3
  717. package/dist/services/workflow/workflow-autonomous-resume-helpers.js +0 -5
  718. package/dist/services/workflow/workflow-autonomous-service.js +0 -2
  719. package/dist/services/workflow/workflow-autonomous-types.d.ts +0 -2
  720. package/dist/services/workflow/workflow-autonomous-types.js +0 -2
  721. package/dist/services/workflow/workflow-graph-types.d.ts +0 -1
  722. package/dist/services/workflow/workflow-graph-types.js +0 -1
  723. package/dist/services/workflow/workflow-router-service.js +0 -4
  724. package/dist/services/workflow/workflow-skip-service.d.ts +0 -1
  725. package/dist/services/workflow/workflow-skip-service.js +0 -1
  726. package/dist/services/workflow/workflow-spec-lint.d.ts +0 -2
  727. package/dist/services/workflow/workflow-spec-lint.js +0 -2
  728. package/dist/services/workflow/workflow-spec-types.d.ts +0 -1
  729. package/dist/services/workflow/workflow-spec-types.js +0 -1
  730. package/dist/services/workflow/workflow-spec-yaml.d.ts +0 -2
  731. package/dist/services/workflow/workflow-spec-yaml.js +0 -2
  732. package/dist/services/workflow/workflow-spec.js +0 -1
  733. package/dist/services/workflow/workflow-state-store.js +0 -1
  734. package/dist/services/workspace/claude-settings-template.d.ts +0 -4
  735. package/dist/services/workspace/claude-settings-template.js +0 -4
  736. package/dist/services/workspace/migrate-1-4-1-service.d.ts +0 -1
  737. package/dist/services/workspace/migrate-1-4-1-service.js +0 -1
  738. package/dist/services/workspace/migrate-service.js +0 -8
  739. package/dist/services/workspace/migrate-types.d.ts +0 -4
  740. package/dist/services/workspace/migrate-types.js +0 -1
  741. package/dist/services/workspace/reconcile-migrate.d.ts +0 -3
  742. package/dist/services/workspace/reconcile-migrate.js +0 -5
  743. package/dist/services/workspace/reconcile-service.d.ts +0 -3
  744. package/dist/services/workspace/reconcile-service.js +0 -7
  745. package/dist/services/workspace/reconcile-types.d.ts +0 -5
  746. package/dist/services/workspace/sid-naming-guard.d.ts +0 -1
  747. package/dist/services/workspace/sid-naming-guard.js +0 -1
  748. package/dist/services/workspace/templates/project-scan/index.d.ts +0 -3
  749. package/dist/services/workspace/templates/project-scan/index.js +0 -3
  750. package/dist/services/workspace/workspace-claude-settings-materializer.d.ts +0 -1
  751. package/dist/services/workspace/workspace-claude-settings-materializer.js +0 -4
  752. package/dist/services/workspace/workspace-service.d.ts +0 -7
  753. package/dist/services/workspace/workspace-service.js +0 -16
  754. package/dist/services/worktree/playwright-profile.js +0 -1
  755. package/dist/services/worktree/worktree-lease-types.d.ts +0 -1
  756. package/dist/services/worktree/worktree-lease-types.js +0 -1
  757. package/dist/services/worktree/worktree-lease.d.ts +0 -2
  758. package/dist/services/worktree/worktree-lease.js +0 -2
  759. package/dist/shared/format-md-compact.d.ts +0 -2
  760. package/dist/shared/format-md-compact.js +0 -2
  761. package/dist/shared/incrementing-number.d.ts +0 -1
  762. package/dist/shared/incrementing-number.js +0 -1
  763. package/dist/shared/path-utils.d.ts +0 -1
  764. package/dist/shared/path-utils.js +0 -1
  765. package/dist/shared/runtime-root.d.ts +0 -1
  766. package/dist/shared/runtime-root.js +0 -1
  767. package/dist/shared/stale-policy.d.ts +0 -1
  768. package/dist/shared/stale-policy.js +0 -1
  769. package/package.json +12 -10
  770. package/scripts/canonical-store-link.mjs +296 -0
  771. package/scripts/canonical-store-prune.mjs +131 -0
  772. package/scripts/canonical-store.mjs +298 -0
  773. package/scripts/install-skills.mjs +175 -383
  774. package/skills/peaks-audit/SKILL.md +3 -3
  775. package/dist/services/codegraph/codegraph-include-reconciler.d.ts +0 -10
  776. package/dist/services/codegraph/codegraph-include-reconciler.js +0 -160
@@ -0,0 +1,131 @@
1
+ #!/usr/bin/env node
2
+ //
3
+ // PRUNE — the delete half of the canonical store (`scripts/canonical-store.mjs`).
4
+ //
5
+ // WHY. Until this slice the installer only ever ADDED. When a skill left the package,
6
+ // its canonical copy, every IDE link to it and every `.peaks-managed` sidecar stayed
7
+ // on the user's machine forever: `installBundledSkills` walked the package's skill
8
+ // list and had no loop that walked the DESTINATIONS. This module is that loop.
9
+ //
10
+ // THE WHOLE RISK IS THE WORD "ONLY". A prune that is one predicate too wide is, from
11
+ // outside, indistinguishable from a correct one — both print success and both leave
12
+ // a shorter listing. So ownership is never inferred from "the name is not in the
13
+ // package": it is asked of ONE predicate, `isManagedEntry` in `canonical-store.mjs`,
14
+ // which demands a `.peaks-managed` marker beside the entry. A real directory the user
15
+ // authored — including one that reuses a retired skill's name — carries no marker,
16
+ // survives byte for byte, and is reported `kept` rather than silently dropped. The
17
+ // negative control in `tests/unit/ide/install-skills-prune.test.ts` is that directory.
18
+ //
19
+ // It is also the shape `ensureCanonicalCopy` deletes behind: that function used to run
20
+ // `rmSync(canonicalPath, ...)` with no ownership test at all, which today is
21
+ // unreachable only because no bundled asset is named `ecc` — while `~/.peaks/agents/`
22
+ // really does hold a user ECC tree under that name. Both delete paths now gate on the
23
+ // same predicate.
24
+ //
25
+ // Idempotent by construction: prune is driven by a name set, not by a marker that
26
+ // says "already pruned", so a second run finds nothing and moves no mtime.
27
+
28
+ import { existsSync, lstatSync, readdirSync, rmSync, unlinkSync } from 'node:fs';
29
+ import { join } from 'node:path';
30
+
31
+ import { MANAGED_MARKER_SUFFIX, isManagedEntry, resolveKindRoot } from './canonical-store.mjs';
32
+
33
+ /** Every name directly under `dir`, sorted, or `[]` when `dir` does not exist. */
34
+ function listEntryNames(dir) {
35
+ if (!existsSync(dir)) return [];
36
+ return readdirSync(dir).sort();
37
+ }
38
+
39
+ /** Remove `entryPath`, following a link instead of the tree it points at. */
40
+ function removeEntry(entryPath) {
41
+ if (lstatSync(entryPath).isSymbolicLink()) {
42
+ unlinkSync(entryPath);
43
+ } else {
44
+ rmSync(entryPath, { recursive: true, force: true });
45
+ }
46
+ const markerPath = `${entryPath}${MANAGED_MARKER_SUFFIX}`;
47
+ if (existsSync(markerPath)) unlinkSync(markerPath);
48
+ }
49
+
50
+ /**
51
+ * Drop every CANONICAL entry of one kind that peaks-loop owns and the package no
52
+ * longer ships. `keepNames` is what this run of the package shipped.
53
+ *
54
+ * @param {{ kind: string, keepNames: readonly string[], root?: string }} options
55
+ */
56
+ export function pruneCanonicalEntries(options) {
57
+ const { kind, keepNames } = options;
58
+ const kindRoot = resolveKindRoot(kind, options);
59
+ const keep = new Set(keepNames);
60
+ const pruned = [];
61
+ const kept = [];
62
+
63
+ for (const name of listEntryNames(kindRoot)) {
64
+ const entryPath = join(kindRoot, name);
65
+ if (name.endsWith(MANAGED_MARKER_SUFFIX)) {
66
+ // A sidecar whose asset is gone and whose name the package does not claim is
67
+ // ours with nothing left to describe — the leftover of a partial install. The
68
+ // last `existsSync` is load-bearing: the branch below removes a retired entry
69
+ // AND its sidecar, and this listing is a snapshot taken before that happened.
70
+ const base = name.slice(0, -MANAGED_MARKER_SUFFIX.length);
71
+ if (!keep.has(base) && !existsSync(join(kindRoot, base)) && existsSync(entryPath)) {
72
+ unlinkSync(entryPath);
73
+ pruned.push(`${kind}/${base}`);
74
+ }
75
+ continue;
76
+ }
77
+ if (keep.has(name)) continue;
78
+ if (!isManagedEntry(entryPath)) {
79
+ kept.push(name);
80
+ continue;
81
+ }
82
+ removeEntry(entryPath);
83
+ pruned.push(`${kind}/${name}`);
84
+ }
85
+ return { pruned, kept };
86
+ }
87
+
88
+ /**
89
+ * Drop every IDE entry in `linkDir` that peaks-loop owns and the package no longer
90
+ * ships. A real directory the user authored is never a candidate: it has no marker.
91
+ *
92
+ * @param {{ linkDir: string, keepNames: readonly string[] }} options
93
+ */
94
+ export function pruneLinkedEntries(options) {
95
+ const { linkDir, keepNames } = options;
96
+ const keep = new Set(keepNames);
97
+ const pruned = [];
98
+ const kept = [];
99
+
100
+ for (const name of listEntryNames(linkDir)) {
101
+ if (name.endsWith(MANAGED_MARKER_SUFFIX)) continue;
102
+ if (keep.has(name)) continue;
103
+ const linkPath = join(linkDir, name);
104
+ if (!isManagedEntry(linkPath)) {
105
+ kept.push(`${linkDir}/${name}`);
106
+ continue;
107
+ }
108
+ removeEntry(linkPath);
109
+ pruned.push(`${linkDir}/${name}`);
110
+ }
111
+ return { pruned, kept };
112
+ }
113
+
114
+ /**
115
+ * The installer's entry point for this module: prune one asset family's canonical
116
+ * store AND every IDE directory that links into it.
117
+ *
118
+ * @param {{ kind: string, keepNames: readonly string[], linkDirs?: readonly string[], root?: string }} options
119
+ */
120
+ export function pruneBundledEntries(options) {
121
+ const { keepNames, linkDirs = [] } = options;
122
+ const canonical = pruneCanonicalEntries({ ...options, keepNames });
123
+ const pruned = [...canonical.pruned];
124
+ const kept = [...canonical.kept];
125
+ for (const linkDir of linkDirs) {
126
+ const linked = pruneLinkedEntries({ linkDir, keepNames });
127
+ pruned.push(...linked.pruned);
128
+ kept.push(...linked.kept);
129
+ }
130
+ return { pruned, kept };
131
+ }
@@ -0,0 +1,298 @@
1
+ #!/usr/bin/env node
2
+ //
3
+ // The peaks-loop canonical asset store — `~/.peaks/{skills,agents,output-styles}` (was
4
+ // `~/.agents`; HISTORY — see `rd/evidence-root-switch.md` for why it moved).
5
+ //
6
+ // WHY. `install-skills.mjs` linked each IDE skills dir straight at
7
+ // `<packageRoot>/skills/<name>`, a path that changes on every `npm i -g
8
+ // peaks-loop@latest`: the links bound to a VERSION, not to a PATH peaks-loop owns.
9
+ //
10
+ // WIRED FOR SKILLS (slice 2) and PRUNED (slice 3); agents / output-styles are later.
11
+ // `scripts/install-skills.mjs` is the only caller today. Idempotence is by CONTENT —
12
+ // an asset whose bytes already match is not rewritten — and OWNERSHIP is by MARKER:
13
+ // see `isManagedEntry`, which gates the replace path here and the delete path in
14
+ // `scripts/canonical-store-prune.mjs`.
15
+
16
+ import { randomUUID } from 'node:crypto';
17
+ import {
18
+ cpSync,
19
+ existsSync,
20
+ lstatSync,
21
+ mkdirSync,
22
+ readdirSync,
23
+ readFileSync,
24
+ realpathSync,
25
+ renameSync,
26
+ rmSync,
27
+ symlinkSync,
28
+ unlinkSync,
29
+ writeFileSync
30
+ } from 'node:fs';
31
+ import { homedir } from 'node:os';
32
+ import { dirname, join, resolve } from 'node:path';
33
+
34
+ /** The three asset families, parallel under the canonical root. */
35
+ export const CANONICAL_ASSET_KINDS = Object.freeze(['skills', 'agents', 'output-styles']);
36
+
37
+ /** Redirects the canonical root; `PEAKS_HOME` is this repo's existing name for
38
+ * `~/.peaks` (`src/services/sop/sop-paths.ts`). */
39
+ export const CANONICAL_ROOT_ENV = 'PEAKS_HOME';
40
+
41
+ /** Sidecar suffix, same convention `install-skills.mjs` already writes. */
42
+ export const MANAGED_MARKER_SUFFIX = '.peaks-managed';
43
+
44
+ /** Scratch prefix for the atomic write; never a valid name (assets do not start with a dot). */
45
+ const TEMP_PREFIX = '.peaks-tmp-';
46
+
47
+ function getPathStats(path) {
48
+ try {
49
+ return lstatSync(path);
50
+ } catch {
51
+ return null;
52
+ }
53
+ }
54
+
55
+ /** `\\?\C:\x` and `\\?\UNC\srv\share` are spellings of a path, not other paths. */
56
+ function stripLongPathPrefix(value) {
57
+ const uncPrefix = '\\\\?\\UNC\\';
58
+ if (value.startsWith(uncPrefix)) return `\\\\${value.slice(uncPrefix.length)}`;
59
+ const prefix = '\\\\?\\';
60
+ return value.startsWith(prefix) ? value.slice(prefix.length) : value;
61
+ }
62
+
63
+ /**
64
+ * The real, resolved, case-folded identity of a path, or null when it does not
65
+ * resolve (a dangling junction included).
66
+ */
67
+ function resolveIdentity(path) {
68
+ let resolved;
69
+ try {
70
+ resolved = realpathSync(path);
71
+ } catch {
72
+ return null;
73
+ }
74
+ const normalized = stripLongPathPrefix(resolved);
75
+ return process.platform === 'win32' ? normalized.toLowerCase() : normalized;
76
+ }
77
+
78
+ /**
79
+ * Whether `linkPath` resolves to the same directory as `expectedPath`. Both sides
80
+ * go through `realpath`, so a `\\?\` prefix, a `.` segment or a case difference
81
+ * cannot make one directory look like two.
82
+ */
83
+ export function linkResolvesTo(linkPath, expectedPath) {
84
+ const actual = resolveIdentity(linkPath);
85
+ const expected = resolveIdentity(expectedPath);
86
+ return actual !== null && expected !== null && actual === expected;
87
+ }
88
+
89
+ /**
90
+ * Does peaks-loop own `targetPath`? Our `.peaks-managed` marker beside it is the
91
+ * only proof: a path the user authored carries none and must never be replaced or
92
+ * removed (a DANGLING link counts as ours).
93
+ */
94
+ export function isManagedEntry(targetPath) {
95
+ const stats = getPathStats(targetPath);
96
+ if (!stats) return false;
97
+ if (stats.isSymbolicLink()) return isOurLink(targetPath, stats);
98
+ return readManagedTarget(targetPath) !== null;
99
+ }
100
+
101
+ /** Reject anything that is not one plain path segment; names reach the filesystem. */
102
+ function assertAssetName(name, kind) {
103
+ if (
104
+ typeof name !== 'string' ||
105
+ name.length === 0 ||
106
+ name === '.' ||
107
+ name === '..' ||
108
+ name.includes('/') ||
109
+ name.includes('\\')
110
+ ) {
111
+ throw new Error(`Peaks canonical ${kind} name must be a single path segment`);
112
+ }
113
+ }
114
+
115
+ /**
116
+ * The canonical root: `options.root`, else `$PEAKS_HOME`, else `~/.peaks`.
117
+ * @param {{ root?: string }} [options]
118
+ */
119
+ export function resolveCanonicalRoot(options = {}) {
120
+ const configured = options.root ?? process.env[CANONICAL_ROOT_ENV];
121
+ if (typeof configured === 'string' && configured.trim().length > 0) {
122
+ return resolve(configured);
123
+ }
124
+ return resolve(join(homedir(), '.peaks'));
125
+ }
126
+
127
+ /**
128
+ * One asset family's directory inside the canonical root.
129
+ * @param {'skills' | 'agents' | 'output-styles'} kind
130
+ * @param {{ root?: string }} [options]
131
+ */
132
+ export function resolveKindRoot(kind, options = {}) {
133
+ if (!CANONICAL_ASSET_KINDS.includes(kind)) {
134
+ throw new Error(
135
+ `Peaks canonical asset kind must be one of ${CANONICAL_ASSET_KINDS.join(', ')}`
136
+ );
137
+ }
138
+ return join(resolveCanonicalRoot(options), kind);
139
+ }
140
+
141
+ /** A marker is a plain single-linked file — never a link, never a hardlink. */
142
+ function validateMarkerPath(markerPath) {
143
+ const stats = getPathStats(markerPath);
144
+ if (!stats) return;
145
+ if (stats.isSymbolicLink()) throw new Error('Peaks managed marker path must not be a symlink');
146
+ if (!stats.isFile()) throw new Error('Peaks managed marker path must be a file');
147
+ if (stats.nlink !== 1) throw new Error('Peaks managed marker path must not be hardlinked');
148
+ }
149
+
150
+ /** The `.peaks-managed` sidecar beside `targetPath`, trimmed, or null — the same
151
+ * convention `install-skills.mjs` writes (one line holding the producing path). */
152
+ export function readManagedTarget(targetPath) {
153
+ const markerPath = `${targetPath}${MANAGED_MARKER_SUFFIX}`;
154
+ validateMarkerPath(markerPath);
155
+ if (!existsSync(markerPath)) return null;
156
+ return readFileSync(markerPath, 'utf8').trim();
157
+ }
158
+
159
+ /** Write the sidecar through a sibling temp file, so no reader sees it half-written. */
160
+ export function writeManagedMarker(targetPath, provenance) {
161
+ const markerPath = `${targetPath}${MANAGED_MARKER_SUFFIX}`;
162
+ validateMarkerPath(markerPath);
163
+ mkdirSync(dirname(markerPath), { recursive: true });
164
+ const tempPath = `${markerPath}${TEMP_PREFIX}${randomUUID()}`;
165
+ writeFileSync(tempPath, `${provenance}\n`, 'utf8');
166
+ renameSync(tempPath, markerPath);
167
+ }
168
+
169
+ /** Every file and directory under `rootPath`, as sorted `/`-joined relative paths. */
170
+ function listTreeEntries(rootPath) {
171
+ const entries = [];
172
+ const walk = (dir, prefix) => {
173
+ for (const name of readdirSync(dir).sort()) {
174
+ const relativePath = prefix === '' ? name : `${prefix}/${name}`;
175
+ const stats = lstatSync(join(dir, name));
176
+ if (stats.isDirectory()) {
177
+ entries.push(`${relativePath}/`);
178
+ walk(join(dir, name), relativePath);
179
+ } else if (stats.isFile()) {
180
+ entries.push(relativePath);
181
+ } else {
182
+ throw new Error(
183
+ `Peaks canonical store cannot read ${join(dir, name)}: not a file or directory`
184
+ );
185
+ }
186
+ }
187
+ };
188
+ walk(rootPath, '');
189
+ return entries;
190
+ }
191
+
192
+ /** True when `targetPath` already holds exactly the bytes `sourcePath` holds. */
193
+ function contentMatches(sourcePath, targetPath) {
194
+ const targetStats = getPathStats(targetPath);
195
+ if (!targetStats || targetStats.isSymbolicLink()) return false;
196
+ if (!targetStats.isDirectory()) {
197
+ return targetStats.isFile() && readFileSync(sourcePath).equals(readFileSync(targetPath));
198
+ }
199
+ const sourceEntries = listTreeEntries(sourcePath);
200
+ const targetEntries = listTreeEntries(targetPath);
201
+ if (sourceEntries.length !== targetEntries.length) return false;
202
+ for (let index = 0; index < sourceEntries.length; index += 1) {
203
+ if (sourceEntries[index] !== targetEntries[index]) return false;
204
+ if (sourceEntries[index].endsWith('/')) continue;
205
+ const from = join(sourcePath, sourceEntries[index]);
206
+ const to = join(targetPath, targetEntries[index]);
207
+ if (!readFileSync(from).equals(readFileSync(to))) return false;
208
+ }
209
+ return true;
210
+ }
211
+
212
+ /**
213
+ * Materialise `sourcePath` as a REAL COPY at `<kindRoot>/<name>`: idempotent by
214
+ * content, and REFUSING when the landing path is not ours — an existing entry with
215
+ * no marker beside it gets `action: 'unmanaged'` instead of the `rmSync` that used
216
+ * to run unconditionally (the `~/.peaks/agents/ecc` shape).
217
+ *
218
+ * @param {{ sourcePath: string, name: string, kind: string, root?: string }} options
219
+ */
220
+ export function ensureCanonicalCopy(options) {
221
+ const { sourcePath, name, kind } = options;
222
+ assertAssetName(name, kind);
223
+ const kindRoot = resolveKindRoot(kind, options);
224
+ const canonicalPath = join(kindRoot, name);
225
+
226
+ if (getPathStats(canonicalPath) && !isManagedEntry(canonicalPath)) {
227
+ return { canonicalPath, action: 'unmanaged' };
228
+ }
229
+ if (contentMatches(sourcePath, canonicalPath)) {
230
+ if (readManagedTarget(canonicalPath) !== sourcePath) {
231
+ writeManagedMarker(canonicalPath, sourcePath);
232
+ }
233
+ return { canonicalPath, action: 'unchanged' };
234
+ }
235
+
236
+ mkdirSync(kindRoot, { recursive: true });
237
+ const tempPath = join(kindRoot, `${TEMP_PREFIX}${randomUUID()}`);
238
+ try {
239
+ cpSync(sourcePath, tempPath, { recursive: true });
240
+ rmSync(canonicalPath, { recursive: true, force: true });
241
+ renameSync(tempPath, canonicalPath);
242
+ } catch (error) {
243
+ rmSync(tempPath, { recursive: true, force: true });
244
+ throw error;
245
+ }
246
+ writeManagedMarker(canonicalPath, sourcePath);
247
+ return { canonicalPath, action: 'installed' };
248
+ }
249
+
250
+ /**
251
+ * Is `linkPath` a link peaks-loop may replace? A link we own carries our sidecar
252
+ * whose recorded path really is what the link resolves to; a DANGLING one counts.
253
+ */
254
+ function isOurLink(linkPath, stats) {
255
+ if (!stats.isSymbolicLink()) return false;
256
+ if (!existsSync(linkPath)) return true;
257
+ const recorded = readManagedTarget(linkPath);
258
+ return recorded !== null && linkResolvesTo(linkPath, recorded);
259
+ }
260
+
261
+ /**
262
+ * Point an IDE entry at the canonical copy, copying and repairing as needed. Only a
263
+ * link peaks-loop owns is ever replaced; a real directory the user authored is left
264
+ * alone and reported `skipped`. An `unmanaged` copy is never linked TO either.
265
+ *
266
+ * @param {{ sourcePath: string, name: string, kind: string, linkPath?: string, root?: string }} options
267
+ */
268
+ export function reconcileCanonicalEntry(options) {
269
+ const { linkPath } = options;
270
+ const copied = ensureCanonicalCopy(options);
271
+ if (copied.action === 'unmanaged') return { ...copied, linkAction: 'skipped' };
272
+ if (typeof linkPath !== 'string' || linkPath.length === 0) {
273
+ return { ...copied, linkAction: 'skipped' };
274
+ }
275
+ if (linkResolvesTo(linkPath, copied.canonicalPath)) {
276
+ return { ...copied, linkAction: 'unchanged' };
277
+ }
278
+
279
+ let linkAction = 'linked';
280
+ const current = getPathStats(linkPath);
281
+ if (current) {
282
+ if (!isOurLink(linkPath, current)) return { ...copied, linkAction: 'skipped' };
283
+ unlinkSync(linkPath);
284
+ const markerPath = `${linkPath}${MANAGED_MARKER_SUFFIX}`;
285
+ if (existsSync(markerPath)) unlinkSync(markerPath);
286
+ linkAction = 'repaired';
287
+ }
288
+
289
+ mkdirSync(dirname(linkPath), { recursive: true });
290
+ const linkType = lstatSync(copied.canonicalPath).isDirectory()
291
+ ? process.platform === 'win32'
292
+ ? 'junction'
293
+ : 'dir'
294
+ : 'file';
295
+ symlinkSync(copied.canonicalPath, linkPath, linkType);
296
+ writeManagedMarker(linkPath, copied.canonicalPath);
297
+ return { ...copied, linkAction };
298
+ }