jinzd-ai-cli 0.4.329 → 0.4.330
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 +4 -4
- package/README.zh-CN.md +4 -4
- package/dist/{batch-NNYRIS4U.js → batch-GXITPLER.js} +2 -2
- package/dist/{chunk-ABIR2TGW.js → chunk-265M6ZLH.js} +4 -4
- package/dist/{chunk-BRZZ3QAI.js → chunk-2BAFLDDL.js} +44 -7
- package/dist/{chunk-LKSMXCFL.js → chunk-2SYDIWRU.js} +1 -1
- package/dist/{chunk-IUC3DRGB.js → chunk-3YVZJHTF.js} +1 -1
- package/dist/{chunk-6UDKGZ3D.js → chunk-AJITHMRE.js} +1 -1
- package/dist/{chunk-YDH5ZWOQ.js → chunk-CCFCPAKN.js} +1 -1
- package/dist/{chunk-LRRBYGHE.js → chunk-DU44SD6A.js} +1 -1
- package/dist/{chunk-XF2S7LNM.js → chunk-DX2U6QK4.js} +1 -1
- package/dist/{chunk-I5KLH7TL.js → chunk-GEC3MEVQ.js} +48 -40
- package/dist/{chunk-DRNRQ6SD.js → chunk-GWEBO4RF.js} +1 -1
- package/dist/{chunk-SS3PG7LP.js → chunk-HMQA2R3O.js} +1 -1
- package/dist/{chunk-LSSOPLKJ.js → chunk-LLXHA2LA.js} +8 -8
- package/dist/{chunk-TYQODNI7.js → chunk-LUJ4JVMI.js} +4 -4
- package/dist/{chunk-MPCQG7LV.js → chunk-M5B6G6AY.js} +4 -4
- package/dist/{chunk-2CNJ25U7.js → chunk-QU74ONFF.js} +9 -3
- package/dist/{ci-ODKA57IG.js → ci-6K3JNHB4.js} +5 -5
- package/dist/{ci-format-QDC4XKYZ.js → ci-format-2L3RFJVH.js} +2 -2
- package/dist/{constants-MG7EGG5J.js → constants-DLJECTGQ.js} +1 -1
- package/dist/{constants-BYWEJLAI.js → constants-J5SJ232X.js} +1 -1
- package/dist/{doctor-cli-LYZSHYR6.js → doctor-cli-BHS7G2XY.js} +5 -5
- package/dist/electron-server.js +109 -58
- package/dist/{hub-GRHYVLGV.js → hub-PPG4N6QQ.js} +1 -1
- package/dist/index.js +21 -20
- package/dist/{persistent-memory-OCDFR4BH.js → persistent-memory-3XTSZ3QR.js} +2 -2
- package/dist/{persistent-memory-O6GWHGJH.js → persistent-memory-O4T2OTVV.js} +2 -2
- package/dist/{pr-LDUIDU27.js → pr-M6ZY4CEK.js} +5 -5
- package/dist/{run-tests-YTRU22LY.js → run-tests-H3DIUCDB.js} +2 -2
- package/dist/{run-tests-LTYJACRX.js → run-tests-WQE3XTUL.js} +2 -2
- package/dist/{server-2NZN22XP.js → server-5NQSYQ2T.js} +15 -15
- package/dist/{server-ZTFB3KMS.js → server-J2B26DZK.js} +5 -5
- package/dist/{task-orchestrator-URFLWSPI.js → task-orchestrator-CI7EDT25.js} +5 -5
- package/dist/{usage-IP6G4Q2K.js → usage-AJYZ5A7P.js} +3 -3
- package/package.json +1 -1
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
import {
|
|
3
3
|
formatDoctorReport,
|
|
4
4
|
runDoctorCli
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-265M6ZLH.js";
|
|
6
|
+
import "./chunk-HMQA2R3O.js";
|
|
7
7
|
import "./chunk-RS7SKYTS.js";
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
8
|
+
import "./chunk-GEC3MEVQ.js";
|
|
9
|
+
import "./chunk-QU74ONFF.js";
|
|
10
10
|
import "./chunk-E2W2MI6H.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-AJITHMRE.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-2SYDIWRU.js";
|
|
59
59
|
import {
|
|
60
60
|
DEFAULT_PATTERNS,
|
|
61
61
|
redactJson,
|
|
@@ -81,7 +81,7 @@ import {
|
|
|
81
81
|
recoverGbkMojibake,
|
|
82
82
|
runTestsTool,
|
|
83
83
|
shellInvocation
|
|
84
|
-
} from "./chunk-
|
|
84
|
+
} from "./chunk-DU44SD6A.js";
|
|
85
85
|
import {
|
|
86
86
|
getCurrentSessionKey,
|
|
87
87
|
getExecutionConfigDir,
|
|
@@ -123,7 +123,7 @@ import {
|
|
|
123
123
|
SUBAGENT_MAX_ROUNDS_LIMIT,
|
|
124
124
|
VERSION,
|
|
125
125
|
buildUserIdentityPrompt
|
|
126
|
-
} from "./chunk-
|
|
126
|
+
} from "./chunk-3YVZJHTF.js";
|
|
127
127
|
|
|
128
128
|
// src/web/access.ts
|
|
129
129
|
import { randomBytes, timingSafeEqual } from "crypto";
|
|
@@ -691,8 +691,14 @@ ${err}`
|
|
|
691
691
|
"deepseek-v4-flash-vision-exp"
|
|
692
692
|
]);
|
|
693
693
|
const DEEPSEEK_TARGET = "deepseek-flash";
|
|
694
|
-
const LEGACY_KIMI = /* @__PURE__ */ new Set([
|
|
695
|
-
|
|
694
|
+
const LEGACY_KIMI = /* @__PURE__ */ new Set([
|
|
695
|
+
"kimi-k2-0711-preview",
|
|
696
|
+
"kimi-k2-turbo-preview",
|
|
697
|
+
"kimi-k2.5",
|
|
698
|
+
"kimi-k2-thinking",
|
|
699
|
+
"kimi-k2-thinking-turbo"
|
|
700
|
+
]);
|
|
701
|
+
const KIMI_TARGET = "kimi-k2.7-code";
|
|
696
702
|
const LEGACY_CLAUDE = {
|
|
697
703
|
"claude-sonnet-4-5-20250929": "claude-sonnet-5-5",
|
|
698
704
|
"claude-sonnet-4-5": "claude-sonnet-5-5",
|
|
@@ -921,7 +927,6 @@ function deepSeekCnyPricing(cacheRead, input, output) {
|
|
|
921
927
|
output: output / CNY_PER_USD
|
|
922
928
|
};
|
|
923
929
|
}
|
|
924
|
-
var DEEPSEEK_V4_PRO_ROUTED_TO_FLASH_AT = /* @__PURE__ */ new Date("2026-09-14T04:00:00.000Z");
|
|
925
930
|
var DEEPSEEK_V41_FLASH_ROUTING_CONFIRMED_AT = /* @__PURE__ */ new Date("2026-09-11T00:00:00.000Z");
|
|
926
931
|
function isDeepSeekPeakHour(at) {
|
|
927
932
|
const weekday = at.getUTCDay();
|
|
@@ -937,7 +942,6 @@ function getDeepSeekV4Pricing(model, at) {
|
|
|
937
942
|
const isPro = model.startsWith("deepseek-v4-pro");
|
|
938
943
|
const isFlash = model.startsWith("deepseek-v4-flash");
|
|
939
944
|
if (!isPro && !isFlash) return null;
|
|
940
|
-
if (isPro && at >= DEEPSEEK_V4_PRO_ROUTED_TO_FLASH_AT) return deepSeekFlash41Pricing(at);
|
|
941
945
|
if (isFlash && at >= DEEPSEEK_V41_FLASH_ROUTING_CONFIRMED_AT) return deepSeekFlash41Pricing(at);
|
|
942
946
|
if (at < DEEPSEEK_TIME_PRICING_EFFECTIVE_AT) {
|
|
943
947
|
return isPro ? deepSeekCnyPricing(0.025, 3, 6) : deepSeekCnyPricing(0.02, 1, 2);
|
|
@@ -1016,6 +1020,12 @@ var PRICING_TABLE = {
|
|
|
1016
1020
|
// Kimi K3(2026-07 旗舰,1M 上下文)官方定价 platform.kimi.ai/pricing/chat-k3:
|
|
1017
1021
|
// 输入 cache-miss $3.00 / cache-hit $0.30,输出 $15.00(/MTok)。
|
|
1018
1022
|
"kimi-k3": { input: 3, output: 15, cacheRead: 0.3 },
|
|
1023
|
+
// K2.6 / K2.7 Code:官方 platform.kimi.ai/docs/pricing/chat(2026-10-18 核对,USD/MTok)。
|
|
1024
|
+
// 国内站人民币价 ¥6.5/¥27(缓存 ¥1.1 / ¥1.3)按 ¥6.9 折算与之相差 <3%,沿用 K3 那行的美元口径。
|
|
1025
|
+
// 此前 K2.6 没有单列,前缀落到 'kimi-k2'($0.6/$2.5),输出低报约 37%。
|
|
1026
|
+
"kimi-k2.6": { input: 0.95, output: 4, cacheRead: 0.16 },
|
|
1027
|
+
"kimi-k2.7-code": { input: 0.95, output: 4, cacheRead: 0.19 },
|
|
1028
|
+
"kimi-k2.7-code-highspeed": { input: 1.9, output: 8, cacheRead: 0.38 },
|
|
1019
1029
|
// ── Zhipu GLM ─────────────────────────────────────────────────
|
|
1020
1030
|
"glm-4-plus": { input: 0.7, output: 0.7 },
|
|
1021
1031
|
"glm-4": { input: 0.14, output: 0.14 },
|
|
@@ -1037,6 +1047,11 @@ var PRICING_TABLE = {
|
|
|
1037
1047
|
// 没公布截止日期,静态表表达不了这个时间维度;高估比低估安全——预算告警早触发
|
|
1038
1048
|
// 好过晚触发。折扣期内 `/cost` 会比实际偏高约一倍,这是刻意的取舍。
|
|
1039
1049
|
"glm-5.3-flash": { input: 0.116, output: 0.406, cacheRead: 0.033 },
|
|
1050
|
+
// GLM-5.3-FlashX:官方定价页(docs.bigmodel.cn/cn/guide/start/pricing,2026-10-18 浏览器读取)
|
|
1051
|
+
// 输入 2 元、输出 7 元、缓存命中 0.57 元。必须单列——否则前缀匹配会落到上面的 glm-5.3-flash,低报 2.5 倍。
|
|
1052
|
+
"glm-5.3-flashx": { input: 2 / CNY_PER_USD, output: 7 / CNY_PER_USD, cacheRead: 0.57 / CNY_PER_USD },
|
|
1053
|
+
// GLM-4.7-Flash:官方免费(输入/输出/缓存全免)。必须单列——否则前缀落到 'glm-4'($0.14)。
|
|
1054
|
+
"glm-4.7-flash": { input: 0, output: 0, cacheRead: 0 },
|
|
1040
1055
|
// GLM-5.2:与 GLM-5.3 同价(同一定价页:8 / 28 / 缓存命中 2 元),口径修正同上。
|
|
1041
1056
|
"glm-5.2": { input: 8 / CNY_PER_USD, output: 28 / CNY_PER_USD, cacheRead: 2 / CNY_PER_USD },
|
|
1042
1057
|
// GLM-5V-Turbo(2026-04 视觉编程旗舰)官方直连 API 定价 $1.20 / $4.00。
|
|
@@ -1046,8 +1061,26 @@ var PRICING_TABLE = {
|
|
|
1046
1061
|
"glm-z1-air": { input: 0.2, output: 0.6 },
|
|
1047
1062
|
"glm-z1-flash": { input: 0, output: 0 },
|
|
1048
1063
|
// ── MiniMax (海螺) ────────────────────────────────────────────
|
|
1049
|
-
//
|
|
1050
|
-
//
|
|
1064
|
+
// 官方定价页 platform.minimax.cn/docs/guides/pricing(2026-10-18 核对,元/百万 tokens),按 ¥6.9 折算。
|
|
1065
|
+
// 本 provider 打的是国内站 api.minimaxi.com,按人民币计费。
|
|
1066
|
+
// M3 记的是「永久五折」后的价(官方原文标注永久,不同于智谱的限时折扣),≤512K 输入档;
|
|
1067
|
+
// >512K 那档见 computeCost 的 LONG_PROMPT_TIERS。M3 未公布缓存写入价,缺省按输入价(偏高估)。
|
|
1068
|
+
"minimax-m3": { input: 2.1 / CNY_PER_USD, output: 8.4 / CNY_PER_USD, cacheRead: 0.42 / CNY_PER_USD },
|
|
1069
|
+
"minimax-m2.7": { input: 2.1 / CNY_PER_USD, output: 8.4 / CNY_PER_USD, cacheRead: 0.42 / CNY_PER_USD, cacheWrite: 2.625 / CNY_PER_USD },
|
|
1070
|
+
"minimax-m2.7-highspeed": { input: 4.2 / CNY_PER_USD, output: 16.8 / CNY_PER_USD, cacheRead: 0.42 / CNY_PER_USD, cacheWrite: 2.625 / CNY_PER_USD },
|
|
1071
|
+
// M2.5 / M2.1 / M2(历史模型)同价;highspeed 变体输入输出翻倍、缓存同价。
|
|
1072
|
+
"minimax-m2": { input: 2.1 / CNY_PER_USD, output: 8.4 / CNY_PER_USD, cacheRead: 0.21 / CNY_PER_USD, cacheWrite: 2.625 / CNY_PER_USD },
|
|
1073
|
+
"minimax-m2.5-highspeed": { input: 4.2 / CNY_PER_USD, output: 16.8 / CNY_PER_USD, cacheRead: 0.21 / CNY_PER_USD, cacheWrite: 2.625 / CNY_PER_USD },
|
|
1074
|
+
"minimax-m2.1-highspeed": { input: 4.2 / CNY_PER_USD, output: 16.8 / CNY_PER_USD, cacheRead: 0.21 / CNY_PER_USD, cacheWrite: 2.625 / CNY_PER_USD },
|
|
1075
|
+
// ── Qwen(阿里云百炼,北京地域)───────────────────────────────────
|
|
1076
|
+
// 官方 help.aliyun.com/zh/model-studio/model-pricing(2026-10-18 核对,元/百万 tokens,原价),按 ¥6.9 折算。
|
|
1077
|
+
// 思考与非思考输出同价。qwen3.7-plus 当前限时 8 折,记原价(高估方向,同智谱 glm-5.3-flash 的取舍)。
|
|
1078
|
+
// 官方未给出各模型的缓存单价,不填 cacheRead,命中按输入全价算(高估方向)。
|
|
1079
|
+
// 长提示分档(qwen3.7-plus >256K、qwen-flash >128K / >256K)见 LONG_PROMPT_TIERS;此处为最低档。
|
|
1080
|
+
"qwen3.8-max": { input: 12 / CNY_PER_USD, output: 36 / CNY_PER_USD },
|
|
1081
|
+
"qwen3.7-plus": { input: 2 / CNY_PER_USD, output: 8 / CNY_PER_USD },
|
|
1082
|
+
"qwen3.8-flash": { input: 0.8 / CNY_PER_USD, output: 2.7 / CNY_PER_USD },
|
|
1083
|
+
"qwen-flash": { input: 0.15 / CNY_PER_USD, output: 1.5 / CNY_PER_USD },
|
|
1051
1084
|
// ── OpenRouter (pass-through — actual cost depends on underlying model) ──
|
|
1052
1085
|
// 绝大多数 id 仍**刻意留空**:真实价由底层模型 + OpenRouter 加价决定,静态表覆盖不了
|
|
1053
1086
|
// 396 个模型,未收录的照旧显示 "—"(未知)而不是假的 $0.00。
|
|
@@ -1102,11 +1135,21 @@ function getPricing(provider, model, at = /* @__PURE__ */ new Date()) {
|
|
|
1102
1135
|
return null;
|
|
1103
1136
|
}
|
|
1104
1137
|
var CLAUDE_HAIKU_55_LONG = { input: 0.5, output: 2.5, cacheWrite: 0.625, cacheRead: 0.05 };
|
|
1105
|
-
var
|
|
1138
|
+
var LONG_PROMPT_TIERS = [
|
|
1139
|
+
{ prefix: "claude-haiku-5-5", overTokens: 1e5, pricing: CLAUDE_HAIKU_55_LONG },
|
|
1140
|
+
{
|
|
1141
|
+
prefix: "minimax-m3",
|
|
1142
|
+
overTokens: 512e3,
|
|
1143
|
+
pricing: { input: 4.2 / CNY_PER_USD, output: 16.8 / CNY_PER_USD, cacheRead: 0.84 / CNY_PER_USD }
|
|
1144
|
+
},
|
|
1145
|
+
{ prefix: "qwen3.7-plus", overTokens: 256e3, pricing: { input: 6 / CNY_PER_USD, output: 24 / CNY_PER_USD } },
|
|
1146
|
+
{ prefix: "qwen-flash", overTokens: 256e3, pricing: { input: 1.2 / CNY_PER_USD, output: 12 / CNY_PER_USD } },
|
|
1147
|
+
{ prefix: "qwen-flash", overTokens: 128e3, pricing: { input: 0.6 / CNY_PER_USD, output: 6 / CNY_PER_USD } }
|
|
1148
|
+
];
|
|
1106
1149
|
function longPromptTier(model, usage) {
|
|
1107
|
-
|
|
1150
|
+
const key = model.toLowerCase();
|
|
1108
1151
|
const prompt = usage.inputTokens + (usage.cacheCreationTokens ?? 0) + (usage.cacheReadTokens ?? 0);
|
|
1109
|
-
return prompt >
|
|
1152
|
+
return LONG_PROMPT_TIERS.find((t) => key.startsWith(t.prefix) && prompt > t.overTokens)?.pricing ?? null;
|
|
1110
1153
|
}
|
|
1111
1154
|
function computeCost(provider, model, usage, at = /* @__PURE__ */ new Date()) {
|
|
1112
1155
|
const p = longPromptTier(model, usage) ?? getPricing(provider, model, at);
|
|
@@ -4447,7 +4490,9 @@ var DeepSeekProvider = class extends OpenAICompatibleProvider {
|
|
|
4447
4490
|
},
|
|
4448
4491
|
{
|
|
4449
4492
|
id: "deepseek-v4-pro",
|
|
4450
|
-
|
|
4493
|
+
// 2026-09-11 官方撤回了「9-14 起路由到 Flash」,Pro 照常服务、按 Pro 价计费(见 pricing.ts)。
|
|
4494
|
+
// 价格约为 Flash 的 4 倍且不收图片,但 Flash 替代不了它的能力档,故保留。
|
|
4495
|
+
displayName: "DeepSeek V4 Pro (0813, text-only)",
|
|
4451
4496
|
contextWindow: 1048576,
|
|
4452
4497
|
supportsStreaming: true,
|
|
4453
4498
|
supportsThinking: true
|
|
@@ -4506,20 +4551,24 @@ var DeepSeekProvider = class extends OpenAICompatibleProvider {
|
|
|
4506
4551
|
var ZHIPU_CONFIG = {
|
|
4507
4552
|
id: "zhipu",
|
|
4508
4553
|
displayName: "Zhipu (GLM)",
|
|
4509
|
-
defaultModel: "glm-
|
|
4554
|
+
defaultModel: "glm-5.3-flash",
|
|
4510
4555
|
apiKeyEnvVar: "AICLI_API_KEY_ZHIPU",
|
|
4511
4556
|
baseUrl: "https://open.bigmodel.cn/api/paas/v4",
|
|
4512
4557
|
defaultTimeout: 3e5,
|
|
4513
4558
|
models: [
|
|
4514
4559
|
{ id: "glm-5.3", displayName: "GLM-5.3 (2026-08 Flagship, 1M, Coding/Security, \u59CB\u7EC8\u601D\u8003)", contextWindow: 1048576, supportsStreaming: true, supportsThinking: true },
|
|
4560
|
+
// GLM-5.3-FlashX(2026-10):Flash 与 5.3 之间的一档,¥2/¥7、缓存命中 ¥0.57(官方定价页)。
|
|
4561
|
+
// 2026-10-18 实测:同样始终思考(`disabled` → 400/1210),`low` 档 200,base64 图片可识别。
|
|
4562
|
+
{ id: "glm-5.3-flashx", displayName: "GLM-5.3 FlashX (\u539F\u751F\u591A\u6A21\u6001, 1M, \u4EF7\u683C\u7EA6\u4E3A 5.3 \u7684 1/4, \u59CB\u7EC8\u601D\u8003)", contextWindow: 1048576, supportsStreaming: true, supportsThinking: true },
|
|
4515
4563
|
{ id: "glm-5.3-flash", displayName: "GLM-5.3 Flash (\u539F\u751F\u591A\u6A21\u6001, 1M, \u8F93\u5165\u7EA6\u4E3A 5.3 \u7684 1/10, \u59CB\u7EC8\u601D\u8003)", contextWindow: 1048576, supportsStreaming: true, supportsThinking: true },
|
|
4516
|
-
|
|
4517
|
-
{ id: "glm-
|
|
4518
|
-
// 2026-10-
|
|
4519
|
-
//
|
|
4520
|
-
//
|
|
4521
|
-
//
|
|
4522
|
-
|
|
4564
|
+
// 免费(输入/输出/缓存全免,官方定价页「更多文本模型」)。2026-10-18 实测 200,但慢(一句 ok 约 15s)。
|
|
4565
|
+
{ id: "glm-4.7-flash", displayName: "GLM-4.7 Flash (\u514D\u8D39, 200K)", contextWindow: 2e5, supportsStreaming: true }
|
|
4566
|
+
// 2026-10-18 按「老模型没有价格优势就下架」清理(端点仍可用,`/model` 照收,pricing.ts 保留费率供历史回算):
|
|
4567
|
+
// - glm-5.2:与 glm-5.3 同价(¥8/¥28/缓存 ¥2),已被取代
|
|
4568
|
+
// - glm-5v-turbo:¥5/¥22 起,比同样原生多模态的 glm-5.3-flash(¥0.8/¥2.8)贵 6–8 倍
|
|
4569
|
+
// - glm-4.6:已不在官方定价页上,且旧价高于 glm-5.3-flash
|
|
4570
|
+
// 更早的 2026-10-07 清理:glm-5.1-reasoning / glm-5.1-air 官方从未存在(取自第三方标注,同 v0.4.198
|
|
4571
|
+
// 的 `glm-5.2[1m]`),glm-5 / glm-5.1 已被取代。
|
|
4523
4572
|
]
|
|
4524
4573
|
};
|
|
4525
4574
|
var REASONING_EFFORT_MODELS = /^glm-5/i;
|
|
@@ -4585,7 +4634,10 @@ var KimiProvider = class _KimiProvider extends OpenAICompatibleProvider {
|
|
|
4585
4634
|
*/
|
|
4586
4635
|
static TEMP_1_MODELS = /* @__PURE__ */ new Set([
|
|
4587
4636
|
"kimi-k3",
|
|
4637
|
+
"kimi-k2.7-code",
|
|
4638
|
+
"kimi-k2.7-code-highspeed",
|
|
4588
4639
|
"kimi-k2.6",
|
|
4640
|
+
// 已 404 的旧 code 仍留在这里:config 自愈迁移之外的显式 `/model kimi-k2.5` 不该先撞 temperature 400
|
|
4589
4641
|
"kimi-k2.5",
|
|
4590
4642
|
"kimi-k2-thinking",
|
|
4591
4643
|
"kimi-k2-thinking-turbo"
|
|
@@ -4606,7 +4658,7 @@ var KimiProvider = class _KimiProvider extends OpenAICompatibleProvider {
|
|
|
4606
4658
|
info = {
|
|
4607
4659
|
id: "kimi",
|
|
4608
4660
|
displayName: "Kimi (Moonshot AI)",
|
|
4609
|
-
defaultModel: "kimi-k2.
|
|
4661
|
+
defaultModel: "kimi-k2.7-code",
|
|
4610
4662
|
apiKeyEnvVar: "AICLI_API_KEY_KIMI",
|
|
4611
4663
|
requiresApiKey: true,
|
|
4612
4664
|
baseUrl: this.defaultBaseUrl,
|
|
@@ -4616,39 +4668,33 @@ var KimiProvider = class _KimiProvider extends OpenAICompatibleProvider {
|
|
|
4616
4668
|
// - contextWindow 1M(1048576);code 就是 `kimi-k3`(UI 名 "K3 · Max" ≠ API code)
|
|
4617
4669
|
// - temperature 固定 1.0(已并入 TEMP_1_MODELS)
|
|
4618
4670
|
// - vision 走 base64 / ms://file-id(不收公网 URL)——本版未接图片输入路径,仅文本/工具
|
|
4619
|
-
//
|
|
4671
|
+
// 默认用 kimi-k2.7-code(K3 输出 $15/MTok,约为它的 4 倍,按需 /model kimi-k3)。
|
|
4620
4672
|
{
|
|
4621
4673
|
id: "kimi-k3",
|
|
4622
4674
|
displayName: "Kimi K3",
|
|
4623
4675
|
contextWindow: 1048576,
|
|
4624
4676
|
supportsStreaming: true
|
|
4625
4677
|
},
|
|
4626
|
-
// Kimi K2.
|
|
4627
|
-
|
|
4628
|
-
|
|
4629
|
-
|
|
4630
|
-
|
|
4631
|
-
supportsStreaming: true
|
|
4632
|
-
},
|
|
4633
|
-
{
|
|
4634
|
-
id: "kimi-k2.5",
|
|
4635
|
-
displayName: "Kimi K2.5",
|
|
4636
|
-
contextWindow: 262144,
|
|
4637
|
-
supportsStreaming: true
|
|
4638
|
-
},
|
|
4639
|
-
// Kimi K2 Thinking 系列(支持多步推理 + 工具调用)
|
|
4678
|
+
// Kimi K2.7 Code(官方 platform.kimi.com/docs/guide/kimi-k2-7-code-quickstart,2026-10-18 核对):
|
|
4679
|
+
// - 256K 上下文;虽名为 Coding 模型,官方写明也支持对话与 Agent 任务
|
|
4680
|
+
// - 思考默认开启且**关不掉**(关闭报错)——本 provider 不发 thinking 字段,正好不踩
|
|
4681
|
+
// - temperature 固定 1.0(已并入 TEMP_1_MODELS);tool_choice 只收 auto / none
|
|
4682
|
+
// - 价格与 K2.6 相同($0.95/$4.00),各项基准提升 10–30%,故取代 K2.6 成为默认
|
|
4640
4683
|
{
|
|
4641
|
-
id: "kimi-k2-
|
|
4642
|
-
displayName: "Kimi K2
|
|
4684
|
+
id: "kimi-k2.7-code",
|
|
4685
|
+
displayName: "Kimi K2.7 Code",
|
|
4643
4686
|
contextWindow: 262144,
|
|
4644
4687
|
supportsStreaming: true
|
|
4645
4688
|
},
|
|
4689
|
+
// 同一模型的高速版:输出约 5–6 倍速,价格翻倍。
|
|
4646
4690
|
{
|
|
4647
|
-
id: "kimi-k2-
|
|
4648
|
-
displayName: "Kimi K2
|
|
4691
|
+
id: "kimi-k2.7-code-highspeed",
|
|
4692
|
+
displayName: "Kimi K2.7 Code Highspeed (2x price, ~5x speed)",
|
|
4649
4693
|
contextWindow: 262144,
|
|
4650
4694
|
supportsStreaming: true
|
|
4651
4695
|
}
|
|
4696
|
+
// 2026-10-18 下架:kimi-k2.6 与 K2.7 Code 同价、已被取代(端点仍可用,`/model` 照收);
|
|
4697
|
+
// kimi-k2.5 / kimi-k2-thinking / kimi-k2-thinking-turbo 端点已 404,由 config 自愈迁移到 kimi-k2.7-code。
|
|
4652
4698
|
]
|
|
4653
4699
|
};
|
|
4654
4700
|
/**
|
|
@@ -4760,11 +4806,10 @@ var MINIMAX_CONFIG = {
|
|
|
4760
4806
|
apiKeyEnvVar: "AICLI_API_KEY_MINIMAX",
|
|
4761
4807
|
baseUrl: "https://api.minimaxi.com/v1",
|
|
4762
4808
|
models: [
|
|
4763
|
-
{ id: "MiniMax-M3", displayName: "MiniMax M3\uFF08\u65D7\u8230\uFF0C1M \u4E0A\u4E0B\u6587\uFF09", contextWindow: 1e6, supportsStreaming: true }
|
|
4764
|
-
|
|
4765
|
-
|
|
4766
|
-
|
|
4767
|
-
{ id: "MiniMax-M2.5-highspeed", displayName: "MiniMax M2.5 Highspeed", contextWindow: 1e6, supportsStreaming: true }
|
|
4809
|
+
{ id: "MiniMax-M3", displayName: "MiniMax M3\uFF08\u65D7\u8230\uFF0C1M \u4E0A\u4E0B\u6587\uFF09", contextWindow: 1e6, supportsStreaming: true }
|
|
4810
|
+
// 2026-10-18 按「老模型没有价格优势就下架」清理(官方定价页 platform.minimax.cn/docs/guides/pricing):
|
|
4811
|
+
// M3「永久五折」后 ¥2.1/¥8.4,与 M2.7 同价、比 M2.x highspeed 便宜一半;M2.5 / M2.1 / M2 官方已归入
|
|
4812
|
+
// 「历史模型」。端点仍可用,`/model` 照收,pricing.ts 保留费率供历史回算。
|
|
4768
4813
|
]
|
|
4769
4814
|
};
|
|
4770
4815
|
var MiniMaxProvider = createStaticProviderClass(MINIMAX_CONFIG);
|
|
@@ -4773,14 +4818,20 @@ var MiniMaxProvider = createStaticProviderClass(MINIMAX_CONFIG);
|
|
|
4773
4818
|
var QWEN_CONFIG = {
|
|
4774
4819
|
id: "qwen",
|
|
4775
4820
|
displayName: "Qwen (Alibaba Cloud)",
|
|
4776
|
-
defaultModel: "
|
|
4821
|
+
defaultModel: "qwen3.8-flash",
|
|
4777
4822
|
apiKeyEnvVar: "AICLI_API_KEY_QWEN",
|
|
4778
4823
|
baseUrl: "https://dashscope.aliyuncs.com/compatible-mode/v1",
|
|
4824
|
+
// 2026-10-18 按百炼官方文档更新(help.aliyun.com/zh/model-studio/models、/model-pricing、/deep-thinking)。
|
|
4825
|
+
// **未经真实端点实测**(本机无 Qwen key)。三款 qwen3.x 默认开启思考、支持非流式调用、纯文本输入;
|
|
4826
|
+
// 思考与非思考输出同价。上下文按官方价格阶梯的上限 1M 记。
|
|
4779
4827
|
models: [
|
|
4780
|
-
{ id: "
|
|
4781
|
-
{ id: "
|
|
4782
|
-
{ id: "
|
|
4783
|
-
|
|
4828
|
+
{ id: "qwen3.8-max", displayName: "Qwen3.8 Max\uFF08\u65D7\u8230\uFF0C1M\uFF0C\xA512/\xA536\uFF09", contextWindow: 1e6, supportsStreaming: true },
|
|
4829
|
+
{ id: "qwen3.7-plus", displayName: "Qwen3.7 Plus\uFF081M\uFF0C\u2264256K \xA52/\xA58\uFF09", contextWindow: 1e6, supportsStreaming: true },
|
|
4830
|
+
{ id: "qwen3.8-flash", displayName: "Qwen3.8 Flash\uFF081M\uFF0C\xA50.8/\xA52.7\uFF09", contextWindow: 1e6, supportsStreaming: true },
|
|
4831
|
+
// 老模型里唯一有价格优势的:≤128K ¥0.15/¥1.5,最便宜。默认不开思考。
|
|
4832
|
+
{ id: "qwen-flash", displayName: "Qwen Flash\uFF08\u6700\u4FBF\u5B9C\uFF0C\u2264128K \xA50.15/\xA51.5\uFF09", contextWindow: 1e6, supportsStreaming: true }
|
|
4833
|
+
// 下架(端点若仍可用,`/model` 照收):qwen-max ¥2.4/¥9.6 比 qwen3.7-plus 还贵;qwen-plus 价格不如
|
|
4834
|
+
// qwen-flash、能力不如 qwen3.8-flash;qwen-turbo / qwen-coder-plus 已不在官方价格页上。
|
|
4784
4835
|
]
|
|
4785
4836
|
};
|
|
4786
4837
|
var QwenProvider = createStaticProviderClass(QWEN_CONFIG);
|
|
@@ -17834,7 +17885,7 @@ Cache: write=${cacheCreate} read=${cacheRead}` : "";
|
|
|
17834
17885
|
Cost: ${formatCost(cost)}` : "";
|
|
17835
17886
|
let memoryLine = "";
|
|
17836
17887
|
try {
|
|
17837
|
-
const { countPendingMemories: countPendingMemories2 } = await import("./persistent-memory-
|
|
17888
|
+
const { countPendingMemories: countPendingMemories2 } = await import("./persistent-memory-3XTSZ3QR.js");
|
|
17838
17889
|
const pending = countPendingMemories2(ctx.config.getConfigDir());
|
|
17839
17890
|
if (pending > 0) memoryLine = `
|
|
17840
17891
|
Memory: \u26A0 ${pending} pending approval \u2014 see the Memory panel or /memory`;
|
|
@@ -18822,7 +18873,7 @@ async function handleTest(args, ctx) {
|
|
|
18822
18873
|
const isCommand = argStr.includes(" ") || /^(mvn|gradle|npm|pytest|cargo|go)\b/.test(argStr);
|
|
18823
18874
|
testArgs = isCommand ? { command: argStr } : { filter: argStr };
|
|
18824
18875
|
}
|
|
18825
|
-
const runTests = ctx.runTests ?? (await import("./run-tests-
|
|
18876
|
+
const runTests = ctx.runTests ?? (await import("./run-tests-WQE3XTUL.js")).executeTests;
|
|
18826
18877
|
const report = await runTests(testArgs);
|
|
18827
18878
|
ctx.send({ type: "info", message: report });
|
|
18828
18879
|
} catch (err) {
|
|
@@ -19213,7 +19264,7 @@ async function handleMemory(args, ctx) {
|
|
|
19213
19264
|
}
|
|
19214
19265
|
if (intent.kind === "status") {
|
|
19215
19266
|
const { getChatIndexStatus: getChatIndexStatus2 } = await import("./chat-index-RLVLQRRC.js");
|
|
19216
|
-
const { listMemoryEntries: listMemoryEntries2, isMemoryExpired: isMemoryExpired2, formatMemoryForPrompt: formatMemoryForPrompt2 } = await import("./persistent-memory-
|
|
19267
|
+
const { listMemoryEntries: listMemoryEntries2, isMemoryExpired: isMemoryExpired2, formatMemoryForPrompt: formatMemoryForPrompt2 } = await import("./persistent-memory-3XTSZ3QR.js");
|
|
19217
19268
|
const memories = listMemoryEntries2(configDir, { includeExpired: true, includeRejected: true });
|
|
19218
19269
|
const injected = formatMemoryForPrompt2(configDir, process.cwd(), ctx.config.get("memory")?.maxChars);
|
|
19219
19270
|
const view = buildMemoryStatusView({
|
|
@@ -19236,7 +19287,7 @@ async function handleMemory(args, ctx) {
|
|
|
19236
19287
|
return;
|
|
19237
19288
|
}
|
|
19238
19289
|
if (intent.kind === "recall") {
|
|
19239
|
-
const { searchPersistentMemories: searchPersistentMemories2, touchMemoryReferences: touchMemoryReferences2 } = await import("./persistent-memory-
|
|
19290
|
+
const { searchPersistentMemories: searchPersistentMemories2, touchMemoryReferences: touchMemoryReferences2 } = await import("./persistent-memory-3XTSZ3QR.js");
|
|
19240
19291
|
const { searchChatMemory: searchChatMemory2 } = await import("./chat-index-RLVLQRRC.js");
|
|
19241
19292
|
const persistentHits = searchPersistentMemories2(configDir, intent.query, process.cwd(), 3);
|
|
19242
19293
|
if (persistentHits.length > 0) {
|
|
@@ -19357,7 +19408,7 @@ async function handleMemory(args, ctx) {
|
|
|
19357
19408
|
ctx.handleMemoryManage(intent.action, args[1], intent.action === "expire" ? args[2] : void 0);
|
|
19358
19409
|
} else if (intent.kind === "export") {
|
|
19359
19410
|
if (args[1] === "md") {
|
|
19360
|
-
const { exportMemoryEntries: exportMemoryEntries2 } = await import("./persistent-memory-
|
|
19411
|
+
const { exportMemoryEntries: exportMemoryEntries2 } = await import("./persistent-memory-3XTSZ3QR.js");
|
|
19361
19412
|
ctx.send({
|
|
19362
19413
|
type: "export_data",
|
|
19363
19414
|
format: "md",
|
|
@@ -20363,7 +20414,7 @@ No tools match "${filter}".
|
|
|
20363
20414
|
const { join: join26 } = await import("path");
|
|
20364
20415
|
const { existsSync: existsSync32 } = await import("fs");
|
|
20365
20416
|
const { getGitRoot: getGitRoot2 } = await import("./git-context-VNCA2GU7.js");
|
|
20366
|
-
const { MCP_PROJECT_CONFIG_NAME: MCP_PROJECT_CONFIG_NAME2 } = await import("./constants-
|
|
20417
|
+
const { MCP_PROJECT_CONFIG_NAME: MCP_PROJECT_CONFIG_NAME2 } = await import("./constants-J5SJ232X.js");
|
|
20367
20418
|
const { approveProject, hashMcpFile } = await import("./project-trust-6CJB5ZMX.js");
|
|
20368
20419
|
const cwd = process.cwd();
|
|
20369
20420
|
const projectRoot = getGitRoot2(cwd) ?? cwd;
|
|
@@ -21282,7 +21333,7 @@ function createReviewCommands() {
|
|
|
21282
21333
|
usage: "/test [command|filter]",
|
|
21283
21334
|
async execute(args, ctx) {
|
|
21284
21335
|
try {
|
|
21285
|
-
const { executeTests } = await import("./run-tests-
|
|
21336
|
+
const { executeTests } = await import("./run-tests-WQE3XTUL.js");
|
|
21286
21337
|
const argStr = args.join(" ").trim();
|
|
21287
21338
|
let testArgs = {};
|
|
21288
21339
|
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-CI7EDT25.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-LLXHA2LA.js";
|
|
28
28
|
import {
|
|
29
29
|
CostTracker,
|
|
30
30
|
getPricing,
|
|
31
31
|
setCostCurrency
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-2BAFLDDL.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-M5B6G6AY.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-DX2U6QK4.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-265M6ZLH.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-HMQA2R3O.js";
|
|
92
92
|
import "./chunk-RS7SKYTS.js";
|
|
93
93
|
import {
|
|
94
94
|
ProviderRegistry,
|
|
95
95
|
listBuiltInProviderMetadata
|
|
96
|
-
} from "./chunk-
|
|
96
|
+
} from "./chunk-GEC3MEVQ.js";
|
|
97
97
|
import {
|
|
98
98
|
ConfigManager
|
|
99
|
-
} from "./chunk-
|
|
99
|
+
} from "./chunk-QU74ONFF.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-GWEBO4RF.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-AJITHMRE.js";
|
|
156
156
|
import "./chunk-SXIJLSVF.js";
|
|
157
157
|
|
|
158
158
|
// src/index.ts
|
|
@@ -1079,6 +1079,7 @@ function getVisionModelHint(model, provider) {
|
|
|
1079
1079
|
if (bare.includes("vision") || bare.includes("vl") || bare.includes("5v") || // glm-5v-turbo
|
|
1080
1080
|
bare.endsWith(".6v") || // glm-4.6v
|
|
1081
1081
|
bare === "glm-5.3-flash" || // GLM-5 系列首个原生多模态(名字里没有 v,得单独认)
|
|
1082
|
+
bare === "glm-5.3-flashx" || // 同为原生多模态(2026-10-18 实测 base64 图片可识别)
|
|
1082
1083
|
// DeepSeek V4.1 Flash(2026-09)原生多模态。放在这条通用规则里而不是只写进下面的
|
|
1083
1084
|
// deepseek 分支,是为了让 OpenRouter 的 `deepseek/deepseek-flash` 也一并放行——
|
|
1084
1085
|
// 按 provider 分支写就会重演 v0.4.295「同一个坑换个前缀又漏一次」。
|
|
@@ -1091,7 +1092,7 @@ function getVisionModelHint(model, provider) {
|
|
|
1091
1092
|
return null;
|
|
1092
1093
|
}
|
|
1093
1094
|
if (provider === "zhipu") {
|
|
1094
|
-
return `model "${model}" does not support images. Use /model glm-5.3-flash (or glm-
|
|
1095
|
+
return `model "${model}" does not support images. Use /model glm-5.3-flash (or glm-5.3-flashx)`;
|
|
1095
1096
|
}
|
|
1096
1097
|
if (provider === "deepseek") {
|
|
1097
1098
|
if (bare.startsWith("deepseek-v4-flash")) return null;
|
|
@@ -4117,7 +4118,7 @@ program.command("web").description("Start Web UI server with browser-based chat
|
|
|
4117
4118
|
console.error("Error: Invalid port number. Must be between 1 and 65535.");
|
|
4118
4119
|
process.exit(1);
|
|
4119
4120
|
}
|
|
4120
|
-
const { startWebServer, WebStartupError } = await import("./server-
|
|
4121
|
+
const { startWebServer, WebStartupError } = await import("./server-5NQSYQ2T.js");
|
|
4121
4122
|
try {
|
|
4122
4123
|
await startWebServer({ port, host: options.host, externalOrigin: options.externalOrigin });
|
|
4123
4124
|
} catch (err) {
|
|
@@ -4294,11 +4295,11 @@ program.command("sessions").description("List recent conversation sessions").opt
|
|
|
4294
4295
|
console.log(footer + "\n");
|
|
4295
4296
|
});
|
|
4296
4297
|
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) => {
|
|
4297
|
-
const { runUsageCli } = await import("./usage-
|
|
4298
|
+
const { runUsageCli } = await import("./usage-AJYZ5A7P.js");
|
|
4298
4299
|
await runUsageCli(options);
|
|
4299
4300
|
});
|
|
4300
4301
|
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) => {
|
|
4301
|
-
const { runDoctorCli } = await import("./doctor-cli-
|
|
4302
|
+
const { runDoctorCli } = await import("./doctor-cli-BHS7G2XY.js");
|
|
4302
4303
|
const argv = process.argv.slice(2);
|
|
4303
4304
|
await runDoctorCli({
|
|
4304
4305
|
json: !!options.json || argv.includes("--json"),
|
|
@@ -4307,7 +4308,7 @@ program.command("doctor").description("Health check: API keys, config, MCP, rece
|
|
|
4307
4308
|
});
|
|
4308
4309
|
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) => {
|
|
4309
4310
|
try {
|
|
4310
|
-
const batch = await import("./batch-
|
|
4311
|
+
const batch = await import("./batch-GXITPLER.js");
|
|
4311
4312
|
switch (action) {
|
|
4312
4313
|
case "submit":
|
|
4313
4314
|
if (!arg) {
|
|
@@ -4350,7 +4351,7 @@ program.command("batch <action> [arg] [arg2]").description("Anthropic Message Ba
|
|
|
4350
4351
|
}
|
|
4351
4352
|
});
|
|
4352
4353
|
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) => {
|
|
4353
|
-
const { startMcpServer } = await import("./server-
|
|
4354
|
+
const { startMcpServer } = await import("./server-J2B26DZK.js");
|
|
4354
4355
|
await startMcpServer({
|
|
4355
4356
|
allowDestructive: !!options.allowDestructive,
|
|
4356
4357
|
allowOutsideCwd: !!options.allowOutsideCwd,
|
|
@@ -4363,7 +4364,7 @@ program.command("pr <action> [target]").description("PR review helpers: review |
|
|
|
4363
4364
|
console.error(`Unknown pr action: ${action}. Use review | security-review | summarize.`);
|
|
4364
4365
|
process.exit(1);
|
|
4365
4366
|
}
|
|
4366
|
-
const { runPrCli } = await import("./pr-
|
|
4367
|
+
const { runPrCli } = await import("./pr-M6ZY4CEK.js");
|
|
4367
4368
|
const result = await runPrCli({
|
|
4368
4369
|
action,
|
|
4369
4370
|
target,
|
|
@@ -4383,8 +4384,8 @@ program.command("pr <action> [target]").description("PR review helpers: review |
|
|
|
4383
4384
|
process.exit(result.exitCode);
|
|
4384
4385
|
});
|
|
4385
4386
|
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) => {
|
|
4386
|
-
const { runCi } = await import("./ci-
|
|
4387
|
-
const { formatCiResult } = await import("./ci-format-
|
|
4387
|
+
const { runCi } = await import("./ci-6K3JNHB4.js");
|
|
4388
|
+
const { formatCiResult } = await import("./ci-format-2L3RFJVH.js");
|
|
4388
4389
|
const formats = [options.json, options.markdown, options.sarif].filter(Boolean).length;
|
|
4389
4390
|
if (formats > 1) {
|
|
4390
4391
|
console.error("Choose only one output format: --json, --markdown, or --sarif.");
|
|
@@ -4543,7 +4544,7 @@ program.command("hub [topic]").description("Start multi-agent hub (discuss / bra
|
|
|
4543
4544
|
config.get("customProviders"),
|
|
4544
4545
|
config.getConfigDir()
|
|
4545
4546
|
);
|
|
4546
|
-
const { startHub } = await import("./hub-
|
|
4547
|
+
const { startHub } = await import("./hub-PPG4N6QQ.js");
|
|
4547
4548
|
await startHub(
|
|
4548
4549
|
{
|
|
4549
4550
|
topic: topic ?? "",
|
|
@@ -27,11 +27,11 @@ import {
|
|
|
27
27
|
touchMemoryReferences,
|
|
28
28
|
updateMemoryApproval,
|
|
29
29
|
updateMemoryEntry
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-2SYDIWRU.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-3YVZJHTF.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-DX2U6QK4.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-AJITHMRE.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-LUJ4JVMI.js";
|
|
6
|
+
import "./chunk-CCFCPAKN.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-GEC3MEVQ.js";
|
|
18
18
|
import {
|
|
19
19
|
ConfigManager
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-QU74ONFF.js";
|
|
21
21
|
import "./chunk-E2W2MI6H.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-AJITHMRE.js";
|
|
27
27
|
|
|
28
28
|
// src/cli/pr.ts
|
|
29
29
|
import { execFileSync } from "child_process";
|