jinzd-ai-cli 0.4.305 → 0.4.307
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-OX27K4GG.js → batch-HMADXNOD.js} +2 -2
- package/dist/{chunk-UFK5CTBU.js → chunk-3CKJOTVM.js} +3 -3
- package/dist/{chunk-4DH5LZR5.js → chunk-3TBXHLSC.js} +1 -1
- package/dist/{chunk-I6RATYRF.js → chunk-4W6VDVQU.js} +1 -1
- package/dist/{chunk-Q4DAKI7I.js → chunk-5GQL4TSZ.js} +1 -1
- package/dist/{chunk-3ZABGT3S.js → chunk-AHL6KOGM.js} +1 -1
- package/dist/{chunk-NFLE34QG.js → chunk-AQF6IXSR.js} +1 -1
- package/dist/{chunk-YPOWDFOV.js → chunk-CIM2PV2F.js} +1 -1
- package/dist/{chunk-SZ4226XY.js → chunk-KRCYR46A.js} +1 -1
- package/dist/{chunk-IPUTC5EX.js → chunk-L2RJPVHV.js} +142 -16
- package/dist/{chunk-AXKERUXH.js → chunk-NQJSPMY2.js} +3 -3
- package/dist/{chunk-PA4C452B.js → chunk-SJFZPS65.js} +3 -1
- package/dist/{chunk-NBYSFFCO.js → chunk-VAV2IJ3R.js} +3 -1
- package/dist/{chunk-GOIDKTBE.js → chunk-YFDQIUQ3.js} +7 -7
- package/dist/{ci-IIMLOXFH.js → ci-QD2Q7NWY.js} +4 -4
- package/dist/{ci-format-FMBJC3EY.js → ci-format-42XIZO5P.js} +2 -2
- package/dist/{constants-55QQ3RYE.js → constants-5CMEFZQB.js} +3 -1
- package/dist/{constants-7NVAPQVR.js → constants-NMASHFDL.js} +3 -1
- package/dist/{doctor-cli-ZHZ2XOF3.js → doctor-cli-IOVSHBDI.js} +4 -4
- package/dist/electron-server.js +148 -22
- package/dist/{hub-MF53NIM2.js → hub-ZLF6GMQD.js} +1 -1
- package/dist/index.js +18 -18
- package/dist/{persistent-memory-LCOKUDTM.js → persistent-memory-GJE7HKVK.js} +2 -2
- package/dist/{persistent-memory-NACQW2VB.js → persistent-memory-MBSBTBGY.js} +2 -2
- package/dist/{pr-NHWE5FW7.js → pr-SXRW24JG.js} +4 -4
- package/dist/{run-tests-ZG5X25BJ.js → run-tests-EQCAMFQE.js} +2 -2
- package/dist/{run-tests-EUPJLDXS.js → run-tests-V3N7YV3P.js} +2 -2
- package/dist/{server-PG7QCH53.js → server-GGEO7SA2.js} +13 -13
- package/dist/{server-PNYRE3AL.js → server-MO3EU2XD.js} +5 -5
- package/dist/{task-orchestrator-WAJTCE6D.js → task-orchestrator-JGEEQ2OE.js} +5 -5
- package/dist/{usage-DOES3DOS.js → usage-B7RIAPPT.js} +2 -2
- package/package.json +1 -1
|
@@ -4,12 +4,12 @@ import {
|
|
|
4
4
|
} from "./chunk-RS7SKYTS.js";
|
|
5
5
|
import {
|
|
6
6
|
ConfigManager
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-AQF6IXSR.js";
|
|
8
8
|
import "./chunk-TU3L3PW7.js";
|
|
9
9
|
import {
|
|
10
10
|
atomicWriteFileSync
|
|
11
11
|
} from "./chunk-IW3Q7AE5.js";
|
|
12
|
-
import "./chunk-
|
|
12
|
+
import "./chunk-VAV2IJ3R.js";
|
|
13
13
|
|
|
14
14
|
// src/cli/batch.ts
|
|
15
15
|
import Anthropic from "@anthropic-ai/sdk";
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import {
|
|
3
3
|
evaluateCiGate,
|
|
4
4
|
normalizeCiThresholds
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-3TBXHLSC.js";
|
|
6
6
|
import {
|
|
7
7
|
buildReviewPrompt,
|
|
8
8
|
buildSecurityReviewPrompt,
|
|
@@ -16,10 +16,10 @@ import {
|
|
|
16
16
|
} from "./chunk-VXEF2SWG.js";
|
|
17
17
|
import {
|
|
18
18
|
ConfigManager
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-AQF6IXSR.js";
|
|
20
20
|
import {
|
|
21
21
|
VERSION
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-VAV2IJ3R.js";
|
|
23
23
|
|
|
24
24
|
// src/cli/ci.ts
|
|
25
25
|
import { execFileSync } from "child_process";
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
MEMORY_FILE_NAME,
|
|
14
14
|
MEMORY_MAX_CHARS,
|
|
15
15
|
MEMORY_STORE_FILE_NAME
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-VAV2IJ3R.js";
|
|
17
17
|
|
|
18
18
|
// src/memory/persistent-memory.ts
|
|
19
19
|
import { copyFileSync, existsSync, mkdirSync, readFileSync, statSync } from "fs";
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
MEMORY_FILE_NAME,
|
|
13
13
|
MEMORY_MAX_CHARS,
|
|
14
14
|
MEMORY_STORE_FILE_NAME
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-SJFZPS65.js";
|
|
16
16
|
|
|
17
17
|
// src/memory/persistent-memory.ts
|
|
18
18
|
import { copyFileSync, existsSync, mkdirSync, readFileSync, statSync } from "fs";
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
searchPersistentMemories,
|
|
12
12
|
touchMemoryReferences,
|
|
13
13
|
updateMemoryEntry
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-AHL6KOGM.js";
|
|
15
15
|
import {
|
|
16
16
|
indexProject
|
|
17
17
|
} from "./chunk-LF67HWWR.js";
|
|
@@ -30,7 +30,7 @@ import {
|
|
|
30
30
|
runHook,
|
|
31
31
|
runLifecycleHooks,
|
|
32
32
|
runTool
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-5GQL4TSZ.js";
|
|
34
34
|
import {
|
|
35
35
|
buildTruncatedArgumentsError,
|
|
36
36
|
getDangerLevel,
|
|
@@ -50,15 +50,16 @@ import {
|
|
|
50
50
|
} from "./chunk-4BKXL7SM.js";
|
|
51
51
|
import {
|
|
52
52
|
runTestsTool
|
|
53
|
-
} from "./chunk-
|
|
53
|
+
} from "./chunk-4W6VDVQU.js";
|
|
54
54
|
import {
|
|
55
55
|
CONFIG_DIR_NAME,
|
|
56
56
|
DEFAULT_MAX_TOOL_OUTPUT_CHARS_CAP,
|
|
57
|
+
MAX_GLOB_MATCHES,
|
|
57
58
|
PLAN_MODE_READONLY_TOOLS,
|
|
58
59
|
SUBAGENT_ALLOWED_TOOLS,
|
|
59
60
|
SUBAGENT_DEFAULT_MAX_ROUNDS,
|
|
60
61
|
SUBAGENT_MAX_ROUNDS_LIMIT
|
|
61
|
-
} from "./chunk-
|
|
62
|
+
} from "./chunk-VAV2IJ3R.js";
|
|
62
63
|
|
|
63
64
|
// src/tools/shell-pool.ts
|
|
64
65
|
import { spawn as spawn2 } from "child_process";
|
|
@@ -617,7 +618,8 @@ Important rules:
|
|
|
617
618
|
4. To delete directories, use Remove-Item -Recurse (the system will automatically optimize to a more reliable method).
|
|
618
619
|
5. IMPORTANT: On Windows, "curl" is an alias for Invoke-WebRequest and does NOT support curl flags like -s, -X, -H. Use Invoke-RestMethod instead for HTTP requests. Example: Invoke-RestMethod -Uri "http://localhost:3000/api/health" -Method Get
|
|
619
620
|
6. NEVER run long-running / never-exiting commands through bash \u2014 they block until timeout. This includes starting an Android emulator (emulator -avd X), streaming logs (adb logcat), and dev servers (node server.js, npm run dev, metro / react-native start). Use the 'task_create' tool to run these in the background, then poll status with short bash calls (e.g. adb shell getprop sys.boot_completed).
|
|
620
|
-
7. CRITICAL \u2014 this is PowerShell, NOT bash: \\ is NOT an escape character. Writing \\" inside a double-quoted string CLOSES the string and silently splits your command into fragments \u2014 it often still exits 0 with no output, so it looks like it worked when it did not. To escape a quote use \`" or "". For anything with nested quoting (especially ssh + psql -c "SELECT ..."), do NOT try to escape your way out: write the payload to a file with the 'write_file' tool, 'scp' it to the host, and run it with a single level of quoting (e.g. ssh host "psql -d db -f /tmp/x.sql")
|
|
621
|
+
7. CRITICAL \u2014 this is PowerShell, NOT bash: \\ is NOT an escape character. Writing \\" inside a double-quoted string CLOSES the string and silently splits your command into fragments \u2014 it often still exits 0 with no output, so it looks like it worked when it did not. To escape a quote use \`" or "". For anything with nested quoting (especially ssh + psql -c "SELECT ..."), do NOT try to escape your way out: write the payload to a file with the 'write_file' tool, 'scp' it to the host, and run it with a single level of quoting (e.g. ssh host "psql -d db -f /tmp/x.sql").
|
|
622
|
+
8. CRITICAL \u2014 running a program by its full path: a quoted string at the START of a statement is parsed as a string EXPRESSION, not a command. "C:\\path\\python.exe" -c "print(1)" is a SYNTAX ERROR. Put the call operator '&' in front: & "C:\\path\\python.exe" -c "print(1)" \u2014 or $py = "C:\\path\\python.exe"; & $py -c "print(1)". This applies to any quoted path used as a command, anywhere a statement starts (including after ';').` : `Execute commands in ${SHELL2}.
|
|
621
623
|
Important rules:
|
|
622
624
|
1. Each bash call runs in an independent subprocess; cd commands do not persist. To run in a specific directory, use the cwd parameter, or combine commands: e.g. "cd mydir && ls" or "mkdir -p mydir && touch mydir/file.txt".
|
|
623
625
|
2. If a command fails (returns an error or non-zero exit code), stop immediately, report the error to the user, and do not retry the same or similar commands.
|
|
@@ -872,6 +874,116 @@ function detectPowerShellBackslashQuote(command) {
|
|
|
872
874
|
}
|
|
873
875
|
return false;
|
|
874
876
|
}
|
|
877
|
+
var PS_OPERATOR_WORDS = /* @__PURE__ */ new Set([
|
|
878
|
+
"eq",
|
|
879
|
+
"ne",
|
|
880
|
+
"gt",
|
|
881
|
+
"ge",
|
|
882
|
+
"lt",
|
|
883
|
+
"le",
|
|
884
|
+
"ceq",
|
|
885
|
+
"cne",
|
|
886
|
+
"cgt",
|
|
887
|
+
"cge",
|
|
888
|
+
"clt",
|
|
889
|
+
"cle",
|
|
890
|
+
"ieq",
|
|
891
|
+
"ine",
|
|
892
|
+
"igt",
|
|
893
|
+
"ige",
|
|
894
|
+
"ilt",
|
|
895
|
+
"ile",
|
|
896
|
+
"like",
|
|
897
|
+
"notlike",
|
|
898
|
+
"match",
|
|
899
|
+
"notmatch",
|
|
900
|
+
"clike",
|
|
901
|
+
"cnotlike",
|
|
902
|
+
"cmatch",
|
|
903
|
+
"cnotmatch",
|
|
904
|
+
"ilike",
|
|
905
|
+
"inotlike",
|
|
906
|
+
"imatch",
|
|
907
|
+
"inotmatch",
|
|
908
|
+
"contains",
|
|
909
|
+
"notcontains",
|
|
910
|
+
"ccontains",
|
|
911
|
+
"cnotcontains",
|
|
912
|
+
"icontains",
|
|
913
|
+
"inotcontains",
|
|
914
|
+
"in",
|
|
915
|
+
"notin",
|
|
916
|
+
"cin",
|
|
917
|
+
"cnotin",
|
|
918
|
+
"iin",
|
|
919
|
+
"inotin",
|
|
920
|
+
"is",
|
|
921
|
+
"isnot",
|
|
922
|
+
"as",
|
|
923
|
+
"and",
|
|
924
|
+
"or",
|
|
925
|
+
"not",
|
|
926
|
+
"xor",
|
|
927
|
+
"band",
|
|
928
|
+
"bor",
|
|
929
|
+
"bnot",
|
|
930
|
+
"bxor",
|
|
931
|
+
"shl",
|
|
932
|
+
"shr",
|
|
933
|
+
"join",
|
|
934
|
+
"split",
|
|
935
|
+
"replace",
|
|
936
|
+
"csplit",
|
|
937
|
+
"creplace",
|
|
938
|
+
"isplit",
|
|
939
|
+
"ireplace",
|
|
940
|
+
"f"
|
|
941
|
+
]);
|
|
942
|
+
function detectMissingCallOperator(command) {
|
|
943
|
+
if (!IS_WINDOWS3) return false;
|
|
944
|
+
let atStatementStart = true;
|
|
945
|
+
let afterCallOperator = false;
|
|
946
|
+
for (let i = 0; i < command.length; i++) {
|
|
947
|
+
const ch = command[i];
|
|
948
|
+
if (ch === " " || ch === " ") continue;
|
|
949
|
+
if (ch === ";" || ch === "\n" || ch === "{" || ch === "(" || ch === "|" || ch === "&") {
|
|
950
|
+
if (ch === "&") {
|
|
951
|
+
const next = command.slice(i + 1).replace(/^[ \t]+/, "");
|
|
952
|
+
afterCallOperator = !next.startsWith("&");
|
|
953
|
+
} else {
|
|
954
|
+
afterCallOperator = false;
|
|
955
|
+
}
|
|
956
|
+
atStatementStart = true;
|
|
957
|
+
continue;
|
|
958
|
+
}
|
|
959
|
+
if (ch === "." && atStatementStart) {
|
|
960
|
+
afterCallOperator = true;
|
|
961
|
+
continue;
|
|
962
|
+
}
|
|
963
|
+
if ((ch === '"' || ch === "'") && atStatementStart && !afterCallOperator) {
|
|
964
|
+
const quote = ch;
|
|
965
|
+
let j = i + 1;
|
|
966
|
+
while (j < command.length && command[j] !== quote) j++;
|
|
967
|
+
if (j >= command.length) return false;
|
|
968
|
+
const rest = command.slice(j + 1);
|
|
969
|
+
const m = /^[ \t]+(\S+)/.exec(rest);
|
|
970
|
+
if (m) {
|
|
971
|
+
const token = m[1];
|
|
972
|
+
if (/^[-]/.test(token)) {
|
|
973
|
+
const word = token.slice(1).toLowerCase();
|
|
974
|
+
if (PS_OPERATOR_WORDS.has(word)) return false;
|
|
975
|
+
return true;
|
|
976
|
+
}
|
|
977
|
+
if (/^[+*%=<>|;)}\]]/.test(token)) return false;
|
|
978
|
+
return true;
|
|
979
|
+
}
|
|
980
|
+
return false;
|
|
981
|
+
}
|
|
982
|
+
atStatementStart = false;
|
|
983
|
+
afterCallOperator = false;
|
|
984
|
+
}
|
|
985
|
+
return false;
|
|
986
|
+
}
|
|
875
987
|
var BACKSLASH_QUOTE_SILENT_WARNING = `
|
|
876
988
|
|
|
877
989
|
\u26A0 WARNING: this command contains \\" inside a double-quoted string, but PowerShell does NOT treat \\ as an escape \u2014 that quote CLOSED the string and the command was split into fragments. It exited 0 with no output because the outer program (e.g. ssh) still ran, but it very likely did NOT run what you intended. Do NOT assume this succeeded.
|
|
@@ -952,6 +1064,11 @@ function buildErrorHint(command, stderr) {
|
|
|
952
1064
|
`Hint: PowerShell does NOT treat \\ as an escape character \u2014 the \\" in this command closed the double-quoted string and split the command into fragments. Escape quotes with \`" or "" instead. Better: avoid nested quoting entirely \u2014 write the payload to a file with 'write_file', 'scp' it over, and run it with one level of quoting (e.g. ssh host "psql -d <db> -f /tmp/x.sql").`
|
|
953
1065
|
);
|
|
954
1066
|
}
|
|
1067
|
+
if (detectMissingCallOperator(command) && /(ParserError|UnexpectedToken|Unexpected token|意外的标记|运算符后面提供|必须在)/i.test(stderr)) {
|
|
1068
|
+
hints.push(
|
|
1069
|
+
`Hint: in PowerShell a quoted string at the START of a statement is parsed as a string EXPRESSION, not as a command \u2014 so "C:\\path\\python.exe" -c "..." is a syntax error, not a quoting problem. Do NOT retry by removing the quotes, dropping the argument, or re-quoting it differently; all of those fail the same way. Fix: put the call operator '&' in front \u2014 \`& "C:\\path\\python.exe" -c "..."\` \u2014 or assign the path to a variable first (\`$py = "C:\\path\\python.exe"; & $py -c "..."\`).`
|
|
1070
|
+
);
|
|
1071
|
+
}
|
|
955
1072
|
return hints.length > 0 ? hints.map((h) => `\u{1F4A1} ${h}`).join("\n\n") : null;
|
|
956
1073
|
}
|
|
957
1074
|
function detectBlockingCommand(command) {
|
|
@@ -1496,7 +1613,7 @@ ${err.message}`;
|
|
|
1496
1613
|
if (IMAGE_EXTENSIONS.has(ext)) {
|
|
1497
1614
|
return `[Image file: ${filePath} (${ext})]
|
|
1498
1615
|
read_file cannot return image content \u2014 tool results are text-only, so no tool can put an image into your context.
|
|
1499
|
-
To have an image looked at, ask the USER to reference it from their input line with @${filePath} (they can use a glob for a batch, e.g. @dir/*.png, up to
|
|
1616
|
+
To have an image looked at, ask the USER to reference it from their input line with @${filePath} (they can use a glob for a batch, e.g. @dir/*.png, up to ${MAX_GLOB_MATCHES} at a time). A vision-capable model must be active, or the reference is rejected.
|
|
1500
1617
|
Do NOT claim you inspected this image \u2014 you have not seen it.`;
|
|
1501
1618
|
}
|
|
1502
1619
|
return `[Binary file: ${filePath} (${ext})]
|
|
@@ -2377,7 +2494,7 @@ var RuleBasedActionClassifier = class {
|
|
|
2377
2494
|
var defaultActionClassifier = new RuleBasedActionClassifier();
|
|
2378
2495
|
|
|
2379
2496
|
// src/tools/executor.ts
|
|
2380
|
-
var PS_ERROR_RECORD_HEAD = /^(?:[\w.\-]+\s:\s)?(?:At line:\d+ char:\s*\d+|所在位置\s
|
|
2497
|
+
var PS_ERROR_RECORD_HEAD = /^(?:[\w.\-]+\s:\s)?(?:At (?:line:\d+|\S+:\d+) char:\s*\d+|所在位置\s+(?:行|\S+):\d+\s+字符:\s*\d+)\s*$/;
|
|
2381
2498
|
var ERROR_SIGNATURE = new RegExp(
|
|
2382
2499
|
[
|
|
2383
2500
|
// Python / .NET / Java: "OSError: …", "pkg.SomeException: …"
|
|
@@ -2393,11 +2510,22 @@ var ERROR_SIGNATURE = new RegExp(
|
|
|
2393
2510
|
"i"
|
|
2394
2511
|
);
|
|
2395
2512
|
var PY_TRACEBACK_FRAME = /^\s*File ".*", line \d+/;
|
|
2513
|
+
function isPreviewNoise(line) {
|
|
2514
|
+
const t = line.trim();
|
|
2515
|
+
return /^(?:\[[^\]]+\]\s*)?Exit code \d+:$/.test(t) || // `formatFailureHeader()` 在拿不到退出码时打的那句 —— 与 "Exit code N:" 同类噪声。
|
|
2516
|
+
// 不过滤的话它会占掉第一个展示位:2026-09-05 实战里 `export_slides.ps1 | Select-Object
|
|
2517
|
+
// -First 3` 提前掐断管道被 PowerShell 报成失败,预览成了
|
|
2518
|
+
// 「Command failed before exit code could be determined: · …\slide-02.png」——
|
|
2519
|
+
// 两段都没用,而真正有信息的 `EXPORTED 25 slide(s)` 就在第二行、从没上屏。
|
|
2520
|
+
/^(?:\[[^\]]+\]\s*)?Command failed before exit code could be determined:$/.test(t) || /^Traceback \(most recent call last\):$/.test(t) || line.startsWith("[Command failed") || line.startsWith("\u{1F4A1} ") || t === "";
|
|
2521
|
+
}
|
|
2396
2522
|
function buildErrorPreview(content) {
|
|
2397
2523
|
const raw = content.split("\n").map((l) => l.replace(/\r+$/, ""));
|
|
2398
2524
|
const undecorated = [];
|
|
2525
|
+
const decorationNeighbours = [];
|
|
2399
2526
|
for (let i = 0; i < raw.length; i++) {
|
|
2400
2527
|
if (PS_ERROR_RECORD_HEAD.test(raw[i])) {
|
|
2528
|
+
if (undecorated.length > 0) decorationNeighbours.push(undecorated[undecorated.length - 1]);
|
|
2401
2529
|
i++;
|
|
2402
2530
|
while (i < raw.length && /^\s*\+ /.test(raw[i])) i++;
|
|
2403
2531
|
i--;
|
|
@@ -2405,14 +2533,7 @@ function buildErrorPreview(content) {
|
|
|
2405
2533
|
}
|
|
2406
2534
|
undecorated.push(raw[i]);
|
|
2407
2535
|
}
|
|
2408
|
-
const meaningful = undecorated.filter(
|
|
2409
|
-
(l) => !/^(?:\[[^\]]+\]\s*)?Exit code \d+:$/.test(l.trim()) && // `formatFailureHeader()` 在拿不到退出码时打的那句 —— 与 "Exit code N:" 同类噪声。
|
|
2410
|
-
// 不过滤的话它会占掉第一个展示位:2026-09-05 实战里 `export_slides.ps1 | Select-Object
|
|
2411
|
-
// -First 3` 提前掐断管道被 PowerShell 报成失败,预览成了
|
|
2412
|
-
// 「Command failed before exit code could be determined: · …\slide-02.png」——
|
|
2413
|
-
// 两段都没用,而真正有信息的 `EXPORTED 25 slide(s)` 就在第二行、从没上屏。
|
|
2414
|
-
!/^(?:\[[^\]]+\]\s*)?Command failed before exit code could be determined:$/.test(l.trim()) && !/^Traceback \(most recent call last\):$/.test(l.trim()) && !l.startsWith("[Command failed") && !l.startsWith("\u{1F4A1} ") && l.trim() !== ""
|
|
2415
|
-
);
|
|
2536
|
+
const meaningful = undecorated.filter((l) => !isPreviewNoise(l));
|
|
2416
2537
|
let primary = -1;
|
|
2417
2538
|
for (let i = meaningful.length - 1; i >= 0; i--) {
|
|
2418
2539
|
if (ERROR_SIGNATURE.test(meaningful[i])) {
|
|
@@ -2431,7 +2552,12 @@ function buildErrorPreview(content) {
|
|
|
2431
2552
|
}
|
|
2432
2553
|
previewLines = frame !== null ? [frame, meaningful[primary]] : [meaningful[primary]];
|
|
2433
2554
|
} else {
|
|
2434
|
-
|
|
2555
|
+
const neighbour = decorationNeighbours.find((l) => !isPreviewNoise(l));
|
|
2556
|
+
if (neighbour !== void 0) {
|
|
2557
|
+
previewLines = [neighbour];
|
|
2558
|
+
} else {
|
|
2559
|
+
previewLines = meaningful.length > 2 ? [meaningful[0], meaningful[meaningful.length - 1]] : meaningful.slice(0, 2);
|
|
2560
|
+
}
|
|
2435
2561
|
}
|
|
2436
2562
|
const preview = previewLines.map((l) => l.length > 160 ? l.slice(0, 160) + "\u2026" : l).join(" \xB7 ") || content.slice(0, 120);
|
|
2437
2563
|
return preview.slice(0, 240);
|
|
@@ -8,13 +8,13 @@ import {
|
|
|
8
8
|
listHooks,
|
|
9
9
|
listInstalledPlugins,
|
|
10
10
|
resetStats
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-5GQL4TSZ.js";
|
|
12
12
|
import {
|
|
13
13
|
ProviderRegistry
|
|
14
14
|
} from "./chunk-VXEF2SWG.js";
|
|
15
15
|
import {
|
|
16
16
|
ConfigManager
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-AQF6IXSR.js";
|
|
18
18
|
import {
|
|
19
19
|
getGitRoot
|
|
20
20
|
} from "./chunk-HOSJZMQS.js";
|
|
@@ -26,7 +26,7 @@ import {
|
|
|
26
26
|
MCP_PROJECT_CONFIG_NAME,
|
|
27
27
|
MEMORY_FILE_NAME,
|
|
28
28
|
VERSION
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-VAV2IJ3R.js";
|
|
30
30
|
|
|
31
31
|
// src/diagnostics/doctor-report.ts
|
|
32
32
|
import { existsSync as existsSync3, statSync as statSync2 } from "fs";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// src/core/constants.ts
|
|
2
|
-
var VERSION = "0.4.
|
|
2
|
+
var VERSION = "0.4.307";
|
|
3
3
|
var APP_NAME = "ai-cli";
|
|
4
4
|
var CONFIG_DIR_NAME = ".aicli";
|
|
5
5
|
var CONFIG_FILE_NAME = "config.json";
|
|
@@ -18,6 +18,7 @@ var DEFAULT_TEMPERATURE = 0.7;
|
|
|
18
18
|
var MAX_HISTORY_DAYS = 30;
|
|
19
19
|
var DEFAULT_MAX_TOOL_ROUNDS = 200;
|
|
20
20
|
var DEFAULT_MAX_TOOL_OUTPUT_CHARS_CAP = 5e5;
|
|
21
|
+
var MAX_GLOB_MATCHES = 30;
|
|
21
22
|
var MCP_TOOL_PREFIX = "mcp__";
|
|
22
23
|
var MCP_PROJECT_CONFIG_NAME = ".mcp.json";
|
|
23
24
|
var MCP_CONNECT_TIMEOUT = 3e4;
|
|
@@ -152,6 +153,7 @@ export {
|
|
|
152
153
|
MAX_HISTORY_DAYS,
|
|
153
154
|
DEFAULT_MAX_TOOL_ROUNDS,
|
|
154
155
|
DEFAULT_MAX_TOOL_OUTPUT_CHARS_CAP,
|
|
156
|
+
MAX_GLOB_MATCHES,
|
|
155
157
|
MCP_TOOL_PREFIX,
|
|
156
158
|
MCP_PROJECT_CONFIG_NAME,
|
|
157
159
|
MCP_CONNECT_TIMEOUT,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
// src/core/constants.ts
|
|
4
|
-
var VERSION = "0.4.
|
|
4
|
+
var VERSION = "0.4.307";
|
|
5
5
|
var APP_NAME = "ai-cli";
|
|
6
6
|
var CONFIG_DIR_NAME = ".aicli";
|
|
7
7
|
var CONFIG_FILE_NAME = "config.json";
|
|
@@ -20,6 +20,7 @@ var DEFAULT_TEMPERATURE = 0.7;
|
|
|
20
20
|
var MAX_HISTORY_DAYS = 30;
|
|
21
21
|
var DEFAULT_MAX_TOOL_ROUNDS = 200;
|
|
22
22
|
var DEFAULT_MAX_TOOL_OUTPUT_CHARS_CAP = 5e5;
|
|
23
|
+
var MAX_GLOB_MATCHES = 30;
|
|
23
24
|
var MCP_TOOL_PREFIX = "mcp__";
|
|
24
25
|
var MCP_PROJECT_CONFIG_NAME = ".mcp.json";
|
|
25
26
|
var MCP_CONNECT_TIMEOUT = 3e4;
|
|
@@ -154,6 +155,7 @@ export {
|
|
|
154
155
|
MAX_HISTORY_DAYS,
|
|
155
156
|
DEFAULT_MAX_TOOL_ROUNDS,
|
|
156
157
|
DEFAULT_MAX_TOOL_OUTPUT_CHARS_CAP,
|
|
158
|
+
MAX_GLOB_MATCHES,
|
|
157
159
|
MCP_TOOL_PREFIX,
|
|
158
160
|
MCP_PROJECT_CONFIG_NAME,
|
|
159
161
|
MCP_CONNECT_TIMEOUT,
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
setPreferredAgentName,
|
|
17
17
|
truncateForPersist,
|
|
18
18
|
undoStack
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-L2RJPVHV.js";
|
|
20
20
|
import {
|
|
21
21
|
buildReviewPrompt,
|
|
22
22
|
buildSecurityReviewPrompt
|
|
@@ -51,7 +51,7 @@ import {
|
|
|
51
51
|
touchMemoryReferences,
|
|
52
52
|
updateMemoryApproval,
|
|
53
53
|
updateMemoryEntry
|
|
54
|
-
} from "./chunk-
|
|
54
|
+
} from "./chunk-AHL6KOGM.js";
|
|
55
55
|
import {
|
|
56
56
|
theme
|
|
57
57
|
} from "./chunk-5C76XDDF.js";
|
|
@@ -65,7 +65,7 @@ import {
|
|
|
65
65
|
import {
|
|
66
66
|
buildDoctorReport,
|
|
67
67
|
formatDoctorReport
|
|
68
|
-
} from "./chunk-
|
|
68
|
+
} from "./chunk-NQJSPMY2.js";
|
|
69
69
|
import {
|
|
70
70
|
describePlugin,
|
|
71
71
|
getActivePluginAssets,
|
|
@@ -80,7 +80,7 @@ import {
|
|
|
80
80
|
trustHook,
|
|
81
81
|
trustPlugin,
|
|
82
82
|
untrustHook
|
|
83
|
-
} from "./chunk-
|
|
83
|
+
} from "./chunk-5GQL4TSZ.js";
|
|
84
84
|
import {
|
|
85
85
|
isCleanDocumentBody,
|
|
86
86
|
stripOuterCodeFence
|
|
@@ -109,7 +109,7 @@ import {
|
|
|
109
109
|
MCP_TOOL_PREFIX,
|
|
110
110
|
REPO_URL,
|
|
111
111
|
VERSION
|
|
112
|
-
} from "./chunk-
|
|
112
|
+
} from "./chunk-VAV2IJ3R.js";
|
|
113
113
|
|
|
114
114
|
// src/skills/manager.ts
|
|
115
115
|
import { existsSync, readdirSync, mkdirSync, statSync } from "fs";
|
|
@@ -2426,7 +2426,7 @@ No tools match "${filter}".
|
|
|
2426
2426
|
const { join: join6 } = await import("path");
|
|
2427
2427
|
const { existsSync: existsSync6 } = await import("fs");
|
|
2428
2428
|
const { getGitRoot } = await import("./git-context-EXOEHQSF.js");
|
|
2429
|
-
const { MCP_PROJECT_CONFIG_NAME } = await import("./constants-
|
|
2429
|
+
const { MCP_PROJECT_CONFIG_NAME } = await import("./constants-NMASHFDL.js");
|
|
2430
2430
|
const { approveProject, hashMcpFile } = await import("./project-trust-NKYHL3VZ.js");
|
|
2431
2431
|
const cwd = process.cwd();
|
|
2432
2432
|
const projectRoot = getGitRoot(cwd) ?? cwd;
|
|
@@ -3534,7 +3534,7 @@ function createReviewCommands() {
|
|
|
3534
3534
|
usage: "/test [command|filter]",
|
|
3535
3535
|
async execute(args, ctx) {
|
|
3536
3536
|
try {
|
|
3537
|
-
const { executeTests } = await import("./run-tests-
|
|
3537
|
+
const { executeTests } = await import("./run-tests-EQCAMFQE.js");
|
|
3538
3538
|
const argStr = args.join(" ").trim();
|
|
3539
3539
|
let testArgs = {};
|
|
3540
3540
|
if (argStr) {
|
|
@@ -3,16 +3,16 @@ import {
|
|
|
3
3
|
CI_COMMENT_MARKER,
|
|
4
4
|
countSeverity,
|
|
5
5
|
runCi
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-3CKJOTVM.js";
|
|
7
|
+
import "./chunk-3TBXHLSC.js";
|
|
8
8
|
import "./chunk-HLWUDRBO.js";
|
|
9
9
|
import "./chunk-6YZEZFX5.js";
|
|
10
10
|
import "./chunk-VXEF2SWG.js";
|
|
11
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-AQF6IXSR.js";
|
|
12
12
|
import "./chunk-MI4SFZGX.js";
|
|
13
13
|
import "./chunk-TU3L3PW7.js";
|
|
14
14
|
import "./chunk-IW3Q7AE5.js";
|
|
15
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-VAV2IJ3R.js";
|
|
16
16
|
export {
|
|
17
17
|
CI_COMMENT_MARKER,
|
|
18
18
|
countSeverity,
|
|
@@ -17,6 +17,7 @@ import {
|
|
|
17
17
|
DESCRIPTION,
|
|
18
18
|
DEV_STATE_FILE_NAME,
|
|
19
19
|
HISTORY_DIR_NAME,
|
|
20
|
+
MAX_GLOB_MATCHES,
|
|
20
21
|
MAX_HISTORY_DAYS,
|
|
21
22
|
MCP_CALL_TIMEOUT,
|
|
22
23
|
MCP_CONNECT_TIMEOUT,
|
|
@@ -37,7 +38,7 @@ import {
|
|
|
37
38
|
TEST_TIMEOUT,
|
|
38
39
|
VERSION,
|
|
39
40
|
buildUserIdentityPrompt
|
|
40
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-SJFZPS65.js";
|
|
41
42
|
export {
|
|
42
43
|
AGENTIC_BEHAVIOR_GUIDELINE,
|
|
43
44
|
APP_NAME,
|
|
@@ -57,6 +58,7 @@ export {
|
|
|
57
58
|
DESCRIPTION,
|
|
58
59
|
DEV_STATE_FILE_NAME,
|
|
59
60
|
HISTORY_DIR_NAME,
|
|
61
|
+
MAX_GLOB_MATCHES,
|
|
60
62
|
MAX_HISTORY_DAYS,
|
|
61
63
|
MCP_CALL_TIMEOUT,
|
|
62
64
|
MCP_CONNECT_TIMEOUT,
|
|
@@ -18,6 +18,7 @@ import {
|
|
|
18
18
|
DESCRIPTION,
|
|
19
19
|
DEV_STATE_FILE_NAME,
|
|
20
20
|
HISTORY_DIR_NAME,
|
|
21
|
+
MAX_GLOB_MATCHES,
|
|
21
22
|
MAX_HISTORY_DAYS,
|
|
22
23
|
MCP_CALL_TIMEOUT,
|
|
23
24
|
MCP_CONNECT_TIMEOUT,
|
|
@@ -38,7 +39,7 @@ import {
|
|
|
38
39
|
TEST_TIMEOUT,
|
|
39
40
|
VERSION,
|
|
40
41
|
buildUserIdentityPrompt
|
|
41
|
-
} from "./chunk-
|
|
42
|
+
} from "./chunk-VAV2IJ3R.js";
|
|
42
43
|
export {
|
|
43
44
|
AGENTIC_BEHAVIOR_GUIDELINE,
|
|
44
45
|
APP_NAME,
|
|
@@ -58,6 +59,7 @@ export {
|
|
|
58
59
|
DESCRIPTION,
|
|
59
60
|
DEV_STATE_FILE_NAME,
|
|
60
61
|
HISTORY_DIR_NAME,
|
|
62
|
+
MAX_GLOB_MATCHES,
|
|
61
63
|
MAX_HISTORY_DAYS,
|
|
62
64
|
MCP_CALL_TIMEOUT,
|
|
63
65
|
MCP_CONNECT_TIMEOUT,
|
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
import {
|
|
3
3
|
formatDoctorReport,
|
|
4
4
|
runDoctorCli
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-NQJSPMY2.js";
|
|
6
|
+
import "./chunk-5GQL4TSZ.js";
|
|
7
7
|
import "./chunk-RS7SKYTS.js";
|
|
8
8
|
import "./chunk-VXEF2SWG.js";
|
|
9
|
-
import "./chunk-
|
|
9
|
+
import "./chunk-AQF6IXSR.js";
|
|
10
10
|
import "./chunk-MI4SFZGX.js";
|
|
11
11
|
import "./chunk-TU3L3PW7.js";
|
|
12
12
|
import "./chunk-HOSJZMQS.js";
|
|
13
13
|
import "./chunk-IW3Q7AE5.js";
|
|
14
|
-
import "./chunk-
|
|
14
|
+
import "./chunk-VAV2IJ3R.js";
|
|
15
15
|
export {
|
|
16
16
|
formatDoctorReport,
|
|
17
17
|
runDoctorCli
|