jinzd-ai-cli 0.4.121 → 0.4.123
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-NIKHWGRB.js → batch-DPMBOGTO.js} +2 -2
- package/dist/{chunk-TZRYEWXW.js → chunk-4EOQ52A4.js} +1 -1
- package/dist/{chunk-NRUVVOE2.js → chunk-AE6AICKJ.js} +1 -1
- package/dist/{chunk-S7L2M6UP.js → chunk-HEYZ5MOY.js} +1 -1
- package/dist/{chunk-4FBL3RIZ.js → chunk-NQRQJYGV.js} +1 -1
- package/dist/{chunk-KAEHWVMV.js → chunk-PADJZBKH.js} +1 -1
- package/dist/{chunk-DDHU6VOW.js → chunk-TFCJJ5CP.js} +3 -3
- package/dist/{chunk-N6A47HVC.js → chunk-VOJUSKA6.js} +1 -1
- package/dist/{chunk-J2PDFSAC.js → chunk-W6FXW2VB.js} +1 -1
- package/dist/{chunk-HV4MMSLT.js → chunk-WTZXHT4E.js} +2 -2
- package/dist/{constants-AEX6CGDO.js → constants-NXZEOTUT.js} +1 -1
- package/dist/{doctor-cli-VDXQRPNW.js → doctor-cli-OG4WKPJV.js} +16 -7
- package/dist/electron-server.js +2 -2
- package/dist/{hub-NAZQGJ7O.js → hub-LNJ7UIT5.js} +1 -1
- package/dist/index.js +222 -98
- package/dist/{run-tests-LI6ZDLSH.js → run-tests-KK4QP56Y.js} +1 -1
- package/dist/{run-tests-2EHQ6R54.js → run-tests-YDXGZ57P.js} +2 -2
- package/dist/{server-PZEYYUTG.js → server-HQARN5HJ.js} +4 -4
- package/dist/{server-Q2JSHPNK.js → server-ZPEHPZ5I.js} +8 -8
- package/dist/{task-orchestrator-DEBD3TIS.js → task-orchestrator-FBW2AGZJ.js} +4 -4
- package/package.json +1 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
ConfigManager
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-VOJUSKA6.js";
|
|
5
5
|
import "./chunk-2ZD3YTVM.js";
|
|
6
|
-
import "./chunk-
|
|
6
|
+
import "./chunk-NQRQJYGV.js";
|
|
7
7
|
import "./chunk-PDX44BCA.js";
|
|
8
8
|
|
|
9
9
|
// src/cli/batch.ts
|
|
@@ -5,12 +5,12 @@ import {
|
|
|
5
5
|
} from "./chunk-3BICTI5M.js";
|
|
6
6
|
import {
|
|
7
7
|
runTestsTool
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-4EOQ52A4.js";
|
|
9
9
|
import {
|
|
10
10
|
getDangerLevel,
|
|
11
11
|
isFileWriteTool,
|
|
12
12
|
runTool
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-PADJZBKH.js";
|
|
14
14
|
import {
|
|
15
15
|
EnvLoader,
|
|
16
16
|
NetworkError,
|
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
SUBAGENT_ALLOWED_TOOLS,
|
|
24
24
|
SUBAGENT_DEFAULT_MAX_ROUNDS,
|
|
25
25
|
SUBAGENT_MAX_ROUNDS_LIMIT
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-NQRQJYGV.js";
|
|
27
27
|
import {
|
|
28
28
|
fileCheckpoints
|
|
29
29
|
} from "./chunk-4BKXL7SM.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
truncateForPersist
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-TFCJJ5CP.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-NQRQJYGV.js";
|
|
15
15
|
import {
|
|
16
16
|
redactJson
|
|
17
17
|
} from "./chunk-7ZJN4KLV.js";
|
|
@@ -2,25 +2,25 @@
|
|
|
2
2
|
import {
|
|
3
3
|
getConfigDirUsage,
|
|
4
4
|
listRecentCrashes
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-W6FXW2VB.js";
|
|
6
6
|
import {
|
|
7
7
|
ProviderRegistry
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-HEYZ5MOY.js";
|
|
9
9
|
import {
|
|
10
10
|
ConfigManager
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-VOJUSKA6.js";
|
|
12
12
|
import {
|
|
13
13
|
getStatsSnapshot,
|
|
14
14
|
getTopFailingTools,
|
|
15
15
|
getTopUsedTools,
|
|
16
16
|
resetStats
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-PADJZBKH.js";
|
|
18
18
|
import "./chunk-2ZD3YTVM.js";
|
|
19
19
|
import {
|
|
20
20
|
DEV_STATE_FILE_NAME,
|
|
21
21
|
MEMORY_FILE_NAME,
|
|
22
22
|
VERSION
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-NQRQJYGV.js";
|
|
24
24
|
import "./chunk-PDX44BCA.js";
|
|
25
25
|
|
|
26
26
|
// src/diagnostics/doctor-cli.ts
|
|
@@ -156,10 +156,19 @@ async function runDoctorCli(options = {}) {
|
|
|
156
156
|
}
|
|
157
157
|
}
|
|
158
158
|
out.push("");
|
|
159
|
+
const dirAnnotations = {
|
|
160
|
+
models: "semantic search model \u2192 aicli: /index semantic-clear",
|
|
161
|
+
index: "symbol index \u2192 aicli: /index clear",
|
|
162
|
+
history: "conversation history \u2192 auto-pruned after 30 days",
|
|
163
|
+
logs: "crash logs",
|
|
164
|
+
"memory-index": "chat memory index \u2192 aicli: /memory index-clear"
|
|
165
|
+
};
|
|
159
166
|
out.push(`${B}Disk Usage (~/.aicli):${RESET}`);
|
|
160
167
|
out.push(` total: ${formatBytes(report.diskUsage.totalBytes)}`);
|
|
161
|
-
for (const e of report.diskUsage.entries.slice(0,
|
|
162
|
-
|
|
168
|
+
for (const e of report.diskUsage.entries.slice(0, 10)) {
|
|
169
|
+
const note = dirAnnotations[e.name];
|
|
170
|
+
const noteStr = note ? ` ${D}\xB7 ${note}${RESET}` : "";
|
|
171
|
+
out.push(` ${e.name.padEnd(18)} ${formatBytes(e.bytes)}${noteStr}`);
|
|
163
172
|
}
|
|
164
173
|
out.push("");
|
|
165
174
|
out.push(`${G}\u2713 Health check complete${RESET}`);
|
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-AE6AICKJ.js";
|
|
40
40
|
import {
|
|
41
41
|
hasSemanticIndex,
|
|
42
42
|
semanticSearch
|
|
@@ -12207,7 +12207,7 @@ ${undoResults.map((r) => ` \u2022 ${r}`).join("\n")}` });
|
|
|
12207
12207
|
case "test": {
|
|
12208
12208
|
this.send({ type: "info", message: "\u{1F9EA} Running tests..." });
|
|
12209
12209
|
try {
|
|
12210
|
-
const { executeTests } = await import("./run-tests-
|
|
12210
|
+
const { executeTests } = await import("./run-tests-KK4QP56Y.js");
|
|
12211
12211
|
const argStr = args.join(" ").trim();
|
|
12212
12212
|
let testArgs = {};
|
|
12213
12213
|
if (argStr) {
|
|
@@ -386,7 +386,7 @@ ${content}`);
|
|
|
386
386
|
}
|
|
387
387
|
}
|
|
388
388
|
async function runTaskMode(config, providers, configManager, topic) {
|
|
389
|
-
const { TaskOrchestrator } = await import("./task-orchestrator-
|
|
389
|
+
const { TaskOrchestrator } = await import("./task-orchestrator-FBW2AGZJ.js");
|
|
390
390
|
const orchestrator = new TaskOrchestrator(config, providers, configManager);
|
|
391
391
|
let interrupted = false;
|
|
392
392
|
const onSigint = () => {
|
package/dist/index.js
CHANGED
|
@@ -16,12 +16,12 @@ import {
|
|
|
16
16
|
saveDevState,
|
|
17
17
|
sessionHasMeaningfulContent,
|
|
18
18
|
setupProxy
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-WTZXHT4E.js";
|
|
20
20
|
import {
|
|
21
21
|
getConfigDirUsage,
|
|
22
22
|
listRecentCrashes,
|
|
23
23
|
writeCrashLog
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-W6FXW2VB.js";
|
|
25
25
|
import {
|
|
26
26
|
CONTENT_ONLY_STREAM_REMINDER,
|
|
27
27
|
HALLUCINATION_CORRECTION_MESSAGE,
|
|
@@ -39,10 +39,10 @@ import {
|
|
|
39
39
|
looksLikeDocumentBody,
|
|
40
40
|
stripPseudoToolCalls,
|
|
41
41
|
stripToolCallReminder
|
|
42
|
-
} from "./chunk-
|
|
42
|
+
} from "./chunk-HEYZ5MOY.js";
|
|
43
43
|
import {
|
|
44
44
|
ConfigManager
|
|
45
|
-
} from "./chunk-
|
|
45
|
+
} from "./chunk-VOJUSKA6.js";
|
|
46
46
|
import {
|
|
47
47
|
ToolExecutor,
|
|
48
48
|
ToolRegistry,
|
|
@@ -61,16 +61,16 @@ import {
|
|
|
61
61
|
spawnAgentContext,
|
|
62
62
|
theme,
|
|
63
63
|
undoStack
|
|
64
|
-
} from "./chunk-
|
|
64
|
+
} from "./chunk-TFCJJ5CP.js";
|
|
65
65
|
import "./chunk-3BICTI5M.js";
|
|
66
66
|
import "./chunk-2DXY7UGF.js";
|
|
67
|
-
import "./chunk-
|
|
67
|
+
import "./chunk-4EOQ52A4.js";
|
|
68
68
|
import {
|
|
69
69
|
getStatsSnapshot,
|
|
70
70
|
getTopFailingTools,
|
|
71
71
|
getTopUsedTools,
|
|
72
72
|
installFlushOnExit
|
|
73
|
-
} from "./chunk-
|
|
73
|
+
} from "./chunk-PADJZBKH.js";
|
|
74
74
|
import "./chunk-2ZD3YTVM.js";
|
|
75
75
|
import {
|
|
76
76
|
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-NQRQJYGV.js";
|
|
97
97
|
import {
|
|
98
98
|
formatGitContextForPrompt,
|
|
99
99
|
getGitContext,
|
|
@@ -1029,60 +1029,107 @@ function createDefaultCommands() {
|
|
|
1029
1029
|
return [
|
|
1030
1030
|
{
|
|
1031
1031
|
name: "help",
|
|
1032
|
-
description: "List all available commands",
|
|
1033
|
-
usage: "/help",
|
|
1034
|
-
execute(
|
|
1035
|
-
const
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1032
|
+
description: "List all available commands (grouped by category)",
|
|
1033
|
+
usage: "/help [search]",
|
|
1034
|
+
execute(args, _ctx) {
|
|
1035
|
+
const filter = args.join(" ").trim().toLowerCase();
|
|
1036
|
+
const groups = [
|
|
1037
|
+
{
|
|
1038
|
+
title: "Chat & model",
|
|
1039
|
+
rows: [
|
|
1040
|
+
["/provider <name>", "Switch AI provider"],
|
|
1041
|
+
["/model <name>", "Switch model"],
|
|
1042
|
+
["/route [on|off|show|test <msg>]", "Smart model routing rules"],
|
|
1043
|
+
["/think [on|off|status]", "Toggle Extended Thinking (deep reasoning)"],
|
|
1044
|
+
["/plan [execute|exit|status]", "Enter/manage Plan Mode (read-only)"],
|
|
1045
|
+
["/yolo [on|off]", "Toggle session auto-approve (skip confirmations)"]
|
|
1046
|
+
]
|
|
1047
|
+
},
|
|
1048
|
+
{
|
|
1049
|
+
title: "Session",
|
|
1050
|
+
rows: [
|
|
1051
|
+
["/clear", "Clear conversation history"],
|
|
1052
|
+
["/compact [instruction]", "Summarize & compress history"],
|
|
1053
|
+
["/session new|list|load <id>", "Manage saved sessions"],
|
|
1054
|
+
["/checkpoint [save|restore|delete] <name>", "Session checkpoints"],
|
|
1055
|
+
["/fork [checkpoint]", "Fork session from checkpoint or current"],
|
|
1056
|
+
["/branch [list|new|switch|delete|rename|diff|cherry-pick]", "Conversation branches"],
|
|
1057
|
+
["/rewind [list|<n>]", "Rewind to message N (restores files too)"],
|
|
1058
|
+
["/export [md|json] [file]", "Export session to file"],
|
|
1059
|
+
["/cost [reset|history]", "Session token usage / cost dashboard"],
|
|
1060
|
+
["/status", "Show current status"]
|
|
1061
|
+
]
|
|
1062
|
+
},
|
|
1063
|
+
{
|
|
1064
|
+
title: "Tools, context & memory",
|
|
1065
|
+
rows: [
|
|
1066
|
+
["/tools", "List all AI tools available"],
|
|
1067
|
+
["/plugins", "Show plugin directory and loaded plugins"],
|
|
1068
|
+
["/mcp [reconnect [id]]", "MCP servers / reconnect disconnected"],
|
|
1069
|
+
["/skill [name|off|list]", "Manage agent skills (reusable prompt packs)"],
|
|
1070
|
+
["/context", "Show or reload hierarchical context layers"],
|
|
1071
|
+
["/add-dir [path|remove]", "Add/remove a directory from AI context"],
|
|
1072
|
+
["/memory [show|add|clear|recall <q>|rebuild|...]", "Persistent memory + chat recall"],
|
|
1073
|
+
["/system <prompt>", "Set system prompt"],
|
|
1074
|
+
["/index [status|rebuild|clear|semantic-*]", "Symbol + semantic code index"],
|
|
1075
|
+
["/commands [reload]", "List/reload custom commands"]
|
|
1076
|
+
]
|
|
1077
|
+
},
|
|
1078
|
+
{
|
|
1079
|
+
title: "Files & code",
|
|
1080
|
+
rows: [
|
|
1081
|
+
["/init [--force]", "Generate AICLI.md by scanning project"],
|
|
1082
|
+
["/scaffold <description>", "Generate project scaffolding with AI"],
|
|
1083
|
+
["/review [--staged] [--detailed]", "AI code review from git diff"],
|
|
1084
|
+
["/security-review [--staged]", "Security vulnerability scan"],
|
|
1085
|
+
["/test [command|filter]", "Run project tests, structured report"],
|
|
1086
|
+
["/diff [--stats]", "All file modifications in this session"],
|
|
1087
|
+
["/undo [list|<n>]", "Undo file ops"],
|
|
1088
|
+
["/search <keyword>", "Search across all session histories"]
|
|
1089
|
+
]
|
|
1090
|
+
},
|
|
1091
|
+
{
|
|
1092
|
+
title: "Clipboard & I/O",
|
|
1093
|
+
rows: [
|
|
1094
|
+
["/copy", "Copy last AI response to clipboard"],
|
|
1095
|
+
["/paste [description]", "Read image from clipboard and send to AI"]
|
|
1096
|
+
]
|
|
1097
|
+
},
|
|
1098
|
+
{
|
|
1099
|
+
title: "System",
|
|
1100
|
+
rows: [
|
|
1101
|
+
["/config [set|get|show]", "Config wizard / get / set / show all"],
|
|
1102
|
+
["/profile [show|set|clear]", "View or edit your identity"],
|
|
1103
|
+
["/security [status|scan|on|off]", "Sensitive-data redaction"],
|
|
1104
|
+
["/doctor", "Health check (API keys, config, MCP, crashes, tool stats)"],
|
|
1105
|
+
["/bug [--copy]", "Generate bug report template"],
|
|
1106
|
+
["/about", "About ai-cli & author info"],
|
|
1107
|
+
["/help [search]", "This help \u2014 pass a term to filter"],
|
|
1108
|
+
["/exit", "Exit"]
|
|
1109
|
+
]
|
|
1110
|
+
}
|
|
1111
|
+
];
|
|
1112
|
+
const filterFn = (row) => !filter || row[0].toLowerCase().includes(filter) || row[1].toLowerCase().includes(filter);
|
|
1113
|
+
const surviving = groups.flatMap((g) => g.rows.filter(filterFn));
|
|
1114
|
+
if (surviving.length === 0) {
|
|
1115
|
+
console.log(`
|
|
1116
|
+
No commands match "${filter}".
|
|
1117
|
+
`);
|
|
1118
|
+
return;
|
|
1119
|
+
}
|
|
1120
|
+
const cmdWidth = Math.min(48, Math.max(...surviving.map((r) => r[0].length)) + 2);
|
|
1085
1121
|
console.log();
|
|
1122
|
+
if (filter) console.log(theme.dim(` Filtering by "${filter}"
|
|
1123
|
+
`));
|
|
1124
|
+
for (const group of groups) {
|
|
1125
|
+
const rows = group.rows.filter(filterFn);
|
|
1126
|
+
if (rows.length === 0) continue;
|
|
1127
|
+
console.log(theme.heading(` ${group.title}`));
|
|
1128
|
+
for (const [cmd, desc] of rows) {
|
|
1129
|
+
console.log(` ${theme.accent(cmd.padEnd(cmdWidth))} ${theme.dim(desc)}`);
|
|
1130
|
+
}
|
|
1131
|
+
console.log();
|
|
1132
|
+
}
|
|
1086
1133
|
}
|
|
1087
1134
|
},
|
|
1088
1135
|
{
|
|
@@ -1530,17 +1577,57 @@ ${text}
|
|
|
1530
1577
|
},
|
|
1531
1578
|
{
|
|
1532
1579
|
name: "tools",
|
|
1533
|
-
description: "List all AI tools
|
|
1534
|
-
usage: "/tools",
|
|
1535
|
-
execute(
|
|
1536
|
-
const
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1580
|
+
description: "List all AI tools, grouped by source",
|
|
1581
|
+
usage: "/tools [search]",
|
|
1582
|
+
execute(args, ctx) {
|
|
1583
|
+
const filter = args.join(" ").trim().toLowerCase();
|
|
1584
|
+
const all = ctx.tools.listAll();
|
|
1585
|
+
const builtin = [];
|
|
1586
|
+
const byServer = /* @__PURE__ */ new Map();
|
|
1587
|
+
for (const t of all) {
|
|
1588
|
+
const name = t.definition.name;
|
|
1589
|
+
if (name.startsWith("mcp__")) {
|
|
1590
|
+
const rest = name.slice(5);
|
|
1591
|
+
const sep = rest.indexOf("__");
|
|
1592
|
+
const serverId = sep > 0 ? rest.slice(0, sep) : "(unknown)";
|
|
1593
|
+
const toolName = sep > 0 ? rest.slice(sep + 2) : rest;
|
|
1594
|
+
if (!byServer.has(serverId)) byServer.set(serverId, []);
|
|
1595
|
+
byServer.get(serverId).push({ name: toolName, description: t.definition.description });
|
|
1596
|
+
} else {
|
|
1597
|
+
builtin.push({ name, description: t.definition.description });
|
|
1598
|
+
}
|
|
1599
|
+
}
|
|
1600
|
+
const matches2 = (row) => !filter || row.name.toLowerCase().includes(filter) || row.description.toLowerCase().includes(filter);
|
|
1601
|
+
const builtinShown = builtin.filter(matches2);
|
|
1602
|
+
const serverShown = [...byServer.entries()].map(([id, rows]) => [id, rows.filter(matches2)]).filter(([, rows]) => rows.length > 0);
|
|
1603
|
+
const total = builtinShown.length + serverShown.reduce((a, [, r]) => a + r.length, 0);
|
|
1604
|
+
if (total === 0) {
|
|
1605
|
+
console.log(filter ? `
|
|
1606
|
+
No tools match "${filter}".
|
|
1607
|
+
` : "\nNo tools registered.\n");
|
|
1608
|
+
return;
|
|
1542
1609
|
}
|
|
1543
1610
|
console.log();
|
|
1611
|
+
if (filter) console.log(theme.dim(` Filtering by "${filter}"
|
|
1612
|
+
`));
|
|
1613
|
+
const allShownRows = [...builtinShown, ...serverShown.flatMap(([, r]) => r)];
|
|
1614
|
+
const nameWidth = Math.min(32, Math.max(...allShownRows.map((r) => r.name.length)) + 2);
|
|
1615
|
+
if (builtinShown.length > 0) {
|
|
1616
|
+
console.log(theme.heading(` Built-in (${builtinShown.length})`));
|
|
1617
|
+
for (const t of builtinShown) {
|
|
1618
|
+
console.log(` ${theme.accent(t.name.padEnd(nameWidth))} ${theme.dim(t.description)}`);
|
|
1619
|
+
}
|
|
1620
|
+
console.log();
|
|
1621
|
+
}
|
|
1622
|
+
for (const [serverId, rows] of serverShown) {
|
|
1623
|
+
console.log(theme.heading(` MCP \xB7 ${serverId} (${rows.length})`));
|
|
1624
|
+
for (const t of rows) {
|
|
1625
|
+
console.log(` ${theme.accent(t.name.padEnd(nameWidth))} ${theme.dim(t.description)}`);
|
|
1626
|
+
}
|
|
1627
|
+
console.log();
|
|
1628
|
+
}
|
|
1629
|
+
console.log(theme.dim(` Total: ${total} tool(s) shown
|
|
1630
|
+
`));
|
|
1544
1631
|
}
|
|
1545
1632
|
},
|
|
1546
1633
|
{
|
|
@@ -1661,7 +1748,7 @@ ${text}
|
|
|
1661
1748
|
const { join: join6 } = await import("path");
|
|
1662
1749
|
const { existsSync: existsSync6 } = await import("fs");
|
|
1663
1750
|
const { getGitRoot: getGitRoot2 } = await import("./git-context-7KIP4X2V.js");
|
|
1664
|
-
const { MCP_PROJECT_CONFIG_NAME: MCP_PROJECT_CONFIG_NAME2 } = await import("./constants-
|
|
1751
|
+
const { MCP_PROJECT_CONFIG_NAME: MCP_PROJECT_CONFIG_NAME2 } = await import("./constants-NXZEOTUT.js");
|
|
1665
1752
|
const { approveProject, hashMcpFile } = await import("./project-trust-IFM7FXEV.js");
|
|
1666
1753
|
const cwd = process.cwd();
|
|
1667
1754
|
const projectRoot = getGitRoot2(cwd) ?? cwd;
|
|
@@ -2722,7 +2809,7 @@ ${hint}` : "")
|
|
|
2722
2809
|
usage: "/test [command|filter]",
|
|
2723
2810
|
async execute(args, ctx) {
|
|
2724
2811
|
try {
|
|
2725
|
-
const { executeTests } = await import("./run-tests-
|
|
2812
|
+
const { executeTests } = await import("./run-tests-YDXGZ57P.js");
|
|
2726
2813
|
const argStr = args.join(" ").trim();
|
|
2727
2814
|
let testArgs = {};
|
|
2728
2815
|
if (argStr) {
|
|
@@ -3123,10 +3210,19 @@ ${text}
|
|
|
3123
3210
|
if (n < 1024 * 1024 * 1024) return `${(n / 1024 / 1024).toFixed(1)} MB`;
|
|
3124
3211
|
return `${(n / 1024 / 1024 / 1024).toFixed(2)} GB`;
|
|
3125
3212
|
};
|
|
3213
|
+
const dirAnnotations = {
|
|
3214
|
+
models: "semantic search model \u2192 /index semantic-clear to free",
|
|
3215
|
+
index: "symbol index \u2192 /index clear to rebuild",
|
|
3216
|
+
history: "conversation history \u2192 auto-pruned after 30 days",
|
|
3217
|
+
logs: "crash logs",
|
|
3218
|
+
"memory-index": "chat memory index \u2192 /memory index-clear to free"
|
|
3219
|
+
};
|
|
3126
3220
|
console.log(theme.heading("Disk Usage (~/.aicli):"));
|
|
3127
3221
|
console.log(` total: ${theme.accent(fmt(usage.totalBytes))}`);
|
|
3128
|
-
for (const e of usage.entries.slice(0,
|
|
3129
|
-
|
|
3222
|
+
for (const e of usage.entries.slice(0, 10)) {
|
|
3223
|
+
const note = dirAnnotations[e.name];
|
|
3224
|
+
const noteStr = note ? ` ${theme.dim("\xB7")} ${theme.dim(note)}` : "";
|
|
3225
|
+
console.log(` ${e.name.padEnd(18)} ${theme.dim(fmt(e.bytes))}${noteStr}`);
|
|
3130
3226
|
}
|
|
3131
3227
|
console.log();
|
|
3132
3228
|
console.log(theme.success("\u2713 Health check complete\n"));
|
|
@@ -5043,12 +5139,8 @@ ${response.content.trim()}
|
|
|
5043
5139
|
}
|
|
5044
5140
|
showPrompt() {
|
|
5045
5141
|
this.refreshPrompt();
|
|
5046
|
-
const
|
|
5047
|
-
|
|
5048
|
-
if (rlDbg.line) {
|
|
5049
|
-
process.stderr.write(`[DBG showPrompt] line=${JSON.stringify(rlDbg.line)}
|
|
5050
|
-
`);
|
|
5051
|
-
}
|
|
5142
|
+
const rlInternal2 = this.rl;
|
|
5143
|
+
rlInternal2.prevRows = 0;
|
|
5052
5144
|
this.rl.prompt();
|
|
5053
5145
|
}
|
|
5054
5146
|
async start() {
|
|
@@ -7075,7 +7167,7 @@ program.command("web").description("Start Web UI server with browser-based chat
|
|
|
7075
7167
|
console.error("Error: Invalid port number. Must be between 1 and 65535.");
|
|
7076
7168
|
process.exit(1);
|
|
7077
7169
|
}
|
|
7078
|
-
const { startWebServer } = await import("./server-
|
|
7170
|
+
const { startWebServer } = await import("./server-ZPEHPZ5I.js");
|
|
7079
7171
|
await startWebServer({ port, host: options.host });
|
|
7080
7172
|
});
|
|
7081
7173
|
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) => {
|
|
@@ -7189,33 +7281,65 @@ ${users.length} user(s) registered (auth enabled):
|
|
|
7189
7281
|
console.error("Available: list, create, delete, reset-password, logout-all, migrate");
|
|
7190
7282
|
process.exit(1);
|
|
7191
7283
|
});
|
|
7192
|
-
program.command("sessions").description("List recent conversation sessions").action(async () => {
|
|
7284
|
+
program.command("sessions").description("List recent conversation sessions").option("-n, --last <n>", "Show only the N most recent sessions", "20").option("--provider <id>", "Filter by provider (e.g. claude, openai)").action(async (options) => {
|
|
7285
|
+
const chalk5 = (await import("chalk")).default;
|
|
7193
7286
|
const config = new ConfigManager();
|
|
7194
7287
|
const sessions = new SessionManager(config);
|
|
7195
|
-
|
|
7288
|
+
let list = sessions.listSessions();
|
|
7289
|
+
if (options.provider) {
|
|
7290
|
+
const filterProv = options.provider.toLowerCase();
|
|
7291
|
+
list = list.filter((s) => s.provider.toLowerCase().includes(filterProv));
|
|
7292
|
+
}
|
|
7293
|
+
const limit = Math.max(1, parseInt(options.last ?? "20", 10) || 20);
|
|
7294
|
+
list = list.slice(0, limit);
|
|
7196
7295
|
if (list.length === 0) {
|
|
7197
|
-
console.log("\
|
|
7296
|
+
console.log("\n" + chalk5.dim("No saved sessions.") + "\n");
|
|
7198
7297
|
return;
|
|
7199
7298
|
}
|
|
7200
|
-
|
|
7201
|
-
|
|
7202
|
-
|
|
7203
|
-
|
|
7204
|
-
|
|
7299
|
+
const relDate = (d) => {
|
|
7300
|
+
const diffMs = Date.now() - d.getTime();
|
|
7301
|
+
const diffMin = Math.floor(diffMs / 6e4);
|
|
7302
|
+
if (diffMin < 1) return "just now";
|
|
7303
|
+
if (diffMin < 60) return `${diffMin}m ago`;
|
|
7304
|
+
const diffH = Math.floor(diffMin / 60);
|
|
7305
|
+
if (diffH < 24) return `${diffH}h ago`;
|
|
7306
|
+
const diffD = Math.floor(diffH / 24);
|
|
7307
|
+
if (diffD < 7) return `${diffD}d ago`;
|
|
7308
|
+
return d.toLocaleDateString();
|
|
7309
|
+
};
|
|
7310
|
+
const truncate = (s, n) => s.length > n ? s.slice(0, n - 1) + "\u2026" : s;
|
|
7311
|
+
console.log("");
|
|
7312
|
+
const hId = chalk5.bold("ID ");
|
|
7313
|
+
const hProvider = chalk5.bold("Provider ");
|
|
7314
|
+
const hModel = chalk5.bold("Model ");
|
|
7315
|
+
const hMsgs = chalk5.bold("Msgs");
|
|
7316
|
+
const hDate = chalk5.bold(" When ");
|
|
7317
|
+
const hTitle = chalk5.bold("Title");
|
|
7318
|
+
console.log(` ${hId} ${hProvider} ${hModel} ${hMsgs} ${hDate} ${hTitle}`);
|
|
7319
|
+
console.log(" " + chalk5.dim("\u2500".repeat(88)));
|
|
7205
7320
|
for (const s of list) {
|
|
7206
|
-
|
|
7207
|
-
|
|
7208
|
-
);
|
|
7209
|
-
|
|
7210
|
-
|
|
7321
|
+
const id = chalk5.cyan(s.id.slice(0, 8));
|
|
7322
|
+
const provider = chalk5.yellow(truncate(s.provider, 11).padEnd(11));
|
|
7323
|
+
const model = chalk5.dim(truncate(s.model, 28).padEnd(28));
|
|
7324
|
+
const msgs = String(s.messageCount).padStart(4);
|
|
7325
|
+
const when = chalk5.dim(relDate(s.updated).padEnd(12));
|
|
7326
|
+
const title = s.title ? s.title : chalk5.dim("(untitled)");
|
|
7327
|
+
console.log(` ${id} ${provider} ${model} ${msgs} ${when} ${truncate(title, 40)}`);
|
|
7328
|
+
}
|
|
7329
|
+
const total = sessions.listSessions().length;
|
|
7330
|
+
const shown = list.length;
|
|
7331
|
+
const footer = shown < total ? chalk5.dim(`
|
|
7332
|
+
Showing ${shown} of ${total} sessions \xB7 use -n <count> or --provider <id> to filter`) : chalk5.dim(`
|
|
7333
|
+
${total} session${total !== 1 ? "s" : ""} total`);
|
|
7334
|
+
console.log(footer + "\n");
|
|
7211
7335
|
});
|
|
7212
7336
|
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) => {
|
|
7213
|
-
const { runDoctorCli } = await import("./doctor-cli-
|
|
7337
|
+
const { runDoctorCli } = await import("./doctor-cli-OG4WKPJV.js");
|
|
7214
7338
|
await runDoctorCli({ json: !!options.json, resetStats: !!options.resetStats });
|
|
7215
7339
|
});
|
|
7216
7340
|
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) => {
|
|
7217
7341
|
try {
|
|
7218
|
-
const batch = await import("./batch-
|
|
7342
|
+
const batch = await import("./batch-DPMBOGTO.js");
|
|
7219
7343
|
switch (action) {
|
|
7220
7344
|
case "submit":
|
|
7221
7345
|
if (!arg) {
|
|
@@ -7258,7 +7382,7 @@ program.command("batch <action> [arg] [arg2]").description("Anthropic Message Ba
|
|
|
7258
7382
|
}
|
|
7259
7383
|
});
|
|
7260
7384
|
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) => {
|
|
7261
|
-
const { startMcpServer } = await import("./server-
|
|
7385
|
+
const { startMcpServer } = await import("./server-HQARN5HJ.js");
|
|
7262
7386
|
await startMcpServer({
|
|
7263
7387
|
allowDestructive: !!options.allowDestructive,
|
|
7264
7388
|
allowOutsideCwd: !!options.allowOutsideCwd,
|
|
@@ -7385,7 +7509,7 @@ program.command("hub [topic]").description("Start multi-agent hub (discuss / bra
|
|
|
7385
7509
|
}),
|
|
7386
7510
|
config.get("customProviders")
|
|
7387
7511
|
);
|
|
7388
|
-
const { startHub } = await import("./hub-
|
|
7512
|
+
const { startHub } = await import("./hub-LNJ7UIT5.js");
|
|
7389
7513
|
await startHub(
|
|
7390
7514
|
{
|
|
7391
7515
|
topic: topic ?? "",
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
ToolRegistry
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-TFCJJ5CP.js";
|
|
5
5
|
import "./chunk-3BICTI5M.js";
|
|
6
6
|
import "./chunk-2DXY7UGF.js";
|
|
7
|
-
import "./chunk-
|
|
7
|
+
import "./chunk-4EOQ52A4.js";
|
|
8
8
|
import {
|
|
9
9
|
getDangerLevel,
|
|
10
10
|
runTool,
|
|
11
11
|
schemaToJsonSchema
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-PADJZBKH.js";
|
|
13
13
|
import "./chunk-2ZD3YTVM.js";
|
|
14
14
|
import {
|
|
15
15
|
VERSION
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-NQRQJYGV.js";
|
|
17
17
|
import "./chunk-4BKXL7SM.js";
|
|
18
18
|
import "./chunk-7ZJN4KLV.js";
|
|
19
19
|
import "./chunk-KHYD3WXE.js";
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
loadDevState,
|
|
15
15
|
persistToolRound,
|
|
16
16
|
setupProxy
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-WTZXHT4E.js";
|
|
18
18
|
import {
|
|
19
19
|
CONTENT_ONLY_STREAM_REMINDER,
|
|
20
20
|
HALLUCINATION_CORRECTION_MESSAGE,
|
|
@@ -28,10 +28,10 @@ import {
|
|
|
28
28
|
looksLikeDocumentBody,
|
|
29
29
|
stripPseudoToolCalls,
|
|
30
30
|
stripToolCallReminder
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-HEYZ5MOY.js";
|
|
32
32
|
import {
|
|
33
33
|
ConfigManager
|
|
34
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-VOJUSKA6.js";
|
|
35
35
|
import {
|
|
36
36
|
ToolExecutor,
|
|
37
37
|
ToolRegistry,
|
|
@@ -49,14 +49,14 @@ import {
|
|
|
49
49
|
spawnAgentContext,
|
|
50
50
|
truncateOutput,
|
|
51
51
|
undoStack
|
|
52
|
-
} from "./chunk-
|
|
52
|
+
} from "./chunk-TFCJJ5CP.js";
|
|
53
53
|
import "./chunk-3BICTI5M.js";
|
|
54
54
|
import "./chunk-2DXY7UGF.js";
|
|
55
|
-
import "./chunk-
|
|
55
|
+
import "./chunk-4EOQ52A4.js";
|
|
56
56
|
import {
|
|
57
57
|
getDangerLevel,
|
|
58
58
|
runTool
|
|
59
|
-
} from "./chunk-
|
|
59
|
+
} from "./chunk-PADJZBKH.js";
|
|
60
60
|
import "./chunk-2ZD3YTVM.js";
|
|
61
61
|
import {
|
|
62
62
|
AGENTIC_BEHAVIOR_GUIDELINE,
|
|
@@ -76,7 +76,7 @@ import {
|
|
|
76
76
|
SKILLS_DIR_NAME,
|
|
77
77
|
VERSION,
|
|
78
78
|
buildUserIdentityPrompt
|
|
79
|
-
} from "./chunk-
|
|
79
|
+
} from "./chunk-NQRQJYGV.js";
|
|
80
80
|
import {
|
|
81
81
|
formatGitContextForPrompt,
|
|
82
82
|
getGitContext,
|
|
@@ -2460,7 +2460,7 @@ ${undoResults.map((r) => ` \u2022 ${r}`).join("\n")}` });
|
|
|
2460
2460
|
case "test": {
|
|
2461
2461
|
this.send({ type: "info", message: "\u{1F9EA} Running tests..." });
|
|
2462
2462
|
try {
|
|
2463
|
-
const { executeTests } = await import("./run-tests-
|
|
2463
|
+
const { executeTests } = await import("./run-tests-YDXGZ57P.js");
|
|
2464
2464
|
const argStr = args.join(" ").trim();
|
|
2465
2465
|
let testArgs = {};
|
|
2466
2466
|
if (argStr) {
|
|
@@ -3,18 +3,18 @@ import {
|
|
|
3
3
|
ToolRegistry,
|
|
4
4
|
googleSearchContext,
|
|
5
5
|
truncateOutput
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-TFCJJ5CP.js";
|
|
7
7
|
import "./chunk-3BICTI5M.js";
|
|
8
8
|
import "./chunk-2DXY7UGF.js";
|
|
9
|
-
import "./chunk-
|
|
9
|
+
import "./chunk-4EOQ52A4.js";
|
|
10
10
|
import {
|
|
11
11
|
getDangerLevel,
|
|
12
12
|
runTool
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-PADJZBKH.js";
|
|
14
14
|
import "./chunk-2ZD3YTVM.js";
|
|
15
15
|
import {
|
|
16
16
|
SUBAGENT_ALLOWED_TOOLS
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-NQRQJYGV.js";
|
|
18
18
|
import "./chunk-4BKXL7SM.js";
|
|
19
19
|
import "./chunk-7ZJN4KLV.js";
|
|
20
20
|
import "./chunk-KHYD3WXE.js";
|