@osanoai/multicli 1.5.24 → 1.5.26
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/modelCatalog.generated.json +5 -4
- package/dist/utils/commandExecutor.d.ts +11 -5
- package/dist/utils/commandExecutor.d.ts.map +1 -1
- package/dist/utils/commandExecutor.js +43 -11
- package/dist/utils/commandExecutor.js.map +1 -1
- package/dist/utils/geminiExecutor.d.ts.map +1 -1
- package/dist/utils/geminiExecutor.js +1 -5
- package/dist/utils/geminiExecutor.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"generatedAt": "2026-03-
|
|
2
|
+
"generatedAt": "2026-03-16T03:48:38.802Z",
|
|
3
3
|
"catalogs": {
|
|
4
4
|
"claude": {
|
|
5
5
|
"cli": "claude",
|
|
@@ -57,6 +57,7 @@
|
|
|
57
57
|
{
|
|
58
58
|
"tier": "fast",
|
|
59
59
|
"models": [
|
|
60
|
+
"gpt-5-codex-mini",
|
|
60
61
|
"gpt-5.1-codex-mini"
|
|
61
62
|
]
|
|
62
63
|
},
|
|
@@ -66,15 +67,15 @@
|
|
|
66
67
|
"gpt-5",
|
|
67
68
|
"gpt-5-codex",
|
|
68
69
|
"gpt-5.1",
|
|
69
|
-
"gpt-5.1-codex"
|
|
70
|
+
"gpt-5.1-codex",
|
|
71
|
+
"gpt-5.2",
|
|
72
|
+
"gpt-5.2-codex"
|
|
70
73
|
]
|
|
71
74
|
},
|
|
72
75
|
{
|
|
73
76
|
"tier": "powerful",
|
|
74
77
|
"models": [
|
|
75
78
|
"gpt-5.1-codex-max",
|
|
76
|
-
"gpt-5.2",
|
|
77
|
-
"gpt-5.2-codex",
|
|
78
79
|
"gpt-5.3-codex",
|
|
79
80
|
"gpt-5.4"
|
|
80
81
|
]
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
2
|
+
* Format a single argument for safe use with cmd.exe (shell: true on Windows).
|
|
3
|
+
* Ensures the argument survives cmd.exe parsing as one argv entry.
|
|
4
|
+
*
|
|
5
|
+
* Rules:
|
|
6
|
+
* - Empty strings → `""` (otherwise lost entirely)
|
|
7
|
+
* - Args with whitespace or quotes → wrapped in double quotes
|
|
8
|
+
* - Inside quotes: `"` → `""`, `%` → `%%`
|
|
9
|
+
* - Trailing backslashes doubled (prevents `\"` escaping the closing quote)
|
|
10
|
+
* - Shell operators (&|<>^) are literal inside quotes — no caret needed
|
|
11
|
+
* - Args without whitespace or quotes → unquoted
|
|
12
|
+
* - `%` → `%%`, shell operators get caret-escaped
|
|
7
13
|
*/
|
|
8
14
|
export declare function sanitizeArgForCmd(arg: string): string;
|
|
9
15
|
export declare function executeCommand(command: string, args: string[], onProgress?: (newOutput: string) => void, timeoutMs?: number): Promise<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commandExecutor.d.ts","sourceRoot":"","sources":["../../src/utils/commandExecutor.ts"],"names":[],"mappings":"AAKA
|
|
1
|
+
{"version":3,"file":"commandExecutor.d.ts","sourceRoot":"","sources":["../../src/utils/commandExecutor.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAyBrD;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,EACxC,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CA8EjB"}
|
|
@@ -2,18 +2,42 @@ import { spawn } from "child_process";
|
|
|
2
2
|
// Detect Windows platform for shell compatibility
|
|
3
3
|
const isWindows = process.platform === "win32";
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
5
|
+
* Format a single argument for safe use with cmd.exe (shell: true on Windows).
|
|
6
|
+
* Ensures the argument survives cmd.exe parsing as one argv entry.
|
|
7
|
+
*
|
|
8
|
+
* Rules:
|
|
9
|
+
* - Empty strings → `""` (otherwise lost entirely)
|
|
10
|
+
* - Args with whitespace or quotes → wrapped in double quotes
|
|
11
|
+
* - Inside quotes: `"` → `""`, `%` → `%%`
|
|
12
|
+
* - Trailing backslashes doubled (prevents `\"` escaping the closing quote)
|
|
13
|
+
* - Shell operators (&|<>^) are literal inside quotes — no caret needed
|
|
14
|
+
* - Args without whitespace or quotes → unquoted
|
|
15
|
+
* - `%` → `%%`, shell operators get caret-escaped
|
|
10
16
|
*/
|
|
11
17
|
export function sanitizeArgForCmd(arg) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
;
|
|
18
|
+
if (arg === '')
|
|
19
|
+
return '""';
|
|
20
|
+
// Newlines act as command separators in cmd.exe even inside double quotes.
|
|
21
|
+
// Replace with spaces to preserve word boundaries safely.
|
|
22
|
+
const sanitized = arg.replace(/[\r\n]+/g, ' ');
|
|
23
|
+
const needsQuotes = /[\s"]/.test(sanitized);
|
|
24
|
+
if (needsQuotes) {
|
|
25
|
+
// Inside double quotes: only % and " need escaping.
|
|
26
|
+
// Shell operators (&|<>^) are treated as literals by cmd.exe inside quotes.
|
|
27
|
+
// Trailing backslashes must be doubled so they don't escape the closing quote
|
|
28
|
+
// in the target process's CommandLineToArgvW parser.
|
|
29
|
+
const escaped = sanitized
|
|
30
|
+
.replace(/%/g, '%%')
|
|
31
|
+
.replace(/"/g, '""')
|
|
32
|
+
.replace(/\\+$/, m => m + m);
|
|
33
|
+
return `"${escaped}"`;
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
// Unquoted: escape % and caret-escape shell operators (including parentheses)
|
|
37
|
+
return sanitized
|
|
38
|
+
.replace(/%/g, '%%')
|
|
39
|
+
.replace(/[&|<>^()]/g, c => `^${c}`);
|
|
40
|
+
}
|
|
17
41
|
}
|
|
18
42
|
export async function executeCommand(command, args, onProgress, timeoutMs) {
|
|
19
43
|
return new Promise((resolve, reject) => {
|
|
@@ -74,7 +98,15 @@ export async function executeCommand(command, args, onProgress, timeoutMs) {
|
|
|
74
98
|
if (timer)
|
|
75
99
|
clearTimeout(timer);
|
|
76
100
|
if (code === 0) {
|
|
77
|
-
|
|
101
|
+
const output = stdout.trim();
|
|
102
|
+
if (output || !stderr.trim()) {
|
|
103
|
+
resolve(output);
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
// Some CLIs (e.g. OpenCode) exit 0 but write errors only to stderr.
|
|
107
|
+
// Surface the error instead of silently returning an empty string.
|
|
108
|
+
reject(new Error(`Command produced no output. stderr: ${stderr.trim()}`));
|
|
109
|
+
}
|
|
78
110
|
}
|
|
79
111
|
else {
|
|
80
112
|
const errorMessage = stderr.trim() || "Unknown error";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commandExecutor.js","sourceRoot":"","sources":["../../src/utils/commandExecutor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,kDAAkD;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;AAE/C
|
|
1
|
+
{"version":3,"file":"commandExecutor.js","sourceRoot":"","sources":["../../src/utils/commandExecutor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,kDAAkD;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;AAE/C;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAE5B,2EAA2E;IAC3E,0DAA0D;IAC1D,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IAE/C,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAE5C,IAAI,WAAW,EAAE,CAAC;QAChB,oDAAoD;QACpD,4EAA4E;QAC5E,8EAA8E;QAC9E,qDAAqD;QACrD,MAAM,OAAO,GAAG,SAAS;aACtB,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;aACnB,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;aACnB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/B,OAAO,IAAI,OAAO,GAAG,CAAC;IACxB,CAAC;SAAM,CAAC;QACN,8EAA8E;QAC9E,OAAO,SAAS;aACb,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;aACnB,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzC,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAAe,EACf,IAAc,EACd,UAAwC,EACxC,SAAkB;IAElB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,8EAA8E;QAC9E,4DAA4D;QAC5D,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAChE,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE;YAC5C,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;SAClC,CAAC,CAAC;QAEH,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,IAAI,kBAAkB,GAAG,CAAC,CAAC;QAC3B,IAAI,KAAgD,CAAC;QAErD,IAAI,SAAS,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YAC/B,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBACtB,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,UAAU,GAAG,IAAI,CAAC;oBAClB,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAC7B,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,SAAS,IAAI,CAAC,CAAC,CAAC;gBAC9D,CAAC;YACH,CAAC,EAAE,SAAS,CAAC,CAAC;QAChB,CAAC;QAED,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACtC,IAAI,UAAU;gBAAE,OAAO;YACvB,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAE1B,0CAA0C;YAC1C,IAAI,UAAU,IAAI,MAAM,CAAC,MAAM,GAAG,kBAAkB,EAAE,CAAC;gBACrD,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;gBACxD,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC;gBACnC,UAAU,CAAC,UAAU,CAAC,CAAC;YACzB,CAAC;QACH,CAAC,CAAC,CAAC;QAGH,mBAAmB;QACnB,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACtC,IAAI,UAAU;gBAAE,OAAO;YACvB,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1B,wDAAwD;YACxD,IAAI,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;gBAC1C,uEAAuE;YACzE,CAAC;QACH,CAAC,CAAC,CAAC;QACH,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACjC,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,UAAU,GAAG,IAAI,CAAC;gBAClB,IAAI,KAAK;oBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;gBAC/B,MAAM,CAAC,IAAI,KAAK,CAAC,4BAA4B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACjE,CAAC;QACH,CAAC,CAAC,CAAC;QACH,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAChC,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,UAAU,GAAG,IAAI,CAAC;gBAClB,IAAI,KAAK;oBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;gBAC/B,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBACf,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;oBAC7B,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;wBAC7B,OAAO,CAAC,MAAM,CAAC,CAAC;oBAClB,CAAC;yBAAM,CAAC;wBACN,oEAAoE;wBACpE,mEAAmE;wBACnE,MAAM,CAAC,IAAI,KAAK,CAAC,uCAAuC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;oBAC5E,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,eAAe,CAAC;oBACtD,MAAM,CACJ,IAAI,KAAK,CAAC,iCAAiC,IAAI,KAAK,YAAY,EAAE,CAAC,CACpE,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geminiExecutor.d.ts","sourceRoot":"","sources":["../../src/utils/geminiExecutor.ts"],"names":[],"mappings":"AAQA,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,OAAO,EACjB,UAAU,CAAC,EAAE,OAAO,EACpB,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,GACvC,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"geminiExecutor.d.ts","sourceRoot":"","sources":["../../src/utils/geminiExecutor.ts"],"names":[],"mappings":"AAQA,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,OAAO,EACjB,UAAU,CAAC,EAAE,OAAO,EACpB,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,GACvC,OAAO,CAAC,MAAM,CAAC,CA4EjB;AAED,wBAAsB,uBAAuB,CAC3C,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,EACnB,aAAa,CAAC,EAAE,MAAM,EACtB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CA0DjB"}
|
|
@@ -70,15 +70,11 @@ ${prompt_processed}
|
|
|
70
70
|
`;
|
|
71
71
|
prompt_processed = changeModeInstructions;
|
|
72
72
|
}
|
|
73
|
-
// Ensure @ symbols work cross-platform by wrapping in quotes if needed
|
|
74
|
-
const finalPrompt = prompt_processed.includes('@') && !prompt_processed.startsWith('"')
|
|
75
|
-
? `"${prompt_processed}"`
|
|
76
|
-
: prompt_processed;
|
|
77
73
|
const args = [CLI.FLAGS.MODEL, model];
|
|
78
74
|
if (sandbox) {
|
|
79
75
|
args.push(CLI.FLAGS.SANDBOX);
|
|
80
76
|
}
|
|
81
|
-
args.push(
|
|
77
|
+
args.push(prompt_processed);
|
|
82
78
|
return executeCommand(CLI.COMMANDS.GEMINI, args, onProgress);
|
|
83
79
|
}
|
|
84
80
|
export async function processChangeModeOutput(rawResult, chunkIndex, chunkCacheKey, prompt) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geminiExecutor.js","sourceRoot":"","sources":["../../src/utils/geminiExecutor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAEtC,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACvF,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAC/F,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEzD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAc,EACd,KAAa,EACb,OAAiB,EACjB,UAAoB,EACpB,UAAwC;IAExC,IAAI,gBAAgB,GAAG,MAAM,CAAC;IAE9B,IAAI,UAAU,EAAE,CAAC;QACf,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QAExD,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0DjC,gBAAgB;CACjB,CAAC;QACE,gBAAgB,GAAG,sBAAsB,CAAC;IAC5C,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"geminiExecutor.js","sourceRoot":"","sources":["../../src/utils/geminiExecutor.ts"],"names":[],"mappings":"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"}
|