jinzd-ai-cli 0.4.246 → 0.4.248

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 (48) hide show
  1. package/README.md +8 -3
  2. package/README.zh-CN.md +8 -3
  3. package/dist/{batch-AHW7WALD.js → batch-CC3LCNXM.js} +2 -2
  4. package/dist/{chat-index-ALUHFJKI.js → chat-index-7MMTGQNA.js} +2 -2
  5. package/dist/{chat-index-ML5FF5L6.js → chat-index-Q6BKWWAM.js} +1 -1
  6. package/dist/{chunk-DJDEXHOT.js → chunk-23ZIOVZR.js} +4 -4
  7. package/dist/{chunk-QYQI7ZWK.js → chunk-2QZMITSL.js} +13 -1
  8. package/dist/{chunk-IGPFYNZA.js → chunk-6RPGQ5CG.js} +1 -1
  9. package/dist/{chunk-XK22CVID.js → chunk-BIZFOVNA.js} +1 -1
  10. package/dist/{chunk-YVMACMXW.js → chunk-EWLXBTSC.js} +1 -1
  11. package/dist/{chunk-OMSOAFXY.js → chunk-G77EIVBY.js} +1 -1
  12. package/dist/{chunk-K3CF65QH.js → chunk-GLSR2NR3.js} +1 -1
  13. package/dist/{chunk-CJ3BPLHZ.js → chunk-GS5XW5UJ.js} +1 -1
  14. package/dist/{chunk-E44DTERW.js → chunk-GUOLPI33.js} +3 -0
  15. package/dist/{chunk-6Y42RN5H.js → chunk-HTOKVD7R.js} +4 -4
  16. package/dist/{chunk-DT77O33T.js → chunk-JQXXPTWL.js} +1 -1
  17. package/dist/{chunk-PJ3ONBWZ.js → chunk-NYNSYLFY.js} +1 -1
  18. package/dist/{chunk-KWQKQVPH.js → chunk-OBULDJSU.js} +1 -1
  19. package/dist/{chunk-LEKOBVOQ.js → chunk-OHV7DYIS.js} +4 -5
  20. package/dist/{chunk-LZGPGPA6.js → chunk-PNFQDFHK.js} +1 -1
  21. package/dist/{chunk-BNERFXVO.js → chunk-QCG6UU2S.js} +1 -1
  22. package/dist/{chunk-Z7JROM3J.js → chunk-SAZGFYBU.js} +1 -1
  23. package/dist/{chunk-P2LB6S4I.js → chunk-SHG2QSQA.js} +1 -1
  24. package/dist/{chunk-USJF35NB.js → chunk-U3QWCBRG.js} +1 -1
  25. package/dist/{chunk-GQYRPBIQ.js → chunk-WYRW2W4O.js} +12 -12
  26. package/dist/{chunk-WYNPWHXB.js → chunk-Z4LVPM3N.js} +1 -1
  27. package/dist/{chunk-NV63EYFL.js → chunk-ZWEZNKDW.js} +1 -1
  28. package/dist/{chunk-YQUBYTDR.js → chunk-ZX3ZYRU7.js} +1 -1
  29. package/dist/{ci-VOGIC6S4.js → ci-KFVU4CHS.js} +5 -5
  30. package/dist/{ci-format-BHCSMT5U.js → ci-format-IFFCSCCN.js} +2 -2
  31. package/dist/{constants-J4OLBH72.js → constants-3C4JLZVQ.js} +1 -1
  32. package/dist/{doctor-cli-IR3E3XHB.js → doctor-cli-XJOK5LJZ.js} +5 -5
  33. package/dist/electron-server.js +170 -136
  34. package/dist/{hub-SFFFYMGO.js → hub-6TQFYGZO.js} +2 -2
  35. package/dist/index.js +31 -32
  36. package/dist/{indexer-4WWS3VIL.js → indexer-M2LJGTY2.js} +1 -1
  37. package/dist/{indexer-2AG4G6B5.js → indexer-VZETNE4H.js} +1 -1
  38. package/dist/{persist-WGIJ6RXY.js → persist-A2QSXYFY.js} +3 -3
  39. package/dist/{persistent-memory-EKZ2JF7M.js → persistent-memory-JBWBMA56.js} +2 -2
  40. package/dist/{persistent-memory-3KH2EVHA.js → persistent-memory-QQXFCUNL.js} +2 -2
  41. package/dist/{pr-BNS3OHDM.js → pr-TMPU2U2P.js} +5 -5
  42. package/dist/{run-tests-PW4WC4OG.js → run-tests-2A3CASVZ.js} +2 -2
  43. package/dist/{run-tests-ZKHXKCQB.js → run-tests-NNML2XVV.js} +2 -2
  44. package/dist/{server-D2ID3GYA.js → server-6L5XRY4K.js} +113 -93
  45. package/dist/{server-3HLBEWNZ.js → server-ANNA57CP.js} +8 -8
  46. package/dist/{task-orchestrator-FMCI4RPX.js → task-orchestrator-URY32ZSQ.js} +8 -9
  47. package/dist/{usage-DPLNMDSJ.js → usage-J46NVHYR.js} +4 -4
  48. package/package.json +5 -4
package/README.md CHANGED
@@ -1,8 +1,13 @@
1
1
  **English** | [中文](README.zh-CN.md)
2
2
 
3
- # ai-cli
4
-
5
- > A cross-platform AI coding assistant — CLI, Web UI, and Desktop App — with multi-provider support and agentic tool calling
3
+ # ai-cli
4
+
5
+ <!-- AICLI:DOCS_DEFAULT_WEB_PORT=3000 -->
6
+ <!-- AICLI:DOCS_BUILTIN_TOOL_COUNT=30 -->
7
+ <!-- AICLI:DOCS_REPL_COMMAND_COUNT=48 -->
8
+ <!-- AICLI:DOCS_MEMORY_SOURCE=memory.jsonl -->
9
+
10
+ > A cross-platform AI coding assistant — CLI, Web UI, and Desktop App — with multi-provider support and agentic tool calling
6
11
 
7
12
  [![npm version](https://img.shields.io/npm/v/jinzd-ai-cli)](https://www.npmjs.com/package/jinzd-ai-cli)
8
13
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
package/README.zh-CN.md CHANGED
@@ -1,8 +1,13 @@
1
1
  [English](README.md) | **中文**
2
2
 
3
- # ai-cli
4
-
5
- > 跨平台 AI 编程助手 — CLI 终端、Web 界面、桌面应用三合一,支持 10 大 Provider(含本地 Ollama)与 Agentic 工具调用
3
+ # ai-cli
4
+
5
+ <!-- AICLI:DOCS_DEFAULT_WEB_PORT=3000 -->
6
+ <!-- AICLI:DOCS_BUILTIN_TOOL_COUNT=30 -->
7
+ <!-- AICLI:DOCS_REPL_COMMAND_COUNT=48 -->
8
+ <!-- AICLI:DOCS_MEMORY_SOURCE=memory.jsonl -->
9
+
10
+ > 跨平台 AI 编程助手 — CLI 终端、Web 界面、桌面应用三合一,支持 10 大 Provider(含本地 Ollama)与 Agentic 工具调用
6
11
 
7
12
  [![npm version](https://img.shields.io/npm/v/jinzd-ai-cli)](https://www.npmjs.com/package/jinzd-ai-cli)
8
13
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ConfigManager
4
- } from "./chunk-OMSOAFXY.js";
4
+ } from "./chunk-G77EIVBY.js";
5
5
  import "./chunk-5ULLIOVC.js";
6
- import "./chunk-YQUBYTDR.js";
6
+ import "./chunk-ZX3ZYRU7.js";
7
7
  import {
8
8
  atomicWriteFileSync
9
9
  } from "./chunk-IW3Q7AE5.js";
@@ -6,9 +6,9 @@ import {
6
6
  getChatIndexStatus,
7
7
  loadChatIndex,
8
8
  searchChatMemory
9
- } from "./chunk-IGPFYNZA.js";
9
+ } from "./chunk-6RPGQ5CG.js";
10
10
  import "./chunk-KHYD3WXE.js";
11
- import "./chunk-PJ3ONBWZ.js";
11
+ import "./chunk-NYNSYLFY.js";
12
12
  import "./chunk-B5TYJO7V.js";
13
13
  import "./chunk-IW3Q7AE5.js";
14
14
  export {
@@ -5,7 +5,7 @@ import {
5
5
  getChatIndexStatus,
6
6
  loadChatIndex,
7
7
  searchChatMemory
8
- } from "./chunk-NV63EYFL.js";
8
+ } from "./chunk-ZWEZNKDW.js";
9
9
  import "./chunk-YVTASHS5.js";
10
10
  import "./chunk-JV5N65KN.js";
11
11
  import "./chunk-6BUTA5VW.js";
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ProviderRegistry
4
- } from "./chunk-QYQI7ZWK.js";
4
+ } from "./chunk-2QZMITSL.js";
5
5
  import {
6
6
  ConfigManager
7
- } from "./chunk-OMSOAFXY.js";
7
+ } from "./chunk-G77EIVBY.js";
8
8
  import {
9
9
  getActivePluginAssets,
10
10
  getPendingHookTrust,
@@ -14,7 +14,7 @@ import {
14
14
  listHooks,
15
15
  listInstalledPlugins,
16
16
  resetStats
17
- } from "./chunk-WYNPWHXB.js";
17
+ } from "./chunk-Z4LVPM3N.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-YQUBYTDR.js";
29
+ } from "./chunk-ZX3ZYRU7.js";
30
30
 
31
31
  // src/diagnostics/doctor-report.ts
32
32
  import { existsSync as existsSync3, statSync as statSync2 } from "fs";
@@ -1164,7 +1164,6 @@ var OpenAICompatibleProvider = class extends BaseProvider {
1164
1164
  const message = firstChoice.message;
1165
1165
  const finishReason = firstChoice.finish_reason;
1166
1166
  const usage = toUsage(response.usage);
1167
- const contentStr = typeof message.content === "string" ? message.content : "";
1168
1167
  const hasToolCalls = !!(message.tool_calls && message.tool_calls.length > 0);
1169
1168
  const reasoningContent = message.reasoning_content;
1170
1169
  if (message.tool_calls && message.tool_calls.length > 0) {
@@ -1589,6 +1588,7 @@ var KimiProvider = class _KimiProvider extends OpenAICompatibleProvider {
1589
1588
  * 其他值会收到 400 "invalid temperature: only 1 is allowed for this model"。
1590
1589
  */
1591
1590
  static TEMP_1_MODELS = /* @__PURE__ */ new Set([
1591
+ "kimi-k3",
1592
1592
  "kimi-k2.6",
1593
1593
  "kimi-k2.5",
1594
1594
  "kimi-k2-thinking",
@@ -1615,6 +1615,18 @@ var KimiProvider = class _KimiProvider extends OpenAICompatibleProvider {
1615
1615
  requiresApiKey: true,
1616
1616
  baseUrl: this.defaultBaseUrl,
1617
1617
  models: [
1618
+ // Kimi K3(2026-07 旗舰,1M 上下文,多步推理 + 原生 vision)。
1619
+ // 官方文档核实(platform.kimi.ai/docs/guide/kimi-k3-quickstart):
1620
+ // - contextWindow 1M(1048576);code 就是 `kimi-k3`(UI 名 "K3 · Max" ≠ API code)
1621
+ // - temperature 固定 1.0(已并入 TEMP_1_MODELS)
1622
+ // - vision 走 base64 / ms://file-id(不收公网 URL)——本版未接图片输入路径,仅文本/工具
1623
+ // 默认仍保持 kimi-k2.6(K3 输出 $15/MTok 偏贵,按需 /model kimi-k3)。
1624
+ {
1625
+ id: "kimi-k3",
1626
+ displayName: "Kimi K3",
1627
+ contextWindow: 1048576,
1628
+ supportsStreaming: true
1629
+ },
1618
1630
  // Kimi K2.6 / K2.5 系列(最新一代,推荐)
1619
1631
  {
1620
1632
  id: "kimi-k2.6",
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-KHYD3WXE.js";
7
7
  import {
8
8
  getIndexMtimeMap
9
- } from "./chunk-PJ3ONBWZ.js";
9
+ } from "./chunk-NYNSYLFY.js";
10
10
  import {
11
11
  redactString
12
12
  } from "./chunk-B5TYJO7V.js";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  TEST_TIMEOUT
4
- } from "./chunk-YQUBYTDR.js";
4
+ } from "./chunk-ZX3ZYRU7.js";
5
5
 
6
6
  // src/tools/builtin/run-tests.ts
7
7
  import { execSync, spawnSync } from "child_process";
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  computeCost,
4
4
  formatCost
5
- } from "./chunk-E44DTERW.js";
5
+ } from "./chunk-GUOLPI33.js";
6
6
  import {
7
7
  atomicWriteFileSync
8
8
  } from "./chunk-IW3Q7AE5.js";
@@ -8,7 +8,7 @@ import {
8
8
  CONFIG_FILE_NAME,
9
9
  HISTORY_DIR_NAME,
10
10
  PLUGINS_DIR_NAME
11
- } from "./chunk-YQUBYTDR.js";
11
+ } from "./chunk-ZX3ZYRU7.js";
12
12
  import {
13
13
  atomicWriteFileSync
14
14
  } from "./chunk-IW3Q7AE5.js";
@@ -547,7 +547,7 @@ async function parseSource(file, source, language) {
547
547
  default:
548
548
  return extractTsJs(root, file, lang);
549
549
  }
550
- } catch (err) {
550
+ } catch {
551
551
  return [];
552
552
  }
553
553
  }
@@ -6,7 +6,7 @@ import {
6
6
  MEMORY_FILE_NAME,
7
7
  MEMORY_MAX_CHARS,
8
8
  MEMORY_STORE_FILE_NAME
9
- } from "./chunk-LZGPGPA6.js";
9
+ } from "./chunk-PNFQDFHK.js";
10
10
  import {
11
11
  atomicWriteFileSync
12
12
  } from "./chunk-6BUTA5VW.js";
@@ -51,6 +51,9 @@ var PRICING_TABLE = {
51
51
  "moonshot-v1-128k": { input: 0.83, output: 0.83 },
52
52
  "kimi-k2": { input: 0.6, output: 2.5 },
53
53
  "kimi-latest": { input: 0.6, output: 2.5 },
54
+ // Kimi K3(2026-07 旗舰,1M 上下文)官方定价 platform.kimi.ai/pricing/chat-k3:
55
+ // 输入 cache-miss $3.00 / cache-hit $0.30,输出 $15.00(/MTok)。
56
+ "kimi-k3": { input: 3, output: 15, cacheRead: 0.3 },
54
57
  // ── Zhipu GLM ─────────────────────────────────────────────────
55
58
  "glm-4-plus": { input: 0.7, output: 0.7 },
56
59
  "glm-4": { input: 0.14, output: 0.14 },
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  evaluateCiGate,
4
4
  normalizeCiThresholds
5
- } from "./chunk-P2LB6S4I.js";
5
+ } from "./chunk-SHG2QSQA.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-QYQI7ZWK.js";
13
+ } from "./chunk-2QZMITSL.js";
14
14
  import {
15
15
  ConfigManager
16
- } from "./chunk-OMSOAFXY.js";
16
+ } from "./chunk-G77EIVBY.js";
17
17
  import {
18
18
  VERSION
19
- } from "./chunk-YQUBYTDR.js";
19
+ } from "./chunk-ZX3ZYRU7.js";
20
20
 
21
21
  // src/cli/ci.ts
22
22
  import { execFileSync } from "child_process";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  SessionManager
4
- } from "./chunk-KWQKQVPH.js";
4
+ } from "./chunk-OBULDJSU.js";
5
5
 
6
6
  // src/hub/persist.ts
7
7
  import { join } from "path";
@@ -163,7 +163,7 @@ function rebuildIndex(historyDir) {
163
163
  return idx;
164
164
  }
165
165
  function updateSessionInIndex(historyDir, meta, filePath) {
166
- let idx = loadIndex(historyDir);
166
+ const idx = loadIndex(historyDir);
167
167
  if (!idx) {
168
168
  rebuildIndex(historyDir);
169
169
  return;
@@ -6,7 +6,7 @@ import {
6
6
  safeDate,
7
7
  searchCandidates,
8
8
  updateSessionInIndex
9
- } from "./chunk-PJ3ONBWZ.js";
9
+ } from "./chunk-NYNSYLFY.js";
10
10
  import {
11
11
  redactJson
12
12
  } from "./chunk-B5TYJO7V.js";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  truncateForPersist
4
- } from "./chunk-GQYRPBIQ.js";
4
+ } from "./chunk-WYRW2W4O.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-YQUBYTDR.js";
14
+ } from "./chunk-ZX3ZYRU7.js";
15
15
  import {
16
16
  atomicWriteFileSync
17
17
  } from "./chunk-IW3Q7AE5.js";
@@ -163,12 +163,11 @@ var McpClient = class {
163
163
  method,
164
164
  ...params !== void 0 ? { params } : {}
165
165
  };
166
- let timer;
167
166
  const cleanup = () => {
168
167
  this.pendingRequests.delete(id);
169
168
  clearTimeout(timer);
170
169
  };
171
- timer = setTimeout(() => {
170
+ const timer = setTimeout(() => {
172
171
  cleanup();
173
172
  reject(new Error(`MCP request [${method}] timed out (internal)`));
174
173
  }, MCP_CALL_TIMEOUT * 2);
@@ -953,7 +952,7 @@ function autoTrimSessionIfNeeded(session, sizeLimit = SESSION_SIZE_LIMIT) {
953
952
  const originalSize = JSON.stringify(session.toJSON()).length;
954
953
  if (originalSize <= sizeLimit) return false;
955
954
  const snapshotLen = session.messages.length;
956
- let working = cloneMessages(session.messages.slice(0, snapshotLen));
955
+ const working = cloneMessages(session.messages.slice(0, snapshotLen));
957
956
  let committedSize = originalSize;
958
957
  let anyTrim = false;
959
958
  let keepRecent = 10;
@@ -1,5 +1,5 @@
1
1
  // src/core/constants.ts
2
- var VERSION = "0.4.246";
2
+ var VERSION = "0.4.248";
3
3
  var APP_NAME = "ai-cli";
4
4
  var CONFIG_DIR_NAME = ".aicli";
5
5
  var CONFIG_FILE_NAME = "config.json";
@@ -546,7 +546,7 @@ async function parseSource(file, source, language) {
546
546
  default:
547
547
  return extractTsJs(root, file, lang);
548
548
  }
549
- } catch (err) {
549
+ } catch {
550
550
  return [];
551
551
  }
552
552
  }
@@ -6,7 +6,7 @@ import {
6
6
  MEMORY_FILE_NAME,
7
7
  MEMORY_MAX_CHARS,
8
8
  MEMORY_STORE_FILE_NAME
9
- } from "./chunk-YQUBYTDR.js";
9
+ } from "./chunk-ZX3ZYRU7.js";
10
10
  import {
11
11
  DEFAULT_PATTERNS,
12
12
  redactString
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  VERSION
4
- } from "./chunk-YQUBYTDR.js";
4
+ } from "./chunk-ZX3ZYRU7.js";
5
5
 
6
6
  // src/cli/ci-format.ts
7
7
  var DEFAULT_CI_THRESHOLDS = {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  TEST_TIMEOUT
3
- } from "./chunk-LZGPGPA6.js";
3
+ } from "./chunk-PNFQDFHK.js";
4
4
 
5
5
  // src/tools/builtin/run-tests.ts
6
6
  import { execSync, spawnSync } from "child_process";
@@ -7,10 +7,10 @@ import {
7
7
  searchPersistentMemories,
8
8
  touchMemoryReferences,
9
9
  updateMemoryEntry
10
- } from "./chunk-Z7JROM3J.js";
10
+ } from "./chunk-SAZGFYBU.js";
11
11
  import {
12
12
  indexProject
13
- } from "./chunk-K3CF65QH.js";
13
+ } from "./chunk-GLSR2NR3.js";
14
14
  import {
15
15
  hasSemanticIndex,
16
16
  semanticSearch
@@ -23,7 +23,7 @@ import {
23
23
  runHook,
24
24
  runLifecycleHooks,
25
25
  runTool
26
- } from "./chunk-WYNPWHXB.js";
26
+ } from "./chunk-Z4LVPM3N.js";
27
27
  import {
28
28
  getDangerLevel,
29
29
  isFileWriteTool,
@@ -39,18 +39,18 @@ import {
39
39
  } from "./chunk-4BKXL7SM.js";
40
40
  import {
41
41
  runTestsTool
42
- } from "./chunk-XK22CVID.js";
42
+ } from "./chunk-BIZFOVNA.js";
43
43
  import {
44
44
  CONFIG_DIR_NAME,
45
45
  DEFAULT_MAX_TOOL_OUTPUT_CHARS_CAP,
46
46
  SUBAGENT_ALLOWED_TOOLS,
47
47
  SUBAGENT_DEFAULT_MAX_ROUNDS,
48
48
  SUBAGENT_MAX_ROUNDS_LIMIT
49
- } from "./chunk-YQUBYTDR.js";
49
+ } from "./chunk-ZX3ZYRU7.js";
50
50
  import {
51
51
  loadChatIndex,
52
52
  searchChatMemory
53
- } from "./chunk-IGPFYNZA.js";
53
+ } from "./chunk-6RPGQ5CG.js";
54
54
  import {
55
55
  atomicWriteFileSync
56
56
  } from "./chunk-IW3Q7AE5.js";
@@ -193,7 +193,7 @@ async function execInPool(sessionKey, command, timeout, cwd, abortSignal) {
193
193
  stdout += IS_WINDOWS2 ? decodeWindowsBuffer(chunk) : chunk.toString("utf-8");
194
194
  if (!resolved && stdout.includes(markerEndPattern)) {
195
195
  const endLine = stdout.split("\n").find((l) => l.includes(markerEndPattern));
196
- const exitCode = endLine ? parseEndMarker(endLine, markerEndPattern) : null;
196
+ const exitCode = endLine ? parseEndMarker(endLine) : null;
197
197
  stdout = stripMarkerOutput(stdout, markerStartPattern, markerEndPattern);
198
198
  resolved = true;
199
199
  cleanup();
@@ -250,7 +250,7 @@ async function execInPool(sessionKey, command, timeout, cwd, abortSignal) {
250
250
  }
251
251
  try {
252
252
  proc.stdin?.write(wrappedCmd + "\n");
253
- } catch (err) {
253
+ } catch {
254
254
  if (!resolved) {
255
255
  cleanup();
256
256
  pool.delete(sessionKey);
@@ -258,7 +258,7 @@ async function execInPool(sessionKey, command, timeout, cwd, abortSignal) {
258
258
  }
259
259
  });
260
260
  }
261
- function parseEndMarker(line, markerEndPattern) {
261
+ function parseEndMarker(line) {
262
262
  const idx = line.lastIndexOf(":");
263
263
  if (idx < 0) return null;
264
264
  const code = line.slice(idx + 1).trim();
@@ -2338,7 +2338,7 @@ var ToolExecutor = class {
2338
2338
  };
2339
2339
  }
2340
2340
  if (permission.action === "auto-approve" && networkPermission?.action !== "confirm") {
2341
- this.printToolCall(call);
2341
+ if (!toolCallAlreadyPrinted) this.printToolCall(call);
2342
2342
  try {
2343
2343
  const rawContent = await runTool(tool, call.arguments, call.name);
2344
2344
  const content = truncateOutput(rawContent, call.name);
@@ -2944,7 +2944,7 @@ Do NOT split a long document into many write_file(append=true) calls. That patte
2944
2944
  const mode = appendMode ? "appended" : "written";
2945
2945
  void (async () => {
2946
2946
  try {
2947
- const { updateFile } = await import("./indexer-2AG4G6B5.js");
2947
+ const { updateFile } = await import("./indexer-VZETNE4H.js");
2948
2948
  await updateFile(process.cwd(), filePath);
2949
2949
  } catch {
2950
2950
  }
@@ -4363,7 +4363,7 @@ var webFetchTool = {
4363
4363
  } else {
4364
4364
  const title = extractTitle(rawHtml);
4365
4365
  const desc = extractDescription(rawHtml);
4366
- let body = htmlToText(rawHtml);
4366
+ const body = htmlToText(rawHtml);
4367
4367
  const header = [
4368
4368
  title ? `# ${title}` : "",
4369
4369
  desc ? `> ${desc}` : "",
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  CONFIG_DIR_NAME,
4
4
  PLUGINS_DIR_NAME
5
- } from "./chunk-YQUBYTDR.js";
5
+ } from "./chunk-ZX3ZYRU7.js";
6
6
  import {
7
7
  atomicWriteFileSync
8
8
  } from "./chunk-IW3Q7AE5.js";
@@ -176,7 +176,7 @@ function rebuildIndex(historyDir2) {
176
176
  return idx;
177
177
  }
178
178
  function updateSessionInIndex(historyDir2, meta, filePath) {
179
- let idx = loadIndex(historyDir2);
179
+ const idx = loadIndex(historyDir2);
180
180
  if (!idx) {
181
181
  rebuildIndex(historyDir2);
182
182
  return;
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  // src/core/constants.ts
4
- var VERSION = "0.4.246";
4
+ var VERSION = "0.4.248";
5
5
  var APP_NAME = "ai-cli";
6
6
  var CONFIG_DIR_NAME = ".aicli";
7
7
  var CONFIG_FILE_NAME = "config.json";
@@ -3,14 +3,14 @@ import {
3
3
  CI_COMMENT_MARKER,
4
4
  countSeverity,
5
5
  runCi
6
- } from "./chunk-6Y42RN5H.js";
7
- import "./chunk-P2LB6S4I.js";
6
+ } from "./chunk-HTOKVD7R.js";
7
+ import "./chunk-SHG2QSQA.js";
8
8
  import "./chunk-HLWUDRBO.js";
9
- import "./chunk-QYQI7ZWK.js";
10
- import "./chunk-OMSOAFXY.js";
9
+ import "./chunk-2QZMITSL.js";
10
+ import "./chunk-G77EIVBY.js";
11
11
  import "./chunk-O3XSFPYH.js";
12
12
  import "./chunk-5ULLIOVC.js";
13
- import "./chunk-YQUBYTDR.js";
13
+ import "./chunk-ZX3ZYRU7.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-P2LB6S4I.js";
10
- import "./chunk-YQUBYTDR.js";
9
+ } from "./chunk-SHG2QSQA.js";
10
+ import "./chunk-ZX3ZYRU7.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-YQUBYTDR.js";
41
+ } from "./chunk-ZX3ZYRU7.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-DJDEXHOT.js";
6
- import "./chunk-QYQI7ZWK.js";
7
- import "./chunk-OMSOAFXY.js";
8
- import "./chunk-WYNPWHXB.js";
5
+ } from "./chunk-23ZIOVZR.js";
6
+ import "./chunk-2QZMITSL.js";
7
+ import "./chunk-G77EIVBY.js";
8
+ import "./chunk-Z4LVPM3N.js";
9
9
  import "./chunk-O3XSFPYH.js";
10
10
  import "./chunk-5ULLIOVC.js";
11
11
  import "./chunk-HOSJZMQS.js";
12
- import "./chunk-YQUBYTDR.js";
12
+ import "./chunk-ZX3ZYRU7.js";
13
13
  import "./chunk-IW3Q7AE5.js";
14
14
  export {
15
15
  formatDoctorReport,