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,185 @@
|
|
|
1
|
+
// src/cli/commands/sediment-pool-commands.ts
|
|
2
|
+
//
|
|
3
|
+
// The `peaks skill sediment` verbs that read or write the bee pool itself:
|
|
4
|
+
// `add-segment`, `add-bee`, `list`, `rebuild-index`, `refine-bee`,
|
|
5
|
+
// `clone-bee`, `promote`, `retire`. Split out of `sediment-commands.ts`;
|
|
6
|
+
// every verb's args, envelope and error strings are unchanged.
|
|
7
|
+
import { writeFileSync, mkdirSync, readFileSync, existsSync } from 'node:fs';
|
|
8
|
+
import { join } from 'node:path';
|
|
9
|
+
import { assertNotSystemPath, resolveSegmentsDir, resolveUserBeesDir } from '../../services/sediment/pool-paths.js';
|
|
10
|
+
import { writeBeeManifest } from '../../services/sediment/pool-write.js';
|
|
11
|
+
import { readPool } from '../../services/sediment/pool-read.js';
|
|
12
|
+
import { rebuildIndexFromFs } from '../../services/sediment/pool-rebuild-index.js';
|
|
13
|
+
import { evaluateGate } from '../../services/sediment/promotion-gate.js';
|
|
14
|
+
/** Longest `description` the pool will store; a patch appends under this cap. */
|
|
15
|
+
const DESCRIPTION_MAX_CHARS = 1000;
|
|
16
|
+
export function addSegment(ctx) {
|
|
17
|
+
const { home, positional, flags } = ctx;
|
|
18
|
+
const name = positional[1];
|
|
19
|
+
if (!name)
|
|
20
|
+
return { ok: false, error: 'MISSING_ARG: name' };
|
|
21
|
+
const description = flags.maybeString('describe') ?? '';
|
|
22
|
+
const segDir = join(resolveSegmentsDir({ home }), name);
|
|
23
|
+
// Soft-protection guard: refuse to write under any `.system` path
|
|
24
|
+
// segment. Mirrors the same guard in writeBeeManifest.
|
|
25
|
+
assertNotSystemPath(segDir);
|
|
26
|
+
mkdirSync(segDir, { recursive: true });
|
|
27
|
+
writeFileSync(join(segDir, 'SKILL.md'), `---\nname: ${name}\ndescription: ${description}\n---\n`);
|
|
28
|
+
rebuildIndexFromFs({ home });
|
|
29
|
+
return { ok: true };
|
|
30
|
+
}
|
|
31
|
+
export function addBee(ctx) {
|
|
32
|
+
const { home, positional, flags } = ctx;
|
|
33
|
+
const name = positional[1];
|
|
34
|
+
if (!name)
|
|
35
|
+
return { ok: false, error: 'MISSING_ARG: name' };
|
|
36
|
+
// Collect --segment values; the brief uses repeatable --segment
|
|
37
|
+
// flags (one token per segment). parseFlags now returns a
|
|
38
|
+
// 1-element array for a single occurrence and a longer array
|
|
39
|
+
// for repeated keys, so .list() returns a uniform string[].
|
|
40
|
+
const segList = flags.list('segment');
|
|
41
|
+
const description = flags.maybeString('description') ?? '';
|
|
42
|
+
const m = {
|
|
43
|
+
schemaVersion: 'peaks.bee/1',
|
|
44
|
+
name,
|
|
45
|
+
source: 'user',
|
|
46
|
+
promotion_status: 'candidate',
|
|
47
|
+
description,
|
|
48
|
+
segments: segList.map((s) => ({
|
|
49
|
+
name: s,
|
|
50
|
+
inputs: [],
|
|
51
|
+
outputs: [],
|
|
52
|
+
sideEffects: []
|
|
53
|
+
})),
|
|
54
|
+
entrypoint: { preamble: `## ${name}`, refs: [] },
|
|
55
|
+
promotion: {
|
|
56
|
+
minCycles: 1,
|
|
57
|
+
requiresHumanApproval: true,
|
|
58
|
+
requiresSmokeTest: true
|
|
59
|
+
},
|
|
60
|
+
createdBy: 'llm',
|
|
61
|
+
lastTouchedAt: new Date().toISOString()
|
|
62
|
+
};
|
|
63
|
+
// writeBeeManifest runs zod validation + SYSTEM_PATH_FORBIDDEN
|
|
64
|
+
// guard internally.
|
|
65
|
+
writeBeeManifest({ home }, m);
|
|
66
|
+
rebuildIndexFromFs({ home });
|
|
67
|
+
return { ok: true };
|
|
68
|
+
}
|
|
69
|
+
export function listPool(ctx) {
|
|
70
|
+
const idx = readPool({ home: ctx.home });
|
|
71
|
+
return { ok: true, data: idx.entries };
|
|
72
|
+
}
|
|
73
|
+
export function rebuildIndex(ctx) {
|
|
74
|
+
const idx = rebuildIndexFromFs({ home: ctx.home });
|
|
75
|
+
return { ok: true, data: idx };
|
|
76
|
+
}
|
|
77
|
+
/** Read a bee's manifest, or null when it is absent. */
|
|
78
|
+
function readManifest(manifestPath) {
|
|
79
|
+
if (!existsSync(manifestPath))
|
|
80
|
+
return null;
|
|
81
|
+
return JSON.parse(readFileSync(manifestPath, 'utf-8'));
|
|
82
|
+
}
|
|
83
|
+
function beeManifestPath(home, name) {
|
|
84
|
+
return join(resolveUserBeesDir({ home }), name, 'manifest.json');
|
|
85
|
+
}
|
|
86
|
+
/** Append a `[tag timestamp] text` note to a description under the length cap. */
|
|
87
|
+
function appendNote(description, tag, text, ts) {
|
|
88
|
+
const note = `[${tag} ${ts}] ${text}`;
|
|
89
|
+
return (description + (description ? '\n' : '') + note).slice(0, DESCRIPTION_MAX_CHARS);
|
|
90
|
+
}
|
|
91
|
+
export function refineBee(ctx) {
|
|
92
|
+
const { home, positional, flags } = ctx;
|
|
93
|
+
const name = positional[1];
|
|
94
|
+
if (!name)
|
|
95
|
+
return { ok: false, error: 'MISSING_ARG: refine-bee requires <name>' };
|
|
96
|
+
const patch = flags.maybeString('patch') ?? '';
|
|
97
|
+
if (!patch)
|
|
98
|
+
return { ok: false, error: 'MISSING_ARG: refine-bee requires --patch' };
|
|
99
|
+
const m = readManifest(beeManifestPath(home, name));
|
|
100
|
+
if (m === null)
|
|
101
|
+
return { ok: false, error: 'BEE_NOT_FOUND' };
|
|
102
|
+
// Append patch note to description, preserving prior content. Cap at
|
|
103
|
+
// 1000 chars to avoid unbounded growth.
|
|
104
|
+
const ts = new Date().toISOString();
|
|
105
|
+
m.description = appendNote(m.description, 'refine', patch, ts);
|
|
106
|
+
m.lastTouchedAt = ts;
|
|
107
|
+
// promotion_status is preserved (do not touch it here).
|
|
108
|
+
writeBeeManifest({ home }, m);
|
|
109
|
+
rebuildIndexFromFs({ home });
|
|
110
|
+
return { ok: true };
|
|
111
|
+
}
|
|
112
|
+
export function cloneBee(ctx) {
|
|
113
|
+
const { home, positional, flags } = ctx;
|
|
114
|
+
const name = positional[1];
|
|
115
|
+
if (!name)
|
|
116
|
+
return { ok: false, error: 'MISSING_ARG: clone-bee requires <name>' };
|
|
117
|
+
const asName = flags.maybeString('as') ?? '';
|
|
118
|
+
if (!asName)
|
|
119
|
+
return { ok: false, error: 'MISSING_ARG: clone-bee requires --as <new-name>' };
|
|
120
|
+
const src = readManifest(beeManifestPath(home, name));
|
|
121
|
+
if (src === null)
|
|
122
|
+
return { ok: false, error: 'BEE_NOT_FOUND' };
|
|
123
|
+
// Fresh id, reset promotion_status to candidate, rename. The source
|
|
124
|
+
// manifest is unchanged on disk.
|
|
125
|
+
const clone = {
|
|
126
|
+
...src,
|
|
127
|
+
name: asName,
|
|
128
|
+
promotion_status: 'candidate',
|
|
129
|
+
lastTouchedAt: new Date().toISOString()
|
|
130
|
+
};
|
|
131
|
+
writeBeeManifest({ home }, clone);
|
|
132
|
+
rebuildIndexFromFs({ home });
|
|
133
|
+
return { ok: true };
|
|
134
|
+
}
|
|
135
|
+
export function promote(ctx) {
|
|
136
|
+
const { home, positional } = ctx;
|
|
137
|
+
const name = positional[1];
|
|
138
|
+
if (!name)
|
|
139
|
+
return { ok: false, error: 'MISSING_ARG: promote requires <name>' };
|
|
140
|
+
const m = readManifest(beeManifestPath(home, name));
|
|
141
|
+
if (m === null)
|
|
142
|
+
return { ok: false, error: 'BEE_NOT_FOUND' };
|
|
143
|
+
if (m.source === 'system')
|
|
144
|
+
return { ok: false, error: 'PROMOTION_SYSTEM_REFUSED' };
|
|
145
|
+
// Evaluate the PromotionGate (Task 5). The CLI is a thin shim; the
|
|
146
|
+
// humanApproved / smokeTestPresent inputs default to "true" here
|
|
147
|
+
// because the LLM-driven peaks-maker workflow has already obtained
|
|
148
|
+
// those approvals before calling promote.
|
|
149
|
+
const gate = evaluateGate({ home }, m, {
|
|
150
|
+
humanApproved: true,
|
|
151
|
+
smokeTestPresent: m.promotion.requiresSmokeTest
|
|
152
|
+
});
|
|
153
|
+
if (!gate.ok) {
|
|
154
|
+
return {
|
|
155
|
+
ok: false,
|
|
156
|
+
error: `PROMOTION_GATE_FAILED: ${gate.failedSubconditions.join(',')}`
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
m.promotion_status = 'stable';
|
|
160
|
+
m.lastTouchedAt = new Date().toISOString();
|
|
161
|
+
writeBeeManifest({ home }, m);
|
|
162
|
+
rebuildIndexFromFs({ home });
|
|
163
|
+
return { ok: true };
|
|
164
|
+
}
|
|
165
|
+
export function retire(ctx) {
|
|
166
|
+
const { home, positional, flags } = ctx;
|
|
167
|
+
const name = positional[1];
|
|
168
|
+
if (!name)
|
|
169
|
+
return { ok: false, error: 'MISSING_ARG: retire requires <name>' };
|
|
170
|
+
const reason = flags.maybeString('reason') ?? '';
|
|
171
|
+
const m = readManifest(beeManifestPath(home, name));
|
|
172
|
+
if (m === null)
|
|
173
|
+
return { ok: false, error: 'BEE_NOT_FOUND' };
|
|
174
|
+
if (m.source === 'system')
|
|
175
|
+
return { ok: false, error: 'RETIRE_SYSTEM_REFUSED' };
|
|
176
|
+
m.promotion_status = 'retired';
|
|
177
|
+
if (reason) {
|
|
178
|
+
const ts = new Date().toISOString();
|
|
179
|
+
m.description = appendNote(m.description, 'retire', reason, ts);
|
|
180
|
+
}
|
|
181
|
+
m.lastTouchedAt = new Date().toISOString();
|
|
182
|
+
writeBeeManifest({ home }, m);
|
|
183
|
+
rebuildIndexFromFs({ home });
|
|
184
|
+
return { ok: true };
|
|
185
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { CliResult, SedimentContext } from './sediment-command-shared.js';
|
|
2
|
+
export declare function search(ctx: SedimentContext): CliResult;
|
|
3
|
+
export declare function recent(ctx: SedimentContext): CliResult;
|
|
4
|
+
export declare function show(ctx: SedimentContext): CliResult;
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
// src/cli/commands/sediment-query-commands.ts
|
|
2
|
+
//
|
|
3
|
+
// The read-only `peaks skill sediment` verbs: `search`, `recent`, `show`.
|
|
4
|
+
// Split out of `sediment-commands.ts`; every verb's args, envelope and error
|
|
5
|
+
// strings are unchanged.
|
|
6
|
+
import { readFileSync, existsSync, readdirSync } from 'node:fs';
|
|
7
|
+
import { join } from 'node:path';
|
|
8
|
+
import { resolveUserBeesDir } from '../../services/sediment/pool-paths.js';
|
|
9
|
+
/** Milliseconds in one day, for `recent --since <N>d`. */
|
|
10
|
+
const MILLISECONDS_PER_DAY = 86_400_000;
|
|
11
|
+
/** `e instanceof Error ? e.message : String(e)` — the pool's error text. */
|
|
12
|
+
function errorText(e) {
|
|
13
|
+
return e instanceof Error ? e.message : String(e);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Walk `beesDir` and hand every readable bee manifest to `visit`. A manifest
|
|
17
|
+
* that cannot be parsed is reported as a warning and skipped, exactly as the
|
|
18
|
+
* per-verb inline loops did.
|
|
19
|
+
*/
|
|
20
|
+
function eachManifest(beesDir, warnings, visit) {
|
|
21
|
+
if (!existsSync(beesDir))
|
|
22
|
+
return;
|
|
23
|
+
for (const name of readdirSync(beesDir)) {
|
|
24
|
+
const manifestPath = join(beesDir, name, 'manifest.json');
|
|
25
|
+
if (!existsSync(manifestPath))
|
|
26
|
+
continue;
|
|
27
|
+
let manifest;
|
|
28
|
+
try {
|
|
29
|
+
manifest = JSON.parse(readFileSync(manifestPath, 'utf-8'));
|
|
30
|
+
}
|
|
31
|
+
catch (e) {
|
|
32
|
+
warnings.push(`skipped ${name}: ${errorText(e)}`);
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
visit(name, manifest);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
export function search(ctx) {
|
|
39
|
+
const { home, positional, flags } = ctx;
|
|
40
|
+
const query = positional[1] ?? flags.maybeString('q') ?? '';
|
|
41
|
+
if (!query)
|
|
42
|
+
return { ok: false, error: 'MISSING_ARG: search requires <query>' };
|
|
43
|
+
const q = query.toLowerCase();
|
|
44
|
+
const matches = [];
|
|
45
|
+
const warnings = [];
|
|
46
|
+
eachManifest(resolveUserBeesDir({ home }), warnings, (_name, m) => {
|
|
47
|
+
const haystack = `${m.name ?? ''} ${m.description ?? ''}`.toLowerCase();
|
|
48
|
+
if (haystack.includes(q)) {
|
|
49
|
+
matches.push({
|
|
50
|
+
name: m.name,
|
|
51
|
+
description: m.description,
|
|
52
|
+
source: m.source,
|
|
53
|
+
promotion_status: m.promotion_status
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
return { ok: true, data: { matches, warnings } };
|
|
58
|
+
}
|
|
59
|
+
export function recent(ctx) {
|
|
60
|
+
const { home, flags } = ctx;
|
|
61
|
+
const sinceRaw = flags.maybeString('since') ?? '7d';
|
|
62
|
+
const m = sinceRaw.match(/^(\d+)d$/);
|
|
63
|
+
if (!m)
|
|
64
|
+
return { ok: false, error: 'MISSING_ARG: recent requires --since Nd (e.g. 7d)' };
|
|
65
|
+
const sinceDays = parseInt(m[1], 10);
|
|
66
|
+
const cutoff = new Date(Date.now() - sinceDays * MILLISECONDS_PER_DAY).toISOString();
|
|
67
|
+
const matches = [];
|
|
68
|
+
const warnings = [];
|
|
69
|
+
eachManifest(resolveUserBeesDir({ home }), warnings, (_name, b) => {
|
|
70
|
+
if (typeof b.lastTouchedAt === 'string' && b.lastTouchedAt >= cutoff) {
|
|
71
|
+
matches.push({
|
|
72
|
+
name: b.name,
|
|
73
|
+
lastTouchedAt: b.lastTouchedAt,
|
|
74
|
+
promotion_status: b.promotion_status
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
return { ok: true, data: { matches, warnings } };
|
|
79
|
+
}
|
|
80
|
+
export function show(ctx) {
|
|
81
|
+
const { home, positional } = ctx;
|
|
82
|
+
const name = positional[1];
|
|
83
|
+
if (!name)
|
|
84
|
+
return { ok: false, error: 'MISSING_ARG: show requires <name>' };
|
|
85
|
+
const manifestPath = join(resolveUserBeesDir({ home }), name, 'manifest.json');
|
|
86
|
+
if (!existsSync(manifestPath))
|
|
87
|
+
return { ok: false, error: 'BEE_NOT_FOUND' };
|
|
88
|
+
try {
|
|
89
|
+
return { ok: true, data: JSON.parse(readFileSync(manifestPath, 'utf-8')) };
|
|
90
|
+
}
|
|
91
|
+
catch (e) {
|
|
92
|
+
return { ok: false, error: `MANIFEST_CORRUPT: ${errorText(e)}` };
|
|
93
|
+
}
|
|
94
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { CliResult, SedimentContext } from './sediment-command-shared.js';
|
|
2
|
+
export declare function dispose(ctx: SedimentContext): CliResult;
|
|
3
|
+
export declare function releases(ctx: SedimentContext): CliResult;
|
|
4
|
+
export declare function releaseShow(ctx: SedimentContext): CliResult;
|
|
5
|
+
export declare function releaseDiffVerb(ctx: SedimentContext): CliResult;
|
|
6
|
+
export declare function exportVerb(ctx: SedimentContext): CliResult;
|
|
7
|
+
export declare function importVerb(ctx: SedimentContext): CliResult;
|
|
8
|
+
export declare function gcBlobsVerb(ctx: SedimentContext): CliResult;
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
// src/cli/commands/sediment-release-commands.ts
|
|
2
|
+
//
|
|
3
|
+
// The `peaks skill sediment` verbs that act on retained releases:
|
|
4
|
+
// `dispose`, `releases`, `release-show`, `release-diff`, `export`, `import`,
|
|
5
|
+
// `gc-blobs`. Split out of `sediment-commands.ts`; every verb's args,
|
|
6
|
+
// envelope, stderr warning and error strings are unchanged.
|
|
7
|
+
import { mkdirSync, existsSync, readFileSync, rmSync } from 'node:fs';
|
|
8
|
+
import { join, basename } from 'node:path';
|
|
9
|
+
import { resolveStateDbPath, resolveBlobsDir, resolveUserBeesDir, resolveUserBeeDir } from '../../services/sediment/pool-paths.js';
|
|
10
|
+
import { rebuildIndexFromFs } from '../../services/sediment/pool-rebuild-index.js';
|
|
11
|
+
import { openStateDb } from '../../services/skillhub/sqlite-store.js';
|
|
12
|
+
import { retainRelease } from '../../services/skillhub/release-retain.js';
|
|
13
|
+
import { releaseDiff } from '../../services/skillhub/release-diff.js';
|
|
14
|
+
import { exportRelease } from '../../services/skillhub/release-export.js';
|
|
15
|
+
import { importRelease } from '../../services/skillhub/release-import.js';
|
|
16
|
+
import { gcBlobs } from '../../services/skillhub/release-gc-blobs.js';
|
|
17
|
+
const DEFAULT_RELEASE_VERSION = '0.1.0';
|
|
18
|
+
function beeManifestPath(home, name) {
|
|
19
|
+
return join(resolveUserBeesDir({ home }), name, 'manifest.json');
|
|
20
|
+
}
|
|
21
|
+
function readManifest(manifestPath) {
|
|
22
|
+
if (!existsSync(manifestPath))
|
|
23
|
+
return null;
|
|
24
|
+
return JSON.parse(readFileSync(manifestPath, 'utf-8'));
|
|
25
|
+
}
|
|
26
|
+
/** `e instanceof Error ? e.message : String(e)` — the pool's error text. */
|
|
27
|
+
function errorText(e) {
|
|
28
|
+
return e instanceof Error ? e.message : String(e);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* User bee destroy: remove the manifest dir from the pool. The scratch
|
|
32
|
+
* materialization is cleaned up by the dispatch flow (its concern), but the
|
|
33
|
+
* pool's bees/<name>/manifest.json entry is removed here so the index reflects
|
|
34
|
+
* reality on next read.
|
|
35
|
+
*/
|
|
36
|
+
function destroyUserBee(home, name) {
|
|
37
|
+
const beeDir = resolveUserBeeDir({ home }, name);
|
|
38
|
+
rmSync(beeDir, { recursive: true, force: true });
|
|
39
|
+
rebuildIndexFromFs({ home });
|
|
40
|
+
return { ok: true, data: { userDestroyed: true, path: beeDir } };
|
|
41
|
+
}
|
|
42
|
+
/** User bee retain: open state.db, call retainRelease. */
|
|
43
|
+
function retainUserBee(home, manifest, flags) {
|
|
44
|
+
const version = flags.maybeString('version') ?? DEFAULT_RELEASE_VERSION;
|
|
45
|
+
const scratchDir = flags.maybeString('scratch') ?? join(home, 'scratch');
|
|
46
|
+
if (!existsSync(scratchDir))
|
|
47
|
+
return { ok: false, error: 'SCRATCH_NOT_FOUND' };
|
|
48
|
+
const stateDbPath = resolveStateDbPath({ home });
|
|
49
|
+
const blobsDir = resolveBlobsDir({ home });
|
|
50
|
+
mkdirSync(blobsDir, { recursive: true });
|
|
51
|
+
const db = openStateDb(stateDbPath);
|
|
52
|
+
try {
|
|
53
|
+
retainRelease({ db, blobsDir, scratchDir, manifest, version });
|
|
54
|
+
}
|
|
55
|
+
finally {
|
|
56
|
+
db.close();
|
|
57
|
+
}
|
|
58
|
+
return { ok: true, data: { retained: true, version } };
|
|
59
|
+
}
|
|
60
|
+
export function dispose(ctx) {
|
|
61
|
+
const { home, positional, flags } = ctx;
|
|
62
|
+
const name = positional[1];
|
|
63
|
+
if (!name)
|
|
64
|
+
return { ok: false, error: 'MISSING_ARG: dispose requires <name>' };
|
|
65
|
+
const decision = flags.maybeString('decision') ?? '';
|
|
66
|
+
if (decision !== 'destroy' && decision !== 'retain') {
|
|
67
|
+
return { ok: false, error: 'MISSING_ARG: dispose requires --decision destroy|retain' };
|
|
68
|
+
}
|
|
69
|
+
const m = readManifest(beeManifestPath(home, name));
|
|
70
|
+
if (m === null)
|
|
71
|
+
return { ok: false, error: 'BEE_NOT_FOUND' };
|
|
72
|
+
// System bees: silently destroy; refuse retain (Task 9 contract).
|
|
73
|
+
if (m.source === 'system') {
|
|
74
|
+
if (decision === 'retain')
|
|
75
|
+
return { ok: false, error: 'RETAIN_SYSTEM_REFUSED' };
|
|
76
|
+
return { ok: true, data: { systemDestroyed: true } };
|
|
77
|
+
}
|
|
78
|
+
return decision === 'destroy' ? destroyUserBee(home, name) : retainUserBee(home, m, flags);
|
|
79
|
+
}
|
|
80
|
+
const RELEASES_SQL = 'SELECT id, bee_name, version, source, archived_at, archived_by FROM bee_release WHERE bee_name = ? ORDER BY archived_at DESC';
|
|
81
|
+
export function releases(ctx) {
|
|
82
|
+
const { home, positional } = ctx;
|
|
83
|
+
const beeName = positional[1];
|
|
84
|
+
if (!beeName)
|
|
85
|
+
return { ok: false, error: 'MISSING_ARG: releases requires <bee-name>' };
|
|
86
|
+
const stateDbPath = resolveStateDbPath({ home });
|
|
87
|
+
const db = openStateDb(stateDbPath);
|
|
88
|
+
try {
|
|
89
|
+
const rows = db.prepare(RELEASES_SQL).all(beeName);
|
|
90
|
+
return { ok: true, data: rows };
|
|
91
|
+
}
|
|
92
|
+
finally {
|
|
93
|
+
db.close();
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
export function releaseShow(ctx) {
|
|
97
|
+
const { home, positional, flags } = ctx;
|
|
98
|
+
const beeName = positional[1];
|
|
99
|
+
const version = flags.maybeString('version') ?? '';
|
|
100
|
+
if (!beeName || !version) {
|
|
101
|
+
return {
|
|
102
|
+
ok: false,
|
|
103
|
+
error: 'MISSING_ARG: release-show requires <bee-name> and --version'
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
const stateDbPath = resolveStateDbPath({ home });
|
|
107
|
+
const db = openStateDb(stateDbPath);
|
|
108
|
+
try {
|
|
109
|
+
// Cast the row to the typed interface from skillhub/types.ts so
|
|
110
|
+
// downstream consumers (LLM agents in peaks-maker, CLI JSON
|
|
111
|
+
// renderers) get a structural shape rather than
|
|
112
|
+
// Record<string, unknown>. Minor #12 fix.
|
|
113
|
+
const row = db
|
|
114
|
+
.prepare('SELECT * FROM bee_release WHERE bee_name = ? AND version = ?')
|
|
115
|
+
.get(beeName, version);
|
|
116
|
+
if (!row)
|
|
117
|
+
return { ok: false, error: 'VERSION_NOT_FOUND' };
|
|
118
|
+
const id = row.id;
|
|
119
|
+
const manifest = db.prepare('SELECT * FROM bee_manifest WHERE release_id = ?').get(id);
|
|
120
|
+
const segments = db
|
|
121
|
+
.prepare('SELECT * FROM bee_segment_ref WHERE release_id = ?')
|
|
122
|
+
.all(id);
|
|
123
|
+
const files = db
|
|
124
|
+
.prepare('SELECT * FROM bee_file WHERE release_id = ?')
|
|
125
|
+
.all(id);
|
|
126
|
+
return { ok: true, data: { release: row, manifest, segments, files } };
|
|
127
|
+
}
|
|
128
|
+
finally {
|
|
129
|
+
db.close();
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
export function releaseDiffVerb(ctx) {
|
|
133
|
+
const { home, positional, flags } = ctx;
|
|
134
|
+
const beeName = positional[1];
|
|
135
|
+
const fromVersion = flags.maybeString('from') ?? '';
|
|
136
|
+
const toVersion = flags.maybeString('to') ?? '';
|
|
137
|
+
if (!beeName || !fromVersion || !toVersion) {
|
|
138
|
+
return {
|
|
139
|
+
ok: false,
|
|
140
|
+
error: 'MISSING_ARG: release-diff requires <bee-name> and --from and --to'
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
const stateDbPath = resolveStateDbPath({ home });
|
|
144
|
+
const db = openStateDb(stateDbPath);
|
|
145
|
+
try {
|
|
146
|
+
const diff = releaseDiff({ db, beeName, fromVersion, toVersion });
|
|
147
|
+
return { ok: true, data: diff };
|
|
148
|
+
}
|
|
149
|
+
catch (e) {
|
|
150
|
+
return { ok: false, error: errorText(e) };
|
|
151
|
+
}
|
|
152
|
+
finally {
|
|
153
|
+
db.close();
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
export function exportVerb(ctx) {
|
|
157
|
+
const { home, positional, flags } = ctx;
|
|
158
|
+
const beeName = positional[1];
|
|
159
|
+
const version = flags.maybeString('version') ?? '';
|
|
160
|
+
const outPath = flags.maybeString('out') ?? '';
|
|
161
|
+
if (!beeName || !version || !outPath) {
|
|
162
|
+
return { ok: false, error: 'MISSING_ARG: export requires <bee-name>, --version, --out' };
|
|
163
|
+
}
|
|
164
|
+
const stateDbPath = resolveStateDbPath({ home });
|
|
165
|
+
const blobsDir = resolveBlobsDir({ home });
|
|
166
|
+
const db = openStateDb(stateDbPath);
|
|
167
|
+
try {
|
|
168
|
+
exportRelease({ db, blobsDir, beeName, version, outPath });
|
|
169
|
+
}
|
|
170
|
+
catch (e) {
|
|
171
|
+
return { ok: false, error: errorText(e) };
|
|
172
|
+
}
|
|
173
|
+
finally {
|
|
174
|
+
db.close();
|
|
175
|
+
}
|
|
176
|
+
// M7 (spec §7A.2 / §10 RL-9): `peaks skill sediment export` is
|
|
177
|
+
// an ALIAS of `peaks loop export` for one release cycle. Emit
|
|
178
|
+
// the deprecation warning to stderr so downstream tooling can
|
|
179
|
+
// upgrade. Future slice removes the alias.
|
|
180
|
+
process.stderr.write("warning: 'peaks skill sediment export' is deprecated; use 'peaks loop export' or 'peaks bee export' (peaks.bundle/1, spec §7A.2)\n");
|
|
181
|
+
return { ok: true, data: { outPath } };
|
|
182
|
+
}
|
|
183
|
+
export function importVerb(ctx) {
|
|
184
|
+
const { home, positional, flags } = ctx;
|
|
185
|
+
const bundlePath = positional[1];
|
|
186
|
+
const asNameRaw = flags.maybeString('as');
|
|
187
|
+
const asName = asNameRaw && asNameRaw.length > 0 ? asNameRaw : undefined;
|
|
188
|
+
if (!bundlePath)
|
|
189
|
+
return { ok: false, error: 'MISSING_ARG: import requires <bundle-path>' };
|
|
190
|
+
if (!existsSync(bundlePath))
|
|
191
|
+
return { ok: false, error: 'BUNDLE_NOT_FOUND' };
|
|
192
|
+
const stateDbPath = resolveStateDbPath({ home });
|
|
193
|
+
const blobsDir = resolveBlobsDir({ home });
|
|
194
|
+
mkdirSync(blobsDir, { recursive: true });
|
|
195
|
+
const db = openStateDb(stateDbPath);
|
|
196
|
+
try {
|
|
197
|
+
if (asName !== undefined) {
|
|
198
|
+
importRelease({ db, blobsDir, inPath: bundlePath, asName });
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
importRelease({ db, blobsDir, inPath: bundlePath });
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
catch (e) {
|
|
205
|
+
return { ok: false, error: errorText(e) };
|
|
206
|
+
}
|
|
207
|
+
finally {
|
|
208
|
+
db.close();
|
|
209
|
+
}
|
|
210
|
+
// M7 (spec §7A.2): `peaks skill sediment import` is an ALIAS of
|
|
211
|
+
// `peaks loop import` for one release cycle. Emit the
|
|
212
|
+
// deprecation warning so downstream tooling can upgrade.
|
|
213
|
+
process.stderr.write("warning: 'peaks skill sediment import' is deprecated; use 'peaks loop import' or 'peaks bee import' (peaks.bundle/1, spec §7A.2)\n");
|
|
214
|
+
return { ok: true, data: { asName: asName ?? basename(bundlePath) } };
|
|
215
|
+
}
|
|
216
|
+
export function gcBlobsVerb(ctx) {
|
|
217
|
+
const { home, flags } = ctx;
|
|
218
|
+
const dryRun = flags.bool('dry-run');
|
|
219
|
+
const stateDbPath = resolveStateDbPath({ home });
|
|
220
|
+
const blobsDir = resolveBlobsDir({ home });
|
|
221
|
+
const db = openStateDb(stateDbPath);
|
|
222
|
+
try {
|
|
223
|
+
const removed = gcBlobs({ db, blobsDir, dryRun });
|
|
224
|
+
return { ok: true, data: { removed } };
|
|
225
|
+
}
|
|
226
|
+
catch (e) {
|
|
227
|
+
return { ok: false, error: errorText(e) };
|
|
228
|
+
}
|
|
229
|
+
finally {
|
|
230
|
+
db.close();
|
|
231
|
+
}
|
|
232
|
+
}
|
|
@@ -1,82 +1,26 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `peaks sub-agent share | shared-read | await` —
|
|
2
|
+
* `peaks sub-agent share | shared-read | await | finalize` — the registrar layer.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* These commands share the G8.4 dispatcher-mediated cross-sub-agent signal
|
|
5
|
+
* channel:
|
|
6
6
|
* - `share` writes a `<role>.<event>` entry (≤ 1KB soft warn, ≥ 64KB reject).
|
|
7
7
|
* - `shared-read` returns sibling entries (filtered by `--since` / `--key` glob).
|
|
8
8
|
* - `await` joins a batch barrier (slice 2.7.0 MVP, claude-code only).
|
|
9
|
+
* - `finalize` (D21) signals that a dispatched sub-agent has finished.
|
|
9
10
|
*
|
|
10
11
|
* Not peer-to-peer — pseudo-swarm property 3 preserved.
|
|
12
|
+
*
|
|
13
|
+
* The action bodies, error-code hints, record-path scans and the finalize
|
|
14
|
+
* selection contract live in the sibling `share-*.ts` / `finalize-*.ts` modules;
|
|
15
|
+
* this file keeps the command shape (names, descriptions, options) and the one
|
|
16
|
+
* lazily-resolved IDE registry consumer below.
|
|
11
17
|
*/
|
|
12
18
|
import type { Command } from 'commander';
|
|
13
19
|
import { type ProgramIO } from '../cli-helpers.js';
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
* The record's own `createdAt` is carried as the recency key — NOT the file's
|
|
17
|
-
* mtime, which any heartbeat or finalize rewrites, so a `done` record can look
|
|
18
|
-
* newer than the `queued` one that superseded it. Keeping the key on the
|
|
19
|
-
* candidate makes the selection rule a pure function of the records and
|
|
20
|
-
* testable without a filesystem.
|
|
21
|
-
*/
|
|
22
|
-
export interface FinalizeCandidate {
|
|
23
|
-
readonly recordPath: string;
|
|
24
|
-
readonly requestId: string;
|
|
25
|
-
readonly status: string;
|
|
26
|
-
readonly createdAt: string;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* What `--request-id` actually did, reported in the envelope. N3: the branch
|
|
30
|
-
* used to resolve silently and could not say WHY a record was or was not the
|
|
31
|
-
* one finalized.
|
|
32
|
-
*/
|
|
33
|
-
export interface FinalizeSelection {
|
|
34
|
-
readonly requestId: string;
|
|
35
|
-
readonly rule: string;
|
|
36
|
-
readonly matched: number;
|
|
37
|
-
readonly chosen: string | null;
|
|
38
|
-
readonly rejected: readonly {
|
|
39
|
-
readonly recordPath: string;
|
|
40
|
-
readonly status: string;
|
|
41
|
-
readonly reason: string;
|
|
42
|
-
}[];
|
|
43
|
-
}
|
|
44
|
-
/** The one selection rule `--request-id` and `--batch` now share. */
|
|
45
|
-
export declare const FINALIZE_SELECTION_RULE: string;
|
|
46
|
-
/**
|
|
47
|
-
* N3 — pick the record `finalize --request-id` should act on.
|
|
48
|
-
*
|
|
49
|
-
* The branch this replaces `break`ed on the FIRST file whose record carried
|
|
50
|
-
* the requestId and never looked at `status`. With a re-dispatched request
|
|
51
|
-
* always resolved to the OLDEST one — the already-`done` RD record — so
|
|
52
|
-
* finalizing reported success while the newer `queued` QA record stayed
|
|
53
|
-
* queued forever. `--batch` never had that bug: it filters on `queued`.
|
|
54
|
-
*
|
|
55
|
-
* Both branches are now the same rule. Return `null` when nothing is queued:
|
|
56
|
-
* a record that already left `queued` is precisely the one that must NOT be
|
|
57
|
-
* re-finalized, so the caller reports the survivors instead of touching one.
|
|
58
|
-
*/
|
|
59
|
-
export declare function selectFinalizeTarget(candidates: readonly FinalizeCandidate[]): FinalizeCandidate | null;
|
|
60
|
-
/** Why a candidate was not the chosen one — reported, never guessed at. */
|
|
61
|
-
export declare function describeFinalizeRejection(candidate: FinalizeCandidate, chosen: FinalizeCandidate | null): string;
|
|
20
|
+
export { FINALIZE_SELECTION_RULE, describeFinalizeRejection, selectFinalizeTarget, type FinalizeCandidate, type FinalizeSelection } from './finalize-selection.js';
|
|
21
|
+
export type { FinalizeOptions } from './finalize-selection.js';
|
|
62
22
|
export declare function registerShareCommand(parent: Command, io: ProgramIO): void;
|
|
63
23
|
export declare function registerSharedReadCommand(parent: Command, io: ProgramIO): void;
|
|
64
24
|
export declare function registerAwaitCommand(parent: Command, io: ProgramIO): void;
|
|
65
|
-
/**
|
|
66
|
-
* signal. Without this, dispatch records stay queued forever.
|
|
67
|
-
*
|
|
68
|
-
* Contract:
|
|
69
|
-
* - LLM MUST call once per dispatched Task, in post-completion branch.
|
|
70
|
-
* - --all-stale bulk-marks every queued record for this session (crash recovery).
|
|
71
|
-
*/
|
|
72
|
-
export interface FinalizeOptions {
|
|
73
|
-
batch?: string;
|
|
74
|
-
requestId?: string;
|
|
75
|
-
outcome?: string;
|
|
76
|
-
error?: string;
|
|
77
|
-
allStale?: boolean;
|
|
78
|
-
project?: string;
|
|
79
|
-
sessionId?: string;
|
|
80
|
-
json?: boolean;
|
|
81
|
-
}
|
|
25
|
+
/** Contract: LLM MUST call once per dispatched Task, in post-completion branch. */
|
|
82
26
|
export declare function registerFinalizeCommand(parent: Command, io: ProgramIO): void;
|