jinzd-ai-cli 0.4.231 → 0.4.233

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 (28) hide show
  1. package/dist/{batch-FLMFMR3R.js → batch-WWNPYQ6G.js} +2 -2
  2. package/dist/{chunk-UOIUGBG2.js → chunk-4OAV7QMB.js} +1 -1
  3. package/dist/{chunk-XTMHBOHG.js → chunk-5PKNKJYP.js} +1 -1
  4. package/dist/{chunk-75TAFSFZ.js → chunk-7KS3RGZ7.js} +2 -2
  5. package/dist/{chunk-ZOLZ6JPG.js → chunk-ACTO5C6K.js} +1 -1
  6. package/dist/{chunk-TQPU3J4P.js → chunk-EZGZOK6E.js} +1 -1
  7. package/dist/{chunk-5T746UEU.js → chunk-FQSAK75P.js} +4 -4
  8. package/dist/{chunk-FWAA3ARX.js → chunk-HX67JAK6.js} +36 -34
  9. package/dist/{chunk-YH657UWU.js → chunk-M4FW2NPU.js} +1 -1
  10. package/dist/{chunk-NB7LR3TP.js → chunk-NXYXFRPA.js} +4 -4
  11. package/dist/{chunk-ODYTXQ26.js → chunk-O3XSFPYH.js} +35 -3
  12. package/dist/{chunk-62R7CACG.js → chunk-QYQI7ZWK.js} +1 -1
  13. package/dist/{chunk-ADARC33O.js → chunk-TJK7AU65.js} +1 -1
  14. package/dist/{ci-SI2VXE4Q.js → ci-V5V3JSJC.js} +6 -6
  15. package/dist/{ci-format-SFTFN3SE.js → ci-format-XS7LKBO5.js} +2 -2
  16. package/dist/{constants-EOWAB3VR.js → constants-UROQJXLY.js} +1 -1
  17. package/dist/{doctor-cli-4YVKJESI.js → doctor-cli-BY3FIV2B.js} +6 -6
  18. package/dist/electron-server.js +41 -9
  19. package/dist/{hub-6IKXR32G.js → hub-L2QCRI5M.js} +1 -1
  20. package/dist/index.js +20 -20
  21. package/dist/{pr-QJFFSYEU.js → pr-IJRUPR5C.js} +6 -6
  22. package/dist/{run-tests-ZBX476UL.js → run-tests-FLCVJ6TK.js} +2 -2
  23. package/dist/{run-tests-RZKUBZB4.js → run-tests-NNXBS4EL.js} +1 -1
  24. package/dist/{server-4XGNHG6P.js → server-E6LZB72O.js} +5 -5
  25. package/dist/{server-6IDBCCJ2.js → server-W2X3C6GJ.js} +10 -10
  26. package/dist/{task-orchestrator-UGKJ7UY4.js → task-orchestrator-W55VKYTC.js} +5 -5
  27. package/dist/{usage-2VGL3YWF.js → usage-MZCDTJWB.js} +2 -2
  28. package/package.json +1 -1
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ConfigManager
4
- } from "./chunk-XTMHBOHG.js";
4
+ } from "./chunk-5PKNKJYP.js";
5
5
  import "./chunk-5ULLIOVC.js";
6
- import "./chunk-ZOLZ6JPG.js";
6
+ import "./chunk-ACTO5C6K.js";
7
7
  import {
8
8
  atomicWriteFileSync
9
9
  } from "./chunk-IW3Q7AE5.js";
@@ -6,7 +6,7 @@ import { platform } from "os";
6
6
  import chalk from "chalk";
7
7
 
8
8
  // src/core/constants.ts
9
- var VERSION = "0.4.231";
9
+ var VERSION = "0.4.233";
10
10
  var APP_NAME = "ai-cli";
11
11
  var CONFIG_DIR_NAME = ".aicli";
12
12
  var CONFIG_FILE_NAME = "config.json";
@@ -8,7 +8,7 @@ import {
8
8
  CONFIG_FILE_NAME,
9
9
  HISTORY_DIR_NAME,
10
10
  PLUGINS_DIR_NAME
11
- } from "./chunk-ZOLZ6JPG.js";
11
+ } from "./chunk-ACTO5C6K.js";
12
12
  import {
13
13
  atomicWriteFileSync
14
14
  } from "./chunk-IW3Q7AE5.js";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  truncateForPersist
4
- } from "./chunk-FWAA3ARX.js";
4
+ } from "./chunk-HX67JAK6.js";
5
5
  import {
6
6
  APP_NAME,
7
7
  CONFIG_DIR_NAME,
@@ -11,7 +11,7 @@ import {
11
11
  MCP_PROTOCOL_VERSION,
12
12
  MCP_TOOL_PREFIX,
13
13
  VERSION
14
- } from "./chunk-ZOLZ6JPG.js";
14
+ } from "./chunk-ACTO5C6K.js";
15
15
  import {
16
16
  atomicWriteFileSync
17
17
  } from "./chunk-IW3Q7AE5.js";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  // src/core/constants.ts
4
- var VERSION = "0.4.231";
4
+ var VERSION = "0.4.233";
5
5
  var APP_NAME = "ai-cli";
6
6
  var CONFIG_DIR_NAME = ".aicli";
7
7
  var CONFIG_FILE_NAME = "config.json";
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  CONFIG_DIR_NAME,
4
4
  PLUGINS_DIR_NAME
5
- } from "./chunk-ZOLZ6JPG.js";
5
+ } from "./chunk-ACTO5C6K.js";
6
6
  import {
7
7
  atomicWriteFileSync
8
8
  } from "./chunk-IW3Q7AE5.js";
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  evaluateCiGate,
4
4
  normalizeCiThresholds
5
- } from "./chunk-ADARC33O.js";
5
+ } from "./chunk-TJK7AU65.js";
6
6
  import {
7
7
  buildReviewPrompt,
8
8
  buildSecurityReviewPrompt,
@@ -10,13 +10,13 @@ import {
10
10
  } from "./chunk-HLWUDRBO.js";
11
11
  import {
12
12
  ProviderRegistry
13
- } from "./chunk-62R7CACG.js";
13
+ } from "./chunk-QYQI7ZWK.js";
14
14
  import {
15
15
  ConfigManager
16
- } from "./chunk-XTMHBOHG.js";
16
+ } from "./chunk-5PKNKJYP.js";
17
17
  import {
18
18
  VERSION
19
- } from "./chunk-ZOLZ6JPG.js";
19
+ } from "./chunk-ACTO5C6K.js";
20
20
 
21
21
  // src/cli/ci.ts
22
22
  import { execFileSync } from "child_process";
@@ -14,12 +14,12 @@ import {
14
14
  runHook,
15
15
  runLifecycleHooks,
16
16
  runTool
17
- } from "./chunk-TQPU3J4P.js";
17
+ } from "./chunk-EZGZOK6E.js";
18
18
  import {
19
19
  getDangerLevel,
20
20
  isFileWriteTool,
21
21
  runLeanAgentLoop
22
- } from "./chunk-ODYTXQ26.js";
22
+ } from "./chunk-O3XSFPYH.js";
23
23
  import {
24
24
  EnvLoader,
25
25
  NetworkError,
@@ -33,7 +33,7 @@ import {
33
33
  } from "./chunk-4BKXL7SM.js";
34
34
  import {
35
35
  runTestsTool
36
- } from "./chunk-YH657UWU.js";
36
+ } from "./chunk-M4FW2NPU.js";
37
37
  import {
38
38
  CONFIG_DIR_NAME,
39
39
  DEFAULT_MAX_TOOL_OUTPUT_CHARS_CAP,
@@ -43,7 +43,7 @@ import {
43
43
  SUBAGENT_ALLOWED_TOOLS,
44
44
  SUBAGENT_DEFAULT_MAX_ROUNDS,
45
45
  SUBAGENT_MAX_ROUNDS_LIMIT
46
- } from "./chunk-ZOLZ6JPG.js";
46
+ } from "./chunk-ACTO5C6K.js";
47
47
  import {
48
48
  loadChatIndex,
49
49
  searchChatMemory
@@ -58,14 +58,39 @@ import {
58
58
 
59
59
  // src/tools/shell-pool.ts
60
60
  import { spawn } from "child_process";
61
+ import { platform as platform2 } from "os";
62
+
63
+ // src/tools/win-shell.ts
61
64
  import { platform } from "os";
62
65
  var IS_WINDOWS = platform() === "win32";
63
- var SHELL = IS_WINDOWS ? "powershell.exe" : process.env["SHELL"] ?? "/bin/bash";
66
+ var WIN_UTF8_PREAMBLE = "[Console]::OutputEncoding = [System.Text.Encoding]::UTF8; $OutputEncoding = [System.Text.Encoding]::UTF8; ";
67
+ function shellInvocation(command) {
68
+ if (IS_WINDOWS) {
69
+ return {
70
+ shell: "powershell.exe",
71
+ args: ["-NoProfile", "-NonInteractive", "-Command", WIN_UTF8_PREAMBLE + command]
72
+ };
73
+ }
74
+ return { shell: process.env["SHELL"] ?? "/bin/bash", args: ["-c", command] };
75
+ }
76
+ function decodeWindowsBuffer(buf) {
77
+ const utf8 = buf.toString("utf-8");
78
+ if (!utf8.includes("\uFFFD")) return utf8;
79
+ try {
80
+ return new TextDecoder("gbk").decode(buf);
81
+ } catch {
82
+ return utf8;
83
+ }
84
+ }
85
+
86
+ // src/tools/shell-pool.ts
87
+ var IS_WINDOWS2 = platform2() === "win32";
88
+ var SHELL = IS_WINDOWS2 ? "powershell.exe" : process.env["SHELL"] ?? "/bin/bash";
64
89
  var pool = /* @__PURE__ */ new Map();
65
90
  var IDLE_EVICT_MS = 5 * 6e4;
66
91
  var evictionTimer = null;
67
92
  function spawnShell(cwd) {
68
- const shellArgs = IS_WINDOWS ? ["-NoProfile", "-NonInteractive", "-Command", "-"] : ["-s"];
93
+ const shellArgs = IS_WINDOWS2 ? ["-NoProfile", "-NonInteractive", "-Command", "-"] : ["-s"];
69
94
  const proc = spawn(SHELL, shellArgs, {
70
95
  cwd,
71
96
  windowsHide: true,
@@ -114,7 +139,7 @@ async function execInPool(sessionKey, command, timeout, cwd, abortSignal) {
114
139
  const id = `${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 8)}`;
115
140
  const markerStart = `AICLI_MARKER_START:${id}`;
116
141
  const markerEnd = `AICLI_MARKER_END:${id}`;
117
- const wrappedCmd = IS_WINDOWS ? `echo "${markerStart}"; ${command}; echo "${markerEnd}:0"` : `echo "${markerStart}"; ${command}; echo "${markerEnd}:$?"`;
142
+ const wrappedCmd = IS_WINDOWS2 ? `${WIN_UTF8_PREAMBLE} echo "${markerStart}"; ${command}; echo "${markerEnd}:0"` : `echo "${markerStart}"; ${command}; echo "${markerEnd}:$?"`;
118
143
  return new Promise((resolve8) => {
119
144
  let stdout = "";
120
145
  let stderr = "";
@@ -124,7 +149,7 @@ async function execInPool(sessionKey, command, timeout, cwd, abortSignal) {
124
149
  const markerStartPattern = `AICLI_MARKER_START:${id}`;
125
150
  const markerEndPattern = `AICLI_MARKER_END:${id}`;
126
151
  const onData = (chunk) => {
127
- stdout += chunk.toString("utf-8");
152
+ stdout += IS_WINDOWS2 ? decodeWindowsBuffer(chunk) : chunk.toString("utf-8");
128
153
  if (!resolved && stdout.includes(markerEndPattern)) {
129
154
  const endLine = stdout.split("\n").find((l) => l.includes(markerEndPattern));
130
155
  const exitCode = endLine ? parseEndMarker(endLine, markerEndPattern) : null;
@@ -135,7 +160,7 @@ async function execInPool(sessionKey, command, timeout, cwd, abortSignal) {
135
160
  }
136
161
  };
137
162
  const onErr = (chunk) => {
138
- stderr += chunk.toString("utf-8");
163
+ stderr += IS_WINDOWS2 ? decodeWindowsBuffer(chunk) : chunk.toString("utf-8");
139
164
  };
140
165
  const proc = entry.proc;
141
166
  proc.stdout?.on("data", onData);
@@ -407,29 +432,6 @@ function runWithSessionKey(sessionKey, fn) {
407
432
  return als.run({ sessionKey: key }, fn);
408
433
  }
409
434
 
410
- // src/tools/win-shell.ts
411
- import { platform as platform2 } from "os";
412
- var IS_WINDOWS2 = platform2() === "win32";
413
- var WIN_UTF8_PREAMBLE = "[Console]::OutputEncoding = [System.Text.Encoding]::UTF8; $OutputEncoding = [System.Text.Encoding]::UTF8; ";
414
- function shellInvocation(command) {
415
- if (IS_WINDOWS2) {
416
- return {
417
- shell: "powershell.exe",
418
- args: ["-NoProfile", "-NonInteractive", "-Command", WIN_UTF8_PREAMBLE + command]
419
- };
420
- }
421
- return { shell: process.env["SHELL"] ?? "/bin/bash", args: ["-c", command] };
422
- }
423
- function decodeWindowsBuffer(buf) {
424
- const utf8 = buf.toString("utf-8");
425
- if (!utf8.includes("\uFFFD")) return utf8;
426
- try {
427
- return new TextDecoder("gbk").decode(buf);
428
- } catch {
429
- return utf8;
430
- }
431
- }
432
-
433
435
  // src/tools/builtin/bash.ts
434
436
  var IS_WINDOWS3 = platform3() === "win32";
435
437
  var SHELL2 = IS_WINDOWS3 ? "powershell.exe" : process.env["SHELL"] ?? "/bin/bash";
@@ -817,7 +819,7 @@ function pushBashUndoEntries(beforeSnapshot, parsedTargetsBefore, cwd) {
817
819
  }
818
820
  function runShell(command, opts) {
819
821
  return new Promise((resolvePromise) => {
820
- const shellArgs = IS_WINDOWS3 ? ["-NoProfile", "-NonInteractive", "-Command", command] : ["-c", command];
822
+ const shellArgs = IS_WINDOWS3 ? ["-NoProfile", "-NonInteractive", "-Command", WIN_UTF8_PREAMBLE + command] : ["-c", command];
821
823
  const child = spawn2(SHELL2, shellArgs, {
822
824
  cwd: opts.cwd,
823
825
  env: opts.env,
@@ -5798,7 +5800,7 @@ function capChunks(chunks) {
5798
5800
  }
5799
5801
  function decodeField(chunks) {
5800
5802
  const buf = Buffer.concat(chunks);
5801
- const text = IS_WINDOWS2 ? decodeWindowsBuffer(buf) : buf.toString("utf-8");
5803
+ const text = IS_WINDOWS ? decodeWindowsBuffer(buf) : buf.toString("utf-8");
5802
5804
  return text.length > MAX_OUTPUT_CHARS ? "... [truncated] ...\n" + text.slice(-MAX_OUTPUT_CHARS) : text;
5803
5805
  }
5804
5806
  function appendOutput(task, field, chunk) {
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  TEST_TIMEOUT
4
- } from "./chunk-ZOLZ6JPG.js";
4
+ } from "./chunk-ACTO5C6K.js";
5
5
 
6
6
  // src/tools/builtin/run-tests.ts
7
7
  import { execSync, spawnSync } from "child_process";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ProviderRegistry
4
- } from "./chunk-62R7CACG.js";
4
+ } from "./chunk-QYQI7ZWK.js";
5
5
  import {
6
6
  getActivePluginAssets,
7
7
  getPendingHookTrust,
@@ -11,10 +11,10 @@ import {
11
11
  listHooks,
12
12
  listInstalledPlugins,
13
13
  resetStats
14
- } from "./chunk-TQPU3J4P.js";
14
+ } from "./chunk-EZGZOK6E.js";
15
15
  import {
16
16
  ConfigManager
17
- } from "./chunk-XTMHBOHG.js";
17
+ } from "./chunk-5PKNKJYP.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-ZOLZ6JPG.js";
29
+ } from "./chunk-ACTO5C6K.js";
30
30
 
31
31
  // src/diagnostics/doctor-report.ts
32
32
  import { existsSync as existsSync3, statSync as statSync2 } from "fs";
@@ -466,7 +466,10 @@ function peelMetaNarration(content) {
466
466
  var META_NARRATION_HARD_MARKERS = [
467
467
  /\[⚠️\s*CONTENT GENERATION MODE\]/,
468
468
  /CONTENT_ONLY_STREAM_REMINDER\b/,
469
- /<system-reminder>/i
469
+ /<system-reminder>/i,
470
+ // → `path` — AI wraps content with "已写好 → `file.md`" before the document body.
471
+ // Documents never use this conversational file-path-pointer syntax.
472
+ /→\s*`[^`]{2,}`/u
470
473
  ];
471
474
  var META_NARRATION_HEURISTICS = [
472
475
  /\bthe user (?:is asking me|wants me|is requesting|expects me)\b/i,
@@ -477,7 +480,24 @@ var META_NARRATION_HEURISTICS = [
477
480
  /\bActually,?\s+I\b/i,
478
481
  /\bI need to be honest with the user\b/i,
479
482
  /\bI(?:'m| am) in a special mode\b/i,
480
- /\bGiven that I cannot\b/i
483
+ /\bGiven that I cannot\b/i,
484
+ // ── 中文 ── (need 2+ total hits across all patterns to trigger)
485
+ /(?:已经?|已)\s*(?:写[好完]|生成[好完]|创建[好完]|准备[好完]|搞[好定]|弄[好完])[了啦]?/u,
486
+ /(?:需要你|请你|麻烦你|还要你|你看)\s*(?:确认|决定|选择|帮忙|看[一看下]|过目)/u,
487
+ /(?:总结|概括|归纳|整理)[一下]?(?:核心|主要|关键)?(?:思路|要点|内容|设计)/u,
488
+ /(?:随时|有问题|有需要|需要调整|需要修改|需要补充)\s*(?:联系|找我|告诉|沟通|调整|修改|补充|说)/u,
489
+ /^(?:.{0,40})(?:好的[,,,!\s]|嗯[,,,!\s]|收到[了]?[,,,!\s]|了解[了]?[,,,!\s]|明白[了]?[,,,!\s])/mu,
490
+ /(?:我来|让我|容我)\s*(?:整理|梳理|归纳|想想|看看|重新|检查|核实)/u,
491
+ // 过渡语(需要 2+ hits):"以下是:" / "如下:" 作为独立行。文档中可作小节标题,
492
+ // 但配合另一个对话模式(如"好的")时是典型的 AI 内容包装。
493
+ /^.{0,60}(?:以下是|下面是|如下)\s*[::,,]\s*$/mu
494
+ ];
495
+ var CHINESE_TAIL_CLOSING_MARKERS = [
496
+ /(?:需要你|请你|麻烦你|你看)\s*(?:确认|决定|选择|帮忙|看[一看下]|过目|觉得|认为)/u,
497
+ /(?:随时|有问题|有需要|需要调整|需要修改)\s*(?:联系|找我|告诉|沟通|调整|修改)/u,
498
+ /(?:如果|假如|假设)\s*(?:有[没缺][有]?|需要|觉得|认为).{0,30}?(?:随时|可以|直接|尽管)\s*(?:联系|找我|告诉|说|调整|修改)/u,
499
+ /(?:以上|先这样|暂时|目前).{0,10}$/mu,
500
+ /(?:几个|一些|以下)\s*(?:关键)?(?:问题|疑问|想法|建议).{0,30}$/mu
481
501
  ];
482
502
  function detectMetaNarration(content) {
483
503
  if (!content) return null;
@@ -485,7 +505,19 @@ function detectMetaNarration(content) {
485
505
  for (const re of META_NARRATION_HARD_MARKERS) {
486
506
  if (re.test(head)) return re.source;
487
507
  }
488
- if (/^#{1,3}\s+\S/m.test(head)) return null;
508
+ if (content.length > 500) {
509
+ const tail = content.slice(-500);
510
+ let tailHits = 0;
511
+ let tailFirst = "";
512
+ for (const re of CHINESE_TAIL_CLOSING_MARKERS) {
513
+ if (re.test(tail)) {
514
+ tailHits++;
515
+ if (!tailFirst) tailFirst = re.source;
516
+ if (tailHits >= 2) return `meta-narration-tail:${tailFirst}`;
517
+ }
518
+ }
519
+ }
520
+ if (/^#{1,3}\s+\S/m.test(content.slice(0, 200))) return null;
489
521
  let hits = 0;
490
522
  let firstMatch = "";
491
523
  for (const re of META_NARRATION_HEURISTICS) {
@@ -3,7 +3,7 @@ import {
3
3
  detectsHallucinatedFileOp,
4
4
  repairToolCallArguments,
5
5
  schemaToJsonSchema
6
- } from "./chunk-ODYTXQ26.js";
6
+ } from "./chunk-O3XSFPYH.js";
7
7
  import {
8
8
  AuthError,
9
9
  ProviderError,
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  VERSION
4
- } from "./chunk-ZOLZ6JPG.js";
4
+ } from "./chunk-ACTO5C6K.js";
5
5
 
6
6
  // src/cli/ci-format.ts
7
7
  var DEFAULT_CI_THRESHOLDS = {
@@ -3,14 +3,14 @@ import {
3
3
  CI_COMMENT_MARKER,
4
4
  countSeverity,
5
5
  runCi
6
- } from "./chunk-5T746UEU.js";
7
- import "./chunk-ADARC33O.js";
6
+ } from "./chunk-FQSAK75P.js";
7
+ import "./chunk-TJK7AU65.js";
8
8
  import "./chunk-HLWUDRBO.js";
9
- import "./chunk-62R7CACG.js";
10
- import "./chunk-ODYTXQ26.js";
11
- import "./chunk-XTMHBOHG.js";
9
+ import "./chunk-QYQI7ZWK.js";
10
+ import "./chunk-O3XSFPYH.js";
11
+ import "./chunk-5PKNKJYP.js";
12
12
  import "./chunk-5ULLIOVC.js";
13
- import "./chunk-ZOLZ6JPG.js";
13
+ import "./chunk-ACTO5C6K.js";
14
14
  import "./chunk-IW3Q7AE5.js";
15
15
  export {
16
16
  CI_COMMENT_MARKER,
@@ -6,8 +6,8 @@ import {
6
6
  formatCiResult,
7
7
  formatCiSarif,
8
8
  normalizeCiThresholds
9
- } from "./chunk-ADARC33O.js";
10
- import "./chunk-ZOLZ6JPG.js";
9
+ } from "./chunk-TJK7AU65.js";
10
+ import "./chunk-ACTO5C6K.js";
11
11
  export {
12
12
  DEFAULT_CI_THRESHOLDS,
13
13
  detectCiGateSignals,
@@ -38,7 +38,7 @@ import {
38
38
  TEST_TIMEOUT,
39
39
  VERSION,
40
40
  buildUserIdentityPrompt
41
- } from "./chunk-ZOLZ6JPG.js";
41
+ } from "./chunk-ACTO5C6K.js";
42
42
  export {
43
43
  AGENTIC_BEHAVIOR_GUIDELINE,
44
44
  APP_NAME,
@@ -2,14 +2,14 @@
2
2
  import {
3
3
  formatDoctorReport,
4
4
  runDoctorCli
5
- } from "./chunk-NB7LR3TP.js";
6
- import "./chunk-62R7CACG.js";
7
- import "./chunk-TQPU3J4P.js";
8
- import "./chunk-ODYTXQ26.js";
9
- import "./chunk-XTMHBOHG.js";
5
+ } from "./chunk-NXYXFRPA.js";
6
+ import "./chunk-QYQI7ZWK.js";
7
+ import "./chunk-EZGZOK6E.js";
8
+ import "./chunk-O3XSFPYH.js";
9
+ import "./chunk-5PKNKJYP.js";
10
10
  import "./chunk-5ULLIOVC.js";
11
11
  import "./chunk-HOSJZMQS.js";
12
- import "./chunk-ZOLZ6JPG.js";
12
+ import "./chunk-ACTO5C6K.js";
13
13
  import "./chunk-IW3Q7AE5.js";
14
14
  export {
15
15
  formatDoctorReport,
@@ -38,7 +38,7 @@ import {
38
38
  VERSION,
39
39
  buildUserIdentityPrompt,
40
40
  runTestsTool
41
- } from "./chunk-UOIUGBG2.js";
41
+ } from "./chunk-4OAV7QMB.js";
42
42
  import {
43
43
  hasSemanticIndex,
44
44
  semanticSearch
@@ -2053,7 +2053,10 @@ function peelMetaNarration(content) {
2053
2053
  var META_NARRATION_HARD_MARKERS = [
2054
2054
  /\[⚠️\s*CONTENT GENERATION MODE\]/,
2055
2055
  /CONTENT_ONLY_STREAM_REMINDER\b/,
2056
- /<system-reminder>/i
2056
+ /<system-reminder>/i,
2057
+ // → `path` — AI wraps content with "已写好 → `file.md`" before the document body.
2058
+ // Documents never use this conversational file-path-pointer syntax.
2059
+ /→\s*`[^`]{2,}`/u
2057
2060
  ];
2058
2061
  var META_NARRATION_HEURISTICS = [
2059
2062
  /\bthe user (?:is asking me|wants me|is requesting|expects me)\b/i,
@@ -2064,7 +2067,24 @@ var META_NARRATION_HEURISTICS = [
2064
2067
  /\bActually,?\s+I\b/i,
2065
2068
  /\bI need to be honest with the user\b/i,
2066
2069
  /\bI(?:'m| am) in a special mode\b/i,
2067
- /\bGiven that I cannot\b/i
2070
+ /\bGiven that I cannot\b/i,
2071
+ // ── 中文 ── (need 2+ total hits across all patterns to trigger)
2072
+ /(?:已经?|已)\s*(?:写[好完]|生成[好完]|创建[好完]|准备[好完]|搞[好定]|弄[好完])[了啦]?/u,
2073
+ /(?:需要你|请你|麻烦你|还要你|你看)\s*(?:确认|决定|选择|帮忙|看[一看下]|过目)/u,
2074
+ /(?:总结|概括|归纳|整理)[一下]?(?:核心|主要|关键)?(?:思路|要点|内容|设计)/u,
2075
+ /(?:随时|有问题|有需要|需要调整|需要修改|需要补充)\s*(?:联系|找我|告诉|沟通|调整|修改|补充|说)/u,
2076
+ /^(?:.{0,40})(?:好的[,,,!\s]|嗯[,,,!\s]|收到[了]?[,,,!\s]|了解[了]?[,,,!\s]|明白[了]?[,,,!\s])/mu,
2077
+ /(?:我来|让我|容我)\s*(?:整理|梳理|归纳|想想|看看|重新|检查|核实)/u,
2078
+ // 过渡语(需要 2+ hits):"以下是:" / "如下:" 作为独立行。文档中可作小节标题,
2079
+ // 但配合另一个对话模式(如"好的")时是典型的 AI 内容包装。
2080
+ /^.{0,60}(?:以下是|下面是|如下)\s*[::,,]\s*$/mu
2081
+ ];
2082
+ var CHINESE_TAIL_CLOSING_MARKERS = [
2083
+ /(?:需要你|请你|麻烦你|你看)\s*(?:确认|决定|选择|帮忙|看[一看下]|过目|觉得|认为)/u,
2084
+ /(?:随时|有问题|有需要|需要调整|需要修改)\s*(?:联系|找我|告诉|沟通|调整|修改)/u,
2085
+ /(?:如果|假如|假设)\s*(?:有[没缺][有]?|需要|觉得|认为).{0,30}?(?:随时|可以|直接|尽管)\s*(?:联系|找我|告诉|说|调整|修改)/u,
2086
+ /(?:以上|先这样|暂时|目前).{0,10}$/mu,
2087
+ /(?:几个|一些|以下)\s*(?:关键)?(?:问题|疑问|想法|建议).{0,30}$/mu
2068
2088
  ];
2069
2089
  function detectMetaNarration(content) {
2070
2090
  if (!content) return null;
@@ -2072,7 +2092,19 @@ function detectMetaNarration(content) {
2072
2092
  for (const re of META_NARRATION_HARD_MARKERS) {
2073
2093
  if (re.test(head)) return re.source;
2074
2094
  }
2075
- if (/^#{1,3}\s+\S/m.test(head)) return null;
2095
+ if (content.length > 500) {
2096
+ const tail = content.slice(-500);
2097
+ let tailHits = 0;
2098
+ let tailFirst = "";
2099
+ for (const re of CHINESE_TAIL_CLOSING_MARKERS) {
2100
+ if (re.test(tail)) {
2101
+ tailHits++;
2102
+ if (!tailFirst) tailFirst = re.source;
2103
+ if (tailHits >= 2) return `meta-narration-tail:${tailFirst}`;
2104
+ }
2105
+ }
2106
+ }
2107
+ if (/^#{1,3}\s+\S/m.test(content.slice(0, 200))) return null;
2076
2108
  let hits = 0;
2077
2109
  let firstMatch = "";
2078
2110
  for (const re of META_NARRATION_HEURISTICS) {
@@ -4947,7 +4979,7 @@ async function execInPool(sessionKey, command, timeout, cwd, abortSignal) {
4947
4979
  const id = `${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 8)}`;
4948
4980
  const markerStart = `AICLI_MARKER_START:${id}`;
4949
4981
  const markerEnd = `AICLI_MARKER_END:${id}`;
4950
- const wrappedCmd = IS_WINDOWS2 ? `echo "${markerStart}"; ${command}; echo "${markerEnd}:0"` : `echo "${markerStart}"; ${command}; echo "${markerEnd}:$?"`;
4982
+ const wrappedCmd = IS_WINDOWS2 ? `${WIN_UTF8_PREAMBLE} echo "${markerStart}"; ${command}; echo "${markerEnd}:0"` : `echo "${markerStart}"; ${command}; echo "${markerEnd}:$?"`;
4951
4983
  return new Promise((resolve14) => {
4952
4984
  let stdout = "";
4953
4985
  let stderr = "";
@@ -4957,7 +4989,7 @@ async function execInPool(sessionKey, command, timeout, cwd, abortSignal) {
4957
4989
  const markerStartPattern = `AICLI_MARKER_START:${id}`;
4958
4990
  const markerEndPattern = `AICLI_MARKER_END:${id}`;
4959
4991
  const onData = (chunk) => {
4960
- stdout += chunk.toString("utf-8");
4992
+ stdout += IS_WINDOWS2 ? decodeWindowsBuffer(chunk) : chunk.toString("utf-8");
4961
4993
  if (!resolved && stdout.includes(markerEndPattern)) {
4962
4994
  const endLine = stdout.split("\n").find((l) => l.includes(markerEndPattern));
4963
4995
  const exitCode = endLine ? parseEndMarker(endLine, markerEndPattern) : null;
@@ -4968,7 +5000,7 @@ async function execInPool(sessionKey, command, timeout, cwd, abortSignal) {
4968
5000
  }
4969
5001
  };
4970
5002
  const onErr = (chunk) => {
4971
- stderr += chunk.toString("utf-8");
5003
+ stderr += IS_WINDOWS2 ? decodeWindowsBuffer(chunk) : chunk.toString("utf-8");
4972
5004
  };
4973
5005
  const proc = entry.proc;
4974
5006
  proc.stdout?.on("data", onData);
@@ -5459,7 +5491,7 @@ function pushBashUndoEntries(beforeSnapshot, parsedTargetsBefore, cwd) {
5459
5491
  }
5460
5492
  function runShell(command, opts) {
5461
5493
  return new Promise((resolvePromise) => {
5462
- const shellArgs = IS_WINDOWS3 ? ["-NoProfile", "-NonInteractive", "-Command", command] : ["-c", command];
5494
+ const shellArgs = IS_WINDOWS3 ? ["-NoProfile", "-NonInteractive", "-Command", WIN_UTF8_PREAMBLE + command] : ["-c", command];
5463
5495
  const child = spawn2(SHELL2, shellArgs, {
5464
5496
  cwd: opts.cwd,
5465
5497
  env: opts.env,
@@ -15876,7 +15908,7 @@ async function handleSecurityReview(args, ctx) {
15876
15908
  async function handleTest(args, ctx) {
15877
15909
  ctx.send({ type: "info", message: "\u{1F9EA} Running tests..." });
15878
15910
  try {
15879
- const { executeTests } = await import("./run-tests-RZKUBZB4.js");
15911
+ const { executeTests } = await import("./run-tests-NNXBS4EL.js");
15880
15912
  const argStr = args.join(" ").trim();
15881
15913
  let testArgs = {};
15882
15914
  if (argStr) {
@@ -154,7 +154,7 @@ ${content}`);
154
154
  }
155
155
  }
156
156
  async function runTaskMode(config, providers, configManager, topic) {
157
- const { TaskOrchestrator } = await import("./task-orchestrator-UGKJ7UY4.js");
157
+ const { TaskOrchestrator } = await import("./task-orchestrator-W55VKYTC.js");
158
158
  const orchestrator = new TaskOrchestrator(config, providers, configManager);
159
159
  let interrupted = false;
160
160
  const onSigint = () => {
package/dist/index.js CHANGED
@@ -14,7 +14,7 @@ import {
14
14
  scanProject,
15
15
  sessionHasMeaningfulContent,
16
16
  setupProxy
17
- } from "./chunk-75TAFSFZ.js";
17
+ } from "./chunk-7KS3RGZ7.js";
18
18
  import {
19
19
  buildReviewPrompt,
20
20
  buildSecurityReviewPrompt
@@ -52,7 +52,7 @@ import {
52
52
  theme,
53
53
  undoStack,
54
54
  updateMemoryApproval
55
- } from "./chunk-FWAA3ARX.js";
55
+ } from "./chunk-HX67JAK6.js";
56
56
  import "./chunk-K3CF65QH.js";
57
57
  import "./chunk-UUSRWSSX.js";
58
58
  import "./chunk-CKH4KQ4E.js";
@@ -74,10 +74,10 @@ import {
74
74
  formatDoctorReport,
75
75
  loadContextFiles,
76
76
  writeCrashLog
77
- } from "./chunk-NB7LR3TP.js";
77
+ } from "./chunk-NXYXFRPA.js";
78
78
  import {
79
79
  ProviderRegistry
80
- } from "./chunk-62R7CACG.js";
80
+ } from "./chunk-QYQI7ZWK.js";
81
81
  import {
82
82
  describePlugin,
83
83
  getActivePluginAssets,
@@ -94,7 +94,7 @@ import {
94
94
  trustHook,
95
95
  trustPlugin,
96
96
  untrustHook
97
- } from "./chunk-TQPU3J4P.js";
97
+ } from "./chunk-EZGZOK6E.js";
98
98
  import {
99
99
  CONTENT_ONLY_STREAM_REMINDER,
100
100
  TEE_FINAL_USER_NUDGE,
@@ -113,10 +113,10 @@ import {
113
113
  stripOuterCodeFence,
114
114
  stripToolCallReminder,
115
115
  teeStreamErrorSummary
116
- } from "./chunk-ODYTXQ26.js";
116
+ } from "./chunk-O3XSFPYH.js";
117
117
  import {
118
118
  ConfigManager
119
- } from "./chunk-XTMHBOHG.js";
119
+ } from "./chunk-5PKNKJYP.js";
120
120
  import {
121
121
  AuthError,
122
122
  ProviderError,
@@ -130,7 +130,7 @@ import {
130
130
  import {
131
131
  fileCheckpoints
132
132
  } from "./chunk-4BKXL7SM.js";
133
- import "./chunk-YH657UWU.js";
133
+ import "./chunk-M4FW2NPU.js";
134
134
  import {
135
135
  AGENTIC_BEHAVIOR_GUIDELINE,
136
136
  AUTHOR,
@@ -149,7 +149,7 @@ import {
149
149
  SKILLS_DIR_NAME,
150
150
  VERSION,
151
151
  buildUserIdentityPrompt
152
- } from "./chunk-ZOLZ6JPG.js";
152
+ } from "./chunk-ACTO5C6K.js";
153
153
  import {
154
154
  buildChatIndex,
155
155
  clearChatIndex,
@@ -1821,7 +1821,7 @@ No tools match "${filter}".
1821
1821
  const { join: join7 } = await import("path");
1822
1822
  const { existsSync: existsSync6 } = await import("fs");
1823
1823
  const { getGitRoot: getGitRoot2 } = await import("./git-context-EXOEHQSF.js");
1824
- const { MCP_PROJECT_CONFIG_NAME: MCP_PROJECT_CONFIG_NAME2 } = await import("./constants-EOWAB3VR.js");
1824
+ const { MCP_PROJECT_CONFIG_NAME: MCP_PROJECT_CONFIG_NAME2 } = await import("./constants-UROQJXLY.js");
1825
1825
  const { approveProject, hashMcpFile } = await import("./project-trust-NKYHL3VZ.js");
1826
1826
  const cwd = process.cwd();
1827
1827
  const projectRoot = getGitRoot2(cwd) ?? cwd;
@@ -2800,7 +2800,7 @@ function createReviewCommands() {
2800
2800
  usage: "/test [command|filter]",
2801
2801
  async execute(args, ctx) {
2802
2802
  try {
2803
- const { executeTests } = await import("./run-tests-ZBX476UL.js");
2803
+ const { executeTests } = await import("./run-tests-FLCVJ6TK.js");
2804
2804
  const argStr = args.join(" ").trim();
2805
2805
  let testArgs = {};
2806
2806
  if (argStr) {
@@ -7745,7 +7745,7 @@ program.command("web").description("Start Web UI server with browser-based chat
7745
7745
  console.error("Error: Invalid port number. Must be between 1 and 65535.");
7746
7746
  process.exit(1);
7747
7747
  }
7748
- const { startWebServer } = await import("./server-6IDBCCJ2.js");
7748
+ const { startWebServer } = await import("./server-W2X3C6GJ.js");
7749
7749
  await startWebServer({ port, host: options.host });
7750
7750
  });
7751
7751
  program.command("user [action] [username]").description("Manage Web UI users (list | create <name> | delete <name> | reset-password <name> | logout-all <name> | migrate <name>)").action(async (action, username) => {
@@ -7912,11 +7912,11 @@ program.command("sessions").description("List recent conversation sessions").opt
7912
7912
  console.log(footer + "\n");
7913
7913
  });
7914
7914
  program.command("usage").description("Show token + cost usage grouped by provider/model (cross-session)").option("--days <n>", "Only the last N days (inclusive of today)").option("--month <ym>", "Only a specific month, format YYYY-MM (e.g. 2026-06)").option("--json", "Output as JSON (for scripting)").action(async (options) => {
7915
- const { runUsageCli } = await import("./usage-2VGL3YWF.js");
7915
+ const { runUsageCli } = await import("./usage-MZCDTJWB.js");
7916
7916
  await runUsageCli(options);
7917
7917
  });
7918
7918
  program.command("doctor").description("Health check: API keys, config, MCP, recent crashes, tool usage, disk usage").option("--json", "Output as JSON (for scripting)").option("--reset-stats", "Reset accumulated tool usage statistics").action(async (options) => {
7919
- const { runDoctorCli } = await import("./doctor-cli-4YVKJESI.js");
7919
+ const { runDoctorCli } = await import("./doctor-cli-BY3FIV2B.js");
7920
7920
  const argv = process.argv.slice(2);
7921
7921
  await runDoctorCli({
7922
7922
  json: !!options.json || argv.includes("--json"),
@@ -7925,7 +7925,7 @@ program.command("doctor").description("Health check: API keys, config, MCP, rece
7925
7925
  });
7926
7926
  program.command("batch <action> [arg] [arg2]").description("Anthropic Message Batches: submit | list | status <id> | results <id> [out] | cancel <id>").option("--dry-run", "Parse and validate input without submitting (submit only)").action(async (action, arg, arg2, options) => {
7927
7927
  try {
7928
- const batch = await import("./batch-FLMFMR3R.js");
7928
+ const batch = await import("./batch-WWNPYQ6G.js");
7929
7929
  switch (action) {
7930
7930
  case "submit":
7931
7931
  if (!arg) {
@@ -7968,7 +7968,7 @@ program.command("batch <action> [arg] [arg2]").description("Anthropic Message Ba
7968
7968
  }
7969
7969
  });
7970
7970
  program.command("mcp-serve").description("Start an MCP server over STDIO, exposing aicli's built-in tools to Claude Desktop / Cursor / other MCP clients").option("--allow-destructive", "Allow bash / run_interactive / task_create (always destructive in MCP mode)").option("--allow-outside-cwd", "Allow tool path arguments to escape the sandbox root \u2014 disabled by default").option("--tools <list>", "Comma-separated whitelist of tools to expose (default: all eligible tools)").option("--cwd <path>", "Working directory AND sandbox root (default: current directory)").action(async (options) => {
7971
- const { startMcpServer } = await import("./server-4XGNHG6P.js");
7971
+ const { startMcpServer } = await import("./server-E6LZB72O.js");
7972
7972
  await startMcpServer({
7973
7973
  allowDestructive: !!options.allowDestructive,
7974
7974
  allowOutsideCwd: !!options.allowOutsideCwd,
@@ -7981,7 +7981,7 @@ program.command("pr <action> [target]").description("PR review helpers: review |
7981
7981
  console.error(`Unknown pr action: ${action}. Use review | security-review | summarize.`);
7982
7982
  process.exit(1);
7983
7983
  }
7984
- const { runPrCli } = await import("./pr-QJFFSYEU.js");
7984
+ const { runPrCli } = await import("./pr-IJRUPR5C.js");
7985
7985
  const result = await runPrCli({
7986
7986
  action,
7987
7987
  target,
@@ -8001,8 +8001,8 @@ program.command("pr <action> [target]").description("PR review helpers: review |
8001
8001
  process.exit(result.exitCode);
8002
8002
  });
8003
8003
  program.command("ci").description("Headless PR review (code + security) \u2014 reads git/gh diff, optionally posts to PR. Designed for GitHub Actions.").option("--pr <num>", "PR number or URL; diff fetched via gh pr diff <value>", (v) => /^#?\d+$/.test(v) ? parseInt(v.replace(/^#/, ""), 10) : v).option("--base <ref>", "Base ref for git diff <ref>...HEAD (ignored when --pr set)").option("--post", "Post review as a PR comment (requires gh CLI + GH_TOKEN, needs --pr)").option("--no-update", "Always create a new comment instead of updating the previous aicli review").option("--skip-code", "Skip the code review section").option("--skip-security", "Skip the security review section").option("--detailed", "Use the detailed code-review prompt").option("--max-diff <n>", "Max diff chars sent to the model (default 30000)", (v) => parseInt(v, 10)).option("--provider <id>", "Override provider (default: config.defaultProvider)").option("--model <id>", "Override model").option("--dry-run", "Print result to stdout instead of posting (overrides --post)").option("--json", "Output a structured JSON report").option("--markdown", "Output Markdown report (default)").option("--sarif", "Output SARIF 2.1.0 for code scanning artifacts").option("--fail-on-security-high", "Fail when the security review contains HIGH/CRITICAL findings (default)").option("--no-fail-on-security-high", "Do not fail on security HIGH/CRITICAL findings").option("--fail-on-test-failure", "Fail when the report mentions test failures (default)").option("--no-fail-on-test-failure", "Do not fail on test failure findings").option("--fail-on-lint-failure", "Fail when the report mentions lint/typecheck failures (default)").option("--no-fail-on-lint-failure", "Do not fail on lint/typecheck failure findings").action(async (options) => {
8004
- const { runCi } = await import("./ci-SI2VXE4Q.js");
8005
- const { formatCiResult } = await import("./ci-format-SFTFN3SE.js");
8004
+ const { runCi } = await import("./ci-V5V3JSJC.js");
8005
+ const { formatCiResult } = await import("./ci-format-XS7LKBO5.js");
8006
8006
  const formats = [options.json, options.markdown, options.sarif].filter(Boolean).length;
8007
8007
  if (formats > 1) {
8008
8008
  console.error("Choose only one output format: --json, --markdown, or --sarif.");
@@ -8160,7 +8160,7 @@ program.command("hub [topic]").description("Start multi-agent hub (discuss / bra
8160
8160
  config.get("customProviders"),
8161
8161
  config.getConfigDir()
8162
8162
  );
8163
- const { startHub } = await import("./hub-6IKXR32G.js");
8163
+ const { startHub } = await import("./hub-L2QCRI5M.js");
8164
8164
  await startHub(
8165
8165
  {
8166
8166
  topic: topic ?? "",
@@ -2,8 +2,8 @@
2
2
  import {
3
3
  countSeverity,
4
4
  runCi
5
- } from "./chunk-5T746UEU.js";
6
- import "./chunk-ADARC33O.js";
5
+ } from "./chunk-FQSAK75P.js";
6
+ import "./chunk-TJK7AU65.js";
7
7
  import {
8
8
  buildReviewPrompt,
9
9
  buildSecurityReviewPrompt,
@@ -11,15 +11,15 @@ import {
11
11
  } from "./chunk-HLWUDRBO.js";
12
12
  import {
13
13
  ProviderRegistry
14
- } from "./chunk-62R7CACG.js";
15
- import "./chunk-ODYTXQ26.js";
14
+ } from "./chunk-QYQI7ZWK.js";
15
+ import "./chunk-O3XSFPYH.js";
16
16
  import {
17
17
  ConfigManager
18
- } from "./chunk-XTMHBOHG.js";
18
+ } from "./chunk-5PKNKJYP.js";
19
19
  import "./chunk-5ULLIOVC.js";
20
20
  import {
21
21
  VERSION
22
- } from "./chunk-ZOLZ6JPG.js";
22
+ } from "./chunk-ACTO5C6K.js";
23
23
  import "./chunk-IW3Q7AE5.js";
24
24
 
25
25
  // src/cli/pr.ts
@@ -2,8 +2,8 @@
2
2
  import {
3
3
  executeTests,
4
4
  runTestsTool
5
- } from "./chunk-YH657UWU.js";
6
- import "./chunk-ZOLZ6JPG.js";
5
+ } from "./chunk-M4FW2NPU.js";
6
+ import "./chunk-ACTO5C6K.js";
7
7
  export {
8
8
  executeTests,
9
9
  runTestsTool
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  executeTests,
3
3
  runTestsTool
4
- } from "./chunk-UOIUGBG2.js";
4
+ } from "./chunk-4OAV7QMB.js";
5
5
  export {
6
6
  executeTests,
7
7
  runTestsTool
@@ -1,25 +1,25 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ToolRegistry
4
- } from "./chunk-FWAA3ARX.js";
4
+ } from "./chunk-HX67JAK6.js";
5
5
  import "./chunk-K3CF65QH.js";
6
6
  import "./chunk-UUSRWSSX.js";
7
7
  import "./chunk-CKH4KQ4E.js";
8
8
  import "./chunk-BXP6YZ2P.js";
9
9
  import {
10
10
  runTool
11
- } from "./chunk-TQPU3J4P.js";
11
+ } from "./chunk-EZGZOK6E.js";
12
12
  import {
13
13
  getDangerLevel,
14
14
  schemaToJsonSchema
15
- } from "./chunk-ODYTXQ26.js";
15
+ } from "./chunk-O3XSFPYH.js";
16
16
  import "./chunk-5ULLIOVC.js";
17
17
  import "./chunk-HOSJZMQS.js";
18
18
  import "./chunk-4BKXL7SM.js";
19
- import "./chunk-YH657UWU.js";
19
+ import "./chunk-M4FW2NPU.js";
20
20
  import {
21
21
  VERSION
22
- } from "./chunk-ZOLZ6JPG.js";
22
+ } from "./chunk-ACTO5C6K.js";
23
23
  import "./chunk-NVUCDUXE.js";
24
24
  import "./chunk-KHYD3WXE.js";
25
25
  import "./chunk-B5TYJO7V.js";
@@ -23,7 +23,7 @@ import {
23
23
  scanDirTree,
24
24
  scanProject,
25
25
  setupProxy
26
- } from "./chunk-75TAFSFZ.js";
26
+ } from "./chunk-7KS3RGZ7.js";
27
27
  import {
28
28
  buildReviewPrompt,
29
29
  buildSecurityReviewPrompt
@@ -67,7 +67,7 @@ import {
67
67
  truncateOutput,
68
68
  undoStack,
69
69
  updateMemoryApproval
70
- } from "./chunk-FWAA3ARX.js";
70
+ } from "./chunk-HX67JAK6.js";
71
71
  import "./chunk-K3CF65QH.js";
72
72
  import "./chunk-UUSRWSSX.js";
73
73
  import "./chunk-CKH4KQ4E.js";
@@ -84,10 +84,10 @@ import {
84
84
  buildDoctorReport,
85
85
  formatDoctorReport,
86
86
  loadContextFiles
87
- } from "./chunk-NB7LR3TP.js";
87
+ } from "./chunk-NXYXFRPA.js";
88
88
  import {
89
89
  ProviderRegistry
90
- } from "./chunk-62R7CACG.js";
90
+ } from "./chunk-QYQI7ZWK.js";
91
91
  import {
92
92
  describePlugin,
93
93
  getActivePluginAssets,
@@ -102,7 +102,7 @@ import {
102
102
  runTool,
103
103
  setPluginEnabled,
104
104
  trustPlugin
105
- } from "./chunk-TQPU3J4P.js";
105
+ } from "./chunk-EZGZOK6E.js";
106
106
  import {
107
107
  CONTENT_ONLY_STREAM_REMINDER,
108
108
  TEE_FINAL_USER_NUDGE,
@@ -118,10 +118,10 @@ import {
118
118
  stripOuterCodeFence,
119
119
  stripToolCallReminder,
120
120
  teeStreamErrorSummary
121
- } from "./chunk-ODYTXQ26.js";
121
+ } from "./chunk-O3XSFPYH.js";
122
122
  import {
123
123
  ConfigManager
124
- } from "./chunk-XTMHBOHG.js";
124
+ } from "./chunk-5PKNKJYP.js";
125
125
  import "./chunk-5ULLIOVC.js";
126
126
  import {
127
127
  formatGitContextForPrompt,
@@ -129,7 +129,7 @@ import {
129
129
  getGitRoot
130
130
  } from "./chunk-HOSJZMQS.js";
131
131
  import "./chunk-4BKXL7SM.js";
132
- import "./chunk-YH657UWU.js";
132
+ import "./chunk-M4FW2NPU.js";
133
133
  import {
134
134
  AGENTIC_BEHAVIOR_GUIDELINE,
135
135
  AUTHOR,
@@ -146,7 +146,7 @@ import {
146
146
  SKILLS_DIR_NAME,
147
147
  VERSION,
148
148
  buildUserIdentityPrompt
149
- } from "./chunk-ZOLZ6JPG.js";
149
+ } from "./chunk-ACTO5C6K.js";
150
150
  import "./chunk-NVUCDUXE.js";
151
151
  import "./chunk-KHYD3WXE.js";
152
152
  import {
@@ -1593,7 +1593,7 @@ async function handleSecurityReview(args, ctx) {
1593
1593
  async function handleTest(args, ctx) {
1594
1594
  ctx.send({ type: "info", message: "\u{1F9EA} Running tests..." });
1595
1595
  try {
1596
- const { executeTests } = await import("./run-tests-ZBX476UL.js");
1596
+ const { executeTests } = await import("./run-tests-FLCVJ6TK.js");
1597
1597
  const argStr = args.join(" ").trim();
1598
1598
  let testArgs = {};
1599
1599
  if (argStr) {
@@ -3,25 +3,25 @@ import {
3
3
  ToolRegistry,
4
4
  googleSearchContext,
5
5
  truncateOutput
6
- } from "./chunk-FWAA3ARX.js";
6
+ } from "./chunk-HX67JAK6.js";
7
7
  import "./chunk-K3CF65QH.js";
8
8
  import "./chunk-UUSRWSSX.js";
9
9
  import "./chunk-CKH4KQ4E.js";
10
10
  import "./chunk-BXP6YZ2P.js";
11
11
  import {
12
12
  runTool
13
- } from "./chunk-TQPU3J4P.js";
13
+ } from "./chunk-EZGZOK6E.js";
14
14
  import {
15
15
  getDangerLevel,
16
16
  runLeanAgentLoop
17
- } from "./chunk-ODYTXQ26.js";
17
+ } from "./chunk-O3XSFPYH.js";
18
18
  import "./chunk-5ULLIOVC.js";
19
19
  import "./chunk-HOSJZMQS.js";
20
20
  import "./chunk-4BKXL7SM.js";
21
- import "./chunk-YH657UWU.js";
21
+ import "./chunk-M4FW2NPU.js";
22
22
  import {
23
23
  SUBAGENT_ALLOWED_TOOLS
24
- } from "./chunk-ZOLZ6JPG.js";
24
+ } from "./chunk-ACTO5C6K.js";
25
25
  import "./chunk-NVUCDUXE.js";
26
26
  import "./chunk-KHYD3WXE.js";
27
27
  import "./chunk-B5TYJO7V.js";
@@ -8,9 +8,9 @@ import {
8
8
  } from "./chunk-E44DTERW.js";
9
9
  import {
10
10
  ConfigManager
11
- } from "./chunk-XTMHBOHG.js";
11
+ } from "./chunk-5PKNKJYP.js";
12
12
  import "./chunk-5ULLIOVC.js";
13
- import "./chunk-ZOLZ6JPG.js";
13
+ import "./chunk-ACTO5C6K.js";
14
14
  import "./chunk-IW3Q7AE5.js";
15
15
 
16
16
  // src/cli/usage.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jinzd-ai-cli",
3
- "version": "0.4.231",
3
+ "version": "0.4.233",
4
4
  "description": "Cross-platform REPL-style AI CLI with multi-provider support",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",