jinzd-ai-cli 0.4.321 → 0.4.323
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 +2 -2
- package/README.zh-CN.md +2 -2
- package/dist/{batch-EW6QTSE6.js → batch-BT6YPY2X.js} +2 -2
- package/dist/{chunk-JHSULP5D.js → chunk-5SP2QSSA.js} +1 -1
- package/dist/{chunk-2GOBINY4.js → chunk-6Z2UACAG.js} +3 -3
- package/dist/{chunk-7QW3DFYV.js → chunk-AUVJV5MG.js} +1 -1
- package/dist/{chunk-VEO2MILP.js → chunk-DRU2UW5Q.js} +1 -1
- package/dist/{chunk-2R6Y5SJH.js → chunk-EQLYNT7M.js} +1 -1
- package/dist/{chunk-I3GEFCKP.js → chunk-ITAKRBOS.js} +1 -1
- package/dist/{chunk-6RCGQQFM.js → chunk-J2KYMSN2.js} +4 -4
- package/dist/{chunk-6XXHAS5B.js → chunk-JVHDCA3H.js} +1 -1
- package/dist/{chunk-VS43QMR2.js → chunk-OOOZPAVQ.js} +1 -1
- package/dist/{chunk-LEA4AMXE.js → chunk-TBROMYI2.js} +1 -1
- package/dist/{chunk-COHKPZ2E.js → chunk-TPUCSCK5.js} +1 -1
- package/dist/{chunk-4MO2I5JB.js → chunk-UFG2XKAO.js} +23 -16
- package/dist/{chunk-ZDO3XCXL.js → chunk-W4WGTPYY.js} +3 -3
- package/dist/{ci-EZZD7CMS.js → ci-REZ2XP24.js} +4 -4
- package/dist/{ci-format-ZWECV6XI.js → ci-format-JCDPXGPZ.js} +2 -2
- package/dist/{constants-HF5AYLBR.js → constants-2JKUYKMP.js} +1 -1
- package/dist/{constants-F2ULZ6W2.js → constants-XCWIYXJR.js} +1 -1
- package/dist/{doctor-cli-QAKYBWLG.js → doctor-cli-CEKD4YF3.js} +4 -4
- package/dist/electron-server.js +36 -29
- package/dist/{hub-OYH2UGER.js → hub-JMP2WALW.js} +1 -1
- package/dist/index.js +17 -17
- package/dist/{persistent-memory-WNPZSVE4.js → persistent-memory-GZBPBSNK.js} +2 -2
- package/dist/{persistent-memory-EVZX7SLR.js → persistent-memory-ULM4LJ7C.js} +2 -2
- package/dist/{pr-XPQVXG2G.js → pr-AKGST6RT.js} +4 -4
- package/dist/{run-tests-MFXQ76ZJ.js → run-tests-47RLGG7X.js} +2 -2
- package/dist/{run-tests-3SYXE2PJ.js → run-tests-KQRVS2TP.js} +2 -2
- package/dist/{server-AF5PIBUD.js → server-ACKI3FQT.js} +5 -5
- package/dist/{server-VOGBRYA5.js → server-XF3U3U7G.js} +13 -13
- package/dist/{task-orchestrator-QHJEDRDS.js → task-orchestrator-UQEU7K6W.js} +5 -5
- package/dist/{usage-EZOW27TR.js → usage-LMRSRA6A.js} +2 -2
- package/package.json +8 -5
package/README.md
CHANGED
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
- **Web UI Memory Panel** *(v0.4.90+, B4)* — new 🧠 Memory sidebar tab with semantic search across past chats; each hit has **➕ Inject** (quotes the snippet into the chat input as a markdown blockquote so you can review/edit before sending — no silent context injection) and **↗ Load** (jumps to source session). Bulk "Inject top 3" for recall bundles
|
|
45
45
|
- **Streaming Tool Use** — Real-time streaming of AI reasoning and tool calls as they happen
|
|
46
46
|
- **Sub-Agents** — Delegate complex subtasks to isolated child agents with independent tool loops
|
|
47
|
-
- **
|
|
47
|
+
- **Thinking control** — `/think on|off|low|high|max` across Claude, DeepSeek, GLM-5, Ollama thinking models (off by default where the API allows it)
|
|
48
48
|
- **Plan Mode** — Read-only planning phase (`/plan`) where AI analyzes before executing, with loop detection
|
|
49
49
|
- **Auto-Pause** — Automatically pauses every 10 rounds for user review and redirection
|
|
50
50
|
- **MCP Protocol** — Connect external MCP servers for dynamic tool discovery
|
|
@@ -206,7 +206,7 @@ AI autonomously invokes these 30 tools during conversations:
|
|
|
206
206
|
| `/provider` | Switch AI provider |
|
|
207
207
|
| `/model` | Switch model; `/model refresh [provider]` refreshes live model cache |
|
|
208
208
|
| `/plan` | Enter read-only planning mode |
|
|
209
|
-
| `/think` |
|
|
209
|
+
| `/think` | Thinking on/off and effort (`on\|off\|low\|high\|max\|status`) |
|
|
210
210
|
| `/test` | Auto-detect and run project tests |
|
|
211
211
|
| `/review` | AI code review of current git diff |
|
|
212
212
|
| `/security-review` | Security vulnerability scan on git diff |
|
package/README.zh-CN.md
CHANGED
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
- **Web UI Memory 面板**(v0.4.90+,B4)— sidebar 新增 🧠 Memory 标签页,跨 session 语义搜索;每条 hit 带 **➕ Inject**(把片段作为 markdown 引用块塞进聊天输入框,用户可在上面继续打字编辑——不是静默注入上下文)和 **↗ Load**(跳转对应 session);顶部"➕ Inject top 3"一键批量
|
|
35
35
|
- **流式工具调用** — 实时流式展示 AI 推理过程和工具调用
|
|
36
36
|
- **子代理系统** — 将复杂子任务委派给独立子代理执行
|
|
37
|
-
-
|
|
37
|
+
- **思考控制** — `/think on|off|low|high|max`,覆盖 Claude、DeepSeek、GLM-5、Ollama 思考模型(API 允许关闭的默认关闭)
|
|
38
38
|
- **规划模式** — `/plan` 进入只读规划,AI 先分析后执行,内置死循环检测
|
|
39
39
|
- **自动暂停** — 每 10 轮自动暂停,用户可审查进度或重定向 AI
|
|
40
40
|
- **MCP 协议** — 接入外部 MCP 服务器,动态发现工具
|
|
@@ -203,7 +203,7 @@ AI 在对话中可自主调用 30 个工具:
|
|
|
203
203
|
| `/provider` | 切换 AI Provider |
|
|
204
204
|
| `/model` | 切换模型 |
|
|
205
205
|
| `/plan` | 进入只读规划模式 |
|
|
206
|
-
| `/think` |
|
|
206
|
+
| `/think` | 思考开关与档位(`on\|off\|low\|high\|max\|status`) |
|
|
207
207
|
| `/test` | 自动检测并运行测试 |
|
|
208
208
|
| `/review` | AI 代码审查 git diff |
|
|
209
209
|
| `/security-review` | 安全漏洞扫描 git diff |
|
|
@@ -4,12 +4,12 @@ import {
|
|
|
4
4
|
} from "./chunk-RS7SKYTS.js";
|
|
5
5
|
import {
|
|
6
6
|
ConfigManager
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-TPUCSCK5.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-EQLYNT7M.js";
|
|
13
13
|
|
|
14
14
|
// src/cli/batch.ts
|
|
15
15
|
import Anthropic from "@anthropic-ai/sdk";
|
|
@@ -8,13 +8,13 @@ import {
|
|
|
8
8
|
listHooks,
|
|
9
9
|
listInstalledPlugins,
|
|
10
10
|
resetStats
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-OOOZPAVQ.js";
|
|
12
12
|
import {
|
|
13
13
|
ProviderRegistry
|
|
14
14
|
} from "./chunk-XVB4RARX.js";
|
|
15
15
|
import {
|
|
16
16
|
ConfigManager
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-TPUCSCK5.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-EQLYNT7M.js";
|
|
30
30
|
|
|
31
31
|
// src/diagnostics/doctor-report.ts
|
|
32
32
|
import { existsSync as existsSync3, statSync as statSync2 } from "fs";
|
|
@@ -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-DRU2UW5Q.js";
|
|
16
16
|
|
|
17
17
|
// src/memory/persistent-memory.ts
|
|
18
18
|
import { copyFileSync, existsSync, mkdirSync, readFileSync, statSync } from "fs";
|
|
@@ -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-EQLYNT7M.js";
|
|
17
17
|
|
|
18
18
|
// src/memory/persistent-memory.ts
|
|
19
19
|
import { copyFileSync, existsSync, mkdirSync, readFileSync, statSync } from "fs";
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
searchPersistentMemories,
|
|
12
12
|
touchMemoryReferences,
|
|
13
13
|
updateMemoryEntry
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-ITAKRBOS.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-OOOZPAVQ.js";
|
|
34
34
|
import {
|
|
35
35
|
buildTruncatedArgumentsError,
|
|
36
36
|
getDangerLevel,
|
|
@@ -64,7 +64,7 @@ import {
|
|
|
64
64
|
recoverGbkMojibake,
|
|
65
65
|
runTestsTool,
|
|
66
66
|
shellInvocation
|
|
67
|
-
} from "./chunk-
|
|
67
|
+
} from "./chunk-JVHDCA3H.js";
|
|
68
68
|
import {
|
|
69
69
|
CONFIG_DIR_NAME,
|
|
70
70
|
DEFAULT_MAX_TOOL_OUTPUT_CHARS_CAP,
|
|
@@ -73,7 +73,7 @@ import {
|
|
|
73
73
|
SUBAGENT_ALLOWED_TOOLS,
|
|
74
74
|
SUBAGENT_DEFAULT_MAX_ROUNDS,
|
|
75
75
|
SUBAGENT_MAX_ROUNDS_LIMIT
|
|
76
|
-
} from "./chunk-
|
|
76
|
+
} from "./chunk-EQLYNT7M.js";
|
|
77
77
|
import {
|
|
78
78
|
getCurrentSessionKey,
|
|
79
79
|
getExecutionConfigDir,
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
setPreferredAgentName,
|
|
17
17
|
truncateForPersist,
|
|
18
18
|
undoStack
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-J2KYMSN2.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-ITAKRBOS.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-6Z2UACAG.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-OOOZPAVQ.js";
|
|
84
84
|
import {
|
|
85
85
|
isCleanDocumentBody,
|
|
86
86
|
stripOuterCodeFence
|
|
@@ -109,11 +109,11 @@ import {
|
|
|
109
109
|
MCP_TOOL_PREFIX,
|
|
110
110
|
REPO_URL,
|
|
111
111
|
VERSION
|
|
112
|
-
} from "./chunk-
|
|
112
|
+
} from "./chunk-EQLYNT7M.js";
|
|
113
113
|
|
|
114
114
|
// src/skills/manager.ts
|
|
115
115
|
import { existsSync, readdirSync, mkdirSync, statSync } from "fs";
|
|
116
|
-
import { join } from "path";
|
|
116
|
+
import { basename as basename2, dirname, join } from "path";
|
|
117
117
|
|
|
118
118
|
// src/skills/types.ts
|
|
119
119
|
import { readFileSync } from "fs";
|
|
@@ -253,7 +253,14 @@ var SkillManager = class {
|
|
|
253
253
|
}
|
|
254
254
|
/** 获取激活技能的 prompt 内容(null 表示无激活技能) */
|
|
255
255
|
getActivePromptContent() {
|
|
256
|
-
|
|
256
|
+
const skill = this.activeSkill;
|
|
257
|
+
if (!skill) return null;
|
|
258
|
+
if (basename2(skill.filePath) === "SKILL.md") {
|
|
259
|
+
return `Skill directory (SKILL_DIR, \u6280\u80FD\u76EE\u5F55): ${dirname(skill.filePath)}
|
|
260
|
+
|
|
261
|
+
${skill.content}`;
|
|
262
|
+
}
|
|
263
|
+
return skill.content;
|
|
257
264
|
}
|
|
258
265
|
/** 获取激活技能的工具白名单 Set(null 表示无限制) */
|
|
259
266
|
getActiveToolFilter() {
|
|
@@ -2426,7 +2433,7 @@ No tools match "${filter}".
|
|
|
2426
2433
|
const { join: join6 } = await import("path");
|
|
2427
2434
|
const { existsSync: existsSync6 } = await import("fs");
|
|
2428
2435
|
const { getGitRoot } = await import("./git-context-EXOEHQSF.js");
|
|
2429
|
-
const { MCP_PROJECT_CONFIG_NAME } = await import("./constants-
|
|
2436
|
+
const { MCP_PROJECT_CONFIG_NAME } = await import("./constants-XCWIYXJR.js");
|
|
2430
2437
|
const { approveProject, hashMcpFile } = await import("./project-trust-KGG2BWKC.js");
|
|
2431
2438
|
const cwd = process.cwd();
|
|
2432
2439
|
const projectRoot = getGitRoot(cwd) ?? cwd;
|
|
@@ -3534,7 +3541,7 @@ function createReviewCommands() {
|
|
|
3534
3541
|
usage: "/test [command|filter]",
|
|
3535
3542
|
async execute(args, ctx) {
|
|
3536
3543
|
try {
|
|
3537
|
-
const { executeTests } = await import("./run-tests-
|
|
3544
|
+
const { executeTests } = await import("./run-tests-47RLGG7X.js");
|
|
3538
3545
|
const argStr = args.join(" ").trim();
|
|
3539
3546
|
let testArgs = {};
|
|
3540
3547
|
if (argStr) {
|
|
@@ -4391,7 +4398,7 @@ ${view.chatHeading}
|
|
|
4391
4398
|
|
|
4392
4399
|
// src/repl/commands/session-commands.ts
|
|
4393
4400
|
import { writeFileSync as writeFileSync2, mkdirSync as mkdirSync2 } from "fs";
|
|
4394
|
-
import { resolve, dirname } from "path";
|
|
4401
|
+
import { resolve, dirname as dirname2 } from "path";
|
|
4395
4402
|
import chalk2 from "chalk";
|
|
4396
4403
|
|
|
4397
4404
|
// src/core/session-cost.ts
|
|
@@ -4718,7 +4725,7 @@ function createSessionCommands() {
|
|
|
4718
4725
|
const exported = buildSessionExport(session, format, outFile);
|
|
4719
4726
|
const absPath = resolve(process.cwd(), exported.filename);
|
|
4720
4727
|
try {
|
|
4721
|
-
mkdirSync2(
|
|
4728
|
+
mkdirSync2(dirname2(absPath), { recursive: true });
|
|
4722
4729
|
writeFileSync2(absPath, exported.content, "utf-8");
|
|
4723
4730
|
ctx.renderer.printSuccess(`Exported ${exported.messageCount} messages \u2192 ${absPath}`);
|
|
4724
4731
|
} catch (err) {
|
|
@@ -4885,7 +4892,7 @@ function createSessionCommands() {
|
|
|
4885
4892
|
}
|
|
4886
4893
|
|
|
4887
4894
|
// src/repl/commands/misc-commands.ts
|
|
4888
|
-
import { basename as
|
|
4895
|
+
import { basename as basename3 } from "path";
|
|
4889
4896
|
import { platform as platform3 } from "os";
|
|
4890
4897
|
function createMiscCommands() {
|
|
4891
4898
|
return [
|
|
@@ -5142,7 +5149,7 @@ ${hint}` : "")
|
|
|
5142
5149
|
return;
|
|
5143
5150
|
}
|
|
5144
5151
|
const description = args.join(" ").trim() || "Please describe this image";
|
|
5145
|
-
ctx.renderer.printSuccess(`\u{1F4CB} Image loaded: ${
|
|
5152
|
+
ctx.renderer.printSuccess(`\u{1F4CB} Image loaded: ${basename3(imgPath)}`);
|
|
5146
5153
|
await ctx.sendAsChat(`@${imgPath} ${description}`);
|
|
5147
5154
|
}
|
|
5148
5155
|
},
|
|
@@ -5587,7 +5594,7 @@ function clearDevState() {
|
|
|
5587
5594
|
|
|
5588
5595
|
// src/tools/deferred-save.ts
|
|
5589
5596
|
import { statSync as statSync4 } from "fs";
|
|
5590
|
-
import { basename as
|
|
5597
|
+
import { basename as basename4 } from "path";
|
|
5591
5598
|
function snapshotFile(path) {
|
|
5592
5599
|
try {
|
|
5593
5600
|
const st = statSync4(path);
|
|
@@ -5608,7 +5615,7 @@ var SAVE_CLAIM_PATTERNS = [
|
|
|
5608
5615
|
/\b(?:saved|written|created|generated)\s+(?:to|at|as|into)\b/i
|
|
5609
5616
|
];
|
|
5610
5617
|
function narratesSavedTarget(content, path) {
|
|
5611
|
-
const base =
|
|
5618
|
+
const base = basename4(path);
|
|
5612
5619
|
if (!base || !content.includes(base)) return null;
|
|
5613
5620
|
for (const re of SAVE_CLAIM_PATTERNS) {
|
|
5614
5621
|
if (re.test(content)) return re.source;
|
|
@@ -5630,7 +5637,7 @@ function decideDeferredSave(params) {
|
|
|
5630
5637
|
return {
|
|
5631
5638
|
kind: "skip",
|
|
5632
5639
|
reason: "narrates-target",
|
|
5633
|
-
message: `\u21AA \u8DF3\u8FC7 deferred \u843D\u76D8\uFF1A\u6700\u7EC8\u56DE\u590D\u662F\u5173\u4E8E ${
|
|
5640
|
+
message: `\u21AA \u8DF3\u8FC7 deferred \u843D\u76D8\uFF1A\u6700\u7EC8\u56DE\u590D\u662F\u5173\u4E8E ${basename4(path)} \u7684\u6C47\u62A5\u800C\u975E\u6587\u6863\u6B63\u6587\uFF08matched: ${narrated}\uFF09\u3002`
|
|
5634
5641
|
};
|
|
5635
5642
|
}
|
|
5636
5643
|
if (!isCleanDocumentBody(body)) {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import {
|
|
3
3
|
evaluateCiGate,
|
|
4
4
|
normalizeCiThresholds
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-TBROMYI2.js";
|
|
6
6
|
import {
|
|
7
7
|
buildReviewPrompt,
|
|
8
8
|
buildSecurityReviewPrompt,
|
|
@@ -16,10 +16,10 @@ import {
|
|
|
16
16
|
} from "./chunk-XVB4RARX.js";
|
|
17
17
|
import {
|
|
18
18
|
ConfigManager
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-TPUCSCK5.js";
|
|
20
20
|
import {
|
|
21
21
|
VERSION
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-EQLYNT7M.js";
|
|
23
23
|
|
|
24
24
|
// src/cli/ci.ts
|
|
25
25
|
import { execFileSync } from "child_process";
|
|
@@ -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-W4WGTPYY.js";
|
|
7
|
+
import "./chunk-TBROMYI2.js";
|
|
8
8
|
import "./chunk-HLWUDRBO.js";
|
|
9
9
|
import "./chunk-6YZEZFX5.js";
|
|
10
10
|
import "./chunk-XVB4RARX.js";
|
|
11
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-TPUCSCK5.js";
|
|
12
12
|
import "./chunk-E2W2MI6H.js";
|
|
13
13
|
import "./chunk-TU3L3PW7.js";
|
|
14
14
|
import "./chunk-BMLQPSHP.js";
|
|
15
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-EQLYNT7M.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-6Z2UACAG.js";
|
|
6
|
+
import "./chunk-OOOZPAVQ.js";
|
|
7
7
|
import "./chunk-RS7SKYTS.js";
|
|
8
8
|
import "./chunk-XVB4RARX.js";
|
|
9
|
-
import "./chunk-
|
|
9
|
+
import "./chunk-TPUCSCK5.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-EQLYNT7M.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-AUVJV5MG.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-5SP2QSSA.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-DRU2UW5Q.js";
|
|
127
127
|
|
|
128
128
|
// src/web/access.ts
|
|
129
129
|
import { randomBytes, timingSafeEqual } from "crypto";
|
|
@@ -205,7 +205,7 @@ function imageValidationError(images) {
|
|
|
205
205
|
}
|
|
206
206
|
|
|
207
207
|
// src/web/server.ts
|
|
208
|
-
import { join as join25, dirname as
|
|
208
|
+
import { join as join25, dirname as dirname12, resolve as resolve12, relative as relative6, sep as sep5, extname as extname3, resolve as resolvePath } from "path";
|
|
209
209
|
import { existsSync as existsSync31, readFileSync as readFileSync22, readdirSync as readdirSync15, statSync as statSync16, realpathSync as realpathSync3, createReadStream } from "fs";
|
|
210
210
|
import { networkInterfaces as networkInterfaces2 } from "os";
|
|
211
211
|
|
|
@@ -2714,12 +2714,12 @@ function findPhantomClaims(content, extraMessages) {
|
|
|
2714
2714
|
const claimed = extractClaimedFilePaths(content);
|
|
2715
2715
|
if (claimed.length === 0) return [];
|
|
2716
2716
|
const normalize = (p) => p.replace(/\\/g, "/").toLowerCase().replace(/^\.\//, "");
|
|
2717
|
-
const
|
|
2717
|
+
const basename11 = (p) => {
|
|
2718
2718
|
const parts = normalize(p).split("/");
|
|
2719
2719
|
return parts[parts.length - 1] ?? "";
|
|
2720
2720
|
};
|
|
2721
2721
|
const written = extractWrittenFilePaths(extraMessages).map(normalize);
|
|
2722
|
-
const writtenBases = new Set(written.map(
|
|
2722
|
+
const writtenBases = new Set(written.map(basename11));
|
|
2723
2723
|
const writtenFull = new Set(written);
|
|
2724
2724
|
const bashText = extractBashCommands(extraMessages).map((c) => c.replace(/\\/g, "/").toLowerCase()).join("\n");
|
|
2725
2725
|
return claimed.filter((raw) => {
|
|
@@ -2728,8 +2728,8 @@ function findPhantomClaims(content, extraMessages) {
|
|
|
2728
2728
|
for (const w of writtenFull) {
|
|
2729
2729
|
if (w.endsWith("/" + norm2) || norm2.endsWith("/" + w)) return false;
|
|
2730
2730
|
}
|
|
2731
|
-
if (writtenBases.has(
|
|
2732
|
-
const base =
|
|
2731
|
+
if (writtenBases.has(basename11(norm2))) return false;
|
|
2732
|
+
const base = basename11(norm2);
|
|
2733
2733
|
if (base && bashText.includes(base)) return false;
|
|
2734
2734
|
return true;
|
|
2735
2735
|
});
|
|
@@ -14353,7 +14353,7 @@ var McpManager = class {
|
|
|
14353
14353
|
|
|
14354
14354
|
// src/skills/manager.ts
|
|
14355
14355
|
import { existsSync as existsSync20, readdirSync as readdirSync10, mkdirSync as mkdirSync10, statSync as statSync9 } from "fs";
|
|
14356
|
-
import { join as join14 } from "path";
|
|
14356
|
+
import { basename as basename8, dirname as dirname8, join as join14 } from "path";
|
|
14357
14357
|
|
|
14358
14358
|
// src/skills/types.ts
|
|
14359
14359
|
import { readFileSync as readFileSync13 } from "fs";
|
|
@@ -14493,7 +14493,14 @@ var SkillManager = class {
|
|
|
14493
14493
|
}
|
|
14494
14494
|
/** 获取激活技能的 prompt 内容(null 表示无激活技能) */
|
|
14495
14495
|
getActivePromptContent() {
|
|
14496
|
-
|
|
14496
|
+
const skill = this.activeSkill;
|
|
14497
|
+
if (!skill) return null;
|
|
14498
|
+
if (basename8(skill.filePath) === "SKILL.md") {
|
|
14499
|
+
return `Skill directory (SKILL_DIR, \u6280\u80FD\u76EE\u5F55): ${dirname8(skill.filePath)}
|
|
14500
|
+
|
|
14501
|
+
${skill.content}`;
|
|
14502
|
+
}
|
|
14503
|
+
return skill.content;
|
|
14497
14504
|
}
|
|
14498
14505
|
/** 获取激活技能的工具白名单 Set(null 表示无限制) */
|
|
14499
14506
|
getActiveToolFilter() {
|
|
@@ -15485,7 +15492,7 @@ function loadContextFiles(options) {
|
|
|
15485
15492
|
|
|
15486
15493
|
// src/tools/deferred-save.ts
|
|
15487
15494
|
import { statSync as statSync10 } from "fs";
|
|
15488
|
-
import { basename as
|
|
15495
|
+
import { basename as basename9 } from "path";
|
|
15489
15496
|
function snapshotFile(path3) {
|
|
15490
15497
|
try {
|
|
15491
15498
|
const st = statSync10(path3);
|
|
@@ -15506,7 +15513,7 @@ var SAVE_CLAIM_PATTERNS = [
|
|
|
15506
15513
|
/\b(?:saved|written|created|generated)\s+(?:to|at|as|into)\b/i
|
|
15507
15514
|
];
|
|
15508
15515
|
function narratesSavedTarget(content, path3) {
|
|
15509
|
-
const base =
|
|
15516
|
+
const base = basename9(path3);
|
|
15510
15517
|
if (!base || !content.includes(base)) return null;
|
|
15511
15518
|
for (const re of SAVE_CLAIM_PATTERNS) {
|
|
15512
15519
|
if (re.test(content)) return re.source;
|
|
@@ -15528,7 +15535,7 @@ function decideDeferredSave(params) {
|
|
|
15528
15535
|
return {
|
|
15529
15536
|
kind: "skip",
|
|
15530
15537
|
reason: "narrates-target",
|
|
15531
|
-
message: `\u21AA \u8DF3\u8FC7 deferred \u843D\u76D8\uFF1A\u6700\u7EC8\u56DE\u590D\u662F\u5173\u4E8E ${
|
|
15538
|
+
message: `\u21AA \u8DF3\u8FC7 deferred \u843D\u76D8\uFF1A\u6700\u7EC8\u56DE\u590D\u662F\u5173\u4E8E ${basename9(path3)} \u7684\u6C47\u62A5\u800C\u975E\u6587\u6863\u6B63\u6587\uFF08matched: ${narrated}\uFF09\u3002`
|
|
15532
15539
|
};
|
|
15533
15540
|
}
|
|
15534
15541
|
if (!isCleanDocumentBody(body)) {
|
|
@@ -15543,7 +15550,7 @@ function decideDeferredSave(params) {
|
|
|
15543
15550
|
|
|
15544
15551
|
// src/web/session-handler.ts
|
|
15545
15552
|
import { mkdirSync as mkdirSync15, createWriteStream as createWriteStream2 } from "fs";
|
|
15546
|
-
import { dirname as
|
|
15553
|
+
import { dirname as dirname11 } from "path";
|
|
15547
15554
|
|
|
15548
15555
|
// src/repl/commands/project-init.ts
|
|
15549
15556
|
import { existsSync as existsSync24, readFileSync as readFileSync17, readdirSync as readdirSync11, statSync as statSync11 } from "fs";
|
|
@@ -16922,7 +16929,7 @@ function costSourceNote(source2) {
|
|
|
16922
16929
|
|
|
16923
16930
|
// src/web/commands/_shared.ts
|
|
16924
16931
|
import { existsSync as existsSync27, readFileSync as readFileSync19, writeFileSync as writeFileSync3, mkdirSync as mkdirSync13, readdirSync as readdirSync13, statSync as statSync14, createWriteStream } from "fs";
|
|
16925
|
-
import { join as join21, resolve as resolve9, dirname as
|
|
16932
|
+
import { join as join21, resolve as resolve9, dirname as dirname9 } from "path";
|
|
16926
16933
|
|
|
16927
16934
|
// src/cli/review-prompts.ts
|
|
16928
16935
|
function buildReviewPrompt(diff, gitContextStr, detailed) {
|
|
@@ -17709,7 +17716,7 @@ Cache: write=${cacheCreate} read=${cacheRead}` : "";
|
|
|
17709
17716
|
Cost: ${formatCost(cost)}` : "";
|
|
17710
17717
|
let memoryLine = "";
|
|
17711
17718
|
try {
|
|
17712
|
-
const { countPendingMemories: countPendingMemories2 } = await import("./persistent-memory-
|
|
17719
|
+
const { countPendingMemories: countPendingMemories2 } = await import("./persistent-memory-ULM4LJ7C.js");
|
|
17713
17720
|
const pending = countPendingMemories2(ctx.config.getConfigDir());
|
|
17714
17721
|
if (pending > 0) memoryLine = `
|
|
17715
17722
|
Memory: \u26A0 ${pending} pending approval \u2014 see the Memory panel or /memory`;
|
|
@@ -18697,7 +18704,7 @@ async function handleTest(args, ctx) {
|
|
|
18697
18704
|
const isCommand = argStr.includes(" ") || /^(mvn|gradle|npm|pytest|cargo|go)\b/.test(argStr);
|
|
18698
18705
|
testArgs = isCommand ? { command: argStr } : { filter: argStr };
|
|
18699
18706
|
}
|
|
18700
|
-
const runTests = ctx.runTests ?? (await import("./run-tests-
|
|
18707
|
+
const runTests = ctx.runTests ?? (await import("./run-tests-KQRVS2TP.js")).executeTests;
|
|
18701
18708
|
const report = await runTests(testArgs);
|
|
18702
18709
|
ctx.send({ type: "info", message: report });
|
|
18703
18710
|
} catch (err) {
|
|
@@ -19088,7 +19095,7 @@ async function handleMemory(args, ctx) {
|
|
|
19088
19095
|
}
|
|
19089
19096
|
if (intent.kind === "status") {
|
|
19090
19097
|
const { getChatIndexStatus: getChatIndexStatus2 } = await import("./chat-index-RLVLQRRC.js");
|
|
19091
|
-
const { listMemoryEntries: listMemoryEntries2, isMemoryExpired: isMemoryExpired2, formatMemoryForPrompt: formatMemoryForPrompt2 } = await import("./persistent-memory-
|
|
19098
|
+
const { listMemoryEntries: listMemoryEntries2, isMemoryExpired: isMemoryExpired2, formatMemoryForPrompt: formatMemoryForPrompt2 } = await import("./persistent-memory-ULM4LJ7C.js");
|
|
19092
19099
|
const memories = listMemoryEntries2(configDir, { includeExpired: true, includeRejected: true });
|
|
19093
19100
|
const injected = formatMemoryForPrompt2(configDir, process.cwd(), ctx.config.get("memory")?.maxChars);
|
|
19094
19101
|
const view = buildMemoryStatusView({
|
|
@@ -19111,7 +19118,7 @@ async function handleMemory(args, ctx) {
|
|
|
19111
19118
|
return;
|
|
19112
19119
|
}
|
|
19113
19120
|
if (intent.kind === "recall") {
|
|
19114
|
-
const { searchPersistentMemories: searchPersistentMemories2, touchMemoryReferences: touchMemoryReferences2 } = await import("./persistent-memory-
|
|
19121
|
+
const { searchPersistentMemories: searchPersistentMemories2, touchMemoryReferences: touchMemoryReferences2 } = await import("./persistent-memory-ULM4LJ7C.js");
|
|
19115
19122
|
const { searchChatMemory: searchChatMemory2 } = await import("./chat-index-RLVLQRRC.js");
|
|
19116
19123
|
const persistentHits = searchPersistentMemories2(configDir, intent.query, process.cwd(), 3);
|
|
19117
19124
|
if (persistentHits.length > 0) {
|
|
@@ -19232,7 +19239,7 @@ async function handleMemory(args, ctx) {
|
|
|
19232
19239
|
ctx.handleMemoryManage(intent.action, args[1], intent.action === "expire" ? args[2] : void 0);
|
|
19233
19240
|
} else if (intent.kind === "export") {
|
|
19234
19241
|
if (args[1] === "md") {
|
|
19235
|
-
const { exportMemoryEntries: exportMemoryEntries2 } = await import("./persistent-memory-
|
|
19242
|
+
const { exportMemoryEntries: exportMemoryEntries2 } = await import("./persistent-memory-ULM4LJ7C.js");
|
|
19236
19243
|
ctx.send({
|
|
19237
19244
|
type: "export_data",
|
|
19238
19245
|
format: "md",
|
|
@@ -20237,7 +20244,7 @@ No tools match "${filter}".
|
|
|
20237
20244
|
const { join: join26 } = await import("path");
|
|
20238
20245
|
const { existsSync: existsSync32 } = await import("fs");
|
|
20239
20246
|
const { getGitRoot: getGitRoot2 } = await import("./git-context-VNCA2GU7.js");
|
|
20240
|
-
const { MCP_PROJECT_CONFIG_NAME: MCP_PROJECT_CONFIG_NAME2 } = await import("./constants-
|
|
20247
|
+
const { MCP_PROJECT_CONFIG_NAME: MCP_PROJECT_CONFIG_NAME2 } = await import("./constants-2JKUYKMP.js");
|
|
20241
20248
|
const { approveProject, hashMcpFile } = await import("./project-trust-6CJB5ZMX.js");
|
|
20242
20249
|
const cwd = process.cwd();
|
|
20243
20250
|
const projectRoot = getGitRoot2(cwd) ?? cwd;
|
|
@@ -21156,7 +21163,7 @@ function createReviewCommands() {
|
|
|
21156
21163
|
usage: "/test [command|filter]",
|
|
21157
21164
|
async execute(args, ctx) {
|
|
21158
21165
|
try {
|
|
21159
|
-
const { executeTests } = await import("./run-tests-
|
|
21166
|
+
const { executeTests } = await import("./run-tests-KQRVS2TP.js");
|
|
21160
21167
|
const argStr = args.join(" ").trim();
|
|
21161
21168
|
let testArgs = {};
|
|
21162
21169
|
if (argStr) {
|
|
@@ -21898,7 +21905,7 @@ ${view.chatHeading}
|
|
|
21898
21905
|
|
|
21899
21906
|
// src/repl/commands/session-commands.ts
|
|
21900
21907
|
import { writeFileSync as writeFileSync5, mkdirSync as mkdirSync14 } from "fs";
|
|
21901
|
-
import { resolve as resolve11, dirname as
|
|
21908
|
+
import { resolve as resolve11, dirname as dirname10 } from "path";
|
|
21902
21909
|
import chalk7 from "chalk";
|
|
21903
21910
|
function createSessionCommands() {
|
|
21904
21911
|
return [
|
|
@@ -22188,7 +22195,7 @@ function createSessionCommands() {
|
|
|
22188
22195
|
const exported = buildSessionExport(session, format, outFile);
|
|
22189
22196
|
const absPath = resolve11(process.cwd(), exported.filename);
|
|
22190
22197
|
try {
|
|
22191
|
-
mkdirSync14(
|
|
22198
|
+
mkdirSync14(dirname10(absPath), { recursive: true });
|
|
22192
22199
|
writeFileSync5(absPath, exported.content, "utf-8");
|
|
22193
22200
|
ctx.renderer.printSuccess(`Exported ${exported.messageCount} messages \u2192 ${absPath}`);
|
|
22194
22201
|
} catch (err) {
|
|
@@ -22355,7 +22362,7 @@ function createSessionCommands() {
|
|
|
22355
22362
|
}
|
|
22356
22363
|
|
|
22357
22364
|
// src/repl/commands/misc-commands.ts
|
|
22358
|
-
import { basename as
|
|
22365
|
+
import { basename as basename10 } from "path";
|
|
22359
22366
|
import { platform as platform8 } from "os";
|
|
22360
22367
|
|
|
22361
22368
|
// src/repl/clipboard.ts
|
|
@@ -22701,7 +22708,7 @@ ${hint}` : "")
|
|
|
22701
22708
|
return;
|
|
22702
22709
|
}
|
|
22703
22710
|
const description = args.join(" ").trim() || "Please describe this image";
|
|
22704
|
-
ctx.renderer.printSuccess(`\u{1F4CB} Image loaded: ${
|
|
22711
|
+
ctx.renderer.printSuccess(`\u{1F4CB} Image loaded: ${basename10(imgPath)}`);
|
|
22705
22712
|
await ctx.sendAsChat(`@${imgPath} ${description}`);
|
|
22706
22713
|
}
|
|
22707
22714
|
},
|
|
@@ -23908,7 +23915,7 @@ Try: /compact to reduce context, /clear to reset, or switch to a larger-context
|
|
|
23908
23915
|
});
|
|
23909
23916
|
if (decision.kind === "save") {
|
|
23910
23917
|
try {
|
|
23911
|
-
mkdirSync15(
|
|
23918
|
+
mkdirSync15(dirname11(target), { recursive: true });
|
|
23912
23919
|
atomicWriteFileSync(target, decision.body);
|
|
23913
23920
|
undoStack.push(target, `save_last_response (deferred): ${target}`);
|
|
23914
23921
|
const lines = decision.body.split("\n").length;
|
|
@@ -24086,7 +24093,7 @@ ${summaryContent}`,
|
|
|
24086
24093
|
let isError = false;
|
|
24087
24094
|
let summary;
|
|
24088
24095
|
try {
|
|
24089
|
-
mkdirSync15(
|
|
24096
|
+
mkdirSync15(dirname11(saveToFile), { recursive: true });
|
|
24090
24097
|
fileStream = createWriteStream2(saveToFile);
|
|
24091
24098
|
const teeSystemPrompt = stripToolCallReminder(systemPrompt ?? "") + CONTENT_ONLY_STREAM_REMINDER;
|
|
24092
24099
|
const teeExtraMessages = extraMessages.length > 0 ? [...extraMessages, { role: "user", content: TEE_FINAL_USER_NUDGE }] : [{ role: "user", content: TEE_FINAL_USER_NUDGE }];
|
|
@@ -25121,7 +25128,7 @@ function getModuleDir() {
|
|
|
25121
25128
|
if (typeof import.meta?.url === "string") {
|
|
25122
25129
|
const url = new URL(import.meta.url);
|
|
25123
25130
|
const filePath = url.pathname.replace(/^\/([A-Z]:)/i, "$1");
|
|
25124
|
-
return
|
|
25131
|
+
return dirname12(filePath);
|
|
25125
25132
|
}
|
|
25126
25133
|
} catch {
|
|
25127
25134
|
}
|
|
@@ -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-UQEU7K6W.js");
|
|
162
162
|
const orchestrator = new TaskOrchestrator(config, providers, configManager);
|
|
163
163
|
let interrupted = false;
|
|
164
164
|
const onSigint = () => {
|
package/dist/index.js
CHANGED
|
@@ -24,7 +24,7 @@ import {
|
|
|
24
24
|
setupProxy,
|
|
25
25
|
snapshotFile,
|
|
26
26
|
stripRoutingTags
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-UFG2XKAO.js";
|
|
28
28
|
import {
|
|
29
29
|
CostTracker,
|
|
30
30
|
getPricing,
|
|
@@ -47,7 +47,7 @@ import {
|
|
|
47
47
|
setMaxOutputCap,
|
|
48
48
|
spawnAgentContext,
|
|
49
49
|
undoStack
|
|
50
|
-
} from "./chunk-
|
|
50
|
+
} from "./chunk-J2KYMSN2.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-ITAKRBOS.js";
|
|
64
64
|
import "./chunk-RWRZVQCB.js";
|
|
65
65
|
import "./chunk-B3MPYI4E.js";
|
|
66
66
|
import "./chunk-M6HLYG33.js";
|
|
@@ -81,14 +81,14 @@ import {
|
|
|
81
81
|
import {
|
|
82
82
|
loadContextFiles,
|
|
83
83
|
writeCrashLog
|
|
84
|
-
} from "./chunk-
|
|
84
|
+
} from "./chunk-6Z2UACAG.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-OOOZPAVQ.js";
|
|
92
92
|
import "./chunk-RS7SKYTS.js";
|
|
93
93
|
import {
|
|
94
94
|
ProviderRegistry,
|
|
@@ -96,7 +96,7 @@ import {
|
|
|
96
96
|
} from "./chunk-XVB4RARX.js";
|
|
97
97
|
import {
|
|
98
98
|
ConfigManager
|
|
99
|
-
} from "./chunk-
|
|
99
|
+
} from "./chunk-TPUCSCK5.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-JVHDCA3H.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-EQLYNT7M.js";
|
|
156
156
|
import "./chunk-SXIJLSVF.js";
|
|
157
157
|
|
|
158
158
|
// src/index.ts
|
|
@@ -4116,7 +4116,7 @@ program.command("web").description("Start Web UI server with browser-based chat
|
|
|
4116
4116
|
console.error("Error: Invalid port number. Must be between 1 and 65535.");
|
|
4117
4117
|
process.exit(1);
|
|
4118
4118
|
}
|
|
4119
|
-
const { startWebServer } = await import("./server-
|
|
4119
|
+
const { startWebServer } = await import("./server-XF3U3U7G.js");
|
|
4120
4120
|
await startWebServer({ port, host: options.host, externalOrigin: options.externalOrigin });
|
|
4121
4121
|
});
|
|
4122
4122
|
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) => {
|
|
@@ -4283,11 +4283,11 @@ program.command("sessions").description("List recent conversation sessions").opt
|
|
|
4283
4283
|
console.log(footer + "\n");
|
|
4284
4284
|
});
|
|
4285
4285
|
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) => {
|
|
4286
|
-
const { runUsageCli } = await import("./usage-
|
|
4286
|
+
const { runUsageCli } = await import("./usage-LMRSRA6A.js");
|
|
4287
4287
|
await runUsageCli(options);
|
|
4288
4288
|
});
|
|
4289
4289
|
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) => {
|
|
4290
|
-
const { runDoctorCli } = await import("./doctor-cli-
|
|
4290
|
+
const { runDoctorCli } = await import("./doctor-cli-CEKD4YF3.js");
|
|
4291
4291
|
const argv = process.argv.slice(2);
|
|
4292
4292
|
await runDoctorCli({
|
|
4293
4293
|
json: !!options.json || argv.includes("--json"),
|
|
@@ -4296,7 +4296,7 @@ program.command("doctor").description("Health check: API keys, config, MCP, rece
|
|
|
4296
4296
|
});
|
|
4297
4297
|
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) => {
|
|
4298
4298
|
try {
|
|
4299
|
-
const batch = await import("./batch-
|
|
4299
|
+
const batch = await import("./batch-BT6YPY2X.js");
|
|
4300
4300
|
switch (action) {
|
|
4301
4301
|
case "submit":
|
|
4302
4302
|
if (!arg) {
|
|
@@ -4339,7 +4339,7 @@ program.command("batch <action> [arg] [arg2]").description("Anthropic Message Ba
|
|
|
4339
4339
|
}
|
|
4340
4340
|
});
|
|
4341
4341
|
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) => {
|
|
4342
|
-
const { startMcpServer } = await import("./server-
|
|
4342
|
+
const { startMcpServer } = await import("./server-ACKI3FQT.js");
|
|
4343
4343
|
await startMcpServer({
|
|
4344
4344
|
allowDestructive: !!options.allowDestructive,
|
|
4345
4345
|
allowOutsideCwd: !!options.allowOutsideCwd,
|
|
@@ -4352,7 +4352,7 @@ program.command("pr <action> [target]").description("PR review helpers: review |
|
|
|
4352
4352
|
console.error(`Unknown pr action: ${action}. Use review | security-review | summarize.`);
|
|
4353
4353
|
process.exit(1);
|
|
4354
4354
|
}
|
|
4355
|
-
const { runPrCli } = await import("./pr-
|
|
4355
|
+
const { runPrCli } = await import("./pr-AKGST6RT.js");
|
|
4356
4356
|
const result = await runPrCli({
|
|
4357
4357
|
action,
|
|
4358
4358
|
target,
|
|
@@ -4372,8 +4372,8 @@ program.command("pr <action> [target]").description("PR review helpers: review |
|
|
|
4372
4372
|
process.exit(result.exitCode);
|
|
4373
4373
|
});
|
|
4374
4374
|
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) => {
|
|
4375
|
-
const { runCi } = await import("./ci-
|
|
4376
|
-
const { formatCiResult } = await import("./ci-format-
|
|
4375
|
+
const { runCi } = await import("./ci-REZ2XP24.js");
|
|
4376
|
+
const { formatCiResult } = await import("./ci-format-JCDPXGPZ.js");
|
|
4377
4377
|
const formats = [options.json, options.markdown, options.sarif].filter(Boolean).length;
|
|
4378
4378
|
if (formats > 1) {
|
|
4379
4379
|
console.error("Choose only one output format: --json, --markdown, or --sarif.");
|
|
@@ -4532,7 +4532,7 @@ program.command("hub [topic]").description("Start multi-agent hub (discuss / bra
|
|
|
4532
4532
|
config.get("customProviders"),
|
|
4533
4533
|
config.getConfigDir()
|
|
4534
4534
|
);
|
|
4535
|
-
const { startHub } = await import("./hub-
|
|
4535
|
+
const { startHub } = await import("./hub-JMP2WALW.js");
|
|
4536
4536
|
await startHub(
|
|
4537
4537
|
{
|
|
4538
4538
|
topic: topic ?? "",
|
|
@@ -28,11 +28,11 @@ import {
|
|
|
28
28
|
touchMemoryReferences,
|
|
29
29
|
updateMemoryApproval,
|
|
30
30
|
updateMemoryEntry
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-ITAKRBOS.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-EQLYNT7M.js";
|
|
36
36
|
export {
|
|
37
37
|
addMemoryEntry,
|
|
38
38
|
backupMemoryStore,
|
|
@@ -27,11 +27,11 @@ import {
|
|
|
27
27
|
touchMemoryReferences,
|
|
28
28
|
updateMemoryApproval,
|
|
29
29
|
updateMemoryEntry
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-AUVJV5MG.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-DRU2UW5Q.js";
|
|
35
35
|
export {
|
|
36
36
|
addMemoryEntry,
|
|
37
37
|
backupMemoryStore,
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import {
|
|
3
3
|
countSeverity,
|
|
4
4
|
runCi
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-W4WGTPYY.js";
|
|
6
|
+
import "./chunk-TBROMYI2.js";
|
|
7
7
|
import {
|
|
8
8
|
buildReviewPrompt,
|
|
9
9
|
buildSecurityReviewPrompt,
|
|
@@ -17,13 +17,13 @@ import {
|
|
|
17
17
|
} from "./chunk-XVB4RARX.js";
|
|
18
18
|
import {
|
|
19
19
|
ConfigManager
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-TPUCSCK5.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-EQLYNT7M.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-5SP2QSSA.js";
|
|
6
6
|
import "./chunk-QMFMST2T.js";
|
|
7
|
-
import "./chunk-
|
|
7
|
+
import "./chunk-DRU2UW5Q.js";
|
|
8
8
|
export {
|
|
9
9
|
executeTests,
|
|
10
10
|
runTestProcess,
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
ToolRegistry
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-J2KYMSN2.js";
|
|
5
5
|
import "./chunk-6JHACXB3.js";
|
|
6
|
-
import "./chunk-
|
|
6
|
+
import "./chunk-ITAKRBOS.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-OOOZPAVQ.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-JVHDCA3H.js";
|
|
28
28
|
import {
|
|
29
29
|
VERSION
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-EQLYNT7M.js";
|
|
31
31
|
import "./chunk-SXIJLSVF.js";
|
|
32
32
|
|
|
33
33
|
// src/mcp/server.ts
|
|
@@ -86,7 +86,7 @@ import {
|
|
|
86
86
|
skillHistoryNote,
|
|
87
87
|
snapshotFile,
|
|
88
88
|
stripRoutingTags
|
|
89
|
-
} from "./chunk-
|
|
89
|
+
} from "./chunk-UFG2XKAO.js";
|
|
90
90
|
import {
|
|
91
91
|
CNY_PER_USD,
|
|
92
92
|
CostTracker,
|
|
@@ -130,7 +130,7 @@ import {
|
|
|
130
130
|
spawnAgentContext,
|
|
131
131
|
truncateOutput,
|
|
132
132
|
undoStack
|
|
133
|
-
} from "./chunk-
|
|
133
|
+
} from "./chunk-J2KYMSN2.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-ITAKRBOS.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-6Z2UACAG.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-OOOZPAVQ.js";
|
|
195
195
|
import "./chunk-RS7SKYTS.js";
|
|
196
196
|
import {
|
|
197
197
|
ProviderRegistry
|
|
198
198
|
} from "./chunk-XVB4RARX.js";
|
|
199
199
|
import {
|
|
200
200
|
ConfigManager
|
|
201
|
-
} from "./chunk-
|
|
201
|
+
} from "./chunk-TPUCSCK5.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-JVHDCA3H.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-EQLYNT7M.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-GZBPBSNK.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-47RLGG7X.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-GZBPBSNK.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-GZBPBSNK.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-GZBPBSNK.js");
|
|
2331
2331
|
ctx.send({
|
|
2332
2332
|
type: "export_data",
|
|
2333
2333
|
format: "md",
|
|
@@ -4,9 +4,9 @@ import {
|
|
|
4
4
|
googleSearchContext,
|
|
5
5
|
isToolCapableProvider,
|
|
6
6
|
truncateOutput
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-J2KYMSN2.js";
|
|
8
8
|
import "./chunk-6JHACXB3.js";
|
|
9
|
-
import "./chunk-
|
|
9
|
+
import "./chunk-ITAKRBOS.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-OOOZPAVQ.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-JVHDCA3H.js";
|
|
33
33
|
import {
|
|
34
34
|
SUBAGENT_ALLOWED_TOOLS
|
|
35
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-EQLYNT7M.js";
|
|
36
36
|
import "./chunk-SXIJLSVF.js";
|
|
37
37
|
|
|
38
38
|
// src/hub/task-orchestrator.ts
|
|
@@ -9,10 +9,10 @@ import {
|
|
|
9
9
|
import "./chunk-RS7SKYTS.js";
|
|
10
10
|
import {
|
|
11
11
|
ConfigManager
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-TPUCSCK5.js";
|
|
13
13
|
import "./chunk-TU3L3PW7.js";
|
|
14
14
|
import "./chunk-BMLQPSHP.js";
|
|
15
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-EQLYNT7M.js";
|
|
16
16
|
|
|
17
17
|
// src/cli/usage.ts
|
|
18
18
|
function classifyRowCost(row) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jinzd-ai-cli",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.323",
|
|
4
4
|
"description": "Cross-platform REPL-style AI CLI with multi-provider support",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
"test:providers": "vitest run --config vitest.providers.config.ts tests/integration/provider-smoke.test.ts",
|
|
22
22
|
"test:watch": "vitest",
|
|
23
23
|
"test:coverage": "vitest run --coverage",
|
|
24
|
+
"test:load-bearing": "node scripts/load-bearing.mjs",
|
|
24
25
|
"test:dist": "npm run build && vitest run tests/unit/cli/version-drift.test.ts",
|
|
25
26
|
"typecheck": "tsc --noEmit",
|
|
26
27
|
"lint": "eslint src --max-warnings=0",
|
|
@@ -125,18 +126,20 @@
|
|
|
125
126
|
"electron-builder": "^26.15.3",
|
|
126
127
|
"eslint": "^9.13.0",
|
|
127
128
|
"tsup": "^8.3.5",
|
|
128
|
-
"tsx": "^4.
|
|
129
|
+
"tsx": "^4.23.15",
|
|
129
130
|
"typescript": "^5.7.3",
|
|
130
131
|
"vitest": "^4.1.11"
|
|
131
132
|
},
|
|
132
133
|
"overrides": {
|
|
133
134
|
"adm-zip": "0.6.1",
|
|
134
|
-
"
|
|
135
|
-
"fast-uri": "3.1.7",
|
|
135
|
+
"fast-uri": "3.1.8",
|
|
136
136
|
"js-yaml": "4.3.2",
|
|
137
137
|
"nanoid": "3.3.18",
|
|
138
138
|
"qs": "6.16.0",
|
|
139
|
-
"sharp": "0.35.5"
|
|
139
|
+
"sharp": "0.35.5",
|
|
140
|
+
"tsup": {
|
|
141
|
+
"esbuild": "0.28.1"
|
|
142
|
+
}
|
|
140
143
|
},
|
|
141
144
|
"author": "jinzd",
|
|
142
145
|
"build": {
|