@xiaoqiong0v0/opencode-ssh-tool 0.5.1 → 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/README.md +27 -21
- package/dist/agent.d.ts +52 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +244 -0
- package/dist/agent.js.map +1 -0
- package/dist/base-session.d.ts +95 -13
- package/dist/base-session.d.ts.map +1 -1
- package/dist/base-session.js +271 -102
- package/dist/base-session.js.map +1 -1
- package/dist/config.d.ts +6 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +16 -7
- package/dist/config.js.map +1 -1
- package/dist/constants.d.ts +14 -15
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +14 -15
- package/dist/constants.js.map +1 -1
- package/dist/i18n.d.ts +24 -14
- package/dist/i18n.d.ts.map +1 -1
- package/dist/i18n.js +37 -12
- package/dist/i18n.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +90 -73
- package/dist/index.js.map +1 -1
- package/dist/last-match.d.ts +11 -0
- package/dist/last-match.d.ts.map +1 -1
- package/dist/last-match.js +24 -0
- package/dist/last-match.js.map +1 -1
- package/dist/local-session.d.ts +2 -1
- package/dist/local-session.d.ts.map +1 -1
- package/dist/local-session.js +14 -8
- package/dist/local-session.js.map +1 -1
- package/dist/server-entry.d.ts +2 -0
- package/dist/server-entry.d.ts.map +1 -0
- package/dist/server-entry.js +61 -0
- package/dist/server-entry.js.map +1 -0
- package/dist/server-manager.d.ts +9 -9
- package/dist/server-manager.d.ts.map +1 -1
- package/dist/server-manager.js +208 -27
- package/dist/server-manager.js.map +1 -1
- package/dist/server.d.ts +3 -28
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +429 -275
- package/dist/server.js.map +1 -1
- package/dist/session.d.ts +0 -1
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +2 -9
- package/dist/session.js.map +1 -1
- package/dist/shell-adapter.d.ts +38 -2
- package/dist/shell-adapter.d.ts.map +1 -1
- package/dist/shell-adapter.js +372 -24
- package/dist/shell-adapter.js.map +1 -1
- package/dist/utils.d.ts +3 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +29 -10
- package/dist/utils.js.map +1 -1
- package/dist/web/app.css +12 -7
- package/dist/web/app.js +11 -2
- package/dist/web/index.html +6 -3
- package/dist/web/xterm.css +218 -0
- package/package.json +3 -2
package/dist/shell-adapter.js
CHANGED
|
@@ -1,13 +1,27 @@
|
|
|
1
|
-
// Shell 适配器:Shell 类型探测 +
|
|
1
|
+
// Shell 适配器:Shell 类型探测 + 完成标记命令(每条命令后追加)
|
|
2
2
|
// 标记格式:<SSH_DONE:<退出码>> —— 可见文本便于 web Raw 模式直接调试;
|
|
3
|
-
//
|
|
4
|
-
|
|
3
|
+
// 展示给用户/模型的输出会在上层剥离标记(用户实际看不到,与不可见标记等效)。
|
|
4
|
+
// 完成判定不再依赖 prompt 钩子(PROMPT_COMMAND/PS1/prompt 函数——会被 oh-my-posh/p10k 覆盖),
|
|
5
|
+
// 改为在每条命令后追加独立一行的标记输出命令,免疫任何提示符框架。
|
|
6
|
+
import { DONE_TAG, SHELL_ID_PREFIX } from "./constants.js";
|
|
5
7
|
import { findLastMatch } from "./last-match.js";
|
|
6
|
-
// ===== 完成标记检测(在原始字节流中定位/剥离 <SSH_DONE:退出码>) =====
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
// ===== 完成标记检测(在原始字节流中定位/剥离 <SSH_DONE:seq:退出码>) =====
|
|
9
|
+
/** 匹配任意完成标记(含序号式 <SSH_DONE:seq:code> 与无序号 <SSH_DONE:code>,退出码在末尾);前缀取自 DONE_TAG,< 与 : 在正则中均为字面量 */
|
|
10
|
+
const DONE_RE = new RegExp(DONE_TAG + "(?:\\d+:)?(-?\\d+)>", "g");
|
|
11
|
+
/** 检测指定序号命令的完成标记 */
|
|
12
|
+
function doneSeqRe(seq) {
|
|
13
|
+
return new RegExp(`${DONE_TAG}${seq}:(-?\\d+)>`, "g");
|
|
14
|
+
}
|
|
15
|
+
/** 终端中断回显:Ctrl-C 由 TTY 层回显为 ^C(ECHOCTL 开启),与 shell 框架无关 */
|
|
16
|
+
const INTERRUPT_ECHO = "^C";
|
|
17
|
+
/**
|
|
18
|
+
* 判断命令是否完成:检测指定序号 <SSH_DONE:seq:<码>> 的完成标记(只认当前命令,防残留误判)
|
|
19
|
+
* @param buffer 原始字节流
|
|
20
|
+
* @param fromPos 搜索起点
|
|
21
|
+
* @param seq 当前命令序号
|
|
22
|
+
*/
|
|
23
|
+
export function detectLastDoneMarker(buffer, fromPos, seq) {
|
|
24
|
+
const m = findLastMatch(doneSeqRe(seq), buffer, fromPos);
|
|
11
25
|
if (!m)
|
|
12
26
|
return { done: false, exitCode: 0, pos: 0 };
|
|
13
27
|
return { done: true, exitCode: parseInt(m[1], 10) || 0, pos: m.index + m[0].length };
|
|
@@ -15,44 +29,378 @@ export function detectLastDoneMarker(buffer, fromPos) {
|
|
|
15
29
|
export function stripMarkers(raw) {
|
|
16
30
|
return raw.replace(DONE_RE, "");
|
|
17
31
|
}
|
|
18
|
-
|
|
32
|
+
/** 检测从指定位置起是否出现中断回显 ^C(命令被 Ctrl-C 中断) */
|
|
33
|
+
export function detectInterrupt(buffer, fromPos) {
|
|
34
|
+
const idx = buffer.indexOf(INTERRUPT_ECHO, fromPos);
|
|
35
|
+
return { interrupted: idx >= 0, pos: idx >= 0 ? idx : 0 };
|
|
36
|
+
}
|
|
37
|
+
// ===== Shell 类型探测与标记命令 =====
|
|
38
|
+
/**
|
|
39
|
+
* 提取 POSIX heredoc 分隔符(`<<EOF` / `<<-EOF` / `<<'EOF'` / `<<"EOF"`),无则返回 null。
|
|
40
|
+
* 逐字符扫描并跟踪 `'`/`"` 引号状态,只对引号外的 `<<` 尝试匹配分隔符;
|
|
41
|
+
* 避免 `echo "a << b"`、`grep '<<EOF' file` 这类引号内的 `<<` 被误判为 heredoc 起始。
|
|
42
|
+
* @param line 当前行文本
|
|
43
|
+
* @returns 引号外首个合法 heredoc 的分隔符;不存在则 null
|
|
44
|
+
*/
|
|
45
|
+
function heredocDelim(line) {
|
|
46
|
+
let inSingle = false;
|
|
47
|
+
let inDouble = false;
|
|
48
|
+
let escaped = false;
|
|
49
|
+
for (let i = 0; i < line.length; i++) {
|
|
50
|
+
const c = line[i];
|
|
51
|
+
if (escaped) {
|
|
52
|
+
escaped = false;
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
if (c === "\\" && !inSingle) {
|
|
56
|
+
escaped = true;
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
if (c === "'" && !inDouble) {
|
|
60
|
+
inSingle = !inSingle;
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
if (c === '"' && !inSingle) {
|
|
64
|
+
inDouble = !inDouble;
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
if (inSingle || inDouble)
|
|
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];
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
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)` 臂产生的负括号深度。
|
|
99
|
+
* @param s 命令文本
|
|
100
|
+
* @returns true 表示 shell 会等待续行
|
|
101
|
+
*/
|
|
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
|
+
// 引号感知扫描 `@` 之前的部分:反引号转义下一字符,判断 `@` 处是否在引号外
|
|
188
|
+
let inSingle = false;
|
|
189
|
+
let inDouble = false;
|
|
190
|
+
let escaped = false;
|
|
191
|
+
for (let i = 0; i < n - 2; i++) {
|
|
192
|
+
const c = trimmed[i];
|
|
193
|
+
if (escaped) {
|
|
194
|
+
escaped = false;
|
|
195
|
+
continue;
|
|
196
|
+
}
|
|
197
|
+
if (c === "`") {
|
|
198
|
+
escaped = true;
|
|
199
|
+
continue;
|
|
200
|
+
}
|
|
201
|
+
if (c === "'" && !inDouble) {
|
|
202
|
+
inSingle = !inSingle;
|
|
203
|
+
continue;
|
|
204
|
+
}
|
|
205
|
+
if (c === '"' && !inSingle) {
|
|
206
|
+
inDouble = !inDouble;
|
|
207
|
+
continue;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
if (inSingle || inDouble)
|
|
211
|
+
return null;
|
|
212
|
+
return quote + "@";
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
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 无双引号续行语义:未闭合双引号不代表等待输入,故不作为续行依据(避免合法命令被拒)。
|
|
288
|
+
* @param s 命令文本
|
|
289
|
+
* @returns true 表示 shell 会等待续行
|
|
290
|
+
*/
|
|
291
|
+
function cmdOpenContinuation(s) {
|
|
292
|
+
let inDouble = false;
|
|
293
|
+
let parenDepth = 0;
|
|
294
|
+
for (let i = 0; i < s.length; i++) {
|
|
295
|
+
const c = s[i];
|
|
296
|
+
if (c === "^") {
|
|
297
|
+
i++;
|
|
298
|
+
continue;
|
|
299
|
+
} // ^ 转义下一个字符
|
|
300
|
+
if (c === '"') {
|
|
301
|
+
inDouble = !inDouble;
|
|
302
|
+
continue;
|
|
303
|
+
}
|
|
304
|
+
if (inDouble)
|
|
305
|
+
continue;
|
|
306
|
+
if (c === "(")
|
|
307
|
+
parenDepth++;
|
|
308
|
+
else if (c === ")")
|
|
309
|
+
parenDepth--;
|
|
310
|
+
}
|
|
311
|
+
return parenDepth > 0 || /\^\s*$/.test(s);
|
|
312
|
+
}
|
|
19
313
|
class ZshAdapter {
|
|
20
314
|
name = "zsh";
|
|
21
315
|
probeCommand = `echo ${SHELL_ID_PREFIX}$0`;
|
|
22
|
-
|
|
23
|
-
|
|
316
|
+
stmtSep = ";";
|
|
317
|
+
markerCmd(seq) {
|
|
318
|
+
// 结尾补换行:否则 zsh 判定"上条输出未以换行结束",会补印 PROMPT_EOL_MARK(root 为 #)污染画面
|
|
319
|
+
return `printf '\\n${DONE_TAG}${seq}:%s>\\n' $?`;
|
|
320
|
+
}
|
|
321
|
+
groupWrap(body) {
|
|
322
|
+
// `{ }` 命令组在当前作用域执行(保留 cd/变量);未闭合的 `{` 会让 zsh 进入 PS2 续行,
|
|
323
|
+
// 整段多行输入被当作一条命令解析
|
|
324
|
+
return `{ ${body}\n}`;
|
|
24
325
|
}
|
|
25
|
-
|
|
26
|
-
return
|
|
326
|
+
hasOpenContinuation(command) {
|
|
327
|
+
return posixOpenContinuation(command);
|
|
328
|
+
}
|
|
329
|
+
parseProbe(output) {
|
|
330
|
+
// login shell 的 $0 带 - 前缀(-zsh),须容忍
|
|
331
|
+
return new RegExp(`${SHELL_ID_PREFIX}-?zsh|(?:^|\\W)zsh(?:\\W|$)`, "i").test(output);
|
|
27
332
|
}
|
|
28
333
|
}
|
|
29
334
|
// ===== Bash 系(bash / sh) =====
|
|
30
335
|
class BashAdapter {
|
|
31
336
|
name = "bash";
|
|
32
337
|
probeCommand = `echo ${SHELL_ID_PREFIX}$0`;
|
|
33
|
-
|
|
34
|
-
|
|
338
|
+
stmtSep = ";";
|
|
339
|
+
markerCmd(seq) {
|
|
340
|
+
// bash 无 PROMPT_EOL_MARK,标记无需补尾换行(补了反而在 raw 里多顶一行)
|
|
341
|
+
return `printf '\\n${DONE_TAG}${seq}:%s>' $?`;
|
|
35
342
|
}
|
|
36
|
-
|
|
37
|
-
|
|
343
|
+
groupWrap(body) {
|
|
344
|
+
// `{ }` 命令组在当前作用域执行(保留 cd/变量);未闭合的 `{` 会让 bash 进入 PS2 续行
|
|
345
|
+
return `{ ${body}\n}`;
|
|
346
|
+
}
|
|
347
|
+
hasOpenContinuation(command) {
|
|
348
|
+
return posixOpenContinuation(command);
|
|
349
|
+
}
|
|
350
|
+
parseProbe(output) {
|
|
351
|
+
// login shell 的 $0 带 - 前缀(-bash),须容忍
|
|
352
|
+
return new RegExp(`${SHELL_ID_PREFIX}-?(?:bash|sh)\\b|(?:^|\\W)(?:bash|sh)(?:\\W|$)`, "i").test(output);
|
|
38
353
|
}
|
|
39
354
|
}
|
|
40
355
|
// ===== PowerShell =====
|
|
41
356
|
class PwshAdapter {
|
|
42
357
|
name = "pwsh";
|
|
43
|
-
probeCommand = `
|
|
44
|
-
|
|
45
|
-
|
|
358
|
+
probeCommand = `Write-Output ${SHELL_ID_PREFIX}pwsh_$PSHOME`;
|
|
359
|
+
stmtSep = ";";
|
|
360
|
+
markerCmd(seq) {
|
|
361
|
+
// 用 Write-Output(success 管线)而非 Write-Host:Write-Host 直写 host 流会抢在
|
|
362
|
+
// cmdlet 输出(经格式化器批量渲染)之前,导致 marker 落在命令输出之前、提取时把输出裁掉
|
|
363
|
+
return `Write-Output "${DONE_TAG}${seq}:$LASTEXITCODE>"`;
|
|
364
|
+
}
|
|
365
|
+
groupWrap(body) {
|
|
366
|
+
// 点源 `. { }` 在当前作用域执行(保留变量/状态);不可用 `& { }`(子作用域会丢变量/状态)。
|
|
367
|
+
// 未闭合的 `{` 会让 pwsh 进入续行,整段多行输入被当作一条命令解析
|
|
368
|
+
return `. { ${body}\n}`;
|
|
369
|
+
}
|
|
370
|
+
hasOpenContinuation(command) {
|
|
371
|
+
return pwshOpenContinuation(command);
|
|
372
|
+
}
|
|
373
|
+
parseProbe(output) {
|
|
374
|
+
// Write-Output __SHELL_ID__pwsh_$PSHOME → pwsh 展开为路径;cmd 下 $PSHOME 不被展开(字面保留 $),借此区分
|
|
375
|
+
return /__SHELL_ID__pwsh_[^$]/.test(output);
|
|
46
376
|
}
|
|
47
|
-
|
|
48
|
-
|
|
377
|
+
}
|
|
378
|
+
// ===== Windows cmd.exe =====
|
|
379
|
+
class CmdAdapter {
|
|
380
|
+
name = "cmd";
|
|
381
|
+
probeCommand = `echo ${SHELL_ID_PREFIX}%COMSPEC%`;
|
|
382
|
+
stmtSep = "&";
|
|
383
|
+
markerCmd(seq) {
|
|
384
|
+
return `echo ${DONE_TAG}${seq}:%errorlevel%>`;
|
|
385
|
+
}
|
|
386
|
+
groupWrap(_body) {
|
|
387
|
+
// cmd 不包组:组内 `%errorlevel%` 是解析期展开,退出码会失真;保持原样逐行执行
|
|
388
|
+
return null;
|
|
389
|
+
}
|
|
390
|
+
hasOpenContinuation(command) {
|
|
391
|
+
return cmdOpenContinuation(command);
|
|
392
|
+
}
|
|
393
|
+
parseProbe(output) {
|
|
394
|
+
// echo __SHELL_ID__%COMSPEC% → cmd 展开为 __SHELL_ID__C:\...cmd.exe(无 % 原样遗留即判为 cmd)
|
|
395
|
+
return /__SHELL_ID__(?!%)\S*cmd\.exe/i.test(output);
|
|
49
396
|
}
|
|
50
397
|
}
|
|
51
|
-
/**
|
|
52
|
-
const adapters = [
|
|
398
|
+
/** 注册表(探测顺序:先 POSIX 系,后 pwsh/cmd;resolveByProbe 由 _probeShell 改用各适配器 probeCommand 逐个探测) */
|
|
399
|
+
export const adapters = [
|
|
53
400
|
new ZshAdapter(),
|
|
54
401
|
new BashAdapter(),
|
|
55
402
|
new PwshAdapter(),
|
|
403
|
+
new CmdAdapter(),
|
|
56
404
|
];
|
|
57
405
|
/**
|
|
58
406
|
* 根据探测结果选择适配器
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell-adapter.js","sourceRoot":"","sources":["../src/shell-adapter.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,mDAAmD;AACnD,wCAAwC;AAExC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AACtI,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAU/C,kDAAkD;AAElD,MAAM,OAAO,GAAG,qBAAqB,CAAA;AAErC,MAAM,UAAU,oBAAoB,CAAC,MAAc,EAAE,OAAe;IAClE,kDAAkD;IAClD,MAAM,CAAC,GAAG,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;IACjD,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAA;IACnD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAA;AACtF,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;AACjC,CAAC;AAED,8BAA8B;AAC9B,MAAM,UAAU;IACL,IAAI,GAAG,KAAK,CAAA;IACZ,YAAY,GAAG,QAAQ,eAAe,IAAI,CAAA;IACnD,UAAU,CAAC,MAAc;QACvB,OAAO,IAAI,MAAM,CAAC,GAAG,eAAe,2BAA2B,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACpF,CAAC;IACD,iBAAiB;QACf,OAAO,QAAQ,QAAQ,qBAAqB,YAAY,EAAE,CAAA;IAC5D,CAAC;CACF;AAED,gCAAgC;AAChC,MAAM,WAAW;IACN,IAAI,GAAG,MAAM,CAAA;IACb,YAAY,GAAG,QAAQ,eAAe,IAAI,CAAA;IACnD,UAAU,CAAC,MAAc;QACvB,OAAO,IAAI,MAAM,CAAC,GAAG,eAAe,0CAA0C,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACnG,CAAC;IACD,iBAAiB;QACf,OAAO,6DAA6D,aAAa,2BAA2B,QAAQ,eAAe,aAAa,uDAAuD,YAAY,EAAE,CAAA;IACvN,CAAC;CACF;AAED,yBAAyB;AACzB,MAAM,WAAW;IACN,IAAI,GAAG,MAAM,CAAA;IACb,YAAY,GAAG,QAAQ,eAAe,IAAI,CAAA;IACnD,UAAU,CAAC,OAAe;QACxB,OAAO,IAAI,CAAA;IACb,CAAC;IACD,iBAAiB;QACf,OAAO,8MAA8M,WAAW,gBAAgB,WAAW,yBAAyB,OAAO,4BAA4B,UAAU,aAAa,QAAQ,oBAAoB,WAAW,sBAAsB,OAAO,oBAAoB,UAAU,oKAAoK,WAAW,uFAAuF,WAAW,uBAAuB,WAAW,cAAc,YAAY,EAAE,CAAA;IACjwB,CAAC;CACF;AAED,kBAAkB;AAClB,MAAM,QAAQ,GAAmB;IAC/B,IAAI,UAAU,EAAE;IAChB,IAAI,WAAW,EAAE;IACjB,IAAI,WAAW,EAAE;CAClB,CAAA;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,WAAmB;IAChD,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC;YAAE,OAAO,CAAC,CAAA;IACzC,CAAC;IACD,cAAc;IACd,OAAO,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;AACtC,CAAC"}
|
|
1
|
+
{"version":3,"file":"shell-adapter.js","sourceRoot":"","sources":["../src/shell-adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.d.ts
CHANGED
|
@@ -2,11 +2,13 @@
|
|
|
2
2
|
* 定位命令回显行在原始流中的结束位置(供流式增量定位使用):
|
|
3
3
|
* 丢弃窗口开头到"命令回显行结束"之前的一切内容(提示符、PS1 填充、光标定位噪音均在内)。
|
|
4
4
|
* 命令回显行 = 命令文本首次出现所在行(命令本身可能含 \033 等转义)。
|
|
5
|
+
* 命令文本后允许任意行内字符直到行尾:命令可能被追加完成标记(如 `cmd ;printf '<SSH_DONE…>'`),
|
|
6
|
+
* 此时回显是整行拼接,不能要求命令后紧跟换行。
|
|
5
7
|
* @param raw 原始终端流(含 ANSI)
|
|
6
8
|
* @param command 本次执行的命令文本
|
|
7
9
|
* @returns 命令回显结束后的字节偏移;未命中命令文本返回 0(此时应视作输出尚未开始)
|
|
8
10
|
*/
|
|
9
|
-
export declare function extractOutputStart(raw: string, command: string): number;
|
|
11
|
+
export declare function extractOutputStart(raw: string, command: string, endBound?: number): number;
|
|
10
12
|
/**
|
|
11
13
|
* 剥离"提示符 + 命令回显",只保留程序纯输出:
|
|
12
14
|
* shell 提示符(含背景填充、zle 重绘序列)依赖其自身终端屏幕状态,字节流脱离该状态无法忠实还原,
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAWA
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAWA;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,SAAa,GAAG,MAAM,CA6B9F;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAIlE;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAO/C;AAgJD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAI1C"}
|
package/dist/utils.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// 工具函数:命令回显定位、模型文本清理、ANSI 清洗、CR 覆盖合并、完成标记剥离
|
|
2
2
|
import { stripMarkers } from "./shell-adapter.js";
|
|
3
|
-
import {
|
|
3
|
+
import { findLastEndOfBefore } from "./last-match.js";
|
|
4
4
|
/** 正则转义文本 */
|
|
5
5
|
const escRe = (s) => s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
6
6
|
/** 命令回显匹配的宽松字符间隙(ANSI 序列或普通空白/换行,可插在命令字符之间;容忍终端列宽自动换行) */
|
|
@@ -9,24 +9,43 @@ const ECHO_WIDE = "(?:\\x1b\\[[0-9;?]*[a-zA-Z]|\\x1b\\][^\\x07\\x1b]*(?:\\x07|\\
|
|
|
9
9
|
* 定位命令回显行在原始流中的结束位置(供流式增量定位使用):
|
|
10
10
|
* 丢弃窗口开头到"命令回显行结束"之前的一切内容(提示符、PS1 填充、光标定位噪音均在内)。
|
|
11
11
|
* 命令回显行 = 命令文本首次出现所在行(命令本身可能含 \033 等转义)。
|
|
12
|
+
* 命令文本后允许任意行内字符直到行尾:命令可能被追加完成标记(如 `cmd ;printf '<SSH_DONE…>'`),
|
|
13
|
+
* 此时回显是整行拼接,不能要求命令后紧跟换行。
|
|
12
14
|
* @param raw 原始终端流(含 ANSI)
|
|
13
15
|
* @param command 本次执行的命令文本
|
|
14
16
|
* @returns 命令回显结束后的字节偏移;未命中命令文本返回 0(此时应视作输出尚未开始)
|
|
15
17
|
*/
|
|
16
|
-
export function extractOutputStart(raw, command) {
|
|
18
|
+
export function extractOutputStart(raw, command, endBound = raw.length) {
|
|
17
19
|
const cmd = command.trim();
|
|
18
20
|
if (!cmd)
|
|
19
21
|
return 0;
|
|
20
|
-
//
|
|
21
|
-
// 1)
|
|
22
|
+
// 单条宽松正则一次性匹配命令回显(支持多行命令):
|
|
23
|
+
// 1) 命令字符间容忍 ANSI 间隙(ECHO_WIDE)
|
|
24
|
+
// 2) 命令字面 \033 回显可能变真实 ESC(二选一)
|
|
25
|
+
// 3) 每段命令文本后允许任意行内字符直到行尾([^\r\n]*),兼容追加的完成标记命令
|
|
26
|
+
// 4) 多行命令:bash 逐行回显,行间可能夹 prompt 文本与 ANSI,用宽松段间匹配连接
|
|
22
27
|
const norm = cmd.replace(/\\033/gi, "\x1b");
|
|
23
|
-
const frags = [...norm].map((c) => (c === "\x1b" ? "(?:\\x1b|\\\\033)" : escRe(c)));
|
|
24
|
-
// 要求命令文本(及尾部 ANSI 重置序列)后紧跟行尾(\r?\n 或串尾),避免子 shell 输出内命令字(如 zsh: not found)误匹配
|
|
25
28
|
const TAIL_ANSI = "(?:\\x1b\\[[0-9;?]*[a-zA-Z]|\\x1b\\][^\\x07\\x1b]*(?:\\x07|\\x1b\\\\)|\\x1b[^\\x1b])*";
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
29
|
+
// 行尾:容忍 \r 后跟 ANSI(如 bracketed paste off \x1b[?2004l)再换行,或直接 \n/字符串末尾
|
|
30
|
+
const LINE_END = "(?:(?:\\r?" + TAIL_ANSI + ")\\r?\\n|\\r?$)";
|
|
31
|
+
const lineOf = (line) => {
|
|
32
|
+
const frags = [...line].map((c) => (c === "\x1b" ? "(?:\\x1b|\\\\033)" : escRe(c)));
|
|
33
|
+
// 字符间隙:容忍 ANSI/空白;并容忍 readline 折行重绘在折行处**重复前一个字符**
|
|
34
|
+
// (超宽命令回显会多出边界字符,如 `...libayatan\r\n\x1b[39;120Hna-...`,精确匹配会失败)
|
|
35
|
+
const gap = (prev) => ECHO_WIDE + "(?:\\r?\\n" + TAIL_ANSI + prev + ECHO_WIDE + ")?";
|
|
36
|
+
let out = frags[0] ?? "";
|
|
37
|
+
for (let i = 1; i < frags.length; i++)
|
|
38
|
+
out += gap(frags[i - 1]) + frags[i];
|
|
39
|
+
return out + TAIL_ANSI + "[^\\r\\n]*";
|
|
40
|
+
};
|
|
41
|
+
const lines = norm.split("\n");
|
|
42
|
+
// 段间匹配:容忍任意行(prompt、输出行等)直到下一段命令,再用 ECHO_WIDE 收紧命令字符间隙
|
|
43
|
+
const BETWEEN = "[\\s\\S]*?";
|
|
44
|
+
const re = new RegExp(lines.map(lineOf).join(BETWEEN + ECHO_WIDE) + "(?:" + LINE_END + ")", "g");
|
|
45
|
+
// 取 [0, endBound) 范围内最后一次匹配:备屏退出(如 cmatrix)会重放主屏历史,
|
|
46
|
+
// 其中含旧命令回显,只有最后一次出现的回显之后才是本次命令的真实输出;
|
|
47
|
+
// endBound 限到完成标记之前,避免连续输入时后续裸命令回显把定位带偏
|
|
48
|
+
return findLastEndOfBefore(re, raw, 0, endBound);
|
|
30
49
|
}
|
|
31
50
|
/**
|
|
32
51
|
* 剥离"提示符 + 命令回显",只保留程序纯输出:
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
package/dist/web/app.css
CHANGED
|
@@ -5,10 +5,15 @@
|
|
|
5
5
|
}
|
|
6
6
|
|
|
7
7
|
html, body { margin: 0; height: 100%; background: #0d1117; color: #c9d1d9; font-family: system-ui, sans-serif; }
|
|
8
|
-
|
|
8
|
+
body { display: flex; flex-direction: column; }
|
|
9
|
+
header { position: sticky; top: 0; flex: 0 0 auto; display: flex; align-items: center; gap: 12px; padding: 10px 16px; background: #161b22; border-bottom: 1px solid #30363d; }
|
|
9
10
|
header h1 { margin: 0; font-size: 14px; color: #e6edf3; font-weight: 600; }
|
|
10
11
|
select { background: #21262d; color: #c9d1d9; border: 1px solid #30363d; padding: 4px 8px; border-radius: 6px; }
|
|
11
|
-
pre { margin: 0; padding: 16px
|
|
12
|
+
pre { margin: 0; padding: 16px; flex: 1 1 auto; min-height: 0; font-family: "CaskaydiaCove Nerd Font Mono", "Cascadia Code", "Fira Code", "JetBrains Mono", "Noto Sans Mono", "Hack", Consolas, "Courier New", monospace; font-size: 13px; line-height: 1.5; white-space: pre-wrap; overflow: auto; box-sizing: border-box; color: #c9d1d9; }
|
|
13
|
+
#xt { display: none; padding: 8px 12px; flex: 1 1 auto; min-height: 0; box-sizing: border-box; overflow: auto; }
|
|
14
|
+
body.debug #xt { display: flex; }
|
|
15
|
+
#xt > .xterm { margin: auto; }
|
|
16
|
+
body.debug #term { display: none; }
|
|
12
17
|
.row { display: flex; align-items: stretch; }
|
|
13
18
|
.row .t { box-sizing: border-box; flex: 0 0 172px; color: #8b949e; padding: 0 10px 0 6px; border-right: 1px solid #30363d; white-space: pre; }
|
|
14
19
|
.row .c { flex: 1; padding-left: 12px; white-space: pre; }
|
|
@@ -23,21 +28,21 @@ body:not(.show-time) .row .t { display: none; }
|
|
|
23
28
|
::-webkit-scrollbar-corner { background: #161b22; }
|
|
24
29
|
* { scrollbar-width: thin; scrollbar-color: #30363d #161b22; }
|
|
25
30
|
.to-bottom-btn {
|
|
26
|
-
|
|
27
|
-
background: #238636; color: #fff; border: none; border-radius:
|
|
28
|
-
padding:
|
|
29
|
-
box-shadow: 0 4px 12px rgba(0,0,0,.4);
|
|
31
|
+
display: none; margin-left: auto;
|
|
32
|
+
background: #238636; color: #fff; border: none; border-radius: 6px;
|
|
33
|
+
padding: 4px 10px; font-size: 12px; cursor: pointer; white-space: nowrap;
|
|
30
34
|
}
|
|
31
35
|
.to-bottom-btn:hover { background: #2ea043; }
|
|
32
36
|
.sep hr { border: none; border-top: 1px dashed #30363d; margin: 8px 0; }
|
|
33
37
|
.del-btn { background: none; border: 1px solid #30363d; color: #f85149; border-radius: 4px; cursor: pointer; padding: 2px 8px; font-size: 14px; line-height: 1; display: none; }
|
|
34
38
|
.del-btn:hover { background: #f85149; color: #fff; }
|
|
35
39
|
.del-btn.show { display: inline-block; }
|
|
36
|
-
#cmdbar {
|
|
40
|
+
#cmdbar { flex: 0 0 auto; display: flex; gap: 6px; padding: 8px 16px; border-top: 1px solid #30363d; }
|
|
37
41
|
#cmdInput { flex: 1; box-sizing: border-box; background: #0d1117; color: #c9d1d9; border: 1px solid #30363d; border-radius: 6px; padding: 8px 12px; font-family: "CaskaydiaCove Nerd Font Mono", "Cascadia Code", "Fira Code", "JetBrains Mono", "Noto Sans Mono", "Hack", Consolas, "Courier New", monospace; font-size: 13px; outline: none; resize: none; max-height: 120px; overflow-y: auto; }
|
|
38
42
|
#cmdInput:focus { border-color: #58a6ff; }
|
|
39
43
|
#cmdInput:disabled { opacity: 0.4; }
|
|
40
44
|
#cmdKey { flex: 0 0 auto; width: 72px; text-align: center; background: #21262d; color: #c9d1d9; border: 1px solid #30363d; border-radius: 6px; padding: 8px 6px; font-size: 12px; white-space: nowrap; overflow: hidden; cursor: crosshair; user-select: none; display: flex; align-items: center; justify-content: center; transition: border-color .15s; }
|
|
41
45
|
#cmdKey.capture { border-color: #e67e22; animation: pulse 0.6s ease-in-out infinite alternate; }
|
|
42
46
|
#cmdKey.disabled { opacity: 0.35; cursor: default; }
|
|
47
|
+
.tgl.disabled { opacity: 0.35; pointer-events: none; }
|
|
43
48
|
@keyframes pulse { from { opacity: 0.6; } to { opacity: 1; } }
|