@kenkaiiii/ggcoder 5.68.0 → 5.69.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.
Files changed (79) hide show
  1. package/dist/app-sidecar.js +26 -11
  2. package/dist/app-sidecar.js.map +1 -1
  3. package/dist/cli.js +15 -14
  4. package/dist/cli.js.map +1 -1
  5. package/dist/core/agent-session.d.ts +18 -0
  6. package/dist/core/agent-session.js +125 -1
  7. package/dist/core/agent-session.js.map +1 -1
  8. package/dist/core/cache-diagnostics.d.ts +68 -0
  9. package/dist/core/cache-diagnostics.js +196 -0
  10. package/dist/core/cache-diagnostics.js.map +1 -0
  11. package/dist/core/cache-expiry.d.ts +87 -0
  12. package/dist/core/cache-expiry.js +111 -0
  13. package/dist/core/cache-expiry.js.map +1 -0
  14. package/dist/core/destructive-git-guard.d.ts +27 -0
  15. package/dist/core/destructive-git-guard.js +94 -54
  16. package/dist/core/destructive-git-guard.js.map +1 -1
  17. package/dist/core/injection-detect.d.ts +38 -0
  18. package/dist/core/injection-detect.js +232 -0
  19. package/dist/core/injection-detect.js.map +1 -0
  20. package/dist/core/mcp/client.d.ts +72 -0
  21. package/dist/core/mcp/client.js +264 -41
  22. package/dist/core/mcp/client.js.map +1 -1
  23. package/dist/core/mcp/store.d.ts +6 -1
  24. package/dist/core/mcp/store.js +12 -1
  25. package/dist/core/mcp/store.js.map +1 -1
  26. package/dist/core/mcp/types.d.ts +18 -0
  27. package/dist/core/persistent-shell.d.ts +58 -6
  28. package/dist/core/persistent-shell.js +331 -49
  29. package/dist/core/persistent-shell.js.map +1 -1
  30. package/dist/core/progress/git-xp.js +8 -14
  31. package/dist/core/progress/git-xp.js.map +1 -1
  32. package/dist/core/subagent-manager.d.ts +9 -0
  33. package/dist/core/subagent-manager.js +7 -1
  34. package/dist/core/subagent-manager.js.map +1 -1
  35. package/dist/core/subagent-receipt.d.ts +54 -0
  36. package/dist/core/subagent-receipt.js +276 -0
  37. package/dist/core/subagent-receipt.js.map +1 -0
  38. package/dist/core/subagent-turn-record.d.ts +2 -0
  39. package/dist/core/subagent-turn-record.js.map +1 -1
  40. package/dist/core/verification-snapshot.js +3 -5
  41. package/dist/core/verification-snapshot.js.map +1 -1
  42. package/dist/core/workspace-guard.d.ts +18 -7
  43. package/dist/core/workspace-guard.js +227 -60
  44. package/dist/core/workspace-guard.js.map +1 -1
  45. package/dist/modes/subagent-worker-mode.js +18 -2
  46. package/dist/modes/subagent-worker-mode.js.map +1 -1
  47. package/dist/motion-agent/motion-check-tool.d.ts +7 -0
  48. package/dist/motion-agent/motion-check-tool.js +20 -1
  49. package/dist/motion-agent/motion-check-tool.js.map +1 -1
  50. package/dist/tools/bash.js +12 -4
  51. package/dist/tools/bash.js.map +1 -1
  52. package/dist/tools/read.js +3 -2
  53. package/dist/tools/read.js.map +1 -1
  54. package/dist/tools/steroids.d.ts +1 -1
  55. package/dist/tools/subagent-control.js +34 -6
  56. package/dist/tools/subagent-control.js.map +1 -1
  57. package/dist/tools/subagent-shared.d.ts +13 -0
  58. package/dist/tools/subagent-shared.js +25 -0
  59. package/dist/tools/subagent-shared.js.map +1 -1
  60. package/dist/tools/subagent.js +14 -3
  61. package/dist/tools/subagent.js.map +1 -1
  62. package/dist/tools/task-output.js +3 -2
  63. package/dist/tools/task-output.js.map +1 -1
  64. package/dist/tools/truncate.d.ts +21 -0
  65. package/dist/tools/truncate.js +187 -0
  66. package/dist/tools/truncate.js.map +1 -1
  67. package/dist/tools/ui-adopt.js +2 -0
  68. package/dist/tools/ui-adopt.js.map +1 -1
  69. package/dist/utils/git.d.ts +77 -0
  70. package/dist/utils/git.js +285 -21
  71. package/dist/utils/git.js.map +1 -1
  72. package/dist/utils/github-ci.js +2 -1
  73. package/dist/utils/github-ci.js.map +1 -1
  74. package/dist/utils/github.js +11 -9
  75. package/dist/utils/github.js.map +1 -1
  76. package/dist/utils/process.d.ts +20 -0
  77. package/dist/utils/process.js +98 -0
  78. package/dist/utils/process.js.map +1 -1
  79. package/package.json +4 -4
package/dist/utils/git.js CHANGED
@@ -1,37 +1,301 @@
1
1
  import { execFile } from "node:child_process";
2
- export function getGitBranch(cwd) {
3
- return new Promise((resolve) => {
4
- execFile("git", ["rev-parse", "--abbrev-ref", "HEAD"], { cwd, timeout: 2000 }, (error, stdout) => {
5
- if (error) {
6
- resolve(null);
7
- return;
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
- resolve(stdout.trim() || null);
10
- });
11
- });
136
+ catch {
137
+ // not here
138
+ }
139
+ }
140
+ }
141
+ return cachedGitBinary;
12
142
  }
13
- /** Count staged, modified, deleted, renamed, and untracked files. */
14
- export function getGitDirtyFileCount(cwd) {
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("git", ["status", "--porcelain=v1", "--untracked-files=all"], { cwd, timeout: 2000 }, (error, stdout) => {
17
- if (error) {
18
- reject(error);
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
- resolve(stdout.split(/\r?\n/).filter(Boolean).length);
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
- return new Promise((resolve) => {
32
- execFile("git", ["rev-parse", "--is-inside-work-tree"], { cwd, timeout: 2000 }, (error, stdout) => {
33
- resolve(!error && stdout.trim() === "true");
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
@@ -1 +1 @@
1
- {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,QAAQ,CACN,KAAK,EACL,CAAC,WAAW,EAAE,cAAc,EAAE,MAAM,CAAC,EACrC,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,EACtB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YAChB,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,CAAC,IAAI,CAAC,CAAC;gBACd,OAAO;YACT,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;QACjC,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,QAAQ,CACN,KAAK,EACL,CAAC,QAAQ,EAAE,gBAAgB,EAAE,uBAAuB,CAAC,EACrD,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,EACtB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YAChB,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,KAAK,CAAC,CAAC;gBACd,OAAO;YACT,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;QACxD,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,QAAQ,CACN,KAAK,EACL,CAAC,WAAW,EAAE,uBAAuB,CAAC,EACtC,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,EACtB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YAChB,OAAO,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,MAAM,CAAC,CAAC;QAC9C,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"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"}
@@ -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
- exec("git", ["rev-parse", "--verify", "HEAD"], { cwd, timeout: 2000 }).catch(() => null),
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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"}
@@ -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
- return new Promise((resolve) => {
18
- execFile("git", ["remote", "get-url", "origin"], { cwd, timeout: 2000 }, (error, stdout) => {
19
- if (error) {
20
- resolve(null);
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) => {
@@ -1 +1 @@
1
- {"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/utils/github.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C;;;;;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,UAAU,iBAAiB,CAAC,GAAW;IAC3C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,QAAQ,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YACzF,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,CAAC,IAAI,CAAC,CAAC;gBACd,OAAO;YACT,CAAC;YACD,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,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"}
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"}
@@ -26,3 +26,23 @@ export declare function resolveWindowsTaskkillPath(env?: NodeJS.ProcessEnv): str
26
26
  * forever. Use `taskkill /T /F` instead, falling back to the direct pid.
27
27
  */
28
28
  export declare function killProcessTree(pid: number, options?: ProcessTreeKillOptions): void;
29
+ export interface ProcessTableOptions {
30
+ platform?: NodeJS.Platform;
31
+ /** Injected for tests: returns `[pid, ppid]` pairs for every process. */
32
+ readTable?: () => Array<[number, number]>;
33
+ }
34
+ /**
35
+ * Every live descendant of `pid` (breadth-first, excluding `pid` itself),
36
+ * found by parent links — so it also covers children that left the process
37
+ * group, unlike a group kill. POSIX only; returns `[]` on Windows, where
38
+ * shell pids (msys) do not map onto the native process table.
39
+ */
40
+ export declare function listDescendantPids(pid: number, options?: ProcessTableOptions): number[];
41
+ /**
42
+ * Signal every descendant of `pid` without touching `pid` itself — stops a
43
+ * persistent shell's running command while the shell survives. Returns how
44
+ * many processes were signalled.
45
+ */
46
+ export declare function signalDescendants(pid: number, signal: NodeJS.Signals, options?: ProcessTableOptions & {
47
+ kill?: typeof process.kill;
48
+ }): number;
@@ -1,4 +1,5 @@
1
1
  import { spawnSync } from "node:child_process";
2
+ import { existsSync, readdirSync, readFileSync } from "node:fs";
2
3
  import path from "node:path";
3
4
  const DEFAULT_TASKKILL_TIMEOUT_MS = 5_000;
4
5
  function getEnvCaseInsensitive(env, name) {
@@ -74,4 +75,101 @@ function killSingleProcess(pid, kill) {
74
75
  // Process already exited.
75
76
  }
76
77
  }
78
+ /** `[pid, ppid]` for every live process, from `/proc` (Linux) or `ps`. */
79
+ function readProcessTable(platform) {
80
+ if (platform === "linux") {
81
+ try {
82
+ const rows = [];
83
+ for (const name of readdirSync("/proc")) {
84
+ if (!/^\d+$/.test(name))
85
+ continue;
86
+ try {
87
+ // `pid (comm) state ppid …` — comm may contain spaces/parens, so
88
+ // parse from the LAST `)`.
89
+ const stat = readFileSync(`/proc/${name}/stat`, "utf-8");
90
+ const ppid = parseInt(stat.slice(stat.lastIndexOf(")") + 2).split(" ")[1] ?? "", 10);
91
+ if (!Number.isNaN(ppid))
92
+ rows.push([Number(name), ppid]);
93
+ }
94
+ catch {
95
+ // Exited mid-scan.
96
+ }
97
+ }
98
+ if (rows.length > 0)
99
+ return rows;
100
+ }
101
+ catch {
102
+ // No readable /proc — fall through to ps.
103
+ }
104
+ }
105
+ // Absolute path when present: a bare `ps` is resolvable through a PATH we
106
+ // do not control.
107
+ const ps = existsSync("/bin/ps") ? "/bin/ps" : "ps";
108
+ const res = spawnSync(ps, ["-A", "-o", "pid=", "-o", "ppid="], {
109
+ encoding: "utf-8",
110
+ stdio: ["ignore", "pipe", "ignore"],
111
+ timeout: 5_000,
112
+ });
113
+ if (res.status !== 0 || typeof res.stdout !== "string")
114
+ return [];
115
+ const rows = [];
116
+ for (const line of res.stdout.split("\n")) {
117
+ const [pid, ppid] = line.trim().split(/\s+/).map(Number);
118
+ if (Number.isInteger(pid) && Number.isInteger(ppid))
119
+ rows.push([pid, ppid]);
120
+ }
121
+ return rows;
122
+ }
123
+ /**
124
+ * Every live descendant of `pid` (breadth-first, excluding `pid` itself),
125
+ * found by parent links — so it also covers children that left the process
126
+ * group, unlike a group kill. POSIX only; returns `[]` on Windows, where
127
+ * shell pids (msys) do not map onto the native process table.
128
+ */
129
+ export function listDescendantPids(pid, options = {}) {
130
+ const platform = options.platform ?? process.platform;
131
+ if (platform === "win32")
132
+ return [];
133
+ const table = options.readTable ? options.readTable() : readProcessTable(platform);
134
+ const children = new Map();
135
+ for (const [child, parent] of table) {
136
+ if (child === parent)
137
+ continue;
138
+ const list = children.get(parent);
139
+ if (list)
140
+ list.push(child);
141
+ else
142
+ children.set(parent, [child]);
143
+ }
144
+ const seen = new Set();
145
+ const queue = [pid];
146
+ while (queue.length > 0) {
147
+ for (const child of children.get(queue.shift()) ?? []) {
148
+ if (child === pid || seen.has(child))
149
+ continue;
150
+ seen.add(child);
151
+ queue.push(child);
152
+ }
153
+ }
154
+ return [...seen];
155
+ }
156
+ /**
157
+ * Signal every descendant of `pid` without touching `pid` itself — stops a
158
+ * persistent shell's running command while the shell survives. Returns how
159
+ * many processes were signalled.
160
+ */
161
+ export function signalDescendants(pid, signal, options = {}) {
162
+ const kill = options.kill ?? process.kill;
163
+ let signalled = 0;
164
+ for (const child of listDescendantPids(pid, options)) {
165
+ try {
166
+ kill(child, signal);
167
+ signalled++;
168
+ }
169
+ catch {
170
+ // Already gone.
171
+ }
172
+ }
173
+ return signalled;
174
+ }
77
175
  //# sourceMappingURL=process.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"process.js","sourceRoot":"","sources":["../../src/utils/process.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"process.js","sourceRoot":"","sources":["../../src/utils/process.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kenkaiiii/ggcoder",
3
- "version": "5.68.0",
3
+ "version": "5.69.0",
4
4
  "type": "module",
5
5
  "description": "CLI coding agent with OAuth authentication for Anthropic, OpenAI, and Gemini",
6
6
  "license": "MIT",
@@ -115,9 +115,9 @@
115
115
  "typescript-language-server": "^5.3.0",
116
116
  "wrap-ansi": "^10.0.0",
117
117
  "zod": "^4.4.3",
118
- "@kenkaiiii/gg-agent": "5.68.0",
119
- "@kenkaiiii/gg-ai": "5.68.0",
120
- "@kenkaiiii/gg-core": "5.68.0"
118
+ "@kenkaiiii/gg-agent": "5.69.0",
119
+ "@kenkaiiii/gg-ai": "5.69.0",
120
+ "@kenkaiiii/gg-core": "5.69.0"
121
121
  },
122
122
  "optionalDependencies": {
123
123
  "@huggingface/transformers": "4.2.0",