jinzd-ai-cli 0.4.273 → 0.4.276

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 (103) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +610 -610
  3. package/README.zh-CN.md +559 -559
  4. package/dist/agent-client-6GX6QQDU.js +0 -0
  5. package/dist/auth-PE3Z5OHS.js +0 -0
  6. package/dist/{batch-LOW3GM26.js → batch-F7SKIBI3.js} +2 -2
  7. package/dist/chat-index-2D5GK2DB.js +0 -0
  8. package/dist/chunk-23SJVOQD.js +0 -0
  9. package/dist/chunk-3FEZSLGI.js +0 -0
  10. package/dist/chunk-4BKXL7SM.js +0 -0
  11. package/dist/{chunk-AUEX6RNY.js → chunk-4KTK2OYU.js} +54 -21
  12. package/dist/{chunk-M3NXF4GD.js → chunk-4NH4Q7QK.js} +1 -1
  13. package/dist/chunk-5C76XDDF.js +0 -0
  14. package/dist/chunk-6YZEZFX5.js +0 -0
  15. package/dist/{chunk-FHXLAJJG.js → chunk-AOISQVXS.js} +1 -1
  16. package/dist/{chunk-FNLWPYP5.js → chunk-ATD2Y3PB.js} +1 -1
  17. package/dist/chunk-BXP6YZ2P.js +0 -0
  18. package/dist/chunk-CGDYO52A.js +0 -0
  19. package/dist/chunk-CKH4KQ4E.js +0 -0
  20. package/dist/{chunk-JT6UN5C6.js → chunk-DPTEC6AQ.js} +3 -0
  21. package/dist/{chunk-EDAUDILT.js → chunk-FLDYAXJR.js} +1 -1
  22. package/dist/chunk-GHWZVPUV.js +0 -0
  23. package/dist/chunk-GLSR2NR3.js +0 -0
  24. package/dist/chunk-HLWUDRBO.js +0 -0
  25. package/dist/chunk-HOSJZMQS.js +0 -0
  26. package/dist/chunk-IW3Q7AE5.js +0 -0
  27. package/dist/chunk-KHYD3WXE.js +0 -0
  28. package/dist/{chunk-Z3UXZ5EI.js → chunk-KWSGSSWN.js} +1 -1
  29. package/dist/{chunk-4FIDMC2K.js → chunk-MCKUGWOY.js} +69 -4
  30. package/dist/chunk-MX75TNE5.js +0 -0
  31. package/dist/{chunk-FN7DE4HA.js → chunk-MXPUOF5K.js} +4 -4
  32. package/dist/chunk-NR5U6LVG.js +0 -0
  33. package/dist/{chunk-ZWCQQZT5.js → chunk-NXAHXWPF.js} +1 -1
  34. package/dist/{chunk-R4YGDJPL.js → chunk-NXNXWM6H.js} +5 -5
  35. package/dist/chunk-NYNSYLFY.js +0 -0
  36. package/dist/{chunk-WSCZRQDR.js → chunk-OMBKLWLJ.js} +1 -1
  37. package/dist/chunk-RYQBBEMM.js +0 -0
  38. package/dist/{chunk-3OBY7WSS.js → chunk-TEXT4DAT.js} +7 -1
  39. package/dist/chunk-TU3L3PW7.js +0 -0
  40. package/dist/{chunk-LEK5WGKV.js → chunk-UNL7NR55.js} +1 -1
  41. package/dist/chunk-UUSRWSSX.js +0 -0
  42. package/dist/{chunk-T65VFCID.js → chunk-VF7DMSKF.js} +1 -1
  43. package/dist/chunk-VOIOUJXI.js +0 -0
  44. package/dist/{chunk-MTQBSOZW.js → chunk-WYDP2WEQ.js} +4 -4
  45. package/dist/chunk-XNFIYS7G.js +0 -0
  46. package/dist/{ci-C5YMQXCS.js → ci-VURFRMWQ.js} +6 -6
  47. package/dist/{ci-format-R6EMNOGZ.js → ci-format-AFJJIURF.js} +2 -2
  48. package/dist/config-command-E5DHADEV.js +0 -0
  49. package/dist/{constants-QJCNMBPJ.js → constants-WO7ERENL.js} +1 -1
  50. package/dist/{doctor-cli-5CM2I6OF.js → doctor-cli-BGGILTHE.js} +6 -6
  51. package/dist/electron-server.js +167 -57
  52. package/dist/file-checkpoint-NKBHGC7L.js +0 -0
  53. package/dist/git-context-EXOEHQSF.js +0 -0
  54. package/dist/{hub-7JBSZOSD.js → hub-Z73RLNJI.js} +1 -1
  55. package/dist/hub-server-RF6LURXY.js +0 -0
  56. package/dist/index.js +57 -43
  57. package/dist/indexer-VZETNE4H.js +0 -0
  58. package/dist/persist-PQM4BRI4.js +0 -0
  59. package/dist/{persistent-memory-4E53HW3U.js → persistent-memory-5QMARQJF.js} +2 -2
  60. package/dist/{persistent-memory-KYRY56PG.js → persistent-memory-CI544RLT.js} +2 -2
  61. package/dist/{pr-NPUGZSXB.js → pr-24REDMGV.js} +6 -6
  62. package/dist/project-trust-NKYHL3VZ.js +0 -0
  63. package/dist/{run-tests-5FHQ5IBX.js → run-tests-72VNZXNT.js} +2 -2
  64. package/dist/{run-tests-SU5CDQKF.js → run-tests-JJ3KOY5E.js} +2 -2
  65. package/dist/semantic-HLAE2O4F.js +0 -0
  66. package/dist/{server-ER36M7TR.js → server-JMXC2N3F.js} +40 -29
  67. package/dist/{server-77YS5NNN.js → server-QJHCJDA7.js} +6 -6
  68. package/dist/setup-wizard-S55ICNHH.js +0 -0
  69. package/dist/store-MWNHVGJT.js +0 -0
  70. package/dist/{task-orchestrator-56PQ7LGV.js → task-orchestrator-DJN36HP5.js} +6 -6
  71. package/dist/{usage-3YATXRFZ.js → usage-HXJVDETY.js} +3 -3
  72. package/dist/vector-store-BBDXB5IQ.js +0 -0
  73. package/dist/wasm/web-tree-sitter.wasm +0 -0
  74. package/dist/web/client/actions.js +104 -104
  75. package/dist/web/client/actions.js.br +0 -0
  76. package/dist/web/client/actions.js.gz +0 -0
  77. package/dist/web/client/api.js.gz +0 -0
  78. package/dist/web/client/app.js.gz +0 -0
  79. package/dist/web/client/dom.js.gz +0 -0
  80. package/dist/web/client/icon.svg +22 -22
  81. package/dist/web/client/icon.svg.br +0 -0
  82. package/dist/web/client/icon.svg.gz +0 -0
  83. package/dist/web/client/index.html +388 -388
  84. package/dist/web/client/index.html.br +0 -0
  85. package/dist/web/client/index.html.gz +0 -0
  86. package/dist/web/client/manifest.json +15 -15
  87. package/dist/web/client/sidebar-tabs.js.gz +0 -0
  88. package/dist/web/client/state.js.gz +0 -0
  89. package/dist/web/client/style.css +991 -991
  90. package/dist/web/client/style.css.br +0 -0
  91. package/dist/web/client/style.css.gz +0 -0
  92. package/dist/web/client/sw.js +85 -85
  93. package/dist/web/client/sw.js.br +0 -0
  94. package/dist/web/client/sw.js.gz +0 -0
  95. package/dist/web/client/templates.js.gz +0 -0
  96. package/dist/web/client/util.js.gz +0 -0
  97. package/dist/web/client/vendor/daisyui-full.min.css.gz +0 -0
  98. package/dist/web/client/vendor/github-dark.min.css.gz +0 -0
  99. package/dist/web/client/vendor/github.min.css.gz +0 -0
  100. package/dist/web/client/vendor/highlight.min.js.gz +0 -0
  101. package/dist/web/client/vendor/marked.min.js.gz +0 -0
  102. package/dist/web/client/vendor/tailwind.js.gz +0 -0
  103. package/package.json +178 -178
File without changes
File without changes
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ConfigManager
4
- } from "./chunk-T65VFCID.js";
4
+ } from "./chunk-VF7DMSKF.js";
5
5
  import "./chunk-TU3L3PW7.js";
6
6
  import {
7
7
  atomicWriteFileSync
8
8
  } from "./chunk-IW3Q7AE5.js";
9
- import "./chunk-EDAUDILT.js";
9
+ import "./chunk-FLDYAXJR.js";
10
10
 
11
11
  // src/cli/batch.ts
12
12
  import Anthropic from "@anthropic-ai/sdk";
File without changes
File without changes
File without changes
File without changes
@@ -3,7 +3,7 @@ import {
3
3
  detectsHallucinatedFileOp,
4
4
  parseToolCallArguments,
5
5
  schemaToJsonSchema
6
- } from "./chunk-3OBY7WSS.js";
6
+ } from "./chunk-TEXT4DAT.js";
7
7
  import {
8
8
  AuthError,
9
9
  ProviderError,
@@ -1610,25 +1610,6 @@ var DeepSeekProvider = class extends OpenAICompatibleProvider {
1610
1610
  }
1611
1611
  };
1612
1612
 
1613
- // src/providers/static-config.ts
1614
- function createStaticProviderClass(config) {
1615
- return class extends OpenAICompatibleProvider {
1616
- defaultBaseUrl = config.baseUrl;
1617
- defaultTimeout = config.defaultTimeout ?? 12e4;
1618
- enableStreamingToolCalls = config.enableStreamingToolCalls ?? true;
1619
- reliableContentOnlyTee = config.reliableContentOnlyTee ?? true;
1620
- info = {
1621
- id: config.id,
1622
- displayName: config.displayName,
1623
- defaultModel: config.defaultModel,
1624
- apiKeyEnvVar: config.apiKeyEnvVar,
1625
- requiresApiKey: config.requiresApiKey ?? true,
1626
- baseUrl: config.baseUrl,
1627
- models: config.models
1628
- };
1629
- };
1630
- }
1631
-
1632
1613
  // src/providers/zhipu.ts
1633
1614
  var ZHIPU_CONFIG = {
1634
1615
  id: "zhipu",
@@ -1638,6 +1619,7 @@ var ZHIPU_CONFIG = {
1638
1619
  baseUrl: "https://open.bigmodel.cn/api/paas/v4",
1639
1620
  defaultTimeout: 3e5,
1640
1621
  models: [
1622
+ { id: "glm-5.3", displayName: "GLM-5.3 (2026-08 Flagship, 1M, Coding/Security, \u59CB\u7EC8\u601D\u8003)", contextWindow: 1048576, supportsStreaming: true, supportsThinking: true },
1641
1623
  { id: "glm-5.2", displayName: "GLM-5.2 (2026-06 Flagship, 1M, Coding)", contextWindow: 1048576, supportsStreaming: true, supportsThinking: true },
1642
1624
  { id: "glm-5v-turbo", displayName: "GLM-5V-Turbo (Multimodal Vision + Coding)", contextWindow: 202752, supportsStreaming: true },
1643
1625
  { id: "glm-5.1", displayName: "GLM-5.1 (2026 Flagship, 200K, Agent+Code)", contextWindow: 204800, supportsStreaming: true, supportsThinking: true },
@@ -1647,7 +1629,39 @@ var ZHIPU_CONFIG = {
1647
1629
  { id: "glm-4.6", displayName: "GLM-4.6 (200K, \u4E2D\u6587\u5199\u4F5C\u63A8\u8350)", contextWindow: 204800, supportsStreaming: true }
1648
1630
  ]
1649
1631
  };
1650
- var ZhipuProvider = createStaticProviderClass(ZHIPU_CONFIG);
1632
+ var REASONING_EFFORT_MODELS = /^glm-5/i;
1633
+ var ZhipuProvider = class extends OpenAICompatibleProvider {
1634
+ defaultBaseUrl = ZHIPU_CONFIG.baseUrl;
1635
+ /** GLM-5 系列深度思考生成很长,沿用 300s 超时。 */
1636
+ defaultTimeout = ZHIPU_CONFIG.defaultTimeout ?? 12e4;
1637
+ info = {
1638
+ id: ZHIPU_CONFIG.id,
1639
+ displayName: ZHIPU_CONFIG.displayName,
1640
+ defaultModel: ZHIPU_CONFIG.defaultModel,
1641
+ apiKeyEnvVar: ZHIPU_CONFIG.apiKeyEnvVar,
1642
+ requiresApiKey: true,
1643
+ baseUrl: ZHIPU_CONFIG.baseUrl,
1644
+ models: ZHIPU_CONFIG.models
1645
+ };
1646
+ /**
1647
+ * GLM-5 系列透传 `reasoning_effort`。
1648
+ *
1649
+ * 刻意**不**与 `request.thinking` 绑定:GLM-5.3 无论发不发 thinking 字段都会思考,
1650
+ * 档位是这个模型上唯一能压成本的旋钮(思考 token 按输出价 $4.40/MTok 计费),
1651
+ * 若跟着 `thinking` 走,用户 `/think off` 反而会落回服务端默认的 max —— 最贵的一档。
1652
+ */
1653
+ buildChatRequestParams(request) {
1654
+ const params = super.buildChatRequestParams(request);
1655
+ if (request.thinkingEffort && REASONING_EFFORT_MODELS.test(request.model)) {
1656
+ params["reasoning_effort"] = request.thinkingEffort;
1657
+ }
1658
+ return params;
1659
+ }
1660
+ /** GLM-5 系列支持 low/high/max 三档(官方文档 + 2026-08-20 实测)。 */
1661
+ get supportsReasoningEffort() {
1662
+ return true;
1663
+ }
1664
+ };
1651
1665
 
1652
1666
  // src/providers/kimi.ts
1653
1667
  var KIMI_XML_REMINDER = `
@@ -1826,6 +1840,25 @@ var KimiProvider = class _KimiProvider extends OpenAICompatibleProvider {
1826
1840
  }
1827
1841
  };
1828
1842
 
1843
+ // src/providers/static-config.ts
1844
+ function createStaticProviderClass(config) {
1845
+ return class extends OpenAICompatibleProvider {
1846
+ defaultBaseUrl = config.baseUrl;
1847
+ defaultTimeout = config.defaultTimeout ?? 12e4;
1848
+ enableStreamingToolCalls = config.enableStreamingToolCalls ?? true;
1849
+ reliableContentOnlyTee = config.reliableContentOnlyTee ?? true;
1850
+ info = {
1851
+ id: config.id,
1852
+ displayName: config.displayName,
1853
+ defaultModel: config.defaultModel,
1854
+ apiKeyEnvVar: config.apiKeyEnvVar,
1855
+ requiresApiKey: config.requiresApiKey ?? true,
1856
+ baseUrl: config.baseUrl,
1857
+ models: config.models
1858
+ };
1859
+ };
1860
+ }
1861
+
1829
1862
  // src/providers/minimax.ts
1830
1863
  var MINIMAX_CONFIG = {
1831
1864
  id: "minimax",
@@ -6,7 +6,7 @@ import {
6
6
  MEMORY_FILE_NAME,
7
7
  MEMORY_MAX_CHARS,
8
8
  MEMORY_STORE_FILE_NAME
9
- } from "./chunk-LEK5WGKV.js";
9
+ } from "./chunk-UNL7NR55.js";
10
10
  import {
11
11
  atomicWriteFileSync
12
12
  } from "./chunk-6BUTA5VW.js";
File without changes
File without changes
@@ -5,7 +5,7 @@ import {
5
5
  import {
6
6
  CONFIG_DIR_NAME,
7
7
  PLUGINS_DIR_NAME
8
- } from "./chunk-EDAUDILT.js";
8
+ } from "./chunk-FLDYAXJR.js";
9
9
 
10
10
  // src/diagnostics/tool-stats.ts
11
11
  import { existsSync, readFileSync, mkdirSync } from "fs";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  TEST_TIMEOUT
3
- } from "./chunk-LEK5WGKV.js";
3
+ } from "./chunk-UNL7NR55.js";
4
4
 
5
5
  // src/tools/builtin/run-tests.ts
6
6
  import { execSync, spawnSync } from "child_process";
File without changes
File without changes
File without changes
@@ -92,6 +92,9 @@ var PRICING_TABLE = {
92
92
  "glm-4.6": { input: 0.6, output: 2.2 },
93
93
  "glm-4.6v": { input: 0.6, output: 2.2 },
94
94
  "glm-5": { input: 0.85, output: 2.85 },
95
+ // GLM-5.3(2026-08-14 发布)官方公告口径「与 GLM-5.2 同价」,直连 API $1.40 / $4.40。
96
+ // 注意它**始终思考**,思考 token 按输出价计费 —— 实际成本高度取决于 reasoning_effort。
97
+ "glm-5.3": { input: 1.4, output: 4.4 },
95
98
  // GLM-5.2(2026-06)官方直连 API 定价 $1.40 / $4.40。
96
99
  "glm-5.2": { input: 1.4, output: 4.4 },
97
100
  // GLM-5V-Turbo(2026-04 视觉编程旗舰)官方直连 API 定价 $1.20 / $4.00。
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  // src/core/constants.ts
4
- var VERSION = "0.4.273";
4
+ var VERSION = "0.4.276";
5
5
  var APP_NAME = "ai-cli";
6
6
  var CONFIG_DIR_NAME = ".aicli";
7
7
  var CONFIG_FILE_NAME = "config.json";
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -13,7 +13,7 @@ import {
13
13
  MEMORY_FILE_NAME,
14
14
  MEMORY_MAX_CHARS,
15
15
  MEMORY_STORE_FILE_NAME
16
- } from "./chunk-EDAUDILT.js";
16
+ } from "./chunk-FLDYAXJR.js";
17
17
 
18
18
  // src/memory/persistent-memory.ts
19
19
  import { copyFileSync, existsSync, mkdirSync, readFileSync, statSync } from "fs";
@@ -1,15 +1,19 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  computeCost
4
- } from "./chunk-JT6UN5C6.js";
4
+ } from "./chunk-DPTEC6AQ.js";
5
5
  import {
6
6
  estimateTokens,
7
7
  truncateForPersist
8
- } from "./chunk-R4YGDJPL.js";
8
+ } from "./chunk-NXNXWM6H.js";
9
9
  import {
10
10
  isMemoryExpired,
11
11
  isMemoryStale
12
- } from "./chunk-Z3UXZ5EI.js";
12
+ } from "./chunk-KWSGSSWN.js";
13
+ import {
14
+ isCleanDocumentBody,
15
+ stripOuterCodeFence
16
+ } from "./chunk-TEXT4DAT.js";
13
17
  import {
14
18
  atomicWriteFileSync
15
19
  } from "./chunk-IW3Q7AE5.js";
@@ -23,7 +27,7 @@ import {
23
27
  MCP_PROTOCOL_VERSION,
24
28
  MCP_TOOL_PREFIX,
25
29
  VERSION
26
- } from "./chunk-EDAUDILT.js";
30
+ } from "./chunk-FLDYAXJR.js";
27
31
 
28
32
  // src/mcp/client.ts
29
33
  import { spawn } from "child_process";
@@ -1258,6 +1262,64 @@ function clearDevState() {
1258
1262
  }
1259
1263
  }
1260
1264
 
1265
+ // src/tools/deferred-save.ts
1266
+ import { statSync as statSync3 } from "fs";
1267
+ import { basename as basename2 } from "path";
1268
+ function snapshotFile(path) {
1269
+ try {
1270
+ const st = statSync3(path);
1271
+ return { exists: true, size: st.size, mtimeMs: st.mtimeMs };
1272
+ } catch {
1273
+ return { exists: false, size: 0, mtimeMs: 0 };
1274
+ }
1275
+ }
1276
+ function armDeferredSave(path) {
1277
+ return { path, armedSnapshot: snapshotFile(path) };
1278
+ }
1279
+ function snapshotChanged(a, b) {
1280
+ return a.exists !== b.exists || a.size !== b.size || a.mtimeMs !== b.mtimeMs;
1281
+ }
1282
+ var SAVE_CLAIM_PATTERNS = [
1283
+ /(?:已|均已|都已)[^\n]{0,12}(?:保存|写入|生成|创建|落盘)/u,
1284
+ /(?:保存|写入|生成|创建)(?:到|至|于)\s*[`'"]/u,
1285
+ /\b(?:saved|written|created|generated)\s+(?:to|at|as|into)\b/i
1286
+ ];
1287
+ function narratesSavedTarget(content, path) {
1288
+ const base = basename2(path);
1289
+ if (!base || !content.includes(base)) return null;
1290
+ for (const re of SAVE_CLAIM_PATTERNS) {
1291
+ if (re.test(content)) return re.source;
1292
+ }
1293
+ return null;
1294
+ }
1295
+ function decideDeferredSave(params) {
1296
+ const { content, path, armedSnapshot, currentSnapshot } = params;
1297
+ const body = stripOuterCodeFence(content);
1298
+ if (snapshotChanged(armedSnapshot, currentSnapshot)) {
1299
+ return {
1300
+ kind: "skip",
1301
+ reason: "target-already-written",
1302
+ message: `\u21AA \u8DF3\u8FC7 deferred \u843D\u76D8\uFF1A${path} \u5DF2\u5728\u672C\u8F6E\u88AB\u5DE5\u5177\u5199\u5165\uFF08${currentSnapshot.size} bytes\uFF09\uFF0C\u4E0D\u7528\u6700\u7EC8\u56DE\u590D\u8986\u76D6\u5B83\u3002`
1303
+ };
1304
+ }
1305
+ const narrated = narratesSavedTarget(body, path);
1306
+ if (narrated) {
1307
+ return {
1308
+ kind: "skip",
1309
+ reason: "narrates-target",
1310
+ message: `\u21AA \u8DF3\u8FC7 deferred \u843D\u76D8\uFF1A\u6700\u7EC8\u56DE\u590D\u662F\u5173\u4E8E ${basename2(path)} \u7684\u6C47\u62A5\u800C\u975E\u6587\u6863\u6B63\u6587\uFF08matched: ${narrated}\uFF09\u3002`
1311
+ };
1312
+ }
1313
+ if (!isCleanDocumentBody(body)) {
1314
+ return {
1315
+ kind: "skip",
1316
+ reason: "not-document-body",
1317
+ message: `\u21AA \u8DF3\u8FC7 deferred \u843D\u76D8\uFF1A\u6700\u7EC8\u56DE\u590D\u4E0D\u50CF\u53EF\u76F4\u63A5\u843D\u76D8\u7684\u6587\u6863\u6B63\u6587\uFF08${path} \u672A\u6539\u52A8\uFF09\u3002`
1318
+ };
1319
+ }
1320
+ return { kind: "save", body };
1321
+ }
1322
+
1261
1323
  // src/core/think-command.ts
1262
1324
  var EFFORTS = /* @__PURE__ */ new Set(["low", "high", "max"]);
1263
1325
  function resolveEffective(state) {
@@ -1505,5 +1567,8 @@ export {
1505
1567
  clearDevState,
1506
1568
  McpManager,
1507
1569
  SkillManager,
1570
+ snapshotFile,
1571
+ armDeferredSave,
1572
+ decideDeferredSave,
1508
1573
  setupProxy
1509
1574
  };
File without changes
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  evaluateCiGate,
4
4
  normalizeCiThresholds
5
- } from "./chunk-ZWCQQZT5.js";
5
+ } from "./chunk-NXAHXWPF.js";
6
6
  import {
7
7
  buildReviewPrompt,
8
8
  buildSecurityReviewPrompt,
@@ -13,13 +13,13 @@ import {
13
13
  } from "./chunk-6YZEZFX5.js";
14
14
  import {
15
15
  ProviderRegistry
16
- } from "./chunk-AUEX6RNY.js";
16
+ } from "./chunk-4KTK2OYU.js";
17
17
  import {
18
18
  ConfigManager
19
- } from "./chunk-T65VFCID.js";
19
+ } from "./chunk-VF7DMSKF.js";
20
20
  import {
21
21
  VERSION
22
- } from "./chunk-EDAUDILT.js";
22
+ } from "./chunk-FLDYAXJR.js";
23
23
 
24
24
  // src/cli/ci.ts
25
25
  import { execFileSync } from "child_process";
File without changes
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  VERSION
4
- } from "./chunk-EDAUDILT.js";
4
+ } from "./chunk-FLDYAXJR.js";
5
5
 
6
6
  // src/cli/ci-format.ts
7
7
  var DEFAULT_CI_THRESHOLDS = {
@@ -11,7 +11,7 @@ import {
11
11
  searchPersistentMemories,
12
12
  touchMemoryReferences,
13
13
  updateMemoryEntry
14
- } from "./chunk-Z3UXZ5EI.js";
14
+ } from "./chunk-KWSGSSWN.js";
15
15
  import {
16
16
  indexProject
17
17
  } from "./chunk-GLSR2NR3.js";
@@ -30,13 +30,13 @@ import {
30
30
  runHook,
31
31
  runLifecycleHooks,
32
32
  runTool
33
- } from "./chunk-FHXLAJJG.js";
33
+ } from "./chunk-AOISQVXS.js";
34
34
  import {
35
35
  buildTruncatedArgumentsError,
36
36
  getDangerLevel,
37
37
  isFileWriteTool,
38
38
  runLeanAgentLoop
39
- } from "./chunk-3OBY7WSS.js";
39
+ } from "./chunk-TEXT4DAT.js";
40
40
  import {
41
41
  EnvLoader,
42
42
  NetworkError,
@@ -50,14 +50,14 @@ import {
50
50
  } from "./chunk-4BKXL7SM.js";
51
51
  import {
52
52
  runTestsTool
53
- } from "./chunk-WSCZRQDR.js";
53
+ } from "./chunk-OMBKLWLJ.js";
54
54
  import {
55
55
  CONFIG_DIR_NAME,
56
56
  DEFAULT_MAX_TOOL_OUTPUT_CHARS_CAP,
57
57
  SUBAGENT_ALLOWED_TOOLS,
58
58
  SUBAGENT_DEFAULT_MAX_ROUNDS,
59
59
  SUBAGENT_MAX_ROUNDS_LIMIT
60
- } from "./chunk-EDAUDILT.js";
60
+ } from "./chunk-FLDYAXJR.js";
61
61
 
62
62
  // src/tools/shell-pool.ts
63
63
  import { spawn as spawn2 } from "child_process";
File without changes
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  TEST_TIMEOUT
4
- } from "./chunk-EDAUDILT.js";
4
+ } from "./chunk-FLDYAXJR.js";
5
5
 
6
6
  // src/tools/builtin/run-tests.ts
7
7
  import { execSync, spawnSync } from "child_process";
File without changes
@@ -515,6 +515,11 @@ var META_NARRATION_HEURISTICS = [
515
515
  /(?:需要你|请你|麻烦你|还要你|你看)\s*(?:确认|决定|选择|帮忙|看[一看下]|过目)/u,
516
516
  /(?:总结|概括|归纳|整理)[一下]?(?:核心|主要|关键)?(?:思路|要点|内容|设计)/u,
517
517
  /(?:随时|有问题|有需要|需要调整|需要修改|需要补充)\s*(?:联系|找我|告诉|沟通|调整|修改|补充|说)/u,
518
+ // 「已(全部)生成并保存到 `path`」——对**文件**的汇报,不是文件的正文。
519
+ // v0.4.274 实战:deferred 赛道的最终回复是一段「4 份教案已全部生成并保存到
520
+ // `./精简版/` 目录下」的汇报表格,旧启发式只命中 1 条不足阈值,于是它被当文档
521
+ // 正文落盘、覆盖掉模型刚用 write_file 写好的教案。仍受 2 hits 阈值与标题逃逸约束。
522
+ /(?:已|均已|都已)[^\n]{0,10}(?:生成|写入|保存|创建)[^\n]{0,6}(?:到|至|于)\s*[`'"]/u,
518
523
  /^(?:.{0,40})(?:好的[,,,!\s]|嗯[,,,!\s]|收到[了]?[,,,!\s]|了解[了]?[,,,!\s]|明白[了]?[,,,!\s])/mu,
519
524
  /(?:我来|让我|容我)\s*(?:整理|梳理|归纳|想想|看看|重新|检查|核实)/u,
520
525
  // 过渡语(需要 2+ hits):"以下是:" / "如下:" 作为独立行。文档中可作小节标题,
@@ -660,7 +665,8 @@ function buildDeferredSaveInstruction(saveToFile) {
660
665
  return `[save_last_response \u65E0\u6CD5\u81EA\u52A8\u751F\u6210\u6587\u6863]
661
666
  content-only \u6D41\u4EA7\u51FA\u7684\u662F\u5DE5\u5177\u8C03\u7528\u6807\u8BB0 / \u5185\u5FC3\u72EC\u767D\u800C\u975E\u6587\u6863\u6B63\u6587\uFF0C${saveToFile} \u672A\u4FDD\u5B58\u3002
662
667
 
663
- \u4E0D\u8981\u518D\u8C03\u7528 save_last_response\u3002\u8BF7\u76F4\u63A5\u7528**\u666E\u901A\u6587\u672C\u56DE\u590D**\u628A\u5B8C\u6574\u6587\u6863\u5199\u51FA\u6765\uFF1A\u7EAF markdown\uFF0C\u7B2C\u4E00\u4E2A\u5B57\u7B26\u5C31\u662F\u9876\u7EA7\u6807\u9898\uFF08\u5982 "# \u5BA1\u8BA1\u62A5\u544A"\uFF09\uFF0C\u4E0D\u8981\u4EFB\u4F55\u5DE5\u5177\u8C03\u7528\u3001\u4E0D\u8981\u524D\u8A00\u94FA\u57AB\u3002\u7CFB\u7EDF\u4F1A\u81EA\u52A8\u628A\u4F60\u8FD9\u6761\u56DE\u590D\u4FDD\u5B58\u5230 ${saveToFile}\u3002`;
668
+ \u4E0D\u8981\u518D\u8C03\u7528 save_last_response\u3002\u8BF7\u76F4\u63A5\u7528**\u666E\u901A\u6587\u672C\u56DE\u590D**\u628A\u5B8C\u6574\u6587\u6863\u5199\u51FA\u6765\uFF1A\u7EAF markdown\uFF0C\u7B2C\u4E00\u4E2A\u5B57\u7B26\u5C31\u662F\u9876\u7EA7\u6807\u9898\uFF08\u5982 "# \u5BA1\u8BA1\u62A5\u544A"\uFF09\uFF0C\u4E0D\u8981\u4EFB\u4F55\u5DE5\u5177\u8C03\u7528\u3001\u4E0D\u8981\u524D\u8A00\u94FA\u57AB\u3002\u7CFB\u7EDF\u4F1A\u81EA\u52A8\u628A\u4F60\u8FD9\u6761\u56DE\u590D\u4FDD\u5B58\u5230 ${saveToFile}\u3002
669
+ \u82E5\u4F60\u6539\u7528 write_file \u7B49\u5DE5\u5177\u76F4\u63A5\u628A\u6587\u4EF6\u5199\u5B8C\uFF08\u591A\u6587\u4EF6\u4EFB\u52A1\u4E0B\u66F4\u5408\u9002\uFF09\uFF0C\u4E5F\u53EF\u4EE5\u2014\u2014\u7CFB\u7EDF\u68C0\u6D4B\u5230 ${saveToFile} \u5DF2\u7531\u5DE5\u5177\u5199\u51FA\u65F6\uFF0C\u4E0D\u4F1A\u518D\u7528\u4F60\u7684\u56DE\u590D\u8986\u76D6\u5B83\u3002`;
664
670
  }
665
671
  function teeStreamErrorSummary(saveToFile, errMsg) {
666
672
  return `[save_last_response failed] streaming was interrupted: ${errMsg}. ${saveToFile} (partial) was deleted. Retry \u2014 and consider producing a more compact output (split very large reports across multiple save_last_response calls if the previous attempt timed out).`;
File without changes
@@ -1,5 +1,5 @@
1
1
  // src/core/constants.ts
2
- var VERSION = "0.4.273";
2
+ var VERSION = "0.4.276";
3
3
  var APP_NAME = "ai-cli";
4
4
  var CONFIG_DIR_NAME = ".aicli";
5
5
  var CONFIG_FILE_NAME = "config.json";
File without changes
@@ -11,7 +11,7 @@ import {
11
11
  CONFIG_FILE_NAME,
12
12
  HISTORY_DIR_NAME,
13
13
  PLUGINS_DIR_NAME
14
- } from "./chunk-EDAUDILT.js";
14
+ } from "./chunk-FLDYAXJR.js";
15
15
 
16
16
  // src/config/config-manager.ts
17
17
  import { readFileSync, existsSync, mkdirSync } from "fs";
File without changes
@@ -8,13 +8,13 @@ import {
8
8
  listHooks,
9
9
  listInstalledPlugins,
10
10
  resetStats
11
- } from "./chunk-FHXLAJJG.js";
11
+ } from "./chunk-AOISQVXS.js";
12
12
  import {
13
13
  ProviderRegistry
14
- } from "./chunk-AUEX6RNY.js";
14
+ } from "./chunk-4KTK2OYU.js";
15
15
  import {
16
16
  ConfigManager
17
- } from "./chunk-T65VFCID.js";
17
+ } from "./chunk-VF7DMSKF.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-EDAUDILT.js";
29
+ } from "./chunk-FLDYAXJR.js";
30
30
 
31
31
  // src/diagnostics/doctor-report.ts
32
32
  import { existsSync as existsSync3, statSync as statSync2 } from "fs";
File without changes
@@ -3,16 +3,16 @@ import {
3
3
  CI_COMMENT_MARKER,
4
4
  countSeverity,
5
5
  runCi
6
- } from "./chunk-FN7DE4HA.js";
7
- import "./chunk-ZWCQQZT5.js";
6
+ } from "./chunk-MXPUOF5K.js";
7
+ import "./chunk-NXAHXWPF.js";
8
8
  import "./chunk-HLWUDRBO.js";
9
9
  import "./chunk-6YZEZFX5.js";
10
- import "./chunk-AUEX6RNY.js";
11
- import "./chunk-T65VFCID.js";
12
- import "./chunk-3OBY7WSS.js";
10
+ import "./chunk-4KTK2OYU.js";
11
+ import "./chunk-VF7DMSKF.js";
12
+ import "./chunk-TEXT4DAT.js";
13
13
  import "./chunk-TU3L3PW7.js";
14
14
  import "./chunk-IW3Q7AE5.js";
15
- import "./chunk-EDAUDILT.js";
15
+ import "./chunk-FLDYAXJR.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-ZWCQQZT5.js";
10
- import "./chunk-EDAUDILT.js";
9
+ } from "./chunk-NXAHXWPF.js";
10
+ import "./chunk-FLDYAXJR.js";
11
11
  export {
12
12
  DEFAULT_CI_THRESHOLDS,
13
13
  detectCiGateSignals,
File without changes
@@ -38,7 +38,7 @@ import {
38
38
  TEST_TIMEOUT,
39
39
  VERSION,
40
40
  buildUserIdentityPrompt
41
- } from "./chunk-EDAUDILT.js";
41
+ } from "./chunk-FLDYAXJR.js";
42
42
  export {
43
43
  AGENTIC_BEHAVIOR_GUIDELINE,
44
44
  APP_NAME,
@@ -2,15 +2,15 @@
2
2
  import {
3
3
  formatDoctorReport,
4
4
  runDoctorCli
5
- } from "./chunk-MTQBSOZW.js";
6
- import "./chunk-FHXLAJJG.js";
7
- import "./chunk-AUEX6RNY.js";
8
- import "./chunk-T65VFCID.js";
9
- import "./chunk-3OBY7WSS.js";
5
+ } from "./chunk-WYDP2WEQ.js";
6
+ import "./chunk-AOISQVXS.js";
7
+ import "./chunk-4KTK2OYU.js";
8
+ import "./chunk-VF7DMSKF.js";
9
+ import "./chunk-TEXT4DAT.js";
10
10
  import "./chunk-TU3L3PW7.js";
11
11
  import "./chunk-HOSJZMQS.js";
12
12
  import "./chunk-IW3Q7AE5.js";
13
- import "./chunk-EDAUDILT.js";
13
+ import "./chunk-FLDYAXJR.js";
14
14
  export {
15
15
  formatDoctorReport,
16
16
  runDoctorCli