peaks-loop 4.0.0-beta.8 → 4.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +955 -141
- package/README-en.md +26 -7
- package/README.md +75 -6
- package/agents/karpathy-reviewer.md +33 -0
- package/bin/peaks.js +1 -1
- package/dist/cli/cli-helpers.d.ts +68 -0
- package/dist/cli/cli-helpers.js +109 -0
- package/dist/cli/commands/_cli-error-envelope.d.ts +19 -0
- package/dist/cli/commands/_cli-error-envelope.js +50 -0
- package/dist/cli/commands/_register.d.ts +3 -0
- package/dist/cli/commands/_register.js +139 -0
- package/dist/cli/commands/_super.d.ts +10 -0
- package/dist/cli/commands/_super.js +97 -0
- package/dist/cli/commands/adapter-commands-s2a.d.ts +34 -0
- package/dist/cli/commands/adapter-commands-s2a.js +92 -0
- package/dist/cli/commands/adapter-commands.d.ts +30 -0
- package/dist/cli/commands/adapter-commands.js +35 -0
- package/dist/cli/commands/asset-commands.d.ts +45 -0
- package/dist/cli/commands/asset-commands.js +421 -0
- package/dist/cli/commands/audit-commands.d.ts +28 -0
- package/dist/cli/commands/audit-commands.js +437 -0
- package/dist/cli/commands/autonomous-swarm-commands.d.ts +12 -0
- package/dist/cli/commands/autonomous-swarm-commands.js +120 -0
- package/dist/cli/commands/bee-commands.d.ts +26 -0
- package/dist/cli/commands/bee-commands.js +169 -0
- package/dist/cli/commands/capability-commands.d.ts +16 -0
- package/dist/cli/commands/capability-commands.js +45 -0
- package/dist/cli/commands/capability-worker-config-sc-commands.d.ts +3 -0
- package/dist/cli/commands/capability-worker-config-sc-commands.js +8 -0
- package/dist/cli/commands/changeset-commands.d.ts +13 -0
- package/dist/cli/commands/changeset-commands.js +46 -0
- package/dist/cli/commands/code-commands.d.ts +90 -0
- package/dist/cli/commands/code-commands.js +118 -0
- package/dist/cli/commands/code-job-shape-commands.d.ts +9 -0
- package/dist/cli/commands/code-job-shape-commands.js +164 -0
- package/dist/cli/commands/code-mode-gate-commands.d.ts +9 -0
- package/dist/cli/commands/code-mode-gate-commands.js +223 -0
- package/dist/cli/commands/code-review-commands.d.ts +34 -0
- package/dist/cli/commands/code-review-commands.js +83 -0
- package/dist/cli/commands/code-run-command.d.ts +12 -0
- package/dist/cli/commands/code-run-command.js +68 -0
- package/dist/cli/commands/code-runtime-commands.d.ts +11 -0
- package/dist/cli/commands/code-runtime-commands.js +391 -0
- package/dist/cli/commands/codegraph-commands.d.ts +3 -0
- package/dist/cli/commands/codegraph-commands.js +99 -0
- package/dist/cli/commands/compact-command.d.ts +21 -0
- package/dist/cli/commands/compact-command.js +304 -0
- package/dist/cli/commands/complexity-commands.d.ts +9 -0
- package/dist/cli/commands/complexity-commands.js +34 -0
- package/dist/cli/commands/config-commands.d.ts +3 -0
- package/dist/cli/commands/config-commands.js +149 -0
- package/dist/cli/commands/container-commands.d.ts +28 -0
- package/dist/cli/commands/container-commands.js +221 -0
- package/dist/cli/commands/context-builder-commands.d.ts +11 -0
- package/dist/cli/commands/context-builder-commands.js +85 -0
- package/dist/cli/commands/context-commands.d.ts +21 -0
- package/dist/cli/commands/context-commands.js +255 -0
- package/dist/cli/commands/core/artifacts-command.d.ts +3 -0
- package/dist/cli/commands/core/artifacts-command.js +62 -0
- package/dist/cli/commands/core/binding-commands.d.ts +3 -0
- package/dist/cli/commands/core/binding-commands.js +58 -0
- package/dist/cli/commands/core/doctor-command.d.ts +11 -0
- package/dist/cli/commands/core/doctor-command.js +264 -0
- package/dist/cli/commands/core/memory-command.d.ts +3 -0
- package/dist/cli/commands/core/memory-command.js +98 -0
- package/dist/cli/commands/core/profile-command.d.ts +3 -0
- package/dist/cli/commands/core/profile-command.js +9 -0
- package/dist/cli/commands/core/proxy-command.d.ts +3 -0
- package/dist/cli/commands/core/proxy-command.js +26 -0
- package/dist/cli/commands/core/session-command.d.ts +3 -0
- package/dist/cli/commands/core/session-command.js +243 -0
- package/dist/cli/commands/core/skill-command.d.ts +3 -0
- package/dist/cli/commands/core/skill-command.js +303 -0
- package/dist/cli/commands/core/standards-command.d.ts +3 -0
- package/dist/cli/commands/core/standards-command.js +95 -0
- package/dist/cli/commands/core-artifact-commands.d.ts +15 -0
- package/dist/cli/commands/core-artifact-commands.js +31 -0
- package/dist/cli/commands/cron-commands.d.ts +57 -0
- package/dist/cli/commands/cron-commands.js +257 -0
- package/dist/cli/commands/cron-scheduler-commands.d.ts +47 -0
- package/dist/cli/commands/cron-scheduler-commands.js +284 -0
- package/dist/cli/commands/dashboard-commands.d.ts +4 -0
- package/dist/cli/commands/dashboard-commands.js +10 -0
- package/dist/cli/commands/dashboard-long-run.d.ts +25 -0
- package/dist/cli/commands/dashboard-long-run.js +122 -0
- package/dist/cli/commands/dashboard-summary.d.ts +12 -0
- package/dist/cli/commands/dashboard-summary.js +58 -0
- package/dist/cli/commands/dispatch-commands.d.ts +3 -0
- package/dist/cli/commands/dispatch-commands.js +715 -0
- package/dist/cli/commands/dispatch-from-dag.d.ts +3 -0
- package/dist/cli/commands/dispatch-from-dag.js +254 -0
- package/dist/cli/commands/doc-commands.d.ts +11 -0
- package/dist/cli/commands/doc-commands.js +65 -0
- package/dist/cli/commands/ecc-commands.d.ts +30 -0
- package/dist/cli/commands/ecc-commands.js +119 -0
- package/dist/cli/commands/evolution-commands.d.ts +27 -0
- package/dist/cli/commands/evolution-commands.js +393 -0
- package/dist/cli/commands/feedback-commands.d.ts +18 -0
- package/dist/cli/commands/feedback-commands.js +145 -0
- package/dist/cli/commands/final-review-commands.d.ts +31 -0
- package/dist/cli/commands/final-review-commands.js +161 -0
- package/dist/cli/commands/fixture-commands.d.ts +32 -0
- package/dist/cli/commands/fixture-commands.js +91 -0
- package/dist/cli/commands/fork-commands.d.ts +16 -0
- package/dist/cli/commands/fork-commands.js +163 -0
- package/dist/cli/commands/gate-commands.d.ts +3 -0
- package/dist/cli/commands/gate-commands.js +239 -0
- package/dist/cli/commands/governance-classify-contract-commands.d.ts +21 -0
- package/dist/cli/commands/governance-classify-contract-commands.js +273 -0
- package/dist/cli/commands/heartbeat-commands.d.ts +3 -0
- package/dist/cli/commands/heartbeat-commands.js +206 -0
- package/dist/cli/commands/heartbeat-watch-command.d.ts +31 -0
- package/dist/cli/commands/heartbeat-watch-command.js +146 -0
- package/dist/cli/commands/hook-handle.d.ts +17 -0
- package/dist/cli/commands/hook-handle.js +157 -0
- package/dist/cli/commands/hooks-commands.d.ts +3 -0
- package/dist/cli/commands/hooks-commands.js +272 -0
- package/dist/cli/commands/ide-commands.d.ts +25 -0
- package/dist/cli/commands/ide-commands.js +42 -0
- package/dist/cli/commands/impact-commands.d.ts +15 -0
- package/dist/cli/commands/impact-commands.js +62 -0
- package/dist/cli/commands/job-commands.d.ts +3 -0
- package/dist/cli/commands/job-commands.js +322 -0
- package/dist/cli/commands/lease-metrics-commands.d.ts +67 -0
- package/dist/cli/commands/lease-metrics-commands.js +231 -0
- package/dist/cli/commands/lease-stats-commands.d.ts +65 -0
- package/dist/cli/commands/lease-stats-commands.js +107 -0
- package/dist/cli/commands/legacy-commands.d.ts +11 -0
- package/dist/cli/commands/legacy-commands.js +32 -0
- package/dist/cli/commands/log-commands.d.ts +17 -0
- package/dist/cli/commands/log-commands.js +64 -0
- package/dist/cli/commands/loop-commands.d.ts +27 -0
- package/dist/cli/commands/loop-commands.js +262 -0
- package/dist/cli/commands/loop-eval-commands.d.ts +20 -0
- package/dist/cli/commands/loop-eval-commands.js +526 -0
- package/dist/cli/commands/memory-commands.d.ts +23 -0
- package/dist/cli/commands/memory-commands.js +129 -0
- package/dist/cli/commands/migrate-1-4-1-command.d.ts +11 -0
- package/dist/cli/commands/migrate-1-4-1-command.js +34 -0
- package/dist/cli/commands/migrate-v2-10-to-v2-11-command.d.ts +20 -0
- package/dist/cli/commands/migrate-v2-10-to-v2-11-command.js +52 -0
- package/dist/cli/commands/mut-commands.d.ts +20 -0
- package/dist/cli/commands/mut-commands.js +235 -0
- package/dist/cli/commands/observability-commands.d.ts +22 -0
- package/dist/cli/commands/observability-commands.js +201 -0
- package/dist/cli/commands/openspec-commands.d.ts +3 -0
- package/dist/cli/commands/openspec-commands.js +298 -0
- package/dist/cli/commands/perf-audit-commands.d.ts +22 -0
- package/dist/cli/commands/perf-audit-commands.js +132 -0
- package/dist/cli/commands/perf-commands.d.ts +3 -0
- package/dist/cli/commands/perf-commands.js +41 -0
- package/dist/cli/commands/playwright-commands.d.ts +95 -0
- package/dist/cli/commands/playwright-commands.js +432 -0
- package/dist/cli/commands/polyrepo-commands.d.ts +37 -0
- package/dist/cli/commands/polyrepo-commands.js +155 -0
- package/dist/cli/commands/prd-blocks-commands.d.ts +18 -0
- package/dist/cli/commands/prd-blocks-commands.js +50 -0
- package/dist/cli/commands/prd-commands.d.ts +18 -0
- package/dist/cli/commands/prd-commands.js +143 -0
- package/dist/cli/commands/preferences-commands.d.ts +2 -0
- package/dist/cli/commands/preferences-commands.js +217 -0
- package/dist/cli/commands/project-commands.d.ts +3 -0
- package/dist/cli/commands/project-commands.js +253 -0
- package/dist/cli/commands/qa-business-review-commands.d.ts +17 -0
- package/dist/cli/commands/qa-business-review-commands.js +148 -0
- package/dist/cli/commands/qa-commands.d.ts +94 -0
- package/dist/cli/commands/qa-commands.js +307 -0
- package/dist/cli/commands/release-commands.d.ts +39 -0
- package/dist/cli/commands/release-commands.js +323 -0
- package/dist/cli/commands/request-commands.d.ts +3 -0
- package/dist/cli/commands/request-commands.js +548 -0
- package/dist/cli/commands/retrospective-commands.d.ts +12 -0
- package/dist/cli/commands/retrospective-commands.js +175 -0
- package/dist/cli/commands/reviewer-commands.d.ts +14 -0
- package/dist/cli/commands/reviewer-commands.js +64 -0
- package/dist/cli/commands/role-commands.d.ts +13 -0
- package/dist/cli/commands/role-commands.js +85 -0
- package/dist/cli/commands/runtime-commands-helpers.d.ts +7 -0
- package/dist/cli/commands/runtime-commands-helpers.js +24 -0
- package/dist/cli/commands/runtime-commands.d.ts +52 -0
- package/dist/cli/commands/runtime-commands.js +149 -0
- package/dist/cli/commands/sc-commands.d.ts +3 -0
- package/dist/cli/commands/sc-commands.js +47 -0
- package/dist/cli/commands/scan-commands.d.ts +3 -0
- package/dist/cli/commands/scan-commands.js +445 -0
- package/dist/cli/commands/security-audit-commands.d.ts +23 -0
- package/dist/cli/commands/security-audit-commands.js +132 -0
- package/dist/cli/commands/sediment-commands.d.ts +80 -0
- package/dist/cli/commands/sediment-commands.js +658 -0
- package/dist/cli/commands/session-24h-mode.d.ts +26 -0
- package/dist/cli/commands/session-24h-mode.js +196 -0
- package/dist/cli/commands/session-checkpoint-command.d.ts +10 -0
- package/dist/cli/commands/session-checkpoint-command.js +100 -0
- package/dist/cli/commands/session-migrate-skill-name.d.ts +17 -0
- package/dist/cli/commands/session-migrate-skill-name.js +41 -0
- package/dist/cli/commands/session-resume-command.d.ts +11 -0
- package/dist/cli/commands/session-resume-command.js +83 -0
- package/dist/cli/commands/share-commands.d.ts +36 -0
- package/dist/cli/commands/share-commands.js +415 -0
- package/dist/cli/commands/skill-conformance-commands.d.ts +9 -0
- package/dist/cli/commands/skill-conformance-commands.js +39 -0
- package/dist/cli/commands/skill-loop-engineering-readiness-commands.d.ts +67 -0
- package/dist/cli/commands/skill-loop-engineering-readiness-commands.js +173 -0
- package/dist/cli/commands/skill-search-commands.d.ts +25 -0
- package/dist/cli/commands/skill-search-commands.js +71 -0
- package/dist/cli/commands/skill-visibility.d.ts +8 -0
- package/dist/cli/commands/skill-visibility.js +63 -0
- package/dist/cli/commands/slice-commands.d.ts +24 -0
- package/dist/cli/commands/slice-commands.js +492 -0
- package/dist/cli/commands/slice-integrate-commands.d.ts +11 -0
- package/dist/cli/commands/slice-integrate-commands.js +74 -0
- package/dist/cli/commands/slice-review-commands.d.ts +23 -0
- package/dist/cli/commands/slice-review-commands.js +162 -0
- package/dist/cli/commands/smoke-commands.d.ts +21 -0
- package/dist/cli/commands/smoke-commands.js +203 -0
- package/dist/cli/commands/sop-commands.d.ts +3 -0
- package/dist/cli/commands/sop-commands.js +215 -0
- package/dist/cli/commands/spill-demo-command.d.ts +7 -0
- package/dist/cli/commands/spill-demo-command.js +29 -0
- package/dist/cli/commands/statusline-commands.d.ts +15 -0
- package/dist/cli/commands/statusline-commands.js +231 -0
- package/dist/cli/commands/sub-agent-commands.d.ts +22 -0
- package/dist/cli/commands/sub-agent-commands.js +20 -0
- package/dist/cli/commands/sub-agent-dispatch-guard.d.ts +55 -0
- package/dist/cli/commands/sub-agent-dispatch-guard.js +57 -0
- package/dist/cli/commands/sub-agent-shared.d.ts +109 -0
- package/dist/cli/commands/sub-agent-shared.js +90 -0
- package/dist/cli/commands/swarm-commands.d.ts +13 -0
- package/dist/cli/commands/swarm-commands.js +77 -0
- package/dist/cli/commands/tech-commands.d.ts +64 -0
- package/dist/cli/commands/tech-commands.js +195 -0
- package/dist/cli/commands/test-commands.d.ts +47 -0
- package/dist/cli/commands/test-commands.js +204 -0
- package/dist/cli/commands/understand-commands.d.ts +3 -0
- package/dist/cli/commands/understand-commands.js +148 -0
- package/dist/cli/commands/upgrade-commands.d.ts +25 -0
- package/dist/cli/commands/upgrade-commands.js +154 -0
- package/dist/cli/commands/user-touchpoint-commands.d.ts +18 -0
- package/dist/cli/commands/user-touchpoint-commands.js +78 -0
- package/dist/cli/commands/verdict-aggregate-command.d.ts +14 -0
- package/dist/cli/commands/verdict-aggregate-command.js +106 -0
- package/dist/cli/commands/vm-commands.d.ts +31 -0
- package/dist/cli/commands/vm-commands.js +274 -0
- package/dist/cli/commands/workflow-commands.d.ts +3 -0
- package/dist/cli/commands/workflow-commands.js +567 -0
- package/dist/cli/commands/workflow-plan-commands.d.ts +39 -0
- package/dist/cli/commands/workflow-plan-commands.js +163 -0
- package/dist/cli/commands/workspace/clean-command.d.ts +14 -0
- package/dist/cli/commands/workspace/clean-command.js +49 -0
- package/dist/cli/commands/workspace/helpers.d.ts +28 -0
- package/dist/cli/commands/workspace/helpers.js +87 -0
- package/dist/cli/commands/workspace/init-command.d.ts +139 -0
- package/dist/cli/commands/workspace/init-command.js +505 -0
- package/dist/cli/commands/workspace/migrate-command.d.ts +11 -0
- package/dist/cli/commands/workspace/migrate-command.js +91 -0
- package/dist/cli/commands/workspace/reconcile-command.d.ts +14 -0
- package/dist/cli/commands/workspace/reconcile-command.js +103 -0
- package/dist/cli/commands/workspace-commands.d.ts +18 -0
- package/dist/cli/commands/workspace-commands.js +50 -0
- package/dist/cli/commands/worktree-auth-commands.d.ts +29 -0
- package/dist/cli/commands/worktree-auth-commands.js +652 -0
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/index.js +75 -0
- package/dist/cli/program.d.ts +5 -0
- package/dist/cli/program.js +213 -0
- package/dist/hooks/pre-tool-use-sub-agent.d.ts +28 -0
- package/dist/hooks/pre-tool-use-sub-agent.js +105 -0
- package/dist/lib/render/message-renderer.d.ts +20 -0
- package/dist/lib/render/message-renderer.js +80 -0
- package/dist/services/24h-mode/decider.d.ts +103 -0
- package/dist/services/24h-mode/decider.js +144 -0
- package/dist/services/24h-mode/index.d.ts +12 -0
- package/dist/services/24h-mode/index.js +12 -0
- package/dist/services/24h-mode/state.d.ts +48 -0
- package/dist/services/24h-mode/state.js +51 -0
- package/dist/services/24h-mode/store.d.ts +27 -0
- package/dist/services/24h-mode/store.js +119 -0
- package/dist/services/adapter/adapter-registry.d.ts +48 -0
- package/dist/services/adapter/adapter-registry.js +186 -0
- package/dist/services/adapter/adapter.d.ts +27 -0
- package/dist/services/adapter/adapter.js +5 -0
- package/dist/services/adapter/auto-adapter.d.ts +11 -0
- package/dist/services/adapter/auto-adapter.js +15 -0
- package/dist/services/adapter/claude-adapter.d.ts +14 -0
- package/dist/services/adapter/claude-adapter.js +40 -0
- package/dist/services/adapter/codex-adapter.d.ts +14 -0
- package/dist/services/adapter/codex-adapter.js +14 -0
- package/dist/services/adapter/copilot-adapter.d.ts +14 -0
- package/dist/services/adapter/copilot-adapter.js +14 -0
- package/dist/services/artifacts/artifact-lint-service.d.ts +23 -0
- package/dist/services/artifacts/artifact-lint-service.js +99 -0
- package/dist/services/artifacts/artifact-prerequisites.d.ts +78 -0
- package/dist/services/artifacts/artifact-prerequisites.js +491 -0
- package/dist/services/artifacts/artifact-service.d.ts +43 -0
- package/dist/services/artifacts/artifact-service.js +98 -0
- package/dist/services/artifacts/artifact-templates.d.ts +30 -0
- package/dist/services/artifacts/artifact-templates.js +302 -0
- package/dist/services/artifacts/repair-cycle-service.d.ts +23 -0
- package/dist/services/artifacts/repair-cycle-service.js +52 -0
- package/dist/services/artifacts/request-artifact-service.d.ts +116 -0
- package/dist/services/artifacts/request-artifact-service.js +451 -0
- package/dist/services/artifacts/request-artifact-state-helpers.d.ts +51 -0
- package/dist/services/artifacts/request-artifact-state-helpers.js +114 -0
- package/dist/services/artifacts/workspace-service.d.ts +34 -0
- package/dist/services/artifacts/workspace-service.js +272 -0
- package/dist/services/audit/artifact-writer.d.ts +93 -0
- package/dist/services/audit/artifact-writer.js +303 -0
- package/dist/services/audit/audit-goal-service.d.ts +35 -0
- package/dist/services/audit/audit-goal-service.js +75 -0
- package/dist/services/audit/audit-goal-types.d.ts +40 -0
- package/dist/services/audit/audit-goal-types.js +15 -0
- package/dist/services/audit/backing-detector.d.ts +24 -0
- package/dist/services/audit/backing-detector.js +59 -0
- package/dist/services/audit/classifier.d.ts +38 -0
- package/dist/services/audit/classifier.js +134 -0
- package/dist/services/audit/decision-writer.d.ts +76 -0
- package/dist/services/audit/decision-writer.js +217 -0
- package/dist/services/audit/enforcers/active-skill-resolver.d.ts +29 -0
- package/dist/services/audit/enforcers/active-skill-resolver.js +71 -0
- package/dist/services/audit/enforcers/code-ban.d.ts +23 -0
- package/dist/services/audit/enforcers/code-ban.js +27 -0
- package/dist/services/audit/enforcers/design-draft-confirm.d.ts +24 -0
- package/dist/services/audit/enforcers/design-draft-confirm.js +58 -0
- package/dist/services/audit/enforcers/lint-audit-regression.d.ts +21 -0
- package/dist/services/audit/enforcers/lint-audit-regression.js +86 -0
- package/dist/services/audit/enforcers/lint-bee-runtime-contract.d.ts +25 -0
- package/dist/services/audit/enforcers/lint-bee-runtime-contract.js +91 -0
- package/dist/services/audit/enforcers/lint-catalog-governance.d.ts +32 -0
- package/dist/services/audit/enforcers/lint-catalog-governance.js +48 -0
- package/dist/services/audit/enforcers/lint-cli-back.d.ts +16 -0
- package/dist/services/audit/enforcers/lint-cli-back.js +35 -0
- package/dist/services/audit/enforcers/lint-output-style.d.ts +11 -0
- package/dist/services/audit/enforcers/lint-output-style.js +94 -0
- package/dist/services/audit/enforcers/lint-peaks-code-runtime.d.ts +16 -0
- package/dist/services/audit/enforcers/lint-peaks-code-runtime.js +31 -0
- package/dist/services/audit/enforcers/lint-peaks-skill-runtime.d.ts +23 -0
- package/dist/services/audit/enforcers/lint-peaks-skill-runtime.js +59 -0
- package/dist/services/audit/enforcers/lint-peaks-ui-sc-txt-runtime.d.ts +28 -0
- package/dist/services/audit/enforcers/lint-peaks-ui-sc-txt-runtime.js +86 -0
- package/dist/services/audit/enforcers/lint-prd-artifact-handoff.d.ts +16 -0
- package/dist/services/audit/enforcers/lint-prd-artifact-handoff.js +41 -0
- package/dist/services/audit/enforcers/lint-prd-source-snapshot.d.ts +27 -0
- package/dist/services/audit/enforcers/lint-prd-source-snapshot.js +47 -0
- package/dist/services/audit/enforcers/lint-qa-gateguard-and-runtime.d.ts +19 -0
- package/dist/services/audit/enforcers/lint-qa-gateguard-and-runtime.js +47 -0
- package/dist/services/audit/enforcers/lint-rd-handoff-coverage.d.ts +18 -0
- package/dist/services/audit/enforcers/lint-rd-handoff-coverage.js +70 -0
- package/dist/services/audit/enforcers/lint-reference-integrity.d.ts +6 -0
- package/dist/services/audit/enforcers/lint-reference-integrity.js +83 -0
- package/dist/services/audit/enforcers/lint-reference-shape.d.ts +30 -0
- package/dist/services/audit/enforcers/lint-reference-shape.js +272 -0
- package/dist/services/audit/enforcers/lint-skill-presence-mandatory.d.ts +25 -0
- package/dist/services/audit/enforcers/lint-skill-presence-mandatory.js +53 -0
- package/dist/services/audit/enforcers/lint-style.d.ts +49 -0
- package/dist/services/audit/enforcers/lint-style.js +173 -0
- package/dist/services/audit/enforcers/lint-workflow-shape.d.ts +4 -0
- package/dist/services/audit/enforcers/lint-workflow-shape.js +100 -0
- package/dist/services/audit/enforcers/login-gate.d.ts +23 -0
- package/dist/services/audit/enforcers/login-gate.js +40 -0
- package/dist/services/audit/enforcers/mock-placement.d.ts +25 -0
- package/dist/services/audit/enforcers/mock-placement.js +48 -0
- package/dist/services/audit/enforcers/no-root-pollution.d.ts +21 -0
- package/dist/services/audit/enforcers/no-root-pollution.js +56 -0
- package/dist/services/audit/enforcers/pre-rd-scan.d.ts +22 -0
- package/dist/services/audit/enforcers/pre-rd-scan.js +23 -0
- package/dist/services/audit/enforcers/prototype-fidelity.d.ts +25 -0
- package/dist/services/audit/enforcers/prototype-fidelity.js +75 -0
- package/dist/services/audit/enforcers/resume-detection.d.ts +21 -0
- package/dist/services/audit/enforcers/resume-detection.js +52 -0
- package/dist/services/audit/enforcers/sub-agent-sid.d.ts +25 -0
- package/dist/services/audit/enforcers/sub-agent-sid.js +63 -0
- package/dist/services/audit/prose-ratio-calculator.d.ts +45 -0
- package/dist/services/audit/prose-ratio-calculator.js +52 -0
- package/dist/services/audit/red-line-catalog-p2-a.d.ts +15 -0
- package/dist/services/audit/red-line-catalog-p2-a.js +458 -0
- package/dist/services/audit/red-line-catalog-p2-b.d.ts +19 -0
- package/dist/services/audit/red-line-catalog-p2-b.js +225 -0
- package/dist/services/audit/red-line-catalog.d.ts +51 -0
- package/dist/services/audit/red-line-catalog.js +195 -0
- package/dist/services/audit/red-lines-service.d.ts +23 -0
- package/dist/services/audit/red-lines-service.js +464 -0
- package/dist/services/audit/scanners/openspec-scanner.d.ts +15 -0
- package/dist/services/audit/scanners/openspec-scanner.js +55 -0
- package/dist/services/audit/scanners/rules-tree-scanner.d.ts +16 -0
- package/dist/services/audit/scanners/rules-tree-scanner.js +56 -0
- package/dist/services/audit/scanners/skills-tree-scanner.d.ts +17 -0
- package/dist/services/audit/scanners/skills-tree-scanner.js +68 -0
- package/dist/services/audit/static-service.d.ts +67 -0
- package/dist/services/audit/static-service.js +51 -0
- package/dist/services/audit/types.d.ts +86 -0
- package/dist/services/audit/types.js +13 -0
- package/dist/services/audit-independent/index.d.ts +2 -0
- package/dist/services/audit-independent/index.js +2 -0
- package/dist/services/audit-independent/perf-audit-service.d.ts +151 -0
- package/dist/services/audit-independent/perf-audit-service.js +316 -0
- package/dist/services/audit-independent/security-audit-service.d.ts +155 -0
- package/dist/services/audit-independent/security-audit-service.js +316 -0
- package/dist/services/autonomous-swarm/autonomous-swarm-service.d.ts +127 -0
- package/dist/services/autonomous-swarm/autonomous-swarm-service.js +446 -0
- package/dist/services/changeset/changeset-check-service.d.ts +22 -0
- package/dist/services/changeset/changeset-check-service.js +47 -0
- package/dist/services/classify/classify-service.d.ts +42 -0
- package/dist/services/classify/classify-service.js +122 -0
- package/dist/services/classify/classify-types.d.ts +79 -0
- package/dist/services/classify/classify-types.js +90 -0
- package/dist/services/code/auto-compact-modes.d.ts +30 -0
- package/dist/services/code/auto-compact-modes.js +38 -0
- package/dist/services/code/auto-compact-orchestrator.d.ts +136 -0
- package/dist/services/code/auto-compact-orchestrator.js +423 -0
- package/dist/services/code/batch-heartbeat-poller.d.ts +51 -0
- package/dist/services/code/batch-heartbeat-poller.js +88 -0
- package/dist/services/code/dag-orchestrator.d.ts +157 -0
- package/dist/services/code/dag-orchestrator.js +409 -0
- package/dist/services/code/emit-handoff.d.ts +49 -0
- package/dist/services/code/emit-handoff.js +79 -0
- package/dist/services/code/job-shape-decision.d.ts +71 -0
- package/dist/services/code/job-shape-decision.js +151 -0
- package/dist/services/code/mode-gate.d.ts +163 -0
- package/dist/services/code/mode-gate.js +212 -0
- package/dist/services/code/post-compact-detector.d.ts +61 -0
- package/dist/services/code/post-compact-detector.js +240 -0
- package/dist/services/code/status-line-renderer.d.ts +36 -0
- package/dist/services/code/status-line-renderer.js +73 -0
- package/dist/services/code/step-08-gate.d.ts +90 -0
- package/dist/services/code/step-08-gate.js +136 -0
- package/dist/services/code/user-touchpoint-classifier.d.ts +44 -0
- package/dist/services/code/user-touchpoint-classifier.js +145 -0
- package/dist/services/code-review/ecc-bridge.d.ts +148 -0
- package/dist/services/code-review/ecc-bridge.js +242 -0
- package/dist/services/code-review/ocr-service.d.ts +129 -0
- package/dist/services/code-review/ocr-service.js +372 -0
- package/dist/services/codegraph/codegraph-process-runner.d.ts +2 -0
- package/dist/services/codegraph/codegraph-process-runner.js +93 -0
- package/dist/services/codegraph/codegraph-service.d.ts +43 -0
- package/dist/services/codegraph/codegraph-service.js +160 -0
- package/dist/services/compact/decision-tables.d.ts +66 -0
- package/dist/services/compact/decision-tables.js +127 -0
- package/dist/services/compact/request-transition-hook.d.ts +20 -0
- package/dist/services/compact/request-transition-hook.js +110 -0
- package/dist/services/compact/suggest-service.d.ts +74 -0
- package/dist/services/compact/suggest-service.js +203 -0
- package/dist/services/compact-history/compact-history-service.d.ts +41 -0
- package/dist/services/compact-history/compact-history-service.js +62 -0
- package/dist/services/compact-statusline/compact-statusline-service.d.ts +16 -0
- package/dist/services/compact-statusline/compact-statusline-service.js +83 -0
- package/dist/services/complexity/complexity-estimator.d.ts +34 -0
- package/dist/services/complexity/complexity-estimator.js +64 -0
- package/dist/services/config/config-migration.d.ts +45 -0
- package/dist/services/config/config-migration.js +154 -0
- package/dist/services/config/config-restore.d.ts +10 -0
- package/dist/services/config/config-restore.js +47 -0
- package/dist/services/config/config-rollback.d.ts +13 -0
- package/dist/services/config/config-rollback.js +26 -0
- package/dist/services/config/config-safety.d.ts +40 -0
- package/dist/services/config/config-safety.js +359 -0
- package/dist/services/config/config-service.d.ts +58 -0
- package/dist/services/config/config-service.js +745 -0
- package/dist/services/config/config-types.d.ts +117 -0
- package/dist/services/config/config-types.js +18 -0
- package/dist/services/config/model-routing.d.ts +66 -0
- package/dist/services/config/model-routing.js +105 -0
- package/dist/services/config/proxy-service.d.ts +21 -0
- package/dist/services/config/proxy-service.js +44 -0
- package/dist/services/config/sidecar-store.d.ts +25 -0
- package/dist/services/config/sidecar-store.js +61 -0
- package/dist/services/config/workspace-state-service.d.ts +30 -0
- package/dist/services/config/workspace-state-service.js +142 -0
- package/dist/services/container/container-lease.d.ts +67 -0
- package/dist/services/container/container-lease.js +135 -0
- package/dist/services/context/artifact-meta.d.ts +72 -0
- package/dist/services/context/artifact-meta.js +105 -0
- package/dist/services/context/auto-compact-dispatcher.d.ts +72 -0
- package/dist/services/context/auto-compact-dispatcher.js +170 -0
- package/dist/services/context/auto-compact-reader.d.ts +51 -0
- package/dist/services/context/auto-compact-reader.js +164 -0
- package/dist/services/context/auto-compact-types.d.ts +168 -0
- package/dist/services/context/auto-compact-types.js +43 -0
- package/dist/services/context/build-dispatch-system-prompt.d.ts +75 -0
- package/dist/services/context/build-dispatch-system-prompt.js +117 -0
- package/dist/services/context/collector.d.ts +24 -0
- package/dist/services/context/collector.js +133 -0
- package/dist/services/context/context-builder.d.ts +30 -0
- package/dist/services/context/context-builder.js +78 -0
- package/dist/services/context/context-guard.d.ts +49 -0
- package/dist/services/context/context-guard.js +91 -0
- package/dist/services/context/context-schema.d.ts +415 -0
- package/dist/services/context/context-schema.js +73 -0
- package/dist/services/context/doc-retriever.d.ts +26 -0
- package/dist/services/context/doc-retriever.js +51 -0
- package/dist/services/context/headroom-client.d.ts +34 -0
- package/dist/services/context/headroom-client.js +117 -0
- package/dist/services/context/headroom-fetcher.d.ts +6 -0
- package/dist/services/context/headroom-fetcher.js +28 -0
- package/dist/services/context/headroom-prefs.d.ts +46 -0
- package/dist/services/context/headroom-prefs.js +34 -0
- package/dist/services/context/ide-detect.d.ts +4 -0
- package/dist/services/context/ide-detect.js +24 -0
- package/dist/services/context/index.d.ts +7 -0
- package/dist/services/context/index.js +6 -0
- package/dist/services/context/main-session-monitor.d.ts +86 -0
- package/dist/services/context/main-session-monitor.js +119 -0
- package/dist/services/context/memory-index-reader.d.ts +8 -0
- package/dist/services/context/memory-index-reader.js +57 -0
- package/dist/services/context/memory-lru-cache.d.ts +12 -0
- package/dist/services/context/memory-lru-cache.js +60 -0
- package/dist/services/context/memory-preflight-config.d.ts +19 -0
- package/dist/services/context/memory-preflight-config.js +25 -0
- package/dist/services/context/memory-preflight-service.d.ts +19 -0
- package/dist/services/context/memory-preflight-service.js +120 -0
- package/dist/services/context/renderer.d.ts +20 -0
- package/dist/services/context/renderer.js +30 -0
- package/dist/services/context/spillover-store.d.ts +23 -0
- package/dist/services/context/spillover-store.js +155 -0
- package/dist/services/context/spillover-types.d.ts +18 -0
- package/dist/services/context/spillover-types.js +1 -0
- package/dist/services/context/threshold.d.ts +35 -0
- package/dist/services/context/threshold.js +76 -0
- package/dist/services/context/tokenizer.d.ts +12 -0
- package/dist/services/context/tokenizer.js +43 -0
- package/dist/services/context/types.d.ts +93 -0
- package/dist/services/context/types.js +9 -0
- package/dist/services/crystallization/crystallization-service.d.ts +256 -0
- package/dist/services/crystallization/crystallization-service.js +391 -0
- package/dist/services/crystallization/crystallization-store.d.ts +75 -0
- package/dist/services/crystallization/crystallization-store.js +193 -0
- package/dist/services/crystallization/crystallization-types.d.ts +313 -0
- package/dist/services/crystallization/crystallization-types.js +299 -0
- package/dist/services/crystallization/evidence-brief-builder.d.ts +237 -0
- package/dist/services/crystallization/evidence-brief-builder.js +240 -0
- package/dist/services/crystallization/index.d.ts +13 -0
- package/dist/services/crystallization/index.js +13 -0
- package/dist/services/dashboard/project-dashboard-service.d.ts +91 -0
- package/dist/services/dashboard/project-dashboard-service.js +147 -0
- package/dist/services/dispatch/await-batch.d.ts +70 -0
- package/dist/services/dispatch/await-batch.js +272 -0
- package/dist/services/dispatch/batch-counter.d.ts +27 -0
- package/dist/services/dispatch/batch-counter.js +102 -0
- package/dist/services/dispatch/contract-store.d.ts +63 -0
- package/dist/services/dispatch/contract-store.js +157 -0
- package/dist/services/dispatch/dispatch-record-writer.d.ts +260 -0
- package/dist/services/dispatch/dispatch-record-writer.js +690 -0
- package/dist/services/dispatch/heartbeat-truncator.d.ts +26 -0
- package/dist/services/dispatch/heartbeat-truncator.js +13 -0
- package/dist/services/dispatch/leak-detector.d.ts +11 -0
- package/dist/services/dispatch/leak-detector.js +72 -0
- package/dist/services/dispatch/slice-dag.d.ts +127 -0
- package/dist/services/dispatch/slice-dag.js +244 -0
- package/dist/services/dispatch/stage-enum.d.ts +27 -0
- package/dist/services/dispatch/stage-enum.js +48 -0
- package/dist/services/dispatch/startup-timeout.d.ts +86 -0
- package/dist/services/dispatch/startup-timeout.js +97 -0
- package/dist/services/dispatch/sub-agent-dispatcher.d.ts +239 -0
- package/dist/services/dispatch/sub-agent-dispatcher.js +333 -0
- package/dist/services/dispatch/test-tool-detection.d.ts +60 -0
- package/dist/services/dispatch/test-tool-detection.js +126 -0
- package/dist/services/doc/doc-generator.d.ts +38 -0
- package/dist/services/doc/doc-generator.js +122 -0
- package/dist/services/doctor/doctor-service/checks/check-id-schema.d.ts +18 -0
- package/dist/services/doctor/doctor-service/checks/check-id-schema.js +64 -0
- package/dist/services/doctor/doctor-service/checks/codegraph-capability.d.ts +14 -0
- package/dist/services/doctor/doctor-service/checks/codegraph-capability.js +69 -0
- package/dist/services/doctor/doctor-service/checks/dist-source-version.d.ts +32 -0
- package/dist/services/doctor/doctor-service/checks/dist-source-version.js +110 -0
- package/dist/services/doctor/doctor-service/checks/gateguard-conflict.d.ts +24 -0
- package/dist/services/doctor/doctor-service/checks/gateguard-conflict.js +164 -0
- package/dist/services/doctor/doctor-service/checks/l3-memory-health.d.ts +16 -0
- package/dist/services/doctor/doctor-service/checks/l3-memory-health.js +57 -0
- package/dist/services/doctor/doctor-service/checks/l3-orphan-sessions.d.ts +19 -0
- package/dist/services/doctor/doctor-service/checks/l3-orphan-sessions.js +66 -0
- package/dist/services/doctor/doctor-service/checks/schema-validity.d.ts +10 -0
- package/dist/services/doctor/doctor-service/checks/schema-validity.js +33 -0
- package/dist/services/doctor/doctor-service/checks/skill-apply-note.d.ts +20 -0
- package/dist/services/doctor/doctor-service/checks/skill-apply-note.js +85 -0
- package/dist/services/doctor/doctor-service/checks/skill-existence.d.ts +13 -0
- package/dist/services/doctor/doctor-service/checks/skill-existence.js +30 -0
- package/dist/services/doctor/doctor-service/checks/skill-name-match.d.ts +10 -0
- package/dist/services/doctor/doctor-service/checks/skill-name-match.js +25 -0
- package/dist/services/doctor/doctor-service/checks/skill-parse.d.ts +10 -0
- package/dist/services/doctor/doctor-service/checks/skill-parse.js +19 -0
- package/dist/services/doctor/doctor-service/checks/skill-presence.d.ts +21 -0
- package/dist/services/doctor/doctor-service/checks/skill-presence.js +75 -0
- package/dist/services/doctor/doctor-service/checks/skill-runbook.d.ts +14 -0
- package/dist/services/doctor/doctor-service/checks/skill-runbook.js +47 -0
- package/dist/services/doctor/doctor-service/checks/statusline-install.d.ts +14 -0
- package/dist/services/doctor/doctor-service/checks/statusline-install.js +32 -0
- package/dist/services/doctor/doctor-service/checks/statusline-runtime.d.ts +13 -0
- package/dist/services/doctor/doctor-service/checks/statusline-runtime.js +30 -0
- package/dist/services/doctor/doctor-service/checks/user-config.d.ts +11 -0
- package/dist/services/doctor/doctor-service/checks/user-config.js +27 -0
- package/dist/services/doctor/doctor-service/checks/workspace-init.d.ts +16 -0
- package/dist/services/doctor/doctor-service/checks/workspace-init.js +34 -0
- package/dist/services/doctor/doctor-service/checks/workspace-layout.d.ts +33 -0
- package/dist/services/doctor/doctor-service/checks/workspace-layout.js +180 -0
- package/dist/services/doctor/doctor-service/index.d.ts +48 -0
- package/dist/services/doctor/doctor-service/index.js +254 -0
- package/dist/services/doctor/doctor-service/plugin-registry.d.ts +41 -0
- package/dist/services/doctor/doctor-service/plugin-registry.js +77 -0
- package/dist/services/doctor/doctor-service/report/final-summary.d.ts +20 -0
- package/dist/services/doctor/doctor-service/report/final-summary.js +29 -0
- package/dist/services/doctor/doctor-service/types.d.ts +245 -0
- package/dist/services/doctor/doctor-service/types.js +15 -0
- package/dist/services/doctor/doctor-service.d.ts +18 -0
- package/dist/services/doctor/doctor-service.js +25 -0
- package/dist/services/doctor/index.d.ts +22 -0
- package/dist/services/doctor/index.js +22 -0
- package/dist/services/env/shell-probe.d.ts +71 -0
- package/dist/services/env/shell-probe.js +161 -0
- package/dist/services/evolution/evolution-service.d.ts +137 -0
- package/dist/services/evolution/evolution-service.js +281 -0
- package/dist/services/evolution/evolution-store.d.ts +57 -0
- package/dist/services/evolution/evolution-store.js +232 -0
- package/dist/services/evolution/evolution-types.d.ts +706 -0
- package/dist/services/evolution/evolution-types.js +286 -0
- package/dist/services/evolution/independent-evaluator-runner.d.ts +90 -0
- package/dist/services/evolution/independent-evaluator-runner.js +106 -0
- package/dist/services/evolution/regression-skeptic-runner.d.ts +64 -0
- package/dist/services/evolution/regression-skeptic-runner.js +113 -0
- package/dist/services/feedback/feedback-promotion-service.d.ts +123 -0
- package/dist/services/feedback/feedback-promotion-service.js +300 -0
- package/dist/services/final-review/final-review-service.d.ts +22 -0
- package/dist/services/final-review/final-review-service.js +52 -0
- package/dist/services/final-review/final-review-types.d.ts +42 -0
- package/dist/services/final-review/final-review-types.js +18 -0
- package/dist/services/final-review/index.d.ts +2 -0
- package/dist/services/final-review/index.js +1 -0
- package/dist/services/fixture/fixture-capture-service.d.ts +87 -0
- package/dist/services/fixture/fixture-capture-service.js +317 -0
- package/dist/services/fixture/fixture-sanitize-service.d.ts +117 -0
- package/dist/services/fixture/fixture-sanitize-service.js +161 -0
- package/dist/services/fixture/index.d.ts +8 -0
- package/dist/services/fixture/index.js +8 -0
- package/dist/services/fork/fork-sync-state.d.ts +85 -0
- package/dist/services/fork/fork-sync-state.js +130 -0
- package/dist/services/fuzzy-matching/fuzzy-match-service.d.ts +15 -0
- package/dist/services/fuzzy-matching/fuzzy-match-service.js +56 -0
- package/dist/services/fuzzy-matching/fzf-pick-service.d.ts +68 -0
- package/dist/services/fuzzy-matching/fzf-pick-service.js +158 -0
- package/dist/services/fuzzy-matching/types.d.ts +20 -0
- package/dist/services/fuzzy-matching/types.js +1 -0
- package/dist/services/handoff/handoff-parser.d.ts +28 -0
- package/dist/services/handoff/handoff-parser.js +69 -0
- package/dist/services/handoff/handoff-types.d.ts +39 -0
- package/dist/services/handoff/handoff-types.js +19 -0
- package/dist/services/handoff/handoff-writer.d.ts +23 -0
- package/dist/services/handoff/handoff-writer.js +30 -0
- package/dist/services/hooks/auto-compact-hook-install.d.ts +103 -0
- package/dist/services/hooks/auto-compact-hook-install.js +156 -0
- package/dist/services/hooks/output.d.ts +92 -0
- package/dist/services/hooks/output.js +111 -0
- package/dist/services/hooks/presence-marker-detector.d.ts +16 -0
- package/dist/services/hooks/presence-marker-detector.js +105 -0
- package/dist/services/hooks/worktree-authorization-gate.d.ts +205 -0
- package/dist/services/hooks/worktree-authorization-gate.js +492 -0
- package/dist/services/ide/adapters/claude-code-adapter.d.ts +18 -0
- package/dist/services/ide/adapters/claude-code-adapter.js +103 -0
- package/dist/services/ide/adapters/codex-adapter.d.ts +46 -0
- package/dist/services/ide/adapters/codex-adapter.js +97 -0
- package/dist/services/ide/adapters/cursor-adapter.d.ts +36 -0
- package/dist/services/ide/adapters/cursor-adapter.js +84 -0
- package/dist/services/ide/adapters/hermes-adapter.d.ts +21 -0
- package/dist/services/ide/adapters/hermes-adapter.js +51 -0
- package/dist/services/ide/adapters/openclaw-adapter.d.ts +14 -0
- package/dist/services/ide/adapters/openclaw-adapter.js +42 -0
- package/dist/services/ide/adapters/qoder-adapter.d.ts +25 -0
- package/dist/services/ide/adapters/qoder-adapter.js +57 -0
- package/dist/services/ide/adapters/tongyi-lingma-adapter.d.ts +16 -0
- package/dist/services/ide/adapters/tongyi-lingma-adapter.js +45 -0
- package/dist/services/ide/adapters/trae-adapter.d.ts +42 -0
- package/dist/services/ide/adapters/trae-adapter.js +83 -0
- package/dist/services/ide/adapters/zcode-adapter.d.ts +40 -0
- package/dist/services/ide/adapters/zcode-adapter.js +220 -0
- package/dist/services/ide/current-model-detector.d.ts +14 -0
- package/dist/services/ide/current-model-detector.js +60 -0
- package/dist/services/ide/hook-protocol.d.ts +47 -0
- package/dist/services/ide/hook-protocol.js +74 -0
- package/dist/services/ide/hook-translator.d.ts +72 -0
- package/dist/services/ide/hook-translator.js +128 -0
- package/dist/services/ide/ide-detector.d.ts +10 -0
- package/dist/services/ide/ide-detector.js +19 -0
- package/dist/services/ide/ide-registry.d.ts +14 -0
- package/dist/services/ide/ide-registry.js +69 -0
- package/dist/services/ide/ide-types.d.ts +253 -0
- package/dist/services/ide/ide-types.js +2 -0
- package/dist/services/ide/resource-profile.d.ts +52 -0
- package/dist/services/ide/resource-profile.js +33 -0
- package/dist/services/ide/shared/atomic-json.d.ts +15 -0
- package/dist/services/ide/shared/atomic-json.js +58 -0
- package/dist/services/ide/shared/safe-path.d.ts +11 -0
- package/dist/services/ide/shared/safe-path.js +29 -0
- package/dist/services/impact/impact-scan-service.d.ts +66 -0
- package/dist/services/impact/impact-scan-service.js +197 -0
- package/dist/services/job/job-event-emitter.d.ts +30 -0
- package/dist/services/job/job-event-emitter.js +5 -0
- package/dist/services/job/job-orchestrator.d.ts +50 -0
- package/dist/services/job/job-orchestrator.js +104 -0
- package/dist/services/job/job-progress-store.d.ts +60 -0
- package/dist/services/job/job-progress-store.js +70 -0
- package/dist/services/job/job-rotation.d.ts +17 -0
- package/dist/services/job/job-rotation.js +30 -0
- package/dist/services/job/job-state-store.d.ts +24 -0
- package/dist/services/job/job-state-store.js +60 -0
- package/dist/services/job/job-types.d.ts +444 -0
- package/dist/services/job/job-types.js +87 -0
- package/dist/services/job/subagent-job-wrapper.d.ts +35 -0
- package/dist/services/job/subagent-job-wrapper.js +30 -0
- package/dist/services/job-snapshot/index.d.ts +8 -0
- package/dist/services/job-snapshot/index.js +7 -0
- package/dist/services/job-snapshot/snapshot.d.ts +7 -0
- package/dist/services/job-snapshot/snapshot.js +75 -0
- package/dist/services/job-snapshot/types.d.ts +7 -0
- package/dist/services/job-snapshot/types.js +1 -0
- package/dist/services/karpathy-cost/karpathy-cost-check-service.d.ts +67 -0
- package/dist/services/karpathy-cost/karpathy-cost-check-service.js +108 -0
- package/dist/services/legacy/legacy-detector.d.ts +34 -0
- package/dist/services/legacy/legacy-detector.js +111 -0
- package/dist/services/log/log-commands-service.d.ts +54 -0
- package/dist/services/log/log-commands-service.js +83 -0
- package/dist/services/log/logger.d.ts +103 -0
- package/dist/services/log/logger.js +224 -0
- package/dist/services/log/redact.d.ts +32 -0
- package/dist/services/log/redact.js +89 -0
- package/dist/services/log/retention.d.ts +50 -0
- package/dist/services/log/retention.js +95 -0
- package/dist/services/loop/evaluator-dispatcher.d.ts +50 -0
- package/dist/services/loop/evaluator-dispatcher.js +552 -0
- package/dist/services/loop/loop-bee-relation-service.d.ts +107 -0
- package/dist/services/loop/loop-bee-relation-service.js +211 -0
- package/dist/services/loop/loop-bee-relation-store.d.ts +53 -0
- package/dist/services/loop/loop-bee-relation-store.js +130 -0
- package/dist/services/loop/loop-bee-relation-types.d.ts +118 -0
- package/dist/services/loop/loop-bee-relation-types.js +114 -0
- package/dist/services/loop/loop-release-service.d.ts +46 -0
- package/dist/services/loop/loop-release-service.js +66 -0
- package/dist/services/loop/loop-release-store.d.ts +55 -0
- package/dist/services/loop/loop-release-store.js +134 -0
- package/dist/services/loop/loop-release-types.d.ts +250 -0
- package/dist/services/loop/loop-release-types.js +162 -0
- package/dist/services/loop/monotonic-guard.d.ts +80 -0
- package/dist/services/loop/monotonic-guard.js +232 -0
- package/dist/services/loop/monotonic-runner.d.ts +64 -0
- package/dist/services/loop/monotonic-runner.js +270 -0
- package/dist/services/loop/run-driver.d.ts +70 -0
- package/dist/services/loop/run-driver.js +400 -0
- package/dist/services/loop/spec-service.d.ts +90 -0
- package/dist/services/loop/spec-service.js +497 -0
- package/dist/services/memory/llm-reranker.d.ts +174 -0
- package/dist/services/memory/llm-reranker.js +284 -0
- package/dist/services/memory/memory-search-service.d.ts +93 -0
- package/dist/services/memory/memory-search-service.js +117 -0
- package/dist/services/memory/project-context-service.d.ts +21 -0
- package/dist/services/memory/project-context-service.js +161 -0
- package/dist/services/memory/project-memory-service/index/kind-dispatch.d.ts +8 -0
- package/dist/services/memory/project-memory-service/index/kind-dispatch.js +253 -0
- package/dist/services/memory/project-memory-service/index/ranking.d.ts +6 -0
- package/dist/services/memory/project-memory-service/index/ranking.js +171 -0
- package/dist/services/memory/project-memory-service/index/search.d.ts +34 -0
- package/dist/services/memory/project-memory-service/index/search.js +194 -0
- package/dist/services/memory/project-memory-service/index.d.ts +9 -0
- package/dist/services/memory/project-memory-service/index.js +24 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter.d.ts +9 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter.js +106 -0
- package/dist/services/memory/project-memory-service/parsers/markdown-pure.d.ts +7 -0
- package/dist/services/memory/project-memory-service/parsers/markdown-pure.js +96 -0
- package/dist/services/memory/project-memory-service/store/atomic-write.d.ts +5 -0
- package/dist/services/memory/project-memory-service/store/atomic-write.js +56 -0
- package/dist/services/memory/project-memory-service/store/paths.d.ts +8 -0
- package/dist/services/memory/project-memory-service/store/paths.js +116 -0
- package/dist/services/memory/project-memory-service/types.d.ts +128 -0
- package/dist/services/memory/project-memory-service/types.js +9 -0
- package/dist/services/memory/project-memory-service.d.ts +1 -0
- package/dist/services/memory/project-memory-service.js +20 -0
- package/dist/services/migrate-skill-name/migrate.d.ts +17 -0
- package/dist/services/migrate-skill-name/migrate.js +152 -0
- package/dist/services/migrate-skill-name/schema.d.ts +42 -0
- package/dist/services/migrate-skill-name/schema.js +25 -0
- package/dist/services/migration/v2-10-to-v2-11-service.d.ts +44 -0
- package/dist/services/migration/v2-10-to-v2-11-service.js +190 -0
- package/dist/services/migration/v2-10-to-v2-11-types.d.ts +41 -0
- package/dist/services/migration/v2-10-to-v2-11-types.js +23 -0
- package/dist/services/mode/bypass-tracker.d.ts +4 -0
- package/dist/services/mode/bypass-tracker.js +31 -0
- package/dist/services/mode/mode-enforcement.d.ts +14 -0
- package/dist/services/mode/mode-enforcement.js +84 -0
- package/dist/services/observability/aggregation.d.ts +91 -0
- package/dist/services/observability/aggregation.js +289 -0
- package/dist/services/observability/jsonl-store.d.ts +59 -0
- package/dist/services/observability/jsonl-store.js +120 -0
- package/dist/services/observability/observability-service.d.ts +161 -0
- package/dist/services/observability/observability-service.js +205 -0
- package/dist/services/observability/report-formatter.d.ts +42 -0
- package/dist/services/observability/report-formatter.js +156 -0
- package/dist/services/openspec/artifact-boundary.d.ts +138 -0
- package/dist/services/openspec/artifact-boundary.js +150 -0
- package/dist/services/openspec/coverage-evidence-reader.d.ts +191 -0
- package/dist/services/openspec/coverage-evidence-reader.js +386 -0
- package/dist/services/openspec/openspec-archive-service.d.ts +82 -0
- package/dist/services/openspec/openspec-archive-service.js +340 -0
- package/dist/services/openspec/openspec-bridge-service.d.ts +16 -0
- package/dist/services/openspec/openspec-bridge-service.js +76 -0
- package/dist/services/openspec/openspec-init-service.d.ts +23 -0
- package/dist/services/openspec/openspec-init-service.js +122 -0
- package/dist/services/openspec/openspec-propose-from-doctor-service.d.ts +31 -0
- package/dist/services/openspec/openspec-propose-from-doctor-service.js +95 -0
- package/dist/services/openspec/openspec-render-service.d.ts +38 -0
- package/dist/services/openspec/openspec-render-service.js +133 -0
- package/dist/services/openspec/openspec-scan-service.d.ts +6 -0
- package/dist/services/openspec/openspec-scan-service.js +123 -0
- package/dist/services/openspec/openspec-types.d.ts +39 -0
- package/dist/services/openspec/openspec-types.js +1 -0
- package/dist/services/openspec/openspec-validate-service.d.ts +27 -0
- package/dist/services/openspec/openspec-validate-service.js +78 -0
- package/dist/services/perf/perf-baseline-service.d.ts +70 -0
- package/dist/services/perf/perf-baseline-service.js +214 -0
- package/dist/services/polyrepo/polyrepo-dispatcher.d.ts +34 -0
- package/dist/services/polyrepo/polyrepo-dispatcher.js +119 -0
- package/dist/services/polyrepo/polyrepo-scanner.d.ts +9 -0
- package/dist/services/polyrepo/polyrepo-scanner.js +94 -0
- package/dist/services/polyrepo/polyrepo-service.d.ts +34 -0
- package/dist/services/polyrepo/polyrepo-service.js +49 -0
- package/dist/services/polyrepo/polyrepo-types.d.ts +55 -0
- package/dist/services/polyrepo/polyrepo-types.js +1 -0
- package/dist/services/prd/handoff-auto-regen.d.ts +22 -0
- package/dist/services/prd/handoff-auto-regen.js +73 -0
- package/dist/services/prd/handoff-service.d.ts +54 -0
- package/dist/services/prd/handoff-service.js +142 -0
- package/dist/services/prd/handoff-types.d.ts +64 -0
- package/dist/services/prd/handoff-types.js +22 -0
- package/dist/services/prd/prd-blocks-checker.d.ts +51 -0
- package/dist/services/prd/prd-blocks-checker.js +130 -0
- package/dist/services/prd/project-scan-bootstrap-service.d.ts +52 -0
- package/dist/services/prd/project-scan-bootstrap-service.js +445 -0
- package/dist/services/prd/project-scan-reader.d.ts +24 -0
- package/dist/services/prd/project-scan-reader.js +150 -0
- package/dist/services/prd/project-scan-sediment.d.ts +97 -0
- package/dist/services/prd/project-scan-sediment.js +445 -0
- package/dist/services/prd/project-scan-types.d.ts +66 -0
- package/dist/services/prd/project-scan-types.js +20 -0
- package/dist/services/preferences/preferences-service.d.ts +38 -0
- package/dist/services/preferences/preferences-service.js +208 -0
- package/dist/services/preferences/preferences-types.d.ts +161 -0
- package/dist/services/preferences/preferences-types.js +64 -0
- package/dist/services/profiles/profile-service.d.ts +6 -0
- package/dist/services/profiles/profile-service.js +19 -0
- package/dist/services/progress/progress-service.d.ts +125 -0
- package/dist/services/progress/progress-service.js +192 -0
- package/dist/services/proxy/proxy-service.d.ts +7 -0
- package/dist/services/proxy/proxy-service.js +31 -0
- package/dist/services/qa/browser-event-logger.d.ts +40 -0
- package/dist/services/qa/browser-event-logger.js +54 -0
- package/dist/services/qa/browser-restart-detector.d.ts +74 -0
- package/dist/services/qa/browser-restart-detector.js +138 -0
- package/dist/services/qa/browser-reuse-hint.d.ts +18 -0
- package/dist/services/qa/browser-reuse-hint.js +18 -0
- package/dist/services/qa/browser-wrapper-service.d.ts +37 -0
- package/dist/services/qa/browser-wrapper-service.js +88 -0
- package/dist/services/qa/qa-business-review-state.d.ts +47 -0
- package/dist/services/qa/qa-business-review-state.js +96 -0
- package/dist/services/qa/screenshot-archive-service.d.ts +51 -0
- package/dist/services/qa/screenshot-archive-service.js +134 -0
- package/dist/services/rd/ast-gate.d.ts +19 -0
- package/dist/services/rd/ast-gate.js +71 -0
- package/dist/services/rd/impl.d.ts +9 -0
- package/dist/services/rd/impl.js +57 -0
- package/dist/services/rd/rd-service.d.ts +129 -0
- package/dist/services/rd/rd-service.js +440 -0
- package/dist/services/rd/reviewer-dispatch-policy.d.ts +122 -0
- package/dist/services/rd/reviewer-dispatch-policy.js +148 -0
- package/dist/services/rd/standards-diagnostic.d.ts +76 -0
- package/dist/services/rd/standards-diagnostic.js +166 -0
- package/dist/services/rd/strategic-stage.d.ts +4 -0
- package/dist/services/rd/strategic-stage.js +15 -0
- package/dist/services/rd/strategy.d.ts +13 -0
- package/dist/services/rd/strategy.js +60 -0
- package/dist/services/rd/tactical-stage.d.ts +33 -0
- package/dist/services/rd/tactical-stage.js +62 -0
- package/dist/services/rd/types.d.ts +252 -0
- package/dist/services/rd/types.js +47 -0
- package/dist/services/rd-swarm/rd-swarm-service.d.ts +60 -0
- package/dist/services/rd-swarm/rd-swarm-service.js +93 -0
- package/dist/services/recommendations/capability-availability.d.ts +5 -0
- package/dist/services/recommendations/capability-availability.js +40 -0
- package/dist/services/recommendations/capability-map-service.d.ts +7 -0
- package/dist/services/recommendations/capability-map-service.js +131 -0
- package/dist/services/recommendations/capability-seed-items.d.ts +2 -0
- package/dist/services/recommendations/capability-seed-items.js +139 -0
- package/dist/services/recommendations/capability-seed-mappings.d.ts +2 -0
- package/dist/services/recommendations/capability-seed-mappings.js +53 -0
- package/dist/services/recommendations/capability-seed-sources.d.ts +2 -0
- package/dist/services/recommendations/capability-seed-sources.js +34 -0
- package/dist/services/recommendations/recommendation-service.d.ts +8 -0
- package/dist/services/recommendations/recommendation-service.js +106 -0
- package/dist/services/recommendations/recommendation-types.d.ts +129 -0
- package/dist/services/recommendations/recommendation-types.js +1 -0
- package/dist/services/recommendations/seed-capability-catalog.d.ts +3 -0
- package/dist/services/recommendations/seed-capability-catalog.js +3 -0
- package/dist/services/refactor/refactor-service.d.ts +9 -0
- package/dist/services/refactor/refactor-service.js +36 -0
- package/dist/services/release/release-state.d.ts +70 -0
- package/dist/services/release/release-state.js +140 -0
- package/dist/services/release/version-precheck-service.d.ts +51 -0
- package/dist/services/release/version-precheck-service.js +257 -0
- package/dist/services/retrospective/retrospective-index.d.ts +37 -0
- package/dist/services/retrospective/retrospective-index.js +110 -0
- package/dist/services/retrospective/retrospective-search-service.d.ts +55 -0
- package/dist/services/retrospective/retrospective-search-service.js +107 -0
- package/dist/services/retrospective/retrospective-show.d.ts +40 -0
- package/dist/services/retrospective/retrospective-show.js +109 -0
- package/dist/services/reviewer/model-family.d.ts +18 -0
- package/dist/services/reviewer/model-family.js +70 -0
- package/dist/services/reviewer/providers/anthropic.d.ts +2 -0
- package/dist/services/reviewer/providers/anthropic.js +61 -0
- package/dist/services/reviewer/providers/ollama.d.ts +26 -0
- package/dist/services/reviewer/providers/ollama.js +38 -0
- package/dist/services/reviewer/providers/openai.d.ts +2 -0
- package/dist/services/reviewer/providers/openai.js +63 -0
- package/dist/services/reviewer/reviewer-config.d.ts +34 -0
- package/dist/services/reviewer/reviewer-config.js +100 -0
- package/dist/services/reviewer/reviewer-service.d.ts +56 -0
- package/dist/services/reviewer/reviewer-service.js +263 -0
- package/dist/services/reviewer/selection-strategies.d.ts +27 -0
- package/dist/services/reviewer/selection-strategies.js +53 -0
- package/dist/services/role/role-registry.d.ts +38 -0
- package/dist/services/role/role-registry.js +83 -0
- package/dist/services/runtime/runtime-detector.d.ts +15 -0
- package/dist/services/runtime/runtime-detector.js +62 -0
- package/dist/services/runtime/runtime-service.d.ts +59 -0
- package/dist/services/runtime/runtime-service.js +51 -0
- package/dist/services/runtime/vendor-adapter.d.ts +59 -0
- package/dist/services/runtime/vendor-adapter.js +1 -0
- package/dist/services/runtime/vendors/claude-code.d.ts +7 -0
- package/dist/services/runtime/vendors/claude-code.js +39 -0
- package/dist/services/runtime/vendors/codex.d.ts +7 -0
- package/dist/services/runtime/vendors/codex.js +43 -0
- package/dist/services/runtime/vendors/copilot.d.ts +7 -0
- package/dist/services/runtime/vendors/copilot.js +40 -0
- package/dist/services/sc/index.d.ts +1 -0
- package/dist/services/sc/index.js +1 -0
- package/dist/services/sc/sc-service.d.ts +131 -0
- package/dist/services/sc/sc-service.js +552 -0
- package/dist/services/scan/acceptance-coverage-service.d.ts +42 -0
- package/dist/services/scan/acceptance-coverage-service.js +140 -0
- package/dist/services/scan/api-surface-service.d.ts +69 -0
- package/dist/services/scan/api-surface-service.js +239 -0
- package/dist/services/scan/archetype-service.d.ts +5 -0
- package/dist/services/scan/archetype-service.js +254 -0
- package/dist/services/scan/diff-scope-service.d.ts +40 -0
- package/dist/services/scan/diff-scope-service.js +198 -0
- package/dist/services/scan/existing-system-service.d.ts +7 -0
- package/dist/services/scan/existing-system-service.js +300 -0
- package/dist/services/scan/file-size-scan.d.ts +23 -0
- package/dist/services/scan/file-size-scan.js +68 -0
- package/dist/services/scan/karpathy-service.d.ts +60 -0
- package/dist/services/scan/karpathy-service.js +228 -0
- package/dist/services/scan/libraries-service.d.ts +24 -0
- package/dist/services/scan/libraries-service.js +419 -0
- package/dist/services/scan/libraries-types.d.ts +59 -0
- package/dist/services/scan/libraries-types.js +9 -0
- package/dist/services/scan/orphan-service.d.ts +76 -0
- package/dist/services/scan/orphan-service.js +538 -0
- package/dist/services/scan/scan-types.d.ts +59 -0
- package/dist/services/scan/scan-types.js +1 -0
- package/dist/services/scan/type-sanity-service.d.ts +23 -0
- package/dist/services/scan/type-sanity-service.js +116 -0
- package/dist/services/security/safe-settings-path.d.ts +12 -0
- package/dist/services/security/safe-settings-path.js +104 -0
- package/dist/services/sediment/dispose-confirm.d.ts +9 -0
- package/dist/services/sediment/dispose-confirm.js +5 -0
- package/dist/services/sediment/json-schema.d.ts +247 -0
- package/dist/services/sediment/json-schema.js +26 -0
- package/dist/services/sediment/manifest-lint.d.ts +13 -0
- package/dist/services/sediment/manifest-lint.js +11 -0
- package/dist/services/sediment/pool-paths.d.ts +22 -0
- package/dist/services/sediment/pool-paths.js +25 -0
- package/dist/services/sediment/pool-read.d.ts +20 -0
- package/dist/services/sediment/pool-read.js +73 -0
- package/dist/services/sediment/pool-rebuild-index.d.ts +15 -0
- package/dist/services/sediment/pool-rebuild-index.js +28 -0
- package/dist/services/sediment/pool-write.d.ts +14 -0
- package/dist/services/sediment/pool-write.js +25 -0
- package/dist/services/sediment/promotion-gate.d.ts +12 -0
- package/dist/services/sediment/promotion-gate.js +20 -0
- package/dist/services/sediment/types.d.ts +52 -0
- package/dist/services/sediment/types.js +1 -0
- package/dist/services/session/binding-status-service.d.ts +56 -0
- package/dist/services/session/binding-status-service.js +106 -0
- package/dist/services/session/binding-store.d.ts +161 -0
- package/dist/services/session/binding-store.js +509 -0
- package/dist/services/session/caller-binding-service.d.ts +70 -0
- package/dist/services/session/caller-binding-service.js +148 -0
- package/dist/services/session/caller-id-types.d.ts +77 -0
- package/dist/services/session/caller-id-types.js +46 -0
- package/dist/services/session/getSessionDir.d.ts +1 -0
- package/dist/services/session/getSessionDir.js +27 -0
- package/dist/services/session/index.d.ts +6 -0
- package/dist/services/session/index.js +7 -0
- package/dist/services/session/platform-fallbacks.d.ts +31 -0
- package/dist/services/session/platform-fallbacks.js +35 -0
- package/dist/services/session/resolve-caller-id.d.ts +57 -0
- package/dist/services/session/resolve-caller-id.js +88 -0
- package/dist/services/session/session-binding-bridge.d.ts +76 -0
- package/dist/services/session/session-binding-bridge.js +247 -0
- package/dist/services/session/session-checkpoint-service.d.ts +57 -0
- package/dist/services/session/session-checkpoint-service.js +143 -0
- package/dist/services/session/session-manager.d.ts +168 -0
- package/dist/services/session/session-manager.js +502 -0
- package/dist/services/session/session-resume-service.d.ts +25 -0
- package/dist/services/session/session-resume-service.js +101 -0
- package/dist/services/share/bundle-reader.d.ts +100 -0
- package/dist/services/share/bundle-reader.js +434 -0
- package/dist/services/share/bundle-types.d.ts +392 -0
- package/dist/services/share/bundle-types.js +318 -0
- package/dist/services/share/bundle-writer.d.ts +97 -0
- package/dist/services/share/bundle-writer.js +429 -0
- package/dist/services/share/run-state-contract.d.ts +133 -0
- package/dist/services/share/run-state-contract.js +138 -0
- package/dist/services/signal/cancel-handler.d.ts +14 -0
- package/dist/services/signal/cancel-handler.js +76 -0
- package/dist/services/skill/resume-detector.d.ts +54 -0
- package/dist/services/skill/resume-detector.js +334 -0
- package/dist/services/skill/skill-scheduler.d.ts +40 -0
- package/dist/services/skill/skill-scheduler.js +53 -0
- package/dist/services/skill/skill-search-service.d.ts +93 -0
- package/dist/services/skill/skill-search-service.js +232 -0
- package/dist/services/skillhub/migrations/001-initial.sql +71 -0
- package/dist/services/skillhub/migrations/002-loop-release.sql +32 -0
- package/dist/services/skillhub/migrations/003-loop-bee-relation.sql +35 -0
- package/dist/services/skillhub/migrations/004-loop-bee-extension.sql +65 -0
- package/dist/services/skillhub/migrations/005-evolution-evaluation.sql +81 -0
- package/dist/services/skillhub/migrations/006-crystallization-event.sql +92 -0
- package/dist/services/skillhub/release-diff.d.ts +18 -0
- package/dist/services/skillhub/release-diff.js +38 -0
- package/dist/services/skillhub/release-export.d.ts +8 -0
- package/dist/services/skillhub/release-export.js +31 -0
- package/dist/services/skillhub/release-gc-blobs.d.ts +13 -0
- package/dist/services/skillhub/release-gc-blobs.js +32 -0
- package/dist/services/skillhub/release-import.d.ts +7 -0
- package/dist/services/skillhub/release-import.js +64 -0
- package/dist/services/skillhub/release-retain.d.ts +23 -0
- package/dist/services/skillhub/release-retain.js +94 -0
- package/dist/services/skillhub/sqlite-store.d.ts +22 -0
- package/dist/services/skillhub/sqlite-store.js +63 -0
- package/dist/services/skillhub/tar-runtime.d.ts +21 -0
- package/dist/services/skillhub/tar-runtime.js +91 -0
- package/dist/services/skillhub/types.d.ts +115 -0
- package/dist/services/skillhub/types.js +1 -0
- package/dist/services/skills/hooks-settings-service.d.ts +212 -0
- package/dist/services/skills/hooks-settings-service.js +624 -0
- package/dist/services/skills/skill-conformance-service.d.ts +40 -0
- package/dist/services/skills/skill-conformance-service.js +139 -0
- package/dist/services/skills/skill-presence-service.d.ts +158 -0
- package/dist/services/skills/skill-presence-service.js +474 -0
- package/dist/services/skills/skill-registry.d.ts +18 -0
- package/dist/services/skills/skill-registry.js +69 -0
- package/dist/services/skills/skill-runbook-service.d.ts +11 -0
- package/dist/services/skills/skill-runbook-service.js +128 -0
- package/dist/services/skills/skill-statusline-renderer.d.ts +6 -0
- package/dist/services/skills/skill-statusline-renderer.js +55 -0
- package/dist/services/skills/skill-statusline-service.d.ts +24 -0
- package/dist/services/skills/skill-statusline-service.js +110 -0
- package/dist/services/skills/statusline-settings-service.d.ts +59 -0
- package/dist/services/skills/statusline-settings-service.js +141 -0
- package/dist/services/skills/sync-service.d.ts +86 -0
- package/dist/services/skills/sync-service.js +271 -0
- package/dist/services/slice/calibration-store.d.ts +39 -0
- package/dist/services/slice/calibration-store.js +68 -0
- package/dist/services/slice/cross-pass-edge-merger.d.ts +53 -0
- package/dist/services/slice/cross-pass-edge-merger.js +246 -0
- package/dist/services/slice/granularity-decider.d.ts +37 -0
- package/dist/services/slice/granularity-decider.js +40 -0
- package/dist/services/slice/llm-arbitrator.d.ts +35 -0
- package/dist/services/slice/llm-arbitrator.js +63 -0
- package/dist/services/slice/multi-pass-orchestrator.d.ts +67 -0
- package/dist/services/slice/multi-pass-orchestrator.js +225 -0
- package/dist/services/slice/schema-router.d.ts +44 -0
- package/dist/services/slice/schema-router.js +61 -0
- package/dist/services/slice/slice-archive-service.d.ts +20 -0
- package/dist/services/slice/slice-archive-service.js +111 -0
- package/dist/services/slice/slice-benchmark-service.d.ts +19 -0
- package/dist/services/slice/slice-benchmark-service.js +60 -0
- package/dist/services/slice/slice-check-service.d.ts +2 -0
- package/dist/services/slice/slice-check-service.js +459 -0
- package/dist/services/slice/slice-check-types.d.ts +104 -0
- package/dist/services/slice/slice-check-types.js +28 -0
- package/dist/services/slice/slice-decompose-runners.d.ts +23 -0
- package/dist/services/slice/slice-decompose-runners.js +174 -0
- package/dist/services/slice/slice-decompose-service.d.ts +24 -0
- package/dist/services/slice/slice-decompose-service.js +532 -0
- package/dist/services/slice/slice-decompose-types.d.ts +263 -0
- package/dist/services/slice/slice-decompose-types.js +30 -0
- package/dist/services/slice/slice-integration.d.ts +43 -0
- package/dist/services/slice/slice-integration.js +106 -0
- package/dist/services/slice/slice-pick-service.d.ts +32 -0
- package/dist/services/slice/slice-pick-service.js +75 -0
- package/dist/services/slice/slice-review-state.d.ts +70 -0
- package/dist/services/slice/slice-review-state.js +109 -0
- package/dist/services/slice/slice-topology-types.d.ts +115 -0
- package/dist/services/slice/slice-topology-types.js +20 -0
- package/dist/services/smoke/smoke-paths-state.d.ts +73 -0
- package/dist/services/smoke/smoke-paths-state.js +117 -0
- package/dist/services/sop/gate-enforce-service.d.ts +33 -0
- package/dist/services/sop/gate-enforce-service.js +168 -0
- package/dist/services/sop/sop-advance-service.d.ts +74 -0
- package/dist/services/sop/sop-advance-service.js +115 -0
- package/dist/services/sop/sop-check-service.d.ts +45 -0
- package/dist/services/sop/sop-check-service.js +181 -0
- package/dist/services/sop/sop-paths.d.ts +62 -0
- package/dist/services/sop/sop-paths.js +92 -0
- package/dist/services/sop/sop-registry-service.d.ts +46 -0
- package/dist/services/sop/sop-registry-service.js +89 -0
- package/dist/services/sop/sop-service.d.ts +55 -0
- package/dist/services/sop/sop-service.js +222 -0
- package/dist/services/sop/sop-types.d.ts +95 -0
- package/dist/services/sop/sop-types.js +11 -0
- package/dist/services/standards/ide-aware-standards-service.d.ts +94 -0
- package/dist/services/standards/ide-aware-standards-service.js +91 -0
- package/dist/services/standards/loop-engineering-lint.d.ts +38 -0
- package/dist/services/standards/loop-engineering-lint.js +101 -0
- package/dist/services/standards/loop-engineering-readiness-lint.d.ts +111 -0
- package/dist/services/standards/loop-engineering-readiness-lint.js +248 -0
- package/dist/services/standards/main-session-monitor-ban-hook.d.ts +14 -0
- package/dist/services/standards/main-session-monitor-ban-hook.js +19 -0
- package/dist/services/standards/migrate-claude-rules-service.d.ts +19 -0
- package/dist/services/standards/migrate-claude-rules-service.js +214 -0
- package/dist/services/standards/migrate-service.d.ts +63 -0
- package/dist/services/standards/migrate-service.js +193 -0
- package/dist/services/standards/missing-standards-detector.d.ts +106 -0
- package/dist/services/standards/missing-standards-detector.js +170 -0
- package/dist/services/standards/project-context.d.ts +24 -0
- package/dist/services/standards/project-context.js +314 -0
- package/dist/services/standards/project-standards-service.d.ts +114 -0
- package/dist/services/standards/project-standards-service.js +693 -0
- package/dist/services/tech/tech-change-id-service.d.ts +82 -0
- package/dist/services/tech/tech-change-id-service.js +117 -0
- package/dist/services/tech/tech-service.d.ts +69 -0
- package/dist/services/tech/tech-service.js +299 -0
- package/dist/services/test-cache/test-cache-service.d.ts +70 -0
- package/dist/services/test-cache/test-cache-service.js +175 -0
- package/dist/services/understand/hybrid-types.d.ts +32 -0
- package/dist/services/understand/hybrid-types.js +1 -0
- package/dist/services/understand/understand-hybrid-service.d.ts +10 -0
- package/dist/services/understand/understand-hybrid-service.js +100 -0
- package/dist/services/understand/understand-scan-service.d.ts +28 -0
- package/dist/services/understand/understand-scan-service.js +170 -0
- package/dist/services/understand/understand-types.d.ts +50 -0
- package/dist/services/understand/understand-types.js +1 -0
- package/dist/services/upgrade/1x-detector-service.d.ts +7 -0
- package/dist/services/upgrade/1x-detector-service.js +94 -0
- package/dist/services/upgrade/gitignore-migrate-service.d.ts +56 -0
- package/dist/services/upgrade/gitignore-migrate-service.js +170 -0
- package/dist/services/upgrade/upgrade-service.d.ts +81 -0
- package/dist/services/upgrade/upgrade-service.js +404 -0
- package/dist/services/verdict/envelopes.d.ts +93 -0
- package/dist/services/verdict/envelopes.js +349 -0
- package/dist/services/verdict/verdict-aggregator.d.ts +94 -0
- package/dist/services/verdict/verdict-aggregator.js +112 -0
- package/dist/services/vm/vm-lease.d.ts +40 -0
- package/dist/services/vm/vm-lease.js +137 -0
- package/dist/services/workflow/artifact-paths.d.ts +59 -0
- package/dist/services/workflow/artifact-paths.js +166 -0
- package/dist/services/workflow/autonomous-resume-writer.d.ts +16 -0
- package/dist/services/workflow/autonomous-resume-writer.js +170 -0
- package/dist/services/workflow/pipeline-verify-gate-support.d.ts +47 -0
- package/dist/services/workflow/pipeline-verify-gate-support.js +194 -0
- package/dist/services/workflow/pipeline-verify-service.d.ts +26 -0
- package/dist/services/workflow/pipeline-verify-service.js +273 -0
- package/dist/services/workflow/pipeline-verify-types.d.ts +90 -0
- package/dist/services/workflow/pipeline-verify-types.js +10 -0
- package/dist/services/workflow/plan-reader.d.ts +29 -0
- package/dist/services/workflow/plan-reader.js +174 -0
- package/dist/services/workflow/plan-refresher.d.ts +32 -0
- package/dist/services/workflow/plan-refresher.js +353 -0
- package/dist/services/workflow/plan-trigger-detector.d.ts +55 -0
- package/dist/services/workflow/plan-trigger-detector.js +142 -0
- package/dist/services/workflow/workflow-autonomous-resume-helpers.d.ts +19 -0
- package/dist/services/workflow/workflow-autonomous-resume-helpers.js +300 -0
- package/dist/services/workflow/workflow-autonomous-service.d.ts +4 -0
- package/dist/services/workflow/workflow-autonomous-service.js +306 -0
- package/dist/services/workflow/workflow-autonomous-types.d.ts +114 -0
- package/dist/services/workflow/workflow-autonomous-types.js +21 -0
- package/dist/services/workflow/workflow-loader.d.ts +63 -0
- package/dist/services/workflow/workflow-loader.js +168 -0
- package/dist/services/workflow/workflow-router-service.d.ts +85 -0
- package/dist/services/workflow/workflow-router-service.js +235 -0
- package/dist/services/workflow/workflow-skip-service.d.ts +106 -0
- package/dist/services/workflow/workflow-skip-service.js +209 -0
- package/dist/services/workflow/workflow-spec-lint.d.ts +13 -0
- package/dist/services/workflow/workflow-spec-lint.js +75 -0
- package/dist/services/workflow/workflow-spec-types.d.ts +100 -0
- package/dist/services/workflow/workflow-spec-types.js +13 -0
- package/dist/services/workflow/workflow-spec-yaml.d.ts +17 -0
- package/dist/services/workflow/workflow-spec-yaml.js +88 -0
- package/dist/services/workflow/workflow-spec.d.ts +36 -0
- package/dist/services/workflow/workflow-spec.js +302 -0
- package/dist/services/workflow/workflow-state-store.d.ts +27 -0
- package/dist/services/workflow/workflow-state-store.js +95 -0
- package/dist/services/workspace/claude-settings-template.d.ts +101 -0
- package/dist/services/workspace/claude-settings-template.js +254 -0
- package/dist/services/workspace/migrate-1-4-1-service.d.ts +44 -0
- package/dist/services/workspace/migrate-1-4-1-service.js +195 -0
- package/dist/services/workspace/migrate-service.d.ts +2 -0
- package/dist/services/workspace/migrate-service.js +613 -0
- package/dist/services/workspace/migrate-types.d.ts +127 -0
- package/dist/services/workspace/migrate-types.js +21 -0
- package/dist/services/workspace/reconcile-service.d.ts +188 -0
- package/dist/services/workspace/reconcile-service.js +683 -0
- package/dist/services/workspace/reconcile-types.d.ts +130 -0
- package/dist/services/workspace/reconcile-types.js +13 -0
- package/dist/services/workspace/sid-naming-guard.d.ts +17 -0
- package/dist/services/workspace/sid-naming-guard.js +34 -0
- package/dist/services/workspace/templates/project-scan/audit-output-schema.md +100 -0
- package/dist/services/workspace/templates/project-scan/business-knowledge.md +44 -0
- package/dist/services/workspace/templates/project-scan/index.d.ts +34 -0
- package/dist/services/workspace/templates/project-scan/index.js +60 -0
- package/dist/services/workspace/templates/project-scan/perf-template.md +109 -0
- package/dist/services/workspace/templates/project-scan/security-template.md +99 -0
- package/dist/services/workspace/workspace-claude-settings-materializer.d.ts +45 -0
- package/dist/services/workspace/workspace-claude-settings-materializer.js +194 -0
- package/dist/services/workspace/workspace-clean-service.d.ts +28 -0
- package/dist/services/workspace/workspace-clean-service.js +46 -0
- package/dist/services/workspace/workspace-service.d.ts +177 -0
- package/dist/services/workspace/workspace-service.js +432 -0
- package/dist/services/workspace/workspace-state-service.d.ts +7 -0
- package/dist/services/workspace/workspace-state-service.js +43 -0
- package/dist/services/worktree/worktree-lease.d.ts +170 -0
- package/dist/services/worktree/worktree-lease.js +242 -0
- package/dist/shared/format-md-compact.d.ts +32 -0
- package/dist/shared/format-md-compact.js +297 -0
- package/dist/shared/frontmatter.d.ts +6 -0
- package/dist/shared/frontmatter.js +165 -0
- package/dist/shared/fs-utils.d.ts +4 -0
- package/dist/shared/fs-utils.js +16 -0
- package/dist/shared/incrementing-number.d.ts +23 -0
- package/dist/shared/incrementing-number.js +68 -0
- package/dist/shared/json-schema-mini.d.ts +10 -0
- package/dist/shared/json-schema-mini.js +113 -0
- package/dist/shared/path-safety.d.ts +21 -0
- package/dist/shared/path-safety.js +54 -0
- package/dist/shared/path-utils.d.ts +13 -0
- package/dist/shared/path-utils.js +56 -0
- package/dist/shared/planner-response.d.ts +21 -0
- package/dist/shared/planner-response.js +26 -0
- package/dist/shared/platform.d.ts +6 -0
- package/dist/shared/platform.js +11 -0
- package/dist/shared/process.d.ts +5 -0
- package/dist/shared/process.js +12 -0
- package/dist/shared/stale-policy.d.ts +67 -0
- package/dist/shared/stale-policy.js +85 -0
- package/dist/skills/peaks-maker/index.d.ts +5 -0
- package/dist/skills/peaks-maker/index.js +32 -0
- package/package.json +51 -54
- package/scripts/clean-dist.mjs +31 -1
- package/scripts/copy-templates.mjs +17 -1
- package/scripts/sync-version.mjs +53 -2
- package/skills/bee/peaks-perf-audit/SKILL.md +17 -0
- package/skills/bee/peaks-prd/SKILL.md +16 -0
- package/skills/bee/peaks-prd/test-prompts.json +12 -0
- package/skills/bee/peaks-qa/SKILL.md +16 -1
- package/skills/bee/peaks-qa/references/qa-sub-agent-dispatch.md +22 -0
- package/skills/bee/peaks-qa/test-prompts.json +12 -0
- package/skills/bee/peaks-rd/SKILL.md +29 -20
- package/skills/bee/peaks-rd/references/rd-sub-agent-dispatch.md +39 -0
- package/skills/bee/peaks-rd/test-prompts.json +12 -0
- package/skills/bee/peaks-reviewer/SKILL.md +17 -0
- package/skills/bee/peaks-sc/SKILL.md +16 -0
- package/skills/bee/peaks-security-audit/SKILL.md +17 -0
- package/skills/bee/peaks-txt/SKILL.md +16 -0
- package/skills/bee/peaks-txt/test-prompts.json +12 -0
- package/skills/bee/peaks-ui/SKILL.md +49 -43
- package/skills/bee/peaks-ui/test-prompts.json +12 -0
- package/skills/peaks-code/SKILL.md +54 -109
- package/skills/peaks-code/references/boundaries.md +15 -1
- package/skills/peaks-code/references/cron-scheduler-deployment.md +313 -0
- package/skills/peaks-code/references/external-skill-invocation.md +27 -0
- package/skills/peaks-code/references/lease-dashboard.html +224 -0
- package/skills/peaks-code/references/lease-stats.sample.json +26 -0
- package/skills/peaks-code/references/peaks-worktree-l2-enforcers.md +208 -0
- package/skills/peaks-code/references/periodic-checkpoint.md +4 -4
- package/skills/peaks-code/references/runbook.md +63 -1
- package/skills/peaks-code/references/startup-sequence.md +110 -0
- package/skills/peaks-code/references/step-0-8-gate.md +1 -1
- package/skills/peaks-code/references/sub-agent-dispatch.md +92 -1
- package/skills/peaks-code/references/worktree-governance.md +123 -0
- package/skills/peaks-code/test-prompts.json +12 -0
- package/skills/peaks-doctor/SKILL.md +1 -1
- package/skills/peaks-ide/SKILL.md +1 -1
- package/skills/peaks-solo/SKILL.md +21 -0
- package/skills/peaks-solo/references/triage-decision-table.md +6 -0
- package/skills/peaks-sop/test-prompts.json +17 -0
- package/examples/video-demo/README.md +0 -142
- package/examples/video-demo/out/en-closing-960.png +0 -0
- package/examples/video-demo/out/zh-closing-960.png +0 -0
- package/examples/video-demo/preview/peaks-loop-demo-en.mp4 +0 -0
- package/examples/video-demo/preview/peaks-loop-demo.mp4 +0 -0
|
@@ -0,0 +1,624 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { homedir } from 'node:os';
|
|
3
|
+
import { resolve } from 'node:path';
|
|
4
|
+
import { assertSafeSettingsFile } from '../ide/shared/safe-path.js';
|
|
5
|
+
import { atomicWriteJson, readJsonObjectFile } from '../ide/shared/atomic-json.js';
|
|
6
|
+
import { getAdapter } from '../ide/ide-registry.js';
|
|
7
|
+
// --- Module-level defaults (claude-code) -----------------------------------
|
|
8
|
+
// These exports remain for backward compat — tests and downstream callers
|
|
9
|
+
// that only care about Claude Code can keep importing them. The per-IDE
|
|
10
|
+
// values are computed lazily inside each public function call.
|
|
11
|
+
/** Sentinel substring identifying a Claude-Code gate-enforce hook entry. */
|
|
12
|
+
export const HOOK_ENFORCE_SENTINEL = 'peaks gate enforce';
|
|
13
|
+
/** Default (claude-code) hook command — kept as a stable export for tests. */
|
|
14
|
+
export const HOOK_ENFORCE_COMMAND = `peaks gate enforce --project "\${CLAUDE_PROJECT_DIR}"`;
|
|
15
|
+
/**
|
|
16
|
+
* Per-IDE hook command + sentinel. The default (Claude Code) uses the
|
|
17
|
+
* legacy `peaks gate enforce` surface; Trae / Cursor / Codex (Cursor-style
|
|
18
|
+
* siblings with `before*` / `pre_*` hook events) use `peaks hook handle`,
|
|
19
|
+
* the new dispatcher. New adapters register by adding a single line here.
|
|
20
|
+
*
|
|
21
|
+
* Slice #12 + #13 (2.4.0) honor the framework's "fill the table" promise
|
|
22
|
+
* — adding a new IDE does NOT require editing this function's control
|
|
23
|
+
* flow, only adding a line to this table.
|
|
24
|
+
*/
|
|
25
|
+
const HOOK_COMMAND_BY_IDE = {
|
|
26
|
+
'claude-code': { command: 'peaks gate enforce', sentinel: 'peaks gate enforce' },
|
|
27
|
+
'trae': { command: 'peaks hook handle', sentinel: 'peaks hook handle' },
|
|
28
|
+
'cursor': { command: 'peaks hook handle', sentinel: 'peaks hook handle' },
|
|
29
|
+
'codex': { command: 'peaks hook handle', sentinel: 'peaks hook handle' },
|
|
30
|
+
'hermes': { command: 'peaks gate enforce', sentinel: 'peaks gate enforce' },
|
|
31
|
+
'openclaw': { command: 'peaks gate enforce', sentinel: 'peaks gate enforce' },
|
|
32
|
+
// qoder / tongyi-lingma are reserved IdeIds (slice #1) but not yet
|
|
33
|
+
// registered. When a slice adds them, add a HOOK_COMMAND_BY_IDE entry
|
|
34
|
+
// here — the function below fail-closes on missing entries.
|
|
35
|
+
};
|
|
36
|
+
function resolveHookSpec(ide) {
|
|
37
|
+
// getAdapter throws on unregistered IDEs — the registry is the source of truth.
|
|
38
|
+
const adapter = getAdapter(ide);
|
|
39
|
+
const spec = HOOK_COMMAND_BY_IDE[ide];
|
|
40
|
+
if (!spec) {
|
|
41
|
+
// Defensive fallback: if an adapter is added to the registry without a
|
|
42
|
+
// HOOK_COMMAND_BY_IDE entry, fail-closed with a clear error instead of
|
|
43
|
+
// silently writing a Claude-shaped entry to a non-Claude settings.json.
|
|
44
|
+
throw new Error(`peaks hooks install: unsupported IDE '${ide}' (no HOOK_COMMAND_BY_IDE entry; add one to hooks-settings-service.ts)`);
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
hookEnforceCommand: `${spec.command} --project "\${${adapter.envVar}}"`,
|
|
48
|
+
hookEnforceSentinel: spec.sentinel,
|
|
49
|
+
hookEnforceMatcher: adapter.toolMatcher,
|
|
50
|
+
hookEnforceEvent: adapter.hookEvent
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
function resolveIde(options) {
|
|
54
|
+
return options?.ide ?? 'claude-code';
|
|
55
|
+
}
|
|
56
|
+
/** Slice #013: read the skipProgress opt-in flag. Slice #014: the underlying install no longer emits the progress-start entry, so the flag is effectively a no-op (kept for API stability). */
|
|
57
|
+
function resolveSkipProgress(options) {
|
|
58
|
+
return options?.skipProgress === true;
|
|
59
|
+
}
|
|
60
|
+
/** Resolve settings root dir for a scope. */
|
|
61
|
+
function resolveSettingsRoot(scope, projectRoot) {
|
|
62
|
+
if (scope === 'global')
|
|
63
|
+
return resolve(homedir());
|
|
64
|
+
if (!projectRoot) {
|
|
65
|
+
throw new Error('Project scope requires a project root');
|
|
66
|
+
}
|
|
67
|
+
return resolve(projectRoot);
|
|
68
|
+
}
|
|
69
|
+
function resolveSettingsPath(scope, ide, projectRoot) {
|
|
70
|
+
const root = resolveSettingsRoot(scope, projectRoot);
|
|
71
|
+
const adapter = getAdapter(ide);
|
|
72
|
+
return adapter.settings.resolveSettingsFile(scope, scope === 'global' ? homedir() : projectRoot);
|
|
73
|
+
}
|
|
74
|
+
function assertSafeSettingsPathCompat(scope, ide, root, settingsPath) {
|
|
75
|
+
const adapter = getAdapter(ide);
|
|
76
|
+
assertSafeSettingsFile(scope, root, adapter.settings.dirName, adapter.settings.settingsFileName);
|
|
77
|
+
// The compat path receives the already-computed settingsPath; double-check
|
|
78
|
+
// that the computed path matches what assertSafeSettingsFile would have
|
|
79
|
+
// produced. This guards against drift between the two resolvers.
|
|
80
|
+
const expected = adapter.settings.resolveSettingsFile(scope, scope === 'global' ? homedir() : root);
|
|
81
|
+
if (expected !== settingsPath) {
|
|
82
|
+
throw new Error(`settings path drift: ${expected} vs ${settingsPath}`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/** Read the existing hook array entries for the adapter's hookEvent (tolerant of any prior shape). */
|
|
86
|
+
function readHookEventEntries(settings, eventKey) {
|
|
87
|
+
const hooks = settings.hooks;
|
|
88
|
+
if (!hooks || typeof hooks !== 'object' || Array.isArray(hooks))
|
|
89
|
+
return [];
|
|
90
|
+
const arr = hooks[eventKey];
|
|
91
|
+
return Array.isArray(arr) ? arr : [];
|
|
92
|
+
}
|
|
93
|
+
/** Read the existing hook array entries from a `settings.hooks` object (already extracted). */
|
|
94
|
+
function readHookEntriesFromHooks(hooks, eventKey) {
|
|
95
|
+
const arr = hooks[eventKey];
|
|
96
|
+
return Array.isArray(arr) ? arr : [];
|
|
97
|
+
}
|
|
98
|
+
/** True when every command handler in the entry matches a known peaks sentinel for the given IDE. */
|
|
99
|
+
function entryIsPeaksManaged(entry, sentinels) {
|
|
100
|
+
const handlers = Array.isArray(entry?.hooks) ? entry.hooks : [];
|
|
101
|
+
if (handlers.length === 0)
|
|
102
|
+
return false;
|
|
103
|
+
return handlers.every((h) => {
|
|
104
|
+
if (typeof h?.command !== 'string')
|
|
105
|
+
return false;
|
|
106
|
+
const cmd = h.command;
|
|
107
|
+
return sentinels.some((sentinel) => cmd.includes(sentinel));
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Slice #014: read the *actually-installed* peaks-managed hook entries
|
|
112
|
+
* from a settings object. Replaces the pre-#014 `listInstalledEntriesForIde`
|
|
113
|
+
* helper in `hooks-commands.ts`, which returned the IDE-EXPECTED list
|
|
114
|
+
* (a hardcoded 2-entry array per adapter) rather than what was on disk.
|
|
115
|
+
* That bug surfaced when slice #013's local cleanup installed
|
|
116
|
+
* `peaks hooks install --no-progress` (gate-enforce only), but the
|
|
117
|
+
* status command still reported `entries: [Bash, Task]` because the
|
|
118
|
+
* helper didn't read the file.
|
|
119
|
+
*
|
|
120
|
+
* The new helper:
|
|
121
|
+
* 1. reads each `hooks.<event>` array,
|
|
122
|
+
* 2. filters to entries that are peaks-managed for the given IDE
|
|
123
|
+
* (matches the legacy sentinel set: gate-enforce + the no-longer-
|
|
124
|
+
* installed progress-start),
|
|
125
|
+
* 3. returns one `{ matcher, sentinel }` row per entry, taking the
|
|
126
|
+
* FIRST matching sentinel per entry (entries have a single command
|
|
127
|
+
* handler in practice, but the loop tolerates multi-handler
|
|
128
|
+
* entries by taking the first match).
|
|
129
|
+
*
|
|
130
|
+
* Pre-#014 settings.json files that have a stale progress-start entry
|
|
131
|
+
* will see it surface in the result. This is intentional: the status
|
|
132
|
+
* command is the user's tool for "what is on disk right now", and
|
|
133
|
+
* surfacing a stale entry is the only way the user can know to run
|
|
134
|
+
* `peaks hooks install` (which now strips it) or `peaks hooks
|
|
135
|
+
* uninstall` (which removes it).
|
|
136
|
+
*/
|
|
137
|
+
export function readInstalledEntriesFromSettings(settings, ide) {
|
|
138
|
+
const sentinels = resolveLegacySentinels(ide);
|
|
139
|
+
// Walk every event key the settings file has, not just the
|
|
140
|
+
// adapter-declared one. A pre-#014 install could have left a
|
|
141
|
+
// progress-start entry on a different event than the gate-enforce
|
|
142
|
+
// entry (Trae: both on beforeToolCall, but a stale install on a
|
|
143
|
+
// future IDE could split them).
|
|
144
|
+
const hooksRoot = settings.hooks;
|
|
145
|
+
if (!hooksRoot || typeof hooksRoot !== 'object' || Array.isArray(hooksRoot))
|
|
146
|
+
return [];
|
|
147
|
+
const result = [];
|
|
148
|
+
for (const eventKey of Object.keys(hooksRoot)) {
|
|
149
|
+
const entries = readHookEntriesFromHooks(hooksRoot, eventKey);
|
|
150
|
+
for (const entry of entries) {
|
|
151
|
+
if (!entryIsPeaksManaged(entry, sentinels))
|
|
152
|
+
continue;
|
|
153
|
+
const matcher = typeof entry.matcher === 'string' ? entry.matcher : '';
|
|
154
|
+
// Find the first matching sentinel inside the entry's command
|
|
155
|
+
// handlers. For each handler, find the first sentinel substring
|
|
156
|
+
// it contains. We pick the first handler's first matching
|
|
157
|
+
// sentinel (entries have a single command in practice).
|
|
158
|
+
const firstHandler = Array.isArray(entry.hooks) ? entry.hooks[0] : undefined;
|
|
159
|
+
const cmd = typeof firstHandler?.command === 'string' ? firstHandler.command : '';
|
|
160
|
+
const sentinel = sentinels.find((s) => cmd.includes(s));
|
|
161
|
+
if (matcher === '' || sentinel === undefined)
|
|
162
|
+
continue;
|
|
163
|
+
result.push({ matcher, sentinel });
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return result;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Compute the per-IDE peaks hook entries to merge into the settings file.
|
|
170
|
+
* Replaces the slice #1 hardcoded `PEAKS_HOOK_ENTRIES` constant; the constant
|
|
171
|
+
* remains exported (computed for claude-code) for backward compat.
|
|
172
|
+
*
|
|
173
|
+
* Slice #013 (`--no-progress` flag): when `skipProgress` is true, the
|
|
174
|
+
* progress-start entry is omitted from the returned list. Install with this
|
|
175
|
+
* flag will (a) NOT emit the progress hook entry, and (b) will idempotently
|
|
176
|
+
* remove any previously-installed progress entry (sentinel-based merge).
|
|
177
|
+
*
|
|
178
|
+
* Slice #014 (refactor — full removal): only the gate-enforce entry is
|
|
179
|
+
* ever emitted. The `skipProgress` parameter is kept for API stability
|
|
180
|
+
* but is a no-op — the returned list is always single-entry. The progress
|
|
181
|
+
* entry's sentinel is included in the legacy sentinel set so uninstall
|
|
182
|
+
* can find + remove any stale progress-start entry that an older
|
|
183
|
+
* `peaks hooks install` may have written before this slice.
|
|
184
|
+
*/
|
|
185
|
+
function resolveHookEntries(ide, _skipProgress = false) {
|
|
186
|
+
const spec = resolveHookSpec(ide);
|
|
187
|
+
return [
|
|
188
|
+
{ sentinel: spec.hookEnforceSentinel, matcher: spec.hookEnforceMatcher, command: spec.hookEnforceCommand, event: spec.hookEnforceEvent }
|
|
189
|
+
];
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Legacy sentinel set used by uninstall + status to find and remove stale
|
|
193
|
+
* progress-start entries written by pre-#014 installs. The progress-start
|
|
194
|
+
* sentinel is the literal substring that older installs emitted.
|
|
195
|
+
*/
|
|
196
|
+
const LEGACY_PROGRESS_START_SENTINEL = 'peaks progress start';
|
|
197
|
+
function resolveLegacySentinels(ide) {
|
|
198
|
+
if (ide === 'trae') {
|
|
199
|
+
return ['peaks hook handle', LEGACY_PROGRESS_START_SENTINEL];
|
|
200
|
+
}
|
|
201
|
+
return [HOOK_ENFORCE_SENTINEL, LEGACY_PROGRESS_START_SENTINEL];
|
|
202
|
+
}
|
|
203
|
+
// --- Slice 2026-07-29-worktree-layer3-deny -----------------------------------
|
|
204
|
+
// Layer 3 of the Worktree Governance 3-layer design (see
|
|
205
|
+
// .peaks/memory/2026-07-29-worktree-layer3-deny.md). The gateway is the IDE
|
|
206
|
+
// native `permissions.deny` list — Claude Code refuses to invoke any Skill
|
|
207
|
+
// listed there BEFORE the LLM even sees it. This is the strongest of the three
|
|
208
|
+
// layers because it bypasses the LLM's tool-call decision entirely: the IDE
|
|
209
|
+
// matches the deny entry against the Skill's namespace and returns a
|
|
210
|
+
// permission error, so the LLM observes "skill not available" rather than
|
|
211
|
+
// "skill denied" — true fail-closed.
|
|
212
|
+
//
|
|
213
|
+
// The list is intentionally tiny: only skills that the superpowers chain
|
|
214
|
+
// *forces* downstream from peaks-loop work paths. We do NOT deny every
|
|
215
|
+
// superpowers skill — only the one whose `description` field or SKILL.md body
|
|
216
|
+
// recommends `git worktree add` / native worktree tools as a step. Anything
|
|
217
|
+
// else stays available as a reference (peaks-code's
|
|
218
|
+
// references/external-skill-invocation.md already describes every other
|
|
219
|
+
// superpowers skill as informational).
|
|
220
|
+
//
|
|
221
|
+
// The IDE expects the deny entry in the form `UseSkill(<skill-id>)`. The
|
|
222
|
+
// prefix is fixed; the skill id is the namespace-qualified name. We render
|
|
223
|
+
// the entries at install time and at uninstall time so the sentinel list is
|
|
224
|
+
// the single source of truth.
|
|
225
|
+
/**
|
|
226
|
+
* The set of Skills whose use is denied at the IDE permissions layer for
|
|
227
|
+
* every `peaks hooks install` call. Each entry is the namespace-qualified
|
|
228
|
+
* skill id; the helper `formatSuperpowersDenyEntry` wraps it in the IDE's
|
|
229
|
+
* `UseSkill(...)` envelope.
|
|
230
|
+
*
|
|
231
|
+
* Slice 2026-07-29-worktree-layer3-deny: the list is empty-aware. To deny a
|
|
232
|
+
* new skill, append its id here and re-run `peaks hooks install`. The list
|
|
233
|
+
* is also the inverse for uninstall: `removeHookInstall` rebuilds the deny
|
|
234
|
+
* list by filtering out anything whose wrapped form matches one of these
|
|
235
|
+
* ids.
|
|
236
|
+
*/
|
|
237
|
+
export const SUPERPOWERS_DENIED_SKILLS = [
|
|
238
|
+
// superpowers:using-git-worktrees is the chain's "ground zero" — its
|
|
239
|
+
// SKILL.md (lines 47-99) literally instructs the LLM to run
|
|
240
|
+
// `git worktree add`. Denying this Skill at the IDE layer prevents the
|
|
241
|
+
// LLM from ever receiving that prompt.
|
|
242
|
+
'superpowers:using-git-worktrees'
|
|
243
|
+
];
|
|
244
|
+
function formatSuperpowersDenyEntry(skillId) {
|
|
245
|
+
return `UseSkill(${skillId})`;
|
|
246
|
+
}
|
|
247
|
+
const SUPERPOWERS_DENY_SENTINELS = new Set(SUPERPOWERS_DENIED_SKILLS.map(formatSuperpowersDenyEntry));
|
|
248
|
+
/**
|
|
249
|
+
* Merge the peaks-managed Skill denylist into the existing settings object.
|
|
250
|
+
* Preserves every other `permissions.deny` entry the user (or another tool)
|
|
251
|
+
* has written so the install is additive, not destructive. The output is
|
|
252
|
+
* always deterministic: the same input always yields the same output,
|
|
253
|
+
* regardless of insertion order in the source array.
|
|
254
|
+
*
|
|
255
|
+
* Defensive behavior:
|
|
256
|
+
* - `settings.permissions` is missing or non-object → install creates a
|
|
257
|
+
* fresh `permissions: { deny: [...our entries] }` object.
|
|
258
|
+
* - `settings.permissions.deny` is missing or non-array → install replaces
|
|
259
|
+
* the field with a fresh array containing only our entries.
|
|
260
|
+
* - Duplicate entries (any source) are collapsed to one via `new Set`.
|
|
261
|
+
*
|
|
262
|
+
* The function is pure: it does not mutate the input. Atomic write happens
|
|
263
|
+
* at the call site (`applyHookInstall`).
|
|
264
|
+
*/
|
|
265
|
+
export function withSuperpowersSkillDenylist(settings) {
|
|
266
|
+
const ourEntries = SUPERPOWERS_DENIED_SKILLS.map(formatSuperpowersDenyEntry);
|
|
267
|
+
const permissions = (settings.permissions && typeof settings.permissions === 'object' && !Array.isArray(settings.permissions))
|
|
268
|
+
? settings.permissions
|
|
269
|
+
: {};
|
|
270
|
+
const existingDeny = Array.isArray(permissions.deny)
|
|
271
|
+
? permissions.deny.filter((d) => typeof d === 'string')
|
|
272
|
+
: [];
|
|
273
|
+
const otherDeny = existingDeny.filter((d) => !SUPERPOWERS_DENY_SENTINELS.has(d));
|
|
274
|
+
const finalDeny = [...new Set([...otherDeny, ...ourEntries])];
|
|
275
|
+
return {
|
|
276
|
+
...settings,
|
|
277
|
+
permissions: { ...permissions, deny: finalDeny }
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Inverse of `withSuperpowersSkillDenylist`. Removes every peaks-managed
|
|
282
|
+
* `UseSkill(...)` entry from the deny list. If the resulting deny list is
|
|
283
|
+
* empty, the `deny` field itself is deleted; if the `permissions` object
|
|
284
|
+
* becomes empty, the `permissions` field itself is deleted. This is the
|
|
285
|
+
* uninstall path: every field we wrote must be removed exactly, and no
|
|
286
|
+
* other field may be touched.
|
|
287
|
+
*
|
|
288
|
+
* Pure (no mutation).
|
|
289
|
+
*/
|
|
290
|
+
export function withoutSuperpowersSkillDenylist(settings) {
|
|
291
|
+
const permissions = (settings.permissions && typeof settings.permissions === 'object' && !Array.isArray(settings.permissions))
|
|
292
|
+
? settings.permissions
|
|
293
|
+
: {};
|
|
294
|
+
if (!Array.isArray(permissions.deny)) {
|
|
295
|
+
return settings;
|
|
296
|
+
}
|
|
297
|
+
const remainingDeny = permissions.deny
|
|
298
|
+
.filter((d) => typeof d === 'string')
|
|
299
|
+
.filter((d) => !SUPERPOWERS_DENY_SENTINELS.has(d));
|
|
300
|
+
const nextPermissions = { ...permissions };
|
|
301
|
+
if (remainingDeny.length > 0) {
|
|
302
|
+
nextPermissions.deny = remainingDeny;
|
|
303
|
+
}
|
|
304
|
+
else {
|
|
305
|
+
delete nextPermissions.deny;
|
|
306
|
+
}
|
|
307
|
+
if (Object.keys(nextPermissions).length === 0) {
|
|
308
|
+
// The whole `permissions` object is empty (no deny, no allow, no other
|
|
309
|
+
// sub-fields). Drop it to avoid leaving an empty object on disk.
|
|
310
|
+
const { permissions: _omit, ...rest } = settings;
|
|
311
|
+
return rest;
|
|
312
|
+
}
|
|
313
|
+
return { ...settings, permissions: nextPermissions };
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Read-only introspection. Returns the deny entries that `peaks hooks
|
|
317
|
+
* install` would write today. Useful for `peaks hooks status` and the
|
|
318
|
+
* dry-run envelope.
|
|
319
|
+
*/
|
|
320
|
+
export function listSuperpowersDenyEntries() {
|
|
321
|
+
return SUPERPOWERS_DENIED_SKILLS.map(formatSuperpowersDenyEntry);
|
|
322
|
+
}
|
|
323
|
+
/** Default (claude-code) peaks-managed hook entries — kept as a stable export for tests. Slice #014: only the gate-enforce entry. */
|
|
324
|
+
export const PEAKS_HOOK_ENTRIES = (() => {
|
|
325
|
+
const spec = resolveHookSpec('claude-code');
|
|
326
|
+
return [
|
|
327
|
+
{ sentinel: spec.hookEnforceSentinel, matcher: spec.hookEnforceMatcher, command: spec.hookEnforceCommand, event: spec.hookEnforceEvent }
|
|
328
|
+
];
|
|
329
|
+
})();
|
|
330
|
+
function isInstalledForIde(settings, ide) {
|
|
331
|
+
const entries = resolveHookEntries(ide);
|
|
332
|
+
const sentinels = entries.map((e) => e.sentinel);
|
|
333
|
+
// Check every distinct event key our entries could be on.
|
|
334
|
+
const eventKeys = new Set(entries.map((e) => e.event));
|
|
335
|
+
for (const eventKey of eventKeys) {
|
|
336
|
+
if (readHookEventEntries(settings, eventKey).some((e) => entryIsPeaksManaged(e, sentinels))) {
|
|
337
|
+
return true;
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
return false;
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Slice #014: detect the "stale progress entry after pre-#014 install"
|
|
344
|
+
* case. The desired shape is gate-enforce-only. If the file currently
|
|
345
|
+
* has a peaks-managed progress-start entry (left behind by a pre-#014
|
|
346
|
+
* install), the install is NOT a no-op — it must strip the stale
|
|
347
|
+
* entry. This helper returns true exactly when the desired shape is
|
|
348
|
+
* fully reflected on disk: gate-enforce present AND no legacy
|
|
349
|
+
* progress-start present.
|
|
350
|
+
*/
|
|
351
|
+
function shapeMatchesDesired(settings, ide) {
|
|
352
|
+
const desiredEntries = resolveHookEntries(ide);
|
|
353
|
+
const desiredSentinels = new Set(desiredEntries.map((e) => e.sentinel));
|
|
354
|
+
const allPeaksSentinels = resolveLegacySentinels(ide);
|
|
355
|
+
const eventKeys = new Set(resolveHookEntries(ide).map((e) => e.event));
|
|
356
|
+
for (const eventKey of eventKeys) {
|
|
357
|
+
const present = readHookEventEntries(settings, eventKey);
|
|
358
|
+
const peaksPresent = present.filter((e) => entryIsPeaksManaged(e, allPeaksSentinels));
|
|
359
|
+
// (a) every peaks-managed entry currently on disk must match the
|
|
360
|
+
// desired sentinel set (no stale entries the caller wants removed).
|
|
361
|
+
for (const entry of peaksPresent) {
|
|
362
|
+
const entrySentinels = (entry.hooks ?? []).map((h) => allPeaksSentinels.find((s) => String(h.command ?? '').includes(s))).filter((s) => Boolean(s));
|
|
363
|
+
if (entrySentinels.some((s) => !desiredSentinels.has(s))) {
|
|
364
|
+
return false;
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
// (b) every desired entry must be on disk.
|
|
368
|
+
for (const sentinel of desiredSentinels) {
|
|
369
|
+
const has = peaksPresent.some((entry) => (entry.hooks ?? []).some((h) => String(h.command ?? '').includes(sentinel)));
|
|
370
|
+
if (!has)
|
|
371
|
+
return false;
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
return true;
|
|
375
|
+
}
|
|
376
|
+
export function planHookInstall(scope, projectRoot, options) {
|
|
377
|
+
const ide = resolveIde(options);
|
|
378
|
+
const _skipProgress = resolveSkipProgress(options);
|
|
379
|
+
const root = resolveSettingsRoot(scope, projectRoot);
|
|
380
|
+
const settingsPath = resolveSettingsPath(scope, ide, projectRoot);
|
|
381
|
+
assertSafeSettingsPathCompat(scope, ide, root, settingsPath);
|
|
382
|
+
const exists = existsSync(settingsPath);
|
|
383
|
+
const settings = exists ? readJsonObjectFile(settingsPath) : {};
|
|
384
|
+
const spec = resolveHookSpec(ide);
|
|
385
|
+
return {
|
|
386
|
+
scope,
|
|
387
|
+
settingsPath,
|
|
388
|
+
exists,
|
|
389
|
+
alreadyInstalled: isInstalledForIde(settings, ide),
|
|
390
|
+
desiredCommand: spec.hookEnforceCommand,
|
|
391
|
+
sentinel: spec.hookEnforceSentinel,
|
|
392
|
+
matcher: spec.hookEnforceMatcher
|
|
393
|
+
};
|
|
394
|
+
}
|
|
395
|
+
/** Merge all peaks-managed hook entries into settings, preserving all other keys and hooks. */
|
|
396
|
+
function withHooksInstalledForIde(settings, ide, _skipProgress = false) {
|
|
397
|
+
const existingHooks = (settings.hooks && typeof settings.hooks === 'object' && !Array.isArray(settings.hooks))
|
|
398
|
+
? settings.hooks
|
|
399
|
+
: {};
|
|
400
|
+
// Per-IDE entries may map to different events (Trae: gate-enforce on
|
|
401
|
+
// beforeToolCall; Claude: gate-enforce on PreToolUse). Group by event
|
|
402
|
+
// so each event array is independently merged.
|
|
403
|
+
const ourByEvent = new Map();
|
|
404
|
+
for (const spec of resolveHookEntries(ide)) {
|
|
405
|
+
const list = ourByEvent.get(spec.event) ?? [];
|
|
406
|
+
list.push(spec);
|
|
407
|
+
ourByEvent.set(spec.event, list);
|
|
408
|
+
}
|
|
409
|
+
// Slice #014: the legacy sentinel set includes the progress-start
|
|
410
|
+
// sentinel so a pre-#014 install's stale progress-start entry is
|
|
411
|
+
// stripped by the filter (the file converges on the new
|
|
412
|
+
// gate-enforce-only shape, idempotently). The desired set (passed
|
|
413
|
+
// in below) only contains the gate-enforce sentinel.
|
|
414
|
+
const allSentinels = resolveLegacySentinels(ide);
|
|
415
|
+
const nextHooks = { ...existingHooks };
|
|
416
|
+
for (const [eventKey, ourEntries] of ourByEvent) {
|
|
417
|
+
const existing = readHookEntriesFromHooks(nextHooks, eventKey);
|
|
418
|
+
const nonPeaks = existing.filter((entry) => !entryIsPeaksManaged(entry, allSentinels));
|
|
419
|
+
const ourFormatted = ourEntries.map((spec) => ({
|
|
420
|
+
matcher: spec.matcher,
|
|
421
|
+
hooks: [{ type: 'command', command: spec.command }]
|
|
422
|
+
}));
|
|
423
|
+
const merged = [...nonPeaks, ...ourFormatted];
|
|
424
|
+
if (merged.length > 0) {
|
|
425
|
+
nextHooks[eventKey] = merged;
|
|
426
|
+
}
|
|
427
|
+
else {
|
|
428
|
+
delete nextHooks[eventKey];
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
return {
|
|
432
|
+
...settings,
|
|
433
|
+
hooks: nextHooks
|
|
434
|
+
};
|
|
435
|
+
}
|
|
436
|
+
export function applyHookInstall(scope, projectRoot, options) {
|
|
437
|
+
const ide = resolveIde(options);
|
|
438
|
+
const _skipProgress = resolveSkipProgress(options);
|
|
439
|
+
const root = resolveSettingsRoot(scope, projectRoot);
|
|
440
|
+
const settingsPath = resolveSettingsPath(scope, ide, projectRoot);
|
|
441
|
+
assertSafeSettingsPathCompat(scope, ide, root, settingsPath);
|
|
442
|
+
const exists = existsSync(settingsPath);
|
|
443
|
+
const settings = exists ? readJsonObjectFile(settingsPath) : {};
|
|
444
|
+
const spec = resolveHookSpec(ide);
|
|
445
|
+
// Slice #014: `alreadyInstalled` reflects the FULL desired shape
|
|
446
|
+
// (gate-enforce-only + no stale progress-start entry). Pre-#014
|
|
447
|
+
// installs that left a progress-start entry behind will be treated
|
|
448
|
+
// as not-yet-installed, so the merge strips the stale entry on the
|
|
449
|
+
// next install call. This is the only path that converges the file
|
|
450
|
+
// on the new shape; pure presence-checks are insufficient.
|
|
451
|
+
const alreadyInstalled = shapeMatchesDesired(settings, ide);
|
|
452
|
+
const baseResult = {
|
|
453
|
+
scope,
|
|
454
|
+
settingsPath,
|
|
455
|
+
exists,
|
|
456
|
+
alreadyInstalled,
|
|
457
|
+
desiredCommand: spec.hookEnforceCommand,
|
|
458
|
+
sentinel: spec.hookEnforceSentinel,
|
|
459
|
+
matcher: spec.hookEnforceMatcher
|
|
460
|
+
};
|
|
461
|
+
if (baseResult.alreadyInstalled) {
|
|
462
|
+
return { ...baseResult, applied: false };
|
|
463
|
+
}
|
|
464
|
+
// Slice 2026-07-29-worktree-layer3-deny: Layer 3 — write the
|
|
465
|
+
// `permissions.deny` block alongside the gate hook in a single atomic
|
|
466
|
+
// write so the two halves of the install are always co-located. The
|
|
467
|
+
// helper is idempotent and additive: any user-written deny entries
|
|
468
|
+
// are preserved.
|
|
469
|
+
//
|
|
470
|
+
// Slice 2026-07-29-worktree-l2-extended Part 29: also apply
|
|
471
|
+
// withTriggeredDenyList. If the existing settings file has a
|
|
472
|
+
// superpowers / git-worktree / podman-run entry (any source),
|
|
473
|
+
// the install appends a defensive `Edit(deny-trigger:<phrase>)`
|
|
474
|
+
// entry. The chain cannot run raw `git worktree add` (or
|
|
475
|
+
// `podman run`) without an explicit `peaks hooks uninstall`
|
|
476
|
+
// first. Both helpers are pure + idempotent.
|
|
477
|
+
const merged = withTriggeredDenyList(withSuperpowersSkillDenylist(withHooksInstalledForIde(settings, ide)));
|
|
478
|
+
atomicWriteJson(settingsPath, merged);
|
|
479
|
+
return { ...baseResult, alreadyInstalled: false, applied: true };
|
|
480
|
+
}
|
|
481
|
+
export function removeHookInstall(scope, projectRoot, options) {
|
|
482
|
+
const ide = resolveIde(options);
|
|
483
|
+
const root = resolveSettingsRoot(scope, projectRoot);
|
|
484
|
+
const settingsPath = resolveSettingsPath(scope, ide, projectRoot);
|
|
485
|
+
assertSafeSettingsPathCompat(scope, ide, root, settingsPath);
|
|
486
|
+
if (!existsSync(settingsPath)) {
|
|
487
|
+
return { scope, settingsPath, removed: false };
|
|
488
|
+
}
|
|
489
|
+
const settings = readJsonObjectFile(settingsPath);
|
|
490
|
+
const existingHooks = settings.hooks ?? {};
|
|
491
|
+
// Slice #014: uninstall must remove the gate-enforce entry AND any
|
|
492
|
+
// legacy progress-start entry that a pre-#014 install left behind.
|
|
493
|
+
// The legacy sentinel set covers both shapes so the uninstall
|
|
494
|
+
// converges the file on "no peaks-managed entries", regardless of
|
|
495
|
+
// what shape the file was in when the user ran uninstall.
|
|
496
|
+
const sentinels = resolveLegacySentinels(ide);
|
|
497
|
+
const eventKeys = new Set(resolveHookEntries(ide).map((e) => e.event));
|
|
498
|
+
let removedAny = false;
|
|
499
|
+
const nextHooks = { ...existingHooks };
|
|
500
|
+
for (const eventKey of eventKeys) {
|
|
501
|
+
const entries = readHookEntriesFromHooks(nextHooks, eventKey);
|
|
502
|
+
const kept = entries.filter((entry) => !entryIsPeaksManaged(entry, sentinels));
|
|
503
|
+
if (kept.length !== entries.length)
|
|
504
|
+
removedAny = true;
|
|
505
|
+
if (kept.length > 0) {
|
|
506
|
+
nextHooks[eventKey] = kept;
|
|
507
|
+
}
|
|
508
|
+
else {
|
|
509
|
+
delete nextHooks[eventKey];
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
const nextSettings = { ...settings };
|
|
513
|
+
if (Object.keys(nextHooks).length > 0) {
|
|
514
|
+
nextSettings.hooks = nextHooks;
|
|
515
|
+
}
|
|
516
|
+
else {
|
|
517
|
+
delete nextSettings.hooks;
|
|
518
|
+
}
|
|
519
|
+
// Slice 2026-07-29-worktree-layer3-deny: Layer 3 — symmetric uninstall.
|
|
520
|
+
// Strips the peaks-managed `UseSkill(...)` deny entries alongside the
|
|
521
|
+
// hook entries; user-written entries are untouched. The helper self-
|
|
522
|
+
// decomposes an empty `permissions` object.
|
|
523
|
+
//
|
|
524
|
+
// Slice 2026-07-29-worktree-l2-extended Part 29: also strip the
|
|
525
|
+
// trigger-style deny entries via withoutTriggeredDenyList. The
|
|
526
|
+
// chain of helpers is order-independent (each is idempotent and
|
|
527
|
+
// additive over the same set of peaks-managed entries).
|
|
528
|
+
const finalSettings = withoutTriggeredDenyList(withoutSuperpowersSkillDenylist(nextSettings));
|
|
529
|
+
atomicWriteJson(settingsPath, finalSettings);
|
|
530
|
+
return { scope, settingsPath, removed: removedAny };
|
|
531
|
+
}
|
|
532
|
+
export function readHookStatus(scope, projectRoot, options) {
|
|
533
|
+
const ide = resolveIde(options);
|
|
534
|
+
const root = resolveSettingsRoot(scope, projectRoot);
|
|
535
|
+
const settingsPath = resolveSettingsPath(scope, ide, projectRoot);
|
|
536
|
+
assertSafeSettingsPathCompat(scope, ide, root, settingsPath);
|
|
537
|
+
const exists = existsSync(settingsPath);
|
|
538
|
+
const settings = exists ? readJsonObjectFile(settingsPath) : {};
|
|
539
|
+
return { scope, settingsPath, exists, installed: isInstalledForIde(settings, ide) };
|
|
540
|
+
}
|
|
541
|
+
/**
|
|
542
|
+
* Slice 2026-07-29-worktree-l2-extended Part 27 — trigger-style deny.
|
|
543
|
+
*
|
|
544
|
+
* In addition to the static SUPERPOWERS_DENIED_SKILLS list, peaks
|
|
545
|
+
* scans the existing settings file for "trigger phrases" that
|
|
546
|
+
* indicate the user has configured the superpowers chain (or
|
|
547
|
+
* any other auto-run worktree-creating tool) and appends a
|
|
548
|
+
* defensive deny to prevent the chain from running raw
|
|
549
|
+
* `git worktree add` (or `podman run`) directly.
|
|
550
|
+
*
|
|
551
|
+
* Triggers detected (substring match on the existing
|
|
552
|
+
* permissions.deny / permissions.allow list):
|
|
553
|
+
*
|
|
554
|
+
* - `superpowers:using-git-worktrees` — the chain's ground zero
|
|
555
|
+
* - `superpowers:brainstorming` etc. — the upstream skill
|
|
556
|
+
* - `Bash(git worktree add` — the user has explicitly
|
|
557
|
+
* allowed raw git worktree, which our L2 lease-aware gate
|
|
558
|
+
* would also intercept (defense in depth)
|
|
559
|
+
*
|
|
560
|
+
* Append-only — never replaces, never re-orders, never removes
|
|
561
|
+
* existing entries. Idempotent: re-running the install with
|
|
562
|
+
* the same input yields the same output.
|
|
563
|
+
*/
|
|
564
|
+
export const TRIGGER_PHRASES = Object.freeze([
|
|
565
|
+
'superpowers:using-git-worktrees',
|
|
566
|
+
'superpowers:brainstorming',
|
|
567
|
+
'superpowers:writing-plans',
|
|
568
|
+
'superpowers:subagent-driven-development',
|
|
569
|
+
'Bash(git worktree add',
|
|
570
|
+
'Bash(podman run'
|
|
571
|
+
]);
|
|
572
|
+
/**
|
|
573
|
+
* Format a trigger-phrase into a stable `Edit` deny entry. We deny
|
|
574
|
+
* `Edit` (not `Bash`) on the *settings file* itself, so the
|
|
575
|
+
* user cannot edit the trigger away without an explicit
|
|
576
|
+
* `peaks hooks uninstall` first. The skill name (when
|
|
577
|
+
* applicable) is the value after the colon.
|
|
578
|
+
*/
|
|
579
|
+
function formatTriggerDenyEntry(phrase) {
|
|
580
|
+
return `Edit(deny-trigger:${phrase})`;
|
|
581
|
+
}
|
|
582
|
+
export function withTriggeredDenyList(settings) {
|
|
583
|
+
const existingDeny = Array.isArray(settings.permissions?.deny)
|
|
584
|
+
? (settings.permissions.deny
|
|
585
|
+
.filter((d) => typeof d === 'string'))
|
|
586
|
+
: [];
|
|
587
|
+
// Detect triggers in the existing allow + deny lists.
|
|
588
|
+
const existingAllow = Array.isArray(settings.permissions?.allow)
|
|
589
|
+
? (settings.permissions.allow
|
|
590
|
+
.filter((d) => typeof d === 'string'))
|
|
591
|
+
: [];
|
|
592
|
+
const haystack = [...existingDeny, ...existingAllow].join('|');
|
|
593
|
+
const triggered = TRIGGER_PHRASES.filter((p) => haystack.includes(p));
|
|
594
|
+
if (triggered.length === 0)
|
|
595
|
+
return settings;
|
|
596
|
+
const triggeredEntries = triggered.map(formatTriggerDenyEntry);
|
|
597
|
+
const permissions = (settings.permissions && typeof settings.permissions === 'object' && !Array.isArray(settings.permissions))
|
|
598
|
+
? settings.permissions
|
|
599
|
+
: {};
|
|
600
|
+
const otherDeny = existingDeny.filter((d) => !triggeredEntries.includes(d));
|
|
601
|
+
return {
|
|
602
|
+
...settings,
|
|
603
|
+
permissions: { ...permissions, deny: [...new Set([...otherDeny, ...triggeredEntries])] }
|
|
604
|
+
};
|
|
605
|
+
}
|
|
606
|
+
/** Inverse of withTriggeredDenyList: strip every deny-trigger entry. */
|
|
607
|
+
export function withoutTriggeredDenyList(settings) {
|
|
608
|
+
const permissions = (settings.permissions && typeof settings.permissions === 'object' && !Array.isArray(settings.permissions))
|
|
609
|
+
? settings.permissions
|
|
610
|
+
: {};
|
|
611
|
+
const existingDeny = Array.isArray(permissions.deny)
|
|
612
|
+
? permissions.deny.filter((d) => typeof d === 'string')
|
|
613
|
+
: [];
|
|
614
|
+
const kept = existingDeny.filter((d) => !d.startsWith('Edit(deny-trigger:'));
|
|
615
|
+
const next = { ...permissions, deny: kept };
|
|
616
|
+
if (kept.length === 0)
|
|
617
|
+
delete next.deny;
|
|
618
|
+
if (Object.keys(next).length === 0) {
|
|
619
|
+
const out = { ...settings };
|
|
620
|
+
delete out.permissions;
|
|
621
|
+
return out;
|
|
622
|
+
}
|
|
623
|
+
return { ...settings, permissions: next };
|
|
624
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill-conformance audit (Slice #12) — checks every peaks-* SKILL.md
|
|
3
|
+
* against the 5 standards from the L1+L2+L3 redesign §5.4 Slice #12:
|
|
4
|
+
*
|
|
5
|
+
* 1. task-level frontmatter (all 12 skills must declare one)
|
|
6
|
+
* 2. CLI-back 注解 coverage (each skill body must document which
|
|
7
|
+
* `peaks <cmd>` commands it composes; the absence is a SKILL.md
|
|
8
|
+
* anti-pattern — it means the LLM has to discover the CLI
|
|
9
|
+
* primitives by accident)
|
|
10
|
+
* 3. loadStrategy on-demand 标注 (skills should declare when they
|
|
11
|
+
* load — `eager` for always-loaded, `on-demand` for invoked)
|
|
12
|
+
* 4. 800-line cap (Karpathy limit per spec §2.3)
|
|
13
|
+
* 5. outputStyle: peaks-concise-v1 frontmatter (peak-cli display
|
|
14
|
+
* style for the skill's user-visible output)
|
|
15
|
+
*
|
|
16
|
+
* Plus 1 derived check:
|
|
17
|
+
* 6. CLI primitives declared in references/audit/ (Skill must
|
|
18
|
+
* surface every peaks <cmd> it composes in the references/ subdir;
|
|
19
|
+
* this is the "CLI-back 注解 100% 覆盖" check)
|
|
20
|
+
*/
|
|
21
|
+
export type LoadStrategy = 'eager' | 'on-demand';
|
|
22
|
+
export type ConformanceLevel = 'pass' | 'warn' | 'fail';
|
|
23
|
+
export interface ConformanceCheck {
|
|
24
|
+
readonly id: string;
|
|
25
|
+
readonly skill: string;
|
|
26
|
+
readonly level: ConformanceLevel;
|
|
27
|
+
readonly message: string;
|
|
28
|
+
}
|
|
29
|
+
export interface ConformanceReport {
|
|
30
|
+
readonly checked: number;
|
|
31
|
+
readonly passed: number;
|
|
32
|
+
readonly warned: number;
|
|
33
|
+
readonly failed: number;
|
|
34
|
+
readonly checks: readonly ConformanceCheck[];
|
|
35
|
+
readonly summary: string;
|
|
36
|
+
}
|
|
37
|
+
export interface SkillConformanceInput {
|
|
38
|
+
readonly projectRoot: string;
|
|
39
|
+
}
|
|
40
|
+
export declare function auditSkillConformance(input: SkillConformanceInput): ConformanceReport;
|