@prestyj/cli 5.28.1 → 5.29.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/motion/bin/contact-sheet.mjs +9 -3
- package/assets/motion/bin/cues.mjs +337 -0
- package/assets/motion/bin/library.mjs +53 -10
- package/assets/motion/bin/motion-blur.mjs +943 -0
- package/assets/motion/bin/motion-check.mjs +354 -3
- package/assets/motion/bin/music-fit.mjs +436 -0
- package/assets/motion/bin/pdf-extract.mjs +22 -10
- package/assets/motion/bin/reference-study.mjs +346 -0
- package/assets/motion/bin/score-synth.mjs +1052 -93
- package/assets/motion/library/README.md +50 -14
- package/assets/motion/library/kit/moves.js +1981 -0
- package/assets/motion/library/library.json +232 -0
- package/assets/motion/library/pieces/camera-rig/meta.json +13 -0
- package/assets/motion/library/pieces/camera-rig/piece.html +153 -0
- package/assets/motion/library/pieces/camera-rig/preview.jpg +0 -0
- package/assets/motion/library/pieces/chain-knock/meta.json +13 -0
- package/assets/motion/library/pieces/chain-knock/piece.html +195 -0
- package/assets/motion/library/pieces/chain-knock/preview.jpg +0 -0
- package/assets/motion/library/pieces/gather-to-logo/meta.json +13 -0
- package/assets/motion/library/pieces/gather-to-logo/piece.html +159 -0
- package/assets/motion/library/pieces/gather-to-logo/preview.jpg +0 -0
- package/assets/motion/library/pieces/morph-carry/meta.json +13 -0
- package/assets/motion/library/pieces/morph-carry/piece.html +173 -0
- package/assets/motion/library/pieces/morph-carry/preview.jpg +0 -0
- package/assets/motion/library/pieces/one-shape-journey/meta.json +13 -0
- package/assets/motion/library/pieces/one-shape-journey/piece.html +195 -0
- package/assets/motion/library/pieces/one-shape-journey/preview.jpg +0 -0
- package/assets/motion/library/pieces/open-from-subject/meta.json +13 -0
- package/assets/motion/library/pieces/open-from-subject/piece.html +168 -0
- package/assets/motion/library/pieces/open-from-subject/preview.jpg +0 -0
- package/assets/motion/library/pieces/request-to-result/meta.json +13 -0
- package/assets/motion/library/pieces/request-to-result/piece.html +212 -0
- package/assets/motion/library/pieces/request-to-result/preview.jpg +0 -0
- package/assets/motion/library/pieces/scale-dive/meta.json +13 -0
- package/assets/motion/library/pieces/scale-dive/piece.html +321 -0
- package/assets/motion/library/pieces/scale-dive/preview.jpg +0 -0
- package/assets/motion/library/pieces/screen-replica-steps/meta.json +13 -0
- package/assets/motion/library/pieces/screen-replica-steps/piece.html +366 -0
- package/assets/motion/library/pieces/screen-replica-steps/preview.jpg +0 -0
- package/assets/motion/library/pieces/zoom-into-card/meta.json +13 -0
- package/assets/motion/library/pieces/zoom-into-card/piece.html +179 -0
- package/assets/motion/library/pieces/zoom-into-card/preview.jpg +0 -0
- package/assets/motion/library/sheets/diagram.jpg +0 -0
- package/assets/motion/library/sheets/frame.jpg +0 -0
- package/assets/motion/library/sheets/transition.jpg +0 -0
- package/assets/motion/library/sheets/ui.jpg +0 -0
- package/assets/motion/references/build-sheet.md +206 -0
- package/assets/motion/references/runtime/determinism-rules.md +1 -1
- package/assets/motion/references/runtime/gsap-easing-and-stagger.md +29 -29
- package/assets/motion/references/runtime/inputs-and-assets.md +7 -12
- package/assets/motion/references/runtime/lint-validate-inspect.md +3 -3
- package/assets/motion/references/runtime/minimal-composition.md +1 -1
- package/assets/motion/references/runtime/preview-render.md +3 -3
- package/assets/motion/skills/app-walkthrough/SKILL.md +66 -0
- package/assets/motion/skills/before-after/SKILL.md +53 -0
- package/assets/motion/skills/brand-kit/SKILL.md +3 -3
- package/assets/motion/skills/dev-tool-video/SKILL.md +57 -0
- package/assets/motion/skills/launch-video/SKILL.md +62 -0
- package/assets/motion/skills/match-reference/SKILL.md +58 -0
- package/assets/motion/skills/motion/SKILL.md +78 -85
- package/assets/motion/skills/source-ingest/SKILL.md +17 -6
- package/assets/motion/skills/website-video/SKILL.md +59 -0
- package/assets/skills/bulletproof/SKILL.md +36 -11
- package/assets/skills/bulletproof/references/agent-surface.md +19 -9
- package/assets/skills/bulletproof/references/audit-protocol.md +20 -5
- package/assets/skills/bulletproof/references/platform-playbooks.md +5 -4
- package/assets/skills/bulletproof/references/provenance.md +26 -1
- package/assets/skills/bulletproof/references/secure-defaults.md +6 -5
- package/assets/skills/bulletproof/references/supply-chain.md +21 -17
- package/assets/skills/bulletproof/references/threat-landscape.md +28 -26
- package/assets/skills/bulletproof/references/verification.md +2 -0
- package/assets/skills/clarify/SKILL.md +25 -16
- package/assets/skills/code-review/SKILL.md +71 -13
- package/assets/skills/code-review/references/agent-diffs.md +27 -0
- package/assets/skills/code-review/references/tests.md +19 -0
- package/assets/skills/compliance-guard/SKILL.md +20 -5
- package/assets/skills/compliance-guard/references/artifacts.md +1 -1
- package/assets/skills/compliance-guard/references/eu-uk.md +16 -16
- package/assets/skills/compliance-guard/references/lawsuit-vectors.md +5 -5
- package/assets/skills/compliance-guard/references/provenance.md +41 -2
- package/assets/skills/compliance-guard/references/sector-gates.md +3 -3
- package/assets/skills/compliance-guard/references/security-baseline.md +2 -2
- package/assets/skills/compliance-guard/references/trigger-map.md +5 -5
- package/assets/skills/compliance-guard/references/us.md +27 -21
- package/assets/skills/durable/SKILL.md +87 -79
- package/assets/skills/durable/references/agent-db-safety.md +69 -0
- package/assets/skills/durable/references/backups-and-runtime.md +19 -12
- package/assets/skills/durable/references/migrations-and-schema.md +13 -6
- package/assets/skills/evidence-led-ui/SKILL.md +69 -127
- package/assets/skills/evidence-led-ui/references/anti-defaults.md +107 -208
- package/assets/skills/evidence-led-ui/references/direction.md +124 -0
- package/assets/skills/evidence-led-ui/references/production-contract.md +8 -0
- package/assets/skills/evidence-led-ui/references/provenance.md +24 -1
- package/assets/skills/lean/SKILL.md +90 -71
- package/assets/skills/lean/references/memory-and-processes.md +3 -2
- package/assets/skills/lean/references/playbooks.md +37 -12
- package/assets/skills/refactoring/SKILL.md +24 -3
- package/assets/skills/refactoring/references/agent-pitfalls.md +4 -1
- package/assets/skills/refactoring/references/legacy.md +21 -0
- package/assets/skills/root-cause/SKILL.md +20 -10
- package/assets/skills/shared-language/SKILL.md +16 -14
- package/assets/skills/tdd/SKILL.md +27 -15
- package/dist/app-sidecar.js +203 -47
- package/dist/app-sidecar.js.map +1 -1
- package/dist/cli.js +17 -26
- package/dist/cli.js.map +1 -1
- package/dist/core/acceptance-checks.d.ts +48 -0
- package/dist/core/acceptance-checks.js +144 -0
- package/dist/core/acceptance-checks.js.map +1 -0
- package/dist/core/agent-session.d.ts +106 -72
- package/dist/core/agent-session.js +539 -399
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/agents.d.ts +6 -5
- package/dist/core/agents.js.map +1 -1
- package/dist/core/ask-user.d.ts +90 -8
- package/dist/core/ask-user.js +124 -13
- package/dist/core/ask-user.js.map +1 -1
- package/dist/core/bundled-agents.js +1 -3
- package/dist/core/bundled-agents.js.map +1 -1
- package/dist/core/cache-diagnostics.d.ts +68 -0
- package/dist/core/cache-diagnostics.js +196 -0
- package/dist/core/cache-diagnostics.js.map +1 -0
- package/dist/core/cache-expiry.d.ts +87 -0
- package/dist/core/cache-expiry.js +111 -0
- package/dist/core/cache-expiry.js.map +1 -0
- package/dist/core/compaction/compactor.js +78 -48
- package/dist/core/compaction/compactor.js.map +1 -1
- package/dist/core/compaction/plan-step-policy.d.ts +46 -0
- package/dist/core/compaction/plan-step-policy.js +57 -0
- package/dist/core/compaction/plan-step-policy.js.map +1 -0
- package/dist/core/destructive-git-guard.d.ts +90 -0
- package/dist/core/destructive-git-guard.js +871 -0
- package/dist/core/destructive-git-guard.js.map +1 -0
- package/dist/core/event-bus.d.ts +3 -0
- package/dist/core/event-bus.js +5 -0
- package/dist/core/event-bus.js.map +1 -1
- package/dist/core/injection-detect.d.ts +38 -0
- package/dist/core/injection-detect.js +232 -0
- package/dist/core/injection-detect.js.map +1 -0
- package/dist/core/keep-awake.d.ts +88 -0
- package/dist/core/keep-awake.js +251 -0
- package/dist/core/keep-awake.js.map +1 -0
- package/dist/core/mcp/client.d.ts +72 -0
- package/dist/core/mcp/client.js +264 -41
- package/dist/core/mcp/client.js.map +1 -1
- package/dist/core/mcp/content.js +6 -2
- package/dist/core/mcp/content.js.map +1 -1
- package/dist/core/mcp/store.d.ts +6 -1
- package/dist/core/mcp/store.js +12 -1
- package/dist/core/mcp/store.js.map +1 -1
- package/dist/core/mcp/types.d.ts +18 -0
- package/dist/core/model-unavailable.d.ts +14 -0
- package/dist/core/model-unavailable.js +23 -0
- package/dist/core/model-unavailable.js.map +1 -0
- package/dist/core/node-debugger.d.ts +148 -0
- package/dist/core/node-debugger.js +642 -0
- package/dist/core/node-debugger.js.map +1 -0
- package/dist/core/package-threats.d.ts +18 -0
- package/dist/core/package-threats.js +168 -0
- package/dist/core/package-threats.js.map +1 -0
- package/dist/core/persistent-shell.d.ts +58 -6
- package/dist/core/persistent-shell.js +331 -49
- package/dist/core/persistent-shell.js.map +1 -1
- package/dist/core/process-manager.d.ts +14 -0
- package/dist/core/process-manager.js +61 -0
- package/dist/core/process-manager.js.map +1 -1
- package/dist/core/progress/git-xp.js +8 -14
- package/dist/core/progress/git-xp.js.map +1 -1
- package/dist/core/session-history.d.ts +12 -0
- package/dist/core/session-history.js +27 -0
- package/dist/core/session-history.js.map +1 -1
- package/dist/core/session-manager.d.ts +13 -1
- package/dist/core/session-manager.js +38 -18
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/session-summary-index.d.ts +37 -0
- package/dist/core/session-summary-index.js +172 -0
- package/dist/core/session-summary-index.js.map +1 -0
- package/dist/core/settings-manager.d.ts +2 -0
- package/dist/core/settings-manager.js +10 -0
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/shell-threats-popular-packages.d.ts +11 -0
- package/dist/core/shell-threats-popular-packages.js +675 -0
- package/dist/core/shell-threats-popular-packages.js.map +1 -0
- package/dist/core/shell-threats.d.ts +8 -0
- package/dist/core/shell-threats.js +186 -0
- package/dist/core/shell-threats.js.map +1 -0
- package/dist/core/skills.js +3 -1
- package/dist/core/skills.js.map +1 -1
- package/dist/core/stream-rules.d.ts +30 -0
- package/dist/core/stream-rules.js +151 -0
- package/dist/core/stream-rules.js.map +1 -0
- package/dist/core/subagent-manager.d.ts +20 -5
- package/dist/core/subagent-manager.js +22 -8
- package/dist/core/subagent-manager.js.map +1 -1
- package/dist/core/subagent-receipt.d.ts +54 -0
- package/dist/core/subagent-receipt.js +276 -0
- package/dist/core/subagent-receipt.js.map +1 -0
- package/dist/core/subagent-turn-record.d.ts +2 -0
- package/dist/core/subagent-turn-record.js.map +1 -1
- package/dist/core/test-impact.d.ts +73 -0
- package/dist/core/test-impact.js +467 -0
- package/dist/core/test-impact.js.map +1 -0
- package/dist/core/thinking-level.d.ts +1 -1
- package/dist/core/thinking-level.js +1 -1
- package/dist/core/thinking-level.js.map +1 -1
- package/dist/core/verification-gate.d.ts +2 -0
- package/dist/core/verification-gate.js +4 -0
- package/dist/core/verification-gate.js.map +1 -1
- package/dist/core/verification-snapshot.js +3 -5
- package/dist/core/verification-snapshot.js.map +1 -1
- package/dist/core/workspace-guard.d.ts +18 -7
- package/dist/core/workspace-guard.js +227 -60
- package/dist/core/workspace-guard.js.map +1 -1
- package/dist/interactive.js +2 -1
- package/dist/interactive.js.map +1 -1
- package/dist/modes/subagent-worker-mode.js +34 -6
- package/dist/modes/subagent-worker-mode.js.map +1 -1
- package/dist/motion-agent/motion-agent.d.ts +6 -2
- package/dist/motion-agent/motion-agent.js +5 -7
- package/dist/motion-agent/motion-agent.js.map +1 -1
- package/dist/motion-agent/motion-prompt.d.ts +1 -1
- package/dist/motion-agent/motion-prompt.js +14 -19
- package/dist/motion-agent/motion-prompt.js.map +1 -1
- package/dist/motion-agent/motion-review.d.ts +10 -3
- package/dist/motion-agent/motion-review.js +15 -7
- package/dist/motion-agent/motion-review.js.map +1 -1
- package/dist/motion-agent/motion-studio-context.js +1 -1
- package/dist/motion-agent/motion-studio-context.js.map +1 -1
- package/dist/system-prompt.js +3 -1
- package/dist/system-prompt.js.map +1 -1
- package/dist/test-support/keep-alive.d.ts +14 -0
- package/dist/test-support/keep-alive.js +17 -0
- package/dist/test-support/keep-alive.js.map +1 -0
- package/dist/tools/ask-user.js +3 -3
- package/dist/tools/ask-user.js.map +1 -1
- package/dist/tools/bash-read-evidence.d.ts +10 -0
- package/dist/tools/bash-read-evidence.js +133 -0
- package/dist/tools/bash-read-evidence.js.map +1 -0
- package/dist/tools/bash.d.ts +10 -1
- package/dist/tools/bash.js +115 -7
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/debug.d.ts +54 -0
- package/dist/tools/debug.js +233 -0
- package/dist/tools/debug.js.map +1 -0
- package/dist/tools/edit.js +12 -4
- package/dist/tools/edit.js.map +1 -1
- package/dist/tools/goals.d.ts +1 -1
- package/dist/tools/index.d.ts +19 -2
- package/dist/tools/index.js +47 -7
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/prompt-hints.js +2 -0
- package/dist/tools/prompt-hints.js.map +1 -1
- package/dist/tools/read-tracker.d.ts +5 -0
- package/dist/tools/read-tracker.js +19 -9
- package/dist/tools/read-tracker.js.map +1 -1
- package/dist/tools/read.js +3 -2
- package/dist/tools/read.js.map +1 -1
- package/dist/tools/skill.js +5 -0
- package/dist/tools/skill.js.map +1 -1
- package/dist/tools/subagent-control.js +44 -8
- package/dist/tools/subagent-control.js.map +1 -1
- package/dist/tools/subagent-shared.d.ts +29 -8
- package/dist/tools/subagent-shared.js +45 -14
- package/dist/tools/subagent-shared.js.map +1 -1
- package/dist/tools/subagent.d.ts +8 -2
- package/dist/tools/subagent.js +28 -10
- package/dist/tools/subagent.js.map +1 -1
- package/dist/tools/task-output.js +3 -2
- package/dist/tools/task-output.js.map +1 -1
- package/dist/tools/task-send.d.ts +1 -1
- package/dist/tools/task-send.js +15 -1
- package/dist/tools/task-send.js.map +1 -1
- package/dist/tools/tool-tiers.d.ts +2 -2
- package/dist/tools/tool-tiers.js +3 -2
- package/dist/tools/tool-tiers.js.map +1 -1
- package/dist/tools/truncate.d.ts +21 -0
- package/dist/tools/truncate.js +187 -0
- package/dist/tools/truncate.js.map +1 -1
- package/dist/tools/ui-adopt.js +2 -0
- package/dist/tools/ui-adopt.js.map +1 -1
- package/dist/ui/App.d.ts +0 -4
- package/dist/ui/App.js +5 -28
- package/dist/ui/App.js.map +1 -1
- package/dist/ui/components/ActivityIndicator.js +1 -0
- package/dist/ui/components/ActivityIndicator.js.map +1 -1
- package/dist/ui/hooks/useAgentLoop.d.ts +1 -8
- package/dist/ui/hooks/useAgentLoop.js +1 -119
- package/dist/ui/hooks/useAgentLoop.js.map +1 -1
- package/dist/ui/render.d.ts +0 -4
- package/dist/ui/render.js +0 -2
- package/dist/ui/render.js.map +1 -1
- package/dist/utils/git.d.ts +77 -0
- package/dist/utils/git.js +285 -21
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/github-ci.js +2 -1
- package/dist/utils/github-ci.js.map +1 -1
- package/dist/utils/github.js +11 -9
- package/dist/utils/github.js.map +1 -1
- package/dist/utils/image.d.ts +14 -0
- package/dist/utils/image.js +16 -0
- package/dist/utils/image.js.map +1 -1
- package/dist/utils/process.d.ts +20 -0
- package/dist/utils/process.js +98 -0
- package/dist/utils/process.js.map +1 -1
- package/package.json +5 -5
- package/assets/motion/references/motion-language.md +0 -128
- package/assets/motion/skills/video-qa/SKILL.md +0 -89
- package/dist/core/ideal-review-subagent.d.ts +0 -56
- package/dist/core/ideal-review-subagent.js +0 -112
- package/dist/core/ideal-review-subagent.js.map +0 -1
- package/dist/core/ideal-review.d.ts +0 -82
- package/dist/core/ideal-review.js +0 -242
- package/dist/core/ideal-review.js.map +0 -1
- package/dist/motion-agent/motion-check-tool.d.ts +0 -35
- package/dist/motion-agent/motion-check-tool.js +0 -514
- package/dist/motion-agent/motion-check-tool.js.map +0 -1
|
@@ -35,6 +35,11 @@ export declare function recordWrite(tracker: ReadTracker | undefined, resolvedPa
|
|
|
35
35
|
* formatters can rewrite a file with the same mtime; we re-hash on mtime miss.
|
|
36
36
|
*/
|
|
37
37
|
export declare function assertFresh(tracker: ReadTracker | undefined, resolvedPath: string, ops: ToolOperations): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* True when the recorded read still matches disk (mtime, else content hash).
|
|
40
|
+
* A hash match after an mtime-only change refreshes the recorded mtime.
|
|
41
|
+
*/
|
|
42
|
+
export declare function isFresh(tracker: ReadTracker, resolvedPath: string, ops: ToolOperations): Promise<boolean>;
|
|
38
43
|
/**
|
|
39
44
|
* Throw unless the model has been shown every line of the file as it is now.
|
|
40
45
|
* `write` replaces the whole file, so after a read cut short by offset/limit or
|
|
@@ -83,21 +83,31 @@ export async function recordWrite(tracker, resolvedPath, content, ops, scope = "
|
|
|
83
83
|
export async function assertFresh(tracker, resolvedPath, ops) {
|
|
84
84
|
if (!tracker)
|
|
85
85
|
return;
|
|
86
|
-
|
|
87
|
-
if (!entry) {
|
|
86
|
+
if (!tracker.has(resolvedPath)) {
|
|
88
87
|
throw new Error("File must be read first before editing. Use the read tool first.");
|
|
89
88
|
}
|
|
90
|
-
|
|
91
|
-
if (stat.mtimeMs === entry.mtimeMs)
|
|
89
|
+
if (await isFresh(tracker, resolvedPath, ops))
|
|
92
90
|
return;
|
|
93
|
-
const current = await ops.readFile(resolvedPath);
|
|
94
|
-
if (hashContent(current) === entry.hash) {
|
|
95
|
-
tracker.set(resolvedPath, { ...entry, mtimeMs: stat.mtimeMs });
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
91
|
throw new Error("File has been modified since it was read (likely by a formatter, linter, or external tool). " +
|
|
99
92
|
"Re-read the file before editing.");
|
|
100
93
|
}
|
|
94
|
+
/**
|
|
95
|
+
* True when the recorded read still matches disk (mtime, else content hash).
|
|
96
|
+
* A hash match after an mtime-only change refreshes the recorded mtime.
|
|
97
|
+
*/
|
|
98
|
+
export async function isFresh(tracker, resolvedPath, ops) {
|
|
99
|
+
const entry = tracker.get(resolvedPath);
|
|
100
|
+
if (!entry)
|
|
101
|
+
return false;
|
|
102
|
+
const stat = await ops.stat(resolvedPath);
|
|
103
|
+
if (stat.mtimeMs === entry.mtimeMs)
|
|
104
|
+
return true;
|
|
105
|
+
const current = await ops.readFile(resolvedPath);
|
|
106
|
+
if (hashContent(current) !== entry.hash)
|
|
107
|
+
return false;
|
|
108
|
+
tracker.set(resolvedPath, { ...entry, mtimeMs: stat.mtimeMs });
|
|
109
|
+
return true;
|
|
110
|
+
}
|
|
101
111
|
/**
|
|
102
112
|
* Throw unless the model has been shown every line of the file as it is now.
|
|
103
113
|
* `write` replaces the whole file, so after a read cut short by offset/limit or
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-tracker.js","sourceRoot":"","sources":["../../src/tools/read-tracker.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"read-tracker.js","sourceRoot":"","sources":["../../src/tools/read-tracker.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/read.js
CHANGED
|
@@ -2,7 +2,7 @@ import fs from "node:fs/promises";
|
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
import { resolvePath, rejectSymlink } from "./path-utils.js";
|
|
5
|
-
import { truncateHead } from "./truncate.js";
|
|
5
|
+
import { truncateHead, describeOmitted } from "./truncate.js";
|
|
6
6
|
import { writeOverflow } from "./overflow.js";
|
|
7
7
|
import { FileTooLargeError, NotRegularFileError, SymlinkRefusedError, localOperations, readFileBounded, } from "./operations.js";
|
|
8
8
|
import { countLines, recordRead } from "./read-tracker.js";
|
|
@@ -301,8 +301,9 @@ videoByteLimit) {
|
|
|
301
301
|
const nextOffset = (offset ?? 1) + result.keptLines;
|
|
302
302
|
const overflowPath = await writeOverflow(content, "read").catch(() => null);
|
|
303
303
|
const overflowNotice = overflowPath ? ` Full output saved to ${overflowPath}.` : "";
|
|
304
|
+
const what = describeOmitted(lines.slice(result.keptLines), result.content);
|
|
304
305
|
return (`${numbered}\n` +
|
|
305
|
-
`[Truncated: showing lines ${offset ?? 1}-${(offset ?? 1) + result.keptLines - 1} of ${result.totalLines}.${overflowNotice} ` +
|
|
306
|
+
`[Truncated: showing lines ${offset ?? 1}-${(offset ?? 1) + result.keptLines - 1} of ${result.totalLines}.${what ? ` ${what}` : ""}${overflowNotice} ` +
|
|
306
307
|
`Use offset=${nextOffset} to read more.]`);
|
|
307
308
|
}
|
|
308
309
|
return numbered;
|
package/dist/tools/read.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../src/tools/read.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../src/tools/read.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/skill.js
CHANGED
|
@@ -27,6 +27,11 @@ export function createSkillTool(skills, limits = CONTEXT_LIMITS) {
|
|
|
27
27
|
parts.push(`\nUser context: ${input.args}`);
|
|
28
28
|
}
|
|
29
29
|
parts.push("\nTreat the above skill instructions as authoritative within their stated scope. Preserve higher-priority project and file/module rules while following the skill to complete the task.");
|
|
30
|
+
if (skill.root) {
|
|
31
|
+
// Children start with an empty context: a brief that says "follow the
|
|
32
|
+
// skill" without its path silently drops the skill's rules.
|
|
33
|
+
parts.push(`If you delegate part of this work to a child agent, it cannot see these instructions: put the skill root (${skill.root}), the exact reference files it must read, and the output you need in its brief.`);
|
|
34
|
+
}
|
|
30
35
|
return parts.join("\n");
|
|
31
36
|
},
|
|
32
37
|
};
|
package/dist/tools/skill.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/tools/skill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,cAAc,EAAsB,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAc,MAAM,mBAAmB,CAAC;AAEjE,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IAC7D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;CACpF,CAAC,CAAC;AAEH,MAAM,UAAU,eAAe,CAC7B,MAAe,EACf,SAAwB,cAAc;IAEtC,uEAAuE;IACvE,qEAAqE;IACrE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAEvE,OAAO;QACL,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC;QACrD,UAAU;QACV,KAAK,CAAC,OAAO,CAAC,KAAK;YACjB,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;YACtD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACvD,OAAO,iBAAiB,KAAK,CAAC,KAAK,kCAAkC,SAAS,IAAI,MAAM,EAAE,CAAC;YAC7F,CAAC;YAED,MAAM,KAAK,GAAG,CAAC,wBAAwB,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;YACvD,IAAI,KAAK,CAAC,IAAI;gBAAE,KAAK,CAAC,IAAI,CAAC,yBAAyB,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAClE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;YAC9C,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,KAAK,CAAC,IAAI,CAAC,mBAAmB,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9C,CAAC;YACD,KAAK,CAAC,IAAI,CACR,yLAAyL,CAC1L,CAAC;YACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,MAAe,EAAE,SAAwB,cAAc;IACvF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,4DAA4D,CAAC;IACtE,CAAC;IAED,yFAAyF;IACzF,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5D,MAAM,QAAQ,GACZ,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,4CAA4C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAE9F,OAAO,CACL,8FAA8F;QAC9F,gEAAgE;QAChE,oJAAoJ;QACpJ,sBAAsB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,EAAE,CACpD,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/tools/skill.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { isPlanModeActive, planModeRestriction } from "../core/runtime-mode.js";
|
|
3
3
|
import { renderAgentRoster } from "./subagent-shared.js";
|
|
4
|
-
import {
|
|
4
|
+
import { AcceptanceChecksParam } from "../core/acceptance-checks.js";
|
|
5
|
+
import { ACTIVE_LIMIT, DEFAULT_WAIT_MS, MAX_WAIT_MS } from "../core/subagent-manager.js";
|
|
5
6
|
const AgentId = z.string().min(1).describe("Eight-character agent ID returned by spawn_agent");
|
|
6
7
|
function json(value) {
|
|
7
8
|
return { content: JSON.stringify(value) };
|
|
@@ -16,7 +17,7 @@ export function createSubAgentControlTools(manager, planModeRef) {
|
|
|
16
17
|
const agentParam = (agentNames.length > 0 ? z.enum(agentNames) : z.string())
|
|
17
18
|
.optional()
|
|
18
19
|
.describe("Named agent definition to run this task as; omit for a general-purpose child");
|
|
19
|
-
const
|
|
20
|
+
const taskParams = z.object({
|
|
20
21
|
task_name: z.string().min(1).describe("Short unique name for this delegated task"),
|
|
21
22
|
task: z
|
|
22
23
|
.string()
|
|
@@ -24,12 +25,27 @@ export function createSubAgentControlTools(manager, planModeRef) {
|
|
|
24
25
|
.describe("Standalone task instruction. The child sees none of this conversation, so state the " +
|
|
25
26
|
"objective, the paths involved, and what to return."),
|
|
26
27
|
agent: agentParam,
|
|
28
|
+
checks: AcceptanceChecksParam,
|
|
29
|
+
});
|
|
30
|
+
// A list, so one call starts every child: on models that send one tool call
|
|
31
|
+
// per turn (GPT-6.x), a one-child-per-call shape cost a model turn per child
|
|
32
|
+
// (bench 41: 8 children 66.8s → 31.9s, parent tokens −57%).
|
|
33
|
+
const spawnParams = z.object({
|
|
34
|
+
tasks: z
|
|
35
|
+
.array(taskParams)
|
|
36
|
+
.min(1)
|
|
37
|
+
.max(ACTIVE_LIMIT)
|
|
38
|
+
.describe("Every independent child to start now, one entry each"),
|
|
27
39
|
});
|
|
28
40
|
const spawnTool = {
|
|
29
41
|
name: "spawn_agent",
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
42
|
+
// Starting children is quick but not undoable: an interrupted call would
|
|
43
|
+
// leave running agents whose ids the model never saw.
|
|
44
|
+
interruptible: false,
|
|
45
|
+
description: "Start isolated persistent child agents and return immediately after launch. " +
|
|
46
|
+
"Put every independent child in ONE call's `tasks` list, then keep working \u2014 each " +
|
|
47
|
+
"child announces its own completion to you, so you do not need to wait or poll. " +
|
|
48
|
+
"Shared files are not isolated." +
|
|
33
49
|
renderAgentRoster(manager.agents),
|
|
34
50
|
parameters: spawnParams,
|
|
35
51
|
executionMode: "parallel",
|
|
@@ -37,7 +53,23 @@ export function createSubAgentControlTools(manager, planModeRef) {
|
|
|
37
53
|
const restriction = blocked("spawn_agent");
|
|
38
54
|
if (restriction)
|
|
39
55
|
return restriction;
|
|
40
|
-
|
|
56
|
+
// Each spawn runs its limit and duplicate-name checks and registers its
|
|
57
|
+
// worker before its first await, so starting them together cannot
|
|
58
|
+
// exceed ACTIVE_LIMIT or the per-model cap.
|
|
59
|
+
const settled = await Promise.allSettled(args.tasks.map((t) => t.checks
|
|
60
|
+
? manager.spawn(t.task_name, t.task, t.agent, { checks: t.checks })
|
|
61
|
+
: manager.spawn(t.task_name, t.task, t.agent)));
|
|
62
|
+
const results = settled.map((result, index) => result.status === "fulfilled"
|
|
63
|
+
? result.value
|
|
64
|
+
: {
|
|
65
|
+
task_name: args.tasks[index]?.task_name,
|
|
66
|
+
error: result.reason instanceof Error ? result.reason.message : String(result.reason),
|
|
67
|
+
});
|
|
68
|
+
// Nothing started: fail the call, as a single failed spawn always has.
|
|
69
|
+
if (settled.every((result) => result.status === "rejected")) {
|
|
70
|
+
throw new Error(`No agent started: ${JSON.stringify(results)}`);
|
|
71
|
+
}
|
|
72
|
+
return json(results);
|
|
41
73
|
},
|
|
42
74
|
};
|
|
43
75
|
const messageParams = z.object({ agent_id: AgentId, message: z.string().min(1) });
|
|
@@ -55,7 +87,11 @@ export function createSubAgentControlTools(manager, planModeRef) {
|
|
|
55
87
|
});
|
|
56
88
|
},
|
|
57
89
|
};
|
|
58
|
-
const followupParams = z.object({
|
|
90
|
+
const followupParams = z.object({
|
|
91
|
+
agent_id: AgentId,
|
|
92
|
+
task: z.string().min(1),
|
|
93
|
+
checks: AcceptanceChecksParam,
|
|
94
|
+
});
|
|
59
95
|
const followupTool = {
|
|
60
96
|
name: "followup_task",
|
|
61
97
|
description: "Start another turn in an idle child while preserving that child's context.",
|
|
@@ -64,7 +100,7 @@ export function createSubAgentControlTools(manager, planModeRef) {
|
|
|
64
100
|
const restriction = blocked("followup_task");
|
|
65
101
|
if (restriction)
|
|
66
102
|
return restriction;
|
|
67
|
-
return json(await manager.followup(args.agent_id, args.task));
|
|
103
|
+
return json(await manager.followup(args.agent_id, args.task, args.checks));
|
|
68
104
|
},
|
|
69
105
|
};
|
|
70
106
|
const waitParams = z.object({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subagent-control.js","sourceRoot":"","sources":["../../src/tools/subagent-control.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"subagent-control.js","sourceRoot":"","sources":["../../src/tools/subagent-control.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,20 +32,29 @@ export interface SubAgentSelection {
|
|
|
32
32
|
provider: Provider;
|
|
33
33
|
parentModel: string;
|
|
34
34
|
model: string;
|
|
35
|
+
/** Thinking level the child runs at — see {@link subAgentThinkingLevel}. */
|
|
36
|
+
thinkingLevel: ThinkingLevel | undefined;
|
|
35
37
|
}
|
|
36
38
|
export declare function resolveAgentDefinition(agents: AgentDefinition[], requestedName?: string): AgentDefinition | undefined;
|
|
37
39
|
export declare function selectSubAgent(agents: AgentDefinition[], requestedName: string | undefined, provider: Provider, parentModel: string): SubAgentSelection;
|
|
38
40
|
/**
|
|
39
41
|
* Resolve which model a named agent runs on.
|
|
40
42
|
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
* and with no way to override it. Defaulting to the parent's model instead
|
|
46
|
-
* makes a downgrade opt-in and one line of frontmatter away.
|
|
43
|
+
* Sub-agents never get a weaker model of their own: no `model:` frontmatter,
|
|
44
|
+
* `inherit`, and the legacy `fast` all run on the parent's model. An explicit
|
|
45
|
+
* model id is honoured as written, since that is a choice the user made in
|
|
46
|
+
* their own agent definition.
|
|
47
47
|
*/
|
|
48
|
-
export declare function resolveAgentModel(agentDef: AgentDefinition | undefined,
|
|
48
|
+
export declare function resolveAgentModel(agentDef: AgentDefinition | undefined, parentModel: string): string;
|
|
49
|
+
/**
|
|
50
|
+
* The thinking level EVERY sub-agent runs at: the lowest rung of the model it
|
|
51
|
+
* actually runs on — never off, and never the parent's level. Delegated work
|
|
52
|
+
* is scoped and briefed, so it reasons briefly on the full-strength model.
|
|
53
|
+
* Resolved per model (not copied from the parent) because ladders differ: a
|
|
54
|
+
* model-unavailable retry on the parent model must use the PARENT's lowest
|
|
55
|
+
* rung, not one the pinned model happened to accept.
|
|
56
|
+
*/
|
|
57
|
+
export declare function subAgentThinkingLevel(provider: Provider, model: string): ThinkingLevel | undefined;
|
|
49
58
|
/**
|
|
50
59
|
* Render the agent roster for a tool description.
|
|
51
60
|
*
|
|
@@ -54,7 +63,19 @@ export declare function resolveAgentModel(agentDef: AgentDefinition | undefined,
|
|
|
54
63
|
* name — which either errors or, worse, silently spawns a generic child.
|
|
55
64
|
*/
|
|
56
65
|
export declare function renderAgentRoster(agents: readonly AgentDefinition[]): string;
|
|
57
|
-
|
|
66
|
+
/** One child started by a recorded `spawn_agent` call. */
|
|
67
|
+
export interface SpawnedTaskArgs {
|
|
68
|
+
task_name?: string;
|
|
69
|
+
task?: string;
|
|
70
|
+
agent?: string;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* The children a recorded `spawn_agent` call started, for rebuilding history:
|
|
74
|
+
* `{ tasks: [...] }` today, or the single `{ task_name, task, agent }` that
|
|
75
|
+
* sessions saved before batch launch carry. Untrusted session data, so only
|
|
76
|
+
* string fields are kept.
|
|
77
|
+
*/
|
|
78
|
+
export declare function spawnedTasks(args: unknown): SpawnedTaskArgs[];
|
|
58
79
|
export declare function subAgentCacheKey(parentCacheKey: string | undefined, model: string, agentName?: string): string | undefined;
|
|
59
80
|
export declare function currentSubAgentDepth(env?: NodeJS.ProcessEnv): number;
|
|
60
81
|
export declare function childSubAgentEnv(env?: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { existsSync } from "node:fs";
|
|
2
2
|
import { fileURLToPath } from "node:url";
|
|
3
|
-
import {
|
|
3
|
+
import { getLowestThinkingLevel } from "../core/thinking-level.js";
|
|
4
4
|
import { truncateTail } from "./truncate.js";
|
|
5
5
|
export const SUB_AGENT_MAX_TURNS = 50;
|
|
6
6
|
/**
|
|
@@ -27,31 +27,40 @@ export function resolveAgentDefinition(agents, requestedName) {
|
|
|
27
27
|
}
|
|
28
28
|
export function selectSubAgent(agents, requestedName, provider, parentModel) {
|
|
29
29
|
const agentDef = resolveAgentDefinition(agents, requestedName);
|
|
30
|
+
const model = resolveAgentModel(agentDef, parentModel);
|
|
30
31
|
return {
|
|
31
32
|
agentDef,
|
|
32
33
|
provider,
|
|
33
34
|
parentModel,
|
|
34
|
-
model
|
|
35
|
+
model,
|
|
36
|
+
thinkingLevel: subAgentThinkingLevel(provider, model),
|
|
35
37
|
};
|
|
36
38
|
}
|
|
37
39
|
/**
|
|
38
40
|
* Resolve which model a named agent runs on.
|
|
39
41
|
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
* and with no way to override it. Defaulting to the parent's model instead
|
|
45
|
-
* makes a downgrade opt-in and one line of frontmatter away.
|
|
42
|
+
* Sub-agents never get a weaker model of their own: no `model:` frontmatter,
|
|
43
|
+
* `inherit`, and the legacy `fast` all run on the parent's model. An explicit
|
|
44
|
+
* model id is honoured as written, since that is a choice the user made in
|
|
45
|
+
* their own agent definition.
|
|
46
46
|
*/
|
|
47
|
-
export function resolveAgentModel(agentDef,
|
|
47
|
+
export function resolveAgentModel(agentDef, parentModel) {
|
|
48
48
|
const preference = agentDef?.model?.trim();
|
|
49
|
-
if (!preference || preference === "inherit")
|
|
49
|
+
if (!preference || preference === "inherit" || preference === "fast")
|
|
50
50
|
return parentModel;
|
|
51
|
-
if (preference === "fast")
|
|
52
|
-
return getFastModel(provider, parentModel).id;
|
|
53
51
|
return preference;
|
|
54
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* The thinking level EVERY sub-agent runs at: the lowest rung of the model it
|
|
55
|
+
* actually runs on — never off, and never the parent's level. Delegated work
|
|
56
|
+
* is scoped and briefed, so it reasons briefly on the full-strength model.
|
|
57
|
+
* Resolved per model (not copied from the parent) because ladders differ: a
|
|
58
|
+
* model-unavailable retry on the parent model must use the PARENT's lowest
|
|
59
|
+
* rung, not one the pinned model happened to accept.
|
|
60
|
+
*/
|
|
61
|
+
export function subAgentThinkingLevel(provider, model) {
|
|
62
|
+
return getLowestThinkingLevel(provider, model);
|
|
63
|
+
}
|
|
55
64
|
/**
|
|
56
65
|
* Render the agent roster for a tool description.
|
|
57
66
|
*
|
|
@@ -65,8 +74,30 @@ export function renderAgentRoster(agents) {
|
|
|
65
74
|
const list = agents.map((agent) => `- ${agent.name}: ${agent.description}`).join("\n");
|
|
66
75
|
return `\n\nAvailable named agents:\n${list}`;
|
|
67
76
|
}
|
|
68
|
-
|
|
69
|
-
|
|
77
|
+
/**
|
|
78
|
+
* The children a recorded `spawn_agent` call started, for rebuilding history:
|
|
79
|
+
* `{ tasks: [...] }` today, or the single `{ task_name, task, agent }` that
|
|
80
|
+
* sessions saved before batch launch carry. Untrusted session data, so only
|
|
81
|
+
* string fields are kept.
|
|
82
|
+
*/
|
|
83
|
+
export function spawnedTasks(args) {
|
|
84
|
+
if (typeof args !== "object" || args === null)
|
|
85
|
+
return [{}];
|
|
86
|
+
const record = args;
|
|
87
|
+
const entries = Array.isArray(record.tasks) ? record.tasks : [record];
|
|
88
|
+
const tasks = entries
|
|
89
|
+
.filter((entry) => typeof entry === "object" && entry !== null)
|
|
90
|
+
.map((entry) => {
|
|
91
|
+
const out = {};
|
|
92
|
+
if (typeof entry.task_name === "string")
|
|
93
|
+
out.task_name = entry.task_name;
|
|
94
|
+
if (typeof entry.task === "string")
|
|
95
|
+
out.task = entry.task;
|
|
96
|
+
if (typeof entry.agent === "string")
|
|
97
|
+
out.agent = entry.agent;
|
|
98
|
+
return out;
|
|
99
|
+
});
|
|
100
|
+
return tasks.length > 0 ? tasks : [{}];
|
|
70
101
|
}
|
|
71
102
|
export function subAgentCacheKey(parentCacheKey, model, agentName = "default") {
|
|
72
103
|
return parentCacheKey ? `${parentCacheKey}:subagent:${model}:${agentName}` : undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subagent-shared.js","sourceRoot":"","sources":["../../src/tools/subagent-shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAIzC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"subagent-shared.js","sourceRoot":"","sources":["../../src/tools/subagent-shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAIzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AACtC;;;;GAIG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC;AAC/C,MAAM,CAAC,MAAM,0BAA0B,GAAG,OAAO,CAAC;AAClD,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAC9C,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC;AACjD,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACnD;;;GAGG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,MAAM,CAAC;AACpD,MAAM,CAAC,MAAM,mBAAmB,GAAG,mBAAmB,CAAC;AACvD,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC;AAoB7C,MAAM,UAAU,sBAAsB,CACpC,MAAyB,EACzB,aAAsB;IAEtB,IAAI,CAAC,aAAa;QAAE,OAAO,SAAS,CAAC;IACrC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC;AAC1F,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,MAAyB,EACzB,aAAiC,EACjC,QAAkB,EAClB,WAAmB;IAEnB,MAAM,QAAQ,GAAG,sBAAsB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAG,iBAAiB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACvD,OAAO;QACL,QAAQ;QACR,QAAQ;QACR,WAAW;QACX,KAAK;QACL,aAAa,EAAE,qBAAqB,CAAC,QAAQ,EAAE,KAAK,CAAC;KACtD,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAAqC,EACrC,WAAmB;IAEnB,MAAM,UAAU,GAAG,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC3C,IAAI,CAAC,UAAU,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,MAAM;QAAE,OAAO,WAAW,CAAC;IACzF,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CACnC,QAAkB,EAClB,KAAa;IAEb,OAAO,sBAAsB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AACjD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAkC;IAClE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,iCAAiC,CAAC;IAClE,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvF,OAAO,gCAAgC,IAAI,EAAE,CAAC;AAChD,CAAC;AASD;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,IAAa;IACxC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,IAA+B,CAAC;IAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACtE,MAAM,KAAK,GAAG,OAAO;SAClB,MAAM,CACL,CAAC,KAAK,EAAoC,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CACzF;SACA,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,MAAM,GAAG,GAAoB,EAAE,CAAC;QAChC,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ;YAAE,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACzE,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QAC1D,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;YAAE,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAC7D,OAAO,GAAG,CAAC;IACb,CAAC,CAAC,CAAC;IACL,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,cAAkC,EAClC,KAAa,EACb,SAAS,GAAG,SAAS;IAErB,OAAO,cAAc,CAAC,CAAC,CAAC,GAAG,cAAc,aAAa,KAAK,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACzF,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACvE,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;IACpE,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACnE,OAAO,EAAE,GAAG,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;AAClF,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrE,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAAkD,EAClD,IAAY;IAEZ,IAAI,SAA4B,CAAC;IACjC,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;QAC7D,SAAS,GAAG,KAAK,CAAC;IACpB,CAAC,CAAC,CAAC;IACH,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;YAAS,CAAC;QACT,WAAW,EAAE,CAAC;IAChB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC7C,MAAM,MAAM,GAAG,YAAY,CACzB,GAAG,IAAI,aAAa,EACpB,0BAA0B,EAC1B,0BAA0B,CAC3B,CAAC;IACF,OAAO,MAAM,CAAC,SAAS;QACrB,CAAC,CAAC,gCAAgC,MAAM,CAAC,UAAU,8BAA8B,MAAM,CAAC,SAAS,QAAQ,MAAM,CAAC,OAAO,EAAE;QACzH,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AACrB,CAAC"}
|
package/dist/tools/subagent.d.ts
CHANGED
|
@@ -3,12 +3,18 @@ import type { AgentTool } from "@prestyj/agent";
|
|
|
3
3
|
import { type AgentDefinition } from "../core/agents.js";
|
|
4
4
|
import { type GoalMode } from "../core/runtime-mode.js";
|
|
5
5
|
import { type SubAgentTokenUsage } from "./subagent-shared.js";
|
|
6
|
-
/** Only retry errors that specifically mean the selected model cannot be used. */
|
|
7
|
-
export declare function isModelUnavailableError(stderr: string): boolean;
|
|
8
6
|
declare const SubAgentParams: z.ZodObject<{
|
|
9
7
|
task: z.ZodString;
|
|
10
8
|
agent: z.ZodOptional<z.ZodString>;
|
|
11
9
|
isolate: z.ZodOptional<z.ZodBoolean>;
|
|
10
|
+
checks: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
11
|
+
type: z.ZodEnum<{
|
|
12
|
+
file_exists: "file_exists";
|
|
13
|
+
file_changed: "file_changed";
|
|
14
|
+
command_passed: "command_passed";
|
|
15
|
+
}>;
|
|
16
|
+
target: z.ZodString;
|
|
17
|
+
}, z.core.$strip>>>;
|
|
12
18
|
}, z.core.$strip>;
|
|
13
19
|
export interface SubAgentUpdate {
|
|
14
20
|
toolUseCount: number;
|
package/dist/tools/subagent.js
CHANGED
|
@@ -3,14 +3,13 @@ import { createInterface } from "node:readline";
|
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
import { mcpServersForAgent } from "../core/agents.js";
|
|
5
5
|
import { log } from "../core/logger.js";
|
|
6
|
+
import { isModelUnavailableError } from "../core/model-unavailable.js";
|
|
7
|
+
import { ReceiptRecorder } from "../core/subagent-receipt.js";
|
|
8
|
+
import { AcceptanceChecksParam, formatCheckResults, verifyAcceptanceChecks, } from "../core/acceptance-checks.js";
|
|
6
9
|
import { getActiveGoalMode, goalModeSubagentRestriction, isPlanModeActive, planModeRestriction, } from "../core/runtime-mode.js";
|
|
7
|
-
import { boundSubAgentOutput, childSubAgentEnv, currentSubAgentDepth, MAX_BLOCKING_SUBAGENT_DEPTH, renderAgentRoster, resolveSubAgentCliEntry, selectSubAgent, subAgentCacheKey, SUB_AGENT_MAX_OUTPUT_CHARS, SUB_AGENT_MAX_STDERR_CHARS, SUB_AGENT_MAX_TURNS, SUB_AGENT_TIMEOUT_MS, } from "./subagent-shared.js";
|
|
10
|
+
import { boundSubAgentOutput, childSubAgentEnv, currentSubAgentDepth, MAX_BLOCKING_SUBAGENT_DEPTH, renderAgentRoster, resolveSubAgentCliEntry, selectSubAgent, subAgentCacheKey, subAgentThinkingLevel, SUB_AGENT_MAX_OUTPUT_CHARS, SUB_AGENT_MAX_STDERR_CHARS, SUB_AGENT_MAX_TURNS, SUB_AGENT_TIMEOUT_MS, } from "./subagent-shared.js";
|
|
8
11
|
import { createWorktree, removeWorktree } from "../core/worktree.js";
|
|
9
12
|
import { prepareWorktree } from "../core/worktree-setup.js";
|
|
10
|
-
/** Only retry errors that specifically mean the selected model cannot be used. */
|
|
11
|
-
export function isModelUnavailableError(stderr) {
|
|
12
|
-
return /does not recognize the requested model|requested model[^\n]*(?:not available|no access)|model[^\n]*(?:does not exist|not found|not available)/i.test(stderr);
|
|
13
|
-
}
|
|
14
13
|
const SubAgentParams = z.object({
|
|
15
14
|
task: z.string().describe("The task to delegate to the sub-agent"),
|
|
16
15
|
agent: z
|
|
@@ -24,6 +23,7 @@ const SubAgentParams = z.object({
|
|
|
24
23
|
"collide with work happening elsewhere. Use when several agents edit at " +
|
|
25
24
|
"once, or when the child's changes should land on a branch of their own. " +
|
|
26
25
|
"The copy is removed automatically if the child leaves no commits behind."),
|
|
26
|
+
checks: AcceptanceChecksParam,
|
|
27
27
|
});
|
|
28
28
|
export function createSubAgentTool(cwd, agents, getParentProvider, getParentModel, getParentCacheKey, planModeRef, goalModeRef) {
|
|
29
29
|
return {
|
|
@@ -144,6 +144,13 @@ export function createSubAgentTool(cwd, agents, getParentProvider, getParentMode
|
|
|
144
144
|
if (childCacheKey) {
|
|
145
145
|
cliArgs.push("--prompt-cache-key", childCacheKey);
|
|
146
146
|
}
|
|
147
|
+
// Without --thinking the child runs with reasoning OFF. Every child
|
|
148
|
+
// runs at the lowest rung of the model THIS attempt uses (the parent
|
|
149
|
+
// model on a retry), same as spawn_agent children.
|
|
150
|
+
const thinkingLevel = subAgentThinkingLevel(useProvider, model);
|
|
151
|
+
if (thinkingLevel) {
|
|
152
|
+
cliArgs.push("--thinking", thinkingLevel);
|
|
153
|
+
}
|
|
147
154
|
if (agentDef?.systemPrompt) {
|
|
148
155
|
// --agent-prompt, not --system-prompt: the definition body is composed
|
|
149
156
|
// with the Tools/project-context/Environment scaffolding instead of
|
|
@@ -167,7 +174,7 @@ export function createSubAgentTool(cwd, agents, getParentProvider, getParentMode
|
|
|
167
174
|
cliArgs.push(args.task);
|
|
168
175
|
return cliArgs;
|
|
169
176
|
};
|
|
170
|
-
// Track progress across both attempts.
|
|
177
|
+
// Track progress across both attempts. A pinned-model attempt can only
|
|
171
178
|
// fall back before producing output or using a tool, so these totals remain
|
|
172
179
|
// an accurate picture of the actual agent run.
|
|
173
180
|
let toolUseCount = 0;
|
|
@@ -199,6 +206,9 @@ export function createSubAgentTool(cwd, agents, getParentProvider, getParentMode
|
|
|
199
206
|
};
|
|
200
207
|
const abortHandler = () => killActiveChild("aborted");
|
|
201
208
|
context.signal.addEventListener("abort", abortHandler, { once: true });
|
|
209
|
+
// Engine-side record of every tool call the child made; rendered as a
|
|
210
|
+
// receipt the child's model cannot write or forge.
|
|
211
|
+
const receipt = new ReceiptRecorder();
|
|
202
212
|
return new Promise((resolve) => {
|
|
203
213
|
const finish = (result) => {
|
|
204
214
|
context.signal.removeEventListener("abort", abortHandler);
|
|
@@ -250,6 +260,7 @@ export function createSubAgentTool(cwd, agents, getParentProvider, getParentMode
|
|
|
250
260
|
}
|
|
251
261
|
break;
|
|
252
262
|
case "tool_call_start":
|
|
263
|
+
receipt.start(event.toolCallId, event.name, event.args);
|
|
253
264
|
toolUseCount++;
|
|
254
265
|
currentActivity = formatToolActivity(event.name, event.args);
|
|
255
266
|
context.onUpdate?.({
|
|
@@ -259,6 +270,7 @@ export function createSubAgentTool(cwd, agents, getParentProvider, getParentMode
|
|
|
259
270
|
});
|
|
260
271
|
break;
|
|
261
272
|
case "tool_call_end":
|
|
273
|
+
receipt.end(event.toolCallId, event.result, event.isError);
|
|
262
274
|
break;
|
|
263
275
|
case "max_turns":
|
|
264
276
|
hitMaxTurns = true;
|
|
@@ -312,7 +324,7 @@ export function createSubAgentTool(cwd, agents, getParentProvider, getParentMode
|
|
|
312
324
|
!context.signal.aborted &&
|
|
313
325
|
isModelUnavailableError(stderr);
|
|
314
326
|
if (canFallback) {
|
|
315
|
-
log("WARN", "subagent", "
|
|
327
|
+
log("WARN", "subagent", "Pinned sub-agent model unavailable; retrying parent", {
|
|
316
328
|
provider: useProvider,
|
|
317
329
|
model,
|
|
318
330
|
fallbackModel: parentModel,
|
|
@@ -340,6 +352,8 @@ export function createSubAgentTool(cwd, agents, getParentProvider, getParentMode
|
|
|
340
352
|
model,
|
|
341
353
|
});
|
|
342
354
|
const body = boundSubAgentOutput(textOutput);
|
|
355
|
+
const checksBlock = formatCheckResults(verifyAcceptanceChecks(args.checks ?? [], receipt.snapshot(), cwd));
|
|
356
|
+
const receiptBlock = `\n\n${receipt.render(textOutput, cwd)}${checksBlock ? `\n${checksBlock}` : ""}`;
|
|
343
357
|
if (code !== 0) {
|
|
344
358
|
// A provider/process failure can happen AFTER the model has emitted
|
|
345
359
|
// a progress sentence (for example: "I'll read both files now.").
|
|
@@ -365,9 +379,13 @@ export function createSubAgentTool(cwd, agents, getParentProvider, getParentMode
|
|
|
365
379
|
// "(no output)" for successful empty children. Test the raw
|
|
366
380
|
// stream here so that placeholder is not mislabeled as partial
|
|
367
381
|
// model output on failures.
|
|
382
|
+
// The receipt only rides along when there is something to
|
|
383
|
+
// check: partial output or tool calls the child made.
|
|
368
384
|
content: textOutput
|
|
369
|
-
? `Sub-agent failed (exit ${code}): ${error}\n\nPartial output before failure:\n${body}`
|
|
370
|
-
:
|
|
385
|
+
? `Sub-agent failed (exit ${code}): ${error}\n\nPartial output before failure:\n${body}${receiptBlock}`
|
|
386
|
+
: toolUseCount > 0 || checksBlock
|
|
387
|
+
? `Sub-agent failed (exit ${code}): ${error}${receiptBlock}`
|
|
388
|
+
: `Sub-agent failed (exit ${code}): ${error}`,
|
|
371
389
|
details,
|
|
372
390
|
});
|
|
373
391
|
return;
|
|
@@ -375,7 +393,7 @@ export function createSubAgentTool(cwd, agents, getParentProvider, getParentMode
|
|
|
375
393
|
const content = hitMaxTurns
|
|
376
394
|
? `[Sub-agent reached its ${maxTurnsLimit}-turn limit — it stopped mid-task and this output may be incomplete.]\n\n${body}`
|
|
377
395
|
: body;
|
|
378
|
-
finish({ content
|
|
396
|
+
finish({ content: `${content}${receiptBlock}`, details });
|
|
379
397
|
});
|
|
380
398
|
child.on("error", (err) => {
|
|
381
399
|
if (activeChild === child)
|