jinzd-ai-cli 0.4.201 → 0.4.202
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/LICENSE +21 -21
- package/README.md +435 -435
- package/README.zh-CN.md +450 -450
- package/dist/agent-client-6GX6QQDU.js +0 -0
- package/dist/auth-FSTAKSYF.js +0 -0
- package/dist/{batch-SWBDLVZO.js → batch-UF4EWYFD.js} +2 -2
- package/dist/chat-index-FDSGKWQV.js +0 -0
- package/dist/{chunk-JP6ESDV7.js → chunk-2NINHXEZ.js} +13 -1
- package/dist/{chunk-HLOHSMTT.js → chunk-2YLYDFEX.js} +3 -3
- package/dist/chunk-4BKXL7SM.js +0 -0
- package/dist/chunk-5UR6ZOF4.js +0 -0
- package/dist/{chunk-C46JMUDC.js → chunk-75SUTNYY.js} +1 -1
- package/dist/chunk-A4GUGWEY.js +0 -0
- package/dist/chunk-BXP6YZ2P.js +0 -0
- package/dist/chunk-CITDVXXM.js +0 -0
- package/dist/chunk-CKH4KQ4E.js +0 -0
- package/dist/chunk-E44DTERW.js +0 -0
- package/dist/{chunk-YUA2KL7W.js → chunk-GOKVKOG3.js} +1 -1
- package/dist/chunk-HLWUDRBO.js +0 -0
- package/dist/chunk-HOSJZMQS.js +0 -0
- package/dist/{chunk-SDT4DCNX.js → chunk-HZKC424D.js} +1 -1
- package/dist/chunk-IW3Q7AE5.js +0 -0
- package/dist/{chunk-QT5SGLTM.js → chunk-JCY7RQIA.js} +1 -1
- package/dist/chunk-JVKAL5Q3.js +0 -0
- package/dist/chunk-KHYD3WXE.js +0 -0
- package/dist/chunk-MC34ISJU.js +0 -0
- package/dist/chunk-NZ4X6GUC.js +0 -0
- package/dist/chunk-O6UFCEUZ.js +0 -0
- package/dist/chunk-OJL3PY36.js +0 -0
- package/dist/{chunk-3UWMMYCQ.js → chunk-Q2MBPMTW.js} +2 -2
- package/dist/chunk-Q3ZUDA6S.js +0 -0
- package/dist/{chunk-IAWXC2SO.js → chunk-SB77W6XS.js} +1 -1
- package/dist/chunk-SLSWPBK3.js +0 -0
- package/dist/chunk-T2NL5ZIA.js +0 -0
- package/dist/chunk-TB4W4Y4T.js +0 -0
- package/dist/chunk-TZQHYZKT.js +0 -0
- package/dist/{chunk-WFGCP2GF.js → chunk-Y6U6FMVV.js} +1 -1
- package/dist/{ci-O3JM5YAA.js → ci-YOJTTP4J.js} +3 -3
- package/dist/{constants-QUKKMYWZ.js → constants-VP7TYJL7.js} +1 -1
- package/dist/{doctor-cli-6XY3PJM5.js → doctor-cli-PCIKXTNV.js} +5 -5
- package/dist/electron-server.js +15 -3
- package/dist/file-checkpoint-NKBHGC7L.js +0 -0
- package/dist/git-context-EXOEHQSF.js +0 -0
- package/dist/{hub-HJTJM2RT.js → hub-N2ZRAXRO.js} +1 -1
- package/dist/hub-server-LJ2JSKZ2.js +0 -0
- package/dist/index.js +17 -17
- package/dist/indexer-AKWMYNJI.js +0 -0
- package/dist/persist-L54DPLI7.js +0 -0
- package/dist/project-trust-NKYHL3VZ.js +0 -0
- package/dist/{run-tests-T4NPP36U.js → run-tests-AXPZOPX7.js} +1 -1
- package/dist/{run-tests-OEPVJDXJ.js → run-tests-RNU733RF.js} +2 -2
- package/dist/semantic-PK7AUOJT.js +0 -0
- package/dist/{server-NBPF74CY.js → server-SLFGYGBO.js} +8 -8
- package/dist/{server-TZDUN5V3.js → server-YIBPZJ34.js} +28 -11
- package/dist/store-MWNHVGJT.js +0 -0
- package/dist/{task-orchestrator-BS2FKLGM.js → task-orchestrator-FM4EXIBZ.js} +4 -4
- package/dist/{usage-DPM6T4ZZ.js → usage-QFW2XPF3.js} +2 -2
- package/dist/vector-store-BBDXB5IQ.js +0 -0
- package/dist/wasm/web-tree-sitter.wasm +0 -0
- package/dist/web/client/app.js +3351 -3351
- package/dist/web/client/icon.svg +22 -22
- package/dist/web/client/index.html +360 -360
- package/dist/web/client/manifest.json +15 -15
- package/dist/web/client/style.css +991 -991
- package/dist/web/client/sw.js +86 -86
- package/package.json +1 -1
|
File without changes
|
package/dist/auth-FSTAKSYF.js
CHANGED
|
File without changes
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
ConfigManager
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-JCY7RQIA.js";
|
|
5
5
|
import "./chunk-TZQHYZKT.js";
|
|
6
|
-
import "./chunk-
|
|
6
|
+
import "./chunk-HZKC424D.js";
|
|
7
7
|
import {
|
|
8
8
|
atomicWriteFileSync
|
|
9
9
|
} from "./chunk-IW3Q7AE5.js";
|
|
File without changes
|
|
@@ -925,6 +925,18 @@ function toUsage(u) {
|
|
|
925
925
|
if (cached > 0) usage.cacheReadTokens = cached;
|
|
926
926
|
return usage;
|
|
927
927
|
}
|
|
928
|
+
function isLoopbackBaseUrl(baseUrl) {
|
|
929
|
+
if (!baseUrl) return false;
|
|
930
|
+
let host;
|
|
931
|
+
try {
|
|
932
|
+
host = new URL(baseUrl).hostname;
|
|
933
|
+
} catch {
|
|
934
|
+
return false;
|
|
935
|
+
}
|
|
936
|
+
host = host.replace(/^\[|\]$/g, "").toLowerCase();
|
|
937
|
+
if (host === "localhost" || host === "::1" || host === "0.0.0.0") return true;
|
|
938
|
+
return /^127(?:\.\d{1,3}){3}$/.test(host);
|
|
939
|
+
}
|
|
928
940
|
var OpenAICompatibleProvider = class extends BaseProvider {
|
|
929
941
|
client;
|
|
930
942
|
defaultTimeout = 6e4;
|
|
@@ -940,7 +952,7 @@ var OpenAICompatibleProvider = class extends BaseProvider {
|
|
|
940
952
|
baseURL: options?.baseUrl ?? this.defaultBaseUrl,
|
|
941
953
|
timeout: this.defaultTimeout
|
|
942
954
|
};
|
|
943
|
-
const proxyUrl = options?.proxy;
|
|
955
|
+
const proxyUrl = isLoopbackBaseUrl(clientOptions.baseURL) ? void 0 : options?.proxy;
|
|
944
956
|
try {
|
|
945
957
|
const { Agent, ProxyAgent, fetch: undiciFetch } = await import("undici");
|
|
946
958
|
const STREAM_BODY_TIMEOUT = 30 * 60 * 1e3;
|
|
@@ -5,10 +5,10 @@ import {
|
|
|
5
5
|
} from "./chunk-T2NL5ZIA.js";
|
|
6
6
|
import {
|
|
7
7
|
runTestsTool
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-75SUTNYY.js";
|
|
9
9
|
import {
|
|
10
10
|
runTool
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-GOKVKOG3.js";
|
|
12
12
|
import {
|
|
13
13
|
getDangerLevel,
|
|
14
14
|
isFileWriteTool,
|
|
@@ -26,7 +26,7 @@ import {
|
|
|
26
26
|
SUBAGENT_ALLOWED_TOOLS,
|
|
27
27
|
SUBAGENT_DEFAULT_MAX_ROUNDS,
|
|
28
28
|
SUBAGENT_MAX_ROUNDS_LIMIT
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-HZKC424D.js";
|
|
30
30
|
import {
|
|
31
31
|
fileCheckpoints
|
|
32
32
|
} from "./chunk-4BKXL7SM.js";
|
package/dist/chunk-4BKXL7SM.js
CHANGED
|
File without changes
|
package/dist/chunk-5UR6ZOF4.js
CHANGED
|
File without changes
|
package/dist/chunk-A4GUGWEY.js
CHANGED
|
File without changes
|
package/dist/chunk-BXP6YZ2P.js
CHANGED
|
File without changes
|
package/dist/chunk-CITDVXXM.js
CHANGED
|
File without changes
|
package/dist/chunk-CKH4KQ4E.js
CHANGED
|
File without changes
|
package/dist/chunk-E44DTERW.js
CHANGED
|
File without changes
|
package/dist/chunk-HLWUDRBO.js
CHANGED
|
File without changes
|
package/dist/chunk-HOSJZMQS.js
CHANGED
|
File without changes
|
package/dist/chunk-IW3Q7AE5.js
CHANGED
|
File without changes
|
package/dist/chunk-JVKAL5Q3.js
CHANGED
|
File without changes
|
package/dist/chunk-KHYD3WXE.js
CHANGED
|
File without changes
|
package/dist/chunk-MC34ISJU.js
CHANGED
|
File without changes
|
package/dist/chunk-NZ4X6GUC.js
CHANGED
|
File without changes
|
package/dist/chunk-O6UFCEUZ.js
CHANGED
|
File without changes
|
package/dist/chunk-OJL3PY36.js
CHANGED
|
File without changes
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
truncateForPersist
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-2YLYDFEX.js";
|
|
5
5
|
import {
|
|
6
6
|
APP_NAME,
|
|
7
7
|
CONFIG_DIR_NAME,
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
MCP_PROTOCOL_VERSION,
|
|
12
12
|
MCP_TOOL_PREFIX,
|
|
13
13
|
VERSION
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-HZKC424D.js";
|
|
15
15
|
|
|
16
16
|
// src/mcp/client.ts
|
|
17
17
|
import { spawn } from "child_process";
|
package/dist/chunk-Q3ZUDA6S.js
CHANGED
|
File without changes
|
package/dist/chunk-SLSWPBK3.js
CHANGED
|
File without changes
|
package/dist/chunk-T2NL5ZIA.js
CHANGED
|
File without changes
|
package/dist/chunk-TB4W4Y4T.js
CHANGED
|
File without changes
|
package/dist/chunk-TZQHYZKT.js
CHANGED
|
File without changes
|
|
@@ -6,15 +6,15 @@ import {
|
|
|
6
6
|
} from "./chunk-HLWUDRBO.js";
|
|
7
7
|
import {
|
|
8
8
|
ProviderRegistry
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-2NINHXEZ.js";
|
|
10
10
|
import "./chunk-5UR6ZOF4.js";
|
|
11
11
|
import {
|
|
12
12
|
ConfigManager
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-JCY7RQIA.js";
|
|
14
14
|
import "./chunk-TZQHYZKT.js";
|
|
15
15
|
import {
|
|
16
16
|
VERSION
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-HZKC424D.js";
|
|
18
18
|
|
|
19
19
|
// src/cli/ci.ts
|
|
20
20
|
import { execFileSync, execSync } from "child_process";
|
|
@@ -2,26 +2,26 @@
|
|
|
2
2
|
import {
|
|
3
3
|
getConfigDirUsage,
|
|
4
4
|
listRecentCrashes
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-SB77W6XS.js";
|
|
6
6
|
import {
|
|
7
7
|
ProviderRegistry
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-2NINHXEZ.js";
|
|
9
9
|
import {
|
|
10
10
|
getStatsSnapshot,
|
|
11
11
|
getTopFailingTools,
|
|
12
12
|
getTopUsedTools,
|
|
13
13
|
resetStats
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-GOKVKOG3.js";
|
|
15
15
|
import "./chunk-5UR6ZOF4.js";
|
|
16
16
|
import {
|
|
17
17
|
ConfigManager
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-JCY7RQIA.js";
|
|
19
19
|
import "./chunk-TZQHYZKT.js";
|
|
20
20
|
import {
|
|
21
21
|
DEV_STATE_FILE_NAME,
|
|
22
22
|
MEMORY_FILE_NAME,
|
|
23
23
|
VERSION
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-HZKC424D.js";
|
|
25
25
|
import "./chunk-IW3Q7AE5.js";
|
|
26
26
|
|
|
27
27
|
// src/diagnostics/doctor-cli.ts
|
package/dist/electron-server.js
CHANGED
|
@@ -36,7 +36,7 @@ import {
|
|
|
36
36
|
VERSION,
|
|
37
37
|
buildUserIdentityPrompt,
|
|
38
38
|
runTestsTool
|
|
39
|
-
} from "./chunk-
|
|
39
|
+
} from "./chunk-Y6U6FMVV.js";
|
|
40
40
|
import {
|
|
41
41
|
hasSemanticIndex,
|
|
42
42
|
semanticSearch
|
|
@@ -2563,6 +2563,18 @@ function toUsage(u) {
|
|
|
2563
2563
|
if (cached > 0) usage.cacheReadTokens = cached;
|
|
2564
2564
|
return usage;
|
|
2565
2565
|
}
|
|
2566
|
+
function isLoopbackBaseUrl(baseUrl) {
|
|
2567
|
+
if (!baseUrl) return false;
|
|
2568
|
+
let host;
|
|
2569
|
+
try {
|
|
2570
|
+
host = new URL(baseUrl).hostname;
|
|
2571
|
+
} catch {
|
|
2572
|
+
return false;
|
|
2573
|
+
}
|
|
2574
|
+
host = host.replace(/^\[|\]$/g, "").toLowerCase();
|
|
2575
|
+
if (host === "localhost" || host === "::1" || host === "0.0.0.0") return true;
|
|
2576
|
+
return /^127(?:\.\d{1,3}){3}$/.test(host);
|
|
2577
|
+
}
|
|
2566
2578
|
var OpenAICompatibleProvider = class extends BaseProvider {
|
|
2567
2579
|
client;
|
|
2568
2580
|
defaultTimeout = 6e4;
|
|
@@ -2578,7 +2590,7 @@ var OpenAICompatibleProvider = class extends BaseProvider {
|
|
|
2578
2590
|
baseURL: options?.baseUrl ?? this.defaultBaseUrl,
|
|
2579
2591
|
timeout: this.defaultTimeout
|
|
2580
2592
|
};
|
|
2581
|
-
const proxyUrl = options?.proxy;
|
|
2593
|
+
const proxyUrl = isLoopbackBaseUrl(clientOptions.baseURL) ? void 0 : options?.proxy;
|
|
2582
2594
|
try {
|
|
2583
2595
|
const { Agent: Agent2, ProxyAgent, fetch: undiciFetch } = await import("undici");
|
|
2584
2596
|
const STREAM_BODY_TIMEOUT = 30 * 60 * 1e3;
|
|
@@ -14292,7 +14304,7 @@ ${undoResults.map((r) => ` \u2022 ${r}`).join("\n")}` });
|
|
|
14292
14304
|
case "test": {
|
|
14293
14305
|
this.send({ type: "info", message: "\u{1F9EA} Running tests..." });
|
|
14294
14306
|
try {
|
|
14295
|
-
const { executeTests } = await import("./run-tests-
|
|
14307
|
+
const { executeTests } = await import("./run-tests-AXPZOPX7.js");
|
|
14296
14308
|
const argStr = args.join(" ").trim();
|
|
14297
14309
|
let testArgs = {};
|
|
14298
14310
|
if (argStr) {
|
|
File without changes
|
|
File without changes
|
|
@@ -154,7 +154,7 @@ ${content}`);
|
|
|
154
154
|
}
|
|
155
155
|
}
|
|
156
156
|
async function runTaskMode(config, providers, configManager, topic) {
|
|
157
|
-
const { TaskOrchestrator } = await import("./task-orchestrator-
|
|
157
|
+
const { TaskOrchestrator } = await import("./task-orchestrator-FM4EXIBZ.js");
|
|
158
158
|
const orchestrator = new TaskOrchestrator(config, providers, configManager);
|
|
159
159
|
let interrupted = false;
|
|
160
160
|
const onSigint = () => {
|
|
File without changes
|
package/dist/index.js
CHANGED
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
saveDevState,
|
|
16
16
|
sessionHasMeaningfulContent,
|
|
17
17
|
setupProxy
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-Q2MBPMTW.js";
|
|
19
19
|
import {
|
|
20
20
|
ToolExecutor,
|
|
21
21
|
ToolRegistry,
|
|
@@ -35,10 +35,10 @@ import {
|
|
|
35
35
|
spawnAgentContext,
|
|
36
36
|
theme,
|
|
37
37
|
undoStack
|
|
38
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-2YLYDFEX.js";
|
|
39
39
|
import "./chunk-T2NL5ZIA.js";
|
|
40
40
|
import "./chunk-BXP6YZ2P.js";
|
|
41
|
-
import "./chunk-
|
|
41
|
+
import "./chunk-75SUTNYY.js";
|
|
42
42
|
import {
|
|
43
43
|
SessionManager,
|
|
44
44
|
getContentText
|
|
@@ -55,16 +55,16 @@ import {
|
|
|
55
55
|
getConfigDirUsage,
|
|
56
56
|
listRecentCrashes,
|
|
57
57
|
writeCrashLog
|
|
58
|
-
} from "./chunk-
|
|
58
|
+
} from "./chunk-SB77W6XS.js";
|
|
59
59
|
import {
|
|
60
60
|
ProviderRegistry
|
|
61
|
-
} from "./chunk-
|
|
61
|
+
} from "./chunk-2NINHXEZ.js";
|
|
62
62
|
import {
|
|
63
63
|
getStatsSnapshot,
|
|
64
64
|
getTopFailingTools,
|
|
65
65
|
getTopUsedTools,
|
|
66
66
|
installFlushOnExit
|
|
67
|
-
} from "./chunk-
|
|
67
|
+
} from "./chunk-GOKVKOG3.js";
|
|
68
68
|
import {
|
|
69
69
|
CONTENT_ONLY_STREAM_REMINDER,
|
|
70
70
|
TEE_FINAL_USER_NUDGE,
|
|
@@ -85,7 +85,7 @@ import {
|
|
|
85
85
|
} from "./chunk-5UR6ZOF4.js";
|
|
86
86
|
import {
|
|
87
87
|
ConfigManager
|
|
88
|
-
} from "./chunk-
|
|
88
|
+
} from "./chunk-JCY7RQIA.js";
|
|
89
89
|
import {
|
|
90
90
|
AuthError,
|
|
91
91
|
ProviderError,
|
|
@@ -112,7 +112,7 @@ import {
|
|
|
112
112
|
SKILLS_DIR_NAME,
|
|
113
113
|
VERSION,
|
|
114
114
|
buildUserIdentityPrompt
|
|
115
|
-
} from "./chunk-
|
|
115
|
+
} from "./chunk-HZKC424D.js";
|
|
116
116
|
import {
|
|
117
117
|
formatGitContextForPrompt,
|
|
118
118
|
getGitContext,
|
|
@@ -1827,7 +1827,7 @@ No tools match "${filter}".
|
|
|
1827
1827
|
const { join: join5 } = await import("path");
|
|
1828
1828
|
const { existsSync: existsSync5 } = await import("fs");
|
|
1829
1829
|
const { getGitRoot: getGitRoot2 } = await import("./git-context-EXOEHQSF.js");
|
|
1830
|
-
const { MCP_PROJECT_CONFIG_NAME: MCP_PROJECT_CONFIG_NAME2 } = await import("./constants-
|
|
1830
|
+
const { MCP_PROJECT_CONFIG_NAME: MCP_PROJECT_CONFIG_NAME2 } = await import("./constants-VP7TYJL7.js");
|
|
1831
1831
|
const { approveProject, hashMcpFile } = await import("./project-trust-NKYHL3VZ.js");
|
|
1832
1832
|
const cwd = process.cwd();
|
|
1833
1833
|
const projectRoot = getGitRoot2(cwd) ?? cwd;
|
|
@@ -2888,7 +2888,7 @@ ${hint}` : "")
|
|
|
2888
2888
|
usage: "/test [command|filter]",
|
|
2889
2889
|
async execute(args, ctx) {
|
|
2890
2890
|
try {
|
|
2891
|
-
const { executeTests } = await import("./run-tests-
|
|
2891
|
+
const { executeTests } = await import("./run-tests-RNU733RF.js");
|
|
2892
2892
|
const argStr = args.join(" ").trim();
|
|
2893
2893
|
let testArgs = {};
|
|
2894
2894
|
if (argStr) {
|
|
@@ -7265,7 +7265,7 @@ program.command("web").description("Start Web UI server with browser-based chat
|
|
|
7265
7265
|
console.error("Error: Invalid port number. Must be between 1 and 65535.");
|
|
7266
7266
|
process.exit(1);
|
|
7267
7267
|
}
|
|
7268
|
-
const { startWebServer } = await import("./server-
|
|
7268
|
+
const { startWebServer } = await import("./server-SLFGYGBO.js");
|
|
7269
7269
|
await startWebServer({ port, host: options.host });
|
|
7270
7270
|
});
|
|
7271
7271
|
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) => {
|
|
@@ -7432,16 +7432,16 @@ program.command("sessions").description("List recent conversation sessions").opt
|
|
|
7432
7432
|
console.log(footer + "\n");
|
|
7433
7433
|
});
|
|
7434
7434
|
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) => {
|
|
7435
|
-
const { runUsageCli } = await import("./usage-
|
|
7435
|
+
const { runUsageCli } = await import("./usage-QFW2XPF3.js");
|
|
7436
7436
|
await runUsageCli(options);
|
|
7437
7437
|
});
|
|
7438
7438
|
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) => {
|
|
7439
|
-
const { runDoctorCli } = await import("./doctor-cli-
|
|
7439
|
+
const { runDoctorCli } = await import("./doctor-cli-PCIKXTNV.js");
|
|
7440
7440
|
await runDoctorCli({ json: !!options.json, resetStats: !!options.resetStats });
|
|
7441
7441
|
});
|
|
7442
7442
|
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) => {
|
|
7443
7443
|
try {
|
|
7444
|
-
const batch = await import("./batch-
|
|
7444
|
+
const batch = await import("./batch-UF4EWYFD.js");
|
|
7445
7445
|
switch (action) {
|
|
7446
7446
|
case "submit":
|
|
7447
7447
|
if (!arg) {
|
|
@@ -7484,7 +7484,7 @@ program.command("batch <action> [arg] [arg2]").description("Anthropic Message Ba
|
|
|
7484
7484
|
}
|
|
7485
7485
|
});
|
|
7486
7486
|
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) => {
|
|
7487
|
-
const { startMcpServer } = await import("./server-
|
|
7487
|
+
const { startMcpServer } = await import("./server-YIBPZJ34.js");
|
|
7488
7488
|
await startMcpServer({
|
|
7489
7489
|
allowDestructive: !!options.allowDestructive,
|
|
7490
7490
|
allowOutsideCwd: !!options.allowOutsideCwd,
|
|
@@ -7493,7 +7493,7 @@ program.command("mcp-serve").description("Start an MCP server over STDIO, exposi
|
|
|
7493
7493
|
});
|
|
7494
7494
|
});
|
|
7495
7495
|
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; diff fetched via `gh pr diff <num>`", (v) => parseInt(v, 10)).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)").action(async (options) => {
|
|
7496
|
-
const { runCi } = await import("./ci-
|
|
7496
|
+
const { runCi } = await import("./ci-YOJTTP4J.js");
|
|
7497
7497
|
const result = await runCi({
|
|
7498
7498
|
pr: options.pr,
|
|
7499
7499
|
base: options.base,
|
|
@@ -7639,7 +7639,7 @@ program.command("hub [topic]").description("Start multi-agent hub (discuss / bra
|
|
|
7639
7639
|
}),
|
|
7640
7640
|
config.get("customProviders")
|
|
7641
7641
|
);
|
|
7642
|
-
const { startHub } = await import("./hub-
|
|
7642
|
+
const { startHub } = await import("./hub-N2ZRAXRO.js");
|
|
7643
7643
|
await startHub(
|
|
7644
7644
|
{
|
|
7645
7645
|
topic: topic ?? "",
|
package/dist/indexer-AKWMYNJI.js
CHANGED
|
File without changes
|
package/dist/persist-L54DPLI7.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
loadDevState,
|
|
20
20
|
persistToolRound,
|
|
21
21
|
setupProxy
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-Q2MBPMTW.js";
|
|
23
23
|
import {
|
|
24
24
|
ToolExecutor,
|
|
25
25
|
ToolRegistry,
|
|
@@ -38,10 +38,10 @@ import {
|
|
|
38
38
|
spawnAgentContext,
|
|
39
39
|
truncateOutput,
|
|
40
40
|
undoStack
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-2YLYDFEX.js";
|
|
42
42
|
import "./chunk-T2NL5ZIA.js";
|
|
43
43
|
import "./chunk-BXP6YZ2P.js";
|
|
44
|
-
import "./chunk-
|
|
44
|
+
import "./chunk-75SUTNYY.js";
|
|
45
45
|
import {
|
|
46
46
|
SessionManager,
|
|
47
47
|
getContentText
|
|
@@ -52,10 +52,10 @@ import {
|
|
|
52
52
|
} from "./chunk-E44DTERW.js";
|
|
53
53
|
import {
|
|
54
54
|
ProviderRegistry
|
|
55
|
-
} from "./chunk-
|
|
55
|
+
} from "./chunk-2NINHXEZ.js";
|
|
56
56
|
import {
|
|
57
57
|
runTool
|
|
58
|
-
} from "./chunk-
|
|
58
|
+
} from "./chunk-GOKVKOG3.js";
|
|
59
59
|
import {
|
|
60
60
|
CONTENT_ONLY_STREAM_REMINDER,
|
|
61
61
|
TEE_FINAL_USER_NUDGE,
|
|
@@ -73,7 +73,7 @@ import {
|
|
|
73
73
|
} from "./chunk-5UR6ZOF4.js";
|
|
74
74
|
import {
|
|
75
75
|
ConfigManager
|
|
76
|
-
} from "./chunk-
|
|
76
|
+
} from "./chunk-JCY7RQIA.js";
|
|
77
77
|
import "./chunk-TZQHYZKT.js";
|
|
78
78
|
import {
|
|
79
79
|
AGENTIC_BEHAVIOR_GUIDELINE,
|
|
@@ -93,7 +93,7 @@ import {
|
|
|
93
93
|
SKILLS_DIR_NAME,
|
|
94
94
|
VERSION,
|
|
95
95
|
buildUserIdentityPrompt
|
|
96
|
-
} from "./chunk-
|
|
96
|
+
} from "./chunk-HZKC424D.js";
|
|
97
97
|
import {
|
|
98
98
|
formatGitContextForPrompt,
|
|
99
99
|
getGitContext,
|
|
@@ -2454,7 +2454,7 @@ ${undoResults.map((r) => ` \u2022 ${r}`).join("\n")}` });
|
|
|
2454
2454
|
case "test": {
|
|
2455
2455
|
this.send({ type: "info", message: "\u{1F9EA} Running tests..." });
|
|
2456
2456
|
try {
|
|
2457
|
-
const { executeTests } = await import("./run-tests-
|
|
2457
|
+
const { executeTests } = await import("./run-tests-RNU733RF.js");
|
|
2458
2458
|
const argStr = args.join(" ").trim();
|
|
2459
2459
|
let testArgs = {};
|
|
2460
2460
|
if (argStr) {
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
ToolRegistry
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-2YLYDFEX.js";
|
|
5
5
|
import "./chunk-T2NL5ZIA.js";
|
|
6
6
|
import "./chunk-BXP6YZ2P.js";
|
|
7
|
-
import "./chunk-
|
|
7
|
+
import "./chunk-75SUTNYY.js";
|
|
8
8
|
import {
|
|
9
9
|
runTool
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-GOKVKOG3.js";
|
|
11
11
|
import {
|
|
12
12
|
getDangerLevel,
|
|
13
13
|
schemaToJsonSchema
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
import "./chunk-TZQHYZKT.js";
|
|
16
16
|
import {
|
|
17
17
|
VERSION
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-HZKC424D.js";
|
|
19
19
|
import "./chunk-4BKXL7SM.js";
|
|
20
20
|
import "./chunk-TB4W4Y4T.js";
|
|
21
21
|
import "./chunk-KHYD3WXE.js";
|
|
@@ -26,7 +26,7 @@ import "./chunk-IW3Q7AE5.js";
|
|
|
26
26
|
|
|
27
27
|
// src/mcp/server.ts
|
|
28
28
|
import { createInterface } from "readline";
|
|
29
|
-
import { resolve } from "path";
|
|
29
|
+
import { resolve, dirname, basename } from "path";
|
|
30
30
|
import { realpathSync } from "fs";
|
|
31
31
|
var STDIN_TOOLS = /* @__PURE__ */ new Set(["ask_user", "spawn_agent"]);
|
|
32
32
|
function looksLikePath(s) {
|
|
@@ -62,6 +62,21 @@ var TOOL_PATH_ARGS = {
|
|
|
62
62
|
bash: ["cwd"],
|
|
63
63
|
run_interactive: ["cwd"]
|
|
64
64
|
};
|
|
65
|
+
function realpathExistingPrefix(abs) {
|
|
66
|
+
let current = abs;
|
|
67
|
+
const tail = [];
|
|
68
|
+
for (; ; ) {
|
|
69
|
+
try {
|
|
70
|
+
const real = realpathSync(current);
|
|
71
|
+
return tail.length ? resolve(real, ...tail) : real;
|
|
72
|
+
} catch {
|
|
73
|
+
const parent = dirname(current);
|
|
74
|
+
if (parent === current) return abs;
|
|
75
|
+
tail.unshift(basename(current));
|
|
76
|
+
current = parent;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
65
80
|
var McpServer = class {
|
|
66
81
|
registry;
|
|
67
82
|
opts;
|
|
@@ -243,10 +258,12 @@ var McpServer = class {
|
|
|
243
258
|
* Validate that every known path-bearing argument of `toolName` resolves
|
|
244
259
|
* inside the sandbox root. Returns an error message on violation, else undef.
|
|
245
260
|
*
|
|
246
|
-
*
|
|
247
|
-
*
|
|
248
|
-
*
|
|
249
|
-
*
|
|
261
|
+
* Each candidate is canonicalized via {@link realpathExistingPrefix} before the
|
|
262
|
+
* containment check so symlinks in the existing prefix (notably the sandbox root
|
|
263
|
+
* itself — `/var`→`/private/var` on macOS) match the realpath'd root. write_file
|
|
264
|
+
* targets that don't exist yet are handled by realpath-ing only the existing
|
|
265
|
+
* ancestor. The root is also realpath'd once at construction, stopping the
|
|
266
|
+
* "sandbox root is a symlink pointing elsewhere" class of attack.
|
|
250
267
|
*/
|
|
251
268
|
validatePathArgs(toolName, args) {
|
|
252
269
|
if (this.opts.allowOutsideCwd) return void 0;
|
|
@@ -258,7 +275,7 @@ var McpServer = class {
|
|
|
258
275
|
const list = Array.isArray(value) ? value : [value];
|
|
259
276
|
for (const entry of list) {
|
|
260
277
|
if (typeof entry !== "string" || entry.length === 0) continue;
|
|
261
|
-
const abs = resolve(this.sandboxRoot, entry);
|
|
278
|
+
const abs = realpathExistingPrefix(resolve(this.sandboxRoot, entry));
|
|
262
279
|
if (!this.isInsideSandbox(abs)) {
|
|
263
280
|
return `Path '${entry}' escapes sandbox root '${this.sandboxRoot}'. Pass --allow-outside-cwd to permit.`;
|
|
264
281
|
}
|
|
@@ -270,7 +287,7 @@ var McpServer = class {
|
|
|
270
287
|
if (knownKeys.has(k)) continue;
|
|
271
288
|
if (typeof v !== "string" || v.length === 0) continue;
|
|
272
289
|
if (!looksLikePath(v)) continue;
|
|
273
|
-
const abs = resolve(this.sandboxRoot, v);
|
|
290
|
+
const abs = realpathExistingPrefix(resolve(this.sandboxRoot, v));
|
|
274
291
|
if (!this.isInsideSandbox(abs)) {
|
|
275
292
|
return `Path-like argument '${k}=${v}' escapes sandbox root '${this.sandboxRoot}'. Pass --allow-outside-cwd to permit.`;
|
|
276
293
|
}
|
package/dist/store-MWNHVGJT.js
CHANGED
|
File without changes
|