peaks-loop 4.1.1 → 4.1.2
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 +50 -0
- package/README-en.md +4 -4
- package/README.md +25 -4
- package/bin/node-floor.mjs +59 -0
- package/bin/peaks.js +13 -0
- package/config/eslint/tsconfig.lint.json +2 -1
- package/dist/cli/cli-helpers.d.ts +0 -1
- package/dist/cli/cli-helpers.js +0 -1
- package/dist/cli/commands/_cli-error-envelope.js +0 -3
- package/dist/cli/commands/adapter-commands-s2a.d.ts +0 -1
- package/dist/cli/commands/adapter-commands.d.ts +0 -1
- package/dist/cli/commands/api-diff-commands.d.ts +0 -1
- package/dist/cli/commands/api-diff-commands.js +0 -1
- package/dist/cli/commands/audit-commands.js +21 -24
- package/dist/cli/commands/autonomous-swarm-commands.js +0 -1
- package/dist/cli/commands/bee-commands.d.ts +0 -2
- package/dist/cli/commands/bee-commands.js +0 -2
- package/dist/cli/commands/best-practice-scan-command.d.ts +0 -1
- package/dist/cli/commands/best-practice-scan-helpers.js +0 -1
- package/dist/cli/commands/changeset-commands.d.ts +0 -2
- package/dist/cli/commands/changeset-commands.js +0 -2
- package/dist/cli/commands/code-commands.d.ts +0 -3
- package/dist/cli/commands/code-commands.js +0 -3
- package/dist/cli/commands/code-gate-command.d.ts +0 -1
- package/dist/cli/commands/code-gate-command.js +0 -1
- package/dist/cli/commands/code-job-shape-commands-read-job-shape.d.ts +0 -1
- package/dist/cli/commands/code-job-shape-commands-read-job-shape.js +0 -1
- package/dist/cli/commands/code-job-shape-commands.d.ts +0 -2
- package/dist/cli/commands/code-job-shape-commands.js +0 -3
- package/dist/cli/commands/code-mode-gate-commands.d.ts +0 -2
- package/dist/cli/commands/code-mode-gate-commands.js +0 -3
- package/dist/cli/commands/code-mode-gate-should-pause-command.js +0 -4
- package/dist/cli/commands/code-mode-gate-should-pause-envelope.d.ts +0 -1
- package/dist/cli/commands/code-mode-gate-should-pause-envelope.js +0 -2
- package/dist/cli/commands/code-mode-status-command.d.ts +0 -1
- package/dist/cli/commands/code-mode-status-command.js +0 -1
- package/dist/cli/commands/code-orchestrator-can-do.d.ts +0 -1
- package/dist/cli/commands/code-orchestrator-can-do.js +0 -1
- package/dist/cli/commands/code-run-command.js +0 -1
- package/dist/cli/commands/code-runtime-commands.d.ts +0 -3
- package/dist/cli/commands/code-runtime-commands.js +0 -15
- package/dist/cli/commands/codegraph-command-runtime.d.ts +6 -0
- package/dist/cli/commands/codegraph-command-runtime.js +19 -7
- package/dist/cli/commands/codegraph-commands.js +20 -193
- package/dist/cli/commands/codegraph-init-command.d.ts +8 -0
- package/dist/cli/commands/codegraph-init-command.js +162 -0
- package/dist/cli/commands/codegraph-status-command.js +5 -6
- package/dist/cli/commands/compact-command.d.ts +0 -1
- package/dist/cli/commands/compact-command.js +0 -4
- package/dist/cli/commands/container-commands.d.ts +0 -1
- package/dist/cli/commands/container-commands.js +0 -1
- package/dist/cli/commands/context-commands.d.ts +0 -1
- package/dist/cli/commands/context-commands.js +0 -1
- package/dist/cli/commands/core/doctor-command.d.ts +0 -1
- package/dist/cli/commands/core/doctor-command.js +0 -9
- package/dist/cli/commands/core/memory-command.js +0 -1
- package/dist/cli/commands/core/session-command.js +0 -14
- package/dist/cli/commands/core/skill-command.js +0 -9
- package/dist/cli/commands/core-artifact-commands.d.ts +0 -1
- package/dist/cli/commands/core-artifact-commands.js +0 -1
- package/dist/cli/commands/cron-commands-actions.d.ts +0 -1
- package/dist/cli/commands/cron-commands-actions.js +0 -2
- package/dist/cli/commands/cron-commands-schedule.d.ts +0 -3
- package/dist/cli/commands/cron-commands-schedule.js +0 -1
- package/dist/cli/commands/cron-commands.d.ts +0 -1
- package/dist/cli/commands/cron-commands.js +0 -2
- package/dist/cli/commands/cron-scheduler-commands.d.ts +0 -1
- package/dist/cli/commands/cron-scheduler-commands.js +0 -1
- package/dist/cli/commands/cron-scheduler-persist.d.ts +0 -5
- package/dist/cli/commands/cron-scheduler-persist.js +0 -5
- package/dist/cli/commands/dashboard-summary.d.ts +0 -1
- package/dist/cli/commands/dispatch-commands.d.ts +0 -1
- package/dist/cli/commands/dispatch-commands.js +10 -37
- package/dist/cli/commands/dispatch-from-dag.js +0 -4
- package/dist/cli/commands/doctor/invoke-from-code.js +0 -1
- package/dist/cli/commands/e2e-verify.d.ts +0 -1
- package/dist/cli/commands/ecc-commands.d.ts +0 -1
- package/dist/cli/commands/evolution-commands.d.ts +0 -1
- package/dist/cli/commands/evolution-commands.js +0 -1
- package/dist/cli/commands/feedback-commands.d.ts +0 -1
- package/dist/cli/commands/feedback-commands.js +0 -2
- package/dist/cli/commands/fixture-commands.d.ts +0 -2
- package/dist/cli/commands/fresh-context-commands.d.ts +0 -1
- package/dist/cli/commands/gate-commands-enforce.d.ts +0 -3
- package/dist/cli/commands/gate-commands-enforce.js +0 -4
- package/dist/cli/commands/gate-commands.js +0 -2
- package/dist/cli/commands/governance-classify-contract-commands.d.ts +0 -3
- package/dist/cli/commands/governance-classify-contract-commands.js +0 -4
- package/dist/cli/commands/heartbeat-commands-action.js +0 -6
- package/dist/cli/commands/heartbeat-commands-validation.d.ts +0 -2
- package/dist/cli/commands/heartbeat-commands-validation.js +0 -2
- package/dist/cli/commands/heartbeat-commands.d.ts +0 -1
- package/dist/cli/commands/heartbeat-commands.js +0 -1
- package/dist/cli/commands/hooks-commands.js +0 -11
- package/dist/cli/commands/ide-commands.d.ts +0 -1
- package/dist/cli/commands/job-add-slice-command.d.ts +0 -2
- package/dist/cli/commands/job-add-slice-command.js +0 -2
- package/dist/cli/commands/job-commands.js +0 -4
- package/dist/cli/commands/lease-metrics-commands.d.ts +0 -1
- package/dist/cli/commands/lease-metrics-commands.js +0 -1
- package/dist/cli/commands/lease-stats-commands.d.ts +0 -1
- package/dist/cli/commands/lease-stats-commands.js +0 -1
- package/dist/cli/commands/log-commands.d.ts +0 -2
- package/dist/cli/commands/log-commands.js +0 -3
- package/dist/cli/commands/loop-eval-commands.js +0 -3
- package/dist/cli/commands/memory-commands.d.ts +0 -1
- package/dist/cli/commands/memory-commands.js +0 -1
- package/dist/cli/commands/observability-commands.d.ts +0 -6
- package/dist/cli/commands/observability-commands.js +0 -6
- package/dist/cli/commands/outer-cache-commands.js +0 -2
- package/dist/cli/commands/playwright-commands.d.ts +0 -1
- package/dist/cli/commands/playwright-commands.js +0 -1
- package/dist/cli/commands/polyrepo-commands.d.ts +0 -1
- package/dist/cli/commands/prd-commands.d.ts +0 -1
- package/dist/cli/commands/prd-commands.js +0 -2
- package/dist/cli/commands/preferences-commands.js +0 -2
- package/dist/cli/commands/primer-command.d.ts +0 -1
- package/dist/cli/commands/primer-command.js +0 -1
- package/dist/cli/commands/project-commands.js +0 -1
- package/dist/cli/commands/qa-commands.d.ts +0 -1
- package/dist/cli/commands/qa-commands.js +0 -2
- package/dist/cli/commands/release-commands.js +0 -9
- package/dist/cli/commands/request-commands.d.ts +0 -1
- package/dist/cli/commands/request-commands.js +0 -10
- package/dist/cli/commands/request-format-helpers.d.ts +0 -1
- package/dist/cli/commands/request-format-helpers.js +0 -2
- package/dist/cli/commands/runtime-commands.d.ts +0 -1
- package/dist/cli/commands/sc-commands.js +0 -1
- package/dist/cli/commands/session-24h-mode.d.ts +0 -1
- package/dist/cli/commands/session-24h-mode.js +0 -2
- package/dist/cli/commands/session-checkpoint-command.d.ts +0 -1
- package/dist/cli/commands/session-checkpoint-command.js +0 -1
- package/dist/cli/commands/session-resume-command.d.ts +0 -1
- package/dist/cli/commands/session-resume-command.js +0 -1
- package/dist/cli/commands/shadcn-commands.js +0 -2
- package/dist/cli/commands/share-commands.d.ts +0 -3
- package/dist/cli/commands/share-commands.js +0 -13
- package/dist/cli/commands/skill-search-commands.d.ts +0 -2
- package/dist/cli/commands/slice-commands.js +0 -2
- package/dist/cli/commands/slice-integrate-commands.js +0 -1
- package/dist/cli/commands/spill-demo-command.d.ts +0 -1
- package/dist/cli/commands/statusline-commands.js +0 -4
- package/dist/cli/commands/sub-agent/detached.js +0 -2
- package/dist/cli/commands/sub-agent-commands.d.ts +0 -3
- package/dist/cli/commands/sub-agent-shared.d.ts +0 -8
- package/dist/cli/commands/sub-agent-shared.js +0 -5
- package/dist/cli/commands/sub-agent-shutdown-commands.d.ts +0 -1
- package/dist/cli/commands/tech-commands.d.ts +0 -4
- package/dist/cli/commands/tech-commands.js +0 -4
- package/dist/cli/commands/vendor-detect.d.ts +0 -3
- package/dist/cli/commands/vendor-detect.js +0 -2
- package/dist/cli/commands/verdict-aggregate-command.d.ts +0 -1
- package/dist/cli/commands/verdict-aggregate-command.js +0 -7
- package/dist/cli/commands/vm-commands.d.ts +0 -1
- package/dist/cli/commands/vm-commands.js +5 -29
- package/dist/cli/commands/vm-hypervisor-probe.d.ts +27 -0
- package/dist/cli/commands/vm-hypervisor-probe.js +78 -0
- package/dist/cli/commands/vm-status-command.d.ts +3 -0
- package/dist/cli/commands/vm-status-command.js +50 -0
- package/dist/cli/commands/wave-plan-commands.d.ts +0 -1
- package/dist/cli/commands/web-lifecycle-commands.d.ts +0 -1
- package/dist/cli/commands/workflow-commands.js +0 -14
- package/dist/cli/commands/workflow-plan-commands-actions.js +0 -2
- package/dist/cli/commands/workflow-plan-commands-session.js +0 -2
- package/dist/cli/commands/workflow-plan-commands.d.ts +0 -1
- package/dist/cli/commands/workspace/clean-command.d.ts +0 -1
- package/dist/cli/commands/workspace/clean-command.js +0 -1
- package/dist/cli/commands/workspace/helpers.d.ts +0 -1
- package/dist/cli/commands/workspace/helpers.js +0 -1
- package/dist/cli/commands/workspace/init-command.d.ts +0 -6
- package/dist/cli/commands/workspace/init-command.js +0 -17
- package/dist/cli/commands/workspace/migrate-command.d.ts +0 -2
- package/dist/cli/commands/workspace/migrate-command.js +0 -2
- package/dist/cli/commands/workspace/reconcile-command.d.ts +0 -2
- package/dist/cli/commands/workspace/reconcile-command.js +0 -3
- package/dist/cli/commands/workspace-commands.d.ts +0 -2
- package/dist/cli/commands/workspace-commands.js +0 -4
- package/dist/cli/commands/worktree-auth-commands.d.ts +0 -1
- package/dist/cli/commands/worktree-auth-commands.js +0 -1
- package/dist/cli/commands/worktree-auth-grant-command.d.ts +0 -1
- package/dist/cli/commands/worktree-auth-grant-command.js +0 -1
- package/dist/cli/commands/worktree-auth-manage-commands.d.ts +0 -1
- package/dist/cli/commands/worktree-auth-manage-commands.js +0 -1
- package/dist/cli/commands/worktree-lease-commands.js +0 -1
- package/dist/cli/program.js +0 -7
- package/dist/reporters/bdd-reporter.js +0 -1
- package/dist/services/24h-mode/auto-engage.d.ts +0 -1
- package/dist/services/24h-mode/auto-engage.js +0 -1
- package/dist/services/24h-mode/decider.d.ts +0 -3
- package/dist/services/24h-mode/decider.js +0 -3
- package/dist/services/24h-mode/index.d.ts +0 -2
- package/dist/services/24h-mode/index.js +0 -2
- package/dist/services/24h-mode/state.d.ts +0 -1
- package/dist/services/24h-mode/state.js +0 -1
- package/dist/services/24h-mode/store.d.ts +0 -1
- package/dist/services/24h-mode/store.js +0 -1
- package/dist/services/adapter/adapter-registry.js +0 -1
- package/dist/services/artifacts/artifact-prerequisites.d.ts +0 -5
- package/dist/services/artifacts/artifact-prerequisites.js +0 -19
- package/dist/services/artifacts/artifact-templates.d.ts +0 -1
- package/dist/services/artifacts/artifact-templates.js +0 -1
- package/dist/services/artifacts/request-artifact-service.d.ts +0 -5
- package/dist/services/artifacts/request-artifact-service.js +0 -12
- package/dist/services/artifacts/request-artifact-state-helpers.d.ts +0 -1
- package/dist/services/artifacts/request-artifact-state-helpers.js +0 -1
- package/dist/services/audit/artifact-writer.d.ts +0 -1
- package/dist/services/audit/artifact-writer.js +0 -1
- package/dist/services/audit/decision-writer.js +3 -1
- package/dist/services/audit/enforcer-liveness.js +0 -1
- package/dist/services/audit/enforcers/active-skill-resolver.d.ts +0 -2
- package/dist/services/audit/enforcers/active-skill-resolver.js +0 -2
- package/dist/services/audit/red-line-audit-input.d.ts +11 -0
- package/dist/services/audit/red-line-audit-input.js +103 -0
- package/dist/services/audit/red-line-catalog-p2-a-bee-runtime.d.ts +0 -1
- package/dist/services/audit/red-line-catalog-p2-a.js +0 -9
- package/dist/services/audit/types.d.ts +0 -2
- package/dist/services/audit/types.js +0 -2
- package/dist/services/audit-independent/perf-audit-service.d.ts +0 -2
- package/dist/services/audit-independent/security-audit-service.d.ts +0 -5
- package/dist/services/audit-independent/security-audit-service.js +0 -2
- package/dist/services/autonomous-swarm/autonomous-swarm-service.d.ts +0 -5
- package/dist/services/autonomous-swarm/autonomous-swarm-service.js +0 -5
- package/dist/services/best-practice/language-detector.js +0 -1
- package/dist/services/best-practice/output-formatter.d.ts +0 -1
- package/dist/services/best-practice/scan-orchestrator.d.ts +0 -1
- package/dist/services/capability-audit-service/types.d.ts +1 -3
- package/dist/services/capability-guard-runner/contracts/J08.js +2 -2
- package/dist/services/changeset/changeset-check-service.d.ts +0 -3
- package/dist/services/changeset/changeset-check-service.js +0 -3
- package/dist/services/classify/classify-service.d.ts +0 -1
- package/dist/services/classify/classify-service.js +0 -1
- package/dist/services/classify/classify-types.d.ts +0 -1
- package/dist/services/classify/classify-types.js +0 -1
- package/dist/services/code/auto-compact-lifecycle.d.ts +0 -11
- package/dist/services/code/auto-compact-lifecycle.js +0 -10
- package/dist/services/code/auto-compact-modes.d.ts +0 -3
- package/dist/services/code/auto-compact-modes.js +0 -3
- package/dist/services/code/auto-compact-orchestrator.d.ts +0 -9
- package/dist/services/code/auto-compact-orchestrator.js +0 -29
- package/dist/services/code/batch-heartbeat-poller.js +0 -1
- package/dist/services/code/compact-event-settle.js +0 -1
- package/dist/services/code/dag-orchestrator.d.ts +0 -1
- package/dist/services/code/dag-orchestrator.js +0 -1
- package/dist/services/code/mode-gate-types.d.ts +0 -2
- package/dist/services/code/mode-gate-types.js +0 -1
- package/dist/services/code/mode-gate.d.ts +0 -5
- package/dist/services/code/mode-gate.js +0 -5
- package/dist/services/code/orchestrator-can-do-advisories.d.ts +0 -2
- package/dist/services/code/orchestrator-can-do-advisories.js +0 -5
- package/dist/services/code/orchestrator-can-do.d.ts +0 -4
- package/dist/services/code/orchestrator-can-do.js +0 -3
- package/dist/services/code/status-line-renderer.js +0 -1
- package/dist/services/code-review/ecc-bridge.d.ts +0 -1
- package/dist/services/codegraph/codegraph-autorefresh.js +6 -4
- package/dist/services/codegraph/codegraph-backend-advice.d.ts +26 -0
- package/dist/services/codegraph/codegraph-backend-advice.js +166 -0
- package/dist/services/codegraph/codegraph-config-repair-writer.d.ts +0 -24
- package/dist/services/codegraph/codegraph-config-repair-writer.js +32 -73
- package/dist/services/codegraph/codegraph-exclude-integrity.d.ts +14 -6
- package/dist/services/codegraph/codegraph-exclude-integrity.js +24 -14
- package/dist/services/codegraph/codegraph-exclude-reconciler.d.ts +9 -2
- package/dist/services/codegraph/codegraph-exclude-reconciler.js +87 -18
- package/dist/services/codegraph/codegraph-exclude-repair.d.ts +9 -61
- package/dist/services/codegraph/codegraph-exclude-repair.js +67 -139
- package/dist/services/codegraph/codegraph-foreign-removal.d.ts +21 -0
- package/dist/services/codegraph/codegraph-foreign-removal.js +77 -0
- package/dist/services/codegraph/codegraph-index-integrity.d.ts +12 -25
- package/dist/services/codegraph/codegraph-index-integrity.js +84 -23
- package/dist/services/codegraph/codegraph-preflight-service.js +15 -6
- package/dist/services/codegraph/codegraph-project-config.d.ts +35 -0
- package/dist/services/codegraph/codegraph-project-config.js +90 -0
- package/dist/services/codegraph/codegraph-service.d.ts +1 -2
- package/dist/services/codegraph/codegraph-service.js +11 -11
- package/dist/services/codegraph/codegraph-upstream-layout.d.ts +24 -0
- package/dist/services/codegraph/codegraph-upstream-layout.js +85 -0
- package/dist/services/comments/comment-audit.d.ts +15 -4
- package/dist/services/comments/comment-audit.js +25 -4
- package/dist/services/comments/comment-citations.d.ts +8 -2
- package/dist/services/comments/comment-citations.js +31 -33
- package/dist/services/comments/comment-hygiene.d.ts +29 -3
- package/dist/services/comments/comment-hygiene.js +40 -3
- package/dist/services/comments/comment-prune.js +52 -4
- package/dist/services/comments/comment-spans.d.ts +30 -0
- package/dist/services/comments/comment-spans.js +266 -0
- package/dist/services/comments/prune-apply.d.ts +22 -0
- package/dist/services/comments/prune-apply.js +69 -2
- package/dist/services/compact/decision-tables.d.ts +0 -2
- package/dist/services/compact/decision-tables.js +0 -2
- package/dist/services/compact/request-transition-hook.js +0 -2
- package/dist/services/compact-history/compact-history-service.d.ts +0 -2
- package/dist/services/compact-history/compact-history-service.js +0 -1
- package/dist/services/compact-statusline/compact-lifecycle-store.js +0 -2
- package/dist/services/compact-statusline/compact-lifecycle-types.d.ts +0 -1
- package/dist/services/compact-statusline/compact-statusline-service.js +0 -4
- package/dist/services/config/config-rollback.js +0 -1
- package/dist/services/config/config-safety.d.ts +0 -1
- package/dist/services/config/config-safety.js +0 -1
- package/dist/services/config/config-service.d.ts +0 -1
- package/dist/services/config/config-service.js +0 -1
- package/dist/services/config/model-routing.d.ts +0 -3
- package/dist/services/config/model-routing.js +0 -5
- package/dist/services/container/container-lease.d.ts +0 -1
- package/dist/services/container/container-lease.js +0 -1
- package/dist/services/context/artifact-meta.js +0 -1
- package/dist/services/context/auto-compact-dispatcher-input.d.ts +0 -3
- package/dist/services/context/auto-compact-dispatcher.js +0 -14
- package/dist/services/context/auto-compact-reader-input.d.ts +0 -1
- package/dist/services/context/auto-compact-reader.d.ts +0 -2
- package/dist/services/context/auto-compact-reader.js +0 -7
- package/dist/services/context/auto-compact-types.d.ts +0 -11
- package/dist/services/context/auto-compact-types.js +0 -1
- package/dist/services/context/build-dispatch-system-prompt.d.ts +11 -29
- package/dist/services/context/build-dispatch-system-prompt.js +8 -27
- package/dist/services/context/codegraph-unavailable-block.d.ts +38 -0
- package/dist/services/context/codegraph-unavailable-block.js +77 -0
- package/dist/services/context/context-audit-hint.d.ts +0 -1
- package/dist/services/context/context-audit-hint.js +0 -1
- package/dist/services/context/context-audit.d.ts +0 -1
- package/dist/services/context/context-audit.js +0 -1
- package/dist/services/context/harness-window-config.d.ts +0 -4
- package/dist/services/context/harness-window-config.js +0 -4
- package/dist/services/context/main-session-monitor.d.ts +0 -2
- package/dist/services/context/main-session-monitor.js +0 -2
- package/dist/services/context/memory-index-reader.d.ts +0 -2
- package/dist/services/context/memory-index-reader.js +0 -1
- package/dist/services/context/memory-preflight-config.d.ts +0 -1
- package/dist/services/context/memory-preflight-service.d.ts +0 -1
- package/dist/services/context/memory-preflight-service.js +0 -3
- package/dist/services/context/memory-preflight-support.d.ts +0 -5
- package/dist/services/context/post-compact-reinjection.d.ts +0 -1
- package/dist/services/context/post-compact-reinjection.js +0 -1
- package/dist/services/context/summary-view.d.ts +0 -1
- package/dist/services/context/summary-view.js +0 -1
- package/dist/services/crystallization/crystallization-service.d.ts +5 -11
- package/dist/services/crystallization/crystallization-service.js +3 -11
- package/dist/services/crystallization/crystallization-store.d.ts +6 -6
- package/dist/services/dispatch/await-batch-helpers.js +0 -3
- package/dist/services/dispatch/await-batch.d.ts +0 -1
- package/dist/services/dispatch/await-batch.js +0 -4
- package/dist/services/dispatch/batch-counter.js +0 -1
- package/dist/services/dispatch/conflict-replay.d.ts +0 -1
- package/dist/services/dispatch/conflict-replay.js +0 -1
- package/dist/services/dispatch/contract-store.d.ts +0 -2
- package/dist/services/dispatch/contract-store.js +0 -2
- package/dist/services/dispatch/dispatch-record-input-types.d.ts +0 -2
- package/dist/services/dispatch/dispatch-record-types.d.ts +0 -10
- package/dist/services/dispatch/dispatch-record-upgrade-fields.js +0 -7
- package/dist/services/dispatch/dispatch-record-upgrade-guards.js +0 -2
- package/dist/services/dispatch/dispatch-record-writer.d.ts +0 -5
- package/dist/services/dispatch/dispatch-record-writer.js +0 -21
- package/dist/services/dispatch/dispatch-sub-agent.d.ts +0 -1
- package/dist/services/dispatch/dispatch-sub-agent.js +0 -1
- package/dist/services/dispatch/e2e-fixtures.js +0 -1
- package/dist/services/dispatch/file-overlap-wave-planner.d.ts +0 -1
- package/dist/services/dispatch/file-overlap-wave-planner.js +0 -1
- package/dist/services/dispatch/isolation-lease.d.ts +0 -2
- package/dist/services/dispatch/isolation-lease.js +0 -2
- package/dist/services/dispatch/service-shutdown.js +0 -1
- package/dist/services/dispatch/session-capsule.js +0 -1
- package/dist/services/dispatch/slice-dag-types.d.ts +0 -1
- package/dist/services/dispatch/slice-dag.js +0 -2
- package/dist/services/dispatch/stage-enum.d.ts +0 -1
- package/dist/services/dispatch/stage-enum.js +0 -1
- package/dist/services/dispatch/startup-timeout.d.ts +0 -1
- package/dist/services/dispatch/sub-agent-batch-await.js +0 -3
- package/dist/services/dispatch/sub-agent-dispatcher-types.d.ts +0 -1
- package/dist/services/dispatch/sub-agent-dispatcher.js +0 -2
- package/dist/services/dispatch/test-tool-detection.d.ts +0 -3
- package/dist/services/dispatch/test-tool-detection.js +0 -2
- package/dist/services/doctor/doctor-service/checks/codegraph-capability.js +19 -12
- package/dist/services/doctor/doctor-service/checks/codegraph-index-integrity.js +1 -2
- package/dist/services/doctor/doctor-service/checks/l3-memory-health.d.ts +0 -2
- package/dist/services/doctor/doctor-service/checks/l3-memory-health.js +0 -2
- package/dist/services/doctor/doctor-service/checks/l3-orphan-sessions.d.ts +0 -1
- package/dist/services/doctor/doctor-service/checks/l3-orphan-sessions.js +0 -1
- package/dist/services/doctor/doctor-service/checks/multi-binary-drift.d.ts +0 -1
- package/dist/services/doctor/doctor-service/checks/multi-binary-drift.js +0 -3
- package/dist/services/doctor/doctor-service/checks/workspace-layout.js +0 -2
- package/dist/services/doctor/doctor-service/index.d.ts +0 -1
- package/dist/services/doctor/doctor-service/index.js +0 -1
- package/dist/services/doctor/doctor-service/plugin-registry.d.ts +0 -2
- package/dist/services/doctor/doctor-service/plugin-registry.js +0 -2
- package/dist/services/doctor/doctor-service/probe-types.d.ts +0 -4
- package/dist/services/doctor/doctor-service/report/final-summary.d.ts +0 -1
- package/dist/services/doctor/doctor-service/report/final-summary.js +0 -1
- package/dist/services/doctor/doctor-service/types.d.ts +0 -5
- package/dist/services/doctor/doctor-service/types.js +0 -1
- package/dist/services/doctor/doctor-service.d.ts +0 -1
- package/dist/services/doctor/doctor-service.js +0 -2
- package/dist/services/env/shell-probe.js +0 -1
- package/dist/services/evidence/evidence-generator.js +0 -8
- package/dist/services/evolution/evolution-constraints.d.ts +0 -2
- package/dist/services/evolution/evolution-constraints.js +0 -2
- package/dist/services/evolution/evolution-service.d.ts +2 -12
- package/dist/services/evolution/evolution-service.js +0 -9
- package/dist/services/evolution/evolution-store.d.ts +6 -8
- package/dist/services/evolution/evolution-store.js +1 -3
- package/dist/services/evolution/evolution-types.d.ts +0 -2
- package/dist/services/evolution/evolution-types.js +0 -6
- package/dist/services/evolution/independent-evaluator-runner.d.ts +0 -3
- package/dist/services/evolution/independent-evaluator-runner.js +0 -1
- package/dist/services/evolution/regression-skeptic-runner.d.ts +0 -1
- package/dist/services/feedback/feedback-promotion-service.d.ts +0 -8
- package/dist/services/feedback/feedback-promotion-service.js +0 -10
- package/dist/services/feedback/promotion-artifact-evidence.d.ts +0 -1
- package/dist/services/feedback/promotion-artifact-evidence.js +0 -1
- package/dist/services/final-review/final-review-evidence-budget.d.ts +0 -3
- package/dist/services/final-review/final-review-evidence-budget.js +0 -5
- package/dist/services/final-review/final-review-evidence-sources.d.ts +0 -1
- package/dist/services/final-review/final-review-evidence-sources.js +0 -1
- package/dist/services/final-review/final-review-output-budget.d.ts +0 -1
- package/dist/services/final-review/final-review-output-budget.js +0 -3
- package/dist/services/final-review/final-review-service.d.ts +0 -1
- package/dist/services/final-review/final-review-service.js +0 -1
- package/dist/services/fixture/fixture-capture-service.js +0 -1
- package/dist/services/fixture/fixture-sanitize-service.d.ts +0 -3
- package/dist/services/fixture/fixture-sanitize-service.js +0 -3
- package/dist/services/fresh-context/config.js +0 -1
- package/dist/services/fresh-context/fresh-context-block.js +0 -1
- package/dist/services/fresh-context/trigger-scan.d.ts +0 -1
- package/dist/services/fresh-context/trigger-scan.js +0 -1
- package/dist/services/fuzzy-matching/fzf-pick-service.d.ts +0 -1
- package/dist/services/fuzzy-matching/fzf-pick-service.js +0 -1
- package/dist/services/handoff/handoff-parser.d.ts +0 -1
- package/dist/services/handoff/handoff-parser.js +0 -1
- package/dist/services/handoff/handoff-types.d.ts +0 -1
- package/dist/services/handoff/handoff-types.js +0 -1
- package/dist/services/handoff/handoff-writer.d.ts +0 -1
- package/dist/services/handoff/handoff-writer.js +0 -1
- package/dist/services/hooks/auto-compact-hook-install.d.ts +0 -1
- package/dist/services/hooks/auto-compact-hook-install.js +0 -1
- package/dist/services/hooks/output.d.ts +0 -1
- package/dist/services/hooks/output.js +0 -1
- package/dist/services/hooks/pre-tool-code-gate.d.ts +0 -1
- package/dist/services/hooks/pre-tool-code-gate.js +0 -1
- package/dist/services/hooks/presence-marker-detector.js +0 -1
- package/dist/services/hooks/worktree-authorization-gate.d.ts +0 -3
- package/dist/services/hooks/worktree-authorization-gate.js +0 -1
- package/dist/services/ide/adapters/claude-code-adapter.d.ts +0 -5
- package/dist/services/ide/adapters/claude-code-adapter.js +0 -11
- package/dist/services/ide/adapters/qoder-adapter.d.ts +0 -3
- package/dist/services/ide/adapters/qoder-adapter.js +0 -5
- package/dist/services/ide/adapters/tongyi-lingma-adapter.d.ts +0 -2
- package/dist/services/ide/adapters/tongyi-lingma-adapter.js +0 -2
- package/dist/services/ide/adapters/trae-adapter.d.ts +0 -3
- package/dist/services/ide/adapters/trae-adapter.js +3 -6
- package/dist/services/ide/adapters/zcode-adapter.js +0 -2
- package/dist/services/ide/current-model-detector.js +0 -1
- package/dist/services/ide/hook-protocol.d.ts +0 -2
- package/dist/services/ide/hook-protocol.js +0 -2
- package/dist/services/ide/ide-compact-types.d.ts +0 -7
- package/dist/services/ide/ide-types.d.ts +0 -12
- package/dist/services/ide/resource-profile.d.ts +0 -1
- package/dist/services/job/job-commit-verification.d.ts +0 -2
- package/dist/services/job/job-commit-verification.js +0 -2
- package/dist/services/job/job-orchestrator.d.ts +0 -1
- package/dist/services/job/job-orchestrator.js +0 -1
- package/dist/services/job/job-progress-store.d.ts +0 -2
- package/dist/services/job/job-progress-store.js +0 -3
- package/dist/services/job/job-types.js +0 -1
- package/dist/services/job-snapshot/snapshot.js +0 -1
- package/dist/services/karpathy-cost/karpathy-cost-check-service.js +0 -1
- package/dist/services/legacy/legacy-detector.js +0 -1
- package/dist/services/log/log-commands-service.d.ts +0 -2
- package/dist/services/log/log-commands-service.js +0 -2
- package/dist/services/log/logger.d.ts +0 -1
- package/dist/services/log/logger.js +0 -1
- package/dist/services/log/redact.d.ts +0 -1
- package/dist/services/log/redact.js +0 -1
- package/dist/services/log/retention.d.ts +0 -1
- package/dist/services/log/retention.js +0 -1
- package/dist/services/loop/loop-bee-relation-service.d.ts +3 -3
- package/dist/services/loop/loop-bee-relation-service.js +14 -13
- package/dist/services/loop/loop-bee-relation-store.d.ts +9 -10
- package/dist/services/loop/loop-bee-relation-store.js +1 -2
- package/dist/services/loop/loop-bee-relation-types.d.ts +1 -1
- package/dist/services/loop/loop-bee-relation-types.js +1 -1
- package/dist/services/loop/loop-release-service.d.ts +3 -3
- package/dist/services/loop/loop-release-service.js +1 -1
- package/dist/services/loop/loop-release-store.d.ts +6 -7
- package/dist/services/loop/loop-release-store.js +0 -1
- package/dist/services/loop/monotonic-guard.d.ts +0 -1
- package/dist/services/loop/monotonic-guard.js +0 -1
- package/dist/services/memory/memory-ingest-service.js +0 -1
- package/dist/services/memory/project-context-service.d.ts +0 -1
- package/dist/services/memory/project-context-service.js +0 -1
- package/dist/services/memory/project-memory-service/index/reindex.d.ts +0 -2
- package/dist/services/memory/project-memory-service/index/reindex.js +0 -1
- package/dist/services/memory/project-memory-service/index/search.d.ts +0 -1
- package/dist/services/memory/project-memory-service/index/search.js +0 -1
- package/dist/services/memory/project-memory-service/memory-kinds.d.ts +0 -1
- package/dist/services/memory/project-memory-service/memory-kinds.js +0 -1
- package/dist/services/memory/project-memory-service/parsers/frontmatter.d.ts +0 -1
- package/dist/services/memory/project-memory-service/parsers/frontmatter.js +0 -1
- package/dist/services/memory/project-memory-service.js +0 -1
- package/dist/services/mode/mode-enforcement.js +0 -1
- package/dist/services/mode/mode-status-service.d.ts +0 -2
- package/dist/services/mode/mode-status-service.js +0 -2
- package/dist/services/observability/aggregation.d.ts +0 -4
- package/dist/services/observability/aggregation.js +0 -6
- package/dist/services/observability/observability-schema.js +0 -1
- package/dist/services/observability/observability-service.d.ts +0 -5
- package/dist/services/observability/observability-service.js +0 -4
- package/dist/services/observability/report-formatter.d.ts +0 -2
- package/dist/services/observability/report-formatter.js +0 -2
- package/dist/services/openspec/artifact-boundary.d.ts +0 -4
- package/dist/services/openspec/artifact-boundary.js +0 -4
- package/dist/services/openspec/coverage-evidence-reader.d.ts +0 -1
- package/dist/services/openspec/coverage-evidence-reader.js +0 -1
- package/dist/services/polyrepo/polyrepo-dispatcher.js +0 -1
- package/dist/services/polyrepo/polyrepo-scanner.js +0 -1
- package/dist/services/polyrepo/polyrepo-service.js +0 -1
- package/dist/services/polyrepo/polyrepo-types.d.ts +0 -1
- package/dist/services/prd/best-practice-auto-trigger.d.ts +0 -2
- package/dist/services/prd/best-practice-auto-trigger.js +0 -2
- package/dist/services/prd/gate-evidence-derivation.d.ts +0 -4
- package/dist/services/prd/gate-evidence-derivation.js +0 -5
- package/dist/services/prd/handoff-auto-regen.js +0 -5
- package/dist/services/prd/handoff-frontmatter-shape.d.ts +0 -2
- package/dist/services/prd/handoff-frontmatter-shape.js +0 -2
- package/dist/services/prd/handoff-frontmatter.d.ts +0 -1
- package/dist/services/prd/handoff-frontmatter.js +0 -2
- package/dist/services/prd/handoff-gate-evidence.d.ts +0 -1
- package/dist/services/prd/handoff-gate-evidence.js +0 -4
- package/dist/services/prd/handoff-path-resolution.d.ts +0 -7
- package/dist/services/prd/handoff-path-resolution.js +0 -10
- package/dist/services/prd/handoff-service.d.ts +0 -2
- package/dist/services/prd/handoff-service.js +0 -2
- package/dist/services/prd/handoff-types.d.ts +0 -2
- package/dist/services/prd/handoff-types.js +0 -1
- package/dist/services/prd/project-scan-bootstrap-service.d.ts +0 -1
- package/dist/services/prd/project-scan-bootstrap-service.js +0 -4
- package/dist/services/prd/project-scan-types.d.ts +0 -1
- package/dist/services/prd/project-scan-types.js +0 -1
- package/dist/services/preferences/preferences-service.d.ts +0 -1
- package/dist/services/preferences/preferences-service.js +0 -5
- package/dist/services/preferences/preferences-types.d.ts +0 -14
- package/dist/services/preferences/preferences-types.js +0 -4
- package/dist/services/progress/progress-service.js +0 -1
- package/dist/services/qa/bdd-test-style-verifier.d.ts +0 -1
- package/dist/services/qa/bdd-test-style-verifier.js +0 -1
- package/dist/services/qa/browser-event-logger.d.ts +0 -1
- package/dist/services/qa/browser-event-logger.js +0 -1
- package/dist/services/qa/browser-restart-detector.d.ts +0 -1
- package/dist/services/qa/browser-restart-detector.js +0 -1
- package/dist/services/qa/browser-reuse-hint.d.ts +0 -1
- package/dist/services/qa/browser-reuse-hint.js +0 -1
- package/dist/services/qa/qa-business-review-state.js +0 -2
- package/dist/services/qa/screenshot-archive-service.d.ts +0 -1
- package/dist/services/qa/screenshot-archive-service.js +0 -1
- package/dist/services/rd/impl.js +0 -1
- package/dist/services/rd/rd-service.d.ts +0 -5
- package/dist/services/rd/rd-service.js +0 -5
- package/dist/services/rd/reviewer-dispatch-policy.d.ts +0 -4
- package/dist/services/rd/reviewer-dispatch-policy.js +0 -4
- package/dist/services/rd/standards-diagnostic.js +0 -1
- package/dist/services/rd/tactical-stage.js +0 -1
- package/dist/services/rd-swarm/rd-swarm-types.d.ts +0 -1
- package/dist/services/rd-swarm/rd-swarm-types.js +0 -1
- package/dist/services/recommendations/installed-capability-detector.d.ts +0 -1
- package/dist/services/recommendations/installed-capability-detector.js +0 -1
- package/dist/services/release/version-precheck-service.d.ts +0 -2
- package/dist/services/release/version-precheck-service.js +0 -3
- package/dist/services/retrospective/retrospective-index.d.ts +0 -1
- package/dist/services/retrospective/retrospective-index.js +0 -1
- package/dist/services/retrospective/retrospective-show.d.ts +0 -1
- package/dist/services/retrospective/retrospective-show.js +0 -1
- package/dist/services/reviewer/model-family.js +0 -1
- package/dist/services/reviewer/reviewer-config.js +0 -1
- package/dist/services/reviewer/reviewer-service.d.ts +0 -1
- package/dist/services/reviewer/reviewer-service.js +0 -3
- package/dist/services/reviewer/selection-strategies.js +0 -1
- package/dist/services/runtime/runtime-detector.js +0 -1
- package/dist/services/runtime/runtime-service.d.ts +0 -2
- package/dist/services/runtime/vendor-adapter.d.ts +0 -7
- package/dist/services/runtime/vendors/claude-code.js +0 -1
- package/dist/services/runtime/vendors/codex.js +0 -1
- package/dist/services/runtime/vendors/copilot.js +0 -1
- package/dist/services/sc/sc-service.js +0 -6
- package/dist/services/scan/acceptance-coverage-service.js +0 -2
- package/dist/services/scan/api-diff-recorded.d.ts +0 -1
- package/dist/services/scan/api-diff-recorded.js +0 -1
- package/dist/services/scan/api-diff-service.d.ts +0 -1
- package/dist/services/scan/api-diff-service.js +0 -1
- package/dist/services/scan/api-diff-types.d.ts +0 -1
- package/dist/services/scan/api-diff-types.js +0 -1
- package/dist/services/scan/archetype-service.js +0 -1
- package/dist/services/scan/file-size-policy.d.ts +0 -1
- package/dist/services/scan/file-size-policy.js +0 -5
- package/dist/services/scan/file-size-scan.d.ts +0 -1
- package/dist/services/security/safe-settings-path.js +0 -1
- package/dist/services/session/binding-store.d.ts +0 -4
- package/dist/services/session/binding-store.js +0 -7
- package/dist/services/session/caller-binding-service.d.ts +0 -6
- package/dist/services/session/caller-binding-service.js +0 -4
- package/dist/services/session/caller-id-types.d.ts +0 -3
- package/dist/services/session/caller-id-types.js +0 -2
- package/dist/services/session/getSessionDir.js +0 -1
- package/dist/services/session/index.js +0 -1
- package/dist/services/session/platform-fallbacks.d.ts +0 -3
- package/dist/services/session/platform-fallbacks.js +0 -3
- package/dist/services/session/resolve-caller-id.d.ts +0 -2
- package/dist/services/session/resolve-caller-id.js +0 -2
- package/dist/services/session/session-binding-bridge.d.ts +0 -2
- package/dist/services/session/session-binding-bridge.js +0 -15
- package/dist/services/session/session-checkpoint-service.d.ts +0 -1
- package/dist/services/session/session-checkpoint-service.js +0 -1
- package/dist/services/session/session-manager.d.ts +0 -8
- package/dist/services/session/session-manager.js +0 -19
- package/dist/services/session/session-resume-service.d.ts +0 -1
- package/dist/services/session/session-resume-service.js +0 -1
- package/dist/services/share/bundle-reader.d.ts +2 -5
- package/dist/services/share/bundle-reader.js +6 -8
- package/dist/services/share/bundle-writer.d.ts +2 -2
- package/dist/services/skill/resume-detector.js +0 -3
- package/dist/services/skill/skill-scheduler.d.ts +0 -1
- package/dist/services/skill/skill-scheduler.js +0 -1
- package/dist/services/skill/skill-search-service.d.ts +0 -2
- package/dist/services/skill/skill-search-service.js +0 -2
- package/dist/services/skillhub/release-diff.d.ts +2 -2
- package/dist/services/skillhub/release-export.d.ts +2 -2
- package/dist/services/skillhub/release-gc-blobs.d.ts +2 -2
- package/dist/services/skillhub/release-import.d.ts +2 -2
- package/dist/services/skillhub/release-import.js +2 -1
- package/dist/services/skillhub/release-retain.d.ts +2 -2
- package/dist/services/skillhub/release-retain.js +2 -1
- package/dist/services/skillhub/sqlite-store.d.ts +3 -3
- package/dist/services/skillhub/sqlite-store.js +4 -5
- package/dist/services/skills/hooks-codegate-superpowers.d.ts +0 -3
- package/dist/services/skills/hooks-codegate-superpowers.js +0 -14
- package/dist/services/skills/hooks-settings-service.d.ts +0 -2
- package/dist/services/skills/hooks-settings-service.js +0 -6
- package/dist/services/skills/presence-lease-service.d.ts +0 -1
- package/dist/services/skills/presence-lease-service.js +0 -1
- package/dist/services/skills/session-start-hook-constants.d.ts +0 -4
- package/dist/services/skills/session-start-hook-constants.js +0 -4
- package/dist/services/skills/skill-presence-service.d.ts +0 -8
- package/dist/services/skills/skill-presence-service.js +0 -13
- package/dist/services/skills/skill-statusline-model.d.ts +0 -6
- package/dist/services/skills/skill-statusline-model.js +1 -4
- package/dist/services/skills/skill-statusline-renderer.d.ts +0 -1
- package/dist/services/skills/skill-statusline-renderer.js +0 -12
- package/dist/services/skills/skill-statusline-service.js +0 -6
- package/dist/services/skills/skill-statusline-sid-suffix.d.ts +0 -2
- package/dist/services/skills/skill-statusline-sid-suffix.js +0 -2
- package/dist/services/skills/statusline-palette.d.ts +0 -2
- package/dist/services/skills/statusline-palette.js +0 -3
- package/dist/services/slice/slice-archive-service.js +0 -1
- package/dist/services/slice/slice-benchmark-service.d.ts +0 -1
- package/dist/services/slice/slice-benchmark-service.js +0 -1
- package/dist/services/slice/slice-check-service.js +0 -6
- package/dist/services/slice/slice-check-types.d.ts +0 -1
- package/dist/services/slice/slice-pick-service.d.ts +0 -1
- package/dist/services/slice/slice-pick-service.js +0 -1
- package/dist/services/slice/slice-review-state.js +0 -2
- package/dist/services/sqlite/sqlite-driver.d.ts +118 -0
- package/dist/services/sqlite/sqlite-driver.js +159 -0
- package/dist/services/standards/ide-aware-standards-service.d.ts +0 -2
- package/dist/services/standards/ide-aware-standards-service.js +0 -1
- package/dist/services/standards/loop-engineering-readiness-lint.d.ts +0 -1
- package/dist/services/standards/loop-engineering-readiness-lint.js +0 -1
- package/dist/services/standards/migrate-claude-rules-service.js +0 -3
- package/dist/services/standards/migrate-service.d.ts +0 -1
- package/dist/services/standards/migrate-service.js +0 -1
- package/dist/services/standards/missing-standards-detector.d.ts +0 -2
- package/dist/services/standards/missing-standards-detector.js +0 -3
- package/dist/services/standards/project-standards-service.d.ts +0 -1
- package/dist/services/standards/project-standards-service.js +0 -1
- package/dist/services/standards/standards-render.d.ts +0 -1
- package/dist/services/standards/standards-render.js +0 -1
- package/dist/services/standards/ui-library-dispatch-block.d.ts +0 -1
- package/dist/services/standards/ui-library-dispatch-block.js +0 -1
- package/dist/services/tech/tech-change-id-service.d.ts +0 -7
- package/dist/services/tech/tech-change-id-service.js +0 -7
- package/dist/services/tech/tech-service.js +0 -5
- package/dist/services/verdict/envelope-parsers.d.ts +0 -2
- package/dist/services/verdict/envelope-parsers.js +0 -2
- package/dist/services/verdict/envelopes.d.ts +0 -1
- package/dist/services/vm/vm-lease.js +0 -1
- package/dist/services/web/aria-node.d.ts +0 -1
- package/dist/services/web/bounded-output.d.ts +0 -1
- package/dist/services/web/bounded-output.js +0 -1
- package/dist/services/web/browser-acquire.js +0 -1
- package/dist/services/web/browser-cache-probe.js +0 -1
- package/dist/services/web/browser-session-manager.js +0 -1
- package/dist/services/web/daemon-entry.js +0 -1
- package/dist/services/web/daemon-registry.js +0 -1
- package/dist/services/web/daemon-supervisor.d.ts +4 -3
- package/dist/services/web/daemon-supervisor.js +4 -4
- package/dist/services/web/playwright-loader.js +0 -1
- package/dist/services/web/playwright-types.d.ts +0 -1
- package/dist/services/web/snapshot-pruner.js +0 -1
- package/dist/services/web/untrusted-envelope.d.ts +0 -1
- package/dist/services/web/web-artifact-paths.js +0 -1
- package/dist/services/web/web-client.d.ts +0 -1
- package/dist/services/web/web-daemon-service.js +0 -1
- package/dist/services/web/web-fallback.d.ts +0 -1
- package/dist/services/web/web-fallback.js +0 -1
- package/dist/services/web/web-install-service.js +0 -1
- package/dist/services/web/web-login-profile.js +0 -1
- package/dist/services/web/web-protocol.d.ts +0 -1
- package/dist/services/web/web-protocol.js +0 -1
- package/dist/services/web/web-status-report.js +0 -1
- package/dist/services/workflow/artifact-paths.js +0 -3
- package/dist/services/workflow/autonomous-resume-writer.js +0 -2
- package/dist/services/workflow/pipeline-verify-gate-support.d.ts +0 -5
- package/dist/services/workflow/pipeline-verify-gate-support.js +0 -11
- package/dist/services/workflow/pipeline-verify-service.d.ts +0 -2
- package/dist/services/workflow/pipeline-verify-service.js +0 -15
- package/dist/services/workflow/pipeline-verify-types.d.ts +0 -10
- package/dist/services/workflow/pipeline-verify-types.js +0 -2
- package/dist/services/workflow/plan-reader.d.ts +0 -1
- package/dist/services/workflow/plan-reader.js +0 -5
- package/dist/services/workflow/plan-refresher.js +0 -2
- package/dist/services/workflow/plan-trigger-detector.d.ts +0 -2
- package/dist/services/workflow/plan-trigger-detector.js +0 -3
- package/dist/services/workflow/workflow-autonomous-resume-helpers.js +0 -5
- package/dist/services/workflow/workflow-autonomous-service.js +0 -2
- package/dist/services/workflow/workflow-autonomous-types.d.ts +0 -2
- package/dist/services/workflow/workflow-autonomous-types.js +0 -2
- package/dist/services/workflow/workflow-graph-types.d.ts +0 -1
- package/dist/services/workflow/workflow-graph-types.js +0 -1
- package/dist/services/workflow/workflow-router-service.js +0 -4
- package/dist/services/workflow/workflow-skip-service.d.ts +0 -1
- package/dist/services/workflow/workflow-skip-service.js +0 -1
- package/dist/services/workflow/workflow-spec-lint.d.ts +0 -2
- package/dist/services/workflow/workflow-spec-lint.js +0 -2
- package/dist/services/workflow/workflow-spec-types.d.ts +0 -1
- package/dist/services/workflow/workflow-spec-types.js +0 -1
- package/dist/services/workflow/workflow-spec-yaml.d.ts +0 -2
- package/dist/services/workflow/workflow-spec-yaml.js +0 -2
- package/dist/services/workflow/workflow-spec.js +0 -1
- package/dist/services/workflow/workflow-state-store.js +0 -1
- package/dist/services/workspace/claude-settings-template.d.ts +0 -4
- package/dist/services/workspace/claude-settings-template.js +0 -4
- package/dist/services/workspace/migrate-1-4-1-service.d.ts +0 -1
- package/dist/services/workspace/migrate-1-4-1-service.js +0 -1
- package/dist/services/workspace/migrate-service.js +0 -8
- package/dist/services/workspace/migrate-types.d.ts +0 -4
- package/dist/services/workspace/migrate-types.js +0 -1
- package/dist/services/workspace/reconcile-migrate.d.ts +0 -3
- package/dist/services/workspace/reconcile-migrate.js +0 -5
- package/dist/services/workspace/reconcile-service.d.ts +0 -3
- package/dist/services/workspace/reconcile-service.js +0 -7
- package/dist/services/workspace/reconcile-types.d.ts +0 -5
- package/dist/services/workspace/sid-naming-guard.d.ts +0 -1
- package/dist/services/workspace/sid-naming-guard.js +0 -1
- package/dist/services/workspace/templates/project-scan/index.d.ts +0 -3
- package/dist/services/workspace/templates/project-scan/index.js +0 -3
- package/dist/services/workspace/workspace-claude-settings-materializer.d.ts +0 -1
- package/dist/services/workspace/workspace-claude-settings-materializer.js +0 -4
- package/dist/services/workspace/workspace-service.d.ts +0 -7
- package/dist/services/workspace/workspace-service.js +0 -16
- package/dist/services/worktree/playwright-profile.js +0 -1
- package/dist/services/worktree/worktree-lease-types.d.ts +0 -1
- package/dist/services/worktree/worktree-lease-types.js +0 -1
- package/dist/services/worktree/worktree-lease.d.ts +0 -2
- package/dist/services/worktree/worktree-lease.js +0 -2
- package/dist/shared/format-md-compact.d.ts +0 -2
- package/dist/shared/format-md-compact.js +0 -2
- package/dist/shared/incrementing-number.d.ts +0 -1
- package/dist/shared/incrementing-number.js +0 -1
- package/dist/shared/path-utils.d.ts +0 -1
- package/dist/shared/path-utils.js +0 -1
- package/dist/shared/runtime-root.d.ts +0 -1
- package/dist/shared/runtime-root.js +0 -1
- package/dist/shared/stale-policy.d.ts +0 -1
- package/dist/shared/stale-policy.js +0 -1
- package/package.json +12 -10
- package/scripts/canonical-store-link.mjs +296 -0
- package/scripts/canonical-store-prune.mjs +131 -0
- package/scripts/canonical-store.mjs +298 -0
- package/scripts/install-skills.mjs +175 -383
- package/skills/peaks-audit/SKILL.md +3 -3
- package/dist/services/codegraph/codegraph-include-reconciler.d.ts +0 -10
- package/dist/services/codegraph/codegraph-include-reconciler.js +0 -160
|
@@ -8,7 +8,6 @@ import { resolveCallerProjection } from '../session/resolve-caller-id.js';
|
|
|
8
8
|
import { normalizePath } from '../../shared/path-utils.js';
|
|
9
9
|
import { assertWritableProjectRoot } from '../config/config-safety.js';
|
|
10
10
|
/**
|
|
11
|
-
* Slice 2026-09-10 (rid=rebind-must-update-caller-binding): repoint the
|
|
12
11
|
* calling process's own per-caller binding at the session id this init just
|
|
13
12
|
* bound. `getSessionIdCanonical` reads `callers/<callerId>.json` FIRST, so a
|
|
14
13
|
* binding left behind by an earlier session shadows every explicit rebind.
|
|
@@ -31,7 +30,6 @@ function rebindCurrentCallerBinding(projectRoot, sessionId) {
|
|
|
31
30
|
return updateCallerBindingSessionId(projectRoot, callerId, sessionId);
|
|
32
31
|
}
|
|
33
32
|
/**
|
|
34
|
-
* Slice 2026-06-29-change-id-root-removal: list the immediate children of
|
|
35
33
|
* `.peaks/` so the legacy sibling-dir guard can enumerate date-stamped
|
|
36
34
|
* residue dirs without re-implementing `readdirSync` inline. Returns
|
|
37
35
|
* `[]` when the `.peaks/` dir does not exist (legitimate first-run
|
|
@@ -49,7 +47,6 @@ function listPeaksRuntimeSiblings(projectRoot) {
|
|
|
49
47
|
}
|
|
50
48
|
}
|
|
51
49
|
/**
|
|
52
|
-
* Slice 2026-06-29-change-id-root-removal: list the immediate children of
|
|
53
50
|
* `.peaks/_runtime/` so the legacy sibling-dir guard can enumerate
|
|
54
51
|
* date-stamped residue dirs at the runtime layer. Returns `[]` when
|
|
55
52
|
* the `.peaks/_runtime/` dir does not exist.
|
|
@@ -66,7 +63,6 @@ function listRuntimeSiblings(projectRoot) {
|
|
|
66
63
|
}
|
|
67
64
|
}
|
|
68
65
|
/**
|
|
69
|
-
* Slice 2026-06-29-change-id-root-removal: returns `true` when the
|
|
70
66
|
* basename matches the auto-generated session-id shape
|
|
71
67
|
* `YYYY-MM-DD-<slug>` (the v2.8.3 hard-ban target). Bare dates
|
|
72
68
|
* (`YYYY-MM-DD`) are NOT auto-generated and are kept as plain dates.
|
|
@@ -78,7 +74,6 @@ function isDateStampedSiblingId(name) {
|
|
|
78
74
|
return false;
|
|
79
75
|
return true;
|
|
80
76
|
}
|
|
81
|
-
// Slice 2026-06-29-change-id-root-removal: `setCurrentChangeId` and
|
|
82
77
|
// `validateChangeIdOrThrow` were removed with the change-id axis. Init
|
|
83
78
|
// preserves the legacy-sibling-dir guard via inline `lstatSync`; the
|
|
84
79
|
// path-safety helpers moved to `shared/path-safety.ts` but this module
|
|
@@ -97,7 +92,6 @@ const PROHIBITED_SUFFIXES = [
|
|
|
97
92
|
// Auto-generated session ID pattern: YYYY-MM-DD-session-<6位hex>
|
|
98
93
|
const AUTO_SESSION_PATTERN = /^\d{4}-\d{2}-\d{2}-session-[a-f0-9]{6}$/;
|
|
99
94
|
/**
|
|
100
|
-
* Slice C10 (2026-06-24-legacy-change-id-sibling): the relative path
|
|
101
95
|
* patterns under `.peaks/_runtime/<sessionId>/` that the lazy WRITER (peaks-qa,
|
|
102
96
|
* peaks-rd, peaks-prd, peaks-txt, peaks-sc) creates via
|
|
103
97
|
* `mkdir(parent, { recursive: true })` immediately before a write. When
|
|
@@ -196,9 +190,6 @@ export async function initWorkspace(options) {
|
|
|
196
190
|
// the user's home. Enforced here as well as at the CLI so a non-CLI caller
|
|
197
191
|
// cannot reach the same write by another door.
|
|
198
192
|
assertWritableProjectRoot(options.projectRoot);
|
|
199
|
-
// Phase 6 refactor (slice 2026-06-05-change-id-as-unit-of-work) +
|
|
200
|
-
// slice 006 (2026-06-06-change-folder-simplify-and-lazy-role-subdirs) +
|
|
201
|
-
// slice 2026-06-22-top-level-change-id-cleanup (2.8.3):
|
|
202
193
|
// - Reviewable artifacts (rd/, qa/, prd/, txt/) live at
|
|
203
194
|
// `.peaks/_runtime/<change-id>/<role>/` (tracked in git) when a change-id
|
|
204
195
|
// is given. The role subdirs are NOT pre-created — the writer
|
|
@@ -206,7 +197,6 @@ export async function initWorkspace(options) {
|
|
|
206
197
|
// dirs on demand via `mkdirSync(..., { recursive: true })`.
|
|
207
198
|
// - The session dir `.peaks/_runtime/<session-id>/` (gitignored)
|
|
208
199
|
// now holds ONLY the canonical `session.json` metadata. The
|
|
209
|
-
// F3-introduced `system/` subdir is gone — slice 006 removes
|
|
210
200
|
// it via `peaks workspace reconcile`; new init calls do not
|
|
211
201
|
// pre-create it.
|
|
212
202
|
// - The change-id dir is NOT created at top level when `--change-id`
|
|
@@ -227,7 +217,6 @@ export async function initWorkspace(options) {
|
|
|
227
217
|
const alreadyExisted = [];
|
|
228
218
|
// 1. Create the session dir (canonical location `.peaks/_runtime/<sid>/`)
|
|
229
219
|
// with NO subdirs. The session dir is gitignored; the role
|
|
230
|
-
// subdirs and the `system/` subdir are gone entirely (slice 006).
|
|
231
220
|
if (await isDirectory(sessionRoot)) {
|
|
232
221
|
alreadyExisted.push('.');
|
|
233
222
|
}
|
|
@@ -235,13 +224,11 @@ export async function initWorkspace(options) {
|
|
|
235
224
|
await mkdir(sessionRoot, { recursive: true });
|
|
236
225
|
created.push('.');
|
|
237
226
|
}
|
|
238
|
-
// 1a. Write the per-session metadata file. Slice 006 makes
|
|
239
227
|
// `.peaks/_runtime/<sid>/session.json` the durable session
|
|
240
228
|
// metadata (the body's source of truth, the `peaks workspace
|
|
241
229
|
// reconcile` discovery source). The file is created on first
|
|
242
230
|
// init and refreshed on every subsequent init. Idempotent.
|
|
243
231
|
setSessionMeta(options.projectRoot, options.sessionId, {});
|
|
244
|
-
// 2. Slice 2026-06-29-change-id-root-removal: the change-id axis is
|
|
245
232
|
// gone. The session id IS the binding — there is no separate
|
|
246
233
|
// `.peaks/_runtime/current-change` file. The v2.8.3 hard-ban on
|
|
247
234
|
// `.peaks/<YYYY-MM-DD-*>/` siblings still fires via the inline
|
|
@@ -339,7 +326,6 @@ export async function initWorkspace(options) {
|
|
|
339
326
|
// Either: existing session dir is empty (true leftover, no user data),
|
|
340
327
|
// or the caller explicitly authorised a rebind. Overwrite.
|
|
341
328
|
setCurrentSessionBinding(options.projectRoot, options.sessionId);
|
|
342
|
-
// Slice 2026-09-10 (rid=rebind-must-update-caller-binding): an
|
|
343
329
|
// explicit rebind must ALSO repoint this caller's per-caller binding.
|
|
344
330
|
// `getSessionIdCanonical` prefers `callers/<callerId>.json`, so leaving
|
|
345
331
|
// it untouched shadowed the rebind for every command resolving through
|
|
@@ -350,7 +336,6 @@ export async function initWorkspace(options) {
|
|
|
350
336
|
rebindCurrentCallerBinding(options.projectRoot, options.sessionId);
|
|
351
337
|
bound = true;
|
|
352
338
|
}
|
|
353
|
-
// Slice 2026-06-16-peaks-code-auto-scaffold (RD#7):
|
|
354
339
|
// - Always run the detector and surface the descriptor so the CLI can
|
|
355
340
|
// put it on stderr + into the JSON envelope's `data.standardsMissing`.
|
|
356
341
|
// - When `initStandards: true` AND the detector reports missing, run
|
|
@@ -404,7 +389,6 @@ import { materializeClaudeSettingsLocal } from './workspace-claude-settings-mate
|
|
|
404
389
|
export { materializeClaudeSettingsLocal } from './workspace-claude-settings-materializer.js';
|
|
405
390
|
import { writeGeneratedArtifactsStamp } from './generated-artifacts-stamp.js';
|
|
406
391
|
/**
|
|
407
|
-
* Slice C10 (2026-06-24-legacy-change-id-sibling): whole-dir shape check
|
|
408
392
|
* for the legacy sibling `.peaks/_runtime/<sessionId>/`. Returns `true` ONLY when
|
|
409
393
|
* every leaf path under the sibling matches one of
|
|
410
394
|
* `WRITER_ALLOWED_RELATIVE_PATTERNS` AND no entry is a symlink (anywhere
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
* playwright-profile — deterministic Chromium user-data-dir +
|
|
3
3
|
* profile-name pair generator for a (session, dispatch) tuple.
|
|
4
4
|
*
|
|
5
|
-
* Slice 2026-08-01-subagent-merge-and-e2e (Task 2). Each sub-agent
|
|
6
5
|
* dispatch with `--isolation worktree` MUST land its Playwright MCP
|
|
7
6
|
* browser session in a unique Chromium profile so concurrent
|
|
8
7
|
* dispatches do not share cookies / localStorage / IndexedDB. The
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
* worktree-lease-types — the pure declaration surface of the worktree lease
|
|
3
3
|
* store (`worktree-lease.ts`).
|
|
4
4
|
*
|
|
5
|
-
* Slice 2026-07-29-worktree-l2-extended Part 1 owns the lease behavior; this
|
|
6
5
|
* module owns only the shapes (lifecycle status, lease record, creation draft,
|
|
7
6
|
* and the list-read result). `worktree-lease.ts` imports and re-exports every
|
|
8
7
|
* name here, so importers keep resolving them from the original path.
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
* worktree-lease-types — the pure declaration surface of the worktree lease
|
|
3
3
|
* store (`worktree-lease.ts`).
|
|
4
4
|
*
|
|
5
|
-
* Slice 2026-07-29-worktree-l2-extended Part 1 owns the lease behavior; this
|
|
6
5
|
* module owns only the shapes (lifecycle status, lease record, creation draft,
|
|
7
6
|
* and the list-read result). `worktree-lease.ts` imports and re-exports every
|
|
8
7
|
* name here, so importers keep resolving them from the original path.
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* worktree-lease — pure-function lease store for `peaks worktree spawn`.
|
|
3
3
|
*
|
|
4
|
-
* Slice 2026-07-29-worktree-l2-extended Part 1. This is the Layer 2
|
|
5
4
|
* governance complement to Layer 3 (`permissions.deny` for the superpowers
|
|
6
5
|
* chain) and Layer 1 (sub-agent dispatch prompt refusal). Together the
|
|
7
6
|
* three layers close the superpowers-chain jailbreak that previously
|
|
@@ -11,7 +10,6 @@
|
|
|
11
10
|
* directory path as an argument and returns structured data. Atomic
|
|
12
11
|
* filesystem writes happen at the call site (CLI command), keeping the
|
|
13
12
|
* helpers trivially testable. The CLI surface lives in
|
|
14
|
-
* `src/cli/commands/worktree-spawn-commands.ts`.
|
|
15
13
|
*
|
|
16
14
|
* Why a separate lease (vs reusing `peaks worktree auth grant`):
|
|
17
15
|
* - `auth grant` is a single-shot, short-lived token file consulted by
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* worktree-lease — pure-function lease store for `peaks worktree spawn`.
|
|
3
3
|
*
|
|
4
|
-
* Slice 2026-07-29-worktree-l2-extended Part 1. This is the Layer 2
|
|
5
4
|
* governance complement to Layer 3 (`permissions.deny` for the superpowers
|
|
6
5
|
* chain) and Layer 1 (sub-agent dispatch prompt refusal). Together the
|
|
7
6
|
* three layers close the superpowers-chain jailbreak that previously
|
|
@@ -11,7 +10,6 @@
|
|
|
11
10
|
* directory path as an argument and returns structured data. Atomic
|
|
12
11
|
* filesystem writes happen at the call site (CLI command), keeping the
|
|
13
12
|
* helpers trivially testable. The CLI surface lives in
|
|
14
|
-
* `src/cli/commands/worktree-spawn-commands.ts`.
|
|
15
13
|
*
|
|
16
14
|
* Why a separate lease (vs reusing `peaks worktree auth grant`):
|
|
17
15
|
* - `auth grant` is a single-shot, short-lived token file consulted by
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
* format-md-compact — single source of truth for whitespace / decoration
|
|
3
3
|
* normalization across every CLI body-output path.
|
|
4
4
|
*
|
|
5
|
-
* Slice 023 (R3) — `peaks project memories:show`, `peaks retrospective show`,
|
|
6
5
|
* and `peaks request show` (per-artifact) all funnel their `body` field through
|
|
7
6
|
* this helper so the LLM-consumed output is free of blank-line padding,
|
|
8
7
|
* decorative `---` rules, and frontmatter `description:` field-name repeats
|
|
@@ -11,7 +10,6 @@
|
|
|
11
10
|
* inline emphasis, code spans).
|
|
12
11
|
*
|
|
13
12
|
* Pure function: no fs, no I/O. Easy to unit-test (see
|
|
14
|
-
* `tests/unit/shared/format-md-compact.test.ts`).
|
|
15
13
|
*/
|
|
16
14
|
export interface FormatMdCompactOptions {
|
|
17
15
|
/** Preserve code-fence (``` ... ```) and frontmatter (--- ... ---) content. Default true. */
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
* format-md-compact — single source of truth for whitespace / decoration
|
|
3
3
|
* normalization across every CLI body-output path.
|
|
4
4
|
*
|
|
5
|
-
* Slice 023 (R3) — `peaks project memories:show`, `peaks retrospective show`,
|
|
6
5
|
* and `peaks request show` (per-artifact) all funnel their `body` field through
|
|
7
6
|
* this helper so the LLM-consumed output is free of blank-line padding,
|
|
8
7
|
* decorative `---` rules, and frontmatter `description:` field-name repeats
|
|
@@ -11,7 +10,6 @@
|
|
|
11
10
|
* inline emphasis, code spans).
|
|
12
11
|
*
|
|
13
12
|
* Pure function: no fs, no I/O. Easy to unit-test (see
|
|
14
|
-
* `tests/unit/shared/format-md-compact.test.ts`).
|
|
15
13
|
*/
|
|
16
14
|
import { ATX_HEADING_RE, collapseMultiBlanks, computeSetextUnderlines, isDecorativeHorizontalRule, isFenceCloseLine, isFenceOpenLine, isTableLine, splitFrontmatter } from './format-md-compact-internals.js';
|
|
17
15
|
const FENCE_TRIPLE_BACKTICK = '```';
|
|
@@ -19,7 +19,6 @@ export declare function getNextNumber(dirPath: string): number;
|
|
|
19
19
|
* Exported separately so lookup paths (e.g. `request-artifact-service.ts`)
|
|
20
20
|
* can compute the SAME slug the writer produced and match on-disk filenames
|
|
21
21
|
* case-insensitively — the writer lowercases, so a mixed-case request id
|
|
22
|
-
* like `2026-09-06-split-batchA` lands as `...-split-batcha.md`.
|
|
23
22
|
*/
|
|
24
23
|
export declare function slugifyDescription(description: string): string;
|
|
25
24
|
export declare function buildNumberedFilename(number: number, description: string): string;
|
|
@@ -52,7 +52,6 @@ const MAX_FILENAME_SLUG_LENGTH = MAX_FILENAME_LENGTH - 7;
|
|
|
52
52
|
* Exported separately so lookup paths (e.g. `request-artifact-service.ts`)
|
|
53
53
|
* can compute the SAME slug the writer produced and match on-disk filenames
|
|
54
54
|
* case-insensitively — the writer lowercases, so a mixed-case request id
|
|
55
|
-
* like `2026-09-06-split-batchA` lands as `...-split-batcha.md`.
|
|
56
55
|
*/
|
|
57
56
|
export function slugifyDescription(description) {
|
|
58
57
|
return description
|
|
@@ -67,7 +67,6 @@ export declare function stablePath(path: string): string;
|
|
|
67
67
|
* disk stays the real path (see `writeSessionFile`).
|
|
68
68
|
*
|
|
69
69
|
* Lifted from `src/services/session/session-manager.ts` in slice
|
|
70
|
-
* `2026-08-04-rid-002-bridge-canonicalize` so both `session-manager.ts`
|
|
71
70
|
* and `session-binding-bridge.ts` share a single canonicalization
|
|
72
71
|
* authority.
|
|
73
72
|
*/
|
|
@@ -116,7 +116,6 @@ export function stablePath(path) {
|
|
|
116
116
|
* disk stays the real path (see `writeSessionFile`).
|
|
117
117
|
*
|
|
118
118
|
* Lifted from `src/services/session/session-manager.ts` in slice
|
|
119
|
-
* `2026-08-04-rid-002-bridge-canonicalize` so both `session-manager.ts`
|
|
120
119
|
* and `session-binding-bridge.ts` share a single canonicalization
|
|
121
120
|
* authority.
|
|
122
121
|
*/
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The one seam through which a `.peaks/_runtime` path is built.
|
|
3
3
|
*
|
|
4
|
-
* Slice 2026-09-15 (runtime-path-unrepresentable). Three attempts to *detect*
|
|
5
4
|
* a caller-supplied id reaching a runtime join all failed the same way: the
|
|
6
5
|
* shipped text rule caught 4 of 12 fixture shapes where the name-based
|
|
7
6
|
* predicate it replaced caught 8, and the version that reached 10 of 12 gave
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The one seam through which a `.peaks/_runtime` path is built.
|
|
3
3
|
*
|
|
4
|
-
* Slice 2026-09-15 (runtime-path-unrepresentable). Three attempts to *detect*
|
|
5
4
|
* a caller-supplied id reaching a runtime join all failed the same way: the
|
|
6
5
|
* shipped text rule caught 4 of 12 fixture shapes where the name-based
|
|
7
6
|
* predicate it replaced caught 8, and the version that reached 10 of 12 gave
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
* stale-policy — pure helper for stale detection and filtering on memory
|
|
3
3
|
* and (future) retrospective entries.
|
|
4
4
|
*
|
|
5
|
-
* Slice 023 (R3) applies this to memory only (`peaks project memories:show`
|
|
6
5
|
* and the underlying `readMemoryIndex` load path). The retrospective index
|
|
7
6
|
* loader shares the same shape (`updatedAt: string`) and will be wired to
|
|
8
7
|
* the same helper in a future slice.
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
* stale-policy — pure helper for stale detection and filtering on memory
|
|
3
3
|
* and (future) retrospective entries.
|
|
4
4
|
*
|
|
5
|
-
* Slice 023 (R3) applies this to memory only (`peaks project memories:show`
|
|
6
5
|
* and the underlying `readMemoryIndex` load path). The retrospective index
|
|
7
6
|
* loader shares the same shape (`updatedAt: string`) and will be wired to
|
|
8
7
|
* the same helper in a future slice.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "peaks-loop",
|
|
3
|
-
"version": "4.1.
|
|
3
|
+
"version": "4.1.2",
|
|
4
4
|
"description": "Loop Engineering CLI — workflow primitive / loop guards / evaluators / slice orchestration",
|
|
5
5
|
"author": "SquabbyZ",
|
|
6
6
|
"keywords": [
|
|
@@ -65,6 +65,7 @@
|
|
|
65
65
|
},
|
|
66
66
|
"files": [
|
|
67
67
|
"bin/peaks.js",
|
|
68
|
+
"bin/node-floor.mjs",
|
|
68
69
|
"dist/cli/index.js",
|
|
69
70
|
"dist/**/*.js",
|
|
70
71
|
"dist/**/*.d.ts",
|
|
@@ -74,6 +75,9 @@
|
|
|
74
75
|
"scripts/copy-templates.mjs",
|
|
75
76
|
"scripts/sync-version.mjs",
|
|
76
77
|
"scripts/install-skills.mjs",
|
|
78
|
+
"scripts/canonical-store.mjs",
|
|
79
|
+
"scripts/canonical-store-link.mjs",
|
|
80
|
+
"scripts/canonical-store-prune.mjs",
|
|
77
81
|
"scripts/watch.mjs",
|
|
78
82
|
"skills/**",
|
|
79
83
|
"!skills/**/test-prompts.json",
|
|
@@ -105,22 +109,21 @@
|
|
|
105
109
|
]
|
|
106
110
|
},
|
|
107
111
|
"engines": {
|
|
108
|
-
"node": ">=
|
|
112
|
+
"node": ">=24.0.0"
|
|
109
113
|
},
|
|
110
114
|
"dependencies": {
|
|
111
115
|
"@alibaba-group/open-code-review": "^1.8.9",
|
|
112
|
-
"@colbymchenry/codegraph": "
|
|
116
|
+
"@colbymchenry/codegraph": "1.6.2",
|
|
113
117
|
"@upstash/context7-mcp": "^4.0.2",
|
|
114
|
-
"better-sqlite3": "^12.11.1",
|
|
115
118
|
"commander": "^12.1.0",
|
|
116
119
|
"fzf": "^0.5.2",
|
|
117
120
|
"picomatch": "4.0.4",
|
|
118
121
|
"yaml": "^2.9.0",
|
|
119
122
|
"zod": "^4.4.3",
|
|
120
|
-
"peaks-loop-internal-runtime": "0.0.
|
|
121
|
-
"peaks-loop-
|
|
122
|
-
"peaks-loop-
|
|
123
|
-
"peaks-loop-shared
|
|
123
|
+
"peaks-loop-internal-runtime": "0.0.42",
|
|
124
|
+
"peaks-loop-shared-channel": "0.0.59",
|
|
125
|
+
"peaks-loop-mut": "0.1.56",
|
|
126
|
+
"peaks-loop-shared": "0.0.91"
|
|
124
127
|
},
|
|
125
128
|
"devDependencies": {
|
|
126
129
|
"@changesets/cli": "2.31.1",
|
|
@@ -128,8 +131,7 @@
|
|
|
128
131
|
"@stryker-mutator/core": "^8.7.1",
|
|
129
132
|
"@stryker-mutator/typescript-checker": "^8.7.1",
|
|
130
133
|
"@stryker-mutator/vitest-runner": "^9.6.1",
|
|
131
|
-
"@types/
|
|
132
|
-
"@types/node": "^22.10.2",
|
|
134
|
+
"@types/node": "^24.19.1",
|
|
133
135
|
"@types/picomatch": "4.0.3",
|
|
134
136
|
"@typescript-eslint/eslint-plugin": "8.66.0",
|
|
135
137
|
"@typescript-eslint/parser": "8.66.0",
|
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
//
|
|
3
|
+
// The canonical store's FILE-shaped entry point — one `.md` asset per entry, not a
|
|
4
|
+
// tree. `canonical-store.mjs` owns the copy and the link for DIRECTORY assets
|
|
5
|
+
// (skills, linked with a junction); this module owns them for `agents` and
|
|
6
|
+
// `output-styles`, where the entry is a single file and the only link Windows will
|
|
7
|
+
// take is a FILE SYMLINK, which needs developer mode or Administrator.
|
|
8
|
+
//
|
|
9
|
+
// WHY IT IS A SEPARATE MODULE — three behaviours with no counterpart in the
|
|
10
|
+
// directory case, each one a place the slice could have gone silently wrong:
|
|
11
|
+
//
|
|
12
|
+
// 1. THE FALLBACK IS REPORTED. When the symlink is refused the entry is written as
|
|
13
|
+
// a REAL COPY — today's behaviour, reused — and the return value says
|
|
14
|
+
// `fallback: { mode: 'copy', … }`. A degradation that carries no reason is
|
|
15
|
+
// indistinguishable from a success; that lesson is already paid for here.
|
|
16
|
+
//
|
|
17
|
+
// 2. OWNERSHIP BY PROVENANCE, NOT BY STRING EQUALITY. The pre-canonical-store
|
|
18
|
+
// installer sidecarred `resolve(recorded) === resolve(sourcePath)` against the
|
|
19
|
+
// PACKAGE path of the installing version — measured on a real machine, a path
|
|
20
|
+
// with a NODE VERSION inside it (`…\nvm\v24.21.0\node_modules\…`). See
|
|
21
|
+
// `isOwnedLegacyEntry` for what replaced it, and why both of its arms matter.
|
|
22
|
+
//
|
|
23
|
+
// 3. A COPY MUST NOT FREEZE. The fallback copy is detected as ours and kept
|
|
24
|
+
// byte-equal to the canonical copy on every run, so a refusal still propagates
|
|
25
|
+
// upgrades. It does NOT retry the symlink: a retry deletes and rebuilds the file
|
|
26
|
+
// each run, which breaks the installer's mtime idempotence assertion.
|
|
27
|
+
|
|
28
|
+
import { randomUUID } from 'node:crypto';
|
|
29
|
+
import {
|
|
30
|
+
existsSync,
|
|
31
|
+
lstatSync,
|
|
32
|
+
mkdirSync,
|
|
33
|
+
readFileSync,
|
|
34
|
+
realpathSync,
|
|
35
|
+
renameSync,
|
|
36
|
+
symlinkSync,
|
|
37
|
+
unlinkSync,
|
|
38
|
+
writeFileSync
|
|
39
|
+
} from 'node:fs';
|
|
40
|
+
import { dirname } from 'node:path';
|
|
41
|
+
|
|
42
|
+
import {
|
|
43
|
+
MANAGED_MARKER_SUFFIX,
|
|
44
|
+
ensureCanonicalCopy,
|
|
45
|
+
linkResolvesTo,
|
|
46
|
+
readManagedTarget,
|
|
47
|
+
writeManagedMarker
|
|
48
|
+
} from './canonical-store.mjs';
|
|
49
|
+
|
|
50
|
+
/** Codes that mean "this host refused to create the link", not "the link is wrong". */
|
|
51
|
+
const LINK_REFUSED_CODES = new Set(['EPERM', 'EACCES', 'UNKNOWN', 'ENOTSUP', 'EINVAL']);
|
|
52
|
+
|
|
53
|
+
/** The `kind` each family wrote into its pre-canonical-store JSON sidecar. */
|
|
54
|
+
const LEGACY_MARKER_KIND = Object.freeze({ agents: 'agent', 'output-styles': 'output-style' });
|
|
55
|
+
|
|
56
|
+
/** Scratch prefix for the atomic copy; never a valid asset name (assets start with a letter). */
|
|
57
|
+
const TEMP_PREFIX = '.peaks-tmp-';
|
|
58
|
+
|
|
59
|
+
function getPathStats(path) {
|
|
60
|
+
try {
|
|
61
|
+
return lstatSync(path);
|
|
62
|
+
} catch {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/** `\\?\C:\x` and `\\?\UNC\srv\share` are spellings of a path, not other paths. */
|
|
68
|
+
function stripLongPathPrefix(value) {
|
|
69
|
+
const uncPrefix = '\\\\?\\UNC\\';
|
|
70
|
+
if (value.startsWith(uncPrefix)) return `\\\\${value.slice(uncPrefix.length)}`;
|
|
71
|
+
const prefix = '\\\\?\\';
|
|
72
|
+
return value.startsWith(prefix) ? value.slice(prefix.length) : value;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/** The resolved, case-folded identity of a path, or null when it does not resolve. */
|
|
76
|
+
function resolveIdentity(path) {
|
|
77
|
+
let resolved;
|
|
78
|
+
try {
|
|
79
|
+
resolved = realpathSync(path);
|
|
80
|
+
} catch {
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
const normalized = stripLongPathPrefix(resolved);
|
|
84
|
+
return process.platform === 'win32' ? normalized.toLowerCase() : normalized;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/** Does the recorded provenance TEXT name the canonical entry? Realpath on both sides. */
|
|
88
|
+
function provenanceNamesCanonicalPath(recorded, canonicalPath) {
|
|
89
|
+
if (typeof recorded !== 'string' || recorded.length === 0) return false;
|
|
90
|
+
const recordedIdentity = resolveIdentity(recorded);
|
|
91
|
+
const canonicalIdentity = resolveIdentity(canonicalPath);
|
|
92
|
+
return recordedIdentity !== null && recordedIdentity === canonicalIdentity;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* The sidecar shape written before the canonical store existed: JSON naming the
|
|
97
|
+
* package path the file was copied from, plus a content hash. Parsed, never trusted.
|
|
98
|
+
*/
|
|
99
|
+
function parseLegacyMarker(recorded) {
|
|
100
|
+
if (typeof recorded !== 'string' || !recorded.startsWith('{')) return null;
|
|
101
|
+
try {
|
|
102
|
+
const marker = JSON.parse(recorded);
|
|
103
|
+
const assetName = marker?.agentName ?? marker?.outputStyleName;
|
|
104
|
+
if (marker?.version !== 1 || typeof marker.kind !== 'string') return null;
|
|
105
|
+
if (typeof assetName !== 'string' || typeof marker.sourcePath !== 'string') return null;
|
|
106
|
+
return { kind: marker.kind, assetName, sourcePath: marker.sourcePath };
|
|
107
|
+
} catch {
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/** A link is ours when it points at the canonical copy, or when it points at nothing. */
|
|
113
|
+
function isOwnedLink(entryPath, canonicalPath, recorded) {
|
|
114
|
+
if (linkResolvesTo(entryPath, canonicalPath)) return true;
|
|
115
|
+
if (!existsSync(entryPath)) return true;
|
|
116
|
+
return recorded !== null && linkResolvesTo(entryPath, recorded);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* The LEGACY arm of the ownership test, and the fix for the freeze this slice exists
|
|
121
|
+
* to close. A recorded package path is a version-scoped fact, so it can only be
|
|
122
|
+
* describing one of two things, and BOTH of them are ours:
|
|
123
|
+
*
|
|
124
|
+
* a recorded path that NO LONGER RESOLVES — an earlier peaks-loop install, whose
|
|
125
|
+
* package has since been replaced or removed. This is the arm the old code
|
|
126
|
+
* lacked entirely: it demanded string equality with the path of the version
|
|
127
|
+
* installing RIGHT NOW, so from the first `npm i -g peaks-loop@latest` onward
|
|
128
|
+
* the comparison was false and stayed false, freezing the agent with no error.
|
|
129
|
+
* a recorded path that IS the package we are installing from — the in-place upgrade
|
|
130
|
+
* (`npm i -g` replacing the same directory). Here the old string comparison was
|
|
131
|
+
* TRUE, but the code still skipped: it only reached the rewrite branch when the
|
|
132
|
+
* content hash MATCHED (`getManagedPeaksAgentIdentity` returns null on any hash
|
|
133
|
+
* difference), so it rewrote identical bytes and skipped every real upgrade —
|
|
134
|
+
* the opposite of the "SHA differs → overwrite" its own comment promised.
|
|
135
|
+
*
|
|
136
|
+
* A recorded path that resolves to some OTHER live package stays untouched: that is a
|
|
137
|
+
* second installation, not a stale one, and taking it over would be a regression.
|
|
138
|
+
* Compared through `resolveIdentity` — realpath, `\\?\` stripped, case-folded — never
|
|
139
|
+
* by string: two spellings of the same path are one path, and the s2 slice already paid
|
|
140
|
+
* for that lesson.
|
|
141
|
+
*/
|
|
142
|
+
function isOwnedLegacyEntry({ kind, name, legacy, sourcePath }) {
|
|
143
|
+
if (legacy === null) return false;
|
|
144
|
+
if (legacy.kind !== LEGACY_MARKER_KIND[kind]) return false;
|
|
145
|
+
if (legacy.assetName !== name) return false;
|
|
146
|
+
const recordedIdentity = resolveIdentity(legacy.sourcePath);
|
|
147
|
+
if (recordedIdentity === null) return true;
|
|
148
|
+
return recordedIdentity === resolveIdentity(sourcePath);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* May peaks-loop replace or delete `entryPath`? A real directory, a foreign link and a
|
|
153
|
+
* file with no sidecar are all "no".
|
|
154
|
+
*
|
|
155
|
+
* A LINK — ours when it resolves to the canonical copy, when it DANGLES (a link whose
|
|
156
|
+
* target is gone is still a link we wrote), or when the sidecar's recorded
|
|
157
|
+
* path is what it resolves to. Identity is `realpath`, never the string:
|
|
158
|
+
* `\\?\` prefixes and case spellings differ from call to call.
|
|
159
|
+
* A FILE — ours when the sidecar beside it says so: either it names the canonical
|
|
160
|
+
* path (what this module writes), or it is the legacy shape above.
|
|
161
|
+
*/
|
|
162
|
+
function isOwnedFileEntry({ entryPath, canonicalPath, kind, name, sourcePath, recorded }) {
|
|
163
|
+
const stats = getPathStats(entryPath);
|
|
164
|
+
if (!stats) return false;
|
|
165
|
+
if (stats.isSymbolicLink()) return isOwnedLink(entryPath, canonicalPath, recorded);
|
|
166
|
+
if (recorded === null) return false;
|
|
167
|
+
if (provenanceNamesCanonicalPath(recorded, canonicalPath)) return true;
|
|
168
|
+
return isOwnedLegacyEntry({ kind, name, legacy: parseLegacyMarker(recorded), sourcePath });
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/** True when `entryPath` already holds exactly the bytes the canonical copy holds. */
|
|
172
|
+
function holdsCanonicalBytes(entryPath, canonicalPath) {
|
|
173
|
+
try {
|
|
174
|
+
return readFileSync(entryPath).equals(readFileSync(canonicalPath));
|
|
175
|
+
} catch {
|
|
176
|
+
return false;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* What is at the entry path right now, as one of four verdicts the caller acts on:
|
|
182
|
+
* `absent` (write a link or the fallback copy), `foreign` (leave it alone), `copy` (a
|
|
183
|
+
* real copy WE wrote on a host that refused a link, already current) or `ours` (ours,
|
|
184
|
+
* but not the link we want — replace it). `stats` tells "link" from "repair".
|
|
185
|
+
*/
|
|
186
|
+
function existingEntryVerdict({ entryPath, canonicalPath, kind, name, sourcePath }) {
|
|
187
|
+
const stats = getPathStats(entryPath);
|
|
188
|
+
if (stats === null) return { stats: null, verdict: 'absent' };
|
|
189
|
+
const recorded = readManagedTarget(entryPath);
|
|
190
|
+
if (!isOwnedFileEntry({ entryPath, canonicalPath, kind, name, sourcePath, recorded })) {
|
|
191
|
+
return { stats, verdict: 'foreign' };
|
|
192
|
+
}
|
|
193
|
+
const settled =
|
|
194
|
+
!stats.isSymbolicLink() &&
|
|
195
|
+
provenanceNamesCanonicalPath(recorded, canonicalPath) &&
|
|
196
|
+
holdsCanonicalBytes(entryPath, canonicalPath);
|
|
197
|
+
return { stats, verdict: settled ? 'copy' : 'ours' };
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/** Write the canonical bytes beside the entry and swap them in, so no reader sees half. */
|
|
201
|
+
function writeRealCopy(canonicalPath, entryPath) {
|
|
202
|
+
mkdirSync(dirname(entryPath), { recursive: true });
|
|
203
|
+
const tempPath = `${entryPath}${TEMP_PREFIX}${randomUUID()}`;
|
|
204
|
+
writeFileSync(tempPath, readFileSync(canonicalPath));
|
|
205
|
+
renameSync(tempPath, entryPath);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
/** A settled fallback copy: nothing to fix, but the degradation must still be visible. */
|
|
209
|
+
function settledCopyResult({ copied, entryPath }) {
|
|
210
|
+
return {
|
|
211
|
+
...copied,
|
|
212
|
+
linkAction: 'copied',
|
|
213
|
+
fallback: {
|
|
214
|
+
mode: 'copy',
|
|
215
|
+
code: null,
|
|
216
|
+
reason: `${entryPath} is a real copy: this host refused the symlink on an earlier run`
|
|
217
|
+
}
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
/**
|
|
222
|
+
* Replace whatever is at the entry path with a link to `copied.canonicalPath` — or,
|
|
223
|
+
* when this host refuses the link, with a real copy plus a reported reason.
|
|
224
|
+
*/
|
|
225
|
+
function linkOrCopyEntry({ copied, linkPath, current, createFileLink }) {
|
|
226
|
+
if (current !== null) {
|
|
227
|
+
unlinkSync(linkPath);
|
|
228
|
+
const markerPath = `${linkPath}${MANAGED_MARKER_SUFFIX}`;
|
|
229
|
+
if (existsSync(markerPath)) unlinkSync(markerPath);
|
|
230
|
+
}
|
|
231
|
+
mkdirSync(dirname(linkPath), { recursive: true });
|
|
232
|
+
try {
|
|
233
|
+
createFileLink(copied.canonicalPath, linkPath, 'file');
|
|
234
|
+
writeManagedMarker(linkPath, copied.canonicalPath);
|
|
235
|
+
return { ...copied, linkAction: current === null ? 'linked' : 'repaired', fallback: null };
|
|
236
|
+
} catch (error) {
|
|
237
|
+
const code = error?.code;
|
|
238
|
+
if (!LINK_REFUSED_CODES.has(code)) throw error;
|
|
239
|
+
writeRealCopy(copied.canonicalPath, linkPath);
|
|
240
|
+
// Provenance records the CANONICAL path even here, so a later run recognises the
|
|
241
|
+
// copy as ours and keeps it current instead of reading it as user-authored.
|
|
242
|
+
writeManagedMarker(linkPath, copied.canonicalPath);
|
|
243
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
244
|
+
return {
|
|
245
|
+
...copied,
|
|
246
|
+
linkAction: 'copied',
|
|
247
|
+
fallback: {
|
|
248
|
+
mode: 'copy',
|
|
249
|
+
code: code ?? null,
|
|
250
|
+
reason: `${linkPath} could not be linked: ${message}`
|
|
251
|
+
}
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* Store one single-file asset canonically, then point the IDE entry at that copy —
|
|
258
|
+
* a symlink when the host allows one, a real copy when it does not.
|
|
259
|
+
*
|
|
260
|
+
* @param {{
|
|
261
|
+
* kind: 'agents' | 'output-styles',
|
|
262
|
+
* name: string,
|
|
263
|
+
* sourcePath: string,
|
|
264
|
+
* linkPath?: string,
|
|
265
|
+
* createFileLink?: (target: string, path: string, type: string) => void
|
|
266
|
+
* }} options
|
|
267
|
+
* `createFileLink` exists so the refused-symlink arm can be MEASURED on a host where
|
|
268
|
+
* symlinks are permitted (this one). Without it the fallback branch would be
|
|
269
|
+
* unreachable in the test suite, and an unverified branch is an unverified claim.
|
|
270
|
+
* Defaults to `fs.symlinkSync`.
|
|
271
|
+
*/
|
|
272
|
+
export function reconcileCanonicalFileEntry(options) {
|
|
273
|
+
const { kind, name, sourcePath, linkPath } = options;
|
|
274
|
+
const copied = ensureCanonicalCopy({ kind, name, sourcePath });
|
|
275
|
+
const skipped = { ...copied, linkAction: 'skipped', fallback: null };
|
|
276
|
+
if (copied.action === 'unmanaged') return skipped;
|
|
277
|
+
if (typeof linkPath !== 'string' || linkPath.length === 0) return skipped;
|
|
278
|
+
if (linkResolvesTo(linkPath, copied.canonicalPath)) {
|
|
279
|
+
return { ...copied, linkAction: 'unchanged', fallback: null };
|
|
280
|
+
}
|
|
281
|
+
const entry = existingEntryVerdict({
|
|
282
|
+
entryPath: linkPath,
|
|
283
|
+
canonicalPath: copied.canonicalPath,
|
|
284
|
+
kind,
|
|
285
|
+
name,
|
|
286
|
+
sourcePath
|
|
287
|
+
});
|
|
288
|
+
if (entry.verdict === 'foreign') return skipped;
|
|
289
|
+
if (entry.verdict === 'copy') return settledCopyResult({ copied, entryPath: linkPath });
|
|
290
|
+
return linkOrCopyEntry({
|
|
291
|
+
copied,
|
|
292
|
+
linkPath,
|
|
293
|
+
current: entry.stats,
|
|
294
|
+
createFileLink: options.createFileLink ?? symlinkSync
|
|
295
|
+
});
|
|
296
|
+
}
|