jinzd-ai-cli 0.4.262 → 0.4.263

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 (39) hide show
  1. package/README.md +19 -14
  2. package/README.zh-CN.md +21 -16
  3. package/THIRD_PARTY_NOTICES.md +88 -0
  4. package/dist/{batch-2B7UUX27.js → batch-AN47AYCZ.js} +2 -2
  5. package/dist/{chunk-XZNRZGG2.js → chunk-3OBY7WSS.js} +1 -0
  6. package/dist/{chunk-ZQZEBPAQ.js → chunk-3RHY2HF7.js} +1 -1
  7. package/dist/{chunk-JFXKQPKY.js → chunk-5K2LFD7D.js} +1 -1
  8. package/dist/{chunk-BS44XEZ4.js → chunk-7YCA2BD3.js} +1 -1
  9. package/dist/{chunk-FWBSGBB7.js → chunk-B27MLWFJ.js} +4 -4
  10. package/dist/{chunk-D6DHS5GL.js → chunk-GKI7B4BD.js} +7 -6
  11. package/dist/{chunk-2XPJRRBB.js → chunk-GMZTY7DA.js} +4 -4
  12. package/dist/{chunk-WAAFA32V.js → chunk-MJICIIBW.js} +1 -1
  13. package/dist/{chunk-A6JLBNAI.js → chunk-MTZ6XHJD.js} +2 -2
  14. package/dist/{chunk-DQY2DDGS.js → chunk-QG4NG7KJ.js} +1 -1
  15. package/dist/{chunk-JEJHNVA2.js → chunk-QMB7QYZC.js} +1 -1
  16. package/dist/{chunk-25HFWCM3.js → chunk-TL5MD5XU.js} +31 -19
  17. package/dist/{chunk-KWYJFLXY.js → chunk-VKBGOFEO.js} +1 -1
  18. package/dist/{chunk-KMS3LBO3.js → chunk-VUZAKIZ5.js} +1 -1
  19. package/dist/{chunk-MTIS7H6V.js → chunk-WM4VTGAF.js} +3 -1
  20. package/dist/{chunk-HPDI4F5F.js → chunk-XST4N2JM.js} +1 -1
  21. package/dist/{chunk-EZ6QLHOS.js → chunk-YRD6M5XI.js} +30 -5
  22. package/dist/{ci-G6OZDH4H.js → ci-JTO7LN5S.js} +6 -6
  23. package/dist/{ci-format-BRS7G5X5.js → ci-format-2VGHOLBA.js} +2 -2
  24. package/dist/{constants-24AD5JQV.js → constants-HLSJL5HQ.js} +1 -1
  25. package/dist/{doctor-cli-WWZRFGQJ.js → doctor-cli-JML4FGH4.js} +6 -6
  26. package/dist/electron-server.js +94 -34
  27. package/dist/{hub-2DYZQVEN.js → hub-6EYFGJRT.js} +1 -1
  28. package/dist/index.js +103 -56
  29. package/dist/{persistent-memory-DFSZZSYP.js → persistent-memory-ANIMO5CF.js} +2 -2
  30. package/dist/{persistent-memory-LJT37XVO.js → persistent-memory-MPBPSZDN.js} +2 -2
  31. package/dist/{pr-OOIQPCBX.js → pr-XE7NGT6U.js} +6 -6
  32. package/dist/{run-tests-ICTVJSJN.js → run-tests-ME5KED57.js} +2 -2
  33. package/dist/{run-tests-W4TG4OQV.js → run-tests-TF7UPUWW.js} +2 -2
  34. package/dist/{server-GTVYIHBG.js → server-BIYJEJK3.js} +6 -6
  35. package/dist/{server-IXUVVPTV.js → server-VKA4FR2Z.js} +37 -18
  36. package/dist/{task-orchestrator-6MHSDOFR.js → task-orchestrator-2RAKLFWN.js} +6 -6
  37. package/dist/{usage-23I3ZJZO.js → usage-5F5Q3GGR.js} +4 -4
  38. package/dist/web/client/app.js +1 -1
  39. package/package.json +13 -10
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  CostTracker
4
- } from "./chunk-DQY2DDGS.js";
4
+ } from "./chunk-QG4NG7KJ.js";
5
5
  import {
6
6
  McpManager,
7
7
  SNAPSHOT_PROMPT,
@@ -17,12 +17,12 @@ import {
17
17
  scanProject,
18
18
  sessionHasMeaningfulContent,
19
19
  setupProxy
20
- } from "./chunk-A6JLBNAI.js";
20
+ } from "./chunk-MTZ6XHJD.js";
21
21
  import {
22
22
  computeCost,
23
23
  formatCost,
24
24
  getPricing
25
- } from "./chunk-EZ6QLHOS.js";
25
+ } from "./chunk-YRD6M5XI.js";
26
26
  import {
27
27
  buildReviewPrompt,
28
28
  buildSecurityReviewPrompt
@@ -50,7 +50,7 @@ import {
50
50
  spawnAgentContext,
51
51
  theme,
52
52
  undoStack
53
- } from "./chunk-D6DHS5GL.js";
53
+ } from "./chunk-GKI7B4BD.js";
54
54
  import {
55
55
  addMemoryEntry,
56
56
  backupMemoryStore,
@@ -76,7 +76,7 @@ import {
76
76
  touchMemoryReferences,
77
77
  updateMemoryApproval,
78
78
  updateMemoryEntry
79
- } from "./chunk-KMS3LBO3.js";
79
+ } from "./chunk-VUZAKIZ5.js";
80
80
  import "./chunk-GLSR2NR3.js";
81
81
  import "./chunk-UUSRWSSX.js";
82
82
  import "./chunk-CKH4KQ4E.js";
@@ -90,14 +90,14 @@ import {
90
90
  formatDoctorReport,
91
91
  loadContextFiles,
92
92
  writeCrashLog
93
- } from "./chunk-FWBSGBB7.js";
93
+ } from "./chunk-B27MLWFJ.js";
94
94
  import {
95
95
  ProviderRegistry,
96
96
  listBuiltInProviderMetadata
97
- } from "./chunk-25HFWCM3.js";
97
+ } from "./chunk-TL5MD5XU.js";
98
98
  import {
99
99
  ConfigManager
100
- } from "./chunk-MTIS7H6V.js";
100
+ } from "./chunk-WM4VTGAF.js";
101
101
  import {
102
102
  describePlugin,
103
103
  getActivePluginAssets,
@@ -114,7 +114,7 @@ import {
114
114
  trustHook,
115
115
  trustPlugin,
116
116
  untrustHook
117
- } from "./chunk-JEJHNVA2.js";
117
+ } from "./chunk-QMB7QYZC.js";
118
118
  import {
119
119
  CONTENT_ONLY_STREAM_REMINDER,
120
120
  TEE_FINAL_USER_NUDGE,
@@ -134,7 +134,7 @@ import {
134
134
  stripOuterCodeFence,
135
135
  stripToolCallReminder,
136
136
  teeStreamErrorSummary
137
- } from "./chunk-XZNRZGG2.js";
137
+ } from "./chunk-3OBY7WSS.js";
138
138
  import {
139
139
  AuthError,
140
140
  ProviderError,
@@ -148,7 +148,7 @@ import {
148
148
  import {
149
149
  fileCheckpoints
150
150
  } from "./chunk-4BKXL7SM.js";
151
- import "./chunk-HPDI4F5F.js";
151
+ import "./chunk-XST4N2JM.js";
152
152
  import {
153
153
  AGENTIC_BEHAVIOR_GUIDELINE,
154
154
  AUTHOR,
@@ -167,7 +167,7 @@ import {
167
167
  SKILLS_DIR_NAME,
168
168
  VERSION,
169
169
  buildUserIdentityPrompt
170
- } from "./chunk-KWYJFLXY.js";
170
+ } from "./chunk-VKBGOFEO.js";
171
171
  import {
172
172
  buildChatIndex,
173
173
  clearChatIndex,
@@ -1139,21 +1139,28 @@ function createProviderCommands() {
1139
1139
  {
1140
1140
  name: "think",
1141
1141
  description: "Toggle Extended Thinking mode (deep reasoning for supported models)",
1142
- usage: "/think [on|off|status]",
1142
+ usage: "/think [on|off|low|high|max|status]",
1143
1143
  execute(args, ctx) {
1144
1144
  const sub = args[0]?.toLowerCase() ?? "toggle";
1145
1145
  if (sub === "on") {
1146
1146
  ctx.setThinkingMode(true);
1147
1147
  ctx.renderer.printSuccess("Extended Thinking enabled \u{1F4AD}");
1148
1148
  console.log(theme.dim(" AI will now use deep reasoning before answering."));
1149
- console.log(theme.dim(" Supported: Claude Sonnet 4.5, Claude Opus 4.6, GLM-5"));
1149
+ console.log(theme.dim(" Supported: DeepSeek V4, Claude Sonnet/Opus, GLM-5"));
1150
1150
  console.log(theme.dim(" Use /think off to disable."));
1151
1151
  console.log();
1152
1152
  return;
1153
1153
  }
1154
1154
  if (sub === "off") {
1155
- ctx.setThinkingMode(null);
1156
- ctx.renderer.printSuccess("Extended Thinking disabled \u2014 using config default.");
1155
+ ctx.setThinkingMode(false);
1156
+ ctx.renderer.printSuccess("Extended Thinking disabled.");
1157
+ console.log();
1158
+ return;
1159
+ }
1160
+ if (sub === "low" || sub === "high" || sub === "max") {
1161
+ ctx.setThinkingMode(true);
1162
+ ctx.setThinkingEffort(sub);
1163
+ ctx.renderer.printSuccess(`Extended Thinking enabled (effort: ${sub}).`);
1157
1164
  console.log();
1158
1165
  return;
1159
1166
  }
@@ -1161,13 +1168,14 @@ function createProviderCommands() {
1161
1168
  const mode = ctx.getThinkingMode();
1162
1169
  const label = mode === true ? theme.accent("ON (runtime override)") : mode === false ? theme.dim("OFF (runtime override)") : theme.dim("using config value");
1163
1170
  console.log(` Extended Thinking: ${label}`);
1171
+ console.log(` Reasoning effort: ${ctx.getThinkingEffort() ?? "using config/default (high for DeepSeek V4)"}`);
1164
1172
  console.log();
1165
1173
  return;
1166
1174
  }
1167
1175
  const current = ctx.getThinkingMode();
1168
1176
  if (current === true) {
1169
- ctx.setThinkingMode(null);
1170
- ctx.renderer.printSuccess("Extended Thinking disabled \u2014 using config default.");
1177
+ ctx.setThinkingMode(false);
1178
+ ctx.renderer.printSuccess("Extended Thinking disabled.");
1171
1179
  } else {
1172
1180
  ctx.setThinkingMode(true);
1173
1181
  ctx.renderer.printSuccess("Extended Thinking enabled \u{1F4AD}");
@@ -1399,7 +1407,7 @@ No tools match "${filter}".
1399
1407
  const { join: join6 } = await import("path");
1400
1408
  const { existsSync: existsSync6 } = await import("fs");
1401
1409
  const { getGitRoot: getGitRoot2 } = await import("./git-context-EXOEHQSF.js");
1402
- const { MCP_PROJECT_CONFIG_NAME: MCP_PROJECT_CONFIG_NAME2 } = await import("./constants-24AD5JQV.js");
1410
+ const { MCP_PROJECT_CONFIG_NAME: MCP_PROJECT_CONFIG_NAME2 } = await import("./constants-HLSJL5HQ.js");
1403
1411
  const { approveProject, hashMcpFile } = await import("./project-trust-NKYHL3VZ.js");
1404
1412
  const cwd = process.cwd();
1405
1413
  const projectRoot = getGitRoot2(cwd) ?? cwd;
@@ -2387,7 +2395,7 @@ function createReviewCommands() {
2387
2395
  usage: "/test [command|filter]",
2388
2396
  async execute(args, ctx) {
2389
2397
  try {
2390
- const { executeTests } = await import("./run-tests-ICTVJSJN.js");
2398
+ const { executeTests } = await import("./run-tests-ME5KED57.js");
2391
2399
  const argStr = args.join(" ").trim();
2392
2400
  let testArgs = {};
2393
2401
  if (argStr) {
@@ -3943,7 +3951,7 @@ function createMiscCommands() {
3943
3951
  ["/provider <name>", "Switch AI provider"],
3944
3952
  ["/model [name|refresh|cache]", "Switch model or refresh live model cache"],
3945
3953
  ["/route [on|off|show|test <msg>]", "Smart model routing rules"],
3946
- ["/think [on|off|status]", "Toggle Extended Thinking (deep reasoning)"],
3954
+ ["/think [on|off|low|high|max|status]", "Control Extended Thinking and effort"],
3947
3955
  ["/plan [execute|exit|status]", "Enter/manage Plan Mode (read-only)"],
3948
3956
  ["/auto [on|off|status]", "Rule-based low-risk auto approval"],
3949
3957
  ["/permissions recently-denied|clear-denied", "Inspect permission and Auto Mode decisions"],
@@ -5301,6 +5309,49 @@ function writeStartupNotice(line, promptShown, redraw) {
5301
5309
  }
5302
5310
  }
5303
5311
 
5312
+ // src/repl/unicode-backspace.ts
5313
+ function removePreviousGrapheme(line, cursor) {
5314
+ if (cursor <= 0) return { line, cursor };
5315
+ const prefix = line.slice(0, cursor);
5316
+ let start = 0;
5317
+ const segmenter = new Intl.Segmenter(void 0, { granularity: "grapheme" });
5318
+ for (const segment of segmenter.segment(prefix)) start = segment.index;
5319
+ return {
5320
+ line: line.slice(0, start) + line.slice(cursor),
5321
+ cursor: start
5322
+ };
5323
+ }
5324
+ function installUnicodeBackspaceRepair(input2, rl, shouldHandle = () => true) {
5325
+ const editable = rl;
5326
+ let previous = { line: editable.line, cursor: editable.cursor };
5327
+ const onKeypress = (_character, key) => {
5328
+ const current = { line: editable.line, cursor: editable.cursor };
5329
+ if (key?.name === "backspace" && shouldHandle() && previous.cursor > 0 && current.line === previous.line && current.cursor === previous.cursor) {
5330
+ const repaired = removePreviousGrapheme(current.line, current.cursor);
5331
+ editable.line = repaired.line;
5332
+ editable.cursor = repaired.cursor;
5333
+ editable._refreshLine?.();
5334
+ previous = repaired;
5335
+ return;
5336
+ }
5337
+ previous = current;
5338
+ };
5339
+ input2.on("keypress", onKeypress);
5340
+ return () => input2.off("keypress", onKeypress);
5341
+ }
5342
+
5343
+ // src/repl/chat-params.ts
5344
+ function chatParamsFrom(params) {
5345
+ return {
5346
+ temperature: params.temperature,
5347
+ maxTokens: params.maxTokens,
5348
+ timeout: params.timeout,
5349
+ thinking: params.thinking,
5350
+ thinkingEffort: params.thinkingEffort,
5351
+ thinkingBudget: params.thinkingBudget
5352
+ };
5353
+ }
5354
+
5304
5355
  // src/core/model-router.ts
5305
5356
  var TAG_REGEX = /(?:^|\s)#([a-zA-Z][\w-]{0,31})\b/g;
5306
5357
  function extractTags(message) {
@@ -5651,6 +5702,7 @@ var Repl = class {
5651
5702
  running = false;
5652
5703
  /** 是否已注册 bracketed-paste 的 process.exit 还原钩子(只注册一次) */
5653
5704
  bracketedPasteRestoreHooked = false;
5705
+ disposeUnicodeBackspaceRepair = null;
5654
5706
  renderer;
5655
5707
  commands;
5656
5708
  toolRegistry;
@@ -6108,7 +6160,7 @@ ${ctxLine}` : "")
6108
6160
  const skillTag = activeSkill ? theme.toolCall(`[${activeSkill.meta.name}]`) : "";
6109
6161
  const planTag = this.planMode ? theme.warning("[PLAN]") : "";
6110
6162
  const modelParams = this.getModelParams();
6111
- const thinkTag = modelParams.thinking ? theme.accent("[THINK]") : "";
6163
+ const thinkTag = modelParams.thinking ? theme.accent(`[THINK:${modelParams.thinkingEffort ?? "high"}]`) : "";
6112
6164
  const promptStr = theme.success(`[${this.currentProvider}]`) + skillTag + planTag + thinkTag + chalk5.white(" > ");
6113
6165
  this.rl.setPrompt(promptStr);
6114
6166
  }
@@ -6403,6 +6455,11 @@ Session '${this.resumeSessionId}' not found.
6403
6455
  }
6404
6456
  }
6405
6457
  this.setupClipboardPaste();
6458
+ this.disposeUnicodeBackspaceRepair = installUnicodeBackspaceRepair(
6459
+ process.stdin,
6460
+ this.rl,
6461
+ () => !this.streamAbortController && !this.toolExecutor.confirming && !askUserContext.prompting && !this.selecting
6462
+ );
6406
6463
  this.enableBracketedPaste();
6407
6464
  this.rl.on("SIGINT", () => {
6408
6465
  if (this.streamAbortController) {
@@ -6647,6 +6704,7 @@ Session '${this.resumeSessionId}' not found.
6647
6704
  */
6648
6705
  /** 运行时 thinking 模式覆盖:null=使用配置值,true/false=运行时覆盖 */
6649
6706
  runtimeThinking = null;
6707
+ runtimeThinkingEffort = null;
6650
6708
  getModelParams(modelOverride) {
6651
6709
  const allParams = this.config.get("modelParams");
6652
6710
  const modelId = modelOverride ?? this.currentModel;
@@ -6655,6 +6713,7 @@ Session '${this.resumeSessionId}' not found.
6655
6713
  ...params,
6656
6714
  maxTokens: params.maxTokens ?? DEFAULT_MAX_TOKENS,
6657
6715
  thinking: this.runtimeThinking ?? params.thinking,
6716
+ thinkingEffort: this.runtimeThinkingEffort ?? params.thinkingEffort,
6658
6717
  thinkingBudget: params.thinkingBudget
6659
6718
  };
6660
6719
  }
@@ -7074,11 +7133,7 @@ Session '${this.resumeSessionId}' not found.
7074
7133
  systemPrompt: chatStable,
7075
7134
  systemPromptVolatile: chatVolatile,
7076
7135
  stream: true,
7077
- temperature: modelParams.temperature,
7078
- maxTokens: modelParams.maxTokens,
7079
- timeout: modelParams.timeout,
7080
- thinking: modelParams.thinking,
7081
- thinkingBudget: modelParams.thinkingBudget,
7136
+ ...chatParamsFrom(modelParams),
7082
7137
  signal: ac.signal
7083
7138
  });
7084
7139
  const showTokens = this.shouldShowTokens();
@@ -7109,11 +7164,7 @@ Session '${this.resumeSessionId}' not found.
7109
7164
  systemPrompt: chatStable,
7110
7165
  systemPromptVolatile: chatVolatile,
7111
7166
  stream: false,
7112
- temperature: modelParams.temperature,
7113
- maxTokens: modelParams.maxTokens,
7114
- timeout: modelParams.timeout,
7115
- thinking: modelParams.thinking,
7116
- thinkingBudget: modelParams.thinkingBudget
7167
+ ...chatParamsFrom(modelParams)
7117
7168
  });
7118
7169
  spinner.stop();
7119
7170
  this.renderer.renderResponse(response.content);
@@ -7248,11 +7299,7 @@ ${mcpBudgetNote}` : "");
7248
7299
  systemPrompt,
7249
7300
  systemPromptVolatile,
7250
7301
  stream: false,
7251
- temperature: modelParams.temperature,
7252
- maxTokens: modelParams.maxTokens,
7253
- timeout: modelParams.timeout,
7254
- thinking: modelParams.thinking,
7255
- thinkingBudget: modelParams.thinkingBudget,
7302
+ ...chatParamsFrom(modelParams),
7256
7303
  ...extraMessages.length > 0 ? { _extraMessages: extraMessages } : {}
7257
7304
  };
7258
7305
  const fallbackOpts = this.getFallbackOptions(spinner);
@@ -7320,11 +7367,7 @@ ${mcpBudgetNote}` : "");
7320
7367
  systemPrompt,
7321
7368
  systemPromptVolatile,
7322
7369
  stream: false,
7323
- temperature: modelParams.temperature,
7324
- maxTokens: modelParams.maxTokens,
7325
- timeout: modelParams.timeout,
7326
- thinking: modelParams.thinking,
7327
- thinkingBudget: modelParams.thinkingBudget,
7370
+ ...chatParamsFrom(modelParams),
7328
7371
  signal,
7329
7372
  _extraMessages: summaryExtra
7330
7373
  },
@@ -7687,11 +7730,7 @@ Tip: You can continue the conversation by asking the AI to proceed.`
7687
7730
  systemPrompt: teeSystemPrompt,
7688
7731
  systemPromptVolatile,
7689
7732
  stream: true,
7690
- temperature: modelParams.temperature,
7691
- maxTokens: modelParams.maxTokens,
7692
- timeout: modelParams.timeout,
7693
- thinking: modelParams.thinking,
7694
- thinkingBudget: modelParams.thinkingBudget,
7733
+ ...chatParamsFrom(modelParams),
7695
7734
  signal: teeAc.signal,
7696
7735
  _extraMessages: teeExtraMessages
7697
7736
  });
@@ -7938,6 +7977,11 @@ Tip: You can continue the conversation by asking the AI to proceed.`
7938
7977
  this.runtimeThinking = value;
7939
7978
  this.refreshPrompt();
7940
7979
  },
7980
+ getThinkingEffort: () => this.runtimeThinkingEffort,
7981
+ setThinkingEffort: (value) => {
7982
+ this.runtimeThinkingEffort = value;
7983
+ this.refreshPrompt();
7984
+ },
7941
7985
  getMcpManager: () => this.mcpManager,
7942
7986
  getMcpServerSource: (serverId) => this.mcpServerSources.get(serverId),
7943
7987
  chatOnce: async (prompt, options) => {
@@ -7950,6 +7994,7 @@ Tip: You can continue the conversation by asking the AI to proceed.`
7950
7994
  systemPrompt: coStable,
7951
7995
  systemPromptVolatile: coVolatile,
7952
7996
  stream: false,
7997
+ ...chatParamsFrom(modelParams),
7953
7998
  temperature: options?.temperature ?? 0.3,
7954
7999
  maxTokens: options?.maxTokens ?? modelParams.maxTokens ?? 4096,
7955
8000
  timeout: modelParams.timeout ?? 6e4
@@ -8013,6 +8058,8 @@ Tip: You can continue the conversation by asking the AI to proceed.`
8013
8058
  `);
8014
8059
  });
8015
8060
  this.disableBracketedPaste();
8061
+ this.disposeUnicodeBackspaceRepair?.();
8062
+ this.disposeUnicodeBackspaceRepair = null;
8016
8063
  this.rl.close();
8017
8064
  console.log(theme.dim("\nGoodbye!"));
8018
8065
  process.exit(0);
@@ -8115,7 +8162,7 @@ program.command("web").description("Start Web UI server with browser-based chat
8115
8162
  console.error("Error: Invalid port number. Must be between 1 and 65535.");
8116
8163
  process.exit(1);
8117
8164
  }
8118
- const { startWebServer } = await import("./server-IXUVVPTV.js");
8165
+ const { startWebServer } = await import("./server-VKA4FR2Z.js");
8119
8166
  await startWebServer({ port, host: options.host });
8120
8167
  });
8121
8168
  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) => {
@@ -8282,11 +8329,11 @@ program.command("sessions").description("List recent conversation sessions").opt
8282
8329
  console.log(footer + "\n");
8283
8330
  });
8284
8331
  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) => {
8285
- const { runUsageCli } = await import("./usage-23I3ZJZO.js");
8332
+ const { runUsageCli } = await import("./usage-5F5Q3GGR.js");
8286
8333
  await runUsageCli(options);
8287
8334
  });
8288
8335
  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) => {
8289
- const { runDoctorCli } = await import("./doctor-cli-WWZRFGQJ.js");
8336
+ const { runDoctorCli } = await import("./doctor-cli-JML4FGH4.js");
8290
8337
  const argv = process.argv.slice(2);
8291
8338
  await runDoctorCli({
8292
8339
  json: !!options.json || argv.includes("--json"),
@@ -8295,7 +8342,7 @@ program.command("doctor").description("Health check: API keys, config, MCP, rece
8295
8342
  });
8296
8343
  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) => {
8297
8344
  try {
8298
- const batch = await import("./batch-2B7UUX27.js");
8345
+ const batch = await import("./batch-AN47AYCZ.js");
8299
8346
  switch (action) {
8300
8347
  case "submit":
8301
8348
  if (!arg) {
@@ -8338,7 +8385,7 @@ program.command("batch <action> [arg] [arg2]").description("Anthropic Message Ba
8338
8385
  }
8339
8386
  });
8340
8387
  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) => {
8341
- const { startMcpServer } = await import("./server-GTVYIHBG.js");
8388
+ const { startMcpServer } = await import("./server-BIYJEJK3.js");
8342
8389
  await startMcpServer({
8343
8390
  allowDestructive: !!options.allowDestructive,
8344
8391
  allowOutsideCwd: !!options.allowOutsideCwd,
@@ -8351,7 +8398,7 @@ program.command("pr <action> [target]").description("PR review helpers: review |
8351
8398
  console.error(`Unknown pr action: ${action}. Use review | security-review | summarize.`);
8352
8399
  process.exit(1);
8353
8400
  }
8354
- const { runPrCli } = await import("./pr-OOIQPCBX.js");
8401
+ const { runPrCli } = await import("./pr-XE7NGT6U.js");
8355
8402
  const result = await runPrCli({
8356
8403
  action,
8357
8404
  target,
@@ -8371,8 +8418,8 @@ program.command("pr <action> [target]").description("PR review helpers: review |
8371
8418
  process.exit(result.exitCode);
8372
8419
  });
8373
8420
  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) => {
8374
- const { runCi } = await import("./ci-G6OZDH4H.js");
8375
- const { formatCiResult } = await import("./ci-format-BRS7G5X5.js");
8421
+ const { runCi } = await import("./ci-JTO7LN5S.js");
8422
+ const { formatCiResult } = await import("./ci-format-2VGHOLBA.js");
8376
8423
  const formats = [options.json, options.markdown, options.sarif].filter(Boolean).length;
8377
8424
  if (formats > 1) {
8378
8425
  console.error("Choose only one output format: --json, --markdown, or --sarif.");
@@ -8530,7 +8577,7 @@ program.command("hub [topic]").description("Start multi-agent hub (discuss / bra
8530
8577
  config.get("customProviders"),
8531
8578
  config.getConfigDir()
8532
8579
  );
8533
- const { startHub } = await import("./hub-2DYZQVEN.js");
8580
+ const { startHub } = await import("./hub-6EYFGJRT.js");
8534
8581
  await startHub(
8535
8582
  {
8536
8583
  topic: topic ?? "",
@@ -27,9 +27,9 @@ import {
27
27
  touchMemoryReferences,
28
28
  updateMemoryApproval,
29
29
  updateMemoryEntry
30
- } from "./chunk-JFXKQPKY.js";
30
+ } from "./chunk-5K2LFD7D.js";
31
31
  import "./chunk-YVTASHS5.js";
32
- import "./chunk-ZQZEBPAQ.js";
32
+ import "./chunk-3RHY2HF7.js";
33
33
  import "./chunk-6BUTA5VW.js";
34
34
  export {
35
35
  addMemoryEntry,
@@ -28,9 +28,9 @@ import {
28
28
  touchMemoryReferences,
29
29
  updateMemoryApproval,
30
30
  updateMemoryEntry
31
- } from "./chunk-KMS3LBO3.js";
31
+ } from "./chunk-VUZAKIZ5.js";
32
32
  import "./chunk-HOSJZMQS.js";
33
- import "./chunk-KWYJFLXY.js";
33
+ import "./chunk-VKBGOFEO.js";
34
34
  import "./chunk-B5TYJO7V.js";
35
35
  import "./chunk-IW3Q7AE5.js";
36
36
  export {
@@ -2,8 +2,8 @@
2
2
  import {
3
3
  countSeverity,
4
4
  runCi
5
- } from "./chunk-2XPJRRBB.js";
6
- import "./chunk-WAAFA32V.js";
5
+ } from "./chunk-GMZTY7DA.js";
6
+ import "./chunk-MJICIIBW.js";
7
7
  import {
8
8
  buildReviewPrompt,
9
9
  buildSecurityReviewPrompt,
@@ -11,15 +11,15 @@ import {
11
11
  } from "./chunk-HLWUDRBO.js";
12
12
  import {
13
13
  ProviderRegistry
14
- } from "./chunk-25HFWCM3.js";
14
+ } from "./chunk-TL5MD5XU.js";
15
15
  import {
16
16
  ConfigManager
17
- } from "./chunk-MTIS7H6V.js";
18
- import "./chunk-XZNRZGG2.js";
17
+ } from "./chunk-WM4VTGAF.js";
18
+ import "./chunk-3OBY7WSS.js";
19
19
  import "./chunk-TU3L3PW7.js";
20
20
  import {
21
21
  VERSION
22
- } from "./chunk-KWYJFLXY.js";
22
+ } from "./chunk-VKBGOFEO.js";
23
23
  import "./chunk-IW3Q7AE5.js";
24
24
 
25
25
  // src/cli/pr.ts
@@ -2,8 +2,8 @@
2
2
  import {
3
3
  executeTests,
4
4
  runTestsTool
5
- } from "./chunk-HPDI4F5F.js";
6
- import "./chunk-KWYJFLXY.js";
5
+ } from "./chunk-XST4N2JM.js";
6
+ import "./chunk-VKBGOFEO.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-BS44XEZ4.js";
5
- import "./chunk-ZQZEBPAQ.js";
4
+ } from "./chunk-7YCA2BD3.js";
5
+ import "./chunk-3RHY2HF7.js";
6
6
  export {
7
7
  executeTests,
8
8
  runTestsTool
@@ -1,26 +1,26 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ToolRegistry
4
- } from "./chunk-D6DHS5GL.js";
5
- import "./chunk-KMS3LBO3.js";
4
+ } from "./chunk-GKI7B4BD.js";
5
+ import "./chunk-VUZAKIZ5.js";
6
6
  import "./chunk-GLSR2NR3.js";
7
7
  import "./chunk-UUSRWSSX.js";
8
8
  import "./chunk-CKH4KQ4E.js";
9
9
  import "./chunk-BXP6YZ2P.js";
10
10
  import {
11
11
  runTool
12
- } from "./chunk-JEJHNVA2.js";
12
+ } from "./chunk-QMB7QYZC.js";
13
13
  import {
14
14
  getDangerLevel,
15
15
  schemaToJsonSchema
16
- } from "./chunk-XZNRZGG2.js";
16
+ } from "./chunk-3OBY7WSS.js";
17
17
  import "./chunk-TU3L3PW7.js";
18
18
  import "./chunk-HOSJZMQS.js";
19
19
  import "./chunk-4BKXL7SM.js";
20
- import "./chunk-HPDI4F5F.js";
20
+ import "./chunk-XST4N2JM.js";
21
21
  import {
22
22
  VERSION
23
- } from "./chunk-KWYJFLXY.js";
23
+ } from "./chunk-VKBGOFEO.js";
24
24
  import "./chunk-6RPGQ5CG.js";
25
25
  import "./chunk-KHYD3WXE.js";
26
26
  import "./chunk-NYNSYLFY.js";