jinzd-ai-cli 0.4.239 → 0.4.241

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/README.md +2 -2
  2. package/README.zh-CN.md +6 -6
  3. package/dist/{batch-S2NUD45K.js → batch-K66BLTLJ.js} +2 -2
  4. package/dist/{chunk-MSK2BAKT.js → chunk-2LLQOMMW.js} +1 -1
  5. package/dist/{chunk-UEFVKTAF.js → chunk-3AIR7N5M.js} +3 -3
  6. package/dist/{chunk-45TJA46E.js → chunk-CHFFEVVT.js} +3 -3
  7. package/dist/{chunk-BTKFZUIJ.js → chunk-GORPFFV4.js} +3 -3
  8. package/dist/{chunk-CSATDZ3Z.js → chunk-IV6GCDVR.js} +1 -1
  9. package/dist/{chunk-PTUOWHOH.js → chunk-LXSUPLCK.js} +2 -2
  10. package/dist/{chunk-6RU5AKXB.js → chunk-NAQPP3GZ.js} +1 -1
  11. package/dist/{chunk-J2M4GOFE.js → chunk-PGHTAKIA.js} +1 -1
  12. package/dist/{chunk-25FKQO3A.js → chunk-SMQHEJSH.js} +1 -1
  13. package/dist/{chunk-EG5P3AMC.js → chunk-ZPXMT2B6.js} +1 -1
  14. package/dist/{ci-HDGRBALH.js → ci-T2ABDMMQ.js} +4 -4
  15. package/dist/{ci-format-W6DDOFS7.js → ci-format-S2PPU27O.js} +2 -2
  16. package/dist/{constants-3KMOIJNP.js → constants-RS7OUU7X.js} +1 -1
  17. package/dist/{doctor-cli-Q3XR5DQT.js → doctor-cli-TGAW6RAP.js} +4 -4
  18. package/dist/electron-server.js +2 -2
  19. package/dist/{hub-5TKAR7Y7.js → hub-GL5ZU6WS.js} +1 -1
  20. package/dist/index.js +18 -18
  21. package/dist/{pr-RRHV7P7D.js → pr-TJFKUZ4B.js} +4 -4
  22. package/dist/{run-tests-K36VNQ5W.js → run-tests-EWMU34A4.js} +1 -1
  23. package/dist/{run-tests-GP7ZMSAX.js → run-tests-KEI7IXTB.js} +2 -2
  24. package/dist/{server-77FK46KF.js → server-E545UIX7.js} +4 -4
  25. package/dist/{server-DWQTKBCQ.js → server-UVS2D4M6.js} +8 -8
  26. package/dist/{task-orchestrator-AJRFTQVB.js → task-orchestrator-PWXV2EBN.js} +4 -4
  27. package/dist/{usage-5QO5AFYC.js → usage-EDJ6QOWB.js} +2 -2
  28. package/package.json +1 -1
package/README.md CHANGED
@@ -47,7 +47,7 @@
47
47
  - **PWA Support** — Install Web UI as a desktop/mobile app, accessible over LAN
48
48
  - **Hierarchical Context** — 3-layer context files (global / project / subdirectory) auto-injected; supports native AICLI.md, Claude-compatible CLAUDE.md, and Codex-compatible AGENTS.md with override files
49
49
  - **Headless Mode** — `ai-cli -p "prompt"` for CI/CD pipelines and scripting
50
- - **44 REPL Commands** — Session management, checkpointing, code review, security review/scan, rewind, scaffolding, cross-session history search, chat-memory recall, smart model routing (`/route`), and more
50
+ - **48 REPL Commands** — Session management, checkpointing, code review, security review/scan, rewind, scaffolding, cross-session history search, chat-memory recall, smart model routing (`/route`), and more
51
51
  - **GitHub Actions CI/CD** — Automated testing on Node 20/22 + npm publish on release tags
52
52
  - **PR Review CLI** *(v0.4.216+)* — `aicli pr review|security-review|summarize` reviews `main...HEAD`, custom `--base/--head`, or GitHub PR URLs; optional `--agents security,bugs,tests,maintainability`; never posts comments unless `--post` is explicit
53
53
  - **CI Review Artifacts** *(v0.4.216+)* — `aicli ci` emits Markdown, JSON, or SARIF and gates on security-high, test-failure, and lint-failure findings in read-only review mode
@@ -456,7 +456,7 @@ Environment variables take precedence over config file values:
456
456
  | `AICLI_API_KEY_OPENAI` | OpenAI API Key |
457
457
  | `AICLI_API_KEY_OPENROUTER` | OpenRouter API Key |
458
458
  | `AICLI_API_KEY_ZHIPU` | Zhipu API Key |
459
- | `AICLI_API_KEY_KIMI` | Kimi API Key |
459
+ | `AICLI_API_KEY_KIMI` | Kimi API Key |
460
460
  | `AICLI_API_KEY_QWEN` | Qwen / Alibaba Cloud API Key |
461
461
  | `AICLI_PROVIDER` | Default provider ID |
462
462
  | `AICLI_NO_STREAM` | Set to `1` to disable streaming |
package/README.zh-CN.md CHANGED
@@ -23,7 +23,7 @@
23
23
  - **对话分支**(v0.4.74+)— REPL 内 `/branch list/new/switch/delete/rename/diff/cherry-pick`,Web UI 回放面板每条消息旁 🌿 "fork here" 按钮,任意位置开辟新分支探索不同方向,原对话保持不变;v0.4.81 起所有子命令支持 id / title / 唯一前缀
24
24
  - **符号索引**(v0.4.76+,C1;v0.4.143 起多语言)— tree-sitter 持久化索引(TS / JS / TSX / JSX / Python / Go / Rust / Java / C/C++)+ 3 个只读 AI 工具(`find_symbol` / `get_outline` / `find_references`)+ `/index status/rebuild/clear`;启动后台增量刷新,`write_file` 后自动 upsert
25
25
  - **语义代码搜索**(v0.4.77+,C2)— `search_code` AI 工具 + 本地 sentence embedding(`paraphrase-multilingual-MiniLM-L12-v2`,117 MB 一次性下载,384 维,CPU 运行);支持中英文自然语言查询代码;`/index semantic-rebuild/semantic-clear` 管理
26
- - **MCP Server 模式**(v0.4.84+,E1)— `aicli mcp-serve` 把 aicli 反转为 MCP 服务器(JSON-RPC 2.0 over stdio),把 28 个内置工具(含 `find_symbol` / `search_code` / `run_tests`)输出给 Claude Desktop / Cursor / 任何 MCP 客户端;支持 `--tools` 白名单、`--cwd` 覆盖、`--allow-destructive`
26
+ - **MCP Server 模式**(v0.4.84+,E1)— `aicli mcp-serve` 把 aicli 反转为 MCP 服务器(JSON-RPC 2.0 over stdio),把 30 个内置工具(含 `find_symbol` / `search_code` / `run_tests`)输出给 Claude Desktop / Cursor / 任何 MCP 客户端;支持 `--tools` 白名单、`--cwd` 覆盖、`--allow-destructive`
27
27
  - **Session 敏感数据脱敏**(v0.4.88+)— 统一 redactor 在 session **落盘前**自动替换 `password=` / `api_key` / bearer token / OpenAI key 为 `[REDACTED:*]`;查询文本也走脱敏,secret 不会进 embedding 或日志;`/security status` + `/security scan` 审计
28
28
  - **类人长期记忆**(v0.4.89+,B4)— 聊天记录语义索引跨 session 可召回 + `recall_memory` AI 工具 + `/memory rebuild/refresh/status/recall/index-clear`;AI 看到"上次"/"之前"/指代不明时自动回忆。复用 C2 的 MiniLM embedder
29
29
  - **Web UI Memory 面板**(v0.4.90+,B4)— sidebar 新增 🧠 Memory 标签页,跨 session 语义搜索;每条 hit 带 **➕ Inject**(把片段作为 markdown 引用块塞进聊天输入框,用户可在上面继续打字编辑——不是静默注入上下文)和 **↗ Load**(跳转对应 session);顶部"➕ Inject top 3"一键批量
@@ -37,7 +37,7 @@
37
37
  - **PWA 支持** — Web UI 可安装为桌面/移动应用,支持局域网访问
38
38
  - **三层级上下文** — 全局 / 项目 / 子目录上下文文件自动注入;支持原生 `AICLI.md`、Claude 兼容 `CLAUDE.md`、Codex 兼容 `AGENTS.md` 及 override 文件
39
39
  - **无头模式** — `aicli -p "提示词"` 用于 CI/CD 管道和脚本
40
- - **44 个 REPL 命令** — 会话管理、检查点、代码审查、安全审查/扫描、对话回退、脚手架、聊天记忆召回、智能模型路由(`/route`)等
40
+ - **48 个 REPL 命令** — 会话管理、检查点、代码审查、安全审查/扫描、对话回退、脚手架、聊天记忆召回、智能模型路由(`/route`)等
41
41
  - **GitHub Actions CI/CD** — Node 20/22 自动测试 + Release tag 自动发布 npm
42
42
  - **跨平台** — Windows、macOS、Linux
43
43
 
@@ -92,7 +92,7 @@ aicli
92
92
  ### Web UI
93
93
 
94
94
  ```bash
95
- aicli web # 在 localhost:3456 启动
95
+ aicli web # 在 localhost:3000 启动
96
96
  aicli web --port 8080 # 自定义端口
97
97
  aicli web --host 0.0.0.0 # 局域网访问(手机/平板)
98
98
  ```
@@ -144,7 +144,7 @@ aicli
144
144
 
145
145
  ## 内置工具(Agentic 能力)
146
146
 
147
- AI 在对话中可自主调用 28 个工具:
147
+ AI 在对话中可自主调用 30 个工具:
148
148
 
149
149
  | 工具 | 安全级别 | 说明 |
150
150
  |------|---------|------|
@@ -220,7 +220,7 @@ AI 在对话中可自主调用 28 个工具:
220
220
 
221
221
  **多行输入**:行末加 `\` 续行,或直接粘贴多行内容(自动检测合并)。
222
222
 
223
- 在 REPL 中输入 `/help` 查看全部 40 个命令。
223
+ 在 REPL 中输入 `/help` 查看全部 48 个命令。
224
224
 
225
225
  ## CLI 参数
226
226
 
@@ -414,7 +414,7 @@ Auto Mode 不会被项目配置静默开启。用 `/permissions recently-denied`
414
414
  | `AICLI_API_KEY_OPENAI` | OpenAI API Key |
415
415
  | `AICLI_API_KEY_OPENROUTER` | OpenRouter API Key |
416
416
  | `AICLI_API_KEY_ZHIPU` | 智谱 API Key |
417
- | `AICLI_API_KEY_KIMI` | Kimi API Key |
417
+ | `AICLI_API_KEY_KIMI` | Kimi API Key |
418
418
  | `AICLI_API_KEY_QWEN` | Qwen / Alibaba Cloud API Key |
419
419
  | `AICLI_PROVIDER` | 默认 Provider |
420
420
  | `AICLI_NO_STREAM` | 设为 `1` 禁用流式输出 |
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ConfigManager
4
- } from "./chunk-CSATDZ3Z.js";
4
+ } from "./chunk-IV6GCDVR.js";
5
5
  import "./chunk-5ULLIOVC.js";
6
- import "./chunk-25FKQO3A.js";
6
+ import "./chunk-SMQHEJSH.js";
7
7
  import {
8
8
  atomicWriteFileSync
9
9
  } from "./chunk-IW3Q7AE5.js";
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  CONFIG_DIR_NAME,
4
4
  PLUGINS_DIR_NAME
5
- } from "./chunk-25FKQO3A.js";
5
+ } from "./chunk-SMQHEJSH.js";
6
6
  import {
7
7
  atomicWriteFileSync
8
8
  } from "./chunk-IW3Q7AE5.js";
@@ -11,10 +11,10 @@ import {
11
11
  listHooks,
12
12
  listInstalledPlugins,
13
13
  resetStats
14
- } from "./chunk-MSK2BAKT.js";
14
+ } from "./chunk-2LLQOMMW.js";
15
15
  import {
16
16
  ConfigManager
17
- } from "./chunk-CSATDZ3Z.js";
17
+ } from "./chunk-IV6GCDVR.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-25FKQO3A.js";
29
+ } from "./chunk-SMQHEJSH.js";
30
30
 
31
31
  // src/diagnostics/doctor-report.ts
32
32
  import { existsSync as existsSync3, statSync as statSync2 } from "fs";
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  evaluateCiGate,
4
4
  normalizeCiThresholds
5
- } from "./chunk-J2M4GOFE.js";
5
+ } from "./chunk-PGHTAKIA.js";
6
6
  import {
7
7
  buildReviewPrompt,
8
8
  buildSecurityReviewPrompt,
@@ -13,10 +13,10 @@ import {
13
13
  } from "./chunk-QYQI7ZWK.js";
14
14
  import {
15
15
  ConfigManager
16
- } from "./chunk-CSATDZ3Z.js";
16
+ } from "./chunk-IV6GCDVR.js";
17
17
  import {
18
18
  VERSION
19
- } from "./chunk-25FKQO3A.js";
19
+ } from "./chunk-SMQHEJSH.js";
20
20
 
21
21
  // src/cli/ci.ts
22
22
  import { execFileSync } from "child_process";
@@ -14,7 +14,7 @@ import {
14
14
  runHook,
15
15
  runLifecycleHooks,
16
16
  runTool
17
- } from "./chunk-MSK2BAKT.js";
17
+ } from "./chunk-2LLQOMMW.js";
18
18
  import {
19
19
  getDangerLevel,
20
20
  isFileWriteTool,
@@ -33,7 +33,7 @@ import {
33
33
  } from "./chunk-4BKXL7SM.js";
34
34
  import {
35
35
  runTestsTool
36
- } from "./chunk-6RU5AKXB.js";
36
+ } from "./chunk-NAQPP3GZ.js";
37
37
  import {
38
38
  CONFIG_DIR_NAME,
39
39
  DEFAULT_MAX_TOOL_OUTPUT_CHARS_CAP,
@@ -43,7 +43,7 @@ import {
43
43
  SUBAGENT_ALLOWED_TOOLS,
44
44
  SUBAGENT_DEFAULT_MAX_ROUNDS,
45
45
  SUBAGENT_MAX_ROUNDS_LIMIT
46
- } from "./chunk-25FKQO3A.js";
46
+ } from "./chunk-SMQHEJSH.js";
47
47
  import {
48
48
  loadChatIndex,
49
49
  searchChatMemory
@@ -8,7 +8,7 @@ import {
8
8
  CONFIG_FILE_NAME,
9
9
  HISTORY_DIR_NAME,
10
10
  PLUGINS_DIR_NAME
11
- } from "./chunk-25FKQO3A.js";
11
+ } from "./chunk-SMQHEJSH.js";
12
12
  import {
13
13
  atomicWriteFileSync
14
14
  } from "./chunk-IW3Q7AE5.js";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  truncateForPersist
4
- } from "./chunk-BTKFZUIJ.js";
4
+ } from "./chunk-GORPFFV4.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-25FKQO3A.js";
14
+ } from "./chunk-SMQHEJSH.js";
15
15
  import {
16
16
  atomicWriteFileSync
17
17
  } from "./chunk-IW3Q7AE5.js";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  TEST_TIMEOUT
4
- } from "./chunk-25FKQO3A.js";
4
+ } from "./chunk-SMQHEJSH.js";
5
5
 
6
6
  // src/tools/builtin/run-tests.ts
7
7
  import { execSync, spawnSync } from "child_process";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  VERSION
4
- } from "./chunk-25FKQO3A.js";
4
+ } from "./chunk-SMQHEJSH.js";
5
5
 
6
6
  // src/cli/ci-format.ts
7
7
  var DEFAULT_CI_THRESHOLDS = {
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  // src/core/constants.ts
4
- var VERSION = "0.4.237";
4
+ var VERSION = "0.4.241";
5
5
  var APP_NAME = "ai-cli";
6
6
  var CONFIG_DIR_NAME = ".aicli";
7
7
  var CONFIG_FILE_NAME = "config.json";
@@ -6,7 +6,7 @@ import { platform } from "os";
6
6
  import chalk from "chalk";
7
7
 
8
8
  // src/core/constants.ts
9
- var VERSION = "0.4.237";
9
+ var VERSION = "0.4.241";
10
10
  var APP_NAME = "ai-cli";
11
11
  var CONFIG_DIR_NAME = ".aicli";
12
12
  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-45TJA46E.js";
7
- import "./chunk-J2M4GOFE.js";
6
+ } from "./chunk-CHFFEVVT.js";
7
+ import "./chunk-PGHTAKIA.js";
8
8
  import "./chunk-HLWUDRBO.js";
9
9
  import "./chunk-QYQI7ZWK.js";
10
10
  import "./chunk-O3XSFPYH.js";
11
- import "./chunk-CSATDZ3Z.js";
11
+ import "./chunk-IV6GCDVR.js";
12
12
  import "./chunk-5ULLIOVC.js";
13
- import "./chunk-25FKQO3A.js";
13
+ import "./chunk-SMQHEJSH.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-J2M4GOFE.js";
10
- import "./chunk-25FKQO3A.js";
9
+ } from "./chunk-PGHTAKIA.js";
10
+ import "./chunk-SMQHEJSH.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-25FKQO3A.js";
41
+ } from "./chunk-SMQHEJSH.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-UEFVKTAF.js";
5
+ } from "./chunk-3AIR7N5M.js";
6
6
  import "./chunk-QYQI7ZWK.js";
7
- import "./chunk-MSK2BAKT.js";
7
+ import "./chunk-2LLQOMMW.js";
8
8
  import "./chunk-O3XSFPYH.js";
9
- import "./chunk-CSATDZ3Z.js";
9
+ import "./chunk-IV6GCDVR.js";
10
10
  import "./chunk-5ULLIOVC.js";
11
11
  import "./chunk-HOSJZMQS.js";
12
- import "./chunk-25FKQO3A.js";
12
+ import "./chunk-SMQHEJSH.js";
13
13
  import "./chunk-IW3Q7AE5.js";
14
14
  export {
15
15
  formatDoctorReport,
@@ -38,7 +38,7 @@ import {
38
38
  VERSION,
39
39
  buildUserIdentityPrompt,
40
40
  runTestsTool
41
- } from "./chunk-EG5P3AMC.js";
41
+ } from "./chunk-ZPXMT2B6.js";
42
42
  import {
43
43
  hasSemanticIndex,
44
44
  semanticSearch
@@ -16095,7 +16095,7 @@ async function handleSecurityReview(args, ctx) {
16095
16095
  async function handleTest(args, ctx) {
16096
16096
  ctx.send({ type: "info", message: "\u{1F9EA} Running tests..." });
16097
16097
  try {
16098
- const { executeTests } = await import("./run-tests-K36VNQ5W.js");
16098
+ const { executeTests } = await import("./run-tests-EWMU34A4.js");
16099
16099
  const argStr = args.join(" ").trim();
16100
16100
  let testArgs = {};
16101
16101
  if (argStr) {
@@ -154,7 +154,7 @@ ${content}`);
154
154
  }
155
155
  }
156
156
  async function runTaskMode(config, providers, configManager, topic) {
157
- const { TaskOrchestrator } = await import("./task-orchestrator-AJRFTQVB.js");
157
+ const { TaskOrchestrator } = await import("./task-orchestrator-PWXV2EBN.js");
158
158
  const orchestrator = new TaskOrchestrator(config, providers, configManager);
159
159
  let interrupted = false;
160
160
  const onSigint = () => {
package/dist/index.js CHANGED
@@ -14,7 +14,7 @@ import {
14
14
  scanProject,
15
15
  sessionHasMeaningfulContent,
16
16
  setupProxy
17
- } from "./chunk-PTUOWHOH.js";
17
+ } from "./chunk-LXSUPLCK.js";
18
18
  import {
19
19
  buildReviewPrompt,
20
20
  buildSecurityReviewPrompt
@@ -52,7 +52,7 @@ import {
52
52
  theme,
53
53
  undoStack,
54
54
  updateMemoryApproval
55
- } from "./chunk-BTKFZUIJ.js";
55
+ } from "./chunk-GORPFFV4.js";
56
56
  import "./chunk-K3CF65QH.js";
57
57
  import "./chunk-UUSRWSSX.js";
58
58
  import "./chunk-CKH4KQ4E.js";
@@ -74,7 +74,7 @@ import {
74
74
  formatDoctorReport,
75
75
  loadContextFiles,
76
76
  writeCrashLog
77
- } from "./chunk-UEFVKTAF.js";
77
+ } from "./chunk-3AIR7N5M.js";
78
78
  import {
79
79
  ProviderRegistry
80
80
  } from "./chunk-QYQI7ZWK.js";
@@ -94,7 +94,7 @@ import {
94
94
  trustHook,
95
95
  trustPlugin,
96
96
  untrustHook
97
- } from "./chunk-MSK2BAKT.js";
97
+ } from "./chunk-2LLQOMMW.js";
98
98
  import {
99
99
  CONTENT_ONLY_STREAM_REMINDER,
100
100
  TEE_FINAL_USER_NUDGE,
@@ -116,7 +116,7 @@ import {
116
116
  } from "./chunk-O3XSFPYH.js";
117
117
  import {
118
118
  ConfigManager
119
- } from "./chunk-CSATDZ3Z.js";
119
+ } from "./chunk-IV6GCDVR.js";
120
120
  import {
121
121
  AuthError,
122
122
  ProviderError,
@@ -130,7 +130,7 @@ import {
130
130
  import {
131
131
  fileCheckpoints
132
132
  } from "./chunk-4BKXL7SM.js";
133
- import "./chunk-6RU5AKXB.js";
133
+ import "./chunk-NAQPP3GZ.js";
134
134
  import {
135
135
  AGENTIC_BEHAVIOR_GUIDELINE,
136
136
  AUTHOR,
@@ -149,7 +149,7 @@ import {
149
149
  SKILLS_DIR_NAME,
150
150
  VERSION,
151
151
  buildUserIdentityPrompt
152
- } from "./chunk-25FKQO3A.js";
152
+ } from "./chunk-SMQHEJSH.js";
153
153
  import {
154
154
  buildChatIndex,
155
155
  clearChatIndex,
@@ -1370,7 +1370,7 @@ No tools match "${filter}".
1370
1370
  const { join: join6 } = await import("path");
1371
1371
  const { existsSync: existsSync5 } = await import("fs");
1372
1372
  const { getGitRoot: getGitRoot2 } = await import("./git-context-EXOEHQSF.js");
1373
- const { MCP_PROJECT_CONFIG_NAME: MCP_PROJECT_CONFIG_NAME2 } = await import("./constants-3KMOIJNP.js");
1373
+ const { MCP_PROJECT_CONFIG_NAME: MCP_PROJECT_CONFIG_NAME2 } = await import("./constants-RS7OUU7X.js");
1374
1374
  const { approveProject, hashMcpFile } = await import("./project-trust-NKYHL3VZ.js");
1375
1375
  const cwd = process.cwd();
1376
1376
  const projectRoot = getGitRoot2(cwd) ?? cwd;
@@ -2349,7 +2349,7 @@ function createReviewCommands() {
2349
2349
  usage: "/test [command|filter]",
2350
2350
  async execute(args, ctx) {
2351
2351
  try {
2352
- const { executeTests } = await import("./run-tests-GP7ZMSAX.js");
2352
+ const { executeTests } = await import("./run-tests-KEI7IXTB.js");
2353
2353
  const argStr = args.join(" ").trim();
2354
2354
  let testArgs = {};
2355
2355
  if (argStr) {
@@ -7803,7 +7803,7 @@ program.command("web").description("Start Web UI server with browser-based chat
7803
7803
  console.error("Error: Invalid port number. Must be between 1 and 65535.");
7804
7804
  process.exit(1);
7805
7805
  }
7806
- const { startWebServer } = await import("./server-DWQTKBCQ.js");
7806
+ const { startWebServer } = await import("./server-UVS2D4M6.js");
7807
7807
  await startWebServer({ port, host: options.host });
7808
7808
  });
7809
7809
  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) => {
@@ -7970,11 +7970,11 @@ program.command("sessions").description("List recent conversation sessions").opt
7970
7970
  console.log(footer + "\n");
7971
7971
  });
7972
7972
  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) => {
7973
- const { runUsageCli } = await import("./usage-5QO5AFYC.js");
7973
+ const { runUsageCli } = await import("./usage-EDJ6QOWB.js");
7974
7974
  await runUsageCli(options);
7975
7975
  });
7976
7976
  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) => {
7977
- const { runDoctorCli } = await import("./doctor-cli-Q3XR5DQT.js");
7977
+ const { runDoctorCli } = await import("./doctor-cli-TGAW6RAP.js");
7978
7978
  const argv = process.argv.slice(2);
7979
7979
  await runDoctorCli({
7980
7980
  json: !!options.json || argv.includes("--json"),
@@ -7983,7 +7983,7 @@ program.command("doctor").description("Health check: API keys, config, MCP, rece
7983
7983
  });
7984
7984
  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) => {
7985
7985
  try {
7986
- const batch = await import("./batch-S2NUD45K.js");
7986
+ const batch = await import("./batch-K66BLTLJ.js");
7987
7987
  switch (action) {
7988
7988
  case "submit":
7989
7989
  if (!arg) {
@@ -8026,7 +8026,7 @@ program.command("batch <action> [arg] [arg2]").description("Anthropic Message Ba
8026
8026
  }
8027
8027
  });
8028
8028
  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) => {
8029
- const { startMcpServer } = await import("./server-77FK46KF.js");
8029
+ const { startMcpServer } = await import("./server-E545UIX7.js");
8030
8030
  await startMcpServer({
8031
8031
  allowDestructive: !!options.allowDestructive,
8032
8032
  allowOutsideCwd: !!options.allowOutsideCwd,
@@ -8039,7 +8039,7 @@ program.command("pr <action> [target]").description("PR review helpers: review |
8039
8039
  console.error(`Unknown pr action: ${action}. Use review | security-review | summarize.`);
8040
8040
  process.exit(1);
8041
8041
  }
8042
- const { runPrCli } = await import("./pr-RRHV7P7D.js");
8042
+ const { runPrCli } = await import("./pr-TJFKUZ4B.js");
8043
8043
  const result = await runPrCli({
8044
8044
  action,
8045
8045
  target,
@@ -8059,8 +8059,8 @@ program.command("pr <action> [target]").description("PR review helpers: review |
8059
8059
  process.exit(result.exitCode);
8060
8060
  });
8061
8061
  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) => {
8062
- const { runCi } = await import("./ci-HDGRBALH.js");
8063
- const { formatCiResult } = await import("./ci-format-W6DDOFS7.js");
8062
+ const { runCi } = await import("./ci-T2ABDMMQ.js");
8063
+ const { formatCiResult } = await import("./ci-format-S2PPU27O.js");
8064
8064
  const formats = [options.json, options.markdown, options.sarif].filter(Boolean).length;
8065
8065
  if (formats > 1) {
8066
8066
  console.error("Choose only one output format: --json, --markdown, or --sarif.");
@@ -8218,7 +8218,7 @@ program.command("hub [topic]").description("Start multi-agent hub (discuss / bra
8218
8218
  config.get("customProviders"),
8219
8219
  config.getConfigDir()
8220
8220
  );
8221
- const { startHub } = await import("./hub-5TKAR7Y7.js");
8221
+ const { startHub } = await import("./hub-GL5ZU6WS.js");
8222
8222
  await startHub(
8223
8223
  {
8224
8224
  topic: topic ?? "",
@@ -2,8 +2,8 @@
2
2
  import {
3
3
  countSeverity,
4
4
  runCi
5
- } from "./chunk-45TJA46E.js";
6
- import "./chunk-J2M4GOFE.js";
5
+ } from "./chunk-CHFFEVVT.js";
6
+ import "./chunk-PGHTAKIA.js";
7
7
  import {
8
8
  buildReviewPrompt,
9
9
  buildSecurityReviewPrompt,
@@ -15,11 +15,11 @@ import {
15
15
  import "./chunk-O3XSFPYH.js";
16
16
  import {
17
17
  ConfigManager
18
- } from "./chunk-CSATDZ3Z.js";
18
+ } from "./chunk-IV6GCDVR.js";
19
19
  import "./chunk-5ULLIOVC.js";
20
20
  import {
21
21
  VERSION
22
- } from "./chunk-25FKQO3A.js";
22
+ } from "./chunk-SMQHEJSH.js";
23
23
  import "./chunk-IW3Q7AE5.js";
24
24
 
25
25
  // src/cli/pr.ts
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  executeTests,
3
3
  runTestsTool
4
- } from "./chunk-EG5P3AMC.js";
4
+ } from "./chunk-ZPXMT2B6.js";
5
5
  export {
6
6
  executeTests,
7
7
  runTestsTool
@@ -2,8 +2,8 @@
2
2
  import {
3
3
  executeTests,
4
4
  runTestsTool
5
- } from "./chunk-6RU5AKXB.js";
6
- import "./chunk-25FKQO3A.js";
5
+ } from "./chunk-NAQPP3GZ.js";
6
+ import "./chunk-SMQHEJSH.js";
7
7
  export {
8
8
  executeTests,
9
9
  runTestsTool
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ToolRegistry
4
- } from "./chunk-BTKFZUIJ.js";
4
+ } from "./chunk-GORPFFV4.js";
5
5
  import "./chunk-K3CF65QH.js";
6
6
  import "./chunk-UUSRWSSX.js";
7
7
  import "./chunk-CKH4KQ4E.js";
8
8
  import "./chunk-BXP6YZ2P.js";
9
9
  import {
10
10
  runTool
11
- } from "./chunk-MSK2BAKT.js";
11
+ } from "./chunk-2LLQOMMW.js";
12
12
  import {
13
13
  getDangerLevel,
14
14
  schemaToJsonSchema
@@ -16,10 +16,10 @@ import {
16
16
  import "./chunk-5ULLIOVC.js";
17
17
  import "./chunk-HOSJZMQS.js";
18
18
  import "./chunk-4BKXL7SM.js";
19
- import "./chunk-6RU5AKXB.js";
19
+ import "./chunk-NAQPP3GZ.js";
20
20
  import {
21
21
  VERSION
22
- } from "./chunk-25FKQO3A.js";
22
+ } from "./chunk-SMQHEJSH.js";
23
23
  import "./chunk-5MYPIQ3Y.js";
24
24
  import "./chunk-KHYD3WXE.js";
25
25
  import "./chunk-KCEO2XJ4.js";
@@ -23,7 +23,7 @@ import {
23
23
  scanDirTree,
24
24
  scanProject,
25
25
  setupProxy
26
- } from "./chunk-PTUOWHOH.js";
26
+ } from "./chunk-LXSUPLCK.js";
27
27
  import {
28
28
  buildReviewPrompt,
29
29
  buildSecurityReviewPrompt
@@ -67,7 +67,7 @@ import {
67
67
  truncateOutput,
68
68
  undoStack,
69
69
  updateMemoryApproval
70
- } from "./chunk-BTKFZUIJ.js";
70
+ } from "./chunk-GORPFFV4.js";
71
71
  import "./chunk-K3CF65QH.js";
72
72
  import "./chunk-UUSRWSSX.js";
73
73
  import "./chunk-CKH4KQ4E.js";
@@ -85,7 +85,7 @@ import {
85
85
  buildDoctorReport,
86
86
  formatDoctorReport,
87
87
  loadContextFiles
88
- } from "./chunk-UEFVKTAF.js";
88
+ } from "./chunk-3AIR7N5M.js";
89
89
  import {
90
90
  ProviderRegistry
91
91
  } from "./chunk-QYQI7ZWK.js";
@@ -103,7 +103,7 @@ import {
103
103
  runTool,
104
104
  setPluginEnabled,
105
105
  trustPlugin
106
- } from "./chunk-MSK2BAKT.js";
106
+ } from "./chunk-2LLQOMMW.js";
107
107
  import {
108
108
  CONTENT_ONLY_STREAM_REMINDER,
109
109
  TEE_FINAL_USER_NUDGE,
@@ -122,7 +122,7 @@ import {
122
122
  } from "./chunk-O3XSFPYH.js";
123
123
  import {
124
124
  ConfigManager
125
- } from "./chunk-CSATDZ3Z.js";
125
+ } from "./chunk-IV6GCDVR.js";
126
126
  import "./chunk-5ULLIOVC.js";
127
127
  import {
128
128
  formatGitContextForPrompt,
@@ -130,7 +130,7 @@ import {
130
130
  getGitRoot
131
131
  } from "./chunk-HOSJZMQS.js";
132
132
  import "./chunk-4BKXL7SM.js";
133
- import "./chunk-6RU5AKXB.js";
133
+ import "./chunk-NAQPP3GZ.js";
134
134
  import {
135
135
  AGENTIC_BEHAVIOR_GUIDELINE,
136
136
  AUTHOR,
@@ -147,7 +147,7 @@ import {
147
147
  SKILLS_DIR_NAME,
148
148
  VERSION,
149
149
  buildUserIdentityPrompt
150
- } from "./chunk-25FKQO3A.js";
150
+ } from "./chunk-SMQHEJSH.js";
151
151
  import "./chunk-5MYPIQ3Y.js";
152
152
  import "./chunk-KHYD3WXE.js";
153
153
  import {
@@ -1599,7 +1599,7 @@ async function handleSecurityReview(args, ctx) {
1599
1599
  async function handleTest(args, ctx) {
1600
1600
  ctx.send({ type: "info", message: "\u{1F9EA} Running tests..." });
1601
1601
  try {
1602
- const { executeTests } = await import("./run-tests-GP7ZMSAX.js");
1602
+ const { executeTests } = await import("./run-tests-KEI7IXTB.js");
1603
1603
  const argStr = args.join(" ").trim();
1604
1604
  let testArgs = {};
1605
1605
  if (argStr) {
@@ -3,14 +3,14 @@ import {
3
3
  ToolRegistry,
4
4
  googleSearchContext,
5
5
  truncateOutput
6
- } from "./chunk-BTKFZUIJ.js";
6
+ } from "./chunk-GORPFFV4.js";
7
7
  import "./chunk-K3CF65QH.js";
8
8
  import "./chunk-UUSRWSSX.js";
9
9
  import "./chunk-CKH4KQ4E.js";
10
10
  import "./chunk-BXP6YZ2P.js";
11
11
  import {
12
12
  runTool
13
- } from "./chunk-MSK2BAKT.js";
13
+ } from "./chunk-2LLQOMMW.js";
14
14
  import {
15
15
  getDangerLevel,
16
16
  runLeanAgentLoop
@@ -18,10 +18,10 @@ import {
18
18
  import "./chunk-5ULLIOVC.js";
19
19
  import "./chunk-HOSJZMQS.js";
20
20
  import "./chunk-4BKXL7SM.js";
21
- import "./chunk-6RU5AKXB.js";
21
+ import "./chunk-NAQPP3GZ.js";
22
22
  import {
23
23
  SUBAGENT_ALLOWED_TOOLS
24
- } from "./chunk-25FKQO3A.js";
24
+ } from "./chunk-SMQHEJSH.js";
25
25
  import "./chunk-5MYPIQ3Y.js";
26
26
  import "./chunk-KHYD3WXE.js";
27
27
  import "./chunk-KCEO2XJ4.js";
@@ -8,9 +8,9 @@ import {
8
8
  } from "./chunk-E44DTERW.js";
9
9
  import {
10
10
  ConfigManager
11
- } from "./chunk-CSATDZ3Z.js";
11
+ } from "./chunk-IV6GCDVR.js";
12
12
  import "./chunk-5ULLIOVC.js";
13
- import "./chunk-25FKQO3A.js";
13
+ import "./chunk-SMQHEJSH.js";
14
14
  import "./chunk-IW3Q7AE5.js";
15
15
 
16
16
  // src/cli/usage.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jinzd-ai-cli",
3
- "version": "0.4.239",
3
+ "version": "0.4.241",
4
4
  "description": "Cross-platform REPL-style AI CLI with multi-provider support",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",