@prestyj/cli 5.28.1 → 5.29.1
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 +70 -0
- package/assets/motion/skills/before-after/SKILL.md +57 -0
- package/assets/motion/skills/brand-kit/SKILL.md +3 -3
- package/assets/motion/skills/dev-tool-video/SKILL.md +61 -0
- package/assets/motion/skills/launch-video/SKILL.md +66 -0
- package/assets/motion/skills/match-reference/SKILL.md +62 -0
- package/assets/motion/skills/motion/SKILL.md +148 -98
- package/assets/motion/skills/source-ingest/SKILL.md +17 -6
- package/assets/motion/skills/website-video/SKILL.md +76 -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 +206 -47
- package/dist/app-sidecar.js.map +1 -1
- package/dist/cli/thinking-arg.d.ts +6 -0
- package/dist/cli/thinking-arg.js +13 -0
- package/dist/cli/thinking-arg.js.map +1 -0
- package/dist/cli.d.ts +1 -2
- package/dist/cli.js +18 -34
- 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 +107 -72
- package/dist/core/agent-session.js +562 -407
- 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/codex-request-shape.d.ts +12 -0
- package/dist/core/codex-request-shape.js +31 -0
- package/dist/core/codex-request-shape.js.map +1 -0
- package/dist/core/compaction/compactor.js +84 -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/nolan-context.js +7 -3
- package/dist/core/nolan-context.js.map +1 -1
- 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 +12 -0
- package/dist/core/settings-manager.js +20 -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 +278 -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 +16 -20
- package/dist/motion-agent/motion-prompt.js.map +1 -1
- package/dist/motion-agent/motion-review-session.js +7 -3
- package/dist/motion-agent/motion-review-session.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 +15 -11
- 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-targets.d.ts +10 -0
- package/dist/tools/edit-targets.js +31 -0
- package/dist/tools/edit-targets.js.map +1 -0
- package/dist/tools/edit.d.ts +11 -3
- package/dist/tools/edit.js +387 -305
- 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 +6 -1
- 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 +11 -3
- 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 +14 -2
- package/dist/tools/subagent.js +43 -13
- 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 +8 -2
- package/dist/tools/tool-tiers.js +10 -3
- 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 +12 -31
- 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/components/ToolExecution.js +3 -2
- package/dist/ui/components/ToolExecution.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/ui/terminal-history.js +3 -1
- package/dist/ui/terminal-history.js.map +1 -1
- package/dist/ui/tool-line-summary.js +3 -1
- package/dist/ui/tool-line-summary.js.map +1 -1
- package/dist/utils/format.js +5 -1
- package/dist/utils/format.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 +4 -4
- 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
package/dist/utils/format.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
2
|
import { formatUserError } from "./error-handler.js";
|
|
3
|
+
import { editTargetLabel } from "../tools/edit-targets.js";
|
|
3
4
|
/**
|
|
4
5
|
* Format tool call start for display.
|
|
5
6
|
*/
|
|
@@ -53,9 +54,12 @@ function formatArgs(name, args) {
|
|
|
53
54
|
const short = cmd.length > 80 ? cmd.slice(0, 77) + "..." : cmd;
|
|
54
55
|
return ` ${chalk.dim(short)}`;
|
|
55
56
|
}
|
|
57
|
+
case "edit": {
|
|
58
|
+
const label = editTargetLabel(args);
|
|
59
|
+
return label ? ` ${chalk.dim(label)}` : "";
|
|
60
|
+
}
|
|
56
61
|
case "read":
|
|
57
62
|
case "write":
|
|
58
|
-
case "edit":
|
|
59
63
|
return args.file_path ? ` ${chalk.dim(String(args.file_path))}` : "";
|
|
60
64
|
case "find":
|
|
61
65
|
return ` ${chalk.dim(String(args.pattern ?? ""))}`;
|
package/dist/utils/format.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/utils/format.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/utils/format.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/git.d.ts
CHANGED
|
@@ -1,3 +1,80 @@
|
|
|
1
|
+
/** `-c` overrides that disable every repo-config execution sink GG's calls can reach. */
|
|
2
|
+
export declare const GIT_HARDENING_CONFIG_ARGS: readonly string[];
|
|
3
|
+
/**
|
|
4
|
+
* Inserted right after the subcommand of diff-producing commands: external
|
|
5
|
+
* diff drivers (`diff.external`, `diff.<driver>.command`) and `textconv`
|
|
6
|
+
* filters are repo-configured programs. `-c diff.external=` is NOT used — an
|
|
7
|
+
* empty value makes `git diff` die with "cannot run".
|
|
8
|
+
*/
|
|
9
|
+
export declare const GIT_NO_EXTERNAL_DIFF_ARGS: readonly string[];
|
|
10
|
+
/**
|
|
11
|
+
* Inserted after `status`: inspecting a submodule's work tree spawns a nested
|
|
12
|
+
* `git status` inside it, which honours the submodule's OWN filter drivers
|
|
13
|
+
* (its config was never probed). `dirty` still reports moved submodule
|
|
14
|
+
* commits but never enters the submodule work tree. Skipped when the caller
|
|
15
|
+
* passes its own `--ignore-submodules`.
|
|
16
|
+
*/
|
|
17
|
+
export declare const GIT_STATUS_SUBMODULE_ARGS: readonly string[];
|
|
18
|
+
/**
|
|
19
|
+
* Build `-c` overrides that blank every filter / merge driver named in the
|
|
20
|
+
* NUL-separated output of `git config -z --name-only --get-regexp`. Returns
|
|
21
|
+
* null when a driver name contains `=` — `-c` splits at the first `=`, so the
|
|
22
|
+
* override could not be expressed and the caller must refuse to run.
|
|
23
|
+
*/
|
|
24
|
+
export declare function buildDriverOverrides(outputs: readonly string[]): string[] | null;
|
|
25
|
+
/**
|
|
26
|
+
* The git executable. On Windows, libuv's PATH search tries the child's cwd
|
|
27
|
+
* first, so a `git.exe` planted at a repo root would run instead of git —
|
|
28
|
+
* resolve an absolute path from PATH once instead.
|
|
29
|
+
*/
|
|
30
|
+
export declare function resolveGitBinary(): string;
|
|
31
|
+
export interface BackgroundGitOptions {
|
|
32
|
+
cwd: string;
|
|
33
|
+
timeoutMs?: number;
|
|
34
|
+
maxBuffer?: number;
|
|
35
|
+
/** Written to stdin, which is then closed. */
|
|
36
|
+
input?: string;
|
|
37
|
+
signal?: AbortSignal;
|
|
38
|
+
/** Extra environment on top of `process.env` and the hardening env. */
|
|
39
|
+
env?: Readonly<Record<string, string>>;
|
|
40
|
+
/**
|
|
41
|
+
* Repo-selecting global options (`--git-dir=…`, `--work-tree=…`) placed
|
|
42
|
+
* before the subcommand — and before `config` in the driver probe, so it
|
|
43
|
+
* inspects the same repository.
|
|
44
|
+
*/
|
|
45
|
+
globalArgs?: readonly string[];
|
|
46
|
+
}
|
|
47
|
+
export interface BackgroundGitResult {
|
|
48
|
+
stdout: string;
|
|
49
|
+
stderr: string;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Rejection of {@link runBackgroundGit}, shaped like a promisified execFile
|
|
53
|
+
* error: `code` is git's exit status (number) or a spawn errno (string).
|
|
54
|
+
*/
|
|
55
|
+
export declare class BackgroundGitError extends Error {
|
|
56
|
+
readonly code: number | string | null;
|
|
57
|
+
readonly killed: boolean;
|
|
58
|
+
readonly stdout: string;
|
|
59
|
+
readonly stderr: string;
|
|
60
|
+
constructor(message: string, details: {
|
|
61
|
+
code: number | string | null;
|
|
62
|
+
killed: boolean;
|
|
63
|
+
stdout: string;
|
|
64
|
+
stderr: string;
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Full argv for a hardened background git call (minus the binary). Exposed
|
|
69
|
+
* for tests; callers use {@link runBackgroundGit}.
|
|
70
|
+
*/
|
|
71
|
+
export declare function hardenedGitArgs(args: readonly string[], options: BackgroundGitOptions): Promise<string[]>;
|
|
72
|
+
/**
|
|
73
|
+
* Run git for GG's own background purposes with repo-config execution sinks
|
|
74
|
+
* disabled. Resolves `{stdout, stderr}` on exit 0; rejects with
|
|
75
|
+
* {@link BackgroundGitError} otherwise. Output is identical to plain git.
|
|
76
|
+
*/
|
|
77
|
+
export declare function runBackgroundGit(args: readonly string[], options: BackgroundGitOptions): Promise<BackgroundGitResult>;
|
|
1
78
|
export declare function getGitBranch(cwd: string): Promise<string | null>;
|
|
2
79
|
/** Count staged, modified, deleted, renamed, and untracked files. */
|
|
3
80
|
export declare function getGitDirtyFileCount(cwd: string): Promise<number>;
|
package/dist/utils/git.js
CHANGED
|
@@ -1,37 +1,301 @@
|
|
|
1
1
|
import { execFile } from "node:child_process";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
import { statSync } from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
// ── Hardened runner for GG's own (background) git calls ─────────────────────
|
|
5
|
+
//
|
|
6
|
+
// GitSpawn: a repository's own `.git/config` (or an `include.path` it pulls
|
|
7
|
+
// in) can name programs that git runs during perfectly ordinary read-only
|
|
8
|
+
// commands — `core.fsmonitor` on any index refresh, a `post-index-change` hook
|
|
9
|
+
// when `git status` rewrites the index, `filter.<driver>.clean/process` (with
|
|
10
|
+
// `.gitattributes`) when status re-hashes a stat-dirty file, `textconv` /
|
|
11
|
+
// external diff drivers in `git show`, `gpg.program` via `log.showSignature`,
|
|
12
|
+
// credential/ssh/askpass helpers, pagers and editors. GG runs git on its own
|
|
13
|
+
// (project open, CI chip, XP, verification snapshots, the destructive-git
|
|
14
|
+
// guard), so merely opening a malicious repo must not execute anything.
|
|
15
|
+
//
|
|
16
|
+
// Every background git call goes through {@link runBackgroundGit}, which
|
|
17
|
+
// prepends `-c` overrides (command-line config beats every config file) and
|
|
18
|
+
// blanks the per-driver filter/merge commands discovered by a safe
|
|
19
|
+
// `git config` probe. Prior art: gptme b65f699d (`git_inspect_cmd`) and
|
|
20
|
+
// MoonshotAI/kimi-code#3964 (`hardenedGitConfigArgs`). The agent's own `bash`
|
|
21
|
+
// tool is out of scope — those are explicit, user-visible commands.
|
|
22
|
+
const NULL_DEVICE = process.platform === "win32" ? "NUL" : "/dev/null";
|
|
23
|
+
/** `-c` overrides that disable every repo-config execution sink GG's calls can reach. */
|
|
24
|
+
export const GIT_HARDENING_CONFIG_ARGS = [
|
|
25
|
+
"-c",
|
|
26
|
+
"core.fsmonitor=false",
|
|
27
|
+
"-c",
|
|
28
|
+
`core.hooksPath=${NULL_DEVICE}`,
|
|
29
|
+
"-c",
|
|
30
|
+
"core.pager=cat",
|
|
31
|
+
"-c",
|
|
32
|
+
"core.editor=:",
|
|
33
|
+
"-c",
|
|
34
|
+
"core.askPass=",
|
|
35
|
+
// Plain OpenSSH: keeps any (rare) lazy fetch working without the repo's command.
|
|
36
|
+
"-c",
|
|
37
|
+
"core.sshCommand=ssh",
|
|
38
|
+
// An empty value resets the helper list, dropping repo-configured helpers.
|
|
39
|
+
"-c",
|
|
40
|
+
"credential.helper=",
|
|
41
|
+
// Background calls never need the network. A partial clone would otherwise
|
|
42
|
+
// lazy-fetch missing blobs (e.g. in `git show`) through the repo's own
|
|
43
|
+
// `remote.<name>.uploadpack` / ext:: URL; GIT_NO_LAZY_FETCH backs this up.
|
|
44
|
+
"-c",
|
|
45
|
+
"protocol.allow=never",
|
|
46
|
+
"-c",
|
|
47
|
+
"protocol.ext.allow=never",
|
|
48
|
+
"-c",
|
|
49
|
+
"gpg.program=",
|
|
50
|
+
"-c",
|
|
51
|
+
"log.showSignature=false",
|
|
52
|
+
"-c",
|
|
53
|
+
"commit.gpgSign=false",
|
|
54
|
+
"-c",
|
|
55
|
+
"tag.gpgSign=false",
|
|
56
|
+
"-c",
|
|
57
|
+
"merge.verifySignatures=false",
|
|
58
|
+
"-c",
|
|
59
|
+
"submodule.recurse=false",
|
|
60
|
+
];
|
|
61
|
+
/**
|
|
62
|
+
* Inserted right after the subcommand of diff-producing commands: external
|
|
63
|
+
* diff drivers (`diff.external`, `diff.<driver>.command`) and `textconv`
|
|
64
|
+
* filters are repo-configured programs. `-c diff.external=` is NOT used — an
|
|
65
|
+
* empty value makes `git diff` die with "cannot run".
|
|
66
|
+
*/
|
|
67
|
+
export const GIT_NO_EXTERNAL_DIFF_ARGS = ["--no-ext-diff", "--no-textconv"];
|
|
68
|
+
const DIFF_FAMILY = new Set(["diff", "show", "log"]);
|
|
69
|
+
/**
|
|
70
|
+
* Inserted after `status`: inspecting a submodule's work tree spawns a nested
|
|
71
|
+
* `git status` inside it, which honours the submodule's OWN filter drivers
|
|
72
|
+
* (its config was never probed). `dirty` still reports moved submodule
|
|
73
|
+
* commits but never enters the submodule work tree. Skipped when the caller
|
|
74
|
+
* passes its own `--ignore-submodules`.
|
|
75
|
+
*/
|
|
76
|
+
export const GIT_STATUS_SUBMODULE_ARGS = ["--ignore-submodules=dirty"];
|
|
77
|
+
/**
|
|
78
|
+
* Subcommands that never hash or check out work-tree content, so no
|
|
79
|
+
* clean/smudge/process filter can run — the per-driver probe is skipped.
|
|
80
|
+
*/
|
|
81
|
+
const NO_FILTER_SUBCOMMANDS = new Set(["rev-parse", "remote", "rev-list", "patch-id", "show"]);
|
|
82
|
+
const PROBE_TIMEOUT_MS = 2_000;
|
|
83
|
+
/**
|
|
84
|
+
* Build `-c` overrides that blank every filter / merge driver named in the
|
|
85
|
+
* NUL-separated output of `git config -z --name-only --get-regexp`. Returns
|
|
86
|
+
* null when a driver name contains `=` — `-c` splits at the first `=`, so the
|
|
87
|
+
* override could not be expressed and the caller must refuse to run.
|
|
88
|
+
*/
|
|
89
|
+
export function buildDriverOverrides(outputs) {
|
|
90
|
+
const filters = new Set();
|
|
91
|
+
const merges = new Set();
|
|
92
|
+
for (const output of outputs) {
|
|
93
|
+
for (const name of output.split(/[\0\n]/)) {
|
|
94
|
+
const filter = /^filter\.(.+)\.(?:clean|smudge|process|required)$/is.exec(name)?.[1];
|
|
95
|
+
const merge = /^merge\.(.+)\.driver$/is.exec(name)?.[1];
|
|
96
|
+
const driver = filter ?? merge;
|
|
97
|
+
if (driver === undefined)
|
|
98
|
+
continue;
|
|
99
|
+
if (driver.includes("="))
|
|
100
|
+
return null;
|
|
101
|
+
(filter !== undefined ? filters : merges).add(driver);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
const args = [];
|
|
105
|
+
for (const driver of filters) {
|
|
106
|
+
args.push("-c", `filter.${driver}.clean=`, "-c", `filter.${driver}.smudge=`, "-c", `filter.${driver}.process=`,
|
|
107
|
+
// A blanked `required` filter would otherwise make status die.
|
|
108
|
+
"-c", `filter.${driver}.required=false`);
|
|
109
|
+
}
|
|
110
|
+
for (const driver of merges)
|
|
111
|
+
args.push("-c", `merge.${driver}.driver=`);
|
|
112
|
+
return args;
|
|
113
|
+
}
|
|
114
|
+
let cachedGitBinary;
|
|
115
|
+
/**
|
|
116
|
+
* The git executable. On Windows, libuv's PATH search tries the child's cwd
|
|
117
|
+
* first, so a `git.exe` planted at a repo root would run instead of git —
|
|
118
|
+
* resolve an absolute path from PATH once instead.
|
|
119
|
+
*/
|
|
120
|
+
export function resolveGitBinary() {
|
|
121
|
+
if (cachedGitBinary !== undefined)
|
|
122
|
+
return cachedGitBinary;
|
|
123
|
+
cachedGitBinary = "git";
|
|
124
|
+
if (process.platform === "win32") {
|
|
125
|
+
for (const dir of (process.env.PATH ?? "").split(path.delimiter)) {
|
|
126
|
+
const clean = dir.trim().replace(/^"|"$/g, "");
|
|
127
|
+
if (!clean || !path.isAbsolute(clean))
|
|
128
|
+
continue;
|
|
129
|
+
const candidate = path.join(clean, "git.exe");
|
|
130
|
+
try {
|
|
131
|
+
if (statSync(candidate).isFile()) {
|
|
132
|
+
cachedGitBinary = candidate;
|
|
133
|
+
break;
|
|
134
|
+
}
|
|
8
135
|
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
136
|
+
catch {
|
|
137
|
+
// not here
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return cachedGitBinary;
|
|
12
142
|
}
|
|
13
|
-
/**
|
|
14
|
-
|
|
143
|
+
/**
|
|
144
|
+
* Rejection of {@link runBackgroundGit}, shaped like a promisified execFile
|
|
145
|
+
* error: `code` is git's exit status (number) or a spawn errno (string).
|
|
146
|
+
*/
|
|
147
|
+
export class BackgroundGitError extends Error {
|
|
148
|
+
code;
|
|
149
|
+
killed;
|
|
150
|
+
stdout;
|
|
151
|
+
stderr;
|
|
152
|
+
constructor(message, details) {
|
|
153
|
+
super(message);
|
|
154
|
+
this.name = "BackgroundGitError";
|
|
155
|
+
this.code = details.code;
|
|
156
|
+
this.killed = details.killed;
|
|
157
|
+
this.stdout = details.stdout;
|
|
158
|
+
this.stderr = details.stderr;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
function spawnGit(args, options) {
|
|
15
162
|
return new Promise((resolve, reject) => {
|
|
16
|
-
execFile(
|
|
17
|
-
|
|
18
|
-
|
|
163
|
+
const child = execFile(resolveGitBinary(), [...args], {
|
|
164
|
+
cwd: options.cwd,
|
|
165
|
+
timeout: options.timeoutMs ?? 2_000,
|
|
166
|
+
maxBuffer: options.maxBuffer ?? 1024 * 1024,
|
|
167
|
+
signal: options.signal,
|
|
168
|
+
windowsHide: true,
|
|
169
|
+
encoding: "utf8",
|
|
170
|
+
env: {
|
|
171
|
+
...process.env,
|
|
172
|
+
GIT_TERMINAL_PROMPT: "0",
|
|
173
|
+
GIT_OPTIONAL_LOCKS: "0",
|
|
174
|
+
GIT_PAGER: "cat",
|
|
175
|
+
GIT_NO_LAZY_FETCH: "1",
|
|
176
|
+
...options.env,
|
|
177
|
+
},
|
|
178
|
+
}, (error, stdout, stderr) => {
|
|
179
|
+
if (!error) {
|
|
180
|
+
resolve({ stdout, stderr });
|
|
19
181
|
return;
|
|
20
182
|
}
|
|
21
|
-
|
|
183
|
+
const code = error.code;
|
|
184
|
+
reject(new BackgroundGitError(error.message, {
|
|
185
|
+
code: typeof code === "number" || typeof code === "string" ? code : null,
|
|
186
|
+
killed: error.killed === true,
|
|
187
|
+
stdout,
|
|
188
|
+
stderr,
|
|
189
|
+
}));
|
|
22
190
|
});
|
|
191
|
+
if (options.input !== undefined && child.stdin) {
|
|
192
|
+
child.stdin.on("error", () => {
|
|
193
|
+
// git exited before reading all input; the exit callback reports it.
|
|
194
|
+
});
|
|
195
|
+
child.stdin.end(options.input);
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
/** Repo-local filter/merge driver overrides, or null when they cannot be expressed. */
|
|
200
|
+
async function probeDriverOverrides(options) {
|
|
201
|
+
const outputs = await Promise.all(["--local", "--worktree"].map(async (scope) => {
|
|
202
|
+
try {
|
|
203
|
+
const { stdout } = await spawnGit([
|
|
204
|
+
...GIT_HARDENING_CONFIG_ARGS,
|
|
205
|
+
...(options.globalArgs ?? []),
|
|
206
|
+
"config",
|
|
207
|
+
scope,
|
|
208
|
+
"--includes",
|
|
209
|
+
"-z",
|
|
210
|
+
"--name-only",
|
|
211
|
+
"--get-regexp",
|
|
212
|
+
"^(filter|merge)\\.",
|
|
213
|
+
], {
|
|
214
|
+
cwd: options.cwd,
|
|
215
|
+
timeoutMs: PROBE_TIMEOUT_MS,
|
|
216
|
+
signal: options.signal,
|
|
217
|
+
env: options.env,
|
|
218
|
+
});
|
|
219
|
+
return stdout;
|
|
220
|
+
}
|
|
221
|
+
catch (error) {
|
|
222
|
+
// Exit 1 = no matching keys; 128/129 = not a repo / old git without
|
|
223
|
+
// --worktree. Spawn failures and timeouts fail closed.
|
|
224
|
+
if (error instanceof BackgroundGitError && typeof error.code === "number" && !error.killed)
|
|
225
|
+
return "";
|
|
226
|
+
throw error;
|
|
227
|
+
}
|
|
228
|
+
}));
|
|
229
|
+
return buildDriverOverrides(outputs);
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Full argv for a hardened background git call (minus the binary). Exposed
|
|
233
|
+
* for tests; callers use {@link runBackgroundGit}.
|
|
234
|
+
*/
|
|
235
|
+
export async function hardenedGitArgs(args, options) {
|
|
236
|
+
const [subcommand, ...rest] = args;
|
|
237
|
+
let drivers = [];
|
|
238
|
+
if (subcommand === undefined || !NO_FILTER_SUBCOMMANDS.has(subcommand)) {
|
|
239
|
+
const probed = await probeDriverOverrides(options);
|
|
240
|
+
if (probed === null) {
|
|
241
|
+
throw new BackgroundGitError("git config names a filter/merge driver that cannot be disabled", {
|
|
242
|
+
code: null,
|
|
243
|
+
killed: false,
|
|
244
|
+
stdout: "",
|
|
245
|
+
stderr: "",
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
drivers = probed;
|
|
249
|
+
}
|
|
250
|
+
let command = [...args];
|
|
251
|
+
if (subcommand !== undefined && DIFF_FAMILY.has(subcommand)) {
|
|
252
|
+
command = [subcommand, ...GIT_NO_EXTERNAL_DIFF_ARGS, ...rest];
|
|
253
|
+
}
|
|
254
|
+
else if (subcommand === "status" &&
|
|
255
|
+
!rest
|
|
256
|
+
.slice(0, rest.includes("--") ? rest.indexOf("--") : rest.length)
|
|
257
|
+
.some((arg) => arg.startsWith("--ignore-submodules"))) {
|
|
258
|
+
command = [subcommand, ...GIT_STATUS_SUBMODULE_ARGS, ...rest];
|
|
259
|
+
}
|
|
260
|
+
return [...GIT_HARDENING_CONFIG_ARGS, ...drivers, ...(options.globalArgs ?? []), ...command];
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Run git for GG's own background purposes with repo-config execution sinks
|
|
264
|
+
* disabled. Resolves `{stdout, stderr}` on exit 0; rejects with
|
|
265
|
+
* {@link BackgroundGitError} otherwise. Output is identical to plain git.
|
|
266
|
+
*/
|
|
267
|
+
export async function runBackgroundGit(args, options) {
|
|
268
|
+
return spawnGit(await hardenedGitArgs(args, options), options);
|
|
269
|
+
}
|
|
270
|
+
// ── Background helpers ──────────────────────────────────────────────────────
|
|
271
|
+
export async function getGitBranch(cwd) {
|
|
272
|
+
try {
|
|
273
|
+
const { stdout } = await runBackgroundGit(["rev-parse", "--abbrev-ref", "HEAD"], { cwd });
|
|
274
|
+
return stdout.trim() || null;
|
|
275
|
+
}
|
|
276
|
+
catch {
|
|
277
|
+
return null;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
/** Count staged, modified, deleted, renamed, and untracked files. */
|
|
281
|
+
export async function getGitDirtyFileCount(cwd) {
|
|
282
|
+
const { stdout } = await runBackgroundGit(["status", "--porcelain=v1", "--untracked-files=all"], {
|
|
283
|
+
cwd,
|
|
23
284
|
});
|
|
285
|
+
return stdout.split(/\r?\n/).filter(Boolean).length;
|
|
24
286
|
}
|
|
25
287
|
/**
|
|
26
288
|
* Whether `cwd` is inside a git work tree. Distinct from getGitBranch, which
|
|
27
289
|
* returns null both for non-repos AND for freshly-init'd repos with no commits
|
|
28
290
|
* (rev-parse HEAD fails before the first commit).
|
|
29
291
|
*/
|
|
30
|
-
export function isGitRepo(cwd) {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
292
|
+
export async function isGitRepo(cwd) {
|
|
293
|
+
try {
|
|
294
|
+
const { stdout } = await runBackgroundGit(["rev-parse", "--is-inside-work-tree"], { cwd });
|
|
295
|
+
return stdout.trim() === "true";
|
|
296
|
+
}
|
|
297
|
+
catch {
|
|
298
|
+
return false;
|
|
299
|
+
}
|
|
36
300
|
}
|
|
37
301
|
//# sourceMappingURL=git.js.map
|
package/dist/utils/git.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/github-ci.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { execFile } from "node:child_process";
|
|
2
2
|
import { promisify } from "node:util";
|
|
3
3
|
import { z } from "zod";
|
|
4
|
+
import { runBackgroundGit } from "./git.js";
|
|
4
5
|
import { getGitHubRepoSlug } from "./github.js";
|
|
5
6
|
const exec = promisify(execFile);
|
|
6
7
|
const resultSchema = z.object({
|
|
@@ -68,7 +69,7 @@ export async function getGitHubCI(slug, sha, signal) {
|
|
|
68
69
|
async function context(cwd) {
|
|
69
70
|
const [slug, head] = await Promise.all([
|
|
70
71
|
getGitHubRepoSlug(cwd),
|
|
71
|
-
|
|
72
|
+
runBackgroundGit(["rev-parse", "--verify", "HEAD"], { cwd, timeoutMs: 2000 }).catch(() => null),
|
|
72
73
|
]);
|
|
73
74
|
return slug && head ? { slug, sha: head.stdout.trim() } : null;
|
|
74
75
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github-ci.js","sourceRoot":"","sources":["../../src/utils/github-ci.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"github-ci.js","sourceRoot":"","sources":["../../src/utils/github-ci.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/github.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { execFile } from "node:child_process";
|
|
2
|
+
import { runBackgroundGit } from "./git.js";
|
|
2
3
|
/**
|
|
3
4
|
* Parse an `owner/repo` slug from a GitHub remote URL. Handles the three
|
|
4
5
|
* common remote shapes: https (`https://github.com/o/r(.git)`), scp-style ssh
|
|
@@ -13,16 +14,17 @@ export function parseGitHubSlug(remoteUrl) {
|
|
|
13
14
|
return `${match[1]}/${match[2]}`;
|
|
14
15
|
}
|
|
15
16
|
/** The `owner/repo` slug of the cwd's `origin` remote, or null when absent/non-GitHub. */
|
|
16
|
-
export function getGitHubRepoSlug(cwd) {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
return;
|
|
22
|
-
}
|
|
23
|
-
resolve(parseGitHubSlug(stdout));
|
|
17
|
+
export async function getGitHubRepoSlug(cwd) {
|
|
18
|
+
try {
|
|
19
|
+
const { stdout } = await runBackgroundGit(["remote", "get-url", "origin"], {
|
|
20
|
+
cwd,
|
|
21
|
+
timeoutMs: 2000,
|
|
24
22
|
});
|
|
25
|
-
|
|
23
|
+
return parseGitHubSlug(stdout);
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
26
28
|
}
|
|
27
29
|
function ghSearchTotalCount(slug, qualifier) {
|
|
28
30
|
return new Promise((resolve, reject) => {
|
package/dist/utils/github.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/utils/github.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/utils/github.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,SAAiB;IAC/C,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;IACjC,MAAM,KAAK,GACT,qFAAqF,CAAC,IAAI,CACxF,OAAO,CACR,IAAI,qDAAqD,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3E,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AACnC,CAAC;AAED,0FAA0F;AAC1F,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,GAAW;IACjD,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,gBAAgB,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE;YACzE,GAAG;YACH,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;QACH,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAOD,SAAS,kBAAkB,CAAC,IAAY,EAAE,SAAiB;IACzD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,QAAQ,CACN,IAAI,EACJ;YACE,KAAK;YACL,wBAAwB,IAAI,IAAI,SAAS,qBAAqB;YAC9D,MAAM;YACN,cAAc;SACf,EACD,EAAE,OAAO,EAAE,KAAK,EAAE,EAClB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YAChB,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,KAAK,CAAC,CAAC;gBACd,OAAO;YACT,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YACjD,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC5D,OAAO;YACT,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAAY;IACpD,IAAI,CAAC;QACH,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACtC,kBAAkB,CAAC,IAAI,EAAE,UAAU,CAAC;YACpC,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC;SAClC,CAAC,CAAC;QACH,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
package/dist/utils/image.d.ts
CHANGED
|
@@ -113,6 +113,20 @@ export declare function shrinkToFit(buffer: Buffer, mediaType: string): Promise<
|
|
|
113
113
|
* cosmetic and must never break the turn.
|
|
114
114
|
*/
|
|
115
115
|
export declare function downscaleForPreview(buffer: Buffer): Promise<Buffer>;
|
|
116
|
+
/**
|
|
117
|
+
* Inline previews (`details.imagePreviews`) for image blocks a tool returns
|
|
118
|
+
* without a file of its own (MCP servers). The chat only
|
|
119
|
+
* renders tool images from these previews, so a tool that skips them shows
|
|
120
|
+
* nothing live and only surfaces its images after a session reload.
|
|
121
|
+
*/
|
|
122
|
+
export declare function previewsForImageBlocks(blocks: readonly {
|
|
123
|
+
type: string;
|
|
124
|
+
mediaType?: string;
|
|
125
|
+
data?: string;
|
|
126
|
+
}[]): Promise<{
|
|
127
|
+
base64: string;
|
|
128
|
+
mediaType: string;
|
|
129
|
+
}[]>;
|
|
116
130
|
/**
|
|
117
131
|
* Read a file and return an attachment (base64 for images, raw text for text files).
|
|
118
132
|
*
|
package/dist/utils/image.js
CHANGED
|
@@ -464,6 +464,22 @@ export async function downscaleForPreview(buffer) {
|
|
|
464
464
|
return buffer;
|
|
465
465
|
}
|
|
466
466
|
}
|
|
467
|
+
/**
|
|
468
|
+
* Inline previews (`details.imagePreviews`) for image blocks a tool returns
|
|
469
|
+
* without a file of its own (MCP servers). The chat only
|
|
470
|
+
* renders tool images from these previews, so a tool that skips them shows
|
|
471
|
+
* nothing live and only surfaces its images after a session reload.
|
|
472
|
+
*/
|
|
473
|
+
export async function previewsForImageBlocks(blocks) {
|
|
474
|
+
const previews = [];
|
|
475
|
+
for (const block of blocks) {
|
|
476
|
+
if (block.type !== "image" || !block.mediaType || !block.data)
|
|
477
|
+
continue;
|
|
478
|
+
const preview = await downscaleForPreview(Buffer.from(block.data, "base64"));
|
|
479
|
+
previews.push({ base64: preview.toString("base64"), mediaType: block.mediaType });
|
|
480
|
+
}
|
|
481
|
+
return previews;
|
|
482
|
+
}
|
|
467
483
|
/**
|
|
468
484
|
* Read a file and return an attachment (base64 for images, raw text for text files).
|
|
469
485
|
*
|