peaks-loop 4.1.2 → 4.1.4
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.
- package/.claude-plugin/marketplace.json +136 -47
- package/CHANGELOG.md +112 -0
- package/README-en.md +1 -1
- package/README.md +1 -1
- package/contracts/readonly-argv-whitelist.json +211 -0
- package/dist/cli/commands/asset-command-shared.d.ts +12 -0
- package/dist/cli/commands/asset-command-shared.js +45 -0
- package/dist/cli/commands/asset-commands.d.ts +6 -1
- package/dist/cli/commands/asset-commands.js +11 -372
- package/dist/cli/commands/asset-crystallize-command.d.ts +3 -0
- package/dist/cli/commands/asset-crystallize-command.js +60 -0
- package/dist/cli/commands/asset-crystallize-payload.d.ts +47 -0
- package/dist/cli/commands/asset-crystallize-payload.js +85 -0
- package/dist/cli/commands/asset-crystallize-runner.d.ts +3 -0
- package/dist/cli/commands/asset-crystallize-runner.js +133 -0
- package/dist/cli/commands/asset-dispose-command.d.ts +3 -0
- package/dist/cli/commands/asset-dispose-command.js +99 -0
- package/dist/cli/commands/asset-status-command.d.ts +3 -0
- package/dist/cli/commands/asset-status-command.js +100 -0
- package/dist/cli/commands/audit-artifact-runners.d.ts +16 -0
- package/dist/cli/commands/audit-artifact-runners.js +170 -0
- package/dist/cli/commands/audit-command-shared.d.ts +97 -0
- package/dist/cli/commands/audit-command-shared.js +60 -0
- package/dist/cli/commands/audit-commands.d.ts +7 -31
- package/dist/cli/commands/audit-commands.js +64 -473
- package/dist/cli/commands/audit-goal-runners.d.ts +17 -0
- package/dist/cli/commands/audit-goal-runners.js +114 -0
- package/dist/cli/commands/audit-red-lines-runners.d.ts +11 -0
- package/dist/cli/commands/audit-red-lines-runners.js +43 -0
- package/dist/cli/commands/audit-refusal-data.d.ts +23 -0
- package/dist/cli/commands/audit-refusal-data.js +69 -0
- package/dist/cli/commands/audit-static-runners.d.ts +13 -0
- package/dist/cli/commands/audit-static-runners.js +139 -0
- package/dist/cli/commands/await-runners.d.ts +11 -0
- package/dist/cli/commands/await-runners.js +148 -0
- package/dist/cli/commands/baseline-audit-command.d.ts +3 -0
- package/dist/cli/commands/baseline-audit-command.js +64 -0
- package/dist/cli/commands/baseline-command-shared.d.ts +23 -0
- package/dist/cli/commands/baseline-command-shared.js +39 -0
- package/dist/cli/commands/baseline-commands.js +33 -313
- package/dist/cli/commands/baseline-freeze-commands.d.ts +4 -0
- package/dist/cli/commands/baseline-freeze-commands.js +81 -0
- package/dist/cli/commands/baseline-guard-command.d.ts +3 -0
- package/dist/cli/commands/baseline-guard-command.js +52 -0
- package/dist/cli/commands/baseline-read-commands.d.ts +5 -0
- package/dist/cli/commands/baseline-read-commands.js +72 -0
- package/dist/cli/commands/baseline-rollback-commands.d.ts +4 -0
- package/dist/cli/commands/baseline-rollback-commands.js +88 -0
- package/dist/cli/commands/classify-downgrade-command.d.ts +9 -0
- package/dist/cli/commands/classify-downgrade-command.js +21 -0
- package/dist/cli/commands/classify-run-command.d.ts +9 -0
- package/dist/cli/commands/classify-run-command.js +73 -0
- package/dist/cli/commands/classify-signals.d.ts +5 -0
- package/dist/cli/commands/classify-signals.js +104 -0
- package/dist/cli/commands/code-auto-compact-command.d.ts +3 -0
- package/dist/cli/commands/code-auto-compact-command.js +124 -0
- package/dist/cli/commands/code-auto-compact-envelope.d.ts +22 -0
- package/dist/cli/commands/code-auto-compact-envelope.js +39 -0
- package/dist/cli/commands/code-context-audit-command.d.ts +3 -0
- package/dist/cli/commands/code-context-audit-command.js +68 -0
- package/dist/cli/commands/code-context-now-command.d.ts +3 -0
- package/dist/cli/commands/code-context-now-command.js +124 -0
- package/dist/cli/commands/code-context-now-envelope.d.ts +66 -0
- package/dist/cli/commands/code-context-now-envelope.js +136 -0
- package/dist/cli/commands/code-context-now-mapping.d.ts +27 -0
- package/dist/cli/commands/code-context-now-mapping.js +43 -0
- package/dist/cli/commands/code-emit-handoff-command.d.ts +3 -0
- package/dist/cli/commands/code-emit-handoff-command.js +136 -0
- package/dist/cli/commands/code-gate-step-08-command.d.ts +3 -0
- package/dist/cli/commands/code-gate-step-08-command.js +155 -0
- package/dist/cli/commands/code-post-compact-detect-command.d.ts +3 -0
- package/dist/cli/commands/code-post-compact-detect-command.js +50 -0
- package/dist/cli/commands/code-runtime-commands.d.ts +9 -43
- package/dist/cli/commands/code-runtime-commands.js +20 -672
- package/dist/cli/commands/code-runtime-session.d.ts +1 -0
- package/dist/cli/commands/code-runtime-session.js +15 -0
- package/dist/cli/commands/codegraph-command-options.d.ts +22 -0
- package/dist/cli/commands/codegraph-command-options.js +22 -0
- package/dist/cli/commands/codegraph-commands.d.ts +2 -2
- package/dist/cli/commands/codegraph-commands.js +14 -397
- package/dist/cli/commands/codegraph-config-restore-command.d.ts +3 -0
- package/dist/cli/commands/codegraph-config-restore-command.js +200 -0
- package/dist/cli/commands/codegraph-proxy-commands.d.ts +10 -0
- package/dist/cli/commands/codegraph-proxy-commands.js +159 -0
- package/dist/cli/commands/codegraph-repair-commands.d.ts +3 -0
- package/dist/cli/commands/codegraph-repair-commands.js +94 -0
- package/dist/cli/commands/codegraph-status-command.d.ts +1 -1
- package/dist/cli/commands/codegraph-status-command.js +27 -214
- package/dist/cli/commands/codegraph-status-integrity.d.ts +44 -0
- package/dist/cli/commands/codegraph-status-integrity.js +121 -0
- package/dist/cli/commands/codegraph-status-json.d.ts +5 -0
- package/dist/cli/commands/codegraph-status-json.js +127 -0
- package/dist/cli/commands/compact-command.d.ts +6 -2
- package/dist/cli/commands/compact-command.js +12 -559
- package/dist/cli/commands/compact-dry-run-command.d.ts +3 -0
- package/dist/cli/commands/compact-dry-run-command.js +87 -0
- package/dist/cli/commands/compact-force-command.d.ts +3 -0
- package/dist/cli/commands/compact-force-command.js +98 -0
- package/dist/cli/commands/compact-harness-window-command.d.ts +3 -0
- package/dist/cli/commands/compact-harness-window-command.js +174 -0
- package/dist/cli/commands/compact-history-command.d.ts +3 -0
- package/dist/cli/commands/compact-history-command.js +89 -0
- package/dist/cli/commands/compact-read-commands.d.ts +3 -0
- package/dist/cli/commands/compact-read-commands.js +123 -0
- package/dist/cli/commands/compact-settle-command.d.ts +3 -0
- package/dist/cli/commands/compact-settle-command.js +130 -0
- package/dist/cli/commands/compact-shared.d.ts +9 -0
- package/dist/cli/commands/compact-shared.js +26 -0
- package/dist/cli/commands/container-command-shared.d.ts +60 -0
- package/dist/cli/commands/container-command-shared.js +52 -0
- package/dist/cli/commands/container-commands.d.ts +1 -1
- package/dist/cli/commands/container-commands.js +4 -216
- package/dist/cli/commands/container-release-command.d.ts +3 -0
- package/dist/cli/commands/container-release-command.js +105 -0
- package/dist/cli/commands/container-spawn-command.d.ts +3 -0
- package/dist/cli/commands/container-spawn-command.js +148 -0
- package/dist/cli/commands/context-check-command.d.ts +3 -0
- package/dist/cli/commands/context-check-command.js +81 -0
- package/dist/cli/commands/context-commands.d.ts +2 -7
- package/dist/cli/commands/context-commands.js +6 -276
- package/dist/cli/commands/context-layer-command.d.ts +3 -0
- package/dist/cli/commands/context-layer-command.js +34 -0
- package/dist/cli/commands/context-layer-fetchers.d.ts +15 -0
- package/dist/cli/commands/context-layer-fetchers.js +162 -0
- package/dist/cli/commands/context-status-command.d.ts +17 -0
- package/dist/cli/commands/context-status-command.js +41 -0
- package/dist/cli/commands/contract-write-command.d.ts +3 -0
- package/dist/cli/commands/contract-write-command.js +144 -0
- package/dist/cli/commands/core/doctor-bindings.d.ts +17 -0
- package/dist/cli/commands/core/doctor-bindings.js +30 -0
- package/dist/cli/commands/core/doctor-command.d.ts +4 -18
- package/dist/cli/commands/core/doctor-command.js +2 -323
- package/dist/cli/commands/core/doctor-logs.d.ts +8 -0
- package/dist/cli/commands/core/doctor-logs.js +32 -0
- package/dist/cli/commands/core/doctor-probes.d.ts +3 -0
- package/dist/cli/commands/core/doctor-probes.js +55 -0
- package/dist/cli/commands/core/doctor-run-command.d.ts +12 -0
- package/dist/cli/commands/core/doctor-run-command.js +172 -0
- package/dist/cli/commands/core/doctor-summary.d.ts +7 -0
- package/dist/cli/commands/core/doctor-summary.js +39 -0
- package/dist/cli/commands/core/memory-command-shared.d.ts +25 -0
- package/dist/cli/commands/core/memory-command-shared.js +20 -0
- package/dist/cli/commands/core/memory-command.d.ts +1 -1
- package/dist/cli/commands/core/memory-command.js +6 -227
- package/dist/cli/commands/core/memory-delegated-verbs.d.ts +4 -0
- package/dist/cli/commands/core/memory-delegated-verbs.js +178 -0
- package/dist/cli/commands/core/memory-extract-command.d.ts +3 -0
- package/dist/cli/commands/core/memory-extract-command.js +90 -0
- package/dist/cli/commands/core/memory-sync-command.d.ts +3 -0
- package/dist/cli/commands/core/memory-sync-command.js +38 -0
- package/dist/cli/commands/core/session-command.d.ts +1 -1
- package/dist/cli/commands/core/session-command.js +12 -206
- package/dist/cli/commands/core/session-info-command.d.ts +3 -0
- package/dist/cli/commands/core/session-info-command.js +142 -0
- package/dist/cli/commands/core/session-verb-commands.d.ts +5 -0
- package/dist/cli/commands/core/session-verb-commands.js +58 -0
- package/dist/cli/commands/core/skill-command.d.ts +1 -44
- package/dist/cli/commands/core/skill-command.js +13 -541
- package/dist/cli/commands/core/skill-context-verdict.d.ts +38 -0
- package/dist/cli/commands/core/skill-context-verdict.js +63 -0
- package/dist/cli/commands/core/skill-generated-config-notice.d.ts +41 -0
- package/dist/cli/commands/core/skill-generated-config-notice.js +75 -0
- package/dist/cli/commands/core/skill-heartbeat-commands.d.ts +3 -0
- package/dist/cli/commands/core/skill-heartbeat-commands.js +50 -0
- package/dist/cli/commands/core/skill-presence-commands.d.ts +3 -0
- package/dist/cli/commands/core/skill-presence-commands.js +123 -0
- package/dist/cli/commands/core/skill-presence-housekeeping-commands.d.ts +3 -0
- package/dist/cli/commands/core/skill-presence-housekeeping-commands.js +165 -0
- package/dist/cli/commands/core/skill-registry-commands.d.ts +3 -0
- package/dist/cli/commands/core/skill-registry-commands.js +117 -0
- package/dist/cli/commands/core/skill-runbook-command.d.ts +3 -0
- package/dist/cli/commands/core/skill-runbook-command.js +29 -0
- package/dist/cli/commands/core/standards-command.d.ts +1 -24
- package/dist/cli/commands/core/standards-command.js +33 -201
- package/dist/cli/commands/core/standards-init-command.d.ts +3 -0
- package/dist/cli/commands/core/standards-init-command.js +87 -0
- package/dist/cli/commands/core/standards-lint.d.ts +24 -0
- package/dist/cli/commands/core/standards-lint.js +57 -0
- package/dist/cli/commands/core/standards-migrate-command.d.ts +3 -0
- package/dist/cli/commands/core/standards-migrate-command.js +57 -0
- package/dist/cli/commands/cron-scheduler-commands.d.ts +5 -1
- package/dist/cli/commands/cron-scheduler-commands.js +36 -206
- package/dist/cli/commands/cron-scheduler-run-once-command.d.ts +7 -0
- package/dist/cli/commands/cron-scheduler-run-once-command.js +35 -0
- package/dist/cli/commands/cron-scheduler-shared.d.ts +6 -0
- package/dist/cli/commands/cron-scheduler-shared.js +48 -0
- package/dist/cli/commands/cron-scheduler-start-command.d.ts +7 -0
- package/dist/cli/commands/cron-scheduler-start-command.js +65 -0
- package/dist/cli/commands/cron-scheduler-status-command.d.ts +7 -0
- package/dist/cli/commands/cron-scheduler-status-command.js +46 -0
- package/dist/cli/commands/cron-scheduler-stop-command.d.ts +7 -0
- package/dist/cli/commands/cron-scheduler-stop-command.js +61 -0
- package/dist/cli/commands/dispatch-command-spec.d.ts +2 -0
- package/dist/cli/commands/dispatch-command-spec.js +62 -0
- package/dist/cli/commands/dispatch-commands.js +159 -775
- package/dist/cli/commands/dispatch-dag-envelope.d.ts +41 -0
- package/dist/cli/commands/dispatch-dag-envelope.js +49 -0
- package/dist/cli/commands/dispatch-dag-failure.d.ts +18 -0
- package/dist/cli/commands/dispatch-dag-failure.js +16 -0
- package/dist/cli/commands/dispatch-dag-preflight.d.ts +51 -0
- package/dist/cli/commands/dispatch-dag-preflight.js +105 -0
- package/dist/cli/commands/dispatch-dag-runners.d.ts +48 -0
- package/dist/cli/commands/dispatch-dag-runners.js +73 -0
- package/dist/cli/commands/dispatch-detached-branch.d.ts +3 -0
- package/dist/cli/commands/dispatch-detached-branch.js +58 -0
- package/dist/cli/commands/dispatch-envelope.d.ts +36 -0
- package/dist/cli/commands/dispatch-envelope.js +104 -0
- package/dist/cli/commands/dispatch-from-dag.d.ts +27 -0
- package/dist/cli/commands/dispatch-from-dag.js +87 -257
- package/dist/cli/commands/dispatch-isolation-lease.d.ts +17 -0
- package/dist/cli/commands/dispatch-isolation-lease.js +149 -0
- package/dist/cli/commands/dispatch-preflight.d.ts +7 -0
- package/dist/cli/commands/dispatch-preflight.js +105 -0
- package/dist/cli/commands/dispatch-prompt-blocks.d.ts +10 -0
- package/dist/cli/commands/dispatch-prompt-blocks.js +56 -0
- package/dist/cli/commands/dispatch-prompt-composition.d.ts +30 -0
- package/dist/cli/commands/dispatch-prompt-composition.js +171 -0
- package/dist/cli/commands/dispatch-record-write.d.ts +24 -0
- package/dist/cli/commands/dispatch-record-write.js +96 -0
- package/dist/cli/commands/dispatch-tool-call.d.ts +15 -0
- package/dist/cli/commands/dispatch-tool-call.js +128 -0
- package/dist/cli/commands/evolution-command-shared.d.ts +78 -0
- package/dist/cli/commands/evolution-command-shared.js +107 -0
- package/dist/cli/commands/evolution-commands.d.ts +11 -1
- package/dist/cli/commands/evolution-commands.js +19 -350
- package/dist/cli/commands/evolution-evaluate-command.d.ts +24 -0
- package/dist/cli/commands/evolution-evaluate-command.js +138 -0
- package/dist/cli/commands/evolution-propose-command.d.ts +23 -0
- package/dist/cli/commands/evolution-propose-command.js +145 -0
- package/dist/cli/commands/evolution-status-command.d.ts +17 -0
- package/dist/cli/commands/evolution-status-command.js +41 -0
- package/dist/cli/commands/evolution-verdict-commands.d.ts +30 -0
- package/dist/cli/commands/evolution-verdict-commands.js +100 -0
- package/dist/cli/commands/final-review-command-envelopes.d.ts +44 -0
- package/dist/cli/commands/final-review-command-envelopes.js +100 -0
- package/dist/cli/commands/final-review-command-shared.d.ts +52 -0
- package/dist/cli/commands/final-review-command-shared.js +35 -0
- package/dist/cli/commands/final-review-commands.d.ts +7 -27
- package/dist/cli/commands/final-review-commands.js +13 -240
- package/dist/cli/commands/final-review-prepare-command.d.ts +3 -0
- package/dist/cli/commands/final-review-prepare-command.js +200 -0
- package/dist/cli/commands/finalize-accumulator.d.ts +44 -0
- package/dist/cli/commands/finalize-accumulator.js +55 -0
- package/dist/cli/commands/finalize-branches.d.ts +34 -0
- package/dist/cli/commands/finalize-branches.js +119 -0
- package/dist/cli/commands/finalize-runners.d.ts +3 -0
- package/dist/cli/commands/finalize-runners.js +92 -0
- package/dist/cli/commands/finalize-selection.d.ts +65 -0
- package/dist/cli/commands/finalize-selection.js +35 -0
- package/dist/cli/commands/gate-commands.js +26 -8
- package/dist/cli/commands/governance-classify-contract-commands.d.ts +23 -9
- package/dist/cli/commands/governance-classify-contract-commands.js +26 -269
- package/dist/cli/commands/hooks-command-shared.d.ts +42 -0
- package/dist/cli/commands/hooks-command-shared.js +32 -0
- package/dist/cli/commands/hooks-commands.d.ts +20 -0
- package/dist/cli/commands/hooks-commands.js +75 -309
- package/dist/cli/commands/hooks-install-envelopes.d.ts +6 -0
- package/dist/cli/commands/hooks-install-envelopes.js +144 -0
- package/dist/cli/commands/hooks-status-command.d.ts +3 -0
- package/dist/cli/commands/hooks-status-command.js +93 -0
- package/dist/cli/commands/hooks-uninstall-command.d.ts +3 -0
- package/dist/cli/commands/hooks-uninstall-command.js +43 -0
- package/dist/cli/commands/job-checkpoint-commands.d.ts +3 -0
- package/dist/cli/commands/job-checkpoint-commands.js +157 -0
- package/dist/cli/commands/job-command-shared.d.ts +109 -0
- package/dist/cli/commands/job-command-shared.js +72 -0
- package/dist/cli/commands/job-commands.d.ts +4 -64
- package/dist/cli/commands/job-commands.js +42 -552
- package/dist/cli/commands/job-cost-check-command.d.ts +3 -0
- package/dist/cli/commands/job-cost-check-command.js +41 -0
- package/dist/cli/commands/job-init-status-commands.d.ts +3 -0
- package/dist/cli/commands/job-init-status-commands.js +149 -0
- package/dist/cli/commands/job-run-commands.d.ts +3 -0
- package/dist/cli/commands/job-run-commands.js +97 -0
- package/dist/cli/commands/job-state-root.d.ts +35 -0
- package/dist/cli/commands/job-state-root.js +76 -0
- package/dist/cli/commands/loop-command-shared.d.ts +31 -0
- package/dist/cli/commands/loop-command-shared.js +15 -0
- package/dist/cli/commands/loop-commands.d.ts +12 -17
- package/dist/cli/commands/loop-commands.js +56 -238
- package/dist/cli/commands/loop-eval-capture-index.d.ts +4 -0
- package/dist/cli/commands/loop-eval-capture-index.js +44 -0
- package/dist/cli/commands/loop-eval-commands.d.ts +8 -5
- package/dist/cli/commands/loop-eval-commands.js +12 -626
- package/dist/cli/commands/loop-eval-eval-command.d.ts +3 -0
- package/dist/cli/commands/loop-eval-eval-command.js +168 -0
- package/dist/cli/commands/loop-eval-monotonic-command.d.ts +3 -0
- package/dist/cli/commands/loop-eval-monotonic-command.js +90 -0
- package/dist/cli/commands/loop-eval-parents.d.ts +7 -0
- package/dist/cli/commands/loop-eval-parents.js +20 -0
- package/dist/cli/commands/loop-eval-run-code.d.ts +7 -0
- package/dist/cli/commands/loop-eval-run-code.js +40 -0
- package/dist/cli/commands/loop-eval-run-command.d.ts +3 -0
- package/dist/cli/commands/loop-eval-run-command.js +113 -0
- package/dist/cli/commands/loop-eval-spec-commands.d.ts +3 -0
- package/dist/cli/commands/loop-eval-spec-commands.js +165 -0
- package/dist/cli/commands/loop-eval-spec-lint-command.d.ts +3 -0
- package/dist/cli/commands/loop-eval-spec-lint-command.js +42 -0
- package/dist/cli/commands/loop-eval-workflow-commands.d.ts +3 -0
- package/dist/cli/commands/loop-eval-workflow-commands.js +141 -0
- package/dist/cli/commands/loop-export-command.d.ts +3 -0
- package/dist/cli/commands/loop-export-command.js +73 -0
- package/dist/cli/commands/loop-goal-compose-command.d.ts +3 -0
- package/dist/cli/commands/loop-goal-compose-command.js +36 -0
- package/dist/cli/commands/loop-import-command.d.ts +3 -0
- package/dist/cli/commands/loop-import-command.js +86 -0
- package/dist/cli/commands/loop-placeholder-commands.d.ts +3 -0
- package/dist/cli/commands/loop-placeholder-commands.js +52 -0
- package/dist/cli/commands/mcp-commands.d.ts +10 -0
- package/dist/cli/commands/mcp-commands.js +157 -0
- package/dist/cli/commands/memory-command-shared.d.ts +59 -0
- package/dist/cli/commands/memory-command-shared.js +39 -0
- package/dist/cli/commands/memory-commands.d.ts +6 -79
- package/dist/cli/commands/memory-commands.js +19 -309
- package/dist/cli/commands/memory-ingest-command.d.ts +3 -0
- package/dist/cli/commands/memory-ingest-command.js +50 -0
- package/dist/cli/commands/memory-list-command.d.ts +16 -0
- package/dist/cli/commands/memory-list-command.js +129 -0
- package/dist/cli/commands/memory-reindex-command.d.ts +9 -0
- package/dist/cli/commands/memory-reindex-command.js +78 -0
- package/dist/cli/commands/memory-rotate-command.d.ts +3 -0
- package/dist/cli/commands/memory-rotate-command.js +55 -0
- package/dist/cli/commands/memory-search-command.d.ts +7 -0
- package/dist/cli/commands/memory-search-command.js +46 -0
- package/dist/cli/commands/openspec-archive-command.d.ts +3 -0
- package/dist/cli/commands/openspec-archive-command.js +55 -0
- package/dist/cli/commands/openspec-command-shared.d.ts +62 -0
- package/dist/cli/commands/openspec-command-shared.js +135 -0
- package/dist/cli/commands/openspec-commands.d.ts +1 -1
- package/dist/cli/commands/openspec-commands.js +33 -306
- package/dist/cli/commands/openspec-from-doctor-command.d.ts +3 -0
- package/dist/cli/commands/openspec-from-doctor-command.js +66 -0
- package/dist/cli/commands/openspec-init-command.d.ts +3 -0
- package/dist/cli/commands/openspec-init-command.js +49 -0
- package/dist/cli/commands/openspec-list-command.d.ts +3 -0
- package/dist/cli/commands/openspec-list-command.js +27 -0
- package/dist/cli/commands/openspec-render-command.d.ts +3 -0
- package/dist/cli/commands/openspec-render-command.js +33 -0
- package/dist/cli/commands/openspec-show-command.d.ts +3 -0
- package/dist/cli/commands/openspec-show-command.js +33 -0
- package/dist/cli/commands/openspec-to-rd-command.d.ts +3 -0
- package/dist/cli/commands/openspec-to-rd-command.js +33 -0
- package/dist/cli/commands/openspec-validate-command.d.ts +3 -0
- package/dist/cli/commands/openspec-validate-command.js +45 -0
- package/dist/cli/commands/playwright-browser-command.d.ts +8 -0
- package/dist/cli/commands/playwright-browser-command.js +61 -0
- package/dist/cli/commands/playwright-commands.d.ts +10 -62
- package/dist/cli/commands/playwright-commands.js +77 -400
- package/dist/cli/commands/playwright-envelope.d.ts +8 -0
- package/dist/cli/commands/playwright-envelope.js +29 -0
- package/dist/cli/commands/playwright-ls-stop-commands.d.ts +4 -0
- package/dist/cli/commands/playwright-ls-stop-commands.js +74 -0
- package/dist/cli/commands/playwright-session-store.d.ts +65 -0
- package/dist/cli/commands/playwright-session-store.js +189 -0
- package/dist/cli/commands/project-commands.d.ts +19 -0
- package/dist/cli/commands/project-commands.js +98 -259
- package/dist/cli/commands/project-context-command.d.ts +3 -0
- package/dist/cli/commands/project-context-command.js +44 -0
- package/dist/cli/commands/project-dashboard-command.d.ts +3 -0
- package/dist/cli/commands/project-dashboard-command.js +74 -0
- package/dist/cli/commands/project-knowledge-command.d.ts +3 -0
- package/dist/cli/commands/project-knowledge-command.js +48 -0
- package/dist/cli/commands/project-memories-show-command.d.ts +3 -0
- package/dist/cli/commands/project-memories-show-command.js +87 -0
- package/dist/cli/commands/project-memory-index-command.d.ts +3 -0
- package/dist/cli/commands/project-memory-index-command.js +31 -0
- package/dist/cli/commands/qa-archive-screenshots-command.d.ts +3 -0
- package/dist/cli/commands/qa-archive-screenshots-command.js +53 -0
- package/dist/cli/commands/qa-commands.d.ts +14 -87
- package/dist/cli/commands/qa-commands.js +17 -315
- package/dist/cli/commands/qa-context-prestep.d.ts +1 -0
- package/dist/cli/commands/qa-context-prestep.js +34 -0
- package/dist/cli/commands/qa-run-command.d.ts +3 -0
- package/dist/cli/commands/qa-run-command.js +105 -0
- package/dist/cli/commands/qa-run-options.d.ts +23 -0
- package/dist/cli/commands/qa-run-options.js +31 -0
- package/dist/cli/commands/qa-run-slice.d.ts +41 -0
- package/dist/cli/commands/qa-run-slice.js +145 -0
- package/dist/cli/commands/release-canary-command.d.ts +28 -0
- package/dist/cli/commands/release-canary-command.js +129 -0
- package/dist/cli/commands/release-command-shared.d.ts +13 -0
- package/dist/cli/commands/release-command-shared.js +18 -0
- package/dist/cli/commands/release-commands.d.ts +10 -18
- package/dist/cli/commands/release-commands.js +25 -298
- package/dist/cli/commands/release-done-command.d.ts +3 -0
- package/dist/cli/commands/release-done-command.js +64 -0
- package/dist/cli/commands/release-hotfix-command.d.ts +3 -0
- package/dist/cli/commands/release-hotfix-command.js +50 -0
- package/dist/cli/commands/release-plan-command.d.ts +3 -0
- package/dist/cli/commands/release-plan-command.js +33 -0
- package/dist/cli/commands/release-precheck-command.d.ts +3 -0
- package/dist/cli/commands/release-precheck-command.js +28 -0
- package/dist/cli/commands/release-promote-command.d.ts +3 -0
- package/dist/cli/commands/release-promote-command.js +34 -0
- package/dist/cli/commands/release-rollback-command.d.ts +3 -0
- package/dist/cli/commands/release-rollback-command.js +33 -0
- package/dist/cli/commands/release-watch-command.d.ts +3 -0
- package/dist/cli/commands/release-watch-command.js +44 -0
- package/dist/cli/commands/request-command-options.d.ts +49 -0
- package/dist/cli/commands/request-command-options.js +1 -0
- package/dist/cli/commands/request-commands.d.ts +3 -9
- package/dist/cli/commands/request-commands.js +17 -522
- package/dist/cli/commands/request-init-command.d.ts +3 -0
- package/dist/cli/commands/request-init-command.js +100 -0
- package/dist/cli/commands/request-lint-command.d.ts +3 -0
- package/dist/cli/commands/request-lint-command.js +50 -0
- package/dist/cli/commands/request-list-command.d.ts +10 -0
- package/dist/cli/commands/request-list-command.js +53 -0
- package/dist/cli/commands/request-repair-status-command.d.ts +3 -0
- package/dist/cli/commands/request-repair-status-command.js +61 -0
- package/dist/cli/commands/request-show-command.d.ts +3 -0
- package/dist/cli/commands/request-show-command.js +56 -0
- package/dist/cli/commands/request-transition-command.d.ts +3 -0
- package/dist/cli/commands/request-transition-command.js +122 -0
- package/dist/cli/commands/request-transition-failures.d.ts +8 -0
- package/dist/cli/commands/request-transition-failures.js +90 -0
- package/dist/cli/commands/request-transition-hooks.d.ts +50 -0
- package/dist/cli/commands/request-transition-hooks.js +115 -0
- package/dist/cli/commands/request-transition-preflight.d.ts +10 -0
- package/dist/cli/commands/request-transition-preflight.js +107 -0
- package/dist/cli/commands/scan-command-shared.d.ts +96 -0
- package/dist/cli/commands/scan-command-shared.js +83 -0
- package/dist/cli/commands/scan-commands.d.ts +3 -2
- package/dist/cli/commands/scan-commands.js +23 -463
- package/dist/cli/commands/scan-inventory-commands.d.ts +3 -0
- package/dist/cli/commands/scan-inventory-commands.js +96 -0
- package/dist/cli/commands/scan-project-commands.d.ts +3 -0
- package/dist/cli/commands/scan-project-commands.js +65 -0
- package/dist/cli/commands/scan-scope-commands.d.ts +3 -0
- package/dist/cli/commands/scan-scope-commands.js +149 -0
- package/dist/cli/commands/scan-scope-helpers.d.ts +8 -0
- package/dist/cli/commands/scan-scope-helpers.js +54 -0
- package/dist/cli/commands/scan-structural-commands.d.ts +3 -0
- package/dist/cli/commands/scan-structural-commands.js +113 -0
- package/dist/cli/commands/sediment-argv-flags.d.ts +54 -0
- package/dist/cli/commands/sediment-argv-flags.js +116 -0
- package/dist/cli/commands/sediment-command-shared.d.ts +15 -0
- package/dist/cli/commands/sediment-command-shared.js +5 -0
- package/dist/cli/commands/sediment-commands.d.ts +35 -59
- package/dist/cli/commands/sediment-commands.js +36 -590
- package/dist/cli/commands/sediment-pool-commands.d.ts +9 -0
- package/dist/cli/commands/sediment-pool-commands.js +185 -0
- package/dist/cli/commands/sediment-query-commands.d.ts +4 -0
- package/dist/cli/commands/sediment-query-commands.js +94 -0
- package/dist/cli/commands/sediment-release-commands.d.ts +8 -0
- package/dist/cli/commands/sediment-release-commands.js +232 -0
- package/dist/cli/commands/share-commands.d.ts +12 -68
- package/dist/cli/commands/share-commands.js +47 -556
- package/dist/cli/commands/share-error-hints.d.ts +14 -0
- package/dist/cli/commands/share-error-hints.js +38 -0
- package/dist/cli/commands/share-identity.d.ts +13 -0
- package/dist/cli/commands/share-identity.js +22 -0
- package/dist/cli/commands/share-record-paths.d.ts +37 -0
- package/dist/cli/commands/share-record-paths.js +68 -0
- package/dist/cli/commands/share-runners.d.ts +3 -0
- package/dist/cli/commands/share-runners.js +158 -0
- package/dist/cli/commands/shared-read-runners.d.ts +3 -0
- package/dist/cli/commands/shared-read-runners.js +51 -0
- package/dist/cli/commands/slice-check-command.d.ts +3 -0
- package/dist/cli/commands/slice-check-command.js +54 -0
- package/dist/cli/commands/slice-commands.d.ts +2 -22
- package/dist/cli/commands/slice-commands.js +18 -517
- package/dist/cli/commands/slice-decompose-artifacts.d.ts +18 -0
- package/dist/cli/commands/slice-decompose-artifacts.js +79 -0
- package/dist/cli/commands/slice-decompose-command.d.ts +3 -0
- package/dist/cli/commands/slice-decompose-command.js +123 -0
- package/dist/cli/commands/slice-list-commands.d.ts +3 -0
- package/dist/cli/commands/slice-list-commands.js +182 -0
- package/dist/cli/commands/slice-pick-command.d.ts +3 -0
- package/dist/cli/commands/slice-pick-command.js +60 -0
- package/dist/cli/commands/slice-plan-command.d.ts +24 -0
- package/dist/cli/commands/slice-plan-command.js +111 -0
- package/dist/cli/commands/sop-advance-command.d.ts +3 -0
- package/dist/cli/commands/sop-advance-command.js +160 -0
- package/dist/cli/commands/sop-check-command.d.ts +3 -0
- package/dist/cli/commands/sop-check-command.js +44 -0
- package/dist/cli/commands/sop-command-shared.d.ts +23 -0
- package/dist/cli/commands/sop-command-shared.js +18 -0
- package/dist/cli/commands/sop-commands.d.ts +15 -1
- package/dist/cli/commands/sop-commands.js +26 -240
- package/dist/cli/commands/sop-init-command.d.ts +3 -0
- package/dist/cli/commands/sop-init-command.js +51 -0
- package/dist/cli/commands/sop-lint-command.d.ts +3 -0
- package/dist/cli/commands/sop-lint-command.js +64 -0
- package/dist/cli/commands/sop-register-command.d.ts +3 -0
- package/dist/cli/commands/sop-register-command.js +48 -0
- package/dist/cli/commands/sop-registry-command.d.ts +3 -0
- package/dist/cli/commands/sop-registry-command.js +30 -0
- package/dist/cli/commands/statusline-command-shared.d.ts +73 -0
- package/dist/cli/commands/statusline-command-shared.js +90 -0
- package/dist/cli/commands/statusline-commands.d.ts +1 -19
- package/dist/cli/commands/statusline-commands.js +48 -287
- package/dist/cli/commands/statusline-compact-command.d.ts +4 -0
- package/dist/cli/commands/statusline-compact-command.js +54 -0
- package/dist/cli/commands/statusline-install-command.d.ts +3 -0
- package/dist/cli/commands/statusline-install-command.js +48 -0
- package/dist/cli/commands/statusline-render-command.d.ts +9 -0
- package/dist/cli/commands/statusline-render-command.js +55 -0
- package/dist/cli/commands/statusline-status-command.d.ts +3 -0
- package/dist/cli/commands/statusline-status-command.js +23 -0
- package/dist/cli/commands/statusline-uninstall-command.d.ts +3 -0
- package/dist/cli/commands/statusline-uninstall-command.js +23 -0
- package/dist/cli/commands/test-command-run-helpers.d.ts +27 -0
- package/dist/cli/commands/test-command-run-helpers.js +73 -0
- package/dist/cli/commands/test-command-runner-resolution.d.ts +57 -0
- package/dist/cli/commands/test-command-runner-resolution.js +183 -0
- package/dist/cli/commands/test-commands.d.ts +8 -56
- package/dist/cli/commands/test-commands.js +26 -249
- package/dist/cli/commands/vm-command-shared.d.ts +23 -0
- package/dist/cli/commands/vm-command-shared.js +23 -0
- package/dist/cli/commands/vm-commands.d.ts +1 -28
- package/dist/cli/commands/vm-commands.js +36 -270
- package/dist/cli/commands/vm-hypervisor-runtime.d.ts +15 -0
- package/dist/cli/commands/vm-hypervisor-runtime.js +64 -0
- package/dist/cli/commands/vm-release-command.d.ts +5 -0
- package/dist/cli/commands/vm-release-command.js +101 -0
- package/dist/cli/commands/vm-spawn-command.d.ts +5 -0
- package/dist/cli/commands/vm-spawn-command.js +177 -0
- package/dist/cli/commands/web-command-shared.d.ts +12 -0
- package/dist/cli/commands/web-command-shared.js +30 -0
- package/dist/cli/commands/web-commands.d.ts +7 -14
- package/dist/cli/commands/web-commands.js +6 -314
- package/dist/cli/commands/web-install-command.d.ts +10 -0
- package/dist/cli/commands/web-install-command.js +116 -0
- package/dist/cli/commands/web-lifecycle-commands.d.ts +9 -30
- package/dist/cli/commands/web-lifecycle-commands.js +14 -322
- package/dist/cli/commands/web-login-command.d.ts +14 -0
- package/dist/cli/commands/web-login-command.js +189 -0
- package/dist/cli/commands/web-op-payload.d.ts +22 -0
- package/dist/cli/commands/web-op-payload.js +89 -0
- package/dist/cli/commands/web-op-refusals.d.ts +37 -0
- package/dist/cli/commands/web-op-refusals.js +73 -0
- package/dist/cli/commands/web-op-runner.d.ts +14 -0
- package/dist/cli/commands/web-op-runner.js +166 -0
- package/dist/cli/commands/web-status-command.d.ts +4 -0
- package/dist/cli/commands/web-status-command.js +32 -0
- package/dist/cli/commands/web-stop-command.d.ts +10 -0
- package/dist/cli/commands/web-stop-command.js +59 -0
- package/dist/cli/commands/web-verb-specs.d.ts +18 -0
- package/dist/cli/commands/web-verb-specs.js +66 -0
- package/dist/cli/commands/workflow-command-shared.d.ts +102 -0
- package/dist/cli/commands/workflow-command-shared.js +74 -0
- package/dist/cli/commands/workflow-commands.d.ts +10 -1
- package/dist/cli/commands/workflow-commands.js +6 -594
- package/dist/cli/commands/workflow-gate-commands.d.ts +3 -0
- package/dist/cli/commands/workflow-gate-commands.js +116 -0
- package/dist/cli/commands/workflow-graph-commands.d.ts +3 -0
- package/dist/cli/commands/workflow-graph-commands.js +73 -0
- package/dist/cli/commands/workflow-init-command.d.ts +3 -0
- package/dist/cli/commands/workflow-init-command.js +68 -0
- package/dist/cli/commands/workflow-lifecycle-commands.d.ts +9 -59
- package/dist/cli/commands/workflow-lifecycle-commands.js +14 -348
- package/dist/cli/commands/workflow-node-commands.d.ts +3 -0
- package/dist/cli/commands/workflow-node-commands.js +154 -0
- package/dist/cli/commands/workflow-plan-helpers.d.ts +48 -0
- package/dist/cli/commands/workflow-plan-helpers.js +103 -0
- package/dist/cli/commands/workflow-planning-commands.d.ts +3 -0
- package/dist/cli/commands/workflow-planning-commands.js +56 -0
- package/dist/cli/commands/workflow-swarm-actions.d.ts +7 -0
- package/dist/cli/commands/workflow-swarm-actions.js +109 -0
- package/dist/cli/commands/workflow-swarm-commands.d.ts +3 -0
- package/dist/cli/commands/workflow-swarm-commands.js +138 -0
- package/dist/cli/commands/workflow-tech-actions.d.ts +10 -0
- package/dist/cli/commands/workflow-tech-actions.js +150 -0
- package/dist/cli/commands/workflow-terminalize-command.d.ts +3 -0
- package/dist/cli/commands/workflow-terminalize-command.js +56 -0
- package/dist/cli/commands/workspace/init-actions.d.ts +10 -0
- package/dist/cli/commands/workspace/init-actions.js +199 -0
- package/dist/cli/commands/workspace/init-codegraph-stake.d.ts +10 -0
- package/dist/cli/commands/workspace/init-codegraph-stake.js +54 -0
- package/dist/cli/commands/workspace/init-command.d.ts +8 -124
- package/dist/cli/commands/workspace/init-command.js +59 -623
- package/dist/cli/commands/workspace/init-context.d.ts +58 -0
- package/dist/cli/commands/workspace/init-context.js +121 -0
- package/dist/cli/commands/workspace/init-envelope.d.ts +3 -0
- package/dist/cli/commands/workspace/init-envelope.js +34 -0
- package/dist/cli/commands/workspace/init-failures.d.ts +3 -0
- package/dist/cli/commands/workspace/init-failures.js +84 -0
- package/dist/cli/commands/workspace/init-hooks-decision.d.ts +24 -0
- package/dist/cli/commands/workspace/init-hooks-decision.js +189 -0
- package/dist/cli/commands/workspace/init-options.d.ts +102 -0
- package/dist/cli/commands/workspace/init-options.js +1 -0
- package/dist/cli/commands/worktree-lease-commands.d.ts +10 -6
- package/dist/cli/commands/worktree-lease-commands.js +42 -512
- package/dist/cli/commands/worktree-lease-gc-command.d.ts +12 -0
- package/dist/cli/commands/worktree-lease-gc-command.js +117 -0
- package/dist/cli/commands/worktree-lease-git.d.ts +22 -0
- package/dist/cli/commands/worktree-lease-git.js +48 -0
- package/dist/cli/commands/worktree-lease-list-command.d.ts +12 -0
- package/dist/cli/commands/worktree-lease-list-command.js +100 -0
- package/dist/cli/commands/worktree-lease-load.d.ts +37 -0
- package/dist/cli/commands/worktree-lease-load.js +28 -0
- package/dist/cli/commands/worktree-lease-release-command.d.ts +13 -0
- package/dist/cli/commands/worktree-lease-release-command.js +105 -0
- package/dist/cli/commands/worktree-lease-renew-command.d.ts +11 -0
- package/dist/cli/commands/worktree-lease-renew-command.js +99 -0
- package/dist/cli/commands/worktree-lease-session.d.ts +22 -0
- package/dist/cli/commands/worktree-lease-session.js +29 -0
- package/dist/cli/commands/worktree-lease-spawn-command.d.ts +11 -0
- package/dist/cli/commands/worktree-lease-spawn-command.js +119 -0
- package/dist/cli/commands/worktree-lease-status-command.d.ts +11 -0
- package/dist/cli/commands/worktree-lease-status-command.js +86 -0
- package/dist/cli/commands/worktree-lease-store.d.ts +19 -0
- package/dist/cli/commands/worktree-lease-store.js +24 -0
- package/dist/cli/program.js +5 -0
- package/dist/services/code/auto-compact-artifacts.d.ts +54 -0
- package/dist/services/code/auto-compact-artifacts.js +135 -0
- package/dist/services/code/auto-compact-attempt.d.ts +46 -0
- package/dist/services/code/auto-compact-attempt.js +88 -0
- package/dist/services/code/auto-compact-decision.d.ts +74 -0
- package/dist/services/code/auto-compact-decision.js +149 -0
- package/dist/services/code/auto-compact-dispatch-gate.d.ts +36 -0
- package/dist/services/code/auto-compact-dispatch-gate.js +86 -0
- package/dist/services/code/auto-compact-envelopes.d.ts +33 -0
- package/dist/services/code/auto-compact-envelopes.js +134 -0
- package/dist/services/code/auto-compact-history.d.ts +46 -0
- package/dist/services/code/auto-compact-history.js +17 -0
- package/dist/services/code/auto-compact-orchestrator.d.ts +11 -240
- package/dist/services/code/auto-compact-orchestrator.js +165 -686
- package/dist/services/code/auto-compact-run-types.d.ts +123 -0
- package/dist/services/code/auto-compact-run-types.js +1 -0
- package/dist/services/code/emit-handoff.d.ts +35 -1
- package/dist/services/code/emit-handoff.js +128 -7
- package/dist/services/code/step-08-gate.d.ts +28 -19
- package/dist/services/code/step-08-gate.js +92 -35
- package/dist/services/config/config-coercion.d.ts +7 -0
- package/dist/services/config/config-coercion.js +156 -0
- package/dist/services/config/config-file-io.d.ts +11 -0
- package/dist/services/config/config-file-io.js +61 -0
- package/dist/services/config/config-get.d.ts +2 -0
- package/dist/services/config/config-get.js +36 -0
- package/dist/services/config/config-global-loader.d.ts +15 -0
- package/dist/services/config/config-global-loader.js +111 -0
- package/dist/services/config/config-nested-path.d.ts +3 -0
- package/dist/services/config/config-nested-path.js +53 -0
- package/dist/services/config/config-primitives.d.ts +16 -0
- package/dist/services/config/config-primitives.js +24 -0
- package/dist/services/config/config-service.d.ts +9 -33
- package/dist/services/config/config-service.js +16 -665
- package/dist/services/config/config-validation.d.ts +19 -0
- package/dist/services/config/config-validation.js +152 -0
- package/dist/services/config/config-workspace.d.ts +10 -0
- package/dist/services/config/config-workspace.js +158 -0
- package/dist/services/distribution/mcp-install-runner.d.ts +21 -0
- package/dist/services/distribution/mcp-install-runner.js +59 -0
- package/dist/services/distribution/mcp-install.d.ts +95 -0
- package/dist/services/distribution/mcp-install.js +179 -0
- package/dist/services/distribution/plugin-manifest.d.ts +97 -0
- package/dist/services/distribution/plugin-manifest.js +126 -0
- package/dist/services/hooks/mcp-surface-gate.d.ts +19 -0
- package/dist/services/hooks/mcp-surface-gate.js +87 -0
- package/dist/services/ide/adapters/claude-code-adapter.d.ts +4 -35
- package/dist/services/ide/adapters/claude-code-adapter.js +48 -171
- package/dist/services/ide/adapters/claude-code-local-state.d.ts +28 -0
- package/dist/services/ide/adapters/claude-code-local-state.js +112 -0
- package/dist/services/ide/adapters/claude-code-model-window.d.ts +37 -0
- package/dist/services/ide/adapters/claude-code-model-window.js +113 -0
- package/dist/services/ide/ide-mcp-install-types.d.ts +78 -0
- package/dist/services/ide/ide-mcp-install-types.js +104 -0
- package/dist/services/ide/ide-types.d.ts +45 -1
- package/dist/services/ide/mcp-tool-matcher.d.ts +34 -0
- package/dist/services/ide/mcp-tool-matcher.js +84 -0
- package/dist/services/lint/npx-resolver.js +7 -0
- package/dist/services/mcp/cli-executor.d.ts +36 -0
- package/dist/services/mcp/cli-executor.js +97 -0
- package/dist/services/mcp/json-rpc.d.ts +81 -0
- package/dist/services/mcp/json-rpc.js +116 -0
- package/dist/services/mcp/memory-tool.d.ts +3 -0
- package/dist/services/mcp/memory-tool.js +62 -0
- package/dist/services/mcp/server-main.d.ts +1 -0
- package/dist/services/mcp/server-main.js +66 -0
- package/dist/services/mcp/server.d.ts +22 -0
- package/dist/services/mcp/server.js +152 -0
- package/dist/services/mcp/surface.d.ts +62 -0
- package/dist/services/mcp/surface.js +198 -0
- package/dist/services/mcp/tool-core.d.ts +42 -0
- package/dist/services/mcp/tool-core.js +137 -0
- package/dist/services/mcp/tools.d.ts +13 -0
- package/dist/services/mcp/tools.js +58 -0
- package/dist/services/readonly-surface/argv-guard.d.ts +32 -0
- package/dist/services/readonly-surface/argv-guard.js +164 -0
- package/dist/services/readonly-surface/readonly-whitelist.d.ts +147 -0
- package/dist/services/readonly-surface/readonly-whitelist.js +107 -0
- package/dist/services/readonly-surface/whitelist-generator.d.ts +64 -0
- package/dist/services/readonly-surface/whitelist-generator.js +212 -0
- package/dist/services/skills/hooks-codegate-superpowers.d.ts +1 -0
- package/dist/services/skills/hooks-codegate-superpowers.js +26 -0
- package/dist/services/skills/hooks-settings-deny-list.d.ts +61 -0
- package/dist/services/skills/hooks-settings-deny-list.js +173 -0
- package/dist/services/skills/hooks-settings-envelopes.d.ts +20 -0
- package/dist/services/skills/hooks-settings-envelopes.js +79 -0
- package/dist/services/skills/hooks-settings-file-shape.d.ts +43 -0
- package/dist/services/skills/hooks-settings-file-shape.js +207 -0
- package/dist/services/skills/hooks-settings-paths.d.ts +34 -0
- package/dist/services/skills/hooks-settings-paths.js +75 -0
- package/dist/services/skills/hooks-settings-read-installed.d.ts +39 -0
- package/dist/services/skills/hooks-settings-read-installed.js +60 -0
- package/dist/services/skills/hooks-settings-service.d.ts +12 -212
- package/dist/services/skills/hooks-settings-service.js +71 -649
- package/dist/services/skills/hooks-settings-types.d.ts +139 -0
- package/dist/services/skills/hooks-settings-types.js +1 -0
- package/dist/services/workspace/claude-settings-template-merge.d.ts +89 -0
- package/dist/services/workspace/claude-settings-template-merge.js +243 -0
- package/dist/services/workspace/claude-settings-template.d.ts +29 -87
- package/dist/services/workspace/claude-settings-template.js +81 -236
- package/package.json +17 -6
- package/scripts/install-skills-bundles.mjs +233 -0
- package/scripts/install-skills-fs.mjs +148 -0
- package/scripts/install-skills-ide.mjs +279 -0
- package/scripts/install-skills-output-style-default.mjs +196 -0
- package/scripts/install-skills-output-styles.mjs +121 -0
- package/scripts/install-skills-report.mjs +42 -0
- package/scripts/install-skills-user-config.mjs +198 -0
- package/scripts/install-skills.mjs +36 -1066
- package/scripts/watch-tree.mjs +140 -0
- package/scripts/watch.mjs +4 -126
- package/skills/peaks-status/SKILL.md +31 -13
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `peaks worktree spawn` — write a lease and run `git worktree add`.
|
|
3
|
+
*
|
|
4
|
+
* Extracted verbatim from `worktree-lease-commands.ts` (mechanical move of
|
|
5
|
+
* the `.action()` body plus its two local helpers). The command name,
|
|
6
|
+
* every option and its help text, the ok/fail envelopes and the
|
|
7
|
+
* `process.exitCode = 1` on failure are unchanged.
|
|
8
|
+
*/
|
|
9
|
+
import type { Command } from 'commander';
|
|
10
|
+
import { type ProgramIO } from '../cli-helpers.js';
|
|
11
|
+
export declare function registerWorktreeLeaseSpawnCommand(auth: Command, io: ProgramIO): void;
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `peaks worktree spawn` — write a lease and run `git worktree add`.
|
|
3
|
+
*
|
|
4
|
+
* Extracted verbatim from `worktree-lease-commands.ts` (mechanical move of
|
|
5
|
+
* the `.action()` body plus its two local helpers). The command name,
|
|
6
|
+
* every option and its help text, the ok/fail envelopes and the
|
|
7
|
+
* `process.exitCode = 1` on failure are unchanged.
|
|
8
|
+
*/
|
|
9
|
+
import { fail, ok } from 'peaks-loop-shared/result';
|
|
10
|
+
import { execSync } from 'node:child_process';
|
|
11
|
+
import { addJsonOption, getErrorMessage, printResult } from '../cli-helpers.js';
|
|
12
|
+
import { atomicWriteJson } from '../../services/ide/shared/atomic-json.js';
|
|
13
|
+
import { emitLeaseEvent } from '../../services/observability/observability-service.js';
|
|
14
|
+
import { finalizeLease, generateLeaseId, leaseFilePath, ttlForRole, worktreePath } from '../../services/worktree/worktree-lease.js';
|
|
15
|
+
import { joinPathSession, resolveProjectRoot, resolveSessionId } from './worktree-lease-session.js';
|
|
16
|
+
const SPAWN_DESCRIPTION = `Spawn a worktree under .peaks/_runtime/<sid>/worktrees/<leaseId>/ with a managed lease. ` +
|
|
17
|
+
`The lease is the source of truth for the L2 hook gate (Part 2 of this slice); ` +
|
|
18
|
+
`until the hook integration ships, sub-agents may still invoke raw \`git worktree add\` ` +
|
|
19
|
+
`with a current \`peaks worktree auth grant\` token. Default TTL is role-aware ` +
|
|
20
|
+
`(rd=30m / qa=15m / ui=1h); pass --ttl <ms> to override.`;
|
|
21
|
+
const SPAWN_TTL_DESCRIPTION = `time-to-live in ms (default role-aware; override with positive number)`;
|
|
22
|
+
// Branch names must be safe for git ref-format; the cap keeps a pathological
|
|
23
|
+
// rid from producing an unusable ref.
|
|
24
|
+
const MAX_BRANCH_NAME_LENGTH = 80;
|
|
25
|
+
function resolveTtlMs(raw, role) {
|
|
26
|
+
if (typeof raw !== 'string' || raw.length === 0)
|
|
27
|
+
return ttlForRole(role);
|
|
28
|
+
const parsed = Number(raw);
|
|
29
|
+
if (!Number.isFinite(parsed) || parsed <= 0)
|
|
30
|
+
return ttlForRole(role);
|
|
31
|
+
return parsed;
|
|
32
|
+
}
|
|
33
|
+
function deriveBranch(rid) {
|
|
34
|
+
// Branch names must be safe for git ref-format. Strip leading
|
|
35
|
+
// `rid-` if present and replace any non-safe chars with `-`.
|
|
36
|
+
return rid.replace(/[^A-Za-z0-9._/-]/g, '-').slice(0, MAX_BRANCH_NAME_LENGTH);
|
|
37
|
+
}
|
|
38
|
+
function printSpawnOk(io, options, ctx) {
|
|
39
|
+
const { lease, sessionId, projectRoot, ttlMs, wtPath, branch } = ctx;
|
|
40
|
+
printResult(io, ok('worktree.spawn', {
|
|
41
|
+
lease,
|
|
42
|
+
sessionId,
|
|
43
|
+
projectRoot,
|
|
44
|
+
ttlMs,
|
|
45
|
+
nextActions: [
|
|
46
|
+
`Worktree path: ${wtPath}`,
|
|
47
|
+
`Branch: ${branch}`,
|
|
48
|
+
`Lease expires at: ${new Date(lease.expiresAt).toISOString()}`,
|
|
49
|
+
'Run `peaks worktree release --lease-id <leaseId>` when done',
|
|
50
|
+
'Hook integration (lease-aware gate) ships in Part 2'
|
|
51
|
+
]
|
|
52
|
+
}, [], []), options.json);
|
|
53
|
+
}
|
|
54
|
+
function printSpawnFailed(io, options, error, sessionId) {
|
|
55
|
+
printResult(io, fail('worktree.spawn', 'SPAWN_FAILED', getErrorMessage(error), { rid: options.rid, role: options.role, sessionId }, [
|
|
56
|
+
'Verify `git worktree add` succeeded (output above).',
|
|
57
|
+
'If the lease file was NOT written, retry; the lease directory is .peaks/_runtime/<sid>/worktree-leases/.',
|
|
58
|
+
'For an existing branch, pass --branch <name> explicitly (the spawn refuses to overwrite an active branch).'
|
|
59
|
+
]), options.json);
|
|
60
|
+
process.exitCode = 1;
|
|
61
|
+
}
|
|
62
|
+
function runSpawn(options, io) {
|
|
63
|
+
const projectRoot = resolveProjectRoot(options);
|
|
64
|
+
const sessionId = resolveSessionId(options, projectRoot);
|
|
65
|
+
try {
|
|
66
|
+
const leaseId = generateLeaseId();
|
|
67
|
+
const now = Date.now();
|
|
68
|
+
const ttlMs = resolveTtlMs(options.ttl, options.role);
|
|
69
|
+
const branch = options.branch ?? deriveBranch(options.rid);
|
|
70
|
+
const wtPath = worktreePath(joinPathSession(projectRoot, sessionId), leaseId);
|
|
71
|
+
const lease = finalizeLease({
|
|
72
|
+
leaseId,
|
|
73
|
+
rid: options.rid,
|
|
74
|
+
role: options.role,
|
|
75
|
+
path: wtPath,
|
|
76
|
+
branch,
|
|
77
|
+
createdAt: now,
|
|
78
|
+
expiresAt: now + ttlMs,
|
|
79
|
+
purpose: options.purpose
|
|
80
|
+
});
|
|
81
|
+
// Run `git worktree add` from the project root. The PreToolUse hook
|
|
82
|
+
// (Part 2 of this slice) will consult the lease file we just wrote
|
|
83
|
+
// and authorize this very `git worktree add`; for Part 1 we still
|
|
84
|
+
// require a current `peaks worktree auth grant` token to remain
|
|
85
|
+
// consistent with the slice-027 hard gate contract.
|
|
86
|
+
execSync(`git worktree add "${wtPath}" -b "${branch}"`, {
|
|
87
|
+
cwd: projectRoot,
|
|
88
|
+
stdio: 'pipe',
|
|
89
|
+
encoding: 'utf8',
|
|
90
|
+
windowsHide: true
|
|
91
|
+
});
|
|
92
|
+
atomicWriteJson(leaseFilePath(joinPathSession(projectRoot, sessionId), leaseId), lease);
|
|
93
|
+
// Part 4.A: emit spawn metric (fire-and-forget; never blocks).
|
|
94
|
+
emitLeaseEvent({
|
|
95
|
+
sessionId,
|
|
96
|
+
projectRoot,
|
|
97
|
+
kind: 'spawn',
|
|
98
|
+
leaseId,
|
|
99
|
+
rid: options.rid,
|
|
100
|
+
role: options.role
|
|
101
|
+
});
|
|
102
|
+
printSpawnOk(io, options, { lease, sessionId, projectRoot, ttlMs, wtPath, branch });
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
printSpawnFailed(io, options, error, sessionId);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
export function registerWorktreeLeaseSpawnCommand(auth, io) {
|
|
109
|
+
addJsonOption(auth
|
|
110
|
+
.command('spawn')
|
|
111
|
+
.description(SPAWN_DESCRIPTION)
|
|
112
|
+
.requiredOption('--rid <rid>', 'peaks request id the lease is associated with')
|
|
113
|
+
.requiredOption('--role <role>', 'sub-agent role (rd | qa | ui | sc | prd | general-purpose)')
|
|
114
|
+
.requiredOption('--purpose <text>', 'why this worktree was spawned (audit log)')
|
|
115
|
+
.option('--ttl <ms>', SPAWN_TTL_DESCRIPTION)
|
|
116
|
+
.option('--branch <name>', 'git branch name (default: derived from rid)')
|
|
117
|
+
.option('--session <sid>', 'override session id')
|
|
118
|
+
.option('--project <path>', 'project root (default: findProjectRoot(cwd))')).action((options) => runSpawn(options, io));
|
|
119
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `peaks worktree lease-status` — show one lease in detail.
|
|
3
|
+
*
|
|
4
|
+
* Extracted verbatim from `worktree-lease-commands.ts` (mechanical move of
|
|
5
|
+
* the `.action()` body). The lease-file failures route through the shared
|
|
6
|
+
* `loadLeaseOrStop`; the computed `live` flag, the on-disk path
|
|
7
|
+
* diagnostics and the ok/fail envelopes are unchanged.
|
|
8
|
+
*/
|
|
9
|
+
import type { Command } from 'commander';
|
|
10
|
+
import { type ProgramIO } from '../cli-helpers.js';
|
|
11
|
+
export declare function registerWorktreeLeaseStatusCommand(auth: Command, io: ProgramIO): void;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `peaks worktree lease-status` — show one lease in detail.
|
|
3
|
+
*
|
|
4
|
+
* Extracted verbatim from `worktree-lease-commands.ts` (mechanical move of
|
|
5
|
+
* the `.action()` body). The lease-file failures route through the shared
|
|
6
|
+
* `loadLeaseOrStop`; the computed `live` flag, the on-disk path
|
|
7
|
+
* diagnostics and the ok/fail envelopes are unchanged.
|
|
8
|
+
*/
|
|
9
|
+
import { fail, ok } from 'peaks-loop-shared/result';
|
|
10
|
+
import { existsSync, statSync } from 'node:fs';
|
|
11
|
+
import { addJsonOption, getErrorMessage, printResult } from '../cli-helpers.js';
|
|
12
|
+
import { isLeaseActive, leaseFilePath } from '../../services/worktree/worktree-lease.js';
|
|
13
|
+
import { loadLeaseOrStop } from './worktree-lease-load.js';
|
|
14
|
+
import { joinPathSession, resolveProjectRoot, resolveSessionId } from './worktree-lease-session.js';
|
|
15
|
+
const LEASE_STATUS_DESCRIPTION = 'Show one lease in detail: full lease record + computed `live` flag (active AND not past ' +
|
|
16
|
+
'expiry) + path/branch/path-exists-on-disk diagnostics. Use this when triaging why a ' +
|
|
17
|
+
'sub-agent cannot write to a worktree.';
|
|
18
|
+
const STATUS_MISSING_HINTS = ['Run `peaks worktree list` to inspect available leases.'];
|
|
19
|
+
const STATUS_INVALID_HINTS = ['Delete the malformed lease file manually and re-spawn.'];
|
|
20
|
+
/** Whether the lease path is present on disk and is a directory. */
|
|
21
|
+
function inspectLeasePath(leasePath) {
|
|
22
|
+
const pathExists = existsSync(leasePath);
|
|
23
|
+
if (!pathExists)
|
|
24
|
+
return { pathExists, pathIsDirectory: false };
|
|
25
|
+
try {
|
|
26
|
+
return { pathExists, pathIsDirectory: statSync(leasePath).isDirectory() };
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return { pathExists, pathIsDirectory: false };
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
function printLeaseStatusOk(io, options, ctx) {
|
|
33
|
+
const { lease, sessionId, projectRoot } = ctx;
|
|
34
|
+
const now = Date.now();
|
|
35
|
+
const { pathExists, pathIsDirectory } = inspectLeasePath(lease.path);
|
|
36
|
+
const live = isLeaseActive(lease, now);
|
|
37
|
+
printResult(io, ok('worktree.lease-status', {
|
|
38
|
+
sessionId,
|
|
39
|
+
projectRoot,
|
|
40
|
+
file: '.peaks/_runtime/' + sessionId + '/worktree-leases/' + lease.leaseId + '.json',
|
|
41
|
+
lease,
|
|
42
|
+
live,
|
|
43
|
+
diagnostics: {
|
|
44
|
+
now,
|
|
45
|
+
remainingMs: lease.expiresAt - now,
|
|
46
|
+
pathExists,
|
|
47
|
+
pathIsDirectory
|
|
48
|
+
}
|
|
49
|
+
}, [], [
|
|
50
|
+
`Lease ${lease.leaseId} is ${live ? 'LIVE' : 'NOT LIVE'} ` +
|
|
51
|
+
`(status=${lease.status}, remaining=${lease.expiresAt - now}ms).`,
|
|
52
|
+
`Worktree path ${lease.path} ${pathExists ? (pathIsDirectory ? 'exists (dir)' : 'exists (NOT a dir)') : 'MISSING'}.`
|
|
53
|
+
]), options.json);
|
|
54
|
+
}
|
|
55
|
+
function printLeaseStatusFailed(io, options, err, sessionId) {
|
|
56
|
+
printResult(io, fail('worktree.lease-status', 'STATUS_FAILED', getErrorMessage(err), { leaseId: options.leaseId, sessionId }, ['Re-run after fixing the failure (see cause in the error message).']), options.json);
|
|
57
|
+
process.exitCode = 1;
|
|
58
|
+
}
|
|
59
|
+
function runLeaseStatus(options, io) {
|
|
60
|
+
const projectRoot = resolveProjectRoot(options);
|
|
61
|
+
const sessionId = resolveSessionId(options, projectRoot);
|
|
62
|
+
try {
|
|
63
|
+
const file = leaseFilePath(joinPathSession(projectRoot, sessionId), options.leaseId);
|
|
64
|
+
const loaded = loadLeaseOrStop(io, options, {
|
|
65
|
+
command: 'worktree.lease-status',
|
|
66
|
+
file,
|
|
67
|
+
hints: { missing: STATUS_MISSING_HINTS, invalid: STATUS_INVALID_HINTS }
|
|
68
|
+
});
|
|
69
|
+
if (loaded.stop) {
|
|
70
|
+
process.exitCode = 1;
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
printLeaseStatusOk(io, options, { lease: loaded.lease, sessionId, projectRoot });
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
printLeaseStatusFailed(io, options, err, sessionId);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
export function registerWorktreeLeaseStatusCommand(auth, io) {
|
|
80
|
+
addJsonOption(auth
|
|
81
|
+
.command('lease-status')
|
|
82
|
+
.description(LEASE_STATUS_DESCRIPTION)
|
|
83
|
+
.requiredOption('--lease-id <id>', 'lease id to inspect')
|
|
84
|
+
.option('--session <sid>', 'override session id')
|
|
85
|
+
.option('--project <path>', 'project root (default: findProjectRoot(cwd))')).action((options) => runLeaseStatus(options, io));
|
|
86
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared lease-store reader for the two sweep-style commands (`list`, `gc`).
|
|
3
|
+
*
|
|
4
|
+
* Both enumerate the session's lease directory through the pure
|
|
5
|
+
* `listLeasesSync` helper with the same real-fs bindings, and both render
|
|
6
|
+
* the same `Malformed lease: <file> (<error>)` warning line per unreadable
|
|
7
|
+
* file. Extracted verbatim from `worktree-lease-commands.ts`.
|
|
8
|
+
*/
|
|
9
|
+
import { type LeaseListResult } from '../../services/worktree/worktree-lease.js';
|
|
10
|
+
export interface LeaseStoreSnapshot {
|
|
11
|
+
storeDir: string;
|
|
12
|
+
result: LeaseListResult;
|
|
13
|
+
}
|
|
14
|
+
export declare function loadLeaseStore(projectRoot: string, sessionId: string): LeaseStoreSnapshot;
|
|
15
|
+
/** One warning line per malformed lease file skipped by the store reader. */
|
|
16
|
+
export declare function malformedLeaseWarnings(errors: ReadonlyArray<{
|
|
17
|
+
file: string;
|
|
18
|
+
error: string;
|
|
19
|
+
}>): string[];
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared lease-store reader for the two sweep-style commands (`list`, `gc`).
|
|
3
|
+
*
|
|
4
|
+
* Both enumerate the session's lease directory through the pure
|
|
5
|
+
* `listLeasesSync` helper with the same real-fs bindings, and both render
|
|
6
|
+
* the same `Malformed lease: <file> (<error>)` warning line per unreadable
|
|
7
|
+
* file. Extracted verbatim from `worktree-lease-commands.ts`.
|
|
8
|
+
*/
|
|
9
|
+
import { existsSync, readdirSync, readFileSync as readFileSyncNode } from 'node:fs';
|
|
10
|
+
import { leaseStoreDir, listLeasesSync } from '../../services/worktree/worktree-lease.js';
|
|
11
|
+
import { joinPathSession } from './worktree-lease-session.js';
|
|
12
|
+
export function loadLeaseStore(projectRoot, sessionId) {
|
|
13
|
+
const storeDir = leaseStoreDir(joinPathSession(projectRoot, sessionId));
|
|
14
|
+
const result = listLeasesSync(storeDir, {
|
|
15
|
+
readdir: (p) => readdirSync(p),
|
|
16
|
+
readFile: (p) => readFileSyncNode(p, 'utf8'),
|
|
17
|
+
existsSync: (p) => existsSync(p)
|
|
18
|
+
});
|
|
19
|
+
return { storeDir, result };
|
|
20
|
+
}
|
|
21
|
+
/** One warning line per malformed lease file skipped by the store reader. */
|
|
22
|
+
export function malformedLeaseWarnings(errors) {
|
|
23
|
+
return errors.map((e) => `Malformed lease: ${e.file} (${e.error})`);
|
|
24
|
+
}
|
package/dist/cli/program.js
CHANGED
|
@@ -8,6 +8,7 @@ import { registerWorkflowCommands } from './commands/workflow-commands.js';
|
|
|
8
8
|
import { registerCapabilityWorkerConfigAndSCCommands } from './commands/capability-worker-config-sc-commands.js';
|
|
9
9
|
import { registerSubAgentCommands } from './commands/sub-agent-commands.js';
|
|
10
10
|
import { registerLeaseMetricsCommand } from './commands/lease-metrics-commands.js';
|
|
11
|
+
import { registerMcpCommands } from './commands/mcp-commands.js';
|
|
11
12
|
import { registerLeaseStatsCommand } from './commands/lease-stats-commands.js';
|
|
12
13
|
import { registerContainerCommand } from './commands/container-commands.js';
|
|
13
14
|
import { registerVmCommand } from './commands/vm-commands.js';
|
|
@@ -197,6 +198,10 @@ Run peaks (no arguments) for a quickstart. You likely want one of:
|
|
|
197
198
|
registerVmCommand(program, io);
|
|
198
199
|
registerCronCommand(program, io);
|
|
199
200
|
registerCronSchedulerCommand(program, io);
|
|
201
|
+
// The read-only MCP surface's command family. `serve` spawns the server
|
|
202
|
+
// module by path rather than importing it, so `src/services/mcp/` stays
|
|
203
|
+
// deletable (see the header of `mcp-commands.ts`).
|
|
204
|
+
registerMcpCommands(program, io);
|
|
200
205
|
// Auto-route the remaining 60+ commands after the orchestrators so the
|
|
201
206
|
// lazy `skill` parent (used by adapter-commands / sediment-commands)
|
|
202
207
|
// finds the existing `peaks skill` group registered by
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { type HarnessWindowSyncResult } from '../context/harness-window-config.js';
|
|
2
|
+
import type { ConvergencePlan } from '../context/auto-compact-types.js';
|
|
3
|
+
/**
|
|
4
|
+
* What the caller is told to do next. The harness-window notice rides along because
|
|
5
|
+
* the run also rewrites the harness's own settings, so it says so too: the user
|
|
6
|
+
* accepted that write on the condition 要告知, and a write only one of the two
|
|
7
|
+
* syncing commands reports is not a notice.
|
|
8
|
+
*/
|
|
9
|
+
export declare function compactNextActions(isRedLine: boolean, harnessWindow: HarnessWindowSyncResult | null): readonly string[];
|
|
10
|
+
/**
|
|
11
|
+
* Append a one-row convergence decision to the LLM-readable log.
|
|
12
|
+
* The LLM reads this on the post-compact turn to pick up exactly
|
|
13
|
+
* where it left off (vs. blindly trusting the IDE's compressed
|
|
14
|
+
* transcript).
|
|
15
|
+
*/
|
|
16
|
+
export declare function appendAutoDecisionLog(input: {
|
|
17
|
+
readonly projectRoot: string;
|
|
18
|
+
readonly sessionId: string;
|
|
19
|
+
readonly plan: ConvergencePlan;
|
|
20
|
+
}): void;
|
|
21
|
+
/**
|
|
22
|
+
* main-session compact intent so the main-session LLM picks it up on
|
|
23
|
+
* its next turn and fires `/compact` in-band. Without this file the
|
|
24
|
+
* orchestrator's "main-session compact" request is invisible to the
|
|
25
|
+
* main Claude Code window (defeats the whole point of auto-compact
|
|
26
|
+
* for the main context).
|
|
27
|
+
*
|
|
28
|
+
* The file is gitignored under `.peaks/_runtime/<sessionId>/txt/` and
|
|
29
|
+
* is one-shot: the LLM should `mv` it to `.consumed` after firing
|
|
30
|
+
* `/compact`. A re-run will overwrite.
|
|
31
|
+
*
|
|
32
|
+
* write survives, but nothing consumes the file, and its `nextAction` asks
|
|
33
|
+
* for a `/compact` the model cannot invoke (the Skill tool exposes only
|
|
34
|
+
* `/init` and `/security-review`; hooks can observe or veto, never initiate).
|
|
35
|
+
* Retained deliberately for the sibling A2 slice, which owns harness-side
|
|
36
|
+
* state re-injection. Not a capability peaks-loop has today.
|
|
37
|
+
*/
|
|
38
|
+
export declare function writeMainSessionCompactIntent(input: {
|
|
39
|
+
readonly projectRoot: string;
|
|
40
|
+
readonly sessionId: string;
|
|
41
|
+
readonly ratio: number;
|
|
42
|
+
readonly redLine: boolean;
|
|
43
|
+
readonly now: Date;
|
|
44
|
+
}): void;
|
|
45
|
+
/**
|
|
46
|
+
* Write a pre-compact checkpoint. The shape mirrors `peaks session
|
|
47
|
+
* checkpoint` so D7's post-compact-detect picks it up unchanged.
|
|
48
|
+
*/
|
|
49
|
+
export declare function writePreCompactCheckpoint(input: {
|
|
50
|
+
readonly projectRoot: string;
|
|
51
|
+
readonly sessionId: string;
|
|
52
|
+
readonly now: Date;
|
|
53
|
+
readonly redLine?: boolean;
|
|
54
|
+
}): string;
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The files one auto-compact run writes: checkpoint, intent and decision log.
|
|
3
|
+
*
|
|
4
|
+
* Split out of `auto-compact-orchestrator.ts` (file-size cap campaign). The
|
|
5
|
+
* orchestrator re-exports every name declared here, so existing importers keep
|
|
6
|
+
* using `./auto-compact-orchestrator.js` unchanged.
|
|
7
|
+
*/
|
|
8
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
9
|
+
import { join } from 'node:path';
|
|
10
|
+
import { getSessionDir } from '../session/getSessionDir.js';
|
|
11
|
+
import { describeHarnessWindowSync } from '../context/harness-window-config.js';
|
|
12
|
+
/**
|
|
13
|
+
* What the caller is told to do next. The harness-window notice rides along because
|
|
14
|
+
* the run also rewrites the harness's own settings, so it says so too: the user
|
|
15
|
+
* accepted that write on the condition 要告知, and a write only one of the two
|
|
16
|
+
* syncing commands reports is not a notice.
|
|
17
|
+
*/
|
|
18
|
+
export function compactNextActions(isRedLine, harnessWindow) {
|
|
19
|
+
if (isRedLine) {
|
|
20
|
+
return [
|
|
21
|
+
'RED-LINE: harness compact requested — sub-agent dispatch is NOT blocked; keep working',
|
|
22
|
+
'Post-compact resume picks up the convergence plan from auto-decisions.md',
|
|
23
|
+
'Next `peaks code context-now` probe will confirm the ratio dropped; if it keeps climbing and the harness has not compacted, report that to the user and hand control back',
|
|
24
|
+
describeHarnessWindowSync(harnessWindow)
|
|
25
|
+
];
|
|
26
|
+
}
|
|
27
|
+
return [
|
|
28
|
+
'Pre-compact dispatched — IDE compact in progress (async)',
|
|
29
|
+
'Post-compact resume picks up the convergence plan from auto-decisions.md',
|
|
30
|
+
'Next `peaks code auto-compact` probe will confirm ratio dropped below 0.85',
|
|
31
|
+
describeHarnessWindowSync(harnessWindow)
|
|
32
|
+
];
|
|
33
|
+
}
|
|
34
|
+
const PRE_COMPACT_REASON = 'pre-compact-auto';
|
|
35
|
+
/**
|
|
36
|
+
* Append a one-row convergence decision to the LLM-readable log.
|
|
37
|
+
* The LLM reads this on the post-compact turn to pick up exactly
|
|
38
|
+
* where it left off (vs. blindly trusting the IDE's compressed
|
|
39
|
+
* transcript).
|
|
40
|
+
*/
|
|
41
|
+
export function appendAutoDecisionLog(input) {
|
|
42
|
+
// Repair R6: same hand-rolled join as `writePreCompactCheckpoint`. All four
|
|
43
|
+
// session-scoped paths in this file now go through the axis builder; none
|
|
44
|
+
// composes the join itself, so none can resolve outside the project root.
|
|
45
|
+
const dir = join(getSessionDir(input.projectRoot, input.sessionId), 'txt');
|
|
46
|
+
if (!existsSync(dir))
|
|
47
|
+
mkdirSync(dir, { recursive: true });
|
|
48
|
+
const logPath = join(dir, 'auto-decisions.md');
|
|
49
|
+
const row = [
|
|
50
|
+
'',
|
|
51
|
+
`## Auto-compact decision — ${input.plan.createdAt}`,
|
|
52
|
+
`- ratio: ${(input.plan.ratio * 100).toFixed(1)}%`,
|
|
53
|
+
`- checkpoint: ${input.plan.checkpointPath}`,
|
|
54
|
+
`- next-actions: ${input.plan.nextActions.join(' | ')}`,
|
|
55
|
+
`- resume-hint: ${input.plan.resumeHint}`,
|
|
56
|
+
''
|
|
57
|
+
].join('\n');
|
|
58
|
+
if (!existsSync(logPath)) {
|
|
59
|
+
writeFileSync(logPath, `# peaks-code auto-decisions log\n${row}`, 'utf8');
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const existing = readFileSync(logPath, 'utf8');
|
|
63
|
+
writeFileSync(logPath, `${existing}${row}`, 'utf8');
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* main-session compact intent so the main-session LLM picks it up on
|
|
67
|
+
* its next turn and fires `/compact` in-band. Without this file the
|
|
68
|
+
* orchestrator's "main-session compact" request is invisible to the
|
|
69
|
+
* main Claude Code window (defeats the whole point of auto-compact
|
|
70
|
+
* for the main context).
|
|
71
|
+
*
|
|
72
|
+
* The file is gitignored under `.peaks/_runtime/<sessionId>/txt/` and
|
|
73
|
+
* is one-shot: the LLM should `mv` it to `.consumed` after firing
|
|
74
|
+
* `/compact`. A re-run will overwrite.
|
|
75
|
+
*
|
|
76
|
+
* write survives, but nothing consumes the file, and its `nextAction` asks
|
|
77
|
+
* for a `/compact` the model cannot invoke (the Skill tool exposes only
|
|
78
|
+
* `/init` and `/security-review`; hooks can observe or veto, never initiate).
|
|
79
|
+
* Retained deliberately for the sibling A2 slice, which owns harness-side
|
|
80
|
+
* state re-injection. Not a capability peaks-loop has today.
|
|
81
|
+
*/
|
|
82
|
+
export function writeMainSessionCompactIntent(input) {
|
|
83
|
+
const dir = join(getSessionDir(input.projectRoot, input.sessionId), 'txt');
|
|
84
|
+
if (!existsSync(dir))
|
|
85
|
+
mkdirSync(dir, { recursive: true });
|
|
86
|
+
const path = join(dir, 'auto-compact-pending.json');
|
|
87
|
+
const payload = {
|
|
88
|
+
schemaVersion: 1,
|
|
89
|
+
pending: true,
|
|
90
|
+
target: 'main',
|
|
91
|
+
requestedAt: input.now.toISOString(),
|
|
92
|
+
ratio: input.ratio,
|
|
93
|
+
redLine: input.redLine,
|
|
94
|
+
nextAction: 'next LLM turn MUST fire `/compact` then `mv .peaks/_runtime/<sid>/txt/auto-compact-pending.json .peaks/_runtime/<sid>/txt/auto-compact-pending.consumed.json`'
|
|
95
|
+
};
|
|
96
|
+
writeFileSync(path, JSON.stringify(payload, null, 2), 'utf8');
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Write a pre-compact checkpoint. The shape mirrors `peaks session
|
|
100
|
+
* checkpoint` so D7's post-compact-detect picks it up unchanged.
|
|
101
|
+
*/
|
|
102
|
+
export function writePreCompactCheckpoint(input) {
|
|
103
|
+
// Repair R6: this used to hand-roll the session join, which is the one shape
|
|
104
|
+
// `getSessionDir`'s own header records as NOT covered by the guard — an
|
|
105
|
+
// unsafe id resolved outside the project root and the checkpoint was written
|
|
106
|
+
// there. The gate above now refuses an unresolvable id before this point, but
|
|
107
|
+
// `--force` outranks that gate, so this join has to hold on its own.
|
|
108
|
+
const dir = join(getSessionDir(input.projectRoot, input.sessionId), 'checkpoints');
|
|
109
|
+
if (!existsSync(dir))
|
|
110
|
+
mkdirSync(dir, { recursive: true });
|
|
111
|
+
const prefix = input.redLine === true ? 'red-line-' : 'pre-compact-';
|
|
112
|
+
const filename = `${prefix}${input.now.toISOString().replace(/[:.]/g, '-')}.json`;
|
|
113
|
+
const path = join(dir, filename);
|
|
114
|
+
const content = {
|
|
115
|
+
schemaVersion: 1,
|
|
116
|
+
reason: input.redLine === true ? 'pre-compact-red-line' : PRE_COMPACT_REASON,
|
|
117
|
+
sessionId: input.sessionId,
|
|
118
|
+
createdAt: input.now.toISOString(),
|
|
119
|
+
// D7 reads `mode`, `currentPlan`, `openQuestions`, `recentDecisions`
|
|
120
|
+
// out of this JSON. We seed empty arrays; the post-compact LLM
|
|
121
|
+
// rehydrates from the auto-decisions log + open question list.
|
|
122
|
+
mode: 'full-auto',
|
|
123
|
+
currentPlan: input.redLine === true
|
|
124
|
+
? 'RED-LINE compact REQUESTED from the harness (not executed by peaks-loop); work continues'
|
|
125
|
+
: 'auto-compact in progress; resume from auto-decisions.md',
|
|
126
|
+
openQuestions: [],
|
|
127
|
+
recentDecisions: [],
|
|
128
|
+
recentArtifactPaths: [],
|
|
129
|
+
gitStatus: '',
|
|
130
|
+
skillsActive: ['peaks-code'],
|
|
131
|
+
todoState: []
|
|
132
|
+
};
|
|
133
|
+
writeFileSync(path, JSON.stringify(content, null, 2), 'utf8');
|
|
134
|
+
return path;
|
|
135
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The two side-effecting phases of a run: prepare the artifacts, then dispatch.
|
|
3
|
+
*
|
|
4
|
+
* Split out of `auto-compact-orchestrator.ts` (file-size cap campaign). The
|
|
5
|
+
* orchestrator re-exports every name declared here, so existing importers keep
|
|
6
|
+
* using `./auto-compact-orchestrator.js` unchanged.
|
|
7
|
+
*/
|
|
8
|
+
import { type AutoCompactResult, type CompactDispatchResult, type ConvergencePlan } from '../context/auto-compact-types.js';
|
|
9
|
+
import type { CompactTarget } from '../context/auto-compact-dispatcher.js';
|
|
10
|
+
import { CompactLifecyclePublisher } from './auto-compact-lifecycle.js';
|
|
11
|
+
import type { CompactRun } from './auto-compact-run-types.js';
|
|
12
|
+
export type PrepareOutcome = {
|
|
13
|
+
readonly ok: true;
|
|
14
|
+
readonly lifecycle: CompactLifecyclePublisher;
|
|
15
|
+
readonly checkpointPath: string;
|
|
16
|
+
readonly plan: ConvergencePlan;
|
|
17
|
+
} | {
|
|
18
|
+
readonly ok: false;
|
|
19
|
+
readonly envelope: AutoCompactResult;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* One runId per attempt, committed to compacting: the publisher is created at
|
|
23
|
+
* `queued` and every later transition carries the same id forward. `preparing`
|
|
24
|
+
* covers the checkpoint, the convergence plan and the decision-log write; a throw
|
|
25
|
+
* in any of them rests the record at `failedAt: 'preparing'`.
|
|
26
|
+
*/
|
|
27
|
+
export declare function prepareCompactAttempt(ctx: CompactRun): PrepareOutcome;
|
|
28
|
+
export type DispatchOutcome = {
|
|
29
|
+
readonly ok: true;
|
|
30
|
+
readonly target: CompactTarget;
|
|
31
|
+
readonly dispatch: CompactDispatchResult;
|
|
32
|
+
} | {
|
|
33
|
+
readonly ok: false;
|
|
34
|
+
readonly envelope: AutoCompactResult;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* The IDE-dispatch phase. The intent record is written only for `main`: without it
|
|
38
|
+
* the main-session LLM has no signal that the orchestrator asked for compact, and
|
|
39
|
+
* the dispatcher alone would have been a no-op against the main Claude Code window.
|
|
40
|
+
*/
|
|
41
|
+
export declare function dispatchAttempt(args: {
|
|
42
|
+
readonly ctx: CompactRun;
|
|
43
|
+
readonly lifecycle: CompactLifecyclePublisher;
|
|
44
|
+
readonly checkpointPath: string;
|
|
45
|
+
readonly plan: ConvergencePlan;
|
|
46
|
+
}): Promise<DispatchOutcome>;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { CompactLifecyclePublisher, newCompactRunId } from './auto-compact-lifecycle.js';
|
|
2
|
+
import { appendAutoDecisionLog, compactNextActions, writeMainSessionCompactIntent, writePreCompactCheckpoint } from './auto-compact-artifacts.js';
|
|
3
|
+
import { buildConvergencePlan } from './auto-compact-decision.js';
|
|
4
|
+
import { dispatchFailureResult, prepareFailureResult } from './auto-compact-envelopes.js';
|
|
5
|
+
/**
|
|
6
|
+
* One runId per attempt, committed to compacting: the publisher is created at
|
|
7
|
+
* `queued` and every later transition carries the same id forward. `preparing`
|
|
8
|
+
* covers the checkpoint, the convergence plan and the decision-log write; a throw
|
|
9
|
+
* in any of them rests the record at `failedAt: 'preparing'`.
|
|
10
|
+
*/
|
|
11
|
+
export function prepareCompactAttempt(ctx) {
|
|
12
|
+
const { input, sessionId, probe, harnessWindow, isRedLine, now } = ctx;
|
|
13
|
+
const lifecycle = new CompactLifecyclePublisher({
|
|
14
|
+
projectRoot: input.projectRoot,
|
|
15
|
+
sessionId,
|
|
16
|
+
runId: newCompactRunId(now),
|
|
17
|
+
triggerRatio: probe.ratio,
|
|
18
|
+
redLine: isRedLine,
|
|
19
|
+
onLifecycleStage: input.onLifecycleStage,
|
|
20
|
+
failLifecycleWrite: input.testHooks?.failLifecycleWrite
|
|
21
|
+
});
|
|
22
|
+
lifecycle.advance('queued');
|
|
23
|
+
try {
|
|
24
|
+
lifecycle.advance('preparing');
|
|
25
|
+
if (input.testHooks?.failPreparing)
|
|
26
|
+
throw new Error('disk full while writing checkpoint');
|
|
27
|
+
const checkpointPath = writePreCompactCheckpoint({
|
|
28
|
+
projectRoot: input.projectRoot,
|
|
29
|
+
sessionId,
|
|
30
|
+
now,
|
|
31
|
+
redLine: isRedLine
|
|
32
|
+
});
|
|
33
|
+
const plan = buildConvergencePlan({
|
|
34
|
+
sessionId,
|
|
35
|
+
projectRoot: input.projectRoot,
|
|
36
|
+
ratio: probe.ratio,
|
|
37
|
+
checkpointPath,
|
|
38
|
+
nextActions: compactNextActions(isRedLine, harnessWindow),
|
|
39
|
+
redLine: isRedLine
|
|
40
|
+
});
|
|
41
|
+
appendAutoDecisionLog({ projectRoot: input.projectRoot, sessionId, plan });
|
|
42
|
+
return { ok: true, lifecycle, checkpointPath, plan };
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
lifecycle.fail(error);
|
|
46
|
+
return { ok: false, envelope: prepareFailureResult(ctx, error) };
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* The IDE-dispatch phase. The intent record is written only for `main`: without it
|
|
51
|
+
* the main-session LLM has no signal that the orchestrator asked for compact, and
|
|
52
|
+
* the dispatcher alone would have been a no-op against the main Claude Code window.
|
|
53
|
+
*/
|
|
54
|
+
export async function dispatchAttempt(args) {
|
|
55
|
+
const { ctx, lifecycle, checkpointPath, plan } = args;
|
|
56
|
+
const { input, sessionId, probe, isRedLine, now } = ctx;
|
|
57
|
+
const { dispatchIdeCompact } = await import('../context/auto-compact-dispatcher.js');
|
|
58
|
+
const target = input.target ?? 'main';
|
|
59
|
+
try {
|
|
60
|
+
if (input.testHooks?.failCompacting)
|
|
61
|
+
throw new Error('IDE dispatch exploded');
|
|
62
|
+
if (target === 'main') {
|
|
63
|
+
writeMainSessionCompactIntent({
|
|
64
|
+
projectRoot: input.projectRoot,
|
|
65
|
+
sessionId,
|
|
66
|
+
ratio: probe.ratio,
|
|
67
|
+
redLine: isRedLine,
|
|
68
|
+
now
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
const dispatch = await dispatchIdeCompact({
|
|
72
|
+
projectRoot: input.projectRoot,
|
|
73
|
+
sessionId,
|
|
74
|
+
env: input.env,
|
|
75
|
+
target
|
|
76
|
+
});
|
|
77
|
+
return { ok: true, target, dispatch };
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
// `compacting` is the phase this failure died in — a phase label,
|
|
81
|
+
// not a claim that a compaction was in flight.
|
|
82
|
+
lifecycle.fail(error, 'compacting');
|
|
83
|
+
return {
|
|
84
|
+
ok: false,
|
|
85
|
+
envelope: dispatchFailureResult(ctx, { checkpointPath, plan, target }, error)
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
}
|