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
|
@@ -1,7 +1,16 @@
|
|
|
1
|
-
import { closeSync,
|
|
1
|
+
import { closeSync, openSync, readSync, statSync } from 'node:fs';
|
|
2
2
|
import { homedir } from 'node:os';
|
|
3
3
|
import { join, resolve } from 'node:path';
|
|
4
4
|
import { claudeCodeSubAgentDispatcher } from '../../dispatch/sub-agent-dispatcher.js';
|
|
5
|
+
import { findTranscriptJsonl, readClaudeStatuslinePercent, resolveClaudeTranscriptPath } from './claude-code-local-state.js';
|
|
6
|
+
import { DEFAULT_CONTEXT_WINDOW_TOKENS, ONE_MILLION_CONTEXT_TOKENS, modelContextWindowTokens, resolveClaudeModelFromEnv } from './claude-code-model-window.js';
|
|
7
|
+
// Re-exported so the public surface of this module is unchanged by the split:
|
|
8
|
+
// the readers live in `claude-code-local-state.ts` now, but every existing
|
|
9
|
+
// importer keeps resolving them from here.
|
|
10
|
+
export { resolveClaudeTranscriptPath };
|
|
11
|
+
// Likewise the model-id / window-size pair, which moved into
|
|
12
|
+
// `claude-code-model-window.ts` to make room for `mcpInstall` below.
|
|
13
|
+
export { modelContextWindowTokens, resolveClaudeModelFromEnv };
|
|
5
14
|
/**
|
|
6
15
|
* Claude Code adapter —— peaks-loop 的"起源 IDE"。
|
|
7
16
|
*
|
|
@@ -17,178 +26,8 @@ import { claudeCodeSubAgentDispatcher } from '../../dispatch/sub-agent-dispatche
|
|
|
17
26
|
*
|
|
18
27
|
* 不可消除的 per-IDE 字段(见 tech-doc.md §1.3)。
|
|
19
28
|
*/
|
|
20
|
-
/**
|
|
21
|
-
* Read Claude Code's statusline state file
|
|
22
|
-
* (`~/.claude/statusline-state.json`) and parse a context-percent key.
|
|
23
|
-
* Moved from the generic reader in slice
|
|
24
|
-
* only in the Claude Code adapter.
|
|
25
|
-
*/
|
|
26
|
-
function readClaudeStatuslinePercent() {
|
|
27
|
-
const path = join(homedir(), '.claude', 'statusline-state.json');
|
|
28
|
-
if (!existsSync(path))
|
|
29
|
-
return null;
|
|
30
|
-
try {
|
|
31
|
-
const json = JSON.parse(readFileSync(path, 'utf8'));
|
|
32
|
-
const candidates = ['contextPercent', 'context_usage_percent', 'contextPercentUsed'];
|
|
33
|
-
for (const key of candidates) {
|
|
34
|
-
const raw = json[key];
|
|
35
|
-
if (typeof raw === 'number' && Number.isFinite(raw)) {
|
|
36
|
-
return raw > 1.5 ? raw / 100 : Math.max(0, Math.min(1, raw));
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
catch (err) {
|
|
41
|
-
// TODO(g2): legacy silent catch — now narrows to IO errors only (grace: 1 minor release, v2.14.0)
|
|
42
|
-
if (err instanceof ReferenceError)
|
|
43
|
-
throw err; // surface module-load bugs
|
|
44
|
-
if (err instanceof SyntaxError)
|
|
45
|
-
throw err; // surface parse bugs (e.g. broken statusline JSON)
|
|
46
|
-
return null; // only swallow IO errors
|
|
47
|
-
}
|
|
48
|
-
return null;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Recursive search for `<outerSessionId>.jsonl` under `projectsDir`. The
|
|
52
|
-
* Mac layout encodes the cwd as a single hash directory; on Mac Claude Code
|
|
53
|
-
* nests the transcript under that hash with an extra level of subdirectory we
|
|
54
|
-
* cannot predict ahead of time. A flat readdir misses that branch and returns
|
|
55
|
-
* null — the silent-failure mode this recursion closes.
|
|
56
|
-
*
|
|
57
|
-
* Moved from the generic reader in slice
|
|
58
|
-
* session id (Claude Code names its transcript by the outer session UUID),
|
|
59
|
-
* NOT the peaks session id.
|
|
60
|
-
*/
|
|
61
|
-
function findTranscriptJsonl(projectsDir, outerSessionId) {
|
|
62
|
-
if (!existsSync(projectsDir))
|
|
63
|
-
return null;
|
|
64
|
-
try {
|
|
65
|
-
const stack = [projectsDir];
|
|
66
|
-
while (stack.length > 0) {
|
|
67
|
-
const dir = stack.pop();
|
|
68
|
-
if (dir === undefined)
|
|
69
|
-
break;
|
|
70
|
-
const entries = readdirSync(dir, { withFileTypes: true });
|
|
71
|
-
for (const entry of entries) {
|
|
72
|
-
const full = join(dir, entry.name);
|
|
73
|
-
if (entry.isDirectory()) {
|
|
74
|
-
stack.push(full);
|
|
75
|
-
}
|
|
76
|
-
else if (entry.isFile() && entry.name === `${outerSessionId}.jsonl`) {
|
|
77
|
-
return full;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
catch (err) {
|
|
83
|
-
// TODO(g2): legacy silent catch — now narrows to IO errors only (grace: 1 minor release, v2.14.0)
|
|
84
|
-
if (err instanceof ReferenceError)
|
|
85
|
-
throw err; // surface module-load bugs
|
|
86
|
-
if (err instanceof SyntaxError)
|
|
87
|
-
throw err; // surface parse bugs
|
|
88
|
-
return null; // only swallow IO errors
|
|
89
|
-
}
|
|
90
|
-
return null;
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Resolve the absolute path of a Claude Code transcript jsonl by OUTER
|
|
94
|
-
* session id, searching `~/.claude/projects/**` recursively.
|
|
95
|
-
*
|
|
96
|
-
* `peaks code context-audit` reuses THIS locator instead of re-implementing
|
|
97
|
-
* the recursive find. Returns `null` when the transcript does not exist —
|
|
98
|
-
* callers MUST treat that as "unavailable", never as an error.
|
|
99
|
-
*/
|
|
100
|
-
export function resolveClaudeTranscriptPath(outerSessionId, projectsDir = join(homedir(), '.claude', 'projects')) {
|
|
101
|
-
if (typeof outerSessionId !== 'string' || outerSessionId.length === 0)
|
|
102
|
-
return null;
|
|
103
|
-
return findTranscriptJsonl(projectsDir, outerSessionId);
|
|
104
|
-
}
|
|
105
|
-
/** 1M-context window size in tokens (documented single choice: 1,000,000). */
|
|
106
|
-
const ONE_MILLION_CONTEXT_TOKENS = 1_000_000;
|
|
107
|
-
/** Safe-default (non-1M) context window size in tokens. */
|
|
108
|
-
const DEFAULT_CONTEXT_WINDOW_TOKENS = 200_000;
|
|
109
29
|
/** Reverse-scan chunk size in bytes (keeps memory bounded on multi-MB transcripts). */
|
|
110
30
|
const TRANSCRIPT_SCAN_CHUNK_BYTES = 64 * 1024;
|
|
111
|
-
/**
|
|
112
|
-
* Known 1M-context Claude model id prefixes whose ids do NOT carry a `1m`
|
|
113
|
-
* suffix (e.g. `claude-sonnet-4-5-20250929`). The substring match is
|
|
114
|
-
* intentionally generous — every `claude-sonnet-4*` / `claude-opus-4*`
|
|
115
|
-
* variant is 1M-context.
|
|
116
|
-
*/
|
|
117
|
-
const ONE_MILLION_CONTEXT_MODELS = ['claude-opus-4', 'claude-sonnet-4'];
|
|
118
|
-
/**
|
|
119
|
-
* Claude Code runtime env vars that may carry the currently-active model id,
|
|
120
|
-
* in documented precedence order (first non-empty value wins):
|
|
121
|
-
* 1. ANTHROPIC_MODEL — explicit per-run model override
|
|
122
|
-
* 2. ANTHROPIC_DEFAULT_OPUS_MODEL — default Opus fallback
|
|
123
|
-
* 3. ANTHROPIC_DEFAULT_SONNET_MODEL — default Sonnet fallback
|
|
124
|
-
* 4. ANTHROPIC_DEFAULT_HAIKU_MODEL — default Haiku fallback
|
|
125
|
-
* 5. ANTHROPIC_DEFAULT_FABLE_MODEL — default Fable fallback
|
|
126
|
-
* 6. CLAUDE_CODE_SUBAGENT_MODEL — sub-agent model (used when the others
|
|
127
|
-
* are absent, e.g. a sub-agent-only env)
|
|
128
|
-
*
|
|
129
|
-
* Why env-first: the transcript's `message.model` often drops Claude Code's
|
|
130
|
-
* `[1M]` / `[200K]` suffix marker (observed: `deepseek-v4-flash`), while the
|
|
131
|
-
* runtime env vars above carry it (`deepseek-v4-flash[1M]`). Reading them
|
|
132
|
-
* first lets the window resolver see the true context window. This family is
|
|
133
|
-
* vendor-specific, so it lives ONLY in the claude-code adapter.
|
|
134
|
-
*/
|
|
135
|
-
const CLAUDE_CODE_MODEL_ENV_VARS = [
|
|
136
|
-
'ANTHROPIC_MODEL',
|
|
137
|
-
'ANTHROPIC_DEFAULT_OPUS_MODEL',
|
|
138
|
-
'ANTHROPIC_DEFAULT_SONNET_MODEL',
|
|
139
|
-
'ANTHROPIC_DEFAULT_HAIKU_MODEL',
|
|
140
|
-
'ANTHROPIC_DEFAULT_FABLE_MODEL',
|
|
141
|
-
'CLAUDE_CODE_SUBAGENT_MODEL'
|
|
142
|
-
];
|
|
143
|
-
/**
|
|
144
|
-
* Resolve the currently-active Claude Code model id from a runtime env map.
|
|
145
|
-
* Returns the first non-empty `CLAUDE_CODE_MODEL_ENV_VARS` value (trimmed), or
|
|
146
|
-
* `undefined` when none is present. Pure + exported for tests; the caller falls
|
|
147
|
-
* back to the transcript `message.model` when this returns undefined.
|
|
148
|
-
*/
|
|
149
|
-
export function resolveClaudeModelFromEnv(env) {
|
|
150
|
-
if (!env)
|
|
151
|
-
return undefined;
|
|
152
|
-
for (const name of CLAUDE_CODE_MODEL_ENV_VARS) {
|
|
153
|
-
const value = env[name];
|
|
154
|
-
if (typeof value === 'string') {
|
|
155
|
-
const trimmed = value.trim();
|
|
156
|
-
if (trimmed.length > 0)
|
|
157
|
-
return trimmed;
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
return undefined;
|
|
161
|
-
}
|
|
162
|
-
/**
|
|
163
|
-
* Model-aware context-window size in tokens.
|
|
164
|
-
*
|
|
165
|
-
* Detection rule (documented):
|
|
166
|
-
* 1. Empty / unknown model → DEFAULT_CONTEXT_WINDOW_TOKENS (200_000).
|
|
167
|
-
* 2. Suffix heuristic — a model id containing `1m` (case-insensitive) is
|
|
168
|
-
* treated as 1M-context.
|
|
169
|
-
* 3. Explicit allowlist — known 1M Claude model ids
|
|
170
|
-
* (ONE_MILLION_CONTEXT_MODELS).
|
|
171
|
-
* 4. Everything else → 200_000 (the safe default).
|
|
172
|
-
*
|
|
173
|
-
* Callers MAY additionally infer ≥1M from the observed token count: if
|
|
174
|
-
* `contextTokens > DEFAULT_CONTEXT_WINDOW_TOKENS`, the model cannot be a
|
|
175
|
-
* 200K model and must be ≥1M (see `readClaudeTranscriptEstimate`).
|
|
176
|
-
*
|
|
177
|
-
* This is the HEURISTIC layer only. Explicit user overrides sit ABOVE it —
|
|
178
|
-
* see `resolveContextWindow`, which is what the probe actually calls.
|
|
179
|
-
*/
|
|
180
|
-
export function modelContextWindowTokens(model) {
|
|
181
|
-
const m = model.trim().toLowerCase();
|
|
182
|
-
if (m.length === 0)
|
|
183
|
-
return DEFAULT_CONTEXT_WINDOW_TOKENS;
|
|
184
|
-
if (m.includes('1m'))
|
|
185
|
-
return ONE_MILLION_CONTEXT_TOKENS;
|
|
186
|
-
for (const known of ONE_MILLION_CONTEXT_MODELS) {
|
|
187
|
-
if (m.includes(known))
|
|
188
|
-
return ONE_MILLION_CONTEXT_TOKENS;
|
|
189
|
-
}
|
|
190
|
-
return DEFAULT_CONTEXT_WINDOW_TOKENS;
|
|
191
|
-
}
|
|
192
31
|
/**
|
|
193
32
|
* the context-window size in tokens. Third-party / proxied models whose id
|
|
194
33
|
* carries no `[1M]` suffix (and is absent from the hardcoded allowlist) are
|
|
@@ -602,6 +441,44 @@ export const CLAUDE_CODE_ADAPTER = {
|
|
|
602
441
|
envVar: 'CLAUDE_PROJECT_DIR',
|
|
603
442
|
hookEvent: 'PreToolUse',
|
|
604
443
|
toolMatcher: 'Bash',
|
|
444
|
+
// BOTH channels a peaks MCP server can reach this harness through. The hook
|
|
445
|
+
// entry installed below covers the pair, and the pre-tool branch matches
|
|
446
|
+
// against the pair; one template would leave the other channel unenforced and
|
|
447
|
+
// nobody would notice, because a matcher that never fires looks like a clean
|
|
448
|
+
// call.
|
|
449
|
+
mcp: {
|
|
450
|
+
toolNameTemplates: ['mcp__peaks__*', 'mcp__plugin_peaks-loop_peaks__*']
|
|
451
|
+
},
|
|
452
|
+
// How this harness REGISTERS a peaks MCP server. The entry
|
|
453
|
+
// is the harness's OWN verb, not a hand-edit of its config file, which is
|
|
454
|
+
// full of the user's state (spec §8.3). The shape is recorded in spec §13 —
|
|
455
|
+
// it is read off that table, not invented here:
|
|
456
|
+
// - the `--` before the server argv is LOAD-BEARING: everything after it is
|
|
457
|
+
// passed to the server verbatim, otherwise the harness reads the server's
|
|
458
|
+
// own flags as its own;
|
|
459
|
+
// - the verb is NOT idempotent — same name, same scope fails, with no
|
|
460
|
+
// `--force` and no `update` — which is why the engine removes first.
|
|
461
|
+
// `scopes` is `user` alone: that is the scope a peaks install writes (spec
|
|
462
|
+
// §8.4), and sweeping a scope peaks never wrote would delete a user's own
|
|
463
|
+
// entry under the same name.
|
|
464
|
+
mcpInstall: {
|
|
465
|
+
serverName: 'peaks',
|
|
466
|
+
scopes: ['user'],
|
|
467
|
+
targetScope: 'user',
|
|
468
|
+
addArgv: [
|
|
469
|
+
'claude',
|
|
470
|
+
'mcp',
|
|
471
|
+
'add',
|
|
472
|
+
'--scope',
|
|
473
|
+
'<scope>',
|
|
474
|
+
'--transport',
|
|
475
|
+
'stdio',
|
|
476
|
+
'<name>',
|
|
477
|
+
'--',
|
|
478
|
+
'<server-argv>'
|
|
479
|
+
],
|
|
480
|
+
removeArgv: ['claude', 'mcp', 'remove', '<name>', '--scope', '<scope>']
|
|
481
|
+
},
|
|
605
482
|
// Slice #009: Claude Code uses the `Task` tool for sub-agent dispatch.
|
|
606
483
|
// The CLI calls `claudeCodeSubAgentDispatcher.buildToolCall` to construct
|
|
607
484
|
// the exact args shape the `Task` tool expects.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read Claude Code's statusline state file
|
|
3
|
+
* (`~/.claude/statusline-state.json`) and parse a context-percent key.
|
|
4
|
+
* Moved from the generic reader in slice
|
|
5
|
+
* only in the Claude Code adapter.
|
|
6
|
+
*/
|
|
7
|
+
export declare function readClaudeStatuslinePercent(): number | null;
|
|
8
|
+
/**
|
|
9
|
+
* Recursive search for `<outerSessionId>.jsonl` under `projectsDir`. The
|
|
10
|
+
* Mac layout encodes the cwd as a single hash directory; on Mac Claude Code
|
|
11
|
+
* nests the transcript under that hash with an extra level of subdirectory we
|
|
12
|
+
* cannot predict ahead of time. A flat readdir misses that branch and returns
|
|
13
|
+
* null — the silent-failure mode this recursion closes.
|
|
14
|
+
*
|
|
15
|
+
* Moved from the generic reader in slice
|
|
16
|
+
* session id (Claude Code names its transcript by the outer session UUID),
|
|
17
|
+
* NOT the peaks session id.
|
|
18
|
+
*/
|
|
19
|
+
export declare function findTranscriptJsonl(projectsDir: string, outerSessionId: string): string | null;
|
|
20
|
+
/**
|
|
21
|
+
* Resolve the absolute path of a Claude Code transcript jsonl by OUTER
|
|
22
|
+
* session id, searching `~/.claude/projects/**` recursively.
|
|
23
|
+
*
|
|
24
|
+
* `peaks code context-audit` reuses THIS locator instead of re-implementing
|
|
25
|
+
* the recursive find. Returns `null` when the transcript does not exist —
|
|
26
|
+
* callers MUST treat that as "unavailable", never as an error.
|
|
27
|
+
*/
|
|
28
|
+
export declare function resolveClaudeTranscriptPath(outerSessionId: string, projectsDir?: string): string | null;
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
// src/services/ide/adapters/claude-code-local-state.ts
|
|
2
|
+
//
|
|
3
|
+
// The readers for Claude Code's OWN on-disk state — its statusline state file and
|
|
4
|
+
// its transcript directory layout. Split out of `claude-code-adapter.ts`,
|
|
5
|
+
// verbatim and with one import apiece, because that file sits far past the
|
|
6
|
+
// 300-line cap and the repo's size ratchet only ever goes down: the adapter
|
|
7
|
+
// needs room for new declared surface, and a self-contained reader leaving is
|
|
8
|
+
// how a file earns that room instead of raising the ceiling.
|
|
9
|
+
//
|
|
10
|
+
// Nothing here is peaks-loop state. Every path below belongs to the harness, and
|
|
11
|
+
// every function tolerates its absence by answering `null` — a machine without a
|
|
12
|
+
// statusline file is not a broken machine.
|
|
13
|
+
import { existsSync, readFileSync, readdirSync } from 'node:fs';
|
|
14
|
+
import { homedir } from 'node:os';
|
|
15
|
+
import { join } from 'node:path';
|
|
16
|
+
/**
|
|
17
|
+
* Above this, a stored value is a percentage rather than a 0–1 fraction. Both
|
|
18
|
+
* spellings occur in the wild, and nothing needs to know which one the harness
|
|
19
|
+
* picked.
|
|
20
|
+
*/
|
|
21
|
+
const PERCENT_VERSUS_FRACTION = 1.5;
|
|
22
|
+
/**
|
|
23
|
+
* Read Claude Code's statusline state file
|
|
24
|
+
* (`~/.claude/statusline-state.json`) and parse a context-percent key.
|
|
25
|
+
* Moved from the generic reader in slice
|
|
26
|
+
* only in the Claude Code adapter.
|
|
27
|
+
*/
|
|
28
|
+
export function readClaudeStatuslinePercent() {
|
|
29
|
+
const path = join(homedir(), '.claude', 'statusline-state.json');
|
|
30
|
+
if (!existsSync(path))
|
|
31
|
+
return null;
|
|
32
|
+
try {
|
|
33
|
+
const json = JSON.parse(readFileSync(path, 'utf8'));
|
|
34
|
+
const candidates = ['contextPercent', 'context_usage_percent', 'contextPercentUsed'];
|
|
35
|
+
for (const key of candidates) {
|
|
36
|
+
const raw = json[key];
|
|
37
|
+
if (typeof raw === 'number' && Number.isFinite(raw)) {
|
|
38
|
+
return raw > PERCENT_VERSUS_FRACTION ? raw / 100 : Math.max(0, Math.min(1, raw));
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
// TODO(g2): legacy silent catch — now narrows to IO errors only (grace: 1 minor release, v2.14.0)
|
|
44
|
+
if (err instanceof ReferenceError)
|
|
45
|
+
throw err; // surface module-load bugs
|
|
46
|
+
if (err instanceof SyntaxError)
|
|
47
|
+
throw err; // surface parse bugs (e.g. broken statusline JSON)
|
|
48
|
+
return null; // only swallow IO errors
|
|
49
|
+
}
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
/** One directory's worth of the walk: recurse into directories, return a matching file. */
|
|
53
|
+
function scanForFile(dir, fileName, pending) {
|
|
54
|
+
for (const entry of readdirSync(dir, { withFileTypes: true })) {
|
|
55
|
+
const full = join(dir, entry.name);
|
|
56
|
+
if (entry.isDirectory()) {
|
|
57
|
+
pending.push(full);
|
|
58
|
+
}
|
|
59
|
+
else if (entry.isFile() && entry.name === fileName) {
|
|
60
|
+
return full;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Recursive search for `<outerSessionId>.jsonl` under `projectsDir`. The
|
|
67
|
+
* Mac layout encodes the cwd as a single hash directory; on Mac Claude Code
|
|
68
|
+
* nests the transcript under that hash with an extra level of subdirectory we
|
|
69
|
+
* cannot predict ahead of time. A flat readdir misses that branch and returns
|
|
70
|
+
* null — the silent-failure mode this recursion closes.
|
|
71
|
+
*
|
|
72
|
+
* Moved from the generic reader in slice
|
|
73
|
+
* session id (Claude Code names its transcript by the outer session UUID),
|
|
74
|
+
* NOT the peaks session id.
|
|
75
|
+
*/
|
|
76
|
+
export function findTranscriptJsonl(projectsDir, outerSessionId) {
|
|
77
|
+
if (!existsSync(projectsDir))
|
|
78
|
+
return null;
|
|
79
|
+
const pending = [projectsDir];
|
|
80
|
+
try {
|
|
81
|
+
while (pending.length > 0) {
|
|
82
|
+
const dir = pending.pop();
|
|
83
|
+
if (dir === undefined)
|
|
84
|
+
continue;
|
|
85
|
+
const found = scanForFile(dir, `${outerSessionId}.jsonl`, pending);
|
|
86
|
+
if (found !== null)
|
|
87
|
+
return found;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
catch (err) {
|
|
91
|
+
// TODO(g2): legacy silent catch — now narrows to IO errors only (grace: 1 minor release, v2.14.0)
|
|
92
|
+
if (err instanceof ReferenceError)
|
|
93
|
+
throw err; // surface module-load bugs
|
|
94
|
+
if (err instanceof SyntaxError)
|
|
95
|
+
throw err; // surface parse bugs
|
|
96
|
+
return null; // only swallow IO errors
|
|
97
|
+
}
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Resolve the absolute path of a Claude Code transcript jsonl by OUTER
|
|
102
|
+
* session id, searching `~/.claude/projects/**` recursively.
|
|
103
|
+
*
|
|
104
|
+
* `peaks code context-audit` reuses THIS locator instead of re-implementing
|
|
105
|
+
* the recursive find. Returns `null` when the transcript does not exist —
|
|
106
|
+
* callers MUST treat that as "unavailable", never as an error.
|
|
107
|
+
*/
|
|
108
|
+
export function resolveClaudeTranscriptPath(outerSessionId, projectsDir = join(homedir(), '.claude', 'projects')) {
|
|
109
|
+
if (typeof outerSessionId !== 'string' || outerSessionId.length === 0)
|
|
110
|
+
return null;
|
|
111
|
+
return findTranscriptJsonl(projectsDir, outerSessionId);
|
|
112
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 1M-context window size in tokens (documented single choice: 1,000,000).
|
|
3
|
+
* EXPORTED because the adapter's late 1M rescue (`resolveContextWindowTokens`)
|
|
4
|
+
* names it too — one number, one declaration, rather than a copy that can drift.
|
|
5
|
+
*/
|
|
6
|
+
export declare const ONE_MILLION_CONTEXT_TOKENS = 1000000;
|
|
7
|
+
/**
|
|
8
|
+
* Safe-default (non-1M) context window size in tokens. Exported for the same
|
|
9
|
+
* reason: `resolveContextWindow` compares the heuristic against it.
|
|
10
|
+
*/
|
|
11
|
+
export declare const DEFAULT_CONTEXT_WINDOW_TOKENS = 200000;
|
|
12
|
+
/**
|
|
13
|
+
* Resolve the currently-active Claude Code model id from a runtime env map.
|
|
14
|
+
* Returns the first non-empty `CLAUDE_CODE_MODEL_ENV_VARS` value (trimmed), or
|
|
15
|
+
* `undefined` when none is present. Pure + exported for tests; the caller falls
|
|
16
|
+
* back to the transcript `message.model` when this returns undefined.
|
|
17
|
+
*/
|
|
18
|
+
export declare function resolveClaudeModelFromEnv(env: NodeJS.ProcessEnv | undefined): string | undefined;
|
|
19
|
+
/**
|
|
20
|
+
* Model-aware context-window size in tokens.
|
|
21
|
+
*
|
|
22
|
+
* Detection rule (documented):
|
|
23
|
+
* 1. Empty / unknown model → DEFAULT_CONTEXT_WINDOW_TOKENS (200_000).
|
|
24
|
+
* 2. Suffix heuristic — a model id containing `1m` (case-insensitive) is
|
|
25
|
+
* treated as 1M-context.
|
|
26
|
+
* 3. Explicit allowlist — known 1M Claude model ids
|
|
27
|
+
* (ONE_MILLION_CONTEXT_MODELS).
|
|
28
|
+
* 4. Everything else → 200_000 (the safe default).
|
|
29
|
+
*
|
|
30
|
+
* Callers MAY additionally infer ≥1M from the observed token count: if
|
|
31
|
+
* `contextTokens > DEFAULT_CONTEXT_WINDOW_TOKENS`, the model cannot be a
|
|
32
|
+
* 200K model and must be ≥1M (see `readClaudeTranscriptEstimate`).
|
|
33
|
+
*
|
|
34
|
+
* This is the HEURISTIC layer only. Explicit user overrides sit ABOVE it —
|
|
35
|
+
* see `resolveContextWindow`, which is what the probe actually calls.
|
|
36
|
+
*/
|
|
37
|
+
export declare function modelContextWindowTokens(model: string): number;
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
// src/services/ide/adapters/claude-code-model-window.ts
|
|
2
|
+
//
|
|
3
|
+
// Which Claude Code model is active, and how many tokens its context window
|
|
4
|
+
// holds. Those are the two questions `resolveClaudeModelFromEnv` and
|
|
5
|
+
// `modelContextWindowTokens` answer, and they are the pair that left
|
|
6
|
+
// `claude-code-adapter.ts`: that file is far past the
|
|
7
|
+
// 300-line cap, the repo's size ratchet only ever goes down, and the adapter
|
|
8
|
+
// needed room for its `mcpInstall` declaration. Same technique, and the same
|
|
9
|
+
// reason, as the `claude-code-local-state.ts` split before it — a self-contained
|
|
10
|
+
// responsibility leaves, instead of the ceiling going up.
|
|
11
|
+
//
|
|
12
|
+
// WHY THIS BLOCK AND NOT ANOTHER. Both functions are PURE: the env map is an
|
|
13
|
+
// argument, and nothing here reads a file, an env var or a process global. So
|
|
14
|
+
// the move needs no rewiring in either direction — the adapter imports both
|
|
15
|
+
// back and nothing here reaches for the adapter — which is what keeps the move
|
|
16
|
+
// a move. It is also the one block in that file whose eslint findings are zero,
|
|
17
|
+
// which a receiving file with no baseline row must be.
|
|
18
|
+
//
|
|
19
|
+
// The vendor spellings below (`ANTHROPIC_*`, `claude-opus-4`) are Claude Code's
|
|
20
|
+
// own. An adapter is the only place they belong (spec §13), which is why this is
|
|
21
|
+
// a second adapter module and not a shared one.
|
|
22
|
+
/**
|
|
23
|
+
* 1M-context window size in tokens (documented single choice: 1,000,000).
|
|
24
|
+
* EXPORTED because the adapter's late 1M rescue (`resolveContextWindowTokens`)
|
|
25
|
+
* names it too — one number, one declaration, rather than a copy that can drift.
|
|
26
|
+
*/
|
|
27
|
+
export const ONE_MILLION_CONTEXT_TOKENS = 1_000_000;
|
|
28
|
+
/**
|
|
29
|
+
* Safe-default (non-1M) context window size in tokens. Exported for the same
|
|
30
|
+
* reason: `resolveContextWindow` compares the heuristic against it.
|
|
31
|
+
*/
|
|
32
|
+
export const DEFAULT_CONTEXT_WINDOW_TOKENS = 200_000;
|
|
33
|
+
/**
|
|
34
|
+
* Known 1M-context Claude model id prefixes whose ids do NOT carry a `1m`
|
|
35
|
+
* suffix (e.g. `claude-sonnet-4-5-20250929`). The substring match is
|
|
36
|
+
* intentionally generous — every `claude-sonnet-4*` / `claude-opus-4*`
|
|
37
|
+
* variant is 1M-context.
|
|
38
|
+
*/
|
|
39
|
+
const ONE_MILLION_CONTEXT_MODELS = ['claude-opus-4', 'claude-sonnet-4'];
|
|
40
|
+
/**
|
|
41
|
+
* Claude Code runtime env vars that may carry the currently-active model id,
|
|
42
|
+
* in documented precedence order (first non-empty value wins):
|
|
43
|
+
* 1. ANTHROPIC_MODEL — explicit per-run model override
|
|
44
|
+
* 2. ANTHROPIC_DEFAULT_OPUS_MODEL — default Opus fallback
|
|
45
|
+
* 3. ANTHROPIC_DEFAULT_SONNET_MODEL — default Sonnet fallback
|
|
46
|
+
* 4. ANTHROPIC_DEFAULT_HAIKU_MODEL — default Haiku fallback
|
|
47
|
+
* 5. ANTHROPIC_DEFAULT_FABLE_MODEL — default Fable fallback
|
|
48
|
+
* 6. CLAUDE_CODE_SUBAGENT_MODEL — sub-agent model (used when the others
|
|
49
|
+
* are absent, e.g. a sub-agent-only env)
|
|
50
|
+
*
|
|
51
|
+
* Why env-first: the transcript's `message.model` often drops Claude Code's
|
|
52
|
+
* `[1M]` / `[200K]` suffix marker (observed: `deepseek-v4-flash`), while the
|
|
53
|
+
* runtime env vars above carry it (`deepseek-v4-flash[1M]`). Reading them
|
|
54
|
+
* first lets the window resolver see the true context window. This family is
|
|
55
|
+
* vendor-specific, so it lives ONLY in the claude-code adapter.
|
|
56
|
+
*/
|
|
57
|
+
const CLAUDE_CODE_MODEL_ENV_VARS = [
|
|
58
|
+
'ANTHROPIC_MODEL',
|
|
59
|
+
'ANTHROPIC_DEFAULT_OPUS_MODEL',
|
|
60
|
+
'ANTHROPIC_DEFAULT_SONNET_MODEL',
|
|
61
|
+
'ANTHROPIC_DEFAULT_HAIKU_MODEL',
|
|
62
|
+
'ANTHROPIC_DEFAULT_FABLE_MODEL',
|
|
63
|
+
'CLAUDE_CODE_SUBAGENT_MODEL'
|
|
64
|
+
];
|
|
65
|
+
/**
|
|
66
|
+
* Resolve the currently-active Claude Code model id from a runtime env map.
|
|
67
|
+
* Returns the first non-empty `CLAUDE_CODE_MODEL_ENV_VARS` value (trimmed), or
|
|
68
|
+
* `undefined` when none is present. Pure + exported for tests; the caller falls
|
|
69
|
+
* back to the transcript `message.model` when this returns undefined.
|
|
70
|
+
*/
|
|
71
|
+
export function resolveClaudeModelFromEnv(env) {
|
|
72
|
+
if (!env)
|
|
73
|
+
return undefined;
|
|
74
|
+
for (const name of CLAUDE_CODE_MODEL_ENV_VARS) {
|
|
75
|
+
const value = env[name];
|
|
76
|
+
if (typeof value === 'string') {
|
|
77
|
+
const trimmed = value.trim();
|
|
78
|
+
if (trimmed.length > 0)
|
|
79
|
+
return trimmed;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return undefined;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Model-aware context-window size in tokens.
|
|
86
|
+
*
|
|
87
|
+
* Detection rule (documented):
|
|
88
|
+
* 1. Empty / unknown model → DEFAULT_CONTEXT_WINDOW_TOKENS (200_000).
|
|
89
|
+
* 2. Suffix heuristic — a model id containing `1m` (case-insensitive) is
|
|
90
|
+
* treated as 1M-context.
|
|
91
|
+
* 3. Explicit allowlist — known 1M Claude model ids
|
|
92
|
+
* (ONE_MILLION_CONTEXT_MODELS).
|
|
93
|
+
* 4. Everything else → 200_000 (the safe default).
|
|
94
|
+
*
|
|
95
|
+
* Callers MAY additionally infer ≥1M from the observed token count: if
|
|
96
|
+
* `contextTokens > DEFAULT_CONTEXT_WINDOW_TOKENS`, the model cannot be a
|
|
97
|
+
* 200K model and must be ≥1M (see `readClaudeTranscriptEstimate`).
|
|
98
|
+
*
|
|
99
|
+
* This is the HEURISTIC layer only. Explicit user overrides sit ABOVE it —
|
|
100
|
+
* see `resolveContextWindow`, which is what the probe actually calls.
|
|
101
|
+
*/
|
|
102
|
+
export function modelContextWindowTokens(model) {
|
|
103
|
+
const m = model.trim().toLowerCase();
|
|
104
|
+
if (m.length === 0)
|
|
105
|
+
return DEFAULT_CONTEXT_WINDOW_TOKENS;
|
|
106
|
+
if (m.includes('1m'))
|
|
107
|
+
return ONE_MILLION_CONTEXT_TOKENS;
|
|
108
|
+
for (const known of ONE_MILLION_CONTEXT_MODELS) {
|
|
109
|
+
if (m.includes(known))
|
|
110
|
+
return ONE_MILLION_CONTEXT_TOKENS;
|
|
111
|
+
}
|
|
112
|
+
return DEFAULT_CONTEXT_WINDOW_TOKENS;
|
|
113
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The REGISTRATION profile of one harness's MCP entry point (spec §8.3).
|
|
3
|
+
*
|
|
4
|
+
* WHY THIS IS NOT `IdeMcpProfile`. That profile (on `IdeAdapter.mcp`) answers
|
|
5
|
+
* "how does this harness SPELL a peaks tool name", which the pre-tool branch
|
|
6
|
+
* needs. This one answers "how does this harness register a server", which only
|
|
7
|
+
* the distribution path needs. One field would conflate two questions asked by
|
|
8
|
+
* two callers that never run together.
|
|
9
|
+
*
|
|
10
|
+
* WHY IT DECLARES ARGV AND NOT A COMMAND STRING. Registering is the HARNESS's
|
|
11
|
+
* own operation: `peaks mcp install` calls the harness's entry point rather than
|
|
12
|
+
* hand-editing the harness's config file, because that file is full of the
|
|
13
|
+
* user's state and hand-editing it is neither safe nor version-stable (§8.3).
|
|
14
|
+
* The entry is declared as an ARRAY with three placeholders, so the engine that
|
|
15
|
+
* consumes it substitutes values into an array and never builds a command line.
|
|
16
|
+
*
|
|
17
|
+
* WHY add AND remove ARE BOTH DECLARED. A harness's register verb is not
|
|
18
|
+
* idempotent — same name, same scope, and it fails, with no `--force` and no
|
|
19
|
+
* `update` — so the install is delete-then-add (§8.3). Both halves are therefore
|
|
20
|
+
* part of the contract, and `scopes` exists because the entry can already sit in
|
|
21
|
+
* more than one of them: the delete is a sweep, not a targeted call.
|
|
22
|
+
*
|
|
23
|
+
* WHAT IS DELIBERATELY ABSENT: any harness name, any platform name, and any
|
|
24
|
+
* branch on either. A vendor's own spellings belong in its adapter, which is the
|
|
25
|
+
* only module that fills this type in.
|
|
26
|
+
*/
|
|
27
|
+
/** Placeholder for the server key the harness files peaks under. */
|
|
28
|
+
export declare const MCP_NAME_PLACEHOLDER = "<name>";
|
|
29
|
+
/** Placeholder for one scope the entry can live in; substituted once per removal. */
|
|
30
|
+
export declare const MCP_SCOPE_PLACEHOLDER = "<scope>";
|
|
31
|
+
/** Placeholder for the launched server argv — the command and every token after it. */
|
|
32
|
+
export declare const MCP_SERVER_ARGV_PLACEHOLDER = "<server-argv>";
|
|
33
|
+
/** The placeholders an argv template may carry, and nothing else may look like one. */
|
|
34
|
+
export declare const MCP_ARGV_PLACEHOLDERS: readonly ["<name>", "<scope>", "<server-argv>"];
|
|
35
|
+
/**
|
|
36
|
+
* How one harness registers, and unregisters, a peaks MCP server.
|
|
37
|
+
*
|
|
38
|
+
* Optional on `IdeAdapter`, like `skillInstall?` / `standardsProfile?`: an
|
|
39
|
+
* adapter that omits it is declaring "this harness has no registration entry
|
|
40
|
+
* peaks may call", and every consumer reads that as "nothing to do" rather than
|
|
41
|
+
* as an error.
|
|
42
|
+
*/
|
|
43
|
+
export interface IdeMcpInstallProfile {
|
|
44
|
+
/** The server key this harness files peaks under. The install touches only this one. */
|
|
45
|
+
readonly serverName: string;
|
|
46
|
+
/**
|
|
47
|
+
* Every scope the entry can live in. The delete sweeps all of them, because a
|
|
48
|
+
* previous install may have written a different one and the harness's own
|
|
49
|
+
* removal fails on the scope that is empty.
|
|
50
|
+
*/
|
|
51
|
+
readonly scopes: readonly string[];
|
|
52
|
+
/** The scope the entry is (re-)written to. Must be one of `scopes`. */
|
|
53
|
+
readonly targetScope: string;
|
|
54
|
+
/** argv template that registers the server. Carries `<name>` and `<server-argv>`. */
|
|
55
|
+
readonly addArgv: readonly string[];
|
|
56
|
+
/** argv template that unregisters it. Carries `<name>` and `<scope>`. */
|
|
57
|
+
readonly removeArgv: readonly string[];
|
|
58
|
+
}
|
|
59
|
+
/** The values an argv template is expanded with. */
|
|
60
|
+
export interface McpArgvValues {
|
|
61
|
+
readonly serverName: string;
|
|
62
|
+
readonly scope: string;
|
|
63
|
+
readonly serverArgv: readonly string[];
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* A declaration that cannot drive an install is a defect in the adapter, and it
|
|
67
|
+
* is reported as one rather than silently producing an argv the harness will
|
|
68
|
+
* reject. That is the whole argument for throwing here: a profile missing its
|
|
69
|
+
* server-argv placeholder would install a registration that launches nothing,
|
|
70
|
+
* and nothing would say so.
|
|
71
|
+
*/
|
|
72
|
+
export declare function assertMcpInstallProfile(profile: IdeMcpInstallProfile): void;
|
|
73
|
+
/**
|
|
74
|
+
* Expand one argv template. A placeholder that stands for SEVERAL tokens expands
|
|
75
|
+
* to all of them, which is why this returns an array and why the launched server
|
|
76
|
+
* argv is passed as one: the caller never joins and never splits.
|
|
77
|
+
*/
|
|
78
|
+
export declare function expandMcpArgv(argv: readonly string[], values: McpArgvValues): readonly string[];
|