@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
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plan-step compaction policy (port of NVlabs/SoL-Pi commit 4101906, as
|
|
3
|
+
* re-implemented in bench/baseline/32-plan-step-compaction.mjs arm B).
|
|
4
|
+
*
|
|
5
|
+
* Checked at turn end after a plan step is newly completed. Compacting turns a
|
|
6
|
+
* big cached prefix into a small summary: every later request re-reads less
|
|
7
|
+
* (saving), but the new prefix must be re-written to cache once at r× the read
|
|
8
|
+
* price. Compact iff that write cost is repaid within the expected number of
|
|
9
|
+
* remaining requests (horizon). Pure — the session owns the bookkeeping.
|
|
10
|
+
*/
|
|
11
|
+
/** SoL-Pi default cache write/read price ratio. GPT-6.1 Sol's real ratio is 25. */
|
|
12
|
+
export const DEFAULT_CACHE_WRITE_READ_RATIO = 12.5;
|
|
13
|
+
/** Recent tail kept verbatim by compaction (SoL-Pi keep budget). */
|
|
14
|
+
export const PLAN_STEP_KEEP_TOKENS = 20_000;
|
|
15
|
+
/** Approximate size of the summary that replaces the archive. */
|
|
16
|
+
export const PLAN_STEP_SUMMARY_TOKENS = 1_000;
|
|
17
|
+
/** Within this many tokens of the window, leave it to the size trigger. */
|
|
18
|
+
export const PLAN_STEP_WINDOW_GUARD = 16_384;
|
|
19
|
+
export function decidePlanStepCompaction(input) {
|
|
20
|
+
const ctx = input.contextTokens;
|
|
21
|
+
if (input.stepsRemaining <= 0)
|
|
22
|
+
return { compact: false, reason: "plan-finished" };
|
|
23
|
+
if (ctx >= input.contextWindow - PLAN_STEP_WINDOW_GUARD) {
|
|
24
|
+
return { compact: false, reason: "near-window: defer to size trigger" };
|
|
25
|
+
}
|
|
26
|
+
if (input.priorCompactions > 0 && (input.requestsSinceLastCompaction ?? 1) < 1) {
|
|
27
|
+
return { compact: false, reason: "back-to-back" };
|
|
28
|
+
}
|
|
29
|
+
const r = Math.max(1, input.cacheWriteReadRatio);
|
|
30
|
+
const archive = Math.max(0, ctx - input.keptTailTokens);
|
|
31
|
+
const saving = archive - PLAN_STEP_SUMMARY_TOKENS;
|
|
32
|
+
if (saving <= 0)
|
|
33
|
+
return { compact: false, reason: "no-saving" };
|
|
34
|
+
const post = ctx - saving;
|
|
35
|
+
const breakeven = (post * (r - 1)) / saving;
|
|
36
|
+
const done = input.stepsCompleted;
|
|
37
|
+
const meanReq = done > 0 ? input.requestsInCompletedSteps / done : 0;
|
|
38
|
+
let horizon = 1 + Math.floor(meanReq * input.stepsRemaining);
|
|
39
|
+
const growth = input.requests > 0 ? input.grownTokens / input.requests : 0;
|
|
40
|
+
if (growth > 0) {
|
|
41
|
+
horizon = Math.min(horizon, Math.floor((input.contextWindow - ctx) / growth));
|
|
42
|
+
}
|
|
43
|
+
if (input.priorCompactions === 0) {
|
|
44
|
+
horizon *= 2;
|
|
45
|
+
return {
|
|
46
|
+
compact: breakeven <= horizon,
|
|
47
|
+
reason: `first be=${breakeven.toFixed(1)} h=${horizon}`,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
// Later compactions: stricter margin, and earlier write cost must be repaid.
|
|
51
|
+
const debtCovered = input.writeCostBalance <= 0;
|
|
52
|
+
return {
|
|
53
|
+
compact: breakeven * 1.5 <= horizon && debtCovered,
|
|
54
|
+
reason: `be=${breakeven.toFixed(1)} h=${horizon} debt=${Math.round(input.writeCostBalance)}`,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=plan-step-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan-step-policy.js","sourceRoot":"","sources":["../../../src/core/compaction/plan-step-policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Destructive-git guard: refuses model-issued shell commands that would throw
|
|
3
|
+
* away the user's uncommitted work.
|
|
4
|
+
*
|
|
5
|
+
* Checkpoints only capture edits made through write/edit, so one
|
|
6
|
+
* `git reset --hard` from the shell would otherwise lose work with no undo.
|
|
7
|
+
*
|
|
8
|
+
* Two phases:
|
|
9
|
+
* 1. {@link findDestructiveGitCommands} — pure parse. A small quote-aware shell
|
|
10
|
+
* scanner splits the command into simple commands (through `&&`/`;`/`||`/
|
|
11
|
+
* pipes, subshells, `$(…)`/backticks, `if`/`for`/`while` bodies), unwraps
|
|
12
|
+
* `bash -c`/`sh -c`/`eval` scripts and exec wrappers (`sudo`, `env`,
|
|
13
|
+
* `timeout`, `nohup`, `xargs`, …), follows `cd` and `git -C`, and classifies
|
|
14
|
+
* each git invocation.
|
|
15
|
+
* 2. {@link checkDestructiveGit} — context. Discarding commands are blocked
|
|
16
|
+
* only when `git status` in the target directory shows something they would
|
|
17
|
+
* destroy; a clean tree passes. Plain force-push is always blocked.
|
|
18
|
+
*
|
|
19
|
+
* Fails OPEN on guard errors (git missing, timeout): the guard is a seatbelt
|
|
20
|
+
* against an agent mistake, not a sandbox, and must never wedge the bash tool.
|
|
21
|
+
*/
|
|
22
|
+
type DestructiveGitKind = "reset-hard" | "checkout-paths" | "restore-worktree" | "clean" | "stash-drop" | "stash-clear" | "branch-force-delete" | "force-push";
|
|
23
|
+
export interface DestructiveGitMatch {
|
|
24
|
+
kind: DestructiveGitKind;
|
|
25
|
+
/** The git invocation as parsed, for the block message. */
|
|
26
|
+
display: string;
|
|
27
|
+
/** Directory git would run in (after `cd` and `git -C`). */
|
|
28
|
+
dir: string;
|
|
29
|
+
/** `--git-dir=`/`--work-tree=` globals to forward to inspection commands. */
|
|
30
|
+
gitArgs: string[];
|
|
31
|
+
/** Pathspecs limiting what is discarded; empty means the whole tree. */
|
|
32
|
+
pathspecs: string[];
|
|
33
|
+
/** checkout with one operand that may be a branch rather than a path. */
|
|
34
|
+
maybeRef?: string;
|
|
35
|
+
/** clean: also/only removes ignored files (`-x` / `-X`). */
|
|
36
|
+
ignored?: "also" | "only";
|
|
37
|
+
/** clean: `-d` also removes untracked directories. */
|
|
38
|
+
directories?: boolean;
|
|
39
|
+
/** branch -D targets; stash drop target. */
|
|
40
|
+
refs: string[];
|
|
41
|
+
}
|
|
42
|
+
/** Basename of a command word, `.exe` stripped (`/usr/bin/git`, `git.exe`). */
|
|
43
|
+
export declare function commandName(word: string): string;
|
|
44
|
+
/**
|
|
45
|
+
* Expand the home and working-directory forms a model writes in paths:
|
|
46
|
+
* `~`, `$HOME`/`${HOME}` (any case, which also covers PowerShell `$home`),
|
|
47
|
+
* `$env:USERPROFILE`/`$env:HOME`, cmd `%USERPROFILE%`, and `$PWD`/`${PWD}`. Other variables stay
|
|
48
|
+
* literal, so they resolve to a harmless relative path.
|
|
49
|
+
*/
|
|
50
|
+
export declare function expandShellPath(p: string, cwd: string): string;
|
|
51
|
+
/** One simple command found in a shell string, after unwrapping. */
|
|
52
|
+
export interface ShellInvocation {
|
|
53
|
+
/** {@link commandName} of the command word. */
|
|
54
|
+
name: string;
|
|
55
|
+
args: readonly string[];
|
|
56
|
+
/** Directory it would run in after any earlier `cd` in the same script. */
|
|
57
|
+
cwd: string;
|
|
58
|
+
/** Run by `xargs`, which appends operands read from stdin. */
|
|
59
|
+
viaXargs: boolean;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Every simple command in `command` whose name satisfies `wanted`, in source
|
|
63
|
+
* order, after splitting on `&&`/`;`/`||`/pipes, entering subshells,
|
|
64
|
+
* substitutions and `if`/`for`/`while` bodies, unwrapping `bash -c`/`eval`/
|
|
65
|
+
* `pwsh -c` scripts and exec wrappers (`sudo`, `env`, `timeout`, `xargs`, …),
|
|
66
|
+
* and following `cd`. Pure: nothing is executed.
|
|
67
|
+
*/
|
|
68
|
+
export declare function walkShell(command: string, cwd: string, wanted: (name: string) => boolean): ShellInvocation[];
|
|
69
|
+
/**
|
|
70
|
+
* Parse `command` and return every git invocation in it that can destroy
|
|
71
|
+
* work, with the directory each would run in. Pure apart from `existsSync`
|
|
72
|
+
* for ambiguous `git checkout <name>`.
|
|
73
|
+
*/
|
|
74
|
+
export declare function findDestructiveGitCommands(command: string, cwd: string): DestructiveGitMatch[];
|
|
75
|
+
export interface DestructiveGitCheckOptions {
|
|
76
|
+
/** The tool's working directory. */
|
|
77
|
+
cwd: string;
|
|
78
|
+
/**
|
|
79
|
+
* The shell's real current directory when it can differ from `cwd`
|
|
80
|
+
* (persistent session shell after a `cd`). Only called when the command
|
|
81
|
+
* contains a destructive git invocation.
|
|
82
|
+
*/
|
|
83
|
+
resolveCwd?: () => Promise<string | null>;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Returns a block message for the model when `command` would destroy
|
|
87
|
+
* uncommitted work (or force-push), or null to let it run.
|
|
88
|
+
*/
|
|
89
|
+
export declare function checkDestructiveGit(command: string, options: DestructiveGitCheckOptions): Promise<string | null>;
|
|
90
|
+
export {};
|