peaks-loop 4.0.54 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +36 -0
- package/README-en.md +16 -1
- package/README.md +15 -1
- package/config/eslint/.peaks-rules.cjs +158 -13
- package/config/eslint/tsconfig.lint.json +47 -0
- package/dist/cli/cli-envelope.d.ts +114 -0
- package/dist/cli/cli-envelope.js +85 -0
- package/dist/cli/cli-helpers.d.ts +1 -1
- package/dist/cli/cli-helpers.js +8 -4
- package/dist/cli/commands/_cli-error-envelope.js +1 -1
- package/dist/cli/commands/_register.js +85 -38
- package/dist/cli/commands/_super.js +40 -7
- package/dist/cli/commands/adapter-commands-s2a.js +8 -7
- package/dist/cli/commands/adapter-commands.d.ts +2 -2
- package/dist/cli/commands/adapter-commands.js +7 -8
- package/dist/cli/commands/api-diff-commands.js +5 -4
- package/dist/cli/commands/asset-commands.d.ts +2 -2
- package/dist/cli/commands/asset-commands.js +135 -132
- package/dist/cli/commands/audit-commands.d.ts +1 -1
- package/dist/cli/commands/audit-commands.js +75 -32
- package/dist/cli/commands/autonomous-swarm-commands.d.ts +1 -1
- package/dist/cli/commands/autonomous-swarm-commands.js +14 -8
- package/dist/cli/commands/baseline-commands.js +34 -9
- package/dist/cli/commands/bee-commands.d.ts +1 -1
- package/dist/cli/commands/bee-commands.js +18 -21
- package/dist/cli/commands/best-practice-scan-command.js +6 -34
- package/dist/cli/commands/best-practice-scan-helpers.d.ts +12 -0
- package/dist/cli/commands/best-practice-scan-helpers.js +37 -0
- package/dist/cli/commands/capability-commands.d.ts +1 -1
- package/dist/cli/commands/capability-commands.js +14 -4
- package/dist/cli/commands/capability-worker-config-sc-commands.d.ts +1 -1
- package/dist/cli/commands/changeset-commands.js +21 -18
- package/dist/cli/commands/code-gate-command.js +9 -2
- package/dist/cli/commands/code-job-shape-commands-read-job-shape.d.ts +15 -0
- package/dist/cli/commands/code-job-shape-commands-read-job-shape.js +70 -0
- package/dist/cli/commands/code-job-shape-commands.js +21 -45
- package/dist/cli/commands/code-mode-gate-commands.d.ts +15 -1
- package/dist/cli/commands/code-mode-gate-commands.js +19 -199
- package/dist/cli/commands/code-mode-gate-plan-command.d.ts +14 -0
- package/dist/cli/commands/code-mode-gate-plan-command.js +23 -0
- package/dist/cli/commands/code-mode-gate-should-pause-command.d.ts +24 -0
- package/dist/cli/commands/code-mode-gate-should-pause-command.js +137 -0
- package/dist/cli/commands/code-mode-gate-should-pause-envelope.d.ts +59 -0
- package/dist/cli/commands/code-mode-gate-should-pause-envelope.js +144 -0
- package/dist/cli/commands/code-orchestrator-can-do.js +4 -4
- package/dist/cli/commands/code-review-commands.js +18 -3
- package/dist/cli/commands/code-run-command.js +44 -7
- package/dist/cli/commands/code-runtime-commands.d.ts +17 -0
- package/dist/cli/commands/code-runtime-commands.js +105 -73
- package/dist/cli/commands/codegraph-commands.js +11 -6
- package/dist/cli/commands/codegraph-status-command.js +6 -2
- package/dist/cli/commands/compact-command.js +52 -26
- package/dist/cli/commands/complexity-commands.js +6 -7
- package/dist/cli/commands/config-commands.d.ts +1 -1
- package/dist/cli/commands/config-commands.js +33 -9
- package/dist/cli/commands/container-commands.js +39 -15
- package/dist/cli/commands/context-commands.d.ts +1 -1
- package/dist/cli/commands/context-commands.js +40 -13
- package/dist/cli/commands/core/artifacts-command.js +11 -3
- package/dist/cli/commands/core/binding-commands.js +9 -6
- package/dist/cli/commands/core/doctor-command.js +7 -4
- package/dist/cli/commands/core/memory-command.js +47 -21
- package/dist/cli/commands/core/proxy-command.js +3 -1
- package/dist/cli/commands/core/session-command.js +16 -8
- package/dist/cli/commands/core/skill-command.js +31 -16
- package/dist/cli/commands/core/standards-command.js +55 -13
- package/dist/cli/commands/cron-commands-actions.d.ts +43 -0
- package/dist/cli/commands/cron-commands-actions.js +128 -0
- package/dist/cli/commands/cron-commands-schedule.d.ts +86 -0
- package/dist/cli/commands/cron-commands-schedule.js +151 -0
- package/dist/cli/commands/cron-commands.d.ts +35 -32
- package/dist/cli/commands/cron-commands.js +167 -211
- package/dist/cli/commands/cron-scheduler-commands.js +40 -20
- package/dist/cli/commands/cron-scheduler-persist.d.ts +110 -0
- package/dist/cli/commands/cron-scheduler-persist.js +171 -0
- package/dist/cli/commands/dashboard-long-run.js +45 -14
- package/dist/cli/commands/dashboard-summary.js +15 -5
- package/dist/cli/commands/dispatch-commands.js +65 -32
- package/dist/cli/commands/dispatch-from-dag.js +9 -10
- package/dist/cli/commands/doc-commands.js +8 -9
- package/dist/cli/commands/doctor/invoke-from-code.js +1 -1
- package/dist/cli/commands/e2e-verify-env.d.ts +19 -0
- package/dist/cli/commands/e2e-verify-env.js +19 -0
- package/dist/cli/commands/e2e-verify.d.ts +3 -14
- package/dist/cli/commands/e2e-verify.js +49 -29
- package/dist/cli/commands/ecc-commands.d.ts +1 -1
- package/dist/cli/commands/ecc-commands.js +8 -17
- package/dist/cli/commands/evidence-commands.js +10 -6
- package/dist/cli/commands/evolution-commands.d.ts +2 -2
- package/dist/cli/commands/evolution-commands.js +109 -115
- package/dist/cli/commands/feedback-commands-helpers.d.ts +22 -0
- package/dist/cli/commands/feedback-commands-helpers.js +33 -0
- package/dist/cli/commands/feedback-commands.js +15 -38
- package/dist/cli/commands/final-review-commands.d.ts +1 -1
- package/dist/cli/commands/final-review-commands.js +24 -22
- package/dist/cli/commands/fixture-commands.d.ts +1 -1
- package/dist/cli/commands/fixture-commands.js +17 -6
- package/dist/cli/commands/fork-commands-sync-verify.d.ts +12 -0
- package/dist/cli/commands/fork-commands-sync-verify.js +72 -0
- package/dist/cli/commands/fork-commands.js +19 -51
- package/dist/cli/commands/fresh-context-commands.js +3 -1
- package/dist/cli/commands/gate-commands-enforce.d.ts +82 -0
- package/dist/cli/commands/gate-commands-enforce.js +210 -0
- package/dist/cli/commands/gate-commands.d.ts +1 -1
- package/dist/cli/commands/gate-commands.js +85 -205
- package/dist/cli/commands/governance-classify-contract-commands.d.ts +1 -1
- package/dist/cli/commands/governance-classify-contract-commands.js +28 -17
- package/dist/cli/commands/heartbeat-commands-action.d.ts +7 -0
- package/dist/cli/commands/heartbeat-commands-action.js +192 -0
- package/dist/cli/commands/heartbeat-commands-validation.d.ts +57 -0
- package/dist/cli/commands/heartbeat-commands-validation.js +120 -0
- package/dist/cli/commands/heartbeat-commands.d.ts +27 -6
- package/dist/cli/commands/heartbeat-commands.js +19 -198
- package/dist/cli/commands/hook-handle.d.ts +1 -1
- package/dist/cli/commands/hook-handle.js +46 -13
- package/dist/cli/commands/hooks-commands.d.ts +1 -1
- package/dist/cli/commands/hooks-commands.js +18 -6
- package/dist/cli/commands/ide-commands.d.ts +1 -1
- package/dist/cli/commands/ide-commands.js +5 -3
- package/dist/cli/commands/impact-commands.js +8 -2
- package/dist/cli/commands/job-add-slice-command.d.ts +43 -0
- package/dist/cli/commands/job-add-slice-command.js +151 -0
- package/dist/cli/commands/job-commands.d.ts +64 -0
- package/dist/cli/commands/job-commands.js +134 -63
- package/dist/cli/commands/lease-metrics-commands-support.d.ts +73 -0
- package/dist/cli/commands/lease-metrics-commands-support.js +67 -0
- package/dist/cli/commands/lease-metrics-commands.d.ts +3 -44
- package/dist/cli/commands/lease-metrics-commands.js +21 -61
- package/dist/cli/commands/lease-stats-commands.d.ts +1 -1
- package/dist/cli/commands/lease-stats-commands.js +9 -6
- package/dist/cli/commands/lint-commands.d.ts +9 -3
- package/dist/cli/commands/lint-commands.js +15 -8
- package/dist/cli/commands/log-commands.d.ts +1 -1
- package/dist/cli/commands/log-commands.js +8 -6
- package/dist/cli/commands/loop-commands.d.ts +1 -1
- package/dist/cli/commands/loop-commands.js +50 -50
- package/dist/cli/commands/loop-eval-commands.d.ts +1 -1
- package/dist/cli/commands/loop-eval-commands.js +101 -30
- package/dist/cli/commands/memory-commands.js +21 -13
- package/dist/cli/commands/migrate-1-4-1-command.js +1 -1
- package/dist/cli/commands/migrate-v2-10-to-v2-11-command.js +2 -2
- package/dist/cli/commands/mut-commands-helpers.d.ts +30 -0
- package/dist/cli/commands/mut-commands-helpers.js +43 -0
- package/dist/cli/commands/mut-commands.js +16 -58
- package/dist/cli/commands/observability-commands-queries.d.ts +37 -0
- package/dist/cli/commands/observability-commands-queries.js +113 -0
- package/dist/cli/commands/observability-commands.d.ts +1 -1
- package/dist/cli/commands/observability-commands.js +7 -92
- package/dist/cli/commands/openspec-commands.d.ts +1 -1
- package/dist/cli/commands/openspec-commands.js +20 -8
- package/dist/cli/commands/outer-cache-commands.js +18 -7
- package/dist/cli/commands/perf-audit-commands.d.ts +1 -1
- package/dist/cli/commands/perf-audit-commands.js +12 -7
- package/dist/cli/commands/perf-commands.d.ts +1 -1
- package/dist/cli/commands/perf-commands.js +5 -5
- package/dist/cli/commands/playwright-commands.d.ts +1 -1
- package/dist/cli/commands/playwright-commands.js +20 -8
- package/dist/cli/commands/polyrepo-commands.js +21 -19
- package/dist/cli/commands/prd-blocks-commands.js +1 -3
- package/dist/cli/commands/prd-commands.d.ts +1 -1
- package/dist/cli/commands/prd-commands.js +8 -4
- package/dist/cli/commands/preferences-commands.js +13 -12
- package/dist/cli/commands/primer-command.js +5 -5
- package/dist/cli/commands/project-commands.d.ts +1 -1
- package/dist/cli/commands/project-commands.js +33 -9
- package/dist/cli/commands/qa-business-review-commands.js +16 -12
- package/dist/cli/commands/qa-commands.d.ts +1 -1
- package/dist/cli/commands/qa-commands.js +3 -5
- package/dist/cli/commands/release-commands.d.ts +3 -1
- package/dist/cli/commands/release-commands.js +33 -22
- package/dist/cli/commands/request-commands.js +47 -30
- package/dist/cli/commands/request-format-helpers.js +1 -1
- package/dist/cli/commands/retrospective-commands.d.ts +18 -11
- package/dist/cli/commands/retrospective-commands.js +24 -173
- package/dist/cli/commands/retrospective-index-command.d.ts +26 -0
- package/dist/cli/commands/retrospective-index-command.js +99 -0
- package/dist/cli/commands/retrospective-project-root.d.ts +9 -0
- package/dist/cli/commands/retrospective-project-root.js +15 -0
- package/dist/cli/commands/retrospective-search-command.d.ts +27 -0
- package/dist/cli/commands/retrospective-search-command.js +97 -0
- package/dist/cli/commands/retrospective-show-command.d.ts +23 -0
- package/dist/cli/commands/retrospective-show-command.js +80 -0
- package/dist/cli/commands/reviewer-commands.d.ts +1 -1
- package/dist/cli/commands/role-commands.js +14 -9
- package/dist/cli/commands/runtime-commands.js +14 -7
- package/dist/cli/commands/sc-commands.d.ts +1 -1
- package/dist/cli/commands/sc-commands.js +39 -6
- package/dist/cli/commands/scan-commands.js +36 -13
- package/dist/cli/commands/security-audit-commands.d.ts +1 -1
- package/dist/cli/commands/security-audit-commands.js +12 -7
- package/dist/cli/commands/sediment-commands.d.ts +2 -2
- package/dist/cli/commands/sediment-commands.js +146 -139
- package/dist/cli/commands/session-24h-mode.js +15 -2
- package/dist/cli/commands/session-checkpoint-command.js +1 -1
- package/dist/cli/commands/session-migrate-skill-name.js +1 -1
- package/dist/cli/commands/shadcn-commands.d.ts +1 -1
- package/dist/cli/commands/shadcn-commands.js +3 -1
- package/dist/cli/commands/share-commands.js +38 -39
- package/dist/cli/commands/skill-conformance-commands.d.ts +1 -1
- package/dist/cli/commands/skill-conformance-commands.js +1 -1
- package/dist/cli/commands/skill-loop-engineering-readiness-commands.js +16 -17
- package/dist/cli/commands/skill-visibility.js +2 -2
- package/dist/cli/commands/slice-commands.d.ts +1 -1
- package/dist/cli/commands/slice-commands.js +36 -12
- package/dist/cli/commands/slice-integrate-commands.js +6 -7
- package/dist/cli/commands/slice-review-commands-helpers.d.ts +26 -0
- package/dist/cli/commands/slice-review-commands-helpers.js +26 -0
- package/dist/cli/commands/slice-review-commands.js +16 -24
- package/dist/cli/commands/smoke-commands-add-path.d.ts +14 -0
- package/dist/cli/commands/smoke-commands-add-path.js +39 -0
- package/dist/cli/commands/smoke-commands-define.d.ts +18 -0
- package/dist/cli/commands/smoke-commands-define.js +97 -0
- package/dist/cli/commands/smoke-commands-run.d.ts +18 -0
- package/dist/cli/commands/smoke-commands-run.js +119 -0
- package/dist/cli/commands/smoke-commands.d.ts +10 -1
- package/dist/cli/commands/smoke-commands.js +17 -179
- package/dist/cli/commands/sop-commands.d.ts +1 -1
- package/dist/cli/commands/sop-commands.js +38 -10
- package/dist/cli/commands/statusline-commands.d.ts +1 -1
- package/dist/cli/commands/statusline-commands.js +21 -10
- package/dist/cli/commands/sub-agent/detached.js +3 -3
- package/dist/cli/commands/sub-agent-dispatch-guard.d.ts +1 -1
- package/dist/cli/commands/sub-agent-shared.js +1 -1
- package/dist/cli/commands/sub-agent-shutdown-commands.js +17 -9
- package/dist/cli/commands/swarm-commands.d.ts +1 -1
- package/dist/cli/commands/swarm-commands.js +13 -6
- package/dist/cli/commands/tech-commands-helpers.d.ts +37 -0
- package/dist/cli/commands/tech-commands-helpers.js +24 -0
- package/dist/cli/commands/tech-commands.d.ts +2 -29
- package/dist/cli/commands/tech-commands.js +15 -28
- package/dist/cli/commands/test-commands.js +27 -7
- package/dist/cli/commands/upgrade-commands.d.ts +1 -1
- package/dist/cli/commands/user-touchpoint-commands.js +1 -3
- package/dist/cli/commands/verdict-aggregate-command.d.ts +1 -1
- package/dist/cli/commands/verdict-aggregate-command.js +20 -7
- package/dist/cli/commands/vm-commands.js +48 -19
- package/dist/cli/commands/wave-plan-commands.js +5 -2
- package/dist/cli/commands/web-commands.js +14 -4
- package/dist/cli/commands/web-lifecycle-commands.js +5 -3
- package/dist/cli/commands/workflow-commands.d.ts +1 -1
- package/dist/cli/commands/workflow-commands.js +64 -29
- package/dist/cli/commands/workflow-lifecycle-commands.js +19 -17
- package/dist/cli/commands/workflow-plan-commands-actions.d.ts +20 -0
- package/dist/cli/commands/workflow-plan-commands-actions.js +115 -0
- package/dist/cli/commands/workflow-plan-commands-session.d.ts +17 -0
- package/dist/cli/commands/workflow-plan-commands-session.js +59 -0
- package/dist/cli/commands/workflow-plan-commands.d.ts +10 -21
- package/dist/cli/commands/workflow-plan-commands.js +15 -141
- package/dist/cli/commands/workspace/clean-command.js +4 -1
- package/dist/cli/commands/workspace/helpers.js +2 -1
- package/dist/cli/commands/workspace/init-command.js +80 -20
- package/dist/cli/commands/workspace/reconcile-command.js +3 -1
- package/dist/cli/commands/workspace-commands.d.ts +1 -1
- package/dist/cli/commands/workspace-commands.js +1 -1
- package/dist/cli/commands/worktree-auth-commands.d.ts +1 -1
- package/dist/cli/commands/worktree-auth-commands.js +16 -169
- package/dist/cli/commands/worktree-auth-grant-command.d.ts +14 -0
- package/dist/cli/commands/worktree-auth-grant-command.js +118 -0
- package/dist/cli/commands/worktree-auth-manage-commands.d.ts +17 -0
- package/dist/cli/commands/worktree-auth-manage-commands.js +128 -0
- package/dist/cli/commands/worktree-lease-commands.d.ts +1 -1
- package/dist/cli/commands/worktree-lease-commands.js +65 -37
- package/dist/cli/index.js +6 -2
- package/dist/cli/program.js +6 -3
- package/dist/hooks/pre-tool-use-sub-agent.js +1 -6
- package/dist/reporters/bdd-reporter.js +9 -3
- package/dist/services/24h-mode/auto-engage.d.ts +19 -0
- package/dist/services/24h-mode/auto-engage.js +35 -0
- package/dist/services/24h-mode/decider.js +5 -1
- package/dist/services/24h-mode/store.js +4 -2
- package/dist/services/adapter/adapter-registry.js +20 -8
- package/dist/services/adapter/adapter.d.ts +2 -2
- package/dist/services/adapter/auto-adapter.d.ts +2 -2
- package/dist/services/adapter/auto-adapter.js +1 -1
- package/dist/services/adapter/claude-adapter.d.ts +1 -1
- package/dist/services/adapter/claude-adapter.js +8 -8
- package/dist/services/adapter/codex-adapter.d.ts +2 -2
- package/dist/services/adapter/codex-adapter.js +20 -8
- package/dist/services/adapter/copilot-adapter.d.ts +2 -2
- package/dist/services/adapter/copilot-adapter.js +20 -8
- package/dist/services/artifacts/artifact-prerequisites.js +10 -8
- package/dist/services/artifacts/artifact-service.js +3 -1
- package/dist/services/artifacts/artifact-template-bodies.d.ts +12 -0
- package/dist/services/artifacts/artifact-template-bodies.js +165 -0
- package/dist/services/artifacts/artifact-templates.js +26 -168
- package/dist/services/artifacts/request-artifact-service.js +14 -7
- package/dist/services/artifacts/request-artifact-state-helpers.d.ts +3 -2
- package/dist/services/artifacts/request-artifact-state-helpers.js +3 -5
- package/dist/services/artifacts/workspace-artifact-helpers.d.ts +28 -0
- package/dist/services/artifacts/workspace-artifact-helpers.js +54 -0
- package/dist/services/artifacts/workspace-service.d.ts +3 -22
- package/dist/services/artifacts/workspace-service.js +10 -60
- package/dist/services/audit/artifact-writer.js +21 -21
- package/dist/services/audit/audit-goal-service.js +2 -2
- package/dist/services/audit/backing-detector.js +7 -4
- package/dist/services/audit/classifier.js +3 -3
- package/dist/services/audit/decision-writer.js +13 -9
- package/dist/services/audit/enforcers/active-skill-resolver.js +15 -7
- package/dist/services/audit/enforcers/design-draft-confirm.js +4 -4
- package/dist/services/audit/enforcers/lint-audit-regression.js +10 -5
- package/dist/services/audit/enforcers/lint-bee-runtime-contract.js +16 -8
- package/dist/services/audit/enforcers/lint-catalog-governance.js +8 -4
- package/dist/services/audit/enforcers/lint-output-style.js +4 -2
- package/dist/services/audit/enforcers/lint-peaks-code-runtime.js +8 -3
- package/dist/services/audit/enforcers/lint-peaks-skill-runtime.js +8 -3
- package/dist/services/audit/enforcers/lint-peaks-ui-sc-txt-runtime.js +20 -20
- package/dist/services/audit/enforcers/lint-prd-artifact-handoff.js +5 -5
- package/dist/services/audit/enforcers/lint-prd-source-snapshot.d.ts +1 -1
- package/dist/services/audit/enforcers/lint-prd-source-snapshot.js +5 -5
- package/dist/services/audit/enforcers/lint-qa-gateguard-and-runtime.js +10 -10
- package/dist/services/audit/enforcers/lint-rd-handoff-coverage.js +10 -8
- package/dist/services/audit/enforcers/lint-reference-shape.js +50 -18
- package/dist/services/audit/enforcers/lint-skill-presence-mandatory.js +5 -5
- package/dist/services/audit/enforcers/lint-style.js +44 -11
- package/dist/services/audit/enforcers/lint-workflow-shape.js +4 -2
- package/dist/services/audit/enforcers/login-gate.js +2 -6
- package/dist/services/audit/enforcers/mock-placement.js +2 -2
- package/dist/services/audit/enforcers/no-root-pollution.js +38 -9
- package/dist/services/audit/enforcers/pre-rd-scan.js +1 -1
- package/dist/services/audit/enforcers/prototype-fidelity.js +1 -1
- package/dist/services/audit/enforcers/resume-detection.js +5 -4
- package/dist/services/audit/prose-ratio-calculator.js +1 -1
- package/dist/services/audit/red-line-catalog-p2-a-bee-runtime.d.ts +39 -0
- package/dist/services/audit/red-line-catalog-p2-a-bee-runtime.js +205 -0
- package/dist/services/audit/red-line-catalog-p2-a-lint-style.d.ts +52 -0
- package/dist/services/audit/red-line-catalog-p2-a-lint-style.js +205 -0
- package/dist/services/audit/red-line-catalog-p2-a.js +3 -374
- package/dist/services/audit/red-line-catalog-p2-b.js +26 -26
- package/dist/services/audit/red-line-catalog.js +26 -38
- package/dist/services/audit/red-lines-service.js +64 -49
- package/dist/services/audit/scanners/openspec-scanner.js +2 -2
- package/dist/services/audit/scanners/rules-tree-scanner.js +2 -2
- package/dist/services/audit/scanners/skills-tree-scanner.js +2 -2
- package/dist/services/audit/static-service.js +3 -3
- package/dist/services/audit-independent/index.d.ts +2 -2
- package/dist/services/audit-independent/index.js +2 -2
- package/dist/services/audit-independent/perf-audit-service.js +19 -8
- package/dist/services/audit-independent/security-audit-service.js +31 -16
- package/dist/services/autonomous-swarm/autonomous-swarm-service.js +75 -46
- package/dist/services/best-practice/output-formatter.js +7 -1
- package/dist/services/capability-audit-service/cross-check.js +11 -5
- package/dist/services/capability-audit-service/runner.js +15 -7
- package/dist/services/capability-baseline/store.js +16 -4
- package/dist/services/capability-baseline/types.js +15 -3
- package/dist/services/capability-baseline/validator.js +43 -7
- package/dist/services/capability-guard-runner/contracts/J02.js +36 -6
- package/dist/services/capability-guard-runner/contracts/J03.js +20 -11
- package/dist/services/capability-guard-runner/contracts/J04.js +24 -15
- package/dist/services/capability-guard-runner/contracts/J05.js +26 -10
- package/dist/services/capability-guard-runner/contracts/J07.js +8 -2
- package/dist/services/capability-guard-runner/contracts/J08.js +22 -5
- package/dist/services/capability-guard-runner/contracts/J10.js +6 -2
- package/dist/services/capability-guard-runner/contracts/J11.d.ts +5 -0
- package/dist/services/capability-guard-runner/contracts/J11.js +14 -2
- package/dist/services/capability-guard-runner/contracts/J12.js +12 -3
- package/dist/services/capability-guard-runner/diff.js +1 -5
- package/dist/services/changeset/changeset-check-service.js +1 -3
- package/dist/services/classify/classify-service.js +20 -8
- package/dist/services/classify/classify-types.js +22 -9
- package/dist/services/code/auto-compact-lifecycle.js +62 -39
- package/dist/services/code/auto-compact-modes.js +2 -2
- package/dist/services/code/auto-compact-orchestrator.js +14 -9
- package/dist/services/code/batch-heartbeat-poller.d.ts +10 -0
- package/dist/services/code/batch-heartbeat-poller.js +17 -1
- package/dist/services/code/compact-event-settle-types.d.ts +80 -0
- package/dist/services/code/compact-event-settle-types.js +20 -0
- package/dist/services/code/compact-event-settle.d.ts +3 -68
- package/dist/services/code/compact-event-settle.js +14 -10
- package/dist/services/code/dag-orchestrator.js +32 -26
- package/dist/services/code/job-shape-decision.js +3 -1
- package/dist/services/code/mode-gate-types.d.ts +57 -0
- package/dist/services/code/mode-gate-types.js +67 -0
- package/dist/services/code/mode-gate.d.ts +4 -58
- package/dist/services/code/mode-gate.js +24 -60
- package/dist/services/code/orchestrator-can-do-advisories.d.ts +30 -0
- package/dist/services/code/orchestrator-can-do-advisories.js +81 -0
- package/dist/services/code/orchestrator-can-do-probes.d.ts +30 -0
- package/dist/services/code/orchestrator-can-do-probes.js +77 -0
- package/dist/services/code/orchestrator-can-do.d.ts +11 -22
- package/dist/services/code/orchestrator-can-do.js +37 -137
- package/dist/services/code/post-compact-checkpoint.d.ts +28 -0
- package/dist/services/code/post-compact-checkpoint.js +57 -0
- package/dist/services/code/post-compact-detector.js +16 -48
- package/dist/services/code/step-08-gate.d.ts +4 -3
- package/dist/services/code/step-08-gate.js +21 -9
- package/dist/services/code-review/ecc-bridge.js +23 -23
- package/dist/services/codegraph/codegraph-autorefresh.js +56 -39
- package/dist/services/codegraph/codegraph-config-repair-writer.js +4 -1
- package/dist/services/codegraph/codegraph-exclude-integrity.js +4 -1
- package/dist/services/codegraph/codegraph-exclude-repair.js +1 -2
- package/dist/services/codegraph/codegraph-index-integrity.js +1 -1
- package/dist/services/codegraph/codegraph-preflight-service.d.ts +3 -26
- package/dist/services/codegraph/codegraph-preflight-service.js +16 -37
- package/dist/services/codegraph/codegraph-preflight-structure.d.ts +32 -0
- package/dist/services/codegraph/codegraph-preflight-structure.js +33 -0
- package/dist/services/codegraph/codegraph-process-runner.js +12 -1
- package/dist/services/codegraph/codegraph-service.js +9 -1
- package/dist/services/compact/request-transition-hook.js +2 -1
- package/dist/services/compact/suggest-service.d.ts +3 -61
- package/dist/services/compact/suggest-service.js +9 -12
- package/dist/services/compact/suggest-types.d.ts +76 -0
- package/dist/services/compact/suggest-types.js +10 -0
- package/dist/services/compact-history/compact-history-service.js +2 -2
- package/dist/services/compact-statusline/compact-lifecycle-store.d.ts +2 -32
- package/dist/services/compact-statusline/compact-lifecycle-store.js +7 -12
- package/dist/services/compact-statusline/compact-lifecycle-types.d.ts +32 -0
- package/dist/services/compact-statusline/compact-lifecycle-types.js +8 -0
- package/dist/services/compact-statusline/compact-statusline-cell-table.d.ts +42 -0
- package/dist/services/compact-statusline/compact-statusline-cell-table.js +63 -0
- package/dist/services/compact-statusline/compact-statusline-service.d.ts +4 -21
- package/dist/services/compact-statusline/compact-statusline-service.js +9 -101
- package/dist/services/compact-statusline/compact-statusline-state.d.ts +4 -0
- package/dist/services/compact-statusline/compact-statusline-state.js +50 -0
- package/dist/services/config/config-migration.js +2 -2
- package/dist/services/config/config-restore.js +1 -1
- package/dist/services/config/config-rollback.js +1 -1
- package/dist/services/config/config-safety.js +28 -10
- package/dist/services/config/config-service.js +114 -31
- package/dist/services/config/model-routing.js +5 -2
- package/dist/services/config/proxy-service.js +6 -1
- package/dist/services/config/workspace-state-service.js +17 -5
- package/dist/services/context/auto-compact-dispatcher-input.d.ts +38 -0
- package/dist/services/context/auto-compact-dispatcher-input.js +9 -0
- package/dist/services/context/auto-compact-dispatcher.d.ts +2 -30
- package/dist/services/context/auto-compact-reader-input.d.ts +30 -0
- package/dist/services/context/auto-compact-reader-input.js +8 -0
- package/dist/services/context/auto-compact-reader.d.ts +2 -24
- package/dist/services/context/auto-compact-reader.js +4 -1
- package/dist/services/context/auto-compact-thresholds.d.ts +54 -0
- package/dist/services/context/auto-compact-thresholds.js +19 -0
- package/dist/services/context/auto-compact-types.d.ts +2 -46
- package/dist/services/context/auto-compact-types.js +1 -11
- package/dist/services/context/build-dispatch-system-prompt.js +2 -2
- package/dist/services/context/collector.js +8 -10
- package/dist/services/context/context-audit-hint.js +7 -5
- package/dist/services/context/context-audit-keys.d.ts +15 -0
- package/dist/services/context/context-audit-keys.js +77 -0
- package/dist/services/context/context-audit-limits.d.ts +20 -0
- package/dist/services/context/context-audit-limits.js +31 -0
- package/dist/services/context/context-audit-scan.d.ts +19 -0
- package/dist/services/context/context-audit-scan.js +246 -0
- package/dist/services/context/context-audit-types.d.ts +65 -0
- package/dist/services/context/context-audit-types.js +10 -0
- package/dist/services/context/context-audit.d.ts +13 -59
- package/dist/services/context/context-audit.js +38 -254
- package/dist/services/context/context-builder.js +4 -4
- package/dist/services/context/context-schema.d.ts +1 -1
- package/dist/services/context/context-schema.js +13 -13
- package/dist/services/context/doc-retriever.js +2 -2
- package/dist/services/context/harness-context-witness.js +43 -24
- package/dist/services/context/harness-window-config.js +27 -7
- package/dist/services/context/ide-detect.js +2 -1
- package/dist/services/context/index.d.ts +1 -1
- package/dist/services/context/memory-index-reader.js +3 -9
- package/dist/services/context/memory-preflight-config.js +3 -5
- package/dist/services/context/memory-preflight-service.d.ts +2 -20
- package/dist/services/context/memory-preflight-service.js +37 -68
- package/dist/services/context/memory-preflight-support.d.ts +48 -0
- package/dist/services/context/memory-preflight-support.js +56 -0
- package/dist/services/context/post-compact-reinjection.js +3 -3
- package/dist/services/context/renderer.js +7 -3
- package/dist/services/context/spillover-store.js +3 -1
- package/dist/services/context/summary-view.js +1 -1
- package/dist/services/context/threshold.js +2 -2
- package/dist/services/context/tokenizer.js +3 -3
- package/dist/services/crystallization/crystallization-brief-schema.d.ts +80 -0
- package/dist/services/crystallization/crystallization-brief-schema.js +159 -0
- package/dist/services/crystallization/crystallization-service.d.ts +7 -7
- package/dist/services/crystallization/crystallization-service.js +56 -55
- package/dist/services/crystallization/crystallization-store.d.ts +2 -2
- package/dist/services/crystallization/crystallization-store.js +37 -20
- package/dist/services/crystallization/crystallization-types.d.ts +4 -56
- package/dist/services/crystallization/crystallization-types.js +31 -184
- package/dist/services/crystallization/evidence-brief-builder.d.ts +3 -3
- package/dist/services/crystallization/evidence-brief-builder.js +32 -38
- package/dist/services/crystallization/index.d.ts +4 -4
- package/dist/services/crystallization/index.js +4 -4
- package/dist/services/dashboard/project-dashboard-service.js +7 -1
- package/dist/services/dispatch/await-batch-helpers.d.ts +55 -0
- package/dist/services/dispatch/await-batch-helpers.js +206 -0
- package/dist/services/dispatch/await-batch.d.ts +50 -7
- package/dist/services/dispatch/await-batch.js +97 -194
- package/dist/services/dispatch/batch-counter.js +2 -1
- package/dist/services/dispatch/conflict-replay.js +2 -2
- package/dist/services/dispatch/contract-store.js +5 -2
- package/dist/services/dispatch/dispatch-record-input-types.d.ts +81 -0
- package/dist/services/dispatch/dispatch-record-input-types.js +1 -0
- package/dist/services/dispatch/dispatch-record-types.d.ts +6 -73
- package/dist/services/dispatch/dispatch-record-upgrade-fields.d.ts +72 -0
- package/dist/services/dispatch/dispatch-record-upgrade-fields.js +242 -0
- package/dist/services/dispatch/dispatch-record-upgrade-guards.d.ts +15 -0
- package/dist/services/dispatch/dispatch-record-upgrade-guards.js +55 -0
- package/dist/services/dispatch/dispatch-record-upgrade.d.ts +2 -4
- package/dist/services/dispatch/dispatch-record-upgrade.js +21 -213
- package/dist/services/dispatch/dispatch-record-writer.js +54 -26
- package/dist/services/dispatch/dispatch-sub-agent.js +7 -2
- package/dist/services/dispatch/e2e-fixtures.js +1 -1
- package/dist/services/dispatch/isolation-lease.js +39 -17
- package/dist/services/dispatch/merge-back-runner.js +51 -11
- package/dist/services/dispatch/service-shutdown.js +4 -1
- package/dist/services/dispatch/slice-dag-types.d.ts +116 -0
- package/dist/services/dispatch/slice-dag-types.js +41 -0
- package/dist/services/dispatch/slice-dag.d.ts +3 -109
- package/dist/services/dispatch/slice-dag.js +13 -36
- package/dist/services/dispatch/sub-agent-batch-await.d.ts +47 -0
- package/dist/services/dispatch/sub-agent-batch-await.js +73 -0
- package/dist/services/dispatch/sub-agent-dispatcher-types.d.ts +122 -0
- package/dist/services/dispatch/sub-agent-dispatcher-types.js +12 -0
- package/dist/services/dispatch/sub-agent-dispatcher.d.ts +3 -145
- package/dist/services/dispatch/sub-agent-dispatcher.js +14 -70
- package/dist/services/dispatch/test-tool-detection.js +12 -1
- package/dist/services/doc/doc-generator.js +19 -4
- package/dist/services/doctor/doctor-service/checks/check-id-schema.js +16 -8
- package/dist/services/doctor/doctor-service/checks/codegraph-capability.d.ts +7 -2
- package/dist/services/doctor/doctor-service/checks/codegraph-capability.js +26 -8
- package/dist/services/doctor/doctor-service/checks/codegraph-exclude-integrity.js +16 -8
- package/dist/services/doctor/doctor-service/checks/codegraph-index-integrity.js +16 -8
- package/dist/services/doctor/doctor-service/checks/dist-source-version.js +18 -9
- package/dist/services/doctor/doctor-service/checks/ecc-hooks-schema-drift.js +20 -10
- package/dist/services/doctor/doctor-service/checks/gateguard-conflict.js +18 -9
- package/dist/services/doctor/doctor-service/checks/l3-memory-health.js +25 -11
- package/dist/services/doctor/doctor-service/checks/l3-orphan-sessions.js +12 -6
- package/dist/services/doctor/doctor-service/checks/multi-binary-drift.d.ts +7 -16
- package/dist/services/doctor/doctor-service/checks/multi-binary-drift.js +50 -70
- package/dist/services/doctor/doctor-service/checks/schema-validity.js +5 -1
- package/dist/services/doctor/doctor-service/checks/skill-presence.js +4 -2
- package/dist/services/doctor/doctor-service/checks/statusline-install.js +8 -4
- package/dist/services/doctor/doctor-service/checks/statusline-runtime.js +8 -4
- package/dist/services/doctor/doctor-service/checks/user-config.js +4 -2
- package/dist/services/doctor/doctor-service/checks/workspace-init.js +8 -4
- package/dist/services/doctor/doctor-service/checks/workspace-layout.js +19 -11
- package/dist/services/doctor/doctor-service/index.js +4 -2
- package/dist/services/doctor/doctor-service/multi-binary-drift-helpers.d.ts +40 -0
- package/dist/services/doctor/doctor-service/multi-binary-drift-helpers.js +49 -0
- package/dist/services/doctor/doctor-service/plugin-registry.js +1 -1
- package/dist/services/doctor/doctor-service/probe-types.d.ts +210 -0
- package/dist/services/doctor/doctor-service/probe-types.js +14 -0
- package/dist/services/doctor/doctor-service/types.d.ts +7 -197
- package/dist/services/doctor/index.d.ts +1 -1
- package/dist/services/doctor/index.js +1 -1
- package/dist/services/env/shell-probe.js +8 -2
- package/dist/services/evidence/evidence-body-builders.d.ts +23 -0
- package/dist/services/evidence/evidence-body-builders.js +197 -0
- package/dist/services/evidence/evidence-generator.js +6 -187
- package/dist/services/evolution/evolution-constraints.d.ts +43 -0
- package/dist/services/evolution/evolution-constraints.js +54 -0
- package/dist/services/evolution/evolution-evaluation-schema.d.ts +43 -0
- package/dist/services/evolution/evolution-evaluation-schema.js +43 -0
- package/dist/services/evolution/evolution-service.d.ts +6 -6
- package/dist/services/evolution/evolution-service.js +58 -58
- package/dist/services/evolution/evolution-store.d.ts +2 -2
- package/dist/services/evolution/evolution-store.js +37 -51
- package/dist/services/evolution/evolution-types.d.ts +2 -22
- package/dist/services/evolution/evolution-types.js +41 -101
- package/dist/services/evolution/independent-evaluator-runner.d.ts +3 -3
- package/dist/services/evolution/independent-evaluator-runner.js +20 -22
- package/dist/services/evolution/regression-skeptic-runner.d.ts +2 -2
- package/dist/services/evolution/regression-skeptic-runner.js +18 -18
- package/dist/services/feedback/feedback-promotion-service.js +48 -12
- package/dist/services/feedback/promotion-artifact-evidence.d.ts +2 -16
- package/dist/services/feedback/promotion-artifact-evidence.js +6 -83
- package/dist/services/feedback/promotion-artifact-json-evidence.d.ts +29 -0
- package/dist/services/feedback/promotion-artifact-json-evidence.js +39 -0
- package/dist/services/feedback/promotion-source-comments.d.ts +47 -0
- package/dist/services/feedback/promotion-source-comments.js +61 -0
- package/dist/services/final-review/final-review-contract.d.ts +26 -0
- package/dist/services/final-review/final-review-contract.js +14 -0
- package/dist/services/final-review/final-review-delivery.d.ts +63 -0
- package/dist/services/final-review/final-review-delivery.js +124 -0
- package/dist/services/final-review/final-review-evidence-budget.d.ts +125 -0
- package/dist/services/final-review/final-review-evidence-budget.js +218 -0
- package/dist/services/final-review/final-review-evidence-collect.d.ts +4 -0
- package/dist/services/final-review/final-review-evidence-collect.js +230 -0
- package/dist/services/final-review/final-review-evidence-sources.d.ts +138 -0
- package/dist/services/final-review/final-review-evidence-sources.js +139 -0
- package/dist/services/final-review/final-review-fifth-dim.d.ts +8 -0
- package/dist/services/final-review/final-review-fifth-dim.js +20 -0
- package/dist/services/final-review/final-review-gates.d.ts +119 -0
- package/dist/services/final-review/final-review-gates.js +214 -0
- package/dist/services/final-review/final-review-output-budget.d.ts +88 -0
- package/dist/services/final-review/final-review-output-budget.js +161 -0
- package/dist/services/final-review/final-review-prompt.d.ts +35 -0
- package/dist/services/final-review/final-review-prompt.js +112 -0
- package/dist/services/final-review/final-review-reviewer.d.ts +57 -0
- package/dist/services/final-review/final-review-reviewer.js +95 -0
- package/dist/services/final-review/final-review-runner.d.ts +3 -0
- package/dist/services/final-review/final-review-runner.js +158 -0
- package/dist/services/final-review/final-review-service.d.ts +119 -373
- package/dist/services/final-review/final-review-service.js +48 -1380
- package/dist/services/final-review/final-review-verdicts.d.ts +60 -0
- package/dist/services/final-review/final-review-verdicts.js +91 -0
- package/dist/services/final-review/index.d.ts +3 -3
- package/dist/services/final-review/index.js +2 -2
- package/dist/services/final-review/pre-post-diff.js +32 -29
- package/dist/services/fixture/fixture-capture-service.js +14 -6
- package/dist/services/fresh-context/trigger-scan.js +13 -2
- package/dist/services/fuzzy-matching/fuzzy-match-service.js +1 -1
- package/dist/services/fuzzy-matching/fzf-pick-service.js +6 -1
- package/dist/services/hooks/pre-tool-code-gate.js +2 -2
- package/dist/services/hooks/presence-marker-detector.js +12 -2
- package/dist/services/hooks/worktree-authorization-gate.js +21 -7
- package/dist/services/ide/adapters/claude-code-adapter.js +30 -17
- package/dist/services/ide/adapters/codex-adapter.js +3 -5
- package/dist/services/ide/adapters/cursor-adapter.js +3 -5
- package/dist/services/ide/adapters/hermes-adapter.js +2 -4
- package/dist/services/ide/adapters/openclaw-adapter.js +2 -4
- package/dist/services/ide/adapters/qoder-adapter.js +2 -4
- package/dist/services/ide/adapters/tongyi-lingma-adapter.js +1 -1
- package/dist/services/ide/adapters/trae-adapter.js +3 -5
- package/dist/services/ide/adapters/zcode-adapter.js +8 -7
- package/dist/services/ide/current-model-detector.js +2 -1
- package/dist/services/ide/ide-compact-types.d.ts +153 -0
- package/dist/services/ide/ide-compact-types.js +1 -0
- package/dist/services/ide/ide-registry.js +1 -1
- package/dist/services/ide/ide-types.d.ts +7 -145
- package/dist/services/ide/resource-profile.js +1 -1
- package/dist/services/ide/shared/atomic-json.js +2 -1
- package/dist/services/impact/impact-scan-service.js +12 -5
- package/dist/services/job/job-commit-verification.d.ts +73 -0
- package/dist/services/job/job-commit-verification.js +72 -0
- package/dist/services/job/job-orchestrator.d.ts +42 -0
- package/dist/services/job/job-orchestrator.js +110 -10
- package/dist/services/job/job-progress-store.d.ts +75 -5
- package/dist/services/job/job-progress-store.js +83 -6
- package/dist/services/job/job-rotation.d.ts +1 -1
- package/dist/services/job/job-rotation.js +5 -1
- package/dist/services/job/job-state-store.js +2 -2
- package/dist/services/job/job-types.js +49 -20
- package/dist/services/job/subagent-job-wrapper.d.ts +1 -1
- package/dist/services/job/subagent-job-wrapper.js +5 -1
- package/dist/services/job-snapshot/snapshot.js +2 -2
- package/dist/services/karpathy-cost/karpathy-cost-check-service.js +23 -13
- package/dist/services/legacy/legacy-detector.js +51 -5
- package/dist/services/lint/detect-eslint.js +10 -4
- package/dist/services/lint/detect-ocr-18.js +11 -3
- package/dist/services/lint/eslint-runner-support.d.ts +22 -0
- package/dist/services/lint/eslint-runner-support.js +185 -0
- package/dist/services/lint/eslint-runner-types.d.ts +69 -0
- package/dist/services/lint/eslint-runner-types.js +11 -0
- package/dist/services/lint/eslint-runner.d.ts +4 -56
- package/dist/services/lint/eslint-runner.js +24 -178
- package/dist/services/lint/npx-resolver.js +1 -3
- package/dist/services/lint/ocr-18-acquire.js +15 -4
- package/dist/services/lint/ocr-multilang-adapter.js +4 -5
- package/dist/services/llm/anthropic-runner.js +4 -1
- package/dist/services/log/log-commands-service.js +2 -6
- package/dist/services/log/logger.js +15 -12
- package/dist/services/log/retention.js +3 -2
- package/dist/services/loop/evaluator-dispatcher.js +78 -42
- package/dist/services/loop/loop-bee-relation-service.d.ts +4 -4
- package/dist/services/loop/loop-bee-relation-service.js +36 -40
- package/dist/services/loop/loop-bee-relation-store.d.ts +3 -3
- package/dist/services/loop/loop-bee-relation-store.js +9 -11
- package/dist/services/loop/loop-bee-relation-types.d.ts +1 -1
- package/dist/services/loop/loop-bee-relation-types.js +14 -25
- package/dist/services/loop/loop-release-service.d.ts +2 -2
- package/dist/services/loop/loop-release-service.js +3 -3
- package/dist/services/loop/loop-release-store.d.ts +2 -2
- package/dist/services/loop/loop-release-store.js +4 -6
- package/dist/services/loop/loop-release-types.d.ts +1 -1
- package/dist/services/loop/loop-release-types.js +21 -31
- package/dist/services/loop/monotonic-guard-types.d.ts +51 -0
- package/dist/services/loop/monotonic-guard-types.js +9 -0
- package/dist/services/loop/monotonic-guard.d.ts +2 -43
- package/dist/services/loop/monotonic-runner-types.d.ts +63 -0
- package/dist/services/loop/monotonic-runner-types.js +17 -0
- package/dist/services/loop/monotonic-runner.d.ts +3 -34
- package/dist/services/loop/monotonic-runner.js +10 -20
- package/dist/services/loop/run-driver.js +16 -8
- package/dist/services/loop/spec-service.d.ts +0 -5
- package/dist/services/loop/spec-service.js +49 -9
- package/dist/services/memory/llm-reranker-core.d.ts +108 -0
- package/dist/services/memory/llm-reranker-core.js +105 -0
- package/dist/services/memory/llm-reranker.d.ts +3 -94
- package/dist/services/memory/llm-reranker.js +13 -102
- package/dist/services/memory/memory-ingest-service.d.ts +1 -22
- package/dist/services/memory/memory-ingest-service.js +29 -76
- package/dist/services/memory/memory-ingest-support.d.ts +23 -0
- package/dist/services/memory/memory-ingest-support.js +81 -0
- package/dist/services/memory/memory-rotate-service.js +41 -8
- package/dist/services/memory/memory-search-service.js +8 -4
- package/dist/services/memory/project-context-service.js +26 -5
- package/dist/services/memory/project-memory-service/index/kind-dispatch.d.ts +2 -7
- package/dist/services/memory/project-memory-service/index/kind-dispatch.js +17 -136
- package/dist/services/memory/project-memory-service/index/project-memory-plan-exec.d.ts +7 -0
- package/dist/services/memory/project-memory-service/index/project-memory-plan-exec.js +150 -0
- package/dist/services/memory/project-memory-service/index/ranking.js +6 -3
- package/dist/services/memory/project-memory-service/index/reindex.js +14 -5
- package/dist/services/memory/project-memory-service/memory-kinds.d.ts +31 -0
- package/dist/services/memory/project-memory-service/memory-kinds.js +87 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter-parse.d.ts +24 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter-parse.js +104 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter.d.ts +2 -24
- package/dist/services/memory/project-memory-service/parsers/frontmatter.js +28 -79
- package/dist/services/memory/project-memory-service/parsers/markdown-pure.js +15 -3
- package/dist/services/memory/project-memory-service/store/atomic-write.js +34 -22
- package/dist/services/memory/project-memory-service/store/paths.js +2 -1
- package/dist/services/memory/project-memory-service/types.d.ts +3 -31
- package/dist/services/memory/project-memory-service/types.js +1 -76
- package/dist/services/migrate-skill-name/migrate.js +1 -1
- package/dist/services/migrate-skill-name/schema.js +1 -1
- package/dist/services/mode/mode-enforcement.js +4 -2
- package/dist/services/mode/mode-status-service.d.ts +27 -9
- package/dist/services/mode/mode-status-service.js +64 -12
- package/dist/services/observability/aggregation-helpers.d.ts +22 -0
- package/dist/services/observability/aggregation-helpers.js +65 -0
- package/dist/services/observability/aggregation-types.d.ts +66 -0
- package/dist/services/observability/aggregation-types.js +34 -0
- package/dist/services/observability/aggregation.d.ts +5 -53
- package/dist/services/observability/aggregation.js +17 -80
- package/dist/services/observability/jsonl-store.js +2 -1
- package/dist/services/observability/observability-schema.d.ts +71 -0
- package/dist/services/observability/observability-schema.js +64 -0
- package/dist/services/observability/observability-service.d.ts +3 -56
- package/dist/services/observability/observability-service.js +9 -49
- package/dist/services/openspec/coverage-evidence-reader.js +18 -11
- package/dist/services/openspec/openspec-archive-service.js +31 -24
- package/dist/services/openspec/openspec-init-service.js +8 -2
- package/dist/services/openspec/openspec-propose-from-doctor-service.js +1 -1
- package/dist/services/openspec/openspec-scan-service.js +4 -1
- package/dist/services/openspec/openspec-validate-service.js +26 -5
- package/dist/services/perf/perf-baseline-service.js +2 -6
- package/dist/services/polyrepo/polyrepo-dispatcher.js +2 -1
- package/dist/services/polyrepo/polyrepo-scanner.js +4 -1
- package/dist/services/prd/handoff-frontmatter-shape.d.ts +42 -0
- package/dist/services/prd/handoff-frontmatter-shape.js +67 -0
- package/dist/services/prd/handoff-frontmatter.js +1 -1
- package/dist/services/prd/handoff-path-resolution.d.ts +37 -0
- package/dist/services/prd/handoff-path-resolution.js +101 -0
- package/dist/services/prd/handoff-service.d.ts +1 -37
- package/dist/services/prd/handoff-service.js +16 -148
- package/dist/services/prd/prd-blocks-checker.js +28 -8
- package/dist/services/prd/project-scan-bootstrap-service.js +1 -5
- package/dist/services/prd/project-scan-reader.js +1 -4
- package/dist/services/prd/project-scan-sediment.js +1 -4
- package/dist/services/preferences/preferences-service.js +6 -8
- package/dist/services/preferences/preferences-types.js +4 -4
- package/dist/services/qa/bdd-test-style-contract.d.ts +41 -0
- package/dist/services/qa/bdd-test-style-contract.js +37 -0
- package/dist/services/qa/bdd-test-style-verifier.d.ts +2 -24
- package/dist/services/qa/bdd-test-style-verifier.js +5 -31
- package/dist/services/qa/browser-event-logger.js +2 -1
- package/dist/services/qa/qa-business-review-state.js +20 -5
- package/dist/services/qa/screenshot-archive-service.js +1 -3
- package/dist/services/rd/ast-gate.js +2 -2
- package/dist/services/rd/impl.js +1 -1
- package/dist/services/rd/rd-service.js +117 -43
- package/dist/services/rd/reviewer-dispatch-policy.js +4 -7
- package/dist/services/rd/standards-diagnostic.js +4 -1
- package/dist/services/rd/strategy.js +10 -3
- package/dist/services/rd/tactical-stage.js +2 -2
- package/dist/services/rd/types.js +9 -7
- package/dist/services/rd-swarm/rd-swarm-service.d.ts +2 -45
- package/dist/services/rd-swarm/rd-swarm-service.js +140 -21
- package/dist/services/rd-swarm/rd-swarm-types.d.ts +54 -0
- package/dist/services/rd-swarm/rd-swarm-types.js +10 -0
- package/dist/services/recommendations/capability-map-service.js +10 -2
- package/dist/services/recommendations/capability-seed-items.js +81 -14
- package/dist/services/recommendations/capability-seed-mappings.js +420 -48
- package/dist/services/recommendations/capability-seed-sources-mcp-server.d.ts +9 -0
- package/dist/services/recommendations/capability-seed-sources-mcp-server.js +233 -0
- package/dist/services/recommendations/capability-seed-sources.js +127 -32
- package/dist/services/release/release-state.d.ts +2 -2
- package/dist/services/release/release-state.js +44 -15
- package/dist/services/release/version-precheck-layer-changeset.d.ts +2 -0
- package/dist/services/release/version-precheck-layer-changeset.js +43 -0
- package/dist/services/release/version-precheck-service.d.ts +11 -36
- package/dist/services/release/version-precheck-service.js +20 -104
- package/dist/services/release/version-precheck-support.d.ts +53 -0
- package/dist/services/release/version-precheck-support.js +64 -0
- package/dist/services/retrospective/retrospective-index.js +17 -3
- package/dist/services/retrospective/retrospective-search-service.js +6 -2
- package/dist/services/retrospective/retrospective-show.js +4 -1
- package/dist/services/reviewer/model-family.js +7 -1
- package/dist/services/reviewer/providers/anthropic.d.ts +5 -0
- package/dist/services/reviewer/providers/anthropic.js +10 -1
- package/dist/services/reviewer/providers/openai.d.ts +5 -0
- package/dist/services/reviewer/providers/openai.js +10 -1
- package/dist/services/reviewer/reviewer-config.js +4 -2
- package/dist/services/reviewer/reviewer-service.d.ts +2 -36
- package/dist/services/reviewer/reviewer-service.js +2 -1
- package/dist/services/reviewer/reviewer-types.d.ts +43 -0
- package/dist/services/reviewer/reviewer-types.js +1 -0
- package/dist/services/role/role-registry.js +9 -1
- package/dist/services/runtime/runtime-detector.js +4 -1
- package/dist/services/runtime/vendors/claude-code.js +14 -6
- package/dist/services/runtime/vendors/codex.js +11 -3
- package/dist/services/runtime/vendors/copilot.js +11 -3
- package/dist/services/sc/sc-service.js +28 -15
- package/dist/services/scan/acceptance-coverage-service.js +4 -1
- package/dist/services/scan/api-diff-openapi-schema-read.d.ts +67 -0
- package/dist/services/scan/api-diff-openapi-schema-read.js +154 -0
- package/dist/services/scan/api-diff-openapi.d.ts +16 -2
- package/dist/services/scan/api-diff-openapi.js +19 -123
- package/dist/services/scan/api-diff-recorded.js +16 -3
- package/dist/services/scan/api-diff-service.js +49 -16
- package/dist/services/scan/api-diff-types.js +12 -3
- package/dist/services/scan/api-surface-helpers.d.ts +13 -0
- package/dist/services/scan/api-surface-helpers.js +31 -0
- package/dist/services/scan/api-surface-service.d.ts +2 -45
- package/dist/services/scan/api-surface-service.js +15 -26
- package/dist/services/scan/api-surface-types.d.ts +54 -0
- package/dist/services/scan/api-surface-types.js +10 -0
- package/dist/services/scan/archetype-detection.d.ts +37 -0
- package/dist/services/scan/archetype-detection.js +142 -0
- package/dist/services/scan/archetype-service.js +36 -125
- package/dist/services/scan/diff-scope-service.js +35 -15
- package/dist/services/scan/existing-system-service.js +16 -99
- package/dist/services/scan/existing-system-visual-tokens.d.ts +20 -0
- package/dist/services/scan/existing-system-visual-tokens.js +123 -0
- package/dist/services/scan/file-size-policy.d.ts +86 -0
- package/dist/services/scan/file-size-policy.js +184 -0
- package/dist/services/scan/file-size-scan.d.ts +30 -3
- package/dist/services/scan/file-size-scan.js +47 -9
- package/dist/services/scan/karpathy-service.js +6 -1
- package/dist/services/scan/orphan-service.js +86 -20
- package/dist/services/scan/type-sanity-service.js +104 -10
- package/dist/services/sediment/dispose-confirm.d.ts +2 -2
- package/dist/services/sediment/dispose-confirm.js +2 -2
- package/dist/services/sediment/json-schema.d.ts +1 -1
- package/dist/services/sediment/json-schema.js +25 -13
- package/dist/services/sediment/manifest-lint.d.ts +1 -12
- package/dist/services/sediment/manifest-lint.js +1 -7
- package/dist/services/sediment/pool-paths.js +13 -9
- package/dist/services/sediment/pool-read.d.ts +1 -1
- package/dist/services/sediment/pool-read.js +42 -18
- package/dist/services/sediment/pool-rebuild-index.d.ts +1 -1
- package/dist/services/sediment/pool-rebuild-index.js +5 -5
- package/dist/services/sediment/pool-write.d.ts +1 -1
- package/dist/services/sediment/pool-write.js +7 -7
- package/dist/services/sediment/promotion-gate.d.ts +1 -1
- package/dist/services/sediment/promotion-gate.js +9 -9
- package/dist/services/sediment/types.d.ts +8 -8
- package/dist/services/session/binding-status-service.js +14 -4
- package/dist/services/session/caller-binding-service.js +2 -1
- package/dist/services/session/getSessionDir.js +4 -1
- package/dist/services/session/index.d.ts +1 -1
- package/dist/services/session/index.js +1 -1
- package/dist/services/session/resolve-caller-id.js +7 -5
- package/dist/services/session/session-binding-bridge.js +26 -25
- package/dist/services/session/session-checkpoint-service.js +1 -1
- package/dist/services/session/session-file-schema.d.ts +70 -0
- package/dist/services/session/session-file-schema.js +68 -0
- package/dist/services/session/session-manager.d.ts +6 -6
- package/dist/services/session/session-manager.js +30 -29
- package/dist/services/session/session-resume-service.js +2 -1
- package/dist/services/share/bundle-format-constants.d.ts +85 -0
- package/dist/services/share/bundle-format-constants.js +100 -0
- package/dist/services/share/bundle-reader.d.ts +3 -3
- package/dist/services/share/bundle-reader.js +75 -68
- package/dist/services/share/bundle-types.d.ts +3 -70
- package/dist/services/share/bundle-types.js +38 -107
- package/dist/services/share/bundle-writer.d.ts +3 -3
- package/dist/services/share/bundle-writer.js +101 -91
- package/dist/services/share/run-state-contract.d.ts +1 -1
- package/dist/services/share/run-state-contract.js +7 -13
- package/dist/services/signal/cancel-handler.js +2 -1
- package/dist/services/skill/resume-detector.js +6 -4
- package/dist/services/skill/skill-scheduler.js +3 -1
- package/dist/services/skill/skill-search-service.js +4 -4
- package/dist/services/skillhub/release-diff.d.ts +2 -2
- package/dist/services/skillhub/release-diff.js +6 -10
- package/dist/services/skillhub/release-export.d.ts +2 -2
- package/dist/services/skillhub/release-export.js +15 -17
- package/dist/services/skillhub/release-gc-blobs.d.ts +2 -2
- package/dist/services/skillhub/release-gc-blobs.js +4 -4
- package/dist/services/skillhub/release-import.d.ts +2 -2
- package/dist/services/skillhub/release-import.js +13 -12
- package/dist/services/skillhub/release-retain.d.ts +3 -3
- package/dist/services/skillhub/release-retain.js +22 -22
- package/dist/services/skillhub/sqlite-store.d.ts +1 -1
- package/dist/services/skillhub/sqlite-store.js +12 -11
- package/dist/services/skillhub/tar-runtime.js +15 -15
- package/dist/services/skillhub/types.d.ts +4 -4
- package/dist/services/skills/hooks-codegate-superpowers.js +16 -7
- package/dist/services/skills/hooks-settings-service.js +61 -19
- package/dist/services/skills/presence-lease-service.js +26 -16
- package/dist/services/skills/presence-lease-types.d.ts +1 -1
- package/dist/services/skills/presence-lease-types.js +1 -1
- package/dist/services/skills/skill-conformance-service.js +40 -8
- package/dist/services/skills/skill-presence-service.js +16 -14
- package/dist/services/skills/skill-runbook-service.js +2 -1
- package/dist/services/skills/skill-statusline-model.d.ts +128 -0
- package/dist/services/skills/skill-statusline-model.js +163 -0
- package/dist/services/skills/skill-statusline-renderer.js +4 -3
- package/dist/services/skills/skill-statusline-service.d.ts +3 -100
- package/dist/services/skills/skill-statusline-service.js +56 -163
- package/dist/services/skills/statusline-palette.js +11 -6
- package/dist/services/skills/statusline-settings-service.js +2 -1
- package/dist/services/skills/sync-service-support.d.ts +65 -0
- package/dist/services/skills/sync-service-support.js +50 -0
- package/dist/services/skills/sync-service.d.ts +3 -66
- package/dist/services/skills/sync-service.js +15 -53
- package/dist/services/slice/calibration-store.js +8 -2
- package/dist/services/slice/cross-pass-edge-merger.d.ts +3 -28
- package/dist/services/slice/cross-pass-edge-merger.js +13 -63
- package/dist/services/slice/cross-pass-edge-static-scan-support.d.ts +69 -0
- package/dist/services/slice/cross-pass-edge-static-scan-support.js +74 -0
- package/dist/services/slice/granularity-decider.js +2 -2
- package/dist/services/slice/slice-archive-service.js +8 -3
- package/dist/services/slice/slice-check-service.js +19 -8
- package/dist/services/slice/slice-decompose-runners.js +61 -23
- package/dist/services/slice/slice-decompose-service.js +4 -4
- package/dist/services/slice/slice-review-state.js +8 -2
- package/dist/services/smoke/smoke-paths-state.js +9 -2
- package/dist/services/sop/gate-enforce-service.js +9 -2
- package/dist/services/sop/sop-advance-service.js +14 -2
- package/dist/services/sop/sop-check-service.js +16 -4
- package/dist/services/sop/sop-paths.js +3 -1
- package/dist/services/sop/sop-registry-service.js +5 -1
- package/dist/services/sop/sop-service.js +29 -7
- package/dist/services/sop/sop-types.js +5 -1
- package/dist/services/standards/ide-aware-standards-service.js +2 -2
- package/dist/services/standards/loop-engineering-lint.js +12 -5
- package/dist/services/standards/loop-engineering-readiness-lint.js +5 -5
- package/dist/services/standards/migrate-claude-rules-service.js +9 -7
- package/dist/services/standards/missing-standards-detector.js +1 -3
- package/dist/services/standards/project-context-support.d.ts +50 -0
- package/dist/services/standards/project-context-support.js +244 -0
- package/dist/services/standards/project-context-types.d.ts +30 -0
- package/dist/services/standards/project-context-types.js +11 -0
- package/dist/services/standards/project-context.d.ts +10 -22
- package/dist/services/standards/project-context.js +27 -214
- package/dist/services/standards/project-standards-service.js +43 -12
- package/dist/services/standards/standards-render-common.d.ts +15 -0
- package/dist/services/standards/standards-render-common.js +49 -0
- package/dist/services/standards/standards-render.d.ts +1 -2
- package/dist/services/standards/standards-render.js +31 -58
- package/dist/services/standards/ui-library-dispatch-block.js +1 -1
- package/dist/services/tech/tech-change-id-service.js +7 -7
- package/dist/services/tech/tech-service.js +73 -26
- package/dist/services/test-cache/test-cache-service.js +8 -3
- package/dist/services/upgrade/1x-detector-service.js +5 -3
- package/dist/services/upgrade/gitignore-migrate-service.js +5 -5
- package/dist/services/upgrade/upgrade-service.js +36 -13
- package/dist/services/verdict/envelope-parsers.d.ts +84 -0
- package/dist/services/verdict/envelope-parsers.js +146 -0
- package/dist/services/verdict/envelopes.d.ts +50 -60
- package/dist/services/verdict/envelopes.js +18 -156
- package/dist/services/verdict/verdict-aggregator.js +27 -3
- package/dist/services/vm/vm-lease.js +15 -3
- package/dist/services/web/aria-node.d.ts +27 -0
- package/dist/services/web/aria-node.js +1 -0
- package/dist/services/web/browser-acquire.js +3 -1
- package/dist/services/web/browser-cache-probe.d.ts +18 -0
- package/dist/services/web/browser-cache-probe.js +110 -0
- package/dist/services/web/browser-session-manager.js +6 -2
- package/dist/services/web/daemon-registry.js +4 -1
- package/dist/services/web/playwright-loader.d.ts +2 -70
- package/dist/services/web/playwright-types.d.ts +75 -0
- package/dist/services/web/playwright-types.js +1 -0
- package/dist/services/web/snapshot-pruner.d.ts +2 -23
- package/dist/services/web/snapshot-pruner.js +8 -3
- package/dist/services/web/web-daemon-service.js +1 -3
- package/dist/services/web/web-install-service.d.ts +3 -32
- package/dist/services/web/web-install-service.js +21 -100
- package/dist/services/web/web-install-types.d.ts +31 -0
- package/dist/services/web/web-install-types.js +13 -0
- package/dist/services/web/web-login-profile.js +7 -5
- package/dist/services/web/web-protocol.js +3 -1
- package/dist/services/workflow/pipeline-verify-gate-support.js +63 -17
- package/dist/services/workflow/pipeline-verify-service.js +17 -6
- package/dist/services/workflow/plan-reader.js +5 -1
- package/dist/services/workflow/plan-refresher.js +20 -6
- package/dist/services/workflow/plan-trigger-detector.js +31 -8
- package/dist/services/workflow/provision-dispatch-node.js +8 -3
- package/dist/services/workflow/workflow-autonomous-resume-helpers.d.ts +3 -1
- package/dist/services/workflow/workflow-autonomous-resume-helpers.js +35 -144
- package/dist/services/workflow/workflow-autonomous-resume-validation.d.ts +16 -0
- package/dist/services/workflow/workflow-autonomous-resume-validation.js +155 -0
- package/dist/services/workflow/workflow-autonomous-service.js +25 -13
- package/dist/services/workflow/workflow-graph-store-helpers.d.ts +51 -0
- package/dist/services/workflow/workflow-graph-store-helpers.js +111 -0
- package/dist/services/workflow/workflow-graph-store.d.ts +2 -35
- package/dist/services/workflow/workflow-graph-store.js +30 -107
- package/dist/services/workflow/workflow-graph-types.js +3 -3
- package/dist/services/workflow/workflow-inflight-probe.js +14 -7
- package/dist/services/workflow/workflow-loader.js +5 -1
- package/dist/services/workflow/workflow-node-lifecycle.js +22 -21
- package/dist/services/workflow/workflow-presence-lifecycle-types.d.ts +50 -0
- package/dist/services/workflow/workflow-presence-lifecycle-types.js +1 -0
- package/dist/services/workflow/workflow-presence-lifecycle.d.ts +2 -42
- package/dist/services/workflow/workflow-presence-lifecycle.js +19 -21
- package/dist/services/workflow/workflow-router-service.js +169 -27
- package/dist/services/workflow/workflow-skip-service.js +14 -4
- package/dist/services/workflow/workflow-spec-builders.d.ts +15 -0
- package/dist/services/workflow/workflow-spec-builders.js +121 -0
- package/dist/services/workflow/workflow-spec.d.ts +7 -6
- package/dist/services/workflow/workflow-spec.js +22 -116
- package/dist/services/workflow/workflow-state-store.js +2 -1
- package/dist/services/workspace/migrate-1-4-1-service.js +80 -14
- package/dist/services/workspace/migrate-service.js +66 -16
- package/dist/services/workspace/reconcile-migrate.js +6 -2
- package/dist/services/workspace/reconcile-service.js +37 -16
- package/dist/services/workspace/workspace-claude-settings-materializer.js +7 -5
- package/dist/services/workspace/workspace-clean-service.js +4 -1
- package/dist/services/workspace/workspace-service.js +11 -3
- package/dist/services/workspace/workspace-state-service.js +1 -1
- package/dist/services/worktree/git-worktree-parser.js +13 -3
- package/dist/services/worktree/host-worktree-reconciler.js +8 -4
- package/dist/services/worktree/long-path-cleanup.js +23 -6
- package/dist/services/worktree/worktree-gc-guard.js +3 -1
- package/dist/services/worktree/worktree-lease-types.d.ts +53 -0
- package/dist/services/worktree/worktree-lease-types.js +10 -0
- package/dist/services/worktree/worktree-lease.d.ts +2 -44
- package/dist/shared/array-guards.d.ts +30 -0
- package/dist/shared/array-guards.js +32 -0
- package/dist/shared/format-md-compact-internals.d.ts +26 -0
- package/dist/shared/format-md-compact-internals.js +125 -0
- package/dist/shared/format-md-compact.js +1 -117
- package/dist/shared/fs-utils.js +2 -1
- package/dist/shared/incrementing-number.js +3 -3
- package/dist/shared/json-parse.d.ts +71 -0
- package/dist/shared/json-parse.js +32 -0
- package/dist/shared/json-schema-mini.js +3 -1
- package/dist/shared/path-safety.js +3 -1
- package/dist/shared/path-utils.d.ts +20 -0
- package/dist/shared/path-utils.js +26 -0
- package/dist/shared/planner-response.js +3 -3
- package/dist/shared/stale-policy.js +1 -3
- package/dist/skills/peaks-maker/index.js +11 -11
- package/package.json +31 -8
- package/scripts/clean-dist.mjs +1 -2
- package/scripts/copy-templates.mjs +2 -4
- package/scripts/install-skills.mjs +305 -125
- package/scripts/sync-version.mjs +25 -8
- package/scripts/watch.mjs +8 -2
- package/skills/peaks-code/SKILL.md +1 -1
|
@@ -36,52 +36,8 @@
|
|
|
36
36
|
* harness — see `harness-window-config.ts`.
|
|
37
37
|
*/
|
|
38
38
|
import type { HarnessWindowSyncResult } from './harness-window-config.js';
|
|
39
|
-
export
|
|
40
|
-
export
|
|
41
|
-
export declare const AUTO_COMPACT_PRE_COMPACT_RATIO = 0.85;
|
|
42
|
-
export declare const AUTO_COMPACT_RED_LINE_RATIO = 0.95;
|
|
43
|
-
export declare const AUTO_COMPACT_THRESHOLD_RATIO = 0.8;
|
|
44
|
-
/** Single source of truth for "what should we do at ratio X?" */
|
|
45
|
-
export type CompactTrigger = {
|
|
46
|
-
kind: 'none';
|
|
47
|
-
} | {
|
|
48
|
-
kind: 'soft-warn';
|
|
49
|
-
ratio: number;
|
|
50
|
-
message: string;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Part 22: auto-fire zone (0.80 ≤ ratio < 0.85). peaks-loop
|
|
54
|
-
* preempts and runs `peaks code auto-compact` itself
|
|
55
|
-
* without LLM involvement. The LLM is not asked to "decide";
|
|
56
|
-
* the toolkit is applied synchronously.
|
|
57
|
-
*/
|
|
58
|
-
| {
|
|
59
|
-
kind: 'auto-fire';
|
|
60
|
-
ratio: number;
|
|
61
|
-
message: string;
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Pre-compact zone (0.85 ≤ ratio < 0.95): LLM-runner can still
|
|
65
|
-
* pre-empt the compact for one in-flight sub-agent or one
|
|
66
|
-
* todo row, but peaks-loop flags this as the last safe
|
|
67
|
-
* window. Kept for backward compat; in practice peaks-loop
|
|
68
|
-
* auto-fired at 0.80 already.
|
|
69
|
-
*/
|
|
70
|
-
| {
|
|
71
|
-
kind: 'pre-compact';
|
|
72
|
-
ratio: number;
|
|
73
|
-
message: string;
|
|
74
|
-
toolkitReady: true;
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Red line (ratio ≥ 0.95): peaks-loop asks the harness to compact and says
|
|
78
|
-
* it is waiting. Dispatch is NOT blocked — see `redLineRequested`.
|
|
79
|
-
*/
|
|
80
|
-
| {
|
|
81
|
-
kind: 'red-line';
|
|
82
|
-
ratio: number;
|
|
83
|
-
message: string;
|
|
84
|
-
};
|
|
39
|
+
export { AUTO_COMPACT_SOFT_WARN_RATIO, AUTO_COMPACT_AUTO_FIRE_RATIO, AUTO_COMPACT_PRE_COMPACT_RATIO, AUTO_COMPACT_RED_LINE_RATIO, AUTO_COMPACT_THRESHOLD_RATIO } from './auto-compact-thresholds.js';
|
|
40
|
+
export type { CompactTrigger } from './auto-compact-thresholds.js';
|
|
85
41
|
/** Caller-side info about sub-agent batches in flight (D6.e). */
|
|
86
42
|
export interface InFlightBatchProbe {
|
|
87
43
|
readonly hasInFlightBatch: boolean;
|
|
@@ -1,14 +1,4 @@
|
|
|
1
|
-
export
|
|
2
|
-
// Part 22: auto-fire threshold (was 0.85 pre-compact zone where
|
|
3
|
-
// the LLM had to decide; LLM misjudged 0.85–0.95 and only fired
|
|
4
|
-
// at 0.95, which let the LLM time the run anyway). Lowered to
|
|
5
|
-
// 0.80 so peaks-loop auto-fires compact without LLM involvement
|
|
6
|
-
// — the LLM keeps working, peaks-loop preempts when ratio crosses
|
|
7
|
-
// the new threshold.
|
|
8
|
-
export const AUTO_COMPACT_AUTO_FIRE_RATIO = 0.80;
|
|
9
|
-
export const AUTO_COMPACT_PRE_COMPACT_RATIO = 0.85;
|
|
10
|
-
export const AUTO_COMPACT_RED_LINE_RATIO = 0.95;
|
|
11
|
-
export const AUTO_COMPACT_THRESHOLD_RATIO = AUTO_COMPACT_AUTO_FIRE_RATIO;
|
|
1
|
+
export { AUTO_COMPACT_SOFT_WARN_RATIO, AUTO_COMPACT_AUTO_FIRE_RATIO, AUTO_COMPACT_PRE_COMPACT_RATIO, AUTO_COMPACT_RED_LINE_RATIO, AUTO_COMPACT_THRESHOLD_RATIO } from './auto-compact-thresholds.js';
|
|
12
2
|
/**
|
|
13
3
|
* Old → new map of envelope fields that were renamed but are still emitted
|
|
14
4
|
* under their old name as deprecated aliases.
|
|
@@ -352,7 +352,7 @@ export const BINDING_RULE_TOKENS = [
|
|
|
352
352
|
'do NOT invoke `npx <runner>`',
|
|
353
353
|
'## Test Scope (mandatory)',
|
|
354
354
|
'PEAKS_FULL_TEST=1',
|
|
355
|
-
'refused'
|
|
355
|
+
'refused'
|
|
356
356
|
];
|
|
357
357
|
/**
|
|
358
358
|
* The runner-direct-path tokens: the refusal example, the two direct paths
|
|
@@ -371,7 +371,7 @@ export const TEST_RUNNER_RULE_TOKENS = [
|
|
|
371
371
|
'PB-5',
|
|
372
372
|
'`peaks test --json`',
|
|
373
373
|
'ask the user before assuming a runner',
|
|
374
|
-
'(Windows-aware)'
|
|
374
|
+
'(Windows-aware)'
|
|
375
375
|
];
|
|
376
376
|
/**
|
|
377
377
|
* Return the subset of `tokens` that `text` does NOT contain. Pure; used by
|
|
@@ -11,7 +11,7 @@ const CollectInputSchema = z.object({
|
|
|
11
11
|
goal: z.string().min(1),
|
|
12
12
|
project: z.string().min(1),
|
|
13
13
|
depsMode: z.enum(['locked', 'latest']),
|
|
14
|
-
out: z.string().optional()
|
|
14
|
+
out: z.string().optional()
|
|
15
15
|
});
|
|
16
16
|
function classifyKind(path) {
|
|
17
17
|
if (path.includes('/__tests__/') || path.endsWith('.test.ts') || path.endsWith('.test.tsx')) {
|
|
@@ -47,7 +47,7 @@ async function scanFiles(root, exclude) {
|
|
|
47
47
|
path: rel,
|
|
48
48
|
kind: classifyKind(relative(root, full)),
|
|
49
49
|
lines: 0, // computed lazily; full line count is expensive
|
|
50
|
-
hash: ''
|
|
50
|
+
hash: '' // computed lazily via content-hash-cache-pattern
|
|
51
51
|
});
|
|
52
52
|
}
|
|
53
53
|
}
|
|
@@ -61,7 +61,7 @@ async function readGitStatus(project) {
|
|
|
61
61
|
return {
|
|
62
62
|
branch: 'main',
|
|
63
63
|
lastCommit: 'unknown',
|
|
64
|
-
dirty: false
|
|
64
|
+
dirty: false
|
|
65
65
|
};
|
|
66
66
|
}
|
|
67
67
|
async function readMemoryEntries(project) {
|
|
@@ -76,7 +76,7 @@ async function readMemoryEntries(project) {
|
|
|
76
76
|
path: join('.peaks/memory', n),
|
|
77
77
|
title: n,
|
|
78
78
|
relevanceScore: 0,
|
|
79
|
-
excerptHash: ''
|
|
79
|
+
excerptHash: ''
|
|
80
80
|
}));
|
|
81
81
|
}
|
|
82
82
|
catch {
|
|
@@ -110,24 +110,22 @@ async function readDeps(project, depsMode) {
|
|
|
110
110
|
result[name] = {
|
|
111
111
|
version,
|
|
112
112
|
source: 'package.json',
|
|
113
|
-
resolved: ''
|
|
113
|
+
resolved: '' // filled by lockfile parser in a later slice
|
|
114
114
|
};
|
|
115
115
|
}
|
|
116
116
|
return result;
|
|
117
117
|
}
|
|
118
118
|
export async function collectContext(rawInput) {
|
|
119
119
|
const input = CollectInputSchema.parse(rawInput);
|
|
120
|
-
const exclude = input.out !== undefined
|
|
121
|
-
? relative(input.project, input.out).replaceAll('\\', '/')
|
|
122
|
-
: undefined;
|
|
120
|
+
const exclude = input.out !== undefined ? relative(input.project, input.out).replaceAll('\\', '/') : undefined;
|
|
123
121
|
const [files, gitStatus, memoryEntries, deps] = await Promise.all([
|
|
124
122
|
scanFiles(input.project, exclude),
|
|
125
123
|
readGitStatus(input.project),
|
|
126
124
|
readMemoryEntries(input.project),
|
|
127
|
-
readDeps(input.project, input.depsMode)
|
|
125
|
+
readDeps(input.project, input.depsMode)
|
|
128
126
|
]);
|
|
129
127
|
return {
|
|
130
128
|
goal: input.goal,
|
|
131
|
-
collector: { files, gitStatus, memoryEntries, deps }
|
|
129
|
+
collector: { files, gitStatus, memoryEntries, deps }
|
|
132
130
|
};
|
|
133
131
|
}
|
|
@@ -69,8 +69,10 @@ function readCache(cachePath) {
|
|
|
69
69
|
tool: typeof parsed.tool === 'string' ? parsed.tool : null,
|
|
70
70
|
key: typeof parsed.key === 'string' ? parsed.key : null,
|
|
71
71
|
bytes: typeof parsed.bytes === 'number' && Number.isFinite(parsed.bytes) ? parsed.bytes : 0,
|
|
72
|
-
pctOfTotal: typeof parsed.pctOfTotal === 'number' && Number.isFinite(parsed.pctOfTotal)
|
|
73
|
-
|
|
72
|
+
pctOfTotal: typeof parsed.pctOfTotal === 'number' && Number.isFinite(parsed.pctOfTotal)
|
|
73
|
+
? parsed.pctOfTotal
|
|
74
|
+
: 0,
|
|
75
|
+
count: typeof parsed.count === 'number' && Number.isFinite(parsed.count) ? parsed.count : 0
|
|
74
76
|
};
|
|
75
77
|
}
|
|
76
78
|
catch {
|
|
@@ -93,7 +95,7 @@ function probeRatioSafe(input) {
|
|
|
93
95
|
projectRoot: input.projectRoot,
|
|
94
96
|
sessionId: input.sessionId,
|
|
95
97
|
outerSessionId: input.outerSessionId ?? undefined,
|
|
96
|
-
env: input.env ?? process.env
|
|
98
|
+
env: input.env ?? process.env
|
|
97
99
|
});
|
|
98
100
|
return Number.isFinite(probe.ratio) ? probe.ratio : null;
|
|
99
101
|
}
|
|
@@ -123,7 +125,7 @@ export function buildContextAuditHint(input) {
|
|
|
123
125
|
// Cache miss / stale → at most one scan per TTL window.
|
|
124
126
|
const result = (input.runAudit ?? auditContext)({
|
|
125
127
|
outerSessionId: input.outerSessionId ?? null,
|
|
126
|
-
topN: 1
|
|
128
|
+
topN: 1
|
|
127
129
|
});
|
|
128
130
|
const top = result.available ? (result.entries[0] ?? null) : null;
|
|
129
131
|
const entry = {
|
|
@@ -134,7 +136,7 @@ export function buildContextAuditHint(input) {
|
|
|
134
136
|
key: top?.key ?? null,
|
|
135
137
|
bytes: top?.bytes ?? 0,
|
|
136
138
|
pctOfTotal: top?.pctOfTotal ?? 0,
|
|
137
|
-
count: top?.count ?? 0
|
|
139
|
+
count: top?.count ?? 0
|
|
138
140
|
};
|
|
139
141
|
try {
|
|
140
142
|
atomicWriteJson(cachePath, entry);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stable group-key builders for `peaks code context-audit` — the
|
|
3
|
+
* `(tool name, short input key)` half of the grouping contract.
|
|
4
|
+
*
|
|
5
|
+
* Moved out of `./context-audit.ts` (wave 3, eslint-family sweep). Every
|
|
6
|
+
* case body, predicate and clip budget below is copied EXACTLY from the
|
|
7
|
+
* original switch; the switch is only split into two sequential halves so
|
|
8
|
+
* no single function crosses the complexity ceiling. For every `(tool,
|
|
9
|
+
* input)` pair the returned key is identical to before the move.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Build the stable group key for one tool call. Unknown tools fall back to a
|
|
13
|
+
* clipped JSON rendering of their input so the group is still recognizable.
|
|
14
|
+
*/
|
|
15
|
+
export declare function contextAuditKey(tool: string, input: unknown): string;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stable group-key builders for `peaks code context-audit` — the
|
|
3
|
+
* `(tool name, short input key)` half of the grouping contract.
|
|
4
|
+
*
|
|
5
|
+
* Moved out of `./context-audit.ts` (wave 3, eslint-family sweep). Every
|
|
6
|
+
* case body, predicate and clip budget below is copied EXACTLY from the
|
|
7
|
+
* original switch; the switch is only split into two sequential halves so
|
|
8
|
+
* no single function crosses the complexity ceiling. For every `(tool,
|
|
9
|
+
* input)` pair the returned key is identical to before the move.
|
|
10
|
+
*/
|
|
11
|
+
/** Max characters kept in a group key — keys are labels, not payloads. */
|
|
12
|
+
const KEY_MAX_CHARS = 100;
|
|
13
|
+
/** `Task` / `Agent` descriptions are kept even shorter (label, not payload). */
|
|
14
|
+
const TASK_KEY_MAX_CHARS = 60;
|
|
15
|
+
/** Budget for the JSON fallback used by unknown tools. */
|
|
16
|
+
const FALLBACK_KEY_MAX_CHARS = 80;
|
|
17
|
+
function readInputString(v) {
|
|
18
|
+
return typeof v === 'string' ? v : '';
|
|
19
|
+
}
|
|
20
|
+
function clip(text, max) {
|
|
21
|
+
const collapsed = text.replace(/\s+/g, ' ').trim();
|
|
22
|
+
return collapsed.length <= max ? collapsed : `${collapsed.slice(0, max - 1)}…`;
|
|
23
|
+
}
|
|
24
|
+
/** Last `n` path segments — keeps `Read` / `Edit` keys short but identifiable. */
|
|
25
|
+
function tailPath(value, n) {
|
|
26
|
+
const parts = value.split(/[\\/]/).filter((p) => p.length > 0);
|
|
27
|
+
return parts.slice(Math.max(0, parts.length - n)).join('/');
|
|
28
|
+
}
|
|
29
|
+
const NOT_A_KEY = null;
|
|
30
|
+
/** First half of the original switch: execution / file / search tools. */
|
|
31
|
+
function keyForKnownTool(tool, i) {
|
|
32
|
+
switch (tool) {
|
|
33
|
+
case 'Bash':
|
|
34
|
+
return clip(readInputString(i.command), KEY_MAX_CHARS);
|
|
35
|
+
case 'Read':
|
|
36
|
+
case 'Write':
|
|
37
|
+
case 'Edit':
|
|
38
|
+
case 'NotebookEdit':
|
|
39
|
+
return clip(tailPath(readInputString(i.file_path), 2), KEY_MAX_CHARS);
|
|
40
|
+
case 'Grep':
|
|
41
|
+
case 'Glob':
|
|
42
|
+
return clip(`${readInputString(i.pattern)} @ ${readInputString(i.path) || '.'}`, KEY_MAX_CHARS);
|
|
43
|
+
default:
|
|
44
|
+
return NOT_A_KEY;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/** Second half of the original switch: agent tools + unknown-tool fallback. */
|
|
48
|
+
function keyForRemainingTool(tool, i) {
|
|
49
|
+
switch (tool) {
|
|
50
|
+
case 'Task':
|
|
51
|
+
case 'Agent':
|
|
52
|
+
return clip(readInputString(i.description) || readInputString(i.subagent_type), TASK_KEY_MAX_CHARS);
|
|
53
|
+
default: {
|
|
54
|
+
let json;
|
|
55
|
+
try {
|
|
56
|
+
json = JSON.stringify(i) ?? '';
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
json = '';
|
|
60
|
+
}
|
|
61
|
+
return clip(json, FALLBACK_KEY_MAX_CHARS);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Build the stable group key for one tool call. Unknown tools fall back to a
|
|
67
|
+
* clipped JSON rendering of their input so the group is still recognizable.
|
|
68
|
+
*/
|
|
69
|
+
export function contextAuditKey(tool, input) {
|
|
70
|
+
if (typeof input !== 'object' || input === null)
|
|
71
|
+
return '';
|
|
72
|
+
const i = input;
|
|
73
|
+
const known = keyForKnownTool(tool, i);
|
|
74
|
+
if (known !== NOT_A_KEY)
|
|
75
|
+
return known;
|
|
76
|
+
return keyForRemainingTool(tool, i);
|
|
77
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Size/limit constants and `--top` normalization for `peaks code
|
|
3
|
+
* context-audit`, moved VERBATIM out of `./context-audit.ts` (wave 3,
|
|
4
|
+
* eslint-family sweep) so that module stays under the 300 raw-line cap.
|
|
5
|
+
*
|
|
6
|
+
* The two transcript-size ceilings keep their exact previous values; they
|
|
7
|
+
* are written as a named 1 MiB constant times a named Mebibyte count
|
|
8
|
+
* because the `no-magic-numbers` family flags each factor of a literal
|
|
9
|
+
* product (`256 * 1024 * 1024`) but not a direct `const` assignment.
|
|
10
|
+
*/
|
|
11
|
+
/** Default number of top entries emitted. */
|
|
12
|
+
export declare const CONTEXT_AUDIT_DEFAULT_TOP = 15;
|
|
13
|
+
/** Hard ceiling for `--top` — the envelope must stay small by construction. */
|
|
14
|
+
export declare const CONTEXT_AUDIT_MAX_TOP = 100;
|
|
15
|
+
/** Transcripts larger than this are reported `available:false` (fail-soft). */
|
|
16
|
+
export declare const CONTEXT_AUDIT_MAX_TRANSCRIPT_BYTES: number;
|
|
17
|
+
/** Streaming chunk size (bounded memory on multi-MB transcripts) = 1 MiB. */
|
|
18
|
+
export declare const CONTEXT_AUDIT_SCAN_CHUNK_BYTES = 1048576;
|
|
19
|
+
/** Clamp a caller-supplied `--top` into the documented range. */
|
|
20
|
+
export declare function normalizeTopN(value: unknown): number;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Size/limit constants and `--top` normalization for `peaks code
|
|
3
|
+
* context-audit`, moved VERBATIM out of `./context-audit.ts` (wave 3,
|
|
4
|
+
* eslint-family sweep) so that module stays under the 300 raw-line cap.
|
|
5
|
+
*
|
|
6
|
+
* The two transcript-size ceilings keep their exact previous values; they
|
|
7
|
+
* are written as a named 1 MiB constant times a named Mebibyte count
|
|
8
|
+
* because the `no-magic-numbers` family flags each factor of a literal
|
|
9
|
+
* product (`256 * 1024 * 1024`) but not a direct `const` assignment.
|
|
10
|
+
*/
|
|
11
|
+
/** 1 MiB = 1024 × 1024 bytes. */
|
|
12
|
+
const MEBIBYTE = 1048576;
|
|
13
|
+
/** Mebibytes of transcript the audit is still willing to stream (256 MiB). */
|
|
14
|
+
const MAX_TRANSCRIPT_MEBIBYTES = 256;
|
|
15
|
+
/** Default number of top entries emitted. */
|
|
16
|
+
export const CONTEXT_AUDIT_DEFAULT_TOP = 15;
|
|
17
|
+
/** Hard ceiling for `--top` — the envelope must stay small by construction. */
|
|
18
|
+
export const CONTEXT_AUDIT_MAX_TOP = 100;
|
|
19
|
+
/** Transcripts larger than this are reported `available:false` (fail-soft). */
|
|
20
|
+
export const CONTEXT_AUDIT_MAX_TRANSCRIPT_BYTES = MAX_TRANSCRIPT_MEBIBYTES * MEBIBYTE;
|
|
21
|
+
/** Streaming chunk size (bounded memory on multi-MB transcripts) = 1 MiB. */
|
|
22
|
+
export const CONTEXT_AUDIT_SCAN_CHUNK_BYTES = MEBIBYTE;
|
|
23
|
+
/** Clamp a caller-supplied `--top` into the documented range. */
|
|
24
|
+
export function normalizeTopN(value) {
|
|
25
|
+
const n = typeof value === 'number' && Number.isFinite(value)
|
|
26
|
+
? Math.floor(value)
|
|
27
|
+
: CONTEXT_AUDIT_DEFAULT_TOP;
|
|
28
|
+
if (n < 1)
|
|
29
|
+
return CONTEXT_AUDIT_DEFAULT_TOP;
|
|
30
|
+
return Math.min(n, CONTEXT_AUDIT_MAX_TOP);
|
|
31
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transcript scan + envelope assembly for `peaks code context-audit`.
|
|
3
|
+
*
|
|
4
|
+
* Moved out of `./context-audit.ts` (wave 3, eslint-family sweep). The
|
|
5
|
+
* streaming loop, the fold bookkeeping, the `pctOfTotal` rounding and the
|
|
6
|
+
* group ordering are the report's contract: every line below is copied
|
|
7
|
+
* exactly — same predicates, same throw points, same accumulator updates in
|
|
8
|
+
* the same positions. Only pure sub-blocks whose control flow copies 1:1
|
|
9
|
+
* were extracted; the read-accumulator loop and the per-line delta
|
|
10
|
+
* accumulation stay in the functions that own them.
|
|
11
|
+
*/
|
|
12
|
+
import type { ContextAuditResult } from './context-audit-types.js';
|
|
13
|
+
/** Fail-soft envelope: every field zeroed/emptied, only the partial set. */
|
|
14
|
+
export declare function emptyResult(partial: Partial<ContextAuditResult>): ContextAuditResult;
|
|
15
|
+
/**
|
|
16
|
+
* Stat, size-check and stream a resolved transcript. Fail-soft: every stat
|
|
17
|
+
* / open / read failure maps to its documented reason via `errorAuditReason`.
|
|
18
|
+
*/
|
|
19
|
+
export declare function auditTranscriptFile(transcriptPath: string, maxBytes: number, topN: number): ContextAuditResult;
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transcript scan + envelope assembly for `peaks code context-audit`.
|
|
3
|
+
*
|
|
4
|
+
* Moved out of `./context-audit.ts` (wave 3, eslint-family sweep). The
|
|
5
|
+
* streaming loop, the fold bookkeeping, the `pctOfTotal` rounding and the
|
|
6
|
+
* group ordering are the report's contract: every line below is copied
|
|
7
|
+
* exactly — same predicates, same throw points, same accumulator updates in
|
|
8
|
+
* the same positions. Only pure sub-blocks whose control flow copies 1:1
|
|
9
|
+
* were extracted; the read-accumulator loop and the per-line delta
|
|
10
|
+
* accumulation stay in the functions that own them.
|
|
11
|
+
*/
|
|
12
|
+
import { closeSync, openSync, readSync, statSync } from 'node:fs';
|
|
13
|
+
import { contextAuditKey } from './context-audit-keys.js';
|
|
14
|
+
import { CONTEXT_AUDIT_DEFAULT_TOP, CONTEXT_AUDIT_SCAN_CHUNK_BYTES } from './context-audit-limits.js';
|
|
15
|
+
/** Divisor that renders a ratio as a one-decimal percentage (× 100 / × 10). */
|
|
16
|
+
const ONE_DECIMAL_DIVISOR = 10;
|
|
17
|
+
/** Fail-soft envelope: every field zeroed/emptied, only the partial set. */
|
|
18
|
+
export function emptyResult(partial) {
|
|
19
|
+
return {
|
|
20
|
+
available: false,
|
|
21
|
+
reason: null,
|
|
22
|
+
transcriptPath: null,
|
|
23
|
+
totalBytes: 0,
|
|
24
|
+
entryCount: 0,
|
|
25
|
+
groupCount: 0,
|
|
26
|
+
topN: CONTEXT_AUDIT_DEFAULT_TOP,
|
|
27
|
+
entries: [],
|
|
28
|
+
...partial
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Map an `auditTranscriptFile` failure to its machine-readable
|
|
33
|
+
* unavailability reason. Same ENOENT / EACCES+EPERM / other ternary chain
|
|
34
|
+
* and reason strings as before the move.
|
|
35
|
+
*/
|
|
36
|
+
function errorAuditReason(err) {
|
|
37
|
+
const code = err.code;
|
|
38
|
+
return code === 'ENOENT'
|
|
39
|
+
? 'transcript-not-found'
|
|
40
|
+
: code === 'EACCES' || code === 'EPERM'
|
|
41
|
+
? 'transcript-unreadable'
|
|
42
|
+
: 'audit-failed';
|
|
43
|
+
}
|
|
44
|
+
/** UTF-8 size of a JSON value that survived neither the string nor array path. */
|
|
45
|
+
function jsonBytes(value) {
|
|
46
|
+
try {
|
|
47
|
+
return Buffer.byteLength(JSON.stringify(value) ?? '', 'utf8');
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
return 0;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/** Byte size of one `tool_result.content` array element (same fall-through). */
|
|
54
|
+
function contentPartBytes(part) {
|
|
55
|
+
if (typeof part === 'string') {
|
|
56
|
+
return Buffer.byteLength(part, 'utf8');
|
|
57
|
+
}
|
|
58
|
+
if (typeof part === 'object' && part !== null) {
|
|
59
|
+
const text = part.text;
|
|
60
|
+
return typeof text === 'string'
|
|
61
|
+
? Buffer.byteLength(text, 'utf8')
|
|
62
|
+
: Buffer.byteLength(JSON.stringify(part) ?? '', 'utf8');
|
|
63
|
+
}
|
|
64
|
+
return 0;
|
|
65
|
+
}
|
|
66
|
+
/** UTF-8 size of a `tool_result.content` payload (string | array | object). */
|
|
67
|
+
function toolResultBytes(content) {
|
|
68
|
+
if (typeof content === 'string')
|
|
69
|
+
return Buffer.byteLength(content, 'utf8');
|
|
70
|
+
if (Array.isArray(content)) {
|
|
71
|
+
let total = 0;
|
|
72
|
+
for (const part of content) {
|
|
73
|
+
total += contentPartBytes(part);
|
|
74
|
+
}
|
|
75
|
+
return total;
|
|
76
|
+
}
|
|
77
|
+
if (content === undefined || content === null)
|
|
78
|
+
return 0;
|
|
79
|
+
return jsonBytes(content);
|
|
80
|
+
}
|
|
81
|
+
/** Pull `message.content` out of a parsed record; `null` when shape differs. */
|
|
82
|
+
function extractMessageContent(parsed) {
|
|
83
|
+
if (typeof parsed !== 'object' || parsed === null)
|
|
84
|
+
return null;
|
|
85
|
+
const record = parsed;
|
|
86
|
+
const message = record.message;
|
|
87
|
+
if (typeof message !== 'object' || message === null)
|
|
88
|
+
return null;
|
|
89
|
+
const content = message.content;
|
|
90
|
+
if (!Array.isArray(content))
|
|
91
|
+
return null;
|
|
92
|
+
return content;
|
|
93
|
+
}
|
|
94
|
+
function rememberToolUse(item, toolUses) {
|
|
95
|
+
const id = item.id;
|
|
96
|
+
const name = item.name;
|
|
97
|
+
if (typeof id === 'string' && typeof name === 'string') {
|
|
98
|
+
toolUses.set(id, { name, input: item.input });
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/** Fold one `tool_result` part into its group; returns the byte delta. */
|
|
102
|
+
function addToolResult(item, toolUses, groups) {
|
|
103
|
+
const ref = typeof item.tool_use_id === 'string' ? toolUses.get(item.tool_use_id) : undefined;
|
|
104
|
+
const tool = ref?.name ?? 'unknown';
|
|
105
|
+
const key = ref === undefined ? '' : contextAuditKey(tool, ref.input);
|
|
106
|
+
const size = toolResultBytes(item.content);
|
|
107
|
+
const groupKey = `${tool} ${key}`;
|
|
108
|
+
const group = groups.get(groupKey);
|
|
109
|
+
if (group === undefined) {
|
|
110
|
+
groups.set(groupKey, { tool, key, bytes: size, count: 1 });
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
group.bytes += size;
|
|
114
|
+
group.count += 1;
|
|
115
|
+
}
|
|
116
|
+
return size;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Fold ONE jsonl line into the running state. Returns the byte/count delta
|
|
120
|
+
* contributed by this line. Corrupt / non-JSON lines are skipped silently —
|
|
121
|
+
* a truncated tail must not fail the audit.
|
|
122
|
+
*/
|
|
123
|
+
function foldLine(line, toolUses, groups) {
|
|
124
|
+
let parsed;
|
|
125
|
+
try {
|
|
126
|
+
parsed = JSON.parse(line);
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
return { bytes: 0, count: 0 };
|
|
130
|
+
}
|
|
131
|
+
const content = extractMessageContent(parsed);
|
|
132
|
+
if (content === null)
|
|
133
|
+
return { bytes: 0, count: 0 };
|
|
134
|
+
let bytes = 0;
|
|
135
|
+
let count = 0;
|
|
136
|
+
for (const part of content) {
|
|
137
|
+
if (typeof part !== 'object' || part === null)
|
|
138
|
+
continue;
|
|
139
|
+
const item = part;
|
|
140
|
+
if (item.type === 'tool_use') {
|
|
141
|
+
rememberToolUse(item, toolUses);
|
|
142
|
+
continue;
|
|
143
|
+
}
|
|
144
|
+
if (item.type !== 'tool_result')
|
|
145
|
+
continue;
|
|
146
|
+
const size = addToolResult(item, toolUses, groups);
|
|
147
|
+
bytes += size;
|
|
148
|
+
count += 1;
|
|
149
|
+
}
|
|
150
|
+
return { bytes, count };
|
|
151
|
+
}
|
|
152
|
+
/** Percentage in [0, 100], one decimal — see ContextAuditEntry.pctOfTotal. */
|
|
153
|
+
function percentOfTotal(bytes, totalBytes) {
|
|
154
|
+
return totalBytes > 0 ? Math.round((bytes / totalBytes) * 1000) / ONE_DECIMAL_DIVISOR : 0;
|
|
155
|
+
}
|
|
156
|
+
/** Group → entries, sorted by bytes descending (ties: tool, then key). */
|
|
157
|
+
function rankGroups(groups, totalBytes) {
|
|
158
|
+
const entries = [...groups]
|
|
159
|
+
.map((g) => ({
|
|
160
|
+
tool: g.tool,
|
|
161
|
+
key: g.key,
|
|
162
|
+
bytes: g.bytes,
|
|
163
|
+
pctOfTotal: percentOfTotal(g.bytes, totalBytes),
|
|
164
|
+
count: g.count
|
|
165
|
+
}))
|
|
166
|
+
.sort((a, b) => b.bytes - a.bytes || a.tool.localeCompare(b.tool) || a.key.localeCompare(b.key));
|
|
167
|
+
return entries;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Stream the transcript once, folding every tool result into its
|
|
171
|
+
* `(tool, key)` group. Pure bookkeeping — no content is retained.
|
|
172
|
+
*/
|
|
173
|
+
function streamTranscript(filePath, toolUses, groups) {
|
|
174
|
+
let totalBytes = 0;
|
|
175
|
+
let entryCount = 0;
|
|
176
|
+
const fd = openSync(filePath, 'r');
|
|
177
|
+
try {
|
|
178
|
+
const size = statSync(filePath).size;
|
|
179
|
+
let position = 0;
|
|
180
|
+
let carry = '';
|
|
181
|
+
while (position < size) {
|
|
182
|
+
const readLen = Math.min(CONTEXT_AUDIT_SCAN_CHUNK_BYTES, size - position);
|
|
183
|
+
const buf = Buffer.alloc(readLen);
|
|
184
|
+
const bytesRead = readSync(fd, buf, 0, readLen, position);
|
|
185
|
+
if (bytesRead <= 0)
|
|
186
|
+
break;
|
|
187
|
+
position += bytesRead;
|
|
188
|
+
const lines = (carry + buf.toString('utf8', 0, bytesRead)).split('\n');
|
|
189
|
+
// The last element is a partial line (or the trailing empty string).
|
|
190
|
+
carry = lines.pop() ?? '';
|
|
191
|
+
for (const line of lines) {
|
|
192
|
+
if (line.length === 0)
|
|
193
|
+
continue;
|
|
194
|
+
const folded = foldLine(line, toolUses, groups);
|
|
195
|
+
totalBytes += folded.bytes;
|
|
196
|
+
entryCount += folded.count;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
if (carry.length > 0) {
|
|
200
|
+
const folded = foldLine(carry, toolUses, groups);
|
|
201
|
+
totalBytes += folded.bytes;
|
|
202
|
+
entryCount += folded.count;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
finally {
|
|
206
|
+
try {
|
|
207
|
+
closeSync(fd);
|
|
208
|
+
}
|
|
209
|
+
catch {
|
|
210
|
+
/* best-effort close */
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
return { totalBytes, entryCount };
|
|
214
|
+
}
|
|
215
|
+
function scanTranscript(filePath, topN) {
|
|
216
|
+
const toolUses = new Map();
|
|
217
|
+
const groups = new Map();
|
|
218
|
+
const totals = streamTranscript(filePath, toolUses, groups);
|
|
219
|
+
const entries = rankGroups(groups.values(), totals.totalBytes);
|
|
220
|
+
return {
|
|
221
|
+
available: true,
|
|
222
|
+
reason: null,
|
|
223
|
+
transcriptPath: filePath,
|
|
224
|
+
totalBytes: totals.totalBytes,
|
|
225
|
+
entryCount: totals.entryCount,
|
|
226
|
+
groupCount: entries.length,
|
|
227
|
+
topN,
|
|
228
|
+
entries: entries.slice(0, topN)
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Stat, size-check and stream a resolved transcript. Fail-soft: every stat
|
|
233
|
+
* / open / read failure maps to its documented reason via `errorAuditReason`.
|
|
234
|
+
*/
|
|
235
|
+
export function auditTranscriptFile(transcriptPath, maxBytes, topN) {
|
|
236
|
+
try {
|
|
237
|
+
const size = statSync(transcriptPath).size;
|
|
238
|
+
if (size > maxBytes) {
|
|
239
|
+
return emptyResult({ reason: 'transcript-too-large', transcriptPath, topN });
|
|
240
|
+
}
|
|
241
|
+
return scanTranscript(transcriptPath, topN);
|
|
242
|
+
}
|
|
243
|
+
catch (err) {
|
|
244
|
+
return emptyResult({ reason: errorAuditReason(err), transcriptPath, topN });
|
|
245
|
+
}
|
|
246
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public envelope types for `peaks code context-audit`, plus the two
|
|
3
|
+
* module-internal shapes shared by the scan/fold machinery.
|
|
4
|
+
*
|
|
5
|
+
* Moved VERBATIM out of `./context-audit.ts` (wave 3, eslint-family sweep)
|
|
6
|
+
* so that module stays under the 300 raw-line cap. Mechanical move only —
|
|
7
|
+
* field order, optionality and doc comments are unchanged; the three public
|
|
8
|
+
* interfaces are re-exported from `./context-audit.ts` unchanged.
|
|
9
|
+
*/
|
|
10
|
+
export interface ContextAuditEntry {
|
|
11
|
+
/** Tool name (`Bash`, `Read`, `Grep`, …), or `unknown` when unmatched. */
|
|
12
|
+
readonly tool: string;
|
|
13
|
+
/** Short, stable summary of the tool input (command line / path tail / pattern). */
|
|
14
|
+
readonly key: string;
|
|
15
|
+
/** Total UTF-8 bytes of every tool result in this group. */
|
|
16
|
+
readonly bytes: number;
|
|
17
|
+
/**
|
|
18
|
+
* Share of the session's tool-result bytes, as a PERCENTAGE in `[0, 100]`
|
|
19
|
+
* with one decimal (e.g. `4.2` — not the `0.042` ratio). The name and the
|
|
20
|
+
* value agree: `pct` means percent.
|
|
21
|
+
*/
|
|
22
|
+
readonly pctOfTotal: number;
|
|
23
|
+
/** How many tool results landed in this group. */
|
|
24
|
+
readonly count: number;
|
|
25
|
+
}
|
|
26
|
+
export interface ContextAuditResult {
|
|
27
|
+
/** False when the transcript could not be read; see `reason`. */
|
|
28
|
+
readonly available: boolean;
|
|
29
|
+
/** Machine-readable unavailability reason (`null` when available). */
|
|
30
|
+
readonly reason: string | null;
|
|
31
|
+
/** Absolute transcript path, or `null` when unresolved. */
|
|
32
|
+
readonly transcriptPath: string | null;
|
|
33
|
+
/** Total UTF-8 bytes of all tool results seen. */
|
|
34
|
+
readonly totalBytes: number;
|
|
35
|
+
/** Number of tool-result entries seen. */
|
|
36
|
+
readonly entryCount: number;
|
|
37
|
+
/** Distinct `(tool, key)` groups — always ≥ `entries.length`. */
|
|
38
|
+
readonly groupCount: number;
|
|
39
|
+
/** Number of top entries requested. */
|
|
40
|
+
readonly topN: number;
|
|
41
|
+
/** Top-N groups, sorted by bytes descending. */
|
|
42
|
+
readonly entries: readonly ContextAuditEntry[];
|
|
43
|
+
}
|
|
44
|
+
export interface ContextAuditInput {
|
|
45
|
+
/** Outer (harness) session id — the transcript is named by it. */
|
|
46
|
+
readonly outerSessionId?: string | null;
|
|
47
|
+
/** How many top entries to emit. Clamped to `[1, CONTEXT_AUDIT_MAX_TOP]`. */
|
|
48
|
+
readonly topN?: number;
|
|
49
|
+
/** Explicit transcript path override (test seam; skips the locator). */
|
|
50
|
+
readonly transcriptPath?: string | null;
|
|
51
|
+
/** Override the too-large threshold (test seam; default 256 MB). */
|
|
52
|
+
readonly maxTranscriptBytes?: number;
|
|
53
|
+
/** Env used to detect the active IDE (default `process.env`). */
|
|
54
|
+
readonly env?: NodeJS.ProcessEnv;
|
|
55
|
+
}
|
|
56
|
+
export interface ToolUseRef {
|
|
57
|
+
readonly name: string;
|
|
58
|
+
readonly input: unknown;
|
|
59
|
+
}
|
|
60
|
+
export interface MutableGroup {
|
|
61
|
+
readonly tool: string;
|
|
62
|
+
readonly key: string;
|
|
63
|
+
bytes: number;
|
|
64
|
+
count: number;
|
|
65
|
+
}
|