jinzd-ai-cli 0.4.129 → 0.4.131

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-RGO5ID2L.js";
4
+ } from "./chunk-CPLIYUBW.js";
5
5
  import "./chunk-2ZD3YTVM.js";
6
- import "./chunk-WT2NPBJK.js";
6
+ import "./chunk-6UQU5UBM.js";
7
7
  import "./chunk-PDX44BCA.js";
8
8
 
9
9
  // src/cli/batch.ts
@@ -5,12 +5,12 @@ import {
5
5
  } from "./chunk-3BICTI5M.js";
6
6
  import {
7
7
  runTestsTool
8
- } from "./chunk-WA7MTVDV.js";
8
+ } from "./chunk-XXBZHGU7.js";
9
9
  import {
10
10
  getDangerLevel,
11
11
  isFileWriteTool,
12
12
  runTool
13
- } from "./chunk-ACNOWRIH.js";
13
+ } from "./chunk-64NQU4PM.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-WT2NPBJK.js";
26
+ } from "./chunk-6UQU5UBM.js";
27
27
  import {
28
28
  fileCheckpoints
29
29
  } from "./chunk-4BKXL7SM.js";
@@ -410,7 +410,7 @@ function buildErrorHint(command, stderr) {
410
410
  }
411
411
  if (IS_WINDOWS && /Remove-Item/i.test(command) && /cannot find path|no such file|exit 1/i.test(stderr || command)) {
412
412
  hints.push(
413
- `Hint: Add -ErrorAction SilentlyContinue to Remove-Item so missing files don't fail the cleanup step. Example: Remove-Item tmp_*.sql,tmp_*.csv -ErrorAction SilentlyContinue`
413
+ `Hint: On Windows, "Remove-Item ... -ErrorAction SilentlyContinue" still makes the powershell process exit 1 when no files match (even though the error is silenced). Use Test-Path as a guard: @('tmp_a.sql','tmp_b.sql','tmp_c.csv') | Where-Object { Test-Path $_ } | Remove-Item -Force \u2014 Test-Path returns a bool without raising, so missing paths are filtered out and exit code is 0.`
414
414
  );
415
415
  }
416
416
  const colMissing = stderr.match(/column "([^"]+)" does not exist/i);
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  CONFIG_DIR_NAME
4
- } from "./chunk-WT2NPBJK.js";
4
+ } from "./chunk-6UQU5UBM.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
  truncateForPersist
4
- } from "./chunk-NWQDJMXZ.js";
4
+ } from "./chunk-25V5R4YD.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-WT2NPBJK.js";
14
+ } from "./chunk-6UQU5UBM.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.129";
4
+ var VERSION = "0.4.131";
5
5
  var APP_NAME = "ai-cli";
6
6
  var CONFIG_DIR_NAME = ".aicli";
7
7
  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-WT2NPBJK.js";
11
+ } from "./chunk-6UQU5UBM.js";
12
12
 
13
13
  // src/config/config-manager.ts
14
14
  import { readFileSync, writeFileSync, existsSync, mkdirSync } from "fs";
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  CONFIG_DIR_NAME,
4
4
  VERSION
5
- } from "./chunk-WT2NPBJK.js";
5
+ } from "./chunk-6UQU5UBM.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.129";
9
+ var VERSION = "0.4.131";
10
10
  var APP_NAME = "ai-cli";
11
11
  var CONFIG_DIR_NAME = ".aicli";
12
12
  var CONFIG_FILE_NAME = "config.json";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  schemaToJsonSchema
4
- } from "./chunk-ACNOWRIH.js";
4
+ } from "./chunk-64NQU4PM.js";
5
5
  import {
6
6
  AuthError,
7
7
  ProviderError,
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  TEST_TIMEOUT
4
- } from "./chunk-WT2NPBJK.js";
4
+ } from "./chunk-6UQU5UBM.js";
5
5
 
6
6
  // src/tools/builtin/run-tests.ts
7
7
  import { execSync, spawnSync } from "child_process";
@@ -36,7 +36,7 @@ import {
36
36
  TEST_TIMEOUT,
37
37
  VERSION,
38
38
  buildUserIdentityPrompt
39
- } from "./chunk-WT2NPBJK.js";
39
+ } from "./chunk-6UQU5UBM.js";
40
40
  import "./chunk-PDX44BCA.js";
41
41
  export {
42
42
  AGENTIC_BEHAVIOR_GUIDELINE,
@@ -2,31 +2,65 @@
2
2
  import {
3
3
  getConfigDirUsage,
4
4
  listRecentCrashes
5
- } from "./chunk-7OOI6HW3.js";
5
+ } from "./chunk-DYLQZB4M.js";
6
6
  import {
7
7
  ProviderRegistry
8
- } from "./chunk-I3WL5KNV.js";
8
+ } from "./chunk-NJHMQYR6.js";
9
9
  import {
10
10
  ConfigManager
11
- } from "./chunk-RGO5ID2L.js";
11
+ } from "./chunk-CPLIYUBW.js";
12
12
  import {
13
13
  getStatsSnapshot,
14
14
  getTopFailingTools,
15
15
  getTopUsedTools,
16
16
  resetStats
17
- } from "./chunk-ACNOWRIH.js";
17
+ } from "./chunk-64NQU4PM.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-WT2NPBJK.js";
23
+ } from "./chunk-6UQU5UBM.js";
24
24
  import "./chunk-PDX44BCA.js";
25
25
 
26
26
  // src/diagnostics/doctor-cli.ts
27
27
  import { existsSync, statSync } from "fs";
28
28
  import { join } from "path";
29
29
  import { platform, release, arch } from "os";
30
+ function compareVersion(a, b) {
31
+ const pa = a.split(".").map((n) => parseInt(n, 10) || 0);
32
+ const pb = b.split(".").map((n) => parseInt(n, 10) || 0);
33
+ const len = Math.max(pa.length, pb.length);
34
+ for (let i = 0; i < len; i++) {
35
+ const da = pa[i] ?? 0;
36
+ const db = pb[i] ?? 0;
37
+ if (da !== db) return da - db;
38
+ }
39
+ return 0;
40
+ }
41
+ async function checkNpmLatest() {
42
+ const controller = new AbortController();
43
+ const timer = setTimeout(() => controller.abort(), 3e3);
44
+ try {
45
+ const res = await fetch("https://registry.npmjs.org/jinzd-ai-cli/latest", {
46
+ signal: controller.signal,
47
+ headers: { accept: "application/json" }
48
+ });
49
+ if (!res.ok) {
50
+ return { latest: null, status: "skipped", reason: `HTTP ${res.status}` };
51
+ }
52
+ const data = await res.json();
53
+ const latest = typeof data.version === "string" ? data.version : null;
54
+ if (!latest) return { latest: null, status: "skipped", reason: "no version in response" };
55
+ const cmp = compareVersion(latest, VERSION);
56
+ return { latest, status: cmp > 0 ? "outdated" : "up-to-date" };
57
+ } catch (err) {
58
+ const reason = err?.name === "AbortError" ? "timeout (3s)" : err?.message ?? "network error";
59
+ return { latest: null, status: "skipped", reason };
60
+ } finally {
61
+ clearTimeout(timer);
62
+ }
63
+ }
30
64
  async function collect() {
31
65
  const config = new ConfigManager();
32
66
  const registry = new ProviderRegistry();
@@ -55,8 +89,10 @@ async function collect() {
55
89
  }
56
90
  return { label, path, exists, sizeBytes };
57
91
  };
92
+ const npmCheck = await checkNpmLatest();
58
93
  return {
59
94
  version: VERSION,
95
+ npmCheck,
60
96
  node: process.version,
61
97
  platform: `${platform()} ${release()} (${arch()})`,
62
98
  configDir,
@@ -108,7 +144,16 @@ async function runDoctorCli(options = {}) {
108
144
  out.push("");
109
145
  out.push(`${B}\u{1FA7A} AI-CLI Health Check${RESET}`);
110
146
  out.push("");
111
- out.push(` version: ${report.version}`);
147
+ const nc = report.npmCheck;
148
+ let versionLine = ` version: ${report.version}`;
149
+ if (nc.status === "up-to-date") {
150
+ versionLine += ` ${D}(latest on npm)${RESET}`;
151
+ } else if (nc.status === "outdated" && nc.latest) {
152
+ versionLine += ` ${Y}\u2192 ${nc.latest} available${RESET} ${D}(npm i -g jinzd-ai-cli@latest)${RESET}`;
153
+ } else if (nc.status === "skipped") {
154
+ versionLine += ` ${D}(npm check skipped: ${nc.reason ?? "unknown"})${RESET}`;
155
+ }
156
+ out.push(versionLine);
112
157
  out.push(` node: ${report.node}`);
113
158
  out.push(` platform: ${report.platform}`);
114
159
  out.push(` config: ${report.configDir}`);
@@ -36,7 +36,7 @@ import {
36
36
  VERSION,
37
37
  buildUserIdentityPrompt,
38
38
  runTestsTool
39
- } from "./chunk-VGSNZS2W.js";
39
+ } from "./chunk-MXGX5PAY.js";
40
40
  import {
41
41
  hasSemanticIndex,
42
42
  semanticSearch
@@ -4044,7 +4044,7 @@ function buildErrorHint(command, stderr) {
4044
4044
  }
4045
4045
  if (IS_WINDOWS && /Remove-Item/i.test(command) && /cannot find path|no such file|exit 1/i.test(stderr || command)) {
4046
4046
  hints.push(
4047
- `Hint: Add -ErrorAction SilentlyContinue to Remove-Item so missing files don't fail the cleanup step. Example: Remove-Item tmp_*.sql,tmp_*.csv -ErrorAction SilentlyContinue`
4047
+ `Hint: On Windows, "Remove-Item ... -ErrorAction SilentlyContinue" still makes the powershell process exit 1 when no files match (even though the error is silenced). Use Test-Path as a guard: @('tmp_a.sql','tmp_b.sql','tmp_c.csv') | Where-Object { Test-Path $_ } | Remove-Item -Force \u2014 Test-Path returns a bool without raising, so missing paths are filtered out and exit code is 0.`
4048
4048
  );
4049
4049
  }
4050
4050
  const colMissing = stderr.match(/column "([^"]+)" does not exist/i);
@@ -12219,7 +12219,7 @@ ${undoResults.map((r) => ` \u2022 ${r}`).join("\n")}` });
12219
12219
  case "test": {
12220
12220
  this.send({ type: "info", message: "\u{1F9EA} Running tests..." });
12221
12221
  try {
12222
- const { executeTests } = await import("./run-tests-Y6IHV5KW.js");
12222
+ const { executeTests } = await import("./run-tests-F36UBTJ2.js");
12223
12223
  const argStr = args.join(" ").trim();
12224
12224
  let testArgs = {};
12225
12225
  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-ORLZ2N3P.js");
389
+ const { TaskOrchestrator } = await import("./task-orchestrator-2BZ67PVT.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-4GGFJ6PM.js";
19
+ } from "./chunk-6DRZY3BO.js";
20
20
  import {
21
21
  getConfigDirUsage,
22
22
  listRecentCrashes,
23
23
  writeCrashLog
24
- } from "./chunk-7OOI6HW3.js";
24
+ } from "./chunk-DYLQZB4M.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-I3WL5KNV.js";
42
+ } from "./chunk-NJHMQYR6.js";
43
43
  import {
44
44
  ConfigManager
45
- } from "./chunk-RGO5ID2L.js";
45
+ } from "./chunk-CPLIYUBW.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-NWQDJMXZ.js";
64
+ } from "./chunk-25V5R4YD.js";
65
65
  import "./chunk-3BICTI5M.js";
66
66
  import "./chunk-2DXY7UGF.js";
67
- import "./chunk-WA7MTVDV.js";
67
+ import "./chunk-XXBZHGU7.js";
68
68
  import {
69
69
  getStatsSnapshot,
70
70
  getTopFailingTools,
71
71
  getTopUsedTools,
72
72
  installFlushOnExit
73
- } from "./chunk-ACNOWRIH.js";
73
+ } from "./chunk-64NQU4PM.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-WT2NPBJK.js";
96
+ } from "./chunk-6UQU5UBM.js";
97
97
  import {
98
98
  formatGitContextForPrompt,
99
99
  getGitContext,
@@ -1814,7 +1814,7 @@ No tools match "${filter}".
1814
1814
  const { join: join6 } = await import("path");
1815
1815
  const { existsSync: existsSync6 } = await import("fs");
1816
1816
  const { getGitRoot: getGitRoot2 } = await import("./git-context-7KIP4X2V.js");
1817
- const { MCP_PROJECT_CONFIG_NAME: MCP_PROJECT_CONFIG_NAME2 } = await import("./constants-TXSFY5JG.js");
1817
+ const { MCP_PROJECT_CONFIG_NAME: MCP_PROJECT_CONFIG_NAME2 } = await import("./constants-WEMC6PRT.js");
1818
1818
  const { approveProject, hashMcpFile } = await import("./project-trust-IFM7FXEV.js");
1819
1819
  const cwd = process.cwd();
1820
1820
  const projectRoot = getGitRoot2(cwd) ?? cwd;
@@ -2875,7 +2875,7 @@ ${hint}` : "")
2875
2875
  usage: "/test [command|filter]",
2876
2876
  async execute(args, ctx) {
2877
2877
  try {
2878
- const { executeTests } = await import("./run-tests-FYVO5PHC.js");
2878
+ const { executeTests } = await import("./run-tests-WH4T5R7M.js");
2879
2879
  const argStr = args.join(" ").trim();
2880
2880
  let testArgs = {};
2881
2881
  if (argStr) {
@@ -5446,33 +5446,55 @@ Session '${this.resumeSessionId}' not found.
5446
5446
  for (const id of Object.keys(projectMcpServers)) {
5447
5447
  this.mcpServerSources.set(id, "project");
5448
5448
  }
5449
+ let mcpReadyPromise = Promise.resolve();
5449
5450
  if (Object.keys(mergedMcpServers).length > 0) {
5450
5451
  this.mcpManager = new McpManager();
5451
5452
  const mcpProjectCount = Object.keys(projectMcpServers).length;
5452
- this.mcpManager.connectAll(mergedMcpServers, { quiet: true }).then(() => {
5453
- const mcpTools = this.mcpManager.getAllTools();
5454
- for (const tool of mcpTools) {
5455
- this.toolRegistry.registerMcpTool(tool);
5456
- }
5453
+ let bannerEmitted = false;
5454
+ const emitBanner = (afterDeadline) => {
5455
+ if (bannerEmitted) return;
5456
+ bannerEmitted = true;
5457
5457
  const statuses = this.mcpManager.getStatus();
5458
+ if (statuses.length === 0) return;
5458
5459
  const connectedCount = statuses.filter((s) => s.connected).length;
5459
5460
  const failed = statuses.filter((s) => !s.connected);
5460
5461
  const totalTools = this.mcpManager.getTotalToolCount();
5461
- if (statuses.length === 0) return;
5462
5462
  const sourceInfo = mcpProjectCount > 0 ? ` (${mcpProjectCount} from .mcp.json)` : "";
5463
5463
  let line = ` \u{1F50C} MCP: ${connectedCount}/${statuses.length} server(s), ${totalTools} tool(s)${sourceInfo}`;
5464
5464
  if (failed.length > 0) {
5465
5465
  const names = failed.map((f) => f.serverId).join(", ");
5466
5466
  line += ` \u26A0 failed: ${names}`;
5467
5467
  }
5468
- process.stdout.write("\n" + theme.dim(line) + "\n");
5469
- this.showPrompt();
5468
+ if (afterDeadline) {
5469
+ process.stdout.write("\n" + theme.dim(line) + "\n");
5470
+ this.showPrompt();
5471
+ } else {
5472
+ process.stdout.write(theme.dim(line) + "\n");
5473
+ }
5474
+ };
5475
+ mcpReadyPromise = this.mcpManager.connectAll(mergedMcpServers, { quiet: true }).then(() => {
5476
+ const mcpTools = this.mcpManager.getAllTools();
5477
+ for (const tool of mcpTools) {
5478
+ this.toolRegistry.registerMcpTool(tool);
5479
+ }
5470
5480
  }).catch((err) => {
5471
5481
  process.stderr.write(`
5472
5482
  [mcp] connectAll error: ${err instanceof Error ? err.message : err}
5473
5483
  `);
5474
- this.showPrompt();
5475
5484
  });
5485
+ const FAST_MCP_DEADLINE_MS = 1500;
5486
+ const deadlinePromise = new Promise((resolve3) => {
5487
+ setTimeout(() => resolve3("timeout"), FAST_MCP_DEADLINE_MS).unref?.();
5488
+ });
5489
+ const winner = await Promise.race([
5490
+ mcpReadyPromise.then(() => "ready"),
5491
+ deadlinePromise
5492
+ ]);
5493
+ if (winner === "ready") {
5494
+ emitBanner(false);
5495
+ } else {
5496
+ void mcpReadyPromise.then(() => emitBanner(true));
5497
+ }
5476
5498
  }
5477
5499
  this.setupClipboardPaste();
5478
5500
  this.rl.on("SIGINT", () => {
@@ -7282,7 +7304,7 @@ program.command("web").description("Start Web UI server with browser-based chat
7282
7304
  console.error("Error: Invalid port number. Must be between 1 and 65535.");
7283
7305
  process.exit(1);
7284
7306
  }
7285
- const { startWebServer } = await import("./server-A7FJBICT.js");
7307
+ const { startWebServer } = await import("./server-IXRJZVGB.js");
7286
7308
  await startWebServer({ port, host: options.host });
7287
7309
  });
7288
7310
  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) => {
@@ -7449,12 +7471,12 @@ program.command("sessions").description("List recent conversation sessions").opt
7449
7471
  console.log(footer + "\n");
7450
7472
  });
7451
7473
  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) => {
7452
- const { runDoctorCli } = await import("./doctor-cli-GXRMSWKQ.js");
7474
+ const { runDoctorCli } = await import("./doctor-cli-YMARNLLN.js");
7453
7475
  await runDoctorCli({ json: !!options.json, resetStats: !!options.resetStats });
7454
7476
  });
7455
7477
  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) => {
7456
7478
  try {
7457
- const batch = await import("./batch-QQVEIO66.js");
7479
+ const batch = await import("./batch-XNZPGDWF.js");
7458
7480
  switch (action) {
7459
7481
  case "submit":
7460
7482
  if (!arg) {
@@ -7497,7 +7519,7 @@ program.command("batch <action> [arg] [arg2]").description("Anthropic Message Ba
7497
7519
  }
7498
7520
  });
7499
7521
  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) => {
7500
- const { startMcpServer } = await import("./server-YETDY2PW.js");
7522
+ const { startMcpServer } = await import("./server-U4DOPH42.js");
7501
7523
  await startMcpServer({
7502
7524
  allowDestructive: !!options.allowDestructive,
7503
7525
  allowOutsideCwd: !!options.allowOutsideCwd,
@@ -7624,7 +7646,7 @@ program.command("hub [topic]").description("Start multi-agent hub (discuss / bra
7624
7646
  }),
7625
7647
  config.get("customProviders")
7626
7648
  );
7627
- const { startHub } = await import("./hub-XKYA6MXH.js");
7649
+ const { startHub } = await import("./hub-IJL6BVRI.js");
7628
7650
  await startHub(
7629
7651
  {
7630
7652
  topic: topic ?? "",
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  executeTests,
3
3
  runTestsTool
4
- } from "./chunk-VGSNZS2W.js";
4
+ } from "./chunk-MXGX5PAY.js";
5
5
  import "./chunk-3RG5ZIWI.js";
6
6
  export {
7
7
  executeTests,
@@ -2,8 +2,8 @@
2
2
  import {
3
3
  executeTests,
4
4
  runTestsTool
5
- } from "./chunk-WA7MTVDV.js";
6
- import "./chunk-WT2NPBJK.js";
5
+ } from "./chunk-XXBZHGU7.js";
6
+ import "./chunk-6UQU5UBM.js";
7
7
  import "./chunk-PDX44BCA.js";
8
8
  export {
9
9
  executeTests,
@@ -14,7 +14,7 @@ import {
14
14
  loadDevState,
15
15
  persistToolRound,
16
16
  setupProxy
17
- } from "./chunk-4GGFJ6PM.js";
17
+ } from "./chunk-6DRZY3BO.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-I3WL5KNV.js";
31
+ } from "./chunk-NJHMQYR6.js";
32
32
  import {
33
33
  ConfigManager
34
- } from "./chunk-RGO5ID2L.js";
34
+ } from "./chunk-CPLIYUBW.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-NWQDJMXZ.js";
52
+ } from "./chunk-25V5R4YD.js";
53
53
  import "./chunk-3BICTI5M.js";
54
54
  import "./chunk-2DXY7UGF.js";
55
- import "./chunk-WA7MTVDV.js";
55
+ import "./chunk-XXBZHGU7.js";
56
56
  import {
57
57
  getDangerLevel,
58
58
  runTool
59
- } from "./chunk-ACNOWRIH.js";
59
+ } from "./chunk-64NQU4PM.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-WT2NPBJK.js";
79
+ } from "./chunk-6UQU5UBM.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-FYVO5PHC.js");
2463
+ const { executeTests } = await import("./run-tests-WH4T5R7M.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-NWQDJMXZ.js";
4
+ } from "./chunk-25V5R4YD.js";
5
5
  import "./chunk-3BICTI5M.js";
6
6
  import "./chunk-2DXY7UGF.js";
7
- import "./chunk-WA7MTVDV.js";
7
+ import "./chunk-XXBZHGU7.js";
8
8
  import {
9
9
  getDangerLevel,
10
10
  runTool,
11
11
  schemaToJsonSchema
12
- } from "./chunk-ACNOWRIH.js";
12
+ } from "./chunk-64NQU4PM.js";
13
13
  import "./chunk-2ZD3YTVM.js";
14
14
  import {
15
15
  VERSION
16
- } from "./chunk-WT2NPBJK.js";
16
+ } from "./chunk-6UQU5UBM.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-NWQDJMXZ.js";
6
+ } from "./chunk-25V5R4YD.js";
7
7
  import "./chunk-3BICTI5M.js";
8
8
  import "./chunk-2DXY7UGF.js";
9
- import "./chunk-WA7MTVDV.js";
9
+ import "./chunk-XXBZHGU7.js";
10
10
  import {
11
11
  getDangerLevel,
12
12
  runTool
13
- } from "./chunk-ACNOWRIH.js";
13
+ } from "./chunk-64NQU4PM.js";
14
14
  import "./chunk-2ZD3YTVM.js";
15
15
  import {
16
16
  SUBAGENT_ALLOWED_TOOLS
17
- } from "./chunk-WT2NPBJK.js";
17
+ } from "./chunk-6UQU5UBM.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.129",
3
+ "version": "0.4.131",
4
4
  "description": "Cross-platform REPL-style AI CLI with multi-provider support",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",