jinzd-ai-cli 0.4.111 → 0.4.112

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,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ConfigManager
4
- } from "./chunk-VYDXL2PC.js";
4
+ } from "./chunk-FM5VYCXA.js";
5
5
  import "./chunk-2ZD3YTVM.js";
6
- import "./chunk-CPIQXP7Q.js";
6
+ import "./chunk-AWZ63EVH.js";
7
7
  import "./chunk-PDX44BCA.js";
8
8
 
9
9
  // src/cli/batch.ts
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  TEST_TIMEOUT
4
- } from "./chunk-CPIQXP7Q.js";
4
+ } from "./chunk-AWZ63EVH.js";
5
5
 
6
6
  // src/tools/builtin/run-tests.ts
7
7
  import { execSync, spawnSync } from "child_process";
@@ -5,7 +5,7 @@ import {
5
5
  } from "./chunk-3BICTI5M.js";
6
6
  import {
7
7
  runTestsTool
8
- } from "./chunk-5LKW2GOF.js";
8
+ } from "./chunk-5XHNTLRS.js";
9
9
  import {
10
10
  EnvLoader,
11
11
  NetworkError,
@@ -18,7 +18,7 @@ import {
18
18
  SUBAGENT_ALLOWED_TOOLS,
19
19
  SUBAGENT_DEFAULT_MAX_ROUNDS,
20
20
  SUBAGENT_MAX_ROUNDS_LIMIT
21
- } from "./chunk-CPIQXP7Q.js";
21
+ } from "./chunk-AWZ63EVH.js";
22
22
  import {
23
23
  fileCheckpoints
24
24
  } from "./chunk-4BKXL7SM.js";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  // src/core/constants.ts
4
- var VERSION = "0.4.111";
4
+ var VERSION = "0.4.112";
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
  schemaToJsonSchema,
4
4
  truncateForPersist
5
- } from "./chunk-5EVKTBUU.js";
5
+ } from "./chunk-7XXZWPTN.js";
6
6
  import {
7
7
  AuthError,
8
8
  ProviderError,
@@ -18,7 +18,7 @@ import {
18
18
  MCP_PROTOCOL_VERSION,
19
19
  MCP_TOOL_PREFIX,
20
20
  VERSION
21
- } from "./chunk-CPIQXP7Q.js";
21
+ } from "./chunk-AWZ63EVH.js";
22
22
  import {
23
23
  redactJson
24
24
  } from "./chunk-7ZJN4KLV.js";
@@ -1785,7 +1785,16 @@ var PSEUDO_TOOL_CALL_PATTERNS = [
1785
1785
  // ```tool_call\n...\n``` markdown fences (Kimi/Zhipu fallback)
1786
1786
  /```\s*tool_call\b/i,
1787
1787
  // Bare JSON tool-call block: lines starting with `{"name":"...","arguments":`
1788
- /^\s*\{\s*"name"\s*:\s*"[\w._-]+"\s*,\s*"arguments"\s*:/m
1788
+ /^\s*\{\s*"name"\s*:\s*"[\w._-]+"\s*,\s*"arguments"\s*:/m,
1789
+ // v0.4.112: <think> ... </think> reasoning blocks. The REPL renderer
1790
+ // suppresses these from terminal output, but tee mode writes the raw
1791
+ // delta to disk → reasoning leaks into the saved file. We saw a 600-line
1792
+ // 审计报告.md whose first 57 lines were the model's planning monologue.
1793
+ /<think\b[^>]*>/i,
1794
+ // v0.4.112: leading ```markdown / ```md fence wrapping the entire document.
1795
+ // DeepSeek V4 Pro Thinking sometimes "politely" wraps its document output
1796
+ // in a markdown fence. The fence ends up literally in the saved file.
1797
+ /^\s*```\s*(?:markdown|md|gfm)\b/im
1789
1798
  ];
1790
1799
  function detectPseudoToolCalls(content) {
1791
1800
  if (!content || content.length === 0) return null;
@@ -1805,10 +1814,46 @@ function stripPseudoToolCalls(content) {
1805
1814
  out = out.replace(/<tool_use(?:_id)?\b[^>]*>[\s\S]*?<\/tool_use(?:_id)?>/gi, "");
1806
1815
  out = out.replace(/```\s*tool_call\b[\s\S]*?```/gi, "");
1807
1816
  out = out.replace(/<think\b[^>]*>[\s\S]*?<\/think>/gi, "");
1817
+ out = out.replace(/<think\b[^>]*>[\s\S]*?(?=^#{1,3}\s+\S|\n\s*\n)/im, "");
1808
1818
  out = out.replace(/^\s*\{\s*"name"\s*:\s*"[\w._-]+"\s*,\s*"arguments"\s*:[\s\S]*?\}\s*$/gm, "");
1819
+ out = unwrapDocumentFence(out);
1820
+ out = peelMetaNarration(out);
1809
1821
  out = out.replace(/\n{3,}/g, "\n\n").trim();
1810
1822
  return out;
1811
1823
  }
1824
+ function unwrapDocumentFence(content) {
1825
+ const trimmed = content.trim();
1826
+ const open = trimmed.match(/^```\s*(markdown|md|gfm)?\s*\n/i);
1827
+ if (!open) return content;
1828
+ const afterOpen = trimmed.slice(open[0].length);
1829
+ const closeMatch = afterOpen.match(/\n```\s*$/);
1830
+ if (!closeMatch) return content;
1831
+ const inner = afterOpen.slice(0, afterOpen.length - closeMatch[0].length);
1832
+ if (inner.length < 200) return content;
1833
+ return inner;
1834
+ }
1835
+ function peelMetaNarration(content) {
1836
+ let out = content;
1837
+ const firstHeadingMatch = out.match(/^#{1,3}\s+\S.*$/m);
1838
+ if (firstHeadingMatch && firstHeadingMatch.index !== void 0) {
1839
+ const before = out.slice(0, firstHeadingMatch.index);
1840
+ const hasIntroMarker = /(?:以下(?:即为|是|就是)|这是|Here\s+is|Below\s+is|完整的?(?:审计报告|内容|文档)|审计报告(?:如下|的完整内容))/i.test(before);
1841
+ if (before.length > 0 && before.length < 800 && hasIntroMarker) {
1842
+ out = out.slice(firstHeadingMatch.index);
1843
+ }
1844
+ if (out.startsWith("---\n")) {
1845
+ const headingAfterRule = out.slice(4).match(/^#{1,3}\s+\S/m);
1846
+ if (headingAfterRule && headingAfterRule.index !== void 0 && headingAfterRule.index < 100) {
1847
+ out = out.slice(4 + headingAfterRule.index);
1848
+ }
1849
+ }
1850
+ }
1851
+ const codaMatch = out.match(/\n[^\n]*?(?:以上(?:即为|就是|内容|为完整的?)|Above\s+is\s+the|本报告已经|该报告(?:已经|包含)|报告(?:已|至此)结束)[^\n]*$/i);
1852
+ if (codaMatch && codaMatch.index !== void 0 && codaMatch.index > out.length / 2) {
1853
+ out = out.slice(0, codaMatch.index);
1854
+ }
1855
+ return out.trim();
1856
+ }
1812
1857
  function looksLikeDocumentBody(content) {
1813
1858
  if (!content || content.length < 200) return false;
1814
1859
  if (/^#{1,6}\s+\S/m.test(content)) return true;
@@ -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.111";
9
+ var VERSION = "0.4.112";
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-CPIQXP7Q.js";
11
+ } from "./chunk-AWZ63EVH.js";
12
12
 
13
13
  // src/config/config-manager.ts
14
14
  import { readFileSync, writeFileSync, existsSync, mkdirSync } from "fs";
@@ -36,7 +36,7 @@ import {
36
36
  TEST_TIMEOUT,
37
37
  VERSION,
38
38
  buildUserIdentityPrompt
39
- } from "./chunk-CPIQXP7Q.js";
39
+ } from "./chunk-AWZ63EVH.js";
40
40
  import "./chunk-PDX44BCA.js";
41
41
  export {
42
42
  AGENTIC_BEHAVIOR_GUIDELINE,
@@ -36,7 +36,7 @@ import {
36
36
  VERSION,
37
37
  buildUserIdentityPrompt,
38
38
  runTestsTool
39
- } from "./chunk-AVMGKU4E.js";
39
+ } from "./chunk-DEXCXFLP.js";
40
40
  import {
41
41
  hasSemanticIndex,
42
42
  semanticSearch
@@ -2199,7 +2199,16 @@ var PSEUDO_TOOL_CALL_PATTERNS = [
2199
2199
  // ```tool_call\n...\n``` markdown fences (Kimi/Zhipu fallback)
2200
2200
  /```\s*tool_call\b/i,
2201
2201
  // Bare JSON tool-call block: lines starting with `{"name":"...","arguments":`
2202
- /^\s*\{\s*"name"\s*:\s*"[\w._-]+"\s*,\s*"arguments"\s*:/m
2202
+ /^\s*\{\s*"name"\s*:\s*"[\w._-]+"\s*,\s*"arguments"\s*:/m,
2203
+ // v0.4.112: <think> ... </think> reasoning blocks. The REPL renderer
2204
+ // suppresses these from terminal output, but tee mode writes the raw
2205
+ // delta to disk → reasoning leaks into the saved file. We saw a 600-line
2206
+ // 审计报告.md whose first 57 lines were the model's planning monologue.
2207
+ /<think\b[^>]*>/i,
2208
+ // v0.4.112: leading ```markdown / ```md fence wrapping the entire document.
2209
+ // DeepSeek V4 Pro Thinking sometimes "politely" wraps its document output
2210
+ // in a markdown fence. The fence ends up literally in the saved file.
2211
+ /^\s*```\s*(?:markdown|md|gfm)\b/im
2203
2212
  ];
2204
2213
  function detectPseudoToolCalls(content) {
2205
2214
  if (!content || content.length === 0) return null;
@@ -2219,10 +2228,46 @@ function stripPseudoToolCalls(content) {
2219
2228
  out = out.replace(/<tool_use(?:_id)?\b[^>]*>[\s\S]*?<\/tool_use(?:_id)?>/gi, "");
2220
2229
  out = out.replace(/```\s*tool_call\b[\s\S]*?```/gi, "");
2221
2230
  out = out.replace(/<think\b[^>]*>[\s\S]*?<\/think>/gi, "");
2231
+ out = out.replace(/<think\b[^>]*>[\s\S]*?(?=^#{1,3}\s+\S|\n\s*\n)/im, "");
2222
2232
  out = out.replace(/^\s*\{\s*"name"\s*:\s*"[\w._-]+"\s*,\s*"arguments"\s*:[\s\S]*?\}\s*$/gm, "");
2233
+ out = unwrapDocumentFence(out);
2234
+ out = peelMetaNarration(out);
2223
2235
  out = out.replace(/\n{3,}/g, "\n\n").trim();
2224
2236
  return out;
2225
2237
  }
2238
+ function unwrapDocumentFence(content) {
2239
+ const trimmed = content.trim();
2240
+ const open = trimmed.match(/^```\s*(markdown|md|gfm)?\s*\n/i);
2241
+ if (!open) return content;
2242
+ const afterOpen = trimmed.slice(open[0].length);
2243
+ const closeMatch = afterOpen.match(/\n```\s*$/);
2244
+ if (!closeMatch) return content;
2245
+ const inner = afterOpen.slice(0, afterOpen.length - closeMatch[0].length);
2246
+ if (inner.length < 200) return content;
2247
+ return inner;
2248
+ }
2249
+ function peelMetaNarration(content) {
2250
+ let out = content;
2251
+ const firstHeadingMatch = out.match(/^#{1,3}\s+\S.*$/m);
2252
+ if (firstHeadingMatch && firstHeadingMatch.index !== void 0) {
2253
+ const before = out.slice(0, firstHeadingMatch.index);
2254
+ const hasIntroMarker = /(?:以下(?:即为|是|就是)|这是|Here\s+is|Below\s+is|完整的?(?:审计报告|内容|文档)|审计报告(?:如下|的完整内容))/i.test(before);
2255
+ if (before.length > 0 && before.length < 800 && hasIntroMarker) {
2256
+ out = out.slice(firstHeadingMatch.index);
2257
+ }
2258
+ if (out.startsWith("---\n")) {
2259
+ const headingAfterRule = out.slice(4).match(/^#{1,3}\s+\S/m);
2260
+ if (headingAfterRule && headingAfterRule.index !== void 0 && headingAfterRule.index < 100) {
2261
+ out = out.slice(4 + headingAfterRule.index);
2262
+ }
2263
+ }
2264
+ }
2265
+ const codaMatch = out.match(/\n[^\n]*?(?:以上(?:即为|就是|内容|为完整的?)|Above\s+is\s+the|本报告已经|该报告(?:已经|包含)|报告(?:已|至此)结束)[^\n]*$/i);
2266
+ if (codaMatch && codaMatch.index !== void 0 && codaMatch.index > out.length / 2) {
2267
+ out = out.slice(0, codaMatch.index);
2268
+ }
2269
+ return out.trim();
2270
+ }
2226
2271
  function looksLikeDocumentBody(content) {
2227
2272
  if (!content || content.length < 200) return false;
2228
2273
  if (/^#{1,6}\s+\S/m.test(content)) return true;
@@ -11873,7 +11918,7 @@ ${undoResults.map((r) => ` \u2022 ${r}`).join("\n")}` });
11873
11918
  case "test": {
11874
11919
  this.send({ type: "info", message: "\u{1F9EA} Running tests..." });
11875
11920
  try {
11876
- const { executeTests } = await import("./run-tests-TTU6DNLI.js");
11921
+ const { executeTests } = await import("./run-tests-V73IZCNW.js");
11877
11922
  const argStr = args.join(" ").trim();
11878
11923
  let testArgs = {};
11879
11924
  if (argStr) {
@@ -386,7 +386,7 @@ ${content}`);
386
386
  }
387
387
  }
388
388
  async function runTaskMode(config, providers, configManager, topic) {
389
- const { TaskOrchestrator } = await import("./task-orchestrator-IJFF7XLQ.js");
389
+ const { TaskOrchestrator } = await import("./task-orchestrator-RPYZT2WL.js");
390
390
  const orchestrator = new TaskOrchestrator(config, providers, configManager);
391
391
  let interrupted = false;
392
392
  const onSigint = () => {
package/dist/index.js CHANGED
@@ -31,10 +31,10 @@ import {
31
31
  setupProxy,
32
32
  stripPseudoToolCalls,
33
33
  stripToolCallReminder
34
- } from "./chunk-GRIEVPII.js";
34
+ } from "./chunk-BWZJGCO6.js";
35
35
  import {
36
36
  ConfigManager
37
- } from "./chunk-VYDXL2PC.js";
37
+ } from "./chunk-FM5VYCXA.js";
38
38
  import {
39
39
  ToolExecutor,
40
40
  ToolRegistry,
@@ -53,10 +53,10 @@ import {
53
53
  spawnAgentContext,
54
54
  theme,
55
55
  undoStack
56
- } from "./chunk-5EVKTBUU.js";
56
+ } from "./chunk-7XXZWPTN.js";
57
57
  import "./chunk-3BICTI5M.js";
58
58
  import "./chunk-2DXY7UGF.js";
59
- import "./chunk-5LKW2GOF.js";
59
+ import "./chunk-5XHNTLRS.js";
60
60
  import "./chunk-2ZD3YTVM.js";
61
61
  import {
62
62
  AGENTIC_BEHAVIOR_GUIDELINE,
@@ -79,7 +79,7 @@ import {
79
79
  SKILLS_DIR_NAME,
80
80
  VERSION,
81
81
  buildUserIdentityPrompt
82
- } from "./chunk-CPIQXP7Q.js";
82
+ } from "./chunk-AWZ63EVH.js";
83
83
  import {
84
84
  formatGitContextForPrompt,
85
85
  getGitContext,
@@ -1600,7 +1600,7 @@ ${text}
1600
1600
  const { join: join6 } = await import("path");
1601
1601
  const { existsSync: existsSync6 } = await import("fs");
1602
1602
  const { getGitRoot: getGitRoot2 } = await import("./git-context-7KIP4X2V.js");
1603
- const { MCP_PROJECT_CONFIG_NAME: MCP_PROJECT_CONFIG_NAME2 } = await import("./constants-NPGSV4QY.js");
1603
+ const { MCP_PROJECT_CONFIG_NAME: MCP_PROJECT_CONFIG_NAME2 } = await import("./constants-OCYK6U3N.js");
1604
1604
  const { approveProject, hashMcpFile } = await import("./project-trust-IFM7FXEV.js");
1605
1605
  const cwd = process.cwd();
1606
1606
  const projectRoot = getGitRoot2(cwd) ?? cwd;
@@ -2650,7 +2650,7 @@ ${hint}` : "")
2650
2650
  usage: "/test [command|filter]",
2651
2651
  async execute(args, ctx) {
2652
2652
  try {
2653
- const { executeTests } = await import("./run-tests-QBNLSYCO.js");
2653
+ const { executeTests } = await import("./run-tests-JMKGA7XU.js");
2654
2654
  const argStr = args.join(" ").trim();
2655
2655
  let testArgs = {};
2656
2656
  if (argStr) {
@@ -6882,7 +6882,7 @@ program.command("web").description("Start Web UI server with browser-based chat
6882
6882
  console.error("Error: Invalid port number. Must be between 1 and 65535.");
6883
6883
  process.exit(1);
6884
6884
  }
6885
- const { startWebServer } = await import("./server-42ZKNS56.js");
6885
+ const { startWebServer } = await import("./server-YY6CUP3K.js");
6886
6886
  await startWebServer({ port, host: options.host });
6887
6887
  });
6888
6888
  program.command("user [action] [username]").description("Manage Web UI users (list | create <name> | delete <name> | reset-password <name> | migrate <name>)").action(async (action, username) => {
@@ -7005,7 +7005,7 @@ program.command("sessions").description("List recent conversation sessions").act
7005
7005
  });
7006
7006
  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) => {
7007
7007
  try {
7008
- const batch = await import("./batch-XIDQVPRL.js");
7008
+ const batch = await import("./batch-QQGRQ45S.js");
7009
7009
  switch (action) {
7010
7010
  case "submit":
7011
7011
  if (!arg) {
@@ -7048,7 +7048,7 @@ program.command("batch <action> [arg] [arg2]").description("Anthropic Message Ba
7048
7048
  }
7049
7049
  });
7050
7050
  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) => {
7051
- const { startMcpServer } = await import("./server-5TGJOWML.js");
7051
+ const { startMcpServer } = await import("./server-WWFOPWWJ.js");
7052
7052
  await startMcpServer({
7053
7053
  allowDestructive: !!options.allowDestructive,
7054
7054
  allowOutsideCwd: !!options.allowOutsideCwd,
@@ -7175,7 +7175,7 @@ program.command("hub [topic]").description("Start multi-agent hub (discuss / bra
7175
7175
  }),
7176
7176
  config.get("customProviders")
7177
7177
  );
7178
- const { startHub } = await import("./hub-T34FCE5J.js");
7178
+ const { startHub } = await import("./hub-7KYFVLHM.js");
7179
7179
  await startHub(
7180
7180
  {
7181
7181
  topic: topic ?? "",
@@ -2,8 +2,8 @@
2
2
  import {
3
3
  executeTests,
4
4
  runTestsTool
5
- } from "./chunk-5LKW2GOF.js";
6
- import "./chunk-CPIQXP7Q.js";
5
+ } from "./chunk-5XHNTLRS.js";
6
+ import "./chunk-AWZ63EVH.js";
7
7
  import "./chunk-PDX44BCA.js";
8
8
  export {
9
9
  executeTests,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  executeTests,
3
3
  runTestsTool
4
- } from "./chunk-AVMGKU4E.js";
4
+ } from "./chunk-DEXCXFLP.js";
5
5
  import "./chunk-3RG5ZIWI.js";
6
6
  export {
7
7
  executeTests,
@@ -3,14 +3,14 @@ import {
3
3
  ToolRegistry,
4
4
  getDangerLevel,
5
5
  schemaToJsonSchema
6
- } from "./chunk-5EVKTBUU.js";
6
+ } from "./chunk-7XXZWPTN.js";
7
7
  import "./chunk-3BICTI5M.js";
8
8
  import "./chunk-2DXY7UGF.js";
9
- import "./chunk-5LKW2GOF.js";
9
+ import "./chunk-5XHNTLRS.js";
10
10
  import "./chunk-2ZD3YTVM.js";
11
11
  import {
12
12
  VERSION
13
- } from "./chunk-CPIQXP7Q.js";
13
+ } from "./chunk-AWZ63EVH.js";
14
14
  import "./chunk-4BKXL7SM.js";
15
15
  import "./chunk-7ZJN4KLV.js";
16
16
  import "./chunk-KHYD3WXE.js";
@@ -24,10 +24,10 @@ import {
24
24
  setupProxy,
25
25
  stripPseudoToolCalls,
26
26
  stripToolCallReminder
27
- } from "./chunk-GRIEVPII.js";
27
+ } from "./chunk-BWZJGCO6.js";
28
28
  import {
29
29
  ConfigManager
30
- } from "./chunk-VYDXL2PC.js";
30
+ } from "./chunk-FM5VYCXA.js";
31
31
  import {
32
32
  ToolExecutor,
33
33
  ToolRegistry,
@@ -45,10 +45,10 @@ import {
45
45
  spawnAgentContext,
46
46
  truncateOutput,
47
47
  undoStack
48
- } from "./chunk-5EVKTBUU.js";
48
+ } from "./chunk-7XXZWPTN.js";
49
49
  import "./chunk-3BICTI5M.js";
50
50
  import "./chunk-2DXY7UGF.js";
51
- import "./chunk-5LKW2GOF.js";
51
+ import "./chunk-5XHNTLRS.js";
52
52
  import "./chunk-2ZD3YTVM.js";
53
53
  import {
54
54
  AGENTIC_BEHAVIOR_GUIDELINE,
@@ -68,7 +68,7 @@ import {
68
68
  SKILLS_DIR_NAME,
69
69
  VERSION,
70
70
  buildUserIdentityPrompt
71
- } from "./chunk-CPIQXP7Q.js";
71
+ } from "./chunk-AWZ63EVH.js";
72
72
  import {
73
73
  formatGitContextForPrompt,
74
74
  getGitContext,
@@ -2411,7 +2411,7 @@ ${undoResults.map((r) => ` \u2022 ${r}`).join("\n")}` });
2411
2411
  case "test": {
2412
2412
  this.send({ type: "info", message: "\u{1F9EA} Running tests..." });
2413
2413
  try {
2414
- const { executeTests } = await import("./run-tests-QBNLSYCO.js");
2414
+ const { executeTests } = await import("./run-tests-JMKGA7XU.js");
2415
2415
  const argStr = args.join(" ").trim();
2416
2416
  let testArgs = {};
2417
2417
  if (argStr) {
@@ -4,14 +4,14 @@ import {
4
4
  getDangerLevel,
5
5
  googleSearchContext,
6
6
  truncateOutput
7
- } from "./chunk-5EVKTBUU.js";
7
+ } from "./chunk-7XXZWPTN.js";
8
8
  import "./chunk-3BICTI5M.js";
9
9
  import "./chunk-2DXY7UGF.js";
10
- import "./chunk-5LKW2GOF.js";
10
+ import "./chunk-5XHNTLRS.js";
11
11
  import "./chunk-2ZD3YTVM.js";
12
12
  import {
13
13
  SUBAGENT_ALLOWED_TOOLS
14
- } from "./chunk-CPIQXP7Q.js";
14
+ } from "./chunk-AWZ63EVH.js";
15
15
  import "./chunk-4BKXL7SM.js";
16
16
  import "./chunk-7ZJN4KLV.js";
17
17
  import "./chunk-KHYD3WXE.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jinzd-ai-cli",
3
- "version": "0.4.111",
3
+ "version": "0.4.112",
4
4
  "description": "Cross-platform REPL-style AI CLI with multi-provider support",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",