@kenkaiiii/ggcoder 5.49.9 → 5.49.11

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.
@@ -1,5 +1,7 @@
1
1
  /** Follow-ups per run. After this the gate is silent for the rest of the run. */
2
2
  export const MAX_VERIFICATION_INJECTIONS = 1;
3
+ /** Tamper-disclosure demands per run. Same reasoning as above: one is enough. */
4
+ export const MAX_TAMPER_INJECTIONS = 1;
3
5
  /** Words that may precede the real command without changing its shape. */
4
6
  const SHELL_WRAPPERS = new Set([
5
7
  "env",
@@ -219,6 +221,114 @@ const CODE_EXT_RE = /\.(?:[cm]?[jt]sx?|py|rb|go|rs|java|kt|kts|swift|c|h|cpp|cc|
219
221
  export function isCodeFilePath(filePath) {
220
222
  return CODE_EXT_RE.test(filePath);
221
223
  }
224
+ /**
225
+ * Files that define what a check ASSERTS rather than what it tests: test files
226
+ * and test directories, test-runner configs, and the type/lint configs whose
227
+ * strictness the checks inherit. Editing one of these can turn a failing check
228
+ * green without touching the behaviour under test.
229
+ *
230
+ * Deliberately matched on path shape only. Both error directions are cheap: a
231
+ * miss leaves today's behavior, a false positive costs one disclosure sentence.
232
+ */
233
+ export function isCheckOwnFile(filePath) {
234
+ const normalized = filePath.replace(/\\/g, "/");
235
+ const base = normalized.slice(normalized.lastIndexOf("/") + 1);
236
+ // A test/spec file, by suffix (foo.test.ts, foo_test.go, test_foo.py).
237
+ if (/\.(?:test|spec)\.[cm]?[jt]sx?$/.test(base))
238
+ return true;
239
+ if (/_test\.(?:go|py|rb|rs)$/.test(base) || /^test_.+\.py$/.test(base))
240
+ return true;
241
+ if (/(?:^|\.)spec\.[cm]?[jt]sx?$/.test(base))
242
+ return true;
243
+ // Anything under a tests directory.
244
+ if (/(?:^|\/)(?:tests?|__tests__|spec|specs|e2e|testdata|fixtures)\//.test(normalized)) {
245
+ return true;
246
+ }
247
+ // Test-runner and check configuration.
248
+ if (/^(?:vitest|jest|playwright|cypress|karma|mocha|ava|nightwatch|wdio)\.config\.[cm]?[jt]s$/.test(base)) {
249
+ return true;
250
+ }
251
+ if (/^(?:jest|vitest|mocha|ava|nyc|c8)\.(?:config|setup)\./.test(base))
252
+ return true;
253
+ // Type / lint configuration whose strictness the checks inherit.
254
+ if (/^tsconfig(?:\.[\w-]+)?\.json$/.test(base))
255
+ return true;
256
+ if (/^(?:\.eslintrc(?:\.[\w-]+)?|eslint\.config\.[cm]?[jt]s)$/.test(base))
257
+ return true;
258
+ if (/^(?:biome|\.golangci|\.rubocop|phpstan|psalm)\.(?:jsonc?|ya?ml|neon|xml|toml)$/.test(base)) {
259
+ return true;
260
+ }
261
+ if (/^(?:pyproject\.toml|setup\.cfg|tox\.ini|pytest\.ini|mypy\.ini|\.flake8)$/.test(base)) {
262
+ return true;
263
+ }
264
+ if (/^conftest\.py$/.test(base))
265
+ return true;
266
+ return false;
267
+ }
268
+ /**
269
+ * Markers that silence or skip a check rather than satisfy it. Matched only
270
+ * against text the model ADDED, so pre-existing suppressions in a file never
271
+ * trip the gate.
272
+ *
273
+ * Deliberately limited to unambiguous intent (an explicit suppression pragma, a
274
+ * skipped or narrowed test). Judgement calls that are ordinary in real test code
275
+ * — `as any`, a loosened assertion — are NOT matched: at one extra model turn
276
+ * per false positive, a noisy signal costs more than the rare miss.
277
+ */
278
+ const SUPPRESSION_MARKERS = [
279
+ { re: /@ts-(?:ignore|expect-error|nocheck)\b/, what: "TypeScript error suppression" },
280
+ { re: /eslint-disable(?:-next-line|-line)?\b/, what: "ESLint rule suppression" },
281
+ { re: /#\s*type:\s*ignore\b/, what: "mypy type-ignore" },
282
+ { re: /#\s*noqa\b/, what: "flake8/ruff noqa" },
283
+ { re: /#\s*(?:pylint|mypy|ruff):\s*disable\b/, what: "Python linter suppression" },
284
+ { re: /#\[allow\(/, what: "Rust allow attribute" },
285
+ { re: /\/\/\s*nolint\b/, what: "Go nolint directive" },
286
+ { re: /@SuppressWarnings\b/, what: "Java warning suppression" },
287
+ {
288
+ re: /\b(?:it|test|describe|context)\s*\.\s*(?:skip|todo)\s*\(/,
289
+ what: "skipped test",
290
+ },
291
+ { re: /\b(?:xit|xdescribe|xtest)\s*\(/, what: "skipped test" },
292
+ {
293
+ re: /\b(?:it|test|describe|context)\s*\.\s*only\s*\(/,
294
+ what: "test run narrowed to .only",
295
+ },
296
+ { re: /@pytest\.mark\.(?:skip|xfail)\b/, what: "skipped pytest case" },
297
+ { re: /\bt\.Skip\s*\(/, what: "skipped Go test" },
298
+ { re: /#\[ignore\]/, what: "ignored Rust test" },
299
+ ];
300
+ /** The `+` lines of a unified diff, with the marker stripped. */
301
+ export function extractAddedLines(diff) {
302
+ return diff
303
+ .split("\n")
304
+ .filter((line) => line.startsWith("+") && !line.startsWith("+++"))
305
+ .map((line) => line.slice(1))
306
+ .join("\n");
307
+ }
308
+ /** Suppression/skip markers present in newly added text, de-duplicated. */
309
+ export function detectCheckWeakening(addedText) {
310
+ const found = new Set();
311
+ for (const { re, what } of SUPPRESSION_MARKERS) {
312
+ if (re.test(addedText))
313
+ found.add(what);
314
+ }
315
+ return [...found];
316
+ }
317
+ export function buildTamperDisclosureMessage(suspects) {
318
+ return {
319
+ role: "user",
320
+ provenance: { source: "runtime", kind: "completion_gate", visibility: "hidden" },
321
+ content: "Verification gate: a check passed in this run, but this run also changed what the " +
322
+ "checks themselves assert:\n" +
323
+ suspects.map(({ filePath, reason }) => `- ${filePath} — ${reason}`).join("\n") +
324
+ "\nA check that was itself edited does not prove the code works. If these edits were " +
325
+ "legitimate (a new test, a test corrected against agreed behaviour, a suppression the " +
326
+ "user asked for), say so plainly in your final response and state why the fix stands " +
327
+ "without them. If instead the check was weakened, skipped, narrowed or silenced to get " +
328
+ "a green result, revert that now and fix the underlying code. This is the only time you " +
329
+ "will be asked — do not describe the change as verified without addressing this.",
330
+ };
331
+ }
222
332
  export function buildVerificationFollowUpMessage(files) {
223
333
  return {
224
334
  role: "user",
@@ -243,11 +353,35 @@ export class VerificationGate {
243
353
  lastMutationSeq = 0;
244
354
  lastVerificationSeq = 0;
245
355
  injections = 0;
356
+ tamperInjections = 0;
246
357
  /** Code files mutated since the last verification — the gate's file list. */
247
358
  mutatedFiles = new Set();
248
- recordMutation(filePath) {
359
+ /**
360
+ * Mutations that changed what a check asserts. Keyed by path so repeated edits
361
+ * to one file disclose once. Deliberately NOT cleared by recordVerification():
362
+ * the whole point is that the passing check cannot clear the suspicion that it
363
+ * was the thing edited.
364
+ */
365
+ suspects = new Map();
366
+ /**
367
+ * @param addedText Text the model ADDED in this mutation (the `+` lines of a
368
+ * diff, or a written file's full content). Scanned for suppression and skip
369
+ * markers; omit it and only the path check applies.
370
+ */
371
+ recordMutation(filePath, addedText) {
249
372
  this.lastMutationSeq = ++this.seq;
250
373
  this.mutatedFiles.add(filePath);
374
+ const reasons = [];
375
+ if (isCheckOwnFile(filePath))
376
+ reasons.push("edits a test or check configuration");
377
+ if (addedText)
378
+ reasons.push(...detectCheckWeakening(addedText).map((what) => `adds ${what}`));
379
+ if (reasons.length === 0)
380
+ return;
381
+ // Keep the fullest reason seen for this file rather than the newest.
382
+ const existing = this.suspects.get(filePath);
383
+ const merged = [...new Set([...(existing?.split("; ") ?? []), ...reasons])].join("; ");
384
+ this.suspects.set(filePath, merged);
251
385
  }
252
386
  recordVerification() {
253
387
  this.lastVerificationSeq = ++this.seq;
@@ -256,13 +390,29 @@ export class VerificationGate {
256
390
  isOwed() {
257
391
  return this.lastMutationSeq > this.lastVerificationSeq;
258
392
  }
393
+ /**
394
+ * True when a check passed after the run altered what the checks assert —
395
+ * the false-green shape. Requires a verification to have completed: with none,
396
+ * the standard gate already demands one, and demanding disclosure of an
397
+ * unproven fix on top of it is noise.
398
+ */
399
+ isTamperOwed() {
400
+ return this.suspects.size > 0 && this.lastVerificationSeq > 0;
401
+ }
402
+ /** Suspect mutations recorded this run, sorted for stable output. */
403
+ tamperSuspects() {
404
+ return [...this.suspects]
405
+ .map(([filePath, reason]) => ({ filePath, reason }))
406
+ .sort((a, b) => a.filePath.localeCompare(b.filePath));
407
+ }
259
408
  /**
260
409
  * Would a stop right now inject? Lets the session arm clients BEFORE the
261
410
  * candidate final answer streams, so the draft the injection replaces is held
262
411
  * rather than painted and then superseded.
263
412
  */
264
413
  willInject() {
265
- return this.isOwed() && this.injections < MAX_VERIFICATION_INJECTIONS;
414
+ return ((this.isOwed() && this.injections < MAX_VERIFICATION_INJECTIONS) ||
415
+ (this.isTamperOwed() && this.tamperInjections < MAX_TAMPER_INJECTIONS));
266
416
  }
267
417
  /**
268
418
  * The blocking message for the pre-stop hook, or null when nothing is owed
@@ -271,17 +421,26 @@ export class VerificationGate {
271
421
  * and one more injection only costs the user another restated final answer.
272
422
  */
273
423
  followUp() {
274
- if (!this.willInject())
275
- return null;
276
- this.injections += 1;
277
- return [buildVerificationFollowUpMessage([...this.mutatedFiles].sort())];
424
+ // "Nothing proved this" outranks "the proof may be rigged": with no check
425
+ // run at all there is not yet a false green to disclose.
426
+ if (this.isOwed() && this.injections < MAX_VERIFICATION_INJECTIONS) {
427
+ this.injections += 1;
428
+ return [buildVerificationFollowUpMessage([...this.mutatedFiles].sort())];
429
+ }
430
+ if (this.isTamperOwed() && this.tamperInjections < MAX_TAMPER_INJECTIONS) {
431
+ this.tamperInjections += 1;
432
+ return [buildTamperDisclosureMessage(this.tamperSuspects())];
433
+ }
434
+ return null;
278
435
  }
279
436
  reset() {
280
437
  this.seq = 0;
281
438
  this.lastMutationSeq = 0;
282
439
  this.lastVerificationSeq = 0;
283
440
  this.injections = 0;
441
+ this.tamperInjections = 0;
284
442
  this.mutatedFiles.clear();
443
+ this.suspects.clear();
285
444
  }
286
445
  }
287
446
  //# sourceMappingURL=verification-gate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"verification-gate.js","sourceRoot":"","sources":["../../src/core/verification-gate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verification-gate.js","sourceRoot":"","sources":["../../src/core/verification-gate.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,54 @@
1
1
  import { type ChildProcess } from "node:child_process";
2
2
  import { type ReadStream } from "node:fs";
3
3
  import type { Dirent, Stats } from "node:fs";
4
+ /**
5
+ * Largest file any tool will pull into memory at once.
6
+ *
7
+ * We run ONE shared Node daemon per app process (see CLAUDE.md), so an
8
+ * unbounded `readFile` is not merely a slow read — it is every open window
9
+ * dying together when a multi-GB artifact lands in the heap. 20 MiB sits far
10
+ * above any source file (`read` itself only ever emits 50 KB of text) while
11
+ * still admitting a large image before the shrink pass.
12
+ */
13
+ export declare const MAX_READ_BYTES: number;
14
+ /** The file exists but is too large to load; carries the numbers for the message. */
15
+ export declare class FileTooLargeError extends Error {
16
+ readonly filePath: string;
17
+ readonly size: number;
18
+ readonly limit: number;
19
+ constructor(filePath: string, size: number, limit: number);
20
+ }
21
+ /** The path resolved to something that is not a regular file (fifo, device, socket). */
22
+ export declare class NotRegularFileError extends Error {
23
+ readonly filePath: string;
24
+ constructor(filePath: string);
25
+ }
26
+ /** A symlink was found where a regular file was required. */
27
+ export declare class SymlinkRefusedError extends Error {
28
+ readonly filePath: string;
29
+ constructor(filePath: string);
30
+ }
31
+ /**
32
+ * Read a whole file, refusing anything over `limit` bytes.
33
+ *
34
+ * Opens ONCE and judges the file from that same handle, so what we checked is
35
+ * what we read. The alternative — `lstat()` the path, then `readFile()` the
36
+ * path — inspects one file and reads whatever occupies the name a moment
37
+ * later, which is exactly how a swapped symlink gets its target read.
38
+ *
39
+ * Three flags, three different holes:
40
+ * - `O_NOFOLLOW` makes the kernel fail with ELOOP if the final component is a
41
+ * symlink, so the refusal happens atomically at open rather than in a
42
+ * separate syscall a caller could race.
43
+ * - `O_NONBLOCK` stops the open itself parking forever on a fifo (a named pipe
44
+ * called `x.png` would otherwise hang the tool call with no timeout); the
45
+ * non-regular check then rejects it, and regular files ignore the flag.
46
+ * - The size check bounds memory before a single byte is read.
47
+ *
48
+ * Windows defines neither flag (`?? 0` degrades to a plain read) and offers no
49
+ * path-reachable fifo here; `resolvePath` plus the sandbox still contain it.
50
+ */
51
+ export declare function readFileBounded(filePath: string, limit?: number): Promise<Buffer>;
4
52
  /**
5
53
  * Abstraction over filesystem and process operations.
6
54
  * Default implementation uses local Node.js APIs.
@@ -1 +1 @@
1
- {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../src/tools/operations.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAE7C;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,8CAA8C;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAExC,qEAAqE;IACrE,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExD,gCAAgC;IAChC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAEnC,0CAA0C;IAC1C,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAEpC,mDAAmD;IACnD,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,aAAa,EAAE,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAE3E,sCAAsC;IACtC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnC,2CAA2C;IAC3C,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,UAAU,CAAC;IAErE,8DAA8D;IAC9D,KAAK,CACH,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE;QACP,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC;KAClC,GACA,YAAY,CAAC;CACjB;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,cA0B7B,CAAC"}
1
+ {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../src/tools/operations.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAA8C,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AACtF,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAE7C;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,QAAmB,CAAC;AAE/C,qFAAqF;AACrF,qBAAa,iBAAkB,SAAQ,KAAK;IAExC,QAAQ,CAAC,QAAQ,EAAE,MAAM;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM;gBAFb,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM;CAQzB;AAED,wFAAwF;AACxF,qBAAa,mBAAoB,SAAQ,KAAK;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM;gBAAhB,QAAQ,EAAE,MAAM;CAItC;AAED,6DAA6D;AAC7D,qBAAa,mBAAoB,SAAQ,KAAK;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM;gBAAhB,QAAQ,EAAE,MAAM;CAItC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,KAAK,GAAE,MAAuB,GAC7B,OAAO,CAAC,MAAM,CAAC,CAoBjB;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,8CAA8C;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAExC,qEAAqE;IACrE,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExD,gCAAgC;IAChC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAEnC,0CAA0C;IAC1C,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAEpC,mDAAmD;IACnD,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,aAAa,EAAE,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAE3E,sCAAsC;IACtC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnC,2CAA2C;IAC3C,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,UAAU,CAAC;IAErE,8DAA8D;IAC9D,KAAK,CACH,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE;QACP,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC;KAClC,GACA,YAAY,CAAC;CACjB;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,cA6B7B,CAAC"}
@@ -1,12 +1,102 @@
1
1
  import fs from "node:fs/promises";
2
2
  import { spawn } from "node:child_process";
3
- import { createReadStream } from "node:fs";
3
+ import { constants as fsConstants, createReadStream } from "node:fs";
4
+ /**
5
+ * Largest file any tool will pull into memory at once.
6
+ *
7
+ * We run ONE shared Node daemon per app process (see CLAUDE.md), so an
8
+ * unbounded `readFile` is not merely a slow read — it is every open window
9
+ * dying together when a multi-GB artifact lands in the heap. 20 MiB sits far
10
+ * above any source file (`read` itself only ever emits 50 KB of text) while
11
+ * still admitting a large image before the shrink pass.
12
+ */
13
+ export const MAX_READ_BYTES = 20 * 1024 * 1024;
14
+ /** The file exists but is too large to load; carries the numbers for the message. */
15
+ export class FileTooLargeError extends Error {
16
+ filePath;
17
+ size;
18
+ limit;
19
+ constructor(filePath, size, limit) {
20
+ super(`File is ${(size / (1024 * 1024)).toFixed(1)} MB, over the ` +
21
+ `${Math.round(limit / (1024 * 1024))} MB read limit: ${filePath}`);
22
+ this.filePath = filePath;
23
+ this.size = size;
24
+ this.limit = limit;
25
+ this.name = "FileTooLargeError";
26
+ }
27
+ }
28
+ /** The path resolved to something that is not a regular file (fifo, device, socket). */
29
+ export class NotRegularFileError extends Error {
30
+ filePath;
31
+ constructor(filePath) {
32
+ super(`Not a regular file: ${filePath}`);
33
+ this.filePath = filePath;
34
+ this.name = "NotRegularFileError";
35
+ }
36
+ }
37
+ /** A symlink was found where a regular file was required. */
38
+ export class SymlinkRefusedError extends Error {
39
+ filePath;
40
+ constructor(filePath) {
41
+ super(`Refusing to follow symlink: ${filePath}`);
42
+ this.filePath = filePath;
43
+ this.name = "SymlinkRefusedError";
44
+ }
45
+ }
46
+ /**
47
+ * Read a whole file, refusing anything over `limit` bytes.
48
+ *
49
+ * Opens ONCE and judges the file from that same handle, so what we checked is
50
+ * what we read. The alternative — `lstat()` the path, then `readFile()` the
51
+ * path — inspects one file and reads whatever occupies the name a moment
52
+ * later, which is exactly how a swapped symlink gets its target read.
53
+ *
54
+ * Three flags, three different holes:
55
+ * - `O_NOFOLLOW` makes the kernel fail with ELOOP if the final component is a
56
+ * symlink, so the refusal happens atomically at open rather than in a
57
+ * separate syscall a caller could race.
58
+ * - `O_NONBLOCK` stops the open itself parking forever on a fifo (a named pipe
59
+ * called `x.png` would otherwise hang the tool call with no timeout); the
60
+ * non-regular check then rejects it, and regular files ignore the flag.
61
+ * - The size check bounds memory before a single byte is read.
62
+ *
63
+ * Windows defines neither flag (`?? 0` degrades to a plain read) and offers no
64
+ * path-reachable fifo here; `resolvePath` plus the sandbox still contain it.
65
+ */
66
+ export async function readFileBounded(filePath, limit = MAX_READ_BYTES) {
67
+ const flags = fsConstants.O_RDONLY | (fsConstants.O_NOFOLLOW ?? 0) | (fsConstants.O_NONBLOCK ?? 0);
68
+ let handle;
69
+ try {
70
+ handle = await fs.open(filePath, flags);
71
+ }
72
+ catch (err) {
73
+ // ELOOP here means O_NOFOLLOW refused a symlink — report that plainly
74
+ // rather than as a mystery open failure.
75
+ if (err.code === "ELOOP")
76
+ throw new SymlinkRefusedError(filePath);
77
+ throw err;
78
+ }
79
+ try {
80
+ const stat = await handle.stat();
81
+ if (!stat.isFile())
82
+ throw new NotRegularFileError(filePath);
83
+ if (stat.size > limit)
84
+ throw new FileTooLargeError(filePath, stat.size, limit);
85
+ return await handle.readFile();
86
+ }
87
+ finally {
88
+ await handle.close();
89
+ }
90
+ }
4
91
  /**
5
92
  * Default local filesystem + process operations.
6
93
  * This is what tools use when running on the local machine.
7
94
  */
8
95
  export const localOperations = {
9
- readFile: (path) => fs.readFile(path, "utf-8"),
96
+ // Bounded deliberately: this is the chokepoint every file-reading tool goes
97
+ // through (read, edit, code_search, code_nav), so the cap lives here once
98
+ // rather than in each caller. A remote implementation owns its own bound.
99
+ readFile: async (path) => (await readFileBounded(path)).toString("utf-8"),
10
100
  writeFile: async (path, content) => {
11
101
  const { dirname } = await import("node:path");
12
102
  await fs.mkdir(dirname(path), { recursive: true });
@@ -1 +1 @@
1
- {"version":3,"file":"operations.js","sourceRoot":"","sources":["../../src/tools/operations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAmB,MAAM,SAAS,CAAC;AA2C5D;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAmB;IAC7C,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAE9C,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QACjC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;QAC9C,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;IAE7B,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;IAE/B,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAsB;IAE1E,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;IAEnE,gBAAgB,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC;IAE1E,KAAK,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAChC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE;QACnB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,KAAK,EAAE,OAAO,CAAC,KAA2E;KAC3F,CAAC;CACL,CAAC"}
1
+ {"version":3,"file":"operations.js","sourceRoot":"","sources":["../../src/tools/operations.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/tools/read.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAIrD,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAYjE,eAAO,MAAM,iBAAiB,aA+C5B,CAAC;AAEH,QAAA,MAAM,UAAU;;;;;iBAgBd,CAAC;AAEH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,SAAS,CAAC,EAAE,WAAW,EACvB,GAAG,GAAE,cAAgC,EACrC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AACvD;;;2DAG2D;AAC3D,cAAc,CAAC,EAAE,MAAM,GACtB,SAAS,CAAC,OAAO,UAAU,CAAC,CA2K9B"}
1
+ {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/tools/read.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAIrD,OAAO,EAML,KAAK,cAAc,EACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAYjE,eAAO,MAAM,iBAAiB,aA+C5B,CAAC;AAEH,QAAA,MAAM,UAAU;;;;;iBAgBd,CAAC;AAyBH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,SAAS,CAAC,EAAE,WAAW,EACvB,GAAG,GAAE,cAAgC,EACrC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AACvD;;;2DAG2D;AAC3D,cAAc,CAAC,EAAE,MAAM,GACtB,SAAS,CAAC,OAAO,UAAU,CAAC,CAoL9B"}
@@ -4,7 +4,7 @@ import { z } from "zod";
4
4
  import { resolvePath, rejectSymlink } from "./path-utils.js";
5
5
  import { truncateHead } from "./truncate.js";
6
6
  import { writeOverflow } from "./overflow.js";
7
- import { localOperations } from "./operations.js";
7
+ import { FileTooLargeError, NotRegularFileError, SymlinkRefusedError, localOperations, readFileBounded, } from "./operations.js";
8
8
  import { recordRead } from "./read-tracker.js";
9
9
  import { lineHash } from "../core/hashline.js";
10
10
  import { IMAGE_EXTENSIONS, IMAGE_MEDIA_TYPES, VIDEO_EXTENSIONS, VIDEO_MEDIA_TYPES, compressVideoToFit, downscaleForPreview, shrinkToFit, } from "../utils/image.js";
@@ -71,6 +71,26 @@ const ReadParams = z.object({
71
71
  .describe("Prefix each line with a stable `hash│` content anchor so a later `edit` can target lines " +
72
72
  "by anchor and reject stale edits. Default false."),
73
73
  });
74
+ /**
75
+ * Turn a refused bounded read into a message the model can act on.
76
+ *
77
+ * Both cases are dead ends for `read`, so the text names the tool that still
78
+ * works — otherwise the agent retries `read` with an offset and burns turns on
79
+ * a file it can never load.
80
+ */
81
+ function describeBoundedReadError(err) {
82
+ if (err instanceof FileTooLargeError) {
83
+ return (`${err.message}. Use \`grep\` to search it, or \`bash\` with ` +
84
+ `\`sed -n '1,200p'\` / \`tail\` to view part of it.`);
85
+ }
86
+ if (err instanceof NotRegularFileError) {
87
+ return `${err.message}. Reading it could block forever; use \`bash\` if you really need its stream.`;
88
+ }
89
+ if (err instanceof SymlinkRefusedError) {
90
+ return `${err.message}. Read the file it points at directly, if that path is one you should be reading.`;
91
+ }
92
+ return null;
93
+ }
74
94
  export function createReadTool(cwd, readFiles, ops = localOperations, onFileRead,
75
95
  /** Max video payload (bytes) the active model accepts, or `undefined` for
76
96
  * models without video support. When set, video files are returned as a
@@ -100,7 +120,10 @@ videoByteLimit) {
100
120
  // structured content so the model can actually see the pixels.
101
121
  if (IMAGE_EXTENSIONS.has(ext)) {
102
122
  try {
103
- const rawBuffer = await fs.readFile(resolved);
123
+ // Bounded + opened once: an unbounded read here OOM-kills the shared
124
+ // daemon (every window's session with it) on a huge or non-regular
125
+ // file wearing an image extension.
126
+ const rawBuffer = await readFileBounded(resolved);
104
127
  const mediaType = IMAGE_MEDIA_TYPES[ext] ?? "image/png";
105
128
  const { buffer, mediaType: finalMediaType } = await shrinkToFit(rawBuffer, mediaType);
106
129
  const resizedNote = buffer.length < rawBuffer.length
@@ -130,6 +153,9 @@ videoByteLimit) {
130
153
  };
131
154
  }
132
155
  catch (err) {
156
+ const bounded = describeBoundedReadError(err);
157
+ if (bounded)
158
+ return bounded;
133
159
  const code = err.code;
134
160
  if (code === "ENOENT")
135
161
  return `File not found: ${resolved}`;
@@ -168,7 +194,7 @@ videoByteLimit) {
168
194
  ` (auto-compressed from ${(result.originalBytes / (1024 * 1024)).toFixed(0)} MB to ` +
169
195
  `${(result.compressedBytes / (1024 * 1024)).toFixed(0)} MB for analysis)`;
170
196
  }
171
- const rawBuffer = await fs.readFile(videoPath);
197
+ const rawBuffer = await readFileBounded(videoPath, videoByteLimit);
172
198
  const mediaType = VIDEO_MEDIA_TYPES[ext] ?? "video/mp4";
173
199
  return {
174
200
  content: [
@@ -178,6 +204,9 @@ videoByteLimit) {
178
204
  };
179
205
  }
180
206
  catch (err) {
207
+ const bounded = describeBoundedReadError(err);
208
+ if (bounded)
209
+ return bounded;
181
210
  const code = err.code;
182
211
  if (code === "ENOENT")
183
212
  return `File not found: ${resolved}`;
@@ -201,6 +230,9 @@ videoByteLimit) {
201
230
  raw = await ops.readFile(resolved);
202
231
  }
203
232
  catch (err) {
233
+ const bounded = describeBoundedReadError(err);
234
+ if (bounded)
235
+ return bounded;
204
236
  const code = err.code;
205
237
  if (code === "ENOENT")
206
238
  return `File not found: ${resolved}`;
@@ -1 +1 @@
1
- {"version":3,"file":"read.js","sourceRoot":"","sources":["../../src/tools/read.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"read.js","sourceRoot":"","sources":["../../src/tools/read.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,eAAe,GAEhB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAoB,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAE3B,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IACvC,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,OAAO;IACP,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,OAAO;IACP,MAAM;IACN,OAAO;IACP,MAAM;IACN,OAAO;IACP,MAAM;IACN,MAAM;IACN,KAAK;IACL,QAAQ;IACR,MAAM;IACN,MAAM;IACN,OAAO;IACP,QAAQ;IACR,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,QAAQ;IACR,IAAI;IACJ,MAAM;IACN,OAAO;IACP,OAAO;IACP,OAAO;IACP,KAAK;IACL,SAAS;IACT,UAAU;IACV,OAAO;IACP,OAAO;IACP,MAAM;CACP,CAAC,CAAC;AAEH,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IACvD,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,EAAE;SACV,QAAQ,CAAC,6CAA6C,CAAC;IAC1D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IACrF,OAAO,EAAE,CAAC;SACP,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CACP,2FAA2F;QACzF,kDAAkD,CACrD;CACJ,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,SAAS,wBAAwB,CAAC,GAAY;IAC5C,IAAI,GAAG,YAAY,iBAAiB,EAAE,CAAC;QACrC,OAAO,CACL,GAAG,GAAG,CAAC,OAAO,gDAAgD;YAC9D,oDAAoD,CACrD,CAAC;IACJ,CAAC;IACD,IAAI,GAAG,YAAY,mBAAmB,EAAE,CAAC;QACvC,OAAO,GAAG,GAAG,CAAC,OAAO,+EAA+E,CAAC;IACvG,CAAC;IACD,IAAI,GAAG,YAAY,mBAAmB,EAAE,CAAC;QACvC,OAAO,GAAG,GAAG,CAAC,OAAO,mFAAmF,CAAC;IAC3G,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,GAAW,EACX,SAAuB,EACvB,MAAsB,eAAe,EACrC,UAAuD;AACvD;;;2DAG2D;AAC3D,cAAuB;IAEvB,MAAM,mBAAmB,GAAG,cAAc,KAAK,SAAS,CAAC;IACzD,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,WAAW,EACT,iEAAiE;YACjE,sEAAsE;YACtE,6DAA6D;YAC7D,yBAAyB;YACzB,CAAC,mBAAmB;gBAClB,CAAC,CAAC,wEAAwE;oBACxE,wEAAwE;oBACxE,wEAAwE;oBACxE,gCAAgC;gBAClC,CAAC,CAAC,EAAE,CAAC;YACP,wDAAwD;QAC1D,UAAU,EAAE,UAAU;QACtB,KAAK,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,OAAO;YAC1D,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAC7C,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;YAEjD,kEAAkE;YAClE,+DAA+D;YAC/D,IAAI,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC9B,IAAI,CAAC;oBACH,qEAAqE;oBACrE,mEAAmE;oBACnE,mCAAmC;oBACnC,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;oBAClD,MAAM,SAAS,GAAG,iBAAiB,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC;oBACxD,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,MAAM,WAAW,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;oBACtF,MAAM,WAAW,GACf,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM;wBAC9B,CAAC,CAAC,kBAAkB,SAAS,CAAC,MAAM,OAAO,MAAM,CAAC,MAAM,SAAS;wBACjE,CAAC,CAAC,EAAE,CAAC;oBACT,oEAAoE;oBACpE,+DAA+D;oBAC/D,6CAA6C;oBAC7C,MAAM,aAAa,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,CAAC;oBACxD,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,mBAAmB,QAAQ,KAAK,cAAc,IAAI,WAAW,EAAE;6BACtE;4BACD,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;yBAC9E;wBACD,OAAO,EAAE;4BACP,aAAa,EAAE;gCACb;oCACE,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC;oCACxC,SAAS,EAAE,cAAc;oCACzB,IAAI,EAAE,QAAQ;iCACf;6BACF;yBACF;qBACF,CAAC;gBACJ,CAAC;gBAAC,OAAO,GAAY,EAAE,CAAC;oBACtB,MAAM,OAAO,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC;oBAC9C,IAAI,OAAO;wBAAE,OAAO,OAAO,CAAC;oBAC5B,MAAM,IAAI,GAAI,GAA6B,CAAC,IAAI,CAAC;oBACjD,IAAI,IAAI,KAAK,QAAQ;wBAAE,OAAO,mBAAmB,QAAQ,EAAE,CAAC;oBAC5D,IAAI,IAAI,KAAK,QAAQ;wBAAE,OAAO,sBAAsB,QAAQ,EAAE,CAAC;oBAC/D,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBAChE,OAAO,wBAAwB,QAAQ,KAAK,MAAM,EAAE,CAAC;gBACvD,CAAC;YACH,CAAC;YAED,yEAAyE;YACzE,yEAAyE;YACzE,2EAA2E;YAC3E,4EAA4E;YAC5E,IAAI,mBAAmB,IAAI,cAAc,KAAK,SAAS,IAAI,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrF,IAAI,cAAkC,CAAC;gBACvC,IAAI,CAAC;oBACH,0EAA0E;oBAC1E,sEAAsE;oBACtE,yEAAyE;oBACzE,oEAAoE;oBACpE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;oBAC3D,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBACtC,IAAI,SAAS,GAAG,QAAQ,CAAC;oBACzB,IAAI,IAAI,GAAG,EAAE,CAAC;oBACd,IAAI,IAAI,CAAC,IAAI,GAAG,cAAc,EAAE,CAAC;wBAC/B,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;wBACnF,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;4BACf,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;4BAClD,OAAO,CACL,SAAS,QAAQ,OAAO,EAAE,iBAAiB,OAAO,MAAM;gCACxD,2DAA2D,MAAM,CAAC,MAAM,KAAK;gCAC7E,0FAA0F,CAC3F,CAAC;wBACJ,CAAC;wBACD,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC;wBAC7B,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC;wBACxB,IAAI;4BACF,0BAA0B,CAAC,MAAM,CAAC,aAAa,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;gCACpF,GAAG,CAAC,MAAM,CAAC,eAAe,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC;oBAC9E,CAAC;oBACD,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;oBACnE,MAAM,SAAS,GAAG,iBAAiB,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC;oBACxD,OAAO;wBACL,OAAO,EAAE;4BACP,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,QAAQ,KAAK,SAAS,IAAI,IAAI,EAAE,EAAE;4BAC3E,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;yBACjE;qBACF,CAAC;gBACJ,CAAC;gBAAC,OAAO,GAAY,EAAE,CAAC;oBACtB,MAAM,OAAO,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC;oBAC9C,IAAI,OAAO;wBAAE,OAAO,OAAO,CAAC;oBAC5B,MAAM,IAAI,GAAI,GAA6B,CAAC,IAAI,CAAC;oBACjD,IAAI,IAAI,KAAK,QAAQ;wBAAE,OAAO,mBAAmB,QAAQ,EAAE,CAAC;oBAC5D,IAAI,IAAI,KAAK,QAAQ;wBAAE,OAAO,sBAAsB,QAAQ,EAAE,CAAC;oBAC/D,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBAChE,OAAO,wBAAwB,QAAQ,KAAK,MAAM,EAAE,CAAC;gBACvD,CAAC;wBAAS,CAAC;oBACT,0EAA0E;oBAC1E,IAAI,cAAc;wBAAE,MAAM,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBACtE,CAAC;YACH,CAAC;YAED,IAAI,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACtC,OAAO,gBAAgB,QAAQ,KAAK,GAAG,KAAK,IAAI,CAAC,IAAI,SAAS,CAAC;YACjE,CAAC;YAED,IAAI,GAAW,CAAC;YAChB,IAAI,CAAC;gBACH,GAAG,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACrC,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACtB,MAAM,OAAO,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC;gBAC9C,IAAI,OAAO;oBAAE,OAAO,OAAO,CAAC;gBAC5B,MAAM,IAAI,GAAI,GAA6B,CAAC,IAAI,CAAC;gBACjD,IAAI,IAAI,KAAK,QAAQ;oBAAE,OAAO,mBAAmB,QAAQ,EAAE,CAAC;gBAC5D,IAAI,IAAI,KAAK,QAAQ;oBAAE,OAAO,sBAAsB,QAAQ,EAAE,CAAC;gBAC/D,IAAI,IAAI,KAAK,QAAQ;oBAAE,OAAO,+BAA+B,QAAQ,EAAE,CAAC;gBACxE,MAAM,GAAG,CAAC;YACZ,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtC,UAAU,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACnD,MAAM,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAC;YAC7B,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAE5B,qBAAqB;YACrB,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;YACzD,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAExC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjC,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;YAErC,wEAAwE;YACxE,yEAAyE;YACzE,0EAA0E;YAC1E,2EAA2E;YAC3E,kEAAkE;YAClE,MAAM,WAAW,GAAG,SAAS,GAAG,CAAC,CAAC;YAClC,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO;iBAC5B,KAAK,CAAC,IAAI,CAAC;iBACX,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;gBACf,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBACzD,MAAM,YAAY,GAAG,GAAG,OAAO,KAAK,IAAI,EAAE,CAAC;gBAC3C,OAAO,OAAO,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,CAAC,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;YACrF,CAAC,CAAC;iBACD,IAAI,CAAC,IAAI,CAAC,CAAC;YAEd,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACrB,MAAM,UAAU,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;gBACpD,MAAM,YAAY,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC5E,MAAM,cAAc,GAAG,YAAY,CAAC,CAAC,CAAC,yBAAyB,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpF,OAAO,CACL,GAAG,QAAQ,IAAI;oBACf,6BAA6B,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,SAAS,GAAG,CAAC,OAAO,MAAM,CAAC,UAAU,IAAI,cAAc,GAAG;oBAC7H,cAAc,UAAU,iBAAiB,CAC1C,CAAC;YACJ,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;KACF,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kenkaiiii/ggcoder",
3
- "version": "5.49.9",
3
+ "version": "5.49.11",
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-core": "5.49.9",
119
- "@kenkaiiii/gg-agent": "5.49.9",
120
- "@kenkaiiii/gg-ai": "5.49.9"
118
+ "@kenkaiiii/gg-ai": "5.49.11",
119
+ "@kenkaiiii/gg-core": "5.49.11",
120
+ "@kenkaiiii/gg-agent": "5.49.11"
121
121
  },
122
122
  "optionalDependencies": {
123
123
  "@huggingface/transformers": "^3.6.0",