@xiaoqiong0v0/opencode-ssh-tool 0.6.14 → 0.6.16
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 +4 -0
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +17 -2
- package/dist/agent.js.map +1 -1
- package/dist/base-session.d.ts +68 -32
- package/dist/base-session.d.ts.map +1 -1
- package/dist/base-session.js +253 -130
- package/dist/base-session.js.map +1 -1
- package/dist/constants.d.ts +14 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +14 -1
- package/dist/constants.js.map +1 -1
- package/dist/i18n.d.ts +36 -0
- package/dist/i18n.d.ts.map +1 -1
- package/dist/i18n.js +33 -0
- package/dist/i18n.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +28 -4
- package/dist/index.js.map +1 -1
- package/dist/local-session.d.ts +3 -1
- package/dist/local-session.d.ts.map +1 -1
- package/dist/local-session.js +82 -4
- package/dist/local-session.js.map +1 -1
- package/dist/log.d.ts +8 -0
- package/dist/log.d.ts.map +1 -1
- package/dist/log.js +28 -1
- package/dist/log.js.map +1 -1
- package/dist/parse-check.d.ts +20 -0
- package/dist/parse-check.d.ts.map +1 -0
- package/dist/parse-check.js +505 -0
- package/dist/parse-check.js.map +1 -0
- package/dist/precheck.d.ts +32 -0
- package/dist/precheck.d.ts.map +1 -0
- package/dist/precheck.js +105 -0
- package/dist/precheck.js.map +1 -0
- package/dist/server-entry.js +1 -1
- package/dist/server-entry.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +123 -35
- package/dist/server.js.map +1 -1
- package/dist/session-store.d.ts +56 -2
- package/dist/session-store.d.ts.map +1 -1
- package/dist/session-store.js +100 -3
- package/dist/session-store.js.map +1 -1
- package/dist/session.js +1 -1
- package/dist/session.js.map +1 -1
- package/dist/shell-adapter.d.ts +14 -0
- package/dist/shell-adapter.d.ts.map +1 -1
- package/dist/shell-adapter.js +58 -10
- package/dist/shell-adapter.js.map +1 -1
- package/dist/utils.d.ts +33 -20
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +97 -43
- package/dist/utils.js.map +1 -1
- package/dist/web/app.css +4 -0
- package/dist/web/app.js +10 -10
- package/dist/web/index.html +1 -0
- package/package.json +1 -1
package/dist/session-store.d.ts
CHANGED
|
@@ -18,14 +18,49 @@ export interface SessionState {
|
|
|
18
18
|
directory?: string;
|
|
19
19
|
updatedAt: number;
|
|
20
20
|
}
|
|
21
|
+
/** 会话级持久元信息 */
|
|
22
|
+
export interface SessionMeta {
|
|
23
|
+
/** opencode 会话标题(重启后用于 web 列表) */
|
|
24
|
+
title?: string;
|
|
25
|
+
/** opencode 会话工作目录 */
|
|
26
|
+
directory?: string;
|
|
27
|
+
/** 最后更新时间(毫秒) */
|
|
28
|
+
updatedAt: number;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* 写入会话级持久元信息(标题/目录):state 文件会随进程退出被清理,但 meta.json 保留在
|
|
32
|
+
* `cacheRoot/<sessionID>/meta.json`,供 server 在只有 history 目录时恢复标题。
|
|
33
|
+
* 写入失败不抛异常(展示降级为 sessionID,不影响主流程)。
|
|
34
|
+
* @param cacheRoot 缓存根目录
|
|
35
|
+
* @param sessionID 主会话 ID
|
|
36
|
+
* @param meta 标题/目录
|
|
37
|
+
* @returns 无
|
|
38
|
+
*/
|
|
39
|
+
export declare function writeSessionMeta(cacheRoot: string, sessionID: string, meta: Omit<SessionMeta, "updatedAt">): void;
|
|
40
|
+
/**
|
|
41
|
+
* 读取会话级持久元信息
|
|
42
|
+
* @param cacheRoot 缓存根目录
|
|
43
|
+
* @param sessionID 主会话 ID
|
|
44
|
+
* @returns 元信息;缺失/损坏时返回 null
|
|
45
|
+
*/
|
|
46
|
+
export declare function readSessionMeta(cacheRoot: string, sessionID: string): SessionMeta | null;
|
|
47
|
+
/**
|
|
48
|
+
* 删除会话级持久元信息(删除会话最后一个终端时清理)
|
|
49
|
+
* @param cacheRoot 缓存根目录
|
|
50
|
+
* @param sessionID 主会话 ID
|
|
51
|
+
* @returns 无
|
|
52
|
+
*/
|
|
53
|
+
export declare function removeSessionMeta(cacheRoot: string, sessionID: string): void;
|
|
21
54
|
/**
|
|
22
55
|
* 原子写 JSON 文件:先在**同目录**写唯一命名的临时文件,fsync 落盘后再 `rename` 覆盖目标。
|
|
23
56
|
* 这样读方(server 聚合读状态文件、各实例读 server.json)**永远读不到半截内容**——
|
|
24
57
|
* 要么读到旧的完整内容,要么读到新的完整内容,消除"先 truncate 再写"造成的瞬时损坏
|
|
25
58
|
* (读方 try/catch 只能跳过损坏文件,表现为瞬时漏一条)。
|
|
26
59
|
* 失败时**不抛异常**(调用方不崩):清理临时文件、**保留旧文件**、记一行 warn 日志并返回 false。
|
|
27
|
-
*
|
|
28
|
-
*
|
|
60
|
+
* Windows 下若目标正被其他进程以句柄持有(或多进程读聚合场景下的瞬时占用),`rename` 覆盖目标
|
|
61
|
+
* 可能抛 **EPERM/EBUSY**——对此类错误**有限重试**(见 RENAME_MAX_ATTEMPTS / RENAME_RETRY_DELAY_MS),
|
|
62
|
+
* 瞬时占用多数在重试窗口内释放;其它错误码(ENOENT/EXDEV 等重试无意义)不重试直接走失败路径。
|
|
63
|
+
* 重试耗尽仍失败时保留旧文件即安全(下次写会再试),故**不做**"先删除目标再 rename"的退化写法
|
|
29
64
|
* (那会引入文件短暂不存在的窗口,反而更差);目录 fsync 在 Windows 不可用,忽略即可。
|
|
30
65
|
* @param file 目标文件路径(其父目录须已存在,由调用方保证)
|
|
31
66
|
* @param data 待写入对象(JSON.stringify 默认形态,与原直写行为一致)
|
|
@@ -48,4 +83,23 @@ export declare function removeSessionState(cacheRoot: string, sessionID: string,
|
|
|
48
83
|
export declare function removeAllSessionStates(cacheRoot: string, sessionID: string): void;
|
|
49
84
|
/** 聚合所有进程的会话状态(web 服务展示用),含标题/目录 */
|
|
50
85
|
export declare function listAllSessions(cacheRoot: string): SessionState[];
|
|
86
|
+
/** 孤儿状态文件清理结果:本轮删除的项与仍未被认领但未陈旧的剩余项 */
|
|
87
|
+
export interface OrphanSweepResult {
|
|
88
|
+
/** 本轮删除的状态文件(离线 + 无认领 + 陈旧) */
|
|
89
|
+
removed: SessionState[];
|
|
90
|
+
/** 未被认领但尚未陈旧、本轮保留的项(供日志显示"还剩几只"并等待下一轮收敛) */
|
|
91
|
+
remaining: SessionState[];
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* 清理"无任何已连 agent 认领且已陈旧"的状态文件——**一次清完全部匹配项**,
|
|
95
|
+
* 避免每轮只清一只、老文件迟迟清不掉留下尾巴(收敛性由调用方按固定周期重复调用保证)。
|
|
96
|
+
* 判据:会话键不在 claimed 内(离线且无认领)且 updatedAt 早于 minAgeMs(陈旧)。
|
|
97
|
+
* 只删状态文件,不动 history 目录(离线历史仍可查看)。
|
|
98
|
+
* @param cacheRoot 插件缓存根目录
|
|
99
|
+
* @param claimed 所有已连 agent 认领的会话键集合(`sid:name`)
|
|
100
|
+
* @param nowMs 当前时刻(毫秒;注入便于测试)
|
|
101
|
+
* @param minAgeMs 陈旧阈值(毫秒)
|
|
102
|
+
* @returns 本轮删除的项与未陈旧仍保留的孤儿项
|
|
103
|
+
*/
|
|
104
|
+
export declare function sweepStaleOrphanStateFiles(cacheRoot: string, claimed: ReadonlySet<string>, nowMs: number, minAgeMs: number): OrphanSweepResult;
|
|
51
105
|
//# sourceMappingURL=session-store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../src/session-store.ts"],"names":[],"mappings":"AAMA,yBAAyB;AACzB,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,gCAAgC;IAChC,IAAI,CAAC,EAAE,KAAK,GAAG,OAAO,CAAA;IACtB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,OAAO,CAAA;IAClB,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;CAClB;
|
|
1
|
+
{"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../src/session-store.ts"],"names":[],"mappings":"AAMA,yBAAyB;AACzB,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,gCAAgC;IAChC,IAAI,CAAC,EAAE,KAAK,GAAG,OAAO,CAAA;IACtB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,OAAO,CAAA;IAClB,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;CAClB;AAQD,eAAe;AACf,MAAM,WAAW,WAAW;IAC1B,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,sBAAsB;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,GAAG,IAAI,CAOjH;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAcxF;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAI5E;AAsBD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAmCpE;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,GAAG,IAAI,CAc/F;AAED,4BAA4B;AAC5B,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAQ3F;AAED,kCAAkC;AAClC,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAcjF;AAED,oCAAoC;AACpC,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,EAAE,CAoBjE;AAOD,sCAAsC;AACtC,MAAM,WAAW,iBAAiB;IAChC,+BAA+B;IAC/B,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,4CAA4C;IAC5C,SAAS,EAAE,YAAY,EAAE,CAAA;CAC1B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,EAC5B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GACf,iBAAiB,CAMnB"}
|
package/dist/session-store.js
CHANGED
|
@@ -4,6 +4,61 @@ import { dirname, join } from "node:path";
|
|
|
4
4
|
import log from "./log.js";
|
|
5
5
|
/** sessions 状态文件目录名 */
|
|
6
6
|
const SESSIONS_DIR = "sessions";
|
|
7
|
+
/** 会话级持久元信息文件名(标题/目录;state 文件清理后仍保留,供重启后的 history-only 展示) */
|
|
8
|
+
const SESSION_META_FILE = "meta.json";
|
|
9
|
+
/**
|
|
10
|
+
* 写入会话级持久元信息(标题/目录):state 文件会随进程退出被清理,但 meta.json 保留在
|
|
11
|
+
* `cacheRoot/<sessionID>/meta.json`,供 server 在只有 history 目录时恢复标题。
|
|
12
|
+
* 写入失败不抛异常(展示降级为 sessionID,不影响主流程)。
|
|
13
|
+
* @param cacheRoot 缓存根目录
|
|
14
|
+
* @param sessionID 主会话 ID
|
|
15
|
+
* @param meta 标题/目录
|
|
16
|
+
* @returns 无
|
|
17
|
+
*/
|
|
18
|
+
export function writeSessionMeta(cacheRoot, sessionID, meta) {
|
|
19
|
+
try {
|
|
20
|
+
mkdirSync(join(cacheRoot, sessionID), { recursive: true });
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
atomicWriteJson(join(cacheRoot, sessionID, SESSION_META_FILE), { ...meta, updatedAt: Date.now() });
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* 读取会话级持久元信息
|
|
29
|
+
* @param cacheRoot 缓存根目录
|
|
30
|
+
* @param sessionID 主会话 ID
|
|
31
|
+
* @returns 元信息;缺失/损坏时返回 null
|
|
32
|
+
*/
|
|
33
|
+
export function readSessionMeta(cacheRoot, sessionID) {
|
|
34
|
+
try {
|
|
35
|
+
const raw = readFileSync(join(cacheRoot, sessionID, SESSION_META_FILE), "utf8");
|
|
36
|
+
const parsed = JSON.parse(raw);
|
|
37
|
+
if (!parsed || typeof parsed !== "object")
|
|
38
|
+
return null;
|
|
39
|
+
const o = parsed;
|
|
40
|
+
return {
|
|
41
|
+
title: typeof o.title === "string" ? o.title : undefined,
|
|
42
|
+
directory: typeof o.directory === "string" ? o.directory : undefined,
|
|
43
|
+
updatedAt: typeof o.updatedAt === "number" ? o.updatedAt : 0,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* 删除会话级持久元信息(删除会话最后一个终端时清理)
|
|
52
|
+
* @param cacheRoot 缓存根目录
|
|
53
|
+
* @param sessionID 主会话 ID
|
|
54
|
+
* @returns 无
|
|
55
|
+
*/
|
|
56
|
+
export function removeSessionMeta(cacheRoot, sessionID) {
|
|
57
|
+
try {
|
|
58
|
+
rmSync(join(cacheRoot, sessionID, SESSION_META_FILE), { force: true });
|
|
59
|
+
}
|
|
60
|
+
catch { /* ignore */ }
|
|
61
|
+
}
|
|
7
62
|
/** 状态文件名:<sessionID>-<name>.json(name 已 sanitize,安全) */
|
|
8
63
|
function stateFile(sessionsDir, sessionID, name) {
|
|
9
64
|
return join(sessionsDir, `${sessionID}-${name}.json`);
|
|
@@ -16,14 +71,20 @@ function stateFile(sessionsDir, sessionID, name) {
|
|
|
16
71
|
const lastStateLog = new Map();
|
|
17
72
|
/** 原子写临时文件序号:同进程同一毫秒内多次写也能得到唯一临时名 */
|
|
18
73
|
let tmpSeq = 0;
|
|
74
|
+
/** rename 总尝试次数(含首次):仅对 EPERM/EBUSY 重试,耗尽后按失败路径处理 */
|
|
75
|
+
const RENAME_MAX_ATTEMPTS = 3;
|
|
76
|
+
/** rename 每次重试前的等待毫秒数:给 Windows 上目标的瞬时句柄占用留出释放时间 */
|
|
77
|
+
const RENAME_RETRY_DELAY_MS = 40;
|
|
19
78
|
/**
|
|
20
79
|
* 原子写 JSON 文件:先在**同目录**写唯一命名的临时文件,fsync 落盘后再 `rename` 覆盖目标。
|
|
21
80
|
* 这样读方(server 聚合读状态文件、各实例读 server.json)**永远读不到半截内容**——
|
|
22
81
|
* 要么读到旧的完整内容,要么读到新的完整内容,消除"先 truncate 再写"造成的瞬时损坏
|
|
23
82
|
* (读方 try/catch 只能跳过损坏文件,表现为瞬时漏一条)。
|
|
24
83
|
* 失败时**不抛异常**(调用方不崩):清理临时文件、**保留旧文件**、记一行 warn 日志并返回 false。
|
|
25
|
-
*
|
|
26
|
-
*
|
|
84
|
+
* Windows 下若目标正被其他进程以句柄持有(或多进程读聚合场景下的瞬时占用),`rename` 覆盖目标
|
|
85
|
+
* 可能抛 **EPERM/EBUSY**——对此类错误**有限重试**(见 RENAME_MAX_ATTEMPTS / RENAME_RETRY_DELAY_MS),
|
|
86
|
+
* 瞬时占用多数在重试窗口内释放;其它错误码(ENOENT/EXDEV 等重试无意义)不重试直接走失败路径。
|
|
87
|
+
* 重试耗尽仍失败时保留旧文件即安全(下次写会再试),故**不做**"先删除目标再 rename"的退化写法
|
|
27
88
|
* (那会引入文件短暂不存在的窗口,反而更差);目录 fsync 在 Windows 不可用,忽略即可。
|
|
28
89
|
* @param file 目标文件路径(其父目录须已存在,由调用方保证)
|
|
29
90
|
* @param data 待写入对象(JSON.stringify 默认形态,与原直写行为一致)
|
|
@@ -53,7 +114,20 @@ export function atomicWriteJson(file, data) {
|
|
|
53
114
|
catch {
|
|
54
115
|
/* 目录 fsync 在部分平台不可用(如 Windows),忽略 */
|
|
55
116
|
}
|
|
56
|
-
|
|
117
|
+
// rename 有限重试:EPERM/EBUSY(Windows 目标被句柄瞬时占用)等待后重试,其它错误码直接抛出
|
|
118
|
+
for (let attempt = 1;; attempt++) {
|
|
119
|
+
try {
|
|
120
|
+
renameSync(tmp, file);
|
|
121
|
+
break;
|
|
122
|
+
}
|
|
123
|
+
catch (e) {
|
|
124
|
+
const code = e.code;
|
|
125
|
+
if (attempt >= RENAME_MAX_ATTEMPTS || (code !== "EPERM" && code !== "EBUSY"))
|
|
126
|
+
throw e;
|
|
127
|
+
// 本函数为同步调用,用 Atomics.wait 同步挂起当前线程等待(不空转 CPU)
|
|
128
|
+
Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, RENAME_RETRY_DELAY_MS);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
57
131
|
return true;
|
|
58
132
|
}
|
|
59
133
|
catch (e) {
|
|
@@ -145,4 +219,27 @@ export function listAllSessions(cacheRoot) {
|
|
|
145
219
|
out.sort((a, b) => (b.connectedAt ?? 0) - (a.connectedAt ?? 0));
|
|
146
220
|
return out;
|
|
147
221
|
}
|
|
222
|
+
/** 会话键(`sid:name`),与 server 归属判定口径一致 */
|
|
223
|
+
function orphanKey(s) {
|
|
224
|
+
return `${s.sessionID}:${s.name}`;
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* 清理"无任何已连 agent 认领且已陈旧"的状态文件——**一次清完全部匹配项**,
|
|
228
|
+
* 避免每轮只清一只、老文件迟迟清不掉留下尾巴(收敛性由调用方按固定周期重复调用保证)。
|
|
229
|
+
* 判据:会话键不在 claimed 内(离线且无认领)且 updatedAt 早于 minAgeMs(陈旧)。
|
|
230
|
+
* 只删状态文件,不动 history 目录(离线历史仍可查看)。
|
|
231
|
+
* @param cacheRoot 插件缓存根目录
|
|
232
|
+
* @param claimed 所有已连 agent 认领的会话键集合(`sid:name`)
|
|
233
|
+
* @param nowMs 当前时刻(毫秒;注入便于测试)
|
|
234
|
+
* @param minAgeMs 陈旧阈值(毫秒)
|
|
235
|
+
* @returns 本轮删除的项与未陈旧仍保留的孤儿项
|
|
236
|
+
*/
|
|
237
|
+
export function sweepStaleOrphanStateFiles(cacheRoot, claimed, nowMs, minAgeMs) {
|
|
238
|
+
const orphans = listAllSessions(cacheRoot).filter((s) => !claimed.has(orphanKey(s)));
|
|
239
|
+
const stale = orphans.filter((s) => nowMs - (s.updatedAt ?? 0) > minAgeMs);
|
|
240
|
+
for (const s of stale)
|
|
241
|
+
removeSessionState(cacheRoot, s.sessionID, s.name);
|
|
242
|
+
const removedKeys = new Set(stale.map(orphanKey));
|
|
243
|
+
return { removed: stale, remaining: orphans.filter((s) => !removedKeys.has(orphanKey(s))) };
|
|
244
|
+
}
|
|
148
245
|
//# sourceMappingURL=session-store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-store.js","sourceRoot":"","sources":["../src/session-store.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAE5C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACjI,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,GAAG,MAAM,UAAU,CAAA;AAuB1B,uBAAuB;AACvB,MAAM,YAAY,GAAG,UAAU,CAAA;AAE/B,wDAAwD;AACxD,SAAS,SAAS,CAAC,WAAmB,EAAE,SAAiB,EAAE,IAAY;IACrE,OAAO,IAAI,CAAC,WAAW,EAAE,GAAG,SAAS,IAAI,IAAI,OAAO,CAAC,CAAA;AACvD,CAAC;AAED;;;;GAIG;AACH,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAA;AAE9C,qCAAqC;AACrC,IAAI,MAAM,GAAG,CAAC,CAAA;AAEd
|
|
1
|
+
{"version":3,"file":"session-store.js","sourceRoot":"","sources":["../src/session-store.ts"],"names":[],"mappings":"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"}
|
package/dist/session.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// SshSession:ssh2 长驻连接 + PTY shell 管理,
|
|
2
|
-
//
|
|
2
|
+
// 完成标记法:每条命令后追加一条标记命令,完成后输出 <SSH_DONE:nonce:seq:退出码>(不依赖 PROMPT_COMMAND/PS1 钩子)
|
|
3
3
|
import { Client } from "ssh2";
|
|
4
4
|
import log, { isDebugEnabled, ssh2Trace } from "./log.js";
|
|
5
5
|
import { INJECT_TIMEOUT_MS, PTY_COLS, PTY_ROWS, READY_TIMEOUT_MS, SSH_KEEPALIVE_COUNT_MAX, SSH_KEEPALIVE_INTERVAL_MS, } from "./constants.js";
|
package/dist/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
|
package/dist/shell-adapter.d.ts
CHANGED
|
@@ -61,6 +61,20 @@ export declare function detectLastDoneMarker(buffer: string, fromPos: number, no
|
|
|
61
61
|
exitCode: number;
|
|
62
62
|
pos: number;
|
|
63
63
|
};
|
|
64
|
+
/**
|
|
65
|
+
* 检测本会话/本 seq 的**探针**标记(`<SSH_PROBE:nonce:seq:code>`)。
|
|
66
|
+
* 与完成标记严格区分:正常完成只认 SSH_DONE,探针只认 SSH_PROBE——
|
|
67
|
+
* 语法误判时真实完成标记的退出码不会再被覆盖。
|
|
68
|
+
* @param buffer 原始字节流
|
|
69
|
+
* @param fromPos 搜索起点
|
|
70
|
+
* @param nonce 本会话随机串
|
|
71
|
+
* @param seq 命令序号
|
|
72
|
+
*/
|
|
73
|
+
export declare function detectLastProbeMarker(buffer: string, fromPos: number, nonce: string, seq: number): {
|
|
74
|
+
done: boolean;
|
|
75
|
+
exitCode: number;
|
|
76
|
+
pos: number;
|
|
77
|
+
};
|
|
64
78
|
export declare function stripMarkers(raw: string): string;
|
|
65
79
|
/** 检测从指定位置起是否出现中断回显 ^C(命令被 Ctrl-C 中断) */
|
|
66
80
|
export declare function detectInterrupt(buffer: string, fromPos: number): {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell-adapter.d.ts","sourceRoot":"","sources":["../src/shell-adapter.ts"],"names":[],"mappings":"AAUA,kBAAkB;AAClB,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB;;;;OAIG;IACH,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;IAC9B,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAA;IACnC;;;;;;OAMG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;IAC7C;;;;;;;OAOG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;IACtC;;;;;;OAMG;IACH,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAA;IAC7C;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;CACtC;
|
|
1
|
+
{"version":3,"file":"shell-adapter.d.ts","sourceRoot":"","sources":["../src/shell-adapter.ts"],"names":[],"mappings":"AAUA,kBAAkB;AAClB,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB;;;;OAIG;IACH,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;IAC9B,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAA;IACnC;;;;;;OAMG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;IAC7C;;;;;;;OAOG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;IACtC;;;;;;OAMG;IACH,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAA;IAC7C;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;CACtC;AA2BD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAIlJ;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAInJ;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,yCAAyC;AACzC,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG;IAAE,WAAW,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAGtG;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAKxG;AA0VD,2FAA2F;AAC3F,eAAO,MAAM,QAAQ,EAAE,YAAY,EAKlC,CAAA;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,CAMhE"}
|
package/dist/shell-adapter.js
CHANGED
|
@@ -4,18 +4,25 @@
|
|
|
4
4
|
// 完成判定不再依赖 prompt 钩子(PROMPT_COMMAND/PS1/prompt 函数——会被 oh-my-posh/p10k 覆盖),
|
|
5
5
|
// 改为在每条命令后追加独立一行的标记输出命令,免疫任何提示符框架。
|
|
6
6
|
import { stripAnsi } from "./ansi.js";
|
|
7
|
-
import { DONE_TAG, SHELL_ID_PREFIX } from "./constants.js";
|
|
7
|
+
import { DONE_TAG, PROBE_TAG, SHELL_ID_PREFIX } from "./constants.js";
|
|
8
8
|
import { findLastMatch } from "./last-match.js";
|
|
9
9
|
// ===== 完成标记检测(在原始字节流中定位/剥离 <SSH_DONE:[nonce:]seq:退出码>) =====
|
|
10
10
|
// 标记格式演进:旧 `<SSH_DONE:seq:code>` / `<SSH_DONE:code>`;新 `<SSH_DONE:nonce:seq:code>`(nonce 为会话级随机串)。
|
|
11
11
|
// 剥离与检测须同时兼容两者(重放的历史字节可能是旧格式),但**只认自己 nonce** 的标记作为完成依据。
|
|
12
12
|
/** 匹配任意求值后的完成标记(含 nonce 式 / 序号式 / 无序号,退出码在末尾);前缀取自 DONE_TAG,< 与 : 在正则中均为字面量 */
|
|
13
13
|
const DONE_RE = new RegExp(DONE_TAG + "(?:[0-9A-Za-z]+:)?(?:\\d+:)?(-?\\d+)>", "g");
|
|
14
|
+
/** 匹配任意求值后的探针标记(与完成标记同构,前缀为 PROBE_TAG) */
|
|
15
|
+
const PROBE_RE = new RegExp(PROBE_TAG + "(?:[0-9A-Za-z]+:)?(?:\\d+:)?(-?\\d+)>", "g");
|
|
14
16
|
/** 检测指定会话、指定序号命令的完成标记(nonce 精确匹配,别会话重放的标记不会被误认) */
|
|
15
17
|
function doneSeqRe(nonce, seq) {
|
|
16
18
|
const esc = nonce.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
17
19
|
return new RegExp(`${DONE_TAG}${esc}:${seq}:(-?\\d+)>`, "g");
|
|
18
20
|
}
|
|
21
|
+
/** 检测指定会话、指定序号命令的探针标记(与 doneSeqRe 同构,仅 tag 不同) */
|
|
22
|
+
function probeSeqRe(nonce, seq) {
|
|
23
|
+
const esc = nonce.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
24
|
+
return new RegExp(`${PROBE_TAG}${esc}:${seq}:(-?\\d+)>`, "g");
|
|
25
|
+
}
|
|
19
26
|
/** 终端中断回显:Ctrl-C 由 TTY 层回显为 ^C(ECHOCTL 开启),与 shell 框架无关 */
|
|
20
27
|
const INTERRUPT_ECHO = "^C";
|
|
21
28
|
/**
|
|
@@ -33,8 +40,23 @@ export function detectLastDoneMarker(buffer, fromPos, nonce, seq) {
|
|
|
33
40
|
return { done: false, exitCode: 0, pos: 0 };
|
|
34
41
|
return { done: true, exitCode: parseInt(m[1], 10) || 0, pos: m.index + m[0].length };
|
|
35
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* 检测本会话/本 seq 的**探针**标记(`<SSH_PROBE:nonce:seq:code>`)。
|
|
45
|
+
* 与完成标记严格区分:正常完成只认 SSH_DONE,探针只认 SSH_PROBE——
|
|
46
|
+
* 语法误判时真实完成标记的退出码不会再被覆盖。
|
|
47
|
+
* @param buffer 原始字节流
|
|
48
|
+
* @param fromPos 搜索起点
|
|
49
|
+
* @param nonce 本会话随机串
|
|
50
|
+
* @param seq 命令序号
|
|
51
|
+
*/
|
|
52
|
+
export function detectLastProbeMarker(buffer, fromPos, nonce, seq) {
|
|
53
|
+
const m = findLastMatch(probeSeqRe(nonce, seq), buffer, fromPos);
|
|
54
|
+
if (!m)
|
|
55
|
+
return { done: false, exitCode: 0, pos: 0 };
|
|
56
|
+
return { done: true, exitCode: parseInt(m[1], 10) || 0, pos: m.index + m[0].length };
|
|
57
|
+
}
|
|
36
58
|
export function stripMarkers(raw) {
|
|
37
|
-
return raw.replace(DONE_RE, "");
|
|
59
|
+
return raw.replace(DONE_RE, "").replace(PROBE_RE, "");
|
|
38
60
|
}
|
|
39
61
|
/** 检测从指定位置起是否出现中断回显 ^C(命令被 Ctrl-C 中断) */
|
|
40
62
|
export function detectInterrupt(buffer, fromPos) {
|
|
@@ -342,15 +364,17 @@ function cmdOpenContinuation(s) {
|
|
|
342
364
|
* POSIX 系(bash/zsh/sh/dash)语法/解析错误模式,命中形式:
|
|
343
365
|
* `bash: syntax error near unexpected token ...`、`zsh: parse error near ...`、
|
|
344
366
|
* `/bin/sh: 1: Syntax error: ...`(dash 首字母大写,故大小写不敏感)。
|
|
345
|
-
*
|
|
346
|
-
|
|
367
|
+
* 行首锚定并要求 **shell 名前缀**:程序输出里的裸 `syntax error` 不命中,降低误判面
|
|
368
|
+
*(误判会让插件提前收尾,甚至把探针写进仍在运行的程序)。
|
|
347
369
|
*/
|
|
348
|
-
const POSIX_SYNTAX_ERROR_RE = /(?:^|[\r\n])(?:(?:[^\s:]*\/)?-?(?:bash|zsh|sh|dash|ksh|ash):(?:\s*[^\s:]+(?:\s+\d+)?:)*\s*
|
|
370
|
+
const POSIX_SYNTAX_ERROR_RE = /(?:^|[\r\n])(?:(?:[^\s:]*\/)?-?(?:bash|zsh|sh|dash|ksh|ash):)(?:\s*[^\s:]+(?:\s+\d+)?:)*\s*(?:syntax|parse)\s+error/i;
|
|
349
371
|
/**
|
|
350
|
-
* PowerShell 语法/解析错误模式:
|
|
351
|
-
*
|
|
372
|
+
* PowerShell 语法/解析错误模式:
|
|
373
|
+
* - pwsh 7:`ParserError:` 后紧跟 `Line |` / `所在位置` 错误块;
|
|
374
|
+
* - Windows PowerShell 5.1:`At line:1 char:14` / `所在位置 行:1 字符:14` 后紧跟 `+` 指示行。
|
|
375
|
+
* 行首锚定且要求错误块结构:仅输出一行 `ParserError: xxx` 或 `At line:` 的程序日志不命中。
|
|
352
376
|
*/
|
|
353
|
-
const PWSH_SYNTAX_ERROR_RE = /(?:^|[\r\n])ParserError
|
|
377
|
+
const PWSH_SYNTAX_ERROR_RE = /(?:^|[\r\n])(?:ParserError:[\s\S]{0,300}?(?:\r?\n\s*Line \||\r?\n\s*所在位置)|(?:At line:\d+\s+char:\d+|所在位置\s*行:\d+\s*字符:\d+)[\s\S]{0,200}?\r?\n\s*\+)/i;
|
|
354
378
|
class ZshAdapter {
|
|
355
379
|
name = "zsh";
|
|
356
380
|
probeCommand = `echo ${SHELL_ID_PREFIX}$0`;
|
|
@@ -407,7 +431,29 @@ class PwshAdapter {
|
|
|
407
431
|
markerCmd(nonce, seq) {
|
|
408
432
|
// 用 Write-Output(success 管线)而非 Write-Host:Write-Host 直写 host 流会抢在
|
|
409
433
|
// cmdlet 输出(经格式化器批量渲染)之前,导致 marker 落在命令输出之前、提取时把输出裁掉
|
|
410
|
-
|
|
434
|
+
// 退出码必须恒为数字(三个分支 0 / 1 / $LASTEXITCODE 求值结果均是数字):检测正则要求
|
|
435
|
+
// 至少一位数字,空码 → 永不匹配 → busy 永不清除、中断周期反复补探针直至无限刷屏。
|
|
436
|
+
//
|
|
437
|
+
// 取值次序 `$?` 优先、`$LASTEXITCODE` 次之(真实 5.1 与 7 实测,见 .tmp/scratch/marker-out.txt):
|
|
438
|
+
// ① $LASTEXITCODE 只由**原生命令**设置且**永不清除**——实测 `cmd /c exit 3 ; echo hi` 之后它
|
|
439
|
+
// 仍是 3(cmdlet 成功不改写它)。所以旧写法 `$([int]$LASTEXITCODE)` 会给**成功**的纯 cmdlet
|
|
440
|
+
// 命令报出上一条原生命令的残留码(第二个失真),而单用"$LASTEXITCODE 非空就用它"(候选 A)
|
|
441
|
+
// 同样中招(实测 T5b:报 3,期望 0)。
|
|
442
|
+
// ② $? 反映**最近一条语句**成败(原生非 0 退出也算 False),且追加语句里"求值先于覆盖":
|
|
443
|
+
// 实测失败 cmdlet 后 `$ok = $?` 得 False、成功得 True;字符串插值 `$(if($?)…)` 的条件求值
|
|
444
|
+
// 同样先读到用户命令的 $?(实测 `Get-Item /nope` → 标记 1、`cmd /c exit 3` → 标记 3),
|
|
445
|
+
// 推翻了旧注释"if 表达式会覆盖 $? 所以不可用"的顾虑——被覆盖发生在语句完成后,读在其前。
|
|
446
|
+
// ③ 于是三分支语义:$? True → 0(无论有无残留码,成功命令就该报 0);$? False → 有残留/本轮
|
|
447
|
+
// 原生非 0 码就原样透出(exit 3 → 3),否则(纯 cmdlet 失败)报 1(失败必非 0)。
|
|
448
|
+
//
|
|
449
|
+
// 已知残留失真(远小于旧写法):仅"$? False 且失败者是 cmdlet、而残留原生码非 0"时透出的是
|
|
450
|
+
// 残留数字而非本轮真实码(实测 `cmd /c exit 7 ; Get-Item /nope` → 7),但**永远非 0**,判别方向
|
|
451
|
+
// 正确。要彻底消除须在用户命令**前**重置 $LASTEXITCODE(候选 B),而 markerCmd 只能追加在命令后、
|
|
452
|
+
// 前置需改 base-session 的拼接结构(超出本处改动边界),故取当前组合。
|
|
453
|
+
//
|
|
454
|
+
// 长度取舍:标记可见长度 92 → 约 110(`-as [int]` 兜底用户把 LASTEXITCODE 改成非数字),
|
|
455
|
+
// 回显剔除跨度上限 utils.PROBE_ECHO_MAX_SPAN=200 仍有余量;语法错误路径已不再补发探针。
|
|
456
|
+
return `Write-Output "${DONE_TAG}${nonce}:${seq}:$(if($?){0}elseif($LASTEXITCODE -as [int]){$LASTEXITCODE -as [int]}else{1})>"`;
|
|
411
457
|
}
|
|
412
458
|
groupWrap(body) {
|
|
413
459
|
// 点源 `. { }` 在当前作用域执行(保留变量/状态);不可用 `& { }`(子作用域会丢变量/状态)。
|
|
@@ -433,7 +479,9 @@ class CmdAdapter {
|
|
|
433
479
|
// 完成标记照常输出,标记法已完成判定,无需该信号
|
|
434
480
|
syntaxErrorRe = null;
|
|
435
481
|
markerCmd(nonce, seq) {
|
|
436
|
-
|
|
482
|
+
// `<`/`>` 会被 cmd 当重定向,必须用 ^ 转义;marker 由 base 放到**独立下一行**,
|
|
483
|
+
// 使 %errorlevel% 在上一行执行完之后才展开(同一行拼接会取到解析期旧值)。
|
|
484
|
+
return `echo ^<${DONE_TAG.slice(1)}${nonce}:${seq}:%errorlevel%^>`;
|
|
437
485
|
}
|
|
438
486
|
groupWrap(_body) {
|
|
439
487
|
// cmd 不包组:组内 `%errorlevel%` 是解析期展开,退出码会失真;保持原样逐行执行
|
|
@@ -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":"AAAA,yCAAyC;AACzC,mDAAmD;AACnD,yCAAyC;AACzC,2EAA2E;AAC3E,mCAAmC;AAEnC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAoD/C,8DAA8D;AAC9D,mGAAmG;AACnG,yDAAyD;AAEzD,+EAA+E;AAC/E,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,QAAQ,GAAG,uCAAuC,EAAE,GAAG,CAAC,CAAA;AAEnF,0CAA0C;AAC1C,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,SAAS,GAAG,uCAAuC,EAAE,GAAG,CAAC,CAAA;AAErF,mDAAmD;AACnD,SAAS,SAAS,CAAC,KAAa,EAAE,GAAW;IAC3C,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAA;IACxD,OAAO,IAAI,MAAM,CAAC,GAAG,QAAQ,GAAG,GAAG,IAAI,GAAG,YAAY,EAAE,GAAG,CAAC,CAAA;AAC9D,CAAC;AAED,kDAAkD;AAClD,SAAS,UAAU,CAAC,KAAa,EAAE,GAAW;IAC5C,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAA;IACxD,OAAO,IAAI,MAAM,CAAC,GAAG,SAAS,GAAG,GAAG,IAAI,GAAG,YAAY,EAAE,GAAG,CAAC,CAAA;AAC/D,CAAC;AAED,2DAA2D;AAC3D,MAAM,cAAc,GAAG,IAAI,CAAA;AAE3B;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAc,EAAE,OAAe,EAAE,KAAa,EAAE,GAAW;IAC9F,MAAM,CAAC,GAAG,aAAa,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/D,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;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAc,EAAE,OAAe,EAAE,KAAa,EAAE,GAAW;IAC/F,MAAM,CAAC,GAAG,aAAa,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;IAChE,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,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;AACvD,CAAC;AAED,yCAAyC;AACzC,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,OAAe;IAC7D,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,CAAA;IACnD,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;AAC3D,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAA4B,EAAE,MAAc,EAAE,OAAe;IAC7F,MAAM,EAAE,GAAG,OAAO,EAAE,aAAa,CAAA;IACjC,IAAI,CAAC,EAAE;QAAE,OAAO,KAAK,CAAA;IACrB,uCAAuC;IACvC,OAAO,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;AAClD,CAAC;AAED,8BAA8B;AAE9B;;;;;;GAMG;AACH,SAAS,YAAY,CAAC,IAAY;IAChC,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,IAAI,OAAO,EAAE,CAAC;YAAC,OAAO,GAAG,KAAK,CAAC;YAAC,SAAQ;QAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAAC,OAAO,GAAG,IAAI,CAAC;YAAC,SAAQ;QAAC,CAAC;QACzD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAAC,QAAQ,GAAG,CAAC,QAAQ,CAAC;YAAC,SAAQ;QAAC,CAAC;QAC9D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAAC,QAAQ,GAAG,CAAC,QAAQ,CAAC;YAAC,SAAQ;QAAC,CAAC;QAC9D,IAAI,QAAQ,IAAI,QAAQ;YAAE,SAAQ;QAClC,kDAAkD;QAClD,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACrC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAA;YAC5E,IAAI,CAAC;gBAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;QACpB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,mBAAmB,CAAC,IAAY,EAAE,CAAS;IAClD,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IACxB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IACrB,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAA;AAChH,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,qBAAqB,CAAC,CAAS;IACtC,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,IAAI,UAAU,GAAG,KAAK,CAAA;IACtB,IAAI,UAAU,GAAG,CAAC,CAAA;IAClB,IAAI,UAAU,GAAG,CAAC,CAAA;IAClB,IAAI,cAAc,GAAkB,IAAI,CAAA;IACxC,IAAI,gBAAgB,GAAG,KAAK,CAAA;IAC5B,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,uCAAuC;QACvC,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;YAC5B,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,cAAc;gBAAE,cAAc,GAAG,IAAI,CAAA;YACzD,SAAQ;QACV,CAAC;QACD,IAAI,OAAO,GAAG,KAAK,CAAA;QACnB,gBAAgB,GAAG,KAAK,CAAA;QACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;YACjB,IAAI,OAAO,EAAE,CAAC;gBAAC,OAAO,GAAG,KAAK,CAAC;gBAAC,SAAQ;YAAC,CAAC;YAC1C,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAAC,OAAO,GAAG,IAAI,CAAC;gBAAC,SAAQ;YAAC,CAAC;YACzD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC;gBAAC,QAAQ,GAAG,CAAC,QAAQ,CAAC;gBAAC,SAAQ;YAAC,CAAC;YAC7E,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAAC,QAAQ,GAAG,CAAC,QAAQ,CAAC;gBAAC,SAAQ;YAAC,CAAC;YAC9D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAAC,UAAU,GAAG,CAAC,UAAU,CAAC;gBAAC,SAAQ;YAAC,CAAC;YAClE,IAAI,QAAQ,IAAI,QAAQ,IAAI,UAAU;gBAAE,SAAQ;YAChD,gCAAgC;YAChC,IAAI,CAAC,KAAK,GAAG,IAAI,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC;gBAAE,MAAK;YACpD,IAAI,CAAC,KAAK,GAAG;gBAAE,UAAU,EAAE,CAAA;iBACtB,IAAI,CAAC,KAAK,GAAG;gBAAE,UAAU,EAAE,CAAA;iBAC3B,IAAI,CAAC,KAAK,GAAG;gBAAE,UAAU,EAAE,CAAA;iBAC3B,IAAI,CAAC,KAAK,GAAG;gBAAE,UAAU,EAAE,CAAA;QAClC,CAAC;QACD,0CAA0C;QAC1C,IAAI,OAAO;YAAE,gBAAgB,GAAG,IAAI,CAAA;QACpC,gCAAgC;QAChC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC;YAC1C,MAAM,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;YAC5B,IAAI,CAAC;gBAAE,cAAc,GAAG,CAAC,CAAA;QAC3B,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,IAAI,QAAQ,IAAI,UAAU,IAAI,gBAAgB,IAAI,cAAc,KAAK,IAAI,IAAI,UAAU,GAAG,CAAC,IAAI,UAAU,GAAG,CAAC,CAAA;AAC9H,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,mBAAmB,CAAC,IAAY;IACvC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA;IAC9B,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAA;IACxB,IAAI,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG;QAAE,OAAO,IAAI,CAAA;IAChD,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IAC5B,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG;QAAE,OAAO,IAAI,CAAA;IAC/C,kCAAkC;IAClC,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACzC,IAAI,CAAC,CAAC,IAAI,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IAClH,4CAA4C;IAC5C,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;QACpB,IAAI,OAAO,EAAE,CAAC;YAAC,OAAO,GAAG,KAAK,CAAC;YAAC,SAAQ;QAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YAAC,OAAO,GAAG,IAAI,CAAC;YAAC,SAAQ;QAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAAC,QAAQ,GAAG,CAAC,QAAQ,CAAC;YAAC,SAAQ;QAAC,CAAC;QAC9D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAAC,QAAQ,GAAG,CAAC,QAAQ,CAAC;YAAC,SAAQ;QAAC,CAAC;IAChE,CAAC;IACD,IAAI,QAAQ,IAAI,QAAQ;QAAE,OAAO,IAAI,CAAA;IACrC,OAAO,KAAK,GAAG,GAAG,CAAA;AACpB,CAAC;AAED;;;;;;GAMG;AACH,SAAS,oBAAoB,CAAC,CAAS;IACrC,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,IAAI,UAAU,GAAG,CAAC,CAAA;IAClB,IAAI,UAAU,GAAG,CAAC,CAAA;IAClB,IAAI,SAAS,GAAkB,IAAI,CAAA;IACnC,IAAI,gBAAgB,GAAG,KAAK,CAAA;IAC5B,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,6CAA6C;QAC7C,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAAE,SAAS,GAAG,IAAI,CAAA;YACrD,SAAQ;QACV,CAAC;QACD,yEAAyE;QACzE,IAAI,QAAQ,GAAG,IAAI,CAAA;QACnB,IAAI,MAAM,GAAkB,IAAI,CAAA;QAChC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAA;YAClC,IAAI,MAAM,KAAK,IAAI;gBAAE,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QAC1E,CAAC;QACD,IAAI,OAAO,GAAG,KAAK,CAAA;QACnB,gBAAgB,GAAG,KAAK,CAAA;QACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;YACrB,IAAI,OAAO,EAAE,CAAC;gBAAC,OAAO,GAAG,KAAK,CAAC;gBAAC,SAAQ;YAAC,CAAC;YAC1C,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;gBAAC,OAAO,GAAG,IAAI,CAAC;gBAAC,SAAQ;YAAC,CAAC;YAC3C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAAC,QAAQ,GAAG,CAAC,QAAQ,CAAC;gBAAC,SAAQ;YAAC,CAAC;YAC9D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAAC,QAAQ,GAAG,CAAC,QAAQ,CAAC;gBAAC,SAAQ;YAAC,CAAC;YAC9D,IAAI,QAAQ,IAAI,QAAQ;gBAAE,SAAQ;YAClC,IAAI,CAAC,KAAK,GAAG;gBAAE,UAAU,EAAE,CAAA;iBACtB,IAAI,CAAC,KAAK,GAAG;gBAAE,UAAU,EAAE,CAAA;iBAC3B,IAAI,CAAC,KAAK,GAAG;gBAAE,UAAU,EAAE,CAAA;iBAC3B,IAAI,CAAC,KAAK,GAAG;gBAAE,UAAU,EAAE,CAAA;QAClC,CAAC;QACD,aAAa;QACb,IAAI,OAAO;YAAE,gBAAgB,GAAG,IAAI,CAAA;QACpC,IAAI,MAAM,KAAK,IAAI;YAAE,SAAS,GAAG,MAAM,CAAA;IACzC,CAAC;IACD,6BAA6B;IAC7B,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IACjE,OAAO,QAAQ,IAAI,QAAQ,IAAI,gBAAgB,IAAI,YAAY,IAAI,SAAS,KAAK,IAAI,IAAI,UAAU,GAAG,CAAC,IAAI,UAAU,GAAG,CAAC,CAAA;AAC3H,CAAC;AAED;;;;;GAKG;AACH,SAAS,mBAAmB,CAAC,CAAS;IACpC,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,IAAI,UAAU,GAAG,CAAC,CAAA;IAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QACd,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YAAC,CAAC,EAAE,CAAC;YAAC,SAAQ;QAAC,CAAC,CAAC,YAAY;QAC7C,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YAAC,QAAQ,GAAG,CAAC,QAAQ,CAAC;YAAC,SAAQ;QAAC,CAAC;QACjD,IAAI,QAAQ;YAAE,SAAQ;QACtB,IAAI,CAAC,KAAK,GAAG;YAAE,UAAU,EAAE,CAAA;aACtB,IAAI,CAAC,KAAK,GAAG;YAAE,UAAU,EAAE,CAAA;IAClC,CAAC;IACD,OAAO,UAAU,GAAG,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAC3C,CAAC;AAED,qDAAqD;AACrD,iEAAiE;AAEjE;;;;;;GAMG;AACH,MAAM,qBAAqB,GACzB,sHAAsH,CAAA;AAExH;;;;;GAKG;AACH,MAAM,oBAAoB,GACxB,sJAAsJ,CAAA;AAExJ,MAAM,UAAU;IACL,IAAI,GAAG,KAAK,CAAA;IACZ,YAAY,GAAG,QAAQ,eAAe,IAAI,CAAA;IAC1C,OAAO,GAAG,GAAG,CAAA;IACb,YAAY,GAAG,KAAK,CAAA,CAAC,4CAA4C;IACjE,aAAa,GAAG,qBAAqB,CAAA;IAC9C,SAAS,CAAC,KAAa,EAAE,GAAW;QAClC,gEAAgE;QAChE,OAAO,cAAc,QAAQ,GAAG,KAAK,IAAI,GAAG,aAAa,CAAA;IAC3D,CAAC;IACD,SAAS,CAAC,IAAY;QACpB,yDAAyD;QACzD,kBAAkB;QAClB,OAAO,KAAK,IAAI,KAAK,CAAA;IACvB,CAAC;IACD,mBAAmB,CAAC,OAAe;QACjC,OAAO,qBAAqB,CAAC,OAAO,CAAC,CAAA;IACvC,CAAC;IACD,UAAU,CAAC,MAAc;QACvB,oCAAoC;QACpC,OAAO,IAAI,MAAM,CAAC,GAAG,eAAe,6BAA6B,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACtF,CAAC;CACF;AAED,gCAAgC;AAChC,MAAM,WAAW;IACN,IAAI,GAAG,MAAM,CAAA;IACb,YAAY,GAAG,QAAQ,eAAe,IAAI,CAAA;IAC1C,OAAO,GAAG,GAAG,CAAA;IACb,YAAY,GAAG,KAAK,CAAA,CAAC,4CAA4C;IACjE,aAAa,GAAG,qBAAqB,CAAA;IAC9C,SAAS,CAAC,KAAa,EAAE,GAAW;QAClC,mDAAmD;QACnD,OAAO,cAAc,QAAQ,GAAG,KAAK,IAAI,GAAG,UAAU,CAAA;IACxD,CAAC;IACD,SAAS,CAAC,IAAY;QACpB,yDAAyD;QACzD,OAAO,KAAK,IAAI,KAAK,CAAA;IACvB,CAAC;IACD,mBAAmB,CAAC,OAAe;QACjC,OAAO,qBAAqB,CAAC,OAAO,CAAC,CAAA;IACvC,CAAC;IACD,UAAU,CAAC,MAAc;QACvB,qCAAqC;QACrC,OAAO,IAAI,MAAM,CAAC,GAAG,eAAe,gDAAgD,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACzG,CAAC;CACF;AAED,yBAAyB;AACzB,MAAM,WAAW;IACN,IAAI,GAAG,MAAM,CAAA;IACb,YAAY,GAAG,gBAAgB,eAAe,cAAc,CAAA;IAC5D,OAAO,GAAG,GAAG,CAAA;IACb,YAAY,GAAG,IAAI,CAAA,CAAC,qDAAqD;IACzE,aAAa,GAAG,oBAAoB,CAAA;IAC7C,SAAS,CAAC,KAAa,EAAE,GAAW;QAClC,kEAAkE;QAClE,qDAAqD;QACrD,wDAAwD;QACxD,gDAAgD;QAChD,EAAE;QACF,gFAAgF;QAChF,0EAA0E;QAC1E,yEAAyE;QACzE,2DAA2D;QAC3D,4BAA4B;QAC5B,wDAAwD;QACxD,wEAAwE;QACxE,uEAAuE;QACvE,sDAAsD;QACtD,6DAA6D;QAC7D,0DAA0D;QAC1D,EAAE;QACF,yDAAyD;QACzD,uEAAuE;QACvE,kEAAkE;QAClE,4CAA4C;QAC5C,EAAE;QACF,gEAAgE;QAChE,6DAA6D;QAC7D,OAAO,iBAAiB,QAAQ,GAAG,KAAK,IAAI,GAAG,gFAAgF,CAAA;IACjI,CAAC;IACD,SAAS,CAAC,IAAY;QACpB,yDAAyD;QACzD,wCAAwC;QACxC,OAAO,OAAO,IAAI,KAAK,CAAA;IACzB,CAAC;IACD,mBAAmB,CAAC,OAAe;QACjC,OAAO,oBAAoB,CAAC,OAAO,CAAC,CAAA;IACtC,CAAC;IACD,UAAU,CAAC,MAAc;QACvB,qFAAqF;QACrF,OAAO,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAC7C,CAAC;CACF;AAED,8BAA8B;AAC9B,MAAM,UAAU;IACL,IAAI,GAAG,KAAK,CAAA;IACZ,YAAY,GAAG,QAAQ,eAAe,WAAW,CAAA;IACjD,OAAO,GAAG,GAAG,CAAA;IACb,YAAY,GAAG,IAAI,CAAA,CAAC,oDAAoD;IACjF,0EAA0E;IAC1E,mDAAmD;IACnD,0BAA0B;IACjB,aAAa,GAAG,IAAI,CAAA;IAC7B,SAAS,CAAC,KAAa,EAAE,GAAW;QAClC,0DAA0D;QAC1D,8CAA8C;QAC9C,OAAO,UAAU,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,GAAG,iBAAiB,CAAA;IACpE,CAAC;IACD,SAAS,CAAC,KAAa;QACrB,mDAAmD;QACnD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,mBAAmB,CAAC,OAAe;QACjC,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAA;IACrC,CAAC;IACD,UAAU,CAAC,MAAc;QACvB,kFAAkF;QAClF,OAAO,+BAA+B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACrD,CAAC;CACF;AAED,2FAA2F;AAC3F,MAAM,CAAC,MAAM,QAAQ,GAAmB;IACtC,IAAI,UAAU,EAAE;IAChB,IAAI,WAAW,EAAE;IACjB,IAAI,WAAW,EAAE;IACjB,IAAI,UAAU,EAAE;CACjB,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"}
|
package/dist/utils.d.ts
CHANGED
|
@@ -13,7 +13,8 @@ export declare const ECHO_REGEX_MAX_CMD_CHARS = 512;
|
|
|
13
13
|
export declare function echoRegexSourceLength(command: string): number;
|
|
14
14
|
/**
|
|
15
15
|
* 定位命令回显行在原始流中的结束位置(供流式增量定位使用):
|
|
16
|
-
* 丢弃窗口开头到"命令回显行结束"
|
|
16
|
+
* 丢弃窗口开头到"命令回显行结束"之前的一切内容——**靠命令文本自锚定,不判断提示符形态**;
|
|
17
|
+
* 提示符 / PS1 填充 / 光标定位噪音都随这段前缀被一并丢弃(无需识别其长什么样)。
|
|
17
18
|
* 命令回显行 = 命令文本首次出现所在行(命令本身可能含 \033 等转义)。
|
|
18
19
|
* 命令文本后允许任意行内字符直到行尾:命令可能被追加完成标记(如 `cmd ;printf '<SSH_DONE…>'`),
|
|
19
20
|
* 此时回显是整行拼接,不能要求命令后紧跟换行。
|
|
@@ -28,9 +29,9 @@ export declare function echoRegexSourceLength(command: string): number;
|
|
|
28
29
|
*/
|
|
29
30
|
export declare function extractOutputStart(raw: string, command: string, endBound?: number, first?: boolean): number;
|
|
30
31
|
/**
|
|
31
|
-
* 剥离"
|
|
32
|
-
*
|
|
33
|
-
* 故丢弃窗口开头到"命令回显行结束"
|
|
32
|
+
* 剥离"命令回显前缀"(含提示符 / PS1 填充 / 光标噪音),只保留程序纯输出:
|
|
33
|
+
* **靠命令文本自锚定,不判断提示符形态**(提示符依赖终端自身屏幕状态、且形态可变,不可识别),
|
|
34
|
+
* 故丢弃窗口开头到"命令回显行结束"之前的一切内容——前缀里的提示符/填充/噪音随之一并丢弃。
|
|
34
35
|
* 命令回显行 = 命令文本首次出现所在行(命令本身可能含 \033 等转义)。
|
|
35
36
|
* 命中后切到"命令文本结束处":zsh 下程序输出可能直接粘连在回显尾(无换行),不能按换行截断。
|
|
36
37
|
* @param raw 原始终端流(含 ANSI)
|
|
@@ -39,17 +40,35 @@ export declare function extractOutputStart(raw: string, command: string, endBoun
|
|
|
39
40
|
*/
|
|
40
41
|
export declare function extractOutput(raw: string, command: string): string;
|
|
41
42
|
/**
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
* - 捕获窗口首个非空行(窗口含旧提示符行的场景,如不等待结果的 submit 提交 startPos=0);
|
|
46
|
-
* - 命令发起前缓冲末行(exec 窗口自命令回显起,旧提示符在窗口之外,由调用方单独传入)。
|
|
47
|
-
* @param out 纯输出流(命令回显结束 → 窗口末尾,可能以重印的提示符行结尾)
|
|
48
|
-
* @param window 捕获窗口原始流(用于取窗口开头那行作候选)
|
|
49
|
-
* @param promptRef 命令发起前缓冲末行(旧提示符行,另一候选;空串表示不可用)
|
|
50
|
-
* @returns 末行与任一候选相同(剥 ANSI/尾空白后比较)时剥掉末行;否则原样返回
|
|
43
|
+
* 探针回显"单个匹配区间的跨度上限"(字符,含字符间插入的 ANSI 与空白)。
|
|
44
|
+
* 探针命令本身约 50 可见字符、pwsh 语法高亮插入的 SGR 约 20 → 正常跨度约 70;取 200 留足余量。
|
|
45
|
+
* 超限视作宽松匹配的误命中(如稀疏空白把命令字符拉开),不删——宁可留脏,不可误删。
|
|
51
46
|
*/
|
|
52
|
-
export declare
|
|
47
|
+
export declare const PROBE_ECHO_MAX_SPAN = 200;
|
|
48
|
+
/**
|
|
49
|
+
* ANSI 容忍定位 needle 在 text 中的**首次**出现:允许 needle 字符之间插入 ANSI 转义序列与任意空白
|
|
50
|
+
* (复用"去 ANSI + 压空白"的线性匹配,免疫 shell 语法高亮在 token 间插入的 SGR)。
|
|
51
|
+
* 绝不用提示符做锚点(提示符随 cwd/profile/主题变化,不可锚定)。
|
|
52
|
+
* @param text 待搜索文本(调用方按行传入)
|
|
53
|
+
* @param needle 待定位文本(探针命令,含会话 nonce,天然唯一)
|
|
54
|
+
* @returns 命中:{start,end}(相对 text 原文偏移,end 为末个可见字符后一位);未命中:null
|
|
55
|
+
*/
|
|
56
|
+
export declare function findAnsiTolerantFirstRange(text: string, needle: string): {
|
|
57
|
+
start: number;
|
|
58
|
+
end: number;
|
|
59
|
+
} | null;
|
|
60
|
+
/**
|
|
61
|
+
* 剔除探针命令回显行(含 shell 语法高亮插入的 ANSI 与提示符前缀):
|
|
62
|
+
* 逐行处理,对每行 ANSI 容忍地定位任一 needle 的首次出现;命中且跨度不超 PROBE_ECHO_MAX_SPAN 时,
|
|
63
|
+
* 删除「探针回显起点(含其前紧邻 ANSI 色码)→ 该行行尾」——**只向后删、绝不向前越过可见字符**:
|
|
64
|
+
* 保留行中探针之前的真输出(行中打断场景);若探针回显即本行首个可见 token(前缀无可见字符)则整行丢弃,
|
|
65
|
+
* 否则保留其前缀(可能是真输出,也可能是提示符,不再与提示符基准比较)。
|
|
66
|
+
* 无命中行逐字节不变;Raw 视图不经此函数,保留原始字节。
|
|
67
|
+
* @param text 可见输出文本
|
|
68
|
+
* @param needles 探针命令文本(各 seq;含会话 nonce,故不会命中别的会话/nonce 的探针)
|
|
69
|
+
* @returns 剔除后文本
|
|
70
|
+
*/
|
|
71
|
+
export declare function removeProbeEchoLines(text: string, needles: string[]): string;
|
|
53
72
|
/**
|
|
54
73
|
* 把原始终端流转为给模型看的干净文本:用 xterm headless 引擎忠实模拟终端屏幕
|
|
55
74
|
* (处理光标移动/清行/清屏/覆盖/退格/SGR/OSC,含 scrollback),再逐行去尾空白并剔除空行。
|
|
@@ -58,12 +77,6 @@ export declare function stripTrailingPromptLine(out: string, window: string, pro
|
|
|
58
77
|
* @returns Promise:纯文本输出(供模型消费 / exec 返回值 / read 命令);write 为异步,故返回 Promise
|
|
59
78
|
*/
|
|
60
79
|
export declare function toModelText(raw: string): Promise<string>;
|
|
61
|
-
/**
|
|
62
|
-
* 末尾空白清理(原为提示符剥离,现仅做清理,不依赖正则匹配具体提示符形状)
|
|
63
|
-
* @param s 文本
|
|
64
|
-
* @returns 清理后文本
|
|
65
|
-
*/
|
|
66
|
-
export declare function stripPrompt(s: string): string;
|
|
67
80
|
/**
|
|
68
81
|
* 时间戳格式化为 yyyy-MM-dd HH:mm:ss
|
|
69
82
|
* @param ts 毫秒时间戳
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AA8CA;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,MAAM,CAAA;AA8F3C;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAG7D;AAED
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AA8CA;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,MAAM,CAAA;AA8F3C;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAG7D;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,SAAa,EAAE,KAAK,UAAQ,GAAG,MAAM,CA4B7G;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAIlE;AASD;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,MAAM,CAAA;AAEtC;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAO9G;AAqCD;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAqB5E;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAe9D;AAqCD;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAI1C"}
|