jinzd-ai-cli 0.4.309 → 0.4.310

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 (32) hide show
  1. package/dist/{batch-H4WWSZQ3.js → batch-O5SXWZ4D.js} +2 -2
  2. package/dist/{chunk-RLERORUI.js → chunk-3YEUWSKJ.js} +1 -1
  3. package/dist/{chunk-HXINWG37.js → chunk-3YZGQIDN.js} +1 -1
  4. package/dist/{chunk-IW6Q66WS.js → chunk-5J4KKOEK.js} +3 -3
  5. package/dist/{chunk-K4F7QEGW.js → chunk-A7WJGEXR.js} +1 -1
  6. package/dist/{chunk-RBCKX2FZ.js → chunk-LCVJYA32.js} +1 -1
  7. package/dist/{chunk-T42GXE7Y.js → chunk-MKQZEKX5.js} +7 -7
  8. package/dist/{chunk-2E5W2E64.js → chunk-QGOHEDYN.js} +1 -1
  9. package/dist/{chunk-3CNPJLVI.js → chunk-SXWQKEU4.js} +1 -1
  10. package/dist/{chunk-SCG2VBPB.js → chunk-TF5343WH.js} +3 -3
  11. package/dist/{chunk-EAVX3RLD.js → chunk-TSACXF4M.js} +1 -1
  12. package/dist/{chunk-4BXTGXZ6.js → chunk-WKAILZFD.js} +1 -1
  13. package/dist/{chunk-3GEO2LPO.js → chunk-WKNVMMCN.js} +1 -1
  14. package/dist/{chunk-O7MMYJAD.js → chunk-WKPPGB7V.js} +6 -5
  15. package/dist/{ci-H6GPHG4T.js → ci-M4K3JCYV.js} +4 -4
  16. package/dist/{ci-format-U47GSGYU.js → ci-format-EHIWLOUS.js} +2 -2
  17. package/dist/{constants-GYJTB6KI.js → constants-5H5VNSST.js} +1 -1
  18. package/dist/{constants-SNJR6546.js → constants-RCFLPOBR.js} +1 -1
  19. package/dist/{doctor-cli-J6LAQ5LU.js → doctor-cli-GMM6AOFR.js} +4 -4
  20. package/dist/electron-server.js +12 -11
  21. package/dist/{hub-G5FMMTVZ.js → hub-55SCA6IZ.js} +1 -1
  22. package/dist/index.js +43 -23
  23. package/dist/{persistent-memory-EXJBXL33.js → persistent-memory-GKL3V6OV.js} +2 -2
  24. package/dist/{persistent-memory-LEE454DW.js → persistent-memory-WV7EXQKP.js} +2 -2
  25. package/dist/{pr-6PUHVJ6K.js → pr-ROHHZXSS.js} +4 -4
  26. package/dist/{run-tests-33ZVQE3Q.js → run-tests-EI4HRC7T.js} +2 -2
  27. package/dist/{run-tests-2C7MWZBN.js → run-tests-RGDSMN5K.js} +2 -2
  28. package/dist/{server-AJH5TBVO.js → server-4YPZGX3J.js} +13 -13
  29. package/dist/{server-CYAB56O3.js → server-HONA3NPQ.js} +5 -5
  30. package/dist/{task-orchestrator-HNRV3YUD.js → task-orchestrator-IC5WWIY3.js} +5 -5
  31. package/dist/{usage-ZN5DU6Z7.js → usage-J2ALUUKQ.js} +2 -2
  32. package/package.json +1 -1
@@ -4,12 +4,12 @@ import {
4
4
  } from "./chunk-RS7SKYTS.js";
5
5
  import {
6
6
  ConfigManager
7
- } from "./chunk-RBCKX2FZ.js";
7
+ } from "./chunk-LCVJYA32.js";
8
8
  import "./chunk-TU3L3PW7.js";
9
9
  import {
10
10
  atomicWriteFileSync
11
11
  } from "./chunk-BMLQPSHP.js";
12
- import "./chunk-3CNPJLVI.js";
12
+ import "./chunk-SXWQKEU4.js";
13
13
 
14
14
  // src/cli/batch.ts
15
15
  import Anthropic from "@anthropic-ai/sdk";
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-QMFMST2T.js";
5
5
  import {
6
6
  TEST_TIMEOUT
7
- } from "./chunk-EAVX3RLD.js";
7
+ } from "./chunk-TSACXF4M.js";
8
8
 
9
9
  // src/tools/builtin/run-tests.ts
10
10
  import { spawn as spawn2 } from "child_process";
@@ -13,7 +13,7 @@ import {
13
13
  MEMORY_FILE_NAME,
14
14
  MEMORY_MAX_CHARS,
15
15
  MEMORY_STORE_FILE_NAME
16
- } from "./chunk-3CNPJLVI.js";
16
+ } from "./chunk-SXWQKEU4.js";
17
17
 
18
18
  // src/memory/persistent-memory.ts
19
19
  import { copyFileSync, existsSync, mkdirSync, readFileSync, statSync } from "fs";
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  evaluateCiGate,
4
4
  normalizeCiThresholds
5
- } from "./chunk-K4F7QEGW.js";
5
+ } from "./chunk-A7WJGEXR.js";
6
6
  import {
7
7
  buildReviewPrompt,
8
8
  buildSecurityReviewPrompt,
@@ -16,10 +16,10 @@ import {
16
16
  } from "./chunk-EHMMBIZT.js";
17
17
  import {
18
18
  ConfigManager
19
- } from "./chunk-RBCKX2FZ.js";
19
+ } from "./chunk-LCVJYA32.js";
20
20
  import {
21
21
  VERSION
22
- } from "./chunk-3CNPJLVI.js";
22
+ } from "./chunk-SXWQKEU4.js";
23
23
 
24
24
  // src/cli/ci.ts
25
25
  import { execFileSync } from "child_process";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  VERSION
4
- } from "./chunk-3CNPJLVI.js";
4
+ } from "./chunk-SXWQKEU4.js";
5
5
 
6
6
  // src/cli/ci-format.ts
7
7
  var DEFAULT_CI_THRESHOLDS = {
@@ -11,7 +11,7 @@ import {
11
11
  CONFIG_FILE_NAME,
12
12
  HISTORY_DIR_NAME,
13
13
  PLUGINS_DIR_NAME
14
- } from "./chunk-3CNPJLVI.js";
14
+ } from "./chunk-SXWQKEU4.js";
15
15
 
16
16
  // src/config/config-manager.ts
17
17
  import { readFileSync, existsSync, mkdirSync } from "fs";
@@ -16,7 +16,7 @@ import {
16
16
  setPreferredAgentName,
17
17
  truncateForPersist,
18
18
  undoStack
19
- } from "./chunk-O7MMYJAD.js";
19
+ } from "./chunk-WKPPGB7V.js";
20
20
  import {
21
21
  buildReviewPrompt,
22
22
  buildSecurityReviewPrompt
@@ -51,7 +51,7 @@ import {
51
51
  touchMemoryReferences,
52
52
  updateMemoryApproval,
53
53
  updateMemoryEntry
54
- } from "./chunk-HXINWG37.js";
54
+ } from "./chunk-3YZGQIDN.js";
55
55
  import {
56
56
  theme
57
57
  } from "./chunk-5C76XDDF.js";
@@ -65,7 +65,7 @@ import {
65
65
  import {
66
66
  buildDoctorReport,
67
67
  formatDoctorReport
68
- } from "./chunk-SCG2VBPB.js";
68
+ } from "./chunk-TF5343WH.js";
69
69
  import {
70
70
  describePlugin,
71
71
  getActivePluginAssets,
@@ -80,7 +80,7 @@ import {
80
80
  trustHook,
81
81
  trustPlugin,
82
82
  untrustHook
83
- } from "./chunk-4BXTGXZ6.js";
83
+ } from "./chunk-WKAILZFD.js";
84
84
  import {
85
85
  isCleanDocumentBody,
86
86
  stripOuterCodeFence
@@ -109,7 +109,7 @@ import {
109
109
  MCP_TOOL_PREFIX,
110
110
  REPO_URL,
111
111
  VERSION
112
- } from "./chunk-3CNPJLVI.js";
112
+ } from "./chunk-SXWQKEU4.js";
113
113
 
114
114
  // src/skills/manager.ts
115
115
  import { existsSync, readdirSync, mkdirSync, statSync } from "fs";
@@ -2426,7 +2426,7 @@ No tools match "${filter}".
2426
2426
  const { join: join6 } = await import("path");
2427
2427
  const { existsSync: existsSync6 } = await import("fs");
2428
2428
  const { getGitRoot } = await import("./git-context-EXOEHQSF.js");
2429
- const { MCP_PROJECT_CONFIG_NAME } = await import("./constants-SNJR6546.js");
2429
+ const { MCP_PROJECT_CONFIG_NAME } = await import("./constants-RCFLPOBR.js");
2430
2430
  const { approveProject, hashMcpFile } = await import("./project-trust-KGG2BWKC.js");
2431
2431
  const cwd = process.cwd();
2432
2432
  const projectRoot = getGitRoot(cwd) ?? cwd;
@@ -3534,7 +3534,7 @@ function createReviewCommands() {
3534
3534
  usage: "/test [command|filter]",
3535
3535
  async execute(args, ctx) {
3536
3536
  try {
3537
- const { executeTests } = await import("./run-tests-33ZVQE3Q.js");
3537
+ const { executeTests } = await import("./run-tests-EI4HRC7T.js");
3538
3538
  const argStr = args.join(" ").trim();
3539
3539
  let testArgs = {};
3540
3540
  if (argStr) {
@@ -12,7 +12,7 @@ import {
12
12
  MEMORY_FILE_NAME,
13
13
  MEMORY_MAX_CHARS,
14
14
  MEMORY_STORE_FILE_NAME
15
- } from "./chunk-EAVX3RLD.js";
15
+ } from "./chunk-TSACXF4M.js";
16
16
 
17
17
  // src/memory/persistent-memory.ts
18
18
  import { copyFileSync, existsSync, mkdirSync, readFileSync, statSync } from "fs";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  // src/core/constants.ts
4
- var VERSION = "0.4.309";
4
+ var VERSION = "0.4.310";
5
5
  var APP_NAME = "ai-cli";
6
6
  var CONFIG_DIR_NAME = ".aicli";
7
7
  var CONFIG_FILE_NAME = "config.json";
@@ -8,13 +8,13 @@ import {
8
8
  listHooks,
9
9
  listInstalledPlugins,
10
10
  resetStats
11
- } from "./chunk-4BXTGXZ6.js";
11
+ } from "./chunk-WKAILZFD.js";
12
12
  import {
13
13
  ProviderRegistry
14
14
  } from "./chunk-EHMMBIZT.js";
15
15
  import {
16
16
  ConfigManager
17
- } from "./chunk-RBCKX2FZ.js";
17
+ } from "./chunk-LCVJYA32.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-3CNPJLVI.js";
29
+ } from "./chunk-SXWQKEU4.js";
30
30
 
31
31
  // src/diagnostics/doctor-report.ts
32
32
  import { existsSync as existsSync3, statSync as statSync2 } from "fs";
@@ -1,5 +1,5 @@
1
1
  // src/core/constants.ts
2
- var VERSION = "0.4.309";
2
+ var VERSION = "0.4.310";
3
3
  var APP_NAME = "ai-cli";
4
4
  var CONFIG_DIR_NAME = ".aicli";
5
5
  var CONFIG_FILE_NAME = "config.json";
@@ -8,7 +8,7 @@ import {
8
8
  import {
9
9
  CONFIG_DIR_NAME,
10
10
  PLUGINS_DIR_NAME
11
- } from "./chunk-3CNPJLVI.js";
11
+ } from "./chunk-SXWQKEU4.js";
12
12
 
13
13
  // src/diagnostics/tool-stats.ts
14
14
  import { mkdirSync } from "fs";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  TEST_TIMEOUT
4
- } from "./chunk-3CNPJLVI.js";
4
+ } from "./chunk-SXWQKEU4.js";
5
5
  import {
6
6
  getExecutionConfigDir,
7
7
  getExecutionSignal
@@ -11,7 +11,7 @@ import {
11
11
  searchPersistentMemories,
12
12
  touchMemoryReferences,
13
13
  updateMemoryEntry
14
- } from "./chunk-HXINWG37.js";
14
+ } from "./chunk-3YZGQIDN.js";
15
15
  import {
16
16
  indexProject
17
17
  } from "./chunk-RWRZVQCB.js";
@@ -30,7 +30,7 @@ import {
30
30
  runHook,
31
31
  runLifecycleHooks,
32
32
  runTool
33
- } from "./chunk-4BXTGXZ6.js";
33
+ } from "./chunk-WKAILZFD.js";
34
34
  import {
35
35
  buildTruncatedArgumentsError,
36
36
  getDangerLevel,
@@ -63,7 +63,7 @@ import {
63
63
  recoverGbkMojibake,
64
64
  runTestsTool,
65
65
  shellInvocation
66
- } from "./chunk-3GEO2LPO.js";
66
+ } from "./chunk-WKNVMMCN.js";
67
67
  import {
68
68
  CONFIG_DIR_NAME,
69
69
  DEFAULT_MAX_TOOL_OUTPUT_CHARS_CAP,
@@ -72,7 +72,7 @@ import {
72
72
  SUBAGENT_ALLOWED_TOOLS,
73
73
  SUBAGENT_DEFAULT_MAX_ROUNDS,
74
74
  SUBAGENT_MAX_ROUNDS_LIMIT
75
- } from "./chunk-3CNPJLVI.js";
75
+ } from "./chunk-SXWQKEU4.js";
76
76
  import {
77
77
  getCurrentSessionKey,
78
78
  getExecutionConfigDir,
@@ -1448,9 +1448,10 @@ ${err.message}`;
1448
1448
  }
1449
1449
  if (BINARY_EXTENSIONS.has(ext)) {
1450
1450
  if (IMAGE_EXTENSIONS.has(ext)) {
1451
+ const ref = /\s/.test(filePath) ? `@"${filePath}"` : `@${filePath}`;
1451
1452
  return `[Image file: ${filePath} (${ext})]
1452
1453
  read_file cannot return image content \u2014 tool results are text-only, so no tool can put an image into your context.
1453
- To have an image looked at, ask the USER to reference it from their input line with @${filePath} (they can use a glob for a batch, e.g. @dir/*.png, up to ${MAX_GLOB_MATCHES} at a time). A vision-capable model must be active, or the reference is rejected.
1454
+ To have an image looked at, ask the USER to reference it from their input line with ${ref} (quote the path exactly like that when it contains spaces; they can use a glob for a batch, e.g. @dir/*.png, up to ${MAX_GLOB_MATCHES} at a time). A vision-capable model must be active, or the reference is rejected.
1454
1455
  Do NOT claim you inspected this image \u2014 you have not seen it.`;
1455
1456
  }
1456
1457
  return `[Binary file: ${filePath} (${ext})]
@@ -3,16 +3,16 @@ import {
3
3
  CI_COMMENT_MARKER,
4
4
  countSeverity,
5
5
  runCi
6
- } from "./chunk-IW6Q66WS.js";
7
- import "./chunk-K4F7QEGW.js";
6
+ } from "./chunk-5J4KKOEK.js";
7
+ import "./chunk-A7WJGEXR.js";
8
8
  import "./chunk-HLWUDRBO.js";
9
9
  import "./chunk-6YZEZFX5.js";
10
10
  import "./chunk-EHMMBIZT.js";
11
- import "./chunk-RBCKX2FZ.js";
11
+ import "./chunk-LCVJYA32.js";
12
12
  import "./chunk-RMEJR3AW.js";
13
13
  import "./chunk-TU3L3PW7.js";
14
14
  import "./chunk-BMLQPSHP.js";
15
- import "./chunk-3CNPJLVI.js";
15
+ import "./chunk-SXWQKEU4.js";
16
16
  export {
17
17
  CI_COMMENT_MARKER,
18
18
  countSeverity,
@@ -6,8 +6,8 @@ import {
6
6
  formatCiResult,
7
7
  formatCiSarif,
8
8
  normalizeCiThresholds
9
- } from "./chunk-K4F7QEGW.js";
10
- import "./chunk-3CNPJLVI.js";
9
+ } from "./chunk-A7WJGEXR.js";
10
+ import "./chunk-SXWQKEU4.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-EAVX3RLD.js";
41
+ } from "./chunk-TSACXF4M.js";
42
42
  export {
43
43
  AGENTIC_BEHAVIOR_GUIDELINE,
44
44
  APP_NAME,
@@ -39,7 +39,7 @@ import {
39
39
  TEST_TIMEOUT,
40
40
  VERSION,
41
41
  buildUserIdentityPrompt
42
- } from "./chunk-3CNPJLVI.js";
42
+ } from "./chunk-SXWQKEU4.js";
43
43
  export {
44
44
  AGENTIC_BEHAVIOR_GUIDELINE,
45
45
  APP_NAME,
@@ -2,16 +2,16 @@
2
2
  import {
3
3
  formatDoctorReport,
4
4
  runDoctorCli
5
- } from "./chunk-SCG2VBPB.js";
6
- import "./chunk-4BXTGXZ6.js";
5
+ } from "./chunk-TF5343WH.js";
6
+ import "./chunk-WKAILZFD.js";
7
7
  import "./chunk-RS7SKYTS.js";
8
8
  import "./chunk-EHMMBIZT.js";
9
- import "./chunk-RBCKX2FZ.js";
9
+ import "./chunk-LCVJYA32.js";
10
10
  import "./chunk-RMEJR3AW.js";
11
11
  import "./chunk-TU3L3PW7.js";
12
12
  import "./chunk-HOSJZMQS.js";
13
13
  import "./chunk-BMLQPSHP.js";
14
- import "./chunk-3CNPJLVI.js";
14
+ import "./chunk-SXWQKEU4.js";
15
15
  export {
16
16
  formatDoctorReport,
17
17
  runDoctorCli
@@ -55,7 +55,7 @@ import {
55
55
  touchMemoryReferences,
56
56
  updateMemoryApproval,
57
57
  updateMemoryEntry
58
- } from "./chunk-2E5W2E64.js";
58
+ } from "./chunk-QGOHEDYN.js";
59
59
  import {
60
60
  DEFAULT_PATTERNS,
61
61
  redactJson,
@@ -80,7 +80,7 @@ import {
80
80
  recoverGbkMojibake,
81
81
  runTestsTool,
82
82
  shellInvocation
83
- } from "./chunk-RLERORUI.js";
83
+ } from "./chunk-3YEUWSKJ.js";
84
84
  import {
85
85
  getCurrentSessionKey,
86
86
  getExecutionConfigDir,
@@ -122,7 +122,7 @@ import {
122
122
  SUBAGENT_MAX_ROUNDS_LIMIT,
123
123
  VERSION,
124
124
  buildUserIdentityPrompt
125
- } from "./chunk-EAVX3RLD.js";
125
+ } from "./chunk-TSACXF4M.js";
126
126
 
127
127
  // src/web/access.ts
128
128
  import { randomBytes, timingSafeEqual } from "crypto";
@@ -7091,9 +7091,10 @@ ${err.message}`;
7091
7091
  }
7092
7092
  if (BINARY_EXTENSIONS.has(ext)) {
7093
7093
  if (IMAGE_EXTENSIONS.has(ext)) {
7094
+ const ref = /\s/.test(filePath) ? `@"${filePath}"` : `@${filePath}`;
7094
7095
  return `[Image file: ${filePath} (${ext})]
7095
7096
  read_file cannot return image content \u2014 tool results are text-only, so no tool can put an image into your context.
7096
- To have an image looked at, ask the USER to reference it from their input line with @${filePath} (they can use a glob for a batch, e.g. @dir/*.png, up to ${MAX_GLOB_MATCHES} at a time). A vision-capable model must be active, or the reference is rejected.
7097
+ To have an image looked at, ask the USER to reference it from their input line with ${ref} (quote the path exactly like that when it contains spaces; they can use a glob for a batch, e.g. @dir/*.png, up to ${MAX_GLOB_MATCHES} at a time). A vision-capable model must be active, or the reference is rejected.
7097
7098
  Do NOT claim you inspected this image \u2014 you have not seen it.`;
7098
7099
  }
7099
7100
  return `[Binary file: ${filePath} (${ext})]
@@ -17258,7 +17259,7 @@ Cache: write=${cacheCreate} read=${cacheRead}` : "";
17258
17259
  Cost: ${formatCost(cost)}` : "";
17259
17260
  let memoryLine = "";
17260
17261
  try {
17261
- const { countPendingMemories: countPendingMemories2 } = await import("./persistent-memory-EXJBXL33.js");
17262
+ const { countPendingMemories: countPendingMemories2 } = await import("./persistent-memory-GKL3V6OV.js");
17262
17263
  const pending = countPendingMemories2(ctx.config.getConfigDir());
17263
17264
  if (pending > 0) memoryLine = `
17264
17265
  Memory: \u26A0 ${pending} pending approval \u2014 see the Memory panel or /memory`;
@@ -18246,7 +18247,7 @@ async function handleTest(args, ctx) {
18246
18247
  const isCommand = argStr.includes(" ") || /^(mvn|gradle|npm|pytest|cargo|go)\b/.test(argStr);
18247
18248
  testArgs = isCommand ? { command: argStr } : { filter: argStr };
18248
18249
  }
18249
- const runTests = ctx.runTests ?? (await import("./run-tests-2C7MWZBN.js")).executeTests;
18250
+ const runTests = ctx.runTests ?? (await import("./run-tests-RGDSMN5K.js")).executeTests;
18250
18251
  const report = await runTests(testArgs);
18251
18252
  ctx.send({ type: "info", message: report });
18252
18253
  } catch (err) {
@@ -18637,7 +18638,7 @@ async function handleMemory(args, ctx) {
18637
18638
  }
18638
18639
  if (intent.kind === "status") {
18639
18640
  const { getChatIndexStatus: getChatIndexStatus2 } = await import("./chat-index-RLVLQRRC.js");
18640
- const { listMemoryEntries: listMemoryEntries2, isMemoryExpired: isMemoryExpired2, formatMemoryForPrompt: formatMemoryForPrompt2 } = await import("./persistent-memory-EXJBXL33.js");
18641
+ const { listMemoryEntries: listMemoryEntries2, isMemoryExpired: isMemoryExpired2, formatMemoryForPrompt: formatMemoryForPrompt2 } = await import("./persistent-memory-GKL3V6OV.js");
18641
18642
  const memories = listMemoryEntries2(configDir, { includeExpired: true, includeRejected: true });
18642
18643
  const injected = formatMemoryForPrompt2(configDir, process.cwd(), ctx.config.get("memory")?.maxChars);
18643
18644
  const view = buildMemoryStatusView({
@@ -18660,7 +18661,7 @@ async function handleMemory(args, ctx) {
18660
18661
  return;
18661
18662
  }
18662
18663
  if (intent.kind === "recall") {
18663
- const { searchPersistentMemories: searchPersistentMemories2, touchMemoryReferences: touchMemoryReferences2 } = await import("./persistent-memory-EXJBXL33.js");
18664
+ const { searchPersistentMemories: searchPersistentMemories2, touchMemoryReferences: touchMemoryReferences2 } = await import("./persistent-memory-GKL3V6OV.js");
18664
18665
  const { searchChatMemory: searchChatMemory2 } = await import("./chat-index-RLVLQRRC.js");
18665
18666
  const persistentHits = searchPersistentMemories2(configDir, intent.query, process.cwd(), 3);
18666
18667
  if (persistentHits.length > 0) {
@@ -18781,7 +18782,7 @@ async function handleMemory(args, ctx) {
18781
18782
  ctx.handleMemoryManage(intent.action, args[1], intent.action === "expire" ? args[2] : void 0);
18782
18783
  } else if (intent.kind === "export") {
18783
18784
  if (args[1] === "md") {
18784
- const { exportMemoryEntries: exportMemoryEntries2 } = await import("./persistent-memory-EXJBXL33.js");
18785
+ const { exportMemoryEntries: exportMemoryEntries2 } = await import("./persistent-memory-GKL3V6OV.js");
18785
18786
  ctx.send({
18786
18787
  type: "export_data",
18787
18788
  format: "md",
@@ -19786,7 +19787,7 @@ No tools match "${filter}".
19786
19787
  const { join: join26 } = await import("path");
19787
19788
  const { existsSync: existsSync32 } = await import("fs");
19788
19789
  const { getGitRoot: getGitRoot2 } = await import("./git-context-VNCA2GU7.js");
19789
- const { MCP_PROJECT_CONFIG_NAME: MCP_PROJECT_CONFIG_NAME2 } = await import("./constants-GYJTB6KI.js");
19790
+ const { MCP_PROJECT_CONFIG_NAME: MCP_PROJECT_CONFIG_NAME2 } = await import("./constants-5H5VNSST.js");
19790
19791
  const { approveProject, hashMcpFile } = await import("./project-trust-6CJB5ZMX.js");
19791
19792
  const cwd = process.cwd();
19792
19793
  const projectRoot = getGitRoot2(cwd) ?? cwd;
@@ -20705,7 +20706,7 @@ function createReviewCommands() {
20705
20706
  usage: "/test [command|filter]",
20706
20707
  async execute(args, ctx) {
20707
20708
  try {
20708
- const { executeTests } = await import("./run-tests-2C7MWZBN.js");
20709
+ const { executeTests } = await import("./run-tests-RGDSMN5K.js");
20709
20710
  const argStr = args.join(" ").trim();
20710
20711
  let testArgs = {};
20711
20712
  if (argStr) {
@@ -158,7 +158,7 @@ ${content}`);
158
158
  }
159
159
  }
160
160
  async function runTaskMode(config, providers, configManager, topic) {
161
- const { TaskOrchestrator } = await import("./task-orchestrator-HNRV3YUD.js");
161
+ const { TaskOrchestrator } = await import("./task-orchestrator-IC5WWIY3.js");
162
162
  const orchestrator = new TaskOrchestrator(config, providers, configManager);
163
163
  let interrupted = false;
164
164
  const onSigint = () => {
package/dist/index.js CHANGED
@@ -24,7 +24,7 @@ import {
24
24
  setupProxy,
25
25
  snapshotFile,
26
26
  stripRoutingTags
27
- } from "./chunk-T42GXE7Y.js";
27
+ } from "./chunk-MKQZEKX5.js";
28
28
  import {
29
29
  CostTracker,
30
30
  getPricing,
@@ -47,7 +47,7 @@ import {
47
47
  setMaxOutputCap,
48
48
  spawnAgentContext,
49
49
  undoStack
50
- } from "./chunk-O7MMYJAD.js";
50
+ } from "./chunk-WKPPGB7V.js";
51
51
  import "./chunk-HLWUDRBO.js";
52
52
  import {
53
53
  NO_THINKING,
@@ -60,7 +60,7 @@ import {
60
60
  countPendingMemories,
61
61
  detectStaleLegacyMarkdownEdit,
62
62
  formatMemoryForPrompt
63
- } from "./chunk-HXINWG37.js";
63
+ } from "./chunk-3YZGQIDN.js";
64
64
  import "./chunk-RWRZVQCB.js";
65
65
  import "./chunk-B3MPYI4E.js";
66
66
  import "./chunk-M6HLYG33.js";
@@ -81,14 +81,14 @@ import {
81
81
  import {
82
82
  loadContextFiles,
83
83
  writeCrashLog
84
- } from "./chunk-SCG2VBPB.js";
84
+ } from "./chunk-TF5343WH.js";
85
85
  import {
86
86
  getActivePluginAssets,
87
87
  getPendingHookTrust,
88
88
  installFlushOnExit,
89
89
  mergePluginHooks,
90
90
  runLifecycleHooks
91
- } from "./chunk-4BXTGXZ6.js";
91
+ } from "./chunk-WKAILZFD.js";
92
92
  import "./chunk-RS7SKYTS.js";
93
93
  import {
94
94
  ProviderRegistry,
@@ -96,7 +96,7 @@ import {
96
96
  } from "./chunk-EHMMBIZT.js";
97
97
  import {
98
98
  ConfigManager
99
- } from "./chunk-RBCKX2FZ.js";
99
+ } from "./chunk-LCVJYA32.js";
100
100
  import {
101
101
  CONTENT_ONLY_STREAM_REMINDER,
102
102
  TEE_FINAL_USER_NUDGE,
@@ -134,7 +134,7 @@ import {
134
134
  isInterrupted,
135
135
  requestInterrupt,
136
136
  resetInterrupt
137
- } from "./chunk-3GEO2LPO.js";
137
+ } from "./chunk-WKNVMMCN.js";
138
138
  import {
139
139
  AGENTIC_BEHAVIOR_GUIDELINE,
140
140
  AUTHOR,
@@ -152,7 +152,7 @@ import {
152
152
  SKILLS_DIR_NAME,
153
153
  VERSION,
154
154
  buildUserIdentityPrompt
155
- } from "./chunk-3CNPJLVI.js";
155
+ } from "./chunk-SXWQKEU4.js";
156
156
  import "./chunk-SXIJLSVF.js";
157
157
 
158
158
  // src/index.ts
@@ -1125,21 +1125,41 @@ function expandGlob(rawPath, cwd) {
1125
1125
  return { kind: "ok", files };
1126
1126
  }
1127
1127
  var MAX_PATH_SPACE_TOKENS = 8;
1128
+ function stripQuoteChars(s) {
1129
+ return s.replace(/["']/g, "");
1130
+ }
1131
+ function quotesBalanced(s) {
1132
+ const dq = (s.match(/"/g) ?? []).length;
1133
+ const sq = (s.match(/'/g) ?? []).length;
1134
+ return dq % 2 === 0 && sq % 2 === 0 && (dq > 0 || sq > 0);
1135
+ }
1128
1136
  function expandUnquotedPath(input, pathStart, rawPath, cwd) {
1129
- const plain = { raw: rawPath, consumed: rawPath.length };
1137
+ const plain = { text: rawPath, path: rawPath, consumed: rawPath.length };
1130
1138
  if (existsSync2(resolve(cwd, rawPath))) return plain;
1131
1139
  let acc = rawPath;
1132
1140
  let consumed = rawPath.length;
1133
1141
  let rest = input.slice(pathStart + rawPath.length);
1142
+ let balancedFallback = null;
1143
+ const dequoted = stripQuoteChars(acc);
1144
+ if (dequoted !== acc && existsSync2(resolve(cwd, dequoted))) {
1145
+ return { text: acc, path: dequoted, consumed };
1146
+ }
1134
1147
  for (let i = 0; i < MAX_PATH_SPACE_TOKENS; i++) {
1135
1148
  const next = /^([ \t]+)(\S+)/.exec(rest);
1136
1149
  if (!next) break;
1137
1150
  acc += next[1] + next[2];
1138
1151
  consumed += next[0].length;
1139
1152
  rest = rest.slice(next[0].length);
1140
- if (existsSync2(resolve(cwd, acc))) return { raw: acc, consumed };
1153
+ if (existsSync2(resolve(cwd, acc))) return { text: acc, path: acc, consumed };
1154
+ const candidate = stripQuoteChars(acc);
1155
+ if (candidate !== acc) {
1156
+ if (existsSync2(resolve(cwd, candidate))) return { text: acc, path: candidate, consumed };
1157
+ if (balancedFallback === null && quotesBalanced(acc)) {
1158
+ balancedFallback = { text: acc, path: candidate, consumed };
1159
+ }
1160
+ }
1141
1161
  }
1142
- return plain;
1162
+ return balancedFallback ?? plain;
1143
1163
  }
1144
1164
  function parseAtReferences(input, cwd) {
1145
1165
  const atPattern = /@(?:"([^"]+)"|'([^']+)'|(\S+))/g;
@@ -1153,9 +1173,9 @@ function parseAtReferences(input, cwd) {
1153
1173
  if (match[3] !== void 0) {
1154
1174
  const pathStart = match.index + 1;
1155
1175
  const expanded = expandUnquotedPath(input, pathStart, rawPath, cwd);
1156
- if (expanded.consumed > rawPath.length) {
1157
- rawPath = expanded.raw;
1158
- matchedText = "@" + expanded.raw;
1176
+ if (expanded.consumed > rawPath.length || expanded.path !== rawPath) {
1177
+ rawPath = expanded.path;
1178
+ matchedText = "@" + expanded.text;
1159
1179
  atPattern.lastIndex = pathStart + expanded.consumed;
1160
1180
  }
1161
1181
  }
@@ -4068,7 +4088,7 @@ program.command("web").description("Start Web UI server with browser-based chat
4068
4088
  console.error("Error: Invalid port number. Must be between 1 and 65535.");
4069
4089
  process.exit(1);
4070
4090
  }
4071
- const { startWebServer } = await import("./server-AJH5TBVO.js");
4091
+ const { startWebServer } = await import("./server-4YPZGX3J.js");
4072
4092
  await startWebServer({ port, host: options.host, externalOrigin: options.externalOrigin });
4073
4093
  });
4074
4094
  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) => {
@@ -4235,11 +4255,11 @@ program.command("sessions").description("List recent conversation sessions").opt
4235
4255
  console.log(footer + "\n");
4236
4256
  });
4237
4257
  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) => {
4238
- const { runUsageCli } = await import("./usage-ZN5DU6Z7.js");
4258
+ const { runUsageCli } = await import("./usage-J2ALUUKQ.js");
4239
4259
  await runUsageCli(options);
4240
4260
  });
4241
4261
  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) => {
4242
- const { runDoctorCli } = await import("./doctor-cli-J6LAQ5LU.js");
4262
+ const { runDoctorCli } = await import("./doctor-cli-GMM6AOFR.js");
4243
4263
  const argv = process.argv.slice(2);
4244
4264
  await runDoctorCli({
4245
4265
  json: !!options.json || argv.includes("--json"),
@@ -4248,7 +4268,7 @@ program.command("doctor").description("Health check: API keys, config, MCP, rece
4248
4268
  });
4249
4269
  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) => {
4250
4270
  try {
4251
- const batch = await import("./batch-H4WWSZQ3.js");
4271
+ const batch = await import("./batch-O5SXWZ4D.js");
4252
4272
  switch (action) {
4253
4273
  case "submit":
4254
4274
  if (!arg) {
@@ -4291,7 +4311,7 @@ program.command("batch <action> [arg] [arg2]").description("Anthropic Message Ba
4291
4311
  }
4292
4312
  });
4293
4313
  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) => {
4294
- const { startMcpServer } = await import("./server-CYAB56O3.js");
4314
+ const { startMcpServer } = await import("./server-HONA3NPQ.js");
4295
4315
  await startMcpServer({
4296
4316
  allowDestructive: !!options.allowDestructive,
4297
4317
  allowOutsideCwd: !!options.allowOutsideCwd,
@@ -4304,7 +4324,7 @@ program.command("pr <action> [target]").description("PR review helpers: review |
4304
4324
  console.error(`Unknown pr action: ${action}. Use review | security-review | summarize.`);
4305
4325
  process.exit(1);
4306
4326
  }
4307
- const { runPrCli } = await import("./pr-6PUHVJ6K.js");
4327
+ const { runPrCli } = await import("./pr-ROHHZXSS.js");
4308
4328
  const result = await runPrCli({
4309
4329
  action,
4310
4330
  target,
@@ -4324,8 +4344,8 @@ program.command("pr <action> [target]").description("PR review helpers: review |
4324
4344
  process.exit(result.exitCode);
4325
4345
  });
4326
4346
  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) => {
4327
- const { runCi } = await import("./ci-H6GPHG4T.js");
4328
- const { formatCiResult } = await import("./ci-format-U47GSGYU.js");
4347
+ const { runCi } = await import("./ci-M4K3JCYV.js");
4348
+ const { formatCiResult } = await import("./ci-format-EHIWLOUS.js");
4329
4349
  const formats = [options.json, options.markdown, options.sarif].filter(Boolean).length;
4330
4350
  if (formats > 1) {
4331
4351
  console.error("Choose only one output format: --json, --markdown, or --sarif.");
@@ -4484,7 +4504,7 @@ program.command("hub [topic]").description("Start multi-agent hub (discuss / bra
4484
4504
  config.get("customProviders"),
4485
4505
  config.getConfigDir()
4486
4506
  );
4487
- const { startHub } = await import("./hub-G5FMMTVZ.js");
4507
+ const { startHub } = await import("./hub-55SCA6IZ.js");
4488
4508
  await startHub(
4489
4509
  {
4490
4510
  topic: topic ?? "",
@@ -27,11 +27,11 @@ import {
27
27
  touchMemoryReferences,
28
28
  updateMemoryApproval,
29
29
  updateMemoryEntry
30
- } from "./chunk-2E5W2E64.js";
30
+ } from "./chunk-QGOHEDYN.js";
31
31
  import "./chunk-FSC6KEWU.js";
32
32
  import "./chunk-2XMUCC42.js";
33
33
  import "./chunk-CGLYJRFA.js";
34
- import "./chunk-EAVX3RLD.js";
34
+ import "./chunk-TSACXF4M.js";
35
35
  export {
36
36
  addMemoryEntry,
37
37
  backupMemoryStore,
@@ -28,11 +28,11 @@ import {
28
28
  touchMemoryReferences,
29
29
  updateMemoryApproval,
30
30
  updateMemoryEntry
31
- } from "./chunk-HXINWG37.js";
31
+ } from "./chunk-3YZGQIDN.js";
32
32
  import "./chunk-3FEZSLGI.js";
33
33
  import "./chunk-HOSJZMQS.js";
34
34
  import "./chunk-BMLQPSHP.js";
35
- import "./chunk-3CNPJLVI.js";
35
+ import "./chunk-SXWQKEU4.js";
36
36
  export {
37
37
  addMemoryEntry,
38
38
  backupMemoryStore,
@@ -2,8 +2,8 @@
2
2
  import {
3
3
  countSeverity,
4
4
  runCi
5
- } from "./chunk-IW6Q66WS.js";
6
- import "./chunk-K4F7QEGW.js";
5
+ } from "./chunk-5J4KKOEK.js";
6
+ import "./chunk-A7WJGEXR.js";
7
7
  import {
8
8
  buildReviewPrompt,
9
9
  buildSecurityReviewPrompt,
@@ -17,13 +17,13 @@ import {
17
17
  } from "./chunk-EHMMBIZT.js";
18
18
  import {
19
19
  ConfigManager
20
- } from "./chunk-RBCKX2FZ.js";
20
+ } from "./chunk-LCVJYA32.js";
21
21
  import "./chunk-RMEJR3AW.js";
22
22
  import "./chunk-TU3L3PW7.js";
23
23
  import "./chunk-BMLQPSHP.js";
24
24
  import {
25
25
  VERSION
26
- } from "./chunk-3CNPJLVI.js";
26
+ } from "./chunk-SXWQKEU4.js";
27
27
 
28
28
  // src/cli/pr.ts
29
29
  import { execFileSync } from "child_process";
@@ -3,8 +3,8 @@ import {
3
3
  executeTests,
4
4
  runTestProcess,
5
5
  runTestsTool
6
- } from "./chunk-3GEO2LPO.js";
7
- import "./chunk-3CNPJLVI.js";
6
+ } from "./chunk-WKNVMMCN.js";
7
+ import "./chunk-SXWQKEU4.js";
8
8
  import "./chunk-SXIJLSVF.js";
9
9
  export {
10
10
  executeTests,
@@ -2,9 +2,9 @@ import {
2
2
  executeTests,
3
3
  runTestProcess,
4
4
  runTestsTool
5
- } from "./chunk-RLERORUI.js";
5
+ } from "./chunk-3YEUWSKJ.js";
6
6
  import "./chunk-QMFMST2T.js";
7
- import "./chunk-EAVX3RLD.js";
7
+ import "./chunk-TSACXF4M.js";
8
8
  export {
9
9
  executeTests,
10
10
  runTestProcess,
@@ -86,7 +86,7 @@ import {
86
86
  skillHistoryNote,
87
87
  snapshotFile,
88
88
  stripRoutingTags
89
- } from "./chunk-T42GXE7Y.js";
89
+ } from "./chunk-MKQZEKX5.js";
90
90
  import {
91
91
  CNY_PER_USD,
92
92
  CostTracker,
@@ -130,7 +130,7 @@ import {
130
130
  spawnAgentContext,
131
131
  truncateOutput,
132
132
  undoStack
133
- } from "./chunk-O7MMYJAD.js";
133
+ } from "./chunk-WKPPGB7V.js";
134
134
  import {
135
135
  buildReviewPrompt,
136
136
  buildSecurityReviewPrompt
@@ -157,7 +157,7 @@ import {
157
157
  restoreMemoryEntries,
158
158
  updateMemoryApproval,
159
159
  updateMemoryEntry
160
- } from "./chunk-HXINWG37.js";
160
+ } from "./chunk-3YZGQIDN.js";
161
161
  import "./chunk-RWRZVQCB.js";
162
162
  import "./chunk-B3MPYI4E.js";
163
163
  import "./chunk-M6HLYG33.js";
@@ -176,7 +176,7 @@ import {
176
176
  buildDoctorReport,
177
177
  formatDoctorReport,
178
178
  loadContextFiles
179
- } from "./chunk-SCG2VBPB.js";
179
+ } from "./chunk-TF5343WH.js";
180
180
  import {
181
181
  describePlugin,
182
182
  getActivePluginAssets,
@@ -191,14 +191,14 @@ import {
191
191
  runTool,
192
192
  setPluginEnabled,
193
193
  trustPlugin
194
- } from "./chunk-4BXTGXZ6.js";
194
+ } from "./chunk-WKAILZFD.js";
195
195
  import "./chunk-RS7SKYTS.js";
196
196
  import {
197
197
  ProviderRegistry
198
198
  } from "./chunk-EHMMBIZT.js";
199
199
  import {
200
200
  ConfigManager
201
- } from "./chunk-RBCKX2FZ.js";
201
+ } from "./chunk-LCVJYA32.js";
202
202
  import {
203
203
  CONTENT_ONLY_STREAM_REMINDER,
204
204
  TEE_FINAL_USER_NUDGE,
@@ -231,7 +231,7 @@ import {
231
231
  import {
232
232
  assertReadablePath
233
233
  } from "./chunk-JJFJWD35.js";
234
- import "./chunk-3GEO2LPO.js";
234
+ import "./chunk-WKNVMMCN.js";
235
235
  import {
236
236
  AGENTIC_BEHAVIOR_GUIDELINE,
237
237
  AUTHOR,
@@ -247,7 +247,7 @@ import {
247
247
  SKILLS_DIR_NAME,
248
248
  VERSION,
249
249
  buildUserIdentityPrompt
250
- } from "./chunk-3CNPJLVI.js";
250
+ } from "./chunk-SXWQKEU4.js";
251
251
  import {
252
252
  runWithExecutionContext,
253
253
  runWithSessionKey
@@ -978,7 +978,7 @@ Cache: write=${cacheCreate} read=${cacheRead}` : "";
978
978
  Cost: ${formatCost(cost)}` : "";
979
979
  let memoryLine = "";
980
980
  try {
981
- const { countPendingMemories: countPendingMemories2 } = await import("./persistent-memory-LEE454DW.js");
981
+ const { countPendingMemories: countPendingMemories2 } = await import("./persistent-memory-WV7EXQKP.js");
982
982
  const pending = countPendingMemories2(ctx.config.getConfigDir());
983
983
  if (pending > 0) memoryLine = `
984
984
  Memory: \u26A0 ${pending} pending approval \u2014 see the Memory panel or /memory`;
@@ -1907,7 +1907,7 @@ async function handleTest(args, ctx) {
1907
1907
  const isCommand = argStr.includes(" ") || /^(mvn|gradle|npm|pytest|cargo|go)\b/.test(argStr);
1908
1908
  testArgs = isCommand ? { command: argStr } : { filter: argStr };
1909
1909
  }
1910
- const runTests = ctx.runTests ?? (await import("./run-tests-33ZVQE3Q.js")).executeTests;
1910
+ const runTests = ctx.runTests ?? (await import("./run-tests-EI4HRC7T.js")).executeTests;
1911
1911
  const report = await runTests(testArgs);
1912
1912
  ctx.send({ type: "info", message: report });
1913
1913
  } catch (err) {
@@ -2183,7 +2183,7 @@ async function handleMemory(args, ctx) {
2183
2183
  }
2184
2184
  if (intent.kind === "status") {
2185
2185
  const { getChatIndexStatus } = await import("./chat-index-7CLR4CBG.js");
2186
- const { listMemoryEntries: listMemoryEntries2, isMemoryExpired: isMemoryExpired2, formatMemoryForPrompt: formatMemoryForPrompt2 } = await import("./persistent-memory-LEE454DW.js");
2186
+ const { listMemoryEntries: listMemoryEntries2, isMemoryExpired: isMemoryExpired2, formatMemoryForPrompt: formatMemoryForPrompt2 } = await import("./persistent-memory-WV7EXQKP.js");
2187
2187
  const memories = listMemoryEntries2(configDir, { includeExpired: true, includeRejected: true });
2188
2188
  const injected = formatMemoryForPrompt2(configDir, process.cwd(), ctx.config.get("memory")?.maxChars);
2189
2189
  const view = buildMemoryStatusView({
@@ -2206,7 +2206,7 @@ async function handleMemory(args, ctx) {
2206
2206
  return;
2207
2207
  }
2208
2208
  if (intent.kind === "recall") {
2209
- const { searchPersistentMemories, touchMemoryReferences } = await import("./persistent-memory-LEE454DW.js");
2209
+ const { searchPersistentMemories, touchMemoryReferences } = await import("./persistent-memory-WV7EXQKP.js");
2210
2210
  const { searchChatMemory } = await import("./chat-index-7CLR4CBG.js");
2211
2211
  const persistentHits = searchPersistentMemories(configDir, intent.query, process.cwd(), 3);
2212
2212
  if (persistentHits.length > 0) {
@@ -2327,7 +2327,7 @@ async function handleMemory(args, ctx) {
2327
2327
  ctx.handleMemoryManage(intent.action, args[1], intent.action === "expire" ? args[2] : void 0);
2328
2328
  } else if (intent.kind === "export") {
2329
2329
  if (args[1] === "md") {
2330
- const { exportMemoryEntries: exportMemoryEntries2 } = await import("./persistent-memory-LEE454DW.js");
2330
+ const { exportMemoryEntries: exportMemoryEntries2 } = await import("./persistent-memory-WV7EXQKP.js");
2331
2331
  ctx.send({
2332
2332
  type: "export_data",
2333
2333
  format: "md",
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ToolRegistry
4
- } from "./chunk-O7MMYJAD.js";
4
+ } from "./chunk-WKPPGB7V.js";
5
5
  import "./chunk-6JHACXB3.js";
6
- import "./chunk-HXINWG37.js";
6
+ import "./chunk-3YZGQIDN.js";
7
7
  import "./chunk-RWRZVQCB.js";
8
8
  import "./chunk-B3MPYI4E.js";
9
9
  import "./chunk-M6HLYG33.js";
@@ -14,7 +14,7 @@ import "./chunk-JL44HGZC.js";
14
14
  import "./chunk-3FEZSLGI.js";
15
15
  import {
16
16
  runTool
17
- } from "./chunk-4BXTGXZ6.js";
17
+ } from "./chunk-WKAILZFD.js";
18
18
  import "./chunk-RS7SKYTS.js";
19
19
  import {
20
20
  getDangerLevel,
@@ -24,10 +24,10 @@ import "./chunk-TU3L3PW7.js";
24
24
  import "./chunk-HOSJZMQS.js";
25
25
  import "./chunk-BMLQPSHP.js";
26
26
  import "./chunk-JJFJWD35.js";
27
- import "./chunk-3GEO2LPO.js";
27
+ import "./chunk-WKNVMMCN.js";
28
28
  import {
29
29
  VERSION
30
- } from "./chunk-3CNPJLVI.js";
30
+ } from "./chunk-SXWQKEU4.js";
31
31
  import "./chunk-SXIJLSVF.js";
32
32
 
33
33
  // src/mcp/server.ts
@@ -4,9 +4,9 @@ import {
4
4
  googleSearchContext,
5
5
  isToolCapableProvider,
6
6
  truncateOutput
7
- } from "./chunk-O7MMYJAD.js";
7
+ } from "./chunk-WKPPGB7V.js";
8
8
  import "./chunk-6JHACXB3.js";
9
- import "./chunk-HXINWG37.js";
9
+ import "./chunk-3YZGQIDN.js";
10
10
  import "./chunk-RWRZVQCB.js";
11
11
  import "./chunk-B3MPYI4E.js";
12
12
  import "./chunk-M6HLYG33.js";
@@ -17,7 +17,7 @@ import "./chunk-JL44HGZC.js";
17
17
  import "./chunk-3FEZSLGI.js";
18
18
  import {
19
19
  runTool
20
- } from "./chunk-4BXTGXZ6.js";
20
+ } from "./chunk-WKAILZFD.js";
21
21
  import "./chunk-RS7SKYTS.js";
22
22
  import {
23
23
  getDangerLevel,
@@ -29,10 +29,10 @@ import {
29
29
  atomicWriteFileSync
30
30
  } from "./chunk-BMLQPSHP.js";
31
31
  import "./chunk-JJFJWD35.js";
32
- import "./chunk-3GEO2LPO.js";
32
+ import "./chunk-WKNVMMCN.js";
33
33
  import {
34
34
  SUBAGENT_ALLOWED_TOOLS
35
- } from "./chunk-3CNPJLVI.js";
35
+ } from "./chunk-SXWQKEU4.js";
36
36
  import "./chunk-SXIJLSVF.js";
37
37
 
38
38
  // src/hub/task-orchestrator.ts
@@ -9,10 +9,10 @@ import {
9
9
  import "./chunk-RS7SKYTS.js";
10
10
  import {
11
11
  ConfigManager
12
- } from "./chunk-RBCKX2FZ.js";
12
+ } from "./chunk-LCVJYA32.js";
13
13
  import "./chunk-TU3L3PW7.js";
14
14
  import "./chunk-BMLQPSHP.js";
15
- import "./chunk-3CNPJLVI.js";
15
+ import "./chunk-SXWQKEU4.js";
16
16
 
17
17
  // src/cli/usage.ts
18
18
  function classifyRowCost(row) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jinzd-ai-cli",
3
- "version": "0.4.309",
3
+ "version": "0.4.310",
4
4
  "description": "Cross-platform REPL-style AI CLI with multi-provider support",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",