@ai-support-agent/cli 0.1.25-beta.1 → 0.1.25
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/base-websocket.d.ts +21 -0
- package/dist/base-websocket.d.ts.map +1 -1
- package/dist/base-websocket.js +48 -0
- package/dist/base-websocket.js.map +1 -1
- package/dist/cli/auth-commands.d.ts.map +1 -1
- package/dist/cli/auth-commands.js +8 -16
- package/dist/cli/auth-commands.js.map +1 -1
- package/dist/cli/validators.d.ts.map +1 -1
- package/dist/cli/validators.js +3 -5
- package/dist/cli/validators.js.map +1 -1
- package/dist/terminal/constants.d.ts +9 -0
- package/dist/terminal/constants.d.ts.map +1 -1
- package/dist/terminal/constants.js +10 -1
- package/dist/terminal/constants.js.map +1 -1
- package/dist/terminal/index.d.ts +2 -1
- package/dist/terminal/index.d.ts.map +1 -1
- package/dist/terminal/index.js.map +1 -1
- package/dist/terminal/terminal-session-manager.d.ts +32 -1
- package/dist/terminal/terminal-session-manager.d.ts.map +1 -1
- package/dist/terminal/terminal-session-manager.js +47 -0
- package/dist/terminal/terminal-session-manager.js.map +1 -1
- package/dist/terminal/terminal-session.d.ts +51 -0
- package/dist/terminal/terminal-session.d.ts.map +1 -1
- package/dist/terminal/terminal-session.js +73 -0
- package/dist/terminal/terminal-session.js.map +1 -1
- package/dist/terminal/terminal-websocket.d.ts +36 -2
- package/dist/terminal/terminal-websocket.d.ts.map +1 -1
- package/dist/terminal/terminal-websocket.js +76 -11
- package/dist/terminal/terminal-websocket.js.map +1 -1
- package/dist/vscode/vscode-tunnel-websocket.d.ts.map +1 -1
- package/dist/vscode/vscode-tunnel-websocket.js +4 -0
- package/dist/vscode/vscode-tunnel-websocket.js.map +1 -1
- package/package.json +1 -1
package/dist/base-websocket.d.ts
CHANGED
|
@@ -34,6 +34,14 @@ export declare abstract class BaseWebSocketConnection<TMessage> {
|
|
|
34
34
|
*/
|
|
35
35
|
private heartbeatAlive;
|
|
36
36
|
private heartbeatMissed;
|
|
37
|
+
/**
|
|
38
|
+
* ALB sticky-session cookies (AWSALB / AWSALBCORS etc.) captured from the
|
|
39
|
+
* WS handshake (upgrade) response's Set-Cookie headers, keyed by cookie
|
|
40
|
+
* name. Re-sent as a Cookie header on reconnect so the agent lands on the
|
|
41
|
+
* SAME API task when the API is scaled out behind an ALB. In-memory only —
|
|
42
|
+
* stickiness across agent restarts is not needed.
|
|
43
|
+
*/
|
|
44
|
+
private readonly stickyCookies;
|
|
37
45
|
constructor(options: BaseWebSocketOptions);
|
|
38
46
|
connect(): Promise<void>;
|
|
39
47
|
disconnect(): void;
|
|
@@ -50,6 +58,19 @@ export declare abstract class BaseWebSocketConnection<TMessage> {
|
|
|
50
58
|
protected sendMessage(msg: unknown): void;
|
|
51
59
|
/** 再接続成功時のコールバック(サブクラスでオーバーライド可能) */
|
|
52
60
|
protected onReconnected(): void;
|
|
61
|
+
/**
|
|
62
|
+
* Cookie request header assembled from the sticky cookies captured on the
|
|
63
|
+
* previous handshake, or undefined when none were received. Subclasses that
|
|
64
|
+
* build their own handshake headers in createWebSocket() should include
|
|
65
|
+
* this so reconnects stick to the same ALB target.
|
|
66
|
+
*/
|
|
67
|
+
protected getStickyCookieHeader(): string | undefined;
|
|
68
|
+
/**
|
|
69
|
+
* Capture Set-Cookie headers from the WS handshake (upgrade) response.
|
|
70
|
+
* Only the `name=value` pair is kept (attributes like Path/Expires are
|
|
71
|
+
* request-irrelevant); a later handshake overwrites cookies by name.
|
|
72
|
+
*/
|
|
73
|
+
private captureStickyCookies;
|
|
53
74
|
protected doConnect(): Promise<void>;
|
|
54
75
|
/**
|
|
55
76
|
* ハートビート (ping/pong) を開始する。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-websocket.d.ts","sourceRoot":"","sources":["../src/base-websocket.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"base-websocket.d.ts","sourceRoot":"","sources":["../src/base-websocket.ts"],"names":[],"mappings":"AAEA,OAAO,SAAS,MAAM,IAAI,CAAA;AAO1B,MAAM,WAAW,oBAAoB;IACnC,mBAAmB,EAAE,MAAM,CAAA;IAC3B,oBAAoB,EAAE,MAAM,CAAA;IAC5B,oCAAoC;IACpC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,6DAA6D;IAC7D,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,gDAAgD;IAChD,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED;;;;;GAKG;AACH,8BAAsB,uBAAuB,CAAC,QAAQ;IACpD,SAAS,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI,CAAO;IACrC,SAAS,CAAC,MAAM,UAAQ;IACxB,SAAS,CAAC,QAAQ,CAAC,oBAAoB;;MAAiB;IACxD,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAA;IAChD,OAAO,CAAC,cAAc,CAA8C;IACpE;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,eAAe,CAAI;IAC3B;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA4B;gBAE9C,OAAO,EAAE,oBAAoB;IAIzC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAMxB,UAAU,IAAI,IAAI;IAUlB,8BAA8B;IAC9B,SAAS,CAAC,QAAQ,CAAC,eAAe,IAAI,SAAS;IAE/C,mDAAmD;IACnD,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,GAAG,IAAI;IAE9E,uBAAuB;IACvB,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,GAAG,IAAI;IAExF,iCAAiC;IACjC,SAAS,CAAC,YAAY,IAAI,IAAI;IAI9B,sCAAsC;IACtC,SAAS,CAAC,cAAc,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI;IAQ7C,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IASzC,qCAAqC;IACrC,SAAS,CAAC,aAAa,IAAI,IAAI;IAI/B;;;;;OAKG;IACH,SAAS,CAAC,qBAAqB,IAAI,MAAM,GAAG,SAAS;IAOrD;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IAiB5B,SAAS,CAAC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAoDpC;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,cAAc;IAuCtB,gCAAgC;IAChC,OAAO,CAAC,aAAa;IASrB,kDAAkD;IAClD,SAAS,CAAC,gBAAgB,IAAI,IAAI;YAIpB,WAAW;CAW1B"}
|
package/dist/base-websocket.js
CHANGED
|
@@ -31,6 +31,14 @@ class BaseWebSocketConnection {
|
|
|
31
31
|
*/
|
|
32
32
|
heartbeatAlive = false;
|
|
33
33
|
heartbeatMissed = 0;
|
|
34
|
+
/**
|
|
35
|
+
* ALB sticky-session cookies (AWSALB / AWSALBCORS etc.) captured from the
|
|
36
|
+
* WS handshake (upgrade) response's Set-Cookie headers, keyed by cookie
|
|
37
|
+
* name. Re-sent as a Cookie header on reconnect so the agent lands on the
|
|
38
|
+
* SAME API task when the API is scaled out behind an ALB. In-memory only —
|
|
39
|
+
* stickiness across agent restarts is not needed.
|
|
40
|
+
*/
|
|
41
|
+
stickyCookies = new Map();
|
|
34
42
|
constructor(options) {
|
|
35
43
|
this.options = options;
|
|
36
44
|
}
|
|
@@ -75,9 +83,49 @@ class BaseWebSocketConnection {
|
|
|
75
83
|
onReconnected() {
|
|
76
84
|
// default: no-op
|
|
77
85
|
}
|
|
86
|
+
/**
|
|
87
|
+
* Cookie request header assembled from the sticky cookies captured on the
|
|
88
|
+
* previous handshake, or undefined when none were received. Subclasses that
|
|
89
|
+
* build their own handshake headers in createWebSocket() should include
|
|
90
|
+
* this so reconnects stick to the same ALB target.
|
|
91
|
+
*/
|
|
92
|
+
getStickyCookieHeader() {
|
|
93
|
+
if (this.stickyCookies.size === 0)
|
|
94
|
+
return undefined;
|
|
95
|
+
return Array.from(this.stickyCookies.entries())
|
|
96
|
+
.map(([name, value]) => `${name}=${value}`)
|
|
97
|
+
.join('; ');
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Capture Set-Cookie headers from the WS handshake (upgrade) response.
|
|
101
|
+
* Only the `name=value` pair is kept (attributes like Path/Expires are
|
|
102
|
+
* request-irrelevant); a later handshake overwrites cookies by name.
|
|
103
|
+
*/
|
|
104
|
+
captureStickyCookies(response) {
|
|
105
|
+
const setCookies = response.headers['set-cookie'];
|
|
106
|
+
if (!setCookies || setCookies.length === 0)
|
|
107
|
+
return;
|
|
108
|
+
for (const setCookie of setCookies) {
|
|
109
|
+
const pair = setCookie.split(';')[0];
|
|
110
|
+
const eq = pair.indexOf('=');
|
|
111
|
+
if (eq <= 0)
|
|
112
|
+
continue;
|
|
113
|
+
const name = pair.slice(0, eq).trim();
|
|
114
|
+
const value = pair.slice(eq + 1).trim();
|
|
115
|
+
if (!name)
|
|
116
|
+
continue;
|
|
117
|
+
this.stickyCookies.set(name, value);
|
|
118
|
+
}
|
|
119
|
+
logger_1.logger.debug(`${this.options.logPrefix} Captured ${this.stickyCookies.size} sticky cookie(s) from handshake`);
|
|
120
|
+
}
|
|
78
121
|
doConnect() {
|
|
79
122
|
return new Promise((resolve, reject) => {
|
|
80
123
|
const ws = this.createWebSocket();
|
|
124
|
+
ws.on('upgrade', (response) => {
|
|
125
|
+
// ALB sticky cookies (AWSALB / AWSALBCORS) arrive on the handshake
|
|
126
|
+
// response; keep them so the next reconnect targets the same task.
|
|
127
|
+
this.captureStickyCookies(response);
|
|
128
|
+
});
|
|
81
129
|
ws.on('open', () => {
|
|
82
130
|
this.startHeartbeat(ws);
|
|
83
131
|
this.onOpen(ws, resolve);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-websocket.js","sourceRoot":"","sources":["../src/base-websocket.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"base-websocket.js","sourceRoot":"","sources":["../src/base-websocket.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-commands.d.ts","sourceRoot":"","sources":["../../src/cli/auth-commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"auth-commands.d.ts","sourceRoot":"","sources":["../../src/cli/auth-commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAmFxC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+D3D"}
|
|
@@ -54,15 +54,13 @@ async function performBrowserAuth(opts) {
|
|
|
54
54
|
const port = opts.port ? (() => {
|
|
55
55
|
const parsed = parseInt(opts.port, 10);
|
|
56
56
|
if (isNaN(parsed) || parsed < 1 || parsed > 65535) {
|
|
57
|
-
|
|
58
|
-
process.exit(1);
|
|
57
|
+
(0, utils_1.exitWithError)((0, i18n_1.t)('auth.invalidPort', { port: opts.port }));
|
|
59
58
|
}
|
|
60
59
|
return parsed;
|
|
61
60
|
})() : undefined;
|
|
62
61
|
const urlError = (0, utils_1.validateApiUrl)(opts.url);
|
|
63
62
|
if (urlError) {
|
|
64
|
-
|
|
65
|
-
process.exit(1);
|
|
63
|
+
(0, utils_1.exitWithError)((0, i18n_1.t)('auth.invalidProtocol'));
|
|
66
64
|
}
|
|
67
65
|
const origin = new URL(opts.url).origin;
|
|
68
66
|
const { url: serverUrl, nonce, waitForCallback, stop } = await (0, auth_server_1.startAuthServer)(port, origin);
|
|
@@ -77,12 +75,10 @@ async function performBrowserAuth(opts) {
|
|
|
77
75
|
stop();
|
|
78
76
|
const apiUrl = opts.apiUrl ?? result.apiUrl;
|
|
79
77
|
if (!apiUrl) {
|
|
80
|
-
|
|
81
|
-
process.exit(1);
|
|
78
|
+
(0, utils_1.exitWithError)((0, i18n_1.t)('auth.noApiUrl'));
|
|
82
79
|
}
|
|
83
80
|
if (!result.tenantCode) {
|
|
84
|
-
|
|
85
|
-
process.exit(1);
|
|
81
|
+
(0, utils_1.exitWithError)((0, i18n_1.t)('auth.noTenantCode'));
|
|
86
82
|
}
|
|
87
83
|
const projectCode = result.projectCode ?? constants_1.PROJECT_CODE_DEFAULT;
|
|
88
84
|
const registration = { tenantCode: result.tenantCode, projectCode, token: result.token, apiUrl };
|
|
@@ -96,8 +92,7 @@ async function handleBrowserAuthCommand(opts, successMessageKey) {
|
|
|
96
92
|
logger_1.logger.success((0, i18n_1.t)(successMessageKey, { projectCode }));
|
|
97
93
|
}
|
|
98
94
|
catch (error) {
|
|
99
|
-
|
|
100
|
-
process.exit(1);
|
|
95
|
+
(0, utils_1.exitWithError)((0, i18n_1.t)('auth.failed', { message: (0, utils_1.getErrorMessage)(error) }));
|
|
101
96
|
}
|
|
102
97
|
}
|
|
103
98
|
function registerAuthCommands(program) {
|
|
@@ -124,8 +119,7 @@ function registerAuthCommands(program) {
|
|
|
124
119
|
.action(async (opts) => {
|
|
125
120
|
const apiUrlError = (0, utils_1.validateApiUrl)(opts.apiUrl);
|
|
126
121
|
if (apiUrlError) {
|
|
127
|
-
|
|
128
|
-
process.exit(1);
|
|
122
|
+
(0, utils_1.exitWithError)(apiUrlError);
|
|
129
123
|
}
|
|
130
124
|
let projectCode = opts.projectCode;
|
|
131
125
|
let tenantCode;
|
|
@@ -141,12 +135,10 @@ function registerAuthCommands(program) {
|
|
|
141
135
|
logger_1.logger.info((0, i18n_1.t)('config.resolvedProject', { projectCode }));
|
|
142
136
|
}
|
|
143
137
|
catch (error) {
|
|
144
|
-
|
|
145
|
-
process.exit(1);
|
|
138
|
+
(0, utils_1.exitWithError)((0, i18n_1.t)('config.resolveProjectFailed', { message: (0, utils_1.getErrorMessage)(error) }));
|
|
146
139
|
}
|
|
147
140
|
if (!tenantCode) {
|
|
148
|
-
|
|
149
|
-
process.exit(1);
|
|
141
|
+
(0, utils_1.exitWithError)((0, i18n_1.t)('config.resolveProjectFailed', { message: 'tenantCode not returned from API' }));
|
|
150
142
|
}
|
|
151
143
|
const registration = {
|
|
152
144
|
tenantCode,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-commands.js","sourceRoot":"","sources":["../../src/cli/auth-commands.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"auth-commands.js","sourceRoot":"","sources":["../../src/cli/auth-commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../src/cli/validators.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../src/cli/validators.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAG9C,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAMvE;AAID,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,cAAc,GAAG,SAAS,CAM7F"}
|
package/dist/cli/validators.js
CHANGED
|
@@ -4,12 +4,11 @@ exports.parseIntervalOrExit = parseIntervalOrExit;
|
|
|
4
4
|
exports.validateUpdateChannel = validateUpdateChannel;
|
|
5
5
|
const constants_1 = require("../constants");
|
|
6
6
|
const i18n_1 = require("../i18n");
|
|
7
|
-
const
|
|
7
|
+
const utils_1 = require("../utils");
|
|
8
8
|
function parseIntervalOrExit(value, name) {
|
|
9
9
|
const parsed = parseInt(value, 10);
|
|
10
10
|
if (isNaN(parsed) || parsed < constants_1.MIN_INTERVAL || parsed > constants_1.MAX_INTERVAL) {
|
|
11
|
-
|
|
12
|
-
process.exit(1);
|
|
11
|
+
(0, utils_1.exitWithError)((0, i18n_1.t)('config.invalidInterval', { name, value, min: constants_1.MIN_INTERVAL, max: constants_1.MAX_INTERVAL }));
|
|
13
12
|
}
|
|
14
13
|
return parsed;
|
|
15
14
|
}
|
|
@@ -18,8 +17,7 @@ function validateUpdateChannel(channel) {
|
|
|
18
17
|
if (!channel)
|
|
19
18
|
return undefined;
|
|
20
19
|
if (!VALID_CHANNELS.includes(channel)) {
|
|
21
|
-
|
|
22
|
-
process.exit(1);
|
|
20
|
+
(0, utils_1.exitWithError)(`Invalid update channel: ${channel}. Must be one of: ${VALID_CHANNELS.join(', ')}`);
|
|
23
21
|
}
|
|
24
22
|
return channel;
|
|
25
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/cli/validators.ts"],"names":[],"mappings":";;AAKA,
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/cli/validators.ts"],"names":[],"mappings":";;AAKA,kDAMC;AAID,sDAMC;AArBD,4CAAyD;AACzD,kCAA2B;AAE3B,oCAAwC;AAExC,SAAgB,mBAAmB,CAAC,KAAa,EAAE,IAAY;IAC7D,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAClC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,wBAAY,IAAI,MAAM,GAAG,wBAAY,EAAE,CAAC;QACpE,IAAA,qBAAa,EAAC,IAAA,QAAC,EAAC,wBAAwB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,wBAAY,EAAE,GAAG,EAAE,wBAAY,EAAE,CAAC,CAAC,CAAA;IACnG,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,cAAc,GAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;AAErE,SAAgB,qBAAqB,CAAC,OAA2B;IAC/D,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAA;IAC9B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,IAAA,qBAAa,EAAC,2BAA2B,OAAO,qBAAqB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACnG,CAAC;IACD,OAAO,OAAyB,CAAA;AAClC,CAAC"}
|
|
@@ -11,6 +11,15 @@
|
|
|
11
11
|
*/
|
|
12
12
|
export declare const SESSION_GRACE_TIMEOUT_MS: number;
|
|
13
13
|
export declare const MAX_CONCURRENT_SESSIONS = 5;
|
|
14
|
+
/**
|
|
15
|
+
* Upper bound (in bytes) of the per-session scrollback ring buffer kept by
|
|
16
|
+
* TerminalSession. PTY output is appended to the buffer alongside the live
|
|
17
|
+
* stdout relay; when the total exceeds this cap the OLDEST bytes are dropped.
|
|
18
|
+
* On a successful resume the buffer is replayed (base64 `replay` message)
|
|
19
|
+
* right after `ready` and before any subsequent live `stdout`, so the web
|
|
20
|
+
* client can restore the screen content lost during the disconnect.
|
|
21
|
+
*/
|
|
22
|
+
export declare const SCROLLBACK_BUFFER_MAX_BYTES: number;
|
|
14
23
|
export declare const TERMINAL_DEFAULT_COLS = 80;
|
|
15
24
|
export declare const TERMINAL_DEFAULT_ROWS = 24;
|
|
16
25
|
export declare const TERMINAL_WS_RECONNECT_BASE_DELAY_MS = 1000;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/terminal/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,wBAAwB,QAAa,CAAA;AAClD,eAAO,MAAM,uBAAuB,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/terminal/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,wBAAwB,QAAa,CAAA;AAClD,eAAO,MAAM,uBAAuB,IAAI,CAAA;AAExC;;;;;;;GAOG;AACH,eAAO,MAAM,2BAA2B,QAAa,CAAA;AACrD,eAAO,MAAM,qBAAqB,KAAK,CAAA;AACvC,eAAO,MAAM,qBAAqB,KAAK,CAAA;AACvC,eAAO,MAAM,mCAAmC,OAAO,CAAA;AACvD,eAAO,MAAM,iCAAiC,QAA2B,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TERMINAL_WS_MAX_RECONNECT_RETRIES = exports.TERMINAL_WS_RECONNECT_BASE_DELAY_MS = exports.TERMINAL_DEFAULT_ROWS = exports.TERMINAL_DEFAULT_COLS = exports.MAX_CONCURRENT_SESSIONS = exports.SESSION_GRACE_TIMEOUT_MS = void 0;
|
|
3
|
+
exports.TERMINAL_WS_MAX_RECONNECT_RETRIES = exports.TERMINAL_WS_RECONNECT_BASE_DELAY_MS = exports.TERMINAL_DEFAULT_ROWS = exports.TERMINAL_DEFAULT_COLS = exports.SCROLLBACK_BUFFER_MAX_BYTES = exports.MAX_CONCURRENT_SESSIONS = exports.SESSION_GRACE_TIMEOUT_MS = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* Grace window kept after a transient WebSocket disconnect before the PTY is
|
|
6
6
|
* killed. A reconnect with the same sessionId within this window resumes the
|
|
@@ -14,6 +14,15 @@ exports.TERMINAL_WS_MAX_RECONNECT_RETRIES = exports.TERMINAL_WS_RECONNECT_BASE_D
|
|
|
14
14
|
*/
|
|
15
15
|
exports.SESSION_GRACE_TIMEOUT_MS = 300 * 1000; // 5 minutes
|
|
16
16
|
exports.MAX_CONCURRENT_SESSIONS = 5;
|
|
17
|
+
/**
|
|
18
|
+
* Upper bound (in bytes) of the per-session scrollback ring buffer kept by
|
|
19
|
+
* TerminalSession. PTY output is appended to the buffer alongside the live
|
|
20
|
+
* stdout relay; when the total exceeds this cap the OLDEST bytes are dropped.
|
|
21
|
+
* On a successful resume the buffer is replayed (base64 `replay` message)
|
|
22
|
+
* right after `ready` and before any subsequent live `stdout`, so the web
|
|
23
|
+
* client can restore the screen content lost during the disconnect.
|
|
24
|
+
*/
|
|
25
|
+
exports.SCROLLBACK_BUFFER_MAX_BYTES = 256 * 1024; // 256KB per session
|
|
17
26
|
exports.TERMINAL_DEFAULT_COLS = 80;
|
|
18
27
|
exports.TERMINAL_DEFAULT_ROWS = 24;
|
|
19
28
|
exports.TERMINAL_WS_RECONNECT_BASE_DELAY_MS = 1000;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/terminal/constants.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;GAUG;AACU,QAAA,wBAAwB,GAAG,GAAG,GAAG,IAAI,CAAA,CAAC,YAAY;AAClD,QAAA,uBAAuB,GAAG,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/terminal/constants.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;GAUG;AACU,QAAA,wBAAwB,GAAG,GAAG,GAAG,IAAI,CAAA,CAAC,YAAY;AAClD,QAAA,uBAAuB,GAAG,CAAC,CAAA;AAExC;;;;;;;GAOG;AACU,QAAA,2BAA2B,GAAG,GAAG,GAAG,IAAI,CAAA,CAAC,oBAAoB;AAC7D,QAAA,qBAAqB,GAAG,EAAE,CAAA;AAC1B,QAAA,qBAAqB,GAAG,EAAE,CAAA;AAC1B,QAAA,mCAAmC,GAAG,IAAI,CAAA;AAC1C,QAAA,iCAAiC,GAAG,MAAM,CAAC,iBAAiB,CAAA"}
|
package/dist/terminal/index.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export { buildSandboxInitScript, isZshShell, buildBashRcContent, buildZshRcContent, buildOpenFolderDisableKeybindings, } from './sandbox-init-script';
|
|
2
2
|
export { TerminalSession, isNodePtyAvailable } from './terminal-session';
|
|
3
|
-
export type { TerminalSessionInfo, TerminalSessionOptions } from './terminal-session';
|
|
3
|
+
export type { TerminalSessionInfo, TerminalSessionOptions, TerminalSessionMeta } from './terminal-session';
|
|
4
4
|
export { TerminalSessionManager } from './terminal-session-manager';
|
|
5
|
+
export type { ResumeFailureReason, ResumeResult } from './terminal-session-manager';
|
|
5
6
|
export { TerminalWebSocket } from './terminal-websocket';
|
|
6
7
|
export type { TerminalAgentMessage, TerminalServerMessage } from './terminal-websocket';
|
|
7
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/terminal/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,iCAAiC,GAClC,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACxE,YAAY,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/terminal/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,iCAAiC,GAClC,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACxE,YAAY,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAC1G,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AACnE,YAAY,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxD,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/terminal/index.ts"],"names":[],"mappings":";;;AAAA,6DAM8B;AAL5B,6HAAA,sBAAsB,OAAA;AACtB,iHAAA,UAAU,OAAA;AACV,yHAAA,kBAAkB,OAAA;AAClB,wHAAA,iBAAiB,OAAA;AACjB,wIAAA,iCAAiC,OAAA;AAEnC,uDAAwE;AAA/D,mHAAA,eAAe,OAAA;AAAE,sHAAA,kBAAkB,OAAA;AAE5C,uEAAmE;AAA1D,kIAAA,sBAAsB,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/terminal/index.ts"],"names":[],"mappings":";;;AAAA,6DAM8B;AAL5B,6HAAA,sBAAsB,OAAA;AACtB,iHAAA,UAAU,OAAA;AACV,yHAAA,kBAAkB,OAAA;AAClB,wHAAA,iBAAiB,OAAA;AACjB,wIAAA,iCAAiC,OAAA;AAEnC,uDAAwE;AAA/D,mHAAA,eAAe,OAAA;AAAE,sHAAA,kBAAkB,OAAA;AAE5C,uEAAmE;AAA1D,kIAAA,sBAAsB,OAAA;AAE/B,2DAAwD;AAA/C,uHAAA,iBAAiB,OAAA"}
|
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
import { TerminalSession, TerminalSessionOptions } from './terminal-session';
|
|
2
|
-
import type { TerminalSessionInfo } from './terminal-session';
|
|
2
|
+
import type { TerminalSessionInfo, TerminalSessionMeta } from './terminal-session';
|
|
3
|
+
/**
|
|
4
|
+
* Why a resume-only open could not reattach to an existing PTY.
|
|
5
|
+
* Mirrors the `resume_failed.reason` protocol field (3-repo contract):
|
|
6
|
+
* - 'not_found' — no session with this sessionId exists
|
|
7
|
+
* - 'dead' — the session exists but its PTY already exited
|
|
8
|
+
* - 'meta_mismatch' — the presented meta does not exactly match the recorded one
|
|
9
|
+
*/
|
|
10
|
+
export type ResumeFailureReason = 'not_found' | 'meta_mismatch' | 'dead';
|
|
11
|
+
export type ResumeResult = {
|
|
12
|
+
ok: true;
|
|
13
|
+
session: TerminalSession;
|
|
14
|
+
} | {
|
|
15
|
+
ok: false;
|
|
16
|
+
reason: ResumeFailureReason;
|
|
17
|
+
};
|
|
3
18
|
export declare class TerminalSessionManager {
|
|
4
19
|
private readonly sessions;
|
|
5
20
|
/**
|
|
@@ -9,6 +24,22 @@ export declare class TerminalSessionManager {
|
|
|
9
24
|
private readonly graceTimers;
|
|
10
25
|
private sessionCounter;
|
|
11
26
|
createSession(options?: TerminalSessionOptions): TerminalSession | null;
|
|
27
|
+
/**
|
|
28
|
+
* Resume-only lookup: NEVER spawns a new PTY (no-fallback rule). A resume
|
|
29
|
+
* open (`resume: true`) must route here — createSessionWithId() is the
|
|
30
|
+
* create-or-legacy-grace-resume path for non-resume opens.
|
|
31
|
+
*
|
|
32
|
+
* Succeeds only when the session exists, its PTY is alive, AND the presented
|
|
33
|
+
* meta exactly matches the meta recorded at creation. On success the pending
|
|
34
|
+
* grace timer (if any) is cancelled and the existing session is returned.
|
|
35
|
+
*/
|
|
36
|
+
resumeSession(sessionId: string, meta?: TerminalSessionMeta): ResumeResult;
|
|
37
|
+
/**
|
|
38
|
+
* Create-or-legacy-grace-resume path for NON-resume opens. A reconnect that
|
|
39
|
+
* explicitly asks for a resume (`resume: true`) must use resumeSession()
|
|
40
|
+
* instead — this method spawns a new PTY when no live session exists, which
|
|
41
|
+
* a resume-only open must never do.
|
|
42
|
+
*/
|
|
12
43
|
createSessionWithId(sessionId: string, options?: TerminalSessionOptions): TerminalSession | null;
|
|
13
44
|
getSession(sessionId: string): TerminalSession | undefined;
|
|
14
45
|
closeSession(sessionId: string): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-session-manager.d.ts","sourceRoot":"","sources":["../../src/terminal/terminal-session-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAG5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"terminal-session-manager.d.ts","sourceRoot":"","sources":["../../src/terminal/terminal-session-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAG5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAElF;;;;;;GAMG;AACH,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG,eAAe,GAAG,MAAM,CAAA;AAExE,MAAM,MAAM,YAAY,GACpB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,eAAe,CAAA;CAAE,GACtC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,mBAAmB,CAAA;CAAE,CAAA;AAE9C,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqC;IAC9D;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmD;IAC/E,OAAO,CAAC,cAAc,CAAI;IAE1B,aAAa,CAAC,OAAO,GAAE,sBAA2B,GAAG,eAAe,GAAG,IAAI;IAM3E;;;;;;;;OAQG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,mBAAmB,GAAG,YAAY;IAgB1E;;;;;OAKG;IACH,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,sBAA2B,GAAG,eAAe,GAAG,IAAI;IAgCpG,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAI1D,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IASxC,YAAY,IAAI,mBAAmB,EAAE;IAIrC;;;OAGG;IACH,QAAQ,IAAI,IAAI;IAUhB;;;;;OAKG;IACH,kBAAkB,IAAI,IAAI;IAM1B,OAAO,CAAC,kBAAkB;IAqB1B,OAAO,CAAC,eAAe;IAQvB,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF"}
|
|
@@ -17,6 +17,36 @@ class TerminalSessionManager {
|
|
|
17
17
|
const sessionId = `term-${Date.now()}-${this.sessionCounter}`;
|
|
18
18
|
return this.createSessionWithId(sessionId, options);
|
|
19
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* Resume-only lookup: NEVER spawns a new PTY (no-fallback rule). A resume
|
|
22
|
+
* open (`resume: true`) must route here — createSessionWithId() is the
|
|
23
|
+
* create-or-legacy-grace-resume path for non-resume opens.
|
|
24
|
+
*
|
|
25
|
+
* Succeeds only when the session exists, its PTY is alive, AND the presented
|
|
26
|
+
* meta exactly matches the meta recorded at creation. On success the pending
|
|
27
|
+
* grace timer (if any) is cancelled and the existing session is returned.
|
|
28
|
+
*/
|
|
29
|
+
resumeSession(sessionId, meta) {
|
|
30
|
+
const session = this.sessions.get(sessionId);
|
|
31
|
+
if (!session) {
|
|
32
|
+
return { ok: false, reason: 'not_found' };
|
|
33
|
+
}
|
|
34
|
+
if (!session.isAlive()) {
|
|
35
|
+
return { ok: false, reason: 'dead' };
|
|
36
|
+
}
|
|
37
|
+
if (!metaMatches(session.getMeta(), meta)) {
|
|
38
|
+
return { ok: false, reason: 'meta_mismatch' };
|
|
39
|
+
}
|
|
40
|
+
this.clearGraceTimer(sessionId);
|
|
41
|
+
logger_1.logger.debug(`[terminal] Resume validated; reattaching session: ${sessionId}`);
|
|
42
|
+
return { ok: true, session };
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Create-or-legacy-grace-resume path for NON-resume opens. A reconnect that
|
|
46
|
+
* explicitly asks for a resume (`resume: true`) must use resumeSession()
|
|
47
|
+
* instead — this method spawns a new PTY when no live session exists, which
|
|
48
|
+
* a resume-only open must never do.
|
|
49
|
+
*/
|
|
20
50
|
createSessionWithId(sessionId, options = {}) {
|
|
21
51
|
// Any reconnect with this sessionId invalidates a pending grace timer: we
|
|
22
52
|
// either resume the existing PTY or replace it with a new one. Clearing
|
|
@@ -114,4 +144,21 @@ class TerminalSessionManager {
|
|
|
114
144
|
}
|
|
115
145
|
}
|
|
116
146
|
exports.TerminalSessionManager = TerminalSessionManager;
|
|
147
|
+
/**
|
|
148
|
+
* Strict meta comparison for resume validation.
|
|
149
|
+
* - Either side absent → mismatch. A resume-capable API always attaches meta
|
|
150
|
+
* to `resume: true` opens, and a legacy API never sends `resume: true` at
|
|
151
|
+
* all (its reconnects go through the createSessionWithId grace-resume path),
|
|
152
|
+
* so a meta-less resume is never a legitimate request. Refusing it closes
|
|
153
|
+
* the takeover hole where a meta-less PTY could be claimed by anyone who
|
|
154
|
+
* learned its sessionId.
|
|
155
|
+
* - Both present → every field must be strictly equal (no partial matching).
|
|
156
|
+
*/
|
|
157
|
+
function metaMatches(recorded, presented) {
|
|
158
|
+
if (!recorded || !presented)
|
|
159
|
+
return false;
|
|
160
|
+
return (recorded.tenantCode === presented.tenantCode &&
|
|
161
|
+
recorded.projectCode === presented.projectCode &&
|
|
162
|
+
recorded.userId === presented.userId);
|
|
163
|
+
}
|
|
117
164
|
//# sourceMappingURL=terminal-session-manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-session-manager.js","sourceRoot":"","sources":["../../src/terminal/terminal-session-manager.ts"],"names":[],"mappings":";;;AAAA,yDAA4E;AAC5E,2CAA+E;AAC/E,sCAAkC;
|
|
1
|
+
{"version":3,"file":"terminal-session-manager.js","sourceRoot":"","sources":["../../src/terminal/terminal-session-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,20 @@
|
|
|
2
2
|
* node-pty が利用可能か確認する
|
|
3
3
|
*/
|
|
4
4
|
export declare function isNodePtyAvailable(): boolean;
|
|
5
|
+
/**
|
|
6
|
+
* Resume-validation metadata recorded at PTY creation time.
|
|
7
|
+
*
|
|
8
|
+
* The API includes `meta` in the `open` message; the session stores it and a
|
|
9
|
+
* later resume `open` must present an EXACTLY matching meta to reattach to
|
|
10
|
+
* this PTY (see TerminalSessionManager.resumeSession). This prevents an
|
|
11
|
+
* API-restart resume from handing an existing PTY to a different tenant /
|
|
12
|
+
* project / user.
|
|
13
|
+
*/
|
|
14
|
+
export interface TerminalSessionMeta {
|
|
15
|
+
tenantCode: string;
|
|
16
|
+
projectCode: string;
|
|
17
|
+
userId: string;
|
|
18
|
+
}
|
|
5
19
|
export interface TerminalSessionOptions {
|
|
6
20
|
cols?: number;
|
|
7
21
|
rows?: number;
|
|
@@ -14,6 +28,12 @@ export interface TerminalSessionOptions {
|
|
|
14
28
|
* 含まれないキーは PTY が継承する process.env をそのまま残す。
|
|
15
29
|
*/
|
|
16
30
|
envVarsOverride?: Record<string, string>;
|
|
31
|
+
/**
|
|
32
|
+
* Resume 検証用メタ(tenantCode / projectCode / userId)。
|
|
33
|
+
* open メッセージの meta をそのまま記録し、resume open の meta と完全一致
|
|
34
|
+
* した場合のみ既存 PTY への再接続を許可する。
|
|
35
|
+
*/
|
|
36
|
+
meta?: TerminalSessionMeta;
|
|
17
37
|
}
|
|
18
38
|
export interface TerminalSessionInfo {
|
|
19
39
|
sessionId: string;
|
|
@@ -56,6 +76,15 @@ export declare class TerminalSession {
|
|
|
56
76
|
*/
|
|
57
77
|
private internalExitCallback;
|
|
58
78
|
private exited;
|
|
79
|
+
/** Resume-validation meta recorded at creation (null when the open had no meta). */
|
|
80
|
+
private readonly meta;
|
|
81
|
+
/**
|
|
82
|
+
* Scrollback ring buffer: PTY output chunks appended alongside the live
|
|
83
|
+
* stdout relay, capped at SCROLLBACK_BUFFER_MAX_BYTES by dropping the OLDEST
|
|
84
|
+
* bytes. Replayed to the client on a successful resume.
|
|
85
|
+
*/
|
|
86
|
+
private readonly scrollbackChunks;
|
|
87
|
+
private scrollbackBytes;
|
|
59
88
|
/**
|
|
60
89
|
* 過去の terminal-sandbox-* ディレクトリを一括削除する。
|
|
61
90
|
*
|
|
@@ -71,7 +100,29 @@ export declare class TerminalSession {
|
|
|
71
100
|
*/
|
|
72
101
|
static cleanupStaleSandboxes(maxAgeMs?: number): number;
|
|
73
102
|
constructor(sessionId: string, options?: TerminalSessionOptions);
|
|
103
|
+
/**
|
|
104
|
+
* Register the (single) live data relay callback. Registration REPLACES any
|
|
105
|
+
* previous callback — it does not add a listener — so re-registering on a
|
|
106
|
+
* resume cannot double-send stdout.
|
|
107
|
+
*/
|
|
74
108
|
onData(callback: DataCallback): void;
|
|
109
|
+
/** Resume-validation meta recorded at creation, or null if none was given. */
|
|
110
|
+
getMeta(): TerminalSessionMeta | null;
|
|
111
|
+
/**
|
|
112
|
+
* Snapshot of the scrollback ring buffer (oldest → newest), at most
|
|
113
|
+
* SCROLLBACK_BUFFER_MAX_BYTES bytes. Returns an empty Buffer when no output
|
|
114
|
+
* has been produced yet.
|
|
115
|
+
*/
|
|
116
|
+
getScrollbackBuffer(): Buffer;
|
|
117
|
+
/**
|
|
118
|
+
* Append PTY output to the ring buffer, evicting the OLDEST bytes once the
|
|
119
|
+
* total exceeds SCROLLBACK_BUFFER_MAX_BYTES. Eviction may slice a chunk in
|
|
120
|
+
* the middle; the cut is then advanced to the next UTF-8 character boundary
|
|
121
|
+
* (a buffer starting mid-sequence would replay as U+FFFD mojibake at the
|
|
122
|
+
* top of the restored scrollback), so the kept total may fall a few bytes
|
|
123
|
+
* under the cap.
|
|
124
|
+
*/
|
|
125
|
+
private appendScrollback;
|
|
75
126
|
onExit(callback: ExitCallback): void;
|
|
76
127
|
/**
|
|
77
128
|
* Register the manager-owned exit cleanup. Separate from the public onExit so
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-session.d.ts","sourceRoot":"","sources":["../../src/terminal/terminal-session.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"terminal-session.d.ts","sourceRoot":"","sources":["../../src/terminal/terminal-session.ts"],"names":[],"mappings":"AAgEA;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACxC;;;;OAIG;IACH,IAAI,CAAC,EAAE,mBAAmB,CAAA;CAC3B;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,KAAK,YAAY,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;AAC1C,KAAK,YAAY,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;AAEjD;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,+BAA+B,CAAA;AAEhE,qBAAa,eAAe;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAM;IACjC,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,YAAY,CAA4B;IAChD;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB,CAA4B;IACxD,OAAO,CAAC,MAAM,CAAQ;IACtB,oFAAoF;IACpF,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA4B;IACjD;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAe;IAChD,OAAO,CAAC,eAAe,CAAI;IAE3B;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,qBAAqB,CAAC,QAAQ,GAAE,MAA4B,GAAG,MAAM;gBAyBhE,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,sBAA2B;IAyHnE;;;;OAIG;IACH,MAAM,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAIpC,8EAA8E;IAC9E,OAAO,IAAI,mBAAmB,GAAG,IAAI;IAIrC;;;;OAIG;IACH,mBAAmB,IAAI,MAAM;IAI7B;;;;;;;OAOG;IACH,OAAO,CAAC,gBAAgB;IA2BxB,MAAM,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAIpC;;;OAGG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAI7C,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAMzB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAQxC,IAAI,IAAI,IAAI;IAMZ,OAAO,CAAC,aAAa;IAmBrB,OAAO,IAAI,OAAO;IAIlB,OAAO,IAAI,mBAAmB;IAc9B,OAAO,CAAC,aAAa;CAGtB"}
|
|
@@ -93,6 +93,15 @@ class TerminalSession {
|
|
|
93
93
|
*/
|
|
94
94
|
internalExitCallback = null;
|
|
95
95
|
exited = false;
|
|
96
|
+
/** Resume-validation meta recorded at creation (null when the open had no meta). */
|
|
97
|
+
meta;
|
|
98
|
+
/**
|
|
99
|
+
* Scrollback ring buffer: PTY output chunks appended alongside the live
|
|
100
|
+
* stdout relay, capped at SCROLLBACK_BUFFER_MAX_BYTES by dropping the OLDEST
|
|
101
|
+
* bytes. Replayed to the client on a successful resume.
|
|
102
|
+
*/
|
|
103
|
+
scrollbackChunks = [];
|
|
104
|
+
scrollbackBytes = 0;
|
|
96
105
|
/**
|
|
97
106
|
* 過去の terminal-sandbox-* ディレクトリを一括削除する。
|
|
98
107
|
*
|
|
@@ -140,6 +149,7 @@ class TerminalSession {
|
|
|
140
149
|
throw new Error(`Terminal functionality is not available: node-pty failed to load. ${ptyLoadError ?? 'Unknown error'}`);
|
|
141
150
|
}
|
|
142
151
|
this.sessionId = sessionId;
|
|
152
|
+
this.meta = options.meta ?? null;
|
|
143
153
|
this.cols = options.cols ?? constants_1.TERMINAL_DEFAULT_COLS;
|
|
144
154
|
this.rows = options.rows ?? constants_1.TERMINAL_DEFAULT_ROWS;
|
|
145
155
|
this.cwd = options.cwd ?? process.cwd();
|
|
@@ -220,6 +230,9 @@ class TerminalSession {
|
|
|
220
230
|
this.pid = this.ptyProcess.pid;
|
|
221
231
|
this.ptyProcess.onData((data) => {
|
|
222
232
|
this.touchActivity();
|
|
233
|
+
// Append to the scrollback ring buffer alongside the live relay so a
|
|
234
|
+
// later resume can replay output produced while the WS was down.
|
|
235
|
+
this.appendScrollback(data);
|
|
223
236
|
if (this.dataCallback) {
|
|
224
237
|
this.dataCallback(data);
|
|
225
238
|
}
|
|
@@ -238,9 +251,58 @@ class TerminalSession {
|
|
|
238
251
|
}
|
|
239
252
|
});
|
|
240
253
|
}
|
|
254
|
+
/**
|
|
255
|
+
* Register the (single) live data relay callback. Registration REPLACES any
|
|
256
|
+
* previous callback — it does not add a listener — so re-registering on a
|
|
257
|
+
* resume cannot double-send stdout.
|
|
258
|
+
*/
|
|
241
259
|
onData(callback) {
|
|
242
260
|
this.dataCallback = callback;
|
|
243
261
|
}
|
|
262
|
+
/** Resume-validation meta recorded at creation, or null if none was given. */
|
|
263
|
+
getMeta() {
|
|
264
|
+
return this.meta;
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Snapshot of the scrollback ring buffer (oldest → newest), at most
|
|
268
|
+
* SCROLLBACK_BUFFER_MAX_BYTES bytes. Returns an empty Buffer when no output
|
|
269
|
+
* has been produced yet.
|
|
270
|
+
*/
|
|
271
|
+
getScrollbackBuffer() {
|
|
272
|
+
return Buffer.concat(this.scrollbackChunks);
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Append PTY output to the ring buffer, evicting the OLDEST bytes once the
|
|
276
|
+
* total exceeds SCROLLBACK_BUFFER_MAX_BYTES. Eviction may slice a chunk in
|
|
277
|
+
* the middle; the cut is then advanced to the next UTF-8 character boundary
|
|
278
|
+
* (a buffer starting mid-sequence would replay as U+FFFD mojibake at the
|
|
279
|
+
* top of the restored scrollback), so the kept total may fall a few bytes
|
|
280
|
+
* under the cap.
|
|
281
|
+
*/
|
|
282
|
+
appendScrollback(data) {
|
|
283
|
+
let chunk = Buffer.from(data, 'utf-8');
|
|
284
|
+
// A single chunk larger than the cap: keep only its newest tail.
|
|
285
|
+
if (chunk.byteLength > constants_1.SCROLLBACK_BUFFER_MAX_BYTES) {
|
|
286
|
+
chunk = chunk.subarray(alignToUtf8Boundary(chunk, chunk.byteLength - constants_1.SCROLLBACK_BUFFER_MAX_BYTES));
|
|
287
|
+
}
|
|
288
|
+
this.scrollbackChunks.push(chunk);
|
|
289
|
+
this.scrollbackBytes += chunk.byteLength;
|
|
290
|
+
while (this.scrollbackBytes > constants_1.SCROLLBACK_BUFFER_MAX_BYTES) {
|
|
291
|
+
const oldest = this.scrollbackChunks[0];
|
|
292
|
+
const excess = this.scrollbackBytes - constants_1.SCROLLBACK_BUFFER_MAX_BYTES;
|
|
293
|
+
const cut = excess >= oldest.byteLength ? oldest.byteLength : alignToUtf8Boundary(oldest, excess);
|
|
294
|
+
if (cut >= oldest.byteLength) {
|
|
295
|
+
// Drop the whole oldest chunk.
|
|
296
|
+
this.scrollbackChunks.shift();
|
|
297
|
+
this.scrollbackBytes -= oldest.byteLength;
|
|
298
|
+
}
|
|
299
|
+
else {
|
|
300
|
+
// Trim only the leading bytes of the oldest chunk.
|
|
301
|
+
this.scrollbackChunks[0] = oldest.subarray(cut);
|
|
302
|
+
this.scrollbackBytes -= cut;
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
}
|
|
244
306
|
onExit(callback) {
|
|
245
307
|
this.exitCallback = callback;
|
|
246
308
|
}
|
|
@@ -312,4 +374,15 @@ class TerminalSession {
|
|
|
312
374
|
}
|
|
313
375
|
}
|
|
314
376
|
exports.TerminalSession = TerminalSession;
|
|
377
|
+
/**
|
|
378
|
+
* Advance `pos` past UTF-8 continuation bytes (0b10xxxxxx) so a leading cut
|
|
379
|
+
* lands on a character boundary. Cutting mid-sequence would leave orphaned
|
|
380
|
+
* continuation bytes that decode to U+FFFD on replay.
|
|
381
|
+
*/
|
|
382
|
+
function alignToUtf8Boundary(buf, pos) {
|
|
383
|
+
while (pos < buf.byteLength && (buf[pos] & 0xc0) === 0x80) {
|
|
384
|
+
pos++;
|
|
385
|
+
}
|
|
386
|
+
return pos;
|
|
387
|
+
}
|
|
315
388
|
//# sourceMappingURL=terminal-session.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-session.js","sourceRoot":"","sources":["../../src/terminal/terminal-session.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"terminal-session.js","sourceRoot":"","sources":["../../src/terminal/terminal-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import WebSocket from 'ws';
|
|
2
2
|
import { BaseWebSocketConnection } from '../base-websocket';
|
|
3
|
+
import type { EnvVarsProvider } from '../env-vars-filter';
|
|
3
4
|
import { TerminalSessionManager } from './terminal-session-manager';
|
|
4
5
|
/**
|
|
5
6
|
* Messages sent from API server to agent
|
|
@@ -19,12 +20,26 @@ export interface TerminalServerMessage {
|
|
|
19
20
|
* GIT_SSH_COMMAND for the session (processed by TerminalSession).
|
|
20
21
|
*/
|
|
21
22
|
envVarsOverride?: Record<string, string>;
|
|
23
|
+
/**
|
|
24
|
+
* Resume-only open (3-repo protocol contract). When true the agent must
|
|
25
|
+
* NEVER spawn a new PTY: it either reattaches to the existing live PTY
|
|
26
|
+
* (meta exactly matching) or replies with `resume_failed`.
|
|
27
|
+
*/
|
|
28
|
+
resume?: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Resume-validation meta recorded at PTY creation and verified on resume.
|
|
31
|
+
*/
|
|
32
|
+
meta?: {
|
|
33
|
+
tenantCode: string;
|
|
34
|
+
projectCode: string;
|
|
35
|
+
userId: string;
|
|
36
|
+
};
|
|
22
37
|
}
|
|
23
38
|
/**
|
|
24
39
|
* Messages sent from agent to API server
|
|
25
40
|
*/
|
|
26
41
|
export interface TerminalAgentMessage {
|
|
27
|
-
type: 'ready' | 'stdout' | 'exit' | 'error';
|
|
42
|
+
type: 'ready' | 'stdout' | 'exit' | 'error' | 'replay' | 'resume_failed';
|
|
28
43
|
sessionId: string;
|
|
29
44
|
data?: string;
|
|
30
45
|
code?: number | null;
|
|
@@ -32,8 +47,9 @@ export interface TerminalAgentMessage {
|
|
|
32
47
|
pid?: number;
|
|
33
48
|
cols?: number;
|
|
34
49
|
rows?: number;
|
|
50
|
+
/** resume_failed reason: 'not_found' | 'meta_mismatch' | 'dead' */
|
|
51
|
+
reason?: string;
|
|
35
52
|
}
|
|
36
|
-
import type { EnvVarsProvider } from '../env-vars-filter';
|
|
37
53
|
export type { EnvVarsProvider } from '../env-vars-filter';
|
|
38
54
|
export declare class TerminalWebSocket extends BaseWebSocketConnection<TerminalServerMessage> {
|
|
39
55
|
private readonly token;
|
|
@@ -73,6 +89,24 @@ export declare class TerminalWebSocket extends BaseWebSocketConnection<TerminalS
|
|
|
73
89
|
*/
|
|
74
90
|
disconnect(): void;
|
|
75
91
|
private handleOpen;
|
|
92
|
+
/**
|
|
93
|
+
* Resume-only open (`resume: true`). Reattaches to the existing live PTY
|
|
94
|
+
* when the presented meta exactly matches; otherwise replies `resume_failed`
|
|
95
|
+
* with the validation reason. A failed resume NEVER spawns a new PTY.
|
|
96
|
+
*
|
|
97
|
+
* Message order on success is fixed by spec (and tests):
|
|
98
|
+
* ready → replay (skipped when the scrollback buffer is empty) → stdout…
|
|
99
|
+
* This whole method is synchronous, so no PTY data event can interleave
|
|
100
|
+
* between the relay re-registration and the ready/replay sends; any new
|
|
101
|
+
* output is delivered as `stdout` strictly after `replay`.
|
|
102
|
+
*/
|
|
103
|
+
private handleResumeOpen;
|
|
104
|
+
/**
|
|
105
|
+
* Wire the session's PTY output/exit to the WebSocket. TerminalSession holds
|
|
106
|
+
* a SINGLE callback per event (setter semantics), so calling this again on
|
|
107
|
+
* resume replaces — never stacks — the relay (no duplicate stdout frames).
|
|
108
|
+
*/
|
|
109
|
+
private attachSessionRelay;
|
|
76
110
|
private handleStdin;
|
|
77
111
|
private handleResize;
|
|
78
112
|
private handleClose;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-websocket.d.ts","sourceRoot":"","sources":["../../src/terminal/terminal-websocket.ts"],"names":[],"mappings":"AAEA,OAAO,SAAS,MAAM,IAAI,CAAA;AAE1B,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"terminal-websocket.d.ts","sourceRoot":"","sources":["../../src/terminal/terminal-websocket.ts"],"names":[],"mappings":"AAEA,OAAO,SAAS,MAAM,IAAI,CAAA;AAE1B,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAK3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAMzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AASnE;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,cAAc,GAAG,OAAO,CAAA;IACtE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACxC;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB;;OAEG;IACH,IAAI,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CACnE;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,eAAe,CAAA;IACxE,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAGD,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAEzD,qBAAa,iBAAkB,SAAQ,uBAAuB,CAAC,qBAAqB,CAAC;IAMjF,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;IARnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;gBAG5B,MAAM,EAAE,MAAM,EACG,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,YAAA,EACnB,eAAe,CAAC,EAAE,eAAe,YAAA;IAYpD,iBAAiB,IAAI,sBAAsB;IAI3C,SAAS,CAAC,eAAe,IAAI,SAAS;IAatC,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,GAAG,IAAI;IAMtE,SAAS,CAAC,eAAe,CAAC,GAAG,EAAE,qBAAqB,GAAG,IAAI;IA2B3D;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,gBAAgB,IAAI,IAAI;IAIlC;;;;;;;;;;OAUG;IACH,UAAU,IAAI,IAAI;IAKlB,OAAO,CAAC,UAAU;IAsFlB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,gBAAgB;IAyCxB;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAkB1B,OAAO,CAAC,WAAW;IAmBnB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,IAAI;CAGb"}
|
|
@@ -44,12 +44,12 @@ const constants_1 = require("../constants");
|
|
|
44
44
|
const logger_1 = require("../logger");
|
|
45
45
|
const utils_1 = require("../utils");
|
|
46
46
|
const constants_2 = require("./constants");
|
|
47
|
+
const terminal_session_manager_1 = require("./terminal-session-manager");
|
|
47
48
|
const MIN_TERMINAL_SIZE = 1;
|
|
48
49
|
const MAX_TERMINAL_SIZE = 1000;
|
|
49
50
|
function clampTerminalSize(value) {
|
|
50
51
|
return Math.min(Math.max(Math.floor(value), MIN_TERMINAL_SIZE), MAX_TERMINAL_SIZE);
|
|
51
52
|
}
|
|
52
|
-
const terminal_session_manager_1 = require("./terminal-session-manager");
|
|
53
53
|
class TerminalWebSocket extends base_websocket_1.BaseWebSocketConnection {
|
|
54
54
|
token;
|
|
55
55
|
agentId;
|
|
@@ -75,10 +75,14 @@ class TerminalWebSocket extends base_websocket_1.BaseWebSocketConnection {
|
|
|
75
75
|
return this.manager;
|
|
76
76
|
}
|
|
77
77
|
createWebSocket() {
|
|
78
|
+
// Re-send ALB sticky cookies captured on the previous handshake so a
|
|
79
|
+
// reconnect lands on the same API task (scale-out safe).
|
|
80
|
+
const cookie = this.getStickyCookieHeader();
|
|
78
81
|
return new ws_1.default(this.wsUrl, {
|
|
79
82
|
headers: {
|
|
80
83
|
Authorization: `Bearer ${this.token}`,
|
|
81
84
|
'X-Agent-Id': this.agentId,
|
|
85
|
+
...(cookie ? { Cookie: cookie } : {}),
|
|
82
86
|
},
|
|
83
87
|
});
|
|
84
88
|
}
|
|
@@ -154,6 +158,12 @@ class TerminalWebSocket extends base_websocket_1.BaseWebSocketConnection {
|
|
|
154
158
|
});
|
|
155
159
|
return;
|
|
156
160
|
}
|
|
161
|
+
// Resume-only open: reattach to the existing PTY or fail explicitly.
|
|
162
|
+
// Never falls back to spawning a new PTY (no-fallback rule).
|
|
163
|
+
if (msg.resume === true) {
|
|
164
|
+
this.handleResumeOpen(serverSessionId, msg);
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
157
167
|
// Resolve cwd: if relative, resolve against projectDir
|
|
158
168
|
let cwd = this.projectDir;
|
|
159
169
|
if (msg.cwd && this.projectDir) {
|
|
@@ -191,6 +201,7 @@ class TerminalWebSocket extends base_websocket_1.BaseWebSocketConnection {
|
|
|
191
201
|
rows: msg.rows,
|
|
192
202
|
cwd,
|
|
193
203
|
envVarsOverride,
|
|
204
|
+
meta: msg.meta,
|
|
194
205
|
});
|
|
195
206
|
if (!session) {
|
|
196
207
|
this.send({
|
|
@@ -200,28 +211,82 @@ class TerminalWebSocket extends base_websocket_1.BaseWebSocketConnection {
|
|
|
200
211
|
});
|
|
201
212
|
return;
|
|
202
213
|
}
|
|
214
|
+
this.attachSessionRelay(session, serverSessionId);
|
|
215
|
+
this.send({
|
|
216
|
+
type: 'ready',
|
|
217
|
+
sessionId: serverSessionId,
|
|
218
|
+
pid: session.pid,
|
|
219
|
+
cols: session.cols,
|
|
220
|
+
rows: session.rows,
|
|
221
|
+
});
|
|
222
|
+
logger_1.logger.debug(`[terminal-ws] Session opened: ${serverSessionId} (pid=${session.pid})`);
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Resume-only open (`resume: true`). Reattaches to the existing live PTY
|
|
226
|
+
* when the presented meta exactly matches; otherwise replies `resume_failed`
|
|
227
|
+
* with the validation reason. A failed resume NEVER spawns a new PTY.
|
|
228
|
+
*
|
|
229
|
+
* Message order on success is fixed by spec (and tests):
|
|
230
|
+
* ready → replay (skipped when the scrollback buffer is empty) → stdout…
|
|
231
|
+
* This whole method is synchronous, so no PTY data event can interleave
|
|
232
|
+
* between the relay re-registration and the ready/replay sends; any new
|
|
233
|
+
* output is delivered as `stdout` strictly after `replay`.
|
|
234
|
+
*/
|
|
235
|
+
handleResumeOpen(sessionId, msg) {
|
|
236
|
+
const result = this.manager.resumeSession(sessionId, msg.meta);
|
|
237
|
+
if (!result.ok) {
|
|
238
|
+
logger_1.logger.warn(`[terminal-ws] Resume failed (session=${sessionId}): ${result.reason}`);
|
|
239
|
+
this.send({
|
|
240
|
+
type: 'resume_failed',
|
|
241
|
+
sessionId,
|
|
242
|
+
reason: result.reason,
|
|
243
|
+
});
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
246
|
+
const session = result.session;
|
|
247
|
+
if (typeof msg.cols === 'number' && typeof msg.rows === 'number') {
|
|
248
|
+
session.resize(clampTerminalSize(msg.cols), clampTerminalSize(msg.rows));
|
|
249
|
+
}
|
|
250
|
+
// Re-registering REPLACES the previous callbacks (single-slot setters in
|
|
251
|
+
// TerminalSession), so a resumed session cannot double-send stdout/exit.
|
|
252
|
+
this.attachSessionRelay(session, sessionId);
|
|
253
|
+
this.send({
|
|
254
|
+
type: 'ready',
|
|
255
|
+
sessionId,
|
|
256
|
+
pid: session.pid,
|
|
257
|
+
cols: session.cols,
|
|
258
|
+
rows: session.rows,
|
|
259
|
+
});
|
|
260
|
+
const scrollback = session.getScrollbackBuffer();
|
|
261
|
+
if (scrollback.byteLength > 0) {
|
|
262
|
+
this.send({
|
|
263
|
+
type: 'replay',
|
|
264
|
+
sessionId,
|
|
265
|
+
data: scrollback.toString('base64'),
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
logger_1.logger.debug(`[terminal-ws] Session resumed: ${sessionId} (pid=${session.pid})`);
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Wire the session's PTY output/exit to the WebSocket. TerminalSession holds
|
|
272
|
+
* a SINGLE callback per event (setter semantics), so calling this again on
|
|
273
|
+
* resume replaces — never stacks — the relay (no duplicate stdout frames).
|
|
274
|
+
*/
|
|
275
|
+
attachSessionRelay(session, sessionId) {
|
|
203
276
|
session.onData((data) => {
|
|
204
277
|
this.send({
|
|
205
278
|
type: 'stdout',
|
|
206
|
-
sessionId
|
|
279
|
+
sessionId,
|
|
207
280
|
data: Buffer.from(data).toString('base64'),
|
|
208
281
|
});
|
|
209
282
|
});
|
|
210
283
|
session.onExit((code) => {
|
|
211
284
|
this.send({
|
|
212
285
|
type: 'exit',
|
|
213
|
-
sessionId
|
|
286
|
+
sessionId,
|
|
214
287
|
code,
|
|
215
288
|
});
|
|
216
289
|
});
|
|
217
|
-
this.send({
|
|
218
|
-
type: 'ready',
|
|
219
|
-
sessionId: serverSessionId,
|
|
220
|
-
pid: session.pid,
|
|
221
|
-
cols: session.cols,
|
|
222
|
-
rows: session.rows,
|
|
223
|
-
});
|
|
224
|
-
logger_1.logger.debug(`[terminal-ws] Session opened: ${serverSessionId} (pid=${session.pid})`);
|
|
225
290
|
}
|
|
226
291
|
handleStdin(msg) {
|
|
227
292
|
if (!msg.sessionId || !msg.data)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-websocket.js","sourceRoot":"","sources":["../../src/terminal/terminal-websocket.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA4B;AAE5B,4CAA0B;AAE1B,sDAA2D;AAC3D,4CAAwD;AACxD,sCAAkC;AAClC,oCAAsD;
|
|
1
|
+
{"version":3,"file":"terminal-websocket.js","sourceRoot":"","sources":["../../src/terminal/terminal-websocket.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vscode-tunnel-websocket.d.ts","sourceRoot":"","sources":["../../src/vscode/vscode-tunnel-websocket.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"vscode-tunnel-websocket.d.ts","sourceRoot":"","sources":["../../src/vscode/vscode-tunnel-websocket.ts"],"names":[],"mappings":"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"}
|
|
@@ -69,10 +69,14 @@ class VsCodeTunnelWebSocket extends base_websocket_1.BaseWebSocketConnection {
|
|
|
69
69
|
return this.browserLocalPort;
|
|
70
70
|
}
|
|
71
71
|
createWebSocket() {
|
|
72
|
+
// Re-send ALB sticky cookies captured on the previous handshake so a
|
|
73
|
+
// reconnect lands on the same API task (scale-out safe).
|
|
74
|
+
const cookie = this.getStickyCookieHeader();
|
|
72
75
|
return new ws_1.default(this.wsUrl, {
|
|
73
76
|
headers: {
|
|
74
77
|
Authorization: `Bearer ${this.token}`,
|
|
75
78
|
'X-Agent-Id': this.agentId,
|
|
79
|
+
...(cookie ? { Cookie: cookie } : {}),
|
|
76
80
|
},
|
|
77
81
|
});
|
|
78
82
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vscode-tunnel-websocket.js","sourceRoot":"","sources":["../../src/vscode/vscode-tunnel-websocket.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vscode-tunnel-websocket.js","sourceRoot":"","sources":["../../src/vscode/vscode-tunnel-websocket.ts"],"names":[],"mappings":";;;;;;AAAA,4CAA0B;AAE1B,sDAA2D;AAC3D,0EAAoE;AACpE,4CAAwD;AAExD,sCAAkC;AAClC,oCAAsD;AACtD,0FAGqD;AACrD,4EAAmE;AACnE,gFAA4E;AAE5E,2CAIoB;AACpB,mDAA8C;AAC9C,2DAAsD;AACtD,uDAAiD;AAkHjD,uDAAuD;AACvD,MAAM,qBAAqB,GAAG,GAAG,CAAA;AAEjC;;;;;;GAMG;AACH,MAAa,qBAAsB,SAAQ,wCAA4C;IAiBlE;IACA;IACA;IAKA;IAvBF,KAAK,CAAQ;IACtB,YAAY,GAAwB,IAAI,CAAA;IAChD;;;;OAIG;IACK,wBAAwB,GAAW,EAAE,CAAA;IACrC,OAAO,GAAyB,IAAI,CAAA;IAC3B,mBAAmB,GAAG,IAAI,GAAG,EAA0D,CAAA;IAC/F,qBAAqB,GAAG,IAAI,+CAAqB,CAAC,IAAA,sDAA4B,GAAE,CAAC,CAAA;IAClF,kBAAkB,GAA8B,IAAI,CAAA;IACpD,gBAAgB,GAAG,CAAC,CAAA;IAE5B,YACE,MAAc,EACG,KAAa,EACb,OAAe,EACf,UAAmB;IACpC;;;OAGG;IACc,eAAiC;QAElD,KAAK,CAAC;YACJ,mBAAmB,EAAE,2CAA+B;YACpD,oBAAoB,EAAE,6CAAiC;YACvD,mBAAmB,EAAE,qCAAyB;YAC9C,SAAS,EAAE,aAAa;SACzB,CAAC,CAAA;QAde,UAAK,GAAL,KAAK,CAAQ;QACb,YAAO,GAAP,OAAO,CAAQ;QACf,eAAU,GAAV,UAAU,CAAS;QAKnB,oBAAe,GAAf,eAAe,CAAkB;QAQlD,IAAI,CAAC,KAAK,GAAG,IAAA,kBAAU,EAAC,MAAM,EAAE,kBAAkB,CAAC,CAAA;IACrD,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAA;IAC9B,CAAC;IAES,eAAe;QACvB,qEAAqE;QACrE,yDAAyD;QACzD,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAA;QAC3C,OAAO,IAAI,YAAS,CAAC,IAAI,CAAC,KAAK,EAAE;YAC/B,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,IAAI,CAAC,KAAK,EAAE;gBACrC,YAAY,EAAE,IAAI,CAAC,OAAO;gBAC1B,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACtC;SACF,CAAC,CAAA;IACJ,CAAC;IAED,sEAAsE;IAC9D,8BAA8B,GAAyB,IAAI,CAAA;IAEzD,MAAM,CAAC,GAAc,EAAE,OAA8B;QAC7D,eAAM,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAA;QAChE,IAAI,CAAC,oBAAoB,CAAC,OAAO,GAAG,CAAC,CAAA;QAErC,6DAA6D;QAC7D,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC7B,MAAM,WAAW,GAAG,IAAI,yCAAkB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;YACtE,IAAI,CAAC,kBAAkB,GAAG,WAAW,CAAA;YACrC,0EAA0E;YAC1E,WAAW,CAAC,WAAW,GAAG,CAAC,YAAY,EAAE,EAAE;gBACzC,IAAI,CAAC,IAAI,CAAC;oBACR,IAAI,EAAE,oBAAoB;oBAC1B,SAAS,EAAE,YAAY,CAAC,SAAS;oBACjC,OAAO,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC;iBAC9B,CAAC,CAAA;YACJ,CAAC,CAAA;YACD,IAAI,CAAC,8BAA8B,GAAG,CAAC,KAAK,IAAI,EAAE;gBAChD,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,KAAK,EAAE,CAAA;oBACtC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;oBAC5B,eAAM,CAAC,IAAI,CAAC,oDAAoD,IAAI,EAAE,CAAC,CAAA;gBACzE,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,eAAM,CAAC,KAAK,CAAC,qDAAqD,IAAA,uBAAe,EAAC,GAAG,CAAC,EAAE,CAAC,CAAA;gBAC3F,CAAC;YACH,CAAC,CAAC,EAAE,CAAA;QACN,CAAC;QAED,OAAO,EAAE,CAAA;IACX,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,uBAAuB;QAC3B,IAAI,IAAI,CAAC,8BAA8B,EAAE,CAAC;YACxC,MAAM,IAAI,CAAC,8BAA8B,CAAA;QAC3C,CAAC;QACD,OAAO,IAAI,CAAC,gBAAgB,CAAA;IAC9B,CAAC;IAES,eAAe,CAAC,GAAwB;QAChD,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;YACjB,KAAK,aAAa;gBAChB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAA;gBAC1B,MAAK;YACP,KAAK,cAAc;gBACjB,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAA;gBAC3B,MAAK;YACP,KAAK,mBAAmB;gBACtB,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAA;gBAC/B,MAAK;YACP,KAAK,oBAAoB;gBACvB,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAA;gBAChC,MAAK;YACP,KAAK,cAAc;gBACjB,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAA;gBAC3B,MAAK;YACP,KAAK,UAAU;gBACb,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;gBACvB,MAAK;YACP,KAAK,cAAc;gBACjB,MAAK;YACP,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,IAAI,SAAS,CAAA;gBACvC,eAAM,CAAC,IAAI,CAAC,qCAAqC,GAAG,CAAC,SAAS,IAAI,MAAM,MAAM,MAAM,EAAE,CAAC,CAAA;gBACvF,MAAK;YACP,CAAC;YACD,mBAAmB;YACnB,KAAK,cAAc;gBACjB,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAA;gBAC3B,MAAK;YACP,KAAK,eAAe;gBAClB,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAA;gBAC5B,MAAK;YACP,KAAK,kBAAkB;gBACrB,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAA;gBAC/B,MAAK;YACP,KAAK,iBAAiB;gBACpB,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAA;gBAC7B,MAAK;YACP,KAAK,oBAAoB;gBACvB,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAA;gBAChC,MAAK;YACP,KAAK,gBAAgB;gBACnB,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAA;gBAC7B,MAAK;YACP,KAAK,qBAAqB;gBACxB,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAA;gBACjC,MAAK;YACP,KAAK,qBAAqB;gBACxB,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAA;gBACjC,MAAK;YACP,KAAK,uBAAuB;gBAC1B,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAA;gBACnC,MAAK;YACP,KAAK,wBAAwB;gBAC3B,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAA;gBACpC,MAAK;YACP,KAAK,oBAAoB;gBACvB,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAA;gBACjC,MAAK;YACP,KAAK,kBAAkB;gBACrB,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAA;gBAC/B,MAAK;YACP,KAAK,wBAAwB;gBAC3B,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAA;gBACpC,MAAK;YACP;gBACE,eAAM,CAAC,KAAK,CAAC,qCAAsC,GAAwB,CAAC,IAAI,EAAE,CAAC,CAAA;QACvF,CAAC;IACH,CAAC;IAES,YAAY;QACpB,IAAI,CAAC,OAAO,EAAE,CAAA;IAChB,CAAC;IAED,2BAA2B;IAEnB,KAAK,CAAC,gBAAgB,CAAC,GAAwB;QACrD,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAA;QAC/B,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAA;YAC1D,OAAM;QACR,CAAC;QAED,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAA;QACpD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC,CAAA;YACxE,OAAM;QACR,CAAC;QAED,kCAAkC;QAClC,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE,EAAE,CAAA;QAChD,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,eAAe,EAAE,CAAC;YAC7C,eAAM,CAAC,IAAI,CACT,mCAAmC,SAAS,iCAAiC;gBAC3E,mFAAmF,CACtF,CAAA;QACH,CAAC;QACD,MAAM,eAAe,GAAG,mBAAmB,CAAC,eAAe,CAAC,CAAA;QAE5D,oCAAoC;QACpC,IAAI,IAAI,CAAC,YAAY,EAAE,SAAS,IAAI,IAAI,CAAC,wBAAwB,KAAK,eAAe,EAAE,CAAC;YACtF,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAA;YACzB,IAAI,CAAC,IAAI,CAAC;gBACR,IAAI,EAAE,cAAc;gBACpB,SAAS;gBACT,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;gBACjC,UAAU;aACX,CAAC,CAAA;YACF,OAAM;QACR,CAAC;QAED,qDAAqD;QACrD,iDAAiD;QACjD,IAAI,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,CAAC;YACjC,eAAM,CAAC,IAAI,CACT,0EAA0E,CAC3E,CAAA;YACD,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAA;YAC9B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;YACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QACrB,CAAC;QAED,IAAI,CAAC;YACH,IAAI,CAAC,YAAY,GAAG,IAAI,4BAAY,CAAC;gBACnC,UAAU;gBACV,eAAe;aAChB,CAAC,CAAA;YACF,IAAI,CAAC,wBAAwB,GAAG,eAAe,CAAA;YAC/C,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAA;YAC/B,IAAI,CAAC,OAAO,GAAG,IAAI,+BAAa,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAA;YAE7D,IAAI,CAAC,IAAI,CAAC;gBACR,IAAI,EAAE,cAAc;gBACpB,SAAS;gBACT,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;gBACjC,UAAU;aACX,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC;gBACR,IAAI,EAAE,OAAO;gBACb,SAAS;gBACT,OAAO,EAAE,gCAAgC,IAAA,uBAAe,EAAC,KAAK,CAAC,EAAE;aAClE,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAEO,iBAAiB,CAAC,GAAwB;QAChD,eAAM,CAAC,IAAI,CAAC,gDAAgD,GAAG,CAAC,SAAS,GAAG,CAAC,CAAA;QAC7E,IAAI,CAAC,OAAO,EAAE,CAAA;QACd,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAA;QACjE,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,GAAwB;QACtD,8BAA8B;QAC9B,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QACzF,MAAM,UAAU,GAAG,SAAS,EAAE,UAAU,CAAA;QAExC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,CAAC;YACjD,IAAI,CAAC,IAAI,CAAC;gBACR,IAAI,EAAE,OAAO;gBACb,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,OAAO,EAAE,4BAA4B;aACtC,CAAC,CAAA;YACF,OAAM;QACR,CAAC;QAED,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,yEAAyE;YACzE,8EAA8E;YAC9E,iDAAiD;YACjD,IAAI,CAAC,YAAa,CAAC,KAAK,EAAE,CAAA;QAC5B,CAAC;QAED,iEAAiE;QACjE,gFAAgF;QAChF,MAAM,IAAI,GAAG,UAAU,IAAI,IAAI,CAAC,YAAa,CAAC,OAAO,EAAE,CAAA;QAEvD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAA,oCAAgB,EAAC,IAAI,EAAE;gBAC5C,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,KAAK;gBAC3B,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,GAAG;gBACrB,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE;gBAC1B,IAAI,EAAE,GAAG,CAAC,IAAI;aACf,CAAC,CAAA;YAEF,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;QACtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC;gBACR,IAAI,EAAE,OAAO;gBACb,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,OAAO,EAAE,qBAAqB,IAAA,uBAAe,EAAC,KAAK,CAAC,EAAE;aACvD,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,gBAAgB,CACtB,GAAwB,EACxB,QAA+E;QAE/E,wBAAwB;QACxB,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAA;QACvC,IAAI,UAAU,GAAG,oCAAwB,EAAE,CAAC;YAC1C,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;QAC7C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC;gBACR,IAAI,EAAE,eAAe;gBACrB,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,UAAU,EAAE,QAAQ,CAAC,UAAU;gBAC/B,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,IAAI,EAAE,QAAQ,CAAC,IAAI;aACpB,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,uBAAuB,CAC7B,GAAwB,EACxB,QAA+E;QAE/E,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAA;QACvC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,oCAAwB,CAAC,CAAA;QACpE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CACnC,CAAC,GAAG,oCAAwB,EAC5B,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,oCAAwB,CACnC,CAAA;YACD,IAAI,CAAC,IAAI,CAAC;gBACR,IAAI,EAAE,eAAe;gBACrB,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,UAAU,EAAE,QAAQ,CAAC,UAAU;gBAC/B,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;gBAC/C,IAAI,EAAE,KAAK;gBACX,cAAc,EAAE,CAAC;gBACjB,cAAc,EAAE,WAAW;aAC5B,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,GAAwB;QAC5C,gCAAgC;QAChC,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QACzF,MAAM,KAAK,GAAG,SAAS,EAAE,OAAO,IAAI,IAAI,CAAC,OAAO,CAAA;QAEhD,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACnE,OAAM;QACR,CAAC;QACD,IAAI,CAAC,KAAK;YAAE,OAAM;QAElB,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,yEAAyE;YACzE,0EAA0E;YAC1E,wEAAwE;YACxE,IAAI,CAAC,YAAa,CAAC,KAAK,EAAE,CAAA;QAC5B,CAAC;QACD,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,CAAA;QACnC,IAAI,CAAC,WAAW;YAAE,OAAM;QAExB,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;YAC3B,sBAAsB;YACtB,KAAK,CAAC,cAAc,CAClB,WAAW,EACX,GAAG,CAAC,IAAI,EACR,GAAG,EAAE;gBACH,IAAI,CAAC,IAAI,CAAC;oBACR,IAAI,EAAE,UAAU;oBAChB,SAAS,EAAE,GAAG,CAAC,SAAS;oBACxB,WAAW;oBACX,MAAM,EAAE,IAAI;iBACb,CAAC,CAAA;YACJ,CAAC,EACD,CAAC,IAAI,EAAE,EAAE;gBACP,IAAI,CAAC,IAAI,CAAC;oBACR,IAAI,EAAE,UAAU;oBAChB,SAAS,EAAE,GAAG,CAAC,SAAS;oBACxB,WAAW;oBACX,IAAI;iBACL,CAAC,CAAA;YACJ,CAAC,EACD,GAAG,EAAE;gBACH,IAAI,CAAC,IAAI,CAAC;oBACR,IAAI,EAAE,UAAU;oBAChB,SAAS,EAAE,GAAG,CAAC,SAAS;oBACxB,WAAW;oBACX,QAAQ,EAAE,IAAI;iBACf,CAAC,CAAA;YACJ,CAAC,CACF,CAAA;QACH,CAAC;aAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YACxB,KAAK,CAAC,eAAe,CAAC,WAAW,CAAC,CAAA;QACpC,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;YACpB,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;QACxC,CAAC;IACH,CAAC;IAEO,qBAAqB,CAAC,GAAwB;QACpD,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAA;QAC/B,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAA;YAC1D,OAAM;QACR,CAAC;QAED,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAA;QACjC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAA;YACtE,OAAM;QACR,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,+BAAa,CAAC,UAAU,CAAC,CAAA;QAC7C,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAA;QAEhE,eAAM,CAAC,IAAI,CAAC,4CAA4C,SAAS,WAAW,UAAU,EAAE,CAAC,CAAA;QAEzF,IAAI,CAAC,IAAI,CAAC;YACR,IAAI,EAAE,oBAAoB;YAC1B,SAAS;YACT,UAAU;SACX,CAAC,CAAA;IACJ,CAAC;IAEO,sBAAsB,CAAC,GAAwB;QACrD,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAA;QAC/B,eAAM,CAAC,IAAI,CAAC,qDAAqD,SAAS,GAAG,CAAC,CAAA;QAE9E,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;YACzD,IAAI,SAAS,EAAE,CAAC;gBACd,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAA;gBAC5B,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;YAC5C,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,SAAS,EAAE,CAAC,CAAA;QACxD,CAAC;IACH,CAAC;IAED,2BAA2B;IAEnB,KAAK,CAAC,iBAAiB,CAAC,GAAwB;QACtD,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAA;QAC/B,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAA;YAC1D,OAAM;QACR,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;YAEvE,kFAAkF;YAClF,OAAO,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,KAAK,EAAE,EAAE;gBACrC,IAAI,CAAC,IAAI,CAAC;oBACR,IAAI,EAAE,oBAAoB;oBAC1B,SAAS;oBACT,OAAO,EAAE,CAAC,KAAK,CAAC;iBACjB,CAAC,CAAA;YACJ,CAAC,CAAA;YAED,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC;gBACvB,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,GAAG,CAAC,cAAc,EAAE,SAAS,CAAC,CAAA;YAC5E,CAAC;YAED,8BAA8B;YAC9B,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;gBACZ,MAAM,UAAU,GAAG,IAAA,8BAAW,EAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBACvC,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;oBACrB,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAA;oBACpC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;gBAC7E,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,6BAA6B;gBAC7B,MAAM,OAAO,CAAC,OAAO,EAAE,CAAA;YACzB,CAAC;YAED,4BAA4B;YAC5B,OAAO,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,MAAM,EAAE,EAAE;gBACtD,IAAI,CAAC,IAAI,CAAC;oBACR,IAAI,EAAE,eAAe;oBACrB,SAAS;oBACT,IAAI,EAAE,MAAM;oBACZ,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;oBACrB,UAAU,EAAE,OAAO,CAAC,aAAa,EAAE;iBACpC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;YAEF,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,EAAE,CAAA;YAC1C,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,YAAY,EAAE,CAAA;YAE9C,IAAI,CAAC,IAAI,CAAC;gBACR,IAAI,EAAE,eAAe;gBACrB,SAAS;gBACT,cAAc,EAAE,GAAG,CAAC,cAAc;gBAClC,UAAU;gBACV,SAAS;aACV,CAAC,CAAA;YAEF,eAAM,CAAC,IAAI,CAAC,uCAAuC,SAAS,EAAE,CAAC,CAAA;QACjE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAM,CAAC,KAAK,CAAC,8CAA8C,SAAS,KAAK,IAAA,uBAAe,EAAC,KAAK,CAAC,EAAE,CAAC,CAAA;YAClG,IAAI,CAAC,IAAI,CAAC;gBACR,IAAI,EAAE,iBAAiB;gBACvB,SAAS;gBACT,MAAM,EAAE,2BAA2B,IAAA,uBAAe,EAAC,KAAK,CAAC,EAAE;gBAC3D,OAAO,EAAE,2BAA2B,IAAA,uBAAe,EAAC,KAAK,CAAC,EAAE;aAC7D,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,GAAwB;QACvD,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAA;QAC/B,IAAI,CAAC,SAAS;YAAE,OAAM;QAEtB,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QACzD,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,YAAY,EAAE,CAAA;YACtB,MAAM,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QACnD,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAA;QACnE,eAAM,CAAC,IAAI,CAAC,uCAAuC,SAAS,EAAE,CAAC,CAAA;IACjE,CAAC;IAEO,KAAK,CAAC,qBAAqB,CAAC,GAAwB;QAC1D,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAA;QAC/B,IAAI,CAAC,SAAS,IAAI,CAAC,GAAG,CAAC,GAAG;YAAE,OAAM;QAElC,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QACzD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC,CAAA;YAC7E,OAAM;QACR,CAAC;QAED,MAAM,UAAU,GAAG,IAAA,8BAAW,EAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACvC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC,MAAM,IAAI,aAAa,EAAE,CAAC,CAAA;YACpF,OAAM;QACR,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAA;YACpC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;YAC3E,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,CAAC,GAAG,CAAC,CAAA;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,sBAAsB,IAAA,uBAAe,EAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAA;QAClG,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,GAAwB;QACxD,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QACzF,IAAI,CAAC,OAAO;YAAE,OAAM;QACpB,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,MAAM,EAAE,CAAA;QACxB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAM,CAAC,IAAI,CAAC,sCAAsC,GAAG,CAAC,SAAS,MAAM,IAAA,uBAAe,EAAC,KAAK,CAAC,EAAE,CAAC,CAAA;YAC9F,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,kBAAkB,IAAA,uBAAe,EAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAA;QAC7G,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAAC,GAAwB;QAC3D,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QACzF,IAAI,CAAC,OAAO;YAAE,OAAM;QACpB,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,SAAS,EAAE,CAAA;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAM,CAAC,IAAI,CAAC,yCAAyC,GAAG,CAAC,SAAS,MAAM,IAAA,uBAAe,EAAC,KAAK,CAAC,EAAE,CAAC,CAAA;YACjG,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,qBAAqB,IAAA,uBAAe,EAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAA;QAChH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,GAAwB;QACxD,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QACzF,IAAI,CAAC,OAAO;YAAE,OAAM;QACpB,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,MAAM,EAAE,CAAA;QACxB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAM,CAAC,IAAI,CAAC,sCAAsC,GAAG,CAAC,SAAS,MAAM,IAAA,uBAAe,EAAC,KAAK,CAAC,EAAE,CAAC,CAAA;YAC9F,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,kBAAkB,IAAA,uBAAe,EAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAA;QAC7G,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,uBAAuB,CAAC,GAAwB;QAC5D,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QACzF,IAAI,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC,KAAK,SAAS,IAAI,GAAG,CAAC,CAAC,KAAK,SAAS;YAAE,OAAM;QAClE,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;QAC3E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAM,CAAC,IAAI,CAAC,0CAA0C,GAAG,CAAC,SAAS,MAAM,IAAA,uBAAe,EAAC,KAAK,CAAC,EAAE,CAAC,CAAA;YAClG,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,sBAAsB,IAAA,uBAAe,EAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAA;QACjH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,uBAAuB,CAAC,GAAwB;QAC5D,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QACzF,IAAI,CAAC,OAAO,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS;YAAE,OAAM;QAC5E,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;QACzD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAM,CAAC,IAAI,CAAC,0CAA0C,GAAG,CAAC,SAAS,MAAM,IAAA,uBAAe,EAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QACpG,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,yBAAyB,CAAC,GAAwB;QAC9D,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QACzF,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI;YAAE,OAAM;QACjC,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC7C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAM,CAAC,IAAI,CAAC,4CAA4C,GAAG,CAAC,SAAS,MAAM,IAAA,uBAAe,EAAC,KAAK,CAAC,EAAE,CAAC,CAAA;YACpG,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,wBAAwB,IAAA,uBAAe,EAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAA;QACnH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,0BAA0B,CAAC,GAAwB;QAC/D,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QACzF,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG;YAAE,OAAM;QAChC,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,CAAA;QAC5D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAM,CAAC,IAAI,CAAC,6CAA6C,GAAG,CAAC,SAAS,MAAM,IAAA,uBAAe,EAAC,KAAK,CAAC,EAAE,CAAC,CAAA;YACrG,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,yBAAyB,IAAA,uBAAe,EAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAA;QACpH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,uBAAuB,CAAC,GAAwB;QAC5D,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAA;QAC/B,IAAI,CAAC,SAAS;YAAE,OAAM;QAEtB,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QACzD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC,CAAA;YAC7E,OAAM;QACR,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;YAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;YACxC,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,EAAE,CAAA;YAC1C,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,YAAY,EAAE,CAAA;YAE9C,IAAI,CAAC,IAAI,CAAC;gBACR,IAAI,EAAE,2BAA2B;gBACjC,SAAS;gBACT,IAAI,EAAE,MAAM;gBACZ,UAAU;gBACV,SAAS;aACV,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,sBAAsB,IAAA,uBAAe,EAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAA;QAClG,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,0BAA0B,CAAC,GAAwB;QAC/D,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAA;QAC/B,IAAI,CAAC,SAAS,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC,CAAA;YAC/E,OAAM;QACR,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QACzD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC,CAAA;YAC7E,OAAM;QACR,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAA,iDAAuB,EAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACtF,IAAI,CAAC,IAAI,CAAC;oBACR,IAAI,EAAE,yBAAyB;oBAC/B,SAAS;oBACT,IAAI;oBACJ,UAAU,EAAE,KAAK;oBACjB,IAAI;iBACL,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC,IAAI,CAAC;gBACR,IAAI,EAAE,uBAAuB;gBAC7B,SAAS;gBACT,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,cAAc,EAAE,MAAM,CAAC,cAAc;aACtC,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,4BAA4B,IAAA,uBAAe,EAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAA;QACxG,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,qBAAqB,CAAC,GAAwB;QAC1D,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QACzF,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM;YAAE,OAAM;QACjD,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAA;QAChE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,eAAM,CAAC,IAAI,CAAC,2CAA2C,GAAG,CAAC,SAAS,MAAM,IAAA,uBAAe,EAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QACrG,CAAC;IACH,CAAC;IAEO,OAAO;QACb,oBAAoB;QACpB,KAAK,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,CAAA;QAE1C,uBAAuB;QACvB,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5B,KAAK,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAA;YACnC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAA;YAC9B,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAA;QAC3B,CAAC;QAED,wBAAwB;QACxB,KAAK,MAAM,CAAC,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACrD,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAA;QAC9B,CAAC;QACD,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAA;QAEhC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAA;YACvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QACrB,CAAC;QACD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAA;YACxB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;QAC1B,CAAC;IACH,CAAC;IAEO,IAAI,CAAC,GAAuB;QAClC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;IACvB,CAAC;CACF;AAluBD,sDAkuBC;AAED;;;GAGG;AACH,SAAS,mBAAmB,CAAC,OAA2C;IACtE,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAA;IACvB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAA;IACxC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzD,CAAC"}
|