jinzd-ai-cli 0.4.283 → 0.4.284

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 (33) hide show
  1. package/README.md +2 -2
  2. package/README.zh-CN.md +2 -2
  3. package/dist/{batch-6WWR4P5U.js → batch-DA7VA35X.js} +2 -2
  4. package/dist/{chunk-2YVZTDP4.js → chunk-3DRSBZQ7.js} +1 -1
  5. package/dist/{chunk-V4IY5CRJ.js → chunk-BXG44VIQ.js} +1 -1
  6. package/dist/{chunk-RALUII7R.js → chunk-C4CIIIDT.js} +3 -3
  7. package/dist/{chunk-JR2J3V6J.js → chunk-FZ4THGUP.js} +1 -1
  8. package/dist/{chunk-D7BIF6JO.js → chunk-I4FJGILK.js} +4 -4
  9. package/dist/{chunk-CUS4FJVP.js → chunk-OZKTHQWA.js} +3 -3
  10. package/dist/{chunk-M3UJ2JCW.js → chunk-PPPSK4MA.js} +1 -1
  11. package/dist/{chunk-4J7FIGQD.js → chunk-PWLQU43X.js} +1 -1
  12. package/dist/{chunk-F3YN754E.js → chunk-QKGKWCXE.js} +1 -1
  13. package/dist/{chunk-JSQGDPDK.js → chunk-RV2YOTEQ.js} +1 -1
  14. package/dist/{chunk-Z3QNLNSU.js → chunk-VFVN5CWA.js} +1 -1
  15. package/dist/{chunk-QDOFRKY2.js → chunk-XSBGCZOP.js} +1 -1
  16. package/dist/{chunk-LXJF46SO.js → chunk-Z23JYUOL.js} +3 -3
  17. package/dist/{ci-FTS7XNWA.js → ci-HG2TPYVY.js} +4 -4
  18. package/dist/{ci-format-N5PXGS7Y.js → ci-format-UB7K63UZ.js} +2 -2
  19. package/dist/{constants-3B5KIPLK.js → constants-3DDHA3LT.js} +1 -1
  20. package/dist/{doctor-cli-VRMIEREY.js → doctor-cli-ISFDY7LZ.js} +4 -4
  21. package/dist/electron-server.js +8 -8
  22. package/dist/{hub-TZET5544.js → hub-MP2CNDMZ.js} +1 -1
  23. package/dist/index.js +19 -19
  24. package/dist/{persistent-memory-IPCUJVWF.js → persistent-memory-AMDRRB5E.js} +2 -2
  25. package/dist/{persistent-memory-3OYRXF2L.js → persistent-memory-J2OVPLWI.js} +2 -2
  26. package/dist/{pr-XUXWP52Z.js → pr-BREZ3DJX.js} +4 -4
  27. package/dist/{run-tests-PUOXATHQ.js → run-tests-DPO23PKA.js} +2 -2
  28. package/dist/{run-tests-3T5WRG62.js → run-tests-XHLV74GU.js} +2 -2
  29. package/dist/{server-WGEGVVY5.js → server-KK7DIV3J.js} +5 -5
  30. package/dist/{server-4XSDRPZM.js → server-W2VIUKTQ.js} +13 -13
  31. package/dist/{task-orchestrator-LEW2VSZD.js → task-orchestrator-YM5IMIKL.js} +5 -5
  32. package/dist/{usage-7VEAXMMP.js → usage-TXPZY7EB.js} +2 -2
  33. package/package.json +2 -2
package/README.md CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  [![npm version](https://img.shields.io/npm/v/jinzd-ai-cli)](https://www.npmjs.com/package/jinzd-ai-cli)
14
14
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
15
- [![Node.js](https://img.shields.io/badge/node-%3E%3D20.18.1-brightgreen)](https://nodejs.org)
15
+ [![Node.js](https://img.shields.io/badge/node-%3E%3D22.12.0-brightgreen)](https://nodejs.org)
16
16
  [![GitHub Release](https://img.shields.io/github/v/release/jinzhengdong/ai-cli)](https://github.com/jinzhengdong/ai-cli/releases)
17
17
  [![CI](https://github.com/jinzhengdong/ai-cli/actions/workflows/ci.yml/badge.svg)](https://github.com/jinzhengdong/ai-cli/actions/workflows/ci.yml)
18
18
 
@@ -66,7 +66,7 @@
66
66
  npm install -g jinzd-ai-cli
67
67
  ```
68
68
 
69
- Requires Node.js >= 20.18.1. After installation, use `aicli` to start.
69
+ Requires Node.js >= 22.12.0. After installation, use `aicli` to start.
70
70
 
71
71
  ### Electron Desktop App (Windows)
72
72
 
package/README.zh-CN.md CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  [![npm version](https://img.shields.io/npm/v/jinzd-ai-cli)](https://www.npmjs.com/package/jinzd-ai-cli)
14
14
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
15
- [![Node.js](https://img.shields.io/badge/node-%3E%3D20.18.1-brightgreen)](https://nodejs.org)
15
+ [![Node.js](https://img.shields.io/badge/node-%3E%3D22.12.0-brightgreen)](https://nodejs.org)
16
16
  [![GitHub Release](https://img.shields.io/github/v/release/jinzhengdong/ai-cli)](https://github.com/jinzhengdong/ai-cli/releases)
17
17
  [![CI](https://github.com/jinzhengdong/ai-cli/actions/workflows/ci.yml/badge.svg)](https://github.com/jinzhengdong/ai-cli/actions/workflows/ci.yml)
18
18
 
@@ -54,7 +54,7 @@
54
54
  npm install -g jinzd-ai-cli
55
55
  ```
56
56
 
57
- 需要 Node.js >= 20.18.1。安装后使用 `aicli` 启动。
57
+ 需要 Node.js >= 22.12.0。安装后使用 `aicli` 启动。
58
58
 
59
59
  ### Electron 桌面应用(Windows)
60
60
 
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ConfigManager
4
- } from "./chunk-QDOFRKY2.js";
4
+ } from "./chunk-XSBGCZOP.js";
5
5
  import "./chunk-TU3L3PW7.js";
6
6
  import {
7
7
  atomicWriteFileSync
8
8
  } from "./chunk-IW3Q7AE5.js";
9
- import "./chunk-JSQGDPDK.js";
9
+ import "./chunk-RV2YOTEQ.js";
10
10
 
11
11
  // src/cli/batch.ts
12
12
  import Anthropic from "@anthropic-ai/sdk";
@@ -1,5 +1,5 @@
1
1
  // src/core/constants.ts
2
- var VERSION = "0.4.283";
2
+ var VERSION = "0.4.284";
3
3
  var APP_NAME = "ai-cli";
4
4
  var CONFIG_DIR_NAME = ".aicli";
5
5
  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-JSQGDPDK.js";
8
+ } from "./chunk-RV2YOTEQ.js";
9
9
 
10
10
  // src/diagnostics/tool-stats.ts
11
11
  import { existsSync, readFileSync, mkdirSync } from "fs";
@@ -8,13 +8,13 @@ import {
8
8
  listHooks,
9
9
  listInstalledPlugins,
10
10
  resetStats
11
- } from "./chunk-V4IY5CRJ.js";
11
+ } from "./chunk-BXG44VIQ.js";
12
12
  import {
13
13
  ProviderRegistry
14
14
  } from "./chunk-UGY5SVNX.js";
15
15
  import {
16
16
  ConfigManager
17
- } from "./chunk-QDOFRKY2.js";
17
+ } from "./chunk-XSBGCZOP.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-JSQGDPDK.js";
29
+ } from "./chunk-RV2YOTEQ.js";
30
30
 
31
31
  // src/diagnostics/doctor-report.ts
32
32
  import { existsSync as existsSync3, statSync as statSync2 } from "fs";
@@ -6,7 +6,7 @@ import {
6
6
  MEMORY_FILE_NAME,
7
7
  MEMORY_MAX_CHARS,
8
8
  MEMORY_STORE_FILE_NAME
9
- } from "./chunk-2YVZTDP4.js";
9
+ } from "./chunk-3DRSBZQ7.js";
10
10
  import {
11
11
  atomicWriteFileSync
12
12
  } from "./chunk-6BUTA5VW.js";
@@ -11,7 +11,7 @@ import {
11
11
  searchPersistentMemories,
12
12
  touchMemoryReferences,
13
13
  updateMemoryEntry
14
- } from "./chunk-M3UJ2JCW.js";
14
+ } from "./chunk-PPPSK4MA.js";
15
15
  import {
16
16
  indexProject
17
17
  } from "./chunk-4DEMGCK4.js";
@@ -30,7 +30,7 @@ import {
30
30
  runHook,
31
31
  runLifecycleHooks,
32
32
  runTool
33
- } from "./chunk-V4IY5CRJ.js";
33
+ } from "./chunk-BXG44VIQ.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-4J7FIGQD.js";
53
+ } from "./chunk-PWLQU43X.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-JSQGDPDK.js";
60
+ } from "./chunk-RV2YOTEQ.js";
61
61
 
62
62
  // src/tools/shell-pool.ts
63
63
  import { spawn as spawn2 } from "child_process";
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  evaluateCiGate,
4
4
  normalizeCiThresholds
5
- } from "./chunk-Z3QNLNSU.js";
5
+ } from "./chunk-VFVN5CWA.js";
6
6
  import {
7
7
  buildReviewPrompt,
8
8
  buildSecurityReviewPrompt,
@@ -16,10 +16,10 @@ import {
16
16
  } from "./chunk-UGY5SVNX.js";
17
17
  import {
18
18
  ConfigManager
19
- } from "./chunk-QDOFRKY2.js";
19
+ } from "./chunk-XSBGCZOP.js";
20
20
  import {
21
21
  VERSION
22
- } from "./chunk-JSQGDPDK.js";
22
+ } from "./chunk-RV2YOTEQ.js";
23
23
 
24
24
  // src/cli/ci.ts
25
25
  import { execFileSync } from "child_process";
@@ -13,7 +13,7 @@ import {
13
13
  MEMORY_FILE_NAME,
14
14
  MEMORY_MAX_CHARS,
15
15
  MEMORY_STORE_FILE_NAME
16
- } from "./chunk-JSQGDPDK.js";
16
+ } from "./chunk-RV2YOTEQ.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
  import {
3
3
  TEST_TIMEOUT
4
- } from "./chunk-JSQGDPDK.js";
4
+ } from "./chunk-RV2YOTEQ.js";
5
5
 
6
6
  // src/tools/builtin/run-tests.ts
7
7
  import { execSync, spawnSync } from "child_process";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  TEST_TIMEOUT
3
- } from "./chunk-2YVZTDP4.js";
3
+ } from "./chunk-3DRSBZQ7.js";
4
4
 
5
5
  // src/tools/builtin/run-tests.ts
6
6
  import { execSync, spawnSync } from "child_process";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  // src/core/constants.ts
4
- var VERSION = "0.4.283";
4
+ var VERSION = "0.4.284";
5
5
  var APP_NAME = "ai-cli";
6
6
  var CONFIG_DIR_NAME = ".aicli";
7
7
  var CONFIG_FILE_NAME = "config.json";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  VERSION
4
- } from "./chunk-JSQGDPDK.js";
4
+ } from "./chunk-RV2YOTEQ.js";
5
5
 
6
6
  // src/cli/ci-format.ts
7
7
  var DEFAULT_CI_THRESHOLDS = {
@@ -11,7 +11,7 @@ import {
11
11
  CONFIG_FILE_NAME,
12
12
  HISTORY_DIR_NAME,
13
13
  PLUGINS_DIR_NAME
14
- } from "./chunk-JSQGDPDK.js";
14
+ } from "./chunk-RV2YOTEQ.js";
15
15
 
16
16
  // src/config/config-manager.ts
17
17
  import { readFileSync, existsSync, mkdirSync } from "fs";
@@ -5,11 +5,11 @@ import {
5
5
  import {
6
6
  estimateTokens,
7
7
  truncateForPersist
8
- } from "./chunk-D7BIF6JO.js";
8
+ } from "./chunk-I4FJGILK.js";
9
9
  import {
10
10
  isMemoryExpired,
11
11
  isMemoryStale
12
- } from "./chunk-M3UJ2JCW.js";
12
+ } from "./chunk-PPPSK4MA.js";
13
13
  import {
14
14
  getContentText
15
15
  } from "./chunk-IUVDZVZ4.js";
@@ -30,7 +30,7 @@ import {
30
30
  MCP_PROTOCOL_VERSION,
31
31
  MCP_TOOL_PREFIX,
32
32
  VERSION
33
- } from "./chunk-JSQGDPDK.js";
33
+ } from "./chunk-RV2YOTEQ.js";
34
34
 
35
35
  // src/mcp/client.ts
36
36
  import { spawn } from "child_process";
@@ -3,16 +3,16 @@ import {
3
3
  CI_COMMENT_MARKER,
4
4
  countSeverity,
5
5
  runCi
6
- } from "./chunk-CUS4FJVP.js";
7
- import "./chunk-Z3QNLNSU.js";
6
+ } from "./chunk-OZKTHQWA.js";
7
+ import "./chunk-VFVN5CWA.js";
8
8
  import "./chunk-HLWUDRBO.js";
9
9
  import "./chunk-6YZEZFX5.js";
10
10
  import "./chunk-UGY5SVNX.js";
11
- import "./chunk-QDOFRKY2.js";
11
+ import "./chunk-XSBGCZOP.js";
12
12
  import "./chunk-TEXT4DAT.js";
13
13
  import "./chunk-TU3L3PW7.js";
14
14
  import "./chunk-IW3Q7AE5.js";
15
- import "./chunk-JSQGDPDK.js";
15
+ import "./chunk-RV2YOTEQ.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-Z3QNLNSU.js";
10
- import "./chunk-JSQGDPDK.js";
9
+ } from "./chunk-VFVN5CWA.js";
10
+ import "./chunk-RV2YOTEQ.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-JSQGDPDK.js";
41
+ } from "./chunk-RV2YOTEQ.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-RALUII7R.js";
6
- import "./chunk-V4IY5CRJ.js";
5
+ } from "./chunk-C4CIIIDT.js";
6
+ import "./chunk-BXG44VIQ.js";
7
7
  import "./chunk-UGY5SVNX.js";
8
- import "./chunk-QDOFRKY2.js";
8
+ import "./chunk-XSBGCZOP.js";
9
9
  import "./chunk-TEXT4DAT.js";
10
10
  import "./chunk-TU3L3PW7.js";
11
11
  import "./chunk-HOSJZMQS.js";
12
12
  import "./chunk-IW3Q7AE5.js";
13
- import "./chunk-JSQGDPDK.js";
13
+ import "./chunk-RV2YOTEQ.js";
14
14
  export {
15
15
  formatDoctorReport,
16
16
  runDoctorCli
@@ -40,14 +40,14 @@ import {
40
40
  touchMemoryReferences,
41
41
  updateMemoryApproval,
42
42
  updateMemoryEntry
43
- } from "./chunk-JR2J3V6J.js";
43
+ } from "./chunk-FZ4THGUP.js";
44
44
  import {
45
45
  redactJson,
46
46
  scanString
47
47
  } from "./chunk-FSC6KEWU.js";
48
48
  import {
49
49
  runTestsTool
50
- } from "./chunk-F3YN754E.js";
50
+ } from "./chunk-QKGKWCXE.js";
51
51
  import {
52
52
  AGENTIC_BEHAVIOR_GUIDELINE,
53
53
  APP_NAME,
@@ -80,7 +80,7 @@ import {
80
80
  SUBAGENT_MAX_ROUNDS_LIMIT,
81
81
  VERSION,
82
82
  buildUserIdentityPrompt
83
- } from "./chunk-2YVZTDP4.js";
83
+ } from "./chunk-3DRSBZQ7.js";
84
84
  import {
85
85
  hasSemanticIndex,
86
86
  semanticSearch
@@ -16838,7 +16838,7 @@ Cache: write=${cacheCreate} read=${cacheRead}` : "";
16838
16838
  Cost: ${formatCost(cost)}` : "";
16839
16839
  let memoryLine = "";
16840
16840
  try {
16841
- const { countPendingMemories: countPendingMemories2 } = await import("./persistent-memory-IPCUJVWF.js");
16841
+ const { countPendingMemories: countPendingMemories2 } = await import("./persistent-memory-AMDRRB5E.js");
16842
16842
  const pending = countPendingMemories2(ctx.config.getConfigDir());
16843
16843
  if (pending > 0) memoryLine = `
16844
16844
  Memory: \u26A0 ${pending} pending approval \u2014 see the Memory panel or /memory`;
@@ -17746,7 +17746,7 @@ async function handleTest(args, ctx) {
17746
17746
  const isCommand = argStr.includes(" ") || /^(mvn|gradle|npm|pytest|cargo|go)\b/.test(argStr);
17747
17747
  testArgs = isCommand ? { command: argStr } : { filter: argStr };
17748
17748
  }
17749
- const runTests = ctx.runTests ?? (await import("./run-tests-3T5WRG62.js")).executeTests;
17749
+ const runTests = ctx.runTests ?? (await import("./run-tests-XHLV74GU.js")).executeTests;
17750
17750
  const report = await runTests(testArgs);
17751
17751
  ctx.send({ type: "info", message: report });
17752
17752
  } catch (err) {
@@ -18136,7 +18136,7 @@ async function handleMemory(args, ctx) {
18136
18136
  }
18137
18137
  if (intent.kind === "status") {
18138
18138
  const { getChatIndexStatus } = await import("./chat-index-TDU3S2MG.js");
18139
- const { listMemoryEntries: listMemoryEntries2, isMemoryExpired: isMemoryExpired2, formatMemoryForPrompt: formatMemoryForPrompt2 } = await import("./persistent-memory-IPCUJVWF.js");
18139
+ const { listMemoryEntries: listMemoryEntries2, isMemoryExpired: isMemoryExpired2, formatMemoryForPrompt: formatMemoryForPrompt2 } = await import("./persistent-memory-AMDRRB5E.js");
18140
18140
  const memories = listMemoryEntries2(configDir, { includeExpired: true, includeRejected: true });
18141
18141
  const injected = formatMemoryForPrompt2(configDir, process.cwd(), ctx.config.get("memory")?.maxChars);
18142
18142
  const view = buildMemoryStatusView({
@@ -18159,7 +18159,7 @@ async function handleMemory(args, ctx) {
18159
18159
  return;
18160
18160
  }
18161
18161
  if (intent.kind === "recall") {
18162
- const { searchPersistentMemories: searchPersistentMemories2, touchMemoryReferences: touchMemoryReferences2 } = await import("./persistent-memory-IPCUJVWF.js");
18162
+ const { searchPersistentMemories: searchPersistentMemories2, touchMemoryReferences: touchMemoryReferences2 } = await import("./persistent-memory-AMDRRB5E.js");
18163
18163
  const { searchChatMemory: searchChatMemory2 } = await import("./chat-index-TDU3S2MG.js");
18164
18164
  const persistentHits = searchPersistentMemories2(configDir, intent.query, process.cwd(), 3);
18165
18165
  if (persistentHits.length > 0) {
@@ -18280,7 +18280,7 @@ async function handleMemory(args, ctx) {
18280
18280
  ctx.handleMemoryManage(intent.action, args[1], intent.action === "expire" ? args[2] : void 0);
18281
18281
  } else if (intent.kind === "export") {
18282
18282
  if (args[1] === "md") {
18283
- const { exportMemoryEntries: exportMemoryEntries2 } = await import("./persistent-memory-IPCUJVWF.js");
18283
+ const { exportMemoryEntries: exportMemoryEntries2 } = await import("./persistent-memory-AMDRRB5E.js");
18284
18284
  ctx.send({
18285
18285
  type: "export_data",
18286
18286
  format: "md",
@@ -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-LEW2VSZD.js");
161
+ const { TaskOrchestrator } = await import("./task-orchestrator-YM5IMIKL.js");
162
162
  const orchestrator = new TaskOrchestrator(config, providers, configManager);
163
163
  let interrupted = false;
164
164
  const onSigint = () => {
package/dist/index.js CHANGED
@@ -65,7 +65,7 @@ import {
65
65
  setupProxy,
66
66
  snapshotFile,
67
67
  stripRoutingTags
68
- } from "./chunk-LXJF46SO.js";
68
+ } from "./chunk-Z23JYUOL.js";
69
69
  import {
70
70
  CostTracker,
71
71
  computeCost,
@@ -95,7 +95,7 @@ import {
95
95
  setMaxOutputCap,
96
96
  spawnAgentContext,
97
97
  undoStack
98
- } from "./chunk-D7BIF6JO.js";
98
+ } from "./chunk-I4FJGILK.js";
99
99
  import {
100
100
  buildReviewPrompt,
101
101
  buildSecurityReviewPrompt
@@ -136,7 +136,7 @@ import {
136
136
  touchMemoryReferences,
137
137
  updateMemoryApproval,
138
138
  updateMemoryEntry
139
- } from "./chunk-M3UJ2JCW.js";
139
+ } from "./chunk-PPPSK4MA.js";
140
140
  import "./chunk-4DEMGCK4.js";
141
141
  import "./chunk-UUSRWSSX.js";
142
142
  import "./chunk-CKH4KQ4E.js";
@@ -160,7 +160,7 @@ import {
160
160
  formatDoctorReport,
161
161
  loadContextFiles,
162
162
  writeCrashLog
163
- } from "./chunk-RALUII7R.js";
163
+ } from "./chunk-C4CIIIDT.js";
164
164
  import {
165
165
  describePlugin,
166
166
  getActivePluginAssets,
@@ -177,14 +177,14 @@ import {
177
177
  trustHook,
178
178
  trustPlugin,
179
179
  untrustHook
180
- } from "./chunk-V4IY5CRJ.js";
180
+ } from "./chunk-BXG44VIQ.js";
181
181
  import {
182
182
  ProviderRegistry,
183
183
  listBuiltInProviderMetadata
184
184
  } from "./chunk-UGY5SVNX.js";
185
185
  import {
186
186
  ConfigManager
187
- } from "./chunk-QDOFRKY2.js";
187
+ } from "./chunk-XSBGCZOP.js";
188
188
  import {
189
189
  CONTENT_ONLY_STREAM_REMINDER,
190
190
  TEE_FINAL_USER_NUDGE,
@@ -222,7 +222,7 @@ import {
222
222
  import {
223
223
  fileCheckpoints
224
224
  } from "./chunk-4BKXL7SM.js";
225
- import "./chunk-4J7FIGQD.js";
225
+ import "./chunk-PWLQU43X.js";
226
226
  import {
227
227
  AGENTIC_BEHAVIOR_GUIDELINE,
228
228
  AUTHOR,
@@ -240,7 +240,7 @@ import {
240
240
  SKILLS_DIR_NAME,
241
241
  VERSION,
242
242
  buildUserIdentityPrompt
243
- } from "./chunk-JSQGDPDK.js";
243
+ } from "./chunk-RV2YOTEQ.js";
244
244
 
245
245
  // src/index.ts
246
246
  import { program } from "commander";
@@ -1358,7 +1358,7 @@ No tools match "${filter}".
1358
1358
  const { join: join6 } = await import("path");
1359
1359
  const { existsSync: existsSync6 } = await import("fs");
1360
1360
  const { getGitRoot: getGitRoot2 } = await import("./git-context-EXOEHQSF.js");
1361
- const { MCP_PROJECT_CONFIG_NAME: MCP_PROJECT_CONFIG_NAME2 } = await import("./constants-3B5KIPLK.js");
1361
+ const { MCP_PROJECT_CONFIG_NAME: MCP_PROJECT_CONFIG_NAME2 } = await import("./constants-3DDHA3LT.js");
1362
1362
  const { approveProject, hashMcpFile } = await import("./project-trust-NKYHL3VZ.js");
1363
1363
  const cwd = process.cwd();
1364
1364
  const projectRoot = getGitRoot2(cwd) ?? cwd;
@@ -2273,7 +2273,7 @@ function createReviewCommands() {
2273
2273
  usage: "/test [command|filter]",
2274
2274
  async execute(args, ctx) {
2275
2275
  try {
2276
- const { executeTests } = await import("./run-tests-PUOXATHQ.js");
2276
+ const { executeTests } = await import("./run-tests-DPO23PKA.js");
2277
2277
  const argStr = args.join(" ").trim();
2278
2278
  let testArgs = {};
2279
2279
  if (argStr) {
@@ -7275,7 +7275,7 @@ program.command("web").description("Start Web UI server with browser-based chat
7275
7275
  console.error("Error: Invalid port number. Must be between 1 and 65535.");
7276
7276
  process.exit(1);
7277
7277
  }
7278
- const { startWebServer } = await import("./server-4XSDRPZM.js");
7278
+ const { startWebServer } = await import("./server-W2VIUKTQ.js");
7279
7279
  await startWebServer({ port, host: options.host });
7280
7280
  });
7281
7281
  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) => {
@@ -7442,11 +7442,11 @@ program.command("sessions").description("List recent conversation sessions").opt
7442
7442
  console.log(footer + "\n");
7443
7443
  });
7444
7444
  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) => {
7445
- const { runUsageCli } = await import("./usage-7VEAXMMP.js");
7445
+ const { runUsageCli } = await import("./usage-TXPZY7EB.js");
7446
7446
  await runUsageCli(options);
7447
7447
  });
7448
7448
  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) => {
7449
- const { runDoctorCli } = await import("./doctor-cli-VRMIEREY.js");
7449
+ const { runDoctorCli } = await import("./doctor-cli-ISFDY7LZ.js");
7450
7450
  const argv = process.argv.slice(2);
7451
7451
  await runDoctorCli({
7452
7452
  json: !!options.json || argv.includes("--json"),
@@ -7455,7 +7455,7 @@ program.command("doctor").description("Health check: API keys, config, MCP, rece
7455
7455
  });
7456
7456
  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) => {
7457
7457
  try {
7458
- const batch = await import("./batch-6WWR4P5U.js");
7458
+ const batch = await import("./batch-DA7VA35X.js");
7459
7459
  switch (action) {
7460
7460
  case "submit":
7461
7461
  if (!arg) {
@@ -7498,7 +7498,7 @@ program.command("batch <action> [arg] [arg2]").description("Anthropic Message Ba
7498
7498
  }
7499
7499
  });
7500
7500
  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) => {
7501
- const { startMcpServer } = await import("./server-WGEGVVY5.js");
7501
+ const { startMcpServer } = await import("./server-KK7DIV3J.js");
7502
7502
  await startMcpServer({
7503
7503
  allowDestructive: !!options.allowDestructive,
7504
7504
  allowOutsideCwd: !!options.allowOutsideCwd,
@@ -7511,7 +7511,7 @@ program.command("pr <action> [target]").description("PR review helpers: review |
7511
7511
  console.error(`Unknown pr action: ${action}. Use review | security-review | summarize.`);
7512
7512
  process.exit(1);
7513
7513
  }
7514
- const { runPrCli } = await import("./pr-XUXWP52Z.js");
7514
+ const { runPrCli } = await import("./pr-BREZ3DJX.js");
7515
7515
  const result = await runPrCli({
7516
7516
  action,
7517
7517
  target,
@@ -7531,8 +7531,8 @@ program.command("pr <action> [target]").description("PR review helpers: review |
7531
7531
  process.exit(result.exitCode);
7532
7532
  });
7533
7533
  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) => {
7534
- const { runCi } = await import("./ci-FTS7XNWA.js");
7535
- const { formatCiResult } = await import("./ci-format-N5PXGS7Y.js");
7534
+ const { runCi } = await import("./ci-HG2TPYVY.js");
7535
+ const { formatCiResult } = await import("./ci-format-UB7K63UZ.js");
7536
7536
  const formats = [options.json, options.markdown, options.sarif].filter(Boolean).length;
7537
7537
  if (formats > 1) {
7538
7538
  console.error("Choose only one output format: --json, --markdown, or --sarif.");
@@ -7690,7 +7690,7 @@ program.command("hub [topic]").description("Start multi-agent hub (discuss / bra
7690
7690
  config.get("customProviders"),
7691
7691
  config.getConfigDir()
7692
7692
  );
7693
- const { startHub } = await import("./hub-TZET5544.js");
7693
+ const { startHub } = await import("./hub-MP2CNDMZ.js");
7694
7694
  await startHub(
7695
7695
  {
7696
7696
  topic: topic ?? "",
@@ -27,9 +27,9 @@ import {
27
27
  touchMemoryReferences,
28
28
  updateMemoryApproval,
29
29
  updateMemoryEntry
30
- } from "./chunk-JR2J3V6J.js";
30
+ } from "./chunk-FZ4THGUP.js";
31
31
  import "./chunk-FSC6KEWU.js";
32
- import "./chunk-2YVZTDP4.js";
32
+ import "./chunk-3DRSBZQ7.js";
33
33
  import "./chunk-6BUTA5VW.js";
34
34
  export {
35
35
  addMemoryEntry,
@@ -28,11 +28,11 @@ import {
28
28
  touchMemoryReferences,
29
29
  updateMemoryApproval,
30
30
  updateMemoryEntry
31
- } from "./chunk-M3UJ2JCW.js";
31
+ } from "./chunk-PPPSK4MA.js";
32
32
  import "./chunk-3FEZSLGI.js";
33
33
  import "./chunk-HOSJZMQS.js";
34
34
  import "./chunk-IW3Q7AE5.js";
35
- import "./chunk-JSQGDPDK.js";
35
+ import "./chunk-RV2YOTEQ.js";
36
36
  export {
37
37
  addMemoryEntry,
38
38
  backupMemoryStore,
@@ -2,8 +2,8 @@
2
2
  import {
3
3
  countSeverity,
4
4
  runCi
5
- } from "./chunk-CUS4FJVP.js";
6
- import "./chunk-Z3QNLNSU.js";
5
+ } from "./chunk-OZKTHQWA.js";
6
+ import "./chunk-VFVN5CWA.js";
7
7
  import {
8
8
  buildReviewPrompt,
9
9
  buildSecurityReviewPrompt,
@@ -17,13 +17,13 @@ import {
17
17
  } from "./chunk-UGY5SVNX.js";
18
18
  import {
19
19
  ConfigManager
20
- } from "./chunk-QDOFRKY2.js";
20
+ } from "./chunk-XSBGCZOP.js";
21
21
  import "./chunk-TEXT4DAT.js";
22
22
  import "./chunk-TU3L3PW7.js";
23
23
  import "./chunk-IW3Q7AE5.js";
24
24
  import {
25
25
  VERSION
26
- } from "./chunk-JSQGDPDK.js";
26
+ } from "./chunk-RV2YOTEQ.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-4J7FIGQD.js";
6
- import "./chunk-JSQGDPDK.js";
5
+ } from "./chunk-PWLQU43X.js";
6
+ import "./chunk-RV2YOTEQ.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-F3YN754E.js";
5
- import "./chunk-2YVZTDP4.js";
4
+ } from "./chunk-QKGKWCXE.js";
5
+ import "./chunk-3DRSBZQ7.js";
6
6
  export {
7
7
  executeTests,
8
8
  runTestsTool
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ToolRegistry
4
- } from "./chunk-D7BIF6JO.js";
4
+ } from "./chunk-I4FJGILK.js";
5
5
  import "./chunk-GHWZVPUV.js";
6
- import "./chunk-M3UJ2JCW.js";
6
+ import "./chunk-PPPSK4MA.js";
7
7
  import "./chunk-4DEMGCK4.js";
8
8
  import "./chunk-UUSRWSSX.js";
9
9
  import "./chunk-CKH4KQ4E.js";
@@ -14,7 +14,7 @@ import "./chunk-NYNSYLFY.js";
14
14
  import "./chunk-3FEZSLGI.js";
15
15
  import {
16
16
  runTool
17
- } from "./chunk-V4IY5CRJ.js";
17
+ } from "./chunk-BXG44VIQ.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-4J7FIGQD.js";
26
+ import "./chunk-PWLQU43X.js";
27
27
  import {
28
28
  VERSION
29
- } from "./chunk-JSQGDPDK.js";
29
+ } from "./chunk-RV2YOTEQ.js";
30
30
 
31
31
  // src/mcp/server.ts
32
32
  import { createInterface } from "readline";
@@ -73,7 +73,7 @@ import {
73
73
  setupProxy,
74
74
  snapshotFile,
75
75
  stripRoutingTags
76
- } from "./chunk-LXJF46SO.js";
76
+ } from "./chunk-Z23JYUOL.js";
77
77
  import {
78
78
  CNY_PER_USD,
79
79
  CostTracker,
@@ -115,7 +115,7 @@ import {
115
115
  spawnAgentContext,
116
116
  truncateOutput,
117
117
  undoStack
118
- } from "./chunk-D7BIF6JO.js";
118
+ } from "./chunk-I4FJGILK.js";
119
119
  import {
120
120
  buildReviewPrompt,
121
121
  buildSecurityReviewPrompt
@@ -142,7 +142,7 @@ import {
142
142
  restoreMemoryEntries,
143
143
  updateMemoryApproval,
144
144
  updateMemoryEntry
145
- } from "./chunk-M3UJ2JCW.js";
145
+ } from "./chunk-PPPSK4MA.js";
146
146
  import "./chunk-4DEMGCK4.js";
147
147
  import "./chunk-UUSRWSSX.js";
148
148
  import "./chunk-CKH4KQ4E.js";
@@ -161,7 +161,7 @@ import {
161
161
  buildDoctorReport,
162
162
  formatDoctorReport,
163
163
  loadContextFiles
164
- } from "./chunk-RALUII7R.js";
164
+ } from "./chunk-C4CIIIDT.js";
165
165
  import {
166
166
  describePlugin,
167
167
  getActivePluginAssets,
@@ -176,13 +176,13 @@ import {
176
176
  runTool,
177
177
  setPluginEnabled,
178
178
  trustPlugin
179
- } from "./chunk-V4IY5CRJ.js";
179
+ } from "./chunk-BXG44VIQ.js";
180
180
  import {
181
181
  ProviderRegistry
182
182
  } from "./chunk-UGY5SVNX.js";
183
183
  import {
184
184
  ConfigManager
185
- } from "./chunk-QDOFRKY2.js";
185
+ } from "./chunk-XSBGCZOP.js";
186
186
  import {
187
187
  CONTENT_ONLY_STREAM_REMINDER,
188
188
  TEE_FINAL_USER_NUDGE,
@@ -212,7 +212,7 @@ import {
212
212
  maskConfigSecrets
213
213
  } from "./chunk-XNFIYS7G.js";
214
214
  import "./chunk-4BKXL7SM.js";
215
- import "./chunk-4J7FIGQD.js";
215
+ import "./chunk-PWLQU43X.js";
216
216
  import {
217
217
  AGENTIC_BEHAVIOR_GUIDELINE,
218
218
  AUTHOR,
@@ -228,7 +228,7 @@ import {
228
228
  SKILLS_DIR_NAME,
229
229
  VERSION,
230
230
  buildUserIdentityPrompt
231
- } from "./chunk-JSQGDPDK.js";
231
+ } from "./chunk-RV2YOTEQ.js";
232
232
 
233
233
  // src/web/server.ts
234
234
  import express from "express";
@@ -986,7 +986,7 @@ Cache: write=${cacheCreate} read=${cacheRead}` : "";
986
986
  Cost: ${formatCost(cost)}` : "";
987
987
  let memoryLine = "";
988
988
  try {
989
- const { countPendingMemories: countPendingMemories2 } = await import("./persistent-memory-3OYRXF2L.js");
989
+ const { countPendingMemories: countPendingMemories2 } = await import("./persistent-memory-J2OVPLWI.js");
990
990
  const pending = countPendingMemories2(ctx.config.getConfigDir());
991
991
  if (pending > 0) memoryLine = `
992
992
  Memory: \u26A0 ${pending} pending approval \u2014 see the Memory panel or /memory`;
@@ -1894,7 +1894,7 @@ async function handleTest(args, ctx) {
1894
1894
  const isCommand = argStr.includes(" ") || /^(mvn|gradle|npm|pytest|cargo|go)\b/.test(argStr);
1895
1895
  testArgs = isCommand ? { command: argStr } : { filter: argStr };
1896
1896
  }
1897
- const runTests = ctx.runTests ?? (await import("./run-tests-PUOXATHQ.js")).executeTests;
1897
+ const runTests = ctx.runTests ?? (await import("./run-tests-DPO23PKA.js")).executeTests;
1898
1898
  const report = await runTests(testArgs);
1899
1899
  ctx.send({ type: "info", message: report });
1900
1900
  } catch (err) {
@@ -2169,7 +2169,7 @@ async function handleMemory(args, ctx) {
2169
2169
  }
2170
2170
  if (intent.kind === "status") {
2171
2171
  const { getChatIndexStatus } = await import("./chat-index-2D5GK2DB.js");
2172
- const { listMemoryEntries: listMemoryEntries2, isMemoryExpired: isMemoryExpired2, formatMemoryForPrompt: formatMemoryForPrompt2 } = await import("./persistent-memory-3OYRXF2L.js");
2172
+ const { listMemoryEntries: listMemoryEntries2, isMemoryExpired: isMemoryExpired2, formatMemoryForPrompt: formatMemoryForPrompt2 } = await import("./persistent-memory-J2OVPLWI.js");
2173
2173
  const memories = listMemoryEntries2(configDir, { includeExpired: true, includeRejected: true });
2174
2174
  const injected = formatMemoryForPrompt2(configDir, process.cwd(), ctx.config.get("memory")?.maxChars);
2175
2175
  const view = buildMemoryStatusView({
@@ -2192,7 +2192,7 @@ async function handleMemory(args, ctx) {
2192
2192
  return;
2193
2193
  }
2194
2194
  if (intent.kind === "recall") {
2195
- const { searchPersistentMemories, touchMemoryReferences } = await import("./persistent-memory-3OYRXF2L.js");
2195
+ const { searchPersistentMemories, touchMemoryReferences } = await import("./persistent-memory-J2OVPLWI.js");
2196
2196
  const { searchChatMemory } = await import("./chat-index-2D5GK2DB.js");
2197
2197
  const persistentHits = searchPersistentMemories(configDir, intent.query, process.cwd(), 3);
2198
2198
  if (persistentHits.length > 0) {
@@ -2313,7 +2313,7 @@ async function handleMemory(args, ctx) {
2313
2313
  ctx.handleMemoryManage(intent.action, args[1], intent.action === "expire" ? args[2] : void 0);
2314
2314
  } else if (intent.kind === "export") {
2315
2315
  if (args[1] === "md") {
2316
- const { exportMemoryEntries: exportMemoryEntries2 } = await import("./persistent-memory-3OYRXF2L.js");
2316
+ const { exportMemoryEntries: exportMemoryEntries2 } = await import("./persistent-memory-J2OVPLWI.js");
2317
2317
  ctx.send({
2318
2318
  type: "export_data",
2319
2319
  format: "md",
@@ -4,9 +4,9 @@ import {
4
4
  googleSearchContext,
5
5
  isToolCapableProvider,
6
6
  truncateOutput
7
- } from "./chunk-D7BIF6JO.js";
7
+ } from "./chunk-I4FJGILK.js";
8
8
  import "./chunk-GHWZVPUV.js";
9
- import "./chunk-M3UJ2JCW.js";
9
+ import "./chunk-PPPSK4MA.js";
10
10
  import "./chunk-4DEMGCK4.js";
11
11
  import "./chunk-UUSRWSSX.js";
12
12
  import "./chunk-CKH4KQ4E.js";
@@ -17,7 +17,7 @@ import "./chunk-NYNSYLFY.js";
17
17
  import "./chunk-3FEZSLGI.js";
18
18
  import {
19
19
  runTool
20
- } from "./chunk-V4IY5CRJ.js";
20
+ } from "./chunk-BXG44VIQ.js";
21
21
  import {
22
22
  getDangerLevel,
23
23
  runLeanAgentLoop
@@ -28,10 +28,10 @@ import {
28
28
  atomicWriteFileSync
29
29
  } from "./chunk-IW3Q7AE5.js";
30
30
  import "./chunk-4BKXL7SM.js";
31
- import "./chunk-4J7FIGQD.js";
31
+ import "./chunk-PWLQU43X.js";
32
32
  import {
33
33
  SUBAGENT_ALLOWED_TOOLS
34
- } from "./chunk-JSQGDPDK.js";
34
+ } from "./chunk-RV2YOTEQ.js";
35
35
 
36
36
  // src/hub/task-orchestrator.ts
37
37
  import { createInterface } from "readline";
@@ -8,10 +8,10 @@ import {
8
8
  } from "./chunk-DPTEC6AQ.js";
9
9
  import {
10
10
  ConfigManager
11
- } from "./chunk-QDOFRKY2.js";
11
+ } from "./chunk-XSBGCZOP.js";
12
12
  import "./chunk-TU3L3PW7.js";
13
13
  import "./chunk-IW3Q7AE5.js";
14
- import "./chunk-JSQGDPDK.js";
14
+ import "./chunk-RV2YOTEQ.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.283",
3
+ "version": "0.4.284",
4
4
  "description": "Cross-platform REPL-style AI CLI with multi-provider support",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -57,7 +57,7 @@
57
57
  "options": "no-deprecation"
58
58
  },
59
59
  "engines": {
60
- "node": ">=20.18.1"
60
+ "node": ">=22.12.0"
61
61
  },
62
62
  "files": [
63
63
  "dist/*.js",