peaks-loop 4.0.53 → 4.1.0
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 +85 -0
- package/README-en.md +16 -1
- package/README.md +15 -1
- package/config/eslint/.peaks-rules.cjs +158 -13
- package/config/eslint/tsconfig.lint.json +47 -0
- package/dist/cli/cli-envelope.d.ts +114 -0
- package/dist/cli/cli-envelope.js +85 -0
- package/dist/cli/cli-helpers.d.ts +1 -1
- package/dist/cli/cli-helpers.js +8 -4
- package/dist/cli/commands/_cli-error-envelope.js +1 -1
- package/dist/cli/commands/_register.js +85 -38
- package/dist/cli/commands/_super.js +40 -7
- package/dist/cli/commands/adapter-commands-s2a.js +8 -7
- package/dist/cli/commands/adapter-commands.d.ts +2 -2
- package/dist/cli/commands/adapter-commands.js +7 -8
- package/dist/cli/commands/api-diff-commands.js +5 -4
- package/dist/cli/commands/asset-commands.d.ts +2 -2
- package/dist/cli/commands/asset-commands.js +135 -132
- package/dist/cli/commands/audit-commands.d.ts +1 -1
- package/dist/cli/commands/audit-commands.js +75 -32
- package/dist/cli/commands/autonomous-swarm-commands.d.ts +1 -1
- package/dist/cli/commands/autonomous-swarm-commands.js +14 -8
- package/dist/cli/commands/baseline-commands.js +34 -9
- package/dist/cli/commands/bee-commands.d.ts +1 -1
- package/dist/cli/commands/bee-commands.js +18 -21
- package/dist/cli/commands/best-practice-scan-command.js +6 -34
- package/dist/cli/commands/best-practice-scan-helpers.d.ts +12 -0
- package/dist/cli/commands/best-practice-scan-helpers.js +37 -0
- package/dist/cli/commands/capability-commands.d.ts +1 -1
- package/dist/cli/commands/capability-commands.js +14 -4
- package/dist/cli/commands/capability-worker-config-sc-commands.d.ts +1 -1
- package/dist/cli/commands/changeset-commands.js +21 -18
- package/dist/cli/commands/code-gate-command.js +9 -2
- package/dist/cli/commands/code-job-shape-commands-read-job-shape.d.ts +15 -0
- package/dist/cli/commands/code-job-shape-commands-read-job-shape.js +70 -0
- package/dist/cli/commands/code-job-shape-commands.js +21 -45
- package/dist/cli/commands/code-mode-gate-commands.d.ts +15 -1
- package/dist/cli/commands/code-mode-gate-commands.js +19 -199
- package/dist/cli/commands/code-mode-gate-plan-command.d.ts +14 -0
- package/dist/cli/commands/code-mode-gate-plan-command.js +23 -0
- package/dist/cli/commands/code-mode-gate-should-pause-command.d.ts +24 -0
- package/dist/cli/commands/code-mode-gate-should-pause-command.js +137 -0
- package/dist/cli/commands/code-mode-gate-should-pause-envelope.d.ts +59 -0
- package/dist/cli/commands/code-mode-gate-should-pause-envelope.js +144 -0
- package/dist/cli/commands/code-orchestrator-can-do.js +4 -4
- package/dist/cli/commands/code-review-commands.js +18 -3
- package/dist/cli/commands/code-run-command.js +44 -7
- package/dist/cli/commands/code-runtime-commands.d.ts +17 -0
- package/dist/cli/commands/code-runtime-commands.js +105 -73
- package/dist/cli/commands/codegraph-commands.js +175 -11
- package/dist/cli/commands/codegraph-status-command.js +6 -2
- package/dist/cli/commands/compact-command.js +52 -26
- package/dist/cli/commands/complexity-commands.js +6 -7
- package/dist/cli/commands/config-commands.d.ts +1 -1
- package/dist/cli/commands/config-commands.js +33 -9
- package/dist/cli/commands/container-commands.js +39 -15
- package/dist/cli/commands/context-commands.d.ts +1 -1
- package/dist/cli/commands/context-commands.js +40 -13
- package/dist/cli/commands/core/artifacts-command.js +11 -3
- package/dist/cli/commands/core/binding-commands.js +9 -6
- package/dist/cli/commands/core/doctor-command.js +7 -4
- package/dist/cli/commands/core/memory-command.js +81 -22
- package/dist/cli/commands/core/proxy-command.js +3 -1
- package/dist/cli/commands/core/session-command.js +16 -8
- package/dist/cli/commands/core/skill-command.js +31 -16
- package/dist/cli/commands/core/standards-command.js +55 -13
- package/dist/cli/commands/cron-commands-actions.d.ts +43 -0
- package/dist/cli/commands/cron-commands-actions.js +128 -0
- package/dist/cli/commands/cron-commands-schedule.d.ts +86 -0
- package/dist/cli/commands/cron-commands-schedule.js +151 -0
- package/dist/cli/commands/cron-commands.d.ts +35 -32
- package/dist/cli/commands/cron-commands.js +167 -211
- package/dist/cli/commands/cron-scheduler-commands.js +40 -20
- package/dist/cli/commands/cron-scheduler-persist.d.ts +110 -0
- package/dist/cli/commands/cron-scheduler-persist.js +171 -0
- package/dist/cli/commands/dashboard-long-run.js +45 -14
- package/dist/cli/commands/dashboard-summary.js +15 -5
- package/dist/cli/commands/dispatch-commands.js +69 -34
- package/dist/cli/commands/dispatch-from-dag.js +9 -10
- package/dist/cli/commands/doc-commands.js +8 -9
- package/dist/cli/commands/doctor/invoke-from-code.js +1 -1
- package/dist/cli/commands/e2e-verify-env.d.ts +19 -0
- package/dist/cli/commands/e2e-verify-env.js +19 -0
- package/dist/cli/commands/e2e-verify.d.ts +3 -14
- package/dist/cli/commands/e2e-verify.js +49 -29
- package/dist/cli/commands/ecc-commands.d.ts +1 -1
- package/dist/cli/commands/ecc-commands.js +8 -17
- package/dist/cli/commands/evidence-commands.js +10 -6
- package/dist/cli/commands/evolution-commands.d.ts +2 -2
- package/dist/cli/commands/evolution-commands.js +109 -115
- package/dist/cli/commands/feedback-commands-helpers.d.ts +22 -0
- package/dist/cli/commands/feedback-commands-helpers.js +33 -0
- package/dist/cli/commands/feedback-commands.js +15 -38
- package/dist/cli/commands/final-review-commands.d.ts +1 -1
- package/dist/cli/commands/final-review-commands.js +24 -22
- package/dist/cli/commands/fixture-commands.d.ts +1 -1
- package/dist/cli/commands/fixture-commands.js +17 -6
- package/dist/cli/commands/fork-commands-sync-verify.d.ts +12 -0
- package/dist/cli/commands/fork-commands-sync-verify.js +72 -0
- package/dist/cli/commands/fork-commands.js +19 -51
- package/dist/cli/commands/fresh-context-commands.js +3 -1
- package/dist/cli/commands/gate-commands-enforce.d.ts +82 -0
- package/dist/cli/commands/gate-commands-enforce.js +210 -0
- package/dist/cli/commands/gate-commands.d.ts +1 -1
- package/dist/cli/commands/gate-commands.js +85 -205
- package/dist/cli/commands/governance-classify-contract-commands.d.ts +1 -1
- package/dist/cli/commands/governance-classify-contract-commands.js +28 -17
- package/dist/cli/commands/heartbeat-commands-action.d.ts +7 -0
- package/dist/cli/commands/heartbeat-commands-action.js +192 -0
- package/dist/cli/commands/heartbeat-commands-validation.d.ts +57 -0
- package/dist/cli/commands/heartbeat-commands-validation.js +120 -0
- package/dist/cli/commands/heartbeat-commands.d.ts +27 -6
- package/dist/cli/commands/heartbeat-commands.js +19 -198
- package/dist/cli/commands/hook-handle.d.ts +1 -1
- package/dist/cli/commands/hook-handle.js +46 -13
- package/dist/cli/commands/hooks-commands.d.ts +1 -1
- package/dist/cli/commands/hooks-commands.js +18 -6
- package/dist/cli/commands/ide-commands.d.ts +1 -1
- package/dist/cli/commands/ide-commands.js +5 -3
- package/dist/cli/commands/impact-commands.js +8 -2
- package/dist/cli/commands/job-add-slice-command.d.ts +43 -0
- package/dist/cli/commands/job-add-slice-command.js +151 -0
- package/dist/cli/commands/job-commands.d.ts +64 -0
- package/dist/cli/commands/job-commands.js +134 -63
- package/dist/cli/commands/lease-metrics-commands-support.d.ts +73 -0
- package/dist/cli/commands/lease-metrics-commands-support.js +67 -0
- package/dist/cli/commands/lease-metrics-commands.d.ts +3 -44
- package/dist/cli/commands/lease-metrics-commands.js +21 -61
- package/dist/cli/commands/lease-stats-commands.d.ts +1 -1
- package/dist/cli/commands/lease-stats-commands.js +9 -6
- package/dist/cli/commands/lint-commands.d.ts +9 -3
- package/dist/cli/commands/lint-commands.js +15 -8
- package/dist/cli/commands/log-commands.d.ts +1 -1
- package/dist/cli/commands/log-commands.js +8 -6
- package/dist/cli/commands/loop-commands.d.ts +1 -1
- package/dist/cli/commands/loop-commands.js +50 -50
- package/dist/cli/commands/loop-eval-commands.d.ts +1 -1
- package/dist/cli/commands/loop-eval-commands.js +101 -30
- package/dist/cli/commands/memory-commands.js +21 -13
- package/dist/cli/commands/migrate-1-4-1-command.js +1 -1
- package/dist/cli/commands/migrate-v2-10-to-v2-11-command.js +2 -2
- package/dist/cli/commands/mut-commands-helpers.d.ts +30 -0
- package/dist/cli/commands/mut-commands-helpers.js +43 -0
- package/dist/cli/commands/mut-commands.js +16 -58
- package/dist/cli/commands/observability-commands-queries.d.ts +37 -0
- package/dist/cli/commands/observability-commands-queries.js +113 -0
- package/dist/cli/commands/observability-commands.d.ts +1 -1
- package/dist/cli/commands/observability-commands.js +7 -92
- package/dist/cli/commands/openspec-commands.d.ts +1 -1
- package/dist/cli/commands/openspec-commands.js +20 -8
- package/dist/cli/commands/outer-cache-commands.js +18 -7
- package/dist/cli/commands/perf-audit-commands.d.ts +1 -1
- package/dist/cli/commands/perf-audit-commands.js +12 -7
- package/dist/cli/commands/perf-commands.d.ts +1 -1
- package/dist/cli/commands/perf-commands.js +5 -5
- package/dist/cli/commands/playwright-commands.d.ts +1 -1
- package/dist/cli/commands/playwright-commands.js +20 -8
- package/dist/cli/commands/polyrepo-commands.js +21 -19
- package/dist/cli/commands/prd-blocks-commands.js +1 -3
- package/dist/cli/commands/prd-commands.d.ts +1 -1
- package/dist/cli/commands/prd-commands.js +21 -2
- package/dist/cli/commands/preferences-commands.js +13 -12
- package/dist/cli/commands/primer-command.js +5 -5
- package/dist/cli/commands/project-commands.d.ts +1 -1
- package/dist/cli/commands/project-commands.js +33 -9
- package/dist/cli/commands/qa-business-review-commands.js +16 -12
- package/dist/cli/commands/qa-commands.d.ts +1 -1
- package/dist/cli/commands/qa-commands.js +3 -5
- package/dist/cli/commands/release-commands.d.ts +3 -1
- package/dist/cli/commands/release-commands.js +33 -22
- package/dist/cli/commands/request-commands.js +47 -30
- package/dist/cli/commands/request-format-helpers.js +1 -1
- package/dist/cli/commands/retrospective-commands.d.ts +18 -11
- package/dist/cli/commands/retrospective-commands.js +24 -173
- package/dist/cli/commands/retrospective-index-command.d.ts +26 -0
- package/dist/cli/commands/retrospective-index-command.js +99 -0
- package/dist/cli/commands/retrospective-project-root.d.ts +9 -0
- package/dist/cli/commands/retrospective-project-root.js +15 -0
- package/dist/cli/commands/retrospective-search-command.d.ts +27 -0
- package/dist/cli/commands/retrospective-search-command.js +97 -0
- package/dist/cli/commands/retrospective-show-command.d.ts +23 -0
- package/dist/cli/commands/retrospective-show-command.js +80 -0
- package/dist/cli/commands/reviewer-commands.d.ts +1 -1
- package/dist/cli/commands/role-commands.js +14 -9
- package/dist/cli/commands/runtime-commands.js +14 -7
- package/dist/cli/commands/sc-commands.d.ts +1 -1
- package/dist/cli/commands/sc-commands.js +39 -6
- package/dist/cli/commands/scan-commands.js +36 -13
- package/dist/cli/commands/security-audit-commands.d.ts +1 -1
- package/dist/cli/commands/security-audit-commands.js +12 -7
- package/dist/cli/commands/sediment-commands.d.ts +2 -2
- package/dist/cli/commands/sediment-commands.js +146 -139
- package/dist/cli/commands/session-24h-mode.js +15 -2
- package/dist/cli/commands/session-checkpoint-command.js +1 -1
- package/dist/cli/commands/session-migrate-skill-name.js +1 -1
- package/dist/cli/commands/shadcn-commands.d.ts +1 -1
- package/dist/cli/commands/shadcn-commands.js +3 -1
- package/dist/cli/commands/share-commands.js +38 -39
- package/dist/cli/commands/skill-conformance-commands.d.ts +1 -1
- package/dist/cli/commands/skill-conformance-commands.js +1 -1
- package/dist/cli/commands/skill-loop-engineering-readiness-commands.js +16 -17
- package/dist/cli/commands/skill-visibility.js +2 -2
- package/dist/cli/commands/slice-commands.d.ts +1 -1
- package/dist/cli/commands/slice-commands.js +36 -12
- package/dist/cli/commands/slice-integrate-commands.js +6 -7
- package/dist/cli/commands/slice-review-commands-helpers.d.ts +26 -0
- package/dist/cli/commands/slice-review-commands-helpers.js +26 -0
- package/dist/cli/commands/slice-review-commands.js +16 -24
- package/dist/cli/commands/smoke-commands-add-path.d.ts +14 -0
- package/dist/cli/commands/smoke-commands-add-path.js +39 -0
- package/dist/cli/commands/smoke-commands-define.d.ts +18 -0
- package/dist/cli/commands/smoke-commands-define.js +97 -0
- package/dist/cli/commands/smoke-commands-run.d.ts +18 -0
- package/dist/cli/commands/smoke-commands-run.js +119 -0
- package/dist/cli/commands/smoke-commands.d.ts +10 -1
- package/dist/cli/commands/smoke-commands.js +17 -179
- package/dist/cli/commands/sop-commands.d.ts +1 -1
- package/dist/cli/commands/sop-commands.js +38 -10
- package/dist/cli/commands/statusline-commands.d.ts +1 -1
- package/dist/cli/commands/statusline-commands.js +21 -10
- package/dist/cli/commands/sub-agent/detached.js +3 -3
- package/dist/cli/commands/sub-agent-dispatch-guard.d.ts +1 -1
- package/dist/cli/commands/sub-agent-shared.d.ts +23 -0
- package/dist/cli/commands/sub-agent-shared.js +40 -1
- package/dist/cli/commands/sub-agent-shutdown-commands.js +17 -9
- package/dist/cli/commands/swarm-commands.d.ts +1 -1
- package/dist/cli/commands/swarm-commands.js +13 -6
- package/dist/cli/commands/tech-commands-helpers.d.ts +37 -0
- package/dist/cli/commands/tech-commands-helpers.js +24 -0
- package/dist/cli/commands/tech-commands.d.ts +2 -29
- package/dist/cli/commands/tech-commands.js +15 -28
- package/dist/cli/commands/test-commands.js +27 -7
- package/dist/cli/commands/upgrade-commands.d.ts +1 -1
- package/dist/cli/commands/user-touchpoint-commands.js +1 -3
- package/dist/cli/commands/verdict-aggregate-command.d.ts +1 -1
- package/dist/cli/commands/verdict-aggregate-command.js +20 -7
- package/dist/cli/commands/vm-commands.js +48 -19
- package/dist/cli/commands/wave-plan-commands.js +5 -2
- package/dist/cli/commands/web-commands.js +14 -4
- package/dist/cli/commands/web-lifecycle-commands.js +5 -3
- package/dist/cli/commands/workflow-commands.d.ts +1 -1
- package/dist/cli/commands/workflow-commands.js +64 -29
- package/dist/cli/commands/workflow-lifecycle-commands.js +19 -17
- package/dist/cli/commands/workflow-plan-commands-actions.d.ts +20 -0
- package/dist/cli/commands/workflow-plan-commands-actions.js +115 -0
- package/dist/cli/commands/workflow-plan-commands-session.d.ts +17 -0
- package/dist/cli/commands/workflow-plan-commands-session.js +59 -0
- package/dist/cli/commands/workflow-plan-commands.d.ts +10 -21
- package/dist/cli/commands/workflow-plan-commands.js +15 -141
- package/dist/cli/commands/workspace/clean-command.js +4 -1
- package/dist/cli/commands/workspace/helpers.js +2 -1
- package/dist/cli/commands/workspace/init-command.js +80 -20
- package/dist/cli/commands/workspace/reconcile-command.js +3 -1
- package/dist/cli/commands/workspace-commands.d.ts +1 -1
- package/dist/cli/commands/workspace-commands.js +1 -1
- package/dist/cli/commands/worktree-auth-commands.d.ts +1 -1
- package/dist/cli/commands/worktree-auth-commands.js +16 -169
- package/dist/cli/commands/worktree-auth-grant-command.d.ts +14 -0
- package/dist/cli/commands/worktree-auth-grant-command.js +118 -0
- package/dist/cli/commands/worktree-auth-manage-commands.d.ts +17 -0
- package/dist/cli/commands/worktree-auth-manage-commands.js +128 -0
- package/dist/cli/commands/worktree-lease-commands.d.ts +1 -1
- package/dist/cli/commands/worktree-lease-commands.js +65 -37
- package/dist/cli/index.js +6 -2
- package/dist/cli/program.js +6 -3
- package/dist/hooks/pre-tool-use-sub-agent.js +1 -6
- package/dist/reporters/bdd-reporter.js +9 -3
- package/dist/services/24h-mode/auto-engage.d.ts +19 -0
- package/dist/services/24h-mode/auto-engage.js +35 -0
- package/dist/services/24h-mode/decider.js +5 -1
- package/dist/services/24h-mode/store.js +4 -2
- package/dist/services/adapter/adapter-registry.js +20 -8
- package/dist/services/adapter/adapter.d.ts +2 -2
- package/dist/services/adapter/auto-adapter.d.ts +2 -2
- package/dist/services/adapter/auto-adapter.js +1 -1
- package/dist/services/adapter/claude-adapter.d.ts +1 -1
- package/dist/services/adapter/claude-adapter.js +8 -8
- package/dist/services/adapter/codex-adapter.d.ts +2 -2
- package/dist/services/adapter/codex-adapter.js +20 -8
- package/dist/services/adapter/copilot-adapter.d.ts +2 -2
- package/dist/services/adapter/copilot-adapter.js +20 -8
- package/dist/services/artifacts/artifact-prerequisites.js +44 -8
- package/dist/services/artifacts/artifact-service.js +3 -1
- package/dist/services/artifacts/artifact-template-bodies.d.ts +12 -0
- package/dist/services/artifacts/artifact-template-bodies.js +165 -0
- package/dist/services/artifacts/artifact-templates.js +26 -168
- package/dist/services/artifacts/request-artifact-service.js +14 -7
- package/dist/services/artifacts/request-artifact-state-helpers.d.ts +3 -2
- package/dist/services/artifacts/request-artifact-state-helpers.js +3 -5
- package/dist/services/artifacts/workspace-artifact-helpers.d.ts +28 -0
- package/dist/services/artifacts/workspace-artifact-helpers.js +54 -0
- package/dist/services/artifacts/workspace-service.d.ts +3 -22
- package/dist/services/artifacts/workspace-service.js +10 -60
- package/dist/services/audit/artifact-writer.js +21 -21
- package/dist/services/audit/audit-goal-service.js +2 -2
- package/dist/services/audit/backing-detector.js +7 -4
- package/dist/services/audit/classifier.js +3 -3
- package/dist/services/audit/decision-writer.js +13 -9
- package/dist/services/audit/enforcer-liveness.js +1 -1
- package/dist/services/audit/enforcers/active-skill-resolver.js +15 -7
- package/dist/services/audit/enforcers/design-draft-confirm.js +4 -4
- package/dist/services/audit/enforcers/lint-audit-regression.js +10 -5
- package/dist/services/audit/enforcers/lint-bee-runtime-contract.js +16 -8
- package/dist/services/audit/enforcers/lint-catalog-governance.js +8 -4
- package/dist/services/audit/enforcers/lint-output-style.js +4 -2
- package/dist/services/audit/enforcers/lint-peaks-code-runtime.js +8 -3
- package/dist/services/audit/enforcers/lint-peaks-skill-runtime.js +8 -3
- package/dist/services/audit/enforcers/lint-peaks-ui-sc-txt-runtime.js +20 -20
- package/dist/services/audit/enforcers/lint-prd-artifact-handoff.js +5 -5
- package/dist/services/audit/enforcers/lint-prd-source-snapshot.d.ts +1 -1
- package/dist/services/audit/enforcers/lint-prd-source-snapshot.js +5 -5
- package/dist/services/audit/enforcers/lint-qa-gateguard-and-runtime.js +10 -10
- package/dist/services/audit/enforcers/lint-rd-handoff-coverage.js +10 -8
- package/dist/services/audit/enforcers/lint-reference-shape.js +50 -18
- package/dist/services/audit/enforcers/lint-skill-presence-mandatory.js +5 -5
- package/dist/services/audit/enforcers/lint-style.js +44 -11
- package/dist/services/audit/enforcers/lint-workflow-shape.js +4 -2
- package/dist/services/audit/enforcers/login-gate.js +2 -6
- package/dist/services/audit/enforcers/mock-placement.js +2 -2
- package/dist/services/audit/enforcers/no-root-pollution.js +38 -9
- package/dist/services/audit/enforcers/pre-rd-scan.js +1 -1
- package/dist/services/audit/enforcers/prototype-fidelity.js +1 -1
- package/dist/services/audit/enforcers/resume-detection.js +5 -4
- package/dist/services/audit/prose-ratio-calculator.js +1 -1
- package/dist/services/audit/red-line-catalog-p2-a-bee-runtime.d.ts +39 -0
- package/dist/services/audit/red-line-catalog-p2-a-bee-runtime.js +205 -0
- package/dist/services/audit/red-line-catalog-p2-a-lint-style.d.ts +52 -0
- package/dist/services/audit/red-line-catalog-p2-a-lint-style.js +205 -0
- package/dist/services/audit/red-line-catalog-p2-a.js +3 -374
- package/dist/services/audit/red-line-catalog-p2-b.js +26 -26
- package/dist/services/audit/red-line-catalog.js +26 -38
- package/dist/services/audit/red-lines-service.js +64 -49
- package/dist/services/audit/scanners/openspec-scanner.js +2 -2
- package/dist/services/audit/scanners/rules-tree-scanner.js +2 -2
- package/dist/services/audit/scanners/skills-tree-scanner.js +2 -2
- package/dist/services/audit/static-service.js +3 -3
- package/dist/services/audit-independent/index.d.ts +2 -2
- package/dist/services/audit-independent/index.js +2 -2
- package/dist/services/audit-independent/perf-audit-service.js +19 -8
- package/dist/services/audit-independent/security-audit-service.js +31 -16
- package/dist/services/autonomous-swarm/autonomous-swarm-service.js +75 -46
- package/dist/services/best-practice/output-formatter.js +7 -1
- package/dist/services/capability-audit-service/cross-check.js +11 -5
- package/dist/services/capability-audit-service/runner.js +15 -7
- package/dist/services/capability-baseline/store.js +16 -4
- package/dist/services/capability-baseline/types.js +15 -3
- package/dist/services/capability-baseline/validator.js +43 -7
- package/dist/services/capability-guard-runner/contracts/J02.js +36 -6
- package/dist/services/capability-guard-runner/contracts/J03.js +20 -11
- package/dist/services/capability-guard-runner/contracts/J04.js +24 -15
- package/dist/services/capability-guard-runner/contracts/J05.js +26 -10
- package/dist/services/capability-guard-runner/contracts/J07.js +8 -2
- package/dist/services/capability-guard-runner/contracts/J08.js +22 -5
- package/dist/services/capability-guard-runner/contracts/J10.js +6 -2
- package/dist/services/capability-guard-runner/contracts/J11.d.ts +5 -0
- package/dist/services/capability-guard-runner/contracts/J11.js +14 -2
- package/dist/services/capability-guard-runner/contracts/J12.js +12 -3
- package/dist/services/capability-guard-runner/diff.js +1 -5
- package/dist/services/changeset/changeset-check-service.js +1 -3
- package/dist/services/classify/classify-service.js +20 -8
- package/dist/services/classify/classify-types.js +22 -9
- package/dist/services/code/auto-compact-lifecycle.js +62 -39
- package/dist/services/code/auto-compact-modes.js +2 -2
- package/dist/services/code/auto-compact-orchestrator.js +14 -9
- package/dist/services/code/batch-heartbeat-poller.d.ts +10 -0
- package/dist/services/code/batch-heartbeat-poller.js +17 -1
- package/dist/services/code/compact-event-settle-types.d.ts +80 -0
- package/dist/services/code/compact-event-settle-types.js +20 -0
- package/dist/services/code/compact-event-settle.d.ts +3 -68
- package/dist/services/code/compact-event-settle.js +14 -10
- package/dist/services/code/dag-orchestrator.js +32 -26
- package/dist/services/code/job-shape-decision.js +3 -1
- package/dist/services/code/mode-gate-types.d.ts +57 -0
- package/dist/services/code/mode-gate-types.js +67 -0
- package/dist/services/code/mode-gate.d.ts +4 -58
- package/dist/services/code/mode-gate.js +24 -60
- package/dist/services/code/orchestrator-can-do-advisories.d.ts +30 -0
- package/dist/services/code/orchestrator-can-do-advisories.js +81 -0
- package/dist/services/code/orchestrator-can-do-probes.d.ts +30 -0
- package/dist/services/code/orchestrator-can-do-probes.js +77 -0
- package/dist/services/code/orchestrator-can-do.d.ts +11 -22
- package/dist/services/code/orchestrator-can-do.js +37 -137
- package/dist/services/code/post-compact-checkpoint.d.ts +28 -0
- package/dist/services/code/post-compact-checkpoint.js +57 -0
- package/dist/services/code/post-compact-detector.js +16 -48
- package/dist/services/code/step-08-gate.d.ts +4 -3
- package/dist/services/code/step-08-gate.js +21 -9
- package/dist/services/code-review/ecc-bridge.js +23 -23
- package/dist/services/codegraph/codegraph-autorefresh.js +56 -39
- package/dist/services/codegraph/codegraph-config-repair-writer.d.ts +44 -0
- package/dist/services/codegraph/codegraph-config-repair-writer.js +116 -14
- package/dist/services/codegraph/codegraph-exclude-integrity.js +4 -1
- package/dist/services/codegraph/codegraph-exclude-repair.d.ts +23 -1
- package/dist/services/codegraph/codegraph-exclude-repair.js +7 -2
- package/dist/services/codegraph/codegraph-index-integrity.js +1 -1
- package/dist/services/codegraph/codegraph-preflight-service.d.ts +3 -26
- package/dist/services/codegraph/codegraph-preflight-service.js +16 -37
- package/dist/services/codegraph/codegraph-preflight-structure.d.ts +32 -0
- package/dist/services/codegraph/codegraph-preflight-structure.js +33 -0
- package/dist/services/codegraph/codegraph-process-runner.js +12 -1
- package/dist/services/codegraph/codegraph-service.js +9 -1
- package/dist/services/compact/request-transition-hook.js +2 -1
- package/dist/services/compact/suggest-service.d.ts +3 -61
- package/dist/services/compact/suggest-service.js +9 -12
- package/dist/services/compact/suggest-types.d.ts +76 -0
- package/dist/services/compact/suggest-types.js +10 -0
- package/dist/services/compact-history/compact-history-service.js +2 -2
- package/dist/services/compact-statusline/compact-lifecycle-store.d.ts +2 -32
- package/dist/services/compact-statusline/compact-lifecycle-store.js +7 -12
- package/dist/services/compact-statusline/compact-lifecycle-types.d.ts +32 -0
- package/dist/services/compact-statusline/compact-lifecycle-types.js +8 -0
- package/dist/services/compact-statusline/compact-statusline-cell-table.d.ts +42 -0
- package/dist/services/compact-statusline/compact-statusline-cell-table.js +63 -0
- package/dist/services/compact-statusline/compact-statusline-service.d.ts +4 -21
- package/dist/services/compact-statusline/compact-statusline-service.js +9 -101
- package/dist/services/compact-statusline/compact-statusline-state.d.ts +4 -0
- package/dist/services/compact-statusline/compact-statusline-state.js +50 -0
- package/dist/services/config/config-migration.js +2 -2
- package/dist/services/config/config-restore.js +1 -1
- package/dist/services/config/config-rollback.js +1 -1
- package/dist/services/config/config-safety.js +28 -10
- package/dist/services/config/config-service.js +114 -31
- package/dist/services/config/model-routing.js +5 -2
- package/dist/services/config/proxy-service.js +6 -1
- package/dist/services/config/workspace-state-service.js +17 -5
- package/dist/services/context/auto-compact-dispatcher-input.d.ts +38 -0
- package/dist/services/context/auto-compact-dispatcher-input.js +9 -0
- package/dist/services/context/auto-compact-dispatcher.d.ts +2 -30
- package/dist/services/context/auto-compact-reader-input.d.ts +30 -0
- package/dist/services/context/auto-compact-reader-input.js +8 -0
- package/dist/services/context/auto-compact-reader.d.ts +2 -24
- package/dist/services/context/auto-compact-reader.js +4 -1
- package/dist/services/context/auto-compact-thresholds.d.ts +54 -0
- package/dist/services/context/auto-compact-thresholds.js +19 -0
- package/dist/services/context/auto-compact-types.d.ts +2 -46
- package/dist/services/context/auto-compact-types.js +1 -11
- package/dist/services/context/build-dispatch-system-prompt.js +2 -2
- package/dist/services/context/collector.js +8 -10
- package/dist/services/context/context-audit-hint.js +7 -5
- package/dist/services/context/context-audit-keys.d.ts +15 -0
- package/dist/services/context/context-audit-keys.js +77 -0
- package/dist/services/context/context-audit-limits.d.ts +20 -0
- package/dist/services/context/context-audit-limits.js +31 -0
- package/dist/services/context/context-audit-scan.d.ts +19 -0
- package/dist/services/context/context-audit-scan.js +246 -0
- package/dist/services/context/context-audit-types.d.ts +65 -0
- package/dist/services/context/context-audit-types.js +10 -0
- package/dist/services/context/context-audit.d.ts +13 -59
- package/dist/services/context/context-audit.js +38 -254
- package/dist/services/context/context-builder.js +4 -4
- package/dist/services/context/context-schema.d.ts +1 -1
- package/dist/services/context/context-schema.js +13 -13
- package/dist/services/context/doc-retriever.js +2 -2
- package/dist/services/context/harness-context-witness.js +43 -24
- package/dist/services/context/harness-window-config.js +27 -7
- package/dist/services/context/ide-detect.js +2 -1
- package/dist/services/context/index.d.ts +1 -1
- package/dist/services/context/memory-index-reader.js +3 -9
- package/dist/services/context/memory-preflight-config.js +3 -5
- package/dist/services/context/memory-preflight-service.d.ts +2 -20
- package/dist/services/context/memory-preflight-service.js +37 -68
- package/dist/services/context/memory-preflight-support.d.ts +48 -0
- package/dist/services/context/memory-preflight-support.js +56 -0
- package/dist/services/context/post-compact-reinjection.js +3 -3
- package/dist/services/context/renderer.js +7 -3
- package/dist/services/context/spillover-store.js +3 -1
- package/dist/services/context/summary-view.js +1 -1
- package/dist/services/context/threshold.js +2 -2
- package/dist/services/context/tokenizer.js +3 -3
- package/dist/services/crystallization/crystallization-brief-schema.d.ts +80 -0
- package/dist/services/crystallization/crystallization-brief-schema.js +159 -0
- package/dist/services/crystallization/crystallization-service.d.ts +7 -7
- package/dist/services/crystallization/crystallization-service.js +56 -55
- package/dist/services/crystallization/crystallization-store.d.ts +2 -2
- package/dist/services/crystallization/crystallization-store.js +37 -20
- package/dist/services/crystallization/crystallization-types.d.ts +4 -56
- package/dist/services/crystallization/crystallization-types.js +31 -184
- package/dist/services/crystallization/evidence-brief-builder.d.ts +3 -3
- package/dist/services/crystallization/evidence-brief-builder.js +32 -38
- package/dist/services/crystallization/index.d.ts +4 -4
- package/dist/services/crystallization/index.js +4 -4
- package/dist/services/dashboard/project-dashboard-service.js +7 -1
- package/dist/services/dispatch/await-batch-helpers.d.ts +55 -0
- package/dist/services/dispatch/await-batch-helpers.js +206 -0
- package/dist/services/dispatch/await-batch.d.ts +50 -7
- package/dist/services/dispatch/await-batch.js +97 -194
- package/dist/services/dispatch/batch-counter.js +2 -1
- package/dist/services/dispatch/conflict-replay.js +2 -2
- package/dist/services/dispatch/contract-store.js +5 -2
- package/dist/services/dispatch/dispatch-record-input-types.d.ts +81 -0
- package/dist/services/dispatch/dispatch-record-input-types.js +1 -0
- package/dist/services/dispatch/dispatch-record-types.d.ts +6 -73
- package/dist/services/dispatch/dispatch-record-upgrade-fields.d.ts +72 -0
- package/dist/services/dispatch/dispatch-record-upgrade-fields.js +242 -0
- package/dist/services/dispatch/dispatch-record-upgrade-guards.d.ts +15 -0
- package/dist/services/dispatch/dispatch-record-upgrade-guards.js +55 -0
- package/dist/services/dispatch/dispatch-record-upgrade.d.ts +2 -4
- package/dist/services/dispatch/dispatch-record-upgrade.js +21 -213
- package/dist/services/dispatch/dispatch-record-writer.js +54 -26
- package/dist/services/dispatch/dispatch-sub-agent.js +7 -2
- package/dist/services/dispatch/e2e-fixtures.js +1 -1
- package/dist/services/dispatch/isolation-lease.js +39 -17
- package/dist/services/dispatch/merge-back-runner.js +51 -11
- package/dist/services/dispatch/service-shutdown.js +4 -1
- package/dist/services/dispatch/slice-dag-types.d.ts +116 -0
- package/dist/services/dispatch/slice-dag-types.js +41 -0
- package/dist/services/dispatch/slice-dag.d.ts +3 -109
- package/dist/services/dispatch/slice-dag.js +13 -36
- package/dist/services/dispatch/sub-agent-batch-await.d.ts +47 -0
- package/dist/services/dispatch/sub-agent-batch-await.js +73 -0
- package/dist/services/dispatch/sub-agent-dispatcher-types.d.ts +122 -0
- package/dist/services/dispatch/sub-agent-dispatcher-types.js +12 -0
- package/dist/services/dispatch/sub-agent-dispatcher.d.ts +3 -145
- package/dist/services/dispatch/sub-agent-dispatcher.js +14 -70
- package/dist/services/dispatch/test-tool-detection.js +12 -1
- package/dist/services/doc/doc-generator.js +19 -4
- package/dist/services/doctor/doctor-service/checks/check-id-schema.js +16 -8
- package/dist/services/doctor/doctor-service/checks/codegraph-capability.d.ts +7 -2
- package/dist/services/doctor/doctor-service/checks/codegraph-capability.js +26 -8
- package/dist/services/doctor/doctor-service/checks/codegraph-exclude-integrity.js +16 -8
- package/dist/services/doctor/doctor-service/checks/codegraph-index-integrity.js +16 -8
- package/dist/services/doctor/doctor-service/checks/dist-source-version.js +18 -9
- package/dist/services/doctor/doctor-service/checks/ecc-hooks-schema-drift.js +20 -10
- package/dist/services/doctor/doctor-service/checks/gateguard-conflict.js +18 -9
- package/dist/services/doctor/doctor-service/checks/l3-memory-health.js +25 -11
- package/dist/services/doctor/doctor-service/checks/l3-orphan-sessions.js +12 -6
- package/dist/services/doctor/doctor-service/checks/multi-binary-drift.d.ts +7 -16
- package/dist/services/doctor/doctor-service/checks/multi-binary-drift.js +50 -70
- package/dist/services/doctor/doctor-service/checks/schema-validity.js +5 -1
- package/dist/services/doctor/doctor-service/checks/skill-presence.js +4 -2
- package/dist/services/doctor/doctor-service/checks/statusline-install.js +8 -4
- package/dist/services/doctor/doctor-service/checks/statusline-runtime.js +8 -4
- package/dist/services/doctor/doctor-service/checks/user-config.js +4 -2
- package/dist/services/doctor/doctor-service/checks/workspace-init.js +8 -4
- package/dist/services/doctor/doctor-service/checks/workspace-layout.js +19 -11
- package/dist/services/doctor/doctor-service/index.js +4 -2
- package/dist/services/doctor/doctor-service/multi-binary-drift-helpers.d.ts +40 -0
- package/dist/services/doctor/doctor-service/multi-binary-drift-helpers.js +49 -0
- package/dist/services/doctor/doctor-service/plugin-registry.js +1 -1
- package/dist/services/doctor/doctor-service/probe-types.d.ts +210 -0
- package/dist/services/doctor/doctor-service/probe-types.js +14 -0
- package/dist/services/doctor/doctor-service/types.d.ts +7 -197
- package/dist/services/doctor/index.d.ts +1 -1
- package/dist/services/doctor/index.js +1 -1
- package/dist/services/env/shell-probe.js +8 -2
- package/dist/services/evidence/evidence-body-builders.d.ts +23 -0
- package/dist/services/evidence/evidence-body-builders.js +197 -0
- package/dist/services/evidence/evidence-generator.js +16 -189
- package/dist/services/evolution/evolution-constraints.d.ts +43 -0
- package/dist/services/evolution/evolution-constraints.js +54 -0
- package/dist/services/evolution/evolution-evaluation-schema.d.ts +43 -0
- package/dist/services/evolution/evolution-evaluation-schema.js +43 -0
- package/dist/services/evolution/evolution-service.d.ts +6 -6
- package/dist/services/evolution/evolution-service.js +58 -58
- package/dist/services/evolution/evolution-store.d.ts +2 -2
- package/dist/services/evolution/evolution-store.js +37 -51
- package/dist/services/evolution/evolution-types.d.ts +2 -22
- package/dist/services/evolution/evolution-types.js +41 -101
- package/dist/services/evolution/independent-evaluator-runner.d.ts +3 -3
- package/dist/services/evolution/independent-evaluator-runner.js +20 -22
- package/dist/services/evolution/regression-skeptic-runner.d.ts +2 -2
- package/dist/services/evolution/regression-skeptic-runner.js +18 -18
- package/dist/services/feedback/feedback-promotion-service.js +48 -12
- package/dist/services/feedback/promotion-artifact-evidence.d.ts +2 -16
- package/dist/services/feedback/promotion-artifact-evidence.js +6 -83
- package/dist/services/feedback/promotion-artifact-json-evidence.d.ts +29 -0
- package/dist/services/feedback/promotion-artifact-json-evidence.js +39 -0
- package/dist/services/feedback/promotion-source-comments.d.ts +47 -0
- package/dist/services/feedback/promotion-source-comments.js +61 -0
- package/dist/services/final-review/final-review-contract.d.ts +26 -0
- package/dist/services/final-review/final-review-contract.js +14 -0
- package/dist/services/final-review/final-review-delivery.d.ts +63 -0
- package/dist/services/final-review/final-review-delivery.js +124 -0
- package/dist/services/final-review/final-review-evidence-budget.d.ts +125 -0
- package/dist/services/final-review/final-review-evidence-budget.js +218 -0
- package/dist/services/final-review/final-review-evidence-collect.d.ts +4 -0
- package/dist/services/final-review/final-review-evidence-collect.js +230 -0
- package/dist/services/final-review/final-review-evidence-sources.d.ts +138 -0
- package/dist/services/final-review/final-review-evidence-sources.js +139 -0
- package/dist/services/final-review/final-review-fifth-dim.d.ts +8 -0
- package/dist/services/final-review/final-review-fifth-dim.js +20 -0
- package/dist/services/final-review/final-review-gates.d.ts +119 -0
- package/dist/services/final-review/final-review-gates.js +214 -0
- package/dist/services/final-review/final-review-output-budget.d.ts +88 -0
- package/dist/services/final-review/final-review-output-budget.js +161 -0
- package/dist/services/final-review/final-review-prompt.d.ts +35 -0
- package/dist/services/final-review/final-review-prompt.js +112 -0
- package/dist/services/final-review/final-review-reviewer.d.ts +57 -0
- package/dist/services/final-review/final-review-reviewer.js +95 -0
- package/dist/services/final-review/final-review-runner.d.ts +3 -0
- package/dist/services/final-review/final-review-runner.js +158 -0
- package/dist/services/final-review/final-review-service.d.ts +119 -373
- package/dist/services/final-review/final-review-service.js +48 -1380
- package/dist/services/final-review/final-review-verdicts.d.ts +60 -0
- package/dist/services/final-review/final-review-verdicts.js +91 -0
- package/dist/services/final-review/index.d.ts +3 -3
- package/dist/services/final-review/index.js +2 -2
- package/dist/services/final-review/pre-post-diff.js +32 -29
- package/dist/services/fixture/fixture-capture-service.js +14 -6
- package/dist/services/fresh-context/trigger-scan.js +13 -2
- package/dist/services/fuzzy-matching/fuzzy-match-service.js +1 -1
- package/dist/services/fuzzy-matching/fzf-pick-service.js +6 -1
- package/dist/services/hooks/pre-tool-code-gate.js +2 -2
- package/dist/services/hooks/presence-marker-detector.js +12 -2
- package/dist/services/hooks/worktree-authorization-gate.js +21 -7
- package/dist/services/ide/adapters/claude-code-adapter.js +30 -17
- package/dist/services/ide/adapters/codex-adapter.js +3 -5
- package/dist/services/ide/adapters/cursor-adapter.js +3 -5
- package/dist/services/ide/adapters/hermes-adapter.js +2 -4
- package/dist/services/ide/adapters/openclaw-adapter.js +2 -4
- package/dist/services/ide/adapters/qoder-adapter.js +2 -4
- package/dist/services/ide/adapters/tongyi-lingma-adapter.js +1 -1
- package/dist/services/ide/adapters/trae-adapter.js +3 -5
- package/dist/services/ide/adapters/zcode-adapter.js +8 -7
- package/dist/services/ide/current-model-detector.js +2 -1
- package/dist/services/ide/ide-compact-types.d.ts +153 -0
- package/dist/services/ide/ide-compact-types.js +1 -0
- package/dist/services/ide/ide-registry.js +1 -1
- package/dist/services/ide/ide-types.d.ts +7 -145
- package/dist/services/ide/resource-profile.js +1 -1
- package/dist/services/ide/shared/atomic-json.js +2 -1
- package/dist/services/impact/impact-scan-service.js +12 -5
- package/dist/services/job/job-commit-verification.d.ts +73 -0
- package/dist/services/job/job-commit-verification.js +72 -0
- package/dist/services/job/job-orchestrator.d.ts +42 -0
- package/dist/services/job/job-orchestrator.js +110 -10
- package/dist/services/job/job-progress-store.d.ts +75 -5
- package/dist/services/job/job-progress-store.js +83 -6
- package/dist/services/job/job-rotation.d.ts +1 -1
- package/dist/services/job/job-rotation.js +5 -1
- package/dist/services/job/job-state-store.js +2 -2
- package/dist/services/job/job-types.js +49 -20
- package/dist/services/job/subagent-job-wrapper.d.ts +1 -1
- package/dist/services/job/subagent-job-wrapper.js +5 -1
- package/dist/services/job-snapshot/snapshot.js +2 -2
- package/dist/services/karpathy-cost/karpathy-cost-check-service.js +23 -13
- package/dist/services/legacy/legacy-detector.js +51 -5
- package/dist/services/lint/detect-eslint.js +10 -4
- package/dist/services/lint/detect-ocr-18.js +11 -3
- package/dist/services/lint/eslint-runner-support.d.ts +22 -0
- package/dist/services/lint/eslint-runner-support.js +185 -0
- package/dist/services/lint/eslint-runner-types.d.ts +69 -0
- package/dist/services/lint/eslint-runner-types.js +11 -0
- package/dist/services/lint/eslint-runner.d.ts +4 -56
- package/dist/services/lint/eslint-runner.js +24 -178
- package/dist/services/lint/npx-resolver.js +1 -3
- package/dist/services/lint/ocr-18-acquire.js +15 -4
- package/dist/services/lint/ocr-multilang-adapter.js +4 -5
- package/dist/services/llm/anthropic-runner.js +4 -1
- package/dist/services/log/log-commands-service.js +2 -6
- package/dist/services/log/logger.js +15 -12
- package/dist/services/log/retention.js +3 -2
- package/dist/services/loop/evaluator-dispatcher.js +78 -42
- package/dist/services/loop/loop-bee-relation-service.d.ts +4 -4
- package/dist/services/loop/loop-bee-relation-service.js +36 -40
- package/dist/services/loop/loop-bee-relation-store.d.ts +3 -3
- package/dist/services/loop/loop-bee-relation-store.js +9 -11
- package/dist/services/loop/loop-bee-relation-types.d.ts +1 -1
- package/dist/services/loop/loop-bee-relation-types.js +14 -25
- package/dist/services/loop/loop-release-service.d.ts +2 -2
- package/dist/services/loop/loop-release-service.js +3 -3
- package/dist/services/loop/loop-release-store.d.ts +2 -2
- package/dist/services/loop/loop-release-store.js +4 -6
- package/dist/services/loop/loop-release-types.d.ts +1 -1
- package/dist/services/loop/loop-release-types.js +21 -31
- package/dist/services/loop/monotonic-guard-types.d.ts +51 -0
- package/dist/services/loop/monotonic-guard-types.js +9 -0
- package/dist/services/loop/monotonic-guard.d.ts +2 -43
- package/dist/services/loop/monotonic-runner-types.d.ts +63 -0
- package/dist/services/loop/monotonic-runner-types.js +17 -0
- package/dist/services/loop/monotonic-runner.d.ts +3 -34
- package/dist/services/loop/monotonic-runner.js +10 -20
- package/dist/services/loop/run-driver.js +16 -8
- package/dist/services/loop/spec-service.d.ts +0 -5
- package/dist/services/loop/spec-service.js +49 -9
- package/dist/services/memory/llm-reranker-core.d.ts +108 -0
- package/dist/services/memory/llm-reranker-core.js +105 -0
- package/dist/services/memory/llm-reranker.d.ts +3 -94
- package/dist/services/memory/llm-reranker.js +13 -102
- package/dist/services/memory/memory-ingest-service.d.ts +1 -22
- package/dist/services/memory/memory-ingest-service.js +29 -76
- package/dist/services/memory/memory-ingest-support.d.ts +23 -0
- package/dist/services/memory/memory-ingest-support.js +81 -0
- package/dist/services/memory/memory-rotate-service.js +41 -8
- package/dist/services/memory/memory-search-service.js +8 -4
- package/dist/services/memory/project-context-service.js +26 -5
- package/dist/services/memory/project-memory-service/index/kind-dispatch.d.ts +2 -7
- package/dist/services/memory/project-memory-service/index/kind-dispatch.js +17 -136
- package/dist/services/memory/project-memory-service/index/project-memory-plan-exec.d.ts +7 -0
- package/dist/services/memory/project-memory-service/index/project-memory-plan-exec.js +150 -0
- package/dist/services/memory/project-memory-service/index/ranking.js +6 -3
- package/dist/services/memory/project-memory-service/index/reindex.js +14 -5
- package/dist/services/memory/project-memory-service/index.d.ts +1 -1
- package/dist/services/memory/project-memory-service/index.js +1 -1
- package/dist/services/memory/project-memory-service/memory-kinds.d.ts +31 -0
- package/dist/services/memory/project-memory-service/memory-kinds.js +87 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter-parse.d.ts +24 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter-parse.js +104 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter.d.ts +2 -24
- package/dist/services/memory/project-memory-service/parsers/frontmatter.js +28 -79
- package/dist/services/memory/project-memory-service/parsers/markdown-pure.js +15 -3
- package/dist/services/memory/project-memory-service/store/atomic-write.d.ts +59 -0
- package/dist/services/memory/project-memory-service/store/atomic-write.js +189 -17
- package/dist/services/memory/project-memory-service/store/paths.js +2 -1
- package/dist/services/memory/project-memory-service/types.d.ts +3 -31
- package/dist/services/memory/project-memory-service/types.js +1 -76
- package/dist/services/migrate-skill-name/migrate.js +1 -1
- package/dist/services/migrate-skill-name/schema.js +1 -1
- package/dist/services/mode/mode-enforcement.js +4 -2
- package/dist/services/mode/mode-status-service.d.ts +27 -9
- package/dist/services/mode/mode-status-service.js +64 -12
- package/dist/services/observability/aggregation-helpers.d.ts +22 -0
- package/dist/services/observability/aggregation-helpers.js +65 -0
- package/dist/services/observability/aggregation-types.d.ts +66 -0
- package/dist/services/observability/aggregation-types.js +34 -0
- package/dist/services/observability/aggregation.d.ts +5 -53
- package/dist/services/observability/aggregation.js +17 -80
- package/dist/services/observability/jsonl-store.js +2 -1
- package/dist/services/observability/observability-schema.d.ts +71 -0
- package/dist/services/observability/observability-schema.js +64 -0
- package/dist/services/observability/observability-service.d.ts +3 -56
- package/dist/services/observability/observability-service.js +9 -49
- package/dist/services/openspec/coverage-evidence-reader.js +18 -11
- package/dist/services/openspec/openspec-archive-service.js +31 -24
- package/dist/services/openspec/openspec-init-service.js +8 -2
- package/dist/services/openspec/openspec-propose-from-doctor-service.js +1 -1
- package/dist/services/openspec/openspec-scan-service.js +4 -1
- package/dist/services/openspec/openspec-validate-service.js +26 -5
- package/dist/services/perf/perf-baseline-service.js +2 -6
- package/dist/services/polyrepo/polyrepo-dispatcher.js +2 -1
- package/dist/services/polyrepo/polyrepo-scanner.js +4 -1
- package/dist/services/prd/gate-evidence-derivation.d.ts +160 -0
- package/dist/services/prd/gate-evidence-derivation.js +270 -0
- package/dist/services/prd/handoff-auto-regen.js +13 -1
- package/dist/services/prd/handoff-frontmatter-shape.d.ts +42 -0
- package/dist/services/prd/handoff-frontmatter-shape.js +67 -0
- package/dist/services/prd/handoff-frontmatter.d.ts +1 -1
- package/dist/services/prd/handoff-frontmatter.js +63 -1
- package/dist/services/prd/handoff-gate-evidence.d.ts +95 -1
- package/dist/services/prd/handoff-gate-evidence.js +125 -57
- package/dist/services/prd/handoff-path-resolution.d.ts +37 -0
- package/dist/services/prd/handoff-path-resolution.js +101 -0
- package/dist/services/prd/handoff-service.d.ts +22 -38
- package/dist/services/prd/handoff-service.js +38 -127
- package/dist/services/prd/handoff-types.d.ts +40 -0
- package/dist/services/prd/handoff-types.js +28 -1
- package/dist/services/prd/prd-blocks-checker.js +28 -8
- package/dist/services/prd/project-scan-bootstrap-service.js +1 -5
- package/dist/services/prd/project-scan-reader.d.ts +7 -0
- package/dist/services/prd/project-scan-reader.js +8 -5
- package/dist/services/prd/project-scan-sediment.js +1 -4
- package/dist/services/preferences/preferences-service.js +6 -8
- package/dist/services/preferences/preferences-types.js +4 -4
- package/dist/services/qa/bdd-test-style-contract.d.ts +41 -0
- package/dist/services/qa/bdd-test-style-contract.js +37 -0
- package/dist/services/qa/bdd-test-style-verifier.d.ts +2 -24
- package/dist/services/qa/bdd-test-style-verifier.js +5 -31
- package/dist/services/qa/browser-event-logger.js +2 -1
- package/dist/services/qa/qa-business-review-state.js +20 -5
- package/dist/services/qa/screenshot-archive-service.js +1 -3
- package/dist/services/rd/ast-gate.js +2 -2
- package/dist/services/rd/impl.js +1 -1
- package/dist/services/rd/rd-service.js +117 -43
- package/dist/services/rd/reviewer-dispatch-policy.d.ts +36 -8
- package/dist/services/rd/reviewer-dispatch-policy.js +40 -15
- package/dist/services/rd/standards-diagnostic.js +4 -1
- package/dist/services/rd/strategy.js +10 -3
- package/dist/services/rd/tactical-stage.js +2 -2
- package/dist/services/rd/types.js +9 -7
- package/dist/services/rd-swarm/rd-swarm-service.d.ts +2 -45
- package/dist/services/rd-swarm/rd-swarm-service.js +140 -21
- package/dist/services/rd-swarm/rd-swarm-types.d.ts +54 -0
- package/dist/services/rd-swarm/rd-swarm-types.js +10 -0
- package/dist/services/recommendations/capability-map-service.js +10 -2
- package/dist/services/recommendations/capability-seed-items.js +81 -14
- package/dist/services/recommendations/capability-seed-mappings.js +420 -48
- package/dist/services/recommendations/capability-seed-sources-mcp-server.d.ts +9 -0
- package/dist/services/recommendations/capability-seed-sources-mcp-server.js +233 -0
- package/dist/services/recommendations/capability-seed-sources.js +127 -32
- package/dist/services/release/release-state.d.ts +2 -2
- package/dist/services/release/release-state.js +44 -15
- package/dist/services/release/version-precheck-layer-changeset.d.ts +2 -0
- package/dist/services/release/version-precheck-layer-changeset.js +43 -0
- package/dist/services/release/version-precheck-service.d.ts +11 -36
- package/dist/services/release/version-precheck-service.js +20 -104
- package/dist/services/release/version-precheck-support.d.ts +53 -0
- package/dist/services/release/version-precheck-support.js +64 -0
- package/dist/services/retrospective/retrospective-index.js +17 -3
- package/dist/services/retrospective/retrospective-search-service.js +6 -2
- package/dist/services/retrospective/retrospective-show.js +4 -1
- package/dist/services/reviewer/model-family.js +7 -1
- package/dist/services/reviewer/providers/anthropic.d.ts +5 -0
- package/dist/services/reviewer/providers/anthropic.js +10 -1
- package/dist/services/reviewer/providers/openai.d.ts +5 -0
- package/dist/services/reviewer/providers/openai.js +10 -1
- package/dist/services/reviewer/reviewer-config.js +4 -2
- package/dist/services/reviewer/reviewer-service.d.ts +2 -36
- package/dist/services/reviewer/reviewer-service.js +2 -1
- package/dist/services/reviewer/reviewer-types.d.ts +43 -0
- package/dist/services/reviewer/reviewer-types.js +1 -0
- package/dist/services/role/role-registry.js +9 -1
- package/dist/services/runtime/runtime-detector.js +4 -1
- package/dist/services/runtime/vendors/claude-code.js +14 -6
- package/dist/services/runtime/vendors/codex.js +11 -3
- package/dist/services/runtime/vendors/copilot.js +11 -3
- package/dist/services/sc/sc-service.js +28 -15
- package/dist/services/scan/acceptance-coverage-service.js +4 -1
- package/dist/services/scan/api-diff-openapi-schema-read.d.ts +67 -0
- package/dist/services/scan/api-diff-openapi-schema-read.js +154 -0
- package/dist/services/scan/api-diff-openapi.d.ts +16 -2
- package/dist/services/scan/api-diff-openapi.js +19 -123
- package/dist/services/scan/api-diff-recorded.js +16 -3
- package/dist/services/scan/api-diff-service.js +49 -16
- package/dist/services/scan/api-diff-types.js +12 -3
- package/dist/services/scan/api-surface-helpers.d.ts +13 -0
- package/dist/services/scan/api-surface-helpers.js +31 -0
- package/dist/services/scan/api-surface-service.d.ts +2 -45
- package/dist/services/scan/api-surface-service.js +15 -26
- package/dist/services/scan/api-surface-types.d.ts +54 -0
- package/dist/services/scan/api-surface-types.js +10 -0
- package/dist/services/scan/archetype-detection.d.ts +37 -0
- package/dist/services/scan/archetype-detection.js +142 -0
- package/dist/services/scan/archetype-service.js +36 -125
- package/dist/services/scan/diff-scope-service.js +35 -15
- package/dist/services/scan/existing-system-service.js +16 -99
- package/dist/services/scan/existing-system-visual-tokens.d.ts +20 -0
- package/dist/services/scan/existing-system-visual-tokens.js +123 -0
- package/dist/services/scan/file-size-policy.d.ts +86 -0
- package/dist/services/scan/file-size-policy.js +184 -0
- package/dist/services/scan/file-size-scan.d.ts +30 -3
- package/dist/services/scan/file-size-scan.js +47 -9
- package/dist/services/scan/karpathy-service.js +6 -1
- package/dist/services/scan/orphan-service.js +86 -20
- package/dist/services/scan/type-sanity-service.js +104 -10
- package/dist/services/sediment/dispose-confirm.d.ts +2 -2
- package/dist/services/sediment/dispose-confirm.js +2 -2
- package/dist/services/sediment/json-schema.d.ts +1 -1
- package/dist/services/sediment/json-schema.js +25 -13
- package/dist/services/sediment/manifest-lint.d.ts +1 -12
- package/dist/services/sediment/manifest-lint.js +1 -7
- package/dist/services/sediment/pool-paths.js +13 -9
- package/dist/services/sediment/pool-read.d.ts +1 -1
- package/dist/services/sediment/pool-read.js +42 -18
- package/dist/services/sediment/pool-rebuild-index.d.ts +1 -1
- package/dist/services/sediment/pool-rebuild-index.js +5 -5
- package/dist/services/sediment/pool-write.d.ts +1 -1
- package/dist/services/sediment/pool-write.js +7 -7
- package/dist/services/sediment/promotion-gate.d.ts +1 -1
- package/dist/services/sediment/promotion-gate.js +9 -9
- package/dist/services/sediment/types.d.ts +8 -8
- package/dist/services/session/binding-status-service.js +14 -4
- package/dist/services/session/caller-binding-service.js +2 -1
- package/dist/services/session/getSessionDir.js +4 -1
- package/dist/services/session/index.d.ts +1 -1
- package/dist/services/session/index.js +1 -1
- package/dist/services/session/resolve-caller-id.js +7 -5
- package/dist/services/session/session-binding-bridge.js +26 -25
- package/dist/services/session/session-checkpoint-service.js +1 -1
- package/dist/services/session/session-file-schema.d.ts +70 -0
- package/dist/services/session/session-file-schema.js +68 -0
- package/dist/services/session/session-manager.d.ts +6 -6
- package/dist/services/session/session-manager.js +30 -29
- package/dist/services/session/session-resume-service.js +2 -1
- package/dist/services/share/bundle-format-constants.d.ts +85 -0
- package/dist/services/share/bundle-format-constants.js +100 -0
- package/dist/services/share/bundle-reader.d.ts +3 -3
- package/dist/services/share/bundle-reader.js +75 -68
- package/dist/services/share/bundle-types.d.ts +3 -70
- package/dist/services/share/bundle-types.js +38 -107
- package/dist/services/share/bundle-writer.d.ts +3 -3
- package/dist/services/share/bundle-writer.js +101 -91
- package/dist/services/share/run-state-contract.d.ts +1 -1
- package/dist/services/share/run-state-contract.js +7 -13
- package/dist/services/signal/cancel-handler.js +2 -1
- package/dist/services/skill/resume-detector.js +6 -4
- package/dist/services/skill/skill-scheduler.js +3 -1
- package/dist/services/skill/skill-search-service.js +4 -4
- package/dist/services/skillhub/release-diff.d.ts +2 -2
- package/dist/services/skillhub/release-diff.js +6 -10
- package/dist/services/skillhub/release-export.d.ts +2 -2
- package/dist/services/skillhub/release-export.js +15 -17
- package/dist/services/skillhub/release-gc-blobs.d.ts +2 -2
- package/dist/services/skillhub/release-gc-blobs.js +4 -4
- package/dist/services/skillhub/release-import.d.ts +2 -2
- package/dist/services/skillhub/release-import.js +13 -12
- package/dist/services/skillhub/release-retain.d.ts +3 -3
- package/dist/services/skillhub/release-retain.js +22 -22
- package/dist/services/skillhub/sqlite-store.d.ts +1 -1
- package/dist/services/skillhub/sqlite-store.js +12 -11
- package/dist/services/skillhub/tar-runtime.js +15 -15
- package/dist/services/skillhub/types.d.ts +4 -4
- package/dist/services/skills/hooks-codegate-superpowers.js +16 -7
- package/dist/services/skills/hooks-settings-service.js +61 -19
- package/dist/services/skills/presence-lease-service.js +26 -16
- package/dist/services/skills/presence-lease-types.d.ts +1 -1
- package/dist/services/skills/presence-lease-types.js +1 -1
- package/dist/services/skills/skill-conformance-service.js +40 -8
- package/dist/services/skills/skill-presence-service.js +16 -14
- package/dist/services/skills/skill-runbook-service.js +2 -1
- package/dist/services/skills/skill-statusline-model.d.ts +128 -0
- package/dist/services/skills/skill-statusline-model.js +163 -0
- package/dist/services/skills/skill-statusline-renderer.js +4 -3
- package/dist/services/skills/skill-statusline-service.d.ts +3 -100
- package/dist/services/skills/skill-statusline-service.js +56 -163
- package/dist/services/skills/statusline-palette.js +11 -6
- package/dist/services/skills/statusline-settings-service.js +2 -1
- package/dist/services/skills/sync-service-support.d.ts +65 -0
- package/dist/services/skills/sync-service-support.js +50 -0
- package/dist/services/skills/sync-service.d.ts +3 -66
- package/dist/services/skills/sync-service.js +15 -53
- package/dist/services/slice/calibration-store.js +8 -2
- package/dist/services/slice/cross-pass-edge-merger.d.ts +3 -28
- package/dist/services/slice/cross-pass-edge-merger.js +13 -63
- package/dist/services/slice/cross-pass-edge-static-scan-support.d.ts +69 -0
- package/dist/services/slice/cross-pass-edge-static-scan-support.js +74 -0
- package/dist/services/slice/granularity-decider.js +2 -2
- package/dist/services/slice/slice-archive-service.js +8 -3
- package/dist/services/slice/slice-check-service.js +19 -8
- package/dist/services/slice/slice-decompose-runners.js +61 -23
- package/dist/services/slice/slice-decompose-service.js +4 -4
- package/dist/services/slice/slice-review-state.js +8 -2
- package/dist/services/smoke/smoke-paths-state.js +9 -2
- package/dist/services/sop/gate-enforce-service.js +9 -2
- package/dist/services/sop/sop-advance-service.js +14 -2
- package/dist/services/sop/sop-check-service.js +16 -4
- package/dist/services/sop/sop-paths.js +3 -1
- package/dist/services/sop/sop-registry-service.js +5 -1
- package/dist/services/sop/sop-service.js +29 -7
- package/dist/services/sop/sop-types.js +5 -1
- package/dist/services/standards/ide-aware-standards-service.js +2 -2
- package/dist/services/standards/loop-engineering-lint.js +12 -5
- package/dist/services/standards/loop-engineering-readiness-lint.js +5 -5
- package/dist/services/standards/migrate-claude-rules-service.js +9 -7
- package/dist/services/standards/missing-standards-detector.js +1 -3
- package/dist/services/standards/project-context-support.d.ts +50 -0
- package/dist/services/standards/project-context-support.js +244 -0
- package/dist/services/standards/project-context-types.d.ts +30 -0
- package/dist/services/standards/project-context-types.js +11 -0
- package/dist/services/standards/project-context.d.ts +10 -22
- package/dist/services/standards/project-context.js +27 -214
- package/dist/services/standards/project-standards-service.js +43 -12
- package/dist/services/standards/standards-render-common.d.ts +15 -0
- package/dist/services/standards/standards-render-common.js +49 -0
- package/dist/services/standards/standards-render.d.ts +1 -2
- package/dist/services/standards/standards-render.js +31 -58
- package/dist/services/standards/ui-library-dispatch-block.js +1 -1
- package/dist/services/tech/tech-change-id-service.js +7 -7
- package/dist/services/tech/tech-service.js +73 -26
- package/dist/services/test-cache/test-cache-service.js +8 -3
- package/dist/services/upgrade/1x-detector-service.js +5 -3
- package/dist/services/upgrade/gitignore-migrate-service.js +5 -5
- package/dist/services/upgrade/upgrade-service.js +36 -13
- package/dist/services/verdict/envelope-parsers.d.ts +84 -0
- package/dist/services/verdict/envelope-parsers.js +146 -0
- package/dist/services/verdict/envelopes.d.ts +50 -60
- package/dist/services/verdict/envelopes.js +18 -156
- package/dist/services/verdict/verdict-aggregator.js +27 -3
- package/dist/services/vm/vm-lease.js +15 -3
- package/dist/services/web/aria-node.d.ts +27 -0
- package/dist/services/web/aria-node.js +1 -0
- package/dist/services/web/browser-acquire.js +3 -1
- package/dist/services/web/browser-cache-probe.d.ts +18 -0
- package/dist/services/web/browser-cache-probe.js +110 -0
- package/dist/services/web/browser-session-manager.js +6 -2
- package/dist/services/web/daemon-registry.js +4 -1
- package/dist/services/web/playwright-loader.d.ts +2 -70
- package/dist/services/web/playwright-types.d.ts +75 -0
- package/dist/services/web/playwright-types.js +1 -0
- package/dist/services/web/snapshot-pruner.d.ts +2 -23
- package/dist/services/web/snapshot-pruner.js +8 -3
- package/dist/services/web/web-daemon-service.js +1 -3
- package/dist/services/web/web-install-service.d.ts +3 -32
- package/dist/services/web/web-install-service.js +21 -100
- package/dist/services/web/web-install-types.d.ts +31 -0
- package/dist/services/web/web-install-types.js +13 -0
- package/dist/services/web/web-login-profile.js +7 -5
- package/dist/services/web/web-protocol.js +3 -1
- package/dist/services/workflow/pipeline-verify-gate-support.js +63 -17
- package/dist/services/workflow/pipeline-verify-service.js +17 -6
- package/dist/services/workflow/plan-reader.js +5 -1
- package/dist/services/workflow/plan-refresher.js +20 -6
- package/dist/services/workflow/plan-trigger-detector.js +31 -8
- package/dist/services/workflow/provision-dispatch-node.js +8 -3
- package/dist/services/workflow/workflow-autonomous-resume-helpers.d.ts +3 -1
- package/dist/services/workflow/workflow-autonomous-resume-helpers.js +35 -144
- package/dist/services/workflow/workflow-autonomous-resume-validation.d.ts +16 -0
- package/dist/services/workflow/workflow-autonomous-resume-validation.js +155 -0
- package/dist/services/workflow/workflow-autonomous-service.js +25 -13
- package/dist/services/workflow/workflow-graph-store-helpers.d.ts +51 -0
- package/dist/services/workflow/workflow-graph-store-helpers.js +111 -0
- package/dist/services/workflow/workflow-graph-store.d.ts +2 -35
- package/dist/services/workflow/workflow-graph-store.js +30 -107
- package/dist/services/workflow/workflow-graph-types.js +3 -3
- package/dist/services/workflow/workflow-inflight-probe.js +14 -7
- package/dist/services/workflow/workflow-loader.js +5 -1
- package/dist/services/workflow/workflow-node-lifecycle.js +22 -21
- package/dist/services/workflow/workflow-presence-lifecycle-types.d.ts +50 -0
- package/dist/services/workflow/workflow-presence-lifecycle-types.js +1 -0
- package/dist/services/workflow/workflow-presence-lifecycle.d.ts +2 -42
- package/dist/services/workflow/workflow-presence-lifecycle.js +19 -21
- package/dist/services/workflow/workflow-router-service.js +169 -27
- package/dist/services/workflow/workflow-skip-service.js +14 -4
- package/dist/services/workflow/workflow-spec-builders.d.ts +15 -0
- package/dist/services/workflow/workflow-spec-builders.js +121 -0
- package/dist/services/workflow/workflow-spec.d.ts +7 -6
- package/dist/services/workflow/workflow-spec.js +22 -116
- package/dist/services/workflow/workflow-state-store.js +2 -1
- package/dist/services/workspace/migrate-1-4-1-service.js +80 -14
- package/dist/services/workspace/migrate-service.js +66 -16
- package/dist/services/workspace/reconcile-migrate.js +6 -2
- package/dist/services/workspace/reconcile-service.js +37 -16
- package/dist/services/workspace/workspace-claude-settings-materializer.js +7 -5
- package/dist/services/workspace/workspace-clean-service.js +4 -1
- package/dist/services/workspace/workspace-service.js +11 -3
- package/dist/services/workspace/workspace-state-service.js +1 -1
- package/dist/services/worktree/git-worktree-parser.js +13 -3
- package/dist/services/worktree/host-worktree-reconciler.js +8 -4
- package/dist/services/worktree/long-path-cleanup.js +23 -6
- package/dist/services/worktree/worktree-gc-guard.js +3 -1
- package/dist/services/worktree/worktree-lease-types.d.ts +53 -0
- package/dist/services/worktree/worktree-lease-types.js +10 -0
- package/dist/services/worktree/worktree-lease.d.ts +2 -44
- package/dist/shared/array-guards.d.ts +30 -0
- package/dist/shared/array-guards.js +32 -0
- package/dist/shared/format-md-compact-internals.d.ts +26 -0
- package/dist/shared/format-md-compact-internals.js +125 -0
- package/dist/shared/format-md-compact.js +1 -117
- package/dist/shared/fs-utils.js +2 -1
- package/dist/shared/incrementing-number.js +3 -3
- package/dist/shared/json-parse.d.ts +71 -0
- package/dist/shared/json-parse.js +32 -0
- package/dist/shared/json-schema-mini.js +3 -1
- package/dist/shared/path-safety.js +3 -1
- package/dist/shared/path-utils.d.ts +20 -0
- package/dist/shared/path-utils.js +26 -0
- package/dist/shared/planner-response.js +3 -3
- package/dist/shared/stale-policy.js +1 -3
- package/dist/skills/peaks-maker/index.js +11 -11
- package/package.json +32 -9
- package/scripts/clean-dist.mjs +1 -2
- package/scripts/copy-templates.mjs +2 -4
- package/scripts/install-skills.mjs +305 -125
- package/scripts/sync-version.mjs +25 -8
- package/scripts/watch.mjs +8 -2
- package/skills/bee/peaks-rd/SKILL.md +1 -1
- package/skills/bee/peaks-rd/references/rd-fanout-contracts.md +26 -10
- package/skills/bee/peaks-rd/references/rd-sub-agent-dispatch.md +1 -1
- package/skills/bee/peaks-rd/references/writing-handoff-frontmatter.md +6 -1
- package/skills/peaks-code/SKILL.md +1 -1
- package/skills/peaks-code/references/periodic-checkpoint.md +7 -5
- package/skills/peaks-code/references/startup-sequence.md +1 -1
- package/skills/peaks-final-review/SKILL.md +1 -1
- /package/{docs → contracts}/test-style-contract.md +0 -0
|
@@ -23,19 +23,12 @@ import { getCurrentSessionId } from '../../services/skills/skill-presence-servic
|
|
|
23
23
|
import { generatePromotionStub, isPromotionLayer, listPromotionExempt, listUnpromotedFeedback, missingArtifacts, parseFeedbackMemory, PROMOTION_LAYER_DETAILS, PROMOTION_LAYERS, promoteFeedback, promotionArtifactChecks } from '../../services/feedback/feedback-promotion-service.js';
|
|
24
24
|
import { fail, ok } from 'peaks-loop-shared/result';
|
|
25
25
|
import { addJsonOption, getErrorMessage, printResult } from '../cli-helpers.js';
|
|
26
|
+
import { CHECK_UNPROMOTED_DESCRIPTION, FEEDBACK_PARENT_DESCRIPTION, formatExemptHint, NO_LAYER_NEXT_ACTIONS, PROMOTE_DESCRIPTION, UNPROMOTED_NEXT_ACTIONS } from './feedback-commands-helpers.js';
|
|
26
27
|
export function registerFeedbackCommands(program, io) {
|
|
27
|
-
const feedback = program
|
|
28
|
-
.command('feedback')
|
|
29
|
-
.description('v2.15.0 slice 002 AC-3: promote user-given feedback memories to peaks-loop enforcement layers (A: sop, B: hooks, C: hard-floor).');
|
|
28
|
+
const feedback = program.command('feedback').description(FEEDBACK_PARENT_DESCRIPTION);
|
|
30
29
|
addJsonOption(feedback
|
|
31
30
|
.command('promote <memory-file>')
|
|
32
|
-
.description(
|
|
33
|
-
'Reads `.peaks/memory/<file>.md` and writes the promotion marker (HTML comment + sidecar .promotion.json) + an RD envelope at ' +
|
|
34
|
-
'`.peaks/_runtime/<sid>/rd/feedback-promote-<name>.json`. Layer A additionally generates and registers the SOP manifest the ' +
|
|
35
|
-
'SOP engine reads. Layers B and C live in shared files the command does not own, so it records the requirement and exits ' +
|
|
36
|
-
'non-zero (PROMOTION_NOT_EFFECTIVE) until the registration is present. ' +
|
|
37
|
-
'Without --layer, the CLI lists the 3 layer options as nextActions and exits with code 0 ' +
|
|
38
|
-
'(use --layer <A|B|C> to actually promote, or pass --dry-run to preview the stub).')
|
|
31
|
+
.description(PROMOTE_DESCRIPTION)
|
|
39
32
|
.option('--layer <A|B|C>', `enforcement layer (${PROMOTION_LAYERS.join(' | ')})`)
|
|
40
33
|
.option('--project <path>', 'project root (default: cwd)')
|
|
41
34
|
.option('--promoted-by <id>', 'identity string for the audit envelope (default: peaks-rd fork agent)')
|
|
@@ -43,7 +36,7 @@ export function registerFeedbackCommands(program, io) {
|
|
|
43
36
|
try {
|
|
44
37
|
const projectRoot = opts.project ?? findProjectRoot(process.cwd()) ?? process.cwd();
|
|
45
38
|
const memoryPath = memoryFile.endsWith('.md')
|
|
46
|
-
?
|
|
39
|
+
? memoryFile.startsWith('/') || memoryFile.includes(':')
|
|
47
40
|
? memoryFile
|
|
48
41
|
: resolvePath(projectRoot, memoryFile)
|
|
49
42
|
: resolvePath(projectRoot, '.peaks', 'memory', `${memoryFile}.md`);
|
|
@@ -79,13 +72,7 @@ export function registerFeedbackCommands(program, io) {
|
|
|
79
72
|
name: parsed.name,
|
|
80
73
|
layer: null,
|
|
81
74
|
options: PROMOTION_LAYER_DETAILS
|
|
82
|
-
}, [],
|
|
83
|
-
'No --layer passed. Choose one of A / B / C and re-run.',
|
|
84
|
-
'A: append to sops/*.md (procedural rules)',
|
|
85
|
-
'B: append a matcher to .peaks/.claude-settings-template.json (tool-call interception)',
|
|
86
|
-
'C: extend HardFloorCategory in mode-gate.ts (always pauses regardless of mode)',
|
|
87
|
-
'Or pass --dry-run to preview all three stubs first.'
|
|
88
|
-
]), opts.json);
|
|
75
|
+
}, [], NO_LAYER_NEXT_ACTIONS), opts.json);
|
|
89
76
|
return;
|
|
90
77
|
}
|
|
91
78
|
if (!isPromotionLayer(opts.layer)) {
|
|
@@ -120,21 +107,23 @@ export function registerFeedbackCommands(program, io) {
|
|
|
120
107
|
printResult(io, fail('feedback.promote', 'PROMOTION_NOT_EFFECTIVE', `Promotion recorded but not effective — layer ${envelope.layer} is not backed by its artifact: ${missing.join('; ')}`, envelope, [
|
|
121
108
|
...notes,
|
|
122
109
|
...(envelope.layer === 'C'
|
|
123
|
-
? [
|
|
110
|
+
? [
|
|
111
|
+
'Layer C lives in source code: register the hard-floor category in src/services/code/mode-gate.ts, then re-run promote to record it.'
|
|
112
|
+
]
|
|
124
113
|
: ['Apply the snippet to the file(s) named above, then re-run promote to record it.'])
|
|
125
114
|
]), opts.json);
|
|
126
115
|
process.exitCode = 1;
|
|
127
116
|
}
|
|
128
117
|
catch (err) {
|
|
129
|
-
printResult(io, fail('feedback.promote', 'PROMOTE_FAILED', getErrorMessage(err), { memoryFile }, [
|
|
118
|
+
printResult(io, fail('feedback.promote', 'PROMOTE_FAILED', getErrorMessage(err), { memoryFile }, [
|
|
119
|
+
'Verify the file is a feedback memory and re-run'
|
|
120
|
+
]), opts.json);
|
|
130
121
|
process.exitCode = 1;
|
|
131
122
|
}
|
|
132
123
|
});
|
|
133
124
|
addJsonOption(feedback
|
|
134
125
|
.command('check-unpromoted')
|
|
135
|
-
.description(
|
|
136
|
-
'Default: dry-run (exit 0, just warn). Pass --strict to fail with exit code 1 when any ' +
|
|
137
|
-
'unpromoted feedback is found — this is what `peaks workflow verify-pipeline` Gate H uses.')
|
|
126
|
+
.description(CHECK_UNPROMOTED_DESCRIPTION)
|
|
138
127
|
.requiredOption('--project <path>', 'project root')
|
|
139
128
|
.option('--strict', 'exit non-zero when any unpromoted feedback is found (used by verify-pipeline Gate H)')).action((opts) => {
|
|
140
129
|
try {
|
|
@@ -144,30 +133,18 @@ export function registerFeedbackCommands(program, io) {
|
|
|
144
133
|
if (count === 0) {
|
|
145
134
|
printResult(io, ok('feedback.check-unpromoted', { count: 0, unpromoted: [], exempt }, [], [
|
|
146
135
|
`No unpromoted feedback found in .peaks/memory/.`,
|
|
147
|
-
...(exempt.length === 0
|
|
148
|
-
? []
|
|
149
|
-
: [`${exempt.length} memor${exempt.length === 1 ? 'y' : 'ies'} declare themselves not-to-be-promoted: ${exempt.map((e) => `${e.name} (${e.code})`).join('; ')}.`])
|
|
136
|
+
...(exempt.length === 0 ? [] : [formatExemptHint(exempt)])
|
|
150
137
|
]), opts.json);
|
|
151
138
|
return;
|
|
152
139
|
}
|
|
153
140
|
const message = `${count} feedback memor${count === 1 ? 'y is' : 'ies are'} not yet promoted to an enforcement layer.`;
|
|
154
|
-
const nextActions =
|
|
155
|
-
`Run \`peaks feedback promote <memory-file> --layer <A|B|C>\` for each entry above.`,
|
|
156
|
-
'A = peaks-sop gate, B = peaks-hooks PreToolUse, C = mode-gate hardFloorCategory.',
|
|
157
|
-
'A marker alone does not count: the entry above names the artifact its layer still owes.',
|
|
158
|
-
'See sops/feedback-promotion-sop.md for the SOP and the layer-choice rubric.'
|
|
159
|
-
];
|
|
141
|
+
const nextActions = UNPROMOTED_NEXT_ACTIONS;
|
|
160
142
|
if (opts.strict === true) {
|
|
161
143
|
printResult(io, fail('feedback.check-unpromoted', 'UNPROMOTED_FEEDBACK_FOUND', message, { count, unpromoted, exempt }, nextActions), opts.json);
|
|
162
144
|
process.exitCode = 1;
|
|
163
145
|
return;
|
|
164
146
|
}
|
|
165
|
-
printResult(io, ok('feedback.check-unpromoted', { count, unpromoted, exempt }, [
|
|
166
|
-
message,
|
|
167
|
-
...(exempt.length === 0
|
|
168
|
-
? []
|
|
169
|
-
: [`${exempt.length} memor${exempt.length === 1 ? 'y' : 'ies'} declare themselves not-to-be-promoted: ${exempt.map((e) => `${e.name} (${e.code})`).join('; ')}.`])
|
|
170
|
-
], nextActions), opts.json);
|
|
147
|
+
printResult(io, ok('feedback.check-unpromoted', { count, unpromoted, exempt }, [message, ...(exempt.length === 0 ? [] : [formatExemptHint(exempt)])], nextActions), opts.json);
|
|
171
148
|
}
|
|
172
149
|
catch (err) {
|
|
173
150
|
printResult(io, fail('feedback.check-unpromoted', 'CHECK_FAILED', getErrorMessage(err), { project: opts.project }, ['Verify --project path and re-run']), opts.json);
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
* - `peaks prepare-final-review` — produce a 4-dim review evidence
|
|
25
25
|
* pack for human acceptance
|
|
26
26
|
*/
|
|
27
|
-
import { Command } from 'commander';
|
|
27
|
+
import type { Command } from 'commander';
|
|
28
28
|
import { type ProgramIO } from '../cli-helpers.js';
|
|
29
29
|
import type { FinalReviewOutput } from '../../services/final-review/final-review-types.js';
|
|
30
30
|
export type FinalReviewStatus = 'scaffold-only' | 'review-complete' | 'not-applicable';
|
|
@@ -29,8 +29,8 @@ import { join, resolve } from 'node:path';
|
|
|
29
29
|
import { REQUEST_ID_PATTERN } from '../../services/artifacts/request-artifact-service.js';
|
|
30
30
|
import { addJsonOption, getErrorMessage, printResult } from '../cli-helpers.js';
|
|
31
31
|
import { fail, ok } from 'peaks-loop-shared/result';
|
|
32
|
-
import { createAnthropicRunner, LlmBindingError, LlmRequestError, resolveAnthropicConfig
|
|
33
|
-
import { IncompleteFinalReviewError, prepareFinalReview
|
|
32
|
+
import { createAnthropicRunner, LlmBindingError, LlmRequestError, resolveAnthropicConfig } from '../../services/llm/anthropic-runner.js';
|
|
33
|
+
import { IncompleteFinalReviewError, prepareFinalReview } from '../../services/final-review/final-review-service.js';
|
|
34
34
|
/** Whitelist of supported `--llm-provider` values for `peaks prepare-final-review`. */
|
|
35
35
|
const SUPPORTED_LLM_PROVIDERS = ['anthropic', 'stub'];
|
|
36
36
|
/**
|
|
@@ -58,7 +58,7 @@ function emptyFinalReviewData(rid, sessionId, auditGoalPath, missingEnv) {
|
|
|
58
58
|
auditGoalPath,
|
|
59
59
|
serviceWired: false,
|
|
60
60
|
providerBinding: 'unknown',
|
|
61
|
-
...(missingEnv === undefined ? {} : { missingEnv })
|
|
61
|
+
...(missingEnv === undefined ? {} : { missingEnv })
|
|
62
62
|
};
|
|
63
63
|
}
|
|
64
64
|
function validateProjectRoot(projectArg) {
|
|
@@ -67,7 +67,7 @@ function validateProjectRoot(projectArg) {
|
|
|
67
67
|
return {
|
|
68
68
|
ok: false,
|
|
69
69
|
code: 'PROJECT_NOT_FOUND',
|
|
70
|
-
message: `project path does not exist: ${projectArg}
|
|
70
|
+
message: `project path does not exist: ${projectArg}`
|
|
71
71
|
};
|
|
72
72
|
}
|
|
73
73
|
let stat;
|
|
@@ -81,7 +81,7 @@ function validateProjectRoot(projectArg) {
|
|
|
81
81
|
return {
|
|
82
82
|
ok: false,
|
|
83
83
|
code: 'INVALID_PROJECT',
|
|
84
|
-
message: `project path is not a directory: ${projectArg}
|
|
84
|
+
message: `project path is not a directory: ${projectArg}`
|
|
85
85
|
};
|
|
86
86
|
}
|
|
87
87
|
return { ok: true, projectRoot };
|
|
@@ -96,14 +96,14 @@ function validateSessionId(sessionId) {
|
|
|
96
96
|
return {
|
|
97
97
|
ok: false,
|
|
98
98
|
code: 'MISSING_REQUIRED_FLAG',
|
|
99
|
-
message: '`--session-id` is required and must be a non-empty string'
|
|
99
|
+
message: '`--session-id` is required and must be a non-empty string'
|
|
100
100
|
};
|
|
101
101
|
}
|
|
102
102
|
if (sessionId.includes('..') || sessionId.includes('/') || sessionId.includes('\\')) {
|
|
103
103
|
return {
|
|
104
104
|
ok: false,
|
|
105
105
|
code: 'INVALID_SESSION_ID',
|
|
106
|
-
message: '`--session-id` must not contain path-traversal or path-separator characters (rejected: "..", "/", "\\")'
|
|
106
|
+
message: '`--session-id` must not contain path-traversal or path-separator characters (rejected: "..", "/", "\\")'
|
|
107
107
|
};
|
|
108
108
|
}
|
|
109
109
|
return { ok: true, sessionId };
|
|
@@ -127,7 +127,7 @@ export function registerFinalReviewCommands(program, io) {
|
|
|
127
127
|
const sessionValidation = validateSessionId(options.sessionId);
|
|
128
128
|
if (!sessionValidation.ok) {
|
|
129
129
|
printResult(io, fail('final-review.prepare', sessionValidation.code, sessionValidation.message, emptyFinalReviewData(rid, options.sessionId, ''), [
|
|
130
|
-
'Pass a non-empty `--session-id` whose value is a single segment (no "..", "/", or "\\")'
|
|
130
|
+
'Pass a non-empty `--session-id` whose value is a single segment (no "..", "/", or "\\")'
|
|
131
131
|
]), options.json);
|
|
132
132
|
process.exitCode = 1;
|
|
133
133
|
return;
|
|
@@ -154,7 +154,7 @@ export function registerFinalReviewCommands(program, io) {
|
|
|
154
154
|
if (!existsSync(auditGoalPath)) {
|
|
155
155
|
printResult(io, fail('final-review.prepare', 'AUDIT_GOAL_NOT_FOUND', `audit-goal file not found at expected path: ${auditGoalPath}`, emptyFinalReviewData(rid, sessionValidation.sessionId, auditGoalPath), [
|
|
156
156
|
'Run `peaks audit goal --project <path> --need <text>` first to produce the approved goal JSON.',
|
|
157
|
-
'Confirm `--session-id` matches the session that wrote the goal.'
|
|
157
|
+
'Confirm `--session-id` matches the session that wrote the goal.'
|
|
158
158
|
]), options.json);
|
|
159
159
|
process.exitCode = 1;
|
|
160
160
|
return;
|
|
@@ -165,7 +165,7 @@ export function registerFinalReviewCommands(program, io) {
|
|
|
165
165
|
const provider = options.llmProvider ?? DEFAULT_LLM_PROVIDER;
|
|
166
166
|
if (!isSupportedLlmProvider(provider)) {
|
|
167
167
|
printResult(io, fail('final-review.prepare', 'LLM_PROVIDER_NOT_IMPLEMENTED', `LLM provider "${provider}" is not implemented. Supported providers: ${SUPPORTED_LLM_PROVIDERS.join(', ')}.`, emptyFinalReviewData(rid, sessionValidation.sessionId, auditGoalPath), [
|
|
168
|
-
`Re-run with \`--llm-provider anthropic\` for a real 4-dim review, or \`--llm-provider ${DEFAULT_LLM_PROVIDER}\` for an offline scaffold
|
|
168
|
+
`Re-run with \`--llm-provider anthropic\` for a real 4-dim review, or \`--llm-provider ${DEFAULT_LLM_PROVIDER}\` for an offline scaffold.`
|
|
169
169
|
]), options.json);
|
|
170
170
|
process.exitCode = 1;
|
|
171
171
|
return;
|
|
@@ -183,12 +183,12 @@ export function registerFinalReviewCommands(program, io) {
|
|
|
183
183
|
sessionId: sessionValidation.sessionId,
|
|
184
184
|
auditGoalPath,
|
|
185
185
|
serviceWired: true,
|
|
186
|
-
providerBinding: 'stub'
|
|
186
|
+
providerBinding: 'stub'
|
|
187
187
|
};
|
|
188
188
|
const envelope = ok('final-review.prepare', data, [], [
|
|
189
189
|
'Stub provider: no 4-dim review was performed. This envelope only proves the route is wired and reachable.',
|
|
190
190
|
`Audit-goal file is present at: ${auditGoalPath}`,
|
|
191
|
-
'Re-run with `--llm-provider anthropic` to produce a real review.'
|
|
191
|
+
'Re-run with `--llm-provider anthropic` to produce a real review.'
|
|
192
192
|
]);
|
|
193
193
|
printResult(io, envelope, options.json);
|
|
194
194
|
return;
|
|
@@ -205,7 +205,7 @@ export function registerFinalReviewCommands(program, io) {
|
|
|
205
205
|
projectRoot: projectValidation.projectRoot,
|
|
206
206
|
sessionId: sessionValidation.sessionId,
|
|
207
207
|
llmRunner,
|
|
208
|
-
...(options.base === undefined ? {} : { baseRef: options.base })
|
|
208
|
+
...(options.base === undefined ? {} : { baseRef: options.base })
|
|
209
209
|
});
|
|
210
210
|
const data = {
|
|
211
211
|
status: 'review-complete',
|
|
@@ -215,13 +215,15 @@ export function registerFinalReviewCommands(program, io) {
|
|
|
215
215
|
serviceWired: true,
|
|
216
216
|
providerBinding: 'anthropic-messages-api',
|
|
217
217
|
model: config.model,
|
|
218
|
-
review
|
|
218
|
+
review
|
|
219
219
|
};
|
|
220
|
-
const envelope = ok('final-review.prepare', data, review.allPass
|
|
221
|
-
|
|
222
|
-
|
|
220
|
+
const envelope = ok('final-review.prepare', data, review.allPass
|
|
221
|
+
? []
|
|
222
|
+
: [
|
|
223
|
+
`Dimensions needing human attention: ${review.needsAttention.join(', ') || 'none flagged'}.`
|
|
224
|
+
], [
|
|
223
225
|
`4-dim review produced by anthropic-messages-api (model: ${config.model}).`,
|
|
224
|
-
`allPass: ${String(review.allPass)}
|
|
226
|
+
`allPass: ${String(review.allPass)}.`
|
|
225
227
|
]);
|
|
226
228
|
printResult(io, envelope, options.json);
|
|
227
229
|
}
|
|
@@ -251,19 +253,19 @@ function finalReviewNextActions(code) {
|
|
|
251
253
|
case 'LLM_CREDENTIAL_MISSING':
|
|
252
254
|
return [
|
|
253
255
|
'Export ANTHROPIC_AUTH_TOKEN (or ANTHROPIC_API_KEY) in the environment that launches peaks, then re-run.',
|
|
254
|
-
'For an offline scaffold instead of a review, re-run with `--llm-provider stub` — it performs NO review.'
|
|
256
|
+
'For an offline scaffold instead of a review, re-run with `--llm-provider stub` — it performs NO review.'
|
|
255
257
|
];
|
|
256
258
|
case 'LLM_MODEL_MISSING':
|
|
257
259
|
return [
|
|
258
|
-
'Export ANTHROPIC_MODEL (or CLAUDE_CODE_SUBAGENT_MODEL) in the environment that launches peaks, then re-run.'
|
|
260
|
+
'Export ANTHROPIC_MODEL (or CLAUDE_CODE_SUBAGENT_MODEL) in the environment that launches peaks, then re-run.'
|
|
259
261
|
];
|
|
260
262
|
case 'LLM_REQUEST_FAILED':
|
|
261
263
|
return [
|
|
262
|
-
'Check ANTHROPIC_BASE_URL and network reachability, then re-run — a transport failure produces no review.'
|
|
264
|
+
'Check ANTHROPIC_BASE_URL and network reachability, then re-run — a transport failure produces no review.'
|
|
263
265
|
];
|
|
264
266
|
case 'INCOMPLETE_FINAL_REVIEW':
|
|
265
267
|
return [
|
|
266
|
-
'The LLM reply was not valid JSON or omitted a required dimension; re-run so the gate is never read as complete.'
|
|
268
|
+
'The LLM reply was not valid JSON or omitted a required dimension; re-run so the gate is never read as complete.'
|
|
267
269
|
];
|
|
268
270
|
default:
|
|
269
271
|
return ['Re-run with `--llm-provider stub` to validate the CLI route without a real LLM.'];
|
|
@@ -27,6 +27,6 @@
|
|
|
27
27
|
*
|
|
28
28
|
* File budget: ≤ 200 lines (Karpathy §2).
|
|
29
29
|
*/
|
|
30
|
-
import { Command } from 'commander';
|
|
30
|
+
import type { Command } from 'commander';
|
|
31
31
|
import { type ProgramIO } from '../cli-helpers.js';
|
|
32
32
|
export declare function registerFixtureCommands(program: Command, io: ProgramIO): void;
|
|
@@ -35,8 +35,7 @@ export function registerFixtureCommands(program, io) {
|
|
|
35
35
|
process.exitCode = 1;
|
|
36
36
|
return;
|
|
37
37
|
}
|
|
38
|
-
const fixtureId = options.fixtureId
|
|
39
|
-
?? deriveVariantFixtureId(options.variantFrom, options.variant);
|
|
38
|
+
const fixtureId = options.fixtureId ?? deriveVariantFixtureId(options.variantFrom, options.variant);
|
|
40
39
|
try {
|
|
41
40
|
const captured = captureDerivedVariant({
|
|
42
41
|
mode: 'derived-variant',
|
|
@@ -55,7 +54,10 @@ export function registerFixtureCommands(program, io) {
|
|
|
55
54
|
}
|
|
56
55
|
// Mode 2: historical
|
|
57
56
|
if (options.fromRid === undefined || options.envelope === undefined) {
|
|
58
|
-
printResult(io, fail('fixture.capture', 'CAPTURE_ARGS_REQUIRED', 'Either --variant-from/--variant OR --from-rid/--envelope must be supplied', { envelopeKinds: ENVELOPE_KINDS, edgeCases: EDGE_CASE_VARIANTS }, [
|
|
57
|
+
printResult(io, fail('fixture.capture', 'CAPTURE_ARGS_REQUIRED', 'Either --variant-from/--variant OR --from-rid/--envelope must be supplied', { envelopeKinds: ENVELOPE_KINDS, edgeCases: EDGE_CASE_VARIANTS }, [
|
|
58
|
+
'Rerun with --from-rid <rid> --envelope <kind>',
|
|
59
|
+
'OR --variant-from <path> --variant <edge-case>'
|
|
60
|
+
]), options.json);
|
|
59
61
|
process.exitCode = 1;
|
|
60
62
|
return;
|
|
61
63
|
}
|
|
@@ -83,9 +85,18 @@ export function registerFixtureCommands(program, io) {
|
|
|
83
85
|
});
|
|
84
86
|
}
|
|
85
87
|
function deriveHistoricalFixtureId(rid, envelope) {
|
|
86
|
-
return `${rid}-${envelope}
|
|
88
|
+
return `${rid}-${envelope}`
|
|
89
|
+
.toLowerCase()
|
|
90
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
91
|
+
.slice(0, 80);
|
|
87
92
|
}
|
|
88
93
|
function deriveVariantFixtureId(parentPath, variant) {
|
|
89
|
-
const base = parentPath
|
|
90
|
-
|
|
94
|
+
const base = parentPath
|
|
95
|
+
.replace(/\.(md|json)$/, '')
|
|
96
|
+
.split(/[/\\]/)
|
|
97
|
+
.pop() ?? 'parent';
|
|
98
|
+
return `${base}--${variant}`
|
|
99
|
+
.toLowerCase()
|
|
100
|
+
.replace(/[^a-z0-9-]+/g, '-')
|
|
101
|
+
.slice(0, 80);
|
|
91
102
|
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.15.0 follow-up — G11: fork sync CLI, `peaks fork sync-verify`.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from fork-commands.ts (C wave 4 near-cap split). Owns: the
|
|
5
|
+
* `sync-verify` command — mark a planned sync verified/failed and, on success,
|
|
6
|
+
* move the fork baseline to the synced tag. Command name, options, emitted
|
|
7
|
+
* message text, on-disk writes and the print/return order are unchanged from
|
|
8
|
+
* the predecessor's inline action.
|
|
9
|
+
*/
|
|
10
|
+
import type { Command } from 'commander';
|
|
11
|
+
import { type ProgramIO } from '../cli-helpers.js';
|
|
12
|
+
export declare function registerForkSyncVerifyCommand(fork: Command, io: ProgramIO): void;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.15.0 follow-up — G11: fork sync CLI, `peaks fork sync-verify`.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from fork-commands.ts (C wave 4 near-cap split). Owns: the
|
|
5
|
+
* `sync-verify` command — mark a planned sync verified/failed and, on success,
|
|
6
|
+
* move the fork baseline to the synced tag. Command name, options, emitted
|
|
7
|
+
* message text, on-disk writes and the print/return order are unchanged from
|
|
8
|
+
* the predecessor's inline action.
|
|
9
|
+
*/
|
|
10
|
+
import { findProjectRoot } from '../../services/config/config-safety.js';
|
|
11
|
+
import { readForkState, updateSyncRecordStatus, writeForkState } from '../../services/fork/fork-sync-state.js';
|
|
12
|
+
import { fail, ok } from 'peaks-loop-shared/result';
|
|
13
|
+
import { addJsonOption, printResult } from '../cli-helpers.js';
|
|
14
|
+
export function registerForkSyncVerifyCommand(fork, io) {
|
|
15
|
+
addJsonOption(fork
|
|
16
|
+
.command('sync-verify')
|
|
17
|
+
.description('Mark a sync as verified (success) or failed. Optionally records verification notes. ' +
|
|
18
|
+
'On success, the current baseline is also updated to the synced tag.')
|
|
19
|
+
.requiredOption('--sync-id <id>', 'sync plan id')
|
|
20
|
+
.requiredOption('--status <verified|failed>', 'sync verification outcome')
|
|
21
|
+
.option('--notes <text>', 'optional verification notes')
|
|
22
|
+
.option('--project <path>', 'project root (default: cwd)')).action((opts) => {
|
|
23
|
+
runForkSyncVerify(io, opts);
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
function runForkSyncVerify(io, opts) {
|
|
27
|
+
if (opts.status !== 'verified' && opts.status !== 'failed') {
|
|
28
|
+
printSyncVerifyInvalidStatus(io, opts);
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const projectRoot = opts.project ?? findProjectRoot(process.cwd()) ?? process.cwd();
|
|
32
|
+
const state = readForkState(projectRoot);
|
|
33
|
+
const target = state.history.find((r) => r.syncId === opts.syncId);
|
|
34
|
+
if (!target) {
|
|
35
|
+
printSyncVerifyNotFound(io, opts, projectRoot);
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
let next = updateSyncRecordStatus(state, opts.syncId, opts.status, opts.notes);
|
|
39
|
+
if (opts.status === 'verified') {
|
|
40
|
+
next = { ...next, baseline: syncedBaseline(state, target) };
|
|
41
|
+
}
|
|
42
|
+
writeForkState(projectRoot, next);
|
|
43
|
+
printSyncVerifyResult(io, opts, projectRoot, next.baseline);
|
|
44
|
+
}
|
|
45
|
+
function printSyncVerifyInvalidStatus(io, opts) {
|
|
46
|
+
printResult(io, fail('fork.sync-verify', 'INVALID_STATUS', `status must be "verified" or "failed" (got "${opts.status}")`, { projectRoot: opts.project ?? '' }, ['Pass --status verified on success, --status failed on failure.']), opts.json ?? false);
|
|
47
|
+
}
|
|
48
|
+
function printSyncVerifyNotFound(io, opts, projectRoot) {
|
|
49
|
+
printResult(io, fail('fork.sync-verify', 'NOT_FOUND', `sync id "${opts.syncId}" not found`, { projectRoot }, []), opts.json ?? false);
|
|
50
|
+
}
|
|
51
|
+
function printSyncVerifyResult(io, opts, projectRoot, newBaseline) {
|
|
52
|
+
printResult(io, ok('fork.sync-verify', {
|
|
53
|
+
projectRoot,
|
|
54
|
+
syncId: opts.syncId,
|
|
55
|
+
status: opts.status,
|
|
56
|
+
notes: opts.notes ?? null,
|
|
57
|
+
newBaseline
|
|
58
|
+
}, [], [
|
|
59
|
+
opts.status === 'verified'
|
|
60
|
+
? 'Baseline updated to the synced tag.'
|
|
61
|
+
: 'Sync marked as failed. Re-run `peaks fork sync-plan` to retry.'
|
|
62
|
+
]), opts.json ?? false);
|
|
63
|
+
}
|
|
64
|
+
function syncedBaseline(state, target) {
|
|
65
|
+
return {
|
|
66
|
+
upstream: state.baseline?.upstream ?? 'unknown',
|
|
67
|
+
basedOn: target.targetTag,
|
|
68
|
+
recordedAt: new Date().toISOString(),
|
|
69
|
+
commitsAhead: 0,
|
|
70
|
+
filesChanged: 0
|
|
71
|
+
};
|
|
72
|
+
}
|
|
@@ -15,6 +15,7 @@ import { findProjectRoot } from '../../services/config/config-safety.js';
|
|
|
15
15
|
import { appendSyncRecord, buildForkStatusReport, makeSyncId, readForkState, recommendStableTags, updateSyncRecordStatus, writeForkState } from '../../services/fork/fork-sync-state.js';
|
|
16
16
|
import { fail, ok } from 'peaks-loop-shared/result';
|
|
17
17
|
import { addJsonOption, printResult } from '../cli-helpers.js';
|
|
18
|
+
import { registerForkSyncVerifyCommand } from './fork-commands-sync-verify.js';
|
|
18
19
|
export function registerForkCommands(program, io) {
|
|
19
20
|
const fork = program
|
|
20
21
|
.command('fork')
|
|
@@ -43,7 +44,10 @@ export function registerForkCommands(program, io) {
|
|
|
43
44
|
.requiredOption('--tags <list>', 'comma-separated list of available upstream tags')
|
|
44
45
|
.option('--project <path>', 'project root (default: cwd)')).action((opts) => {
|
|
45
46
|
const projectRoot = opts.project ?? findProjectRoot(process.cwd()) ?? process.cwd();
|
|
46
|
-
const availableTags = opts.tags
|
|
47
|
+
const availableTags = opts.tags
|
|
48
|
+
.split(',')
|
|
49
|
+
.map((s) => s.trim())
|
|
50
|
+
.filter((s) => s.length > 0);
|
|
47
51
|
const state = readForkState(projectRoot);
|
|
48
52
|
const baselineTag = state.baseline?.basedOn ?? null;
|
|
49
53
|
const recommended = recommendStableTags(availableTags, baselineTag);
|
|
@@ -71,8 +75,18 @@ export function registerForkCommands(program, io) {
|
|
|
71
75
|
const projectRoot = opts.project ?? findProjectRoot(process.cwd()) ?? process.cwd();
|
|
72
76
|
const state = readForkState(projectRoot);
|
|
73
77
|
const syncId = makeSyncId(opts.upstream);
|
|
74
|
-
const conflicts = opts.conflicts
|
|
75
|
-
|
|
78
|
+
const conflicts = opts.conflicts
|
|
79
|
+
? opts.conflicts
|
|
80
|
+
.split(',')
|
|
81
|
+
.map((s) => s.trim())
|
|
82
|
+
.filter((s) => s.length > 0)
|
|
83
|
+
: [];
|
|
84
|
+
const patches = opts.patches
|
|
85
|
+
? opts.patches
|
|
86
|
+
.split(',')
|
|
87
|
+
.map((s) => s.trim())
|
|
88
|
+
.filter((s) => s.length > 0)
|
|
89
|
+
: [];
|
|
76
90
|
const record = {
|
|
77
91
|
syncId,
|
|
78
92
|
targetTag: opts.upstream,
|
|
@@ -100,9 +114,7 @@ export function registerForkCommands(program, io) {
|
|
|
100
114
|
const state = readForkState(projectRoot);
|
|
101
115
|
const target = state.history.find((r) => r.syncId === opts.syncId);
|
|
102
116
|
if (!target) {
|
|
103
|
-
printResult(io, fail('fork.sync', 'NOT_FOUND', `sync id "${opts.syncId}" not found in fork-state.json`, { projectRoot }, [
|
|
104
|
-
'Run `peaks fork sync-plan` first to generate a plan.'
|
|
105
|
-
]), opts.json ?? false);
|
|
117
|
+
printResult(io, fail('fork.sync', 'NOT_FOUND', `sync id "${opts.syncId}" not found in fork-state.json`, { projectRoot }, ['Run `peaks fork sync-plan` first to generate a plan.']), opts.json ?? false);
|
|
106
118
|
return;
|
|
107
119
|
}
|
|
108
120
|
const next = updateSyncRecordStatus(state, opts.syncId, 'in-progress');
|
|
@@ -112,51 +124,7 @@ export function registerForkCommands(program, io) {
|
|
|
112
124
|
]), opts.json ?? false);
|
|
113
125
|
});
|
|
114
126
|
// 5. sync-verify
|
|
115
|
-
|
|
116
|
-
.command('sync-verify')
|
|
117
|
-
.description('Mark a sync as verified (success) or failed. Optionally records verification notes. ' +
|
|
118
|
-
'On success, the current baseline is also updated to the synced tag.')
|
|
119
|
-
.requiredOption('--sync-id <id>', 'sync plan id')
|
|
120
|
-
.requiredOption('--status <verified|failed>', 'sync verification outcome')
|
|
121
|
-
.option('--notes <text>', 'optional verification notes')
|
|
122
|
-
.option('--project <path>', 'project root (default: cwd)')).action((opts) => {
|
|
123
|
-
if (opts.status !== 'verified' && opts.status !== 'failed') {
|
|
124
|
-
printResult(io, fail('fork.sync-verify', 'INVALID_STATUS', `status must be "verified" or "failed" (got "${opts.status}")`, { projectRoot: opts.project ?? '' }, [
|
|
125
|
-
'Pass --status verified on success, --status failed on failure.'
|
|
126
|
-
]), opts.json ?? false);
|
|
127
|
-
return;
|
|
128
|
-
}
|
|
129
|
-
const projectRoot = opts.project ?? findProjectRoot(process.cwd()) ?? process.cwd();
|
|
130
|
-
const state = readForkState(projectRoot);
|
|
131
|
-
const target = state.history.find((r) => r.syncId === opts.syncId);
|
|
132
|
-
if (!target) {
|
|
133
|
-
printResult(io, fail('fork.sync-verify', 'NOT_FOUND', `sync id "${opts.syncId}" not found`, { projectRoot }, []), opts.json ?? false);
|
|
134
|
-
return;
|
|
135
|
-
}
|
|
136
|
-
let next = updateSyncRecordStatus(state, opts.syncId, opts.status, opts.notes);
|
|
137
|
-
if (opts.status === 'verified') {
|
|
138
|
-
const baseline = {
|
|
139
|
-
upstream: state.baseline?.upstream ?? 'unknown',
|
|
140
|
-
basedOn: target.targetTag,
|
|
141
|
-
recordedAt: new Date().toISOString(),
|
|
142
|
-
commitsAhead: 0,
|
|
143
|
-
filesChanged: 0
|
|
144
|
-
};
|
|
145
|
-
next = { ...next, baseline };
|
|
146
|
-
}
|
|
147
|
-
writeForkState(projectRoot, next);
|
|
148
|
-
printResult(io, ok('fork.sync-verify', {
|
|
149
|
-
projectRoot,
|
|
150
|
-
syncId: opts.syncId,
|
|
151
|
-
status: opts.status,
|
|
152
|
-
notes: opts.notes ?? null,
|
|
153
|
-
newBaseline: next.baseline
|
|
154
|
-
}, [], [
|
|
155
|
-
opts.status === 'verified'
|
|
156
|
-
? 'Baseline updated to the synced tag.'
|
|
157
|
-
: 'Sync marked as failed. Re-run `peaks fork sync-plan` to retry.'
|
|
158
|
-
]), opts.json ?? false);
|
|
159
|
-
});
|
|
127
|
+
registerForkSyncVerifyCommand(fork, io);
|
|
160
128
|
}
|
|
161
129
|
function serializeReport(r) {
|
|
162
130
|
return r;
|
|
@@ -17,7 +17,9 @@ export function registerFreshContextCommands(program, io) {
|
|
|
17
17
|
printResult(io, ok('fresh-context.preflight', result), options.json);
|
|
18
18
|
}
|
|
19
19
|
catch (error) {
|
|
20
|
-
printResult(io, fail('fresh-context.preflight', 'PREFLIGHT_FAILED', getErrorMessage(error), {}, [
|
|
20
|
+
printResult(io, fail('fresh-context.preflight', 'PREFLIGHT_FAILED', getErrorMessage(error), {}, [
|
|
21
|
+
'Verify ~/.peaks/config.json is valid JSON'
|
|
22
|
+
]), options.json);
|
|
21
23
|
process.exitCode = 1;
|
|
22
24
|
}
|
|
23
25
|
});
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { type EnforceDecision } from '../../services/sop/gate-enforce-service.js';
|
|
2
|
+
import { type ToolCallKind } from '../../services/hooks/worktree-authorization-gate.js';
|
|
3
|
+
import { type ProgramIO } from '../cli-helpers.js';
|
|
4
|
+
export type GateEnforceCliOptions = {
|
|
5
|
+
project: string;
|
|
6
|
+
json?: boolean;
|
|
7
|
+
};
|
|
8
|
+
/** The SOP deny variant of the enforcement decision. */
|
|
9
|
+
type SopDeny = Extract<EnforceDecision, {
|
|
10
|
+
decision: 'deny';
|
|
11
|
+
}>;
|
|
12
|
+
/** The SOP allow variant of the enforcement decision. */
|
|
13
|
+
type SopAllow = Extract<EnforceDecision, {
|
|
14
|
+
decision: 'allow';
|
|
15
|
+
}>;
|
|
16
|
+
/**
|
|
17
|
+
* Parse the raw stdin payload, failing open to `null` on malformed JSON.
|
|
18
|
+
*/
|
|
19
|
+
export declare function parseHookStdin(raw: string): unknown;
|
|
20
|
+
/**
|
|
21
|
+
* Map Claude Code tool name to the gate's internal `ToolCallKind`. Anything we don't recognize
|
|
22
|
+
* returns `'Other'` — the worktree gate is opt-in by tool, so unknown tools short-circuit to allow.
|
|
23
|
+
*/
|
|
24
|
+
export declare function classifyTool(toolName: string | undefined): ToolCallKind;
|
|
25
|
+
/**
|
|
26
|
+
* Detect the IDE + adapter and return the adapter's tool matcher. For slice #1 only the Claude
|
|
27
|
+
* adapter is registered, so the payload parser is Claude-shaped. Future slices dispatch on `ide`
|
|
28
|
+
* to pick a per-adapter parser; the parser entry-point (`parseXxxShapeStdin`) is the only change
|
|
29
|
+
* required.
|
|
30
|
+
*
|
|
31
|
+
* The Bash-surface predicate itself stays in `runGateEnforceAction`: TypeScript's aliased-condition
|
|
32
|
+
* narrowing needs `isBashSurface` (which embeds `typeof command === 'string'`) computed in the same
|
|
33
|
+
* scope where `command` is later read, so the extraction stops at the adapter lookup.
|
|
34
|
+
*/
|
|
35
|
+
export declare function resolveToolMatcher(parsedStdin: unknown): string;
|
|
36
|
+
/**
|
|
37
|
+
* Run the fail-closed worktree authorization gate for a gated tool kind. Returns `true` when the
|
|
38
|
+
* call was denied (a hard block has already been emitted and the handler must stop) and `false`
|
|
39
|
+
* when the flow should continue to the SOP gate. `Other` tool kinds are not gated at all.
|
|
40
|
+
*
|
|
41
|
+
* slice 2026-07-27-worktree-user-auth: BEFORE the SOP gate runs, check the worktree authorization
|
|
42
|
+
* gate. The worktree gate is narrower than the SOP gate (it only inspects a small set of
|
|
43
|
+
* worktree-mutating operations) and is fail-CLOSED. The two layers are complementary: SOP gates
|
|
44
|
+
* decide "may this command run under this SOP's state", the worktree gate decides "did the user
|
|
45
|
+
* explicitly authorize this worktree-mutating operation in the current task". The worktree gate is
|
|
46
|
+
* cheap and self-contained, so it runs first to give the LLM a clear error reason before the SOP
|
|
47
|
+
* gate would otherwise allow.
|
|
48
|
+
*
|
|
49
|
+
* wtDecision may have arrived via lease (viaLease != null); the SOP gate does not care which path
|
|
50
|
+
* granted, only that the worktree gate said allow.
|
|
51
|
+
*/
|
|
52
|
+
export declare function handleWorktreeGate(io: ProgramIO, options: GateEnforceCliOptions, toolKind: ToolCallKind, payload: {
|
|
53
|
+
command: string | undefined;
|
|
54
|
+
parsedStdin: unknown;
|
|
55
|
+
}): boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Not a guarded surface — allow. Emit minimal JSON on stdout so Claude Code's PreToolUse hook
|
|
58
|
+
* validator accepts the response. Empty stdout is rejected with "Hook JSON output validation
|
|
59
|
+
* failed — Invalid input" in Claude Code 2.x; `{}` is the canonical no-op marker.
|
|
60
|
+
*/
|
|
61
|
+
export declare function emitAllowSkipped(io: ProgramIO, options: GateEnforceCliOptions): void;
|
|
62
|
+
/** Worktree gate allowed and this is not a Bash surface — allow without running the SOP gate. */
|
|
63
|
+
export declare function emitAllowWorktree(io: ProgramIO, options: GateEnforceCliOptions): void;
|
|
64
|
+
/**
|
|
65
|
+
* PRD#2 (2026-06-16-fact-forcing-gate-format): a true SOP gate failure is a HARD block. emitBlock
|
|
66
|
+
* writes the Claude Code permissionDecision:"deny" JSON to stdout (the hook's decision signal),
|
|
67
|
+
* sets process.exitCode = 2 (Claude Code's block exit code), AND surfaces the reason to stderr so
|
|
68
|
+
* the LLM sees it on the next turn. This prevents the previous behaviour where Claude Code wrapped
|
|
69
|
+
* the output as "PreToolUse:Bash hook error".
|
|
70
|
+
*/
|
|
71
|
+
export declare function emitSopDeny(io: ProgramIO, options: GateEnforceCliOptions, decision: SopDeny): void;
|
|
72
|
+
/** Surface any SOP-gate warnings as hints before the allow decision is emitted. */
|
|
73
|
+
export declare function emitSopWarnings(io: ProgramIO, decision: SopAllow): void;
|
|
74
|
+
/**
|
|
75
|
+
* SOP gate allowed the command. --json mode emits the canonical envelope on stdout (the documented
|
|
76
|
+
* contract for downstream tooling). The hook decision (allow/deny) is still signalled via
|
|
77
|
+
* process.exitCode + the minimal `{}` on stdout in non-`--json` mode. Slice 2026-07-30-nightshift:
|
|
78
|
+
* emitHint here was wrong — emitHint writes to stderr, but the AC5 contract expects the JSON
|
|
79
|
+
* envelope on stdout. Switch to printResult(asJson=true).
|
|
80
|
+
*/
|
|
81
|
+
export declare function emitSopAllow(io: ProgramIO, options: GateEnforceCliOptions, decision: SopAllow): void;
|
|
82
|
+
export {};
|