@xiaoqiong0v0/opencode-ssh-tool 0.6.12 → 0.6.14

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 CHANGED
@@ -9,6 +9,8 @@ opencode 插件:让 opencode 像人一样操作**长驻交互式终端会话**
9
9
  - **权限管控**:只读白名单直接放行、危险命令黑名单硬拒、其余走 `context.ask()` 用户审批
10
10
  - **命令完成判定**:完成标记法(`<SSH_DONE:seq:退出码>`)+ 静默窗口 + 动画检测(进度条等长输出自动识别)三重判定;**断连兜底,不设超时强杀**(长命令由 Ctrl-C 干预);未闭合引号/反引号等会触发 shell 续行的命令提交前拦截
11
11
  - **双视图**:transcript(命令+输出消息对)与 raw(xterm.js 实时画面,支持 vi/top 等全屏程序);终端尺寸前后端一致固定 `120×40`
12
+ - **直接输入(焦点驱动)**:浏览器内直接向交互式程序输入。默认「命令框优先」——按键留在浏览器,回车走 `exec` 提交命令;点终端区域(transcript `#term` / raw `#xt`)或入口按钮 `#cmdKey` 切换为直接输入,按键按**真实控制字节**经 `send` keystroke 通道发往终端(**不产生 `exec`、不写命令记录**);焦点回到命令框等可编辑控件即自动关闭;状态**不持久化**,每次打开都从命令框优先开始;离线/断线时入口不可点击、按键一律不发送
13
+ - **SSH 保活 + WS 心跳**:SSH 层按 `ServerAliveInterval` 语义定期发 `keepalive@openssh.com`(连接层**带外**消息,不写 channel/PTY),连续 3 次无响应判连接死亡并断连;WS 层 server 每 25s 下发 `ping`、10s 无 `pong` 判半开并断开,客户端静默超 2×间隔即主动断开重连——**保活与心跳都不写入 PTY,不污染终端输出与完成标记**
12
14
  - **历史消息对**:命令+输出 全部存文件(`~/.opencode/plugins-cache/opencode-ssh-tool/<会话>/`),按对数保留(默认 100 对),重启不丢、会话关闭清理
13
15
  - **HTTP 终端查看**:默认开启本地服务,浏览器打开可查看终端记录(WebSocket 实时推送,无轮询)
14
16
  - **多语言**:`toolLang`(工具描述/CLI/session 文案)与 `webLang`(页面 UI)独立配置,默认英文;环境变量 `SSH_TOOL_LANG` / `SSH_WEB_LANG` 分别覆盖
@@ -125,7 +127,7 @@ term_cli exec(command)
125
127
  浏览器访问 http://127.0.0.1:<port> 查看终端记录(WebSocket 实时推送)
126
128
  ```
127
129
 
128
- 页面按会话/终端切换,transcript 展示「命令 + 输出」历史对,raw 展示 xterm.js 实时画面。
130
+ 页面按会话/终端切换,transcript 展示「命令 + 输出」历史对,raw 展示 xterm.js 实时画面。底部命令框提交命令;交互式程序(sudo 密码、REPL 等)需要逐键输入时,点终端区域或入口按钮切到**直接输入**(见「特性」),按键实时发往终端。
129
131
 
130
132
  ## 架构
131
133
 
@@ -146,6 +148,7 @@ npm run build # tsc:src → dist
146
148
  ```
147
149
 
148
150
  - TS 源码在 `src/`,编译产物 `dist/`
151
+ - **`SERVER_PROTO_VERSION`**(`src/constants.ts`):独立 HTTP 服务的代码/协议版本,server 启动写入 `server.json` 的 `proto` 字段,`ensureServer` 发现不符即杀旧进程重启。**改动服务端注入的页面模板(`web/src/index.html`)或 i18n 文案后必须递增该值**——否则常驻旧 server 注入的 `__I18N__`/占位符会与新版前端不一致,页面渲染出 `undefined`(旧注入 + 新前端)
149
152
  - 本地测试:编译产物挂载到测试项目 `.opencode/` 文件夹,在该项目启动 opencode 验证
150
153
  - 日志:`@xiaoqiong0v0/opencode-plugin-logger` 按天滚动落盘
151
154
 
package/dist/agent.d.ts CHANGED
@@ -12,8 +12,6 @@ export interface AgentSession {
12
12
  done: boolean;
13
13
  };
14
14
  getRunningCommand(): string;
15
- /** 设置是否保持 busy(排队序列期间为 true,最后一条完成才清) */
16
- setHoldBusy(hold: boolean): void;
17
15
  /** 设置命令生命周期监听器(cmdStart/cmdDone 事件源) */
18
16
  setLifecycle(listener: ((ev: {
19
17
  type: "start";
@@ -25,6 +23,8 @@ export interface AgentSession {
25
23
  endTs: number;
26
24
  output?: string;
27
25
  }) => void) | null): void;
26
+ /** 设置数据到达监听器(终端有新输出时回调,供事件驱动推流;null 清除) */
27
+ setDataListener(listener: (() => void) | null): void;
28
28
  /** 读取原始字节流增量 */
29
29
  readRawStream(pos: number): {
30
30
  data: string;
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAMA,+CAA+C;AAC/C,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACvC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACnD,KAAK,IAAI,IAAI,CAAA;IACb,gBAAgB,IAAI,OAAO,CAAA;IAC3B,gBAAgB,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,CAAA;IACnD,iBAAiB,IAAI,MAAM,CAAA;IAC3B,yCAAyC;IACzC,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAA;IAChC,wCAAwC;IACxC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA;IAC/K,gBAAgB;IAChB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,CAAA;IAC1E,8CAA8C;IAC9C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAC5B;AAED,WAAW;AACX,MAAM,WAAW,WAAW;IAC1B,KAAK,IAAI,IAAI,CAAA;IACb,0BAA0B;IAC1B,UAAU,IAAI,IAAI,CAAA;CACnB;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,MAAM,EACX,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,YAAY,GAAG,SAAS,EAC7E,YAAY,EAAE,MAAM,KAAK,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GAC7D,WAAW,CA6Qb"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAMA,+CAA+C;AAC/C,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACvC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACnD,KAAK,IAAI,IAAI,CAAA;IACb,gBAAgB,IAAI,OAAO,CAAA;IAC3B,gBAAgB,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,CAAA;IACnD,iBAAiB,IAAI,MAAM,CAAA;IAC3B,wCAAwC;IACxC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA;IAC/K,2CAA2C;IAC3C,eAAe,CAAC,QAAQ,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA;IACpD,gBAAgB;IAChB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,CAAA;IAC1E,8CAA8C;IAC9C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAC5B;AAED,WAAW;AACX,MAAM,WAAW,WAAW;IAC1B,KAAK,IAAI,IAAI,CAAA;IACb,0BAA0B;IAC1B,UAAU,IAAI,IAAI,CAAA;CACnB;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,MAAM,EACX,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,YAAY,GAAG,SAAS,EAC7E,YAAY,EAAE,MAAM,KAAK,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GAC7D,WAAW,CAoUb"}
package/dist/agent.js CHANGED
@@ -1,7 +1,7 @@
1
1
  // 代理客户端:插件进程连上独立服务(WS),注册本进程持有的会话,
2
2
  // 处理服务转发来的交互命令(run-exec / run-send / run-delete),并把实时流推给服务。
3
- import log, { debug, describeSend, infoDedup, infoDedupShared } from "./log.js";
4
- import { INTERACTIVE_BUSY_MS, HEARTBEAT_INTERVAL_MS, HEARTBEAT_CLIENT_TIMEOUT_MS } from "./constants.js";
3
+ import log, { debug, describeSend, infoDedup, infoDedupShared, tailLines } from "./log.js";
4
+ import { INTERACTIVE_BUSY_MS, HEARTBEAT_INTERVAL_MS, HEARTBEAT_CLIENT_TIMEOUT_MS, AGENT_PUSH_MIN_INTERVAL_MS } from "./constants.js";
5
5
  /**
6
6
  * 启动代理客户端:连接独立服务并注册会话,处理转发命令
7
7
  * @param url 服务 WS 地址(如 ws://127.0.0.1:PORT/ws)
@@ -12,8 +12,11 @@ import { INTERACTIVE_BUSY_MS, HEARTBEAT_INTERVAL_MS, HEARTBEAT_CLIENT_TIMEOUT_MS
12
12
  export function startAgent(url, resolveSession, listSessions) {
13
13
  let ws = null;
14
14
  let closed = false;
15
- let timer = null;
16
- /** 心跳检测定时器(与 pushStreams 的 timer 分开,断开时一并清理) */
15
+ /** 推流合并定时器(数据事件驱动:一次只挂一个 setTimeout,把窗口内多次到达合并成一帧) */
16
+ let pushTimer = null;
17
+ /** 最近一次实际推流时刻(毫秒),用于计算下一次最早可推时刻(节流合流) */
18
+ let lastPushAt = 0;
19
+ /** 心跳检测定时器(与推流合并定时器分开,断开时一并清理) */
17
20
  let hbTimer = null;
18
21
  /** 最近一次收到 server 应用层 ping 的时刻(毫秒);静默超过 HEARTBEAT_CLIENT_TIMEOUT_MS 即判定服务端半开 */
19
22
  let lastPingAt = 0;
@@ -24,19 +27,72 @@ export function startAgent(url, resolveSession, listSessions) {
24
27
  if (ws && ws.readyState === WebSocket.OPEN)
25
28
  ws.send(JSON.stringify(msg));
26
29
  };
30
+ /**
31
+ * 收集"当前正在运行命令"的终端集合(供 server 注册时对账)。
32
+ * 与 register.sessions(本进程认领的全部终端)配套:server 把"被认领但不在运行集合内"的
33
+ * 残留 busy 收尾,修复断线期间 cmdDone 丢失导致的僵尸 busy(server 内存 done=false 永不收尾)。
34
+ * 无法确定即返回 undefined(不臆测):某认领终端取不到句柄、或枚举抛异常时整体降级;
35
+ * server 收到非数组会只记一行"未能对账"并保持现状(宁可保留,也不误判在线命令已完成)。
36
+ * @returns 运行中终端列表;无法确定时 undefined
37
+ */
38
+ const collectRunning = () => {
39
+ try {
40
+ const out = [];
41
+ for (const { sessionID, name } of listSessions()) {
42
+ const s = resolveSession(sessionID, name);
43
+ if (!s)
44
+ return undefined; // 有认领却取不到句柄:该终端状态无法确定
45
+ if (s.hasRunningStream())
46
+ out.push({ sessionID, name });
47
+ }
48
+ return out;
49
+ }
50
+ catch {
51
+ return undefined;
52
+ }
53
+ };
27
54
  const register = () => {
28
- send({ type: "register", sessions: listSessions() });
55
+ // 同批上报认领的会话列表 + 其中真正运行命令的子集,供 server 注册时做运行态对账
56
+ send({ type: "register", sessions: listSessions(), running: collectRunning() });
57
+ // 注册后调度一次推流:挂接新增/重建会话的监听,并推送初始 raw(代次变化时带 reset)。
58
+ // 会话增删经 index.refreshAgent→reRegister 到这里,不依赖任何周期轮询。
59
+ schedulePush();
29
60
  };
30
61
  /** raw 增量游标:按会话实例代次记录已推位置;代次不同即新会话,从 0 重新读 */
31
62
  const rawPosMap = new Map();
32
63
  /** 已挂接生命周期监听的会话对象(按对象去重:同名会话断开重建是新对象,需重新挂接) */
33
64
  const lifeHooked = new WeakSet();
65
+ /** 已挂接数据到达监听的会话对象(按对象去重,同上:重建后的新对象需重新挂接) */
66
+ const dataHooked = new WeakSet();
34
67
  /** 会话执行队列:命令 busy 时 web 提交的命令排队,当前命令完成后依次执行(key=sessionID:name) */
35
68
  const execQueue = new Map();
36
69
  /** 各终端最近一次命令提交时间戳(busy 分流:<阈值视为连续命令排队,≥阈值视为交互输入 send) */
37
70
  const lastSubmitTs = new Map();
38
- /** 为某个会话挂接生命周期监听:cmdStart/cmdDone 由 BaseSession 精确发出(web exec 与插件 exec 统一来源) */
39
- const hookLifecycle = (key, session) => {
71
+ /**
72
+ * 事件驱动的推流调度(节流合并):由数据到达事件、注册/重连触发,取代原固定 100ms 轮询。
73
+ * - 空闲(无数据、无注册)时不挂任何定时器 → 零周期回调;
74
+ * - 到达时:距上次推流已满最小间隔则尽快推(wait=0,前沿),否则挂一个 setTimeout 等到满间隔再推,
75
+ * 窗口内多次到达只挂一个定时器、合并为一帧(尾沿),避免逐 chunk 打爆 WS;
76
+ * - 回调始终读取各会话最新游标,窗口内到达的数据必然被这一帧带走,绝不漏推。
77
+ */
78
+ const schedulePush = () => {
79
+ if (pushTimer !== null)
80
+ return;
81
+ const wait = Math.max(0, AGENT_PUSH_MIN_INTERVAL_MS - (Date.now() - lastPushAt));
82
+ pushTimer = setTimeout(() => {
83
+ pushTimer = null;
84
+ lastPushAt = Date.now();
85
+ pushStreams();
86
+ }, wait);
87
+ };
88
+ /** 为一个会话挂接监听:数据到达(驱动推流调度)+ 生命周期(cmdStart/cmdDone,BaseSession 精确发出) */
89
+ const hookSession = (key, session) => {
90
+ if (!dataHooked.has(session)) {
91
+ dataHooked.add(session);
92
+ // 会话每有新输出即调度一次合并推流:ssh2 的 stream.on("data") 与本地 PTY 的 data 回调
93
+ // 最终都汇入 BaseSession._appendBuffer,在那统一触发本监听
94
+ session.setDataListener(() => schedulePush());
95
+ }
40
96
  if (lifeHooked.has(session))
41
97
  return;
42
98
  lifeHooked.add(session);
@@ -87,11 +143,11 @@ export function startAgent(url, resolveSession, listSessions) {
87
143
  if (q && q.length === 0)
88
144
  execQueue.delete(key);
89
145
  if (next) {
90
- log.info(`agent 队列出队执行 ${sid}/${name}: ${next}`);
146
+ log.info(`agent 队列出队执行 ${sid}/${name} cmdLen=${next.length}`);
147
+ debug(`agent 队列出队命令 ${sid}/${name} cmd=${tailLines(next, 3)}`);
91
148
  return execQueued(sid, name, next);
92
149
  }
93
- // 队列已空:排队序列结束,放开 busy 保持
94
- resolveSession(sid, name)?.setHoldBusy(false);
150
+ // 队列已空:序列结束(各命令的 busy 由自身 cmdDone 生命周期收尾,无需额外状态处理)
95
151
  return;
96
152
  }).catch((e) => {
97
153
  log.error(`代理执行失败 ${sid}/${name}`, e instanceof Error ? e.message : String(e));
@@ -103,10 +159,10 @@ export function startAgent(url, resolveSession, listSessions) {
103
159
  if (q && q.length === 0)
104
160
  execQueue.delete(key);
105
161
  if (next) {
106
- log.info(`agent 队列异常后出队 ${sid}/${name}: ${next}`);
162
+ log.info(`agent 队列异常后出队 ${sid}/${name} cmdLen=${next.length}`);
163
+ debug(`agent 队列异常后出队命令 ${sid}/${name} cmd=${tailLines(next, 3)}`);
107
164
  return execQueued(sid, name, next);
108
165
  }
109
- resolveSession(sid, name)?.setHoldBusy(false);
110
166
  return;
111
167
  });
112
168
  };
@@ -116,7 +172,7 @@ export function startAgent(url, resolveSession, listSessions) {
116
172
  const key = `${sessionID}:${name}`;
117
173
  if (!session)
118
174
  continue;
119
- hookLifecycle(key, session);
175
+ hookSession(key, session);
120
176
  // 代次变化 = 同名会话已重建(新实例):丢弃旧游标从 0 重读;即使暂无新数据也要上报(带 reset),
121
177
  // 让 server 立即清空该 key 的 rawBuf 并给订阅者下发清屏,不能依赖"新数据恰好非空"
122
178
  const prev = rawPosMap.get(key);
@@ -201,7 +257,8 @@ export function startAgent(url, resolveSession, listSessions) {
201
257
  }
202
258
  lastPingAt = Date.now();
203
259
  hbTimer = setInterval(checkServerAlive, HEARTBEAT_INTERVAL_MS);
204
- timer = setInterval(pushStreams, 100);
260
+ // 推流不再挂固定周期定时器:register() 已调度一次(挂接监听 + 推送初始 raw/reset),
261
+ // 之后完全由数据到达事件驱动(见 schedulePush)。补播 cmdStart 见上,与推流周期无关。
205
262
  };
206
263
  ws.onmessage = (ev) => {
207
264
  let msg;
@@ -236,11 +293,13 @@ export function startAgent(url, resolveSession, listSessions) {
236
293
  // 间隔 ≥ 阈值仍 busy(用户给运行中的交互程序输入,如 sudo 密码/REPL)→ 原样 send 交程序。
237
294
  // 不再用 hasRunningStream() 单点猜测——快速命令窗口内到达的后续命令会被误判为交互输入而裸执行。
238
295
  const key = `${sid}:${name}`;
296
+ // 兜底挂接监听:正常由 register()→pushStreams 挂接;此处确保命令真正执行前生命周期/数据监听已生效
297
+ hookSession(key, session);
239
298
  const now = Date.now();
240
299
  const last = lastSubmitTs.get(key) ?? 0;
241
300
  lastSubmitTs.set(key, now);
242
301
  // 排队序列执行中(队列非空):新命令排队,等序列结束再执行;
243
- // 不能走 send(那是给交互程序的输入),也不能直接 exec(hold busy 会 quick-fail)
302
+ // 不能走 send(那是给交互程序的输入),也不能直接 exec(busy 期间 exec 会 quick-fail)
244
303
  if ((execQueue.get(key)?.length ?? 0) > 0) {
245
304
  execQueue.get(key).push(command);
246
305
  log.info(`agent run-exec 序列中排队 ${sid}/${name}: ${describeSend(command)} (队列 ${execQueue.get(key).length})`);
@@ -285,9 +344,9 @@ export function startAgent(url, resolveSession, listSessions) {
285
344
  }
286
345
  };
287
346
  ws.onclose = () => {
288
- if (timer) {
289
- clearInterval(timer);
290
- timer = null;
347
+ if (pushTimer) {
348
+ clearTimeout(pushTimer);
349
+ pushTimer = null;
291
350
  }
292
351
  if (hbTimer) {
293
352
  clearInterval(hbTimer);
@@ -307,9 +366,9 @@ export function startAgent(url, resolveSession, listSessions) {
307
366
  return {
308
367
  close: () => {
309
368
  closed = true;
310
- if (timer) {
311
- clearInterval(timer);
312
- timer = null;
369
+ if (pushTimer) {
370
+ clearTimeout(pushTimer);
371
+ pushTimer = null;
313
372
  }
314
373
  if (hbTimer) {
315
374
  clearInterval(hbTimer);
package/dist/agent.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
@@ -32,21 +32,41 @@ export declare abstract class BaseSession {
32
32
  protected readonly _interruptProbeIntervalMs: number;
33
33
  protected _connected: boolean;
34
34
  protected _remoteBusy: boolean;
35
- /**
36
- * 是否保持 busy:排队命令顺序执行时,中间某条完成也不清 busy,
37
- * 直到序列最后一条完成(否则 web/status 会在中间命令间隙闪 busy=false)。
38
- */
39
- private _holdBusy;
40
35
  protected _buffer: string;
41
36
  protected _connectedAt: number;
42
37
  protected _lastActive: number;
43
38
  protected _runningStartPos: number | null;
44
39
  protected _runningCommand: string;
45
40
  protected _watchTimer: ReturnType<typeof setInterval> | null;
46
- /** 命令序号(完成标记 <SSH_DONE:seq:code> 标识本次命令,防残留误判) */
41
+ /** 后台兜底判定的捕获窗口起点(相对 buffer;submit 为 0,exec 转后台为 captureStart) */
42
+ private _watchStartPos;
43
+ /** 后台兜底判定写入 history 用的命令(独立保存,避免运行上下文清理后取不到) */
44
+ private _watchCommand;
45
+ /** 语法错误安静窗口的一次性定时器(数据到达时重置;到点即收尾,非轮询) */
46
+ private _syntaxTimer;
47
+ /** 语法错误首次识别时刻(0=尚未识别) */
48
+ private _syntaxSeenAt;
49
+ /** 语法错误静默判定起点(识别后输出最后一次变化的时刻) */
50
+ private _syntaxQuietAt;
51
+ /** 语法错误识别后观测到的输出长度(判断输出是否仍在变化) */
52
+ private _syntaxLen;
53
+ /** exec 同步等待完成的一次性 animation 定时器(到点未完成 → 兑现 "running" 转后台) */
54
+ private _animationTimer;
55
+ /** exec 同步等待完成的 resolver(数据到达/语法静默命中时由 _settleCompletion 兑现) */
56
+ private _completionWaiter;
57
+ /** exec 转后台后等待 busy 释放的 resolver 列表(busy 翻转为 false 时统一兑现,替代 200ms 轮询) */
58
+ private _busyWaiters;
59
+ /** 命令序号(完成标记 <SSH_DONE:nonce:seq:code> 标识本次命令,防残留误判) */
47
60
  private _cmdSeq;
48
61
  /** 当前命令序号(_beginCapture 递增,供检测/拼接用) */
49
62
  private _runningSeq;
63
+ /**
64
+ * 会话级随机短串(8 位十六进制,构造时生成):写进完成标记 `<SSH_DONE:<nonce>:<seq>:<code>>`。
65
+ * 远端 Windows 控制台在新连接时会重放上一会话屏幕缓冲,其中含**别的会话**的完成标记;
66
+ * 新会话 seq 必然从 1 起、与重放会话撞号 → 无 nonce 时会把重放标记当自己的完成/边界。
67
+ * 只认自己 nonce:重放标记不再冒充本会话标记。
68
+ */
69
+ private readonly _nonce;
50
70
  /**
51
71
  * 命令发起前缓冲的末行(旧提示符行):语法错误收尾时 shell 会重印同形提示符,
52
72
  * 据此把它从输出尾部剥掉(exec 的输出窗口自命令回显起,旧提示符在窗口之外,需单独记录)。
@@ -77,6 +97,8 @@ export declare abstract class BaseSession {
77
97
  readonly generation: string;
78
98
  /** 生命周期监听器(命令开始/完成事件,agent 转报 server) */
79
99
  private _lifecycle;
100
+ /** 数据到达监听器(终端有新输出写入缓冲时回调,供 agent 事件驱动推流;null 清除) */
101
+ private _dataListener;
80
102
  /**
81
103
  * busy 状态翻转监听器(插件挂接):命令运行期间收到 true、结束写回 false,
82
104
  * 供插件把实时 busy 同步到跨进程状态文件,避免命令执行前落盘的旧值一直"过期"。
@@ -144,6 +166,11 @@ export declare abstract class BaseSession {
144
166
  error?: string;
145
167
  };
146
168
  getHistory(): SessionHistory;
169
+ /**
170
+ * 本会话完成标记的随机串(只读):供诊断/测试按真实格式构造标记。
171
+ * @returns 8 位十六进制会话串
172
+ */
173
+ get nonce(): string;
147
174
  getRunningOutput(): string;
148
175
  getRunningCommand(): string;
149
176
  /**
@@ -151,6 +178,13 @@ export declare abstract class BaseSession {
151
178
  * @param listener 回调(start 携带命令,done 携带退出码与结束时刻;null 表示清除)
152
179
  */
153
180
  setLifecycle(listener: ((ev: LifecycleEvent) => void) | null): void;
181
+ /**
182
+ * 设置数据到达监听器(每次终端有新输出写入缓冲时回调):
183
+ * SSH 的 `stream.on("data")` 与本地 PTY 的 data 回调最终都汇入 `_appendBuffer`,
184
+ * 在此统一触发,供 agent 做事件驱动的节流推流(不再依赖固定周期轮询)。
185
+ * @param listener 回调(null 表示清除)
186
+ */
187
+ setDataListener(listener: (() => void) | null): void;
154
188
  /**
155
189
  * 设置 busy 状态翻转监听器(命令开始/结束/断连等每次 busy 翻转时回调):
156
190
  * 供插件把最新 busy 同步到跨进程状态文件(server 拿不到 agent 状态回退读状态文件时,
@@ -158,17 +192,11 @@ export declare abstract class BaseSession {
158
192
  * @param listener 回调(busy 目标值 + 翻转原因;null 表示清除)
159
193
  */
160
194
  setBusyListener(listener: ((busy: boolean, reason: string) => void) | null): void;
161
- /**
162
- * 设置是否保持 busy(排队命令序列期间为 true):
163
- * true 时中间命令完成不清 busy;置 false 时立即清 busy。
164
- * @param hold 是否保持
165
- */
166
- setHoldBusy(hold: boolean): void;
167
195
  /**
168
196
  * 更新终端 busy 状态:仅在值翻转时记一行(会话/终端/当前 seq/翻转原因),
169
197
  * 供事后对齐状态时间线(busy 每次翻转都能对应到具体原因,不再出现"忙了却查不出为何")。
170
198
  * @param next 目标 busy 值
171
- * @param reason 翻转原因(cmdStart / cmdRunning / cmdDone / holdRelease / 会话关闭 / 断连补 done 等)
199
+ * @param reason 翻转原因(cmdStart / cmdRunning / cmdDone / 会话关闭 / 断连补 done 等)
172
200
  */
173
201
  protected _setBusy(next: boolean, reason: string): void;
174
202
  /** 触发命令开始事件 */
@@ -308,25 +336,106 @@ export declare abstract class BaseSession {
308
336
  * @returns 纯程序输出原始流
309
337
  */
310
338
  private _extractOutput;
339
+ /**
340
+ * 回显定位失败时的标记边界裁剪:扫描窗口内所有完成标记,返回"本命令自己的标记之前、
341
+ * 所有非本 seq 标记之后"的边界偏移(无合适标记时为 0)。
342
+ * 用于把控制台屏幕重放(含上一会话的命令行与标记)整段切掉,避免其被当输出落盘。
343
+ * 判定:只按 seq 区分——seq 等于当前命令序号的标记(求值式或命令行回显式)属于本次命令,
344
+ * 不作边界(否则会把本次命令的回显一起切掉);其余标记(重放的别会话标记)取最后一个的结束位置。
345
+ * @param raw 待裁剪窗口原始字节流
346
+ * @param ownEnd 本命令完成标记的结束偏移(无标记时为窗口末尾)
347
+ * @returns 裁剪起点偏移(相对 raw)
348
+ */
349
+ private _fallbackBoundary;
350
+ /**
351
+ * 剥掉文本开头的控制码/重绘噪音(光标定位、颜色、OSC 标题等非打印序列)与空白,
352
+ * 直到首个可见字符;用于标记边界裁剪后仍残留的重绘噪音清理。
353
+ * @param s 待清理文本
354
+ * @returns 去掉行首控制噪音后的文本
355
+ */
356
+ private _stripLeadingControlNoise;
311
357
  /** 命令执行/提交前准备:裁剪已消费缓冲 + 丢弃上一条命令的迟到残留标记 */
312
358
  private _beginCapture;
313
359
  /** 追加输出字节:维护业务缓冲 + 连续原始流 ring */
314
360
  protected _appendBuffer(text: string): void;
361
+ /**
362
+ * 会话初始化完成后发送**基线标记**(seq=0):作为第一条命令的"前驱"。
363
+ *
364
+ * 背景:新连接时远端 Windows 控制台会重放上一会话的屏幕缓冲,其内容落在缓冲区开头。
365
+ * 旧实现首条命令 `_beginCapture` 没有"上一条标记"可依,窗口被迫从缓冲起点(=重放内容)开始,
366
+ * 回显定位失败便退回整窗 → 重放杂物被当输出落盘。
367
+ * 发一条 seq=0 的求值标记后,首条命令能像后续命令一样"裁剪到上一条标记之后",起点即干净。
368
+ * 须在 shell 探测完成(adapter 已定)之后调用,使标记命令语法正确;写入方式与中断探针一致(尾随提交分隔符)。
369
+ * @returns 无
370
+ */
371
+ protected _sendBaselineMarker(): void;
315
372
  /** 探测 shell 类型:按各适配器 probeCommand 逐个探测(POSIX 系优先,pwsh/cmd 用各自独有命令),
316
373
  * login shell 的 $0 带 - 前缀(-bash/-zsh)由对应 parseProbe 容忍 */
317
374
  protected _probeShell(deadline: number): Promise<ShellAdapter | null>;
318
375
  /** 等待探测输出稳定:buffer 有内容且 500ms 不再变化则返回,超时返回 null */
319
376
  private _waitProbeOutput;
320
377
  /**
321
- * 同步等待命令完成:轮询语法错误 / 完成标记 / ^C 中断,超动画窗口仍未完成则转后台 watch。
322
- * @param startPos 捕获窗口起点(相对当前 buffer)
323
- * @param startTs 命令发起时刻(判定动画窗口用)
324
- * @returns kind=done 时 exitCode 为退出码(语法错误无标记可读,为 null);markerPos 缺省表示窗口取到缓冲区末尾;
325
- * syntaxError=true 表示本次是语法/解析错误收尾(输出提取须改用首次回显匹配 + 剥尾部提示符)
378
+ * 挂起 exec 的同步完成等待(事件驱动,无轮询):
379
+ * - 数据到达(`_appendBuffer` → `_checkCompletion`)命中完成标记/语法静默时由 `_settleCompletion` 兑现;
380
+ * - 超过 ANIMATION_WINDOW_MS 仍未完成则由一次性 animation 定时器兑现 "running"(转后台继续追踪,不设硬超时)。
381
+ * @returns 完成结果(done 携带标记位置/退出码/语法错误标志;running 表示转后台)
382
+ */
383
+ private _awaitCompletion;
384
+ /**
385
+ * 数据到达事件钩子(由 `_appendBuffer` 在每个数据块落入缓冲后调用):
386
+ * 仅在追踪运行命令时触发完成判定,异常不打断数据写入。
387
+ * @returns 无
388
+ */
389
+ private _onDataArrived;
390
+ /**
391
+ * 完成判定(唯一入口,事件驱动):
392
+ * 断连优先处理;其次判当前 seq 完成标记(权威且唯一);再次判语法/解析错误(安静窗口后收尾)。
393
+ * ^C 回显不作为完成依据:捕获/忽略 SIGINT 的程序(mysql/REPL)同样回显 ^C 但命令未结束,
394
+ * 据此判完成会把后续命令喂进运行中的程序;中断收尾由 send() 补发的探针标记触发。
395
+ * @param fromData true=数据到达触发(推进语法静默计时);false=后台兜底 tick(不重置已挂的静默计时,避免无限顺延)
396
+ * @returns 无
397
+ */
398
+ private _checkCompletion;
399
+ /**
400
+ * 兑现一次完成判定:有 exec 同步等待者时只回传结果(由 exec 走统一收尾);
401
+ * 无等待者(submit / exec 转后台)时直接调用 `_completeRunning` 收尾。
402
+ * @param o 完成结果
403
+ * @returns 无
404
+ */
405
+ private _settleCompletion;
406
+ /**
407
+ * 推进语法错误安静窗口(一次性定时器,非轮询):识别到语法错误后等输出停止增长 SYNTAX_QUIET_MS 再收尾,
408
+ * 确保 pwsh 异步/批量渲染的多行错误块被完整收进输出窗口;自首次识别起上限 SYNTAX_MAX_WAIT_MS。
409
+ * 数据到达(输出变化)时重置安静窗口;兜底 tick 不重置(见 _checkCompletion)。
410
+ * @returns 无
411
+ */
412
+ private _armSyntaxQuiet;
413
+ /**
414
+ * 断连收尾(由后台兜底 tick 判定 _connected=false 触发):命令视为结束(可能从未完成),
415
+ * 补发 done 防 server busy 卡死;不写 history(输出窗口从未定案,无可信尾部可摘)。
416
+ * @returns 无
417
+ */
418
+ private _handleDisconnect;
419
+ /**
420
+ * 开始一次命令的后台追踪:记录兜底判定所需的捕获窗口起点/命令,并复位语法静默状态。
421
+ * 不做任何轮询——完成判定由数据到达事件驱动(见 `_onDataArrived`)。
422
+ * @param startPos 捕获窗口起点(相对当前 buffer;submit 为 0,exec 转后台为 captureStart)
423
+ * @param command 命令(history 记录用)
424
+ * @returns 无
425
+ */
426
+ private _armTracking;
427
+ /**
428
+ * 启动稀疏兜底监听(≥1s,非高频轮询):完成判定已由数据到达事件驱动,此定时器仅覆盖
429
+ * 断连(子类只置 `_connected=false`、不回调基类)与极端漏判保护;命令已不在追踪中则不启动。
430
+ * @returns 无
326
431
  */
327
- private _waitCompletion;
328
- /** 后台监听:轮询 done 标记 / 语法错误 / ^C 中断 → 收集输出进 history + busy=false */
329
- private _startBackgroundWatch;
432
+ private _startFallbackWatch;
433
+ /** 后台兜底一次:断连优先处理,否则复用统一完成判定(异常不得让监听中断,否则 busy 卡死) */
434
+ private _fallbackTick;
435
+ /** 清除 exec 同步等待的 animation 一次性定时器(幂等) */
436
+ private _clearAnimationTimer;
437
+ /** 清除语法静默一次性定时器(幂等) */
438
+ private _clearSyntaxTimer;
330
439
  /**
331
440
  * 统一命令完成收尾(供 exec 同步完成、后台 watch 与 readBuffer 复用,避免多处收尾逻辑漂移):
332
441
  * 提取/追加 history、补发 done 事件、定位 cursor、翻转 busy、清 running 上下文、停后台 watch。
@@ -1 +1 @@
1
- {"version":3,"file":"base-session.d.ts","sourceRoot":"","sources":["../src/base-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base-session.d.ts","sourceRoot":"","sources":["../src/base-session.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7C,OAAO,EAAoF,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACxI,OAAO,EAAM,KAAK,IAAI,EAAE,MAAM,WAAW,CAAA;AAEzC,aAAa;AACb,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,OAAO,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,6DAA6D;AAC7D,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AA8H7E,qBAAqB;AACrB,8BAAsB,WAAW;IAgG7B,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM;IAEpC,SAAS,CAAC,QAAQ,CAAC,IAAI;IACvB,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI;IAC9B,+DAA+D;IAC/D,SAAS,CAAC,QAAQ,CAAC,yBAAyB,EAAE,MAAM;IApGtD,SAAS,CAAC,UAAU,UAAQ;IAC5B,SAAS,CAAC,WAAW,UAAQ;IAC7B,SAAS,CAAC,OAAO,SAAK;IACtB,SAAS,CAAC,YAAY,SAAI;IAC1B,SAAS,CAAC,WAAW,SAAI;IACzB,SAAS,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAO;IAChD,SAAS,CAAC,eAAe,SAAK;IAC9B,SAAS,CAAC,WAAW,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,GAAG,IAAI,CAAO;IACnE,iEAAiE;IACjE,OAAO,CAAC,cAAc,CAAI;IAC1B,gDAAgD;IAChD,OAAO,CAAC,aAAa,CAAK;IAC1B,yCAAyC;IACzC,OAAO,CAAC,YAAY,CAA6C;IACjE,yBAAyB;IACzB,OAAO,CAAC,aAAa,CAAI;IACzB,iCAAiC;IACjC,OAAO,CAAC,cAAc,CAAI;IAC1B,kCAAkC;IAClC,OAAO,CAAC,UAAU,CAAI;IACtB,8DAA8D;IAC9D,OAAO,CAAC,eAAe,CAA6C;IACpE,gEAAgE;IAChE,OAAO,CAAC,iBAAiB,CAA2D;IACpF,yEAAyE;IACzE,OAAO,CAAC,YAAY,CAAwB;IAC5C,wDAAwD;IACxD,OAAO,CAAC,OAAO,CAAI;IACnB,uCAAuC;IACvC,OAAO,CAAC,WAAW,CAAI;IACvB;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqD;IAC5E;;;OAGG;IACH,OAAO,CAAC,UAAU,CAAK;IACvB,gDAAgD;IAChD,SAAS,CAAC,OAAO,SAAI;IACrB,mDAAmD;IACnD,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAO;IAC1C,uBAAuB;IACvB,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAO;IAC9C,yEAAyE;IACzE,SAAS,CAAC,QAAQ,SAAO;IACzB,SAAS,CAAC,OAAO,UAAQ;IACzB,uCAAuC;IACvC,OAAO,CAAC,eAAe,CAAI;IAC3B,qDAAqD;IACrD,OAAO,CAAC,OAAO,CAAK;IACpB,4BAA4B;IAC5B,OAAO,CAAC,aAAa,CAAI;IACzB,4BAA4B;IAC5B,OAAO,CAAC,SAAS,CAAI;IACrB,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAA;IAC3C;;;OAGG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAe;IAC1C,yCAAyC;IACzC,OAAO,CAAC,UAAU,CAA8C;IAChE,oDAAoD;IACpD,OAAO,CAAC,aAAa,CAA4B;IACjD;;;OAGG;IACH,OAAO,CAAC,aAAa,CAAyD;IAC9E;;;;;OAKG;IACH,OAAO,CAAC,cAAc,CAAQ;IAC9B;;;;;OAKG;IACH,OAAO,CAAC,UAAU,CAAoB;IACtC;;;OAGG;IACH,OAAO,CAAC,eAAe,CAA8C;IAErE,YACqB,SAAS,EAAE,MAAM,EACpC,OAAO,EAAE,cAAc,EACJ,IAAI,SAAY,EAChB,KAAK,GAAE,IAAW;IACrC,+DAA+D;IAC5C,yBAAyB,GAAE,MAAoD,EAGnG;IAED,qDAAqD;IACrD,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7C,wDAAwD;IACxD,SAAS,CAAC,QAAQ,CAAC,eAAe,IAAI,IAAI,CAAA;IAC1C,mCAAmC;IACnC,SAAS,KAAK,YAAY,IAAI,OAAO,CAAC,UAAU,CAAC,CAAc;IAE/D;;;;OAIG;IACG,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAWjD;IAED;;;;OAIG;IACG,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CA2C/C;IAED;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAqB3E;IAED;;;;;;;OAOG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAelD;IAED,UAAU,IAAI,cAAc,CAAyB;IAErD;;;OAGG;IACH,IAAI,KAAK,IAAI,MAAM,CAAuB;IAE1C,gBAAgB,IAAI,MAAM,CAGzB;IAED,iBAAiB,IAAI,MAAM,CAE1B;IAED;;;OAGG;IACH,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,cAAc,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAElE;IAED;;;;;OAKG;IACH,eAAe,CAAC,QAAQ,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAEnD;IAED;;;;;OAKG;IACH,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAEhF;IAED;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CActD;IAED,eAAe;IACf,OAAO,CAAC,UAAU;IAIlB,eAAe;IACf,OAAO,CAAC,SAAS;IAIjB,gBAAgB,IAAI,OAAO,CAE1B;IAED;;;;OAIG;IACH,gBAAgB,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,CA2BlD;IAED,qBAAqB;IACrB,KAAK,IAAI,IAAI,CASZ;IAED,kCAAkC;IAClC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,CAIzE;IAED,6BAA6B;IAC7B,SAAS,CAAC,QAAQ,CAAC,MAAM,IAAI,OAAO,CAAA;IAEpC;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAIlB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,eAAe;IAKvB;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAInB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,aAAa;IAIrB;;;;;;;;;OASG;IACH,OAAO,CAAC,mBAAmB;IAU3B;;;;;;;OAOG;IACH,OAAO,CAAC,oBAAoB;IAa5B;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAQxB;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IAO3B;;;;;;;OAOG;IACH,OAAO,CAAC,iBAAiB;IAUzB;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,gBAAgB;IAYxB;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,cAAc;IAwEtB;;;;;;;;;OASG;IACH,OAAO,CAAC,iBAAiB;IAUzB;;;;;OAKG;IACH,OAAO,CAAC,yBAAyB;IAIjC,0CAA0C;IAC1C,OAAO,CAAC,aAAa;IAsCrB,iCAAiC;IACjC,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CA2B1C;IAED;;;;;;;;;OASG;IACH,SAAS,CAAC,mBAAmB,IAAI,IAAI,CAIpC;IAED;+DAC2D;IAC3D,UAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAU1E;IAED,mDAAmD;YACrC,gBAAgB;IAe9B;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAcxB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAStB;;;;;;;OAOG;IACH,OAAO,CAAC,gBAAgB;IAuBxB;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAyBzB;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IA6BvB;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAczB;;;;;;OAMG;IACH,OAAO,CAAC,YAAY;IASpB;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAM3B,qDAAqD;IACrD,OAAO,CAAC,aAAa;IAcrB,yCAAyC;IACzC,OAAO,CAAC,oBAAoB;IAO5B,uBAAuB;IACvB,OAAO,CAAC,iBAAiB;IAOzB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,gBAAgB;IA0BxB,SAAS,CAAC,oBAAoB,IAAI,IAAI,CASrC;IAED,OAAO,CAAC,SAAS;IAKjB;;;;OAIG;IACH,SAAS,KAAK,OAAO,IAAI,MAAM,CAE9B;CACF"}