peaks-loop 4.0.54 → 4.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +61 -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 +86 -39
- 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/comments-commands.d.ts +14 -0
- package/dist/cli/commands/comments-commands.js +96 -0
- 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 +57 -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 +32 -17
- package/dist/cli/commands/core/standards-command.js +56 -14
- 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 +18 -23
- package/dist/cli/commands/ecc-commands.js +39 -36
- 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 +16 -6
- 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/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 +8 -10
- 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 +66 -0
- package/dist/services/code/mode-gate.d.ts +4 -58
- package/dist/services/code/mode-gate.js +25 -69
- 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/user-touchpoint-classifier.js +0 -7
- package/dist/services/code-review/ecc-bridge.d.ts +6 -6
- 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/comments/citation-rules.d.ts +154 -0
- package/dist/services/comments/citation-rules.js +241 -0
- package/dist/services/comments/comment-audit.d.ts +57 -0
- package/dist/services/comments/comment-audit.js +100 -0
- package/dist/services/comments/comment-citations.d.ts +60 -0
- package/dist/services/comments/comment-citations.js +186 -0
- package/dist/services/comments/comment-hygiene.d.ts +79 -0
- package/dist/services/comments/comment-hygiene.js +133 -0
- package/dist/services/comments/comment-prune.d.ts +88 -0
- package/dist/services/comments/comment-prune.js +148 -0
- package/dist/services/comments/prune-apply.d.ts +60 -0
- package/dist/services/comments/prune-apply.js +150 -0
- package/dist/services/comments/repo-path-probe.d.ts +43 -0
- package/dist/services/comments/repo-path-probe.js +78 -0
- 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.d.ts +0 -16
- package/dist/services/log/retention.js +2 -18
- package/dist/services/loop/evaluator-dispatcher.js +78 -42
- package/dist/services/loop/loop-bee-relation-service.d.ts +4 -4
- package/dist/services/loop/loop-bee-relation-service.js +36 -40
- package/dist/services/loop/loop-bee-relation-store.d.ts +3 -3
- package/dist/services/loop/loop-bee-relation-store.js +9 -11
- package/dist/services/loop/loop-bee-relation-types.d.ts +1 -1
- package/dist/services/loop/loop-bee-relation-types.js +14 -25
- package/dist/services/loop/loop-release-service.d.ts +2 -2
- package/dist/services/loop/loop-release-service.js +3 -3
- package/dist/services/loop/loop-release-store.d.ts +2 -2
- package/dist/services/loop/loop-release-store.js +4 -6
- package/dist/services/loop/loop-release-types.d.ts +1 -1
- package/dist/services/loop/loop-release-types.js +21 -31
- package/dist/services/loop/monotonic-guard-types.d.ts +51 -0
- package/dist/services/loop/monotonic-guard-types.js +9 -0
- package/dist/services/loop/monotonic-guard.d.ts +2 -43
- package/dist/services/loop/monotonic-runner-types.d.ts +63 -0
- package/dist/services/loop/monotonic-runner-types.js +17 -0
- package/dist/services/loop/monotonic-runner.d.ts +3 -34
- package/dist/services/loop/monotonic-runner.js +10 -20
- package/dist/services/loop/run-driver.js +16 -8
- package/dist/services/loop/spec-service.d.ts +0 -5
- package/dist/services/loop/spec-service.js +49 -9
- package/dist/services/memory/llm-reranker-core.d.ts +108 -0
- package/dist/services/memory/llm-reranker-core.js +105 -0
- package/dist/services/memory/llm-reranker.d.ts +3 -94
- package/dist/services/memory/llm-reranker.js +13 -102
- package/dist/services/memory/memory-ingest-service.d.ts +1 -22
- package/dist/services/memory/memory-ingest-service.js +29 -76
- package/dist/services/memory/memory-ingest-support.d.ts +23 -0
- package/dist/services/memory/memory-ingest-support.js +81 -0
- package/dist/services/memory/memory-rotate-service.js +41 -8
- package/dist/services/memory/memory-search-service.js +8 -4
- package/dist/services/memory/project-context-service.js +26 -5
- package/dist/services/memory/project-memory-service/index/kind-dispatch.d.ts +2 -7
- package/dist/services/memory/project-memory-service/index/kind-dispatch.js +17 -136
- package/dist/services/memory/project-memory-service/index/project-memory-plan-exec.d.ts +7 -0
- package/dist/services/memory/project-memory-service/index/project-memory-plan-exec.js +150 -0
- package/dist/services/memory/project-memory-service/index/ranking.js +6 -3
- package/dist/services/memory/project-memory-service/index/reindex.js +14 -5
- package/dist/services/memory/project-memory-service/index.d.ts +1 -1
- package/dist/services/memory/project-memory-service/index.js +1 -1
- package/dist/services/memory/project-memory-service/memory-kinds.d.ts +31 -0
- package/dist/services/memory/project-memory-service/memory-kinds.js +87 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter-parse.d.ts +24 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter-parse.js +104 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter.d.ts +2 -24
- package/dist/services/memory/project-memory-service/parsers/frontmatter.js +28 -79
- package/dist/services/memory/project-memory-service/parsers/markdown-pure.js +15 -3
- package/dist/services/memory/project-memory-service/store/atomic-write.d.ts +19 -7
- package/dist/services/memory/project-memory-service/store/atomic-write.js +144 -38
- 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 +62 -1
- package/dist/services/prd/handoff-gate-evidence.js +14 -10
- 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 +12 -38
- package/dist/services/prd/handoff-service.js +25 -147
- package/dist/services/prd/handoff-types.d.ts +33 -1
- package/dist/services/prd/prd-blocks-checker.js +28 -8
- package/dist/services/prd/project-scan-bootstrap-service.js +1 -5
- package/dist/services/prd/project-scan-reader.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/recommendations/installed-capability-detector.d.ts +5 -5
- package/dist/services/recommendations/installed-capability-detector.js +11 -10
- 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 +74 -0
- package/dist/services/scan/archetype-detection.js +315 -0
- package/dist/services/scan/archetype-service.js +58 -133
- 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/scan-types.d.ts +9 -0
- 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/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/generated-artifacts-stamp.d.ts +2 -2
- package/dist/services/workspace/generated-artifacts-stamp.js +2 -2
- 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 +12 -4
- 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 +286 -283
- package/scripts/sync-version.mjs +25 -8
- package/scripts/watch.mjs +8 -2
- package/skills/bee/peaks-qa/references/reading-handoff-frontmatter.md +3 -1
- package/skills/bee/peaks-rd/references/parallel-review-fanout.md +1 -1
- package/skills/bee/peaks-rd/references/rd-fanout-contracts.md +3 -2
- package/skills/bee/peaks-rd/references/writing-handoff-frontmatter.md +29 -7
- package/skills/peaks-code/SKILL.md +1 -1
- package/skills/peaks-code/references/frontend-only-mode.md +2 -2
- package/skills/peaks-code/references/startup-sequence.md +0 -4
- package/dist/cli/commands/upgrade-commands.d.ts +0 -25
- package/dist/cli/commands/upgrade-commands.js +0 -154
- package/dist/services/upgrade/1x-detector-service.d.ts +0 -7
- package/dist/services/upgrade/1x-detector-service.js +0 -94
- package/dist/services/upgrade/gitignore-migrate-service.d.ts +0 -56
- package/dist/services/upgrade/gitignore-migrate-service.js +0 -170
- package/dist/services/upgrade/upgrade-service.d.ts +0 -81
- package/dist/services/upgrade/upgrade-service.js +0 -405
- package/skills/peaks-code/references/step-0-55-1x-detection.md +0 -83
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Internal, finding-free building blocks for `format-md-compact.ts`.
|
|
3
|
+
*
|
|
4
|
+
* Split verbatim from the main module for the file-size cap campaign; the
|
|
5
|
+
* public surface (`formatMdCompact` / `FormatMdCompactOptions`) is re-exported
|
|
6
|
+
* from `format-md-compact.ts`, so importers keep pointing at the same path.
|
|
7
|
+
* This module is imported by both `src/` and `packages/` through that path.
|
|
8
|
+
*/
|
|
9
|
+
export const FENCE_MARKER_RE = /^(```+|~~~+)/;
|
|
10
|
+
export const TABLE_ROW_RE = /^\s*\|.*\|\s*$/;
|
|
11
|
+
export const TABLE_ALIGN_ROW_RE = /^\s*\|?\s*:?-{1,}:?\s*(\|\s*:?-{1,}:?\s*)+\|?\s*$/;
|
|
12
|
+
export const ATX_HEADING_RE = /^#{1,6}\s/;
|
|
13
|
+
export const HEADING_LINE_RE = /^\S/;
|
|
14
|
+
export const SETEXT_UNDERLINE_RE = /^=+\s*$|^-{2,}\s*$/;
|
|
15
|
+
export function splitFrontmatter(input) {
|
|
16
|
+
// Normalize line endings so Windows \r\n doesn't confuse the leading-marker check.
|
|
17
|
+
const normalized = input.replace(/\r\n/g, '\n');
|
|
18
|
+
const lines = normalized.split('\n');
|
|
19
|
+
if (lines[0] !== '---') {
|
|
20
|
+
return { raw: '', description: null, body: normalized };
|
|
21
|
+
}
|
|
22
|
+
let closeIndex = -1;
|
|
23
|
+
for (let index = 1; index < lines.length; index += 1) {
|
|
24
|
+
if (lines[index] === '---') {
|
|
25
|
+
closeIndex = index;
|
|
26
|
+
break;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
if (closeIndex < 0) {
|
|
30
|
+
return { raw: '', description: null, body: normalized };
|
|
31
|
+
}
|
|
32
|
+
const raw = lines.slice(0, closeIndex + 1).join('\n');
|
|
33
|
+
// Body = everything after the closing `---` (preserving one optional blank line).
|
|
34
|
+
const bodyLines = lines.slice(closeIndex + 1);
|
|
35
|
+
while (bodyLines.length > 0 && bodyLines[0] === '') {
|
|
36
|
+
bodyLines.shift();
|
|
37
|
+
}
|
|
38
|
+
const body = bodyLines.join('\n');
|
|
39
|
+
// Extract the `description:` field. Walk the YAML block; pull the value
|
|
40
|
+
// as a single-line string. Multi-line (`|`) or folded (`>`) scalars are
|
|
41
|
+
// joined with a single space — the description is a short summary, the
|
|
42
|
+
// exact whitespace inside the block scalar is not preserved.
|
|
43
|
+
const frontmatterLines = lines.slice(1, closeIndex);
|
|
44
|
+
const description = extractFrontmatterDescription(frontmatterLines);
|
|
45
|
+
return { raw, description, body };
|
|
46
|
+
}
|
|
47
|
+
function extractFrontmatterDescription(frontmatterLines) {
|
|
48
|
+
for (let index = 0; index < frontmatterLines.length; index += 1) {
|
|
49
|
+
const line = frontmatterLines[index] ?? '';
|
|
50
|
+
const match = line.match(/^description:\s*(.*)$/);
|
|
51
|
+
if (match === null)
|
|
52
|
+
continue;
|
|
53
|
+
const inline = (match[1] ?? '').trim();
|
|
54
|
+
if (inline === '|' || inline === '>') {
|
|
55
|
+
const collected = [];
|
|
56
|
+
for (let inner = index + 1; inner < frontmatterLines.length; inner += 1) {
|
|
57
|
+
const innerLine = frontmatterLines[inner] ?? '';
|
|
58
|
+
if (/^[A-Za-z0-9_-]+:/.test(innerLine))
|
|
59
|
+
break;
|
|
60
|
+
collected.push(innerLine.replace(/^\s{2}/, ''));
|
|
61
|
+
}
|
|
62
|
+
return collected.join(' ').trim();
|
|
63
|
+
}
|
|
64
|
+
// Strip surrounding quotes if the value is a quoted scalar.
|
|
65
|
+
return inline.replace(/^['"]|['"]$/g, '');
|
|
66
|
+
}
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
export function isFenceOpenLine(line) {
|
|
70
|
+
return FENCE_MARKER_RE.test(line);
|
|
71
|
+
}
|
|
72
|
+
export function isFenceCloseLine(line, insideFence) {
|
|
73
|
+
// The `isFenceOpenLine` already returned true for this line, so it
|
|
74
|
+
// starts with ``` or ~~~. A "close" line is one that opens a new fence
|
|
75
|
+
// of the *same* length. We approximate by treating any opener as a close
|
|
76
|
+
// when we are currently inside a fence.
|
|
77
|
+
return insideFence;
|
|
78
|
+
}
|
|
79
|
+
export function isTableLine(line) {
|
|
80
|
+
return TABLE_ROW_RE.test(line) || TABLE_ALIGN_ROW_RE.test(line);
|
|
81
|
+
}
|
|
82
|
+
export function computeSetextUnderlines(lines) {
|
|
83
|
+
// A `===` or `---` line is a setext heading underline ONLY when it sits
|
|
84
|
+
// directly under a non-blank, non-ATX text line (no blank line between
|
|
85
|
+
// them). The presence of a blank line between the text and the rule
|
|
86
|
+
// disqualifies it (a blank-separated `---` is decoration, not setext).
|
|
87
|
+
const result = new Set();
|
|
88
|
+
for (let index = 1; index < lines.length; index += 1) {
|
|
89
|
+
const line = lines[index] ?? '';
|
|
90
|
+
if (!SETEXT_UNDERLINE_RE.test(line))
|
|
91
|
+
continue;
|
|
92
|
+
const prev = lines[index - 1] ?? '';
|
|
93
|
+
if (prev === '')
|
|
94
|
+
continue;
|
|
95
|
+
if (ATX_HEADING_RE.test(prev))
|
|
96
|
+
continue;
|
|
97
|
+
if (!HEADING_LINE_RE.test(prev))
|
|
98
|
+
continue;
|
|
99
|
+
result.add(index);
|
|
100
|
+
}
|
|
101
|
+
return result;
|
|
102
|
+
}
|
|
103
|
+
export function isDecorativeHorizontalRule(line) {
|
|
104
|
+
// A line that is exactly `---` (or any number of `-` chars) is a
|
|
105
|
+
// candidate horizontal rule. The caller has already excluded setext
|
|
106
|
+
// and table contexts via the `protection` array.
|
|
107
|
+
return /^-+$/.test(line);
|
|
108
|
+
}
|
|
109
|
+
export function collapseMultiBlanks(lines) {
|
|
110
|
+
const result = [];
|
|
111
|
+
let blankRun = 0;
|
|
112
|
+
for (const line of lines) {
|
|
113
|
+
if (line === '') {
|
|
114
|
+
blankRun += 1;
|
|
115
|
+
// 1 blank line is the cap. Drop the rest.
|
|
116
|
+
if (blankRun <= 1) {
|
|
117
|
+
result.push(line);
|
|
118
|
+
}
|
|
119
|
+
continue;
|
|
120
|
+
}
|
|
121
|
+
blankRun = 0;
|
|
122
|
+
result.push(line);
|
|
123
|
+
}
|
|
124
|
+
return result;
|
|
125
|
+
}
|
|
@@ -13,14 +13,9 @@
|
|
|
13
13
|
* Pure function: no fs, no I/O. Easy to unit-test (see
|
|
14
14
|
* `tests/unit/shared/format-md-compact.test.ts`).
|
|
15
15
|
*/
|
|
16
|
+
import { ATX_HEADING_RE, collapseMultiBlanks, computeSetextUnderlines, isDecorativeHorizontalRule, isFenceCloseLine, isFenceOpenLine, isTableLine, splitFrontmatter } from './format-md-compact-internals.js';
|
|
16
17
|
const FENCE_TRIPLE_BACKTICK = '```';
|
|
17
18
|
const FENCE_TRIPLE_TILDE = '~~~';
|
|
18
|
-
const FENCE_MARKER_RE = /^(```+|~~~+)/;
|
|
19
|
-
const TABLE_ROW_RE = /^\s*\|.*\|\s*$/;
|
|
20
|
-
const TABLE_ALIGN_ROW_RE = /^\s*\|?\s*:?-{1,}:?\s*(\|\s*:?-{1,}:?\s*)+\|?\s*$/;
|
|
21
|
-
const ATX_HEADING_RE = /^#{1,6}\s/;
|
|
22
|
-
const HEADING_LINE_RE = /^\S/;
|
|
23
|
-
const SETEXT_UNDERLINE_RE = /^=+\s*$|^-{2,}\s*$/;
|
|
24
19
|
export function formatMdCompact(input, options = {}) {
|
|
25
20
|
if (input.length === 0)
|
|
26
21
|
return input;
|
|
@@ -56,60 +51,6 @@ export function formatMdCompact(input, options = {}) {
|
|
|
56
51
|
}
|
|
57
52
|
return fm.raw + '\n' + finalBody;
|
|
58
53
|
}
|
|
59
|
-
function splitFrontmatter(input) {
|
|
60
|
-
// Normalize line endings so Windows \r\n doesn't confuse the leading-marker check.
|
|
61
|
-
const normalized = input.replace(/\r\n/g, '\n');
|
|
62
|
-
const lines = normalized.split('\n');
|
|
63
|
-
if (lines[0] !== '---') {
|
|
64
|
-
return { raw: '', description: null, body: normalized };
|
|
65
|
-
}
|
|
66
|
-
let closeIndex = -1;
|
|
67
|
-
for (let index = 1; index < lines.length; index += 1) {
|
|
68
|
-
if (lines[index] === '---') {
|
|
69
|
-
closeIndex = index;
|
|
70
|
-
break;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
if (closeIndex < 0) {
|
|
74
|
-
return { raw: '', description: null, body: normalized };
|
|
75
|
-
}
|
|
76
|
-
const raw = lines.slice(0, closeIndex + 1).join('\n');
|
|
77
|
-
// Body = everything after the closing `---` (preserving one optional blank line).
|
|
78
|
-
const bodyLines = lines.slice(closeIndex + 1);
|
|
79
|
-
while (bodyLines.length > 0 && bodyLines[0] === '') {
|
|
80
|
-
bodyLines.shift();
|
|
81
|
-
}
|
|
82
|
-
const body = bodyLines.join('\n');
|
|
83
|
-
// Extract the `description:` field. Walk the YAML block; pull the value
|
|
84
|
-
// as a single-line string. Multi-line (`|`) or folded (`>`) scalars are
|
|
85
|
-
// joined with a single space — the description is a short summary, the
|
|
86
|
-
// exact whitespace inside the block scalar is not preserved.
|
|
87
|
-
const frontmatterLines = lines.slice(1, closeIndex);
|
|
88
|
-
const description = extractFrontmatterDescription(frontmatterLines);
|
|
89
|
-
return { raw, description, body };
|
|
90
|
-
}
|
|
91
|
-
function extractFrontmatterDescription(frontmatterLines) {
|
|
92
|
-
for (let index = 0; index < frontmatterLines.length; index += 1) {
|
|
93
|
-
const line = frontmatterLines[index] ?? '';
|
|
94
|
-
const match = line.match(/^description:\s*(.*)$/);
|
|
95
|
-
if (match === null)
|
|
96
|
-
continue;
|
|
97
|
-
const inline = (match[1] ?? '').trim();
|
|
98
|
-
if (inline === '|' || inline === '>') {
|
|
99
|
-
const collected = [];
|
|
100
|
-
for (let inner = index + 1; inner < frontmatterLines.length; inner += 1) {
|
|
101
|
-
const innerLine = frontmatterLines[inner] ?? '';
|
|
102
|
-
if (/^[A-Za-z0-9_-]+:/.test(innerLine))
|
|
103
|
-
break;
|
|
104
|
-
collected.push(innerLine.replace(/^\s{2}/, ''));
|
|
105
|
-
}
|
|
106
|
-
return collected.join(' ').trim();
|
|
107
|
-
}
|
|
108
|
-
// Strip surrounding quotes if the value is a quoted scalar.
|
|
109
|
-
return inline.replace(/^['"]|['"]$/g, '');
|
|
110
|
-
}
|
|
111
|
-
return null;
|
|
112
|
-
}
|
|
113
54
|
function normalizeBody(body, opts) {
|
|
114
55
|
// Walk line-by-line, tracking the protected-zone flags and emitting a
|
|
115
56
|
// transformed line stream. We keep three flag bits:
|
|
@@ -189,63 +130,6 @@ function normalizeBody(body, opts) {
|
|
|
189
130
|
}
|
|
190
131
|
return collapsed.join('\n');
|
|
191
132
|
}
|
|
192
|
-
function isFenceOpenLine(line) {
|
|
193
|
-
return FENCE_MARKER_RE.test(line);
|
|
194
|
-
}
|
|
195
|
-
function isFenceCloseLine(line, insideFence) {
|
|
196
|
-
// The `isFenceOpenLine` already returned true for this line, so it
|
|
197
|
-
// starts with ``` or ~~~. A "close" line is one that opens a new fence
|
|
198
|
-
// of the *same* length. We approximate by treating any opener as a close
|
|
199
|
-
// when we are currently inside a fence.
|
|
200
|
-
return insideFence;
|
|
201
|
-
}
|
|
202
|
-
function isTableLine(line) {
|
|
203
|
-
return TABLE_ROW_RE.test(line) || TABLE_ALIGN_ROW_RE.test(line);
|
|
204
|
-
}
|
|
205
|
-
function computeSetextUnderlines(lines) {
|
|
206
|
-
// A `===` or `---` line is a setext heading underline ONLY when it sits
|
|
207
|
-
// directly under a non-blank, non-ATX text line (no blank line between
|
|
208
|
-
// them). The presence of a blank line between the text and the rule
|
|
209
|
-
// disqualifies it (a blank-separated `---` is decoration, not setext).
|
|
210
|
-
const result = new Set();
|
|
211
|
-
for (let index = 1; index < lines.length; index += 1) {
|
|
212
|
-
const line = lines[index] ?? '';
|
|
213
|
-
if (!SETEXT_UNDERLINE_RE.test(line))
|
|
214
|
-
continue;
|
|
215
|
-
const prev = lines[index - 1] ?? '';
|
|
216
|
-
if (prev === '')
|
|
217
|
-
continue;
|
|
218
|
-
if (ATX_HEADING_RE.test(prev))
|
|
219
|
-
continue;
|
|
220
|
-
if (!HEADING_LINE_RE.test(prev))
|
|
221
|
-
continue;
|
|
222
|
-
result.add(index);
|
|
223
|
-
}
|
|
224
|
-
return result;
|
|
225
|
-
}
|
|
226
|
-
function isDecorativeHorizontalRule(line) {
|
|
227
|
-
// A line that is exactly `---` (or any number of `-` chars) is a
|
|
228
|
-
// candidate horizontal rule. The caller has already excluded setext
|
|
229
|
-
// and table contexts via the `protection` array.
|
|
230
|
-
return /^-+$/.test(line);
|
|
231
|
-
}
|
|
232
|
-
function collapseMultiBlanks(lines) {
|
|
233
|
-
const result = [];
|
|
234
|
-
let blankRun = 0;
|
|
235
|
-
for (const line of lines) {
|
|
236
|
-
if (line === '') {
|
|
237
|
-
blankRun += 1;
|
|
238
|
-
// 1 blank line is the cap. Drop the rest.
|
|
239
|
-
if (blankRun <= 1) {
|
|
240
|
-
result.push(line);
|
|
241
|
-
}
|
|
242
|
-
continue;
|
|
243
|
-
}
|
|
244
|
-
blankRun = 0;
|
|
245
|
-
result.push(line);
|
|
246
|
-
}
|
|
247
|
-
return result;
|
|
248
|
-
}
|
|
249
133
|
function stripDescriptionRepeat(body, description) {
|
|
250
134
|
if (description === null || description.length === 0)
|
|
251
135
|
return body;
|
package/dist/shared/fs-utils.js
CHANGED
|
@@ -45,7 +45,8 @@ export function readDirectoryLinkTarget(linkPath) {
|
|
|
45
45
|
try {
|
|
46
46
|
return readlinkSync(linkPath);
|
|
47
47
|
}
|
|
48
|
-
catch {
|
|
48
|
+
catch {
|
|
49
|
+
// TODO(g2): legacy silent catch — grace: 1 minor release (v2.14.0)
|
|
49
50
|
return null;
|
|
50
51
|
}
|
|
51
52
|
}
|
|
@@ -15,15 +15,15 @@ import { join } from 'node:path';
|
|
|
15
15
|
export function getNextNumber(dirPath) {
|
|
16
16
|
if (!existsSync(dirPath))
|
|
17
17
|
return 1;
|
|
18
|
-
const files = readdirSync(dirPath).filter(f => f.endsWith('.md'));
|
|
18
|
+
const files = readdirSync(dirPath).filter((f) => f.endsWith('.md'));
|
|
19
19
|
if (files.length === 0)
|
|
20
20
|
return 1;
|
|
21
21
|
const numbers = files
|
|
22
|
-
.map(f => {
|
|
22
|
+
.map((f) => {
|
|
23
23
|
const match = /^(\d+)-/.exec(f);
|
|
24
24
|
return match && match[1] ? parseInt(match[1], 10) : NaN;
|
|
25
25
|
})
|
|
26
|
-
.filter(n => !isNaN(n));
|
|
26
|
+
.filter((n) => !isNaN(n));
|
|
27
27
|
return numbers.length > 0 ? Math.max(...numbers) + 1 : 1;
|
|
28
28
|
}
|
|
29
29
|
/**
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `JSON.parse`, with the shape CHECKED before the value is used.
|
|
3
|
+
*
|
|
4
|
+
* WHY THIS EXISTS (S12, 2026-09-20). `lib.es5.d.ts` declares
|
|
5
|
+
* `JSON.parse(text: string): any`, so every unvalidated parse is a place where
|
|
6
|
+
* `any` ENTERS a file and then flows outward — at the S12 census that was ~448
|
|
7
|
+
* `@typescript-eslint/no-unsafe-*` findings across 48 files, the largest single
|
|
8
|
+
* root of the TS `any` population. The findings sit downstream of the parse;
|
|
9
|
+
* the parse is what has to change.
|
|
10
|
+
*
|
|
11
|
+
* WHAT THIS IS NOT. The shortest-looking fix is
|
|
12
|
+
*
|
|
13
|
+
* function parseJson<T>(raw: string): T { return JSON.parse(raw) as T; }
|
|
14
|
+
*
|
|
15
|
+
* It has a type parameter and reads as "typed", but it validates nothing: the
|
|
16
|
+
* `as T` is still there, wearing a costume. That is the same offence as a
|
|
17
|
+
* suppression comment and harder to see, and S12 forbids it outright.
|
|
18
|
+
*
|
|
19
|
+
* So the type parameter here is the SCHEMA, not the result. `z.infer<S>` is
|
|
20
|
+
* derived FROM the schema that actually ran, which is why the returned type is
|
|
21
|
+
* a claim the runtime already checked rather than an assertion about it.
|
|
22
|
+
*
|
|
23
|
+
* Sibling precedent: `src/shared/array-guards.ts` (S10) returns plain
|
|
24
|
+
* `boolean` rather than a `value is T[]` predicate for the same reason.
|
|
25
|
+
*/
|
|
26
|
+
import type { z } from 'zod';
|
|
27
|
+
/**
|
|
28
|
+
* Parse `raw` and return it only if it matches `schema`. Throws (from
|
|
29
|
+
* `schema.parse`) when the text is not JSON, or is JSON of the wrong shape.
|
|
30
|
+
* Use where a malformed value is a defect that must be visible.
|
|
31
|
+
*/
|
|
32
|
+
export declare function parseJson<S extends z.ZodType>(raw: string, schema: S): z.infer<S>;
|
|
33
|
+
/**
|
|
34
|
+
* The outcome of {@link tryParseJson}. A DISCRIMINATED result rather than
|
|
35
|
+
* `T | null`, because "the text is not JSON" and "the text is JSON of the wrong
|
|
36
|
+
* shape" are different failures and a caller that must treat them differently
|
|
37
|
+
* has to be able to say so.
|
|
38
|
+
*
|
|
39
|
+
* WHY NOT `T | null` (2026-09-23). Collapsing both to `null` is precisely the
|
|
40
|
+
* shape this repository's own `catch-return-null` ratchet exists to catch —
|
|
41
|
+
* "caller cannot distinguish failure from success" — and it had already cost a
|
|
42
|
+
* real defect rather than merely risking one. `readJsonIfExists` in
|
|
43
|
+
* `src/services/sediment/pool-read.ts` had no `catch` and THREW on malformed
|
|
44
|
+
* JSON, so replacing it with the `T | null` form silently downgraded "the whole
|
|
45
|
+
* command fails" to "this bee is skipped". Neither primitive could restore the
|
|
46
|
+
* pair — the old `tryParseJson` mapped both failures to `null`, and `parseJson`
|
|
47
|
+
* throws on both — so that reader had to hand-roll its parse in two steps. The
|
|
48
|
+
* user adjudicated on 2026-09-21 that parsing must fail loudly while a wrong
|
|
49
|
+
* shape is skipped; `reason` is what finally lets a caller reproduce that pair
|
|
50
|
+
* without hand-rolling it. See
|
|
51
|
+
* `tests/unit/services/sediment/pool-read-semantics.test.ts`.
|
|
52
|
+
*/
|
|
53
|
+
export type TryParse<S extends z.ZodType> = {
|
|
54
|
+
ok: true;
|
|
55
|
+
value: z.infer<S>;
|
|
56
|
+
} | {
|
|
57
|
+
ok: false;
|
|
58
|
+
reason: 'malformed' | 'shape';
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* Parse `raw` into `schema`, reporting WHICH failure occurred when it fails.
|
|
62
|
+
* Never throws: `malformed` is text that is not JSON, `shape` is JSON the
|
|
63
|
+
* schema rejected.
|
|
64
|
+
*
|
|
65
|
+
* Callers whose two failures are the same outcome collapse it at their own call
|
|
66
|
+
* site (`r.ok ? r.value : null`) — visibly, and outside a `catch` — which is
|
|
67
|
+
* the shape those file-backed readers already had. Callers that must keep the
|
|
68
|
+
* failures apart switch on `reason`. Use `parseJson` when every failure is a
|
|
69
|
+
* defect that must be visible.
|
|
70
|
+
*/
|
|
71
|
+
export declare function tryParseJson<S extends z.ZodType>(raw: string, schema: S): TryParse<S>;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parse `raw` and return it only if it matches `schema`. Throws (from
|
|
3
|
+
* `schema.parse`) when the text is not JSON, or is JSON of the wrong shape.
|
|
4
|
+
* Use where a malformed value is a defect that must be visible.
|
|
5
|
+
*/
|
|
6
|
+
export function parseJson(raw, schema) {
|
|
7
|
+
// No cast: `JSON.parse`'s `any` is accepted by `parse`'s `unknown` parameter,
|
|
8
|
+
// and `schema.parse` establishes the return type by checking it.
|
|
9
|
+
return schema.parse(JSON.parse(raw));
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Parse `raw` into `schema`, reporting WHICH failure occurred when it fails.
|
|
13
|
+
* Never throws: `malformed` is text that is not JSON, `shape` is JSON the
|
|
14
|
+
* schema rejected.
|
|
15
|
+
*
|
|
16
|
+
* Callers whose two failures are the same outcome collapse it at their own call
|
|
17
|
+
* site (`r.ok ? r.value : null`) — visibly, and outside a `catch` — which is
|
|
18
|
+
* the shape those file-backed readers already had. Callers that must keep the
|
|
19
|
+
* failures apart switch on `reason`. Use `parseJson` when every failure is a
|
|
20
|
+
* defect that must be visible.
|
|
21
|
+
*/
|
|
22
|
+
export function tryParseJson(raw, schema) {
|
|
23
|
+
let decoded;
|
|
24
|
+
try {
|
|
25
|
+
decoded = JSON.parse(raw);
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return { ok: false, reason: 'malformed' };
|
|
29
|
+
}
|
|
30
|
+
const result = schema.safeParse(decoded);
|
|
31
|
+
return result.success ? { ok: true, value: result.data } : { ok: false, reason: 'shape' };
|
|
32
|
+
}
|
|
@@ -49,7 +49,9 @@ function validateNode(value, schema, path, errors) {
|
|
|
49
49
|
branchErrors.push(sink);
|
|
50
50
|
}
|
|
51
51
|
if (!matched) {
|
|
52
|
-
const detail = branchErrors
|
|
52
|
+
const detail = branchErrors
|
|
53
|
+
.map((sink) => sink.map((issue) => issue.message).join(' / '))
|
|
54
|
+
.join(' | ');
|
|
53
55
|
errors.push({ path, message: `does not match any oneOf branch (${detail})` });
|
|
54
56
|
}
|
|
55
57
|
return;
|
|
@@ -25,7 +25,9 @@ function hasUnsafePathShape(input) {
|
|
|
25
25
|
return true;
|
|
26
26
|
if (/^[^@\s]+@[^:\s]+:.+/.test(normalized))
|
|
27
27
|
return true;
|
|
28
|
-
return normalized
|
|
28
|
+
return normalized
|
|
29
|
+
.split('/')
|
|
30
|
+
.some((segment) => segment.length === 0 || segment === '.' || segment === '..');
|
|
29
31
|
}
|
|
30
32
|
export function isUnsafePathInput(input) {
|
|
31
33
|
return hasUnsafePathShape(input);
|
|
@@ -2,6 +2,26 @@ import { type Platform } from './platform.js';
|
|
|
2
2
|
export declare const SEP: "\\" | "/";
|
|
3
3
|
export declare function normalizePath(p: string): string;
|
|
4
4
|
export declare function pathsEqual(a: string, b: string): boolean;
|
|
5
|
+
/**
|
|
6
|
+
* The comparison key for a file path that must survive a different checkout:
|
|
7
|
+
* repo-relative with POSIX separators.
|
|
8
|
+
*
|
|
9
|
+
* Rationale (lint baseline, measured 2026-09-25): ESLint reports `filePath`
|
|
10
|
+
* absolute for the machine it ran on (`D:\peaks-loop\src\cli\commands\…`),
|
|
11
|
+
* a committed baseline has to mean the same file on a *different* root, and
|
|
12
|
+
* `git diff` reports repo-relative paths. Comparing those forms by `!==` is
|
|
13
|
+
* false on every machine — which silently made both the baseline waiver and
|
|
14
|
+
* the diff gate inert. Every side of every such comparison must be reduced
|
|
15
|
+
* through this one function; reducing only one side is the same defect with
|
|
16
|
+
* an extra step.
|
|
17
|
+
*
|
|
18
|
+
* A path that cannot be expressed relative to `projectRoot` — another drive,
|
|
19
|
+
* or an already-relative key — is returned normalized-but-absolute, so it
|
|
20
|
+
* still compares consistently: it simply will not match a path rooted
|
|
21
|
+
* elsewhere. That is deliberate. A stale absolute key keeps working on the
|
|
22
|
+
* machine that wrote it and stays inert everywhere else, exactly as before.
|
|
23
|
+
*/
|
|
24
|
+
export declare function repoRelativeKey(filePath: string, projectRoot: string): string;
|
|
5
25
|
export declare function localPath(p: string, targetPlatform?: Platform): string;
|
|
6
26
|
export declare function getTempDir(options?: {
|
|
7
27
|
env?: NodeJS.ProcessEnv;
|
|
@@ -14,6 +14,32 @@ export function normalizePath(p) {
|
|
|
14
14
|
export function pathsEqual(a, b) {
|
|
15
15
|
return normalizePath(a) === normalizePath(b);
|
|
16
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* The comparison key for a file path that must survive a different checkout:
|
|
19
|
+
* repo-relative with POSIX separators.
|
|
20
|
+
*
|
|
21
|
+
* Rationale (lint baseline, measured 2026-09-25): ESLint reports `filePath`
|
|
22
|
+
* absolute for the machine it ran on (`D:\peaks-loop\src\cli\commands\…`),
|
|
23
|
+
* a committed baseline has to mean the same file on a *different* root, and
|
|
24
|
+
* `git diff` reports repo-relative paths. Comparing those forms by `!==` is
|
|
25
|
+
* false on every machine — which silently made both the baseline waiver and
|
|
26
|
+
* the diff gate inert. Every side of every such comparison must be reduced
|
|
27
|
+
* through this one function; reducing only one side is the same defect with
|
|
28
|
+
* an extra step.
|
|
29
|
+
*
|
|
30
|
+
* A path that cannot be expressed relative to `projectRoot` — another drive,
|
|
31
|
+
* or an already-relative key — is returned normalized-but-absolute, so it
|
|
32
|
+
* still compares consistently: it simply will not match a path rooted
|
|
33
|
+
* elsewhere. That is deliberate. A stale absolute key keeps working on the
|
|
34
|
+
* machine that wrote it and stays inert everywhere else, exactly as before.
|
|
35
|
+
*/
|
|
36
|
+
export function repoRelativeKey(filePath, projectRoot) {
|
|
37
|
+
const normalized = normalizePath(filePath);
|
|
38
|
+
if (!isAbsolute(filePath))
|
|
39
|
+
return normalized.replace(/^\.\//, '');
|
|
40
|
+
const rel = normalizePath(relative(projectRoot, filePath));
|
|
41
|
+
return rel.length === 0 || rel.startsWith('..') || isAbsolute(rel) ? normalized : rel;
|
|
42
|
+
}
|
|
17
43
|
export function localPath(p, targetPlatform = platform) {
|
|
18
44
|
return localPathConverters[targetPlatform](p);
|
|
19
45
|
}
|
|
@@ -5,20 +5,20 @@
|
|
|
5
5
|
*/
|
|
6
6
|
export const WORKSPACE_UNAVAILABLE_NEXT_ACTIONS = Object.freeze([
|
|
7
7
|
'Configure a Peaks artifact workspace in your workspace config.',
|
|
8
|
-
'See peaks artifacts workspace --help for setup instructions.'
|
|
8
|
+
'See peaks artifacts workspace --help for setup instructions.'
|
|
9
9
|
]);
|
|
10
10
|
export function makeUnavailableResponse(behavior, reason) {
|
|
11
11
|
return {
|
|
12
12
|
available: false,
|
|
13
13
|
behavior,
|
|
14
14
|
reason,
|
|
15
|
-
nextActions: [...WORKSPACE_UNAVAILABLE_NEXT_ACTIONS]
|
|
15
|
+
nextActions: [...WORKSPACE_UNAVAILABLE_NEXT_ACTIONS]
|
|
16
16
|
};
|
|
17
17
|
}
|
|
18
18
|
export function makeAvailableResponse(data) {
|
|
19
19
|
return {
|
|
20
20
|
available: true,
|
|
21
|
-
data
|
|
21
|
+
data
|
|
22
22
|
};
|
|
23
23
|
}
|
|
24
24
|
export function isUnavailableResponse(resp) {
|
|
@@ -66,9 +66,7 @@ export function applyStalePolicy(entries, options = {}) {
|
|
|
66
66
|
const ageDays = Math.max(0, Math.floor((now - parsed) / DAY_MS));
|
|
67
67
|
return { ...entry, stale, ageDays };
|
|
68
68
|
});
|
|
69
|
-
const filtered = includeStale
|
|
70
|
-
? annotated
|
|
71
|
-
: annotated.filter((entry) => !entry.stale);
|
|
69
|
+
const filtered = includeStale ? annotated : annotated.filter((entry) => !entry.stale);
|
|
72
70
|
return {
|
|
73
71
|
entries: filtered,
|
|
74
72
|
droppedCount: annotated.length - filtered.length,
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
// src/skills/peaks-maker/index.ts
|
|
2
|
-
import { readFileSync } from
|
|
3
|
-
import { fileURLToPath } from
|
|
4
|
-
import { dirname, join } from
|
|
2
|
+
import { readFileSync } from 'node:fs';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
import { dirname, join } from 'node:path';
|
|
5
5
|
function parseFrontmatter(md) {
|
|
6
6
|
const m = md.match(/^---\n([\s\S]+?)\n---\n([\s\S]*)$/);
|
|
7
7
|
if (!m)
|
|
8
|
-
throw new Error(
|
|
8
|
+
throw new Error('peaks-maker SKILL.md is missing YAML frontmatter');
|
|
9
9
|
const fm = {};
|
|
10
|
-
for (const line of m[1].split(
|
|
11
|
-
const i = line.indexOf(
|
|
10
|
+
for (const line of m[1].split('\n')) {
|
|
11
|
+
const i = line.indexOf(':');
|
|
12
12
|
if (i > 0)
|
|
13
13
|
fm[line.slice(0, i).trim()] = line.slice(i + 1).trim();
|
|
14
14
|
}
|
|
@@ -19,14 +19,14 @@ function parseFrontmatter(md) {
|
|
|
19
19
|
// so a missing/empty key surfaces as a clear error at module-load time.
|
|
20
20
|
const name = fm.name;
|
|
21
21
|
const description = fm.description;
|
|
22
|
-
if (typeof name !==
|
|
23
|
-
throw new Error(
|
|
22
|
+
if (typeof name !== 'string' || name.length === 0) {
|
|
23
|
+
throw new Error('peaks-maker SKILL.md is missing name or description in frontmatter');
|
|
24
24
|
}
|
|
25
|
-
if (typeof description !==
|
|
26
|
-
throw new Error(
|
|
25
|
+
if (typeof description !== 'string' || description.length === 0) {
|
|
26
|
+
throw new Error('peaks-maker SKILL.md is missing name or description in frontmatter');
|
|
27
27
|
}
|
|
28
28
|
return { name, description, body: m[2] };
|
|
29
29
|
}
|
|
30
30
|
const here = dirname(fileURLToPath(import.meta.url));
|
|
31
|
-
const md = readFileSync(join(here,
|
|
31
|
+
const md = readFileSync(join(here, 'SKILL.md'), 'utf-8');
|
|
32
32
|
export const peaksMakerManifest = parseFrontmatter(md);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "peaks-loop",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.1.1",
|
|
4
4
|
"description": "Loop Engineering CLI — workflow primitive / loop guards / evaluators / slice orchestration",
|
|
5
5
|
"author": "SquabbyZ",
|
|
6
6
|
"keywords": [
|
|
@@ -83,12 +83,27 @@
|
|
|
83
83
|
"schemas/*.json",
|
|
84
84
|
".claude-plugin/**",
|
|
85
85
|
"config/eslint/.peaks-rules.cjs",
|
|
86
|
+
"config/eslint/tsconfig.lint.json",
|
|
86
87
|
"contracts/test-style-contract.md",
|
|
87
88
|
"README.md",
|
|
88
89
|
"README-en.md",
|
|
89
90
|
"CHANGELOG.md",
|
|
90
91
|
"LICENSE"
|
|
91
92
|
],
|
|
93
|
+
"prettier": {
|
|
94
|
+
"singleQuote": true,
|
|
95
|
+
"semi": true,
|
|
96
|
+
"printWidth": 100,
|
|
97
|
+
"trailingComma": "none",
|
|
98
|
+
"endOfLine": "lf",
|
|
99
|
+
"arrowParens": "always",
|
|
100
|
+
"quoteProps": "as-needed"
|
|
101
|
+
},
|
|
102
|
+
"lint-staged": {
|
|
103
|
+
"*.{ts,tsx,mts,cts,mjs,cjs,js}": [
|
|
104
|
+
"node .husky/peaks-gate.mjs staged"
|
|
105
|
+
]
|
|
106
|
+
},
|
|
92
107
|
"engines": {
|
|
93
108
|
"node": ">=20.0.0"
|
|
94
109
|
},
|
|
@@ -102,10 +117,10 @@
|
|
|
102
117
|
"picomatch": "4.0.4",
|
|
103
118
|
"yaml": "^2.9.0",
|
|
104
119
|
"zod": "^4.4.3",
|
|
105
|
-
"peaks-loop-internal-runtime": "0.0.
|
|
106
|
-
"peaks-loop-
|
|
107
|
-
"peaks-loop-shared
|
|
108
|
-
"peaks-loop-
|
|
120
|
+
"peaks-loop-internal-runtime": "0.0.41",
|
|
121
|
+
"peaks-loop-mut": "0.1.55",
|
|
122
|
+
"peaks-loop-shared": "0.0.90",
|
|
123
|
+
"peaks-loop-shared-channel": "0.0.58"
|
|
109
124
|
},
|
|
110
125
|
"devDependencies": {
|
|
111
126
|
"@changesets/cli": "2.31.1",
|
|
@@ -122,19 +137,22 @@
|
|
|
122
137
|
"@vitest/coverage-v8": "^4.1.10",
|
|
123
138
|
"c8": "^10.1.3",
|
|
124
139
|
"eslint": "8.57.1",
|
|
140
|
+
"husky": "^9.1.7",
|
|
141
|
+
"lint-staged": "^15.5.2",
|
|
142
|
+
"prettier": "^3.9.8",
|
|
125
143
|
"tsx": "^4.19.2",
|
|
126
144
|
"typescript": "^5.7.2",
|
|
127
145
|
"vite": "^6.0.0",
|
|
128
146
|
"vitest": "^4.1.10"
|
|
129
147
|
},
|
|
130
148
|
"scripts": {
|
|
131
|
-
"build": "node ./scripts/sync-version.mjs && node ./scripts/clean-dist.mjs && pnpm -r --filter \"./packages/*\" run build && tsc -p tsconfig.build.json && node ./scripts/copy-templates.mjs && node ./scripts/check-build-integrity.mjs && node ./scripts/write-dist-stamp.mjs",
|
|
149
|
+
"build": "node ./scripts/sync-version.mjs && node ./scripts/clean-dist.mjs && pnpm -r --filter \"./packages/*\" run build && node ./scripts/write-package-dist-stamps.mjs && tsc -p tsconfig.build.json && node ./scripts/copy-templates.mjs && node ./scripts/check-build-integrity.mjs && node ./scripts/write-dist-stamp.mjs",
|
|
132
150
|
"prepublish": "node ./scripts/sync-version.mjs",
|
|
133
151
|
"postinstall": "node ./scripts/install-skills.mjs",
|
|
134
152
|
"predev": "node ./scripts/sync-version.mjs",
|
|
135
153
|
"dev": "tsx src/cli/index.ts",
|
|
136
154
|
"dev:watch": "node ./scripts/watch.mjs",
|
|
137
|
-
"pretest": "node ./scripts/sync-version.mjs && pnpm --filter
|
|
155
|
+
"pretest": "node ./scripts/sync-version.mjs && pnpm -r --filter \"./packages/*\" run build && node ./scripts/write-package-dist-stamps.mjs && node ./scripts/check-build-integrity.mjs",
|
|
138
156
|
"test": "vitest run",
|
|
139
157
|
"test:full": "pnpm -r --include-workspace-root --workspace-concurrency=2 run test",
|
|
140
158
|
"test:fast": "vitest run --maxWorkers=8 -t \"^((?!@slow|@integration|@replay).)*$\" tests/unit",
|
|
@@ -163,6 +181,11 @@
|
|
|
163
181
|
"mut:run": "peaks mut run --project . --out mut-report.json",
|
|
164
182
|
"mut:scan": "peaks mut asserts --in mut-report.json",
|
|
165
183
|
"audit:prose-ratio": "peaks audit prose-ratio --project .",
|
|
166
|
-
"dogfood:sediment": "bash scripts/dogfood-sediment-cycle.sh"
|
|
184
|
+
"dogfood:sediment": "bash scripts/dogfood-sediment-cycle.sh",
|
|
185
|
+
"lint": "node ./scripts/lint/run-lint.mjs",
|
|
186
|
+
"format:check": "prettier --check \"src/**/*.{ts,mts,mjs,js}\" \"tests/**/*.{ts,mts,mjs,js}\" \"packages/**/*.{ts,mts,mjs,js}\" \"scripts/**/*.{ts,mts,mjs,js}\"",
|
|
187
|
+
"format": "prettier --write \"src/**/*.{ts,mts,mjs,js}\" \"tests/**/*.{ts,mts,mjs,js}\" \"packages/**/*.{ts,mts,mjs,js}\" \"scripts/**/*.{ts,mts,mjs,js}\"",
|
|
188
|
+
"gate:staged": "node .husky/peaks-gate.mjs staged",
|
|
189
|
+
"gate:repo": "node .husky/peaks-gate.mjs repo"
|
|
167
190
|
}
|
|
168
191
|
}
|
package/scripts/clean-dist.mjs
CHANGED