peaks-loop 4.1.2 → 4.1.3
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/.claude-plugin/marketplace.json +136 -47
- package/CHANGELOG.md +56 -0
- package/README-en.md +1 -1
- package/README.md +1 -1
- package/contracts/readonly-argv-whitelist.json +211 -0
- package/dist/cli/commands/audit-artifact-runners.d.ts +16 -0
- package/dist/cli/commands/audit-artifact-runners.js +170 -0
- package/dist/cli/commands/audit-command-shared.d.ts +97 -0
- package/dist/cli/commands/audit-command-shared.js +60 -0
- package/dist/cli/commands/audit-commands.d.ts +7 -31
- package/dist/cli/commands/audit-commands.js +64 -473
- package/dist/cli/commands/audit-goal-runners.d.ts +17 -0
- package/dist/cli/commands/audit-goal-runners.js +114 -0
- package/dist/cli/commands/audit-red-lines-runners.d.ts +11 -0
- package/dist/cli/commands/audit-red-lines-runners.js +43 -0
- package/dist/cli/commands/audit-refusal-data.d.ts +23 -0
- package/dist/cli/commands/audit-refusal-data.js +69 -0
- package/dist/cli/commands/audit-static-runners.d.ts +13 -0
- package/dist/cli/commands/audit-static-runners.js +139 -0
- package/dist/cli/commands/await-runners.d.ts +11 -0
- package/dist/cli/commands/await-runners.js +148 -0
- package/dist/cli/commands/code-auto-compact-command.d.ts +3 -0
- package/dist/cli/commands/code-auto-compact-command.js +124 -0
- package/dist/cli/commands/code-auto-compact-envelope.d.ts +22 -0
- package/dist/cli/commands/code-auto-compact-envelope.js +39 -0
- package/dist/cli/commands/code-context-audit-command.d.ts +3 -0
- package/dist/cli/commands/code-context-audit-command.js +68 -0
- package/dist/cli/commands/code-context-now-command.d.ts +3 -0
- package/dist/cli/commands/code-context-now-command.js +124 -0
- package/dist/cli/commands/code-context-now-envelope.d.ts +66 -0
- package/dist/cli/commands/code-context-now-envelope.js +136 -0
- package/dist/cli/commands/code-context-now-mapping.d.ts +27 -0
- package/dist/cli/commands/code-context-now-mapping.js +43 -0
- package/dist/cli/commands/code-emit-handoff-command.d.ts +3 -0
- package/dist/cli/commands/code-emit-handoff-command.js +99 -0
- package/dist/cli/commands/code-gate-step-08-command.d.ts +3 -0
- package/dist/cli/commands/code-gate-step-08-command.js +139 -0
- package/dist/cli/commands/code-post-compact-detect-command.d.ts +3 -0
- package/dist/cli/commands/code-post-compact-detect-command.js +50 -0
- package/dist/cli/commands/code-runtime-commands.d.ts +9 -43
- package/dist/cli/commands/code-runtime-commands.js +20 -672
- package/dist/cli/commands/code-runtime-session.d.ts +1 -0
- package/dist/cli/commands/code-runtime-session.js +15 -0
- package/dist/cli/commands/compact-command.d.ts +6 -2
- package/dist/cli/commands/compact-command.js +12 -559
- package/dist/cli/commands/compact-dry-run-command.d.ts +3 -0
- package/dist/cli/commands/compact-dry-run-command.js +87 -0
- package/dist/cli/commands/compact-force-command.d.ts +3 -0
- package/dist/cli/commands/compact-force-command.js +98 -0
- package/dist/cli/commands/compact-harness-window-command.d.ts +3 -0
- package/dist/cli/commands/compact-harness-window-command.js +174 -0
- package/dist/cli/commands/compact-history-command.d.ts +3 -0
- package/dist/cli/commands/compact-history-command.js +89 -0
- package/dist/cli/commands/compact-read-commands.d.ts +3 -0
- package/dist/cli/commands/compact-read-commands.js +123 -0
- package/dist/cli/commands/compact-settle-command.d.ts +3 -0
- package/dist/cli/commands/compact-settle-command.js +130 -0
- package/dist/cli/commands/compact-shared.d.ts +9 -0
- package/dist/cli/commands/compact-shared.js +26 -0
- package/dist/cli/commands/core/skill-command.d.ts +1 -44
- package/dist/cli/commands/core/skill-command.js +13 -541
- package/dist/cli/commands/core/skill-context-verdict.d.ts +38 -0
- package/dist/cli/commands/core/skill-context-verdict.js +63 -0
- package/dist/cli/commands/core/skill-generated-config-notice.d.ts +41 -0
- package/dist/cli/commands/core/skill-generated-config-notice.js +75 -0
- package/dist/cli/commands/core/skill-heartbeat-commands.d.ts +3 -0
- package/dist/cli/commands/core/skill-heartbeat-commands.js +50 -0
- package/dist/cli/commands/core/skill-presence-commands.d.ts +3 -0
- package/dist/cli/commands/core/skill-presence-commands.js +123 -0
- package/dist/cli/commands/core/skill-presence-housekeeping-commands.d.ts +3 -0
- package/dist/cli/commands/core/skill-presence-housekeeping-commands.js +165 -0
- package/dist/cli/commands/core/skill-registry-commands.d.ts +3 -0
- package/dist/cli/commands/core/skill-registry-commands.js +117 -0
- package/dist/cli/commands/core/skill-runbook-command.d.ts +3 -0
- package/dist/cli/commands/core/skill-runbook-command.js +29 -0
- package/dist/cli/commands/dispatch-command-spec.d.ts +2 -0
- package/dist/cli/commands/dispatch-command-spec.js +62 -0
- package/dist/cli/commands/dispatch-commands.js +159 -775
- package/dist/cli/commands/dispatch-detached-branch.d.ts +3 -0
- package/dist/cli/commands/dispatch-detached-branch.js +58 -0
- package/dist/cli/commands/dispatch-envelope.d.ts +36 -0
- package/dist/cli/commands/dispatch-envelope.js +104 -0
- package/dist/cli/commands/dispatch-isolation-lease.d.ts +17 -0
- package/dist/cli/commands/dispatch-isolation-lease.js +149 -0
- package/dist/cli/commands/dispatch-preflight.d.ts +7 -0
- package/dist/cli/commands/dispatch-preflight.js +105 -0
- package/dist/cli/commands/dispatch-prompt-blocks.d.ts +10 -0
- package/dist/cli/commands/dispatch-prompt-blocks.js +56 -0
- package/dist/cli/commands/dispatch-prompt-composition.d.ts +30 -0
- package/dist/cli/commands/dispatch-prompt-composition.js +171 -0
- package/dist/cli/commands/dispatch-record-write.d.ts +24 -0
- package/dist/cli/commands/dispatch-record-write.js +96 -0
- package/dist/cli/commands/dispatch-tool-call.d.ts +15 -0
- package/dist/cli/commands/dispatch-tool-call.js +128 -0
- package/dist/cli/commands/evolution-command-shared.d.ts +78 -0
- package/dist/cli/commands/evolution-command-shared.js +107 -0
- package/dist/cli/commands/evolution-commands.d.ts +11 -1
- package/dist/cli/commands/evolution-commands.js +19 -350
- package/dist/cli/commands/evolution-evaluate-command.d.ts +24 -0
- package/dist/cli/commands/evolution-evaluate-command.js +138 -0
- package/dist/cli/commands/evolution-propose-command.d.ts +23 -0
- package/dist/cli/commands/evolution-propose-command.js +145 -0
- package/dist/cli/commands/evolution-status-command.d.ts +17 -0
- package/dist/cli/commands/evolution-status-command.js +41 -0
- package/dist/cli/commands/evolution-verdict-commands.d.ts +30 -0
- package/dist/cli/commands/evolution-verdict-commands.js +100 -0
- package/dist/cli/commands/finalize-accumulator.d.ts +44 -0
- package/dist/cli/commands/finalize-accumulator.js +55 -0
- package/dist/cli/commands/finalize-branches.d.ts +34 -0
- package/dist/cli/commands/finalize-branches.js +119 -0
- package/dist/cli/commands/finalize-runners.d.ts +3 -0
- package/dist/cli/commands/finalize-runners.js +92 -0
- package/dist/cli/commands/finalize-selection.d.ts +65 -0
- package/dist/cli/commands/finalize-selection.js +35 -0
- package/dist/cli/commands/gate-commands.js +26 -8
- package/dist/cli/commands/job-checkpoint-commands.d.ts +3 -0
- package/dist/cli/commands/job-checkpoint-commands.js +157 -0
- package/dist/cli/commands/job-command-shared.d.ts +109 -0
- package/dist/cli/commands/job-command-shared.js +72 -0
- package/dist/cli/commands/job-commands.d.ts +4 -64
- package/dist/cli/commands/job-commands.js +42 -552
- package/dist/cli/commands/job-cost-check-command.d.ts +3 -0
- package/dist/cli/commands/job-cost-check-command.js +41 -0
- package/dist/cli/commands/job-init-status-commands.d.ts +3 -0
- package/dist/cli/commands/job-init-status-commands.js +149 -0
- package/dist/cli/commands/job-run-commands.d.ts +3 -0
- package/dist/cli/commands/job-run-commands.js +97 -0
- package/dist/cli/commands/job-state-root.d.ts +35 -0
- package/dist/cli/commands/job-state-root.js +76 -0
- package/dist/cli/commands/loop-eval-capture-index.d.ts +4 -0
- package/dist/cli/commands/loop-eval-capture-index.js +44 -0
- package/dist/cli/commands/loop-eval-commands.d.ts +8 -5
- package/dist/cli/commands/loop-eval-commands.js +12 -626
- package/dist/cli/commands/loop-eval-eval-command.d.ts +3 -0
- package/dist/cli/commands/loop-eval-eval-command.js +168 -0
- package/dist/cli/commands/loop-eval-monotonic-command.d.ts +3 -0
- package/dist/cli/commands/loop-eval-monotonic-command.js +90 -0
- package/dist/cli/commands/loop-eval-parents.d.ts +7 -0
- package/dist/cli/commands/loop-eval-parents.js +20 -0
- package/dist/cli/commands/loop-eval-run-code.d.ts +7 -0
- package/dist/cli/commands/loop-eval-run-code.js +40 -0
- package/dist/cli/commands/loop-eval-run-command.d.ts +3 -0
- package/dist/cli/commands/loop-eval-run-command.js +113 -0
- package/dist/cli/commands/loop-eval-spec-commands.d.ts +3 -0
- package/dist/cli/commands/loop-eval-spec-commands.js +165 -0
- package/dist/cli/commands/loop-eval-spec-lint-command.d.ts +3 -0
- package/dist/cli/commands/loop-eval-spec-lint-command.js +42 -0
- package/dist/cli/commands/loop-eval-workflow-commands.d.ts +3 -0
- package/dist/cli/commands/loop-eval-workflow-commands.js +141 -0
- package/dist/cli/commands/mcp-commands.d.ts +10 -0
- package/dist/cli/commands/mcp-commands.js +157 -0
- package/dist/cli/commands/request-command-options.d.ts +49 -0
- package/dist/cli/commands/request-command-options.js +1 -0
- package/dist/cli/commands/request-commands.d.ts +3 -9
- package/dist/cli/commands/request-commands.js +17 -522
- package/dist/cli/commands/request-init-command.d.ts +3 -0
- package/dist/cli/commands/request-init-command.js +100 -0
- package/dist/cli/commands/request-lint-command.d.ts +3 -0
- package/dist/cli/commands/request-lint-command.js +50 -0
- package/dist/cli/commands/request-list-command.d.ts +10 -0
- package/dist/cli/commands/request-list-command.js +53 -0
- package/dist/cli/commands/request-repair-status-command.d.ts +3 -0
- package/dist/cli/commands/request-repair-status-command.js +61 -0
- package/dist/cli/commands/request-show-command.d.ts +3 -0
- package/dist/cli/commands/request-show-command.js +56 -0
- package/dist/cli/commands/request-transition-command.d.ts +3 -0
- package/dist/cli/commands/request-transition-command.js +122 -0
- package/dist/cli/commands/request-transition-failures.d.ts +8 -0
- package/dist/cli/commands/request-transition-failures.js +90 -0
- package/dist/cli/commands/request-transition-hooks.d.ts +50 -0
- package/dist/cli/commands/request-transition-hooks.js +115 -0
- package/dist/cli/commands/request-transition-preflight.d.ts +10 -0
- package/dist/cli/commands/request-transition-preflight.js +107 -0
- package/dist/cli/commands/scan-command-shared.d.ts +96 -0
- package/dist/cli/commands/scan-command-shared.js +83 -0
- package/dist/cli/commands/scan-commands.d.ts +3 -2
- package/dist/cli/commands/scan-commands.js +23 -463
- package/dist/cli/commands/scan-inventory-commands.d.ts +3 -0
- package/dist/cli/commands/scan-inventory-commands.js +96 -0
- package/dist/cli/commands/scan-project-commands.d.ts +3 -0
- package/dist/cli/commands/scan-project-commands.js +65 -0
- package/dist/cli/commands/scan-scope-commands.d.ts +3 -0
- package/dist/cli/commands/scan-scope-commands.js +149 -0
- package/dist/cli/commands/scan-scope-helpers.d.ts +8 -0
- package/dist/cli/commands/scan-scope-helpers.js +54 -0
- package/dist/cli/commands/scan-structural-commands.d.ts +3 -0
- package/dist/cli/commands/scan-structural-commands.js +113 -0
- package/dist/cli/commands/share-commands.d.ts +12 -68
- package/dist/cli/commands/share-commands.js +47 -556
- package/dist/cli/commands/share-error-hints.d.ts +14 -0
- package/dist/cli/commands/share-error-hints.js +38 -0
- package/dist/cli/commands/share-identity.d.ts +13 -0
- package/dist/cli/commands/share-identity.js +22 -0
- package/dist/cli/commands/share-record-paths.d.ts +37 -0
- package/dist/cli/commands/share-record-paths.js +68 -0
- package/dist/cli/commands/share-runners.d.ts +3 -0
- package/dist/cli/commands/share-runners.js +158 -0
- package/dist/cli/commands/shared-read-runners.d.ts +3 -0
- package/dist/cli/commands/shared-read-runners.js +51 -0
- package/dist/cli/commands/slice-check-command.d.ts +3 -0
- package/dist/cli/commands/slice-check-command.js +54 -0
- package/dist/cli/commands/slice-commands.d.ts +2 -22
- package/dist/cli/commands/slice-commands.js +18 -517
- package/dist/cli/commands/slice-decompose-artifacts.d.ts +18 -0
- package/dist/cli/commands/slice-decompose-artifacts.js +79 -0
- package/dist/cli/commands/slice-decompose-command.d.ts +3 -0
- package/dist/cli/commands/slice-decompose-command.js +123 -0
- package/dist/cli/commands/slice-list-commands.d.ts +3 -0
- package/dist/cli/commands/slice-list-commands.js +182 -0
- package/dist/cli/commands/slice-pick-command.d.ts +3 -0
- package/dist/cli/commands/slice-pick-command.js +60 -0
- package/dist/cli/commands/slice-plan-command.d.ts +24 -0
- package/dist/cli/commands/slice-plan-command.js +111 -0
- package/dist/cli/commands/workflow-commands.d.ts +10 -1
- package/dist/cli/commands/workflow-commands.js +6 -594
- package/dist/cli/commands/workflow-gate-commands.d.ts +3 -0
- package/dist/cli/commands/workflow-gate-commands.js +116 -0
- package/dist/cli/commands/workflow-plan-helpers.d.ts +48 -0
- package/dist/cli/commands/workflow-plan-helpers.js +103 -0
- package/dist/cli/commands/workflow-planning-commands.d.ts +3 -0
- package/dist/cli/commands/workflow-planning-commands.js +56 -0
- package/dist/cli/commands/workflow-swarm-actions.d.ts +7 -0
- package/dist/cli/commands/workflow-swarm-actions.js +109 -0
- package/dist/cli/commands/workflow-swarm-commands.d.ts +3 -0
- package/dist/cli/commands/workflow-swarm-commands.js +138 -0
- package/dist/cli/commands/workflow-tech-actions.d.ts +10 -0
- package/dist/cli/commands/workflow-tech-actions.js +150 -0
- package/dist/cli/commands/workspace/init-actions.d.ts +10 -0
- package/dist/cli/commands/workspace/init-actions.js +199 -0
- package/dist/cli/commands/workspace/init-codegraph-stake.d.ts +10 -0
- package/dist/cli/commands/workspace/init-codegraph-stake.js +54 -0
- package/dist/cli/commands/workspace/init-command.d.ts +8 -124
- package/dist/cli/commands/workspace/init-command.js +59 -623
- package/dist/cli/commands/workspace/init-context.d.ts +58 -0
- package/dist/cli/commands/workspace/init-context.js +121 -0
- package/dist/cli/commands/workspace/init-envelope.d.ts +3 -0
- package/dist/cli/commands/workspace/init-envelope.js +34 -0
- package/dist/cli/commands/workspace/init-failures.d.ts +3 -0
- package/dist/cli/commands/workspace/init-failures.js +84 -0
- package/dist/cli/commands/workspace/init-hooks-decision.d.ts +24 -0
- package/dist/cli/commands/workspace/init-hooks-decision.js +189 -0
- package/dist/cli/commands/workspace/init-options.d.ts +102 -0
- package/dist/cli/commands/workspace/init-options.js +1 -0
- package/dist/cli/commands/worktree-lease-commands.d.ts +10 -6
- package/dist/cli/commands/worktree-lease-commands.js +42 -512
- package/dist/cli/commands/worktree-lease-gc-command.d.ts +12 -0
- package/dist/cli/commands/worktree-lease-gc-command.js +117 -0
- package/dist/cli/commands/worktree-lease-git.d.ts +22 -0
- package/dist/cli/commands/worktree-lease-git.js +48 -0
- package/dist/cli/commands/worktree-lease-list-command.d.ts +12 -0
- package/dist/cli/commands/worktree-lease-list-command.js +100 -0
- package/dist/cli/commands/worktree-lease-load.d.ts +37 -0
- package/dist/cli/commands/worktree-lease-load.js +28 -0
- package/dist/cli/commands/worktree-lease-release-command.d.ts +13 -0
- package/dist/cli/commands/worktree-lease-release-command.js +105 -0
- package/dist/cli/commands/worktree-lease-renew-command.d.ts +11 -0
- package/dist/cli/commands/worktree-lease-renew-command.js +99 -0
- package/dist/cli/commands/worktree-lease-session.d.ts +22 -0
- package/dist/cli/commands/worktree-lease-session.js +29 -0
- package/dist/cli/commands/worktree-lease-spawn-command.d.ts +11 -0
- package/dist/cli/commands/worktree-lease-spawn-command.js +119 -0
- package/dist/cli/commands/worktree-lease-status-command.d.ts +11 -0
- package/dist/cli/commands/worktree-lease-status-command.js +86 -0
- package/dist/cli/commands/worktree-lease-store.d.ts +19 -0
- package/dist/cli/commands/worktree-lease-store.js +24 -0
- package/dist/cli/program.js +5 -0
- package/dist/services/distribution/mcp-install-runner.d.ts +21 -0
- package/dist/services/distribution/mcp-install-runner.js +59 -0
- package/dist/services/distribution/mcp-install.d.ts +95 -0
- package/dist/services/distribution/mcp-install.js +179 -0
- package/dist/services/distribution/plugin-manifest.d.ts +97 -0
- package/dist/services/distribution/plugin-manifest.js +126 -0
- package/dist/services/hooks/mcp-surface-gate.d.ts +19 -0
- package/dist/services/hooks/mcp-surface-gate.js +87 -0
- package/dist/services/ide/adapters/claude-code-adapter.d.ts +4 -35
- package/dist/services/ide/adapters/claude-code-adapter.js +48 -171
- package/dist/services/ide/adapters/claude-code-local-state.d.ts +28 -0
- package/dist/services/ide/adapters/claude-code-local-state.js +112 -0
- package/dist/services/ide/adapters/claude-code-model-window.d.ts +37 -0
- package/dist/services/ide/adapters/claude-code-model-window.js +113 -0
- package/dist/services/ide/ide-mcp-install-types.d.ts +78 -0
- package/dist/services/ide/ide-mcp-install-types.js +104 -0
- package/dist/services/ide/ide-types.d.ts +45 -1
- package/dist/services/ide/mcp-tool-matcher.d.ts +34 -0
- package/dist/services/ide/mcp-tool-matcher.js +84 -0
- package/dist/services/lint/npx-resolver.js +7 -0
- package/dist/services/mcp/cli-executor.d.ts +36 -0
- package/dist/services/mcp/cli-executor.js +97 -0
- package/dist/services/mcp/json-rpc.d.ts +81 -0
- package/dist/services/mcp/json-rpc.js +116 -0
- package/dist/services/mcp/memory-tool.d.ts +3 -0
- package/dist/services/mcp/memory-tool.js +62 -0
- package/dist/services/mcp/server-main.d.ts +1 -0
- package/dist/services/mcp/server-main.js +66 -0
- package/dist/services/mcp/server.d.ts +22 -0
- package/dist/services/mcp/server.js +152 -0
- package/dist/services/mcp/surface.d.ts +62 -0
- package/dist/services/mcp/surface.js +198 -0
- package/dist/services/mcp/tool-core.d.ts +42 -0
- package/dist/services/mcp/tool-core.js +137 -0
- package/dist/services/mcp/tools.d.ts +13 -0
- package/dist/services/mcp/tools.js +58 -0
- package/dist/services/readonly-surface/argv-guard.d.ts +32 -0
- package/dist/services/readonly-surface/argv-guard.js +164 -0
- package/dist/services/readonly-surface/readonly-whitelist.d.ts +147 -0
- package/dist/services/readonly-surface/readonly-whitelist.js +107 -0
- package/dist/services/readonly-surface/whitelist-generator.d.ts +64 -0
- package/dist/services/readonly-surface/whitelist-generator.js +212 -0
- package/dist/services/skills/hooks-codegate-superpowers.d.ts +1 -0
- package/dist/services/skills/hooks-codegate-superpowers.js +26 -0
- package/dist/services/skills/hooks-settings-service.js +10 -2
- package/package.json +17 -6
- package/scripts/install-skills-bundles.mjs +233 -0
- package/scripts/install-skills-fs.mjs +148 -0
- package/scripts/install-skills-ide.mjs +279 -0
- package/scripts/install-skills-output-style-default.mjs +196 -0
- package/scripts/install-skills-output-styles.mjs +121 -0
- package/scripts/install-skills-report.mjs +42 -0
- package/scripts/install-skills-user-config.mjs +198 -0
- package/scripts/install-skills.mjs +36 -1066
- package/scripts/watch-tree.mjs +140 -0
- package/scripts/watch.mjs +4 -126
- package/skills/peaks-status/SKILL.md +31 -13
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { resolveCanonicalProjectRoot } from '../../services/config/config-service.js';
|
|
2
|
+
import { findProjectRoot } from '../../services/config/config-safety.js';
|
|
3
|
+
import { fail, ok, getErrorMessage } from 'peaks-loop-shared/result';
|
|
4
|
+
import { addJsonOption, printResult } from '../cli-helpers.js';
|
|
5
|
+
import { readSessionIdFromHookPayload, readTriggerFromHookPayload, settleCompactFromHarnessEvent } from '../../services/code/compact-event-settle.js';
|
|
6
|
+
import { resolveSessionId } from './compact-shared.js';
|
|
7
|
+
const COMPACT_SETTLE_DESCRIPTION = 'PostCompact hook handler: settle the open compact run because the HARNESS reported a ' +
|
|
8
|
+
'compaction completed, and append an `observed` compact-history row carrying the ' +
|
|
9
|
+
'harness-reported trigger (manual | auto). Reads the hook JSON on stdin; prints nothing ' +
|
|
10
|
+
'and exits 0 when run by the hook. Pass --json for the diagnostic envelope.';
|
|
11
|
+
/**
|
|
12
|
+
* Read the `PostCompact` hook payload from stdin.
|
|
13
|
+
*
|
|
14
|
+
* `PEAKS_HOOK_STDIN` is the test seam, verbatim the one `peaks gate enforce`
|
|
15
|
+
* uses (`gate-commands.ts`) — the CLI side owns `process.stdin`'s lifecycle, so
|
|
16
|
+
* the reader lives with the command rather than in the service.
|
|
17
|
+
*
|
|
18
|
+
* Returns `null` for every shape that is not a JSON object: empty stdin, a TTY
|
|
19
|
+
* (the `--json` diagnostic path run by a human), malformed JSON. A payload that
|
|
20
|
+
* cannot be read is not a failure — it is a payload with no `trigger`, which is
|
|
21
|
+
* an input this path is explicitly designed to accept.
|
|
22
|
+
*/
|
|
23
|
+
async function readHookPayload() {
|
|
24
|
+
const override = process.env.PEAKS_HOOK_STDIN;
|
|
25
|
+
let raw;
|
|
26
|
+
if (override !== undefined) {
|
|
27
|
+
raw = override;
|
|
28
|
+
}
|
|
29
|
+
else if (process.stdin.isTTY) {
|
|
30
|
+
raw = '';
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
raw = await new Promise((resolveStdin) => {
|
|
34
|
+
let data = '';
|
|
35
|
+
process.stdin.setEncoding('utf8');
|
|
36
|
+
process.stdin.on('data', (chunk) => {
|
|
37
|
+
data += chunk;
|
|
38
|
+
});
|
|
39
|
+
process.stdin.on('end', () => resolveStdin(data));
|
|
40
|
+
process.stdin.on('error', () => resolveStdin(data));
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
if (raw.trim().length === 0)
|
|
44
|
+
return null;
|
|
45
|
+
try {
|
|
46
|
+
return JSON.parse(raw);
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
// TODO(g2): legacy silent catch — grace: 1 minor release (v2.14.0)
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
function reportCompactSettleSessionFailure(io, error, project) {
|
|
54
|
+
printResult(io, fail('compact.settle', error.code, error.message, { projectRoot: project }, error.nextActions), true);
|
|
55
|
+
}
|
|
56
|
+
function buildCompactSettleNextActions(result) {
|
|
57
|
+
return [
|
|
58
|
+
result.settled
|
|
59
|
+
? result.lifecycleWritten
|
|
60
|
+
? result.historyWritten
|
|
61
|
+
? `Settled run ${result.runId}; appended a kind:'observed' row with pathway 'post-compact-hook'.`
|
|
62
|
+
: `Settled run ${result.runId}, but the kind:'observed' row could NOT be appended — check that .peaks/_runtime/<sid>/ is writable.`
|
|
63
|
+
: `The harness reported a compaction for run ${result.runId}, but the lifecycle record could NOT be written — that run is still open, so a later probe will settle it from its own measurement and append the row then. Nothing was recorded for this event: a row here would assert a settlement the store never made.`
|
|
64
|
+
: result.reason === 'different-session'
|
|
65
|
+
? `The hook payload names a different harness session, so this project's open compact run was left alone.`
|
|
66
|
+
: 'No compact run was open, so nothing was settled and no history row was appended.'
|
|
67
|
+
];
|
|
68
|
+
}
|
|
69
|
+
function reportCompactSettleFailure(io, error) {
|
|
70
|
+
printResult(io, fail('compact.settle', 'COMPACT_SETTLE_FAILED', getErrorMessage(error), {}, [
|
|
71
|
+
'Verify the project path and session binding'
|
|
72
|
+
]), true);
|
|
73
|
+
}
|
|
74
|
+
async function runCompactSettle(options, io) {
|
|
75
|
+
// One parse, two fields: reading stdin twice would let the two readers
|
|
76
|
+
// disagree about the payload they were handed.
|
|
77
|
+
const payload = await readHookPayload();
|
|
78
|
+
const trigger = readTriggerFromHookPayload(payload);
|
|
79
|
+
const hookSessionId = readSessionIdFromHookPayload(payload);
|
|
80
|
+
// The hook path returns before any `process.exitCode` assignment below, so
|
|
81
|
+
// the harness never sees a non-zero exit from this command.
|
|
82
|
+
try {
|
|
83
|
+
const project = options.project !== undefined
|
|
84
|
+
? resolveCanonicalProjectRoot(options.project)
|
|
85
|
+
: (findProjectRoot(process.cwd()) ?? process.cwd());
|
|
86
|
+
const session = resolveSessionId(project, options.sessionId);
|
|
87
|
+
if (session.error !== null) {
|
|
88
|
+
if (options.json !== true)
|
|
89
|
+
return;
|
|
90
|
+
reportCompactSettleSessionFailure(io, session.error, project);
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
const result = settleCompactFromHarnessEvent({
|
|
94
|
+
projectRoot: project,
|
|
95
|
+
sessionId: session.sid,
|
|
96
|
+
trigger,
|
|
97
|
+
hookSessionId
|
|
98
|
+
});
|
|
99
|
+
if (options.json !== true)
|
|
100
|
+
return;
|
|
101
|
+
printResult(io, ok('compact.settle', { projectRoot: project, sessionId: session.sid, trigger: trigger ?? null, ...result }, [], buildCompactSettleNextActions(result)), true);
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
if (options.json !== true)
|
|
105
|
+
return;
|
|
106
|
+
reportCompactSettleFailure(io, error);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
export function registerCompactSettleCommand(compact, io) {
|
|
110
|
+
// 8. peaks compact settle [--json]
|
|
111
|
+
//
|
|
112
|
+
// The `PostCompact` hook's transport. Before this command, peaks-loop knew a
|
|
113
|
+
// compaction had landed only because a LATER probe measured a ratio that had
|
|
114
|
+
// fallen — an inference. This command lets the harness's own event settle the
|
|
115
|
+
// run, and records what the harness said the compaction WAS (`manual` /
|
|
116
|
+
// `auto`), which is the one question a ratio can never answer.
|
|
117
|
+
//
|
|
118
|
+
// STDOUT IS CONTEXT HERE. `PostCompact`'s output contract is truncated in the
|
|
119
|
+
// retrievable docs, so the safe assumption is the `SessionStart` one: stdout
|
|
120
|
+
// is added to the model's context. The hook path therefore prints NOTHING and
|
|
121
|
+
// exits 0 for every outcome — success, no open run, unresolvable session,
|
|
122
|
+
// unparseable stdin. An error sentence in the model's context is a false
|
|
123
|
+
// problem handed to it mid-slice. Same discipline as `session reinject`;
|
|
124
|
+
// `--json` is the diagnostic surface, and the hook never passes it.
|
|
125
|
+
addJsonOption(compact
|
|
126
|
+
.command('settle')
|
|
127
|
+
.description(COMPACT_SETTLE_DESCRIPTION)
|
|
128
|
+
.option('--project <path>', 'project root (defaults to git root or cwd)')
|
|
129
|
+
.option('--session-id <sid>', 'override the active session id (defaults to the canonical binding)')).action((options) => runCompactSettle(options, io));
|
|
130
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** The active session id, or the refusal envelope every caller prints the same way. */
|
|
2
|
+
export declare function resolveSessionId(projectRoot: string, explicit: string | undefined): {
|
|
3
|
+
sid: string | null;
|
|
4
|
+
error: {
|
|
5
|
+
code: string;
|
|
6
|
+
message: string;
|
|
7
|
+
nextActions: string[];
|
|
8
|
+
} | null;
|
|
9
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// The session binding every `peaks compact` subcommand resolves through, on its own so
|
|
2
|
+
// the five commands that read it share one fix point.
|
|
3
|
+
import { getSessionIdCanonical } from '../../services/session/session-manager.js';
|
|
4
|
+
/** The active session id, or the refusal envelope every caller prints the same way. */
|
|
5
|
+
export function resolveSessionId(projectRoot, explicit) {
|
|
6
|
+
if (explicit !== undefined && explicit.length > 0) {
|
|
7
|
+
return { sid: explicit, error: null };
|
|
8
|
+
}
|
|
9
|
+
// Statically-imported `getSessionIdCanonical` (see import block
|
|
10
|
+
// at the top of this file). It is the single source of truth for
|
|
11
|
+
// "what session is bound to this project"; we use it instead of
|
|
12
|
+
// re-implementing the resolution here to keep one fix point when
|
|
13
|
+
// the binding layout changes.
|
|
14
|
+
const sid = getSessionIdCanonical(projectRoot) ?? null;
|
|
15
|
+
if (sid === null) {
|
|
16
|
+
return {
|
|
17
|
+
sid: null,
|
|
18
|
+
error: {
|
|
19
|
+
code: 'NO_ACTIVE_SESSION',
|
|
20
|
+
message: 'No active session bound. Run `peaks workspace init --project <repo> --json` to bind one.',
|
|
21
|
+
nextActions: [`peaks workspace init --project ${projectRoot} --json`]
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
return { sid, error: null };
|
|
26
|
+
}
|
|
@@ -1,47 +1,4 @@
|
|
|
1
1
|
import type { Command } from 'commander';
|
|
2
|
-
import type { AutoCompactMode } from '../../../services/code/auto-compact-modes.js';
|
|
3
|
-
/**
|
|
4
|
-
* Canonicalize a user-supplied `--project <path>` value.
|
|
5
|
-
*
|
|
6
|
-
* Git Bash on Windows hands us forward-slash paths
|
|
7
|
-
* (`C:/Users/.../peaks-loop`) while `peaks workspace init` writes the
|
|
8
|
-
* backslash form, and either side may carry a trailing separator or
|
|
9
|
-
* differing case. Resolving to the real path here means every
|
|
10
|
-
* downstream consumer (`getSessionId`, `setSessionMeta`,
|
|
11
|
-
* `setSkillPresence`) sees one stable form.
|
|
12
|
-
*
|
|
13
|
-
* Returns the input unchanged when it cannot be resolved (path does
|
|
14
|
-
* not exist yet, or is not readable) so a bad `--project` still
|
|
15
|
-
* reaches the existing error handling rather than throwing here.
|
|
16
|
-
*/
|
|
17
|
-
/**
|
|
18
|
-
* The loop-hygiene verdict attached to every ACTIVE `skill.presence` read.
|
|
19
|
-
*
|
|
20
|
-
* Why it lives here instead of only in a SKILL.md body: the zero-pause
|
|
21
|
-
* contract ("auto-compact is the skill's own action, never the user's")
|
|
22
|
-
* was already written into `peaks-code/SKILL.md`, including an explicit
|
|
23
|
-
* ban on the exact phrasing "prompt the user to run `/compact`" — and it
|
|
24
|
-
* was still violated. A SKILL.md body is loaded once and is then
|
|
25
|
-
* compacted away, so the rule stops governing at precisely the moment
|
|
26
|
-
* context pressure makes it matter. `skill.presence` is the one call
|
|
27
|
-
* EVERY skill makes on EVERY turn, in EVERY consumer project and EVERY
|
|
28
|
-
* mode, so a value carried here cannot be forgotten, and no skill has to
|
|
29
|
-
* be edited for the obligation to reach the model.
|
|
30
|
-
*
|
|
31
|
-
* READ-ONLY by contract. It probes and reports; it never compacts.
|
|
32
|
-
* Executing `peaks code auto-compact` stays the skill's own action — a
|
|
33
|
-
* side effect here would fire on every single turn.
|
|
34
|
-
*
|
|
35
|
-
* Failure swallows to `null`: the hygiene verdict is advisory and must
|
|
36
|
-
* never be able to break the presence read itself.
|
|
37
|
-
*/
|
|
38
|
-
export declare function buildContextVerdict(ratio: number, mode: AutoCompactMode): {
|
|
39
|
-
context: {
|
|
40
|
-
ratioPct: string;
|
|
41
|
-
action: string;
|
|
42
|
-
mode: string;
|
|
43
|
-
};
|
|
44
|
-
nextActions: string[];
|
|
45
|
-
};
|
|
46
2
|
import { type ProgramIO } from '../../cli-helpers.js';
|
|
3
|
+
export { buildContextVerdict } from './skill-context-verdict.js';
|
|
47
4
|
export declare function registerSkillCommand(program: Command, io: ProgramIO): void;
|