jinzd-ai-cli 0.4.279 → 0.4.281
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/dist/{batch-6QZSWCBL.js → batch-237ZXBQD.js} +2 -2
- package/dist/{chunk-2BKRWTEQ.js → chunk-2FCKZ3OS.js} +1 -1
- package/dist/{chunk-UD3BVNC5.js → chunk-4XJVSMZ6.js} +1 -1
- package/dist/{chunk-5XHEXRMN.js → chunk-5GYOQ7EF.js} +1 -1
- package/dist/{chunk-CGDYO52A.js → chunk-6NO5FZW6.js} +1 -0
- package/dist/{chunk-JLOQBYU4.js → chunk-BVGSR3BA.js} +3 -3
- package/dist/{chunk-FQJFGGKN.js → chunk-FHRIDE2T.js} +4 -4
- package/dist/{chunk-6WMT7OQG.js → chunk-H2VE4TTN.js} +1 -1
- package/dist/{chunk-CMNXAJLH.js → chunk-IXEKDAIX.js} +1 -1
- package/dist/{chunk-NZPHEUJM.js → chunk-J3RWNQOF.js} +1 -1
- package/dist/{chunk-7L4TEK7Q.js → chunk-J5TXHFDO.js} +122 -3
- package/dist/{chunk-RJY3HJS4.js → chunk-JT2A2M4F.js} +1 -1
- package/dist/{chunk-IIXZ7IPN.js → chunk-L7C34TFI.js} +1 -1
- package/dist/{chunk-JS6VAPWM.js → chunk-UTJQXG4P.js} +3 -3
- package/dist/{chunk-MX75TNE5.js → chunk-VB54ILH7.js} +1 -1
- package/dist/{chunk-SIVM2YQQ.js → chunk-WUIOUJA2.js} +1 -1
- package/dist/{ci-F4ESOYI5.js → ci-LXRTYJ6F.js} +4 -4
- package/dist/{ci-format-AIRW3TVQ.js → ci-format-II3OT2VU.js} +2 -2
- package/dist/{constants-3VMMZJDS.js → constants-X53QCUTP.js} +1 -1
- package/dist/{doctor-cli-WVMEWMYE.js → doctor-cli-6JCJEQR4.js} +4 -4
- package/dist/electron-server.js +144 -91
- package/dist/{hub-JJCCCU3O.js → hub-RXAFF7QI.js} +2 -2
- package/dist/index.js +68 -130
- package/dist/{persist-PQM4BRI4.js → persist-TBQILDSE.js} +2 -2
- package/dist/{persistent-memory-KSZKM4JG.js → persistent-memory-7CKJLS25.js} +2 -2
- package/dist/{persistent-memory-QZN4Q3W4.js → persistent-memory-WAKFKH2I.js} +2 -2
- package/dist/{pr-GFB5JC26.js → pr-DZTRHAMG.js} +4 -4
- package/dist/{run-tests-HMHHIG7Y.js → run-tests-4ESYEROQ.js} +2 -2
- package/dist/{run-tests-EL54INOI.js → run-tests-XGCNUT5S.js} +2 -2
- package/dist/{server-WUSJWC3A.js → server-6RYXFG3H.js} +60 -98
- package/dist/{server-6C7GITHY.js → server-EFA7UP4I.js} +5 -5
- package/dist/{task-orchestrator-C7RUUA2Q.js → task-orchestrator-H3AEIHR3.js} +5 -5
- package/dist/{usage-CW6BT2UV.js → usage-W7TZWHY7.js} +2 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -11,7 +11,13 @@ import {
|
|
|
11
11
|
autoTrimSessionIfNeeded,
|
|
12
12
|
buildInitPrompt,
|
|
13
13
|
buildSessionCostReport,
|
|
14
|
+
buildSessionExport,
|
|
15
|
+
checkpointDeletedMessage,
|
|
16
|
+
checkpointNotFoundMessage,
|
|
17
|
+
checkpointRestoredMessage,
|
|
18
|
+
checkpointSavedMessage,
|
|
14
19
|
clearDevState,
|
|
20
|
+
clearedSessionMessage,
|
|
15
21
|
costSourceNote,
|
|
16
22
|
decideDeferredSave,
|
|
17
23
|
decideModel,
|
|
@@ -19,10 +25,13 @@ import {
|
|
|
19
25
|
estimateConversationTokens,
|
|
20
26
|
evaluateContextPressure,
|
|
21
27
|
filterMemoryEntries,
|
|
28
|
+
formatCheckpointList,
|
|
22
29
|
formatSessionSummaryLine,
|
|
23
30
|
loadDevState,
|
|
24
31
|
parseBatchDeleteArgs,
|
|
32
|
+
parseCheckpointCommand,
|
|
25
33
|
parseCleanArgs,
|
|
34
|
+
parseExportArgs,
|
|
26
35
|
parseMemoryShowFilters,
|
|
27
36
|
parseModelCommand,
|
|
28
37
|
parseRouteCommand,
|
|
@@ -45,7 +54,7 @@ import {
|
|
|
45
54
|
setupProxy,
|
|
46
55
|
snapshotFile,
|
|
47
56
|
stripRoutingTags
|
|
48
|
-
} from "./chunk-
|
|
57
|
+
} from "./chunk-J5TXHFDO.js";
|
|
49
58
|
import {
|
|
50
59
|
CostTracker,
|
|
51
60
|
computeCost,
|
|
@@ -75,7 +84,7 @@ import {
|
|
|
75
84
|
setMaxOutputCap,
|
|
76
85
|
spawnAgentContext,
|
|
77
86
|
undoStack
|
|
78
|
-
} from "./chunk-
|
|
87
|
+
} from "./chunk-FHRIDE2T.js";
|
|
79
88
|
import {
|
|
80
89
|
buildReviewPrompt,
|
|
81
90
|
buildSecurityReviewPrompt
|
|
@@ -116,7 +125,7 @@ import {
|
|
|
116
125
|
touchMemoryReferences,
|
|
117
126
|
updateMemoryApproval,
|
|
118
127
|
updateMemoryEntry
|
|
119
|
-
} from "./chunk-
|
|
128
|
+
} from "./chunk-H2VE4TTN.js";
|
|
120
129
|
import "./chunk-4DEMGCK4.js";
|
|
121
130
|
import "./chunk-UUSRWSSX.js";
|
|
122
131
|
import "./chunk-CKH4KQ4E.js";
|
|
@@ -129,7 +138,7 @@ import {
|
|
|
129
138
|
import {
|
|
130
139
|
SessionManager,
|
|
131
140
|
getContentText
|
|
132
|
-
} from "./chunk-
|
|
141
|
+
} from "./chunk-6NO5FZW6.js";
|
|
133
142
|
import "./chunk-NYNSYLFY.js";
|
|
134
143
|
import {
|
|
135
144
|
DEFAULT_PATTERNS,
|
|
@@ -140,7 +149,7 @@ import {
|
|
|
140
149
|
formatDoctorReport,
|
|
141
150
|
loadContextFiles,
|
|
142
151
|
writeCrashLog
|
|
143
|
-
} from "./chunk-
|
|
152
|
+
} from "./chunk-BVGSR3BA.js";
|
|
144
153
|
import {
|
|
145
154
|
describePlugin,
|
|
146
155
|
getActivePluginAssets,
|
|
@@ -157,14 +166,14 @@ import {
|
|
|
157
166
|
trustHook,
|
|
158
167
|
trustPlugin,
|
|
159
168
|
untrustHook
|
|
160
|
-
} from "./chunk-
|
|
169
|
+
} from "./chunk-L7C34TFI.js";
|
|
161
170
|
import {
|
|
162
171
|
ProviderRegistry,
|
|
163
172
|
listBuiltInProviderMetadata
|
|
164
173
|
} from "./chunk-UGY5SVNX.js";
|
|
165
174
|
import {
|
|
166
175
|
ConfigManager
|
|
167
|
-
} from "./chunk-
|
|
176
|
+
} from "./chunk-4XJVSMZ6.js";
|
|
168
177
|
import {
|
|
169
178
|
CONTENT_ONLY_STREAM_REMINDER,
|
|
170
179
|
TEE_FINAL_USER_NUDGE,
|
|
@@ -202,7 +211,7 @@ import {
|
|
|
202
211
|
import {
|
|
203
212
|
fileCheckpoints
|
|
204
213
|
} from "./chunk-4BKXL7SM.js";
|
|
205
|
-
import "./chunk-
|
|
214
|
+
import "./chunk-J3RWNQOF.js";
|
|
206
215
|
import {
|
|
207
216
|
AGENTIC_BEHAVIOR_GUIDELINE,
|
|
208
217
|
AUTHOR,
|
|
@@ -220,7 +229,7 @@ import {
|
|
|
220
229
|
SKILLS_DIR_NAME,
|
|
221
230
|
VERSION,
|
|
222
231
|
buildUserIdentityPrompt
|
|
223
|
-
} from "./chunk-
|
|
232
|
+
} from "./chunk-2FCKZ3OS.js";
|
|
224
233
|
|
|
225
234
|
// src/index.ts
|
|
226
235
|
import { program } from "commander";
|
|
@@ -1338,7 +1347,7 @@ No tools match "${filter}".
|
|
|
1338
1347
|
const { join: join6 } = await import("path");
|
|
1339
1348
|
const { existsSync: existsSync6 } = await import("fs");
|
|
1340
1349
|
const { getGitRoot: getGitRoot2 } = await import("./git-context-EXOEHQSF.js");
|
|
1341
|
-
const { MCP_PROJECT_CONFIG_NAME: MCP_PROJECT_CONFIG_NAME2 } = await import("./constants-
|
|
1350
|
+
const { MCP_PROJECT_CONFIG_NAME: MCP_PROJECT_CONFIG_NAME2 } = await import("./constants-X53QCUTP.js");
|
|
1342
1351
|
const { approveProject, hashMcpFile } = await import("./project-trust-NKYHL3VZ.js");
|
|
1343
1352
|
const cwd = process.cwd();
|
|
1344
1353
|
const projectRoot = getGitRoot2(cwd) ?? cwd;
|
|
@@ -2258,7 +2267,7 @@ function createReviewCommands() {
|
|
|
2258
2267
|
usage: "/test [command|filter]",
|
|
2259
2268
|
async execute(args, ctx) {
|
|
2260
2269
|
try {
|
|
2261
|
-
const { executeTests } = await import("./run-tests-
|
|
2270
|
+
const { executeTests } = await import("./run-tests-XGCNUT5S.js");
|
|
2262
2271
|
const argStr = args.join(" ").trim();
|
|
2263
2272
|
let testArgs = {};
|
|
2264
2273
|
if (argStr) {
|
|
@@ -3010,13 +3019,17 @@ function createSessionCommands() {
|
|
|
3010
3019
|
return [
|
|
3011
3020
|
{
|
|
3012
3021
|
name: "clear",
|
|
3013
|
-
description: "
|
|
3022
|
+
description: "Start a new session (previous conversation is kept)",
|
|
3014
3023
|
usage: "/clear",
|
|
3015
|
-
execute(_args, ctx) {
|
|
3016
|
-
ctx.sessions.current
|
|
3024
|
+
async execute(_args, ctx) {
|
|
3025
|
+
const prior = ctx.sessions.current;
|
|
3026
|
+
const priorId = prior?.id ?? null;
|
|
3027
|
+
const priorCount = prior?.messages.length ?? 0;
|
|
3028
|
+
if (priorCount > 0) await ctx.sessions.save();
|
|
3029
|
+
ctx.sessions.createSession(ctx.getCurrentProvider(), ctx.getCurrentModel());
|
|
3017
3030
|
ctx.resetSessionTokenUsage();
|
|
3018
3031
|
ctx.clearDevState();
|
|
3019
|
-
ctx.renderer.printInfo(
|
|
3032
|
+
ctx.renderer.printInfo(clearedSessionMessage(priorId, priorCount));
|
|
3020
3033
|
}
|
|
3021
3034
|
},
|
|
3022
3035
|
{
|
|
@@ -3281,76 +3294,20 @@ function createSessionCommands() {
|
|
|
3281
3294
|
description: "Export current session to file or stdout",
|
|
3282
3295
|
usage: "/export [md|json] [filename]",
|
|
3283
3296
|
execute(args, ctx) {
|
|
3284
|
-
|
|
3285
|
-
let outFile = null;
|
|
3286
|
-
for (const arg of args) {
|
|
3287
|
-
if (arg === "md" || arg === "json") {
|
|
3288
|
-
format = arg;
|
|
3289
|
-
} else if (arg) {
|
|
3290
|
-
outFile = arg;
|
|
3291
|
-
}
|
|
3292
|
-
}
|
|
3297
|
+
const { format, outFile } = parseExportArgs(args);
|
|
3293
3298
|
const session = ctx.sessions.current;
|
|
3294
3299
|
if (!session || session.messages.length === 0) {
|
|
3295
3300
|
ctx.renderer.printInfo("No messages to export.");
|
|
3296
3301
|
return;
|
|
3297
3302
|
}
|
|
3298
|
-
|
|
3299
|
-
|
|
3300
|
-
|
|
3301
|
-
|
|
3302
|
-
|
|
3303
|
-
|
|
3304
|
-
|
|
3305
|
-
|
|
3306
|
-
md += `| Field | Value |
|
|
3307
|
-
|----------|-------|
|
|
3308
|
-
`;
|
|
3309
|
-
md += `| Provider | ${session.provider} |
|
|
3310
|
-
`;
|
|
3311
|
-
md += `| Model | ${session.model} |
|
|
3312
|
-
`;
|
|
3313
|
-
md += `| Date | ${dateStr} |
|
|
3314
|
-
`;
|
|
3315
|
-
md += `| Session | ${session.id.slice(0, 8)} |
|
|
3316
|
-
|
|
3317
|
-
---
|
|
3318
|
-
|
|
3319
|
-
`;
|
|
3320
|
-
for (const msg of session.messages) {
|
|
3321
|
-
const role = msg.role === "user" ? "## \u{1F464} You" : "## \u{1F916} Assistant";
|
|
3322
|
-
const text = getContentText(msg.content);
|
|
3323
|
-
md += `${role}
|
|
3324
|
-
|
|
3325
|
-
${text}
|
|
3326
|
-
|
|
3327
|
-
---
|
|
3328
|
-
|
|
3329
|
-
`;
|
|
3330
|
-
}
|
|
3331
|
-
output = md;
|
|
3332
|
-
}
|
|
3333
|
-
if (outFile) {
|
|
3334
|
-
const absPath = resolve(process.cwd(), outFile);
|
|
3335
|
-
try {
|
|
3336
|
-
mkdirSync2(dirname2(absPath), { recursive: true });
|
|
3337
|
-
writeFileSync2(absPath, output, "utf-8");
|
|
3338
|
-
ctx.renderer.printSuccess(`Exported ${session.messages.length} messages \u2192 ${absPath}`);
|
|
3339
|
-
} catch (err) {
|
|
3340
|
-
ctx.renderer.renderError(`Failed to write file: ${err instanceof Error ? err.message : String(err)}`);
|
|
3341
|
-
}
|
|
3342
|
-
} else {
|
|
3343
|
-
const shortId = session.id.slice(0, 8);
|
|
3344
|
-
const dateTag = session.created.toISOString().slice(0, 10);
|
|
3345
|
-
const ext = format === "json" ? "json" : "md";
|
|
3346
|
-
const autoName = `session-${dateTag}-${shortId}.${ext}`;
|
|
3347
|
-
const absPath = resolve(process.cwd(), autoName);
|
|
3348
|
-
try {
|
|
3349
|
-
writeFileSync2(absPath, output, "utf-8");
|
|
3350
|
-
ctx.renderer.printSuccess(`Exported ${session.messages.length} messages \u2192 ${absPath}`);
|
|
3351
|
-
} catch (err) {
|
|
3352
|
-
ctx.renderer.renderError(`Failed to write file: ${err instanceof Error ? err.message : String(err)}`);
|
|
3353
|
-
}
|
|
3303
|
+
const exported = buildSessionExport(session, format, outFile);
|
|
3304
|
+
const absPath = resolve(process.cwd(), exported.filename);
|
|
3305
|
+
try {
|
|
3306
|
+
mkdirSync2(dirname2(absPath), { recursive: true });
|
|
3307
|
+
writeFileSync2(absPath, exported.content, "utf-8");
|
|
3308
|
+
ctx.renderer.printSuccess(`Exported ${exported.messageCount} messages \u2192 ${absPath}`);
|
|
3309
|
+
} catch (err) {
|
|
3310
|
+
ctx.renderer.renderError(`Failed to write file: ${err instanceof Error ? err.message : String(err)}`);
|
|
3354
3311
|
}
|
|
3355
3312
|
}
|
|
3356
3313
|
},
|
|
@@ -3364,59 +3321,40 @@ ${text}
|
|
|
3364
3321
|
ctx.renderer.renderError("No active session.");
|
|
3365
3322
|
return;
|
|
3366
3323
|
}
|
|
3367
|
-
const
|
|
3368
|
-
if (
|
|
3369
|
-
const
|
|
3370
|
-
|
|
3371
|
-
|
|
3372
|
-
|
|
3373
|
-
|
|
3374
|
-
console.log(theme.dim(` Checkpoints (${cps.length}):`));
|
|
3375
|
-
for (const cp of cps) {
|
|
3376
|
-
const ts = cp.timestamp.toLocaleString();
|
|
3377
|
-
console.log(theme.accent(` ${cp.name.padEnd(20)} `) + theme.dim(`msg #${cp.messageIndex} ${ts}`));
|
|
3324
|
+
const intent = parseCheckpointCommand(args);
|
|
3325
|
+
if (intent.kind === "list") {
|
|
3326
|
+
const lines = formatCheckpointList(ctx.listCheckpoints());
|
|
3327
|
+
console.log(theme.dim(` ${lines[0]}`));
|
|
3328
|
+
for (const line of lines.slice(1)) {
|
|
3329
|
+
const [name, rest] = [line.slice(0, 24), line.slice(24)];
|
|
3330
|
+
console.log(theme.accent(` ${name}`) + theme.dim(rest));
|
|
3378
3331
|
}
|
|
3379
3332
|
console.log();
|
|
3380
3333
|
return;
|
|
3381
3334
|
}
|
|
3382
|
-
|
|
3383
|
-
|
|
3384
|
-
if (!name) {
|
|
3385
|
-
ctx.renderer.renderError("Usage: /checkpoint save <name>");
|
|
3386
|
-
return;
|
|
3387
|
-
}
|
|
3388
|
-
ctx.createCheckpoint(name);
|
|
3389
|
-
console.log(theme.success(` \u2713 Checkpoint "${name}" saved at message #${session.messages.length}`));
|
|
3335
|
+
if (intent.kind === "usage" || intent.kind === "unknown") {
|
|
3336
|
+
ctx.renderer.renderError(intent.message);
|
|
3390
3337
|
return;
|
|
3391
3338
|
}
|
|
3392
|
-
if (
|
|
3393
|
-
|
|
3394
|
-
|
|
3395
|
-
return;
|
|
3396
|
-
}
|
|
3397
|
-
const ok = ctx.restoreCheckpoint(name);
|
|
3398
|
-
if (ok) {
|
|
3399
|
-
ctx.resetSessionTokenUsage();
|
|
3400
|
-
console.log(theme.success(` \u2713 Restored to checkpoint "${name}" (${session.messages.length} messages, token usage reset)`));
|
|
3401
|
-
} else {
|
|
3402
|
-
ctx.renderer.renderError(`Checkpoint "${name}" not found.`);
|
|
3403
|
-
}
|
|
3339
|
+
if (intent.kind === "save") {
|
|
3340
|
+
ctx.createCheckpoint(intent.name);
|
|
3341
|
+
console.log(theme.success(` ${checkpointSavedMessage(intent.name, session.messages.length)}`));
|
|
3404
3342
|
return;
|
|
3405
3343
|
}
|
|
3406
|
-
if (
|
|
3407
|
-
if (!name) {
|
|
3408
|
-
ctx.renderer.renderError(
|
|
3344
|
+
if (intent.kind === "restore") {
|
|
3345
|
+
if (!ctx.restoreCheckpoint(intent.name)) {
|
|
3346
|
+
ctx.renderer.renderError(checkpointNotFoundMessage(intent.name));
|
|
3409
3347
|
return;
|
|
3410
3348
|
}
|
|
3411
|
-
|
|
3412
|
-
|
|
3413
|
-
|
|
3414
|
-
|
|
3415
|
-
|
|
3416
|
-
|
|
3349
|
+
ctx.resetSessionTokenUsage();
|
|
3350
|
+
console.log(theme.success(` ${checkpointRestoredMessage(intent.name, session.messages.length)}`));
|
|
3351
|
+
return;
|
|
3352
|
+
}
|
|
3353
|
+
if (!ctx.deleteCheckpoint(intent.name)) {
|
|
3354
|
+
ctx.renderer.renderError(checkpointNotFoundMessage(intent.name));
|
|
3417
3355
|
return;
|
|
3418
3356
|
}
|
|
3419
|
-
|
|
3357
|
+
console.log(theme.success(` ${checkpointDeletedMessage(intent.name)}`));
|
|
3420
3358
|
}
|
|
3421
3359
|
},
|
|
3422
3360
|
// ── /review ──────────────────────────────────────────────────
|
|
@@ -7336,7 +7274,7 @@ program.command("web").description("Start Web UI server with browser-based chat
|
|
|
7336
7274
|
console.error("Error: Invalid port number. Must be between 1 and 65535.");
|
|
7337
7275
|
process.exit(1);
|
|
7338
7276
|
}
|
|
7339
|
-
const { startWebServer } = await import("./server-
|
|
7277
|
+
const { startWebServer } = await import("./server-6RYXFG3H.js");
|
|
7340
7278
|
await startWebServer({ port, host: options.host });
|
|
7341
7279
|
});
|
|
7342
7280
|
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) => {
|
|
@@ -7503,11 +7441,11 @@ program.command("sessions").description("List recent conversation sessions").opt
|
|
|
7503
7441
|
console.log(footer + "\n");
|
|
7504
7442
|
});
|
|
7505
7443
|
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) => {
|
|
7506
|
-
const { runUsageCli } = await import("./usage-
|
|
7444
|
+
const { runUsageCli } = await import("./usage-W7TZWHY7.js");
|
|
7507
7445
|
await runUsageCli(options);
|
|
7508
7446
|
});
|
|
7509
7447
|
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) => {
|
|
7510
|
-
const { runDoctorCli } = await import("./doctor-cli-
|
|
7448
|
+
const { runDoctorCli } = await import("./doctor-cli-6JCJEQR4.js");
|
|
7511
7449
|
const argv = process.argv.slice(2);
|
|
7512
7450
|
await runDoctorCli({
|
|
7513
7451
|
json: !!options.json || argv.includes("--json"),
|
|
@@ -7516,7 +7454,7 @@ program.command("doctor").description("Health check: API keys, config, MCP, rece
|
|
|
7516
7454
|
});
|
|
7517
7455
|
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) => {
|
|
7518
7456
|
try {
|
|
7519
|
-
const batch = await import("./batch-
|
|
7457
|
+
const batch = await import("./batch-237ZXBQD.js");
|
|
7520
7458
|
switch (action) {
|
|
7521
7459
|
case "submit":
|
|
7522
7460
|
if (!arg) {
|
|
@@ -7559,7 +7497,7 @@ program.command("batch <action> [arg] [arg2]").description("Anthropic Message Ba
|
|
|
7559
7497
|
}
|
|
7560
7498
|
});
|
|
7561
7499
|
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) => {
|
|
7562
|
-
const { startMcpServer } = await import("./server-
|
|
7500
|
+
const { startMcpServer } = await import("./server-EFA7UP4I.js");
|
|
7563
7501
|
await startMcpServer({
|
|
7564
7502
|
allowDestructive: !!options.allowDestructive,
|
|
7565
7503
|
allowOutsideCwd: !!options.allowOutsideCwd,
|
|
@@ -7572,7 +7510,7 @@ program.command("pr <action> [target]").description("PR review helpers: review |
|
|
|
7572
7510
|
console.error(`Unknown pr action: ${action}. Use review | security-review | summarize.`);
|
|
7573
7511
|
process.exit(1);
|
|
7574
7512
|
}
|
|
7575
|
-
const { runPrCli } = await import("./pr-
|
|
7513
|
+
const { runPrCli } = await import("./pr-DZTRHAMG.js");
|
|
7576
7514
|
const result = await runPrCli({
|
|
7577
7515
|
action,
|
|
7578
7516
|
target,
|
|
@@ -7592,8 +7530,8 @@ program.command("pr <action> [target]").description("PR review helpers: review |
|
|
|
7592
7530
|
process.exit(result.exitCode);
|
|
7593
7531
|
});
|
|
7594
7532
|
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) => {
|
|
7595
|
-
const { runCi } = await import("./ci-
|
|
7596
|
-
const { formatCiResult } = await import("./ci-format-
|
|
7533
|
+
const { runCi } = await import("./ci-LXRTYJ6F.js");
|
|
7534
|
+
const { formatCiResult } = await import("./ci-format-II3OT2VU.js");
|
|
7597
7535
|
const formats = [options.json, options.markdown, options.sarif].filter(Boolean).length;
|
|
7598
7536
|
if (formats > 1) {
|
|
7599
7537
|
console.error("Choose only one output format: --json, --markdown, or --sarif.");
|
|
@@ -7751,7 +7689,7 @@ program.command("hub [topic]").description("Start multi-agent hub (discuss / bra
|
|
|
7751
7689
|
config.get("customProviders"),
|
|
7752
7690
|
config.getConfigDir()
|
|
7753
7691
|
);
|
|
7754
|
-
const { startHub } = await import("./hub-
|
|
7692
|
+
const { startHub } = await import("./hub-RXAFF7QI.js");
|
|
7755
7693
|
await startHub(
|
|
7756
7694
|
{
|
|
7757
7695
|
topic: topic ?? "",
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import {
|
|
3
3
|
discussionToMessages,
|
|
4
4
|
persistDiscussion
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-VB54ILH7.js";
|
|
6
|
+
import "./chunk-6NO5FZW6.js";
|
|
7
7
|
import "./chunk-NYNSYLFY.js";
|
|
8
8
|
import "./chunk-3FEZSLGI.js";
|
|
9
9
|
import "./chunk-IW3Q7AE5.js";
|
|
@@ -28,11 +28,11 @@ import {
|
|
|
28
28
|
touchMemoryReferences,
|
|
29
29
|
updateMemoryApproval,
|
|
30
30
|
updateMemoryEntry
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-H2VE4TTN.js";
|
|
32
32
|
import "./chunk-3FEZSLGI.js";
|
|
33
33
|
import "./chunk-HOSJZMQS.js";
|
|
34
34
|
import "./chunk-IW3Q7AE5.js";
|
|
35
|
-
import "./chunk-
|
|
35
|
+
import "./chunk-2FCKZ3OS.js";
|
|
36
36
|
export {
|
|
37
37
|
addMemoryEntry,
|
|
38
38
|
backupMemoryStore,
|
|
@@ -27,9 +27,9 @@ import {
|
|
|
27
27
|
touchMemoryReferences,
|
|
28
28
|
updateMemoryApproval,
|
|
29
29
|
updateMemoryEntry
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-IXEKDAIX.js";
|
|
31
31
|
import "./chunk-FSC6KEWU.js";
|
|
32
|
-
import "./chunk-
|
|
32
|
+
import "./chunk-5GYOQ7EF.js";
|
|
33
33
|
import "./chunk-6BUTA5VW.js";
|
|
34
34
|
export {
|
|
35
35
|
addMemoryEntry,
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import {
|
|
3
3
|
countSeverity,
|
|
4
4
|
runCi
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-UTJQXG4P.js";
|
|
6
|
+
import "./chunk-JT2A2M4F.js";
|
|
7
7
|
import {
|
|
8
8
|
buildReviewPrompt,
|
|
9
9
|
buildSecurityReviewPrompt,
|
|
@@ -17,13 +17,13 @@ import {
|
|
|
17
17
|
} from "./chunk-UGY5SVNX.js";
|
|
18
18
|
import {
|
|
19
19
|
ConfigManager
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-4XJVSMZ6.js";
|
|
21
21
|
import "./chunk-TEXT4DAT.js";
|
|
22
22
|
import "./chunk-TU3L3PW7.js";
|
|
23
23
|
import "./chunk-IW3Q7AE5.js";
|
|
24
24
|
import {
|
|
25
25
|
VERSION
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-2FCKZ3OS.js";
|
|
27
27
|
|
|
28
28
|
// src/cli/pr.ts
|
|
29
29
|
import { execFileSync } from "child_process";
|