peaks-loop 3.0.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (239) hide show
  1. package/.claude-plugin/marketplace.json +3 -3
  2. package/CHANGELOG.md +57 -57
  3. package/README-en.md +2 -2
  4. package/README.md +2 -2
  5. package/agents/karpathy-reviewer.md +2 -2
  6. package/dist/src/cli/commands/agent-commands.js +3 -3
  7. package/dist/src/cli/commands/audit-commands.d.ts +1 -1
  8. package/dist/src/cli/commands/audit-commands.js +6 -6
  9. package/dist/src/cli/commands/classify-classify-commands.js +1 -1
  10. package/dist/src/cli/commands/code-review-commands.d.ts +3 -3
  11. package/dist/src/cli/commands/code-review-commands.js +5 -5
  12. package/dist/src/cli/commands/compact-command.d.ts +21 -0
  13. package/dist/src/cli/commands/compact-command.js +252 -0
  14. package/dist/src/cli/commands/context-commands.d.ts +1 -1
  15. package/dist/src/cli/commands/context-commands.js +1 -1
  16. package/dist/src/cli/commands/contract-commands.d.ts +1 -1
  17. package/dist/src/cli/commands/core/session-command.js +17 -7
  18. package/dist/src/cli/commands/core/skill-command.js +1 -1
  19. package/dist/src/cli/commands/feedback-commands.js +1 -1
  20. package/dist/src/cli/commands/hook-handle.d.ts +1 -1
  21. package/dist/src/cli/commands/hook-handle.js +1 -1
  22. package/dist/src/cli/commands/legacy-commands.d.ts +1 -1
  23. package/dist/src/cli/commands/legacy-commands.js +2 -2
  24. package/dist/src/cli/commands/log-commands.js +2 -2
  25. package/dist/src/cli/commands/loop-commands.d.ts +1 -1
  26. package/dist/src/cli/commands/loop-commands.js +1 -1
  27. package/dist/src/cli/commands/loop-eval-commands.d.ts +1 -1
  28. package/dist/src/cli/commands/loop-eval-commands.js +1 -1
  29. package/dist/src/cli/commands/playwright-commands.d.ts +1 -1
  30. package/dist/src/cli/commands/playwright-commands.js +2 -2
  31. package/dist/src/cli/commands/request-commands.js +40 -1
  32. package/dist/src/cli/commands/role-commands.js +1 -1
  33. package/dist/src/cli/commands/slice-commands.js +5 -5
  34. package/dist/src/cli/commands/upgrade-commands.d.ts +1 -1
  35. package/dist/src/cli/commands/upgrade-commands.js +6 -6
  36. package/dist/src/cli/commands/workspace/init-command.js +2 -2
  37. package/dist/src/cli/program.js +10 -1
  38. package/dist/src/services/agent/ecc-agent-service.js +5 -5
  39. package/dist/src/services/audit/artifact-writer.d.ts +1 -1
  40. package/dist/src/services/audit/artifact-writer.js +1 -1
  41. package/dist/src/services/audit/decision-writer.d.ts +1 -1
  42. package/dist/src/services/audit/decision-writer.js +1 -1
  43. package/dist/src/services/audit/enforcers/lint-output-style.js +5 -5
  44. package/dist/src/services/audit/enforcers/mock-placement.d.ts +1 -1
  45. package/dist/src/services/audit/enforcers/mock-placement.js +1 -1
  46. package/dist/src/services/audit/enforcers/no-root-pollution.js +1 -1
  47. package/dist/src/services/audit/red-line-catalog-p2-a.js +2 -2
  48. package/dist/src/services/audit/red-line-catalog-p2-b.js +2 -2
  49. package/dist/src/services/audit/static-service.d.ts +1 -1
  50. package/dist/src/services/audit/static-service.js +5 -5
  51. package/dist/src/services/audit/types.d.ts +1 -1
  52. package/dist/src/services/audit/types.js +1 -1
  53. package/dist/src/services/audit-independent/perf-audit-service.js +1 -1
  54. package/dist/src/services/audit-independent/security-audit-service.js +1 -1
  55. package/dist/src/services/classify/classify-service.d.ts +1 -1
  56. package/dist/src/services/classify/classify-service.js +1 -1
  57. package/dist/src/services/classify/classify-types.d.ts +1 -1
  58. package/dist/src/services/classify/classify-types.js +1 -1
  59. package/dist/src/services/code-review/ecc-bridge.d.ts +2 -2
  60. package/dist/src/services/code-review/ecc-bridge.js +2 -2
  61. package/dist/src/services/code-review/ocr-service.d.ts +9 -9
  62. package/dist/src/services/code-review/ocr-service.js +16 -16
  63. package/dist/src/services/compact/decision-tables.d.ts +66 -0
  64. package/dist/src/services/compact/decision-tables.js +127 -0
  65. package/dist/src/services/compact/request-transition-hook.d.ts +20 -0
  66. package/dist/src/services/compact/request-transition-hook.js +110 -0
  67. package/dist/src/services/compact/suggest-service.d.ts +74 -0
  68. package/dist/src/services/compact/suggest-service.js +203 -0
  69. package/dist/src/services/config/config-migration.js +1 -1
  70. package/dist/src/services/config/config-safety.d.ts +1 -1
  71. package/dist/src/services/config/config-safety.js +1 -1
  72. package/dist/src/services/config/config-service.d.ts +1 -1
  73. package/dist/src/services/config/config-service.js +1 -1
  74. package/dist/src/services/context/auto-compact-dispatcher.js +4 -4
  75. package/dist/src/services/context/auto-compact-types.d.ts +6 -6
  76. package/dist/src/services/context/auto-compact-types.js +5 -5
  77. package/dist/src/services/dispatch/sub-agent-dispatcher.js +1 -1
  78. package/dist/src/services/dispatch/test-tool-detection.d.ts +1 -1
  79. package/dist/src/services/dispatch/test-tool-detection.js +1 -1
  80. package/dist/src/services/doctor/doctor-service.d.ts +1 -1
  81. package/dist/src/services/doctor/doctor-service.js +5 -5
  82. package/dist/src/services/hooks/presence-marker-detector.js +5 -5
  83. package/dist/src/services/ide/adapters/claude-code-adapter.d.ts +1 -1
  84. package/dist/src/services/ide/adapters/claude-code-adapter.js +2 -2
  85. package/dist/src/services/ide/adapters/codex-adapter.d.ts +2 -2
  86. package/dist/src/services/ide/adapters/codex-adapter.js +2 -2
  87. package/dist/src/services/ide/adapters/cursor-adapter.d.ts +2 -2
  88. package/dist/src/services/ide/adapters/cursor-adapter.js +2 -2
  89. package/dist/src/services/ide/adapters/hermes-adapter.d.ts +1 -1
  90. package/dist/src/services/ide/adapters/hermes-adapter.js +1 -1
  91. package/dist/src/services/ide/adapters/openclaw-adapter.d.ts +1 -1
  92. package/dist/src/services/ide/adapters/openclaw-adapter.js +1 -1
  93. package/dist/src/services/ide/adapters/trae-adapter.d.ts +1 -1
  94. package/dist/src/services/ide/adapters/trae-adapter.js +1 -1
  95. package/dist/src/services/ide/ide-types.d.ts +9 -9
  96. package/dist/src/services/legacy/legacy-detector.d.ts +1 -1
  97. package/dist/src/services/legacy/legacy-detector.js +1 -1
  98. package/dist/src/services/log/log-commands-service.d.ts +1 -1
  99. package/dist/src/services/log/log-commands-service.js +1 -1
  100. package/dist/src/services/log/logger.d.ts +3 -3
  101. package/dist/src/services/log/logger.js +3 -3
  102. package/dist/src/services/log/redact.d.ts +1 -1
  103. package/dist/src/services/log/redact.js +1 -1
  104. package/dist/src/services/loop/evaluator-dispatcher.d.ts +1 -1
  105. package/dist/src/services/loop/evaluator-dispatcher.js +16 -15
  106. package/dist/src/services/loop/monotonic-guard.js +35 -18
  107. package/dist/src/services/loop/monotonic-runner.d.ts +3 -0
  108. package/dist/src/services/loop/monotonic-runner.js +62 -28
  109. package/dist/src/services/loop/run-driver.js +45 -24
  110. package/dist/src/services/memory/llm-reranker.d.ts +1 -1
  111. package/dist/src/services/memory/llm-reranker.js +1 -1
  112. package/dist/src/services/mut/production-stryker.d.ts +0 -5
  113. package/dist/src/services/mut/production-stryker.js +19 -10
  114. package/dist/src/services/openspec/openspec-propose-from-doctor-service.d.ts +1 -1
  115. package/dist/src/services/openspec/openspec-propose-from-doctor-service.js +1 -1
  116. package/dist/src/services/perf/perf-baseline-service.d.ts +2 -2
  117. package/dist/src/services/perf/perf-baseline-service.js +2 -2
  118. package/dist/src/services/prd/handoff-auto-regen.js +1 -1
  119. package/dist/src/services/prd/project-scan-sediment.js +3 -3
  120. package/dist/src/services/prd/project-scan-types.d.ts +1 -1
  121. package/dist/src/services/preferences/preferences-types.d.ts +3 -3
  122. package/dist/src/services/preferences/preferences-types.js +2 -2
  123. package/dist/src/services/role/role-registry.d.ts +1 -1
  124. package/dist/src/services/role/role-registry.js +1 -1
  125. package/dist/src/services/sc/sc-service.js +3 -3
  126. package/dist/src/services/skill/resume-detector.js +2 -2
  127. package/dist/src/services/skills/sync-service.d.ts +3 -3
  128. package/dist/src/services/skills/sync-service.js +9 -9
  129. package/dist/src/services/slice/calibration-store.d.ts +1 -1
  130. package/dist/src/services/slice/calibration-store.js +1 -1
  131. package/dist/src/services/solo/auto-compact-orchestrator.d.ts +1 -1
  132. package/dist/src/services/solo/auto-compact-orchestrator.js +7 -7
  133. package/dist/src/services/solo/dag-orchestrator.js +1 -1
  134. package/dist/src/services/solo/mode-gate.d.ts +1 -1
  135. package/dist/src/services/solo/mode-gate.js +4 -4
  136. package/dist/src/services/solo/user-touchpoint-classifier.js +1 -1
  137. package/dist/src/services/standards/migrate-claude-rules-service.js +5 -5
  138. package/dist/src/services/standards/migrate-service.d.ts +3 -3
  139. package/dist/src/services/standards/migrate-service.js +5 -5
  140. package/dist/src/services/standards/project-standards-service.js +1 -1
  141. package/dist/src/services/upgrade/gitignore-migrate-service.d.ts +3 -3
  142. package/dist/src/services/upgrade/gitignore-migrate-service.js +4 -4
  143. package/dist/src/services/upgrade/upgrade-service.d.ts +1 -1
  144. package/dist/src/services/upgrade/upgrade-service.js +5 -5
  145. package/dist/src/services/verdict/envelopes.d.ts +1 -1
  146. package/dist/src/services/verdict/envelopes.js +1 -1
  147. package/dist/src/services/workflow/workflow-loader.js +1 -1
  148. package/dist/src/services/workspace/migrate-1-4-1-service.d.ts +1 -1
  149. package/dist/src/services/workspace/migrate-1-4-1-service.js +1 -1
  150. package/dist/src/services/workspace/migrate-types.d.ts +1 -1
  151. package/dist/src/services/workspace/migrate-types.js +1 -1
  152. package/dist/src/services/workspace/workspace-claude-settings-materializer.d.ts +2 -2
  153. package/dist/src/services/workspace/workspace-claude-settings-materializer.js +9 -9
  154. package/dist/src/services/workspace/workspace-service.d.ts +1 -1
  155. package/dist/src/services/workspace/workspace-service.js +1 -1
  156. package/dist/src/shared/path-safety.d.ts +1 -1
  157. package/dist/src/shared/path-safety.js +1 -1
  158. package/dist/src/shared/version.d.ts +1 -1
  159. package/dist/src/shared/version.js +1 -1
  160. package/output-styles/peaks-skill-swarm.md +33 -33
  161. package/package.json +5 -4
  162. package/schemas/decomposition-v1.json +1 -1
  163. package/schemas/decomposition-v2.json +1 -1
  164. package/schemas/replay-fixture.schema.json +1 -1
  165. package/schemas/reviewer-envelope.schema.json +1 -1
  166. package/scripts/install-skills.mjs +11 -11
  167. package/skills/peaks-audit/SKILL.md +2 -2
  168. package/skills/peaks-doctor/SKILL.md +4 -4
  169. package/skills/peaks-final-review/SKILL.md +2 -2
  170. package/skills/peaks-ide/SKILL.md +3 -3
  171. package/skills/peaks-perf-audit/SKILL.md +1 -1
  172. package/skills/peaks-prd/SKILL.md +14 -14
  173. package/skills/peaks-prd/references/workflow.md +1 -1
  174. package/skills/peaks-qa/SKILL.md +17 -17
  175. package/skills/peaks-qa/references/artifact-per-request.md +1 -1
  176. package/skills/peaks-qa/references/browser-validation-contracts.md +2 -2
  177. package/skills/peaks-qa/references/codegraph-regression-focus.md +1 -1
  178. package/skills/peaks-qa/references/external-capability-guidance.md +2 -2
  179. package/skills/peaks-qa/references/qa-fanout-contract.md +1 -1
  180. package/skills/peaks-qa/references/qa-gstack-integration.md +3 -3
  181. package/skills/peaks-qa/references/qa-local-artifacts.md +1 -1
  182. package/skills/peaks-qa/references/qa-matt-pocock-integration.md +1 -1
  183. package/skills/peaks-qa/references/qa-runbook.md +3 -3
  184. package/skills/peaks-qa/references/qa-skill-presence.md +1 -1
  185. package/skills/peaks-qa/references/qa-standards-preflight.md +2 -2
  186. package/skills/peaks-qa/references/qa-transition-gates.md +9 -9
  187. package/skills/peaks-qa/references/regression-gates.md +1 -1
  188. package/skills/peaks-rd/SKILL.md +13 -13
  189. package/skills/peaks-rd/references/artifact-and-standards-output.md +1 -1
  190. package/skills/peaks-rd/references/codegraph-project-analysis.md +1 -1
  191. package/skills/peaks-rd/references/external-references.md +3 -3
  192. package/skills/peaks-rd/references/karpathy-reviewer-prompt.md +1 -1
  193. package/skills/peaks-rd/references/mandatory-perf-baseline.md +1 -1
  194. package/skills/peaks-rd/references/matt-pocock-integration.md +2 -2
  195. package/skills/peaks-rd/references/ocr-integration.md +19 -19
  196. package/skills/peaks-rd/references/openspec-cli.md +2 -2
  197. package/skills/peaks-rd/references/rd-gstack-integration.md +5 -5
  198. package/skills/peaks-rd/references/rd-runbook.md +9 -9
  199. package/skills/peaks-rd/references/rd-standards-preflight.md +1 -1
  200. package/skills/peaks-rd/references/rd-transition-gates.md +13 -13
  201. package/skills/peaks-rd/references/skill-presence-and-title.md +1 -1
  202. package/skills/peaks-reviewer/SKILL.md +2 -2
  203. package/skills/peaks-sc/SKILL.md +9 -9
  204. package/skills/peaks-security-audit/SKILL.md +1 -1
  205. package/skills/peaks-slice-decompose/SKILL.md +2 -2
  206. package/skills/peaks-solo/SKILL.md +49 -49
  207. package/skills/peaks-solo/references/a2a-artifact-mapping.md +8 -8
  208. package/skills/peaks-solo/references/anchoring-and-session-info.md +3 -3
  209. package/skills/peaks-solo/references/boundaries.md +4 -4
  210. package/skills/peaks-solo/references/browser-workflow.md +2 -2
  211. package/skills/peaks-solo/references/codegraph-orchestration.md +1 -1
  212. package/skills/peaks-solo/references/completion-handoff.md +2 -2
  213. package/skills/peaks-solo/references/external-references.md +3 -3
  214. package/skills/peaks-solo/references/external-skill-invocation.md +2 -2
  215. package/skills/peaks-solo/references/frontend-only-mode.md +1 -1
  216. package/skills/peaks-solo/references/gstack-integration.md +4 -4
  217. package/skills/peaks-solo/references/local-artifact-workspace.md +2 -2
  218. package/skills/peaks-solo/references/micro-cycle.md +4 -4
  219. package/skills/peaks-solo/references/mode-selection.md +5 -5
  220. package/skills/peaks-solo/references/openspec-workflow.md +2 -2
  221. package/skills/peaks-solo/references/playwright-mcp-multi-terminal.md +1 -1
  222. package/skills/peaks-solo/references/project-memory-loading.md +1 -1
  223. package/skills/peaks-solo/references/project-scan-checklist.md +1 -1
  224. package/skills/peaks-solo/references/quality-gate-cheatsheet.md +1 -1
  225. package/skills/peaks-solo/references/resume-detection.md +1 -1
  226. package/skills/peaks-solo/references/runbook.md +20 -20
  227. package/skills/peaks-solo/references/skill-presence-and-title.md +2 -2
  228. package/skills/peaks-solo/references/standards-preflight.md +2 -2
  229. package/skills/peaks-solo/references/step-0-55-1x-detection.md +3 -3
  230. package/skills/peaks-solo/references/sub-agent-dispatch.md +3 -3
  231. package/skills/peaks-solo/references/swarm-dispatch-contract.md +3 -3
  232. package/skills/peaks-solo/references/workflow-gates-and-types.md +34 -34
  233. package/skills/peaks-solo-resume/SKILL.md +2 -2
  234. package/skills/peaks-solo-status/SKILL.md +4 -4
  235. package/skills/peaks-solo-test/SKILL.md +4 -4
  236. package/skills/peaks-sop/SKILL.md +5 -5
  237. package/skills/peaks-txt/SKILL.md +17 -17
  238. package/skills/peaks-ui/SKILL.md +17 -17
  239. package/skills/peaks-ui/references/workflow.md +1 -1
@@ -8,12 +8,12 @@ import { fail, ok } from '../../shared/result.js';
8
8
  export function registerUpgradeCommands(program, io) {
9
9
  addJsonOption(program
10
10
  .command('upgrade')
11
- .description('Upgrade a peaks-cli 1.x project to 2.0. Umbrella that orquestrates 7 sub-commands: config-migrate / standards-migrate / memory-extract / hooks-install / skill-sync / audit-verify + write-upgrade-record. Per the "one-key completion" tenet, prefer letting `npm i -g peaks-cli@2.0` postinstall run this for you. Use `--detect-1x` for a read-only probe (no file writes) that the peaks-solo skill uses to gate the 1.x → 2.0 AskUserQuestion.')
11
+ .description('Upgrade a peaks-loop 1.x project to 2.0. Umbrella that orquestrates 7 sub-commands: config-migrate / standards-migrate / memory-extract / hooks-install / skill-sync / audit-verify + write-upgrade-record. Per the "one-key completion" tenet, prefer letting `npm i -g peaks-loop@2.0` postinstall run this for you. Use `--detect-1x` for a read-only probe (no file writes) that the peaks-solo skill uses to gate the 1.x → 2.0 AskUserQuestion.')
12
12
  .option('--to <version>', 'target version (only "2.0" supported)', '2.0')
13
13
  .option('--project <path>', 'project root to upgrade (default: cwd)')
14
14
  .option('--auto', 'non-interactive: accept soft-fail on any sub-step (used by the postinstall hook)')
15
15
  .option('--detect-1x', 'read-only probe: returns the 1.x state as JSON (no file writes); consumed by peaks-solo Step 0.55 to gate the AskUserQuestion')
16
- .option('--apply-init', 'slice 4 (slice 2026-06-13-selfheal-claude-settings-template): run initWorkspace so the drift-driven self-heal fires on the consumer-project .claude/settings.local.json and the offline .peaks/.claude-settings-template.json. Idempotent. Use after a peaks-cli version bump if you do not otherwise re-run init. Mutually exclusive with --detect-1x.')).action(async (options) => {
16
+ .option('--apply-init', 'slice 4 (slice 2026-06-13-selfheal-claude-settings-template): run initWorkspace so the drift-driven self-heal fires on the consumer-project .claude/settings.local.json and the offline .peaks/.claude-settings-template.json. Idempotent. Use after a peaks-loop version bump if you do not otherwise re-run init. Mutually exclusive with --detect-1x.')).action(async (options) => {
17
17
  const projectRoot = options.project ?? process.cwd();
18
18
  // Branch 1: --detect-1x (read-only probe)
19
19
  if (options.detect1x === true) {
@@ -39,13 +39,13 @@ export function registerUpgradeCommands(program, io) {
39
39
  // Branch 2: --apply-init (slice 4 — slice 2026-06-13-selfheal-claude-settings-template).
40
40
  //
41
41
  // The drift-driven self-heal inside initWorkspace only fires when
42
- // the user invokes init. After a peaks-cli version bump, users who
42
+ // the user invokes init. After a peaks-loop version bump, users who
43
43
  // never re-run init are stuck with stale templates until they do.
44
44
  // This flag is the post-bump escape hatch: it triggers init for them.
45
45
  //
46
46
  // We do NOT pass --session-id (the CLI auto-generates / reuses an
47
47
  // existing binding). We do NOT pass --no-claude-hooks (the goal is to
48
- // bring the project to the current peaks-cli baseline, including the
48
+ // bring the project to the current peaks-loop baseline, including the
49
49
  // consumer-project hook).
50
50
  if (options.applyInit === true) {
51
51
  try {
@@ -67,7 +67,7 @@ export function registerUpgradeCommands(program, io) {
67
67
  // Surface the same self-heal messaging that workspace-init uses.
68
68
  if (result.claudeSettings.offlineTemplate.action === 'refreshed') {
69
69
  nextActions.push(`Self-healed .peaks/.claude-settings-template.json (action: refreshed) — ` +
70
- 'the offline recovery anchor now matches the current peaks-cli template.');
70
+ 'the offline recovery anchor now matches the current peaks-loop template.');
71
71
  nextActions.push('⚠️ If you had manually edited .peaks/.claude-settings-template.json, ' +
72
72
  'those edits have been overwritten by the self-heal.');
73
73
  }
@@ -77,7 +77,7 @@ export function registerUpgradeCommands(program, io) {
77
77
  }
78
78
  if (result.claudeSettings.action === 'refreshed') {
79
79
  nextActions.push(`Refreshed .claude/settings.local.json (action: refreshed) — ` +
80
- 'the consumer-project hook now matches the current peaks-cli template. ' +
80
+ 'the consumer-project hook now matches the current peaks-loop template. ' +
81
81
  'Restart Claude Code so the hooks take effect.');
82
82
  }
83
83
  else if (result.claudeSettings.action === 'written') {
@@ -183,7 +183,7 @@ export function registerWorkspaceInitCommand(workspace, io) {
183
183
  // Slice 2026-06-13-selfheal-claude-settings-template: surface
184
184
  // the self-heal outcome for the offline
185
185
  // `.peaks/.claude-settings-template.json` copy. When the offline
186
- // file was refreshed (i.e. the previous peaks-cli release left
186
+ // file was refreshed (i.e. the previous peaks-loop release left
187
187
  // a stale version without the `node -e "..."` wrapper), the user
188
188
  // benefits from seeing that the manual-recovery anchor now
189
189
  // points at the corrected template. We surface `written` and
@@ -197,7 +197,7 @@ export function registerWorkspaceInitCommand(workspace, io) {
197
197
  // to make sure anyone who customised sees the prompt.
198
198
  if (report.claudeSettings.offlineTemplate.action === 'refreshed') {
199
199
  nextActions.push(`Self-healed .peaks/.claude-settings-template.json (action: refreshed) — ` +
200
- 'the offline recovery anchor now matches the current peaks-cli template. ' +
200
+ 'the offline recovery anchor now matches the current peaks-loop template. ' +
201
201
  'No action required; future manual recoveries will copy the corrected wrapper.');
202
202
  nextActions.push('⚠️ If you had manually edited .peaks/.claude-settings-template.json, ' +
203
203
  'those edits have been overwritten by the self-heal. ' +
@@ -69,6 +69,11 @@ import { registerMutCommands } from './commands/mut-commands.js';
69
69
  import { registerFixtureCommands } from './commands/fixture-commands.js';
70
70
  import { registerReviewerCommands } from './commands/reviewer-commands.js';
71
71
  import { registerObservabilityCommands } from './commands/observability-commands.js';
72
+ // Slice 2026-07-01-strategic-compact-cli: peaks compact
73
+ // (suggest | recommend | survival | dry-run | force) — strategic-compact
74
+ // CLI primitives. See src/services/compact/ and
75
+ // src/cli/commands/compact-command.ts.
76
+ import { registerCompactCommands } from './commands/compact-command.js';
72
77
  import { applyRetention } from '../services/log/retention.js';
73
78
  import { writeLogEntry, maybeWriteStderr } from '../services/log/logger.js';
74
79
  export { printResult } from './cli-helpers.js';
@@ -279,7 +284,7 @@ Run peaks (no arguments) for a quickstart. You likely want one of:
279
284
  // Slice #13: peaks swarm * — additional subcommands (pipeline /
280
285
  // dispatch / verify / loop) are added inline in workflow-commands.ts
281
286
  // alongside the existing swarm.plan. This avoids the duplicate top-level
282
- // command conflict (peaks-cli-when-adding-a-new-subcommand-check-for-existing-top-level-first).
287
+ // command conflict (peaks-loop-when-adding-a-new-subcommand-check-for-existing-top-level-first).
283
288
  // Slice #14: peaks loop * + peaks goal compose — L4 Agent Loop sub-features.
284
289
  registerLoopCommands(program, io);
285
290
  // Slice v3.0.0 loop-eng-native-solo-a-b: peaks workflow run|plan|lint
@@ -332,5 +337,9 @@ Run peaks (no arguments) for a quickstart. You likely want one of:
332
337
  // (read-only queries over the JSONL metrics emitted from the
333
338
  // peaks request transition hook in Slice A).
334
339
  registerObservabilityCommands(program, io);
340
+ // Slice 2026-07-01-strategic-compact-cli: `peaks compact
341
+ // suggest|recommend|survival|dry-run|force` — strategic-compact CLI
342
+ // primitives. See src/cli/commands/compact-command.ts.
343
+ registerCompactCommands(program, io);
335
344
  return program;
336
345
  }
@@ -2,16 +2,16 @@
2
2
  * ECC 64 agents soft-optional integration — `peaks agent run`.
3
3
  *
4
4
  * Per spec §7.2 line 818: "64 agents — Soft Optional — 装了 L3
5
- * 直接调; 不装 L3 退化到 peaks-cli 自有少数核心诊断". The
5
+ * 直接调; 不装 L3 退化到 peaks-loop 自有少数核心诊断". The
6
6
  * canonical ECC subprocess contract is:
7
7
  *
8
8
  * npx ecc consult "<topic>" --target claude
9
9
  * npx ecc agent run <agent-name> --target <path> --json
10
10
  *
11
- * The peaks-cli `peaks agent run <name> --target <path> --json`
11
+ * The peaks-loop `peaks agent run <name> --target <path> --json`
12
12
  * CLI shells out to the second form. When ECC is missing OR
13
13
  * `agentShieldEnabled: false`, the audit completes with a
14
- * peaks-cli-only envelope.
14
+ * peaks-loop-only envelope.
15
15
  *
16
16
  * Mirrors `static-service.ts` (the ECC AgentShield wrapper from
17
17
  * L2.3 P2-a): same `subprocessRunner` injection point, same
@@ -102,7 +102,7 @@ export function runEccAgent(input, runner = defaultSubprocessRunner) {
102
102
  reason = 'flag-enabled-but-ecc-missing';
103
103
  spawned = false;
104
104
  warnings.push('`npx ecc --version` failed. Run `npx ecc --help` to install ECC, ' +
105
- 'then re-run `peaks agent run`. The peaks-cli native diagnostic ' +
105
+ 'then re-run `peaks agent run`. The peaks-loop native diagnostic ' +
106
106
  'still runs via `peaks doctor scan`.');
107
107
  }
108
108
  else {
@@ -123,7 +123,7 @@ export function runEccAgent(input, runner = defaultSubprocessRunner) {
123
123
  parsed = JSON.parse(subResult.stdout);
124
124
  }
125
125
  catch {
126
- // Non-JSON output is allowed; peaks-cli surfaces the raw
126
+ // Non-JSON output is allowed; peaks-loop surfaces the raw
127
127
  // stdout for the human reader and treats the run as
128
128
  // ok=true (the subprocess exited 0).
129
129
  parsed = undefined;
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Generalizes the original `decision-writer.ts` (which only knew how to
5
5
  * persist a `RedLineAudit` snapshot) into a polymorphic writer that
6
- * handles the 4 artifact types produced during a peaks-cli audit:
6
+ * handles the 4 artifact types produced during a peaks-loop audit:
7
7
  *
8
8
  * 1. **decision** — `RedLineAudit` snapshot → audit-decisions/<slug>.md
9
9
  * 2. **prompt** — methodology input (LLM-facing text) → audit-prompts/<slug>.md
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Generalizes the original `decision-writer.ts` (which only knew how to
5
5
  * persist a `RedLineAudit` snapshot) into a polymorphic writer that
6
- * handles the 4 artifact types produced during a peaks-cli audit:
6
+ * handles the 4 artifact types produced during a peaks-loop audit:
7
7
  *
8
8
  * 1. **decision** — `RedLineAudit` snapshot → audit-decisions/<slug>.md
9
9
  * 2. **prompt** — methodology input (LLM-facing text) → audit-prompts/<slug>.md
@@ -21,7 +21,7 @@
21
21
  * ephemeral state. The subdir is named for human discoverability; the
22
22
  * memory service's recursive scan picks it up automatically.
23
23
  *
24
- * 3. **No new CLI subcommand.** Per `peaks-cli-when-adding-a-new-subcommand-…`
24
+ * 3. **No new CLI subcommand.** Per `peaks-loop-when-adding-a-new-subcommand-…`
25
25
  * we extend the existing `peaks audit static` with a `--record` flag
26
26
  * instead of adding `peaks audit record` (which would be a new
27
27
  * top-level shape and conflict with the dev-preference red line
@@ -21,7 +21,7 @@
21
21
  * ephemeral state. The subdir is named for human discoverability; the
22
22
  * memory service's recursive scan picks it up automatically.
23
23
  *
24
- * 3. **No new CLI subcommand.** Per `peaks-cli-when-adding-a-new-subcommand-…`
24
+ * 3. **No new CLI subcommand.** Per `peaks-loop-when-adding-a-new-subcommand-…`
25
25
  * we extend the existing `peaks audit static` with a `--record` flag
26
26
  * instead of adding `peaks audit record` (which would be a new
27
27
  * top-level shape and conflict with the dev-preference red line
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * P2-a Theme C — output style enforcers.
3
3
  *
4
- * The peaks-cli dogfood rule: every skill response carries a status
5
- * header (`Peaks-Cli Skill: <name> | Peaks-Cli Gate: <gate> | Next:
4
+ * The peaks-loop dogfood rule: every skill response carries a status
5
+ * header (`Peaks-Loop Skill: <name> | Peaks-Loop Gate: <gate> | Next:
6
6
  * <action>`), the SKILL.md body has no greeting/closing-prompt
7
7
  * flattery, and the status header is detectable in the recent
8
8
  * session transcript (test-only fixture).
@@ -32,7 +32,7 @@ const CLOSING_PROMPTS = [
32
32
  /\b随时(欢迎)?(联系|提问)/i,
33
33
  /\b随时 (欢迎 )?(联系|提问)/i
34
34
  ];
35
- const STATUS_HEADER_PATTERN = /Peaks-Cli Skill:\s*peaks-[a-z0-9-]+\s*\|\s*Peaks-Cli Gate:\s*[A-Za-z0-9_.-]+\s*\|\s*Next:\s*\S/;
35
+ const STATUS_HEADER_PATTERN = /Peaks-Loop Skill:\s*peaks-[a-z0-9-]+\s*\|\s*Peaks-Loop Gate:\s*[A-Za-z0-9_.-]+\s*\|\s*Next:\s*\S/;
36
36
  export function lintNoFluff(skill) {
37
37
  const hits = [];
38
38
  for (const pattern of FLUFF_GREETINGS) {
@@ -84,10 +84,10 @@ export function lintStatusHeader(projectRoot, sessionId) {
84
84
  if (!STATUS_HEADER_PATTERN.test(body)) {
85
85
  return [{
86
86
  catalogId: 'rl-output-style-status-header-001',
87
- rule: 'Peaks-Cli status header on every response',
87
+ rule: 'Peaks-Loop status header on every response',
88
88
  file: logPath,
89
89
  line: 1,
90
- matchedText: '(no Peaks-Cli Skill / Gate / Next header found in session.log)'
90
+ matchedText: '(no Peaks-Loop Skill / Gate / Next header found in session.log)'
91
91
  }];
92
92
  }
93
93
  return [];
@@ -6,7 +6,7 @@
6
6
  *
7
7
  * Per L2 redesign §5.4. Mocks belong in `tests/fixtures/`, not inline.
8
8
  * Per `references/mock-data-placement.md` from peaks-rd: framework-aware
9
- * mock placement. peaks-cli has no UI framework, but the rule still
9
+ * mock placement. peaks-loop has no UI framework, but the rule still
10
10
  * applies for non-fixture files.
11
11
  */
12
12
  export interface MockPlacementCheckInput {
@@ -6,7 +6,7 @@
6
6
  *
7
7
  * Per L2 redesign §5.4. Mocks belong in `tests/fixtures/`, not inline.
8
8
  * Per `references/mock-data-placement.md` from peaks-rd: framework-aware
9
- * mock placement. peaks-cli has no UI framework, but the rule still
9
+ * mock placement. peaks-loop has no UI framework, but the rule still
10
10
  * applies for non-fixture files.
11
11
  */
12
12
  const MOCK_PATTERNS = [
@@ -18,7 +18,7 @@ const ROOT_FILE_ALLOWLIST = new Set([
18
18
  'tsconfig.*.json', 'vitest.config.ts', 'vite.config.ts', '.npmrc', '.nvmrc',
19
19
  // VCS / editor
20
20
  '.gitignore', '.gitattributes', '.editorconfig', '.gitkeep',
21
- // Project-local config dirs (peaks-cli convention)
21
+ // Project-local config dirs (peaks-loop convention)
22
22
  'openspec', '.peaks', '.claude', '.peaksrc',
23
23
  // Source dirs (writes into them are normal)
24
24
  'src', 'tests', 'bin', 'scripts', 'schemas', 'output-styles', 'docs',
@@ -73,9 +73,9 @@ const FRONTMATTER_APPLICABLE_TASK_LEVELS = {
73
73
  /** Theme C — Output style (3 enforcers) */
74
74
  const OUTPUT_STYLE_STATUS_HEADER = {
75
75
  id: 'rl-output-style-status-header-001',
76
- rule: 'Output style: Peaks-Cli status header on every response',
76
+ rule: 'Output style: Peaks-Loop status header on every response',
77
77
  markers: ['MANDATORY'],
78
- phrases: ['peaks-cli skill:', 'peaks-cli gate:', 'peaks-cli next:', 'status header'],
78
+ phrases: ['peaks-loop skill:', 'peaks-loop gate:', 'peaks-loop next:', 'status header'],
79
79
  enforcerRef: 'src/services/audit/enforcers/lint-output-style.ts',
80
80
  };
81
81
  const OUTPUT_STYLE_NO_FLUFF = {
@@ -118,7 +118,7 @@ const REF_NO_BASH_HEREDOC = {
118
118
  };
119
119
  const REF_NO_SUDO = {
120
120
  id: 'rl-ref-no-sudo-001',
121
- rule: 'Reference inline shell: no `sudo` (peaks-cli is user-scope)',
121
+ rule: 'Reference inline shell: no `sudo` (peaks-loop is user-scope)',
122
122
  markers: ['MUST NOT'],
123
123
  phrases: ['no sudo', 'user-scope', 'sudo command'],
124
124
  enforcerRef: 'src/services/audit/enforcers/lint-reference-shape.ts',
@@ -147,7 +147,7 @@ const REF_NO_FAKE_PROMPT = {
147
147
  };
148
148
  const REF_NO_ABSOLUTE_PATHS = {
149
149
  id: 'rl-ref-no-absolute-paths-001',
150
- rule: 'Reference code blocks: no `C:\\` or `/usr/local` (use peaks-cli primitives)',
150
+ rule: 'Reference code blocks: no `C:\\` or `/usr/local` (use peaks-loop primitives)',
151
151
  markers: ['MUST NOT'],
152
152
  phrases: ['absolute path', 'c:\\', '/usr/local', 'machine-specific'],
153
153
  enforcerRef: 'src/services/audit/enforcers/lint-reference-shape.ts',
@@ -7,7 +7,7 @@
7
7
  * (102 lint rules) on a soft-optional basis. When ECC is installed
8
8
  * AND `agentShieldEnabled: true`, the audit subprocess spawns the
9
9
  * ECC scanner and merges its findings; when either is missing, the
10
- * audit completes with peaks-cli-only findings.
10
+ * audit completes with peaks-loop-only findings.
11
11
  *
12
12
  * The subprocess is **observability enhancement**, not a structural
13
13
  * gate — every soft-fail path returns a well-formed audit report.
@@ -7,7 +7,7 @@
7
7
  * (102 lint rules) on a soft-optional basis. When ECC is installed
8
8
  * AND `agentShieldEnabled: true`, the audit subprocess spawns the
9
9
  * ECC scanner and merges its findings; when either is missing, the
10
- * audit completes with peaks-cli-only findings.
10
+ * audit completes with peaks-loop-only findings.
11
11
  *
12
12
  * The subprocess is **observability enhancement**, not a structural
13
13
  * gate — every soft-fail path returns a well-formed audit report.
@@ -52,8 +52,8 @@ function isEccInstalled(runner) {
52
52
  function runEccScan(projectRoot, runner) {
53
53
  try {
54
54
  // Per spec §7.2 line 828: the canonical ECC subprocess call uses
55
- // `--target <path>`, NOT `--project`. The peaks-cli CLI flag
56
- // (`peaks audit static --project <path>`) follows peaks-cli
55
+ // `--target <path>`, NOT `--project`. The peaks-loop CLI flag
56
+ // (`peaks audit static --project <path>`) follows peaks-loop
57
57
  // convention; the inner ecc-agentshield call follows the
58
58
  // upstream ECC contract.
59
59
  const result = runner.run('npx', ['ecc-agentshield', 'scan', '--json', '--target', projectRoot], ECC_SCAN_TIMEOUT_MS);
@@ -104,7 +104,7 @@ export function runStaticAudit(input) {
104
104
  else if (!installed) {
105
105
  // Enabled but ECC missing — soft-fail with a warning.
106
106
  warnings.push('agentShieldEnabled is true but `npx ecc-agentshield --version` failed. ' +
107
- 'Run `npx ecc-agentshield --help` to install. Audit ran with peaks-cli findings only.');
107
+ 'Run `npx ecc-agentshield --help` to install. Audit ran with peaks-loop findings only.');
108
108
  state = { spawned: false, installed: false, reason: 'flag-enabled-but-ecc-missing', findings: [] };
109
109
  }
110
110
  else {
@@ -112,7 +112,7 @@ export function runStaticAudit(input) {
112
112
  const findings = runEccScan(input.projectRoot, runner);
113
113
  state = { spawned: true, installed: true, reason: 'enabled-and-installed', findings };
114
114
  }
115
- // Always run the peaks-cli lint layer; merge ECC findings.
115
+ // Always run the peaks-loop lint layer; merge ECC findings.
116
116
  const peaksResult = runRedLinesAudit({ projectRoot: input.projectRoot });
117
117
  const mergedAudit = {
118
118
  ...peaksResult.audit,
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Red-line audit framework — types.
3
3
  *
4
- * Spec: docs/superpowers/specs/2026-06-11-peaks-cli-l1-l2-l3-redesign.md §5
4
+ * Spec: docs/superpowers/specs/2026-06-11-peaks-loop-l1-l2-l3-redesign.md §5
5
5
  * PRD: .peaks/_runtime/2026-06-11-session-f0312d/prd/requests/001-001-l2-1-redlines-audit.md
6
6
  * OpenSpec: openspec/changes/2026-06-11-l2-1-redlines-audit/
7
7
  *
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Red-line audit framework — types.
3
3
  *
4
- * Spec: docs/superpowers/specs/2026-06-11-peaks-cli-l1-l2-l3-redesign.md §5
4
+ * Spec: docs/superpowers/specs/2026-06-11-peaks-loop-l1-l2-l3-redesign.md §5
5
5
  * PRD: .peaks/_runtime/2026-06-11-session-f0312d/prd/requests/001-001-l2-1-redlines-audit.md
6
6
  * OpenSpec: openspec/changes/2026-06-11-l2-1-redlines-audit/
7
7
  *
@@ -186,7 +186,7 @@ export function detectPerfAudit(input) {
186
186
  ],
187
187
  nextActions: [
188
188
  'Verify the perf-audit skill prompt matches PRD AC-3.x output shape.',
189
- 'If the envelope shape is intentionally different, file a bug at the peaks-cli repo.'
189
+ 'If the envelope shape is intentionally different, file a bug at the peaks-loop repo.'
190
190
  ]
191
191
  };
192
192
  }
@@ -197,7 +197,7 @@ export function detectSecurityAudit(input) {
197
197
  ],
198
198
  nextActions: [
199
199
  'Verify the security-audit skill prompt matches PRD AC-2.x output shape.',
200
- 'If the envelope shape is intentionally different, file a bug at the peaks-cli repo.'
200
+ 'If the envelope shape is intentionally different, file a bug at the peaks-loop repo.'
201
201
  ]
202
202
  };
203
203
  }
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * L1a task classification service.
3
3
  *
4
- * Spec: docs/superpowers/specs/2026-06-11-peaks-cli-l1-l2-l3-redesign.md §4
4
+ * Spec: docs/superpowers/specs/2026-06-11-peaks-loop-l1-l2-l3-redesign.md §4
5
5
  *
6
6
  * Hybrid mechanism: signal-based heuristic + user override + audit log.
7
7
  *
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * L1a task classification service.
3
3
  *
4
- * Spec: docs/superpowers/specs/2026-06-11-peaks-cli-l1-l2-l3-redesign.md §4
4
+ * Spec: docs/superpowers/specs/2026-06-11-peaks-loop-l1-l2-l3-redesign.md §4
5
5
  *
6
6
  * Hybrid mechanism: signal-based heuristic + user override + audit log.
7
7
  *
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * L1a task classification — types and per-level gate sets.
3
3
  *
4
- * Spec: docs/superpowers/specs/2026-06-11-peaks-cli-l1-l2-l3-redesign.md §4
4
+ * Spec: docs/superpowers/specs/2026-06-11-peaks-loop-l1-l2-l3-redesign.md §4
5
5
  *
6
6
  * Five task levels: typo / bug / feature / refactor / migration. Each
7
7
  * level has a gate set (the "配套 gate set" — L1b) that the slice
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * L1a task classification — types and per-level gate sets.
3
3
  *
4
- * Spec: docs/superpowers/specs/2026-06-11-peaks-cli-l1-l2-l3-redesign.md §4
4
+ * Spec: docs/superpowers/specs/2026-06-11-peaks-loop-l1-l2-l3-redesign.md §4
5
5
  *
6
6
  * Five task levels: typo / bug / feature / refactor / migration. Each
7
7
  * level has a gate set (the "配套 gate set" — L1b) that the slice
@@ -6,7 +6,7 @@
6
6
  * Gate B3 already reads (`mustContain: ['## Findings', 'CRITICAL']`).
7
7
  *
8
8
  * Companion to `ocr-service.ts`: ECC is the in-skill agent option
9
- * (uses peaks-cli's own Agent tool surface), ocr is the external
9
+ * (uses peaks-loop's own Agent tool surface), ocr is the external
10
10
  * subprocess option. Both produce a second-opinion code review that
11
11
  * the parent RD loop aggregates alongside its own inline review.
12
12
  *
@@ -26,7 +26,7 @@
26
26
  *
27
27
  * ECC is shipped via the `everything-claude-code` plugin, not as a
28
28
  * separate npm package. The user installs the plugin (a one-time
29
- * marketplace step); peaks-cli does not write or read any LLM
29
+ * marketplace step); peaks-loop does not write or read any LLM
30
30
  * endpoint config for ECC. If a future ECC release needs user-
31
31
  * managed config (URL / token / model), add a `peaksConfig.ecc.*`
32
32
  * block then — not speculatively now.
@@ -210,8 +210,8 @@ export function detectEcc(input) {
210
210
  'ECC `code-review` agent returned a value that failed envelope validation (expected { passed, violations, gateAction }).'
211
211
  ],
212
212
  nextActions: [
213
- 'Verify the ECC plugin version is compatible with peaks-cli 2.11.0+ (this bridge).',
214
- 'If the envelope shape is intentionally different, file a bug at the peaks-cli repo.'
213
+ 'Verify the ECC plugin version is compatible with peaks-loop 2.11.0+ (this bridge).',
214
+ 'If the envelope shape is intentionally different, file a bug at the peaks-loop repo.'
215
215
  ]
216
216
  };
217
217
  }
@@ -6,9 +6,9 @@ export interface OcrDetectResult {
6
6
  readonly binaryPath: string | null;
7
7
  readonly version: string | null;
8
8
  /**
9
- * The peaks-cli config path that holds `peaksConfig.ocr.llm`.
9
+ * The peaks-loop config path that holds `peaksConfig.ocr.llm`.
10
10
  * The user pastes the `peaks code-review config-template` output
11
- * here. Empty string when peaks-cli has not been bootstrapped.
11
+ * here. Empty string when peaks-loop has not been bootstrapped.
12
12
  */
13
13
  readonly configPath: string;
14
14
  readonly configValid: boolean;
@@ -49,7 +49,7 @@ export interface SubprocessRunner {
49
49
  /**
50
50
  * Locate the ocr launcher script (`bin/ocr.js`) inside our own
51
51
  * node_modules tree. Returns null when the npm package is not
52
- * present (peaks-cli was installed but its dependency tree is
52
+ * present (peaks-loop was installed but its dependency tree is
53
53
  * corrupt, or the user removed it).
54
54
  *
55
55
  * Walks up from this file (dist/src/services/code-review/) to
@@ -58,7 +58,7 @@ export interface SubprocessRunner {
58
58
  export declare function resolveOcrLauncher(searchRoots: readonly string[]): string | null;
59
59
  /**
60
60
  * Resolve search roots for the ocr launcher. We look in two
61
- * places: (1) the peaks-cli install root (next to our own dist/),
61
+ * places: (1) the peaks-loop install root (next to our own dist/),
62
62
  * (2) the user's cwd.
63
63
  */
64
64
  export declare function defaultOcrSearchRoots(currentDirPath: string, cwd: string): readonly string[];
@@ -69,19 +69,19 @@ export declare function defaultOcrSearchRoots(currentDirPath: string, cwd: strin
69
69
  * the block is ready to drive the ocr subprocess.
70
70
  *
71
71
  * The block is independent of the OCR package's own
72
- * `~/.opencodereview/config.json` file. peaks-cli only ever reads
72
+ * `~/.opencodereview/config.json` file. peaks-loop only ever reads
73
73
  * from its own config; the env-var injection in `runOcrReview`
74
74
  * makes the legacy file irrelevant.
75
75
  */
76
76
  export declare function getOcrLlmMissingFields(llm: OcrLlmConfig | null): readonly string[];
77
77
  /**
78
- * Build the env-var overlay peaks-cli injects into the ocr
78
+ * Build the env-var overlay peaks-loop injects into the ocr
79
79
  * subprocess. Maps `peaksConfig.ocr.llm` onto the OCR package's
80
80
  * env-var surface (its highest-priority config source).
81
81
  */
82
82
  export declare function buildOcrEnv(llm: OcrLlmConfig): NodeJS.ProcessEnv;
83
83
  /**
84
- * The JSON template the user pastes into their peaks-cli config
84
+ * The JSON template the user pastes into their peaks-loop config
85
85
  * (`peaksConfig.ocr.llm`). Returned as a stable string so the
86
86
  * `peaks code-review config-template` CLI command can print it
87
87
  * verbatim, and so the detector's `nextActions` payload embeds
@@ -91,7 +91,7 @@ export declare function getOcrConfigTemplate(): string;
91
91
  export interface OcrDetectOptions {
92
92
  readonly cwd: string;
93
93
  /**
94
- * The peaks-cli config path that holds `peaksConfig.ocr.llm`.
94
+ * The peaks-loop config path that holds `peaksConfig.ocr.llm`.
95
95
  * Surfaced in the detect result so the user knows where to
96
96
  * paste the template.
97
97
  */
@@ -123,7 +123,7 @@ export interface OcrReviewOptions extends OcrDetectOptions {
123
123
  * The LLM endpoint config from `peaksConfig.ocr.llm` is injected
124
124
  * as env vars (`OCR_LLM_URL` / `OCR_LLM_TOKEN` / ...), which the
125
125
  * ocr package treats as the highest-priority config source. This
126
- * is how peaks-cli wires the user-managed config into the ocr
126
+ * is how peaks-loop wires the user-managed config into the ocr
127
127
  * subprocess without ever writing `~/.opencodereview/config.json`.
128
128
  */
129
129
  export declare function runOcrReview(options: OcrReviewOptions): OcrReviewResult;