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,124 @@
|
|
|
1
|
+
import { addJsonOption, getErrorMessage, printResult } from '../cli-helpers.js';
|
|
2
|
+
import { fail, ok } from 'peaks-loop-shared/result';
|
|
3
|
+
import { readJobShapeDecision, JobShapeDecisionError } from '../../services/code/job-shape-decision.js';
|
|
4
|
+
import { resolveOuterSessionId } from '../../services/session/binding-status-service.js';
|
|
5
|
+
import { resolveCanonicalProjectRoot } from '../../services/config/config-service.js';
|
|
6
|
+
import { readActiveSid } from './code-runtime-session.js';
|
|
7
|
+
import { buildContextNowData, buildContextNowNextActions, buildContextNowWarnings, readContextNowHarness, resolveContextNowDecision } from './code-context-now-envelope.js';
|
|
8
|
+
const CONTEXT_NOW_DESCRIPTION = "v2.13.0 AC-1: read the active IDE adapter's context-fill % " +
|
|
9
|
+
'without requiring the LLM to pass --prompt-size <bytes> manually. ' +
|
|
10
|
+
'Adapter-driven (no hard-coded IDE names): Claude Code is the MVP ' +
|
|
11
|
+
'implementation; trae / codex / cursor / qoder / tongyi-lingma / ' +
|
|
12
|
+
'hermes / openclaw register their own env-var via IdeAdapter.compact. ' +
|
|
13
|
+
"v3.1.2 / 2026-09-12: the mode's pre-compact line emits " +
|
|
14
|
+
'action=auto-compact-now (MANDATORY, single-rid included) and ' +
|
|
15
|
+
'the red line emits action=red-line (the installed PreToolUse hook re-runs ' +
|
|
16
|
+
'this command on the next Bash/Task tool call; nothing is blocked). ' +
|
|
17
|
+
'--enforce-job-mode only changes the reported `jobMode` label; ' +
|
|
18
|
+
'the thresholds are identical. ' +
|
|
19
|
+
'Context-window override: set env PEAKS_CONTEXT_WINDOW_TOKENS=<positive int> ' +
|
|
20
|
+
'or `peaks config set --key context.windowTokens --value <positive int>`; ' +
|
|
21
|
+
'the JSON envelope reports the winning layer as capacitySource ' +
|
|
22
|
+
'(env-override | config | model-heuristic | default).';
|
|
23
|
+
/**
|
|
24
|
+
* The two flags the action derives before any probe: the `--prompt-size`
|
|
25
|
+
* override (guarded) and the Job-mode label. Pure in `opts` — no ordering
|
|
26
|
+
* dependency on the call site.
|
|
27
|
+
*/
|
|
28
|
+
function resolveContextNowFlags(opts) {
|
|
29
|
+
// guard rejects non-finite / negative values; only finite
|
|
30
|
+
// non-negative numbers reach the reader. Undefined → no override.
|
|
31
|
+
let promptSizeBytes;
|
|
32
|
+
if (opts.promptSize !== undefined) {
|
|
33
|
+
const parsed = Number(opts.promptSize);
|
|
34
|
+
if (Number.isFinite(parsed) && parsed >= 0) {
|
|
35
|
+
promptSizeBytes = parsed;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
// v3.1.2: detect Job mode from job-shape.json when --enforce-job-mode
|
|
39
|
+
// is not explicitly passed. The LLM is the source of truth for
|
|
40
|
+
// whether the request is Job-shaped; the recorded decision is.
|
|
41
|
+
let isJobMode = opts.enforceJobMode === true;
|
|
42
|
+
if (!isJobMode) {
|
|
43
|
+
try {
|
|
44
|
+
const sessionIdForDecision = opts.sessionId ?? readActiveSid(opts.project);
|
|
45
|
+
if (sessionIdForDecision !== null) {
|
|
46
|
+
const record = readJobShapeDecision(opts.project, sessionIdForDecision);
|
|
47
|
+
if (record.decision.isJob)
|
|
48
|
+
isJobMode = true;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
catch (err) {
|
|
52
|
+
if (!(err instanceof JobShapeDecisionError))
|
|
53
|
+
throw err;
|
|
54
|
+
// missing/malformed decision file is fine — fall back to advisory.
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return { promptSizeBytes, isJobMode };
|
|
58
|
+
}
|
|
59
|
+
/** The catch branch, lifted verbatim out of the action body. */
|
|
60
|
+
function reportContextNowFailure(io, err, json) {
|
|
61
|
+
printResult(io, fail('code.context-now', 'CONTEXT_NOW_FAILED', getErrorMessage(err), null, [
|
|
62
|
+
'Verify the project path and try again'
|
|
63
|
+
]), json);
|
|
64
|
+
process.exitCode = 1;
|
|
65
|
+
}
|
|
66
|
+
/** The action body, lifted to a module-level function so both it and the registrar fit in 50 lines. */
|
|
67
|
+
async function runCodeContextNow(opts, io) {
|
|
68
|
+
try {
|
|
69
|
+
const { readContextPercent } = await import('../../services/context/auto-compact-reader.js');
|
|
70
|
+
const flags = resolveContextNowFlags(opts);
|
|
71
|
+
const sessionId = opts.sessionId ?? readActiveSid(opts.project) ?? 'unknown';
|
|
72
|
+
const outerSessionId = resolveOuterSessionId(opts.project, sessionId);
|
|
73
|
+
const probe = readContextPercent({
|
|
74
|
+
projectRoot: opts.project,
|
|
75
|
+
sessionId,
|
|
76
|
+
outerSessionId,
|
|
77
|
+
env: process.env,
|
|
78
|
+
promptSizeBytes: flags.promptSizeBytes
|
|
79
|
+
});
|
|
80
|
+
// Promote `--project .` (what the PreToolUse hook passes) to the git
|
|
81
|
+
// root ONCE, for both of the consumers below: the settings path the
|
|
82
|
+
// harness window is written to, and the session directory the witness
|
|
83
|
+
// is read from, must not depend on the caller's cwd — and an absolute
|
|
84
|
+
// path is what the envelope then reports back to the operator. This
|
|
85
|
+
// resolves through `git rev-parse --show-toplevel`, i.e. a whole
|
|
86
|
+
// process spawn (measured 2026-09-14: med 111.8 ms per call on this
|
|
87
|
+
// host), so calling it twice with the same argument charged the witness
|
|
88
|
+
// read it precedes — 0.027 ms — roughly 4,000x its own cost.
|
|
89
|
+
const canonicalProjectRoot = resolveCanonicalProjectRoot(opts.project);
|
|
90
|
+
const harness = readContextNowHarness(canonicalProjectRoot, sessionId, outerSessionId, probe);
|
|
91
|
+
const decision = resolveContextNowDecision(canonicalProjectRoot, probe.ratio, flags.isJobMode);
|
|
92
|
+
printResult(io, ok('code.context-now', buildContextNowData({
|
|
93
|
+
probe,
|
|
94
|
+
ratioPct: (probe.ratio * 100).toFixed(1),
|
|
95
|
+
isJobMode: flags.isJobMode,
|
|
96
|
+
promptSizeBytes: flags.promptSizeBytes,
|
|
97
|
+
decision,
|
|
98
|
+
harness
|
|
99
|
+
}), buildContextNowWarnings(harness), buildContextNowNextActions(decision, harness)),
|
|
100
|
+
// `true`, which made the declared `--json` flag a no-op and left the
|
|
101
|
+
// human with raw JSON and no `next:` lines — so a person running this
|
|
102
|
+
// command could not see that peaks-loop had just written their
|
|
103
|
+
// harness settings. The notices above (including the key, the value
|
|
104
|
+
// and the rollback command) are `nextActions`, which `printResult`
|
|
105
|
+
// prints as `next: …` lines ONLY in the non-JSON path. Honoring the
|
|
106
|
+
// flag is what puts them in front of a human. See the consumer audit
|
|
107
|
+
// in the slice's RD artifact: every in-repo caller (the PreToolUse
|
|
108
|
+
// hooks, `orchestrator-can-do`, the skill runbooks) passes `--json`
|
|
109
|
+
// explicitly, so their byte-for-byte output is unchanged.
|
|
110
|
+
opts.json === true);
|
|
111
|
+
}
|
|
112
|
+
catch (err) {
|
|
113
|
+
reportContextNowFailure(io, err, opts.json);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
export function registerCodeContextNowCommand(code, io) {
|
|
117
|
+
addJsonOption(code
|
|
118
|
+
.command('context-now')
|
|
119
|
+
.description(CONTEXT_NOW_DESCRIPTION)
|
|
120
|
+
.requiredOption('--project <path>', 'target project root')
|
|
121
|
+
.option('--session-id <sid>', 'override session id (default: read from active presence)')
|
|
122
|
+
.option('--enforce-job-mode', 'v3.1.2: label the run as Job-shaped (jobMode=true). Auto-enabled when job-shape.json says isJob=true. Since 2026-09-12 the ≥0.85 MANDATORY auto-compact applies in single-rid mode too, so this flag no longer changes any action.')
|
|
123
|
+
.option('--prompt-size <bytes>', 'override the bytes-from-env path; takes priority over env / statusline / transcript. Useful when CLAUDE_CONTEXT_USAGE_PERCENT is absent (e.g. Mac Claude Code).')).action((opts) => runCodeContextNow(opts, io));
|
|
124
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { ContextPercentProbe } from '../../services/context/auto-compact-types.js';
|
|
2
|
+
/**
|
|
3
|
+
* The harness half of the probe: the window sync, its warning, the witness read
|
|
4
|
+
* and its notice. Lifted verbatim from the action body — it reads only its
|
|
5
|
+
* parameters.
|
|
6
|
+
*/
|
|
7
|
+
export declare function readContextNowHarness(canonicalProjectRoot: string, sessionId: string, outerSessionId: string | null | undefined, probe: ContextPercentProbe): {
|
|
8
|
+
harnessWindow: import("../../services/context/harness-window-config.js").HarnessWindowSyncResult | null;
|
|
9
|
+
harnessWindowWarning: string | null;
|
|
10
|
+
harnessWitness: import("../../services/context/harness-context-witness.js").HarnessWitnessComparison;
|
|
11
|
+
witnessNotice: string | null;
|
|
12
|
+
};
|
|
13
|
+
type ContextNowHarness = ReturnType<typeof readContextNowHarness>;
|
|
14
|
+
/**
|
|
15
|
+
* Slice H4 (rid=h4-context-now-mode-blind): ONE table, ONE mode
|
|
16
|
+
* resolver. The hard-coded ladder that used to live in the action read no mode
|
|
17
|
+
* at all, so on a 24h run (`partial` = 0.65/0.70/0.85) it answered `soft-warn`
|
|
18
|
+
* + `next: null` across [0.70, 0.85) — the band in which
|
|
19
|
+
* `peaks code auto-compact` had already decided to compact.
|
|
20
|
+
*/
|
|
21
|
+
export declare function resolveContextNowDecision(canonicalProjectRoot: string, ratio: number, isJobMode: boolean): {
|
|
22
|
+
action: "ok" | "soft-warn" | "red-line" | "auto-compact-now";
|
|
23
|
+
next: string | null;
|
|
24
|
+
verdict: string;
|
|
25
|
+
bands: {
|
|
26
|
+
softWarn: string;
|
|
27
|
+
preCompact: string;
|
|
28
|
+
redLine: string;
|
|
29
|
+
preCompactRatio: string;
|
|
30
|
+
redLineRatio: string;
|
|
31
|
+
};
|
|
32
|
+
gateModeNotice: string;
|
|
33
|
+
};
|
|
34
|
+
type ContextNowDecision = ReturnType<typeof resolveContextNowDecision>;
|
|
35
|
+
/** The envelope's `data` record, lifted verbatim out of the action body. */
|
|
36
|
+
export declare function buildContextNowData(args: {
|
|
37
|
+
probe: ContextPercentProbe;
|
|
38
|
+
ratioPct: string;
|
|
39
|
+
isJobMode: boolean;
|
|
40
|
+
promptSizeBytes: number | undefined;
|
|
41
|
+
decision: ContextNowDecision;
|
|
42
|
+
harness: ContextNowHarness;
|
|
43
|
+
}): {
|
|
44
|
+
ratio: number;
|
|
45
|
+
ratioPct: string;
|
|
46
|
+
verdict: string;
|
|
47
|
+
action: "ok" | "soft-warn" | "red-line" | "auto-compact-now";
|
|
48
|
+
next: string | null;
|
|
49
|
+
jobMode: boolean;
|
|
50
|
+
source: string;
|
|
51
|
+
ide: string;
|
|
52
|
+
capacityBytes: number | undefined;
|
|
53
|
+
rawBytes: number | null;
|
|
54
|
+
rawTokens: number | null;
|
|
55
|
+
capacityTokens: number | null;
|
|
56
|
+
capacitySource: string | null;
|
|
57
|
+
bytesPrompt: number | null;
|
|
58
|
+
capturedAt: string;
|
|
59
|
+
harnessWindow: import("../../services/context/harness-window-config.js").HarnessWindowSyncResult | null;
|
|
60
|
+
harnessWitness: import("../../services/context/harness-context-witness.js").HarnessWitnessComparison;
|
|
61
|
+
};
|
|
62
|
+
/** The envelope's `warnings` array, lifted verbatim out of the action body. */
|
|
63
|
+
export declare function buildContextNowWarnings(harness: ContextNowHarness): string[];
|
|
64
|
+
/** The envelope's `nextActions` array, lifted verbatim out of the action body. */
|
|
65
|
+
export declare function buildContextNowNextActions(decision: ContextNowDecision, harness: ContextNowHarness): string[];
|
|
66
|
+
export {};
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
// The `peaks code context-now` envelope: the harness reading (window sync +
|
|
2
|
+
// witness), the mode-resolved decision, and the `data` / `warnings` /
|
|
3
|
+
// `nextActions` builders. Split out of `code-context-now-command.ts` when
|
|
4
|
+
// compressing its long function pushed that file past the 300-line cap; every
|
|
5
|
+
// body below is the original one, moved verbatim.
|
|
6
|
+
import { resolveAutoCompactProfile } from '../../services/mode/mode-status-service.js';
|
|
7
|
+
import { syncHarnessWindowForProject } from '../../services/context/auto-compact-reader.js';
|
|
8
|
+
import { describeHarnessWindowSync, harnessWindowSyncWarning } from '../../services/context/harness-window-config.js';
|
|
9
|
+
import { describeHarnessWitness, readAndCompareHarnessWitness } from '../../services/context/harness-context-witness.js';
|
|
10
|
+
import { contextNowActionFor, contextNowBandLabels } from './code-context-now-mapping.js';
|
|
11
|
+
/**
|
|
12
|
+
* The harness half of the probe: the window sync, its warning, the witness read
|
|
13
|
+
* and its notice. Lifted verbatim from the action body — it reads only its
|
|
14
|
+
* parameters.
|
|
15
|
+
*/
|
|
16
|
+
export function readContextNowHarness(canonicalProjectRoot, sessionId, outerSessionId, probe) {
|
|
17
|
+
// the window this probe just divided by into the harness's own settings,
|
|
18
|
+
// so "85%" here and the harness's own trigger are one point on one
|
|
19
|
+
// scale. Idempotent (no write when the value is already in force) and a
|
|
20
|
+
// no-op when the probe carried no token window — peaks-loop never
|
|
21
|
+
// invents a number it did not measure.
|
|
22
|
+
const harnessWindow = syncHarnessWindowForProject({
|
|
23
|
+
projectRoot: canonicalProjectRoot,
|
|
24
|
+
env: process.env,
|
|
25
|
+
tokens: probe.capacityTokens ?? null
|
|
26
|
+
});
|
|
27
|
+
// The machine half of 要告知. A refused write is not automatically a
|
|
28
|
+
// non-event: the file may pin a window that disagrees with the one this
|
|
29
|
+
// probe just divided by, and then the ratio above describes a trigger
|
|
30
|
+
// the harness is not going to fire. `nextActions` carries the full
|
|
31
|
+
// sentence; this one line rides `warnings` so a JSON consumer cannot
|
|
32
|
+
// miss it either.
|
|
33
|
+
const harnessWindowWarning = harnessWindowSyncWarning(harnessWindow);
|
|
34
|
+
// own number for the same quantity, captured by the statusline. This is
|
|
35
|
+
// OBSERVATION ONLY — it never feeds `verdict` / `action` / any threshold
|
|
36
|
+
// below. A wrong reading here must not be able to fire a compact.
|
|
37
|
+
const harnessWitness = readAndCompareHarnessWitness({
|
|
38
|
+
// The same promoted root as the harness-window write above, for the
|
|
39
|
+
// same reason: the statusline resolves its root from the harness
|
|
40
|
+
// payload (absolute), so a `--project .` from a hook would otherwise
|
|
41
|
+
// look for the witness somewhere else and report `absent` forever.
|
|
42
|
+
projectRoot: canonicalProjectRoot,
|
|
43
|
+
sessionId,
|
|
44
|
+
peaksRatio: probe.ratio,
|
|
45
|
+
peaksTokens: probe.rawTokens ?? null,
|
|
46
|
+
peaksWindowTokens: probe.capacityTokens ?? null,
|
|
47
|
+
outerSessionId: outerSessionId ?? null
|
|
48
|
+
});
|
|
49
|
+
const witnessNotice = describeHarnessWitness(harnessWitness);
|
|
50
|
+
return { harnessWindow, harnessWindowWarning, harnessWitness, witnessNotice };
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Slice H4 (rid=h4-context-now-mode-blind): ONE table, ONE mode
|
|
54
|
+
* resolver. The hard-coded ladder that used to live in the action read no mode
|
|
55
|
+
* at all, so on a 24h run (`partial` = 0.65/0.70/0.85) it answered `soft-warn`
|
|
56
|
+
* + `next: null` across [0.70, 0.85) — the band in which
|
|
57
|
+
* `peaks code auto-compact` had already decided to compact.
|
|
58
|
+
*/
|
|
59
|
+
export function resolveContextNowDecision(canonicalProjectRoot, ratio, isJobMode) {
|
|
60
|
+
const compactMode = resolveAutoCompactProfile(canonicalProjectRoot);
|
|
61
|
+
const decided = contextNowActionFor(ratio, compactMode);
|
|
62
|
+
const action = decided.action;
|
|
63
|
+
const next = decided.next;
|
|
64
|
+
const verdict = action === 'red-line' ? 'red-line' : action === 'auto-compact-now' ? 'pre-compact' : action;
|
|
65
|
+
const bands = contextNowBandLabels(compactMode);
|
|
66
|
+
// in behaviour ABOVE 0.50 — both auto-fire at ≥0.85 and both red-line at
|
|
67
|
+
// ≥0.95". That was false: `partial` fires at 0.70, red-lines at 0.85.
|
|
68
|
+
// The lines now come from the table for the mode in force.
|
|
69
|
+
const gateModeNotice = isJobMode
|
|
70
|
+
? `Job mode (job-shape.json isJob=true): the same ≥${bands.preCompactRatio} / ≥${bands.redLineRatio} thresholds apply, and the decision is recorded in job-shape.json.`
|
|
71
|
+
: `Single-rid mode: the same ≥${bands.preCompactRatio} / ≥${bands.redLineRatio} thresholds apply — ≥${bands.preCompactRatio} is MANDATORY auto-compact, not advisory.`;
|
|
72
|
+
return { action, next, verdict, bands, gateModeNotice };
|
|
73
|
+
}
|
|
74
|
+
/** The envelope's `data` record, lifted verbatim out of the action body. */
|
|
75
|
+
export function buildContextNowData(args) {
|
|
76
|
+
const { probe, decision, harness } = args;
|
|
77
|
+
return {
|
|
78
|
+
ratio: probe.ratio,
|
|
79
|
+
ratioPct: `${args.ratioPct}%`,
|
|
80
|
+
verdict: decision.verdict,
|
|
81
|
+
action: decision.action,
|
|
82
|
+
next: decision.next,
|
|
83
|
+
jobMode: args.isJobMode,
|
|
84
|
+
source: probe.source,
|
|
85
|
+
ide: probe.ide,
|
|
86
|
+
capacityBytes: probe.capacityBytes,
|
|
87
|
+
rawBytes: probe.rawBytes ?? null,
|
|
88
|
+
rawTokens: probe.rawTokens ?? null,
|
|
89
|
+
capacityTokens: probe.capacityTokens ?? null,
|
|
90
|
+
// capacityTokens (env-override | config | model-heuristic |
|
|
91
|
+
// default) — null for byte/percent sources, which have no window.
|
|
92
|
+
capacitySource: probe.capacitySource ?? null,
|
|
93
|
+
bytesPrompt: args.promptSizeBytes ?? null,
|
|
94
|
+
capturedAt: probe.capturedAt,
|
|
95
|
+
// window sync did on this probe. Reported rather than silent — the
|
|
96
|
+
// harness tells a user who overrides the window only via
|
|
97
|
+
// `/autocompact`, so peaks-loop must be the one that says it.
|
|
98
|
+
harnessWindow: harness.harnessWindow,
|
|
99
|
+
harnessWitness: harness.harnessWitness
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
/** The envelope's `warnings` array, lifted verbatim out of the action body. */
|
|
103
|
+
export function buildContextNowWarnings(harness) {
|
|
104
|
+
return [
|
|
105
|
+
...(harness.harnessWindowWarning === null ? [] : [harness.harnessWindowWarning]),
|
|
106
|
+
// AC3: the disagreement rides `warnings` — it is a fact about the
|
|
107
|
+
// state, not an instruction — and it is one-way. Never an
|
|
108
|
+
// AskUserQuestion (see .peaks/memory/auto-compact-threshold-policy.md).
|
|
109
|
+
...(harness.witnessNotice === null ? [] : [harness.witnessNotice])
|
|
110
|
+
];
|
|
111
|
+
}
|
|
112
|
+
/** The envelope's `nextActions` array, lifted verbatim out of the action body. */
|
|
113
|
+
export function buildContextNowNextActions(decision, harness) {
|
|
114
|
+
const { action, next, bands, gateModeNotice } = decision;
|
|
115
|
+
return [
|
|
116
|
+
action === 'red-line'
|
|
117
|
+
? `RED LINE: ≥ ${bands.redLine}%. Next: \`${next}\` — peaks-loop asks the harness to compact and KEEPS WORKING (dispatch is not blocked); re-probe to confirm it landed.`
|
|
118
|
+
: action === 'auto-compact-now'
|
|
119
|
+
? `MANDATORY auto-compact (≥${bands.preCompact}%, every mode). Code MUST call \`${next}\` WITHOUT confirmation.`
|
|
120
|
+
: action === 'soft-warn'
|
|
121
|
+
? `Soft warn (${bands.softWarn}–${bands.preCompact}%). Continue working; the next \`peaks code auto-compact\` will re-check.`
|
|
122
|
+
: `Below ${bands.softWarn}%. No action required.`,
|
|
123
|
+
gateModeNotice,
|
|
124
|
+
// Single wording, shared with `peaks code auto-compact` — see
|
|
125
|
+
// `describeHarnessWindowSync`.
|
|
126
|
+
describeHarnessWindowSync(harness.harnessWindow),
|
|
127
|
+
// AC3: the one-way hint that accompanies the `warnings` entry. Both
|
|
128
|
+
// channels carry the SAME fact in the shape each is read for
|
|
129
|
+
// (machine-readable warning vs human/LLM advice) — see
|
|
130
|
+
// `harnessWindowSyncWarning` / `describeHarnessWindowSync` above for
|
|
131
|
+
// the same split, and note this one never asks a question.
|
|
132
|
+
...(harness.witnessNotice === null
|
|
133
|
+
? []
|
|
134
|
+
: ['Re-probe with `peaks code context-now` to confirm; this is reported, not blocking.'])
|
|
135
|
+
];
|
|
136
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type AutoCompactMode } from '../../services/code/auto-compact-modes.js';
|
|
2
|
+
/**
|
|
3
|
+
* Slice H4 (rid=h4-context-now-mode-blind) — the ONE mapping from the shared
|
|
4
|
+
* `CompactTrigger` to this command's `action` vocabulary, so the two cannot
|
|
5
|
+
* drift: the trigger is `evaluateCompactTrigger`, the same function `peaks
|
|
6
|
+
* code auto-compact` decides with.
|
|
7
|
+
*
|
|
8
|
+
* `auto-fire` maps to `soft-warn` in BOTH modes: that tier is `peaks skill
|
|
9
|
+
* presence`'s — the every-turn probe, which reads this same table and mode
|
|
10
|
+
* resolver — so `context-now` has no auto-fire tier of its own (SKILL.md
|
|
11
|
+
* "two probes, two thresholds"). Reporting it as `auto-compact-now` would
|
|
12
|
+
* change every non-24h session's output, which slice H4 forbids.
|
|
13
|
+
*/
|
|
14
|
+
export declare function contextNowActionFor(ratio: number, mode: AutoCompactMode): {
|
|
15
|
+
action: 'ok' | 'soft-warn' | 'auto-compact-now' | 'red-line';
|
|
16
|
+
next: string | null;
|
|
17
|
+
};
|
|
18
|
+
/** Slice H4: the labels `context-now` prints, read out of the table for the mode
|
|
19
|
+
* in force — the old hard-coded "≥0.85 / ≥0.95 / 50–85%" told a 24h operator
|
|
20
|
+
* the wrong lines. `*Ratio` is the `0.85` form `gateModeNotice` uses. */
|
|
21
|
+
export declare function contextNowBandLabels(mode: AutoCompactMode): {
|
|
22
|
+
softWarn: string;
|
|
23
|
+
preCompact: string;
|
|
24
|
+
redLine: string;
|
|
25
|
+
preCompactRatio: string;
|
|
26
|
+
redLineRatio: string;
|
|
27
|
+
};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// The one table-to-vocabulary mapping `peaks code context-now` decides with: the
|
|
2
|
+
// shared `CompactTrigger` kind translated to this command's `action`, and the labels
|
|
3
|
+
// it prints, both read out of the mode in force.
|
|
4
|
+
import { thresholdFor } from '../../services/code/auto-compact-modes.js';
|
|
5
|
+
import { AUTO_COMPACT_SOFT_WARN_RATIO } from '../../services/context/auto-compact-types.js';
|
|
6
|
+
import { evaluateCompactTrigger } from '../../services/code/auto-compact-orchestrator.js';
|
|
7
|
+
/** The one dispatch verb the action and red-line tiers name. */
|
|
8
|
+
const COMPACT_CMD = 'peaks code auto-compact';
|
|
9
|
+
/**
|
|
10
|
+
* Slice H4 (rid=h4-context-now-mode-blind) — the ONE mapping from the shared
|
|
11
|
+
* `CompactTrigger` to this command's `action` vocabulary, so the two cannot
|
|
12
|
+
* drift: the trigger is `evaluateCompactTrigger`, the same function `peaks
|
|
13
|
+
* code auto-compact` decides with.
|
|
14
|
+
*
|
|
15
|
+
* `auto-fire` maps to `soft-warn` in BOTH modes: that tier is `peaks skill
|
|
16
|
+
* presence`'s — the every-turn probe, which reads this same table and mode
|
|
17
|
+
* resolver — so `context-now` has no auto-fire tier of its own (SKILL.md
|
|
18
|
+
* "two probes, two thresholds"). Reporting it as `auto-compact-now` would
|
|
19
|
+
* change every non-24h session's output, which slice H4 forbids.
|
|
20
|
+
*/
|
|
21
|
+
export function contextNowActionFor(ratio, mode) {
|
|
22
|
+
const kind = evaluateCompactTrigger(ratio, mode).kind;
|
|
23
|
+
if (kind === 'red-line')
|
|
24
|
+
return { action: 'red-line', next: COMPACT_CMD };
|
|
25
|
+
if (kind === 'pre-compact')
|
|
26
|
+
return { action: 'auto-compact-now', next: COMPACT_CMD };
|
|
27
|
+
return { action: kind === 'none' ? 'ok' : 'soft-warn', next: null };
|
|
28
|
+
}
|
|
29
|
+
/** Slice H4: the labels `context-now` prints, read out of the table for the mode
|
|
30
|
+
* in force — the old hard-coded "≥0.85 / ≥0.95 / 50–85%" told a 24h operator
|
|
31
|
+
* the wrong lines. `*Ratio` is the `0.85` form `gateModeNotice` uses. */
|
|
32
|
+
export function contextNowBandLabels(mode) {
|
|
33
|
+
const pct = (r) => `${(r * 100).toFixed(0)}`;
|
|
34
|
+
const pre = thresholdFor(mode, 'preCompact');
|
|
35
|
+
const red = thresholdFor(mode, 'redLine');
|
|
36
|
+
return {
|
|
37
|
+
softWarn: pct(AUTO_COMPACT_SOFT_WARN_RATIO),
|
|
38
|
+
preCompact: pct(pre),
|
|
39
|
+
redLine: pct(red),
|
|
40
|
+
preCompactRatio: pre.toFixed(2),
|
|
41
|
+
redLineRatio: red.toFixed(2)
|
|
42
|
+
};
|
|
43
|
+
}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { addJsonOption, getErrorMessage, printResult } from '../cli-helpers.js';
|
|
2
|
+
import { fail, ok } from 'peaks-loop-shared/result';
|
|
3
|
+
import { evaluateEmitHandoff, JOB_COMPLETED_NO_SEDIMENT, JOB_NOT_INITIALIZED, JOB_REMAINING_BLOCKED } from '../../services/code/emit-handoff.js';
|
|
4
|
+
import { readActiveSid } from './code-runtime-session.js';
|
|
5
|
+
export function registerCodeEmitHandoffCommand(code, io) {
|
|
6
|
+
// v3.1.2 Step 11 / final handoff — Size-fear ban.
|
|
7
|
+
// Refuses to emit a final handoff while a Job has remaining slices.
|
|
8
|
+
addJsonOption(code
|
|
9
|
+
.command('emit-handoff')
|
|
10
|
+
.description('v3.1.2 Step 11 size-fear ban: under Job mode, refuse to emit a final ' +
|
|
11
|
+
'handoff while remaining > 0. Exit 0 = allow, exit 1 = block. Pass ' +
|
|
12
|
+
'--force-under-job to override (requires explicit user approval).')
|
|
13
|
+
.requiredOption('--project <path>', 'target project root')
|
|
14
|
+
.option('--session-id <sid>', 'override session id (default: read from active presence)')
|
|
15
|
+
.option('--job-id <jid>', 'override job id (default: read from job-shape.json decision.suggestedJobId)')
|
|
16
|
+
.option('--force-under-job', 'override the remaining>0 block (explicit user approval required)')
|
|
17
|
+
.option('--force-no-sediment <reason>', 'override the no-sediment block on a COMPLETED Job: supply the reason the ' +
|
|
18
|
+
'user approved a no-sediment outcome. A blank reason does not override.')).action((opts) => runEmitHandoff(opts, io));
|
|
19
|
+
}
|
|
20
|
+
function runEmitHandoff(opts, io) {
|
|
21
|
+
try {
|
|
22
|
+
const sessionId = opts.sessionId ?? readActiveSid(opts.project);
|
|
23
|
+
if (sessionId === null) {
|
|
24
|
+
printEmitHandoffNoSession(io, opts.json);
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
const evalInput = {
|
|
28
|
+
projectRoot: opts.project,
|
|
29
|
+
sessionId
|
|
30
|
+
};
|
|
31
|
+
if (opts.jobId !== undefined)
|
|
32
|
+
evalInput.jobId = opts.jobId;
|
|
33
|
+
if (opts.forceUnderJob === true)
|
|
34
|
+
evalInput.forceUnderJob = true;
|
|
35
|
+
if (opts.forceNoSediment !== undefined)
|
|
36
|
+
evalInput.forceNoSedimentReason = opts.forceNoSediment;
|
|
37
|
+
const verdict = evaluateEmitHandoff(evalInput);
|
|
38
|
+
reportEmitHandoffVerdict(verdict, io, opts.json);
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
reportEmitHandoffFailure(io, err, opts.json);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function reportEmitHandoffVerdict(verdict, io, json) {
|
|
45
|
+
if (verdict.kind === 'allow-not-job') {
|
|
46
|
+
printEmitHandoffAllowNotJob(io, json);
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
if (verdict.kind === 'allow-done') {
|
|
50
|
+
printEmitHandoffAllowDone(verdict, io, json);
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
if (verdict.kind === 'allow-force-override') {
|
|
54
|
+
printEmitHandoffAllowForceOverride(verdict, io, json);
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
if (verdict.kind === 'block-not-initialized') {
|
|
58
|
+
printEmitHandoffBlockNotInitialized(verdict, io, json);
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
if (verdict.kind === 'block-remaining') {
|
|
62
|
+
printEmitHandoffBlockRemaining(verdict, io, json);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
if (verdict.kind === 'allow-forced-no-sediment') {
|
|
66
|
+
printEmitHandoffAllowForcedNoSediment(verdict, io, json);
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
printEmitHandoffBlockNoSediment(verdict, io, json);
|
|
70
|
+
}
|
|
71
|
+
function printEmitHandoffNoSession(io, json) {
|
|
72
|
+
const envelope = ok('code.emit-handoff', { allow: true, mode: 'no-session' }, [], ['No active session id; gate passes through (single-rid mode).']);
|
|
73
|
+
printResult(io, envelope, json);
|
|
74
|
+
}
|
|
75
|
+
function printEmitHandoffAllowNotJob(io, json) {
|
|
76
|
+
const envelope = ok('code.emit-handoff', { allow: true, mode: 'single' }, [], ['job-shape.json says isJob=false (or absent); normal handoff allowed.']);
|
|
77
|
+
printResult(io, envelope, json);
|
|
78
|
+
}
|
|
79
|
+
function printEmitHandoffAllowDone(verdict, io, json) {
|
|
80
|
+
const envelope = ok('code.emit-handoff', { allow: true, mode: 'job-done', remaining: verdict.remaining }, [], [`Job is complete (remaining=0); handoff allowed.`]);
|
|
81
|
+
printResult(io, envelope, json);
|
|
82
|
+
}
|
|
83
|
+
function printEmitHandoffAllowForceOverride(verdict, io, json) {
|
|
84
|
+
const envelope = ok('code.emit-handoff', { allow: true, mode: 'job-force-override', remaining: verdict.remaining }, [], [
|
|
85
|
+
`Job has ${verdict.remaining} remaining slices; --force-under-job override applied. Handoff allowed (explicit user approval).`
|
|
86
|
+
]);
|
|
87
|
+
printResult(io, envelope, json);
|
|
88
|
+
}
|
|
89
|
+
function printEmitHandoffBlockNotInitialized(verdict, io, json) {
|
|
90
|
+
const envelope = fail('code.emit-handoff', JOB_NOT_INITIALIZED, `Job ${verdict.jobId} has no state.json; peaks job init was skipped.`, { jobId: verdict.jobId }, [`Run \`peaks job init --job-id ${verdict.jobId} --slice-list <...>\` before emitting handoff.`]);
|
|
91
|
+
printResult(io, envelope, json);
|
|
92
|
+
process.exitCode = 1;
|
|
93
|
+
}
|
|
94
|
+
function printEmitHandoffBlockRemaining(verdict, io, json) {
|
|
95
|
+
// block-remaining
|
|
96
|
+
const blockMessage = `BLOCKED: Job ${verdict.jobId} has ${verdict.remaining} remaining slices. Run \`peaks job status\`. Use --force-under-job only with explicit user approval.`;
|
|
97
|
+
const envelope = fail('code.emit-handoff', JOB_REMAINING_BLOCKED, blockMessage, { jobId: verdict.jobId, remaining: verdict.remaining }, [
|
|
98
|
+
`Run \`peaks job status --job-id ${verdict.jobId}\` to see remaining slices.`,
|
|
99
|
+
'Resume Step 0.81 (per-slice checkpoint loop) and continue until remaining === 0.',
|
|
100
|
+
'Use --force-under-job only with explicit user approval (size-fear ban override).'
|
|
101
|
+
]);
|
|
102
|
+
io.stderr(`${blockMessage}\n`);
|
|
103
|
+
printResult(io, envelope, json);
|
|
104
|
+
process.exitCode = 1;
|
|
105
|
+
}
|
|
106
|
+
function printEmitHandoffAllowForcedNoSediment(verdict, io, json) {
|
|
107
|
+
const envelope = ok('code.emit-handoff', {
|
|
108
|
+
allow: true,
|
|
109
|
+
mode: 'job-forced-no-sediment',
|
|
110
|
+
remaining: verdict.remaining,
|
|
111
|
+
sedimentState: verdict.sedimentState,
|
|
112
|
+
approvedNoSedimentReason: verdict.reason
|
|
113
|
+
}, [], [
|
|
114
|
+
`Job is complete (remaining=0) and the session sedimented no memory (${verdict.sedimentState}); the user explicitly approved a no-sediment outcome — "${verdict.reason}". Handoff allowed.`
|
|
115
|
+
]);
|
|
116
|
+
printResult(io, envelope, json);
|
|
117
|
+
}
|
|
118
|
+
function printEmitHandoffBlockNoSediment(verdict, io, json) {
|
|
119
|
+
const why = verdict.sedimentState === 'none'
|
|
120
|
+
? 'the session sedimented no memory'
|
|
121
|
+
: 'the memory index could not be read, so it cannot be shown that the session sedimented any memory';
|
|
122
|
+
const blockMessage = `BLOCKED: Job ${verdict.jobId} is complete (remaining=0) but ${why}. Step 11 requires at least one memory in the project memory store, or an explicit user-approved no-sediment outcome. Run \`peaks memory extract --apply\` (or record a non-handoff memory with the user's help), then re-run.`;
|
|
123
|
+
const envelope = fail('code.emit-handoff', JOB_COMPLETED_NO_SEDIMENT, blockMessage, { jobId: verdict.jobId, sedimentState: verdict.sedimentState }, [
|
|
124
|
+
'Sediment the session: run `peaks memory extract --project <root> --artifact .peaks/_runtime/<sessionId>/txt/handoff.md --apply --json`, then `peaks memory reindex --project <root> --apply --json`.',
|
|
125
|
+
'Ask the user whether a no-sediment outcome is acceptable; only then re-run with `--force-no-sediment "<the reason the user gave>"`.'
|
|
126
|
+
]);
|
|
127
|
+
io.stderr(`${blockMessage}\n`);
|
|
128
|
+
printResult(io, envelope, json);
|
|
129
|
+
process.exitCode = 1;
|
|
130
|
+
}
|
|
131
|
+
function reportEmitHandoffFailure(io, err, json) {
|
|
132
|
+
printResult(io, fail('code.emit-handoff', 'EMIT_HANDOFF_FAILED', getErrorMessage(err), null, [
|
|
133
|
+
'Verify the project path and try again'
|
|
134
|
+
]), json);
|
|
135
|
+
process.exitCode = 1;
|
|
136
|
+
}
|