peaks-loop 4.0.0-beta.9 → 4.0.3

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 (552) hide show
  1. package/CHANGELOG.md +572 -234
  2. package/README-en.md +67 -30
  3. package/README.md +67 -30
  4. package/agents/karpathy-reviewer.md +33 -0
  5. package/bin/peaks.js +0 -0
  6. package/dist/cli/cli-helpers.d.ts +31 -6
  7. package/dist/cli/cli-helpers.js +48 -25
  8. package/dist/cli/commands/_register.d.ts +3 -0
  9. package/dist/cli/commands/_register.js +139 -0
  10. package/dist/cli/commands/_super.d.ts +10 -0
  11. package/dist/cli/commands/_super.js +97 -0
  12. package/dist/cli/commands/adapter-commands-s2a.js +1 -1
  13. package/dist/cli/commands/asset-commands.js +33 -16
  14. package/dist/cli/commands/audit-commands.js +2 -2
  15. package/dist/cli/commands/autonomous-swarm-commands.d.ts +12 -0
  16. package/dist/cli/commands/autonomous-swarm-commands.js +120 -0
  17. package/dist/cli/commands/bee-commands.js +1 -1
  18. package/dist/cli/commands/capability-commands.js +1 -1
  19. package/dist/cli/commands/capability-worker-config-sc-commands.js +0 -2
  20. package/dist/cli/commands/changeset-commands.d.ts +13 -0
  21. package/dist/cli/commands/changeset-commands.js +46 -0
  22. package/dist/cli/commands/code-commands.d.ts +11 -1
  23. package/dist/cli/commands/code-commands.js +19 -699
  24. package/dist/cli/commands/code-job-shape-commands.d.ts +9 -0
  25. package/dist/cli/commands/code-job-shape-commands.js +164 -0
  26. package/dist/cli/commands/code-mode-gate-commands.d.ts +9 -0
  27. package/dist/cli/commands/code-mode-gate-commands.js +223 -0
  28. package/dist/cli/commands/code-review-commands.js +2 -2
  29. package/dist/cli/commands/code-run-command.d.ts +12 -0
  30. package/dist/cli/commands/code-run-command.js +68 -0
  31. package/dist/cli/commands/code-runtime-commands.d.ts +11 -0
  32. package/dist/cli/commands/code-runtime-commands.js +391 -0
  33. package/dist/cli/commands/codegraph-commands.js +1 -1
  34. package/dist/cli/commands/compact-command.js +53 -1
  35. package/dist/cli/commands/complexity-commands.js +1 -1
  36. package/dist/cli/commands/config-commands.js +4 -75
  37. package/dist/cli/commands/container-commands.d.ts +28 -0
  38. package/dist/cli/commands/container-commands.js +221 -0
  39. package/dist/cli/commands/context-commands.js +3 -2
  40. package/dist/cli/commands/core/artifacts-command.js +1 -1
  41. package/dist/cli/commands/core/binding-commands.js +1 -1
  42. package/dist/cli/commands/core/doctor-command.js +63 -3
  43. package/dist/cli/commands/core/memory-command.js +1 -1
  44. package/dist/cli/commands/core/profile-command.js +1 -1
  45. package/dist/cli/commands/core/proxy-command.js +1 -1
  46. package/dist/cli/commands/core/session-command.js +9 -7
  47. package/dist/cli/commands/core/skill-command.js +7 -4
  48. package/dist/cli/commands/core/standards-command.js +1 -1
  49. package/dist/cli/commands/cron-commands.d.ts +57 -0
  50. package/dist/cli/commands/cron-commands.js +257 -0
  51. package/dist/cli/commands/cron-scheduler-commands.d.ts +47 -0
  52. package/dist/cli/commands/cron-scheduler-commands.js +284 -0
  53. package/dist/cli/commands/dashboard-commands.d.ts +4 -0
  54. package/dist/cli/commands/dashboard-commands.js +10 -0
  55. package/dist/cli/commands/dashboard-long-run.d.ts +25 -0
  56. package/dist/cli/commands/dashboard-long-run.js +122 -0
  57. package/dist/cli/commands/dashboard-summary.d.ts +12 -0
  58. package/dist/cli/commands/dashboard-summary.js +58 -0
  59. package/dist/cli/commands/dispatch-commands.d.ts +0 -7
  60. package/dist/cli/commands/dispatch-commands.js +372 -8
  61. package/dist/cli/commands/dispatch-from-dag.js +4 -1
  62. package/dist/cli/commands/doc-commands.js +1 -1
  63. package/dist/cli/commands/ecc-commands.d.ts +30 -0
  64. package/dist/cli/commands/ecc-commands.js +119 -0
  65. package/dist/cli/commands/evolution-commands.js +1 -1
  66. package/dist/cli/commands/feedback-commands.js +1 -1
  67. package/dist/cli/commands/final-review-commands.js +1 -1
  68. package/dist/cli/commands/fixture-commands.js +1 -1
  69. package/dist/cli/commands/fork-commands.js +1 -1
  70. package/dist/cli/commands/gate-commands.js +128 -6
  71. package/dist/cli/commands/governance-classify-contract-commands.d.ts +21 -0
  72. package/dist/cli/commands/governance-classify-contract-commands.js +273 -0
  73. package/dist/cli/commands/heartbeat-commands.js +76 -5
  74. package/dist/cli/commands/heartbeat-watch-command.d.ts +31 -0
  75. package/dist/cli/commands/heartbeat-watch-command.js +146 -0
  76. package/dist/cli/commands/hook-handle.js +1 -1
  77. package/dist/cli/commands/hooks-commands.js +126 -10
  78. package/dist/cli/commands/ide-commands.js +1 -1
  79. package/dist/cli/commands/impact-commands.js +1 -1
  80. package/dist/cli/commands/job-commands.js +34 -1
  81. package/dist/cli/commands/lease-metrics-commands.d.ts +67 -0
  82. package/dist/cli/commands/lease-metrics-commands.js +231 -0
  83. package/dist/cli/commands/lease-stats-commands.d.ts +65 -0
  84. package/dist/cli/commands/lease-stats-commands.js +107 -0
  85. package/dist/cli/commands/legacy-commands.js +1 -1
  86. package/dist/cli/commands/log-commands.js +1 -1
  87. package/dist/cli/commands/loop-commands.js +1 -1
  88. package/dist/cli/commands/loop-eval-commands.js +1 -1
  89. package/dist/cli/commands/memory-commands.js +1 -1
  90. package/dist/cli/commands/migrate-1-4-1-command.js +1 -1
  91. package/dist/cli/commands/migrate-v2-10-to-v2-11-command.js +1 -1
  92. package/dist/cli/commands/mut-commands.d.ts +1 -1
  93. package/dist/cli/commands/mut-commands.js +1 -5
  94. package/dist/cli/commands/observability-commands.js +1 -1
  95. package/dist/cli/commands/openspec-commands.js +65 -4
  96. package/dist/cli/commands/perf-audit-commands.js +3 -3
  97. package/dist/cli/commands/perf-commands.js +1 -1
  98. package/dist/cli/commands/polyrepo-commands.js +1 -1
  99. package/dist/cli/commands/prd-blocks-commands.js +1 -1
  100. package/dist/cli/commands/prd-commands.js +4 -2
  101. package/dist/cli/commands/preferences-commands.js +23 -3
  102. package/dist/cli/commands/project-commands.js +1 -1
  103. package/dist/cli/commands/qa-business-review-commands.js +1 -1
  104. package/dist/cli/commands/qa-commands.d.ts +1 -1
  105. package/dist/cli/commands/qa-commands.js +39 -3
  106. package/dist/cli/commands/release-commands.d.ts +15 -0
  107. package/dist/cli/commands/release-commands.js +113 -21
  108. package/dist/cli/commands/request-commands.js +1 -1
  109. package/dist/cli/commands/retrospective-commands.js +1 -1
  110. package/dist/cli/commands/reviewer-commands.js +1 -1
  111. package/dist/cli/commands/role-commands.js +1 -1
  112. package/dist/cli/commands/runtime-commands-helpers.d.ts +7 -0
  113. package/dist/cli/commands/runtime-commands-helpers.js +24 -0
  114. package/dist/cli/commands/runtime-commands.js +1 -2
  115. package/dist/cli/commands/sc-commands.js +4 -2
  116. package/dist/cli/commands/scan-commands.js +1 -1
  117. package/dist/cli/commands/security-audit-commands.js +3 -3
  118. package/dist/cli/commands/sediment-commands.js +10 -1
  119. package/dist/cli/commands/session-24h-mode.d.ts +26 -0
  120. package/dist/cli/commands/session-24h-mode.js +196 -0
  121. package/dist/cli/commands/share-commands.d.ts +19 -0
  122. package/dist/cli/commands/share-commands.js +121 -2
  123. package/dist/cli/commands/skill-conformance-commands.js +1 -1
  124. package/dist/cli/commands/skill-loop-engineering-readiness-commands.js +1 -1
  125. package/dist/cli/commands/skill-search-commands.js +4 -1
  126. package/dist/cli/commands/slice-commands.js +1 -1
  127. package/dist/cli/commands/slice-integrate-commands.js +1 -1
  128. package/dist/cli/commands/slice-review-commands.js +1 -1
  129. package/dist/cli/commands/smoke-commands.js +1 -1
  130. package/dist/cli/commands/sop-commands.js +1 -1
  131. package/dist/cli/commands/spill-demo-command.d.ts +7 -0
  132. package/dist/cli/commands/spill-demo-command.js +29 -0
  133. package/dist/cli/commands/statusline-commands.d.ts +12 -0
  134. package/dist/cli/commands/statusline-commands.js +79 -17
  135. package/dist/cli/commands/sub-agent-commands.js +2 -1
  136. package/dist/cli/commands/sub-agent-shared.d.ts +10 -0
  137. package/dist/cli/commands/sub-agent-shared.js +24 -1
  138. package/dist/cli/commands/swarm-commands.d.ts +13 -0
  139. package/dist/cli/commands/swarm-commands.js +77 -0
  140. package/dist/cli/commands/tech-commands.d.ts +64 -0
  141. package/dist/cli/commands/tech-commands.js +195 -0
  142. package/dist/cli/commands/understand-commands.js +1 -1
  143. package/dist/cli/commands/upgrade-commands.d.ts +2 -0
  144. package/dist/cli/commands/upgrade-commands.js +40 -5
  145. package/dist/cli/commands/user-touchpoint-commands.js +1 -1
  146. package/dist/cli/commands/verdict-aggregate-command.js +1 -1
  147. package/dist/cli/commands/vm-commands.d.ts +31 -0
  148. package/dist/cli/commands/vm-commands.js +274 -0
  149. package/dist/cli/commands/workflow-commands.js +24 -1
  150. package/dist/cli/commands/workflow-plan-commands.js +1 -1
  151. package/dist/cli/commands/workspace/init-command.js +1 -1
  152. package/dist/cli/commands/workspace/migrate-command.js +1 -1
  153. package/dist/cli/commands/workspace/reconcile-command.js +1 -1
  154. package/dist/cli/commands/worktree-auth-commands.d.ts +29 -0
  155. package/dist/cli/commands/worktree-auth-commands.js +652 -0
  156. package/dist/cli/index.js +58 -13
  157. package/dist/cli/program.d.ts +2 -2
  158. package/dist/cli/program.js +86 -281
  159. package/dist/services/24h-mode/decider.d.ts +103 -0
  160. package/dist/services/24h-mode/decider.js +144 -0
  161. package/dist/services/24h-mode/index.d.ts +12 -0
  162. package/dist/services/24h-mode/index.js +12 -0
  163. package/dist/services/24h-mode/state.d.ts +48 -0
  164. package/dist/services/24h-mode/state.js +51 -0
  165. package/dist/services/24h-mode/store.d.ts +27 -0
  166. package/dist/services/24h-mode/store.js +119 -0
  167. package/dist/services/artifacts/artifact-prerequisites.js +1 -1
  168. package/dist/services/artifacts/request-artifact-service.js +1 -1
  169. package/dist/services/artifacts/workspace-service.js +1 -1
  170. package/dist/services/audit/enforcers/lint-bee-runtime-contract.d.ts +25 -0
  171. package/dist/services/audit/enforcers/lint-bee-runtime-contract.js +91 -0
  172. package/dist/services/audit/enforcers/lint-peaks-code-runtime.d.ts +16 -0
  173. package/dist/services/audit/enforcers/lint-peaks-code-runtime.js +31 -0
  174. package/dist/services/audit/enforcers/lint-peaks-skill-runtime.d.ts +23 -0
  175. package/dist/services/audit/enforcers/lint-peaks-skill-runtime.js +59 -0
  176. package/dist/services/audit/enforcers/lint-peaks-ui-sc-txt-runtime.d.ts +28 -0
  177. package/dist/services/audit/enforcers/lint-peaks-ui-sc-txt-runtime.js +86 -0
  178. package/dist/services/audit/enforcers/lint-prd-artifact-handoff.d.ts +16 -0
  179. package/dist/services/audit/enforcers/lint-prd-artifact-handoff.js +41 -0
  180. package/dist/services/audit/enforcers/lint-prd-source-snapshot.d.ts +27 -0
  181. package/dist/services/audit/enforcers/lint-prd-source-snapshot.js +47 -0
  182. package/dist/services/audit/enforcers/lint-qa-gateguard-and-runtime.d.ts +19 -0
  183. package/dist/services/audit/enforcers/lint-qa-gateguard-and-runtime.js +47 -0
  184. package/dist/services/audit/enforcers/lint-rd-handoff-coverage.d.ts +18 -0
  185. package/dist/services/audit/enforcers/lint-rd-handoff-coverage.js +70 -0
  186. package/dist/services/audit/enforcers/lint-skill-presence-mandatory.d.ts +25 -0
  187. package/dist/services/audit/enforcers/lint-skill-presence-mandatory.js +53 -0
  188. package/dist/services/audit/red-line-catalog-p2-a.d.ts +0 -6
  189. package/dist/services/audit/red-line-catalog-p2-a.js +230 -1
  190. package/dist/services/audit/static-service.d.ts +32 -25
  191. package/dist/services/audit/static-service.js +30 -109
  192. package/dist/services/audit-independent/index.d.ts +2 -0
  193. package/dist/services/audit-independent/index.js +2 -0
  194. package/dist/services/autonomous-swarm/autonomous-swarm-service.d.ts +127 -0
  195. package/dist/services/autonomous-swarm/autonomous-swarm-service.js +446 -0
  196. package/dist/services/changeset/changeset-check-service.d.ts +22 -0
  197. package/dist/services/changeset/changeset-check-service.js +47 -0
  198. package/dist/services/code/auto-compact-modes.d.ts +30 -0
  199. package/dist/services/code/auto-compact-modes.js +38 -0
  200. package/dist/services/code/auto-compact-orchestrator.d.ts +43 -5
  201. package/dist/services/code/auto-compact-orchestrator.js +101 -21
  202. package/dist/services/code/dag-orchestrator.d.ts +30 -1
  203. package/dist/services/code/dag-orchestrator.js +106 -1
  204. package/dist/services/code/status-line-renderer.d.ts +2 -0
  205. package/dist/services/code/status-line-renderer.js +21 -3
  206. package/dist/services/code-review/ocr-service.d.ts +1 -1
  207. package/dist/services/code-review/ocr-service.js +6 -3
  208. package/dist/services/compact-history/compact-history-service.d.ts +41 -0
  209. package/dist/services/compact-history/compact-history-service.js +62 -0
  210. package/dist/services/compact-statusline/compact-statusline-service.d.ts +16 -0
  211. package/dist/services/compact-statusline/compact-statusline-service.js +83 -0
  212. package/dist/services/config/config-service.d.ts +1 -12
  213. package/dist/services/config/config-service.js +3 -72
  214. package/dist/services/config/config-types.d.ts +2 -4
  215. package/dist/services/config/config-types.js +1 -1
  216. package/dist/services/container/container-lease.d.ts +67 -0
  217. package/dist/services/container/container-lease.js +135 -0
  218. package/dist/services/context/auto-compact-dispatcher.d.ts +40 -5
  219. package/dist/services/context/auto-compact-dispatcher.js +32 -102
  220. package/dist/services/context/auto-compact-reader.js +1 -1
  221. package/dist/services/context/auto-compact-types.d.ts +27 -2
  222. package/dist/services/context/auto-compact-types.js +8 -1
  223. package/dist/services/context/build-dispatch-system-prompt.d.ts +75 -0
  224. package/dist/services/context/build-dispatch-system-prompt.js +117 -0
  225. package/dist/services/context/collector.d.ts +2 -2
  226. package/dist/services/context/context-builder.d.ts +4 -4
  227. package/dist/services/context/context-schema.d.ts +48 -48
  228. package/dist/services/context/ide-detect.d.ts +4 -0
  229. package/dist/services/context/ide-detect.js +24 -0
  230. package/dist/services/context/main-session-monitor.d.ts +1 -4
  231. package/dist/services/context/main-session-monitor.js +1 -24
  232. package/dist/services/context/memory-index-reader.d.ts +8 -0
  233. package/dist/services/context/memory-index-reader.js +57 -0
  234. package/dist/services/context/memory-lru-cache.d.ts +12 -0
  235. package/dist/services/context/memory-lru-cache.js +60 -0
  236. package/dist/services/context/memory-preflight-config.d.ts +19 -0
  237. package/dist/services/context/memory-preflight-config.js +25 -0
  238. package/dist/services/context/memory-preflight-service.d.ts +19 -0
  239. package/dist/services/context/memory-preflight-service.js +120 -0
  240. package/dist/services/context/spillover-store.d.ts +23 -0
  241. package/dist/services/context/spillover-store.js +155 -0
  242. package/dist/services/context/spillover-types.d.ts +18 -0
  243. package/dist/services/context/spillover-types.js +1 -0
  244. package/dist/services/crystallization/crystallization-service.d.ts +22 -5
  245. package/dist/services/crystallization/crystallization-service.js +8 -14
  246. package/dist/services/crystallization/crystallization-types.d.ts +6 -6
  247. package/dist/services/crystallization/evidence-brief-builder.d.ts +1 -1
  248. package/dist/services/crystallization/index.d.ts +13 -0
  249. package/dist/services/crystallization/index.js +13 -0
  250. package/dist/services/dashboard/project-dashboard-service.js +2 -2
  251. package/dist/services/dispatch/await-batch.d.ts +70 -0
  252. package/dist/services/dispatch/await-batch.js +272 -0
  253. package/dist/services/dispatch/batch-counter.js +1 -1
  254. package/dist/services/dispatch/dispatch-record-writer.d.ts +126 -4
  255. package/dist/services/dispatch/dispatch-record-writer.js +239 -9
  256. package/dist/services/dispatch/slice-dag.d.ts +46 -0
  257. package/dist/services/dispatch/slice-dag.js +6 -0
  258. package/dist/services/dispatch/stage-enum.d.ts +27 -0
  259. package/dist/services/dispatch/stage-enum.js +48 -0
  260. package/dist/services/dispatch/startup-timeout.d.ts +86 -0
  261. package/dist/services/dispatch/startup-timeout.js +97 -0
  262. package/dist/services/dispatch/sub-agent-dispatcher.js +40 -89
  263. package/dist/services/dispatch/test-tool-detection.d.ts +25 -1
  264. package/dist/services/dispatch/test-tool-detection.js +80 -0
  265. package/dist/services/doctor/doctor-service/checks/check-id-schema.d.ts +18 -0
  266. package/dist/services/doctor/doctor-service/checks/check-id-schema.js +64 -0
  267. package/dist/services/doctor/doctor-service/checks/codegraph-capability.d.ts +14 -0
  268. package/dist/services/doctor/doctor-service/checks/codegraph-capability.js +69 -0
  269. package/dist/services/doctor/doctor-service/checks/dist-source-version.d.ts +32 -0
  270. package/dist/services/doctor/doctor-service/checks/dist-source-version.js +110 -0
  271. package/dist/services/doctor/doctor-service/checks/gateguard-conflict.d.ts +24 -0
  272. package/dist/services/doctor/doctor-service/checks/gateguard-conflict.js +164 -0
  273. package/dist/services/doctor/doctor-service/checks/l3-memory-health.d.ts +16 -0
  274. package/dist/services/doctor/doctor-service/checks/l3-memory-health.js +57 -0
  275. package/dist/services/doctor/doctor-service/checks/l3-orphan-sessions.d.ts +19 -0
  276. package/dist/services/doctor/doctor-service/checks/l3-orphan-sessions.js +66 -0
  277. package/dist/services/doctor/doctor-service/checks/schema-validity.d.ts +10 -0
  278. package/dist/services/doctor/doctor-service/checks/schema-validity.js +33 -0
  279. package/dist/services/doctor/doctor-service/checks/skill-apply-note.d.ts +20 -0
  280. package/dist/services/doctor/doctor-service/checks/skill-apply-note.js +85 -0
  281. package/dist/services/doctor/doctor-service/checks/skill-existence.d.ts +13 -0
  282. package/dist/services/doctor/doctor-service/checks/skill-existence.js +30 -0
  283. package/dist/services/doctor/doctor-service/checks/skill-name-match.d.ts +10 -0
  284. package/dist/services/doctor/doctor-service/checks/skill-name-match.js +25 -0
  285. package/dist/services/doctor/doctor-service/checks/skill-parse.d.ts +10 -0
  286. package/dist/services/doctor/doctor-service/checks/skill-parse.js +19 -0
  287. package/dist/services/doctor/doctor-service/checks/skill-presence.d.ts +21 -0
  288. package/dist/services/doctor/doctor-service/checks/skill-presence.js +75 -0
  289. package/dist/services/doctor/doctor-service/checks/skill-runbook.d.ts +14 -0
  290. package/dist/services/doctor/doctor-service/checks/skill-runbook.js +47 -0
  291. package/dist/services/doctor/doctor-service/checks/statusline-install.d.ts +14 -0
  292. package/dist/services/doctor/doctor-service/checks/statusline-install.js +32 -0
  293. package/dist/services/doctor/doctor-service/checks/statusline-runtime.d.ts +13 -0
  294. package/dist/services/doctor/doctor-service/checks/statusline-runtime.js +30 -0
  295. package/dist/services/doctor/doctor-service/checks/user-config.d.ts +11 -0
  296. package/dist/services/doctor/doctor-service/checks/user-config.js +27 -0
  297. package/dist/services/doctor/doctor-service/checks/workspace-init.d.ts +16 -0
  298. package/dist/services/doctor/doctor-service/checks/workspace-init.js +34 -0
  299. package/dist/services/doctor/doctor-service/checks/workspace-layout.d.ts +33 -0
  300. package/dist/services/doctor/doctor-service/checks/workspace-layout.js +180 -0
  301. package/dist/services/doctor/doctor-service/index.d.ts +48 -0
  302. package/dist/services/doctor/doctor-service/index.js +254 -0
  303. package/dist/services/doctor/doctor-service/plugin-registry.d.ts +41 -0
  304. package/dist/services/doctor/doctor-service/plugin-registry.js +77 -0
  305. package/dist/services/doctor/doctor-service/report/final-summary.d.ts +20 -0
  306. package/dist/services/doctor/doctor-service/report/final-summary.js +29 -0
  307. package/dist/services/doctor/doctor-service/types.d.ts +245 -0
  308. package/dist/services/doctor/doctor-service/types.js +15 -0
  309. package/dist/services/doctor/doctor-service.d.ts +15 -146
  310. package/dist/services/doctor/doctor-service.js +22 -926
  311. package/dist/services/doctor/index.d.ts +22 -0
  312. package/dist/services/doctor/index.js +22 -0
  313. package/dist/services/env/shell-probe.d.ts +71 -0
  314. package/dist/services/env/shell-probe.js +161 -0
  315. package/dist/services/evolution/evolution-types.d.ts +39 -39
  316. package/dist/services/final-review/final-review-service.d.ts +11 -1
  317. package/dist/services/final-review/index.d.ts +2 -0
  318. package/dist/services/final-review/index.js +1 -0
  319. package/dist/services/hooks/auto-compact-hook-install.d.ts +4 -5
  320. package/dist/services/hooks/auto-compact-hook-install.js +4 -5
  321. package/dist/services/hooks/worktree-authorization-gate.d.ts +205 -0
  322. package/dist/services/hooks/worktree-authorization-gate.js +492 -0
  323. package/dist/services/ide/adapters/claude-code-adapter.js +2 -2
  324. package/dist/services/ide/adapters/qoder-adapter.d.ts +25 -0
  325. package/dist/services/ide/adapters/qoder-adapter.js +57 -0
  326. package/dist/services/ide/adapters/tongyi-lingma-adapter.d.ts +16 -0
  327. package/dist/services/ide/adapters/tongyi-lingma-adapter.js +45 -0
  328. package/dist/services/ide/ide-registry.js +6 -0
  329. package/dist/services/ide/ide-types.d.ts +1 -1
  330. package/dist/services/job/job-types.d.ts +56 -56
  331. package/dist/services/job-snapshot/index.d.ts +8 -0
  332. package/dist/services/job-snapshot/index.js +7 -0
  333. package/dist/services/{job/job-resource-snapshot.d.ts → job-snapshot/snapshot.d.ts} +1 -1
  334. package/dist/services/job-snapshot/types.d.ts +7 -0
  335. package/dist/services/job-snapshot/types.js +1 -0
  336. package/dist/services/karpathy-cost/karpathy-cost-check-service.d.ts +67 -0
  337. package/dist/services/karpathy-cost/karpathy-cost-check-service.js +108 -0
  338. package/dist/services/log/retention.d.ts +16 -0
  339. package/dist/services/log/retention.js +17 -0
  340. package/dist/services/loop/loop-bee-relation-types.d.ts +6 -6
  341. package/dist/services/loop/loop-release-types.d.ts +24 -24
  342. package/dist/services/loop/monotonic-runner.d.ts +17 -11
  343. package/dist/services/loop/monotonic-runner.js +118 -79
  344. package/dist/services/memory/project-memory-service/index/kind-dispatch.d.ts +8 -0
  345. package/dist/services/memory/project-memory-service/index/kind-dispatch.js +253 -0
  346. package/dist/services/memory/project-memory-service/index/ranking.d.ts +6 -0
  347. package/dist/services/memory/project-memory-service/index/ranking.js +171 -0
  348. package/dist/services/memory/project-memory-service/index/search.d.ts +34 -0
  349. package/dist/services/memory/project-memory-service/index/search.js +194 -0
  350. package/dist/services/memory/project-memory-service/index.d.ts +9 -0
  351. package/dist/services/memory/project-memory-service/index.js +24 -0
  352. package/dist/services/memory/project-memory-service/parsers/frontmatter.d.ts +9 -0
  353. package/dist/services/memory/project-memory-service/parsers/frontmatter.js +106 -0
  354. package/dist/services/memory/project-memory-service/parsers/markdown-pure.d.ts +7 -0
  355. package/dist/services/memory/project-memory-service/parsers/markdown-pure.js +96 -0
  356. package/dist/services/memory/project-memory-service/store/atomic-write.d.ts +5 -0
  357. package/dist/services/memory/project-memory-service/store/atomic-write.js +56 -0
  358. package/dist/services/memory/project-memory-service/store/paths.d.ts +8 -0
  359. package/dist/services/memory/project-memory-service/store/paths.js +116 -0
  360. package/dist/services/memory/project-memory-service/types.d.ts +128 -0
  361. package/dist/services/memory/project-memory-service/types.js +9 -0
  362. package/dist/services/memory/project-memory-service.d.ts +1 -167
  363. package/dist/services/memory/project-memory-service.js +19 -816
  364. package/dist/services/migrate-skill-name/schema.d.ts +2 -2
  365. package/dist/services/observability/aggregation.d.ts +27 -0
  366. package/dist/services/observability/aggregation.js +72 -0
  367. package/dist/services/observability/observability-service.d.ts +73 -7
  368. package/dist/services/observability/observability-service.js +87 -1
  369. package/dist/services/openspec/artifact-boundary.d.ts +138 -0
  370. package/dist/services/openspec/artifact-boundary.js +150 -0
  371. package/dist/services/openspec/coverage-evidence-reader.d.ts +191 -0
  372. package/dist/services/openspec/coverage-evidence-reader.js +386 -0
  373. package/dist/services/openspec/openspec-archive-service.d.ts +70 -0
  374. package/dist/services/openspec/openspec-archive-service.js +320 -8
  375. package/dist/services/openspec/openspec-bridge-service.js +1 -1
  376. package/dist/services/openspec/openspec-init-service.js +1 -1
  377. package/dist/services/openspec/openspec-propose-from-doctor-service.js +1 -1
  378. package/dist/services/openspec/openspec-render-service.js +7 -4
  379. package/dist/services/openspec/openspec-scan-service.js +1 -1
  380. package/dist/services/openspec/openspec-validate-service.js +5 -4
  381. package/dist/services/preferences/preferences-service.js +10 -0
  382. package/dist/services/preferences/preferences-types.d.ts +13 -0
  383. package/dist/services/preferences/preferences-types.js +11 -0
  384. package/dist/services/qa/screenshot-archive-service.d.ts +51 -0
  385. package/dist/services/qa/screenshot-archive-service.js +134 -0
  386. package/dist/services/rd/rd-service.js +10 -11
  387. package/dist/services/rd/types.d.ts +32 -32
  388. package/dist/services/rd-swarm/rd-swarm-service.d.ts +60 -0
  389. package/dist/services/rd-swarm/rd-swarm-service.js +93 -0
  390. package/dist/services/recommendations/capability-seed-items.js +0 -1
  391. package/dist/services/recommendations/capability-seed-mappings.js +0 -1
  392. package/dist/services/recommendations/capability-seed-sources.js +0 -1
  393. package/dist/services/release/version-precheck-service.d.ts +51 -0
  394. package/dist/services/release/version-precheck-service.js +257 -0
  395. package/dist/services/scan/acceptance-coverage-service.js +1 -1
  396. package/dist/services/scan/archetype-service.js +1 -1
  397. package/dist/services/scan/existing-system-service.js +1 -1
  398. package/dist/services/scan/libraries-service.js +1 -1
  399. package/dist/services/sediment/json-schema.d.ts +40 -40
  400. package/dist/services/share/bundle-types.d.ts +12 -12
  401. package/dist/services/share/run-state-contract.d.ts +2 -2
  402. package/dist/services/skill/skill-search-service.d.ts +12 -7
  403. package/dist/services/skill/skill-search-service.js +8 -4
  404. package/dist/services/skillhub/migrations/001-initial.sql +71 -0
  405. package/dist/services/skillhub/migrations/002-loop-release.sql +32 -0
  406. package/dist/services/skillhub/migrations/003-loop-bee-relation.sql +35 -0
  407. package/dist/services/skillhub/migrations/004-loop-bee-extension.sql +65 -0
  408. package/dist/services/skillhub/migrations/005-evolution-evaluation.sql +81 -0
  409. package/dist/services/skillhub/migrations/006-crystallization-event.sql +92 -0
  410. package/dist/services/skills/hooks-settings-service.d.ts +75 -0
  411. package/dist/services/skills/hooks-settings-service.js +230 -2
  412. package/dist/services/skills/skill-registry.d.ts +1 -0
  413. package/dist/services/skills/skill-registry.js +6 -4
  414. package/dist/services/skills/skill-runbook-service.js +1 -1
  415. package/dist/services/slice/slice-check-service.js +1 -1
  416. package/dist/services/standards/main-session-monitor-ban-hook.d.ts +14 -0
  417. package/dist/services/standards/main-session-monitor-ban-hook.js +19 -0
  418. package/dist/services/standards/missing-standards-detector.d.ts +25 -0
  419. package/dist/services/standards/missing-standards-detector.js +43 -12
  420. package/dist/services/tech/tech-change-id-service.d.ts +82 -0
  421. package/dist/services/tech/tech-change-id-service.js +117 -0
  422. package/dist/services/understand/understand-hybrid-service.js +1 -1
  423. package/dist/services/understand/understand-scan-service.js +2 -2
  424. package/dist/services/upgrade/upgrade-service.js +4 -3
  425. package/dist/services/verdict/envelopes.d.ts +2 -2
  426. package/dist/services/verdict/envelopes.js +2 -2
  427. package/dist/services/verdict/verdict-aggregator.d.ts +3 -3
  428. package/dist/services/vm/vm-lease.d.ts +40 -0
  429. package/dist/services/vm/vm-lease.js +137 -0
  430. package/dist/services/workflow/autonomous-resume-writer.js +1 -1
  431. package/dist/services/workflow/pipeline-verify-gate-support.d.ts +47 -0
  432. package/dist/services/workflow/pipeline-verify-gate-support.js +194 -0
  433. package/dist/services/workflow/pipeline-verify-service.d.ts +17 -81
  434. package/dist/services/workflow/pipeline-verify-service.js +42 -218
  435. package/dist/services/workflow/pipeline-verify-types.d.ts +90 -0
  436. package/dist/services/workflow/pipeline-verify-types.js +10 -0
  437. package/dist/services/workflow/plan-reader.d.ts +1 -1
  438. package/dist/services/workflow/plan-reader.js +1 -1
  439. package/dist/services/workflow/plan-refresher.d.ts +1 -1
  440. package/dist/services/workflow/plan-refresher.js +1 -1
  441. package/dist/services/workflow/plan-trigger-detector.d.ts +1 -1
  442. package/dist/services/workflow/plan-trigger-detector.js +1 -1
  443. package/dist/services/workflow/workflow-autonomous-resume-helpers.d.ts +1 -1
  444. package/dist/services/workflow/workflow-autonomous-service.d.ts +2 -98
  445. package/dist/services/workflow/workflow-autonomous-types.d.ts +114 -0
  446. package/dist/services/workflow/workflow-autonomous-types.js +21 -0
  447. package/dist/services/workflow/workflow-router-service.js +18 -16
  448. package/dist/services/workflow/workflow-spec-lint.d.ts +13 -0
  449. package/dist/services/workflow/workflow-spec-lint.js +75 -0
  450. package/dist/services/workflow/workflow-spec-types.d.ts +100 -0
  451. package/dist/services/workflow/workflow-spec-types.js +13 -0
  452. package/dist/services/workflow/workflow-spec-yaml.d.ts +17 -0
  453. package/dist/services/workflow/workflow-spec-yaml.js +88 -0
  454. package/dist/services/workflow/workflow-spec.d.ts +11 -91
  455. package/dist/services/workflow/workflow-spec.js +16 -145
  456. package/dist/services/workspace/migrate-service.js +1 -1
  457. package/dist/services/workspace/workspace-service.js +1 -1
  458. package/dist/services/worktree/worktree-lease.d.ts +170 -0
  459. package/dist/services/worktree/worktree-lease.js +242 -0
  460. package/package.json +91 -51
  461. package/scripts/clean-dist.mjs +31 -1
  462. package/scripts/copy-templates.mjs +16 -0
  463. package/scripts/sync-version.mjs +53 -2
  464. package/skills/bee/peaks-perf-audit/SKILL.md +17 -0
  465. package/skills/bee/peaks-prd/SKILL.md +16 -0
  466. package/skills/bee/peaks-prd/test-prompts.json +12 -0
  467. package/skills/bee/peaks-qa/SKILL.md +16 -1
  468. package/skills/bee/peaks-qa/references/qa-sub-agent-dispatch.md +22 -0
  469. package/skills/bee/peaks-qa/test-prompts.json +12 -0
  470. package/skills/bee/peaks-rd/SKILL.md +29 -20
  471. package/skills/bee/peaks-rd/references/rd-sub-agent-dispatch.md +39 -0
  472. package/skills/bee/peaks-rd/test-prompts.json +12 -0
  473. package/skills/bee/peaks-reviewer/SKILL.md +17 -0
  474. package/skills/bee/peaks-sc/SKILL.md +16 -0
  475. package/skills/bee/peaks-security-audit/SKILL.md +17 -0
  476. package/skills/bee/peaks-txt/SKILL.md +16 -0
  477. package/skills/bee/peaks-txt/test-prompts.json +12 -0
  478. package/skills/bee/peaks-ui/SKILL.md +49 -43
  479. package/skills/bee/peaks-ui/test-prompts.json +12 -0
  480. package/skills/peaks-code/SKILL.md +54 -109
  481. package/skills/peaks-code/references/boundaries.md +15 -1
  482. package/skills/peaks-code/references/cron-scheduler-deployment.md +313 -0
  483. package/skills/peaks-code/references/external-skill-invocation.md +27 -0
  484. package/skills/peaks-code/references/lease-dashboard.html +224 -0
  485. package/skills/peaks-code/references/lease-stats.sample.json +26 -0
  486. package/skills/peaks-code/references/peaks-worktree-l2-enforcers.md +208 -0
  487. package/skills/peaks-code/references/periodic-checkpoint.md +4 -4
  488. package/skills/peaks-code/references/runbook.md +63 -1
  489. package/skills/peaks-code/references/startup-sequence.md +110 -0
  490. package/skills/peaks-code/references/step-0-8-gate.md +1 -1
  491. package/skills/peaks-code/references/sub-agent-dispatch.md +92 -1
  492. package/skills/peaks-code/references/worktree-governance.md +123 -0
  493. package/skills/peaks-code/test-prompts.json +12 -0
  494. package/skills/peaks-doctor/SKILL.md +1 -1
  495. package/skills/peaks-ide/SKILL.md +1 -1
  496. package/skills/peaks-solo/SKILL.md +21 -0
  497. package/skills/peaks-solo/references/triage-decision-table.md +6 -0
  498. package/skills/peaks-sop/test-prompts.json +17 -0
  499. package/dist/cli/commands/agent-commands.d.ts +0 -20
  500. package/dist/cli/commands/agent-commands.js +0 -48
  501. package/dist/cli/commands/classify-classify-commands.d.ts +0 -19
  502. package/dist/cli/commands/classify-classify-commands.js +0 -151
  503. package/dist/cli/commands/contract-commands.d.ts +0 -26
  504. package/dist/cli/commands/contract-commands.js +0 -114
  505. package/dist/cli/commands/session-auto-compact-hook-command.d.ts +0 -37
  506. package/dist/cli/commands/session-auto-compact-hook-command.js +0 -127
  507. package/dist/cli/commands/worker-commands.d.ts +0 -3
  508. package/dist/cli/commands/worker-commands.js +0 -52
  509. package/dist/services/agent/ecc-agent-service.d.ts +0 -47
  510. package/dist/services/agent/ecc-agent-service.js +0 -143
  511. package/dist/services/config/provider-service.d.ts +0 -48
  512. package/dist/services/config/provider-service.js +0 -143
  513. package/dist/services/context/dispatch-context-guard.d.ts +0 -27
  514. package/dist/services/context/dispatch-context-guard.js +0 -192
  515. package/dist/services/context/shared-channel.d.ts +0 -93
  516. package/dist/services/context/shared-channel.js +0 -308
  517. package/dist/services/filesystem/file-lock.d.ts +0 -11
  518. package/dist/services/filesystem/file-lock.js +0 -152
  519. package/dist/services/mut/assert-scanner.d.ts +0 -6
  520. package/dist/services/mut/assert-scanner.js +0 -116
  521. package/dist/services/mut/index.d.ts +0 -8
  522. package/dist/services/mut/index.js +0 -7
  523. package/dist/services/mut/mut-runner.d.ts +0 -39
  524. package/dist/services/mut/mut-runner.js +0 -29
  525. package/dist/services/mut/production-stryker.d.ts +0 -2
  526. package/dist/services/mut/production-stryker.js +0 -75
  527. package/dist/services/mut/report-builder.d.ts +0 -11
  528. package/dist/services/mut/report-builder.js +0 -110
  529. package/dist/services/mut/report-loader.d.ts +0 -31
  530. package/dist/services/mut/report-loader.js +0 -78
  531. package/dist/services/mut/thresholds.d.ts +0 -21
  532. package/dist/services/mut/thresholds.js +0 -22
  533. package/dist/services/mut/types.d.ts +0 -336
  534. package/dist/services/mut/types.js +0 -59
  535. package/dist/services/providers/minimax-provider-service.d.ts +0 -24
  536. package/dist/services/providers/minimax-provider-service.js +0 -143
  537. package/dist/services/providers/minimax-worker-service.d.ts +0 -21
  538. package/dist/services/providers/minimax-worker-service.js +0 -83
  539. package/dist/shared/fs.d.ts +0 -4
  540. package/dist/shared/fs.js +0 -26
  541. package/dist/shared/paths.d.ts +0 -6
  542. package/dist/shared/paths.js +0 -50
  543. package/dist/shared/result.d.ts +0 -22
  544. package/dist/shared/result.js +0 -46
  545. package/dist/shared/version.d.ts +0 -1
  546. package/dist/shared/version.js +0 -1
  547. package/examples/video-demo/README.md +0 -142
  548. package/examples/video-demo/out/en-closing-960.png +0 -0
  549. package/examples/video-demo/out/zh-closing-960.png +0 -0
  550. package/examples/video-demo/preview/peaks-loop-demo-en.mp4 +0 -0
  551. package/examples/video-demo/preview/peaks-loop-demo.mp4 +0 -0
  552. /package/dist/services/{job/job-resource-snapshot.js → job-snapshot/snapshot.js} +0 -0
@@ -0,0 +1,257 @@
1
+ /**
2
+ * rid-010 — peaks release precheck (Phase 4 slice 1).
3
+ *
4
+ * Module path: src/services/release/version-precheck-service.ts
5
+ * Mirror of publish.yml gate-cli-version step §(A). The §(B) tarball-content gate
6
+ * (Layer 5 of the 5-layer root cause) stays CI-only — AC-7 grep test pins
7
+ * publish.yml so §(B) cannot drift silently.
8
+ *
9
+ * 4-layer version precheck mirroring publish.yml gate-cli-version step. Designed
10
+ * to run BEFORE `peaks release canary` so developers catch CLI_VERSION lag /
11
+ * tag collision / changeset staged / workspace drift without waiting for CI.
12
+ *
13
+ * Mirrors the §(A) on-disk gate from publish.yml. The §(B) tarball-content gate
14
+ * (Layer 5 of the 5-layer root cause) stays CI-only — AC-7 grep test pins
15
+ * publish.yml so §(B) cannot drift silently.
16
+ *
17
+ * Design contract:
18
+ * - Pure functions. NO `process.exitCode` mutation here (cli-helpers owns it).
19
+ * - All I/O parameterized via `projectRoot`.
20
+ * - Layer A and B are blockers by default; C and D are warnings (--strict
21
+ * upgrades them to blockers; hotfix path uses default warning).
22
+ */
23
+ import { readdirSync, readFileSync } from 'node:fs';
24
+ import { join } from 'node:path';
25
+ import { spawnSync } from 'node:child_process';
26
+ const SEMVER_RE = /^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/;
27
+ // ---------------------------------------------------------------------------
28
+ // Helpers
29
+ // ---------------------------------------------------------------------------
30
+ function upgrade(result, strict) {
31
+ if (strict === true && result.status === 'warning') {
32
+ return {
33
+ ...result,
34
+ status: 'blocker',
35
+ remediation: `${result.remediation} (strict mode: warning promoted to blocker)`
36
+ };
37
+ }
38
+ return result;
39
+ }
40
+ function readRootVersion(projectRoot) {
41
+ const pkg = JSON.parse(readFileSync(join(projectRoot, 'package.json'), 'utf8'));
42
+ if (typeof pkg.version !== 'string' || !SEMVER_RE.test(pkg.version)) {
43
+ throw new Error(`invalid root package.json#version: ${JSON.stringify(pkg.version)}`);
44
+ }
45
+ return pkg.version;
46
+ }
47
+ function rollup(layers, strict) {
48
+ const statuses = Object.values(layers).map((l) => l.status);
49
+ if (statuses.includes('blocker')) {
50
+ return { ok: false, overall: 'blocker' };
51
+ }
52
+ if (statuses.includes('warning')) {
53
+ return { ok: true, overall: 'warning' };
54
+ }
55
+ return { ok: true, overall: 'ok' };
56
+ }
57
+ // ---------------------------------------------------------------------------
58
+ // Layer A — rootVsShared (mirrors publish.yml §(A) on-disk gate only)
59
+ // ---------------------------------------------------------------------------
60
+ export function runRootVsShared(opts) {
61
+ const rootVersion = readRootVersion(opts.projectRoot);
62
+ const sharedDist = join(opts.projectRoot, 'packages', 'peaks-loop-shared', 'dist', 'version.js');
63
+ let sharedVersion = null;
64
+ let distExists = false;
65
+ try {
66
+ const raw = readFileSync(sharedDist, 'utf8');
67
+ const match = raw.match(/CLI_VERSION\s*=\s*"([^"]+)"/);
68
+ if (match && match[1] !== undefined) {
69
+ sharedVersion = match[1];
70
+ }
71
+ distExists = true;
72
+ }
73
+ catch {
74
+ distExists = false;
75
+ }
76
+ if (!distExists) {
77
+ return {
78
+ status: 'blocker',
79
+ message: `peaks-loop-shared/dist/version.js is missing at ${sharedDist}`,
80
+ remediation: 'run `pnpm --filter peaks-loop-shared build` to regenerate dist/version.js; ' +
81
+ 'then re-run `peaks release precheck`',
82
+ observed: { rootVersion, sharedVersion: null }
83
+ };
84
+ }
85
+ if (sharedVersion === null) {
86
+ return {
87
+ status: 'blocker',
88
+ message: `peaks-loop-shared/dist/version.js does not contain a parseable CLI_VERSION`,
89
+ remediation: 'inspect packages/peaks-loop-shared/dist/version.js; ensure CLI_VERSION = "<semver>" is exported',
90
+ observed: { rootVersion, sharedVersion: null }
91
+ };
92
+ }
93
+ if (sharedVersion !== rootVersion) {
94
+ return {
95
+ status: 'blocker',
96
+ message: `peaks-loop root version (${rootVersion}) does not match peaks-loop-shared/dist/version.js CLI_VERSION (${sharedVersion})`,
97
+ remediation: 'bump packages/peaks-loop-shared/package.json#version to match root package.json#version, ' +
98
+ 'commit peaks-loop-shared@' +
99
+ rootVersion +
100
+ ', then re-run `peaks release precheck`',
101
+ observed: { rootVersion, sharedVersion }
102
+ };
103
+ }
104
+ return {
105
+ status: 'ok',
106
+ message: `peaks-loop root version matches peaks-loop-shared/dist/version.js CLI_VERSION`,
107
+ remediation: '',
108
+ observed: { rootVersion, sharedVersion }
109
+ };
110
+ }
111
+ // ---------------------------------------------------------------------------
112
+ // Layer B — tagCollision (CLI-only; not in publish.yml today)
113
+ // ---------------------------------------------------------------------------
114
+ export function runTagCollision(opts) {
115
+ const rootVersion = readRootVersion(opts.projectRoot);
116
+ const tagName = `v${rootVersion}`;
117
+ // Windows shell wrapping convention: 5 prior occurrences in tests/unit/release/.
118
+ const res = spawnSync('git', ['-C', opts.projectRoot, 'tag', '--list', tagName], {
119
+ shell: process.platform === 'win32',
120
+ encoding: 'utf8',
121
+ timeout: 5_000
122
+ });
123
+ if (res.error !== null && res.error !== undefined) {
124
+ return {
125
+ status: 'warning',
126
+ message: `git invocation failed; tag-collision layer skipped (${res.error.message})`,
127
+ remediation: 'ensure `git` is on PATH (Git Bash ships git at C:\\Program Files\\Git\\bin\\git.exe)',
128
+ observed: { tagName }
129
+ };
130
+ }
131
+ if (res.status !== 0) {
132
+ return {
133
+ status: 'warning',
134
+ message: `git tag --list exited with code ${res.status}; tag-collision layer skipped`,
135
+ remediation: 'inspect git configuration; precheck will defer to publish.yml gate for tag collision',
136
+ observed: { tagName, stderr: res.stderr }
137
+ };
138
+ }
139
+ const tagOutput = (res.stdout ?? '').trim();
140
+ if (tagOutput.includes(tagName)) {
141
+ return {
142
+ status: 'blocker',
143
+ message: `git tag ${tagName} already exists locally — publishing this version would fail at the registry step`,
144
+ remediation: `delete the existing tag: \`git tag -d ${tagName}\` (or use \`peaks release hotfix <next-version>\` for an out-of-band release)`,
145
+ observed: { tagName }
146
+ };
147
+ }
148
+ return {
149
+ status: 'ok',
150
+ message: `git tag ${tagName} does not exist; safe to publish`,
151
+ remediation: '',
152
+ observed: { tagName }
153
+ };
154
+ }
155
+ // ---------------------------------------------------------------------------
156
+ // Layer C — changesetStaged (mirrors publish.yml gate-changeset step)
157
+ // ---------------------------------------------------------------------------
158
+ export function runChangesetStaged(opts) {
159
+ const changesetDir = join(opts.projectRoot, '.changeset');
160
+ let files = [];
161
+ try {
162
+ files = readdirSync(changesetDir);
163
+ }
164
+ catch {
165
+ return {
166
+ status: 'ok',
167
+ message: '.changeset/ directory is absent — no changeset is staged',
168
+ remediation: '',
169
+ observed: { stagedFiles: [] }
170
+ };
171
+ }
172
+ const staged = files.filter((f) => f.endsWith('.md') && f !== 'README.md');
173
+ if (staged.length === 0) {
174
+ return {
175
+ status: 'ok',
176
+ message: '.changeset/ has no staged *.md files',
177
+ remediation: '',
178
+ observed: { stagedFiles: [] }
179
+ };
180
+ }
181
+ return {
182
+ status: 'warning',
183
+ message: `.changeset/ has ${staged.length} staged change(s): ${staged.join(', ')}`,
184
+ remediation: 'publish.yml gate-changeset will BLOCK publish with these staged files. ' +
185
+ 'Either: (a) run `peaks changeset publish` to drain the staged changesets, ' +
186
+ '(b) move them out of .changeset/, or (c) re-run with --strict to enforce blocker exit here.',
187
+ observed: { stagedFiles: staged }
188
+ };
189
+ }
190
+ // ---------------------------------------------------------------------------
191
+ // Layer D — workspaceLockstep (CLI-only; not in publish.yml today)
192
+ // ---------------------------------------------------------------------------
193
+ export function runWorkspaceLockstep(opts) {
194
+ const rootPkgRaw = readFileSync(join(opts.projectRoot, 'package.json'), 'utf8');
195
+ const rootPkg = JSON.parse(rootPkgRaw);
196
+ const allDeps = {
197
+ ...(rootPkg.dependencies ?? {}),
198
+ ...(rootPkg.devDependencies ?? {})
199
+ };
200
+ const sharedDep = allDeps['peaks-loop-shared'];
201
+ if (sharedDep === undefined) {
202
+ return {
203
+ status: 'blocker',
204
+ message: 'peaks-loop-shared is not declared in root dependencies',
205
+ remediation: 'add `"peaks-loop-shared": "workspace:*"` to root package.json#dependencies',
206
+ observed: { sharedDep: null }
207
+ };
208
+ }
209
+ if (sharedDep !== 'workspace:*') {
210
+ return {
211
+ status: 'warning',
212
+ message: `peaks-loop-shared is pinned to "${sharedDep}" instead of "workspace:*"`,
213
+ remediation: 'restore `"peaks-loop-shared": "workspace:*"` in root package.json to ensure ' +
214
+ 'the local dev link is preserved; published semver-pin regressions cause the CLI_VERSION drift class.',
215
+ observed: { sharedDep }
216
+ };
217
+ }
218
+ const sharedPkgRaw = readFileSync(join(opts.projectRoot, 'packages', 'peaks-loop-shared', 'package.json'), 'utf8');
219
+ const sharedPkg = JSON.parse(sharedPkgRaw);
220
+ const sharedVersion = sharedPkg.version ?? '';
221
+ if (!SEMVER_RE.test(sharedVersion)) {
222
+ return {
223
+ status: 'blocker',
224
+ message: `peaks-loop-shared package.json#version is not a clean semver: "${sharedVersion}"`,
225
+ remediation: 'set packages/peaks-loop-shared/package.json#version to a clean semver (e.g. 0.0.18)',
226
+ observed: { sharedVersion }
227
+ };
228
+ }
229
+ return {
230
+ status: 'ok',
231
+ message: `peaks-loop-shared is workspace-linked; shared version "${sharedVersion}" is clean semver`,
232
+ remediation: '',
233
+ observed: { sharedDep, sharedVersion }
234
+ };
235
+ }
236
+ // ---------------------------------------------------------------------------
237
+ // runAllLayers — orchestrator
238
+ // ---------------------------------------------------------------------------
239
+ export function runAllLayers(opts) {
240
+ const rootVersion = readRootVersion(opts.projectRoot);
241
+ const strict = opts.strict === true;
242
+ const layers = {
243
+ rootVsShared: upgrade(runRootVsShared(opts), strict),
244
+ tagCollision: upgrade(runTagCollision(opts), strict),
245
+ changesetStaged: upgrade(runChangesetStaged(opts), strict),
246
+ workspaceLockstep: upgrade(runWorkspaceLockstep(opts), strict)
247
+ };
248
+ const rolled = rollup(layers, strict);
249
+ return {
250
+ ok: rolled.ok,
251
+ overall: rolled.overall,
252
+ rootVersion,
253
+ strict,
254
+ snapshotAt: new Date().toISOString(),
255
+ layers
256
+ };
257
+ }
@@ -1,5 +1,5 @@
1
1
  import { join } from 'node:path';
2
- import { pathExists, readText } from '../../shared/fs.js';
2
+ import { pathExists, readText } from 'peaks-loop-shared/fs';
3
3
  import { showRequestArtifact } from '../artifacts/request-artifact-service.js';
4
4
  const ACCEPTANCE_SECTION_PATTERN = /^##\s+(?:Acceptance criteria|验收标准|Acceptance Criteria)\s*$/m;
5
5
  function extractAcceptanceItems(prdBody) {
@@ -1,6 +1,6 @@
1
1
  import { readdir, stat } from 'node:fs/promises';
2
2
  import { join } from 'node:path';
3
- import { isDirectory, pathExists, readText } from '../../shared/fs.js';
3
+ import { isDirectory, pathExists, readText } from 'peaks-loop-shared/fs';
4
4
  const BACKEND_DEP_NAMES = [
5
5
  'express',
6
6
  'koa',
@@ -1,6 +1,6 @@
1
1
  import { readdir, stat } from 'node:fs/promises';
2
2
  import { basename, join, relative } from 'node:path';
3
- import { isDirectory, pathExists, readText } from '../../shared/fs.js';
3
+ import { isDirectory, pathExists, readText } from 'peaks-loop-shared/fs';
4
4
  import { scanArchetype } from './archetype-service.js';
5
5
  const DEFAULT_MAX_TOKENS = 40;
6
6
  const DEFAULT_SAMPLES = 5;
@@ -1,6 +1,6 @@
1
1
  import { readdir } from 'node:fs/promises';
2
2
  import { join, sep } from 'node:path';
3
- import { isDirectory, pathExists, readText } from '../../shared/fs.js';
3
+ import { isDirectory, pathExists, readText } from 'peaks-loop-shared/fs';
4
4
  const SCOPES = [
5
5
  'dependencies',
6
6
  'devDependencies',
@@ -68,22 +68,22 @@ export declare const BeeManifestSchema: z.ZodEffects<z.ZodObject<{
68
68
  kind: z.ZodEnum<["file", "dir", "script"]>;
69
69
  }, "strip", z.ZodTypeAny, {
70
70
  path: string;
71
- kind: "file" | "script" | "dir";
71
+ kind: "file" | "dir" | "script";
72
72
  }, {
73
73
  path: string;
74
- kind: "file" | "script" | "dir";
74
+ kind: "file" | "dir" | "script";
75
75
  }>, "many">;
76
76
  }, "strip", z.ZodTypeAny, {
77
77
  preamble: string;
78
78
  refs: {
79
79
  path: string;
80
- kind: "file" | "script" | "dir";
80
+ kind: "file" | "dir" | "script";
81
81
  }[];
82
82
  }, {
83
83
  preamble: string;
84
84
  refs: {
85
85
  path: string;
86
- kind: "file" | "script" | "dir";
86
+ kind: "file" | "dir" | "script";
87
87
  }[];
88
88
  }>;
89
89
  promotion: z.ZodObject<{
@@ -106,15 +106,7 @@ export declare const BeeManifestSchema: z.ZodEffects<z.ZodObject<{
106
106
  lastTouchedAt: z.ZodString;
107
107
  }, "strip", z.ZodTypeAny, {
108
108
  name: string;
109
- source: "user" | "system";
110
109
  description: string;
111
- schemaVersion: "peaks.bee/1";
112
- promotion: {
113
- minCycles: number;
114
- requiresHumanApproval: boolean;
115
- requiresSmokeTest: boolean;
116
- retireOnMissesInRow?: number | undefined;
117
- };
118
110
  segments: {
119
111
  name: string;
120
112
  outputs: {
@@ -129,27 +121,27 @@ export declare const BeeManifestSchema: z.ZodEffects<z.ZodObject<{
129
121
  }[];
130
122
  sideEffects: string[];
131
123
  }[];
124
+ promotion: {
125
+ minCycles: number;
126
+ requiresHumanApproval: boolean;
127
+ requiresSmokeTest: boolean;
128
+ retireOnMissesInRow?: number | undefined;
129
+ };
130
+ source: "user" | "system";
131
+ schemaVersion: "peaks.bee/1";
132
132
  promotion_status: "candidate" | "stable" | "retired" | "system-stable";
133
133
  entrypoint: {
134
134
  preamble: string;
135
135
  refs: {
136
136
  path: string;
137
- kind: "file" | "script" | "dir";
137
+ kind: "file" | "dir" | "script";
138
138
  }[];
139
139
  };
140
140
  createdBy: "llm" | "human";
141
141
  lastTouchedAt: string;
142
142
  }, {
143
143
  name: string;
144
- source: "user" | "system";
145
144
  description: string;
146
- schemaVersion: "peaks.bee/1";
147
- promotion: {
148
- minCycles: number;
149
- requiresHumanApproval: boolean;
150
- requiresSmokeTest: boolean;
151
- retireOnMissesInRow?: number | undefined;
152
- };
153
145
  segments: {
154
146
  name: string;
155
147
  outputs: {
@@ -164,27 +156,27 @@ export declare const BeeManifestSchema: z.ZodEffects<z.ZodObject<{
164
156
  }[];
165
157
  sideEffects: string[];
166
158
  }[];
159
+ promotion: {
160
+ minCycles: number;
161
+ requiresHumanApproval: boolean;
162
+ requiresSmokeTest: boolean;
163
+ retireOnMissesInRow?: number | undefined;
164
+ };
165
+ source: "user" | "system";
166
+ schemaVersion: "peaks.bee/1";
167
167
  promotion_status: "candidate" | "stable" | "retired" | "system-stable";
168
168
  entrypoint: {
169
169
  preamble: string;
170
170
  refs: {
171
171
  path: string;
172
- kind: "file" | "script" | "dir";
172
+ kind: "file" | "dir" | "script";
173
173
  }[];
174
174
  };
175
175
  createdBy: "llm" | "human";
176
176
  lastTouchedAt: string;
177
177
  }>, {
178
178
  name: string;
179
- source: "user" | "system";
180
179
  description: string;
181
- schemaVersion: "peaks.bee/1";
182
- promotion: {
183
- minCycles: number;
184
- requiresHumanApproval: boolean;
185
- requiresSmokeTest: boolean;
186
- retireOnMissesInRow?: number | undefined;
187
- };
188
180
  segments: {
189
181
  name: string;
190
182
  outputs: {
@@ -199,27 +191,27 @@ export declare const BeeManifestSchema: z.ZodEffects<z.ZodObject<{
199
191
  }[];
200
192
  sideEffects: string[];
201
193
  }[];
194
+ promotion: {
195
+ minCycles: number;
196
+ requiresHumanApproval: boolean;
197
+ requiresSmokeTest: boolean;
198
+ retireOnMissesInRow?: number | undefined;
199
+ };
200
+ source: "user" | "system";
201
+ schemaVersion: "peaks.bee/1";
202
202
  promotion_status: "candidate" | "stable" | "retired" | "system-stable";
203
203
  entrypoint: {
204
204
  preamble: string;
205
205
  refs: {
206
206
  path: string;
207
- kind: "file" | "script" | "dir";
207
+ kind: "file" | "dir" | "script";
208
208
  }[];
209
209
  };
210
210
  createdBy: "llm" | "human";
211
211
  lastTouchedAt: string;
212
212
  }, {
213
213
  name: string;
214
- source: "user" | "system";
215
214
  description: string;
216
- schemaVersion: "peaks.bee/1";
217
- promotion: {
218
- minCycles: number;
219
- requiresHumanApproval: boolean;
220
- requiresSmokeTest: boolean;
221
- retireOnMissesInRow?: number | undefined;
222
- };
223
215
  segments: {
224
216
  name: string;
225
217
  outputs: {
@@ -234,12 +226,20 @@ export declare const BeeManifestSchema: z.ZodEffects<z.ZodObject<{
234
226
  }[];
235
227
  sideEffects: string[];
236
228
  }[];
229
+ promotion: {
230
+ minCycles: number;
231
+ requiresHumanApproval: boolean;
232
+ requiresSmokeTest: boolean;
233
+ retireOnMissesInRow?: number | undefined;
234
+ };
235
+ source: "user" | "system";
236
+ schemaVersion: "peaks.bee/1";
237
237
  promotion_status: "candidate" | "stable" | "retired" | "system-stable";
238
238
  entrypoint: {
239
239
  preamble: string;
240
240
  refs: {
241
241
  path: string;
242
- kind: "file" | "script" | "dir";
242
+ kind: "file" | "dir" | "script";
243
243
  }[];
244
244
  };
245
245
  createdBy: "llm" | "human";
@@ -106,13 +106,13 @@ export declare const SchemaVersionsMappingSchema: z.ZodObject<{
106
106
  loop_bee_relation: z.ZodLiteral<"peaks.loop-bee-relation/1">;
107
107
  crystallization: z.ZodLiteral<"peaks.crystallization/1">;
108
108
  }, "strict", z.ZodTypeAny, {
109
- bee: "peaks.bee/1";
110
109
  loop: "peaks.loop/1";
110
+ bee: "peaks.bee/1";
111
111
  loop_bee_relation: "peaks.loop-bee-relation/1";
112
112
  crystallization: "peaks.crystallization/1";
113
113
  }, {
114
- bee: "peaks.bee/1";
115
114
  loop: "peaks.loop/1";
115
+ bee: "peaks.bee/1";
116
116
  loop_bee_relation: "peaks.loop-bee-relation/1";
117
117
  crystallization: "peaks.crystallization/1";
118
118
  }>;
@@ -189,13 +189,13 @@ export declare const BundleManifestSchema: z.ZodEffects<z.ZodObject<{
189
189
  loop_bee_relation: z.ZodLiteral<"peaks.loop-bee-relation/1">;
190
190
  crystallization: z.ZodLiteral<"peaks.crystallization/1">;
191
191
  }, "strict", z.ZodTypeAny, {
192
- bee: "peaks.bee/1";
193
192
  loop: "peaks.loop/1";
193
+ bee: "peaks.bee/1";
194
194
  loop_bee_relation: "peaks.loop-bee-relation/1";
195
195
  crystallization: "peaks.crystallization/1";
196
196
  }, {
197
- bee: "peaks.bee/1";
198
197
  loop: "peaks.loop/1";
198
+ bee: "peaks.bee/1";
199
199
  loop_bee_relation: "peaks.loop-bee-relation/1";
200
200
  crystallization: "peaks.crystallization/1";
201
201
  }>;
@@ -253,13 +253,13 @@ export declare const BundleManifestSchema: z.ZodEffects<z.ZodObject<{
253
253
  state_db_rows: "excluded";
254
254
  }>;
255
255
  }, "strict", z.ZodTypeAny, {
256
- kind: "bee" | "loop";
256
+ kind: "loop" | "bee";
257
257
  format_constant: "peaks.bundle/1";
258
258
  format_version_major: 1;
259
259
  format_version_minor: number;
260
260
  schema_versions: {
261
- bee: "peaks.bee/1";
262
261
  loop: "peaks.loop/1";
262
+ bee: "peaks.bee/1";
263
263
  loop_bee_relation: "peaks.loop-bee-relation/1";
264
264
  crystallization: "peaks.crystallization/1";
265
265
  };
@@ -274,12 +274,12 @@ export declare const BundleManifestSchema: z.ZodEffects<z.ZodObject<{
274
274
  loop_release?: unknown;
275
275
  bee_release?: unknown;
276
276
  }, {
277
- kind: "bee" | "loop";
277
+ kind: "loop" | "bee";
278
278
  format_constant: "peaks.bundle/1";
279
279
  format_version_major: 1;
280
280
  schema_versions: {
281
- bee: "peaks.bee/1";
282
281
  loop: "peaks.loop/1";
282
+ bee: "peaks.bee/1";
283
283
  loop_bee_relation: "peaks.loop-bee-relation/1";
284
284
  crystallization: "peaks.crystallization/1";
285
285
  };
@@ -295,13 +295,13 @@ export declare const BundleManifestSchema: z.ZodEffects<z.ZodObject<{
295
295
  loop_bee_relations?: unknown[] | undefined;
296
296
  evidence_briefs?: unknown[] | undefined;
297
297
  }>, {
298
- kind: "bee" | "loop";
298
+ kind: "loop" | "bee";
299
299
  format_constant: "peaks.bundle/1";
300
300
  format_version_major: 1;
301
301
  format_version_minor: number;
302
302
  schema_versions: {
303
- bee: "peaks.bee/1";
304
303
  loop: "peaks.loop/1";
304
+ bee: "peaks.bee/1";
305
305
  loop_bee_relation: "peaks.loop-bee-relation/1";
306
306
  crystallization: "peaks.crystallization/1";
307
307
  };
@@ -316,12 +316,12 @@ export declare const BundleManifestSchema: z.ZodEffects<z.ZodObject<{
316
316
  loop_release?: unknown;
317
317
  bee_release?: unknown;
318
318
  }, {
319
- kind: "bee" | "loop";
319
+ kind: "loop" | "bee";
320
320
  format_constant: "peaks.bundle/1";
321
321
  format_version_major: 1;
322
322
  schema_versions: {
323
- bee: "peaks.bee/1";
324
323
  loop: "peaks.loop/1";
324
+ bee: "peaks.bee/1";
325
325
  loop_bee_relation: "peaks.loop-bee-relation/1";
326
326
  crystallization: "peaks.crystallization/1";
327
327
  };
@@ -75,7 +75,7 @@ export declare const RunStateContractSchema: z.ZodObject<{
75
75
  /** NL summary of the latest user choice (or null when none). */
76
76
  last_user_choice: z.ZodNullable<z.ZodString>;
77
77
  }, "strict", z.ZodTypeAny, {
78
- status: "done" | "failed" | "blocked" | "running" | "paused";
78
+ status: "blocked" | "failed" | "running" | "done" | "paused";
79
79
  bee_id: string;
80
80
  current_step: string;
81
81
  started_at: string;
@@ -83,7 +83,7 @@ export declare const RunStateContractSchema: z.ZodObject<{
83
83
  last_evaluator_verdict: string | null;
84
84
  last_user_choice: string | null;
85
85
  }, {
86
- status: "done" | "failed" | "blocked" | "running" | "paused";
86
+ status: "blocked" | "failed" | "running" | "done" | "paused";
87
87
  bee_id: string;
88
88
  current_step: string;
89
89
  started_at: string;
@@ -23,32 +23,37 @@
23
23
  * matching, ML-based ranking, pagination, i18n, caching.
24
24
  */
25
25
  import { z } from 'zod';
26
- import { skillsDir } from '../../shared/paths.js';
26
+ import { skillsDir } from 'peaks-loop-shared/paths';
27
27
  export declare const SkillSearchInputSchema: z.ZodEffects<z.ZodObject<{
28
28
  query: z.ZodOptional<z.ZodString>;
29
29
  tag: z.ZodOptional<z.ZodString>;
30
30
  domain: z.ZodOptional<z.ZodEnum<["code", "content", "doctor", "research", "triage", "sop", "audit", "final-review", "resume", "status", "test", "ide", "slice-decompose", "issue-fix-orchestrator", "perf-audit", "security-audit", "reviewer"]>>;
31
31
  limit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
32
+ includeInternal: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
32
33
  }, "strip", z.ZodTypeAny, {
33
34
  limit: number;
35
+ includeInternal: boolean;
34
36
  query?: string | undefined;
35
37
  tag?: string | undefined;
36
- domain?: "code" | "status" | "content" | "test" | "doctor" | "resume" | "ide" | "research" | "triage" | "sop" | "audit" | "final-review" | "slice-decompose" | "issue-fix-orchestrator" | "perf-audit" | "security-audit" | "reviewer" | undefined;
38
+ domain?: "code" | "status" | "resume" | "audit" | "content" | "test" | "ide" | "research" | "doctor" | "triage" | "sop" | "final-review" | "slice-decompose" | "issue-fix-orchestrator" | "perf-audit" | "security-audit" | "reviewer" | undefined;
37
39
  }, {
38
- limit?: number | undefined;
39
40
  query?: string | undefined;
41
+ limit?: number | undefined;
40
42
  tag?: string | undefined;
41
- domain?: "code" | "status" | "content" | "test" | "doctor" | "resume" | "ide" | "research" | "triage" | "sop" | "audit" | "final-review" | "slice-decompose" | "issue-fix-orchestrator" | "perf-audit" | "security-audit" | "reviewer" | undefined;
43
+ domain?: "code" | "status" | "resume" | "audit" | "content" | "test" | "ide" | "research" | "doctor" | "triage" | "sop" | "final-review" | "slice-decompose" | "issue-fix-orchestrator" | "perf-audit" | "security-audit" | "reviewer" | undefined;
44
+ includeInternal?: boolean | undefined;
42
45
  }>, {
43
46
  limit: number;
47
+ includeInternal: boolean;
44
48
  query?: string | undefined;
45
49
  tag?: string | undefined;
46
- domain?: "code" | "status" | "content" | "test" | "doctor" | "resume" | "ide" | "research" | "triage" | "sop" | "audit" | "final-review" | "slice-decompose" | "issue-fix-orchestrator" | "perf-audit" | "security-audit" | "reviewer" | undefined;
50
+ domain?: "code" | "status" | "resume" | "audit" | "content" | "test" | "ide" | "research" | "doctor" | "triage" | "sop" | "final-review" | "slice-decompose" | "issue-fix-orchestrator" | "perf-audit" | "security-audit" | "reviewer" | undefined;
47
51
  }, {
48
- limit?: number | undefined;
49
52
  query?: string | undefined;
53
+ limit?: number | undefined;
50
54
  tag?: string | undefined;
51
- domain?: "code" | "status" | "content" | "test" | "doctor" | "resume" | "ide" | "research" | "triage" | "sop" | "audit" | "final-review" | "slice-decompose" | "issue-fix-orchestrator" | "perf-audit" | "security-audit" | "reviewer" | undefined;
55
+ domain?: "code" | "status" | "resume" | "audit" | "content" | "test" | "ide" | "research" | "doctor" | "triage" | "sop" | "final-review" | "slice-decompose" | "issue-fix-orchestrator" | "perf-audit" | "security-audit" | "reviewer" | undefined;
56
+ includeInternal?: boolean | undefined;
52
57
  }>;
53
58
  export type SkillSearchInput = z.input<typeof SkillSearchInputSchema>;
54
59
  export declare const SkillSearchResultSchema: z.ZodObject<{
@@ -25,8 +25,8 @@
25
25
  import { z } from 'zod';
26
26
  import { listSkills } from '../skills/skill-registry.js';
27
27
  import { parseFrontmatter } from '../../shared/frontmatter.js';
28
- import { readText } from '../../shared/fs.js';
29
- import { skillsDir } from '../../shared/paths.js';
28
+ import { readText } from 'peaks-loop-shared/fs';
29
+ import { skillsDir } from 'peaks-loop-shared/paths';
30
30
  const SKILL_DOMAINS = [
31
31
  'code',
32
32
  'content',
@@ -51,7 +51,8 @@ export const SkillSearchInputSchema = z
51
51
  query: z.string().min(1).max(500).optional(),
52
52
  tag: z.string().min(1).max(100).optional(),
53
53
  domain: z.enum(SKILL_DOMAINS).optional(),
54
- limit: z.number().int().min(1).max(100).optional().default(20)
54
+ limit: z.number().int().min(1).max(100).optional().default(20),
55
+ includeInternal: z.boolean().optional().default(false)
55
56
  })
56
57
  .refine((v) => v.query !== undefined || v.tag !== undefined || v.domain !== undefined, { message: 'At least one of --query / --tag / --domain is required' });
57
58
  export const SkillSearchResultSchema = z.object({
@@ -130,7 +131,8 @@ async function loadEnrichedSkills() {
130
131
  triggers: extractTriggers(s.description),
131
132
  tags: meta.tags,
132
133
  domain: meta.domain,
133
- skillPath: s.skillPath
134
+ skillPath: s.skillPath,
135
+ ...(s.visibility !== undefined ? { visibility: s.visibility } : {})
134
136
  };
135
137
  }));
136
138
  }
@@ -187,6 +189,8 @@ export async function searchSkills(rawInput) {
187
189
  const input = SkillSearchInputSchema.parse(rawInput);
188
190
  const skills = await loadEnrichedSkills();
189
191
  const filtered = skills.filter((skill) => {
192
+ if (!input.includeInternal && skill.visibility === 'internal')
193
+ return false;
190
194
  if (input.tag !== undefined) {
191
195
  const wanted = input.tag.toLowerCase();
192
196
  const has = skill.tags.some((t) => t.toLowerCase() === wanted);