peaks-loop 4.0.54 → 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 +36 -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 +11 -6
- 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 +47 -21
- 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 +65 -32
- 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 +8 -4
- 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.js +1 -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 +10 -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/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.js +4 -1
- package/dist/services/codegraph/codegraph-exclude-integrity.js +4 -1
- package/dist/services/codegraph/codegraph-exclude-repair.js +1 -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 +6 -187
- 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/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.js +34 -22
- 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/handoff-frontmatter-shape.d.ts +42 -0
- package/dist/services/prd/handoff-frontmatter-shape.js +67 -0
- package/dist/services/prd/handoff-frontmatter.js +1 -1
- 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 +1 -37
- package/dist/services/prd/handoff-service.js +16 -148
- 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.js +1 -4
- 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.js +4 -7
- 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 +31 -8
- 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/peaks-code/SKILL.md +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,41 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 4.1.0 — 2026-10-03 (strict-remediation 战役收口: 门禁第一次开始看自己、判据换成"哪些代码是产品"、以及一次把自己推翻的探针)
|
|
4
|
+
|
|
5
|
+
**版本级别**: 未发布区间 `v4.0.54..HEAD` 共 **167 个 commit**(49 refactor / 42 docs / 35 fix / 8 feat / 6 test / 15 chore / 1 style)。取 **minor** 而不是继续 patch,理由是这区间有**新增的用户可见 CLI 表面**(`peaks job add-slice`)以及若干会改变用户所见的修复(cron 超时、`pnpm lint` 的口径、空测试集从"绿"变"红");`^4.0.54` 的下游仍能匹配到本版。
|
|
6
|
+
|
|
7
|
+
### 1. `peaks job` 不再自相矛盾(§2.38,本版本唯一"新增命令")
|
|
8
|
+
|
|
9
|
+
三条都是先在临时仓库里**跑出来**再修的:(a) `init` 之后没有任何办法给已有 job 追加 slice,`checkpoint` 回 `SLICE_NOT_FOUND`,于是"一片一片发现的 wave"只能谎报账本或一片开一个 job;(b) `checkpoint --commit-sha` 原先**只校验长度 ≥7**,一个 `git cat-file` 判定"不是有效对象"的 `c6de09a9` 被接受并写成 `lastCommitSha`;(c) `progress` 的 `currentSlice` 是 `slice-<done+1>` **合成出来的 id**,所以工具自己建议下一步、又自己拒绝那一步——第三条是第一条的成因。现在:`peaks job add-slice --slice-label` 幂等(重复 label 报知且 `state.json` 字节不变、空 label 拒绝);sha 必须可解析才写入,拒绝时引用 git 原话且账本一字节不动;`describeNextSlice` 成为 `#N of M` 的**唯一**出口(原先三处各自算),并把"全部完成"从 `Next: slice #3 of 2 (no slice pending)` 改成 `no further slice is registered — add one with: peaks job add-slice …`,实测该分支下 `slice #` 出现 **0 次**。附带撤回 backlog 自己原先写的"checkpoint 应该记录未知 slice 而不是拒绝"——拒绝未声明的 id 正是账本唯一的防线。
|
|
10
|
+
|
|
11
|
+
### 2. cron 的三处名实不符(用户可见行为)
|
|
12
|
+
|
|
13
|
+
`EXEC_TIMEOUT_MS` 在名字叫"五分钟"的地方是**五小时**;超时不再收割任务子进程(孤儿活在大门之后);daemon 与 run-once 两个写者对 `lastRunAt` 各有各的规则。现在同一 killed 规则覆盖两条路径,killed 记录带得出 killed 标记与非空 stderr,普通失败给不出这个形状。
|
|
14
|
+
|
|
15
|
+
### 3. 假绿被系统性关掉(三处)
|
|
16
|
+
|
|
17
|
+
包内测试集为空从"通过"变成"失败"并补上 CI 步骤;`emit` 检查改为**递归**,嵌套 emit 不能再不吭声地消失;stamp 写入改为原子,且守卫不再为自己验证不了的东西背书;build-integrity 的包集合与 gate 对齐(不一致就拒),空 stamp 记录直接拒。
|
|
18
|
+
|
|
19
|
+
### 4. `pnpm lint` 与门禁终于量同一个集合
|
|
20
|
+
|
|
21
|
+
原先 `peaks lint` 报的是 1259 而 `peaks-gate.mjs repo` 量 1298(少 80 条 finding 却仍打印"全部守住")——因为 gate 里那份扩展名/目录正则是规则的**第二份写法**、没有任何测试观察它。现在只有一个列表、一处过滤,两边由 parity 测试互相钉住;`.peaks/lint/baseline.json` 也修成可移植路径,**waiver 真的在豁免**(此前它按绝对路径匹配,等于静默不豁免)。
|
|
22
|
+
|
|
23
|
+
### 5. 判据换掉:严格检查属于"产品代码",出界部分只测不闸
|
|
24
|
+
|
|
25
|
+
owner 明确「只需要对 `src` 与 `packages/*/src` 这些目录下的文件做 eslint 严格检查、tscheck、prettier」,取代原先"四个目录"的口径。被排除的 552→575 个文件(`tests/`、`scripts/`、包内非 `src`)**不是删掉的债**——`eslintFindings 638`、`fileSizeExcessLines 13557` 仍每次测量并打印,只是不设 ceiling;`shadow` 块承担这笔账,并在上升时主动播报(实测今天连报 `638 → 639 → 641 → 648`,而受闸一侧同期 `2130 → 2128`)。配套把 `--rescope` 的触发条件从"数值变了"改成**"边界文本变了,或有文件离开了范围"**——纯长大免 flag 并打印 `scope grew: 950 -> 952 (7 entered, 0 left the scope)`,因为总体变大只会让计数上升,而任何上升都照旧被 `RAISED` 拒绝:**松的是仪式,不是 ratchet**。
|
|
26
|
+
|
|
27
|
+
### 6. 门禁第一次开始看自己
|
|
28
|
+
|
|
29
|
+
`.husky/` 原先不在任何行数口径里(`peaks-gate.mjs` 1019 行、3.3× 它自己 enforced 的 cap,而它贡献 0)。现在它有**自己的两行**且全程未动主口径(`fileSizeOverCap` 始终 162→126),四个 slice 把 gate 目录从 **4 文件 / 1,701 超实行降到 33+ 文件 / 0**;799 行的生成器与 1,019 行的入口都被拆开,每一次拆分都带**等价手臂**(拆分前后逐行多重集守恒 + 对 `git show` 钉 sha 的行为对照),因为"重构看起来没动"不等于"证明没动"。`silent-warning` 成为最后一条自择总体的腿,收口后它和其余腿共用同一份跟踪列表——顺带数出**17 处此前没有任何 ceiling 见过的静默吞异常**(16 处集中在 `packages/peaks-loop-mut/src/services/agent/ecc-cache-service.ts`,该文件同时欠 537 行)。
|
|
30
|
+
|
|
31
|
+
### 7. 一条被自己的探针推翻的结论(保留为记录,不删)
|
|
32
|
+
|
|
33
|
+
本版曾断言"全局 `npm i -g` 会静默跳过 `install-skills`,用户装到 CLI 却拿不到 skills"。一个 `mkprobe` 探针包(`postinstall` 写 marker 文件)在 **npm 11.19.0** 上两次都**执行了**脚本——该版本的 `install-scripts` 警告是告知性的,`ignore-scripts` 为 `false`;而"skills 目录 45 项未变"正是 `install-skills` **按内容 hash 幂等**的成功样子。教训写进 backlog §2.52a:**no-op 和 skip 给出同一份证据**,"工具 X 不肯做 Y"这种结论,先花一秒把 X 跑一遍。仍然成立的两点:npm 自己说这些脚本"尚未被覆盖"、翻默认在即(二手报道指 v12,本次未能取到一手来源),届时 `--allow-scripts=peaks-loop` 是唯一防线,故两版 README 的安装段落现在写明;以及本仓 `.npmrc` 携 pnpm 的 `onlyBuiltDependencies`(外加一个连字符重复项),npm 每次调用都报未知并声明下个大版本失效——**pnpm 侧有一条放行、npm 侧为空**。
|
|
34
|
+
|
|
35
|
+
### 验证
|
|
36
|
+
|
|
37
|
+
`gate repo` exit 0(943→952 文件、hooks 行 0/0)、`tsc -p tsconfig.json --noEmit` 0、`pnpm test:unit` **379 文件 / 3,915 passed / 3 skipped**、`npm run build` 0(`build-integrity: OK`,`dist-stamp: 907 source file(s)`)。战役过程与全部自我推翻记录在 `.peaks/docs/backlog.md` §2.25–§2.52a、`.peaks/docs/lint-gate.md` §4n–§4z。
|
|
38
|
+
|
|
3
39
|
## 4.0.54 — 2026-09-18 (Phase A 缺陷闭合十片: 9 片真改 + 3 次修复推翻自己 + 4.0.53 宣称闭合的 AC 里 2 个被证伪 — AC-6 是假 pin、AC-1 是空 pin)
|
|
4
40
|
|
|
5
41
|
**Highlights**:
|
package/README-en.md
CHANGED
|
@@ -49,6 +49,21 @@ peaks-loop is a **Loop Engineering crystallization system**, not a workflow tool
|
|
|
49
49
|
npm i -g peaks-loop
|
|
50
50
|
```
|
|
51
51
|
|
|
52
|
+
> **On npm 11+, pass one flag.** npm prints an `install-scripts` warning for lifecycle scripts that are not
|
|
53
|
+
> covered by its allowlist. **At the current version (npm 11.19) the scripts still run**, so the install works
|
|
54
|
+
> as-is — but npm says that default is about to flip. To avoid silently ending up with "a CLI, no skills", write
|
|
55
|
+
> it out fully:
|
|
56
|
+
>
|
|
57
|
+
> ```bash
|
|
58
|
+
> npm i -g --allow-scripts=peaks-loop peaks-loop
|
|
59
|
+
> ```
|
|
60
|
+
>
|
|
61
|
+
> If you suspect the skills did not land, **no CLI command reports that state today**
|
|
62
|
+
> (`peaks skill search` queries the in-package skill pool, which says nothing about your IDE directory), so
|
|
63
|
+
> look at the directory itself: `ls ~/.claude/skills | grep '^peaks-' | head` (or the IDE dir you actually
|
|
64
|
+
> use). Empty means the CLI installed but the skills did not — the gap is recorded in
|
|
65
|
+
> `.peaks/docs/backlog.md` §2.52a.
|
|
66
|
+
|
|
52
67
|
Then, in the **Claude Code** or **Z Code** chat you already use, send an **explicit slash command** (the leading slash is what triggers peaks-loop — a plain sentence won't always route here):
|
|
53
68
|
|
|
54
69
|
```
|
|
@@ -140,7 +155,7 @@ Every lane opens with **one slash command**.
|
|
|
140
155
|
|
|
141
156
|
| | |
|
|
142
157
|
| --- | --- |
|
|
143
|
-
| **Latest** | [](https://www.npmjs.com/package/peaks-loop) — 4.0
|
|
158
|
+
| **Latest** | [](https://www.npmjs.com/package/peaks-loop) — 4.1.0 (2026-10-03) |
|
|
144
159
|
| **Domains** | Code (`peaks-code`) · Content (`peaks-content`) · Project health (`peaks-doctor`) · Issue sweep (`peaks-issue-fix-orchestrator`) · Custom SOP (`peaks-sop`) · Cross-domain primitives (`peaks-solo` dispatcher · `peaks-resume` · `peaks-status` · `peaks-test` · `peaks-slice-decompose`) |
|
|
145
160
|
| **Sediment pool** | `~/.peaks/` local pool · twice-clean runs auto-promote to a bee · broken runs come back for you to redefine · the bee grows with your taste |
|
|
146
161
|
| **Test suite** | 285+ cases · 4 packages (peaks-loop / peaks-loop-mut / peaks-loop-shared-channel / peaks-loop-shared) · **0 timeouts** · 14 BDD caller-binding edge cases |
|
package/README.md
CHANGED
|
@@ -49,6 +49,20 @@ peaks-loop 是一个 **Loop Engineering 结晶系统**,不是工作流工具 —
|
|
|
49
49
|
npm i -g peaks-loop
|
|
50
50
|
```
|
|
51
51
|
|
|
52
|
+
> **npm 11+ 请带一个 flag**:安装时 npm 会对"未经 allowlist 覆盖"的 install 脚本打一条 `install-scripts` 警告。**当前版本(npm 11.19)仍然会执行**这些脚本,所以装完就能用;但 npm 已明说这个默认值即将翻成"默认不执行"。为了不在那一天静默装到一个"有 CLI、没有 skills"的状态,请写全:
|
|
53
|
+
>
|
|
54
|
+
> ```bash
|
|
55
|
+
> npm i -g --allow-scripts=peaks-loop peaks-loop
|
|
56
|
+
> ```
|
|
57
|
+
>
|
|
58
|
+
> 装好后如果怀疑 skills 没落上,**目前没有一条 CLI 命令报告这个状态**(`peaks skill search` 查的是包内技能池,与 IDE 目录里装了没装无关),所以只能看目录本身:
|
|
59
|
+
>
|
|
60
|
+
> ```bash
|
|
61
|
+
> ls ~/.claude/skills | grep '^peaks-' | head # 或你实际在用的 IDE 目录
|
|
62
|
+
> ```
|
|
63
|
+
>
|
|
64
|
+
> 空目录 = skills 没装上(CLI 本身仍可用)。这个"报告不出自己装了没装"的缺口记在 `.peaks/docs/backlog.md` §2.52a。
|
|
65
|
+
|
|
52
66
|
装好之后,在你已经用的 **Claude Code** 或 **Z Code** 对话框里发一条**显式命令**(必须以斜杠开头,才会触发 peaks-loop):
|
|
53
67
|
|
|
54
68
|
```
|
|
@@ -140,7 +154,7 @@ npm i -g peaks-loop
|
|
|
140
154
|
|
|
141
155
|
| | |
|
|
142
156
|
| --- | --- |
|
|
143
|
-
| **最新版本** | [](https://www.npmjs.com/package/peaks-loop) — 4.0
|
|
157
|
+
| **最新版本** | [](https://www.npmjs.com/package/peaks-loop) — 4.1.0(2026-10-03) |
|
|
144
158
|
| **覆盖域** | 代码(`peaks-code`) · 内容(`peaks-content`) · 项目健康(`peaks-doctor`) · 批量修 issue(`peaks-issue-fix-orchestrator`) · 自定义 SOP(`peaks-sop`) · 通用原语(`peaks-solo` 分诊 / `peaks-resume` 续 / `peaks-status` 看 / `peaks-test` 测 / `peaks-slice-decompose` 切片) |
|
|
145
159
|
| **沉淀池** | `~/.peaks/` 本地池 · 跑两次自动晋升成 bee · 跑翻车让你重定义 · bee 跟着你的口味长 |
|
|
146
160
|
| **测试套件** | 1096 cases · 4 packages (peaks-loop 1015 / runtime 39 / mut 22 / shared-channel 20) · **CI 首次全绿**(ubuntu + windows) · 14 BDD caller-binding coverage |
|
|
@@ -36,7 +36,20 @@ module.exports = {
|
|
|
36
36
|
parserOptions: {
|
|
37
37
|
ecmaVersion: 2022,
|
|
38
38
|
sourceType: 'module',
|
|
39
|
-
|
|
39
|
+
// 2026-09-19 rid-s1-lint-config-coverage: the root tsconfig.json includes
|
|
40
|
+
// only src/** and tests/**, so every file under scripts/** and
|
|
41
|
+
// packages/** belonged to NO project and eslint failed 71 of them with
|
|
42
|
+
// "The file was not found in any of the provided project(s)" BEFORE
|
|
43
|
+
// parsing them. That is not a lint result — it is a hole, and it also
|
|
44
|
+
// masked real syntax errors (a .mjs with a broken string literal was found
|
|
45
|
+
// by prettier only, because eslint never reached the parser). The
|
|
46
|
+
// ESLint-only project below covers those directories without changing what
|
|
47
|
+
// `tsc -p tsconfig.json` sees.
|
|
48
|
+
project: [
|
|
49
|
+
'./tsconfig.json',
|
|
50
|
+
'./tsconfig.build.json',
|
|
51
|
+
'./config/eslint/tsconfig.lint.json'
|
|
52
|
+
],
|
|
40
53
|
// 2026-08-06 lint-dogfood cycle-3 follow-up: the runner now uses
|
|
41
54
|
// `node node_modules/eslint/bin/eslint.js` from the repo root, so
|
|
42
55
|
// tsconfigRootDir must be the repo root (one level above config/).
|
|
@@ -52,16 +65,34 @@ module.exports = {
|
|
|
52
65
|
'plugin:@typescript-eslint/recommended-type-checked'
|
|
53
66
|
],
|
|
54
67
|
settings: {},
|
|
68
|
+
// 2026-09-19 rid-s1-lint-config-coverage: every pattern here used to be a
|
|
69
|
+
// bare trailing-slash name. ESLint reads those the way .gitignore does — a
|
|
70
|
+
// trailing slash with no inner slash matches a directory of that name at ANY
|
|
71
|
+
// depth — so `'skills/'` also swallowed `src/services/skills/`, `src/skills/`
|
|
72
|
+
// and two test directories: 33 tracked files, production source among them,
|
|
73
|
+
// silently reported as "0 findings" without ever being parsed. A LEADING
|
|
74
|
+
// slash anchors a pattern to the config's base path (the repo root), which
|
|
75
|
+
// is what these were always meant to mean: the repo-root prose / artifact /
|
|
76
|
+
// tooling directories.
|
|
77
|
+
//
|
|
78
|
+
// A leading slash alone is not enough for generated output, though: a
|
|
79
|
+
// per-package `dist/`, `coverage/` or `node_modules/` must still stay out of
|
|
80
|
+
// a directory walk, so those three are kept at any depth explicitly.
|
|
81
|
+
// `**/node_modules/` in particular must be spelled out, not left to
|
|
82
|
+
// eslint's own default ignore of `/**/node_modules/*`: a config that sets
|
|
83
|
+
// `ignorePatterns` REPLACES that default rather than adding to it.
|
|
55
84
|
ignorePatterns: [
|
|
56
|
-
'
|
|
57
|
-
'
|
|
58
|
-
'
|
|
59
|
-
'
|
|
60
|
-
'
|
|
61
|
-
'
|
|
62
|
-
'
|
|
63
|
-
'
|
|
64
|
-
'
|
|
85
|
+
'/dist/',
|
|
86
|
+
'/coverage/',
|
|
87
|
+
'/output-styles/',
|
|
88
|
+
'/skills/',
|
|
89
|
+
'/agents/',
|
|
90
|
+
'/bin/',
|
|
91
|
+
'/scratch/',
|
|
92
|
+
'/examples/',
|
|
93
|
+
'**/dist/',
|
|
94
|
+
'**/coverage/',
|
|
95
|
+
'**/node_modules/'
|
|
65
96
|
],
|
|
66
97
|
rules: {
|
|
67
98
|
// L1 (eslint built-in) — always on, no plugin package required.
|
|
@@ -113,9 +144,28 @@ module.exports = {
|
|
|
113
144
|
{ prefer: 'type-imports' }
|
|
114
145
|
],
|
|
115
146
|
'@typescript-eslint/no-non-null-assertion': 'warn',
|
|
116
|
-
|
|
147
|
+
// 2026-09-19 rid-s1-lint-config-coverage: `@typescript-eslint/no-implicit-any`
|
|
148
|
+
// was REMOVED here, not renamed. It does not exist in
|
|
149
|
+
// @typescript-eslint/eslint-plugin@8.66.0 (134 rules; verified against the
|
|
150
|
+
// shipped plugin's rule index) — typescript-eslint dropped it in v6 — and
|
|
151
|
+
// eslint answered every parsed file with 2 severity-2
|
|
152
|
+
// "Definition for rule ... was not found" messages, 2390 across the repo.
|
|
153
|
+
// Besides inflating the count, that made "a NEW file must be lint- and
|
|
154
|
+
// commit-able" unsatisfiable, since no new file could avoid those two.
|
|
155
|
+
// Its intent is already covered twice over, so nothing needs to replace it:
|
|
156
|
+
// - tsc: this repo builds with `strict: true` (root tsconfig.json), which
|
|
157
|
+
// turns on noImplicitAny at the compiler level;
|
|
158
|
+
// - eslint: `plugin:@typescript-eslint/recommended-type-checked` above
|
|
159
|
+
// already enables the implicit-any surface (`no-unsafe-assignment`,
|
|
160
|
+
// `-argument`, `-call`, `-member-access`, `-return`, …) plus
|
|
161
|
+
// `no-explicit-any`, which is re-declared as `warn` just above.
|
|
117
162
|
// G-lint-1 §二 enum → as const: warn-only (escape hatch preserved).
|
|
118
|
-
|
|
163
|
+
// NOTE: this must stay the CORE `no-restricted-syntax`. The selector below
|
|
164
|
+
// is an ESLint-core selector, and core is where the rule lives —
|
|
165
|
+
// `@typescript-eslint/no-restricted-syntax` does not exist in
|
|
166
|
+
// @typescript-eslint/eslint-plugin@8.66.0 and produced the same phantom
|
|
167
|
+
// "Definition for rule ... was not found" on every file.
|
|
168
|
+
'no-restricted-syntax': [
|
|
119
169
|
'warn',
|
|
120
170
|
{
|
|
121
171
|
selector: 'TSEnumDeclaration',
|
|
@@ -127,7 +177,42 @@ module.exports = {
|
|
|
127
177
|
// Use ESLint built-in `no-duplicate-imports` — `@typescript-eslint/no-duplicate-imports`
|
|
128
178
|
// does NOT exist in @typescript-eslint/eslint-plugin@8.66.0 (broken ruleId, all 820
|
|
129
179
|
// phantom entries were `Definition for rule ... was not found`). PRD-002b 2026-08-07.
|
|
130
|
-
'no-duplicate-imports': 'warn'
|
|
180
|
+
'no-duplicate-imports': 'warn',
|
|
181
|
+
|
|
182
|
+
// 2026-09-20 rid-s9-require-await-decision — DELIBERATE divergence, measured.
|
|
183
|
+
//
|
|
184
|
+
// INHERITED, not chosen. This rule arrives via
|
|
185
|
+
// `plugin:@typescript-eslint/recommended-type-checked` in `extends` above;
|
|
186
|
+
// nothing in this file ever turned it on. Its inherited default is `error`.
|
|
187
|
+
// An absent line here would therefore NOT be "we never enabled it" — it
|
|
188
|
+
// would keep firing at error severity, silently. That is why the override is
|
|
189
|
+
// written out explicitly rather than left out.
|
|
190
|
+
//
|
|
191
|
+
// WHY OFF. Measured over all 291 findings in this repo, classified 291/291
|
|
192
|
+
// by AST: 259 (89%) are the rule being wrong, not debt. `async` here is
|
|
193
|
+
// load-bearing in two ways the rule does not model —
|
|
194
|
+
// (a) it is the mechanism that moves a `throw` out of the synchronous path
|
|
195
|
+
// and into the rejection channel (19 src sites), and
|
|
196
|
+
// (b) it IS the interface contract (`readonly execute: (ctx) => Promise<…>`,
|
|
197
|
+
// with the implementation written `execute: async () => ({…})`).
|
|
198
|
+
// The rule also does NOT exempt an explicit `Promise<…>` annotation — the
|
|
199
|
+
// declared type is consulted only by its autofix suggestion, to rewrite
|
|
200
|
+
// `Promise<T>` → `T`. Acting on that suggestion is a tsc error (measured:
|
|
201
|
+
// stripping `async` from the 314 candidate sites produced 363 tsc errors),
|
|
202
|
+
// so "just remove them" was always an interface rewrite, not a cleanup.
|
|
203
|
+
// Driving the number to zero would mean 259 knowingly-false entries inside
|
|
204
|
+
// the one ratchet axis that is supposed to mean "lint debt".
|
|
205
|
+
//
|
|
206
|
+
// WHAT REPLACES IT. The residual signal — "a later `await` added at the top
|
|
207
|
+
// of this function would silently make everything below it asynchronous" —
|
|
208
|
+
// is carried by an AST + tsc-type-checker guard at
|
|
209
|
+
// `tests/unit/standards/gratuitous-async-guard.test.ts`, which runs with
|
|
210
|
+
// `pnpm test:unit` and is pinned to exactly 14 sites. The 18 genuinely
|
|
211
|
+
// gratuitous `it`/`test` `async` callbacks in `tests/` were removed.
|
|
212
|
+
//
|
|
213
|
+
// Full evidence, the probe table, and the "when to reconsider" triggers:
|
|
214
|
+
// `.peaks/docs/lint-rule-divergences.md` § `@typescript-eslint/require-await`.
|
|
215
|
+
'@typescript-eslint/require-await': 'off'
|
|
131
216
|
},
|
|
132
217
|
overrides: [
|
|
133
218
|
{
|
|
@@ -138,6 +223,66 @@ module.exports = {
|
|
|
138
223
|
'max-lines-per-function': 'off',
|
|
139
224
|
'@typescript-eslint/no-explicit-any': 'off'
|
|
140
225
|
}
|
|
226
|
+
},
|
|
227
|
+
// 2026-09-20 rid-s11-js-type-aware-exemption — a type-aware rule family
|
|
228
|
+
// applied to files the project deliberately refuses to type-check.
|
|
229
|
+
// DELIBERATE divergence, measured; not a blanket rule switch-off.
|
|
230
|
+
//
|
|
231
|
+
// THE CONTRADICTION. `config/eslint/tsconfig.lint.json` sets
|
|
232
|
+
// `allowJs: true` together with `checkJs: false`. Those two are one
|
|
233
|
+
// deliberate statement: a JS file is *parsed* (so it can be linted at all)
|
|
234
|
+
// and is deliberately NOT type-checked — no types are ever established for
|
|
235
|
+
// it. `no-unsafe-*` is a *type-aware* family; every finding it reports is
|
|
236
|
+
// the answer to "what type does this expression have?". Asking that of a
|
|
237
|
+
// property the configuration explicitly declines to establish is not
|
|
238
|
+
// strictness — it is a self-contradiction. Where there are no types, `any`
|
|
239
|
+
// is not a defect the author introduced; it is the only answer the compiler
|
|
240
|
+
// was ever allowed to give.
|
|
241
|
+
//
|
|
242
|
+
// MEASURED REACH (census by file extension, taken before this entry
|
|
243
|
+
// existed; 1273 files in the gate's scope, 1036 findings on JS). Exactly
|
|
244
|
+
// five ruleIds account for 956 of those 1036, on 23 files:
|
|
245
|
+
// no-unsafe-member-access 389, no-unsafe-assignment 214,
|
|
246
|
+
// no-unsafe-argument 156, no-unsafe-call 146, no-unsafe-return 51.
|
|
247
|
+
// No other `no-unsafe-*` rule fires on JS anywhere in the repo. The globs
|
|
248
|
+
// below are the four JS extensions: 31 `.mjs` + 1 `.js` exist today, 0
|
|
249
|
+
// `.cjs` and 0 `.jsx`; the latter two are carried so a new file cannot
|
|
250
|
+
// reopen this hole by being written with a different extension.
|
|
251
|
+
//
|
|
252
|
+
// WHAT IS *NOT* SWITCHED OFF — the reach of this entry is the whole point:
|
|
253
|
+
// - `.ts`/`.tsx`/`.mts`/`.cts` are not matched. The 538 type-aware
|
|
254
|
+
// findings there are real: the root tsconfig.json runs `strict: true`,
|
|
255
|
+
// so a type question has a genuine answer to reject. TS counts must not
|
|
256
|
+
// move by one.
|
|
257
|
+
// - `no-unsafe-finally` is deliberately ABSENT from the list. It is the
|
|
258
|
+
// ESLint *core* rule of that name (control flow out of a `finally`
|
|
259
|
+
// block) — NOT `@typescript-eslint/no-unsafe-finally` — and it needs no
|
|
260
|
+
// type information. It fires twice on JS here, and both are genuine.
|
|
261
|
+
// - every rule that is not type-aware keeps firing on JS (74 findings):
|
|
262
|
+
// no-magic-numbers, complexity, max-lines-per-function, max-lines,
|
|
263
|
+
// no-unused-vars, no-duplicate-imports, prefer-const,
|
|
264
|
+
// no-inner-declarations, no-require-imports.
|
|
265
|
+
// - the type-aware rules OUTSIDE this family also keep firing (6
|
|
266
|
+
// findings): only-throw-error, restrict-plus-operands,
|
|
267
|
+
// no-floating-promises, prefer-promise-reject-errors. They are
|
|
268
|
+
// type-aware but not `no-unsafe-*`, so this authorisation does not reach
|
|
269
|
+
// them. Widening these globs to cover them is a different decision that
|
|
270
|
+
// needs its own evidence.
|
|
271
|
+
// - `no-explicit-any` does NOT fire on JS (0 findings, measured — it does
|
|
272
|
+
// not appear in the JS census at all). JS has no type annotations, so
|
|
273
|
+
// there is no place to write `any` and nothing for the rule to match.
|
|
274
|
+
//
|
|
275
|
+
// Reasoning, the census, and the "when to reconsider" triggers:
|
|
276
|
+
// `.peaks/docs/lint-rule-divergences.md`
|
|
277
|
+
{
|
|
278
|
+
files: ['**/*.js', '**/*.jsx', '**/*.cjs', '**/*.mjs'],
|
|
279
|
+
rules: {
|
|
280
|
+
'@typescript-eslint/no-unsafe-argument': 'off',
|
|
281
|
+
'@typescript-eslint/no-unsafe-assignment': 'off',
|
|
282
|
+
'@typescript-eslint/no-unsafe-call': 'off',
|
|
283
|
+
'@typescript-eslint/no-unsafe-member-access': 'off',
|
|
284
|
+
'@typescript-eslint/no-unsafe-return': 'off'
|
|
285
|
+
}
|
|
141
286
|
}
|
|
142
287
|
]
|
|
143
288
|
};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// ESLint-ONLY tsconfig — see config/eslint/.peaks-rules.cjs. Never run tsc on
|
|
2
|
+
// this file; it exists purely so parserOptions.project can see every file eslint
|
|
3
|
+
// is asked to lint. The root tsconfig.json intentionally includes only src/**
|
|
4
|
+
// and tests/**, so scripts/** and packages/** belonged to NO project at all:
|
|
5
|
+
// eslint failed 71 of those files with "The file was not found in any of the
|
|
6
|
+
// provided project(s)" BEFORE parsing them, which is not a lint result but a
|
|
7
|
+
// hole — and one that also masked real syntax errors (a .mjs with a broken
|
|
8
|
+
// string literal was ever only caught by prettier, because eslint never reached
|
|
9
|
+
// the parser).
|
|
10
|
+
//
|
|
11
|
+
// allowJs is what lets the .mjs/.js tools under scripts/ into the program.
|
|
12
|
+
//
|
|
13
|
+
// The explicit `files` list below is NOT redundant. TypeScript's
|
|
14
|
+
// extension-priority pass groups extensions as
|
|
15
|
+
// [[.ts,.tsx,.d.ts,.js,.jsx], [.cts,.d.cts,.cjs], [.mts,.d.mts,.mjs]]
|
|
16
|
+
// and drops a file when a HIGHER-priority sibling exists; it carves out
|
|
17
|
+
// .js/.jsx shadowed by .d.ts, but NOT .mjs shadowed by .d.mts. So a wildcard
|
|
18
|
+
// include silently loses these four. Files named literally bypass that pass.
|
|
19
|
+
// Any new <name>.mjs + <name>.d.mts pair under scripts/ must be added here —
|
|
20
|
+
// tests/unit/lint/eslint-rules-config-coverage.test.ts asserts this program
|
|
21
|
+
// contains every tracked in-scope file, so an omission fails a test instead of
|
|
22
|
+
// silently reopening the coverage hole.
|
|
23
|
+
{
|
|
24
|
+
"extends": "../../tsconfig.json",
|
|
25
|
+
"compilerOptions": {
|
|
26
|
+
"allowJs": true,
|
|
27
|
+
"checkJs": false,
|
|
28
|
+
"noEmit": true
|
|
29
|
+
},
|
|
30
|
+
"files": [
|
|
31
|
+
"../../scripts/_release-shared.mjs",
|
|
32
|
+
"../../scripts/release-pack.mjs",
|
|
33
|
+
"../../scripts/dist-freshness.mjs",
|
|
34
|
+
"../../scripts/install-skills.mjs",
|
|
35
|
+
"../../scripts/packages-build-prerequisite.mjs",
|
|
36
|
+
"../../scripts/verify-version-parity.mjs"
|
|
37
|
+
],
|
|
38
|
+
"include": [
|
|
39
|
+
"../../src/**/*",
|
|
40
|
+
"../../tests/**/*",
|
|
41
|
+
"../../scripts/**/*",
|
|
42
|
+
"../../packages/*/src/**/*",
|
|
43
|
+
"../../packages/*/tests/**/*",
|
|
44
|
+
"../../packages/*/vitest.config.ts"
|
|
45
|
+
],
|
|
46
|
+
"exclude": ["../../dist", "../../node_modules", "../../tests/fixtures/bdd-reporter-tmp"]
|
|
47
|
+
}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The runtime shape of the JSON envelope `peaks … --json` writes to stdout.
|
|
3
|
+
*
|
|
4
|
+
* WHY THIS EXISTS (S12, 2026-09-20). The CLI envelope was the single largest
|
|
5
|
+
* cluster of unvalidated `JSON.parse` in the repo: 21 test files do
|
|
6
|
+
* `JSON.parse(<spawn result>.stdout)` and then read `out.ok` / `out.code` /
|
|
7
|
+
* `out.data.*`. Because `JSON.parse` returns `any`, none of those reads was
|
|
8
|
+
* checked against anything, and each one is a `no-unsafe-*` finding. Measured
|
|
9
|
+
* at the S12 census: ~196 of the ~448 findings in the R1 root.
|
|
10
|
+
*
|
|
11
|
+
* WHAT IS VALIDATED, AND WHAT IS NOT — stated plainly, because the difference
|
|
12
|
+
* is the whole point. The envelope HEAD is always validated: `ok` must be a
|
|
13
|
+
* boolean; `warnings` / `nextActions`, when present, arrays of strings; `code`
|
|
14
|
+
* / `message` / `errorId`, when present, strings. The PAYLOAD (`data`) is
|
|
15
|
+
* validated only as "a JSON object with string keys" — there is no single
|
|
16
|
+
* payload schema, because `data` is `T` in `ResultEnvelope<T>` and every
|
|
17
|
+
* command has its own shape. That is a measured finding of S12, not an
|
|
18
|
+
* oversight: R1 does not collapse onto one schema.
|
|
19
|
+
*
|
|
20
|
+
* A caller that reads `data.<field>` at depth >= 2 therefore names the payload
|
|
21
|
+
* shape itself, through the same validating primitive:
|
|
22
|
+
*
|
|
23
|
+
* parseCliEnvelopeWith(raw, EvolutionStatusPayload)
|
|
24
|
+
*
|
|
25
|
+
* The alternative — one generic helper with a type parameter and no schema —
|
|
26
|
+
* is the `as T` costume S12 forbids. Here the type parameter is a SCHEMA, so
|
|
27
|
+
* the returned type is derived from a check that actually ran.
|
|
28
|
+
*/
|
|
29
|
+
import { z } from 'zod';
|
|
30
|
+
declare const baseEnvelopeSchema: z.ZodObject<{
|
|
31
|
+
ok: z.ZodBoolean;
|
|
32
|
+
command: z.ZodOptional<z.ZodString>;
|
|
33
|
+
data: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
34
|
+
warnings: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
35
|
+
nextActions: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
36
|
+
code: z.ZodOptional<z.ZodString>;
|
|
37
|
+
message: z.ZodOptional<z.ZodString>;
|
|
38
|
+
errorId: z.ZodOptional<z.ZodString>;
|
|
39
|
+
}, z.core.$loose>;
|
|
40
|
+
/**
|
|
41
|
+
* Build the envelope schema with a payload schema — for the callers that read
|
|
42
|
+
* `data.<field>` at depth >= 2 and can say what they expect there.
|
|
43
|
+
*/
|
|
44
|
+
export declare function cliEnvelopeSchema<S extends z.ZodType>(payload: S): z.ZodObject<{
|
|
45
|
+
ok: z.ZodBoolean;
|
|
46
|
+
command: z.ZodOptional<z.ZodString>;
|
|
47
|
+
data: S;
|
|
48
|
+
warnings: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
49
|
+
nextActions: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
50
|
+
code: z.ZodOptional<z.ZodString>;
|
|
51
|
+
message: z.ZodOptional<z.ZodString>;
|
|
52
|
+
errorId: z.ZodOptional<z.ZodString>;
|
|
53
|
+
}, z.core.$loose>;
|
|
54
|
+
/**
|
|
55
|
+
* `ok` + `data` (any JSON object) + the optional head fields.
|
|
56
|
+
*/
|
|
57
|
+
export type CliEnvelope = z.infer<typeof baseEnvelopeSchema>;
|
|
58
|
+
/**
|
|
59
|
+
* Parse a CLI stdout envelope, validating the head. Throws when the text is
|
|
60
|
+
* not JSON, or is JSON that is not an envelope — a caller that fed this
|
|
61
|
+
* something else wants to know, not to read `undefined.ok` further down.
|
|
62
|
+
*/
|
|
63
|
+
export declare function parseCliEnvelope(raw: string): CliEnvelope;
|
|
64
|
+
/**
|
|
65
|
+
* Parse a CLI stdout envelope for a caller that reads `data.<field>` at depth
|
|
66
|
+
* >= 2, validating that field's own shape as well. The caller names the shape;
|
|
67
|
+
* nothing is asserted on its behalf.
|
|
68
|
+
*/
|
|
69
|
+
export declare function parseCliEnvelopeWith<S extends z.ZodType>(raw: string, payload: S): ({
|
|
70
|
+
ok: z.ZodBoolean;
|
|
71
|
+
command: z.ZodOptional<z.ZodString>;
|
|
72
|
+
data: S;
|
|
73
|
+
warnings: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
74
|
+
nextActions: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
75
|
+
code: z.ZodOptional<z.ZodString>;
|
|
76
|
+
message: z.ZodOptional<z.ZodString>;
|
|
77
|
+
errorId: z.ZodOptional<z.ZodString>;
|
|
78
|
+
} extends infer T_1 extends z.core.$ZodLooseShape ? { -readonly [k in keyof T_1 as {
|
|
79
|
+
ok: z.ZodBoolean;
|
|
80
|
+
command: z.ZodOptional<z.ZodString>;
|
|
81
|
+
data: S;
|
|
82
|
+
warnings: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
83
|
+
nextActions: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
84
|
+
code: z.ZodOptional<z.ZodString>;
|
|
85
|
+
message: z.ZodOptional<z.ZodString>;
|
|
86
|
+
errorId: z.ZodOptional<z.ZodString>;
|
|
87
|
+
}[k] extends {
|
|
88
|
+
_zod: {
|
|
89
|
+
optout: "optional";
|
|
90
|
+
};
|
|
91
|
+
} ? never : k]: T_1[k]["_zod"]["output"]; } : never) & ({
|
|
92
|
+
ok: z.ZodBoolean;
|
|
93
|
+
command: z.ZodOptional<z.ZodString>;
|
|
94
|
+
data: S;
|
|
95
|
+
warnings: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
96
|
+
nextActions: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
97
|
+
code: z.ZodOptional<z.ZodString>;
|
|
98
|
+
message: z.ZodOptional<z.ZodString>;
|
|
99
|
+
errorId: z.ZodOptional<z.ZodString>;
|
|
100
|
+
} extends infer T_2 extends z.core.$ZodLooseShape ? { -readonly [k_1 in keyof T_2 as {
|
|
101
|
+
ok: z.ZodBoolean;
|
|
102
|
+
command: z.ZodOptional<z.ZodString>;
|
|
103
|
+
data: S;
|
|
104
|
+
warnings: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
105
|
+
nextActions: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
106
|
+
code: z.ZodOptional<z.ZodString>;
|
|
107
|
+
message: z.ZodOptional<z.ZodString>;
|
|
108
|
+
errorId: z.ZodOptional<z.ZodString>;
|
|
109
|
+
}[k_1] extends {
|
|
110
|
+
_zod: {
|
|
111
|
+
optout: "optional";
|
|
112
|
+
};
|
|
113
|
+
} ? k_1 : never]?: T_2[k_1]["_zod"]["output"]; } : never) & Record<string, unknown> extends infer T ? { [K in keyof T]: T[K]; } : never;
|
|
114
|
+
export {};
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The runtime shape of the JSON envelope `peaks … --json` writes to stdout.
|
|
3
|
+
*
|
|
4
|
+
* WHY THIS EXISTS (S12, 2026-09-20). The CLI envelope was the single largest
|
|
5
|
+
* cluster of unvalidated `JSON.parse` in the repo: 21 test files do
|
|
6
|
+
* `JSON.parse(<spawn result>.stdout)` and then read `out.ok` / `out.code` /
|
|
7
|
+
* `out.data.*`. Because `JSON.parse` returns `any`, none of those reads was
|
|
8
|
+
* checked against anything, and each one is a `no-unsafe-*` finding. Measured
|
|
9
|
+
* at the S12 census: ~196 of the ~448 findings in the R1 root.
|
|
10
|
+
*
|
|
11
|
+
* WHAT IS VALIDATED, AND WHAT IS NOT — stated plainly, because the difference
|
|
12
|
+
* is the whole point. The envelope HEAD is always validated: `ok` must be a
|
|
13
|
+
* boolean; `warnings` / `nextActions`, when present, arrays of strings; `code`
|
|
14
|
+
* / `message` / `errorId`, when present, strings. The PAYLOAD (`data`) is
|
|
15
|
+
* validated only as "a JSON object with string keys" — there is no single
|
|
16
|
+
* payload schema, because `data` is `T` in `ResultEnvelope<T>` and every
|
|
17
|
+
* command has its own shape. That is a measured finding of S12, not an
|
|
18
|
+
* oversight: R1 does not collapse onto one schema.
|
|
19
|
+
*
|
|
20
|
+
* A caller that reads `data.<field>` at depth >= 2 therefore names the payload
|
|
21
|
+
* shape itself, through the same validating primitive:
|
|
22
|
+
*
|
|
23
|
+
* parseCliEnvelopeWith(raw, EvolutionStatusPayload)
|
|
24
|
+
*
|
|
25
|
+
* The alternative — one generic helper with a type parameter and no schema —
|
|
26
|
+
* is the `as T` costume S12 forbids. Here the type parameter is a SCHEMA, so
|
|
27
|
+
* the returned type is derived from a check that actually ran.
|
|
28
|
+
*/
|
|
29
|
+
import { z } from 'zod';
|
|
30
|
+
import { parseJson } from '../shared/json-parse.js';
|
|
31
|
+
const anyJsonObject = z.record(z.string(), z.unknown());
|
|
32
|
+
/** The head of the envelope, with `data` checked by whichever schema is passed. */
|
|
33
|
+
function envelopeWith(data) {
|
|
34
|
+
// `looseObject` keeps every key the schema does not name, matching
|
|
35
|
+
// `JSON.parse`'s old behaviour of handing back every key: validation is not
|
|
36
|
+
// licence to silently drop fields.
|
|
37
|
+
return z.looseObject({
|
|
38
|
+
ok: z.boolean(),
|
|
39
|
+
// `command` is the one head field that is genuinely optional: the
|
|
40
|
+
// `printCliEnvelope` shim (`src/cli/cli-helpers.ts`, used only by
|
|
41
|
+
// `sediment-commands.ts`) writes `{ ok, data }` / `{ ok, error }`, and
|
|
42
|
+
// `_super.ts` writes `{ ok, data, warnings, nextActions }`.
|
|
43
|
+
command: z.string().optional(),
|
|
44
|
+
data,
|
|
45
|
+
// `warnings` / `nextActions` are OPTIONAL, and that is a MEASURED fact,
|
|
46
|
+
// not a convenience. S12 first made them required on the theory that
|
|
47
|
+
// "every emitter writes them" — then the integration suite proved the
|
|
48
|
+
// theory false: `peaks workspace clean --json`
|
|
49
|
+
// (`src/cli/commands/workspace/clean-command.ts`) writes `{ ok, data }`
|
|
50
|
+
// and nothing else. So the premise this slice inherited — "the CLI stdout
|
|
51
|
+
// envelope has a fixed shape `{ ok, command, data, warnings, nextActions }`"
|
|
52
|
+
// — is wrong as stated; `ok` and `data` are the only universal members.
|
|
53
|
+
// A caller that needs `nextActions` must say so — `program.test.ts` names
|
|
54
|
+
// it in a schema rather than looping over a possibly-absent array.
|
|
55
|
+
warnings: z.array(z.string()).optional(),
|
|
56
|
+
nextActions: z.array(z.string()).optional(),
|
|
57
|
+
code: z.string().optional(),
|
|
58
|
+
message: z.string().optional(),
|
|
59
|
+
errorId: z.string().optional()
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
const baseEnvelopeSchema = envelopeWith(anyJsonObject);
|
|
63
|
+
/**
|
|
64
|
+
* Build the envelope schema with a payload schema — for the callers that read
|
|
65
|
+
* `data.<field>` at depth >= 2 and can say what they expect there.
|
|
66
|
+
*/
|
|
67
|
+
export function cliEnvelopeSchema(payload) {
|
|
68
|
+
return envelopeWith(payload);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Parse a CLI stdout envelope, validating the head. Throws when the text is
|
|
72
|
+
* not JSON, or is JSON that is not an envelope — a caller that fed this
|
|
73
|
+
* something else wants to know, not to read `undefined.ok` further down.
|
|
74
|
+
*/
|
|
75
|
+
export function parseCliEnvelope(raw) {
|
|
76
|
+
return parseJson(raw, baseEnvelopeSchema);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Parse a CLI stdout envelope for a caller that reads `data.<field>` at depth
|
|
80
|
+
* >= 2, validating that field's own shape as well. The caller names the shape;
|
|
81
|
+
* nothing is asserted on its behalf.
|
|
82
|
+
*/
|
|
83
|
+
export function parseCliEnvelopeWith(raw, payload) {
|
|
84
|
+
return parseJson(raw, cliEnvelopeSchema(payload));
|
|
85
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
1
|
+
import type { Command } from 'commander';
|
|
2
2
|
import { getErrorMessage, ok, redactSensitiveErrorMessage, type ResultEnvelope } from 'peaks-loop-shared/result';
|
|
3
3
|
import type { ArtifactProvider, GuidedArtifactSetup } from '../services/artifacts/artifact-service.js';
|
|
4
4
|
import type { ConfigLayer } from '../services/config/config-service.js';
|
package/dist/cli/cli-helpers.js
CHANGED
|
@@ -44,7 +44,9 @@ export function addJsonOption(command) {
|
|
|
44
44
|
return command.option('--json', 'print machine-readable JSON envelope');
|
|
45
45
|
}
|
|
46
46
|
export function failUnsupportedNonDryRun(io, command, asJson) {
|
|
47
|
-
printResult(io, fail(command, 'UNSUPPORTED_NON_DRY_RUN', 'Only dry-run planning is supported', {}, [
|
|
47
|
+
printResult(io, fail(command, 'UNSUPPORTED_NON_DRY_RUN', 'Only dry-run planning is supported', {}, [
|
|
48
|
+
'Rerun with --dry-run or omit --no-dry-run'
|
|
49
|
+
]), asJson);
|
|
48
50
|
process.exitCode = 1;
|
|
49
51
|
}
|
|
50
52
|
export function printCliEnvelope(io, r) {
|
|
@@ -152,10 +154,10 @@ export function isArtifactProvider(value) {
|
|
|
152
154
|
return value === 'github' || value === 'gitlab';
|
|
153
155
|
}
|
|
154
156
|
export function isArtifactSetupStep(value) {
|
|
155
|
-
return value === 'detect' || value === 'configure' || value === 'validate' || value === 'complete';
|
|
157
|
+
return (value === 'detect' || value === 'configure' || value === 'validate' || value === 'complete');
|
|
156
158
|
}
|
|
157
159
|
export function isArtifactRepoSegment(value) {
|
|
158
|
-
return /^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(value) && !value.includes('..') && !value.endsWith('.');
|
|
160
|
+
return (/^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(value) && !value.includes('..') && !value.endsWith('.'));
|
|
159
161
|
}
|
|
160
162
|
export function parseConfigLayer(value) {
|
|
161
163
|
if (value === undefined) {
|
|
@@ -164,7 +166,9 @@ export function parseConfigLayer(value) {
|
|
|
164
166
|
return value === 'user' || value === 'project' ? value : null;
|
|
165
167
|
}
|
|
166
168
|
export function printInvalidConfigLayer(io, command, asJson) {
|
|
167
|
-
printResult(io, fail(command, 'INVALID_CONFIG_LAYER', 'Config layer must be user or project', {}, [
|
|
169
|
+
printResult(io, fail(command, 'INVALID_CONFIG_LAYER', 'Config layer must be user or project', {}, [
|
|
170
|
+
'Use --layer user or --layer project'
|
|
171
|
+
]), asJson);
|
|
168
172
|
process.exitCode = 1;
|
|
169
173
|
}
|
|
170
174
|
export function multipleOption(value, previous) {
|
|
@@ -40,7 +40,7 @@ export function mapServiceError(error) {
|
|
|
40
40
|
if (error instanceof ProviderNotConfiguredError) {
|
|
41
41
|
return {
|
|
42
42
|
code: 'INVALID_PROVIDERS',
|
|
43
|
-
nextActions: ['Configure provider model: peaks config provider <id> set --model <id>']
|
|
43
|
+
nextActions: ['Configure provider model: peaks config provider <id> set --model <id>']
|
|
44
44
|
};
|
|
45
45
|
}
|
|
46
46
|
if (error instanceof Error && GOAL_VALIDATION_MESSAGE_RE.test(error.message)) {
|