jinzd-ai-cli 0.4.87 → 0.4.89
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-FNHSLCMV.js → batch-UMQYXVKG.js} +2 -2
- package/dist/chat-index-W2UZ34ZI.js +18 -0
- package/dist/{chunk-PFYAAX2S.js → chunk-2DXY7UGF.js} +16 -63
- package/dist/{chunk-Y75YPB5F.js → chunk-3O3U3L5W.js} +19 -1
- package/dist/{chunk-AQX3GYRD.js → chunk-4WVXTADR.js} +1 -1
- package/dist/{chunk-SP6RFAKW.js → chunk-ABPT6XCI.js} +76 -3
- package/dist/chunk-ANYYM4CF.js +460 -0
- package/dist/{chunk-BAOIXQHD.js → chunk-E7YC4GWV.js} +1 -1
- package/dist/{chunk-3DGNN4RM.js → chunk-FVRLRIKC.js} +28 -3
- package/dist/chunk-KHYD3WXE.js +52 -0
- package/dist/{chunk-CQQQFNND.js → chunk-KJLJPUY2.js} +6 -4
- package/dist/{chunk-TFLBQRQM.js → chunk-TKYNTXKB.js} +1 -1
- package/dist/electron-server.js +310 -14
- package/dist/{hub-HEC4GYKR.js → hub-4P2BH57W.js} +1 -1
- package/dist/index.js +247 -17
- package/dist/{run-tests-7PTRRO4D.js → run-tests-5TO5G3YH.js} +2 -2
- package/dist/{run-tests-P7GIZ6UH.js → run-tests-TGGXTOFF.js} +1 -1
- package/dist/{semantic-ICJ536BG.js → semantic-YDRPPVWK.js} +3 -2
- package/dist/{server-TRTN3RVO.js → server-NG7AEAD5.js} +15 -13
- package/dist/{server-GJRBVTTQ.js → server-U2BBLP4Y.js} +7 -5
- package/dist/{task-orchestrator-36SFPCP7.js → task-orchestrator-ODU45UQG.js} +7 -5
- package/dist/{vector-store-YTVHACBV.js → vector-store-QARQ2P6D.js} +2 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -30,10 +30,10 @@ import {
|
|
|
30
30
|
saveDevState,
|
|
31
31
|
sessionHasMeaningfulContent,
|
|
32
32
|
setupProxy
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-FVRLRIKC.js";
|
|
34
34
|
import {
|
|
35
35
|
ConfigManager
|
|
36
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-3O3U3L5W.js";
|
|
37
37
|
import {
|
|
38
38
|
ToolExecutor,
|
|
39
39
|
ToolRegistry,
|
|
@@ -49,16 +49,25 @@ import {
|
|
|
49
49
|
spawnAgentContext,
|
|
50
50
|
theme,
|
|
51
51
|
undoStack
|
|
52
|
-
} from "./chunk-
|
|
52
|
+
} from "./chunk-ABPT6XCI.js";
|
|
53
53
|
import "./chunk-2ZD3YTVM.js";
|
|
54
54
|
import {
|
|
55
55
|
fileCheckpoints
|
|
56
56
|
} from "./chunk-4BKXL7SM.js";
|
|
57
|
+
import {
|
|
58
|
+
DEFAULT_PATTERNS,
|
|
59
|
+
buildChatIndex,
|
|
60
|
+
clearChatIndex,
|
|
61
|
+
getChatIndexStatus,
|
|
62
|
+
scanString,
|
|
63
|
+
searchChatMemory
|
|
64
|
+
} from "./chunk-ANYYM4CF.js";
|
|
57
65
|
import "./chunk-NHNWUBXB.js";
|
|
58
|
-
import "./chunk-
|
|
66
|
+
import "./chunk-KJLJPUY2.js";
|
|
59
67
|
import "./chunk-6VRJGH25.js";
|
|
60
|
-
import "./chunk-
|
|
61
|
-
import "./chunk-
|
|
68
|
+
import "./chunk-2DXY7UGF.js";
|
|
69
|
+
import "./chunk-KHYD3WXE.js";
|
|
70
|
+
import "./chunk-TKYNTXKB.js";
|
|
62
71
|
import {
|
|
63
72
|
AGENTIC_BEHAVIOR_GUIDELINE,
|
|
64
73
|
AUTHOR,
|
|
@@ -80,7 +89,7 @@ import {
|
|
|
80
89
|
SKILLS_DIR_NAME,
|
|
81
90
|
VERSION,
|
|
82
91
|
buildUserIdentityPrompt
|
|
83
|
-
} from "./chunk-
|
|
92
|
+
} from "./chunk-E7YC4GWV.js";
|
|
84
93
|
|
|
85
94
|
// src/index.ts
|
|
86
95
|
import { program } from "commander";
|
|
@@ -980,6 +989,7 @@ function createDefaultCommands() {
|
|
|
980
989
|
" /fork [checkpoint] - Fork session from checkpoint or current position",
|
|
981
990
|
" /branch [list|new|switch|delete|rename|diff|cherry-pick] - Manage conversation branches (fork tree, cross-branch picks)",
|
|
982
991
|
" /index [status|rebuild|clear|semantic-rebuild|semantic-clear] - Symbol + semantic index (find_symbol / search_code)",
|
|
992
|
+
" /security [status|scan|on|off] - Sensitive-data redaction status & session scan",
|
|
983
993
|
" /yolo [on|off] - Toggle session auto-approve (skip confirmations)",
|
|
984
994
|
" /exit - Exit"
|
|
985
995
|
] : [];
|
|
@@ -2467,7 +2477,7 @@ ${hint}` : "")
|
|
|
2467
2477
|
const root = process.cwd();
|
|
2468
2478
|
const { loadIndex, clearIndex } = await import("./store-S24SPPDZ.js");
|
|
2469
2479
|
const { indexProject } = await import("./indexer-C7QYYHSZ.js");
|
|
2470
|
-
const { loadVectorStore, clearVectorStore } = await import("./vector-store-
|
|
2480
|
+
const { loadVectorStore, clearVectorStore } = await import("./vector-store-QARQ2P6D.js");
|
|
2471
2481
|
if (sub === "status") {
|
|
2472
2482
|
const idx = loadIndex(root);
|
|
2473
2483
|
const vec = loadVectorStore(root);
|
|
@@ -2526,7 +2536,7 @@ ${hint}` : "")
|
|
|
2526
2536
|
}
|
|
2527
2537
|
console.log(theme.dim(` Building semantic index for ${idx.symbolCount} symbols\u2026`));
|
|
2528
2538
|
console.log(theme.dim(" (First run downloads ~117 MB embedding model to ~/.aicli/models/)"));
|
|
2529
|
-
const { rebuildSemanticIndex } = await import("./semantic-
|
|
2539
|
+
const { rebuildSemanticIndex } = await import("./semantic-YDRPPVWK.js");
|
|
2530
2540
|
try {
|
|
2531
2541
|
const stats = await rebuildSemanticIndex(root, {
|
|
2532
2542
|
onProgress: (done, total) => {
|
|
@@ -2592,7 +2602,7 @@ ${hint}` : "")
|
|
|
2592
2602
|
usage: "/test [command|filter]",
|
|
2593
2603
|
async execute(args, ctx) {
|
|
2594
2604
|
try {
|
|
2595
|
-
const { executeTests } = await import("./run-tests-
|
|
2605
|
+
const { executeTests } = await import("./run-tests-5TO5G3YH.js");
|
|
2596
2606
|
const argStr = args.join(" ").trim();
|
|
2597
2607
|
let testArgs = {};
|
|
2598
2608
|
if (argStr) {
|
|
@@ -2747,11 +2757,92 @@ ${hint}` : "")
|
|
|
2747
2757
|
// ── /memory ────────────────────────────────────────────────────────────────
|
|
2748
2758
|
{
|
|
2749
2759
|
name: "memory",
|
|
2750
|
-
description: "
|
|
2751
|
-
usage: "/memory [show|add <text>|clear|path]",
|
|
2752
|
-
execute(args, ctx) {
|
|
2760
|
+
description: "Persistent memory (memory.md) + chat memory recall index (v0.4.89+)",
|
|
2761
|
+
usage: "/memory [show|add <text>|clear|path|rebuild|refresh|status|recall <query>|index-clear]",
|
|
2762
|
+
async execute(args, ctx) {
|
|
2753
2763
|
const memoryFile = join2(ctx.config.getConfigDir(), MEMORY_FILE_NAME);
|
|
2754
2764
|
const sub = args[0] ?? "show";
|
|
2765
|
+
if (sub === "rebuild" || sub === "refresh") {
|
|
2766
|
+
const full = sub === "rebuild";
|
|
2767
|
+
ctx.renderer.printInfo(
|
|
2768
|
+
full ? "\u{1F9E0} Rebuilding chat memory index from scratch (this may take a while on first run \u2014 embedding model ~117 MB)\u2026" : "\u{1F9E0} Refreshing chat memory index (incremental)\u2026"
|
|
2769
|
+
);
|
|
2770
|
+
try {
|
|
2771
|
+
let lastStage = "";
|
|
2772
|
+
const stats = await buildChatIndex({
|
|
2773
|
+
full,
|
|
2774
|
+
onProgress: (p) => {
|
|
2775
|
+
if (p.stage !== lastStage) {
|
|
2776
|
+
lastStage = p.stage;
|
|
2777
|
+
if (p.stage === "embedding" && p.total) {
|
|
2778
|
+
process.stdout.write(theme.dim(` embedding ${p.total} chunk(s)\u2026
|
|
2779
|
+
`));
|
|
2780
|
+
} else if (p.stage !== "done") {
|
|
2781
|
+
process.stdout.write(theme.dim(` ${p.stage}\u2026
|
|
2782
|
+
`));
|
|
2783
|
+
}
|
|
2784
|
+
}
|
|
2785
|
+
}
|
|
2786
|
+
});
|
|
2787
|
+
ctx.renderer.printSuccess(
|
|
2788
|
+
`\u2713 Chat index: ${stats.chunksTotal} chunks (${stats.chunksAdded} new, ${stats.chunksRemoved} removed) across ${stats.sessionsIndexed + stats.sessionsSkipped} sessions (${stats.sessionsIndexed} re-indexed, ${stats.sessionsSkipped} cached) in ${stats.durationMs}ms`
|
|
2789
|
+
);
|
|
2790
|
+
} catch (err) {
|
|
2791
|
+
ctx.renderer.renderError(`Rebuild failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
2792
|
+
}
|
|
2793
|
+
return;
|
|
2794
|
+
}
|
|
2795
|
+
if (sub === "status") {
|
|
2796
|
+
const s = getChatIndexStatus();
|
|
2797
|
+
console.log(theme.heading("\n\u{1F9E0} Chat Memory Index"));
|
|
2798
|
+
if (!s.exists) {
|
|
2799
|
+
console.log(theme.dim(" not built yet \u2014 run /memory rebuild\n"));
|
|
2800
|
+
return;
|
|
2801
|
+
}
|
|
2802
|
+
const mb = (n) => `${(n / 1024 / 1024).toFixed(2)} MB`;
|
|
2803
|
+
console.log(` chunks : ${s.chunks}`);
|
|
2804
|
+
console.log(` sessions : ${s.sessions}`);
|
|
2805
|
+
console.log(` built : ${s.built?.replace("T", " ").slice(0, 19) ?? "-"}`);
|
|
2806
|
+
console.log(` model : ${s.model ?? "-"}`);
|
|
2807
|
+
console.log(` vec file : ${mb(s.vecFileSizeBytes)}`);
|
|
2808
|
+
console.log(` chunks file : ${mb(s.chunksFileSizeBytes)}`);
|
|
2809
|
+
console.log();
|
|
2810
|
+
return;
|
|
2811
|
+
}
|
|
2812
|
+
if (sub === "recall") {
|
|
2813
|
+
const query = args.slice(1).join(" ").trim();
|
|
2814
|
+
if (!query) {
|
|
2815
|
+
ctx.renderer.printInfo("Usage: /memory recall <query>");
|
|
2816
|
+
return;
|
|
2817
|
+
}
|
|
2818
|
+
try {
|
|
2819
|
+
const hits = await searchChatMemory(query, { topK: 5, minScore: 0.2 });
|
|
2820
|
+
if (hits.length === 0) {
|
|
2821
|
+
console.log(theme.warning(` No memories matched "${query}" above score 0.20.`));
|
|
2822
|
+
console.log();
|
|
2823
|
+
return;
|
|
2824
|
+
}
|
|
2825
|
+
console.log(theme.heading(`
|
|
2826
|
+
\u{1F9E0} Memory recall for "${query}" \u2014 ${hits.length} hit(s):
|
|
2827
|
+
`));
|
|
2828
|
+
for (const [i, h] of hits.entries()) {
|
|
2829
|
+
const ts = h.chunk.timestamp.slice(0, 16).replace("T", " ");
|
|
2830
|
+
const title = h.chunk.sessionTitle ?? h.chunk.sessionId.slice(0, 8);
|
|
2831
|
+
console.log(theme.accent(` [${i + 1}] ${ts} \xB7 ${title} \xB7 score ${h.score.toFixed(3)}`));
|
|
2832
|
+
const body = h.chunk.text.length > 400 ? h.chunk.text.slice(0, 400) + "\u2026" : h.chunk.text;
|
|
2833
|
+
console.log(theme.dim(" ") + body.replace(/\n/g, "\n "));
|
|
2834
|
+
console.log();
|
|
2835
|
+
}
|
|
2836
|
+
} catch (err) {
|
|
2837
|
+
ctx.renderer.renderError(`Recall failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
2838
|
+
}
|
|
2839
|
+
return;
|
|
2840
|
+
}
|
|
2841
|
+
if (sub === "index-clear") {
|
|
2842
|
+
clearChatIndex();
|
|
2843
|
+
ctx.renderer.printSuccess("Chat memory index cleared (memory.md untouched).");
|
|
2844
|
+
return;
|
|
2845
|
+
}
|
|
2755
2846
|
if (sub === "show" || sub === "view") {
|
|
2756
2847
|
if (!existsSync2(memoryFile)) {
|
|
2757
2848
|
ctx.renderer.printInfo("Memory is empty (memory.md not found)");
|
|
@@ -3031,6 +3122,94 @@ Summary: ${fileMap.size} file(s) \u2014 ${newFiles} new, ${modifiedFiles} modifi
|
|
|
3031
3122
|
}
|
|
3032
3123
|
}
|
|
3033
3124
|
},
|
|
3125
|
+
{
|
|
3126
|
+
name: "security",
|
|
3127
|
+
description: "Sensitive-data redaction \u2014 status, scan sessions, toggle on/off",
|
|
3128
|
+
usage: "/security [status|scan [--all]|on|off]",
|
|
3129
|
+
async execute(args, ctx) {
|
|
3130
|
+
const sub = (args[0] || "status").toLowerCase();
|
|
3131
|
+
const security = ctx.config.get("security") ?? {
|
|
3132
|
+
redactOnSave: true,
|
|
3133
|
+
redactOnSend: false,
|
|
3134
|
+
mode: "default",
|
|
3135
|
+
customPatterns: []
|
|
3136
|
+
};
|
|
3137
|
+
if (sub === "status") {
|
|
3138
|
+
console.log(theme.heading(" \u{1F6E1} Security / Redaction"));
|
|
3139
|
+
console.log(` redactOnSave : ${security.redactOnSave ? theme.success("on") : theme.warning("off")}`);
|
|
3140
|
+
console.log(` redactOnSend : ${security.redactOnSend ? theme.success("on") : theme.dim("off")}`);
|
|
3141
|
+
console.log(` mode : ${security.mode}`);
|
|
3142
|
+
console.log(` patterns : ${DEFAULT_PATTERNS.length} built-in + ${security.customPatterns?.length ?? 0} custom`);
|
|
3143
|
+
console.log(` last save : ${ctx.sessions.lastRedactionHits} hit(s) redacted`);
|
|
3144
|
+
console.log();
|
|
3145
|
+
console.log(theme.dim(" /security scan \u2014 scan current session for leaks"));
|
|
3146
|
+
console.log(theme.dim(" /security scan --all \u2014 scan all saved sessions"));
|
|
3147
|
+
console.log(theme.dim(" /security on|off \u2014 toggle redactOnSave"));
|
|
3148
|
+
console.log();
|
|
3149
|
+
return;
|
|
3150
|
+
}
|
|
3151
|
+
if (sub === "on" || sub === "off") {
|
|
3152
|
+
ctx.config.set("security", { ...security, redactOnSave: sub === "on" });
|
|
3153
|
+
console.log(theme.success(` \u2713 redactOnSave = ${sub}`));
|
|
3154
|
+
console.log();
|
|
3155
|
+
return;
|
|
3156
|
+
}
|
|
3157
|
+
if (sub === "scan") {
|
|
3158
|
+
const scanAll = args.includes("--all");
|
|
3159
|
+
const opts = { customRegexes: security.customPatterns ?? [] };
|
|
3160
|
+
let totalHits = 0;
|
|
3161
|
+
let filesWithHits = 0;
|
|
3162
|
+
if (scanAll) {
|
|
3163
|
+
const metas = ctx.sessions.listSessions();
|
|
3164
|
+
console.log(theme.info(` Scanning ${metas.length} session(s)\u2026`));
|
|
3165
|
+
const { readFileSync: readFileSync5 } = await import("fs");
|
|
3166
|
+
const { join: join6 } = await import("path");
|
|
3167
|
+
const historyDir = ctx.config.getHistoryDir();
|
|
3168
|
+
for (const m of metas) {
|
|
3169
|
+
try {
|
|
3170
|
+
const content = readFileSync5(join6(historyDir, `${m.id}.json`), "utf-8");
|
|
3171
|
+
const hits2 = scanString(content, opts);
|
|
3172
|
+
if (hits2.length) {
|
|
3173
|
+
filesWithHits++;
|
|
3174
|
+
totalHits += hits2.length;
|
|
3175
|
+
const kinds = [...new Set(hits2.map((h) => h.kind))].join(", ");
|
|
3176
|
+
console.log(` ${theme.warning("\u26A0")} ${m.id.slice(0, 8)}\u2026 ${theme.dim(m.title || "")} \u2014 ${hits2.length} hit(s) [${kinds}]`);
|
|
3177
|
+
}
|
|
3178
|
+
} catch {
|
|
3179
|
+
}
|
|
3180
|
+
}
|
|
3181
|
+
console.log();
|
|
3182
|
+
console.log(
|
|
3183
|
+
totalHits === 0 ? theme.success(` \u2713 No secrets found in ${metas.length} session(s).`) : theme.warning(` Found ${totalHits} hit(s) across ${filesWithHits} session(s). Re-save them with redactOnSave=on to sanitize.`)
|
|
3184
|
+
);
|
|
3185
|
+
console.log();
|
|
3186
|
+
return;
|
|
3187
|
+
}
|
|
3188
|
+
const current = ctx.sessions.current;
|
|
3189
|
+
if (!current) {
|
|
3190
|
+
console.log(theme.warning(" No active session to scan."));
|
|
3191
|
+
console.log();
|
|
3192
|
+
return;
|
|
3193
|
+
}
|
|
3194
|
+
const json = JSON.stringify(current.toJSON());
|
|
3195
|
+
const hits = scanString(json, opts);
|
|
3196
|
+
if (hits.length === 0) {
|
|
3197
|
+
console.log(theme.success(" \u2713 Current session: no secrets detected."));
|
|
3198
|
+
} else {
|
|
3199
|
+
const byKind = /* @__PURE__ */ new Map();
|
|
3200
|
+
for (const h of hits) byKind.set(h.kind, (byKind.get(h.kind) ?? 0) + 1);
|
|
3201
|
+
console.log(theme.warning(` \u26A0 Current session: ${hits.length} hit(s)`));
|
|
3202
|
+
for (const [k, n] of byKind) console.log(` \u2022 ${k}: ${n}`);
|
|
3203
|
+
console.log(theme.dim(" (save the session to replace them with placeholders)"));
|
|
3204
|
+
}
|
|
3205
|
+
console.log();
|
|
3206
|
+
return;
|
|
3207
|
+
}
|
|
3208
|
+
console.log(theme.error(` Unknown subcommand: ${sub}`));
|
|
3209
|
+
console.log(theme.dim(" Usage: /security [status|scan [--all]|on|off]"));
|
|
3210
|
+
console.log();
|
|
3211
|
+
}
|
|
3212
|
+
},
|
|
3034
3213
|
{
|
|
3035
3214
|
name: "yolo",
|
|
3036
3215
|
description: "Toggle session auto-approve (skip all confirmations)",
|
|
@@ -4032,6 +4211,12 @@ var Repl = class {
|
|
|
4032
4211
|
toolExecutor;
|
|
4033
4212
|
/** 运行时有效的 system prompt(合并了项目上下文 + 用户配置) */
|
|
4034
4213
|
activeSystemPrompt;
|
|
4214
|
+
/** v0.4.89: cached chat memory index status, refreshed at startup and after /memory rebuild. */
|
|
4215
|
+
chatMemoryStatus = {
|
|
4216
|
+
exists: false,
|
|
4217
|
+
chunks: 0,
|
|
4218
|
+
sessions: 0
|
|
4219
|
+
};
|
|
4035
4220
|
/** 当前加载的层级上下文(全局/项目/子目录) */
|
|
4036
4221
|
contextLayers = [];
|
|
4037
4222
|
/** 本次会话累计 token 用量 */
|
|
@@ -4489,6 +4674,23 @@ You have a maximum of ${effectiveMaxRounds} tool call rounds per conversation tu
|
|
|
4489
4674
|
if (memory) stableParts.push(`# Persistent Memory
|
|
4490
4675
|
|
|
4491
4676
|
${memory.content}`);
|
|
4677
|
+
if (this.chatMemoryStatus.exists && this.chatMemoryStatus.chunks > 0) {
|
|
4678
|
+
stableParts.push(
|
|
4679
|
+
`# Long-term Memory Recall
|
|
4680
|
+
|
|
4681
|
+
You have a semantic index over ${this.chatMemoryStatus.chunks} chunks from ${this.chatMemoryStatus.sessions} past sessions. Call \`recall_memory({ query: "\u2026" })\` whenever:
|
|
4682
|
+
- The user references something that may have been discussed before ("\u4E0A\u6B21", "\u4E4B\u524D", "last time", "remember")
|
|
4683
|
+
- A pronoun/demonstrative is ambiguous ("\u90A3\u4E2A", "it", "that project") and current context doesn't resolve it
|
|
4684
|
+
- The user asks about preferences, decisions, or conventions that might have been established earlier
|
|
4685
|
+
- Continuity across sessions would clearly help (e.g. user returns after days to the same project)
|
|
4686
|
+
|
|
4687
|
+
Do NOT call it for:
|
|
4688
|
+
- Queries fully answerable from the current conversation
|
|
4689
|
+
- Obviously-new topics with no continuity signal
|
|
4690
|
+
|
|
4691
|
+
Prefer recall over asking the user "can you remind me". When a hit is relevant, cite it briefly ("we established last session that\u2026") so the user sees you remembered.`
|
|
4692
|
+
);
|
|
4693
|
+
}
|
|
4492
4694
|
const devState = loadDevState();
|
|
4493
4695
|
if (devState) {
|
|
4494
4696
|
stableParts.push(
|
|
@@ -4822,6 +5024,34 @@ Session '${this.resumeSessionId}' not found.
|
|
|
4822
5024
|
} catch {
|
|
4823
5025
|
}
|
|
4824
5026
|
})();
|
|
5027
|
+
void (async () => {
|
|
5028
|
+
try {
|
|
5029
|
+
const { getChatIndexStatus: getChatIndexStatus2, buildChatIndex: buildChatIndex2 } = await import("./chat-index-W2UZ34ZI.js");
|
|
5030
|
+
const initial = getChatIndexStatus2();
|
|
5031
|
+
this.chatMemoryStatus = {
|
|
5032
|
+
exists: initial.exists,
|
|
5033
|
+
chunks: initial.chunks,
|
|
5034
|
+
sessions: initial.sessions
|
|
5035
|
+
};
|
|
5036
|
+
if (!initial.exists) return;
|
|
5037
|
+
const stats = await buildChatIndex2({ full: false });
|
|
5038
|
+
const after = getChatIndexStatus2();
|
|
5039
|
+
this.chatMemoryStatus = {
|
|
5040
|
+
exists: after.exists,
|
|
5041
|
+
chunks: after.chunks,
|
|
5042
|
+
sessions: after.sessions
|
|
5043
|
+
};
|
|
5044
|
+
if (stats.sessionsIndexed > 0 || stats.chunksRemoved > 0) {
|
|
5045
|
+
process.stdout.write(
|
|
5046
|
+
theme.dim(
|
|
5047
|
+
` \u{1F9E0} Chat memory refreshed: ${stats.chunksAdded} new \xB7 ${stats.chunksRemoved} removed \xB7 ${stats.chunksTotal} total
|
|
5048
|
+
`
|
|
5049
|
+
)
|
|
5050
|
+
);
|
|
5051
|
+
}
|
|
5052
|
+
} catch {
|
|
5053
|
+
}
|
|
5054
|
+
})();
|
|
4825
5055
|
const globalMcpServers = this.config.get("mcpServers") ?? {};
|
|
4826
5056
|
const projectMcpResult = this.loadProjectMcpConfig();
|
|
4827
5057
|
const projectMcpServers = projectMcpResult?.servers ?? {};
|
|
@@ -6485,7 +6715,7 @@ program.command("web").description("Start Web UI server with browser-based chat
|
|
|
6485
6715
|
console.error("Error: Invalid port number. Must be between 1 and 65535.");
|
|
6486
6716
|
process.exit(1);
|
|
6487
6717
|
}
|
|
6488
|
-
const { startWebServer } = await import("./server-
|
|
6718
|
+
const { startWebServer } = await import("./server-NG7AEAD5.js");
|
|
6489
6719
|
await startWebServer({ port, host: options.host });
|
|
6490
6720
|
});
|
|
6491
6721
|
program.command("user [action] [username]").description("Manage Web UI users (list | create <name> | delete <name> | reset-password <name> | migrate <name>)").action(async (action, username) => {
|
|
@@ -6608,7 +6838,7 @@ program.command("sessions").description("List recent conversation sessions").act
|
|
|
6608
6838
|
});
|
|
6609
6839
|
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) => {
|
|
6610
6840
|
try {
|
|
6611
|
-
const batch = await import("./batch-
|
|
6841
|
+
const batch = await import("./batch-UMQYXVKG.js");
|
|
6612
6842
|
switch (action) {
|
|
6613
6843
|
case "submit":
|
|
6614
6844
|
if (!arg) {
|
|
@@ -6651,7 +6881,7 @@ program.command("batch <action> [arg] [arg2]").description("Anthropic Message Ba
|
|
|
6651
6881
|
}
|
|
6652
6882
|
});
|
|
6653
6883
|
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) => {
|
|
6654
|
-
const { startMcpServer } = await import("./server-
|
|
6884
|
+
const { startMcpServer } = await import("./server-U2BBLP4Y.js");
|
|
6655
6885
|
await startMcpServer({
|
|
6656
6886
|
allowDestructive: !!options.allowDestructive,
|
|
6657
6887
|
allowOutsideCwd: !!options.allowOutsideCwd,
|
|
@@ -6778,7 +7008,7 @@ program.command("hub [topic]").description("Start multi-agent hub (discuss / bra
|
|
|
6778
7008
|
}),
|
|
6779
7009
|
config.get("customProviders")
|
|
6780
7010
|
);
|
|
6781
|
-
const { startHub } = await import("./hub-
|
|
7011
|
+
const { startHub } = await import("./hub-4P2BH57W.js");
|
|
6782
7012
|
await startHub(
|
|
6783
7013
|
{
|
|
6784
7014
|
topic: topic ?? "",
|
|
@@ -5,9 +5,10 @@ import {
|
|
|
5
5
|
pathTokens,
|
|
6
6
|
rebuildSemanticIndex,
|
|
7
7
|
semanticSearch
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-KJLJPUY2.js";
|
|
9
9
|
import "./chunk-6VRJGH25.js";
|
|
10
|
-
import "./chunk-
|
|
10
|
+
import "./chunk-2DXY7UGF.js";
|
|
11
|
+
import "./chunk-KHYD3WXE.js";
|
|
11
12
|
export {
|
|
12
13
|
buildEmbeddingText,
|
|
13
14
|
hasSemanticIndex,
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
AuthManager
|
|
4
|
+
} from "./chunk-BYNY5JPB.js";
|
|
2
5
|
import {
|
|
3
6
|
HALLUCINATION_CORRECTION_MESSAGE,
|
|
4
7
|
McpManager,
|
|
@@ -20,10 +23,10 @@ import {
|
|
|
20
23
|
persistToolRound,
|
|
21
24
|
rebuildExtraMessages,
|
|
22
25
|
setupProxy
|
|
23
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-FVRLRIKC.js";
|
|
24
27
|
import {
|
|
25
28
|
ConfigManager
|
|
26
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-3O3U3L5W.js";
|
|
27
30
|
import {
|
|
28
31
|
ToolExecutor,
|
|
29
32
|
ToolRegistry,
|
|
@@ -41,14 +44,16 @@ import {
|
|
|
41
44
|
spawnAgentContext,
|
|
42
45
|
truncateOutput,
|
|
43
46
|
undoStack
|
|
44
|
-
} from "./chunk-
|
|
47
|
+
} from "./chunk-ABPT6XCI.js";
|
|
45
48
|
import "./chunk-2ZD3YTVM.js";
|
|
46
49
|
import "./chunk-4BKXL7SM.js";
|
|
50
|
+
import "./chunk-ANYYM4CF.js";
|
|
47
51
|
import "./chunk-NHNWUBXB.js";
|
|
48
|
-
import "./chunk-
|
|
52
|
+
import "./chunk-KJLJPUY2.js";
|
|
49
53
|
import "./chunk-6VRJGH25.js";
|
|
50
|
-
import "./chunk-
|
|
51
|
-
import "./chunk-
|
|
54
|
+
import "./chunk-2DXY7UGF.js";
|
|
55
|
+
import "./chunk-KHYD3WXE.js";
|
|
56
|
+
import "./chunk-TKYNTXKB.js";
|
|
52
57
|
import {
|
|
53
58
|
AGENTIC_BEHAVIOR_GUIDELINE,
|
|
54
59
|
AUTHOR,
|
|
@@ -67,10 +72,7 @@ import {
|
|
|
67
72
|
SKILLS_DIR_NAME,
|
|
68
73
|
VERSION,
|
|
69
74
|
buildUserIdentityPrompt
|
|
70
|
-
} from "./chunk-
|
|
71
|
-
import {
|
|
72
|
-
AuthManager
|
|
73
|
-
} from "./chunk-BYNY5JPB.js";
|
|
75
|
+
} from "./chunk-E7YC4GWV.js";
|
|
74
76
|
|
|
75
77
|
// src/web/server.ts
|
|
76
78
|
import express from "express";
|
|
@@ -1993,7 +1995,7 @@ ${undoResults.map((r) => ` \u2022 ${r}`).join("\n")}` });
|
|
|
1993
1995
|
const root = process.cwd();
|
|
1994
1996
|
const { loadIndex, clearIndex } = await import("./store-S24SPPDZ.js");
|
|
1995
1997
|
const { indexProject } = await import("./indexer-C7QYYHSZ.js");
|
|
1996
|
-
const { loadVectorStore, clearVectorStore } = await import("./vector-store-
|
|
1998
|
+
const { loadVectorStore, clearVectorStore } = await import("./vector-store-QARQ2P6D.js");
|
|
1997
1999
|
if (sub === "status") {
|
|
1998
2000
|
const idx = loadIndex(root);
|
|
1999
2001
|
const vec = loadVectorStore(root);
|
|
@@ -2042,7 +2044,7 @@ ${undoResults.map((r) => ` \u2022 ${r}`).join("\n")}` });
|
|
|
2042
2044
|
message: `Building semantic index for ${idx.symbolCount} symbols\u2026 (first run downloads ~117 MB model)`
|
|
2043
2045
|
});
|
|
2044
2046
|
try {
|
|
2045
|
-
const { rebuildSemanticIndex } = await import("./semantic-
|
|
2047
|
+
const { rebuildSemanticIndex } = await import("./semantic-YDRPPVWK.js");
|
|
2046
2048
|
const stats = await rebuildSemanticIndex(root);
|
|
2047
2049
|
const first = stats.modelFirstLoadMs ? ` (model load+first batch ${stats.modelFirstLoadMs}ms)` : "";
|
|
2048
2050
|
this.send({
|
|
@@ -2229,7 +2231,7 @@ ${undoResults.map((r) => ` \u2022 ${r}`).join("\n")}` });
|
|
|
2229
2231
|
case "test": {
|
|
2230
2232
|
this.send({ type: "info", message: "\u{1F9EA} Running tests..." });
|
|
2231
2233
|
try {
|
|
2232
|
-
const { executeTests } = await import("./run-tests-
|
|
2234
|
+
const { executeTests } = await import("./run-tests-5TO5G3YH.js");
|
|
2233
2235
|
const argStr = args.join(" ").trim();
|
|
2234
2236
|
let testArgs = {};
|
|
2235
2237
|
if (argStr) {
|
|
@@ -3,17 +3,19 @@ import {
|
|
|
3
3
|
ToolRegistry,
|
|
4
4
|
getDangerLevel,
|
|
5
5
|
schemaToJsonSchema
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-ABPT6XCI.js";
|
|
7
7
|
import "./chunk-2ZD3YTVM.js";
|
|
8
8
|
import "./chunk-4BKXL7SM.js";
|
|
9
|
+
import "./chunk-ANYYM4CF.js";
|
|
9
10
|
import "./chunk-NHNWUBXB.js";
|
|
10
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-KJLJPUY2.js";
|
|
11
12
|
import "./chunk-6VRJGH25.js";
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
13
|
+
import "./chunk-2DXY7UGF.js";
|
|
14
|
+
import "./chunk-KHYD3WXE.js";
|
|
15
|
+
import "./chunk-TKYNTXKB.js";
|
|
14
16
|
import {
|
|
15
17
|
VERSION
|
|
16
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-E7YC4GWV.js";
|
|
17
19
|
|
|
18
20
|
// src/mcp/server.ts
|
|
19
21
|
import { createInterface } from "readline";
|
|
@@ -4,17 +4,19 @@ import {
|
|
|
4
4
|
getDangerLevel,
|
|
5
5
|
googleSearchContext,
|
|
6
6
|
truncateOutput
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-ABPT6XCI.js";
|
|
8
8
|
import "./chunk-2ZD3YTVM.js";
|
|
9
9
|
import "./chunk-4BKXL7SM.js";
|
|
10
|
+
import "./chunk-ANYYM4CF.js";
|
|
10
11
|
import "./chunk-NHNWUBXB.js";
|
|
11
|
-
import "./chunk-
|
|
12
|
+
import "./chunk-KJLJPUY2.js";
|
|
12
13
|
import "./chunk-6VRJGH25.js";
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
14
|
+
import "./chunk-2DXY7UGF.js";
|
|
15
|
+
import "./chunk-KHYD3WXE.js";
|
|
16
|
+
import "./chunk-TKYNTXKB.js";
|
|
15
17
|
import {
|
|
16
18
|
SUBAGENT_ALLOWED_TOOLS
|
|
17
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-E7YC4GWV.js";
|
|
18
20
|
|
|
19
21
|
// src/hub/task-orchestrator.ts
|
|
20
22
|
import { createInterface } from "readline";
|