jinzd-ai-cli 0.4.271 → 0.4.272

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 (40) hide show
  1. package/dist/{batch-FPDT2USZ.js → batch-3KHEEICT.js} +2 -2
  2. package/dist/{chat-index-7MMTGQNA.js → chat-index-2D5GK2DB.js} +2 -2
  3. package/dist/{chat-index-Q6BKWWAM.js → chat-index-TDU3S2MG.js} +2 -2
  4. package/dist/{chunk-VPXNLE7E.js → chunk-257ZLWOP.js} +2 -2
  5. package/dist/{chunk-B5TYJO7V.js → chunk-3FEZSLGI.js} +51 -6
  6. package/dist/{chunk-PMRU2CAF.js → chunk-5NZVRFLP.js} +1 -1
  7. package/dist/{chunk-RLAUMACS.js → chunk-A5ICBOQ6.js} +1 -1
  8. package/dist/{chunk-5JFRM47R.js → chunk-AHNTBH7G.js} +1 -1
  9. package/dist/{chunk-OBULDJSU.js → chunk-CGDYO52A.js} +1 -1
  10. package/dist/{chunk-OSYK6D4G.js → chunk-EZ6VXKJV.js} +1 -1
  11. package/dist/{chunk-RNDHIERN.js → chunk-FBYFNBUD.js} +3 -3
  12. package/dist/{chunk-YVTASHS5.js → chunk-FSC6KEWU.js} +51 -6
  13. package/dist/{chunk-6RPGQ5CG.js → chunk-GHWZVPUV.js} +1 -1
  14. package/dist/{chunk-V26ZMB3D.js → chunk-JMU5DELU.js} +5 -5
  15. package/dist/{chunk-BFPF3JF2.js → chunk-MFUAK7OM.js} +3 -3
  16. package/dist/{chunk-JQXXPTWL.js → chunk-MX75TNE5.js} +1 -1
  17. package/dist/{chunk-4UNRDXZV.js → chunk-PXWOJEFG.js} +2 -2
  18. package/dist/{chunk-FT3WS5PG.js → chunk-WMVG5E56.js} +1 -1
  19. package/dist/{chunk-PDRAOFGI.js → chunk-XBOP6NLW.js} +1 -1
  20. package/dist/{chunk-2RN4T4XD.js → chunk-XUNQSAUM.js} +1 -1
  21. package/dist/{chunk-ZWEZNKDW.js → chunk-YOVHMQEJ.js} +1 -1
  22. package/dist/{chunk-PG7O7N7D.js → chunk-Z75H56SJ.js} +3 -3
  23. package/dist/{ci-VPN5RWCO.js → ci-6CTWCDH3.js} +4 -4
  24. package/dist/{ci-format-GKXVCVME.js → ci-format-MC5HZBCE.js} +2 -2
  25. package/dist/{constants-Y43DJFGV.js → constants-SGKY75QU.js} +1 -1
  26. package/dist/{doctor-cli-RZGZB2TF.js → doctor-cli-7CW4BIGM.js} +4 -4
  27. package/dist/electron-server.js +11 -11
  28. package/dist/{hub-FJWP6SDG.js → hub-ORAAJOPT.js} +2 -2
  29. package/dist/index.js +23 -23
  30. package/dist/{persist-A2QSXYFY.js → persist-PQM4BRI4.js} +3 -3
  31. package/dist/{persistent-memory-IR47JCTF.js → persistent-memory-6NQQ2H2B.js} +3 -3
  32. package/dist/{persistent-memory-KX2R67AT.js → persistent-memory-6SB5ZUOI.js} +3 -3
  33. package/dist/{pr-NTQ3N4B4.js → pr-FNKV6IWI.js} +4 -4
  34. package/dist/{run-tests-UTES6HCT.js → run-tests-34HXDZXM.js} +2 -2
  35. package/dist/{run-tests-25CNXJ4N.js → run-tests-PS37BVOI.js} +2 -2
  36. package/dist/{server-R56CVHCM.js → server-IEOQIQPC.js} +18 -18
  37. package/dist/{server-IGCCSX4B.js → server-OZTSIFXL.js} +7 -7
  38. package/dist/{task-orchestrator-MFYEKR2I.js → task-orchestrator-77MEVKT6.js} +7 -7
  39. package/dist/{usage-FHX7PQQH.js → usage-RI6YOAOP.js} +2 -2
  40. package/package.json +1 -1
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ConfigManager
4
- } from "./chunk-PMRU2CAF.js";
4
+ } from "./chunk-5NZVRFLP.js";
5
5
  import "./chunk-TU3L3PW7.js";
6
6
  import {
7
7
  atomicWriteFileSync
8
8
  } from "./chunk-IW3Q7AE5.js";
9
- import "./chunk-FT3WS5PG.js";
9
+ import "./chunk-WMVG5E56.js";
10
10
 
11
11
  // src/cli/batch.ts
12
12
  import Anthropic from "@anthropic-ai/sdk";
@@ -6,10 +6,10 @@ import {
6
6
  getChatIndexStatus,
7
7
  loadChatIndex,
8
8
  searchChatMemory
9
- } from "./chunk-6RPGQ5CG.js";
9
+ } from "./chunk-GHWZVPUV.js";
10
10
  import "./chunk-KHYD3WXE.js";
11
11
  import "./chunk-NYNSYLFY.js";
12
- import "./chunk-B5TYJO7V.js";
12
+ import "./chunk-3FEZSLGI.js";
13
13
  import "./chunk-IW3Q7AE5.js";
14
14
  export {
15
15
  buildChatIndex,
@@ -5,8 +5,8 @@ import {
5
5
  getChatIndexStatus,
6
6
  loadChatIndex,
7
7
  searchChatMemory
8
- } from "./chunk-ZWEZNKDW.js";
9
- import "./chunk-YVTASHS5.js";
8
+ } from "./chunk-YOVHMQEJ.js";
9
+ import "./chunk-FSC6KEWU.js";
10
10
  import "./chunk-JV5N65KN.js";
11
11
  import "./chunk-6BUTA5VW.js";
12
12
  export {
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  DEFAULT_PATTERNS,
3
3
  redactString
4
- } from "./chunk-YVTASHS5.js";
4
+ } from "./chunk-FSC6KEWU.js";
5
5
  import {
6
6
  MEMORY_FILE_NAME,
7
7
  MEMORY_MAX_CHARS,
8
8
  MEMORY_STORE_FILE_NAME
9
- } from "./chunk-5JFRM47R.js";
9
+ } from "./chunk-AHNTBH7G.js";
10
10
  import {
11
11
  atomicWriteFileSync
12
12
  } from "./chunk-6BUTA5VW.js";
@@ -12,11 +12,16 @@ var DEFAULT_PATTERNS = [
12
12
  { kind: "db-uri-password", regex: /(\b(?:postgres(?:ql)?|mysql|mongodb(?:\+srv)?|redis|amqp|mssql):\/\/[^:\s]+:)([^@\s]+)(@)/gi },
13
13
  // Anthropic API keys
14
14
  { kind: "anthropic-key", regex: /(sk-ant-[a-zA-Z0-9_-]{90,})/g },
15
- // L6 (v0.4.108): Zhipu / GLM API keys — `<24+ hex/base64-ish>.<32+>`
16
- // Two segments separated by a dot, each safely identifiable by length
17
- // and char class. Conservative on the lower bound so we don't eat
18
- // version strings like `1.0.0` or filenames.
19
- { kind: "zhipu-key", regex: /\b([a-zA-Z0-9]{24,}\.[a-zA-Z0-9]{32,})\b/g },
15
+ // Zhipu / GLM API keys — 真实格式是 `<32 hex>.<16 alnum>`。
16
+ //
17
+ // v0.4.108 的原始规则写的是 `<24+>.<32+>`,第二段下界取成了 32——**它从来没有
18
+ // 匹配上过任何一个真实的智谱密钥**。2026-08-16 在东叔的 session 历史里实测到明文
19
+ // 泄漏(同一份 config dump 里 deepseek / gemini / openai 都被正确打码,唯独智谱漏网),
20
+ // 逐字量过密钥形状后才发现下界错了。
21
+ //
22
+ // 现在按真实形状收紧:第一段恰好 32 位十六进制,第二段 16–64 位字母数字。
23
+ // 这比原来更严格,因此不会新增误伤——`<md5>.jpeg` 这类文件名第二段太短,不匹配。
24
+ { kind: "zhipu-key", regex: /\b([a-fA-F0-9]{32}\.[a-zA-Z0-9]{16,64})\b/g },
20
25
  // OpenAI / generic sk- keys — requires length ≥32 to avoid eating short identifiers
21
26
  { kind: "openai-key", regex: /(sk-(?:proj-)?[a-zA-Z0-9_-]{32,})/g },
22
27
  // GitHub personal access tokens
@@ -48,6 +53,46 @@ var MAX_REDACT_INPUT = 512e3;
48
53
  function render(placeholder, kind) {
49
54
  return placeholder.replace("{kind}", kind);
50
55
  }
56
+ function redactApiKeyMaps(input, placeholder, hits) {
57
+ const blockStart = /"api[_-]?keys"\s*:\s*\{/gi;
58
+ let out = "";
59
+ let cursor = 0;
60
+ let m;
61
+ while ((m = blockStart.exec(input)) !== null) {
62
+ const openIdx = m.index + m[0].length - 1;
63
+ let depth = 0;
64
+ let close = -1;
65
+ for (let i = openIdx; i < input.length; i++) {
66
+ const ch = input[i];
67
+ if (ch === "{") depth++;
68
+ else if (ch === "}") {
69
+ depth--;
70
+ if (depth === 0) {
71
+ close = i;
72
+ break;
73
+ }
74
+ }
75
+ }
76
+ if (close < 0) break;
77
+ const block = input.slice(openIdx, close + 1);
78
+ const redactedBlock = block.replace(
79
+ /("[^"\n]{1,64}"\s*:\s*")([^"\n]{8,})(?=")/g,
80
+ (_full, prefix, secret, offset) => {
81
+ hits.push({
82
+ kind: "api-key-map",
83
+ start: openIdx + offset + prefix.length,
84
+ length: secret.length,
85
+ secret
86
+ });
87
+ return `${prefix}${render(placeholder, "api-key-map")}`;
88
+ }
89
+ );
90
+ out += input.slice(cursor, openIdx) + redactedBlock;
91
+ cursor = close + 1;
92
+ blockStart.lastIndex = close + 1;
93
+ }
94
+ return cursor === 0 ? input : out + input.slice(cursor);
95
+ }
51
96
  function redactString(input, options) {
52
97
  if (!options.enabled || !input) return { redacted: input, hits: [] };
53
98
  if (input.length > MAX_REDACT_INPUT) return { redacted: input, hits: [] };
@@ -68,8 +113,8 @@ function redactString(input, options) {
68
113
  }
69
114
  })
70
115
  ];
71
- let redacted = input;
72
116
  const hits = [];
117
+ let redacted = redactApiKeyMaps(input, placeholder, hits);
73
118
  for (const { kind, regex } of patterns) {
74
119
  const rx = new RegExp(regex.source, regex.flags);
75
120
  const captureCount = new RegExp(rx.source + "|").exec("").length - 1;
@@ -11,7 +11,7 @@ import {
11
11
  CONFIG_FILE_NAME,
12
12
  HISTORY_DIR_NAME,
13
13
  PLUGINS_DIR_NAME
14
- } from "./chunk-FT3WS5PG.js";
14
+ } from "./chunk-WMVG5E56.js";
15
15
 
16
16
  // src/config/config-manager.ts
17
17
  import { readFileSync, existsSync, mkdirSync } from "fs";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  TEST_TIMEOUT
3
- } from "./chunk-5JFRM47R.js";
3
+ } from "./chunk-AHNTBH7G.js";
4
4
 
5
5
  // src/tools/builtin/run-tests.ts
6
6
  import { execSync, spawnSync } from "child_process";
@@ -1,5 +1,5 @@
1
1
  // src/core/constants.ts
2
- var VERSION = "0.4.271";
2
+ var VERSION = "0.4.272";
3
3
  var APP_NAME = "ai-cli";
4
4
  var CONFIG_DIR_NAME = ".aicli";
5
5
  var CONFIG_FILE_NAME = "config.json";
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-NYNSYLFY.js";
10
10
  import {
11
11
  redactJson
12
- } from "./chunk-B5TYJO7V.js";
12
+ } from "./chunk-3FEZSLGI.js";
13
13
  import {
14
14
  atomicWriteFileSync
15
15
  } from "./chunk-IW3Q7AE5.js";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  TEST_TIMEOUT
4
- } from "./chunk-FT3WS5PG.js";
4
+ } from "./chunk-WMVG5E56.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
  evaluateCiGate,
4
4
  normalizeCiThresholds
5
- } from "./chunk-2RN4T4XD.js";
5
+ } from "./chunk-XUNQSAUM.js";
6
6
  import {
7
7
  buildReviewPrompt,
8
8
  buildSecurityReviewPrompt,
@@ -16,10 +16,10 @@ import {
16
16
  } from "./chunk-AUEX6RNY.js";
17
17
  import {
18
18
  ConfigManager
19
- } from "./chunk-PMRU2CAF.js";
19
+ } from "./chunk-5NZVRFLP.js";
20
20
  import {
21
21
  VERSION
22
- } from "./chunk-FT3WS5PG.js";
22
+ } from "./chunk-WMVG5E56.js";
23
23
 
24
24
  // src/cli/ci.ts
25
25
  import { execFileSync } from "child_process";
@@ -10,11 +10,16 @@ var DEFAULT_PATTERNS = [
10
10
  { kind: "db-uri-password", regex: /(\b(?:postgres(?:ql)?|mysql|mongodb(?:\+srv)?|redis|amqp|mssql):\/\/[^:\s]+:)([^@\s]+)(@)/gi },
11
11
  // Anthropic API keys
12
12
  { kind: "anthropic-key", regex: /(sk-ant-[a-zA-Z0-9_-]{90,})/g },
13
- // L6 (v0.4.108): Zhipu / GLM API keys — `<24+ hex/base64-ish>.<32+>`
14
- // Two segments separated by a dot, each safely identifiable by length
15
- // and char class. Conservative on the lower bound so we don't eat
16
- // version strings like `1.0.0` or filenames.
17
- { kind: "zhipu-key", regex: /\b([a-zA-Z0-9]{24,}\.[a-zA-Z0-9]{32,})\b/g },
13
+ // Zhipu / GLM API keys — 真实格式是 `<32 hex>.<16 alnum>`。
14
+ //
15
+ // v0.4.108 的原始规则写的是 `<24+>.<32+>`,第二段下界取成了 32——**它从来没有
16
+ // 匹配上过任何一个真实的智谱密钥**。2026-08-16 在东叔的 session 历史里实测到明文
17
+ // 泄漏(同一份 config dump 里 deepseek / gemini / openai 都被正确打码,唯独智谱漏网),
18
+ // 逐字量过密钥形状后才发现下界错了。
19
+ //
20
+ // 现在按真实形状收紧:第一段恰好 32 位十六进制,第二段 16–64 位字母数字。
21
+ // 这比原来更严格,因此不会新增误伤——`<md5>.jpeg` 这类文件名第二段太短,不匹配。
22
+ { kind: "zhipu-key", regex: /\b([a-fA-F0-9]{32}\.[a-zA-Z0-9]{16,64})\b/g },
18
23
  // OpenAI / generic sk- keys — requires length ≥32 to avoid eating short identifiers
19
24
  { kind: "openai-key", regex: /(sk-(?:proj-)?[a-zA-Z0-9_-]{32,})/g },
20
25
  // GitHub personal access tokens
@@ -46,6 +51,46 @@ var MAX_REDACT_INPUT = 512e3;
46
51
  function render(placeholder, kind) {
47
52
  return placeholder.replace("{kind}", kind);
48
53
  }
54
+ function redactApiKeyMaps(input, placeholder, hits) {
55
+ const blockStart = /"api[_-]?keys"\s*:\s*\{/gi;
56
+ let out = "";
57
+ let cursor = 0;
58
+ let m;
59
+ while ((m = blockStart.exec(input)) !== null) {
60
+ const openIdx = m.index + m[0].length - 1;
61
+ let depth = 0;
62
+ let close = -1;
63
+ for (let i = openIdx; i < input.length; i++) {
64
+ const ch = input[i];
65
+ if (ch === "{") depth++;
66
+ else if (ch === "}") {
67
+ depth--;
68
+ if (depth === 0) {
69
+ close = i;
70
+ break;
71
+ }
72
+ }
73
+ }
74
+ if (close < 0) break;
75
+ const block = input.slice(openIdx, close + 1);
76
+ const redactedBlock = block.replace(
77
+ /("[^"\n]{1,64}"\s*:\s*")([^"\n]{8,})(?=")/g,
78
+ (_full, prefix, secret, offset) => {
79
+ hits.push({
80
+ kind: "api-key-map",
81
+ start: openIdx + offset + prefix.length,
82
+ length: secret.length,
83
+ secret
84
+ });
85
+ return `${prefix}${render(placeholder, "api-key-map")}`;
86
+ }
87
+ );
88
+ out += input.slice(cursor, openIdx) + redactedBlock;
89
+ cursor = close + 1;
90
+ blockStart.lastIndex = close + 1;
91
+ }
92
+ return cursor === 0 ? input : out + input.slice(cursor);
93
+ }
49
94
  function redactString(input, options) {
50
95
  if (!options.enabled || !input) return { redacted: input, hits: [] };
51
96
  if (input.length > MAX_REDACT_INPUT) return { redacted: input, hits: [] };
@@ -66,8 +111,8 @@ function redactString(input, options) {
66
111
  }
67
112
  })
68
113
  ];
69
- let redacted = input;
70
114
  const hits = [];
115
+ let redacted = redactApiKeyMaps(input, placeholder, hits);
71
116
  for (const { kind, regex } of patterns) {
72
117
  const rx = new RegExp(regex.source, regex.flags);
73
118
  const captureCount = new RegExp(rx.source + "|").exec("").length - 1;
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-NYNSYLFY.js";
10
10
  import {
11
11
  redactString
12
- } from "./chunk-B5TYJO7V.js";
12
+ } from "./chunk-3FEZSLGI.js";
13
13
  import {
14
14
  atomicWriteFileSync
15
15
  } from "./chunk-IW3Q7AE5.js";
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  loadChatIndex,
4
4
  searchChatMemory
5
- } from "./chunk-6RPGQ5CG.js";
5
+ } from "./chunk-GHWZVPUV.js";
6
6
  import {
7
7
  addMemoryEntry,
8
8
  findSimilarMemory,
@@ -11,7 +11,7 @@ import {
11
11
  searchPersistentMemories,
12
12
  touchMemoryReferences,
13
13
  updateMemoryEntry
14
- } from "./chunk-4UNRDXZV.js";
14
+ } from "./chunk-PXWOJEFG.js";
15
15
  import {
16
16
  indexProject
17
17
  } from "./chunk-GLSR2NR3.js";
@@ -30,7 +30,7 @@ import {
30
30
  runHook,
31
31
  runLifecycleHooks,
32
32
  runTool
33
- } from "./chunk-PDRAOFGI.js";
33
+ } from "./chunk-XBOP6NLW.js";
34
34
  import {
35
35
  buildTruncatedArgumentsError,
36
36
  getDangerLevel,
@@ -50,14 +50,14 @@ import {
50
50
  } from "./chunk-4BKXL7SM.js";
51
51
  import {
52
52
  runTestsTool
53
- } from "./chunk-OSYK6D4G.js";
53
+ } from "./chunk-EZ6VXKJV.js";
54
54
  import {
55
55
  CONFIG_DIR_NAME,
56
56
  DEFAULT_MAX_TOOL_OUTPUT_CHARS_CAP,
57
57
  SUBAGENT_ALLOWED_TOOLS,
58
58
  SUBAGENT_DEFAULT_MAX_ROUNDS,
59
59
  SUBAGENT_MAX_ROUNDS_LIMIT
60
- } from "./chunk-FT3WS5PG.js";
60
+ } from "./chunk-WMVG5E56.js";
61
61
 
62
62
  // src/tools/shell-pool.ts
63
63
  import { spawn as spawn2 } from "child_process";
@@ -5,11 +5,11 @@ import {
5
5
  import {
6
6
  estimateTokens,
7
7
  truncateForPersist
8
- } from "./chunk-V26ZMB3D.js";
8
+ } from "./chunk-JMU5DELU.js";
9
9
  import {
10
10
  isMemoryExpired,
11
11
  isMemoryStale
12
- } from "./chunk-4UNRDXZV.js";
12
+ } from "./chunk-PXWOJEFG.js";
13
13
  import {
14
14
  atomicWriteFileSync
15
15
  } from "./chunk-IW3Q7AE5.js";
@@ -23,7 +23,7 @@ import {
23
23
  MCP_PROTOCOL_VERSION,
24
24
  MCP_TOOL_PREFIX,
25
25
  VERSION
26
- } from "./chunk-FT3WS5PG.js";
26
+ } from "./chunk-WMVG5E56.js";
27
27
 
28
28
  // src/mcp/client.ts
29
29
  import { spawn } from "child_process";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  SessionManager
4
- } from "./chunk-OBULDJSU.js";
4
+ } from "./chunk-CGDYO52A.js";
5
5
 
6
6
  // src/hub/persist.ts
7
7
  import { join } from "path";
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  DEFAULT_PATTERNS,
4
4
  redactString
5
- } from "./chunk-B5TYJO7V.js";
5
+ } from "./chunk-3FEZSLGI.js";
6
6
  import {
7
7
  getGitRoot
8
8
  } from "./chunk-HOSJZMQS.js";
@@ -13,7 +13,7 @@ import {
13
13
  MEMORY_FILE_NAME,
14
14
  MEMORY_MAX_CHARS,
15
15
  MEMORY_STORE_FILE_NAME
16
- } from "./chunk-FT3WS5PG.js";
16
+ } from "./chunk-WMVG5E56.js";
17
17
 
18
18
  // src/memory/persistent-memory.ts
19
19
  import { copyFileSync, existsSync, mkdirSync, readFileSync, statSync } from "fs";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  // src/core/constants.ts
4
- var VERSION = "0.4.271";
4
+ var VERSION = "0.4.272";
5
5
  var APP_NAME = "ai-cli";
6
6
  var CONFIG_DIR_NAME = ".aicli";
7
7
  var CONFIG_FILE_NAME = "config.json";
@@ -5,7 +5,7 @@ import {
5
5
  import {
6
6
  CONFIG_DIR_NAME,
7
7
  PLUGINS_DIR_NAME
8
- } from "./chunk-FT3WS5PG.js";
8
+ } from "./chunk-WMVG5E56.js";
9
9
 
10
10
  // src/diagnostics/tool-stats.ts
11
11
  import { existsSync, readFileSync, mkdirSync } from "fs";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  VERSION
4
- } from "./chunk-FT3WS5PG.js";
4
+ } from "./chunk-WMVG5E56.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
  redactString
3
- } from "./chunk-YVTASHS5.js";
3
+ } from "./chunk-FSC6KEWU.js";
4
4
  import {
5
5
  EMBEDDING_DIM,
6
6
  embed,
@@ -8,13 +8,13 @@ import {
8
8
  listHooks,
9
9
  listInstalledPlugins,
10
10
  resetStats
11
- } from "./chunk-PDRAOFGI.js";
11
+ } from "./chunk-XBOP6NLW.js";
12
12
  import {
13
13
  ProviderRegistry
14
14
  } from "./chunk-AUEX6RNY.js";
15
15
  import {
16
16
  ConfigManager
17
- } from "./chunk-PMRU2CAF.js";
17
+ } from "./chunk-5NZVRFLP.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-FT3WS5PG.js";
29
+ } from "./chunk-WMVG5E56.js";
30
30
 
31
31
  // src/diagnostics/doctor-report.ts
32
32
  import { existsSync as existsSync3, statSync as statSync2 } from "fs";
@@ -3,16 +3,16 @@ import {
3
3
  CI_COMMENT_MARKER,
4
4
  countSeverity,
5
5
  runCi
6
- } from "./chunk-RNDHIERN.js";
7
- import "./chunk-2RN4T4XD.js";
6
+ } from "./chunk-FBYFNBUD.js";
7
+ import "./chunk-XUNQSAUM.js";
8
8
  import "./chunk-HLWUDRBO.js";
9
9
  import "./chunk-6YZEZFX5.js";
10
10
  import "./chunk-AUEX6RNY.js";
11
- import "./chunk-PMRU2CAF.js";
11
+ import "./chunk-5NZVRFLP.js";
12
12
  import "./chunk-3OBY7WSS.js";
13
13
  import "./chunk-TU3L3PW7.js";
14
14
  import "./chunk-IW3Q7AE5.js";
15
- import "./chunk-FT3WS5PG.js";
15
+ import "./chunk-WMVG5E56.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-2RN4T4XD.js";
10
- import "./chunk-FT3WS5PG.js";
9
+ } from "./chunk-XUNQSAUM.js";
10
+ import "./chunk-WMVG5E56.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-FT3WS5PG.js";
41
+ } from "./chunk-WMVG5E56.js";
42
42
  export {
43
43
  AGENTIC_BEHAVIOR_GUIDELINE,
44
44
  APP_NAME,
@@ -2,15 +2,15 @@
2
2
  import {
3
3
  formatDoctorReport,
4
4
  runDoctorCli
5
- } from "./chunk-PG7O7N7D.js";
6
- import "./chunk-PDRAOFGI.js";
5
+ } from "./chunk-Z75H56SJ.js";
6
+ import "./chunk-XBOP6NLW.js";
7
7
  import "./chunk-AUEX6RNY.js";
8
- import "./chunk-PMRU2CAF.js";
8
+ import "./chunk-5NZVRFLP.js";
9
9
  import "./chunk-3OBY7WSS.js";
10
10
  import "./chunk-TU3L3PW7.js";
11
11
  import "./chunk-HOSJZMQS.js";
12
12
  import "./chunk-IW3Q7AE5.js";
13
- import "./chunk-FT3WS5PG.js";
13
+ import "./chunk-WMVG5E56.js";
14
14
  export {
15
15
  formatDoctorReport,
16
16
  runDoctorCli
@@ -7,7 +7,7 @@ import {
7
7
  searchCandidates,
8
8
  searchChatMemory,
9
9
  updateSessionInIndex
10
- } from "./chunk-ZWEZNKDW.js";
10
+ } from "./chunk-YOVHMQEJ.js";
11
11
  import {
12
12
  fileCheckpoints
13
13
  } from "./chunk-SKET65WZ.js";
@@ -36,14 +36,14 @@ import {
36
36
  touchMemoryReferences,
37
37
  updateMemoryApproval,
38
38
  updateMemoryEntry
39
- } from "./chunk-VPXNLE7E.js";
39
+ } from "./chunk-257ZLWOP.js";
40
40
  import {
41
41
  redactJson,
42
42
  scanString
43
- } from "./chunk-YVTASHS5.js";
43
+ } from "./chunk-FSC6KEWU.js";
44
44
  import {
45
45
  runTestsTool
46
- } from "./chunk-RLAUMACS.js";
46
+ } from "./chunk-A5ICBOQ6.js";
47
47
  import {
48
48
  AGENTIC_BEHAVIOR_GUIDELINE,
49
49
  APP_NAME,
@@ -76,7 +76,7 @@ import {
76
76
  SUBAGENT_MAX_ROUNDS_LIMIT,
77
77
  VERSION,
78
78
  buildUserIdentityPrompt
79
- } from "./chunk-5JFRM47R.js";
79
+ } from "./chunk-AHNTBH7G.js";
80
80
  import {
81
81
  hasSemanticIndex,
82
82
  semanticSearch
@@ -16039,7 +16039,7 @@ Cache: write=${cacheCreate} read=${cacheRead}` : "";
16039
16039
  Cost: ${formatCost(cost)}` : "";
16040
16040
  let memoryLine = "";
16041
16041
  try {
16042
- const { countPendingMemories } = await import("./persistent-memory-KX2R67AT.js");
16042
+ const { countPendingMemories } = await import("./persistent-memory-6SB5ZUOI.js");
16043
16043
  const pending = countPendingMemories(ctx.config.getConfigDir());
16044
16044
  if (pending > 0) memoryLine = `
16045
16045
  Memory: \u26A0 ${pending} pending approval \u2014 see the Memory panel or /memory`;
@@ -16852,7 +16852,7 @@ async function handleTest(args, ctx) {
16852
16852
  const isCommand = argStr.includes(" ") || /^(mvn|gradle|npm|pytest|cargo|go)\b/.test(argStr);
16853
16853
  testArgs = isCommand ? { command: argStr } : { filter: argStr };
16854
16854
  }
16855
- const runTests = ctx.runTests ?? (await import("./run-tests-25CNXJ4N.js")).executeTests;
16855
+ const runTests = ctx.runTests ?? (await import("./run-tests-PS37BVOI.js")).executeTests;
16856
16856
  const report = await runTests(testArgs);
16857
16857
  ctx.send({ type: "info", message: report });
16858
16858
  } catch (err) {
@@ -17110,7 +17110,7 @@ async function handleMemory(args, ctx) {
17110
17110
  ctx.handleMemoryManage(sub, args[1], sub === "expire" ? args[2] : void 0);
17111
17111
  } else if (sub === "export") {
17112
17112
  if (args[1] === "md") {
17113
- const { exportMemoryEntries: exportMemoryEntries2 } = await import("./persistent-memory-KX2R67AT.js");
17113
+ const { exportMemoryEntries: exportMemoryEntries2 } = await import("./persistent-memory-6SB5ZUOI.js");
17114
17114
  ctx.send({
17115
17115
  type: "export_data",
17116
17116
  format: "md",
@@ -19100,7 +19100,7 @@ Backup saved: ${result.backupPath}` : "";
19100
19100
  return;
19101
19101
  }
19102
19102
  try {
19103
- const { searchChatMemory: searchChatMemory2, loadChatIndex: loadChatIndex2 } = await import("./chat-index-Q6BKWWAM.js");
19103
+ const { searchChatMemory: searchChatMemory2, loadChatIndex: loadChatIndex2 } = await import("./chat-index-TDU3S2MG.js");
19104
19104
  const loaded = loadChatIndex2();
19105
19105
  if (!loaded || loaded.idx.chunks.length === 0) {
19106
19106
  this.send({ type: "memory_hits", query: q, hits: [], indexMissing: true });
@@ -19136,7 +19136,7 @@ Backup saved: ${result.backupPath}` : "";
19136
19136
  }
19137
19137
  async handleMemoryStatus() {
19138
19138
  try {
19139
- const { getChatIndexStatus } = await import("./chat-index-Q6BKWWAM.js");
19139
+ const { getChatIndexStatus } = await import("./chat-index-TDU3S2MG.js");
19140
19140
  const s = getChatIndexStatus();
19141
19141
  this.send({
19142
19142
  type: "memory_status",
@@ -19161,7 +19161,7 @@ Backup saved: ${result.backupPath}` : "";
19161
19161
  type: "info",
19162
19162
  message: full ? "\u{1F9E0} Rebuilding chat memory index (this may take a while on first run \u2014 ~117 MB embedder)." : "\u{1F9E0} Refreshing chat memory index (incremental)\u2026"
19163
19163
  });
19164
- const { buildChatIndex } = await import("./chat-index-Q6BKWWAM.js");
19164
+ const { buildChatIndex } = await import("./chat-index-TDU3S2MG.js");
19165
19165
  const stats = await buildChatIndex({
19166
19166
  full,
19167
19167
  onProgress: (p) => {
@@ -143,7 +143,7 @@ ${content}`);
143
143
  const state = await runDiscussion(config, providers, options.topic);
144
144
  if (options.save !== false && state.messages.length > 0) {
145
145
  try {
146
- const { persistDiscussion } = await import("./persist-A2QSXYFY.js");
146
+ const { persistDiscussion } = await import("./persist-PQM4BRI4.js");
147
147
  const { path } = await persistDiscussion(state, configManager, defaultProvider, defaultModel);
148
148
  console.log(chalk.dim(`
149
149
  \u{1F4BE} Saved to history \u2014 open it in the Web UI and hit \u{1F3AC} to replay.
@@ -158,7 +158,7 @@ ${content}`);
158
158
  }
159
159
  }
160
160
  async function runTaskMode(config, providers, configManager, topic) {
161
- const { TaskOrchestrator } = await import("./task-orchestrator-MFYEKR2I.js");
161
+ const { TaskOrchestrator } = await import("./task-orchestrator-77MEVKT6.js");
162
162
  const orchestrator = new TaskOrchestrator(config, providers, configManager);
163
163
  let interrupted = false;
164
164
  const onSigint = () => {
package/dist/index.js CHANGED
@@ -25,7 +25,7 @@ import {
25
25
  sessionHasMeaningfulContent,
26
26
  setupProxy,
27
27
  stripRoutingTags
28
- } from "./chunk-BFPF3JF2.js";
28
+ } from "./chunk-MFUAK7OM.js";
29
29
  import {
30
30
  CostTracker,
31
31
  computeCost,
@@ -54,7 +54,7 @@ import {
54
54
  setMaxOutputCap,
55
55
  spawnAgentContext,
56
56
  undoStack
57
- } from "./chunk-V26ZMB3D.js";
57
+ } from "./chunk-JMU5DELU.js";
58
58
  import {
59
59
  buildReviewPrompt,
60
60
  buildSecurityReviewPrompt
@@ -70,7 +70,7 @@ import {
70
70
  clearChatIndex,
71
71
  getChatIndexStatus,
72
72
  searchChatMemory
73
- } from "./chunk-6RPGQ5CG.js";
73
+ } from "./chunk-GHWZVPUV.js";
74
74
  import {
75
75
  addMemoryEntry,
76
76
  backupMemoryStore,
@@ -95,7 +95,7 @@ import {
95
95
  touchMemoryReferences,
96
96
  updateMemoryApproval,
97
97
  updateMemoryEntry
98
- } from "./chunk-4UNRDXZV.js";
98
+ } from "./chunk-PXWOJEFG.js";
99
99
  import "./chunk-GLSR2NR3.js";
100
100
  import "./chunk-UUSRWSSX.js";
101
101
  import "./chunk-CKH4KQ4E.js";
@@ -108,18 +108,18 @@ import {
108
108
  import {
109
109
  SessionManager,
110
110
  getContentText
111
- } from "./chunk-OBULDJSU.js";
111
+ } from "./chunk-CGDYO52A.js";
112
112
  import "./chunk-NYNSYLFY.js";
113
113
  import {
114
114
  DEFAULT_PATTERNS,
115
115
  scanString
116
- } from "./chunk-B5TYJO7V.js";
116
+ } from "./chunk-3FEZSLGI.js";
117
117
  import {
118
118
  buildDoctorReport,
119
119
  formatDoctorReport,
120
120
  loadContextFiles,
121
121
  writeCrashLog
122
- } from "./chunk-PG7O7N7D.js";
122
+ } from "./chunk-Z75H56SJ.js";
123
123
  import {
124
124
  describePlugin,
125
125
  getActivePluginAssets,
@@ -136,14 +136,14 @@ import {
136
136
  trustHook,
137
137
  trustPlugin,
138
138
  untrustHook
139
- } from "./chunk-PDRAOFGI.js";
139
+ } from "./chunk-XBOP6NLW.js";
140
140
  import {
141
141
  ProviderRegistry,
142
142
  listBuiltInProviderMetadata
143
143
  } from "./chunk-AUEX6RNY.js";
144
144
  import {
145
145
  ConfigManager
146
- } from "./chunk-PMRU2CAF.js";
146
+ } from "./chunk-5NZVRFLP.js";
147
147
  import {
148
148
  CONTENT_ONLY_STREAM_REMINDER,
149
149
  TEE_FINAL_USER_NUDGE,
@@ -183,7 +183,7 @@ import {
183
183
  import {
184
184
  fileCheckpoints
185
185
  } from "./chunk-4BKXL7SM.js";
186
- import "./chunk-OSYK6D4G.js";
186
+ import "./chunk-EZ6VXKJV.js";
187
187
  import {
188
188
  AGENTIC_BEHAVIOR_GUIDELINE,
189
189
  AUTHOR,
@@ -201,7 +201,7 @@ import {
201
201
  SKILLS_DIR_NAME,
202
202
  VERSION,
203
203
  buildUserIdentityPrompt
204
- } from "./chunk-FT3WS5PG.js";
204
+ } from "./chunk-WMVG5E56.js";
205
205
 
206
206
  // src/index.ts
207
207
  import { program } from "commander";
@@ -1407,7 +1407,7 @@ No tools match "${filter}".
1407
1407
  const { join: join6 } = await import("path");
1408
1408
  const { existsSync: existsSync6 } = await import("fs");
1409
1409
  const { getGitRoot: getGitRoot2 } = await import("./git-context-EXOEHQSF.js");
1410
- const { MCP_PROJECT_CONFIG_NAME: MCP_PROJECT_CONFIG_NAME2 } = await import("./constants-Y43DJFGV.js");
1410
+ const { MCP_PROJECT_CONFIG_NAME: MCP_PROJECT_CONFIG_NAME2 } = await import("./constants-SGKY75QU.js");
1411
1411
  const { approveProject, hashMcpFile } = await import("./project-trust-NKYHL3VZ.js");
1412
1412
  const cwd = process.cwd();
1413
1413
  const projectRoot = getGitRoot2(cwd) ?? cwd;
@@ -2327,7 +2327,7 @@ function createReviewCommands() {
2327
2327
  usage: "/test [command|filter]",
2328
2328
  async execute(args, ctx) {
2329
2329
  try {
2330
- const { executeTests } = await import("./run-tests-UTES6HCT.js");
2330
+ const { executeTests } = await import("./run-tests-34HXDZXM.js");
2331
2331
  const argStr = args.join(" ").trim();
2332
2332
  let testArgs = {};
2333
2333
  if (argStr) {
@@ -5710,7 +5710,7 @@ Session '${this.resumeSessionId}' not found.
5710
5710
  })();
5711
5711
  void (async () => {
5712
5712
  try {
5713
- const { getChatIndexStatus: getChatIndexStatus2, buildChatIndex: buildChatIndex2 } = await import("./chat-index-7MMTGQNA.js");
5713
+ const { getChatIndexStatus: getChatIndexStatus2, buildChatIndex: buildChatIndex2 } = await import("./chat-index-2D5GK2DB.js");
5714
5714
  const initial = getChatIndexStatus2();
5715
5715
  this.chatMemoryStatus = {
5716
5716
  exists: initial.exists,
@@ -7546,7 +7546,7 @@ program.command("web").description("Start Web UI server with browser-based chat
7546
7546
  console.error("Error: Invalid port number. Must be between 1 and 65535.");
7547
7547
  process.exit(1);
7548
7548
  }
7549
- const { startWebServer } = await import("./server-R56CVHCM.js");
7549
+ const { startWebServer } = await import("./server-IEOQIQPC.js");
7550
7550
  await startWebServer({ port, host: options.host });
7551
7551
  });
7552
7552
  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) => {
@@ -7713,11 +7713,11 @@ program.command("sessions").description("List recent conversation sessions").opt
7713
7713
  console.log(footer + "\n");
7714
7714
  });
7715
7715
  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) => {
7716
- const { runUsageCli } = await import("./usage-FHX7PQQH.js");
7716
+ const { runUsageCli } = await import("./usage-RI6YOAOP.js");
7717
7717
  await runUsageCli(options);
7718
7718
  });
7719
7719
  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) => {
7720
- const { runDoctorCli } = await import("./doctor-cli-RZGZB2TF.js");
7720
+ const { runDoctorCli } = await import("./doctor-cli-7CW4BIGM.js");
7721
7721
  const argv = process.argv.slice(2);
7722
7722
  await runDoctorCli({
7723
7723
  json: !!options.json || argv.includes("--json"),
@@ -7726,7 +7726,7 @@ program.command("doctor").description("Health check: API keys, config, MCP, rece
7726
7726
  });
7727
7727
  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) => {
7728
7728
  try {
7729
- const batch = await import("./batch-FPDT2USZ.js");
7729
+ const batch = await import("./batch-3KHEEICT.js");
7730
7730
  switch (action) {
7731
7731
  case "submit":
7732
7732
  if (!arg) {
@@ -7769,7 +7769,7 @@ program.command("batch <action> [arg] [arg2]").description("Anthropic Message Ba
7769
7769
  }
7770
7770
  });
7771
7771
  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) => {
7772
- const { startMcpServer } = await import("./server-IGCCSX4B.js");
7772
+ const { startMcpServer } = await import("./server-OZTSIFXL.js");
7773
7773
  await startMcpServer({
7774
7774
  allowDestructive: !!options.allowDestructive,
7775
7775
  allowOutsideCwd: !!options.allowOutsideCwd,
@@ -7782,7 +7782,7 @@ program.command("pr <action> [target]").description("PR review helpers: review |
7782
7782
  console.error(`Unknown pr action: ${action}. Use review | security-review | summarize.`);
7783
7783
  process.exit(1);
7784
7784
  }
7785
- const { runPrCli } = await import("./pr-NTQ3N4B4.js");
7785
+ const { runPrCli } = await import("./pr-FNKV6IWI.js");
7786
7786
  const result = await runPrCli({
7787
7787
  action,
7788
7788
  target,
@@ -7802,8 +7802,8 @@ program.command("pr <action> [target]").description("PR review helpers: review |
7802
7802
  process.exit(result.exitCode);
7803
7803
  });
7804
7804
  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) => {
7805
- const { runCi } = await import("./ci-VPN5RWCO.js");
7806
- const { formatCiResult } = await import("./ci-format-GKXVCVME.js");
7805
+ const { runCi } = await import("./ci-6CTWCDH3.js");
7806
+ const { formatCiResult } = await import("./ci-format-MC5HZBCE.js");
7807
7807
  const formats = [options.json, options.markdown, options.sarif].filter(Boolean).length;
7808
7808
  if (formats > 1) {
7809
7809
  console.error("Choose only one output format: --json, --markdown, or --sarif.");
@@ -7961,7 +7961,7 @@ program.command("hub [topic]").description("Start multi-agent hub (discuss / bra
7961
7961
  config.get("customProviders"),
7962
7962
  config.getConfigDir()
7963
7963
  );
7964
- const { startHub } = await import("./hub-FJWP6SDG.js");
7964
+ const { startHub } = await import("./hub-ORAAJOPT.js");
7965
7965
  await startHub(
7966
7966
  {
7967
7967
  topic: topic ?? "",
@@ -2,10 +2,10 @@
2
2
  import {
3
3
  discussionToMessages,
4
4
  persistDiscussion
5
- } from "./chunk-JQXXPTWL.js";
6
- import "./chunk-OBULDJSU.js";
5
+ } from "./chunk-MX75TNE5.js";
6
+ import "./chunk-CGDYO52A.js";
7
7
  import "./chunk-NYNSYLFY.js";
8
- import "./chunk-B5TYJO7V.js";
8
+ import "./chunk-3FEZSLGI.js";
9
9
  import "./chunk-IW3Q7AE5.js";
10
10
  export {
11
11
  discussionToMessages,
@@ -28,11 +28,11 @@ import {
28
28
  touchMemoryReferences,
29
29
  updateMemoryApproval,
30
30
  updateMemoryEntry
31
- } from "./chunk-4UNRDXZV.js";
32
- import "./chunk-B5TYJO7V.js";
31
+ } from "./chunk-PXWOJEFG.js";
32
+ import "./chunk-3FEZSLGI.js";
33
33
  import "./chunk-HOSJZMQS.js";
34
34
  import "./chunk-IW3Q7AE5.js";
35
- import "./chunk-FT3WS5PG.js";
35
+ import "./chunk-WMVG5E56.js";
36
36
  export {
37
37
  addMemoryEntry,
38
38
  backupMemoryStore,
@@ -27,9 +27,9 @@ import {
27
27
  touchMemoryReferences,
28
28
  updateMemoryApproval,
29
29
  updateMemoryEntry
30
- } from "./chunk-VPXNLE7E.js";
31
- import "./chunk-YVTASHS5.js";
32
- import "./chunk-5JFRM47R.js";
30
+ } from "./chunk-257ZLWOP.js";
31
+ import "./chunk-FSC6KEWU.js";
32
+ import "./chunk-AHNTBH7G.js";
33
33
  import "./chunk-6BUTA5VW.js";
34
34
  export {
35
35
  addMemoryEntry,
@@ -2,8 +2,8 @@
2
2
  import {
3
3
  countSeverity,
4
4
  runCi
5
- } from "./chunk-RNDHIERN.js";
6
- import "./chunk-2RN4T4XD.js";
5
+ } from "./chunk-FBYFNBUD.js";
6
+ import "./chunk-XUNQSAUM.js";
7
7
  import {
8
8
  buildReviewPrompt,
9
9
  buildSecurityReviewPrompt,
@@ -17,13 +17,13 @@ import {
17
17
  } from "./chunk-AUEX6RNY.js";
18
18
  import {
19
19
  ConfigManager
20
- } from "./chunk-PMRU2CAF.js";
20
+ } from "./chunk-5NZVRFLP.js";
21
21
  import "./chunk-3OBY7WSS.js";
22
22
  import "./chunk-TU3L3PW7.js";
23
23
  import "./chunk-IW3Q7AE5.js";
24
24
  import {
25
25
  VERSION
26
- } from "./chunk-FT3WS5PG.js";
26
+ } from "./chunk-WMVG5E56.js";
27
27
 
28
28
  // src/cli/pr.ts
29
29
  import { execFileSync } from "child_process";
@@ -2,8 +2,8 @@
2
2
  import {
3
3
  executeTests,
4
4
  runTestsTool
5
- } from "./chunk-OSYK6D4G.js";
6
- import "./chunk-FT3WS5PG.js";
5
+ } from "./chunk-EZ6VXKJV.js";
6
+ import "./chunk-WMVG5E56.js";
7
7
  export {
8
8
  executeTests,
9
9
  runTestsTool
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  executeTests,
3
3
  runTestsTool
4
- } from "./chunk-RLAUMACS.js";
5
- import "./chunk-5JFRM47R.js";
4
+ } from "./chunk-A5ICBOQ6.js";
5
+ import "./chunk-AHNTBH7G.js";
6
6
  export {
7
7
  executeTests,
8
8
  runTestsTool
@@ -11,7 +11,7 @@ import {
11
11
  } from "./chunk-RYQBBEMM.js";
12
12
  import {
13
13
  persistDiscussion
14
- } from "./chunk-JQXXPTWL.js";
14
+ } from "./chunk-MX75TNE5.js";
15
15
  import {
16
16
  AUTO_COMPACT_INSTRUCTION,
17
17
  McpManager,
@@ -34,7 +34,7 @@ import {
34
34
  scanProject,
35
35
  setupProxy,
36
36
  stripRoutingTags
37
- } from "./chunk-BFPF3JF2.js";
37
+ } from "./chunk-MFUAK7OM.js";
38
38
  import {
39
39
  CNY_PER_USD,
40
40
  CostTracker,
@@ -75,7 +75,7 @@ import {
75
75
  spawnAgentContext,
76
76
  truncateOutput,
77
77
  undoStack
78
- } from "./chunk-V26ZMB3D.js";
78
+ } from "./chunk-JMU5DELU.js";
79
79
  import {
80
80
  buildReviewPrompt,
81
81
  buildSecurityReviewPrompt
@@ -83,7 +83,7 @@ import {
83
83
  import {
84
84
  thinkingParamsFor
85
85
  } from "./chunk-6YZEZFX5.js";
86
- import "./chunk-6RPGQ5CG.js";
86
+ import "./chunk-GHWZVPUV.js";
87
87
  import {
88
88
  addMemoryEntry,
89
89
  clearMemoryEntries,
@@ -98,7 +98,7 @@ import {
98
98
  parseWritableScope,
99
99
  updateMemoryApproval,
100
100
  updateMemoryEntry
101
- } from "./chunk-4UNRDXZV.js";
101
+ } from "./chunk-PXWOJEFG.js";
102
102
  import "./chunk-GLSR2NR3.js";
103
103
  import "./chunk-UUSRWSSX.js";
104
104
  import "./chunk-CKH4KQ4E.js";
@@ -108,16 +108,16 @@ import "./chunk-5C76XDDF.js";
108
108
  import {
109
109
  SessionManager,
110
110
  getContentText
111
- } from "./chunk-OBULDJSU.js";
111
+ } from "./chunk-CGDYO52A.js";
112
112
  import "./chunk-NYNSYLFY.js";
113
113
  import {
114
114
  scanString
115
- } from "./chunk-B5TYJO7V.js";
115
+ } from "./chunk-3FEZSLGI.js";
116
116
  import {
117
117
  buildDoctorReport,
118
118
  formatDoctorReport,
119
119
  loadContextFiles
120
- } from "./chunk-PG7O7N7D.js";
120
+ } from "./chunk-Z75H56SJ.js";
121
121
  import {
122
122
  describePlugin,
123
123
  getActivePluginAssets,
@@ -132,13 +132,13 @@ import {
132
132
  runTool,
133
133
  setPluginEnabled,
134
134
  trustPlugin
135
- } from "./chunk-PDRAOFGI.js";
135
+ } from "./chunk-XBOP6NLW.js";
136
136
  import {
137
137
  ProviderRegistry
138
138
  } from "./chunk-AUEX6RNY.js";
139
139
  import {
140
140
  ConfigManager
141
- } from "./chunk-PMRU2CAF.js";
141
+ } from "./chunk-5NZVRFLP.js";
142
142
  import {
143
143
  CONTENT_ONLY_STREAM_REMINDER,
144
144
  TEE_FINAL_USER_NUDGE,
@@ -170,7 +170,7 @@ import {
170
170
  maskConfigSecrets
171
171
  } from "./chunk-XNFIYS7G.js";
172
172
  import "./chunk-4BKXL7SM.js";
173
- import "./chunk-OSYK6D4G.js";
173
+ import "./chunk-EZ6VXKJV.js";
174
174
  import {
175
175
  AGENTIC_BEHAVIOR_GUIDELINE,
176
176
  AUTHOR,
@@ -186,7 +186,7 @@ import {
186
186
  SKILLS_DIR_NAME,
187
187
  VERSION,
188
188
  buildUserIdentityPrompt
189
- } from "./chunk-FT3WS5PG.js";
189
+ } from "./chunk-WMVG5E56.js";
190
190
 
191
191
  // src/web/server.ts
192
192
  import express from "express";
@@ -857,7 +857,7 @@ Cache: write=${cacheCreate} read=${cacheRead}` : "";
857
857
  Cost: ${formatCost(cost)}` : "";
858
858
  let memoryLine = "";
859
859
  try {
860
- const { countPendingMemories } = await import("./persistent-memory-IR47JCTF.js");
860
+ const { countPendingMemories } = await import("./persistent-memory-6NQQ2H2B.js");
861
861
  const pending = countPendingMemories(ctx.config.getConfigDir());
862
862
  if (pending > 0) memoryLine = `
863
863
  Memory: \u26A0 ${pending} pending approval \u2014 see the Memory panel or /memory`;
@@ -1670,7 +1670,7 @@ async function handleTest(args, ctx) {
1670
1670
  const isCommand = argStr.includes(" ") || /^(mvn|gradle|npm|pytest|cargo|go)\b/.test(argStr);
1671
1671
  testArgs = isCommand ? { command: argStr } : { filter: argStr };
1672
1672
  }
1673
- const runTests = ctx.runTests ?? (await import("./run-tests-UTES6HCT.js")).executeTests;
1673
+ const runTests = ctx.runTests ?? (await import("./run-tests-34HXDZXM.js")).executeTests;
1674
1674
  const report = await runTests(testArgs);
1675
1675
  ctx.send({ type: "info", message: report });
1676
1676
  } catch (err) {
@@ -1928,7 +1928,7 @@ async function handleMemory(args, ctx) {
1928
1928
  ctx.handleMemoryManage(sub, args[1], sub === "expire" ? args[2] : void 0);
1929
1929
  } else if (sub === "export") {
1930
1930
  if (args[1] === "md") {
1931
- const { exportMemoryEntries: exportMemoryEntries2 } = await import("./persistent-memory-IR47JCTF.js");
1931
+ const { exportMemoryEntries: exportMemoryEntries2 } = await import("./persistent-memory-6NQQ2H2B.js");
1932
1932
  ctx.send({
1933
1933
  type: "export_data",
1934
1934
  format: "md",
@@ -3730,7 +3730,7 @@ Backup saved: ${result.backupPath}` : "";
3730
3730
  return;
3731
3731
  }
3732
3732
  try {
3733
- const { searchChatMemory, loadChatIndex } = await import("./chat-index-7MMTGQNA.js");
3733
+ const { searchChatMemory, loadChatIndex } = await import("./chat-index-2D5GK2DB.js");
3734
3734
  const loaded = loadChatIndex();
3735
3735
  if (!loaded || loaded.idx.chunks.length === 0) {
3736
3736
  this.send({ type: "memory_hits", query: q, hits: [], indexMissing: true });
@@ -3766,7 +3766,7 @@ Backup saved: ${result.backupPath}` : "";
3766
3766
  }
3767
3767
  async handleMemoryStatus() {
3768
3768
  try {
3769
- const { getChatIndexStatus } = await import("./chat-index-7MMTGQNA.js");
3769
+ const { getChatIndexStatus } = await import("./chat-index-2D5GK2DB.js");
3770
3770
  const s = getChatIndexStatus();
3771
3771
  this.send({
3772
3772
  type: "memory_status",
@@ -3791,7 +3791,7 @@ Backup saved: ${result.backupPath}` : "";
3791
3791
  type: "info",
3792
3792
  message: full ? "\u{1F9E0} Rebuilding chat memory index (this may take a while on first run \u2014 ~117 MB embedder)." : "\u{1F9E0} Refreshing chat memory index (incremental)\u2026"
3793
3793
  });
3794
- const { buildChatIndex } = await import("./chat-index-7MMTGQNA.js");
3794
+ const { buildChatIndex } = await import("./chat-index-2D5GK2DB.js");
3795
3795
  const stats = await buildChatIndex({
3796
3796
  full,
3797
3797
  onProgress: (p) => {
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ToolRegistry
4
- } from "./chunk-V26ZMB3D.js";
5
- import "./chunk-6RPGQ5CG.js";
6
- import "./chunk-4UNRDXZV.js";
4
+ } from "./chunk-JMU5DELU.js";
5
+ import "./chunk-GHWZVPUV.js";
6
+ import "./chunk-PXWOJEFG.js";
7
7
  import "./chunk-GLSR2NR3.js";
8
8
  import "./chunk-UUSRWSSX.js";
9
9
  import "./chunk-CKH4KQ4E.js";
@@ -11,10 +11,10 @@ import "./chunk-BXP6YZ2P.js";
11
11
  import "./chunk-KHYD3WXE.js";
12
12
  import "./chunk-5C76XDDF.js";
13
13
  import "./chunk-NYNSYLFY.js";
14
- import "./chunk-B5TYJO7V.js";
14
+ import "./chunk-3FEZSLGI.js";
15
15
  import {
16
16
  runTool
17
- } from "./chunk-PDRAOFGI.js";
17
+ } from "./chunk-XBOP6NLW.js";
18
18
  import {
19
19
  getDangerLevel,
20
20
  schemaToJsonSchema
@@ -23,10 +23,10 @@ import "./chunk-TU3L3PW7.js";
23
23
  import "./chunk-HOSJZMQS.js";
24
24
  import "./chunk-IW3Q7AE5.js";
25
25
  import "./chunk-4BKXL7SM.js";
26
- import "./chunk-OSYK6D4G.js";
26
+ import "./chunk-EZ6VXKJV.js";
27
27
  import {
28
28
  VERSION
29
- } from "./chunk-FT3WS5PG.js";
29
+ } from "./chunk-WMVG5E56.js";
30
30
 
31
31
  // src/mcp/server.ts
32
32
  import { createInterface } from "readline";
@@ -3,9 +3,9 @@ import {
3
3
  ToolRegistry,
4
4
  googleSearchContext,
5
5
  truncateOutput
6
- } from "./chunk-V26ZMB3D.js";
7
- import "./chunk-6RPGQ5CG.js";
8
- import "./chunk-4UNRDXZV.js";
6
+ } from "./chunk-JMU5DELU.js";
7
+ import "./chunk-GHWZVPUV.js";
8
+ import "./chunk-PXWOJEFG.js";
9
9
  import "./chunk-GLSR2NR3.js";
10
10
  import "./chunk-UUSRWSSX.js";
11
11
  import "./chunk-CKH4KQ4E.js";
@@ -13,10 +13,10 @@ import "./chunk-BXP6YZ2P.js";
13
13
  import "./chunk-KHYD3WXE.js";
14
14
  import "./chunk-5C76XDDF.js";
15
15
  import "./chunk-NYNSYLFY.js";
16
- import "./chunk-B5TYJO7V.js";
16
+ import "./chunk-3FEZSLGI.js";
17
17
  import {
18
18
  runTool
19
- } from "./chunk-PDRAOFGI.js";
19
+ } from "./chunk-XBOP6NLW.js";
20
20
  import {
21
21
  getDangerLevel,
22
22
  runLeanAgentLoop
@@ -27,10 +27,10 @@ import {
27
27
  atomicWriteFileSync
28
28
  } from "./chunk-IW3Q7AE5.js";
29
29
  import "./chunk-4BKXL7SM.js";
30
- import "./chunk-OSYK6D4G.js";
30
+ import "./chunk-EZ6VXKJV.js";
31
31
  import {
32
32
  SUBAGENT_ALLOWED_TOOLS
33
- } from "./chunk-FT3WS5PG.js";
33
+ } from "./chunk-WMVG5E56.js";
34
34
 
35
35
  // src/hub/task-orchestrator.ts
36
36
  import { createInterface } from "readline";
@@ -8,10 +8,10 @@ import {
8
8
  } from "./chunk-JT6UN5C6.js";
9
9
  import {
10
10
  ConfigManager
11
- } from "./chunk-PMRU2CAF.js";
11
+ } from "./chunk-5NZVRFLP.js";
12
12
  import "./chunk-TU3L3PW7.js";
13
13
  import "./chunk-IW3Q7AE5.js";
14
- import "./chunk-FT3WS5PG.js";
14
+ import "./chunk-WMVG5E56.js";
15
15
 
16
16
  // src/cli/usage.ts
17
17
  function classifyRowCost(row) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jinzd-ai-cli",
3
- "version": "0.4.271",
3
+ "version": "0.4.272",
4
4
  "description": "Cross-platform REPL-style AI CLI with multi-provider support",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",