jinzd-ai-cli 0.4.308 → 0.4.309
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.
- package/README.md +1 -1
- package/README.zh-CN.md +1 -1
- package/dist/{batch-S7XLEEOH.js → batch-H4WWSZQ3.js} +2 -2
- package/dist/{chunk-7OHXFTZO.js → chunk-2E5W2E64.js} +1 -1
- package/dist/{chunk-2MNUMLN4.js → chunk-3CNPJLVI.js} +1 -1
- package/dist/{chunk-JJNUASMJ.js → chunk-3GEO2LPO.js} +1 -1
- package/dist/{chunk-3537CQ5M.js → chunk-4BXTGXZ6.js} +1 -1
- package/dist/{chunk-2DYQDLLF.js → chunk-EAVX3RLD.js} +1 -1
- package/dist/{chunk-WT252ZDV.js → chunk-EHMMBIZT.js} +14 -10
- package/dist/{chunk-LR3TGZWQ.js → chunk-HXINWG37.js} +1 -1
- package/dist/{chunk-BGZN4K7Q.js → chunk-IW6Q66WS.js} +4 -4
- package/dist/{chunk-NLK45GUS.js → chunk-K4F7QEGW.js} +1 -1
- package/dist/{chunk-G6DVGQ4I.js → chunk-LONB36SP.js} +15 -2
- package/dist/{chunk-TPTFV3Y6.js → chunk-O7MMYJAD.js} +4 -4
- package/dist/{chunk-YBZM7PHI.js → chunk-RBCKX2FZ.js} +8 -3
- package/dist/{chunk-WVEIUSXE.js → chunk-RLERORUI.js} +1 -1
- package/dist/{chunk-E2PNXNKI.js → chunk-SCG2VBPB.js} +4 -4
- package/dist/{chunk-HC33C4U3.js → chunk-T42GXE7Y.js} +8 -8
- package/dist/{ci-5HONSUAS.js → ci-H6GPHG4T.js} +5 -5
- package/dist/{ci-format-URUH3ZZ5.js → ci-format-U47GSGYU.js} +2 -2
- package/dist/{constants-FG27DQMS.js → constants-GYJTB6KI.js} +1 -1
- package/dist/{constants-BLDBI7IG.js → constants-SNJR6546.js} +1 -1
- package/dist/{doctor-cli-QQLMNJN7.js → doctor-cli-J6LAQ5LU.js} +5 -5
- package/dist/electron-server.js +46 -24
- package/dist/{hub-GGFW3DCC.js → hub-G5FMMTVZ.js} +1 -1
- package/dist/index.js +25 -21
- package/dist/{persistent-memory-UNLCXUWH.js → persistent-memory-EXJBXL33.js} +2 -2
- package/dist/{persistent-memory-YYWIN6BG.js → persistent-memory-LEE454DW.js} +2 -2
- package/dist/{pr-YCFGPFI7.js → pr-6PUHVJ6K.js} +5 -5
- package/dist/{run-tests-KRNMFXAN.js → run-tests-2C7MWZBN.js} +2 -2
- package/dist/{run-tests-GHY4BYDE.js → run-tests-33ZVQE3Q.js} +2 -2
- package/dist/{server-QRAWSG4Z.js → server-AJH5TBVO.js} +15 -15
- package/dist/{server-73UBHSFV.js → server-CYAB56O3.js} +5 -5
- package/dist/{task-orchestrator-GI3RGLZI.js → task-orchestrator-HNRV3YUD.js} +5 -5
- package/dist/{usage-GWTIGZF5.js → usage-ZN5DU6Z7.js} +3 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -131,7 +131,7 @@ aicli user delete x # Delete user
|
|
|
131
131
|
|----------|--------|-------------|
|
|
132
132
|
| **Claude** | Opus 4, Sonnet 4, Haiku 4 | [console.anthropic.com](https://console.anthropic.com) |
|
|
133
133
|
| **Gemini** | 2.5 Pro, 2.5 Flash | [aistudio.google.com](https://aistudio.google.com) |
|
|
134
|
-
| **DeepSeek** | deepseek-
|
|
134
|
+
| **DeepSeek** | deepseek-flash (default, multimodal), deepseek-v4-pro | [platform.deepseek.com](https://platform.deepseek.com) |
|
|
135
135
|
| **OpenAI** | GPT-5.4, GPT-5, GPT-4.1, o3, o4-mini | [platform.openai.com](https://platform.openai.com) |
|
|
136
136
|
| **OpenRouter** | 300+ models (Claude, GPT, Gemini, Llama, Qwen, Mistral...) | [openrouter.ai](https://openrouter.ai) |
|
|
137
137
|
| **Zhipu** | GLM-4, GLM-5 | [open.bigmodel.cn](https://open.bigmodel.cn) |
|
package/README.zh-CN.md
CHANGED
|
@@ -119,7 +119,7 @@ aicli user delete x # 删除用户
|
|
|
119
119
|
|----------|------|-------------|
|
|
120
120
|
| **Claude** | Opus 4, Sonnet 4, Haiku 4 | [console.anthropic.com](https://console.anthropic.com) |
|
|
121
121
|
| **Gemini** | 2.5 Pro, 2.5 Flash | [aistudio.google.com](https://aistudio.google.com) |
|
|
122
|
-
| **DeepSeek** | deepseek-
|
|
122
|
+
| **DeepSeek** | deepseek-flash(默认,多模态), deepseek-v4-pro | [platform.deepseek.com](https://platform.deepseek.com) |
|
|
123
123
|
| **OpenAI** | GPT-5.4, GPT-5, GPT-4.1, o3, o4-mini | [platform.openai.com](https://platform.openai.com) |
|
|
124
124
|
| **OpenRouter** | 300+ 模型(Claude/GPT/Gemini/Llama/Qwen/Mistral...) | [openrouter.ai](https://openrouter.ai) |
|
|
125
125
|
| **Zhipu(智谱)** | GLM-4, GLM-5 | [open.bigmodel.cn](https://open.bigmodel.cn) |
|
|
@@ -4,12 +4,12 @@ import {
|
|
|
4
4
|
} from "./chunk-RS7SKYTS.js";
|
|
5
5
|
import {
|
|
6
6
|
ConfigManager
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-RBCKX2FZ.js";
|
|
8
8
|
import "./chunk-TU3L3PW7.js";
|
|
9
9
|
import {
|
|
10
10
|
atomicWriteFileSync
|
|
11
11
|
} from "./chunk-BMLQPSHP.js";
|
|
12
|
-
import "./chunk-
|
|
12
|
+
import "./chunk-3CNPJLVI.js";
|
|
13
13
|
|
|
14
14
|
// src/cli/batch.ts
|
|
15
15
|
import Anthropic from "@anthropic-ai/sdk";
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
MEMORY_FILE_NAME,
|
|
13
13
|
MEMORY_MAX_CHARS,
|
|
14
14
|
MEMORY_STORE_FILE_NAME
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-EAVX3RLD.js";
|
|
16
16
|
|
|
17
17
|
// src/memory/persistent-memory.ts
|
|
18
18
|
import { copyFileSync, existsSync, mkdirSync, readFileSync, statSync } from "fs";
|
|
@@ -1670,30 +1670,34 @@ var DeepSeekProvider = class extends OpenAICompatibleProvider {
|
|
|
1670
1670
|
info = {
|
|
1671
1671
|
id: "deepseek",
|
|
1672
1672
|
displayName: "DeepSeek",
|
|
1673
|
-
defaultModel: "deepseek-
|
|
1673
|
+
defaultModel: "deepseek-flash",
|
|
1674
1674
|
apiKeyEnvVar: "AICLI_API_KEY_DEEPSEEK",
|
|
1675
1675
|
requiresApiKey: true,
|
|
1676
1676
|
baseUrl: this.defaultBaseUrl,
|
|
1677
1677
|
models: [
|
|
1678
|
-
// ── V4
|
|
1678
|
+
// ── V4.1 Flash (2026-09):1M context,原生多模态,Thinking / Non-Thinking 双模式 ──
|
|
1679
|
+
// model code 实测取自端点本身:`/v1/models` 只列 `deepseek-flash` 与 `deepseek-v4-pro`,
|
|
1680
|
+
// 传 `deepseek-v4.1-flash` 报 400 并把合法名字写在错误消息里。**不要**按发布公告里的
|
|
1681
|
+
// 版本号拼 code(v0.4.198 的 `glm-5.2[1m]` 就是这么栽的)。
|
|
1679
1682
|
{
|
|
1680
|
-
id: "deepseek-
|
|
1681
|
-
displayName: "DeepSeek V4
|
|
1683
|
+
id: "deepseek-flash",
|
|
1684
|
+
displayName: "DeepSeek V4.1 Flash (multimodal, 1M)",
|
|
1682
1685
|
contextWindow: 1048576,
|
|
1683
1686
|
supportsStreaming: true,
|
|
1684
1687
|
supportsThinking: true
|
|
1685
1688
|
},
|
|
1686
1689
|
{
|
|
1687
|
-
id: "deepseek-v4-
|
|
1688
|
-
displayName: "DeepSeek V4
|
|
1690
|
+
id: "deepseek-v4-pro",
|
|
1691
|
+
displayName: "DeepSeek V4 Pro (text-only; routes to V4.1 Flash from 2026-09-14)",
|
|
1689
1692
|
contextWindow: 1048576,
|
|
1690
1693
|
supportsStreaming: true,
|
|
1691
1694
|
supportsThinking: true
|
|
1692
1695
|
}
|
|
1693
|
-
// Legacy aliases
|
|
1694
|
-
//
|
|
1695
|
-
//
|
|
1696
|
-
//
|
|
1696
|
+
// Legacy aliases:`deepseek-v4-flash` / `deepseek-v4-flash-vision-exp` 的底层模型已退役,
|
|
1697
|
+
// 端点仍接受这两个名字并路由到 V4.1 Flash(实测传 `deepseek-v4-flash` 返回 200 且响应
|
|
1698
|
+
// `model` 字段回显 `deepseek-flash`)。它们不再列进推荐清单,config 里 pin 过的会被
|
|
1699
|
+
// `migrateLegacyModels()` 自愈到 `deepseek-flash`;pricing.ts 保留旧 id 供历史成本回算。
|
|
1700
|
+
// `deepseek-chat` / `deepseek-reasoner` 早在 v0.4.140 移除(2026-07-24 停用)。
|
|
1697
1701
|
]
|
|
1698
1702
|
};
|
|
1699
1703
|
/**
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
MEMORY_FILE_NAME,
|
|
14
14
|
MEMORY_MAX_CHARS,
|
|
15
15
|
MEMORY_STORE_FILE_NAME
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-3CNPJLVI.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-
|
|
5
|
+
} from "./chunk-K4F7QEGW.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-
|
|
16
|
+
} from "./chunk-EHMMBIZT.js";
|
|
17
17
|
import {
|
|
18
18
|
ConfigManager
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-RBCKX2FZ.js";
|
|
20
20
|
import {
|
|
21
21
|
VERSION
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-3CNPJLVI.js";
|
|
23
23
|
|
|
24
24
|
// src/cli/ci.ts
|
|
25
25
|
import { execFileSync } from "child_process";
|
|
@@ -16,15 +16,28 @@ function deepSeekCnyPricing(cacheRead, input, output) {
|
|
|
16
16
|
output: output / CNY_PER_USD
|
|
17
17
|
};
|
|
18
18
|
}
|
|
19
|
+
var DEEPSEEK_V4_PRO_ROUTED_TO_FLASH_AT = /* @__PURE__ */ new Date("2026-09-14T04:00:00.000Z");
|
|
20
|
+
var DEEPSEEK_V41_FLASH_ROUTING_CONFIRMED_AT = /* @__PURE__ */ new Date("2026-09-11T00:00:00.000Z");
|
|
21
|
+
function isDeepSeekPeakHour(at) {
|
|
22
|
+
const weekday = at.getUTCDay();
|
|
23
|
+
if (weekday === 0 || weekday === 6) return false;
|
|
24
|
+
const hour = at.getUTCHours();
|
|
25
|
+
return hour >= 1 && hour < 4 || hour >= 6 && hour < 10;
|
|
26
|
+
}
|
|
27
|
+
function deepSeekFlash41Pricing(at) {
|
|
28
|
+
return isDeepSeekPeakHour(at) ? { cacheRead: 6e-3, input: 0.3, output: 1.2 } : { cacheRead: 3e-3, input: 0.15, output: 0.6 };
|
|
29
|
+
}
|
|
19
30
|
function getDeepSeekV4Pricing(model, at) {
|
|
31
|
+
if (model.startsWith("deepseek-flash")) return deepSeekFlash41Pricing(at);
|
|
20
32
|
const isPro = model.startsWith("deepseek-v4-pro");
|
|
21
33
|
const isFlash = model.startsWith("deepseek-v4-flash");
|
|
22
34
|
if (!isPro && !isFlash) return null;
|
|
35
|
+
if (isPro && at >= DEEPSEEK_V4_PRO_ROUTED_TO_FLASH_AT) return deepSeekFlash41Pricing(at);
|
|
36
|
+
if (isFlash && at >= DEEPSEEK_V41_FLASH_ROUTING_CONFIRMED_AT) return deepSeekFlash41Pricing(at);
|
|
23
37
|
if (at < DEEPSEEK_TIME_PRICING_EFFECTIVE_AT) {
|
|
24
38
|
return isPro ? deepSeekCnyPricing(0.025, 3, 6) : deepSeekCnyPricing(0.02, 1, 2);
|
|
25
39
|
}
|
|
26
|
-
const
|
|
27
|
-
const isPeak = beijingHour >= 9 && beijingHour < 12 || beijingHour >= 14 && beijingHour < 18;
|
|
40
|
+
const isPeak = isDeepSeekPeakHour(at);
|
|
28
41
|
if (isPro) {
|
|
29
42
|
return isPeak ? deepSeekCnyPricing(0.3, 9, 27) : deepSeekCnyPricing(0.15, 4.5, 13.5);
|
|
30
43
|
}
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
searchPersistentMemories,
|
|
12
12
|
touchMemoryReferences,
|
|
13
13
|
updateMemoryEntry
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-HXINWG37.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-
|
|
33
|
+
} from "./chunk-4BXTGXZ6.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-
|
|
66
|
+
} from "./chunk-3GEO2LPO.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-
|
|
75
|
+
} from "./chunk-3CNPJLVI.js";
|
|
76
76
|
import {
|
|
77
77
|
getCurrentSessionKey,
|
|
78
78
|
getExecutionConfigDir,
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
CONFIG_FILE_NAME,
|
|
12
12
|
HISTORY_DIR_NAME,
|
|
13
13
|
PLUGINS_DIR_NAME
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-3CNPJLVI.js";
|
|
15
15
|
|
|
16
16
|
// src/config/config-manager.ts
|
|
17
17
|
import { readFileSync, existsSync, mkdirSync } from "fs";
|
|
@@ -381,8 +381,13 @@ ${err}`
|
|
|
381
381
|
* @returns true if config was modified and should be persisted.
|
|
382
382
|
*/
|
|
383
383
|
migrateLegacyModels() {
|
|
384
|
-
const LEGACY_DEEPSEEK = /* @__PURE__ */ new Set([
|
|
385
|
-
|
|
384
|
+
const LEGACY_DEEPSEEK = /* @__PURE__ */ new Set([
|
|
385
|
+
"deepseek-chat",
|
|
386
|
+
"deepseek-reasoner",
|
|
387
|
+
"deepseek-v4-flash",
|
|
388
|
+
"deepseek-v4-flash-vision-exp"
|
|
389
|
+
]);
|
|
390
|
+
const DEEPSEEK_TARGET = "deepseek-flash";
|
|
386
391
|
const LEGACY_KIMI = /* @__PURE__ */ new Set(["kimi-k2-0711-preview", "kimi-k2-turbo-preview"]);
|
|
387
392
|
const KIMI_TARGET = "kimi-k2.6";
|
|
388
393
|
let changed = false;
|
|
@@ -8,13 +8,13 @@ import {
|
|
|
8
8
|
listHooks,
|
|
9
9
|
listInstalledPlugins,
|
|
10
10
|
resetStats
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-4BXTGXZ6.js";
|
|
12
12
|
import {
|
|
13
13
|
ProviderRegistry
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-EHMMBIZT.js";
|
|
15
15
|
import {
|
|
16
16
|
ConfigManager
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-RBCKX2FZ.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-
|
|
29
|
+
} from "./chunk-3CNPJLVI.js";
|
|
30
30
|
|
|
31
31
|
// src/diagnostics/doctor-report.ts
|
|
32
32
|
import { existsSync as existsSync3, statSync as statSync2 } from "fs";
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import {
|
|
3
3
|
computeCost,
|
|
4
4
|
formatCost
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-LONB36SP.js";
|
|
6
6
|
import {
|
|
7
7
|
clearRecentlyDeniedAutoActions,
|
|
8
8
|
estimateTokens,
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
setPreferredAgentName,
|
|
17
17
|
truncateForPersist,
|
|
18
18
|
undoStack
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-O7MMYJAD.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-
|
|
54
|
+
} from "./chunk-HXINWG37.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-
|
|
68
|
+
} from "./chunk-SCG2VBPB.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-
|
|
83
|
+
} from "./chunk-4BXTGXZ6.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-
|
|
112
|
+
} from "./chunk-3CNPJLVI.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-
|
|
2429
|
+
const { MCP_PROJECT_CONFIG_NAME } = await import("./constants-SNJR6546.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-
|
|
3537
|
+
const { executeTests } = await import("./run-tests-33ZVQE3Q.js");
|
|
3538
3538
|
const argStr = args.join(" ").trim();
|
|
3539
3539
|
let testArgs = {};
|
|
3540
3540
|
if (argStr) {
|
|
@@ -3,16 +3,16 @@ import {
|
|
|
3
3
|
CI_COMMENT_MARKER,
|
|
4
4
|
countSeverity,
|
|
5
5
|
runCi
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-IW6Q66WS.js";
|
|
7
|
+
import "./chunk-K4F7QEGW.js";
|
|
8
8
|
import "./chunk-HLWUDRBO.js";
|
|
9
9
|
import "./chunk-6YZEZFX5.js";
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
10
|
+
import "./chunk-EHMMBIZT.js";
|
|
11
|
+
import "./chunk-RBCKX2FZ.js";
|
|
12
12
|
import "./chunk-RMEJR3AW.js";
|
|
13
13
|
import "./chunk-TU3L3PW7.js";
|
|
14
14
|
import "./chunk-BMLQPSHP.js";
|
|
15
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-3CNPJLVI.js";
|
|
16
16
|
export {
|
|
17
17
|
CI_COMMENT_MARKER,
|
|
18
18
|
countSeverity,
|
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
import {
|
|
3
3
|
formatDoctorReport,
|
|
4
4
|
runDoctorCli
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-SCG2VBPB.js";
|
|
6
|
+
import "./chunk-4BXTGXZ6.js";
|
|
7
7
|
import "./chunk-RS7SKYTS.js";
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
8
|
+
import "./chunk-EHMMBIZT.js";
|
|
9
|
+
import "./chunk-RBCKX2FZ.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-
|
|
14
|
+
import "./chunk-3CNPJLVI.js";
|
|
15
15
|
export {
|
|
16
16
|
formatDoctorReport,
|
|
17
17
|
runDoctorCli
|
package/dist/electron-server.js
CHANGED
|
@@ -55,7 +55,7 @@ import {
|
|
|
55
55
|
touchMemoryReferences,
|
|
56
56
|
updateMemoryApproval,
|
|
57
57
|
updateMemoryEntry
|
|
58
|
-
} from "./chunk-
|
|
58
|
+
} from "./chunk-2E5W2E64.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-
|
|
83
|
+
} from "./chunk-RLERORUI.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-
|
|
125
|
+
} from "./chunk-EAVX3RLD.js";
|
|
126
126
|
|
|
127
127
|
// src/web/access.ts
|
|
128
128
|
import { randomBytes, timingSafeEqual } from "crypto";
|
|
@@ -683,8 +683,13 @@ ${err}`
|
|
|
683
683
|
* @returns true if config was modified and should be persisted.
|
|
684
684
|
*/
|
|
685
685
|
migrateLegacyModels() {
|
|
686
|
-
const LEGACY_DEEPSEEK = /* @__PURE__ */ new Set([
|
|
687
|
-
|
|
686
|
+
const LEGACY_DEEPSEEK = /* @__PURE__ */ new Set([
|
|
687
|
+
"deepseek-chat",
|
|
688
|
+
"deepseek-reasoner",
|
|
689
|
+
"deepseek-v4-flash",
|
|
690
|
+
"deepseek-v4-flash-vision-exp"
|
|
691
|
+
]);
|
|
692
|
+
const DEEPSEEK_TARGET = "deepseek-flash";
|
|
688
693
|
const LEGACY_KIMI = /* @__PURE__ */ new Set(["kimi-k2-0711-preview", "kimi-k2-turbo-preview"]);
|
|
689
694
|
const KIMI_TARGET = "kimi-k2.6";
|
|
690
695
|
let changed = false;
|
|
@@ -883,15 +888,28 @@ function deepSeekCnyPricing(cacheRead, input, output) {
|
|
|
883
888
|
output: output / CNY_PER_USD
|
|
884
889
|
};
|
|
885
890
|
}
|
|
891
|
+
var DEEPSEEK_V4_PRO_ROUTED_TO_FLASH_AT = /* @__PURE__ */ new Date("2026-09-14T04:00:00.000Z");
|
|
892
|
+
var DEEPSEEK_V41_FLASH_ROUTING_CONFIRMED_AT = /* @__PURE__ */ new Date("2026-09-11T00:00:00.000Z");
|
|
893
|
+
function isDeepSeekPeakHour(at) {
|
|
894
|
+
const weekday = at.getUTCDay();
|
|
895
|
+
if (weekday === 0 || weekday === 6) return false;
|
|
896
|
+
const hour = at.getUTCHours();
|
|
897
|
+
return hour >= 1 && hour < 4 || hour >= 6 && hour < 10;
|
|
898
|
+
}
|
|
899
|
+
function deepSeekFlash41Pricing(at) {
|
|
900
|
+
return isDeepSeekPeakHour(at) ? { cacheRead: 6e-3, input: 0.3, output: 1.2 } : { cacheRead: 3e-3, input: 0.15, output: 0.6 };
|
|
901
|
+
}
|
|
886
902
|
function getDeepSeekV4Pricing(model, at) {
|
|
903
|
+
if (model.startsWith("deepseek-flash")) return deepSeekFlash41Pricing(at);
|
|
887
904
|
const isPro = model.startsWith("deepseek-v4-pro");
|
|
888
905
|
const isFlash = model.startsWith("deepseek-v4-flash");
|
|
889
906
|
if (!isPro && !isFlash) return null;
|
|
907
|
+
if (isPro && at >= DEEPSEEK_V4_PRO_ROUTED_TO_FLASH_AT) return deepSeekFlash41Pricing(at);
|
|
908
|
+
if (isFlash && at >= DEEPSEEK_V41_FLASH_ROUTING_CONFIRMED_AT) return deepSeekFlash41Pricing(at);
|
|
890
909
|
if (at < DEEPSEEK_TIME_PRICING_EFFECTIVE_AT) {
|
|
891
910
|
return isPro ? deepSeekCnyPricing(0.025, 3, 6) : deepSeekCnyPricing(0.02, 1, 2);
|
|
892
911
|
}
|
|
893
|
-
const
|
|
894
|
-
const isPeak = beijingHour >= 9 && beijingHour < 12 || beijingHour >= 14 && beijingHour < 18;
|
|
912
|
+
const isPeak = isDeepSeekPeakHour(at);
|
|
895
913
|
if (isPro) {
|
|
896
914
|
return isPeak ? deepSeekCnyPricing(0.3, 9, 27) : deepSeekCnyPricing(0.15, 4.5, 13.5);
|
|
897
915
|
}
|
|
@@ -4166,30 +4184,34 @@ var DeepSeekProvider = class extends OpenAICompatibleProvider {
|
|
|
4166
4184
|
info = {
|
|
4167
4185
|
id: "deepseek",
|
|
4168
4186
|
displayName: "DeepSeek",
|
|
4169
|
-
defaultModel: "deepseek-
|
|
4187
|
+
defaultModel: "deepseek-flash",
|
|
4170
4188
|
apiKeyEnvVar: "AICLI_API_KEY_DEEPSEEK",
|
|
4171
4189
|
requiresApiKey: true,
|
|
4172
4190
|
baseUrl: this.defaultBaseUrl,
|
|
4173
4191
|
models: [
|
|
4174
|
-
// ── V4
|
|
4192
|
+
// ── V4.1 Flash (2026-09):1M context,原生多模态,Thinking / Non-Thinking 双模式 ──
|
|
4193
|
+
// model code 实测取自端点本身:`/v1/models` 只列 `deepseek-flash` 与 `deepseek-v4-pro`,
|
|
4194
|
+
// 传 `deepseek-v4.1-flash` 报 400 并把合法名字写在错误消息里。**不要**按发布公告里的
|
|
4195
|
+
// 版本号拼 code(v0.4.198 的 `glm-5.2[1m]` 就是这么栽的)。
|
|
4175
4196
|
{
|
|
4176
|
-
id: "deepseek-
|
|
4177
|
-
displayName: "DeepSeek V4
|
|
4197
|
+
id: "deepseek-flash",
|
|
4198
|
+
displayName: "DeepSeek V4.1 Flash (multimodal, 1M)",
|
|
4178
4199
|
contextWindow: 1048576,
|
|
4179
4200
|
supportsStreaming: true,
|
|
4180
4201
|
supportsThinking: true
|
|
4181
4202
|
},
|
|
4182
4203
|
{
|
|
4183
|
-
id: "deepseek-v4-
|
|
4184
|
-
displayName: "DeepSeek V4
|
|
4204
|
+
id: "deepseek-v4-pro",
|
|
4205
|
+
displayName: "DeepSeek V4 Pro (text-only; routes to V4.1 Flash from 2026-09-14)",
|
|
4185
4206
|
contextWindow: 1048576,
|
|
4186
4207
|
supportsStreaming: true,
|
|
4187
4208
|
supportsThinking: true
|
|
4188
4209
|
}
|
|
4189
|
-
// Legacy aliases
|
|
4190
|
-
//
|
|
4191
|
-
//
|
|
4192
|
-
//
|
|
4210
|
+
// Legacy aliases:`deepseek-v4-flash` / `deepseek-v4-flash-vision-exp` 的底层模型已退役,
|
|
4211
|
+
// 端点仍接受这两个名字并路由到 V4.1 Flash(实测传 `deepseek-v4-flash` 返回 200 且响应
|
|
4212
|
+
// `model` 字段回显 `deepseek-flash`)。它们不再列进推荐清单,config 里 pin 过的会被
|
|
4213
|
+
// `migrateLegacyModels()` 自愈到 `deepseek-flash`;pricing.ts 保留旧 id 供历史成本回算。
|
|
4214
|
+
// `deepseek-chat` / `deepseek-reasoner` 早在 v0.4.140 移除(2026-07-24 停用)。
|
|
4193
4215
|
]
|
|
4194
4216
|
};
|
|
4195
4217
|
/**
|
|
@@ -17236,7 +17258,7 @@ Cache: write=${cacheCreate} read=${cacheRead}` : "";
|
|
|
17236
17258
|
Cost: ${formatCost(cost)}` : "";
|
|
17237
17259
|
let memoryLine = "";
|
|
17238
17260
|
try {
|
|
17239
|
-
const { countPendingMemories: countPendingMemories2 } = await import("./persistent-memory-
|
|
17261
|
+
const { countPendingMemories: countPendingMemories2 } = await import("./persistent-memory-EXJBXL33.js");
|
|
17240
17262
|
const pending = countPendingMemories2(ctx.config.getConfigDir());
|
|
17241
17263
|
if (pending > 0) memoryLine = `
|
|
17242
17264
|
Memory: \u26A0 ${pending} pending approval \u2014 see the Memory panel or /memory`;
|
|
@@ -18224,7 +18246,7 @@ async function handleTest(args, ctx) {
|
|
|
18224
18246
|
const isCommand = argStr.includes(" ") || /^(mvn|gradle|npm|pytest|cargo|go)\b/.test(argStr);
|
|
18225
18247
|
testArgs = isCommand ? { command: argStr } : { filter: argStr };
|
|
18226
18248
|
}
|
|
18227
|
-
const runTests = ctx.runTests ?? (await import("./run-tests-
|
|
18249
|
+
const runTests = ctx.runTests ?? (await import("./run-tests-2C7MWZBN.js")).executeTests;
|
|
18228
18250
|
const report = await runTests(testArgs);
|
|
18229
18251
|
ctx.send({ type: "info", message: report });
|
|
18230
18252
|
} catch (err) {
|
|
@@ -18615,7 +18637,7 @@ async function handleMemory(args, ctx) {
|
|
|
18615
18637
|
}
|
|
18616
18638
|
if (intent.kind === "status") {
|
|
18617
18639
|
const { getChatIndexStatus: getChatIndexStatus2 } = await import("./chat-index-RLVLQRRC.js");
|
|
18618
|
-
const { listMemoryEntries: listMemoryEntries2, isMemoryExpired: isMemoryExpired2, formatMemoryForPrompt: formatMemoryForPrompt2 } = await import("./persistent-memory-
|
|
18640
|
+
const { listMemoryEntries: listMemoryEntries2, isMemoryExpired: isMemoryExpired2, formatMemoryForPrompt: formatMemoryForPrompt2 } = await import("./persistent-memory-EXJBXL33.js");
|
|
18619
18641
|
const memories = listMemoryEntries2(configDir, { includeExpired: true, includeRejected: true });
|
|
18620
18642
|
const injected = formatMemoryForPrompt2(configDir, process.cwd(), ctx.config.get("memory")?.maxChars);
|
|
18621
18643
|
const view = buildMemoryStatusView({
|
|
@@ -18638,7 +18660,7 @@ async function handleMemory(args, ctx) {
|
|
|
18638
18660
|
return;
|
|
18639
18661
|
}
|
|
18640
18662
|
if (intent.kind === "recall") {
|
|
18641
|
-
const { searchPersistentMemories: searchPersistentMemories2, touchMemoryReferences: touchMemoryReferences2 } = await import("./persistent-memory-
|
|
18663
|
+
const { searchPersistentMemories: searchPersistentMemories2, touchMemoryReferences: touchMemoryReferences2 } = await import("./persistent-memory-EXJBXL33.js");
|
|
18642
18664
|
const { searchChatMemory: searchChatMemory2 } = await import("./chat-index-RLVLQRRC.js");
|
|
18643
18665
|
const persistentHits = searchPersistentMemories2(configDir, intent.query, process.cwd(), 3);
|
|
18644
18666
|
if (persistentHits.length > 0) {
|
|
@@ -18759,7 +18781,7 @@ async function handleMemory(args, ctx) {
|
|
|
18759
18781
|
ctx.handleMemoryManage(intent.action, args[1], intent.action === "expire" ? args[2] : void 0);
|
|
18760
18782
|
} else if (intent.kind === "export") {
|
|
18761
18783
|
if (args[1] === "md") {
|
|
18762
|
-
const { exportMemoryEntries: exportMemoryEntries2 } = await import("./persistent-memory-
|
|
18784
|
+
const { exportMemoryEntries: exportMemoryEntries2 } = await import("./persistent-memory-EXJBXL33.js");
|
|
18763
18785
|
ctx.send({
|
|
18764
18786
|
type: "export_data",
|
|
18765
18787
|
format: "md",
|
|
@@ -19764,7 +19786,7 @@ No tools match "${filter}".
|
|
|
19764
19786
|
const { join: join26 } = await import("path");
|
|
19765
19787
|
const { existsSync: existsSync32 } = await import("fs");
|
|
19766
19788
|
const { getGitRoot: getGitRoot2 } = await import("./git-context-VNCA2GU7.js");
|
|
19767
|
-
const { MCP_PROJECT_CONFIG_NAME: MCP_PROJECT_CONFIG_NAME2 } = await import("./constants-
|
|
19789
|
+
const { MCP_PROJECT_CONFIG_NAME: MCP_PROJECT_CONFIG_NAME2 } = await import("./constants-GYJTB6KI.js");
|
|
19768
19790
|
const { approveProject, hashMcpFile } = await import("./project-trust-6CJB5ZMX.js");
|
|
19769
19791
|
const cwd = process.cwd();
|
|
19770
19792
|
const projectRoot = getGitRoot2(cwd) ?? cwd;
|
|
@@ -20683,7 +20705,7 @@ function createReviewCommands() {
|
|
|
20683
20705
|
usage: "/test [command|filter]",
|
|
20684
20706
|
async execute(args, ctx) {
|
|
20685
20707
|
try {
|
|
20686
|
-
const { executeTests } = await import("./run-tests-
|
|
20708
|
+
const { executeTests } = await import("./run-tests-2C7MWZBN.js");
|
|
20687
20709
|
const argStr = args.join(" ").trim();
|
|
20688
20710
|
let testArgs = {};
|
|
20689
20711
|
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-
|
|
161
|
+
const { TaskOrchestrator } = await import("./task-orchestrator-HNRV3YUD.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,12 +24,12 @@ import {
|
|
|
24
24
|
setupProxy,
|
|
25
25
|
snapshotFile,
|
|
26
26
|
stripRoutingTags
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-T42GXE7Y.js";
|
|
28
28
|
import {
|
|
29
29
|
CostTracker,
|
|
30
30
|
getPricing,
|
|
31
31
|
setCostCurrency
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-LONB36SP.js";
|
|
33
33
|
import {
|
|
34
34
|
ToolExecutor,
|
|
35
35
|
ToolRegistry,
|
|
@@ -47,7 +47,7 @@ import {
|
|
|
47
47
|
setMaxOutputCap,
|
|
48
48
|
spawnAgentContext,
|
|
49
49
|
undoStack
|
|
50
|
-
} from "./chunk-
|
|
50
|
+
} from "./chunk-O7MMYJAD.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-
|
|
63
|
+
} from "./chunk-HXINWG37.js";
|
|
64
64
|
import "./chunk-RWRZVQCB.js";
|
|
65
65
|
import "./chunk-B3MPYI4E.js";
|
|
66
66
|
import "./chunk-M6HLYG33.js";
|
|
@@ -81,22 +81,22 @@ import {
|
|
|
81
81
|
import {
|
|
82
82
|
loadContextFiles,
|
|
83
83
|
writeCrashLog
|
|
84
|
-
} from "./chunk-
|
|
84
|
+
} from "./chunk-SCG2VBPB.js";
|
|
85
85
|
import {
|
|
86
86
|
getActivePluginAssets,
|
|
87
87
|
getPendingHookTrust,
|
|
88
88
|
installFlushOnExit,
|
|
89
89
|
mergePluginHooks,
|
|
90
90
|
runLifecycleHooks
|
|
91
|
-
} from "./chunk-
|
|
91
|
+
} from "./chunk-4BXTGXZ6.js";
|
|
92
92
|
import "./chunk-RS7SKYTS.js";
|
|
93
93
|
import {
|
|
94
94
|
ProviderRegistry,
|
|
95
95
|
listBuiltInProviderMetadata
|
|
96
|
-
} from "./chunk-
|
|
96
|
+
} from "./chunk-EHMMBIZT.js";
|
|
97
97
|
import {
|
|
98
98
|
ConfigManager
|
|
99
|
-
} from "./chunk-
|
|
99
|
+
} from "./chunk-RBCKX2FZ.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-
|
|
137
|
+
} from "./chunk-3GEO2LPO.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-
|
|
155
|
+
} from "./chunk-3CNPJLVI.js";
|
|
156
156
|
import "./chunk-SXIJLSVF.js";
|
|
157
157
|
|
|
158
158
|
// src/index.ts
|
|
@@ -1077,7 +1077,10 @@ function getVisionModelHint(model, provider) {
|
|
|
1077
1077
|
if (bare.includes("vision") || bare.includes("vl") || bare.includes("5v") || // glm-5v-turbo
|
|
1078
1078
|
bare.endsWith(".6v") || // glm-4.6v
|
|
1079
1079
|
bare === "glm-5.3-flash" || // GLM-5 系列首个原生多模态(名字里没有 v,得单独认)
|
|
1080
|
-
|
|
1080
|
+
// DeepSeek V4.1 Flash(2026-09)原生多模态。放在这条通用规则里而不是只写进下面的
|
|
1081
|
+
// deepseek 分支,是为了让 OpenRouter 的 `deepseek/deepseek-flash` 也一并放行——
|
|
1082
|
+
// 按 provider 分支写就会重演 v0.4.295「同一个坑换个前缀又漏一次」。
|
|
1083
|
+
bare.startsWith("deepseek-flash") || bare.endsWith("-v")) return null;
|
|
1081
1084
|
if (provider === "kimi") {
|
|
1082
1085
|
if (model.startsWith("moonshot-v1-")) {
|
|
1083
1086
|
const visionModel = model + "-vision-preview";
|
|
@@ -1089,7 +1092,8 @@ function getVisionModelHint(model, provider) {
|
|
|
1089
1092
|
return `model "${model}" does not support images. Use /model glm-5.3-flash (or glm-4.6v)`;
|
|
1090
1093
|
}
|
|
1091
1094
|
if (provider === "deepseek") {
|
|
1092
|
-
|
|
1095
|
+
if (bare.startsWith("deepseek-v4-flash")) return null;
|
|
1096
|
+
return `model "${model}" does not support images. Use /model deepseek-flash (DeepSeek V4.1 Flash)`;
|
|
1093
1097
|
}
|
|
1094
1098
|
return `model "${model}" may not support image input`;
|
|
1095
1099
|
}
|
|
@@ -4064,7 +4068,7 @@ program.command("web").description("Start Web UI server with browser-based chat
|
|
|
4064
4068
|
console.error("Error: Invalid port number. Must be between 1 and 65535.");
|
|
4065
4069
|
process.exit(1);
|
|
4066
4070
|
}
|
|
4067
|
-
const { startWebServer } = await import("./server-
|
|
4071
|
+
const { startWebServer } = await import("./server-AJH5TBVO.js");
|
|
4068
4072
|
await startWebServer({ port, host: options.host, externalOrigin: options.externalOrigin });
|
|
4069
4073
|
});
|
|
4070
4074
|
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) => {
|
|
@@ -4231,11 +4235,11 @@ program.command("sessions").description("List recent conversation sessions").opt
|
|
|
4231
4235
|
console.log(footer + "\n");
|
|
4232
4236
|
});
|
|
4233
4237
|
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) => {
|
|
4234
|
-
const { runUsageCli } = await import("./usage-
|
|
4238
|
+
const { runUsageCli } = await import("./usage-ZN5DU6Z7.js");
|
|
4235
4239
|
await runUsageCli(options);
|
|
4236
4240
|
});
|
|
4237
4241
|
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) => {
|
|
4238
|
-
const { runDoctorCli } = await import("./doctor-cli-
|
|
4242
|
+
const { runDoctorCli } = await import("./doctor-cli-J6LAQ5LU.js");
|
|
4239
4243
|
const argv = process.argv.slice(2);
|
|
4240
4244
|
await runDoctorCli({
|
|
4241
4245
|
json: !!options.json || argv.includes("--json"),
|
|
@@ -4244,7 +4248,7 @@ program.command("doctor").description("Health check: API keys, config, MCP, rece
|
|
|
4244
4248
|
});
|
|
4245
4249
|
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) => {
|
|
4246
4250
|
try {
|
|
4247
|
-
const batch = await import("./batch-
|
|
4251
|
+
const batch = await import("./batch-H4WWSZQ3.js");
|
|
4248
4252
|
switch (action) {
|
|
4249
4253
|
case "submit":
|
|
4250
4254
|
if (!arg) {
|
|
@@ -4287,7 +4291,7 @@ program.command("batch <action> [arg] [arg2]").description("Anthropic Message Ba
|
|
|
4287
4291
|
}
|
|
4288
4292
|
});
|
|
4289
4293
|
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) => {
|
|
4290
|
-
const { startMcpServer } = await import("./server-
|
|
4294
|
+
const { startMcpServer } = await import("./server-CYAB56O3.js");
|
|
4291
4295
|
await startMcpServer({
|
|
4292
4296
|
allowDestructive: !!options.allowDestructive,
|
|
4293
4297
|
allowOutsideCwd: !!options.allowOutsideCwd,
|
|
@@ -4300,7 +4304,7 @@ program.command("pr <action> [target]").description("PR review helpers: review |
|
|
|
4300
4304
|
console.error(`Unknown pr action: ${action}. Use review | security-review | summarize.`);
|
|
4301
4305
|
process.exit(1);
|
|
4302
4306
|
}
|
|
4303
|
-
const { runPrCli } = await import("./pr-
|
|
4307
|
+
const { runPrCli } = await import("./pr-6PUHVJ6K.js");
|
|
4304
4308
|
const result = await runPrCli({
|
|
4305
4309
|
action,
|
|
4306
4310
|
target,
|
|
@@ -4320,8 +4324,8 @@ program.command("pr <action> [target]").description("PR review helpers: review |
|
|
|
4320
4324
|
process.exit(result.exitCode);
|
|
4321
4325
|
});
|
|
4322
4326
|
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) => {
|
|
4323
|
-
const { runCi } = await import("./ci-
|
|
4324
|
-
const { formatCiResult } = await import("./ci-format-
|
|
4327
|
+
const { runCi } = await import("./ci-H6GPHG4T.js");
|
|
4328
|
+
const { formatCiResult } = await import("./ci-format-U47GSGYU.js");
|
|
4325
4329
|
const formats = [options.json, options.markdown, options.sarif].filter(Boolean).length;
|
|
4326
4330
|
if (formats > 1) {
|
|
4327
4331
|
console.error("Choose only one output format: --json, --markdown, or --sarif.");
|
|
@@ -4480,7 +4484,7 @@ program.command("hub [topic]").description("Start multi-agent hub (discuss / bra
|
|
|
4480
4484
|
config.get("customProviders"),
|
|
4481
4485
|
config.getConfigDir()
|
|
4482
4486
|
);
|
|
4483
|
-
const { startHub } = await import("./hub-
|
|
4487
|
+
const { startHub } = await import("./hub-G5FMMTVZ.js");
|
|
4484
4488
|
await startHub(
|
|
4485
4489
|
{
|
|
4486
4490
|
topic: topic ?? "",
|
|
@@ -27,11 +27,11 @@ import {
|
|
|
27
27
|
touchMemoryReferences,
|
|
28
28
|
updateMemoryApproval,
|
|
29
29
|
updateMemoryEntry
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-2E5W2E64.js";
|
|
31
31
|
import "./chunk-FSC6KEWU.js";
|
|
32
32
|
import "./chunk-2XMUCC42.js";
|
|
33
33
|
import "./chunk-CGLYJRFA.js";
|
|
34
|
-
import "./chunk-
|
|
34
|
+
import "./chunk-EAVX3RLD.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-
|
|
31
|
+
} from "./chunk-HXINWG37.js";
|
|
32
32
|
import "./chunk-3FEZSLGI.js";
|
|
33
33
|
import "./chunk-HOSJZMQS.js";
|
|
34
34
|
import "./chunk-BMLQPSHP.js";
|
|
35
|
-
import "./chunk-
|
|
35
|
+
import "./chunk-3CNPJLVI.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-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-IW6Q66WS.js";
|
|
6
|
+
import "./chunk-K4F7QEGW.js";
|
|
7
7
|
import {
|
|
8
8
|
buildReviewPrompt,
|
|
9
9
|
buildSecurityReviewPrompt,
|
|
@@ -14,16 +14,16 @@ import {
|
|
|
14
14
|
} from "./chunk-6YZEZFX5.js";
|
|
15
15
|
import {
|
|
16
16
|
ProviderRegistry
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-EHMMBIZT.js";
|
|
18
18
|
import {
|
|
19
19
|
ConfigManager
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-RBCKX2FZ.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-
|
|
26
|
+
} from "./chunk-3CNPJLVI.js";
|
|
27
27
|
|
|
28
28
|
// src/cli/pr.ts
|
|
29
29
|
import { execFileSync } from "child_process";
|
|
@@ -2,9 +2,9 @@ import {
|
|
|
2
2
|
executeTests,
|
|
3
3
|
runTestProcess,
|
|
4
4
|
runTestsTool
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-RLERORUI.js";
|
|
6
6
|
import "./chunk-QMFMST2T.js";
|
|
7
|
-
import "./chunk-
|
|
7
|
+
import "./chunk-EAVX3RLD.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-
|
|
89
|
+
} from "./chunk-T42GXE7Y.js";
|
|
90
90
|
import {
|
|
91
91
|
CNY_PER_USD,
|
|
92
92
|
CostTracker,
|
|
@@ -95,7 +95,7 @@ import {
|
|
|
95
95
|
getCostCurrency,
|
|
96
96
|
getPricing,
|
|
97
97
|
setCostCurrency
|
|
98
|
-
} from "./chunk-
|
|
98
|
+
} from "./chunk-LONB36SP.js";
|
|
99
99
|
import {
|
|
100
100
|
DEFAULT_MAX_TOOL_OUTPUT_CHARS,
|
|
101
101
|
ToolExecutor,
|
|
@@ -130,7 +130,7 @@ import {
|
|
|
130
130
|
spawnAgentContext,
|
|
131
131
|
truncateOutput,
|
|
132
132
|
undoStack
|
|
133
|
-
} from "./chunk-
|
|
133
|
+
} from "./chunk-O7MMYJAD.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-
|
|
160
|
+
} from "./chunk-HXINWG37.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-
|
|
179
|
+
} from "./chunk-SCG2VBPB.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-
|
|
194
|
+
} from "./chunk-4BXTGXZ6.js";
|
|
195
195
|
import "./chunk-RS7SKYTS.js";
|
|
196
196
|
import {
|
|
197
197
|
ProviderRegistry
|
|
198
|
-
} from "./chunk-
|
|
198
|
+
} from "./chunk-EHMMBIZT.js";
|
|
199
199
|
import {
|
|
200
200
|
ConfigManager
|
|
201
|
-
} from "./chunk-
|
|
201
|
+
} from "./chunk-RBCKX2FZ.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-
|
|
234
|
+
import "./chunk-3GEO2LPO.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-
|
|
250
|
+
} from "./chunk-3CNPJLVI.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-
|
|
981
|
+
const { countPendingMemories: countPendingMemories2 } = await import("./persistent-memory-LEE454DW.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-
|
|
1910
|
+
const runTests = ctx.runTests ?? (await import("./run-tests-33ZVQE3Q.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-
|
|
2186
|
+
const { listMemoryEntries: listMemoryEntries2, isMemoryExpired: isMemoryExpired2, formatMemoryForPrompt: formatMemoryForPrompt2 } = await import("./persistent-memory-LEE454DW.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-
|
|
2209
|
+
const { searchPersistentMemories, touchMemoryReferences } = await import("./persistent-memory-LEE454DW.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-
|
|
2330
|
+
const { exportMemoryEntries: exportMemoryEntries2 } = await import("./persistent-memory-LEE454DW.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-
|
|
4
|
+
} from "./chunk-O7MMYJAD.js";
|
|
5
5
|
import "./chunk-6JHACXB3.js";
|
|
6
|
-
import "./chunk-
|
|
6
|
+
import "./chunk-HXINWG37.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-
|
|
17
|
+
} from "./chunk-4BXTGXZ6.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-
|
|
27
|
+
import "./chunk-3GEO2LPO.js";
|
|
28
28
|
import {
|
|
29
29
|
VERSION
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-3CNPJLVI.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-
|
|
7
|
+
} from "./chunk-O7MMYJAD.js";
|
|
8
8
|
import "./chunk-6JHACXB3.js";
|
|
9
|
-
import "./chunk-
|
|
9
|
+
import "./chunk-HXINWG37.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-
|
|
20
|
+
} from "./chunk-4BXTGXZ6.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-
|
|
32
|
+
import "./chunk-3GEO2LPO.js";
|
|
33
33
|
import {
|
|
34
34
|
SUBAGENT_ALLOWED_TOOLS
|
|
35
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-3CNPJLVI.js";
|
|
36
36
|
import "./chunk-SXIJLSVF.js";
|
|
37
37
|
|
|
38
38
|
// src/hub/task-orchestrator.ts
|
|
@@ -5,14 +5,14 @@ import {
|
|
|
5
5
|
formatCost,
|
|
6
6
|
getPricing,
|
|
7
7
|
setCostCurrency
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-LONB36SP.js";
|
|
9
9
|
import "./chunk-RS7SKYTS.js";
|
|
10
10
|
import {
|
|
11
11
|
ConfigManager
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-RBCKX2FZ.js";
|
|
13
13
|
import "./chunk-TU3L3PW7.js";
|
|
14
14
|
import "./chunk-BMLQPSHP.js";
|
|
15
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-3CNPJLVI.js";
|
|
16
16
|
|
|
17
17
|
// src/cli/usage.ts
|
|
18
18
|
function classifyRowCost(row) {
|