@xiaoqiong0v0/opencode-ssh-tool 0.6.0 → 0.6.1
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/agent.d.ts +2 -2
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +17 -23
- package/dist/agent.js.map +1 -1
- package/dist/base-session.d.ts +30 -14
- package/dist/base-session.d.ts.map +1 -1
- package/dist/base-session.js +45 -22
- package/dist/base-session.js.map +1 -1
- package/dist/constants.d.ts +1 -1
- package/dist/constants.js +1 -1
- package/dist/local-session.d.ts +2 -0
- package/dist/local-session.d.ts.map +1 -1
- package/dist/local-session.js +2 -0
- package/dist/local-session.js.map +1 -1
- package/dist/server-manager.d.ts.map +1 -1
- package/dist/server-manager.js +101 -9
- package/dist/server-manager.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +15 -3
- package/dist/server.js.map +1 -1
- package/dist/shell-adapter.d.ts +12 -14
- package/dist/shell-adapter.d.ts.map +1 -1
- package/dist/shell-adapter.js +226 -106
- package/dist/shell-adapter.js.map +1 -1
- package/package.json +1 -1
package/dist/shell-adapter.js
CHANGED
|
@@ -35,91 +35,19 @@ export function detectInterrupt(buffer, fromPos) {
|
|
|
35
35
|
return { interrupted: idx >= 0, pos: idx >= 0 ? idx : 0 };
|
|
36
36
|
}
|
|
37
37
|
// ===== Shell 类型探测与标记命令 =====
|
|
38
|
-
/** 提取 POSIX heredoc 分隔符(`<<EOF` / `<<-EOF` / `<<'EOF'` / `<<"EOF"`),无则返回 null */
|
|
39
|
-
function heredocDelim(line) {
|
|
40
|
-
const m = line.match(/<<-?\s*(['"]?)([A-Za-z_][A-Za-z0-9_]*)\1/);
|
|
41
|
-
return m ? m[2] : null;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* 命令是否包含 heredoc(`<<` 操作符)。
|
|
45
|
-
* 拼接完成标记时据此改用换行分隔:标记若以 `;` 拼到分隔符行(`EOF ;printf ...`),
|
|
46
|
-
* heredoc 分隔符不再被识别 → 永不结束 → 卡死。
|
|
47
|
-
* @param command 命令文本(可多行)
|
|
48
|
-
* @returns 是否包含 heredoc
|
|
49
|
-
*/
|
|
50
|
-
export function hasHeredoc(command) {
|
|
51
|
-
return command.split("\n").some((l) => heredocDelim(l) !== null);
|
|
52
|
-
}
|
|
53
38
|
/**
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
* @param
|
|
58
|
-
*
|
|
59
|
-
* @returns 拆分后的独立命令列表
|
|
39
|
+
* 提取 POSIX heredoc 分隔符(`<<EOF` / `<<-EOF` / `<<'EOF'` / `<<"EOF"`),无则返回 null。
|
|
40
|
+
* 逐字符扫描并跟踪 `'`/`"` 引号状态,只对引号外的 `<<` 尝试匹配分隔符;
|
|
41
|
+
* 避免 `echo "a << b"`、`grep '<<EOF' file` 这类引号内的 `<<` 被误判为 heredoc 起始。
|
|
42
|
+
* @param line 当前行文本
|
|
43
|
+
* @returns 引号外首个合法 heredoc 的分隔符;不存在则 null
|
|
60
44
|
*/
|
|
61
|
-
function
|
|
62
|
-
const rawLines = command.split("\n");
|
|
63
|
-
const cmds = [];
|
|
64
|
-
let buf = "";
|
|
65
|
-
let pending = null; // 未结束的 heredoc 分隔符
|
|
66
|
-
const flush = () => { const c = buf.trim(); if (c)
|
|
67
|
-
cmds.push(c); buf = ""; };
|
|
68
|
-
for (const line of rawLines) {
|
|
69
|
-
if (pending !== null) {
|
|
70
|
-
buf = buf ? buf + "\n" + line : line;
|
|
71
|
-
if (line.trim() === pending) {
|
|
72
|
-
pending = null;
|
|
73
|
-
flush();
|
|
74
|
-
}
|
|
75
|
-
continue;
|
|
76
|
-
}
|
|
77
|
-
buf = buf ? buf + "\n" + line : line;
|
|
78
|
-
if (heredoc) {
|
|
79
|
-
const d = heredocDelim(line);
|
|
80
|
-
if (d) {
|
|
81
|
-
pending = d;
|
|
82
|
-
continue;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
if (contRe.test(line.trimEnd()))
|
|
86
|
-
continue; // 行尾有续行符:继续合并下一行
|
|
87
|
-
flush();
|
|
88
|
-
}
|
|
89
|
-
flush();
|
|
90
|
-
return cmds;
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* POSIX(bash/zsh/sh)续行检测:未闭合的单/双引号或反引号(命令替换),或行尾未转义反斜杠。
|
|
94
|
-
* 单引号内反斜杠为字面量;双引号/反引号内反斜杠转义下一个字符。
|
|
95
|
-
* heredoc 正文内容任意(可能含引号,如注释里的 `don't`),不参与引号配对,否则会误判为未闭合而拒绝命令。
|
|
96
|
-
* @param s 命令文本
|
|
97
|
-
* @returns true 表示 shell 会等待续行
|
|
98
|
-
*/
|
|
99
|
-
function posixOpenContinuation(s) {
|
|
100
|
-
// 先剔除 heredoc 正文行(保留起止行),避免正文里的引号干扰配对
|
|
101
|
-
const kept = [];
|
|
102
|
-
let pending = null;
|
|
103
|
-
for (const line of s.split("\n")) {
|
|
104
|
-
if (pending !== null) {
|
|
105
|
-
if (line.trim() === pending) {
|
|
106
|
-
pending = null;
|
|
107
|
-
kept.push(line);
|
|
108
|
-
}
|
|
109
|
-
continue; // 正文行:跳过
|
|
110
|
-
}
|
|
111
|
-
kept.push(line);
|
|
112
|
-
const d = heredocDelim(line);
|
|
113
|
-
if (d)
|
|
114
|
-
pending = d;
|
|
115
|
-
}
|
|
116
|
-
const text = kept.join("\n");
|
|
45
|
+
function heredocDelim(line) {
|
|
117
46
|
let inSingle = false;
|
|
118
47
|
let inDouble = false;
|
|
119
|
-
let inBacktick = false;
|
|
120
48
|
let escaped = false;
|
|
121
|
-
for (let i = 0; i <
|
|
122
|
-
const c =
|
|
49
|
+
for (let i = 0; i < line.length; i++) {
|
|
50
|
+
const c = line[i];
|
|
123
51
|
if (escaped) {
|
|
124
52
|
escaped = false;
|
|
125
53
|
continue;
|
|
@@ -128,7 +56,7 @@ function posixOpenContinuation(s) {
|
|
|
128
56
|
escaped = true;
|
|
129
57
|
continue;
|
|
130
58
|
}
|
|
131
|
-
if (c === "'" && !inDouble
|
|
59
|
+
if (c === "'" && !inDouble) {
|
|
132
60
|
inSingle = !inSingle;
|
|
133
61
|
continue;
|
|
134
62
|
}
|
|
@@ -136,26 +64,132 @@ function posixOpenContinuation(s) {
|
|
|
136
64
|
inDouble = !inDouble;
|
|
137
65
|
continue;
|
|
138
66
|
}
|
|
139
|
-
if (
|
|
140
|
-
inBacktick = !inBacktick;
|
|
67
|
+
if (inSingle || inDouble)
|
|
141
68
|
continue;
|
|
69
|
+
// 引号外发现 `<<`:从其后匹配 <<-?\s*(['"]?)([A-Za-z_]\w*)\1
|
|
70
|
+
if (c === "<" && line[i + 1] === "<") {
|
|
71
|
+
const m = line.slice(i + 2).match(/^-?\s*(['"]?)([A-Za-z_][A-Za-z0-9_]*)\1/);
|
|
72
|
+
if (m)
|
|
73
|
+
return m[2];
|
|
142
74
|
}
|
|
143
75
|
}
|
|
144
|
-
|
|
145
|
-
return inSingle || inDouble || inBacktick || escaped;
|
|
76
|
+
return null;
|
|
146
77
|
}
|
|
147
78
|
/**
|
|
148
|
-
*
|
|
149
|
-
*
|
|
79
|
+
* 判断行内位置 i 的 `#` 是否构成 POSIX 注释起始(词首)。
|
|
80
|
+
* 仅当 `#` 处于文本开头、或前一字符为空白 / `;` `&` `|` `(` `)` `<` `>` 之一时为注释;
|
|
81
|
+
* `$#`(前为 `$`)、`a#b`(前为普通字符)与 `${x}#foo`(前为 `}`,属词内)均非注释。
|
|
82
|
+
* @param line 当前行文本
|
|
83
|
+
* @param i `#` 所在下标
|
|
84
|
+
* @returns true 表示该 `#` 起至行尾为注释
|
|
85
|
+
*/
|
|
86
|
+
function isPosixCommentStart(line, i) {
|
|
87
|
+
if (i === 0)
|
|
88
|
+
return true;
|
|
89
|
+
const p = line[i - 1];
|
|
90
|
+
return /\s/.test(p) || p === ";" || p === "&" || p === "|" || p === "(" || p === ")" || p === "<" || p === ">";
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* POSIX(bash/zsh/sh)续行检测:未闭合的单/双引号或反引号(命令替换)、行尾未转义反斜杠、
|
|
94
|
+
* 未闭合的 heredoc、以及未闭合的 `(`/`{` 组。
|
|
95
|
+
* 单引号内反斜杠为字面量;双引号/反引号内反斜杠转义下一个字符。
|
|
96
|
+
* 逐行扫描:heredoc 正文行(分隔符行之间的内容)与注释(词首 `#` 起至行尾)整段跳过,
|
|
97
|
+
* 不参与引号/深度配对,否则正文里的 `don't` 等会被误判为未闭合而拒绝命令。
|
|
98
|
+
* 深度用「> 0」而非「≠ 0」判断,以兼容 `case` 语句 `a)` 臂产生的负括号深度。
|
|
150
99
|
* @param s 命令文本
|
|
151
100
|
* @returns true 表示 shell 会等待续行
|
|
152
101
|
*/
|
|
153
|
-
function
|
|
102
|
+
function posixOpenContinuation(s) {
|
|
103
|
+
let inSingle = false;
|
|
104
|
+
let inDouble = false;
|
|
105
|
+
let inBacktick = false;
|
|
106
|
+
let parenDepth = 0;
|
|
107
|
+
let braceDepth = 0;
|
|
108
|
+
let pendingHeredoc = null;
|
|
109
|
+
let lineContinuation = false;
|
|
110
|
+
for (const line of s.split("\n")) {
|
|
111
|
+
// heredoc 正文行:整行跳过,不参与引号/深度配对;遇分隔符行则闭合
|
|
112
|
+
if (pendingHeredoc !== null) {
|
|
113
|
+
if (line.trim() === pendingHeredoc)
|
|
114
|
+
pendingHeredoc = null;
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
let escaped = false;
|
|
118
|
+
lineContinuation = false;
|
|
119
|
+
for (let i = 0; i < line.length; i++) {
|
|
120
|
+
const c = line[i];
|
|
121
|
+
if (escaped) {
|
|
122
|
+
escaped = false;
|
|
123
|
+
continue;
|
|
124
|
+
}
|
|
125
|
+
if (c === "\\" && !inSingle) {
|
|
126
|
+
escaped = true;
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
if (c === "'" && !inDouble && !inBacktick) {
|
|
130
|
+
inSingle = !inSingle;
|
|
131
|
+
continue;
|
|
132
|
+
}
|
|
133
|
+
if (c === '"' && !inSingle) {
|
|
134
|
+
inDouble = !inDouble;
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
if (c === "`" && !inSingle) {
|
|
138
|
+
inBacktick = !inBacktick;
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
if (inSingle || inDouble || inBacktick)
|
|
142
|
+
continue;
|
|
143
|
+
// 注释:词首 `#` 起至行尾跳过(注释里的引号不影响配对)
|
|
144
|
+
if (c === "#" && isPosixCommentStart(line, i))
|
|
145
|
+
break;
|
|
146
|
+
if (c === "(")
|
|
147
|
+
parenDepth++;
|
|
148
|
+
else if (c === ")")
|
|
149
|
+
parenDepth--;
|
|
150
|
+
else if (c === "{")
|
|
151
|
+
braceDepth++;
|
|
152
|
+
else if (c === "}")
|
|
153
|
+
braceDepth--;
|
|
154
|
+
}
|
|
155
|
+
// 行尾未转义反斜杠 = 续行(下一行首字符不被转义,故 escaped 不跨行)
|
|
156
|
+
if (escaped)
|
|
157
|
+
lineContinuation = true;
|
|
158
|
+
// 引号外检测本行 heredoc 起始(`<<EOF` 等)
|
|
159
|
+
if (!inSingle && !inDouble && !inBacktick) {
|
|
160
|
+
const d = heredocDelim(line);
|
|
161
|
+
if (d)
|
|
162
|
+
pendingHeredoc = d;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
return inSingle || inDouble || inBacktick || lineContinuation || pendingHeredoc !== null || parenDepth > 0 || braceDepth > 0;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* 判断 pwsh 行是否以 here-string 起始标记结尾,返回对应闭合标记(`"@` 或 `'@`)或 null。
|
|
169
|
+
* 引号感知扫描:仅当行尾(去尾空白后)为 `@"` 或 `@'`、且该 `@` 处于引号外、并位于词首
|
|
170
|
+
* (前一字符为文本开头 / 空白 / `=` / `(` / `,` / `|`)时才算起始。
|
|
171
|
+
* 避免 `Write-Output "foo@"` 这类引号内/词内的 `@"` 被误判为 here-string 起始。
|
|
172
|
+
* @param line 当前行文本
|
|
173
|
+
* @returns 该起始标记对应的闭合标记(`"@` 对应 `@"`,`'@` 对应 `@'`);非起始则 null
|
|
174
|
+
*/
|
|
175
|
+
function pwshHereStringStart(line) {
|
|
176
|
+
const trimmed = line.trimEnd();
|
|
177
|
+
const n = trimmed.length;
|
|
178
|
+
if (n < 2 || trimmed[n - 2] !== "@")
|
|
179
|
+
return null;
|
|
180
|
+
const quote = trimmed[n - 1];
|
|
181
|
+
if (quote !== '"' && quote !== "'")
|
|
182
|
+
return null;
|
|
183
|
+
// 词首判定:`@` 前一字符须为 文本开头/空白/=/(/,/|
|
|
184
|
+
const prev = n >= 3 ? trimmed[n - 3] : "";
|
|
185
|
+
if (!(prev === "" || /\s/.test(prev) || prev === "=" || prev === "(" || prev === "," || prev === "|"))
|
|
186
|
+
return null;
|
|
187
|
+
// 引号感知扫描 `@` 之前的部分:反引号转义下一字符,判断 `@` 处是否在引号外
|
|
154
188
|
let inSingle = false;
|
|
155
189
|
let inDouble = false;
|
|
156
190
|
let escaped = false;
|
|
157
|
-
for (let i = 0; i <
|
|
158
|
-
const c =
|
|
191
|
+
for (let i = 0; i < n - 2; i++) {
|
|
192
|
+
const c = trimmed[i];
|
|
159
193
|
if (escaped) {
|
|
160
194
|
escaped = false;
|
|
161
195
|
continue;
|
|
@@ -173,16 +207,90 @@ function pwshOpenContinuation(s) {
|
|
|
173
207
|
continue;
|
|
174
208
|
}
|
|
175
209
|
}
|
|
176
|
-
|
|
177
|
-
|
|
210
|
+
if (inSingle || inDouble)
|
|
211
|
+
return null;
|
|
212
|
+
return quote + "@";
|
|
178
213
|
}
|
|
179
214
|
/**
|
|
180
|
-
*
|
|
215
|
+
* PowerShell 续行检测:未闭合单/双引号、行尾反引号(转义/续行)、行尾管道 `|`、
|
|
216
|
+
* 未闭合的 here-string(`@"`…`"@` / `@'`…`'@`)、以及未闭合的 `{`/`(` 组。
|
|
217
|
+
* 反引号转义下一个字符;单引号内不转义。here-string 正文内的引号/花括号/圆括号不参与配对。
|
|
218
|
+
* @param s 命令文本
|
|
219
|
+
* @returns true 表示 shell 会等待续行
|
|
220
|
+
*/
|
|
221
|
+
function pwshOpenContinuation(s) {
|
|
222
|
+
let inSingle = false;
|
|
223
|
+
let inDouble = false;
|
|
224
|
+
let parenDepth = 0;
|
|
225
|
+
let braceDepth = 0;
|
|
226
|
+
let hereClose = null;
|
|
227
|
+
let lineContinuation = false;
|
|
228
|
+
const lines = s.split("\n");
|
|
229
|
+
for (const line of lines) {
|
|
230
|
+
// here-string 正文行:整行跳过;遇闭合行(以 "@ 或 '@ 结尾)则闭合
|
|
231
|
+
if (hereClose !== null) {
|
|
232
|
+
if (line.trim().endsWith(hereClose))
|
|
233
|
+
hereClose = null;
|
|
234
|
+
continue;
|
|
235
|
+
}
|
|
236
|
+
// here-string 起始:行尾以 @" 或 @' 结束(须引号外且词首,见 pwshHereStringStart);标记不参与引号配对
|
|
237
|
+
let scanLine = line;
|
|
238
|
+
let opener = null;
|
|
239
|
+
if (!inSingle && !inDouble) {
|
|
240
|
+
opener = pwshHereStringStart(line);
|
|
241
|
+
if (opener !== null)
|
|
242
|
+
scanLine = line.slice(0, line.trimEnd().length - 2);
|
|
243
|
+
}
|
|
244
|
+
let escaped = false;
|
|
245
|
+
lineContinuation = false;
|
|
246
|
+
for (let i = 0; i < scanLine.length; i++) {
|
|
247
|
+
const c = scanLine[i];
|
|
248
|
+
if (escaped) {
|
|
249
|
+
escaped = false;
|
|
250
|
+
continue;
|
|
251
|
+
}
|
|
252
|
+
if (c === "`") {
|
|
253
|
+
escaped = true;
|
|
254
|
+
continue;
|
|
255
|
+
}
|
|
256
|
+
if (c === "'" && !inDouble) {
|
|
257
|
+
inSingle = !inSingle;
|
|
258
|
+
continue;
|
|
259
|
+
}
|
|
260
|
+
if (c === '"' && !inSingle) {
|
|
261
|
+
inDouble = !inDouble;
|
|
262
|
+
continue;
|
|
263
|
+
}
|
|
264
|
+
if (inSingle || inDouble)
|
|
265
|
+
continue;
|
|
266
|
+
if (c === "{")
|
|
267
|
+
braceDepth++;
|
|
268
|
+
else if (c === "}")
|
|
269
|
+
braceDepth--;
|
|
270
|
+
else if (c === "(")
|
|
271
|
+
parenDepth++;
|
|
272
|
+
else if (c === ")")
|
|
273
|
+
parenDepth--;
|
|
274
|
+
}
|
|
275
|
+
// 行尾反引号 = 续行
|
|
276
|
+
if (escaped)
|
|
277
|
+
lineContinuation = true;
|
|
278
|
+
if (opener !== null)
|
|
279
|
+
hereClose = opener;
|
|
280
|
+
}
|
|
281
|
+
// 行尾管道 `|`:整段最后一行以 | 结尾 → 续行
|
|
282
|
+
const trailingPipe = /\|\s*$/.test(lines[lines.length - 1] ?? "");
|
|
283
|
+
return inSingle || inDouble || lineContinuation || trailingPipe || hereClose !== null || parenDepth > 0 || braceDepth > 0;
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* cmd.exe 续行检测:未闭合的 `(`/`)` 组(cmd 显示 `More?` 等待),或行尾脱字符 `^`(转义/续行)。
|
|
287
|
+
* 注意 cmd 无双引号续行语义:未闭合双引号不代表等待输入,故不作为续行依据(避免合法命令被拒)。
|
|
181
288
|
* @param s 命令文本
|
|
182
289
|
* @returns true 表示 shell 会等待续行
|
|
183
290
|
*/
|
|
184
291
|
function cmdOpenContinuation(s) {
|
|
185
292
|
let inDouble = false;
|
|
293
|
+
let parenDepth = 0;
|
|
186
294
|
for (let i = 0; i < s.length; i++) {
|
|
187
295
|
const c = s[i];
|
|
188
296
|
if (c === "^") {
|
|
@@ -193,19 +301,27 @@ function cmdOpenContinuation(s) {
|
|
|
193
301
|
inDouble = !inDouble;
|
|
194
302
|
continue;
|
|
195
303
|
}
|
|
304
|
+
if (inDouble)
|
|
305
|
+
continue;
|
|
306
|
+
if (c === "(")
|
|
307
|
+
parenDepth++;
|
|
308
|
+
else if (c === ")")
|
|
309
|
+
parenDepth--;
|
|
196
310
|
}
|
|
197
|
-
return
|
|
311
|
+
return parenDepth > 0 || /\^\s*$/.test(s);
|
|
198
312
|
}
|
|
199
313
|
class ZshAdapter {
|
|
200
314
|
name = "zsh";
|
|
201
315
|
probeCommand = `echo ${SHELL_ID_PREFIX}$0`;
|
|
316
|
+
stmtSep = ";";
|
|
202
317
|
markerCmd(seq) {
|
|
203
318
|
// 结尾补换行:否则 zsh 判定"上条输出未以换行结束",会补印 PROMPT_EOL_MARK(root 为 #)污染画面
|
|
204
319
|
return `printf '\\n${DONE_TAG}${seq}:%s>\\n' $?`;
|
|
205
320
|
}
|
|
206
|
-
|
|
207
|
-
//
|
|
208
|
-
|
|
321
|
+
groupWrap(body) {
|
|
322
|
+
// `{ }` 命令组在当前作用域执行(保留 cd/变量);未闭合的 `{` 会让 zsh 进入 PS2 续行,
|
|
323
|
+
// 整段多行输入被当作一条命令解析
|
|
324
|
+
return `{ ${body}\n}`;
|
|
209
325
|
}
|
|
210
326
|
hasOpenContinuation(command) {
|
|
211
327
|
return posixOpenContinuation(command);
|
|
@@ -219,13 +335,14 @@ class ZshAdapter {
|
|
|
219
335
|
class BashAdapter {
|
|
220
336
|
name = "bash";
|
|
221
337
|
probeCommand = `echo ${SHELL_ID_PREFIX}$0`;
|
|
338
|
+
stmtSep = ";";
|
|
222
339
|
markerCmd(seq) {
|
|
223
340
|
// bash 无 PROMPT_EOL_MARK,标记无需补尾换行(补了反而在 raw 里多顶一行)
|
|
224
341
|
return `printf '\\n${DONE_TAG}${seq}:%s>' $?`;
|
|
225
342
|
}
|
|
226
|
-
|
|
227
|
-
//
|
|
228
|
-
return
|
|
343
|
+
groupWrap(body) {
|
|
344
|
+
// `{ }` 命令组在当前作用域执行(保留 cd/变量);未闭合的 `{` 会让 bash 进入 PS2 续行
|
|
345
|
+
return `{ ${body}\n}`;
|
|
229
346
|
}
|
|
230
347
|
hasOpenContinuation(command) {
|
|
231
348
|
return posixOpenContinuation(command);
|
|
@@ -239,14 +356,16 @@ class BashAdapter {
|
|
|
239
356
|
class PwshAdapter {
|
|
240
357
|
name = "pwsh";
|
|
241
358
|
probeCommand = `Write-Output ${SHELL_ID_PREFIX}pwsh_$PSHOME`;
|
|
359
|
+
stmtSep = ";";
|
|
242
360
|
markerCmd(seq) {
|
|
243
361
|
// 用 Write-Output(success 管线)而非 Write-Host:Write-Host 直写 host 流会抢在
|
|
244
362
|
// cmdlet 输出(经格式化器批量渲染)之前,导致 marker 落在命令输出之前、提取时把输出裁掉
|
|
245
363
|
return `Write-Output "${DONE_TAG}${seq}:$LASTEXITCODE>"`;
|
|
246
364
|
}
|
|
247
|
-
|
|
248
|
-
//
|
|
249
|
-
|
|
365
|
+
groupWrap(body) {
|
|
366
|
+
// 点源 `. { }` 在当前作用域执行(保留变量/状态);不可用 `& { }`(子作用域会丢变量/状态)。
|
|
367
|
+
// 未闭合的 `{` 会让 pwsh 进入续行,整段多行输入被当作一条命令解析
|
|
368
|
+
return `. { ${body}\n}`;
|
|
250
369
|
}
|
|
251
370
|
hasOpenContinuation(command) {
|
|
252
371
|
return pwshOpenContinuation(command);
|
|
@@ -260,12 +379,13 @@ class PwshAdapter {
|
|
|
260
379
|
class CmdAdapter {
|
|
261
380
|
name = "cmd";
|
|
262
381
|
probeCommand = `echo ${SHELL_ID_PREFIX}%COMSPEC%`;
|
|
382
|
+
stmtSep = "&";
|
|
263
383
|
markerCmd(seq) {
|
|
264
384
|
return `echo ${DONE_TAG}${seq}:%errorlevel%>`;
|
|
265
385
|
}
|
|
266
|
-
|
|
267
|
-
// cmd
|
|
268
|
-
return
|
|
386
|
+
groupWrap(_body) {
|
|
387
|
+
// cmd 不包组:组内 `%errorlevel%` 是解析期展开,退出码会失真;保持原样逐行执行
|
|
388
|
+
return null;
|
|
269
389
|
}
|
|
270
390
|
hasOpenContinuation(command) {
|
|
271
391
|
return cmdOpenContinuation(command);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell-adapter.js","sourceRoot":"","sources":["../src/shell-adapter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"shell-adapter.js","sourceRoot":"","sources":["../src/shell-adapter.ts"],"names":[],"mappings":"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"}
|