jinzd-ai-cli 0.4.121 → 0.4.122

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.
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ConfigManager
4
- } from "./chunk-N6A47HVC.js";
4
+ } from "./chunk-JZDDHOG5.js";
5
5
  import "./chunk-2ZD3YTVM.js";
6
- import "./chunk-4FBL3RIZ.js";
6
+ import "./chunk-TGFINUHW.js";
7
7
  import "./chunk-PDX44BCA.js";
8
8
 
9
9
  // src/cli/batch.ts
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  CONFIG_DIR_NAME
4
- } from "./chunk-4FBL3RIZ.js";
4
+ } from "./chunk-TGFINUHW.js";
5
5
 
6
6
  // src/diagnostics/tool-stats.ts
7
7
  import { existsSync, readFileSync, writeFileSync, mkdirSync, renameSync } from "fs";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  TEST_TIMEOUT
4
- } from "./chunk-4FBL3RIZ.js";
4
+ } from "./chunk-TGFINUHW.js";
5
5
 
6
6
  // src/tools/builtin/run-tests.ts
7
7
  import { execSync, spawnSync } from "child_process";
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  CONFIG_DIR_NAME,
4
4
  VERSION
5
- } from "./chunk-4FBL3RIZ.js";
5
+ } from "./chunk-TGFINUHW.js";
6
6
 
7
7
  // src/diagnostics/crash-log.ts
8
8
  import {
@@ -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.121";
9
+ var VERSION = "0.4.122";
10
10
  var APP_NAME = "ai-cli";
11
11
  var CONFIG_DIR_NAME = ".aicli";
12
12
  var CONFIG_FILE_NAME = "config.json";
@@ -8,7 +8,7 @@ import {
8
8
  CONFIG_FILE_NAME,
9
9
  HISTORY_DIR_NAME,
10
10
  PLUGINS_DIR_NAME
11
- } from "./chunk-4FBL3RIZ.js";
11
+ } from "./chunk-TGFINUHW.js";
12
12
 
13
13
  // src/config/config-manager.ts
14
14
  import { readFileSync, writeFileSync, existsSync, mkdirSync } from "fs";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  truncateForPersist
4
- } from "./chunk-DDHU6VOW.js";
4
+ } from "./chunk-TLDIOFCH.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-4FBL3RIZ.js";
14
+ } from "./chunk-TGFINUHW.js";
15
15
  import {
16
16
  redactJson
17
17
  } from "./chunk-7ZJN4KLV.js";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  // src/core/constants.ts
4
- var VERSION = "0.4.121";
4
+ var VERSION = "0.4.122";
5
5
  var APP_NAME = "ai-cli";
6
6
  var CONFIG_DIR_NAME = ".aicli";
7
7
  var CONFIG_FILE_NAME = "config.json";
@@ -5,12 +5,12 @@ import {
5
5
  } from "./chunk-3BICTI5M.js";
6
6
  import {
7
7
  runTestsTool
8
- } from "./chunk-TZRYEWXW.js";
8
+ } from "./chunk-B5M3E7F5.js";
9
9
  import {
10
10
  getDangerLevel,
11
11
  isFileWriteTool,
12
12
  runTool
13
- } from "./chunk-KAEHWVMV.js";
13
+ } from "./chunk-4GB6EG2Y.js";
14
14
  import {
15
15
  EnvLoader,
16
16
  NetworkError,
@@ -23,7 +23,7 @@ import {
23
23
  SUBAGENT_ALLOWED_TOOLS,
24
24
  SUBAGENT_DEFAULT_MAX_ROUNDS,
25
25
  SUBAGENT_MAX_ROUNDS_LIMIT
26
- } from "./chunk-4FBL3RIZ.js";
26
+ } from "./chunk-TGFINUHW.js";
27
27
  import {
28
28
  fileCheckpoints
29
29
  } from "./chunk-4BKXL7SM.js";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  schemaToJsonSchema
4
- } from "./chunk-KAEHWVMV.js";
4
+ } from "./chunk-4GB6EG2Y.js";
5
5
  import {
6
6
  AuthError,
7
7
  ProviderError,
@@ -36,7 +36,7 @@ import {
36
36
  TEST_TIMEOUT,
37
37
  VERSION,
38
38
  buildUserIdentityPrompt
39
- } from "./chunk-4FBL3RIZ.js";
39
+ } from "./chunk-TGFINUHW.js";
40
40
  import "./chunk-PDX44BCA.js";
41
41
  export {
42
42
  AGENTIC_BEHAVIOR_GUIDELINE,
@@ -2,25 +2,25 @@
2
2
  import {
3
3
  getConfigDirUsage,
4
4
  listRecentCrashes
5
- } from "./chunk-J2PDFSAC.js";
5
+ } from "./chunk-EYQZSLJR.js";
6
6
  import {
7
7
  ProviderRegistry
8
- } from "./chunk-S7L2M6UP.js";
8
+ } from "./chunk-W52WG5R4.js";
9
9
  import {
10
10
  ConfigManager
11
- } from "./chunk-N6A47HVC.js";
11
+ } from "./chunk-JZDDHOG5.js";
12
12
  import {
13
13
  getStatsSnapshot,
14
14
  getTopFailingTools,
15
15
  getTopUsedTools,
16
16
  resetStats
17
- } from "./chunk-KAEHWVMV.js";
17
+ } from "./chunk-4GB6EG2Y.js";
18
18
  import "./chunk-2ZD3YTVM.js";
19
19
  import {
20
20
  DEV_STATE_FILE_NAME,
21
21
  MEMORY_FILE_NAME,
22
22
  VERSION
23
- } from "./chunk-4FBL3RIZ.js";
23
+ } from "./chunk-TGFINUHW.js";
24
24
  import "./chunk-PDX44BCA.js";
25
25
 
26
26
  // src/diagnostics/doctor-cli.ts
@@ -36,7 +36,7 @@ import {
36
36
  VERSION,
37
37
  buildUserIdentityPrompt,
38
38
  runTestsTool
39
- } from "./chunk-NRUVVOE2.js";
39
+ } from "./chunk-JDMTDRYD.js";
40
40
  import {
41
41
  hasSemanticIndex,
42
42
  semanticSearch
@@ -12207,7 +12207,7 @@ ${undoResults.map((r) => ` \u2022 ${r}`).join("\n")}` });
12207
12207
  case "test": {
12208
12208
  this.send({ type: "info", message: "\u{1F9EA} Running tests..." });
12209
12209
  try {
12210
- const { executeTests } = await import("./run-tests-LI6ZDLSH.js");
12210
+ const { executeTests } = await import("./run-tests-YMCRZ6PG.js");
12211
12211
  const argStr = args.join(" ").trim();
12212
12212
  let testArgs = {};
12213
12213
  if (argStr) {
@@ -386,7 +386,7 @@ ${content}`);
386
386
  }
387
387
  }
388
388
  async function runTaskMode(config, providers, configManager, topic) {
389
- const { TaskOrchestrator } = await import("./task-orchestrator-DEBD3TIS.js");
389
+ const { TaskOrchestrator } = await import("./task-orchestrator-XMMM4YCB.js");
390
390
  const orchestrator = new TaskOrchestrator(config, providers, configManager);
391
391
  let interrupted = false;
392
392
  const onSigint = () => {
package/dist/index.js CHANGED
@@ -16,12 +16,12 @@ import {
16
16
  saveDevState,
17
17
  sessionHasMeaningfulContent,
18
18
  setupProxy
19
- } from "./chunk-HV4MMSLT.js";
19
+ } from "./chunk-QJVXLVMR.js";
20
20
  import {
21
21
  getConfigDirUsage,
22
22
  listRecentCrashes,
23
23
  writeCrashLog
24
- } from "./chunk-J2PDFSAC.js";
24
+ } from "./chunk-EYQZSLJR.js";
25
25
  import {
26
26
  CONTENT_ONLY_STREAM_REMINDER,
27
27
  HALLUCINATION_CORRECTION_MESSAGE,
@@ -39,10 +39,10 @@ import {
39
39
  looksLikeDocumentBody,
40
40
  stripPseudoToolCalls,
41
41
  stripToolCallReminder
42
- } from "./chunk-S7L2M6UP.js";
42
+ } from "./chunk-W52WG5R4.js";
43
43
  import {
44
44
  ConfigManager
45
- } from "./chunk-N6A47HVC.js";
45
+ } from "./chunk-JZDDHOG5.js";
46
46
  import {
47
47
  ToolExecutor,
48
48
  ToolRegistry,
@@ -61,16 +61,16 @@ import {
61
61
  spawnAgentContext,
62
62
  theme,
63
63
  undoStack
64
- } from "./chunk-DDHU6VOW.js";
64
+ } from "./chunk-TLDIOFCH.js";
65
65
  import "./chunk-3BICTI5M.js";
66
66
  import "./chunk-2DXY7UGF.js";
67
- import "./chunk-TZRYEWXW.js";
67
+ import "./chunk-B5M3E7F5.js";
68
68
  import {
69
69
  getStatsSnapshot,
70
70
  getTopFailingTools,
71
71
  getTopUsedTools,
72
72
  installFlushOnExit
73
- } from "./chunk-KAEHWVMV.js";
73
+ } from "./chunk-4GB6EG2Y.js";
74
74
  import "./chunk-2ZD3YTVM.js";
75
75
  import {
76
76
  AGENTIC_BEHAVIOR_GUIDELINE,
@@ -93,7 +93,7 @@ import {
93
93
  SKILLS_DIR_NAME,
94
94
  VERSION,
95
95
  buildUserIdentityPrompt
96
- } from "./chunk-4FBL3RIZ.js";
96
+ } from "./chunk-TGFINUHW.js";
97
97
  import {
98
98
  formatGitContextForPrompt,
99
99
  getGitContext,
@@ -1029,60 +1029,107 @@ function createDefaultCommands() {
1029
1029
  return [
1030
1030
  {
1031
1031
  name: "help",
1032
- description: "List all available commands",
1033
- usage: "/help",
1034
- execute(_args, ctx) {
1035
- const commands = ctx.providers ? [
1036
- " /help - Show this help",
1037
- " /about - About ai-cli & author info",
1038
- " /provider <name> - Switch AI provider",
1039
- " /model <name> - Switch model",
1040
- " /route [on|off|show|test <msg>] - Smart model routing rules (per-message model override)",
1041
- " /clear - Clear conversation history",
1042
- " /compact [instruction] - Summarize & compress history (keep last 4 messages)",
1043
- " /plan [execute|exit|status] - Enter/manage Plan Mode (read-only planning)",
1044
- " /think [on|off|status] - Toggle Extended Thinking (deep reasoning)",
1045
- " /session new - Start a new session",
1046
- " /session list - List saved sessions",
1047
- " /session load <id> - Resume a session",
1048
- " /system <prompt> - Set system prompt",
1049
- " /context - Show or reload hierarchical context layers",
1050
- " /status - Show current status",
1051
- " /search <keyword> - Search across all session histories",
1052
- " /undo [list|<n>] - Undo file ops (list stack, undo N times)",
1053
- " /export [md|json] [file] - Export session to file (default: auto-named .md)",
1054
- " /tools - List all AI tools available",
1055
- " /plugins - Show plugin directory and loaded plugins",
1056
- " /mcp [reconnect [id]] - Show MCP servers / reconnect disconnected",
1057
- " /config [set|get|show] - Config wizard, or get/set values, show all",
1058
- " /copy - Copy last AI response to clipboard",
1059
- " /paste [description] - Read image from clipboard and send to AI",
1060
- " /cost [reset | history] - Show session token usage, reset, or cross-session cost dashboard",
1061
- " /init [--force] - Generate AICLI.md by scanning project structure",
1062
- " /skill [name|off|list] - Manage agent skills (reusable prompt packs)",
1063
- " /checkpoint [save|restore|delete] <name> - Session checkpoints",
1064
- " /review [--staged] [--detailed] - AI code review from git diff",
1065
- " /security-review [--staged] - Security vulnerability scan on git diff",
1066
- " /rewind [list|<n>] - Rewind to message N (restores files too)",
1067
- " /commands [reload] - List/reload custom commands (~/.aicli/commands/)",
1068
- " /test [command|filter] - Run project tests and show structured report",
1069
- " /scaffold <description> - Generate project scaffolding with AI",
1070
- " /add-dir [path|remove] - Add/remove a directory from AI context",
1071
- " /profile [show|set|clear] - View or edit your identity (AI knows who you are)",
1072
- " /memory [show|add|clear|path|rebuild|refresh|status|recall <q>|index-clear] - Persistent memory + chat memory recall index (v0.4.89+)",
1073
- " /doctor - Health check (API keys, config, MCP status)",
1074
- " /bug [--copy] - Generate bug report template (--copy to clipboard)",
1075
- " /diff [--stats] - Show all file modifications in this session",
1076
- " /fork [checkpoint] - Fork session from checkpoint or current position",
1077
- " /branch [list|new|switch|delete|rename|diff|cherry-pick] - Manage conversation branches (fork tree, cross-branch picks)",
1078
- " /index [status|rebuild|clear|semantic-rebuild|semantic-clear] - Symbol + semantic index (find_symbol / search_code)",
1079
- " /security [status|scan|on|off] - Sensitive-data redaction status & session scan",
1080
- " /yolo [on|off] - Toggle session auto-approve (skip confirmations)",
1081
- " /exit - Exit"
1082
- ] : [];
1083
- console.log("\nAvailable commands:");
1084
- commands.forEach((c) => console.log(c));
1032
+ description: "List all available commands (grouped by category)",
1033
+ usage: "/help [search]",
1034
+ execute(args, _ctx) {
1035
+ const filter = args.join(" ").trim().toLowerCase();
1036
+ const groups = [
1037
+ {
1038
+ title: "Chat & model",
1039
+ rows: [
1040
+ ["/provider <name>", "Switch AI provider"],
1041
+ ["/model <name>", "Switch model"],
1042
+ ["/route [on|off|show|test <msg>]", "Smart model routing rules"],
1043
+ ["/think [on|off|status]", "Toggle Extended Thinking (deep reasoning)"],
1044
+ ["/plan [execute|exit|status]", "Enter/manage Plan Mode (read-only)"],
1045
+ ["/yolo [on|off]", "Toggle session auto-approve (skip confirmations)"]
1046
+ ]
1047
+ },
1048
+ {
1049
+ title: "Session",
1050
+ rows: [
1051
+ ["/clear", "Clear conversation history"],
1052
+ ["/compact [instruction]", "Summarize & compress history"],
1053
+ ["/session new|list|load <id>", "Manage saved sessions"],
1054
+ ["/checkpoint [save|restore|delete] <name>", "Session checkpoints"],
1055
+ ["/fork [checkpoint]", "Fork session from checkpoint or current"],
1056
+ ["/branch [list|new|switch|delete|rename|diff|cherry-pick]", "Conversation branches"],
1057
+ ["/rewind [list|<n>]", "Rewind to message N (restores files too)"],
1058
+ ["/export [md|json] [file]", "Export session to file"],
1059
+ ["/cost [reset|history]", "Session token usage / cost dashboard"],
1060
+ ["/status", "Show current status"]
1061
+ ]
1062
+ },
1063
+ {
1064
+ title: "Tools, context & memory",
1065
+ rows: [
1066
+ ["/tools", "List all AI tools available"],
1067
+ ["/plugins", "Show plugin directory and loaded plugins"],
1068
+ ["/mcp [reconnect [id]]", "MCP servers / reconnect disconnected"],
1069
+ ["/skill [name|off|list]", "Manage agent skills (reusable prompt packs)"],
1070
+ ["/context", "Show or reload hierarchical context layers"],
1071
+ ["/add-dir [path|remove]", "Add/remove a directory from AI context"],
1072
+ ["/memory [show|add|clear|recall <q>|rebuild|...]", "Persistent memory + chat recall"],
1073
+ ["/system <prompt>", "Set system prompt"],
1074
+ ["/index [status|rebuild|clear|semantic-*]", "Symbol + semantic code index"],
1075
+ ["/commands [reload]", "List/reload custom commands"]
1076
+ ]
1077
+ },
1078
+ {
1079
+ title: "Files & code",
1080
+ rows: [
1081
+ ["/init [--force]", "Generate AICLI.md by scanning project"],
1082
+ ["/scaffold <description>", "Generate project scaffolding with AI"],
1083
+ ["/review [--staged] [--detailed]", "AI code review from git diff"],
1084
+ ["/security-review [--staged]", "Security vulnerability scan"],
1085
+ ["/test [command|filter]", "Run project tests, structured report"],
1086
+ ["/diff [--stats]", "All file modifications in this session"],
1087
+ ["/undo [list|<n>]", "Undo file ops"],
1088
+ ["/search <keyword>", "Search across all session histories"]
1089
+ ]
1090
+ },
1091
+ {
1092
+ title: "Clipboard & I/O",
1093
+ rows: [
1094
+ ["/copy", "Copy last AI response to clipboard"],
1095
+ ["/paste [description]", "Read image from clipboard and send to AI"]
1096
+ ]
1097
+ },
1098
+ {
1099
+ title: "System",
1100
+ rows: [
1101
+ ["/config [set|get|show]", "Config wizard / get / set / show all"],
1102
+ ["/profile [show|set|clear]", "View or edit your identity"],
1103
+ ["/security [status|scan|on|off]", "Sensitive-data redaction"],
1104
+ ["/doctor", "Health check (API keys, config, MCP, crashes, tool stats)"],
1105
+ ["/bug [--copy]", "Generate bug report template"],
1106
+ ["/about", "About ai-cli & author info"],
1107
+ ["/help [search]", "This help \u2014 pass a term to filter"],
1108
+ ["/exit", "Exit"]
1109
+ ]
1110
+ }
1111
+ ];
1112
+ const filterFn = (row) => !filter || row[0].toLowerCase().includes(filter) || row[1].toLowerCase().includes(filter);
1113
+ const surviving = groups.flatMap((g) => g.rows.filter(filterFn));
1114
+ if (surviving.length === 0) {
1115
+ console.log(`
1116
+ No commands match "${filter}".
1117
+ `);
1118
+ return;
1119
+ }
1120
+ const cmdWidth = Math.min(48, Math.max(...surviving.map((r) => r[0].length)) + 2);
1085
1121
  console.log();
1122
+ if (filter) console.log(theme.dim(` Filtering by "${filter}"
1123
+ `));
1124
+ for (const group of groups) {
1125
+ const rows = group.rows.filter(filterFn);
1126
+ if (rows.length === 0) continue;
1127
+ console.log(theme.heading(` ${group.title}`));
1128
+ for (const [cmd, desc] of rows) {
1129
+ console.log(` ${theme.accent(cmd.padEnd(cmdWidth))} ${theme.dim(desc)}`);
1130
+ }
1131
+ console.log();
1132
+ }
1086
1133
  }
1087
1134
  },
1088
1135
  {
@@ -1530,17 +1577,57 @@ ${text}
1530
1577
  },
1531
1578
  {
1532
1579
  name: "tools",
1533
- description: "List all AI tools available in agentic mode",
1534
- usage: "/tools",
1535
- execute(_args, ctx) {
1536
- const tools = ctx.tools.listAll();
1537
- console.log("\nAvailable AI tools:");
1538
- for (const t of tools) {
1539
- console.log(
1540
- ` ${t.definition.name.padEnd(20)} ${t.definition.description}`
1541
- );
1580
+ description: "List all AI tools, grouped by source",
1581
+ usage: "/tools [search]",
1582
+ execute(args, ctx) {
1583
+ const filter = args.join(" ").trim().toLowerCase();
1584
+ const all = ctx.tools.listAll();
1585
+ const builtin = [];
1586
+ const byServer = /* @__PURE__ */ new Map();
1587
+ for (const t of all) {
1588
+ const name = t.definition.name;
1589
+ if (name.startsWith("mcp__")) {
1590
+ const rest = name.slice(5);
1591
+ const sep = rest.indexOf("__");
1592
+ const serverId = sep > 0 ? rest.slice(0, sep) : "(unknown)";
1593
+ const toolName = sep > 0 ? rest.slice(sep + 2) : rest;
1594
+ if (!byServer.has(serverId)) byServer.set(serverId, []);
1595
+ byServer.get(serverId).push({ name: toolName, description: t.definition.description });
1596
+ } else {
1597
+ builtin.push({ name, description: t.definition.description });
1598
+ }
1599
+ }
1600
+ const matches2 = (row) => !filter || row.name.toLowerCase().includes(filter) || row.description.toLowerCase().includes(filter);
1601
+ const builtinShown = builtin.filter(matches2);
1602
+ const serverShown = [...byServer.entries()].map(([id, rows]) => [id, rows.filter(matches2)]).filter(([, rows]) => rows.length > 0);
1603
+ const total = builtinShown.length + serverShown.reduce((a, [, r]) => a + r.length, 0);
1604
+ if (total === 0) {
1605
+ console.log(filter ? `
1606
+ No tools match "${filter}".
1607
+ ` : "\nNo tools registered.\n");
1608
+ return;
1542
1609
  }
1543
1610
  console.log();
1611
+ if (filter) console.log(theme.dim(` Filtering by "${filter}"
1612
+ `));
1613
+ const allShownRows = [...builtinShown, ...serverShown.flatMap(([, r]) => r)];
1614
+ const nameWidth = Math.min(32, Math.max(...allShownRows.map((r) => r.name.length)) + 2);
1615
+ if (builtinShown.length > 0) {
1616
+ console.log(theme.heading(` Built-in (${builtinShown.length})`));
1617
+ for (const t of builtinShown) {
1618
+ console.log(` ${theme.accent(t.name.padEnd(nameWidth))} ${theme.dim(t.description)}`);
1619
+ }
1620
+ console.log();
1621
+ }
1622
+ for (const [serverId, rows] of serverShown) {
1623
+ console.log(theme.heading(` MCP \xB7 ${serverId} (${rows.length})`));
1624
+ for (const t of rows) {
1625
+ console.log(` ${theme.accent(t.name.padEnd(nameWidth))} ${theme.dim(t.description)}`);
1626
+ }
1627
+ console.log();
1628
+ }
1629
+ console.log(theme.dim(` Total: ${total} tool(s) shown
1630
+ `));
1544
1631
  }
1545
1632
  },
1546
1633
  {
@@ -1661,7 +1748,7 @@ ${text}
1661
1748
  const { join: join6 } = await import("path");
1662
1749
  const { existsSync: existsSync6 } = await import("fs");
1663
1750
  const { getGitRoot: getGitRoot2 } = await import("./git-context-7KIP4X2V.js");
1664
- const { MCP_PROJECT_CONFIG_NAME: MCP_PROJECT_CONFIG_NAME2 } = await import("./constants-AEX6CGDO.js");
1751
+ const { MCP_PROJECT_CONFIG_NAME: MCP_PROJECT_CONFIG_NAME2 } = await import("./constants-KQTYOOGP.js");
1665
1752
  const { approveProject, hashMcpFile } = await import("./project-trust-IFM7FXEV.js");
1666
1753
  const cwd = process.cwd();
1667
1754
  const projectRoot = getGitRoot2(cwd) ?? cwd;
@@ -2722,7 +2809,7 @@ ${hint}` : "")
2722
2809
  usage: "/test [command|filter]",
2723
2810
  async execute(args, ctx) {
2724
2811
  try {
2725
- const { executeTests } = await import("./run-tests-2EHQ6R54.js");
2812
+ const { executeTests } = await import("./run-tests-EKFEFXDY.js");
2726
2813
  const argStr = args.join(" ").trim();
2727
2814
  let testArgs = {};
2728
2815
  if (argStr) {
@@ -5043,12 +5130,8 @@ ${response.content.trim()}
5043
5130
  }
5044
5131
  showPrompt() {
5045
5132
  this.refreshPrompt();
5046
- const rlDbg = this.rl;
5047
- rlDbg.prevRows = 0;
5048
- if (rlDbg.line) {
5049
- process.stderr.write(`[DBG showPrompt] line=${JSON.stringify(rlDbg.line)}
5050
- `);
5051
- }
5133
+ const rlInternal2 = this.rl;
5134
+ rlInternal2.prevRows = 0;
5052
5135
  this.rl.prompt();
5053
5136
  }
5054
5137
  async start() {
@@ -7075,7 +7158,7 @@ program.command("web").description("Start Web UI server with browser-based chat
7075
7158
  console.error("Error: Invalid port number. Must be between 1 and 65535.");
7076
7159
  process.exit(1);
7077
7160
  }
7078
- const { startWebServer } = await import("./server-Q2JSHPNK.js");
7161
+ const { startWebServer } = await import("./server-5PVP7OLW.js");
7079
7162
  await startWebServer({ port, host: options.host });
7080
7163
  });
7081
7164
  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) => {
@@ -7210,12 +7293,12 @@ program.command("sessions").description("List recent conversation sessions").act
7210
7293
  console.log();
7211
7294
  });
7212
7295
  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) => {
7213
- const { runDoctorCli } = await import("./doctor-cli-VDXQRPNW.js");
7296
+ const { runDoctorCli } = await import("./doctor-cli-HUKR2SSS.js");
7214
7297
  await runDoctorCli({ json: !!options.json, resetStats: !!options.resetStats });
7215
7298
  });
7216
7299
  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) => {
7217
7300
  try {
7218
- const batch = await import("./batch-NIKHWGRB.js");
7301
+ const batch = await import("./batch-TWT336TR.js");
7219
7302
  switch (action) {
7220
7303
  case "submit":
7221
7304
  if (!arg) {
@@ -7258,7 +7341,7 @@ program.command("batch <action> [arg] [arg2]").description("Anthropic Message Ba
7258
7341
  }
7259
7342
  });
7260
7343
  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) => {
7261
- const { startMcpServer } = await import("./server-PZEYYUTG.js");
7344
+ const { startMcpServer } = await import("./server-7FWUIWPE.js");
7262
7345
  await startMcpServer({
7263
7346
  allowDestructive: !!options.allowDestructive,
7264
7347
  allowOutsideCwd: !!options.allowOutsideCwd,
@@ -7385,7 +7468,7 @@ program.command("hub [topic]").description("Start multi-agent hub (discuss / bra
7385
7468
  }),
7386
7469
  config.get("customProviders")
7387
7470
  );
7388
- const { startHub } = await import("./hub-NAZQGJ7O.js");
7471
+ const { startHub } = await import("./hub-PLSKV3VL.js");
7389
7472
  await startHub(
7390
7473
  {
7391
7474
  topic: topic ?? "",
@@ -2,8 +2,8 @@
2
2
  import {
3
3
  executeTests,
4
4
  runTestsTool
5
- } from "./chunk-TZRYEWXW.js";
6
- import "./chunk-4FBL3RIZ.js";
5
+ } from "./chunk-B5M3E7F5.js";
6
+ import "./chunk-TGFINUHW.js";
7
7
  import "./chunk-PDX44BCA.js";
8
8
  export {
9
9
  executeTests,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  executeTests,
3
3
  runTestsTool
4
- } from "./chunk-NRUVVOE2.js";
4
+ } from "./chunk-JDMTDRYD.js";
5
5
  import "./chunk-3RG5ZIWI.js";
6
6
  export {
7
7
  executeTests,
@@ -14,7 +14,7 @@ import {
14
14
  loadDevState,
15
15
  persistToolRound,
16
16
  setupProxy
17
- } from "./chunk-HV4MMSLT.js";
17
+ } from "./chunk-QJVXLVMR.js";
18
18
  import {
19
19
  CONTENT_ONLY_STREAM_REMINDER,
20
20
  HALLUCINATION_CORRECTION_MESSAGE,
@@ -28,10 +28,10 @@ import {
28
28
  looksLikeDocumentBody,
29
29
  stripPseudoToolCalls,
30
30
  stripToolCallReminder
31
- } from "./chunk-S7L2M6UP.js";
31
+ } from "./chunk-W52WG5R4.js";
32
32
  import {
33
33
  ConfigManager
34
- } from "./chunk-N6A47HVC.js";
34
+ } from "./chunk-JZDDHOG5.js";
35
35
  import {
36
36
  ToolExecutor,
37
37
  ToolRegistry,
@@ -49,14 +49,14 @@ import {
49
49
  spawnAgentContext,
50
50
  truncateOutput,
51
51
  undoStack
52
- } from "./chunk-DDHU6VOW.js";
52
+ } from "./chunk-TLDIOFCH.js";
53
53
  import "./chunk-3BICTI5M.js";
54
54
  import "./chunk-2DXY7UGF.js";
55
- import "./chunk-TZRYEWXW.js";
55
+ import "./chunk-B5M3E7F5.js";
56
56
  import {
57
57
  getDangerLevel,
58
58
  runTool
59
- } from "./chunk-KAEHWVMV.js";
59
+ } from "./chunk-4GB6EG2Y.js";
60
60
  import "./chunk-2ZD3YTVM.js";
61
61
  import {
62
62
  AGENTIC_BEHAVIOR_GUIDELINE,
@@ -76,7 +76,7 @@ import {
76
76
  SKILLS_DIR_NAME,
77
77
  VERSION,
78
78
  buildUserIdentityPrompt
79
- } from "./chunk-4FBL3RIZ.js";
79
+ } from "./chunk-TGFINUHW.js";
80
80
  import {
81
81
  formatGitContextForPrompt,
82
82
  getGitContext,
@@ -2460,7 +2460,7 @@ ${undoResults.map((r) => ` \u2022 ${r}`).join("\n")}` });
2460
2460
  case "test": {
2461
2461
  this.send({ type: "info", message: "\u{1F9EA} Running tests..." });
2462
2462
  try {
2463
- const { executeTests } = await import("./run-tests-2EHQ6R54.js");
2463
+ const { executeTests } = await import("./run-tests-EKFEFXDY.js");
2464
2464
  const argStr = args.join(" ").trim();
2465
2465
  let testArgs = {};
2466
2466
  if (argStr) {
@@ -1,19 +1,19 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ToolRegistry
4
- } from "./chunk-DDHU6VOW.js";
4
+ } from "./chunk-TLDIOFCH.js";
5
5
  import "./chunk-3BICTI5M.js";
6
6
  import "./chunk-2DXY7UGF.js";
7
- import "./chunk-TZRYEWXW.js";
7
+ import "./chunk-B5M3E7F5.js";
8
8
  import {
9
9
  getDangerLevel,
10
10
  runTool,
11
11
  schemaToJsonSchema
12
- } from "./chunk-KAEHWVMV.js";
12
+ } from "./chunk-4GB6EG2Y.js";
13
13
  import "./chunk-2ZD3YTVM.js";
14
14
  import {
15
15
  VERSION
16
- } from "./chunk-4FBL3RIZ.js";
16
+ } from "./chunk-TGFINUHW.js";
17
17
  import "./chunk-4BKXL7SM.js";
18
18
  import "./chunk-7ZJN4KLV.js";
19
19
  import "./chunk-KHYD3WXE.js";
@@ -3,18 +3,18 @@ import {
3
3
  ToolRegistry,
4
4
  googleSearchContext,
5
5
  truncateOutput
6
- } from "./chunk-DDHU6VOW.js";
6
+ } from "./chunk-TLDIOFCH.js";
7
7
  import "./chunk-3BICTI5M.js";
8
8
  import "./chunk-2DXY7UGF.js";
9
- import "./chunk-TZRYEWXW.js";
9
+ import "./chunk-B5M3E7F5.js";
10
10
  import {
11
11
  getDangerLevel,
12
12
  runTool
13
- } from "./chunk-KAEHWVMV.js";
13
+ } from "./chunk-4GB6EG2Y.js";
14
14
  import "./chunk-2ZD3YTVM.js";
15
15
  import {
16
16
  SUBAGENT_ALLOWED_TOOLS
17
- } from "./chunk-4FBL3RIZ.js";
17
+ } from "./chunk-TGFINUHW.js";
18
18
  import "./chunk-4BKXL7SM.js";
19
19
  import "./chunk-7ZJN4KLV.js";
20
20
  import "./chunk-KHYD3WXE.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jinzd-ai-cli",
3
- "version": "0.4.121",
3
+ "version": "0.4.122",
4
4
  "description": "Cross-platform REPL-style AI CLI with multi-provider support",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",