jinzd-ai-cli 0.4.305 → 0.4.307

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 (32) hide show
  1. package/dist/{batch-OX27K4GG.js → batch-HMADXNOD.js} +2 -2
  2. package/dist/{chunk-UFK5CTBU.js → chunk-3CKJOTVM.js} +3 -3
  3. package/dist/{chunk-4DH5LZR5.js → chunk-3TBXHLSC.js} +1 -1
  4. package/dist/{chunk-I6RATYRF.js → chunk-4W6VDVQU.js} +1 -1
  5. package/dist/{chunk-Q4DAKI7I.js → chunk-5GQL4TSZ.js} +1 -1
  6. package/dist/{chunk-3ZABGT3S.js → chunk-AHL6KOGM.js} +1 -1
  7. package/dist/{chunk-NFLE34QG.js → chunk-AQF6IXSR.js} +1 -1
  8. package/dist/{chunk-YPOWDFOV.js → chunk-CIM2PV2F.js} +1 -1
  9. package/dist/{chunk-SZ4226XY.js → chunk-KRCYR46A.js} +1 -1
  10. package/dist/{chunk-IPUTC5EX.js → chunk-L2RJPVHV.js} +142 -16
  11. package/dist/{chunk-AXKERUXH.js → chunk-NQJSPMY2.js} +3 -3
  12. package/dist/{chunk-PA4C452B.js → chunk-SJFZPS65.js} +3 -1
  13. package/dist/{chunk-NBYSFFCO.js → chunk-VAV2IJ3R.js} +3 -1
  14. package/dist/{chunk-GOIDKTBE.js → chunk-YFDQIUQ3.js} +7 -7
  15. package/dist/{ci-IIMLOXFH.js → ci-QD2Q7NWY.js} +4 -4
  16. package/dist/{ci-format-FMBJC3EY.js → ci-format-42XIZO5P.js} +2 -2
  17. package/dist/{constants-55QQ3RYE.js → constants-5CMEFZQB.js} +3 -1
  18. package/dist/{constants-7NVAPQVR.js → constants-NMASHFDL.js} +3 -1
  19. package/dist/{doctor-cli-ZHZ2XOF3.js → doctor-cli-IOVSHBDI.js} +4 -4
  20. package/dist/electron-server.js +148 -22
  21. package/dist/{hub-MF53NIM2.js → hub-ZLF6GMQD.js} +1 -1
  22. package/dist/index.js +18 -18
  23. package/dist/{persistent-memory-LCOKUDTM.js → persistent-memory-GJE7HKVK.js} +2 -2
  24. package/dist/{persistent-memory-NACQW2VB.js → persistent-memory-MBSBTBGY.js} +2 -2
  25. package/dist/{pr-NHWE5FW7.js → pr-SXRW24JG.js} +4 -4
  26. package/dist/{run-tests-ZG5X25BJ.js → run-tests-EQCAMFQE.js} +2 -2
  27. package/dist/{run-tests-EUPJLDXS.js → run-tests-V3N7YV3P.js} +2 -2
  28. package/dist/{server-PG7QCH53.js → server-GGEO7SA2.js} +13 -13
  29. package/dist/{server-PNYRE3AL.js → server-MO3EU2XD.js} +5 -5
  30. package/dist/{task-orchestrator-WAJTCE6D.js → task-orchestrator-JGEEQ2OE.js} +5 -5
  31. package/dist/{usage-DOES3DOS.js → usage-B7RIAPPT.js} +2 -2
  32. package/package.json +1 -1
@@ -4,12 +4,12 @@ import {
4
4
  } from "./chunk-RS7SKYTS.js";
5
5
  import {
6
6
  ConfigManager
7
- } from "./chunk-NFLE34QG.js";
7
+ } from "./chunk-AQF6IXSR.js";
8
8
  import "./chunk-TU3L3PW7.js";
9
9
  import {
10
10
  atomicWriteFileSync
11
11
  } from "./chunk-IW3Q7AE5.js";
12
- import "./chunk-NBYSFFCO.js";
12
+ import "./chunk-VAV2IJ3R.js";
13
13
 
14
14
  // src/cli/batch.ts
15
15
  import Anthropic from "@anthropic-ai/sdk";
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  evaluateCiGate,
4
4
  normalizeCiThresholds
5
- } from "./chunk-4DH5LZR5.js";
5
+ } from "./chunk-3TBXHLSC.js";
6
6
  import {
7
7
  buildReviewPrompt,
8
8
  buildSecurityReviewPrompt,
@@ -16,10 +16,10 @@ import {
16
16
  } from "./chunk-VXEF2SWG.js";
17
17
  import {
18
18
  ConfigManager
19
- } from "./chunk-NFLE34QG.js";
19
+ } from "./chunk-AQF6IXSR.js";
20
20
  import {
21
21
  VERSION
22
- } from "./chunk-NBYSFFCO.js";
22
+ } from "./chunk-VAV2IJ3R.js";
23
23
 
24
24
  // src/cli/ci.ts
25
25
  import { execFileSync } from "child_process";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  VERSION
4
- } from "./chunk-NBYSFFCO.js";
4
+ } from "./chunk-VAV2IJ3R.js";
5
5
 
6
6
  // src/cli/ci-format.ts
7
7
  var DEFAULT_CI_THRESHOLDS = {
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  TEST_TIMEOUT
4
- } from "./chunk-NBYSFFCO.js";
4
+ } from "./chunk-VAV2IJ3R.js";
5
5
 
6
6
  // src/tools/builtin/run-tests.ts
7
7
  import { execSync, spawnSync } from "child_process";
@@ -8,7 +8,7 @@ import {
8
8
  import {
9
9
  CONFIG_DIR_NAME,
10
10
  PLUGINS_DIR_NAME
11
- } from "./chunk-NBYSFFCO.js";
11
+ } from "./chunk-VAV2IJ3R.js";
12
12
 
13
13
  // src/diagnostics/tool-stats.ts
14
14
  import { mkdirSync } from "fs";
@@ -13,7 +13,7 @@ import {
13
13
  MEMORY_FILE_NAME,
14
14
  MEMORY_MAX_CHARS,
15
15
  MEMORY_STORE_FILE_NAME
16
- } from "./chunk-NBYSFFCO.js";
16
+ } from "./chunk-VAV2IJ3R.js";
17
17
 
18
18
  // src/memory/persistent-memory.ts
19
19
  import { copyFileSync, existsSync, mkdirSync, readFileSync, statSync } from "fs";
@@ -11,7 +11,7 @@ import {
11
11
  CONFIG_FILE_NAME,
12
12
  HISTORY_DIR_NAME,
13
13
  PLUGINS_DIR_NAME
14
- } from "./chunk-NBYSFFCO.js";
14
+ } from "./chunk-VAV2IJ3R.js";
15
15
 
16
16
  // src/config/config-manager.ts
17
17
  import { readFileSync, existsSync, mkdirSync } from "fs";
@@ -12,7 +12,7 @@ import {
12
12
  MEMORY_FILE_NAME,
13
13
  MEMORY_MAX_CHARS,
14
14
  MEMORY_STORE_FILE_NAME
15
- } from "./chunk-PA4C452B.js";
15
+ } from "./chunk-SJFZPS65.js";
16
16
 
17
17
  // src/memory/persistent-memory.ts
18
18
  import { copyFileSync, existsSync, mkdirSync, readFileSync, statSync } from "fs";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  TEST_TIMEOUT
3
- } from "./chunk-PA4C452B.js";
3
+ } from "./chunk-SJFZPS65.js";
4
4
 
5
5
  // src/tools/builtin/run-tests.ts
6
6
  import { execSync, spawnSync } from "child_process";
@@ -11,7 +11,7 @@ import {
11
11
  searchPersistentMemories,
12
12
  touchMemoryReferences,
13
13
  updateMemoryEntry
14
- } from "./chunk-3ZABGT3S.js";
14
+ } from "./chunk-AHL6KOGM.js";
15
15
  import {
16
16
  indexProject
17
17
  } from "./chunk-LF67HWWR.js";
@@ -30,7 +30,7 @@ import {
30
30
  runHook,
31
31
  runLifecycleHooks,
32
32
  runTool
33
- } from "./chunk-Q4DAKI7I.js";
33
+ } from "./chunk-5GQL4TSZ.js";
34
34
  import {
35
35
  buildTruncatedArgumentsError,
36
36
  getDangerLevel,
@@ -50,15 +50,16 @@ import {
50
50
  } from "./chunk-4BKXL7SM.js";
51
51
  import {
52
52
  runTestsTool
53
- } from "./chunk-I6RATYRF.js";
53
+ } from "./chunk-4W6VDVQU.js";
54
54
  import {
55
55
  CONFIG_DIR_NAME,
56
56
  DEFAULT_MAX_TOOL_OUTPUT_CHARS_CAP,
57
+ MAX_GLOB_MATCHES,
57
58
  PLAN_MODE_READONLY_TOOLS,
58
59
  SUBAGENT_ALLOWED_TOOLS,
59
60
  SUBAGENT_DEFAULT_MAX_ROUNDS,
60
61
  SUBAGENT_MAX_ROUNDS_LIMIT
61
- } from "./chunk-NBYSFFCO.js";
62
+ } from "./chunk-VAV2IJ3R.js";
62
63
 
63
64
  // src/tools/shell-pool.ts
64
65
  import { spawn as spawn2 } from "child_process";
@@ -617,7 +618,8 @@ Important rules:
617
618
  4. To delete directories, use Remove-Item -Recurse (the system will automatically optimize to a more reliable method).
618
619
  5. IMPORTANT: On Windows, "curl" is an alias for Invoke-WebRequest and does NOT support curl flags like -s, -X, -H. Use Invoke-RestMethod instead for HTTP requests. Example: Invoke-RestMethod -Uri "http://localhost:3000/api/health" -Method Get
619
620
  6. NEVER run long-running / never-exiting commands through bash \u2014 they block until timeout. This includes starting an Android emulator (emulator -avd X), streaming logs (adb logcat), and dev servers (node server.js, npm run dev, metro / react-native start). Use the 'task_create' tool to run these in the background, then poll status with short bash calls (e.g. adb shell getprop sys.boot_completed).
620
- 7. CRITICAL \u2014 this is PowerShell, NOT bash: \\ is NOT an escape character. Writing \\" inside a double-quoted string CLOSES the string and silently splits your command into fragments \u2014 it often still exits 0 with no output, so it looks like it worked when it did not. To escape a quote use \`" or "". For anything with nested quoting (especially ssh + psql -c "SELECT ..."), do NOT try to escape your way out: write the payload to a file with the 'write_file' tool, 'scp' it to the host, and run it with a single level of quoting (e.g. ssh host "psql -d db -f /tmp/x.sql").` : `Execute commands in ${SHELL2}.
621
+ 7. CRITICAL \u2014 this is PowerShell, NOT bash: \\ is NOT an escape character. Writing \\" inside a double-quoted string CLOSES the string and silently splits your command into fragments \u2014 it often still exits 0 with no output, so it looks like it worked when it did not. To escape a quote use \`" or "". For anything with nested quoting (especially ssh + psql -c "SELECT ..."), do NOT try to escape your way out: write the payload to a file with the 'write_file' tool, 'scp' it to the host, and run it with a single level of quoting (e.g. ssh host "psql -d db -f /tmp/x.sql").
622
+ 8. CRITICAL \u2014 running a program by its full path: a quoted string at the START of a statement is parsed as a string EXPRESSION, not a command. "C:\\path\\python.exe" -c "print(1)" is a SYNTAX ERROR. Put the call operator '&' in front: & "C:\\path\\python.exe" -c "print(1)" \u2014 or $py = "C:\\path\\python.exe"; & $py -c "print(1)". This applies to any quoted path used as a command, anywhere a statement starts (including after ';').` : `Execute commands in ${SHELL2}.
621
623
  Important rules:
622
624
  1. Each bash call runs in an independent subprocess; cd commands do not persist. To run in a specific directory, use the cwd parameter, or combine commands: e.g. "cd mydir && ls" or "mkdir -p mydir && touch mydir/file.txt".
623
625
  2. If a command fails (returns an error or non-zero exit code), stop immediately, report the error to the user, and do not retry the same or similar commands.
@@ -872,6 +874,116 @@ function detectPowerShellBackslashQuote(command) {
872
874
  }
873
875
  return false;
874
876
  }
877
+ var PS_OPERATOR_WORDS = /* @__PURE__ */ new Set([
878
+ "eq",
879
+ "ne",
880
+ "gt",
881
+ "ge",
882
+ "lt",
883
+ "le",
884
+ "ceq",
885
+ "cne",
886
+ "cgt",
887
+ "cge",
888
+ "clt",
889
+ "cle",
890
+ "ieq",
891
+ "ine",
892
+ "igt",
893
+ "ige",
894
+ "ilt",
895
+ "ile",
896
+ "like",
897
+ "notlike",
898
+ "match",
899
+ "notmatch",
900
+ "clike",
901
+ "cnotlike",
902
+ "cmatch",
903
+ "cnotmatch",
904
+ "ilike",
905
+ "inotlike",
906
+ "imatch",
907
+ "inotmatch",
908
+ "contains",
909
+ "notcontains",
910
+ "ccontains",
911
+ "cnotcontains",
912
+ "icontains",
913
+ "inotcontains",
914
+ "in",
915
+ "notin",
916
+ "cin",
917
+ "cnotin",
918
+ "iin",
919
+ "inotin",
920
+ "is",
921
+ "isnot",
922
+ "as",
923
+ "and",
924
+ "or",
925
+ "not",
926
+ "xor",
927
+ "band",
928
+ "bor",
929
+ "bnot",
930
+ "bxor",
931
+ "shl",
932
+ "shr",
933
+ "join",
934
+ "split",
935
+ "replace",
936
+ "csplit",
937
+ "creplace",
938
+ "isplit",
939
+ "ireplace",
940
+ "f"
941
+ ]);
942
+ function detectMissingCallOperator(command) {
943
+ if (!IS_WINDOWS3) return false;
944
+ let atStatementStart = true;
945
+ let afterCallOperator = false;
946
+ for (let i = 0; i < command.length; i++) {
947
+ const ch = command[i];
948
+ if (ch === " " || ch === " ") continue;
949
+ if (ch === ";" || ch === "\n" || ch === "{" || ch === "(" || ch === "|" || ch === "&") {
950
+ if (ch === "&") {
951
+ const next = command.slice(i + 1).replace(/^[ \t]+/, "");
952
+ afterCallOperator = !next.startsWith("&");
953
+ } else {
954
+ afterCallOperator = false;
955
+ }
956
+ atStatementStart = true;
957
+ continue;
958
+ }
959
+ if (ch === "." && atStatementStart) {
960
+ afterCallOperator = true;
961
+ continue;
962
+ }
963
+ if ((ch === '"' || ch === "'") && atStatementStart && !afterCallOperator) {
964
+ const quote = ch;
965
+ let j = i + 1;
966
+ while (j < command.length && command[j] !== quote) j++;
967
+ if (j >= command.length) return false;
968
+ const rest = command.slice(j + 1);
969
+ const m = /^[ \t]+(\S+)/.exec(rest);
970
+ if (m) {
971
+ const token = m[1];
972
+ if (/^[-]/.test(token)) {
973
+ const word = token.slice(1).toLowerCase();
974
+ if (PS_OPERATOR_WORDS.has(word)) return false;
975
+ return true;
976
+ }
977
+ if (/^[+*%=<>|;)}\]]/.test(token)) return false;
978
+ return true;
979
+ }
980
+ return false;
981
+ }
982
+ atStatementStart = false;
983
+ afterCallOperator = false;
984
+ }
985
+ return false;
986
+ }
875
987
  var BACKSLASH_QUOTE_SILENT_WARNING = `
876
988
 
877
989
  \u26A0 WARNING: this command contains \\" inside a double-quoted string, but PowerShell does NOT treat \\ as an escape \u2014 that quote CLOSED the string and the command was split into fragments. It exited 0 with no output because the outer program (e.g. ssh) still ran, but it very likely did NOT run what you intended. Do NOT assume this succeeded.
@@ -952,6 +1064,11 @@ function buildErrorHint(command, stderr) {
952
1064
  `Hint: PowerShell does NOT treat \\ as an escape character \u2014 the \\" in this command closed the double-quoted string and split the command into fragments. Escape quotes with \`" or "" instead. Better: avoid nested quoting entirely \u2014 write the payload to a file with 'write_file', 'scp' it over, and run it with one level of quoting (e.g. ssh host "psql -d <db> -f /tmp/x.sql").`
953
1065
  );
954
1066
  }
1067
+ if (detectMissingCallOperator(command) && /(ParserError|UnexpectedToken|Unexpected token|意外的标记|运算符后面提供|必须在)/i.test(stderr)) {
1068
+ hints.push(
1069
+ `Hint: in PowerShell a quoted string at the START of a statement is parsed as a string EXPRESSION, not as a command \u2014 so "C:\\path\\python.exe" -c "..." is a syntax error, not a quoting problem. Do NOT retry by removing the quotes, dropping the argument, or re-quoting it differently; all of those fail the same way. Fix: put the call operator '&' in front \u2014 \`& "C:\\path\\python.exe" -c "..."\` \u2014 or assign the path to a variable first (\`$py = "C:\\path\\python.exe"; & $py -c "..."\`).`
1070
+ );
1071
+ }
955
1072
  return hints.length > 0 ? hints.map((h) => `\u{1F4A1} ${h}`).join("\n\n") : null;
956
1073
  }
957
1074
  function detectBlockingCommand(command) {
@@ -1496,7 +1613,7 @@ ${err.message}`;
1496
1613
  if (IMAGE_EXTENSIONS.has(ext)) {
1497
1614
  return `[Image file: ${filePath} (${ext})]
1498
1615
  read_file cannot return image content \u2014 tool results are text-only, so no tool can put an image into your context.
1499
- To have an image looked at, ask the USER to reference it from their input line with @${filePath} (they can use a glob for a batch, e.g. @dir/*.png, up to 20 at a time). A vision-capable model must be active, or the reference is rejected.
1616
+ To have an image looked at, ask the USER to reference it from their input line with @${filePath} (they can use a glob for a batch, e.g. @dir/*.png, up to ${MAX_GLOB_MATCHES} at a time). A vision-capable model must be active, or the reference is rejected.
1500
1617
  Do NOT claim you inspected this image \u2014 you have not seen it.`;
1501
1618
  }
1502
1619
  return `[Binary file: ${filePath} (${ext})]
@@ -2377,7 +2494,7 @@ var RuleBasedActionClassifier = class {
2377
2494
  var defaultActionClassifier = new RuleBasedActionClassifier();
2378
2495
 
2379
2496
  // src/tools/executor.ts
2380
- var PS_ERROR_RECORD_HEAD = /^(?:[\w.\-]+\s:\s)?(?:At line:\d+ char:\s*\d+|所在位置\s+行:\d+\s+字符:\s*\d+)\s*$/;
2497
+ var PS_ERROR_RECORD_HEAD = /^(?:[\w.\-]+\s:\s)?(?:At (?:line:\d+|\S+:\d+) char:\s*\d+|所在位置\s+(?:行|\S+):\d+\s+字符:\s*\d+)\s*$/;
2381
2498
  var ERROR_SIGNATURE = new RegExp(
2382
2499
  [
2383
2500
  // Python / .NET / Java: "OSError: …", "pkg.SomeException: …"
@@ -2393,11 +2510,22 @@ var ERROR_SIGNATURE = new RegExp(
2393
2510
  "i"
2394
2511
  );
2395
2512
  var PY_TRACEBACK_FRAME = /^\s*File ".*", line \d+/;
2513
+ function isPreviewNoise(line) {
2514
+ const t = line.trim();
2515
+ return /^(?:\[[^\]]+\]\s*)?Exit code \d+:$/.test(t) || // `formatFailureHeader()` 在拿不到退出码时打的那句 —— 与 "Exit code N:" 同类噪声。
2516
+ // 不过滤的话它会占掉第一个展示位:2026-09-05 实战里 `export_slides.ps1 | Select-Object
2517
+ // -First 3` 提前掐断管道被 PowerShell 报成失败,预览成了
2518
+ // 「Command failed before exit code could be determined: · …\slide-02.png」——
2519
+ // 两段都没用,而真正有信息的 `EXPORTED 25 slide(s)` 就在第二行、从没上屏。
2520
+ /^(?:\[[^\]]+\]\s*)?Command failed before exit code could be determined:$/.test(t) || /^Traceback \(most recent call last\):$/.test(t) || line.startsWith("[Command failed") || line.startsWith("\u{1F4A1} ") || t === "";
2521
+ }
2396
2522
  function buildErrorPreview(content) {
2397
2523
  const raw = content.split("\n").map((l) => l.replace(/\r+$/, ""));
2398
2524
  const undecorated = [];
2525
+ const decorationNeighbours = [];
2399
2526
  for (let i = 0; i < raw.length; i++) {
2400
2527
  if (PS_ERROR_RECORD_HEAD.test(raw[i])) {
2528
+ if (undecorated.length > 0) decorationNeighbours.push(undecorated[undecorated.length - 1]);
2401
2529
  i++;
2402
2530
  while (i < raw.length && /^\s*\+ /.test(raw[i])) i++;
2403
2531
  i--;
@@ -2405,14 +2533,7 @@ function buildErrorPreview(content) {
2405
2533
  }
2406
2534
  undecorated.push(raw[i]);
2407
2535
  }
2408
- const meaningful = undecorated.filter(
2409
- (l) => !/^(?:\[[^\]]+\]\s*)?Exit code \d+:$/.test(l.trim()) && // `formatFailureHeader()` 在拿不到退出码时打的那句 —— 与 "Exit code N:" 同类噪声。
2410
- // 不过滤的话它会占掉第一个展示位:2026-09-05 实战里 `export_slides.ps1 | Select-Object
2411
- // -First 3` 提前掐断管道被 PowerShell 报成失败,预览成了
2412
- // 「Command failed before exit code could be determined: · …\slide-02.png」——
2413
- // 两段都没用,而真正有信息的 `EXPORTED 25 slide(s)` 就在第二行、从没上屏。
2414
- !/^(?:\[[^\]]+\]\s*)?Command failed before exit code could be determined:$/.test(l.trim()) && !/^Traceback \(most recent call last\):$/.test(l.trim()) && !l.startsWith("[Command failed") && !l.startsWith("\u{1F4A1} ") && l.trim() !== ""
2415
- );
2536
+ const meaningful = undecorated.filter((l) => !isPreviewNoise(l));
2416
2537
  let primary = -1;
2417
2538
  for (let i = meaningful.length - 1; i >= 0; i--) {
2418
2539
  if (ERROR_SIGNATURE.test(meaningful[i])) {
@@ -2431,7 +2552,12 @@ function buildErrorPreview(content) {
2431
2552
  }
2432
2553
  previewLines = frame !== null ? [frame, meaningful[primary]] : [meaningful[primary]];
2433
2554
  } else {
2434
- previewLines = meaningful.length > 2 ? [meaningful[0], meaningful[meaningful.length - 1]] : meaningful.slice(0, 2);
2555
+ const neighbour = decorationNeighbours.find((l) => !isPreviewNoise(l));
2556
+ if (neighbour !== void 0) {
2557
+ previewLines = [neighbour];
2558
+ } else {
2559
+ previewLines = meaningful.length > 2 ? [meaningful[0], meaningful[meaningful.length - 1]] : meaningful.slice(0, 2);
2560
+ }
2435
2561
  }
2436
2562
  const preview = previewLines.map((l) => l.length > 160 ? l.slice(0, 160) + "\u2026" : l).join(" \xB7 ") || content.slice(0, 120);
2437
2563
  return preview.slice(0, 240);
@@ -8,13 +8,13 @@ import {
8
8
  listHooks,
9
9
  listInstalledPlugins,
10
10
  resetStats
11
- } from "./chunk-Q4DAKI7I.js";
11
+ } from "./chunk-5GQL4TSZ.js";
12
12
  import {
13
13
  ProviderRegistry
14
14
  } from "./chunk-VXEF2SWG.js";
15
15
  import {
16
16
  ConfigManager
17
- } from "./chunk-NFLE34QG.js";
17
+ } from "./chunk-AQF6IXSR.js";
18
18
  import {
19
19
  getGitRoot
20
20
  } from "./chunk-HOSJZMQS.js";
@@ -26,7 +26,7 @@ import {
26
26
  MCP_PROJECT_CONFIG_NAME,
27
27
  MEMORY_FILE_NAME,
28
28
  VERSION
29
- } from "./chunk-NBYSFFCO.js";
29
+ } from "./chunk-VAV2IJ3R.js";
30
30
 
31
31
  // src/diagnostics/doctor-report.ts
32
32
  import { existsSync as existsSync3, statSync as statSync2 } from "fs";
@@ -1,5 +1,5 @@
1
1
  // src/core/constants.ts
2
- var VERSION = "0.4.305";
2
+ var VERSION = "0.4.307";
3
3
  var APP_NAME = "ai-cli";
4
4
  var CONFIG_DIR_NAME = ".aicli";
5
5
  var CONFIG_FILE_NAME = "config.json";
@@ -18,6 +18,7 @@ var DEFAULT_TEMPERATURE = 0.7;
18
18
  var MAX_HISTORY_DAYS = 30;
19
19
  var DEFAULT_MAX_TOOL_ROUNDS = 200;
20
20
  var DEFAULT_MAX_TOOL_OUTPUT_CHARS_CAP = 5e5;
21
+ var MAX_GLOB_MATCHES = 30;
21
22
  var MCP_TOOL_PREFIX = "mcp__";
22
23
  var MCP_PROJECT_CONFIG_NAME = ".mcp.json";
23
24
  var MCP_CONNECT_TIMEOUT = 3e4;
@@ -152,6 +153,7 @@ export {
152
153
  MAX_HISTORY_DAYS,
153
154
  DEFAULT_MAX_TOOL_ROUNDS,
154
155
  DEFAULT_MAX_TOOL_OUTPUT_CHARS_CAP,
156
+ MAX_GLOB_MATCHES,
155
157
  MCP_TOOL_PREFIX,
156
158
  MCP_PROJECT_CONFIG_NAME,
157
159
  MCP_CONNECT_TIMEOUT,
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  // src/core/constants.ts
4
- var VERSION = "0.4.305";
4
+ var VERSION = "0.4.307";
5
5
  var APP_NAME = "ai-cli";
6
6
  var CONFIG_DIR_NAME = ".aicli";
7
7
  var CONFIG_FILE_NAME = "config.json";
@@ -20,6 +20,7 @@ var DEFAULT_TEMPERATURE = 0.7;
20
20
  var MAX_HISTORY_DAYS = 30;
21
21
  var DEFAULT_MAX_TOOL_ROUNDS = 200;
22
22
  var DEFAULT_MAX_TOOL_OUTPUT_CHARS_CAP = 5e5;
23
+ var MAX_GLOB_MATCHES = 30;
23
24
  var MCP_TOOL_PREFIX = "mcp__";
24
25
  var MCP_PROJECT_CONFIG_NAME = ".mcp.json";
25
26
  var MCP_CONNECT_TIMEOUT = 3e4;
@@ -154,6 +155,7 @@ export {
154
155
  MAX_HISTORY_DAYS,
155
156
  DEFAULT_MAX_TOOL_ROUNDS,
156
157
  DEFAULT_MAX_TOOL_OUTPUT_CHARS_CAP,
158
+ MAX_GLOB_MATCHES,
157
159
  MCP_TOOL_PREFIX,
158
160
  MCP_PROJECT_CONFIG_NAME,
159
161
  MCP_CONNECT_TIMEOUT,
@@ -16,7 +16,7 @@ import {
16
16
  setPreferredAgentName,
17
17
  truncateForPersist,
18
18
  undoStack
19
- } from "./chunk-IPUTC5EX.js";
19
+ } from "./chunk-L2RJPVHV.js";
20
20
  import {
21
21
  buildReviewPrompt,
22
22
  buildSecurityReviewPrompt
@@ -51,7 +51,7 @@ import {
51
51
  touchMemoryReferences,
52
52
  updateMemoryApproval,
53
53
  updateMemoryEntry
54
- } from "./chunk-3ZABGT3S.js";
54
+ } from "./chunk-AHL6KOGM.js";
55
55
  import {
56
56
  theme
57
57
  } from "./chunk-5C76XDDF.js";
@@ -65,7 +65,7 @@ import {
65
65
  import {
66
66
  buildDoctorReport,
67
67
  formatDoctorReport
68
- } from "./chunk-AXKERUXH.js";
68
+ } from "./chunk-NQJSPMY2.js";
69
69
  import {
70
70
  describePlugin,
71
71
  getActivePluginAssets,
@@ -80,7 +80,7 @@ import {
80
80
  trustHook,
81
81
  trustPlugin,
82
82
  untrustHook
83
- } from "./chunk-Q4DAKI7I.js";
83
+ } from "./chunk-5GQL4TSZ.js";
84
84
  import {
85
85
  isCleanDocumentBody,
86
86
  stripOuterCodeFence
@@ -109,7 +109,7 @@ import {
109
109
  MCP_TOOL_PREFIX,
110
110
  REPO_URL,
111
111
  VERSION
112
- } from "./chunk-NBYSFFCO.js";
112
+ } from "./chunk-VAV2IJ3R.js";
113
113
 
114
114
  // src/skills/manager.ts
115
115
  import { existsSync, readdirSync, mkdirSync, statSync } from "fs";
@@ -2426,7 +2426,7 @@ No tools match "${filter}".
2426
2426
  const { join: join6 } = await import("path");
2427
2427
  const { existsSync: existsSync6 } = await import("fs");
2428
2428
  const { getGitRoot } = await import("./git-context-EXOEHQSF.js");
2429
- const { MCP_PROJECT_CONFIG_NAME } = await import("./constants-7NVAPQVR.js");
2429
+ const { MCP_PROJECT_CONFIG_NAME } = await import("./constants-NMASHFDL.js");
2430
2430
  const { approveProject, hashMcpFile } = await import("./project-trust-NKYHL3VZ.js");
2431
2431
  const cwd = process.cwd();
2432
2432
  const projectRoot = getGitRoot(cwd) ?? cwd;
@@ -3534,7 +3534,7 @@ function createReviewCommands() {
3534
3534
  usage: "/test [command|filter]",
3535
3535
  async execute(args, ctx) {
3536
3536
  try {
3537
- const { executeTests } = await import("./run-tests-ZG5X25BJ.js");
3537
+ const { executeTests } = await import("./run-tests-EQCAMFQE.js");
3538
3538
  const argStr = args.join(" ").trim();
3539
3539
  let testArgs = {};
3540
3540
  if (argStr) {
@@ -3,16 +3,16 @@ import {
3
3
  CI_COMMENT_MARKER,
4
4
  countSeverity,
5
5
  runCi
6
- } from "./chunk-UFK5CTBU.js";
7
- import "./chunk-4DH5LZR5.js";
6
+ } from "./chunk-3CKJOTVM.js";
7
+ import "./chunk-3TBXHLSC.js";
8
8
  import "./chunk-HLWUDRBO.js";
9
9
  import "./chunk-6YZEZFX5.js";
10
10
  import "./chunk-VXEF2SWG.js";
11
- import "./chunk-NFLE34QG.js";
11
+ import "./chunk-AQF6IXSR.js";
12
12
  import "./chunk-MI4SFZGX.js";
13
13
  import "./chunk-TU3L3PW7.js";
14
14
  import "./chunk-IW3Q7AE5.js";
15
- import "./chunk-NBYSFFCO.js";
15
+ import "./chunk-VAV2IJ3R.js";
16
16
  export {
17
17
  CI_COMMENT_MARKER,
18
18
  countSeverity,
@@ -6,8 +6,8 @@ import {
6
6
  formatCiResult,
7
7
  formatCiSarif,
8
8
  normalizeCiThresholds
9
- } from "./chunk-4DH5LZR5.js";
10
- import "./chunk-NBYSFFCO.js";
9
+ } from "./chunk-3TBXHLSC.js";
10
+ import "./chunk-VAV2IJ3R.js";
11
11
  export {
12
12
  DEFAULT_CI_THRESHOLDS,
13
13
  detectCiGateSignals,
@@ -17,6 +17,7 @@ import {
17
17
  DESCRIPTION,
18
18
  DEV_STATE_FILE_NAME,
19
19
  HISTORY_DIR_NAME,
20
+ MAX_GLOB_MATCHES,
20
21
  MAX_HISTORY_DAYS,
21
22
  MCP_CALL_TIMEOUT,
22
23
  MCP_CONNECT_TIMEOUT,
@@ -37,7 +38,7 @@ import {
37
38
  TEST_TIMEOUT,
38
39
  VERSION,
39
40
  buildUserIdentityPrompt
40
- } from "./chunk-PA4C452B.js";
41
+ } from "./chunk-SJFZPS65.js";
41
42
  export {
42
43
  AGENTIC_BEHAVIOR_GUIDELINE,
43
44
  APP_NAME,
@@ -57,6 +58,7 @@ export {
57
58
  DESCRIPTION,
58
59
  DEV_STATE_FILE_NAME,
59
60
  HISTORY_DIR_NAME,
61
+ MAX_GLOB_MATCHES,
60
62
  MAX_HISTORY_DAYS,
61
63
  MCP_CALL_TIMEOUT,
62
64
  MCP_CONNECT_TIMEOUT,
@@ -18,6 +18,7 @@ import {
18
18
  DESCRIPTION,
19
19
  DEV_STATE_FILE_NAME,
20
20
  HISTORY_DIR_NAME,
21
+ MAX_GLOB_MATCHES,
21
22
  MAX_HISTORY_DAYS,
22
23
  MCP_CALL_TIMEOUT,
23
24
  MCP_CONNECT_TIMEOUT,
@@ -38,7 +39,7 @@ import {
38
39
  TEST_TIMEOUT,
39
40
  VERSION,
40
41
  buildUserIdentityPrompt
41
- } from "./chunk-NBYSFFCO.js";
42
+ } from "./chunk-VAV2IJ3R.js";
42
43
  export {
43
44
  AGENTIC_BEHAVIOR_GUIDELINE,
44
45
  APP_NAME,
@@ -58,6 +59,7 @@ export {
58
59
  DESCRIPTION,
59
60
  DEV_STATE_FILE_NAME,
60
61
  HISTORY_DIR_NAME,
62
+ MAX_GLOB_MATCHES,
61
63
  MAX_HISTORY_DAYS,
62
64
  MCP_CALL_TIMEOUT,
63
65
  MCP_CONNECT_TIMEOUT,
@@ -2,16 +2,16 @@
2
2
  import {
3
3
  formatDoctorReport,
4
4
  runDoctorCli
5
- } from "./chunk-AXKERUXH.js";
6
- import "./chunk-Q4DAKI7I.js";
5
+ } from "./chunk-NQJSPMY2.js";
6
+ import "./chunk-5GQL4TSZ.js";
7
7
  import "./chunk-RS7SKYTS.js";
8
8
  import "./chunk-VXEF2SWG.js";
9
- import "./chunk-NFLE34QG.js";
9
+ import "./chunk-AQF6IXSR.js";
10
10
  import "./chunk-MI4SFZGX.js";
11
11
  import "./chunk-TU3L3PW7.js";
12
12
  import "./chunk-HOSJZMQS.js";
13
13
  import "./chunk-IW3Q7AE5.js";
14
- import "./chunk-NBYSFFCO.js";
14
+ import "./chunk-VAV2IJ3R.js";
15
15
  export {
16
16
  formatDoctorReport,
17
17
  runDoctorCli