peaks-loop 4.0.0-beta.8 → 4.0.0-beta.9
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 +45 -0
- package/bin/peaks.js +1 -1
- package/dist/cli/cli-helpers.d.ts +43 -0
- package/dist/cli/cli-helpers.js +86 -0
- package/dist/cli/commands/_cli-error-envelope.d.ts +19 -0
- package/dist/cli/commands/_cli-error-envelope.js +50 -0
- package/dist/cli/commands/adapter-commands-s2a.d.ts +34 -0
- package/dist/cli/commands/adapter-commands-s2a.js +92 -0
- package/dist/cli/commands/adapter-commands.d.ts +30 -0
- package/dist/cli/commands/adapter-commands.js +35 -0
- package/dist/cli/commands/agent-commands.d.ts +20 -0
- package/dist/cli/commands/agent-commands.js +48 -0
- package/dist/cli/commands/asset-commands.d.ts +45 -0
- package/dist/cli/commands/asset-commands.js +404 -0
- package/dist/cli/commands/audit-commands.d.ts +28 -0
- package/dist/cli/commands/audit-commands.js +437 -0
- package/dist/cli/commands/bee-commands.d.ts +26 -0
- package/dist/cli/commands/bee-commands.js +169 -0
- package/dist/cli/commands/capability-commands.d.ts +16 -0
- package/dist/cli/commands/capability-commands.js +45 -0
- package/dist/cli/commands/capability-worker-config-sc-commands.d.ts +3 -0
- package/dist/cli/commands/capability-worker-config-sc-commands.js +10 -0
- package/dist/cli/commands/classify-classify-commands.d.ts +19 -0
- package/dist/cli/commands/classify-classify-commands.js +151 -0
- package/dist/cli/commands/code-commands.d.ts +80 -0
- package/dist/cli/commands/code-commands.js +798 -0
- package/dist/cli/commands/code-review-commands.d.ts +34 -0
- package/dist/cli/commands/code-review-commands.js +83 -0
- package/dist/cli/commands/codegraph-commands.d.ts +3 -0
- package/dist/cli/commands/codegraph-commands.js +99 -0
- package/dist/cli/commands/compact-command.d.ts +21 -0
- package/dist/cli/commands/compact-command.js +252 -0
- package/dist/cli/commands/complexity-commands.d.ts +9 -0
- package/dist/cli/commands/complexity-commands.js +34 -0
- package/dist/cli/commands/config-commands.d.ts +3 -0
- package/dist/cli/commands/config-commands.js +220 -0
- package/dist/cli/commands/context-builder-commands.d.ts +11 -0
- package/dist/cli/commands/context-builder-commands.js +85 -0
- package/dist/cli/commands/context-commands.d.ts +21 -0
- package/dist/cli/commands/context-commands.js +254 -0
- package/dist/cli/commands/contract-commands.d.ts +26 -0
- package/dist/cli/commands/contract-commands.js +114 -0
- package/dist/cli/commands/core/artifacts-command.d.ts +3 -0
- package/dist/cli/commands/core/artifacts-command.js +62 -0
- package/dist/cli/commands/core/binding-commands.d.ts +3 -0
- package/dist/cli/commands/core/binding-commands.js +58 -0
- package/dist/cli/commands/core/doctor-command.d.ts +11 -0
- package/dist/cli/commands/core/doctor-command.js +204 -0
- package/dist/cli/commands/core/memory-command.d.ts +3 -0
- package/dist/cli/commands/core/memory-command.js +98 -0
- package/dist/cli/commands/core/profile-command.d.ts +3 -0
- package/dist/cli/commands/core/profile-command.js +9 -0
- package/dist/cli/commands/core/proxy-command.d.ts +3 -0
- package/dist/cli/commands/core/proxy-command.js +26 -0
- package/dist/cli/commands/core/session-command.d.ts +3 -0
- package/dist/cli/commands/core/session-command.js +241 -0
- package/dist/cli/commands/core/skill-command.d.ts +3 -0
- package/dist/cli/commands/core/skill-command.js +300 -0
- package/dist/cli/commands/core/standards-command.d.ts +3 -0
- package/dist/cli/commands/core/standards-command.js +95 -0
- package/dist/cli/commands/core-artifact-commands.d.ts +15 -0
- package/dist/cli/commands/core-artifact-commands.js +31 -0
- package/dist/cli/commands/dispatch-commands.d.ts +10 -0
- package/dist/cli/commands/dispatch-commands.js +351 -0
- package/dist/cli/commands/dispatch-from-dag.d.ts +3 -0
- package/dist/cli/commands/dispatch-from-dag.js +251 -0
- package/dist/cli/commands/doc-commands.d.ts +11 -0
- package/dist/cli/commands/doc-commands.js +65 -0
- package/dist/cli/commands/evolution-commands.d.ts +27 -0
- package/dist/cli/commands/evolution-commands.js +393 -0
- package/dist/cli/commands/feedback-commands.d.ts +18 -0
- package/dist/cli/commands/feedback-commands.js +145 -0
- package/dist/cli/commands/final-review-commands.d.ts +31 -0
- package/dist/cli/commands/final-review-commands.js +161 -0
- package/dist/cli/commands/fixture-commands.d.ts +32 -0
- package/dist/cli/commands/fixture-commands.js +91 -0
- package/dist/cli/commands/fork-commands.d.ts +16 -0
- package/dist/cli/commands/fork-commands.js +163 -0
- package/dist/cli/commands/gate-commands.d.ts +3 -0
- package/dist/cli/commands/gate-commands.js +117 -0
- package/dist/cli/commands/heartbeat-commands.d.ts +3 -0
- package/dist/cli/commands/heartbeat-commands.js +135 -0
- package/dist/cli/commands/hook-handle.d.ts +17 -0
- package/dist/cli/commands/hook-handle.js +157 -0
- package/dist/cli/commands/hooks-commands.d.ts +3 -0
- package/dist/cli/commands/hooks-commands.js +156 -0
- package/dist/cli/commands/ide-commands.d.ts +25 -0
- package/dist/cli/commands/ide-commands.js +42 -0
- package/dist/cli/commands/impact-commands.d.ts +15 -0
- package/dist/cli/commands/impact-commands.js +62 -0
- package/dist/cli/commands/job-commands.d.ts +3 -0
- package/dist/cli/commands/job-commands.js +289 -0
- package/dist/cli/commands/legacy-commands.d.ts +11 -0
- package/dist/cli/commands/legacy-commands.js +32 -0
- package/dist/cli/commands/log-commands.d.ts +17 -0
- package/dist/cli/commands/log-commands.js +64 -0
- package/dist/cli/commands/loop-commands.d.ts +27 -0
- package/dist/cli/commands/loop-commands.js +262 -0
- package/dist/cli/commands/loop-eval-commands.d.ts +20 -0
- package/dist/cli/commands/loop-eval-commands.js +526 -0
- package/dist/cli/commands/memory-commands.d.ts +23 -0
- package/dist/cli/commands/memory-commands.js +129 -0
- package/dist/cli/commands/migrate-1-4-1-command.d.ts +11 -0
- package/dist/cli/commands/migrate-1-4-1-command.js +34 -0
- package/dist/cli/commands/migrate-v2-10-to-v2-11-command.d.ts +20 -0
- package/dist/cli/commands/migrate-v2-10-to-v2-11-command.js +52 -0
- package/dist/cli/commands/mut-commands.d.ts +20 -0
- package/dist/cli/commands/mut-commands.js +239 -0
- package/dist/cli/commands/observability-commands.d.ts +22 -0
- package/dist/cli/commands/observability-commands.js +201 -0
- package/dist/cli/commands/openspec-commands.d.ts +3 -0
- package/dist/cli/commands/openspec-commands.js +237 -0
- package/dist/cli/commands/perf-audit-commands.d.ts +22 -0
- package/dist/cli/commands/perf-audit-commands.js +132 -0
- package/dist/cli/commands/perf-commands.d.ts +3 -0
- package/dist/cli/commands/perf-commands.js +41 -0
- package/dist/cli/commands/playwright-commands.d.ts +95 -0
- package/dist/cli/commands/playwright-commands.js +432 -0
- package/dist/cli/commands/polyrepo-commands.d.ts +37 -0
- package/dist/cli/commands/polyrepo-commands.js +155 -0
- package/dist/cli/commands/prd-blocks-commands.d.ts +18 -0
- package/dist/cli/commands/prd-blocks-commands.js +50 -0
- package/dist/cli/commands/prd-commands.d.ts +18 -0
- package/dist/cli/commands/prd-commands.js +141 -0
- package/dist/cli/commands/preferences-commands.d.ts +2 -0
- package/dist/cli/commands/preferences-commands.js +197 -0
- package/dist/cli/commands/project-commands.d.ts +3 -0
- package/dist/cli/commands/project-commands.js +253 -0
- package/dist/cli/commands/qa-business-review-commands.d.ts +17 -0
- package/dist/cli/commands/qa-business-review-commands.js +148 -0
- package/dist/cli/commands/qa-commands.d.ts +94 -0
- package/dist/cli/commands/qa-commands.js +271 -0
- package/dist/cli/commands/release-commands.d.ts +24 -0
- package/dist/cli/commands/release-commands.js +231 -0
- package/dist/cli/commands/request-commands.d.ts +3 -0
- package/dist/cli/commands/request-commands.js +548 -0
- package/dist/cli/commands/retrospective-commands.d.ts +12 -0
- package/dist/cli/commands/retrospective-commands.js +175 -0
- package/dist/cli/commands/reviewer-commands.d.ts +14 -0
- package/dist/cli/commands/reviewer-commands.js +64 -0
- package/dist/cli/commands/role-commands.d.ts +13 -0
- package/dist/cli/commands/role-commands.js +85 -0
- package/dist/cli/commands/runtime-commands.d.ts +52 -0
- package/dist/cli/commands/runtime-commands.js +150 -0
- package/dist/cli/commands/sc-commands.d.ts +3 -0
- package/dist/cli/commands/sc-commands.js +45 -0
- package/dist/cli/commands/scan-commands.d.ts +3 -0
- package/dist/cli/commands/scan-commands.js +445 -0
- package/dist/cli/commands/security-audit-commands.d.ts +23 -0
- package/dist/cli/commands/security-audit-commands.js +132 -0
- package/dist/cli/commands/sediment-commands.d.ts +80 -0
- package/dist/cli/commands/sediment-commands.js +649 -0
- package/dist/cli/commands/session-auto-compact-hook-command.d.ts +37 -0
- package/dist/cli/commands/session-auto-compact-hook-command.js +127 -0
- package/dist/cli/commands/session-checkpoint-command.d.ts +10 -0
- package/dist/cli/commands/session-checkpoint-command.js +100 -0
- package/dist/cli/commands/session-migrate-skill-name.d.ts +17 -0
- package/dist/cli/commands/session-migrate-skill-name.js +41 -0
- package/dist/cli/commands/session-resume-command.d.ts +11 -0
- package/dist/cli/commands/session-resume-command.js +83 -0
- package/dist/cli/commands/share-commands.d.ts +17 -0
- package/dist/cli/commands/share-commands.js +296 -0
- package/dist/cli/commands/skill-conformance-commands.d.ts +9 -0
- package/dist/cli/commands/skill-conformance-commands.js +39 -0
- package/dist/cli/commands/skill-loop-engineering-readiness-commands.d.ts +67 -0
- package/dist/cli/commands/skill-loop-engineering-readiness-commands.js +173 -0
- package/dist/cli/commands/skill-search-commands.d.ts +25 -0
- package/dist/cli/commands/skill-search-commands.js +68 -0
- package/dist/cli/commands/skill-visibility.d.ts +8 -0
- package/dist/cli/commands/skill-visibility.js +63 -0
- package/dist/cli/commands/slice-commands.d.ts +24 -0
- package/dist/cli/commands/slice-commands.js +492 -0
- package/dist/cli/commands/slice-integrate-commands.d.ts +11 -0
- package/dist/cli/commands/slice-integrate-commands.js +74 -0
- package/dist/cli/commands/slice-review-commands.d.ts +23 -0
- package/dist/cli/commands/slice-review-commands.js +162 -0
- package/dist/cli/commands/smoke-commands.d.ts +21 -0
- package/dist/cli/commands/smoke-commands.js +203 -0
- package/dist/cli/commands/sop-commands.d.ts +3 -0
- package/dist/cli/commands/sop-commands.js +215 -0
- package/dist/cli/commands/statusline-commands.d.ts +3 -0
- package/dist/cli/commands/statusline-commands.js +169 -0
- package/dist/cli/commands/sub-agent-commands.d.ts +22 -0
- package/dist/cli/commands/sub-agent-commands.js +19 -0
- package/dist/cli/commands/sub-agent-dispatch-guard.d.ts +55 -0
- package/dist/cli/commands/sub-agent-dispatch-guard.js +57 -0
- package/dist/cli/commands/sub-agent-shared.d.ts +99 -0
- package/dist/cli/commands/sub-agent-shared.js +67 -0
- package/dist/cli/commands/test-commands.d.ts +47 -0
- package/dist/cli/commands/test-commands.js +204 -0
- package/dist/cli/commands/understand-commands.d.ts +3 -0
- package/dist/cli/commands/understand-commands.js +148 -0
- package/dist/cli/commands/upgrade-commands.d.ts +23 -0
- package/dist/cli/commands/upgrade-commands.js +119 -0
- package/dist/cli/commands/user-touchpoint-commands.d.ts +18 -0
- package/dist/cli/commands/user-touchpoint-commands.js +78 -0
- package/dist/cli/commands/verdict-aggregate-command.d.ts +14 -0
- package/dist/cli/commands/verdict-aggregate-command.js +106 -0
- package/dist/cli/commands/worker-commands.d.ts +3 -0
- package/dist/cli/commands/worker-commands.js +52 -0
- package/dist/cli/commands/workflow-commands.d.ts +3 -0
- package/dist/cli/commands/workflow-commands.js +544 -0
- package/dist/cli/commands/workflow-plan-commands.d.ts +39 -0
- package/dist/cli/commands/workflow-plan-commands.js +163 -0
- package/dist/cli/commands/workspace/clean-command.d.ts +14 -0
- package/dist/cli/commands/workspace/clean-command.js +49 -0
- package/dist/cli/commands/workspace/helpers.d.ts +28 -0
- package/dist/cli/commands/workspace/helpers.js +87 -0
- package/dist/cli/commands/workspace/init-command.d.ts +139 -0
- package/dist/cli/commands/workspace/init-command.js +505 -0
- package/dist/cli/commands/workspace/migrate-command.d.ts +11 -0
- package/dist/cli/commands/workspace/migrate-command.js +91 -0
- package/dist/cli/commands/workspace/reconcile-command.d.ts +14 -0
- package/dist/cli/commands/workspace/reconcile-command.js +103 -0
- package/dist/cli/commands/workspace-commands.d.ts +18 -0
- package/dist/cli/commands/workspace-commands.js +50 -0
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/index.js +30 -0
- package/dist/cli/program.d.ts +5 -0
- package/dist/cli/program.js +408 -0
- package/dist/hooks/pre-tool-use-sub-agent.d.ts +28 -0
- package/dist/hooks/pre-tool-use-sub-agent.js +105 -0
- package/dist/lib/render/message-renderer.d.ts +20 -0
- package/dist/lib/render/message-renderer.js +80 -0
- package/dist/services/adapter/adapter-registry.d.ts +48 -0
- package/dist/services/adapter/adapter-registry.js +186 -0
- package/dist/services/adapter/adapter.d.ts +27 -0
- package/dist/services/adapter/adapter.js +5 -0
- package/dist/services/adapter/auto-adapter.d.ts +11 -0
- package/dist/services/adapter/auto-adapter.js +15 -0
- package/dist/services/adapter/claude-adapter.d.ts +14 -0
- package/dist/services/adapter/claude-adapter.js +40 -0
- package/dist/services/adapter/codex-adapter.d.ts +14 -0
- package/dist/services/adapter/codex-adapter.js +14 -0
- package/dist/services/adapter/copilot-adapter.d.ts +14 -0
- package/dist/services/adapter/copilot-adapter.js +14 -0
- package/dist/services/agent/ecc-agent-service.d.ts +47 -0
- package/dist/services/agent/ecc-agent-service.js +143 -0
- package/dist/services/artifacts/artifact-lint-service.d.ts +23 -0
- package/dist/services/artifacts/artifact-lint-service.js +99 -0
- package/dist/services/artifacts/artifact-prerequisites.d.ts +78 -0
- package/dist/services/artifacts/artifact-prerequisites.js +491 -0
- package/dist/services/artifacts/artifact-service.d.ts +43 -0
- package/dist/services/artifacts/artifact-service.js +98 -0
- package/dist/services/artifacts/artifact-templates.d.ts +30 -0
- package/dist/services/artifacts/artifact-templates.js +302 -0
- package/dist/services/artifacts/repair-cycle-service.d.ts +23 -0
- package/dist/services/artifacts/repair-cycle-service.js +52 -0
- package/dist/services/artifacts/request-artifact-service.d.ts +116 -0
- package/dist/services/artifacts/request-artifact-service.js +451 -0
- package/dist/services/artifacts/request-artifact-state-helpers.d.ts +51 -0
- package/dist/services/artifacts/request-artifact-state-helpers.js +114 -0
- package/dist/services/artifacts/workspace-service.d.ts +34 -0
- package/dist/services/artifacts/workspace-service.js +272 -0
- package/dist/services/audit/artifact-writer.d.ts +93 -0
- package/dist/services/audit/artifact-writer.js +303 -0
- package/dist/services/audit/audit-goal-service.d.ts +35 -0
- package/dist/services/audit/audit-goal-service.js +75 -0
- package/dist/services/audit/audit-goal-types.d.ts +40 -0
- package/dist/services/audit/audit-goal-types.js +15 -0
- package/dist/services/audit/backing-detector.d.ts +24 -0
- package/dist/services/audit/backing-detector.js +59 -0
- package/dist/services/audit/classifier.d.ts +38 -0
- package/dist/services/audit/classifier.js +134 -0
- package/dist/services/audit/decision-writer.d.ts +76 -0
- package/dist/services/audit/decision-writer.js +217 -0
- package/dist/services/audit/enforcers/active-skill-resolver.d.ts +29 -0
- package/dist/services/audit/enforcers/active-skill-resolver.js +71 -0
- package/dist/services/audit/enforcers/code-ban.d.ts +23 -0
- package/dist/services/audit/enforcers/code-ban.js +27 -0
- package/dist/services/audit/enforcers/design-draft-confirm.d.ts +24 -0
- package/dist/services/audit/enforcers/design-draft-confirm.js +58 -0
- package/dist/services/audit/enforcers/lint-audit-regression.d.ts +21 -0
- package/dist/services/audit/enforcers/lint-audit-regression.js +86 -0
- package/dist/services/audit/enforcers/lint-catalog-governance.d.ts +32 -0
- package/dist/services/audit/enforcers/lint-catalog-governance.js +48 -0
- package/dist/services/audit/enforcers/lint-cli-back.d.ts +16 -0
- package/dist/services/audit/enforcers/lint-cli-back.js +35 -0
- package/dist/services/audit/enforcers/lint-output-style.d.ts +11 -0
- package/dist/services/audit/enforcers/lint-output-style.js +94 -0
- package/dist/services/audit/enforcers/lint-reference-integrity.d.ts +6 -0
- package/dist/services/audit/enforcers/lint-reference-integrity.js +83 -0
- package/dist/services/audit/enforcers/lint-reference-shape.d.ts +30 -0
- package/dist/services/audit/enforcers/lint-reference-shape.js +272 -0
- package/dist/services/audit/enforcers/lint-style.d.ts +49 -0
- package/dist/services/audit/enforcers/lint-style.js +173 -0
- package/dist/services/audit/enforcers/lint-workflow-shape.d.ts +4 -0
- package/dist/services/audit/enforcers/lint-workflow-shape.js +100 -0
- package/dist/services/audit/enforcers/login-gate.d.ts +23 -0
- package/dist/services/audit/enforcers/login-gate.js +40 -0
- package/dist/services/audit/enforcers/mock-placement.d.ts +25 -0
- package/dist/services/audit/enforcers/mock-placement.js +48 -0
- package/dist/services/audit/enforcers/no-root-pollution.d.ts +21 -0
- package/dist/services/audit/enforcers/no-root-pollution.js +56 -0
- package/dist/services/audit/enforcers/pre-rd-scan.d.ts +22 -0
- package/dist/services/audit/enforcers/pre-rd-scan.js +23 -0
- package/dist/services/audit/enforcers/prototype-fidelity.d.ts +25 -0
- package/dist/services/audit/enforcers/prototype-fidelity.js +75 -0
- package/dist/services/audit/enforcers/resume-detection.d.ts +21 -0
- package/dist/services/audit/enforcers/resume-detection.js +52 -0
- package/dist/services/audit/enforcers/sub-agent-sid.d.ts +25 -0
- package/dist/services/audit/enforcers/sub-agent-sid.js +63 -0
- package/dist/services/audit/prose-ratio-calculator.d.ts +45 -0
- package/dist/services/audit/prose-ratio-calculator.js +52 -0
- package/dist/services/audit/red-line-catalog-p2-a.d.ts +21 -0
- package/dist/services/audit/red-line-catalog-p2-a.js +229 -0
- package/dist/services/audit/red-line-catalog-p2-b.d.ts +19 -0
- package/dist/services/audit/red-line-catalog-p2-b.js +225 -0
- package/dist/services/audit/red-line-catalog.d.ts +51 -0
- package/dist/services/audit/red-line-catalog.js +195 -0
- package/dist/services/audit/red-lines-service.d.ts +23 -0
- package/dist/services/audit/red-lines-service.js +464 -0
- package/dist/services/audit/scanners/openspec-scanner.d.ts +15 -0
- package/dist/services/audit/scanners/openspec-scanner.js +55 -0
- package/dist/services/audit/scanners/rules-tree-scanner.d.ts +16 -0
- package/dist/services/audit/scanners/rules-tree-scanner.js +56 -0
- package/dist/services/audit/scanners/skills-tree-scanner.d.ts +17 -0
- package/dist/services/audit/scanners/skills-tree-scanner.js +68 -0
- package/dist/services/audit/static-service.d.ts +60 -0
- package/dist/services/audit/static-service.js +130 -0
- package/dist/services/audit/types.d.ts +86 -0
- package/dist/services/audit/types.js +13 -0
- package/dist/services/audit-independent/perf-audit-service.d.ts +151 -0
- package/dist/services/audit-independent/perf-audit-service.js +316 -0
- package/dist/services/audit-independent/security-audit-service.d.ts +155 -0
- package/dist/services/audit-independent/security-audit-service.js +316 -0
- package/dist/services/classify/classify-service.d.ts +42 -0
- package/dist/services/classify/classify-service.js +122 -0
- package/dist/services/classify/classify-types.d.ts +79 -0
- package/dist/services/classify/classify-types.js +90 -0
- package/dist/services/code/auto-compact-orchestrator.d.ts +98 -0
- package/dist/services/code/auto-compact-orchestrator.js +343 -0
- package/dist/services/code/batch-heartbeat-poller.d.ts +51 -0
- package/dist/services/code/batch-heartbeat-poller.js +88 -0
- package/dist/services/code/dag-orchestrator.d.ts +128 -0
- package/dist/services/code/dag-orchestrator.js +304 -0
- package/dist/services/code/emit-handoff.d.ts +49 -0
- package/dist/services/code/emit-handoff.js +79 -0
- package/dist/services/code/job-shape-decision.d.ts +71 -0
- package/dist/services/code/job-shape-decision.js +151 -0
- package/dist/services/code/mode-gate.d.ts +163 -0
- package/dist/services/code/mode-gate.js +212 -0
- package/dist/services/code/post-compact-detector.d.ts +61 -0
- package/dist/services/code/post-compact-detector.js +240 -0
- package/dist/services/code/status-line-renderer.d.ts +34 -0
- package/dist/services/code/status-line-renderer.js +55 -0
- package/dist/services/code/step-08-gate.d.ts +90 -0
- package/dist/services/code/step-08-gate.js +136 -0
- package/dist/services/code/user-touchpoint-classifier.d.ts +44 -0
- package/dist/services/code/user-touchpoint-classifier.js +145 -0
- package/dist/services/code-review/ecc-bridge.d.ts +148 -0
- package/dist/services/code-review/ecc-bridge.js +242 -0
- package/dist/services/code-review/ocr-service.d.ts +129 -0
- package/dist/services/code-review/ocr-service.js +369 -0
- package/dist/services/codegraph/codegraph-process-runner.d.ts +2 -0
- package/dist/services/codegraph/codegraph-process-runner.js +93 -0
- package/dist/services/codegraph/codegraph-service.d.ts +43 -0
- package/dist/services/codegraph/codegraph-service.js +160 -0
- package/dist/services/compact/decision-tables.d.ts +66 -0
- package/dist/services/compact/decision-tables.js +127 -0
- package/dist/services/compact/request-transition-hook.d.ts +20 -0
- package/dist/services/compact/request-transition-hook.js +110 -0
- package/dist/services/compact/suggest-service.d.ts +74 -0
- package/dist/services/compact/suggest-service.js +203 -0
- package/dist/services/complexity/complexity-estimator.d.ts +34 -0
- package/dist/services/complexity/complexity-estimator.js +64 -0
- package/dist/services/config/config-migration.d.ts +45 -0
- package/dist/services/config/config-migration.js +154 -0
- package/dist/services/config/config-restore.d.ts +10 -0
- package/dist/services/config/config-restore.js +47 -0
- package/dist/services/config/config-rollback.d.ts +13 -0
- package/dist/services/config/config-rollback.js +26 -0
- package/dist/services/config/config-safety.d.ts +40 -0
- package/dist/services/config/config-safety.js +359 -0
- package/dist/services/config/config-service.d.ts +69 -0
- package/dist/services/config/config-service.js +814 -0
- package/dist/services/config/config-types.d.ts +119 -0
- package/dist/services/config/config-types.js +18 -0
- package/dist/services/config/model-routing.d.ts +66 -0
- package/dist/services/config/model-routing.js +105 -0
- package/dist/services/config/provider-service.d.ts +48 -0
- package/dist/services/config/provider-service.js +143 -0
- package/dist/services/config/proxy-service.d.ts +21 -0
- package/dist/services/config/proxy-service.js +44 -0
- package/dist/services/config/sidecar-store.d.ts +25 -0
- package/dist/services/config/sidecar-store.js +61 -0
- package/dist/services/config/workspace-state-service.d.ts +30 -0
- package/dist/services/config/workspace-state-service.js +142 -0
- package/dist/services/context/artifact-meta.d.ts +72 -0
- package/dist/services/context/artifact-meta.js +105 -0
- package/dist/services/context/auto-compact-dispatcher.d.ts +37 -0
- package/dist/services/context/auto-compact-dispatcher.js +240 -0
- package/dist/services/context/auto-compact-reader.d.ts +51 -0
- package/dist/services/context/auto-compact-reader.js +164 -0
- package/dist/services/context/auto-compact-types.d.ts +143 -0
- package/dist/services/context/auto-compact-types.js +36 -0
- package/dist/services/context/collector.d.ts +24 -0
- package/dist/services/context/collector.js +133 -0
- package/dist/services/context/context-builder.d.ts +30 -0
- package/dist/services/context/context-builder.js +78 -0
- package/dist/services/context/context-guard.d.ts +49 -0
- package/dist/services/context/context-guard.js +91 -0
- package/dist/services/context/context-schema.d.ts +415 -0
- package/dist/services/context/context-schema.js +73 -0
- package/dist/services/context/dispatch-context-guard.d.ts +27 -0
- package/dist/services/context/dispatch-context-guard.js +192 -0
- package/dist/services/context/doc-retriever.d.ts +26 -0
- package/dist/services/context/doc-retriever.js +51 -0
- package/dist/services/context/headroom-client.d.ts +34 -0
- package/dist/services/context/headroom-client.js +117 -0
- package/dist/services/context/headroom-fetcher.d.ts +6 -0
- package/dist/services/context/headroom-fetcher.js +28 -0
- package/dist/services/context/headroom-prefs.d.ts +46 -0
- package/dist/services/context/headroom-prefs.js +34 -0
- package/dist/services/context/index.d.ts +7 -0
- package/dist/services/context/index.js +6 -0
- package/dist/services/context/main-session-monitor.d.ts +89 -0
- package/dist/services/context/main-session-monitor.js +142 -0
- package/dist/services/context/renderer.d.ts +20 -0
- package/dist/services/context/renderer.js +30 -0
- package/dist/services/context/shared-channel.d.ts +93 -0
- package/dist/services/context/shared-channel.js +308 -0
- package/dist/services/context/threshold.d.ts +35 -0
- package/dist/services/context/threshold.js +76 -0
- package/dist/services/context/tokenizer.d.ts +12 -0
- package/dist/services/context/tokenizer.js +43 -0
- package/dist/services/context/types.d.ts +93 -0
- package/dist/services/context/types.js +9 -0
- package/dist/services/crystallization/crystallization-service.d.ts +239 -0
- package/dist/services/crystallization/crystallization-service.js +397 -0
- package/dist/services/crystallization/crystallization-store.d.ts +75 -0
- package/dist/services/crystallization/crystallization-store.js +193 -0
- package/dist/services/crystallization/crystallization-types.d.ts +313 -0
- package/dist/services/crystallization/crystallization-types.js +299 -0
- package/dist/services/crystallization/evidence-brief-builder.d.ts +237 -0
- package/dist/services/crystallization/evidence-brief-builder.js +240 -0
- package/dist/services/dashboard/project-dashboard-service.d.ts +91 -0
- package/dist/services/dashboard/project-dashboard-service.js +147 -0
- package/dist/services/dispatch/batch-counter.d.ts +27 -0
- package/dist/services/dispatch/batch-counter.js +102 -0
- package/dist/services/dispatch/contract-store.d.ts +63 -0
- package/dist/services/dispatch/contract-store.js +157 -0
- package/dist/services/dispatch/dispatch-record-writer.d.ts +138 -0
- package/dist/services/dispatch/dispatch-record-writer.js +460 -0
- package/dist/services/dispatch/heartbeat-truncator.d.ts +26 -0
- package/dist/services/dispatch/heartbeat-truncator.js +13 -0
- package/dist/services/dispatch/leak-detector.d.ts +11 -0
- package/dist/services/dispatch/leak-detector.js +72 -0
- package/dist/services/dispatch/slice-dag.d.ts +81 -0
- package/dist/services/dispatch/slice-dag.js +238 -0
- package/dist/services/dispatch/sub-agent-dispatcher.d.ts +239 -0
- package/dist/services/dispatch/sub-agent-dispatcher.js +382 -0
- package/dist/services/dispatch/test-tool-detection.d.ts +36 -0
- package/dist/services/dispatch/test-tool-detection.js +46 -0
- package/dist/services/doc/doc-generator.d.ts +38 -0
- package/dist/services/doc/doc-generator.js +122 -0
- package/dist/services/doctor/doctor-service.d.ts +149 -0
- package/dist/services/doctor/doctor-service.js +929 -0
- package/dist/services/evolution/evolution-service.d.ts +137 -0
- package/dist/services/evolution/evolution-service.js +281 -0
- package/dist/services/evolution/evolution-store.d.ts +57 -0
- package/dist/services/evolution/evolution-store.js +232 -0
- package/dist/services/evolution/evolution-types.d.ts +706 -0
- package/dist/services/evolution/evolution-types.js +286 -0
- package/dist/services/evolution/independent-evaluator-runner.d.ts +90 -0
- package/dist/services/evolution/independent-evaluator-runner.js +106 -0
- package/dist/services/evolution/regression-skeptic-runner.d.ts +64 -0
- package/dist/services/evolution/regression-skeptic-runner.js +113 -0
- package/dist/services/feedback/feedback-promotion-service.d.ts +123 -0
- package/dist/services/feedback/feedback-promotion-service.js +300 -0
- package/dist/services/filesystem/file-lock.d.ts +11 -0
- package/dist/services/filesystem/file-lock.js +152 -0
- package/dist/services/final-review/final-review-service.d.ts +12 -0
- package/dist/services/final-review/final-review-service.js +52 -0
- package/dist/services/final-review/final-review-types.d.ts +42 -0
- package/dist/services/final-review/final-review-types.js +18 -0
- package/dist/services/fixture/fixture-capture-service.d.ts +87 -0
- package/dist/services/fixture/fixture-capture-service.js +317 -0
- package/dist/services/fixture/fixture-sanitize-service.d.ts +117 -0
- package/dist/services/fixture/fixture-sanitize-service.js +161 -0
- package/dist/services/fixture/index.d.ts +8 -0
- package/dist/services/fixture/index.js +8 -0
- package/dist/services/fork/fork-sync-state.d.ts +85 -0
- package/dist/services/fork/fork-sync-state.js +130 -0
- package/dist/services/fuzzy-matching/fuzzy-match-service.d.ts +15 -0
- package/dist/services/fuzzy-matching/fuzzy-match-service.js +56 -0
- package/dist/services/fuzzy-matching/fzf-pick-service.d.ts +68 -0
- package/dist/services/fuzzy-matching/fzf-pick-service.js +158 -0
- package/dist/services/fuzzy-matching/types.d.ts +20 -0
- package/dist/services/fuzzy-matching/types.js +1 -0
- package/dist/services/handoff/handoff-parser.d.ts +28 -0
- package/dist/services/handoff/handoff-parser.js +69 -0
- package/dist/services/handoff/handoff-types.d.ts +39 -0
- package/dist/services/handoff/handoff-types.js +19 -0
- package/dist/services/handoff/handoff-writer.d.ts +23 -0
- package/dist/services/handoff/handoff-writer.js +30 -0
- package/dist/services/hooks/auto-compact-hook-install.d.ts +104 -0
- package/dist/services/hooks/auto-compact-hook-install.js +157 -0
- package/dist/services/hooks/output.d.ts +92 -0
- package/dist/services/hooks/output.js +111 -0
- package/dist/services/hooks/presence-marker-detector.d.ts +16 -0
- package/dist/services/hooks/presence-marker-detector.js +105 -0
- package/dist/services/ide/adapters/claude-code-adapter.d.ts +18 -0
- package/dist/services/ide/adapters/claude-code-adapter.js +103 -0
- package/dist/services/ide/adapters/codex-adapter.d.ts +46 -0
- package/dist/services/ide/adapters/codex-adapter.js +97 -0
- package/dist/services/ide/adapters/cursor-adapter.d.ts +36 -0
- package/dist/services/ide/adapters/cursor-adapter.js +84 -0
- package/dist/services/ide/adapters/hermes-adapter.d.ts +21 -0
- package/dist/services/ide/adapters/hermes-adapter.js +51 -0
- package/dist/services/ide/adapters/openclaw-adapter.d.ts +14 -0
- package/dist/services/ide/adapters/openclaw-adapter.js +42 -0
- package/dist/services/ide/adapters/trae-adapter.d.ts +42 -0
- package/dist/services/ide/adapters/trae-adapter.js +83 -0
- package/dist/services/ide/adapters/zcode-adapter.d.ts +40 -0
- package/dist/services/ide/adapters/zcode-adapter.js +220 -0
- package/dist/services/ide/current-model-detector.d.ts +14 -0
- package/dist/services/ide/current-model-detector.js +60 -0
- package/dist/services/ide/hook-protocol.d.ts +47 -0
- package/dist/services/ide/hook-protocol.js +74 -0
- package/dist/services/ide/hook-translator.d.ts +72 -0
- package/dist/services/ide/hook-translator.js +128 -0
- package/dist/services/ide/ide-detector.d.ts +10 -0
- package/dist/services/ide/ide-detector.js +19 -0
- package/dist/services/ide/ide-registry.d.ts +14 -0
- package/dist/services/ide/ide-registry.js +63 -0
- package/dist/services/ide/ide-types.d.ts +253 -0
- package/dist/services/ide/ide-types.js +2 -0
- package/dist/services/ide/resource-profile.d.ts +52 -0
- package/dist/services/ide/resource-profile.js +33 -0
- package/dist/services/ide/shared/atomic-json.d.ts +15 -0
- package/dist/services/ide/shared/atomic-json.js +58 -0
- package/dist/services/ide/shared/safe-path.d.ts +11 -0
- package/dist/services/ide/shared/safe-path.js +29 -0
- package/dist/services/impact/impact-scan-service.d.ts +66 -0
- package/dist/services/impact/impact-scan-service.js +197 -0
- package/dist/services/job/job-event-emitter.d.ts +30 -0
- package/dist/services/job/job-event-emitter.js +5 -0
- package/dist/services/job/job-orchestrator.d.ts +50 -0
- package/dist/services/job/job-orchestrator.js +104 -0
- package/dist/services/job/job-progress-store.d.ts +60 -0
- package/dist/services/job/job-progress-store.js +70 -0
- package/dist/services/job/job-resource-snapshot.d.ts +7 -0
- package/dist/services/job/job-resource-snapshot.js +75 -0
- package/dist/services/job/job-rotation.d.ts +17 -0
- package/dist/services/job/job-rotation.js +30 -0
- package/dist/services/job/job-state-store.d.ts +24 -0
- package/dist/services/job/job-state-store.js +60 -0
- package/dist/services/job/job-types.d.ts +444 -0
- package/dist/services/job/job-types.js +87 -0
- package/dist/services/job/subagent-job-wrapper.d.ts +35 -0
- package/dist/services/job/subagent-job-wrapper.js +30 -0
- package/dist/services/legacy/legacy-detector.d.ts +34 -0
- package/dist/services/legacy/legacy-detector.js +111 -0
- package/dist/services/log/log-commands-service.d.ts +54 -0
- package/dist/services/log/log-commands-service.js +83 -0
- package/dist/services/log/logger.d.ts +103 -0
- package/dist/services/log/logger.js +224 -0
- package/dist/services/log/redact.d.ts +32 -0
- package/dist/services/log/redact.js +89 -0
- package/dist/services/log/retention.d.ts +34 -0
- package/dist/services/log/retention.js +78 -0
- package/dist/services/loop/evaluator-dispatcher.d.ts +50 -0
- package/dist/services/loop/evaluator-dispatcher.js +552 -0
- package/dist/services/loop/loop-bee-relation-service.d.ts +107 -0
- package/dist/services/loop/loop-bee-relation-service.js +211 -0
- package/dist/services/loop/loop-bee-relation-store.d.ts +53 -0
- package/dist/services/loop/loop-bee-relation-store.js +130 -0
- package/dist/services/loop/loop-bee-relation-types.d.ts +118 -0
- package/dist/services/loop/loop-bee-relation-types.js +114 -0
- package/dist/services/loop/loop-release-service.d.ts +46 -0
- package/dist/services/loop/loop-release-service.js +66 -0
- package/dist/services/loop/loop-release-store.d.ts +55 -0
- package/dist/services/loop/loop-release-store.js +134 -0
- package/dist/services/loop/loop-release-types.d.ts +250 -0
- package/dist/services/loop/loop-release-types.js +162 -0
- package/dist/services/loop/monotonic-guard.d.ts +80 -0
- package/dist/services/loop/monotonic-guard.js +232 -0
- package/dist/services/loop/monotonic-runner.d.ts +58 -0
- package/dist/services/loop/monotonic-runner.js +231 -0
- package/dist/services/loop/run-driver.d.ts +70 -0
- package/dist/services/loop/run-driver.js +400 -0
- package/dist/services/loop/spec-service.d.ts +90 -0
- package/dist/services/loop/spec-service.js +497 -0
- package/dist/services/memory/llm-reranker.d.ts +174 -0
- package/dist/services/memory/llm-reranker.js +284 -0
- package/dist/services/memory/memory-search-service.d.ts +93 -0
- package/dist/services/memory/memory-search-service.js +117 -0
- package/dist/services/memory/project-context-service.d.ts +21 -0
- package/dist/services/memory/project-context-service.js +161 -0
- package/dist/services/memory/project-memory-service.d.ts +167 -0
- package/dist/services/memory/project-memory-service.js +817 -0
- package/dist/services/migrate-skill-name/migrate.d.ts +17 -0
- package/dist/services/migrate-skill-name/migrate.js +152 -0
- package/dist/services/migrate-skill-name/schema.d.ts +42 -0
- package/dist/services/migrate-skill-name/schema.js +25 -0
- package/dist/services/migration/v2-10-to-v2-11-service.d.ts +44 -0
- package/dist/services/migration/v2-10-to-v2-11-service.js +190 -0
- package/dist/services/migration/v2-10-to-v2-11-types.d.ts +41 -0
- package/dist/services/migration/v2-10-to-v2-11-types.js +23 -0
- package/dist/services/mode/bypass-tracker.d.ts +4 -0
- package/dist/services/mode/bypass-tracker.js +31 -0
- package/dist/services/mode/mode-enforcement.d.ts +14 -0
- package/dist/services/mode/mode-enforcement.js +84 -0
- package/dist/services/mut/assert-scanner.d.ts +6 -0
- package/dist/services/mut/assert-scanner.js +116 -0
- package/dist/services/mut/index.d.ts +8 -0
- package/dist/services/mut/index.js +7 -0
- package/dist/services/mut/mut-runner.d.ts +39 -0
- package/dist/services/mut/mut-runner.js +29 -0
- package/dist/services/mut/production-stryker.d.ts +2 -0
- package/dist/services/mut/production-stryker.js +75 -0
- package/dist/services/mut/report-builder.d.ts +11 -0
- package/dist/services/mut/report-builder.js +110 -0
- package/dist/services/mut/report-loader.d.ts +31 -0
- package/dist/services/mut/report-loader.js +78 -0
- package/dist/services/mut/thresholds.d.ts +21 -0
- package/dist/services/mut/thresholds.js +22 -0
- package/dist/services/mut/types.d.ts +336 -0
- package/dist/services/mut/types.js +59 -0
- package/dist/services/observability/aggregation.d.ts +64 -0
- package/dist/services/observability/aggregation.js +217 -0
- package/dist/services/observability/jsonl-store.d.ts +59 -0
- package/dist/services/observability/jsonl-store.js +120 -0
- package/dist/services/observability/observability-service.d.ts +95 -0
- package/dist/services/observability/observability-service.js +119 -0
- package/dist/services/observability/report-formatter.d.ts +42 -0
- package/dist/services/observability/report-formatter.js +156 -0
- package/dist/services/openspec/openspec-archive-service.d.ts +12 -0
- package/dist/services/openspec/openspec-archive-service.js +28 -0
- package/dist/services/openspec/openspec-bridge-service.d.ts +16 -0
- package/dist/services/openspec/openspec-bridge-service.js +76 -0
- package/dist/services/openspec/openspec-init-service.d.ts +23 -0
- package/dist/services/openspec/openspec-init-service.js +122 -0
- package/dist/services/openspec/openspec-propose-from-doctor-service.d.ts +31 -0
- package/dist/services/openspec/openspec-propose-from-doctor-service.js +95 -0
- package/dist/services/openspec/openspec-render-service.d.ts +38 -0
- package/dist/services/openspec/openspec-render-service.js +130 -0
- package/dist/services/openspec/openspec-scan-service.d.ts +6 -0
- package/dist/services/openspec/openspec-scan-service.js +123 -0
- package/dist/services/openspec/openspec-types.d.ts +39 -0
- package/dist/services/openspec/openspec-types.js +1 -0
- package/dist/services/openspec/openspec-validate-service.d.ts +27 -0
- package/dist/services/openspec/openspec-validate-service.js +77 -0
- package/dist/services/perf/perf-baseline-service.d.ts +70 -0
- package/dist/services/perf/perf-baseline-service.js +214 -0
- package/dist/services/polyrepo/polyrepo-dispatcher.d.ts +34 -0
- package/dist/services/polyrepo/polyrepo-dispatcher.js +119 -0
- package/dist/services/polyrepo/polyrepo-scanner.d.ts +9 -0
- package/dist/services/polyrepo/polyrepo-scanner.js +94 -0
- package/dist/services/polyrepo/polyrepo-service.d.ts +34 -0
- package/dist/services/polyrepo/polyrepo-service.js +49 -0
- package/dist/services/polyrepo/polyrepo-types.d.ts +55 -0
- package/dist/services/polyrepo/polyrepo-types.js +1 -0
- package/dist/services/prd/handoff-auto-regen.d.ts +22 -0
- package/dist/services/prd/handoff-auto-regen.js +73 -0
- package/dist/services/prd/handoff-service.d.ts +54 -0
- package/dist/services/prd/handoff-service.js +142 -0
- package/dist/services/prd/handoff-types.d.ts +64 -0
- package/dist/services/prd/handoff-types.js +22 -0
- package/dist/services/prd/prd-blocks-checker.d.ts +51 -0
- package/dist/services/prd/prd-blocks-checker.js +130 -0
- package/dist/services/prd/project-scan-bootstrap-service.d.ts +52 -0
- package/dist/services/prd/project-scan-bootstrap-service.js +445 -0
- package/dist/services/prd/project-scan-reader.d.ts +24 -0
- package/dist/services/prd/project-scan-reader.js +150 -0
- package/dist/services/prd/project-scan-sediment.d.ts +97 -0
- package/dist/services/prd/project-scan-sediment.js +445 -0
- package/dist/services/prd/project-scan-types.d.ts +66 -0
- package/dist/services/prd/project-scan-types.js +20 -0
- package/dist/services/preferences/preferences-service.d.ts +38 -0
- package/dist/services/preferences/preferences-service.js +198 -0
- package/dist/services/preferences/preferences-types.d.ts +148 -0
- package/dist/services/preferences/preferences-types.js +53 -0
- package/dist/services/profiles/profile-service.d.ts +6 -0
- package/dist/services/profiles/profile-service.js +19 -0
- package/dist/services/progress/progress-service.d.ts +125 -0
- package/dist/services/progress/progress-service.js +192 -0
- package/dist/services/providers/minimax-provider-service.d.ts +24 -0
- package/dist/services/providers/minimax-provider-service.js +143 -0
- package/dist/services/providers/minimax-worker-service.d.ts +21 -0
- package/dist/services/providers/minimax-worker-service.js +83 -0
- package/dist/services/proxy/proxy-service.d.ts +7 -0
- package/dist/services/proxy/proxy-service.js +31 -0
- package/dist/services/qa/browser-event-logger.d.ts +40 -0
- package/dist/services/qa/browser-event-logger.js +54 -0
- package/dist/services/qa/browser-restart-detector.d.ts +74 -0
- package/dist/services/qa/browser-restart-detector.js +138 -0
- package/dist/services/qa/browser-reuse-hint.d.ts +18 -0
- package/dist/services/qa/browser-reuse-hint.js +18 -0
- package/dist/services/qa/browser-wrapper-service.d.ts +37 -0
- package/dist/services/qa/browser-wrapper-service.js +88 -0
- package/dist/services/qa/qa-business-review-state.d.ts +47 -0
- package/dist/services/qa/qa-business-review-state.js +96 -0
- package/dist/services/rd/ast-gate.d.ts +19 -0
- package/dist/services/rd/ast-gate.js +71 -0
- package/dist/services/rd/impl.d.ts +9 -0
- package/dist/services/rd/impl.js +57 -0
- package/dist/services/rd/rd-service.d.ts +129 -0
- package/dist/services/rd/rd-service.js +441 -0
- package/dist/services/rd/reviewer-dispatch-policy.d.ts +122 -0
- package/dist/services/rd/reviewer-dispatch-policy.js +148 -0
- package/dist/services/rd/standards-diagnostic.d.ts +76 -0
- package/dist/services/rd/standards-diagnostic.js +166 -0
- package/dist/services/rd/strategic-stage.d.ts +4 -0
- package/dist/services/rd/strategic-stage.js +15 -0
- package/dist/services/rd/strategy.d.ts +13 -0
- package/dist/services/rd/strategy.js +60 -0
- package/dist/services/rd/tactical-stage.d.ts +33 -0
- package/dist/services/rd/tactical-stage.js +62 -0
- package/dist/services/rd/types.d.ts +252 -0
- package/dist/services/rd/types.js +47 -0
- package/dist/services/recommendations/capability-availability.d.ts +5 -0
- package/dist/services/recommendations/capability-availability.js +40 -0
- package/dist/services/recommendations/capability-map-service.d.ts +7 -0
- package/dist/services/recommendations/capability-map-service.js +131 -0
- package/dist/services/recommendations/capability-seed-items.d.ts +2 -0
- package/dist/services/recommendations/capability-seed-items.js +140 -0
- package/dist/services/recommendations/capability-seed-mappings.d.ts +2 -0
- package/dist/services/recommendations/capability-seed-mappings.js +54 -0
- package/dist/services/recommendations/capability-seed-sources.d.ts +2 -0
- package/dist/services/recommendations/capability-seed-sources.js +35 -0
- package/dist/services/recommendations/recommendation-service.d.ts +8 -0
- package/dist/services/recommendations/recommendation-service.js +106 -0
- package/dist/services/recommendations/recommendation-types.d.ts +129 -0
- package/dist/services/recommendations/recommendation-types.js +1 -0
- package/dist/services/recommendations/seed-capability-catalog.d.ts +3 -0
- package/dist/services/recommendations/seed-capability-catalog.js +3 -0
- package/dist/services/refactor/refactor-service.d.ts +9 -0
- package/dist/services/refactor/refactor-service.js +36 -0
- package/dist/services/release/release-state.d.ts +70 -0
- package/dist/services/release/release-state.js +140 -0
- package/dist/services/retrospective/retrospective-index.d.ts +37 -0
- package/dist/services/retrospective/retrospective-index.js +110 -0
- package/dist/services/retrospective/retrospective-search-service.d.ts +55 -0
- package/dist/services/retrospective/retrospective-search-service.js +107 -0
- package/dist/services/retrospective/retrospective-show.d.ts +40 -0
- package/dist/services/retrospective/retrospective-show.js +109 -0
- package/dist/services/reviewer/model-family.d.ts +18 -0
- package/dist/services/reviewer/model-family.js +70 -0
- package/dist/services/reviewer/providers/anthropic.d.ts +2 -0
- package/dist/services/reviewer/providers/anthropic.js +61 -0
- package/dist/services/reviewer/providers/ollama.d.ts +26 -0
- package/dist/services/reviewer/providers/ollama.js +38 -0
- package/dist/services/reviewer/providers/openai.d.ts +2 -0
- package/dist/services/reviewer/providers/openai.js +63 -0
- package/dist/services/reviewer/reviewer-config.d.ts +34 -0
- package/dist/services/reviewer/reviewer-config.js +100 -0
- package/dist/services/reviewer/reviewer-service.d.ts +56 -0
- package/dist/services/reviewer/reviewer-service.js +263 -0
- package/dist/services/reviewer/selection-strategies.d.ts +27 -0
- package/dist/services/reviewer/selection-strategies.js +53 -0
- package/dist/services/role/role-registry.d.ts +38 -0
- package/dist/services/role/role-registry.js +83 -0
- package/dist/services/runtime/runtime-detector.d.ts +15 -0
- package/dist/services/runtime/runtime-detector.js +62 -0
- package/dist/services/runtime/runtime-service.d.ts +59 -0
- package/dist/services/runtime/runtime-service.js +51 -0
- package/dist/services/runtime/vendor-adapter.d.ts +59 -0
- package/dist/services/runtime/vendor-adapter.js +1 -0
- package/dist/services/runtime/vendors/claude-code.d.ts +7 -0
- package/dist/services/runtime/vendors/claude-code.js +39 -0
- package/dist/services/runtime/vendors/codex.d.ts +7 -0
- package/dist/services/runtime/vendors/codex.js +43 -0
- package/dist/services/runtime/vendors/copilot.d.ts +7 -0
- package/dist/services/runtime/vendors/copilot.js +40 -0
- package/dist/services/sc/index.d.ts +1 -0
- package/dist/services/sc/index.js +1 -0
- package/dist/services/sc/sc-service.d.ts +131 -0
- package/dist/services/sc/sc-service.js +552 -0
- package/dist/services/scan/acceptance-coverage-service.d.ts +42 -0
- package/dist/services/scan/acceptance-coverage-service.js +140 -0
- package/dist/services/scan/api-surface-service.d.ts +69 -0
- package/dist/services/scan/api-surface-service.js +239 -0
- package/dist/services/scan/archetype-service.d.ts +5 -0
- package/dist/services/scan/archetype-service.js +254 -0
- package/dist/services/scan/diff-scope-service.d.ts +40 -0
- package/dist/services/scan/diff-scope-service.js +198 -0
- package/dist/services/scan/existing-system-service.d.ts +7 -0
- package/dist/services/scan/existing-system-service.js +300 -0
- package/dist/services/scan/file-size-scan.d.ts +23 -0
- package/dist/services/scan/file-size-scan.js +68 -0
- package/dist/services/scan/karpathy-service.d.ts +60 -0
- package/dist/services/scan/karpathy-service.js +228 -0
- package/dist/services/scan/libraries-service.d.ts +24 -0
- package/dist/services/scan/libraries-service.js +419 -0
- package/dist/services/scan/libraries-types.d.ts +59 -0
- package/dist/services/scan/libraries-types.js +9 -0
- package/dist/services/scan/orphan-service.d.ts +76 -0
- package/dist/services/scan/orphan-service.js +538 -0
- package/dist/services/scan/scan-types.d.ts +59 -0
- package/dist/services/scan/scan-types.js +1 -0
- package/dist/services/scan/type-sanity-service.d.ts +23 -0
- package/dist/services/scan/type-sanity-service.js +116 -0
- package/dist/services/security/safe-settings-path.d.ts +12 -0
- package/dist/services/security/safe-settings-path.js +104 -0
- package/dist/services/sediment/dispose-confirm.d.ts +9 -0
- package/dist/services/sediment/dispose-confirm.js +5 -0
- package/dist/services/sediment/json-schema.d.ts +247 -0
- package/dist/services/sediment/json-schema.js +26 -0
- package/dist/services/sediment/manifest-lint.d.ts +13 -0
- package/dist/services/sediment/manifest-lint.js +11 -0
- package/dist/services/sediment/pool-paths.d.ts +22 -0
- package/dist/services/sediment/pool-paths.js +25 -0
- package/dist/services/sediment/pool-read.d.ts +20 -0
- package/dist/services/sediment/pool-read.js +73 -0
- package/dist/services/sediment/pool-rebuild-index.d.ts +15 -0
- package/dist/services/sediment/pool-rebuild-index.js +28 -0
- package/dist/services/sediment/pool-write.d.ts +14 -0
- package/dist/services/sediment/pool-write.js +25 -0
- package/dist/services/sediment/promotion-gate.d.ts +12 -0
- package/dist/services/sediment/promotion-gate.js +20 -0
- package/dist/services/sediment/types.d.ts +52 -0
- package/dist/services/sediment/types.js +1 -0
- package/dist/services/session/binding-status-service.d.ts +56 -0
- package/dist/services/session/binding-status-service.js +106 -0
- package/dist/services/session/binding-store.d.ts +161 -0
- package/dist/services/session/binding-store.js +509 -0
- package/dist/services/session/caller-binding-service.d.ts +70 -0
- package/dist/services/session/caller-binding-service.js +148 -0
- package/dist/services/session/caller-id-types.d.ts +77 -0
- package/dist/services/session/caller-id-types.js +46 -0
- package/dist/services/session/getSessionDir.d.ts +1 -0
- package/dist/services/session/getSessionDir.js +27 -0
- package/dist/services/session/index.d.ts +6 -0
- package/dist/services/session/index.js +7 -0
- package/dist/services/session/platform-fallbacks.d.ts +31 -0
- package/dist/services/session/platform-fallbacks.js +35 -0
- package/dist/services/session/resolve-caller-id.d.ts +57 -0
- package/dist/services/session/resolve-caller-id.js +88 -0
- package/dist/services/session/session-binding-bridge.d.ts +76 -0
- package/dist/services/session/session-binding-bridge.js +247 -0
- package/dist/services/session/session-checkpoint-service.d.ts +57 -0
- package/dist/services/session/session-checkpoint-service.js +143 -0
- package/dist/services/session/session-manager.d.ts +168 -0
- package/dist/services/session/session-manager.js +502 -0
- package/dist/services/session/session-resume-service.d.ts +25 -0
- package/dist/services/session/session-resume-service.js +101 -0
- package/dist/services/share/bundle-reader.d.ts +100 -0
- package/dist/services/share/bundle-reader.js +434 -0
- package/dist/services/share/bundle-types.d.ts +392 -0
- package/dist/services/share/bundle-types.js +318 -0
- package/dist/services/share/bundle-writer.d.ts +97 -0
- package/dist/services/share/bundle-writer.js +429 -0
- package/dist/services/share/run-state-contract.d.ts +133 -0
- package/dist/services/share/run-state-contract.js +138 -0
- package/dist/services/signal/cancel-handler.d.ts +14 -0
- package/dist/services/signal/cancel-handler.js +76 -0
- package/dist/services/skill/resume-detector.d.ts +54 -0
- package/dist/services/skill/resume-detector.js +334 -0
- package/dist/services/skill/skill-scheduler.d.ts +40 -0
- package/dist/services/skill/skill-scheduler.js +53 -0
- package/dist/services/skill/skill-search-service.d.ts +88 -0
- package/dist/services/skill/skill-search-service.js +228 -0
- package/dist/services/skillhub/release-diff.d.ts +18 -0
- package/dist/services/skillhub/release-diff.js +38 -0
- package/dist/services/skillhub/release-export.d.ts +8 -0
- package/dist/services/skillhub/release-export.js +31 -0
- package/dist/services/skillhub/release-gc-blobs.d.ts +13 -0
- package/dist/services/skillhub/release-gc-blobs.js +32 -0
- package/dist/services/skillhub/release-import.d.ts +7 -0
- package/dist/services/skillhub/release-import.js +64 -0
- package/dist/services/skillhub/release-retain.d.ts +23 -0
- package/dist/services/skillhub/release-retain.js +94 -0
- package/dist/services/skillhub/sqlite-store.d.ts +22 -0
- package/dist/services/skillhub/sqlite-store.js +63 -0
- package/dist/services/skillhub/tar-runtime.d.ts +21 -0
- package/dist/services/skillhub/tar-runtime.js +91 -0
- package/dist/services/skillhub/types.d.ts +115 -0
- package/dist/services/skillhub/types.js +1 -0
- package/dist/services/skills/hooks-settings-service.d.ts +137 -0
- package/dist/services/skills/hooks-settings-service.js +396 -0
- package/dist/services/skills/skill-conformance-service.d.ts +40 -0
- package/dist/services/skills/skill-conformance-service.js +139 -0
- package/dist/services/skills/skill-presence-service.d.ts +158 -0
- package/dist/services/skills/skill-presence-service.js +474 -0
- package/dist/services/skills/skill-registry.d.ts +17 -0
- package/dist/services/skills/skill-registry.js +67 -0
- package/dist/services/skills/skill-runbook-service.d.ts +11 -0
- package/dist/services/skills/skill-runbook-service.js +128 -0
- package/dist/services/skills/skill-statusline-renderer.d.ts +6 -0
- package/dist/services/skills/skill-statusline-renderer.js +55 -0
- package/dist/services/skills/skill-statusline-service.d.ts +24 -0
- package/dist/services/skills/skill-statusline-service.js +110 -0
- package/dist/services/skills/statusline-settings-service.d.ts +59 -0
- package/dist/services/skills/statusline-settings-service.js +141 -0
- package/dist/services/skills/sync-service.d.ts +86 -0
- package/dist/services/skills/sync-service.js +271 -0
- package/dist/services/slice/calibration-store.d.ts +39 -0
- package/dist/services/slice/calibration-store.js +68 -0
- package/dist/services/slice/cross-pass-edge-merger.d.ts +53 -0
- package/dist/services/slice/cross-pass-edge-merger.js +246 -0
- package/dist/services/slice/granularity-decider.d.ts +37 -0
- package/dist/services/slice/granularity-decider.js +40 -0
- package/dist/services/slice/llm-arbitrator.d.ts +35 -0
- package/dist/services/slice/llm-arbitrator.js +63 -0
- package/dist/services/slice/multi-pass-orchestrator.d.ts +67 -0
- package/dist/services/slice/multi-pass-orchestrator.js +225 -0
- package/dist/services/slice/schema-router.d.ts +44 -0
- package/dist/services/slice/schema-router.js +61 -0
- package/dist/services/slice/slice-archive-service.d.ts +20 -0
- package/dist/services/slice/slice-archive-service.js +111 -0
- package/dist/services/slice/slice-benchmark-service.d.ts +19 -0
- package/dist/services/slice/slice-benchmark-service.js +60 -0
- package/dist/services/slice/slice-check-service.d.ts +2 -0
- package/dist/services/slice/slice-check-service.js +459 -0
- package/dist/services/slice/slice-check-types.d.ts +104 -0
- package/dist/services/slice/slice-check-types.js +28 -0
- package/dist/services/slice/slice-decompose-runners.d.ts +23 -0
- package/dist/services/slice/slice-decompose-runners.js +174 -0
- package/dist/services/slice/slice-decompose-service.d.ts +24 -0
- package/dist/services/slice/slice-decompose-service.js +532 -0
- package/dist/services/slice/slice-decompose-types.d.ts +263 -0
- package/dist/services/slice/slice-decompose-types.js +30 -0
- package/dist/services/slice/slice-integration.d.ts +43 -0
- package/dist/services/slice/slice-integration.js +106 -0
- package/dist/services/slice/slice-pick-service.d.ts +32 -0
- package/dist/services/slice/slice-pick-service.js +75 -0
- package/dist/services/slice/slice-review-state.d.ts +70 -0
- package/dist/services/slice/slice-review-state.js +109 -0
- package/dist/services/slice/slice-topology-types.d.ts +115 -0
- package/dist/services/slice/slice-topology-types.js +20 -0
- package/dist/services/smoke/smoke-paths-state.d.ts +73 -0
- package/dist/services/smoke/smoke-paths-state.js +117 -0
- package/dist/services/sop/gate-enforce-service.d.ts +33 -0
- package/dist/services/sop/gate-enforce-service.js +168 -0
- package/dist/services/sop/sop-advance-service.d.ts +74 -0
- package/dist/services/sop/sop-advance-service.js +115 -0
- package/dist/services/sop/sop-check-service.d.ts +45 -0
- package/dist/services/sop/sop-check-service.js +181 -0
- package/dist/services/sop/sop-paths.d.ts +62 -0
- package/dist/services/sop/sop-paths.js +92 -0
- package/dist/services/sop/sop-registry-service.d.ts +46 -0
- package/dist/services/sop/sop-registry-service.js +89 -0
- package/dist/services/sop/sop-service.d.ts +55 -0
- package/dist/services/sop/sop-service.js +222 -0
- package/dist/services/sop/sop-types.d.ts +95 -0
- package/dist/services/sop/sop-types.js +11 -0
- package/dist/services/standards/ide-aware-standards-service.d.ts +94 -0
- package/dist/services/standards/ide-aware-standards-service.js +91 -0
- package/dist/services/standards/loop-engineering-lint.d.ts +38 -0
- package/dist/services/standards/loop-engineering-lint.js +101 -0
- package/dist/services/standards/loop-engineering-readiness-lint.d.ts +111 -0
- package/dist/services/standards/loop-engineering-readiness-lint.js +248 -0
- package/dist/services/standards/migrate-claude-rules-service.d.ts +19 -0
- package/dist/services/standards/migrate-claude-rules-service.js +214 -0
- package/dist/services/standards/migrate-service.d.ts +63 -0
- package/dist/services/standards/migrate-service.js +193 -0
- package/dist/services/standards/missing-standards-detector.d.ts +81 -0
- package/dist/services/standards/missing-standards-detector.js +139 -0
- package/dist/services/standards/project-context.d.ts +24 -0
- package/dist/services/standards/project-context.js +314 -0
- package/dist/services/standards/project-standards-service.d.ts +114 -0
- package/dist/services/standards/project-standards-service.js +693 -0
- package/dist/services/tech/tech-service.d.ts +69 -0
- package/dist/services/tech/tech-service.js +299 -0
- package/dist/services/test-cache/test-cache-service.d.ts +70 -0
- package/dist/services/test-cache/test-cache-service.js +175 -0
- package/dist/services/understand/hybrid-types.d.ts +32 -0
- package/dist/services/understand/hybrid-types.js +1 -0
- package/dist/services/understand/understand-hybrid-service.d.ts +10 -0
- package/dist/services/understand/understand-hybrid-service.js +100 -0
- package/dist/services/understand/understand-scan-service.d.ts +28 -0
- package/dist/services/understand/understand-scan-service.js +170 -0
- package/dist/services/understand/understand-types.d.ts +50 -0
- package/dist/services/understand/understand-types.js +1 -0
- package/dist/services/upgrade/1x-detector-service.d.ts +7 -0
- package/dist/services/upgrade/1x-detector-service.js +94 -0
- package/dist/services/upgrade/gitignore-migrate-service.d.ts +56 -0
- package/dist/services/upgrade/gitignore-migrate-service.js +170 -0
- package/dist/services/upgrade/upgrade-service.d.ts +81 -0
- package/dist/services/upgrade/upgrade-service.js +403 -0
- package/dist/services/verdict/envelopes.d.ts +93 -0
- package/dist/services/verdict/envelopes.js +349 -0
- package/dist/services/verdict/verdict-aggregator.d.ts +94 -0
- package/dist/services/verdict/verdict-aggregator.js +112 -0
- package/dist/services/workflow/artifact-paths.d.ts +59 -0
- package/dist/services/workflow/artifact-paths.js +166 -0
- package/dist/services/workflow/autonomous-resume-writer.d.ts +16 -0
- package/dist/services/workflow/autonomous-resume-writer.js +170 -0
- package/dist/services/workflow/pipeline-verify-service.d.ts +90 -0
- package/dist/services/workflow/pipeline-verify-service.js +449 -0
- package/dist/services/workflow/plan-reader.d.ts +29 -0
- package/dist/services/workflow/plan-reader.js +174 -0
- package/dist/services/workflow/plan-refresher.d.ts +32 -0
- package/dist/services/workflow/plan-refresher.js +353 -0
- package/dist/services/workflow/plan-trigger-detector.d.ts +55 -0
- package/dist/services/workflow/plan-trigger-detector.js +142 -0
- package/dist/services/workflow/workflow-autonomous-resume-helpers.d.ts +19 -0
- package/dist/services/workflow/workflow-autonomous-resume-helpers.js +300 -0
- package/dist/services/workflow/workflow-autonomous-service.d.ts +100 -0
- package/dist/services/workflow/workflow-autonomous-service.js +306 -0
- package/dist/services/workflow/workflow-loader.d.ts +63 -0
- package/dist/services/workflow/workflow-loader.js +168 -0
- package/dist/services/workflow/workflow-router-service.d.ts +85 -0
- package/dist/services/workflow/workflow-router-service.js +233 -0
- package/dist/services/workflow/workflow-skip-service.d.ts +106 -0
- package/dist/services/workflow/workflow-skip-service.js +209 -0
- package/dist/services/workflow/workflow-spec.d.ts +116 -0
- package/dist/services/workflow/workflow-spec.js +431 -0
- package/dist/services/workflow/workflow-state-store.d.ts +27 -0
- package/dist/services/workflow/workflow-state-store.js +95 -0
- package/dist/services/workspace/claude-settings-template.d.ts +101 -0
- package/dist/services/workspace/claude-settings-template.js +254 -0
- package/dist/services/workspace/migrate-1-4-1-service.d.ts +44 -0
- package/dist/services/workspace/migrate-1-4-1-service.js +195 -0
- package/dist/services/workspace/migrate-service.d.ts +2 -0
- package/dist/services/workspace/migrate-service.js +613 -0
- package/dist/services/workspace/migrate-types.d.ts +127 -0
- package/dist/services/workspace/migrate-types.js +21 -0
- package/dist/services/workspace/reconcile-service.d.ts +188 -0
- package/dist/services/workspace/reconcile-service.js +683 -0
- package/dist/services/workspace/reconcile-types.d.ts +130 -0
- package/dist/services/workspace/reconcile-types.js +13 -0
- package/dist/services/workspace/sid-naming-guard.d.ts +17 -0
- package/dist/services/workspace/sid-naming-guard.js +34 -0
- package/dist/services/workspace/templates/project-scan/audit-output-schema.md +100 -0
- package/dist/services/workspace/templates/project-scan/business-knowledge.md +44 -0
- package/dist/services/workspace/templates/project-scan/index.d.ts +34 -0
- package/dist/services/workspace/templates/project-scan/index.js +60 -0
- package/dist/services/workspace/templates/project-scan/perf-template.md +109 -0
- package/dist/services/workspace/templates/project-scan/security-template.md +99 -0
- package/dist/services/workspace/workspace-claude-settings-materializer.d.ts +45 -0
- package/dist/services/workspace/workspace-claude-settings-materializer.js +194 -0
- package/dist/services/workspace/workspace-clean-service.d.ts +28 -0
- package/dist/services/workspace/workspace-clean-service.js +46 -0
- package/dist/services/workspace/workspace-service.d.ts +177 -0
- package/dist/services/workspace/workspace-service.js +432 -0
- package/dist/services/workspace/workspace-state-service.d.ts +7 -0
- package/dist/services/workspace/workspace-state-service.js +43 -0
- package/dist/shared/format-md-compact.d.ts +32 -0
- package/dist/shared/format-md-compact.js +297 -0
- package/dist/shared/frontmatter.d.ts +6 -0
- package/dist/shared/frontmatter.js +165 -0
- package/dist/shared/fs-utils.d.ts +4 -0
- package/dist/shared/fs-utils.js +16 -0
- package/dist/shared/fs.d.ts +4 -0
- package/dist/shared/fs.js +26 -0
- package/dist/shared/incrementing-number.d.ts +23 -0
- package/dist/shared/incrementing-number.js +68 -0
- package/dist/shared/json-schema-mini.d.ts +10 -0
- package/dist/shared/json-schema-mini.js +113 -0
- package/dist/shared/path-safety.d.ts +21 -0
- package/dist/shared/path-safety.js +54 -0
- package/dist/shared/path-utils.d.ts +13 -0
- package/dist/shared/path-utils.js +56 -0
- package/dist/shared/paths.d.ts +6 -0
- package/dist/shared/paths.js +50 -0
- package/dist/shared/planner-response.d.ts +21 -0
- package/dist/shared/planner-response.js +26 -0
- package/dist/shared/platform.d.ts +6 -0
- package/dist/shared/platform.js +11 -0
- package/dist/shared/process.d.ts +5 -0
- package/dist/shared/process.js +12 -0
- package/dist/shared/result.d.ts +22 -0
- package/dist/shared/result.js +46 -0
- package/dist/shared/stale-policy.d.ts +67 -0
- package/dist/shared/stale-policy.js +85 -0
- package/dist/shared/version.d.ts +1 -0
- package/dist/shared/version.js +1 -0
- package/dist/skills/peaks-maker/index.d.ts +5 -0
- package/dist/skills/peaks-maker/index.js +32 -0
- package/package.json +5 -4
- package/scripts/copy-templates.mjs +1 -1
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* G7.4 path safety + G8 path safety — R-2 symlink/junction guard for
|
|
3
|
+
* sub-agent artifact + shared channel paths.
|
|
4
|
+
*
|
|
5
|
+
* Slice #009's `assertSafeDispatchRecordPath` covers the dispatch record
|
|
6
|
+
* path. This module covers two adjacent paths under the same canonical
|
|
7
|
+
* root (`.peaks/_sub_agents/<sid>/`):
|
|
8
|
+
*
|
|
9
|
+
* - `artifacts/<rid>-<role>-<idx>.<ext>` (G7 write-artifact)
|
|
10
|
+
* - `shared/<batchId>.json` (G8 share / shared-read)
|
|
11
|
+
*
|
|
12
|
+
* Both reuse the same R-2 logic: reject `..` segments BEFORE the OS
|
|
13
|
+
* resolver collapses them (POSIX normalize silently drops `..`), reject
|
|
14
|
+
* absolute paths that escape the canonical root, resolve symlinks via
|
|
15
|
+
* `realpathSync` and re-check the resolved path.
|
|
16
|
+
*
|
|
17
|
+
* The canonical-root pattern is intentionally identical to the slice #009
|
|
18
|
+
* helper, so future audits can reuse one mental model: "all sub-agent
|
|
19
|
+
* state files must live under `.peaks/_sub_agents/<sid>/` and pass the
|
|
20
|
+
* same R-2 guard."
|
|
21
|
+
*/
|
|
22
|
+
import { realpathSync } from 'node:fs';
|
|
23
|
+
import { dirname, isAbsolute, relative, resolve } from 'node:path';
|
|
24
|
+
const SUB_AGENTS_DIR = '_sub_agents';
|
|
25
|
+
const ARTIFACTS_SUBDIR = 'artifacts';
|
|
26
|
+
const SHARED_SUBDIR = 'shared';
|
|
27
|
+
const ARTIFACT_NAME_PATTERN = /^[A-Za-z0-9][A-Za-z0-9._-]*\.[A-Za-z0-9]+$/;
|
|
28
|
+
const BATCH_ID_PATTERN = /^[A-Za-z0-9][A-Za-z0-9._-]*$/;
|
|
29
|
+
/** Build the canonical artifact path for a given session/rid/role/idx/ext. */
|
|
30
|
+
export function artifactPath(projectRoot, sid, rid, role, idx, ext = 'md') {
|
|
31
|
+
if (typeof role !== 'string' || role.length === 0) {
|
|
32
|
+
throw new Error('artifactPath: role must be non-empty');
|
|
33
|
+
}
|
|
34
|
+
if (!Number.isInteger(idx) || idx < 1) {
|
|
35
|
+
throw new Error(`artifactPath: idx must be positive integer (got ${idx})`);
|
|
36
|
+
}
|
|
37
|
+
const safeSid = sanitizeSegment(sid, 'sessionId');
|
|
38
|
+
const safeRid = sanitizeSegment(rid, 'requestId');
|
|
39
|
+
const safeRole = sanitizeSegment(role, 'role');
|
|
40
|
+
const safeExt = ext.replace(/[^A-Za-z0-9]/g, '');
|
|
41
|
+
if (safeExt.length === 0) {
|
|
42
|
+
throw new Error(`artifactPath: ext must be alphanumeric (got "${ext}")`);
|
|
43
|
+
}
|
|
44
|
+
return resolve(projectRoot, '.peaks', SUB_AGENTS_DIR, safeSid, ARTIFACTS_SUBDIR, `${safeRid}-${safeRole}-${String(idx).padStart(3, '0')}.${safeExt}`);
|
|
45
|
+
}
|
|
46
|
+
/** Build the canonical shared channel path. */
|
|
47
|
+
export function sharedChannelPath(projectRoot, sid, rid, batchId) {
|
|
48
|
+
if (typeof batchId !== 'string' || batchId.length === 0) {
|
|
49
|
+
throw new Error('sharedChannelPath: batchId must be non-empty');
|
|
50
|
+
}
|
|
51
|
+
const safeSid = sanitizeSegment(sid, 'sessionId');
|
|
52
|
+
const safeRid = sanitizeSegment(rid, 'requestId');
|
|
53
|
+
if (!BATCH_ID_PATTERN.test(batchId)) {
|
|
54
|
+
throw new Error(`sharedChannelPath: batchId must match ${BATCH_ID_PATTERN} (got "${batchId}")`);
|
|
55
|
+
}
|
|
56
|
+
return resolve(projectRoot, '.peaks', SUB_AGENTS_DIR, safeSid, SHARED_SUBDIR, `${safeRid}-${batchId}.json`);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Assert that `artifactPath` lives under
|
|
60
|
+
* `projectRoot/.peaks/_sub_agents/<sid>/artifacts/`. Rejects
|
|
61
|
+
* symlink/junction escapes and `..` segments.
|
|
62
|
+
*
|
|
63
|
+
* Throws an Error with `.code = 'INVALID_ARTIFACT_PATH'` on rejection.
|
|
64
|
+
*/
|
|
65
|
+
export function assertSafeArtifactPath(artifactPathInput, projectRoot) {
|
|
66
|
+
if (!isAbsolute(artifactPathInput)) {
|
|
67
|
+
throw invalidPathError(artifactPathInput, 'must be absolute');
|
|
68
|
+
}
|
|
69
|
+
const rawSegments = artifactPathInput.split(/[\\/]/);
|
|
70
|
+
if (rawSegments.includes('..')) {
|
|
71
|
+
throw invalidPathError(artifactPathInput, 'must not contain .. segments');
|
|
72
|
+
}
|
|
73
|
+
const expected = resolve(projectRoot, '.peaks', SUB_AGENTS_DIR);
|
|
74
|
+
const rel = relative(expected, artifactPathInput);
|
|
75
|
+
if (rel.startsWith('..') || isAbsolute(rel)) {
|
|
76
|
+
throw invalidPathError(artifactPathInput, 'must be under .peaks/_sub_agents/');
|
|
77
|
+
}
|
|
78
|
+
let realArtifact;
|
|
79
|
+
let realRoot;
|
|
80
|
+
try {
|
|
81
|
+
const parent = dirname(artifactPathInput);
|
|
82
|
+
const realParent = realpathSync(parent);
|
|
83
|
+
realArtifact = resolve(realParent, artifactPathInput.slice(parent.length + 1));
|
|
84
|
+
realRoot = realpathSync(projectRoot);
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
const fallback = resolve(projectRoot, '.peaks', SUB_AGENTS_DIR);
|
|
88
|
+
const rel2 = relative(fallback, artifactPathInput);
|
|
89
|
+
if (rel2.startsWith('..') || isAbsolute(rel2)) {
|
|
90
|
+
throw invalidPathError(artifactPathInput, 'must be under .peaks/_sub_agents/');
|
|
91
|
+
}
|
|
92
|
+
return artifactPathInput;
|
|
93
|
+
}
|
|
94
|
+
const realRel = relative(realRoot, realArtifact);
|
|
95
|
+
if (realRel.startsWith('..') || isAbsolute(realRel)) {
|
|
96
|
+
throw invalidPathError(artifactPathInput, 'symlink/junction escapes project root');
|
|
97
|
+
}
|
|
98
|
+
const realExpected = resolve(realRoot, '.peaks', SUB_AGENTS_DIR);
|
|
99
|
+
const realRelExpected = relative(realExpected, realArtifact);
|
|
100
|
+
if (realRelExpected.startsWith('..') || isAbsolute(realRelExpected)) {
|
|
101
|
+
throw invalidPathError(artifactPathInput, 'must be under .peaks/_sub_agents/');
|
|
102
|
+
}
|
|
103
|
+
return realArtifact;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Assert that `channelPath` lives under
|
|
107
|
+
* `projectRoot/.peaks/_sub_agents/<sid>/shared/`. Same R-2 logic as
|
|
108
|
+
* `assertSafeArtifactPath` but with a different canonical subdir.
|
|
109
|
+
*
|
|
110
|
+
* Throws an Error with `.code = 'INVALID_SHARED_CHANNEL_PATH'` on rejection.
|
|
111
|
+
*/
|
|
112
|
+
export function assertSafeSharedChannelPath(channelPathInput, projectRoot) {
|
|
113
|
+
if (!isAbsolute(channelPathInput)) {
|
|
114
|
+
throw invalidPathErrorShared(channelPathInput, 'must be absolute');
|
|
115
|
+
}
|
|
116
|
+
const rawSegments = channelPathInput.split(/[\\/]/);
|
|
117
|
+
if (rawSegments.includes('..')) {
|
|
118
|
+
throw invalidPathErrorShared(channelPathInput, 'must not contain .. segments');
|
|
119
|
+
}
|
|
120
|
+
const expected = resolve(projectRoot, '.peaks', SUB_AGENTS_DIR);
|
|
121
|
+
const rel = relative(expected, channelPathInput);
|
|
122
|
+
if (rel.startsWith('..') || isAbsolute(rel)) {
|
|
123
|
+
throw invalidPathErrorShared(channelPathInput, 'must be under .peaks/_sub_agents/shared/');
|
|
124
|
+
}
|
|
125
|
+
let realChannel;
|
|
126
|
+
let realRoot;
|
|
127
|
+
try {
|
|
128
|
+
const parent = dirname(channelPathInput);
|
|
129
|
+
const realParent = realpathSync(parent);
|
|
130
|
+
realChannel = resolve(realParent, channelPathInput.slice(parent.length + 1));
|
|
131
|
+
realRoot = realpathSync(projectRoot);
|
|
132
|
+
}
|
|
133
|
+
catch {
|
|
134
|
+
const fallback = resolve(projectRoot, '.peaks', SUB_AGENTS_DIR);
|
|
135
|
+
const rel2 = relative(fallback, channelPathInput);
|
|
136
|
+
if (rel2.startsWith('..') || isAbsolute(rel2)) {
|
|
137
|
+
throw invalidPathErrorShared(channelPathInput, 'must be under .peaks/_sub_agents/shared/');
|
|
138
|
+
}
|
|
139
|
+
return channelPathInput;
|
|
140
|
+
}
|
|
141
|
+
const realRel = relative(realRoot, realChannel);
|
|
142
|
+
if (realRel.startsWith('..') || isAbsolute(realRel)) {
|
|
143
|
+
throw invalidPathErrorShared(channelPathInput, 'symlink/junction escapes project root');
|
|
144
|
+
}
|
|
145
|
+
const realExpected = resolve(realRoot, '.peaks', SUB_AGENTS_DIR);
|
|
146
|
+
const realRelExpected = relative(realExpected, realChannel);
|
|
147
|
+
if (realRelExpected.startsWith('..') || isAbsolute(realRelExpected)) {
|
|
148
|
+
throw invalidPathErrorShared(channelPathInput, 'must be under .peaks/_sub_agents/shared/');
|
|
149
|
+
}
|
|
150
|
+
return realChannel;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Soft-warn check on the artifact file name pattern. Returns null if
|
|
154
|
+
* the name matches `<rid>-<role>-<idx>.<ext>`, otherwise returns a
|
|
155
|
+
* warning string. Does NOT reject (the path is still in the canonical
|
|
156
|
+
* dir; the warning is for human/audit readability per G7.4.c).
|
|
157
|
+
*/
|
|
158
|
+
export function checkArtifactNameConvention(artifactPathInput) {
|
|
159
|
+
const base = artifactPathInput.split(/[\\/]/).pop() ?? '';
|
|
160
|
+
if (ARTIFACT_NAME_PATTERN.test(base)) {
|
|
161
|
+
return null;
|
|
162
|
+
}
|
|
163
|
+
return `Artifact file name does not match <rid>-<role>-<idx>.<ext> convention: ${base}`;
|
|
164
|
+
}
|
|
165
|
+
function sanitizeSegment(value, field) {
|
|
166
|
+
if (typeof value !== 'string' || value.length === 0) {
|
|
167
|
+
throw new Error(`${field} must be non-empty`);
|
|
168
|
+
}
|
|
169
|
+
if (value.length > 256) {
|
|
170
|
+
throw new Error(`${field} must be ≤ 256 chars (got ${value.length})`);
|
|
171
|
+
}
|
|
172
|
+
for (let i = 0; i < value.length; i += 1) {
|
|
173
|
+
const code = value.charCodeAt(i);
|
|
174
|
+
if (code <= 0x20 || code === 0x7F) {
|
|
175
|
+
throw new Error(`${field} must not contain whitespace or control characters`);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
if (value.includes('..') || value.includes('/') || value.includes('\\')) {
|
|
179
|
+
throw new Error(`${field} must not contain '..' or path separators`);
|
|
180
|
+
}
|
|
181
|
+
return value;
|
|
182
|
+
}
|
|
183
|
+
function invalidPathError(path, reason) {
|
|
184
|
+
const e = new Error(`Invalid artifact path: ${reason} (path: ${path})`);
|
|
185
|
+
e.code = 'INVALID_ARTIFACT_PATH';
|
|
186
|
+
return e;
|
|
187
|
+
}
|
|
188
|
+
function invalidPathErrorShared(path, reason) {
|
|
189
|
+
const e = new Error(`Invalid shared channel path: ${reason} (path: ${path})`);
|
|
190
|
+
e.code = 'INVALID_SHARED_CHANNEL_PATH';
|
|
191
|
+
return e;
|
|
192
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per spec §4.1 Step 2 — DocRetriever.
|
|
3
|
+
*
|
|
4
|
+
* HARD CONSTRAINTS:
|
|
5
|
+
* H1 (CLI enforces — not LLM): this module is the only place that decides
|
|
6
|
+
* which docs to fetch.
|
|
7
|
+
* H2 (locked version): returns ONLY docs whose version exactly matches
|
|
8
|
+
* the locked dep version. No fallback to "latest". If no doc exists
|
|
9
|
+
* at the locked version, record `version_unknown` and move on.
|
|
10
|
+
*
|
|
11
|
+
* The fetcher is injected so tests can pin responses deterministically
|
|
12
|
+
* (cross-version isolation test relies on this).
|
|
13
|
+
*/
|
|
14
|
+
import type { DepInfo, DocRetrieverOutput } from './types.js';
|
|
15
|
+
export interface DocFetcher {
|
|
16
|
+
(dep: string, version: string): Promise<FetcherPayload | null>;
|
|
17
|
+
}
|
|
18
|
+
export interface FetcherPayload {
|
|
19
|
+
readonly version: string;
|
|
20
|
+
readonly excerpt: string;
|
|
21
|
+
}
|
|
22
|
+
export interface RetrieveOptions {
|
|
23
|
+
readonly fetcher: DocFetcher;
|
|
24
|
+
readonly now?: () => Date;
|
|
25
|
+
}
|
|
26
|
+
export declare function retrieveDocs(deps: Readonly<Record<string, DepInfo>>, options: RetrieveOptions): Promise<DocRetrieverOutput>;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
function makeSection(excerpt) {
|
|
2
|
+
// Trivial section split — production slice would parse markdown headings.
|
|
3
|
+
// For v1, single-section per dep is sufficient.
|
|
4
|
+
return {
|
|
5
|
+
title: 'API Summary',
|
|
6
|
+
tokenEstimate: Math.ceil(excerpt.length / 4),
|
|
7
|
+
excerpt,
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
function hashContent(content) {
|
|
11
|
+
// Stable hash via Node crypto (deterministic for test pinning).
|
|
12
|
+
// Production uses sha256 from node:crypto.
|
|
13
|
+
// For v1, we accept that this returns a non-cryptographic digest.
|
|
14
|
+
let h = 0;
|
|
15
|
+
for (let i = 0; i < content.length; i += 1) {
|
|
16
|
+
h = ((h << 5) - h + content.charCodeAt(i)) | 0;
|
|
17
|
+
}
|
|
18
|
+
return Math.abs(h).toString(16).padStart(16, '0').slice(0, 16);
|
|
19
|
+
}
|
|
20
|
+
export async function retrieveDocs(deps, options) {
|
|
21
|
+
const fetchedDocs = [];
|
|
22
|
+
const skipped = [];
|
|
23
|
+
const now = options.now ?? (() => new Date());
|
|
24
|
+
for (const [dep, info] of Object.entries(deps)) {
|
|
25
|
+
try {
|
|
26
|
+
const payload = await options.fetcher(dep, info.version);
|
|
27
|
+
if (payload === null) {
|
|
28
|
+
skipped.push({ dep, reason: 'version_unknown' });
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
// ★ Core isolation check — defense in depth even if the fetcher is wrong.
|
|
32
|
+
if (payload.version !== info.version) {
|
|
33
|
+
skipped.push({ dep, reason: 'version_unknown' });
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
fetchedDocs.push({
|
|
37
|
+
dep,
|
|
38
|
+
version: info.version,
|
|
39
|
+
source: 'remote-fetch',
|
|
40
|
+
fetchedAt: now().toISOString(),
|
|
41
|
+
contentHash: hashContent(payload.excerpt),
|
|
42
|
+
sections: [makeSection(payload.excerpt)],
|
|
43
|
+
stale: false,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
skipped.push({ dep, reason: 'network_error' });
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return { fetchedDocs, skipped };
|
|
51
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export type HeadroomMode = 'balanced' | 'aggressive' | 'conservative';
|
|
2
|
+
export interface HeadroomResult {
|
|
3
|
+
readonly compressed: boolean;
|
|
4
|
+
readonly originalSize: number;
|
|
5
|
+
readonly compressedSize: number;
|
|
6
|
+
readonly compressionRatio: number;
|
|
7
|
+
readonly mode: HeadroomMode;
|
|
8
|
+
/** `'HEADROOM_UNAVAILABLE'` on fallback; `null` on success. */
|
|
9
|
+
readonly warning: string | null;
|
|
10
|
+
/** Compressed prompt body. `null` if no compression happened. */
|
|
11
|
+
readonly compressedPrompt: string | null;
|
|
12
|
+
/** Tokens saved (from the SDK). 0 on fallback. */
|
|
13
|
+
readonly tokensSaved: number;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Compress a prompt via headroom-ai. The `fallback: true` option is
|
|
17
|
+
* non-negotiable: if the proxy daemon is unavailable, the SDK returns
|
|
18
|
+
* `result.compressed = false` and the original messages; we surface
|
|
19
|
+
* that as `HEADROOM_UNAVAILABLE` warning + G7 metadata-only fallback.
|
|
20
|
+
*/
|
|
21
|
+
export declare function compressPrompt(prompt: string, mode?: HeadroomMode): Promise<HeadroomResult>;
|
|
22
|
+
/**
|
|
23
|
+
* Bridge interface: when `--use-headroom` is set, share entries written
|
|
24
|
+
* via `peaks sub-agent share` MAY also flow through headroom's
|
|
25
|
+
* `SharedContext`. Slice #010 implements a peak-internal shared channel
|
|
26
|
+
* (see `shared-channel.ts`); the headroom-side `SharedContext` is a
|
|
27
|
+
* separate concept that future slices can layer on. For now this
|
|
28
|
+
* function is a stub that returns the peak-internal channel ID, which
|
|
29
|
+
* is enough to demonstrate the bridge contract.
|
|
30
|
+
*/
|
|
31
|
+
export declare function buildSharedContextBridge(batchId: string): {
|
|
32
|
+
peakChannelId: string;
|
|
33
|
+
headroomContextId: string;
|
|
34
|
+
};
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
const DEFAULT_TIMEOUT_MS = 30_000;
|
|
2
|
+
const DEFAULT_MODEL = 'claude-sonnet-4-5-20250929';
|
|
3
|
+
// Approximate 1 token = 4 bytes for English text. This is a rough
|
|
4
|
+
// heuristic; the SDK does its own tokenization internally.
|
|
5
|
+
const BYTES_PER_TOKEN = 4;
|
|
6
|
+
/**
|
|
7
|
+
* Compress a prompt via headroom-ai. The `fallback: true` option is
|
|
8
|
+
* non-negotiable: if the proxy daemon is unavailable, the SDK returns
|
|
9
|
+
* `result.compressed = false` and the original messages; we surface
|
|
10
|
+
* that as `HEADROOM_UNAVAILABLE` warning + G7 metadata-only fallback.
|
|
11
|
+
*/
|
|
12
|
+
export async function compressPrompt(prompt, mode = 'balanced') {
|
|
13
|
+
const originalSize = Buffer.byteLength(prompt, 'utf8');
|
|
14
|
+
let compressFn = null;
|
|
15
|
+
try {
|
|
16
|
+
const mod = await import('headroom-ai');
|
|
17
|
+
if (typeof mod.compress === 'function') {
|
|
18
|
+
compressFn = mod.compress;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return fallback(originalSize, mode);
|
|
23
|
+
}
|
|
24
|
+
if (compressFn === null) {
|
|
25
|
+
return fallback(originalSize, mode);
|
|
26
|
+
}
|
|
27
|
+
const messages = [
|
|
28
|
+
{ role: 'user', content: prompt }
|
|
29
|
+
];
|
|
30
|
+
const opts = {
|
|
31
|
+
model: DEFAULT_MODEL,
|
|
32
|
+
timeout: DEFAULT_TIMEOUT_MS,
|
|
33
|
+
fallback: true, // CRITICAL: return original messages if proxy is down
|
|
34
|
+
retries: 1
|
|
35
|
+
};
|
|
36
|
+
if (mode === 'aggressive') {
|
|
37
|
+
opts.tokenBudget = Math.max(1, Math.floor(originalSize * 0.20 / BYTES_PER_TOKEN));
|
|
38
|
+
}
|
|
39
|
+
else if (mode === 'conservative') {
|
|
40
|
+
opts.tokenBudget = Math.max(1, Math.floor(originalSize * 0.70 / BYTES_PER_TOKEN));
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
// balanced: target ~60% reduction
|
|
44
|
+
opts.tokenBudget = Math.max(1, Math.floor(originalSize * 0.40 / BYTES_PER_TOKEN));
|
|
45
|
+
}
|
|
46
|
+
let result;
|
|
47
|
+
try {
|
|
48
|
+
result = await compressFn(messages, opts);
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return fallback(originalSize, mode);
|
|
52
|
+
}
|
|
53
|
+
if (result.compressed === false) {
|
|
54
|
+
return {
|
|
55
|
+
compressed: false,
|
|
56
|
+
originalSize,
|
|
57
|
+
compressedSize: originalSize,
|
|
58
|
+
compressionRatio: 1.0,
|
|
59
|
+
mode,
|
|
60
|
+
warning: 'HEADROOM_UNAVAILABLE',
|
|
61
|
+
compressedPrompt: null,
|
|
62
|
+
tokensSaved: 0
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
const compressedContent = extractContent(result.messages);
|
|
66
|
+
if (compressedContent === null) {
|
|
67
|
+
return fallback(originalSize, mode);
|
|
68
|
+
}
|
|
69
|
+
const compressedSize = Buffer.byteLength(compressedContent, 'utf8');
|
|
70
|
+
return {
|
|
71
|
+
compressed: true,
|
|
72
|
+
originalSize,
|
|
73
|
+
compressedSize,
|
|
74
|
+
compressionRatio: compressedSize / originalSize,
|
|
75
|
+
mode,
|
|
76
|
+
warning: null,
|
|
77
|
+
compressedPrompt: compressedContent,
|
|
78
|
+
tokensSaved: result.tokensSaved ?? 0
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
function fallback(originalSize, mode) {
|
|
82
|
+
return {
|
|
83
|
+
compressed: false,
|
|
84
|
+
originalSize,
|
|
85
|
+
compressedSize: originalSize,
|
|
86
|
+
compressionRatio: 1.0,
|
|
87
|
+
mode,
|
|
88
|
+
warning: 'HEADROOM_UNAVAILABLE',
|
|
89
|
+
compressedPrompt: null,
|
|
90
|
+
tokensSaved: 0
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
function extractContent(messages) {
|
|
94
|
+
if (!Array.isArray(messages) || messages.length === 0) {
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
const last = messages[messages.length - 1];
|
|
98
|
+
if (typeof last.content === 'string') {
|
|
99
|
+
return last.content;
|
|
100
|
+
}
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Bridge interface: when `--use-headroom` is set, share entries written
|
|
105
|
+
* via `peaks sub-agent share` MAY also flow through headroom's
|
|
106
|
+
* `SharedContext`. Slice #010 implements a peak-internal shared channel
|
|
107
|
+
* (see `shared-channel.ts`); the headroom-side `SharedContext` is a
|
|
108
|
+
* separate concept that future slices can layer on. For now this
|
|
109
|
+
* function is a stub that returns the peak-internal channel ID, which
|
|
110
|
+
* is enough to demonstrate the bridge contract.
|
|
111
|
+
*/
|
|
112
|
+
export function buildSharedContextBridge(batchId) {
|
|
113
|
+
return {
|
|
114
|
+
peakChannelId: batchId,
|
|
115
|
+
headroomContextId: `headroom-ctx-${batchId}`
|
|
116
|
+
};
|
|
117
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Production DocFetcher. Uses existing headroom-ai dependency for remote
|
|
3
|
+
* fetch; local cache (per-session, per-dep markdown) preferred when version matches.
|
|
4
|
+
*
|
|
5
|
+
* Hard constraint H2 (locked version): never returns a doc whose version
|
|
6
|
+
* differs from the requested locked version.
|
|
7
|
+
*
|
|
8
|
+
* Cache path (per pre-flight fix #2): .peaks/_runtime/<sid>/doc-cache/<dep>@<version>.md
|
|
9
|
+
* - Per-session (NOT cross-session shared at ~/.peaks/cache/docs/)
|
|
10
|
+
* - Reason: spec §4.1 keeps everything under _runtime which is gitignored
|
|
11
|
+
* and ephemeral; cross-session caching is a future-slice optimization.
|
|
12
|
+
*/
|
|
13
|
+
import { readFile } from 'node:fs/promises';
|
|
14
|
+
import { join } from 'node:path';
|
|
15
|
+
export function createHeadroomFetcher(opts) {
|
|
16
|
+
return async (dep, version) => {
|
|
17
|
+
const cachePath = join(opts.cacheDir, `${dep}@${version}.md`);
|
|
18
|
+
try {
|
|
19
|
+
const content = await readFile(cachePath, 'utf8');
|
|
20
|
+
return { version, excerpt: content };
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
if (!opts.remoteFetcher)
|
|
24
|
+
return null;
|
|
25
|
+
return opts.remoteFetcher(dep, version);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Headroom preferences resolver (slice 2026-06-14-fzf-headroom-rollout).
|
|
3
|
+
*
|
|
4
|
+
* Pure functions that turn `ProjectPreferences.headroom.*` + CLI
|
|
5
|
+
* overrides into a single decision the dispatch path can act on.
|
|
6
|
+
* No IO. No side effects. Easy to test in isolation.
|
|
7
|
+
*
|
|
8
|
+
* Two distinct decisions:
|
|
9
|
+
* 1. `resolveHeadroomOptions` — should we compress the dispatch prompt?
|
|
10
|
+
* Used by `peaks sub-agent dispatch`. Returns one of:
|
|
11
|
+
* - `{ mode: <m>, blocked: null }` → compress with mode <m>
|
|
12
|
+
* - `{ mode: null, blocked: null }` → skip compression (no --use-headroom)
|
|
13
|
+
* - `{ mode: null, blocked: 'HEADROOM_DISABLED_BY_PREFERENCE' }` → hard fail
|
|
14
|
+
* 2. `shouldCompressResults` — should we compress search-result text?
|
|
15
|
+
* Used by `peaks memory search` / `peaks retrospective search`.
|
|
16
|
+
* Non-blocking: returns a `reason` instead of a `blocked` code.
|
|
17
|
+
*
|
|
18
|
+
* Precedence (dispatch):
|
|
19
|
+
* 1. `headroom.enabled = false` → hard block (regardless of --use-headroom)
|
|
20
|
+
* 2. `headroom.enabled = true` + `--headroom-mode <m>` → use <m>
|
|
21
|
+
* 3. `headroom.enabled = true` + `--use-headroom` (no --headroom-mode) →
|
|
22
|
+
* use `perTouchpoint.subAgentDispatch` (preferred) else `defaultMode`
|
|
23
|
+
* 4. no `--use-headroom` → mode = null (compression skipped)
|
|
24
|
+
*/
|
|
25
|
+
import type { HeadroomMode, ProjectPreferences } from '../preferences/preferences-types.js';
|
|
26
|
+
export type HeadroomTouchpoint = keyof ProjectPreferences['headroom']['perTouchpoint'];
|
|
27
|
+
export type HeadroomBlockCode = 'HEADROOM_DISABLED_BY_PREFERENCE';
|
|
28
|
+
export interface ResolvedHeadroomOptions {
|
|
29
|
+
/** The mode to use for compression, or null if not compressing. */
|
|
30
|
+
readonly mode: HeadroomMode | null;
|
|
31
|
+
/** Hard-block reason; null when compression is allowed (or simply not requested). */
|
|
32
|
+
readonly blocked: HeadroomBlockCode | null;
|
|
33
|
+
}
|
|
34
|
+
export interface ResolveCliOverrides {
|
|
35
|
+
readonly useHeadroom: boolean;
|
|
36
|
+
readonly headroomMode?: string;
|
|
37
|
+
}
|
|
38
|
+
export declare function isHeadroomMode(value: string | undefined): value is HeadroomMode;
|
|
39
|
+
export declare function resolveHeadroomOptions(prefs: ProjectPreferences['headroom'], cliOverrides: ResolveCliOverrides): ResolvedHeadroomOptions;
|
|
40
|
+
export interface ShouldCompressDecision {
|
|
41
|
+
readonly compress: boolean;
|
|
42
|
+
readonly mode: HeadroomMode;
|
|
43
|
+
/** Non-null reason if not compressing. */
|
|
44
|
+
readonly reason: 'DISABLED' | 'BELOW_THRESHOLD' | null;
|
|
45
|
+
}
|
|
46
|
+
export declare function shouldCompressResults(prefs: ProjectPreferences['headroom'], joinedBytes: number, touchpoint: HeadroomTouchpoint): ShouldCompressDecision;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
const VALID_MODES = new Set([
|
|
2
|
+
'balanced',
|
|
3
|
+
'aggressive',
|
|
4
|
+
'conservative'
|
|
5
|
+
]);
|
|
6
|
+
export function isHeadroomMode(value) {
|
|
7
|
+
return typeof value === 'string' && VALID_MODES.has(value);
|
|
8
|
+
}
|
|
9
|
+
export function resolveHeadroomOptions(prefs, cliOverrides) {
|
|
10
|
+
// (1) Hard block when preference disables headroom entirely.
|
|
11
|
+
if (cliOverrides.useHeadroom === true && prefs.enabled === false) {
|
|
12
|
+
return { mode: null, blocked: 'HEADROOM_DISABLED_BY_PREFERENCE' };
|
|
13
|
+
}
|
|
14
|
+
// (4) No --use-headroom → no compression.
|
|
15
|
+
if (cliOverrides.useHeadroom !== true) {
|
|
16
|
+
return { mode: null, blocked: null };
|
|
17
|
+
}
|
|
18
|
+
// (2) CLI --headroom-mode wins (even if preference is set, CLI overrides).
|
|
19
|
+
if (isHeadroomMode(cliOverrides.headroomMode)) {
|
|
20
|
+
return { mode: cliOverrides.headroomMode, blocked: null };
|
|
21
|
+
}
|
|
22
|
+
// (3) Preference path: perTouchpoint > defaultMode > 'balanced'.
|
|
23
|
+
const touchpointMode = prefs.perTouchpoint.subAgentDispatch;
|
|
24
|
+
return { mode: touchpointMode ?? prefs.defaultMode, blocked: null };
|
|
25
|
+
}
|
|
26
|
+
export function shouldCompressResults(prefs, joinedBytes, touchpoint) {
|
|
27
|
+
if (prefs.enabled === false) {
|
|
28
|
+
return { compress: false, mode: prefs.defaultMode, reason: 'DISABLED' };
|
|
29
|
+
}
|
|
30
|
+
if (joinedBytes < prefs.compressMinBytes) {
|
|
31
|
+
return { compress: false, mode: prefs.perTouchpoint[touchpoint], reason: 'BELOW_THRESHOLD' };
|
|
32
|
+
}
|
|
33
|
+
return { compress: true, mode: prefs.perTouchpoint[touchpoint], reason: null };
|
|
34
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { collectContext, type CollectInput } from './collector.js';
|
|
2
|
+
export { retrieveDocs, type DocFetcher, type FetcherPayload, type RetrieveOptions } from './doc-retriever.js';
|
|
3
|
+
export { tokenize } from './tokenizer.js';
|
|
4
|
+
export { render, type RenderInput } from './renderer.js';
|
|
5
|
+
export { ContextJsonSchema } from './context-schema.js';
|
|
6
|
+
export { buildContext, type BuildInput } from './context-builder.js';
|
|
7
|
+
export type { ContextJson, Audience, DepsMode, FileKind, CollectedFile, GitStatus, MemoryEntry, DepInfo, DocSection, FetchedDoc, SkippedDoc, TokenizedItem, CollectorOutput, DocRetrieverOutput, TokenizerOutput, RendererOutput, } from './types.js';
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { collectContext } from './collector.js';
|
|
2
|
+
export { retrieveDocs } from './doc-retriever.js';
|
|
3
|
+
export { tokenize } from './tokenizer.js';
|
|
4
|
+
export { render } from './renderer.js';
|
|
5
|
+
export { ContextJsonSchema } from './context-schema.js';
|
|
6
|
+
export { buildContext } from './context-builder.js';
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.11.0 Group F (Tier 9) — D6: main-session context window monitor.
|
|
3
|
+
*
|
|
4
|
+
* Per `.peaks/memory/2026-06-26-v2-11-main-session-context-monitor.md`:
|
|
5
|
+
*
|
|
6
|
+
* D6.a — IDE detection (`peaks ide detect --json`); env-var fallback.
|
|
7
|
+
* D6.b — Main-session thresholds (50% warn / 75% user red line / 90% emergency)
|
|
8
|
+
* D6.c — IDE-dependent trigger (claude-code → /compact; else LLM self-compress)
|
|
9
|
+
* D6.d — Always log; never silently skip
|
|
10
|
+
* D6.e — Do NOT auto-compact mid-tool-call-batch (in-flight deferral)
|
|
11
|
+
* D6.f — Complements Step N periodic checkpoint (soft signal vs hard signal)
|
|
12
|
+
*
|
|
13
|
+
* Distinct from G7-G9 (sub-agent dispatch prompt governance). Same
|
|
14
|
+
* numbers, different scope. Extends `src/services/context/threshold.ts`
|
|
15
|
+
* rather than duplicating (D6.h).
|
|
16
|
+
*
|
|
17
|
+
* Karpathy §2: this module is the only place that decides
|
|
18
|
+
* "main-session context threshold" — the LLM-side caller probes via
|
|
19
|
+
* `evaluateMainSessionThreshold()` and `pickMainSessionTrigger()`.
|
|
20
|
+
* No inline `promptSize / 256K > 0.75` checks scattered across
|
|
21
|
+
* SKILL.md or other services.
|
|
22
|
+
*/
|
|
23
|
+
export type MainSessionTier = 'ok' | 'soft-warn' | 'near-limit' | 'emergency';
|
|
24
|
+
export declare const MAIN_SESSION_THRESHOLD_RATIOS: {
|
|
25
|
+
readonly [K in MainSessionTier]: number;
|
|
26
|
+
};
|
|
27
|
+
export type IdeKind = 'claude-code' | 'trae' | 'opencode' | 'unknown';
|
|
28
|
+
export declare const IDE_KINDS: readonly IdeKind[];
|
|
29
|
+
export type MainSessionTrigger = {
|
|
30
|
+
readonly kind: 'none';
|
|
31
|
+
} | {
|
|
32
|
+
readonly kind: 'soft-warn';
|
|
33
|
+
readonly promptSize: number;
|
|
34
|
+
readonly ratio: number;
|
|
35
|
+
} | {
|
|
36
|
+
readonly kind: 'compact';
|
|
37
|
+
readonly ide: IdeKind;
|
|
38
|
+
readonly path: 'ide-native' | 'llm-self-compress';
|
|
39
|
+
readonly promptSize: number;
|
|
40
|
+
readonly ratio: number;
|
|
41
|
+
readonly code: 'CONTEXT_NEAR_LIMIT' | 'PROMPT_EMERGENCY';
|
|
42
|
+
} | {
|
|
43
|
+
readonly kind: 'defer';
|
|
44
|
+
readonly reason: 'in-flight-batch' | 'unsupported-ide';
|
|
45
|
+
};
|
|
46
|
+
export interface MainSessionEvaluation {
|
|
47
|
+
readonly tier: MainSessionTier;
|
|
48
|
+
readonly ratio: number;
|
|
49
|
+
readonly bytesUsed: number;
|
|
50
|
+
readonly capacityBytes: number;
|
|
51
|
+
readonly warnings: readonly string[];
|
|
52
|
+
}
|
|
53
|
+
export declare function isIdeKind(value: string): value is IdeKind;
|
|
54
|
+
export declare function detectIdeFromEnv(env?: NodeJS.ProcessEnv): IdeKind;
|
|
55
|
+
/**
|
|
56
|
+
* Threshold check. Pure function (no IO). `capacityBytes` is injectable
|
|
57
|
+
* for tests and future per-IDE capacity overrides. Defaults to the
|
|
58
|
+
* G9 256K proxy (matches G9 for cognitive continuity).
|
|
59
|
+
*
|
|
60
|
+
* @deprecated Slice 2026-07-02-auto-compact-zero-pause: the
|
|
61
|
+
* 50/75/90 tier thresholds pre-date the v2.13.0 auto-compact
|
|
62
|
+
* design. The authoritative tier table for triggering compaction
|
|
63
|
+
* now lives in `evaluateCompactTrigger` (auto-compact-orchestrator.ts)
|
|
64
|
+
* with the 0.85 pre-compact / 0.95 red-line thresholds. New
|
|
65
|
+
* callers should call `evaluateCompactTrigger(ratio)` directly.
|
|
66
|
+
* This function is retained because legacy `peaks context check
|
|
67
|
+
* --prompt-size` still emits its 4-tier envelope for callers that
|
|
68
|
+
* need the soft signal (e.g. statusline display). Migration is
|
|
69
|
+
* scheduled for v2.15.0; the @deprecated tag flips callers'
|
|
70
|
+
* eslint warnings so the migration is mechanical.
|
|
71
|
+
*/
|
|
72
|
+
export declare function evaluateMainSessionThreshold(promptSize: number, capacityBytes?: number): MainSessionEvaluation;
|
|
73
|
+
export interface InFlightBatchProbe {
|
|
74
|
+
readonly hasInFlightBatch: boolean;
|
|
75
|
+
readonly sharedChannelEntries: number;
|
|
76
|
+
}
|
|
77
|
+
export declare function pickMainSessionTrigger(opts: {
|
|
78
|
+
promptSize: number;
|
|
79
|
+
ide?: IdeKind | undefined;
|
|
80
|
+
capacityBytes?: number | undefined;
|
|
81
|
+
inFlightBatch?: InFlightBatchProbe | undefined;
|
|
82
|
+
/** Injectable env for IDE detection (test seam). */
|
|
83
|
+
env?: NodeJS.ProcessEnv | undefined;
|
|
84
|
+
}): MainSessionTrigger;
|
|
85
|
+
/**
|
|
86
|
+
* One-line audit log entry. Pure formatter; the LLM / CLI appends to
|
|
87
|
+
* `.peaks/_runtime/<sessionId>/txt/auto-decisions.md`. Matches D6.d.
|
|
88
|
+
*/
|
|
89
|
+
export declare function formatMainSessionTriggerLogLine(trigger: MainSessionTrigger, contextId: string): string;
|