@cluesmith/codev 3.2.2 → 3.2.4
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/dashboard-dist/assets/index-BZ1x7x1X.js.map +1 -1
- package/dist/agent-farm/cli.d.ts.map +1 -1
- package/dist/agent-farm/cli.js +31 -0
- package/dist/agent-farm/cli.js.map +1 -1
- package/dist/agent-farm/commands/attach.js +2 -2
- package/dist/agent-farm/commands/attach.js.map +1 -1
- package/dist/agent-farm/commands/send.d.ts +2 -2
- package/dist/agent-farm/commands/send.js +3 -3
- package/dist/agent-farm/commands/send.js.map +1 -1
- package/dist/agent-farm/commands/setup.d.ts +4 -1
- package/dist/agent-farm/commands/setup.d.ts.map +1 -1
- package/dist/agent-farm/commands/setup.js +8 -4
- package/dist/agent-farm/commands/setup.js.map +1 -1
- package/dist/agent-farm/commands/spawn-worktree.d.ts +11 -0
- package/dist/agent-farm/commands/spawn-worktree.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn-worktree.js +64 -16
- package/dist/agent-farm/commands/spawn-worktree.js.map +1 -1
- package/dist/agent-farm/commands/status.d.ts.map +1 -1
- package/dist/agent-farm/commands/status.js +26 -2
- package/dist/agent-farm/commands/status.js.map +1 -1
- package/dist/agent-farm/commands/tower-sweep-husks.d.ts +6 -0
- package/dist/agent-farm/commands/tower-sweep-husks.d.ts.map +1 -0
- package/dist/agent-farm/commands/tower-sweep-husks.js +77 -0
- package/dist/agent-farm/commands/tower-sweep-husks.js.map +1 -0
- package/dist/agent-farm/commands/tower.d.ts.map +1 -1
- package/dist/agent-farm/commands/tower.js +34 -0
- package/dist/agent-farm/commands/tower.js.map +1 -1
- package/dist/agent-farm/commands/whoami.d.ts +65 -0
- package/dist/agent-farm/commands/whoami.d.ts.map +1 -0
- package/dist/agent-farm/commands/whoami.js +196 -0
- package/dist/agent-farm/commands/whoami.js.map +1 -0
- package/dist/agent-farm/commands/workspace-recover.d.ts +31 -0
- package/dist/agent-farm/commands/workspace-recover.d.ts.map +1 -1
- package/dist/agent-farm/commands/workspace-recover.js +70 -30
- package/dist/agent-farm/commands/workspace-recover.js.map +1 -1
- package/dist/agent-farm/db/index.d.ts.map +1 -1
- package/dist/agent-farm/db/index.js +8 -2
- package/dist/agent-farm/db/index.js.map +1 -1
- package/dist/agent-farm/lib/tower-client.d.ts +1 -1
- package/dist/agent-farm/lib/tower-client.d.ts.map +1 -1
- package/dist/agent-farm/lib/tower-client.js.map +1 -1
- package/dist/agent-farm/servers/architect-session-holder.d.ts +133 -0
- package/dist/agent-farm/servers/architect-session-holder.d.ts.map +1 -0
- package/dist/agent-farm/servers/architect-session-holder.js +268 -0
- package/dist/agent-farm/servers/architect-session-holder.js.map +1 -0
- package/dist/agent-farm/servers/process-census.d.ts +41 -0
- package/dist/agent-farm/servers/process-census.d.ts.map +1 -0
- package/dist/agent-farm/servers/process-census.js +62 -0
- package/dist/agent-farm/servers/process-census.js.map +1 -0
- package/dist/agent-farm/servers/send-buffer.d.ts.map +1 -1
- package/dist/agent-farm/servers/send-buffer.js +13 -0
- package/dist/agent-farm/servers/send-buffer.js.map +1 -1
- package/dist/agent-farm/servers/session-log-sweep.d.ts +93 -0
- package/dist/agent-farm/servers/session-log-sweep.d.ts.map +1 -0
- package/dist/agent-farm/servers/session-log-sweep.js +165 -0
- package/dist/agent-farm/servers/session-log-sweep.js.map +1 -0
- package/dist/agent-farm/servers/shellper-husk-sweep.d.ts +87 -0
- package/dist/agent-farm/servers/shellper-husk-sweep.d.ts.map +1 -0
- package/dist/agent-farm/servers/shellper-husk-sweep.js +129 -0
- package/dist/agent-farm/servers/shellper-husk-sweep.js.map +1 -0
- package/dist/agent-farm/servers/tower-instances.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-instances.js +203 -36
- package/dist/agent-farm/servers/tower-instances.js.map +1 -1
- package/dist/agent-farm/servers/tower-routes.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-routes.js +147 -4
- package/dist/agent-farm/servers/tower-routes.js.map +1 -1
- package/dist/agent-farm/servers/tower-server.js +95 -1
- package/dist/agent-farm/servers/tower-server.js.map +1 -1
- package/dist/agent-farm/servers/tower-terminals.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-terminals.js +66 -8
- package/dist/agent-farm/servers/tower-terminals.js.map +1 -1
- package/dist/agent-farm/servers/tower-utils.d.ts +106 -4
- package/dist/agent-farm/servers/tower-utils.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-utils.js +155 -19
- package/dist/agent-farm/servers/tower-utils.js.map +1 -1
- package/dist/agent-farm/state.d.ts +13 -1
- package/dist/agent-farm/state.d.ts.map +1 -1
- package/dist/agent-farm/state.js +17 -2
- package/dist/agent-farm/state.js.map +1 -1
- package/dist/agent-farm/utils/claude-session-discovery.d.ts +12 -0
- package/dist/agent-farm/utils/claude-session-discovery.d.ts.map +1 -1
- package/dist/agent-farm/utils/claude-session-discovery.js +42 -4
- package/dist/agent-farm/utils/claude-session-discovery.js.map +1 -1
- package/dist/agent-farm/utils/harness.d.ts +15 -3
- package/dist/agent-farm/utils/harness.d.ts.map +1 -1
- package/dist/agent-farm/utils/harness.js +4 -1
- package/dist/agent-farm/utils/harness.js.map +1 -1
- package/dist/commands/adopt.d.ts +3 -2
- package/dist/commands/adopt.d.ts.map +1 -1
- package/dist/commands/adopt.js +7 -6
- package/dist/commands/adopt.js.map +1 -1
- package/dist/commands/consult/agy-auth-cache.d.ts +97 -0
- package/dist/commands/consult/agy-auth-cache.d.ts.map +1 -0
- package/dist/commands/consult/agy-auth-cache.js +320 -0
- package/dist/commands/consult/agy-auth-cache.js.map +1 -0
- package/dist/commands/consult/index.d.ts.map +1 -1
- package/dist/commands/consult/index.js +59 -0
- package/dist/commands/consult/index.js.map +1 -1
- package/dist/commands/doctor.d.ts +28 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +187 -3
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.d.ts +3 -2
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +7 -6
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/porch/index.d.ts.map +1 -1
- package/dist/commands/porch/index.js +11 -8
- package/dist/commands/porch/index.js.map +1 -1
- package/dist/commands/update.d.ts +4 -4
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +9 -11
- package/dist/commands/update.js.map +1 -1
- package/dist/lib/config.d.ts +1 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/default-branch.d.ts +1 -1
- package/dist/lib/default-branch.js +1 -1
- package/dist/lib/gitignore.d.ts +25 -2
- package/dist/lib/gitignore.d.ts.map +1 -1
- package/dist/lib/gitignore.js +70 -0
- package/dist/lib/gitignore.js.map +1 -1
- package/dist/lib/migration-backup-audit.d.ts +64 -0
- package/dist/lib/migration-backup-audit.d.ts.map +1 -0
- package/dist/lib/migration-backup-audit.js +145 -0
- package/dist/lib/migration-backup-audit.js.map +1 -0
- package/dist/lib/protocol-drift-audit.d.ts +118 -0
- package/dist/lib/protocol-drift-audit.d.ts.map +1 -0
- package/dist/lib/protocol-drift-audit.js +217 -0
- package/dist/lib/protocol-drift-audit.js.map +1 -0
- package/dist/lib/scaffold.d.ts +10 -3
- package/dist/lib/scaffold.d.ts.map +1 -1
- package/dist/lib/scaffold.js +29 -26
- package/dist/lib/scaffold.js.map +1 -1
- package/dist/terminal/pty-manager.d.ts +7 -0
- package/dist/terminal/pty-manager.d.ts.map +1 -1
- package/dist/terminal/pty-manager.js +16 -0
- package/dist/terminal/pty-manager.js.map +1 -1
- package/dist/terminal/pty-session.d.ts +25 -4
- package/dist/terminal/pty-session.d.ts.map +1 -1
- package/dist/terminal/pty-session.js +83 -11
- package/dist/terminal/pty-session.js.map +1 -1
- package/dist/terminal/session-manager.d.ts +109 -0
- package/dist/terminal/session-manager.d.ts.map +1 -1
- package/dist/terminal/session-manager.js +314 -45
- package/dist/terminal/session-manager.js.map +1 -1
- package/dist/terminal/shellper-client.d.ts +19 -4
- package/dist/terminal/shellper-client.d.ts.map +1 -1
- package/dist/terminal/shellper-client.js +70 -8
- package/dist/terminal/shellper-client.js.map +1 -1
- package/dist/terminal/shellper-process.d.ts.map +1 -1
- package/dist/terminal/shellper-process.js +20 -5
- package/dist/terminal/shellper-process.js.map +1 -1
- package/dist/terminal/shellper-protocol.d.ts +40 -2
- package/dist/terminal/shellper-protocol.d.ts.map +1 -1
- package/dist/terminal/shellper-protocol.js +72 -5
- package/dist/terminal/shellper-protocol.js.map +1 -1
- package/package.json +8 -8
- package/skeleton/.claude/skills/afx/SKILL.md +13 -0
- package/skeleton/.claude/skills/arch-init/SKILL.md +122 -0
- package/skeleton/.claude/skills/codev/SKILL.md +2 -2
- package/skeleton/.codex/skills/afx/SKILL.md +157 -0
- package/skeleton/.codex/skills/arch-init/SKILL.md +122 -0
- package/skeleton/.codex/skills/codev/SKILL.md +59 -0
- package/skeleton/.codex/skills/consult/SKILL.md +96 -0
- package/skeleton/.codex/skills/generate-image/SKILL.md +45 -0
- package/skeleton/.codex/skills/porch/SKILL.md +60 -0
- package/skeleton/.codex/skills/update-arch-docs/SKILL.md +132 -0
- package/skeleton/protocols/pir/prompts/implement.md +1 -1
- package/skeleton/protocols/pir/prompts/review.md +1 -1
- package/skeleton/protocols/pir/protocol.md +3 -3
- package/skeleton/resources/commands/agent-farm.md +89 -0
- package/skeleton/resources/commands/codev.md +5 -0
- package/skeleton/resources/commands/consult.md +26 -0
- package/skeleton/roles/architect.md +11 -0
|
@@ -19,6 +19,36 @@ import { EventEmitter } from 'node:events';
|
|
|
19
19
|
import { execFile } from 'node:child_process';
|
|
20
20
|
import { defaultSessionOptions } from './index.js';
|
|
21
21
|
import { ShellperClient } from './shellper-client.js';
|
|
22
|
+
import { isDeliberateExit } from './shellper-protocol.js';
|
|
23
|
+
/** Failing exits inside this window count toward crash-loop detection. */
|
|
24
|
+
export const CRASH_LOOP_WINDOW_MS = 30_000;
|
|
25
|
+
/** Failing exits within the window needed to declare a crash loop. */
|
|
26
|
+
export const CRASH_LOOP_THRESHOLD = 3;
|
|
27
|
+
/**
|
|
28
|
+
* #1198 in-place reconnect tuning. When a session's socket closes without an
|
|
29
|
+
* EXIT frame but the shellper process is still alive, the connection is
|
|
30
|
+
* re-established instead of tearing the session down: backoff per attempt
|
|
31
|
+
* within one recovery round, a stability window that resets the round
|
|
32
|
+
* counter, and a cap on consecutive unstable rounds.
|
|
33
|
+
*/
|
|
34
|
+
export const RECONNECT_BACKOFF_MS = [500, 1000, 2000];
|
|
35
|
+
export const RECONNECT_STABILITY_MS = 30_000;
|
|
36
|
+
export const MAX_RECOVERY_ROUNDS = 3;
|
|
37
|
+
/**
|
|
38
|
+
* Issue #1149: true when the recorded failing-exit timestamps amount to a
|
|
39
|
+
* crash loop (>= CRASH_LOOP_THRESHOLD failures inside the trailing
|
|
40
|
+
* CRASH_LOOP_WINDOW_MS ending at `now`). Pure so the policy is testable
|
|
41
|
+
* without spawning processes.
|
|
42
|
+
*/
|
|
43
|
+
export function isCrashLooping(failingExitTimes, now) {
|
|
44
|
+
let recent = 0;
|
|
45
|
+
for (const t of failingExitTimes) {
|
|
46
|
+
if (now - t <= CRASH_LOOP_WINDOW_MS) {
|
|
47
|
+
recent++;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return recent >= CRASH_LOOP_THRESHOLD;
|
|
51
|
+
}
|
|
22
52
|
/**
|
|
23
53
|
* Ring buffer for stderr lines. Retains the last `maxLines` lines,
|
|
24
54
|
* each truncated at `maxLineLength` chars. Non-UTF-8 bytes (decoded as
|
|
@@ -70,6 +100,9 @@ export class StderrBuffer {
|
|
|
70
100
|
return this.lines.length > 0 || this.partial.length > 0;
|
|
71
101
|
}
|
|
72
102
|
}
|
|
103
|
+
function sleep(ms) {
|
|
104
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
105
|
+
}
|
|
73
106
|
export class SessionManager extends EventEmitter {
|
|
74
107
|
config;
|
|
75
108
|
sessions = new Map();
|
|
@@ -79,6 +112,15 @@ export class SessionManager extends EventEmitter {
|
|
|
79
112
|
this.config = config;
|
|
80
113
|
this.log = config.logger ?? (() => { });
|
|
81
114
|
}
|
|
115
|
+
/**
|
|
116
|
+
* This instance's socket directory. Issue #1227: the husk sweep and fleet
|
|
117
|
+
* observability route handlers need it to reuse the exact scope-marker
|
|
118
|
+
* technique findShellperProcesses() uses, so they never touch (or count)
|
|
119
|
+
* another Tower instance's shellpers.
|
|
120
|
+
*/
|
|
121
|
+
get socketDir() {
|
|
122
|
+
return this.config.socketDir;
|
|
123
|
+
}
|
|
82
124
|
/**
|
|
83
125
|
* Spawn a new shellper process and connect to it.
|
|
84
126
|
* Returns the connected client.
|
|
@@ -167,47 +209,162 @@ export class SessionManager extends EventEmitter {
|
|
|
167
209
|
options: opts,
|
|
168
210
|
restartCount: 0,
|
|
169
211
|
restartResetTimer: null,
|
|
212
|
+
failingExitTimes: [],
|
|
170
213
|
stderrBuffer: null, // stderr goes to file, not pipe (Bugfix #324)
|
|
171
214
|
stderrStream: null,
|
|
172
215
|
stderrTailLogged: false,
|
|
216
|
+
recoveryRounds: 0,
|
|
217
|
+
lastRecoveryAt: 0,
|
|
173
218
|
};
|
|
174
219
|
this.sessions.set(opts.sessionId, session);
|
|
175
220
|
this.log(`Session ${opts.sessionId} created: pid=${info.pid}`);
|
|
176
|
-
|
|
221
|
+
this.wireClientEvents(opts.sessionId, session);
|
|
222
|
+
// Start restart reset timer if configured
|
|
177
223
|
if (opts.restartOnExit) {
|
|
178
|
-
this.
|
|
224
|
+
this.startRestartResetTimer(session);
|
|
179
225
|
}
|
|
226
|
+
return client;
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Subscribe to a session client's lifecycle events (exit, error, close) and
|
|
230
|
+
* set up auto-restart when configured. Called on session creation, on
|
|
231
|
+
* reconnection after a Tower restart, and again for the replacement client
|
|
232
|
+
* after an in-place reconnect (#1198), so all three paths behave identically.
|
|
233
|
+
*/
|
|
234
|
+
wireClientEvents(sessionId, session) {
|
|
235
|
+
const client = session.client;
|
|
180
236
|
// Forward exit events and clean up dead sessions
|
|
181
237
|
client.on('exit', (exitInfo) => {
|
|
182
|
-
this.log(`Session ${
|
|
183
|
-
this.logStderrTail(
|
|
184
|
-
this.emit('session-exit',
|
|
238
|
+
this.log(`Session ${sessionId} exited (code=${exitInfo.code})`);
|
|
239
|
+
this.logStderrTail(sessionId, session, exitInfo.code ?? -1);
|
|
240
|
+
this.emit('session-exit', sessionId, exitInfo);
|
|
185
241
|
// If not auto-restarting, remove the dead session from the map
|
|
186
242
|
// so listSessions() doesn't report it and cleanupStaleSockets()
|
|
187
243
|
// can clean its socket file.
|
|
188
|
-
if (!
|
|
189
|
-
this.removeDeadSession(
|
|
244
|
+
if (!session.options.restartOnExit) {
|
|
245
|
+
this.removeDeadSession(sessionId);
|
|
190
246
|
}
|
|
191
247
|
});
|
|
192
248
|
client.on('error', (err) => {
|
|
193
|
-
this.emit('session-error',
|
|
249
|
+
this.emit('session-error', sessionId, err);
|
|
194
250
|
});
|
|
195
|
-
|
|
251
|
+
client.on('frame-skipped', (info) => {
|
|
252
|
+
this.log(`Session ${sessionId} skipped oversized frame (type=${info.type}, ${info.size} bytes)`);
|
|
253
|
+
});
|
|
254
|
+
// #1215: surfaces when waitForReplay() actually burned its timeout
|
|
255
|
+
// instead of getting a REPLAY frame — observability for the next
|
|
256
|
+
// shellper/Tower protocol-behavior skew, so it shows up in logs
|
|
257
|
+
// instead of presenting as unexplained adoption lag.
|
|
258
|
+
client.on('replay-timeout', (info) => {
|
|
259
|
+
this.log(`Session ${sessionId} waitForReplay timed out after ${info.timeoutMs}ms (alwaysSendsReplay=${info.alwaysSendsReplay})`);
|
|
260
|
+
});
|
|
261
|
+
// Socket closed without an EXIT frame. Historically treated as "shellper
|
|
262
|
+
// crashed", but #1198 showed it also fires for a transient socket error
|
|
263
|
+
// against a perfectly healthy shellper, so try to reconnect in place
|
|
264
|
+
// before declaring the session dead.
|
|
196
265
|
client.on('close', () => {
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
266
|
+
if (!this.sessions.has(sessionId))
|
|
267
|
+
return;
|
|
268
|
+
// A replaced client's stale wiring must not trigger recovery again.
|
|
269
|
+
if (session.client !== client)
|
|
270
|
+
return;
|
|
271
|
+
this.log(`Session ${sessionId} shellper connection lost unexpectedly`);
|
|
272
|
+
this.recoverSession(sessionId, session).catch((err) => {
|
|
273
|
+
this.log(`Session ${sessionId} recovery failed unexpectedly: ${err.message}`);
|
|
274
|
+
this.declareSessionDead(sessionId, session);
|
|
275
|
+
});
|
|
205
276
|
});
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
this.startRestartResetTimer(session);
|
|
277
|
+
if (session.options.restartOnExit) {
|
|
278
|
+
this.setupAutoRestart(session, sessionId);
|
|
209
279
|
}
|
|
210
|
-
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* #1198: attempt to re-establish a session's shellper connection after an
|
|
283
|
+
* unexpected socket close. The shellper protocol is built for reconnection
|
|
284
|
+
* (that is how sessions survive Tower restarts), so a transient socket
|
|
285
|
+
* error must not tear down a healthy shellper: doing so unlinks the live
|
|
286
|
+
* socket and orphans the process. Falls through to the historical
|
|
287
|
+
* dead-session path when the process is gone or every attempt fails.
|
|
288
|
+
*/
|
|
289
|
+
async recoverSession(sessionId, session) {
|
|
290
|
+
if (Date.now() - session.lastRecoveryAt > RECONNECT_STABILITY_MS) {
|
|
291
|
+
session.recoveryRounds = 0;
|
|
292
|
+
}
|
|
293
|
+
session.recoveryRounds++;
|
|
294
|
+
if (session.recoveryRounds > MAX_RECOVERY_ROUNDS) {
|
|
295
|
+
this.log(`Session ${sessionId} gave up reconnecting after ${MAX_RECOVERY_ROUNDS} unstable recovery rounds`);
|
|
296
|
+
this.declareSessionDead(sessionId, session);
|
|
297
|
+
return;
|
|
298
|
+
}
|
|
299
|
+
for (let attempt = 0; attempt < RECONNECT_BACKOFF_MS.length; attempt++) {
|
|
300
|
+
await sleep(RECONNECT_BACKOFF_MS[attempt]);
|
|
301
|
+
// The session may have been killed or shut down while we waited.
|
|
302
|
+
if (this.sessions.get(sessionId) !== session)
|
|
303
|
+
return;
|
|
304
|
+
if (!(await this.canReachShellper(session))) {
|
|
305
|
+
break;
|
|
306
|
+
}
|
|
307
|
+
const client = new ShellperClient(session.socketPath);
|
|
308
|
+
try {
|
|
309
|
+
await client.connect();
|
|
310
|
+
}
|
|
311
|
+
catch (err) {
|
|
312
|
+
this.log(`Session ${sessionId} reconnect attempt ${attempt + 1}/${RECONNECT_BACKOFF_MS.length} failed: ${err.message}`);
|
|
313
|
+
continue;
|
|
314
|
+
}
|
|
315
|
+
if (this.sessions.get(sessionId) !== session) {
|
|
316
|
+
// Killed while we were connecting
|
|
317
|
+
client.disconnect();
|
|
318
|
+
return;
|
|
319
|
+
}
|
|
320
|
+
session.client = client;
|
|
321
|
+
session.lastRecoveryAt = Date.now();
|
|
322
|
+
this.wireClientEvents(sessionId, session);
|
|
323
|
+
this.log(`Session ${sessionId} shellper connection re-established (round ${session.recoveryRounds}, attempt ${attempt + 1})`);
|
|
324
|
+
this.emit('session-reconnected', sessionId, client);
|
|
325
|
+
return;
|
|
326
|
+
}
|
|
327
|
+
this.declareSessionDead(sessionId, session);
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Whether the session's recorded shellper process is still the one running
|
|
331
|
+
* under its PID: alive, and with a matching start time (guards PID reuse).
|
|
332
|
+
*/
|
|
333
|
+
async isShellperProcessCurrent(session) {
|
|
334
|
+
if (!this.isProcessAlive(session.pid))
|
|
335
|
+
return false;
|
|
336
|
+
const actualStartTime = await getProcessStartTime(session.pid);
|
|
337
|
+
if (actualStartTime === null || Math.abs(actualStartTime - session.startTime) > 2000) {
|
|
338
|
+
return false;
|
|
339
|
+
}
|
|
340
|
+
return true;
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Whether an in-place reconnect can possibly succeed: the shellper process
|
|
344
|
+
* is current (alive, same start time) and its socket file still exists.
|
|
345
|
+
*/
|
|
346
|
+
async canReachShellper(session) {
|
|
347
|
+
if (!(await this.isShellperProcessCurrent(session)))
|
|
348
|
+
return false;
|
|
349
|
+
try {
|
|
350
|
+
const stat = fs.lstatSync(session.socketPath);
|
|
351
|
+
return stat.isSocket();
|
|
352
|
+
}
|
|
353
|
+
catch {
|
|
354
|
+
return false;
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* The historical unexpected-death path: remove the session, clean up its
|
|
359
|
+
* socket, and emit 'session-error' so the Tower layer can log the loss.
|
|
360
|
+
*/
|
|
361
|
+
declareSessionDead(sessionId, session) {
|
|
362
|
+
if (this.sessions.get(sessionId) !== session)
|
|
363
|
+
return;
|
|
364
|
+
this.log(`Session ${sessionId} shellper disconnected unexpectedly`);
|
|
365
|
+
this.logStderrTail(sessionId, session, -1);
|
|
366
|
+
this.removeUnreachableSession(sessionId);
|
|
367
|
+
this.emit('session-error', sessionId, new Error('Shellper disconnected unexpectedly'));
|
|
211
368
|
}
|
|
212
369
|
/**
|
|
213
370
|
* Reconnect to an existing shellper process after Tower restart.
|
|
@@ -267,36 +424,20 @@ export class SessionManager extends EventEmitter {
|
|
|
267
424
|
maxRestarts: restartOptions?.maxRestarts,
|
|
268
425
|
restartResetAfter: restartOptions?.restartResetAfter,
|
|
269
426
|
}),
|
|
427
|
+
crashLoopFallback: restartOptions?.crashLoopFallback,
|
|
270
428
|
},
|
|
271
429
|
restartCount: 0,
|
|
272
430
|
restartResetTimer: null,
|
|
431
|
+
failingExitTimes: [],
|
|
273
432
|
stderrBuffer: null,
|
|
274
433
|
stderrStream: null,
|
|
275
434
|
stderrTailLogged: false,
|
|
435
|
+
recoveryRounds: 0,
|
|
436
|
+
lastRecoveryAt: 0,
|
|
276
437
|
};
|
|
277
438
|
this.sessions.set(sessionId, session);
|
|
278
439
|
this.log(`Session ${sessionId} reconnected: pid=${pid}`);
|
|
279
|
-
|
|
280
|
-
if (hasRestart) {
|
|
281
|
-
this.setupAutoRestart(session, sessionId);
|
|
282
|
-
}
|
|
283
|
-
client.on('exit', (exitInfo) => {
|
|
284
|
-
this.emit('session-exit', sessionId, exitInfo);
|
|
285
|
-
if (!hasRestart) {
|
|
286
|
-
this.removeDeadSession(sessionId);
|
|
287
|
-
}
|
|
288
|
-
});
|
|
289
|
-
client.on('error', (err) => {
|
|
290
|
-
this.emit('session-error', sessionId, err);
|
|
291
|
-
});
|
|
292
|
-
// Handle shellper crash (socket disconnects without EXIT frame)
|
|
293
|
-
client.on('close', () => {
|
|
294
|
-
if (this.sessions.has(sessionId)) {
|
|
295
|
-
this.log(`Session ${sessionId} shellper disconnected unexpectedly`);
|
|
296
|
-
this.removeDeadSession(sessionId);
|
|
297
|
-
this.emit('session-error', sessionId, new Error('Shellper disconnected unexpectedly'));
|
|
298
|
-
}
|
|
299
|
-
});
|
|
440
|
+
this.wireClientEvents(sessionId, session);
|
|
300
441
|
// Start restart reset timer if auto-restart is enabled
|
|
301
442
|
if (hasRestart) {
|
|
302
443
|
this.startRestartResetTimer(session);
|
|
@@ -575,15 +716,68 @@ export class SessionManager extends EventEmitter {
|
|
|
575
716
|
* Remove a dead session from the map, clear its timers, and clean up socket.
|
|
576
717
|
* Called when a session exits naturally (no restart) or exhausts maxRestarts.
|
|
577
718
|
*/
|
|
719
|
+
/**
|
|
720
|
+
* Removal for sessions whose CHILD process ended (clean exit, or restart
|
|
721
|
+
* exhaustion). The shellper deliberately lingers after its child exits to
|
|
722
|
+
* serve late connections (#905), so it is a spent husk here: unlink the
|
|
723
|
+
* socket unconditionally — that is what marks the lingering shellper
|
|
724
|
+
* unresponsive so killOrphanedShellpers reaps it. Preserving the socket on
|
|
725
|
+
* this path leaks an immortal empty shellper per exited session (#1198
|
|
726
|
+
* e2e regression).
|
|
727
|
+
*/
|
|
578
728
|
removeDeadSession(sessionId) {
|
|
579
|
-
const session = this.
|
|
729
|
+
const session = this.detachSessionFromMap(sessionId);
|
|
730
|
+
if (!session)
|
|
731
|
+
return;
|
|
732
|
+
this.unlinkSocketIfExists(session.socketPath);
|
|
733
|
+
}
|
|
734
|
+
/**
|
|
735
|
+
* #1198: removal for sessions whose CONNECTION died (recovery exhausted or
|
|
736
|
+
* shellper unreachable). Unlike the child-exit path, the shellper may
|
|
737
|
+
* still host a live conversation, and unlinking a live shellper's socket
|
|
738
|
+
* makes it unreachable AND flags it for the orphan sweeper's kill path —
|
|
739
|
+
* so this path preserves the socket while the recorded process is current,
|
|
740
|
+
* degrading to a recoverable orphan (re-adoptable, attachable), never a
|
|
741
|
+
* killed live process.
|
|
742
|
+
*/
|
|
743
|
+
removeUnreachableSession(sessionId) {
|
|
744
|
+
const session = this.detachSessionFromMap(sessionId);
|
|
580
745
|
if (!session)
|
|
581
746
|
return;
|
|
747
|
+
this.cleanupDeadSessionSocket(sessionId, session).catch((err) => {
|
|
748
|
+
this.log(`Session ${sessionId} socket cleanup failed: ${err.message}`);
|
|
749
|
+
});
|
|
750
|
+
}
|
|
751
|
+
detachSessionFromMap(sessionId) {
|
|
752
|
+
const session = this.sessions.get(sessionId);
|
|
753
|
+
if (!session)
|
|
754
|
+
return null;
|
|
582
755
|
if (session.restartResetTimer) {
|
|
583
756
|
clearTimeout(session.restartResetTimer);
|
|
584
757
|
session.restartResetTimer = null;
|
|
585
758
|
}
|
|
586
759
|
this.sessions.delete(sessionId);
|
|
760
|
+
return session;
|
|
761
|
+
}
|
|
762
|
+
/**
|
|
763
|
+
* Socket cleanup for the connection-failure path: unlink only when the
|
|
764
|
+
* recorded shellper process is gone. The check uses the same start-time
|
|
765
|
+
* guard as reconnection, so a reused PID counts as "gone" and a dead
|
|
766
|
+
* shellper's socket/log files do not leak. Async and best-effort by
|
|
767
|
+
* design; the map mutation stays sync in the caller.
|
|
768
|
+
*/
|
|
769
|
+
async cleanupDeadSessionSocket(sessionId, session) {
|
|
770
|
+
if (await this.isShellperProcessCurrent(session)) {
|
|
771
|
+
this.log(`Session ${sessionId} removed but shellper pid=${session.pid} is alive; preserving socket`);
|
|
772
|
+
return;
|
|
773
|
+
}
|
|
774
|
+
// Socket paths are keyed by session id, so if a new session claimed this
|
|
775
|
+
// id while we awaited (an in-process re-create/re-adopt), the path now
|
|
776
|
+
// belongs to the new occupant — leave it alone. The caller already
|
|
777
|
+
// deleted OUR map entry, so any present entry is a successor's.
|
|
778
|
+
if (this.sessions.has(sessionId)) {
|
|
779
|
+
return;
|
|
780
|
+
}
|
|
587
781
|
this.unlinkSocketIfExists(session.socketPath);
|
|
588
782
|
}
|
|
589
783
|
getSocketPath(sessionId) {
|
|
@@ -751,7 +945,7 @@ export class SessionManager extends EventEmitter {
|
|
|
751
945
|
});
|
|
752
946
|
}
|
|
753
947
|
setupAutoRestart(session, sessionId) {
|
|
754
|
-
session.client.on('exit', () => {
|
|
948
|
+
session.client.on('exit', (exit) => {
|
|
755
949
|
// Check if session was removed (killed intentionally)
|
|
756
950
|
if (!this.sessions.has(sessionId))
|
|
757
951
|
return;
|
|
@@ -762,9 +956,57 @@ export class SessionManager extends EventEmitter {
|
|
|
762
956
|
clearTimeout(session.restartResetTimer);
|
|
763
957
|
session.restartResetTimer = null;
|
|
764
958
|
}
|
|
959
|
+
// Issue #1241: a deliberate quit is the user's decision — never override
|
|
960
|
+
// it with a respawn. Auto-restart is for unnatural exits (crashes, signal
|
|
961
|
+
// deaths), which keep the behavior below. The shellper husk is left alive
|
|
962
|
+
// (not SIGTERMed) so its scrollback survives; dropping the session drops
|
|
963
|
+
// the socket, which is the same thing the non-restarting child-exit path
|
|
964
|
+
// does and keeps SessionManager's view in step with Tower's.
|
|
965
|
+
if (isDeliberateExit(exit)) {
|
|
966
|
+
this.log(`Session ${sessionId} exited cleanly (code 0, no signal); not restarting`);
|
|
967
|
+
this.emit('session-clean-exit', sessionId, exit);
|
|
968
|
+
this.removeDeadSession(sessionId);
|
|
969
|
+
return;
|
|
970
|
+
}
|
|
971
|
+
// Issue #1149: a fast-failing process (e.g. an unresumable `--resume`
|
|
972
|
+
// replayed verbatim) never lives long enough for the reset timer to
|
|
973
|
+
// clear the counter, so it would burn all restarts on identical args.
|
|
974
|
+
// Count failing exits and swap to the caller-provided fallback launch
|
|
975
|
+
// once they amount to a crash loop. Clean exits (code 0) never count:
|
|
976
|
+
// a user quitting a healthy session repeatedly must not trigger it.
|
|
977
|
+
if (exit.code !== 0) {
|
|
978
|
+
const now = Date.now();
|
|
979
|
+
session.failingExitTimes = session.failingExitTimes.filter((t) => now - t <= CRASH_LOOP_WINDOW_MS);
|
|
980
|
+
session.failingExitTimes.push(now);
|
|
981
|
+
this.maybeApplyCrashLoopFallback(session, sessionId, now);
|
|
982
|
+
}
|
|
765
983
|
const maxRestarts = session.options.maxRestarts ?? 50;
|
|
766
984
|
if (session.restartCount >= maxRestarts) {
|
|
767
|
-
this.log(`Session ${sessionId} exhausted max restarts (${maxRestarts})`);
|
|
985
|
+
this.log(`Session ${sessionId} exhausted max restarts (${maxRestarts}); giving up (last exit code=${exit.code ?? -1}, signal=${exit.signal ?? null})`);
|
|
986
|
+
// Issue #1224: capture the dying child's stderr for the wedge-after-free
|
|
987
|
+
// diagnosis. Reset the once-only guard so the give-up tail logs even if
|
|
988
|
+
// an earlier failing exit already emitted one — the give-up child's
|
|
989
|
+
// reason is the one worth having.
|
|
990
|
+
session.stderrTailLogged = false;
|
|
991
|
+
this.logStderrTail(sessionId, session, exit.code ?? -1);
|
|
992
|
+
// Issue #1224 (symptom B): reap the crash-looped shellper husk so
|
|
993
|
+
// give-up does not leave a live-process-without-a-registry-row zombie
|
|
994
|
+
// (the divergence remove-architect then failed to clear). Kill the whole
|
|
995
|
+
// process group — the shellper is a detached group leader. This SIGTERM
|
|
996
|
+
// is the only signal sent here (no SIGKILL escalation): the
|
|
997
|
+
// terminal_sessions row is NOT cleared at give-up time, so a rare
|
|
998
|
+
// SIGTERM-ignoring survivor stays DB-registered and is NOT eligible for
|
|
999
|
+
// Issue #1227's husk sweep (which only reaps unregistered shellpers). It
|
|
1000
|
+
// is caught on the next Tower restart's reconciliation +
|
|
1001
|
+
// killOrphanedShellpers pass, or immediately for architects via `afx
|
|
1002
|
+
// workspace remove-architect`'s identity-matched zombie reap
|
|
1003
|
+
// (tower-instances.ts).
|
|
1004
|
+
try {
|
|
1005
|
+
process.kill(-session.pid, 'SIGTERM');
|
|
1006
|
+
}
|
|
1007
|
+
catch {
|
|
1008
|
+
/* already gone or not permitted */
|
|
1009
|
+
}
|
|
768
1010
|
this.emit('session-error', sessionId, new Error(`Max restarts (${maxRestarts}) exceeded`));
|
|
769
1011
|
// Remove the exhausted session from the map
|
|
770
1012
|
this.removeDeadSession(sessionId);
|
|
@@ -792,6 +1034,33 @@ export class SessionManager extends EventEmitter {
|
|
|
792
1034
|
}, delay);
|
|
793
1035
|
});
|
|
794
1036
|
}
|
|
1037
|
+
/**
|
|
1038
|
+
* Issue #1149: swap the session's launch options to the caller-provided
|
|
1039
|
+
* fallback when the failing-exit history amounts to a crash loop. One-shot:
|
|
1040
|
+
* the fallback is consumed on application, so a fallback that itself
|
|
1041
|
+
* crash-loops proceeds to the ordinary maxRestarts cap. The next scheduled
|
|
1042
|
+
* restart picks the swapped options up automatically because spawn() reads
|
|
1043
|
+
* session.options.
|
|
1044
|
+
*/
|
|
1045
|
+
maybeApplyCrashLoopFallback(session, sessionId, now) {
|
|
1046
|
+
const fallback = session.options.crashLoopFallback;
|
|
1047
|
+
if (!fallback)
|
|
1048
|
+
return;
|
|
1049
|
+
if (!isCrashLooping(session.failingExitTimes, now))
|
|
1050
|
+
return;
|
|
1051
|
+
session.options.args = fallback.args;
|
|
1052
|
+
session.options.env = fallback.env;
|
|
1053
|
+
session.options.crashLoopFallback = undefined;
|
|
1054
|
+
this.log(`Session ${sessionId} crash-looping; applying fallback launch args`);
|
|
1055
|
+
if (fallback.onApply) {
|
|
1056
|
+
try {
|
|
1057
|
+
fallback.onApply();
|
|
1058
|
+
}
|
|
1059
|
+
catch (err) {
|
|
1060
|
+
this.log(`Session ${sessionId} crash-loop fallback onApply failed: ${err.message}`);
|
|
1061
|
+
}
|
|
1062
|
+
}
|
|
1063
|
+
}
|
|
795
1064
|
startRestartResetTimer(session) {
|
|
796
1065
|
if (session.restartResetTimer) {
|
|
797
1066
|
clearTimeout(session.restartResetTimer);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../../src/terminal/session-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../../src/terminal/session-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,KAAK,IAAI,OAAO,EAAqB,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAwB,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAoB,MAAM,wBAAwB,CAAC;AA+C5E,0EAA0E;AAC1E,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAC3C,sEAAsE;AACtE,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAEtC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACtD,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC;AAC7C,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAErC;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,gBAA0B,EAAE,GAAW;IACpE,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,CAAC,IAAI,gBAAgB,EAAE,CAAC;QACjC,IAAI,GAAG,GAAG,CAAC,IAAI,oBAAoB,EAAE,CAAC;YACpC,MAAM,EAAE,CAAC;QACX,CAAC;IACH,CAAC;IACD,OAAO,MAAM,IAAI,oBAAoB,CAAC;AACxC,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,YAAY;IACf,KAAK,GAAa,EAAE,CAAC;IACrB,OAAO,GAAG,EAAE,CAAC;IACZ,QAAQ,CAAS;IACjB,aAAa,CAAS;IAE/B,YAAY,QAAQ,GAAG,GAAG,EAAE,aAAa,GAAG,KAAK;QAC/C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAED,yDAAyD;IACzD,IAAI,CAAC,KAAa;QAChB,2DAA2D;QAC3D,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnD,oEAAoE;QACpE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,EAAG,CAAC;QAC5B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC9F,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC3B,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACtC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC;IAED,uDAAuD;IACvD,KAAK;QACH,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa;gBACxD,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC;gBAC3C,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;YACjB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC3B,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACtC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACrB,CAAC;YACD,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;IAED,8BAA8B;IAC9B,QAAQ;QACN,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,8DAA8D;IAC9D,UAAU;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1D,CAAC;CACF;AAqBD,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,OAAO,cAAe,SAAQ,YAAY;IAIjB;IAHrB,QAAQ,GAAG,IAAI,GAAG,EAA0B,CAAC;IACpC,GAAG,CAAwB;IAE5C,YAA6B,MAA4B;QACvD,KAAK,EAAE,CAAC;QADmB,WAAM,GAAN,MAAM,CAAsB;QAEvD,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACzC,CAAC;IAED;;;;;OAKG;IACH,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,aAAa,CAAC,IAA0B;QAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtD,IAAI,CAAC,GAAG,CAAC,oBAAoB,IAAI,CAAC,SAAS,aAAa,IAAI,CAAC,OAAO,YAAY,UAAU,EAAE,CAAC,CAAC;QAE9F,uDAAuD;QACvD,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAEtE,iCAAiC;QACjC,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;QAEtC,oCAAoC;QACpC,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC;YACpC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,UAAU;SACX,CAAC,CAAC;QAEH,4DAA4D;QAC5D,6EAA6E;QAC7E,8EAA8E;QAC9E,gEAAgE;QAChE,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1D,IAAI,QAAQ,GAAkB,IAAI,CAAC;QACnC,IAAI,CAAC;YACH,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,qDAAqD;QACvD,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,cAAc,CAAC,EAAE;YAC9F,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,IAAI,QAAQ,CAAC;SAChD,CAAC,CAAC;QAEH,qEAAqE;QACrE,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,IAAI,CAAC;gBAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QACxD,CAAC;QAED,mCAAmC;QACnC,IAAI,IAAwC,CAAC;QAC7C,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,SAAS,qBAAsB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YACjF,gFAAgF;YAChF,IAAI,CAAC;gBAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,mCAAmC,CAAC,CAAC;YAC5E,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;YACtC,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,KAAK,CAAC,KAAK,EAAE,CAAC;QAEd,uEAAuE;QACvE,iEAAiE;QACjE,IAAI,MAAsB,CAAC;QAC3B,IAAI,CAAC;YACH,sCAAsC;YACtC,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YAErC,iBAAiB;YACjB,MAAM,GAAG,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC;YACxC,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACzB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,+CAA+C;YAC/C,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,SAAS,qBAAsB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YACjF,IAAI,CAAC;gBAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;YACvE,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;YACtC,MAAM,GAAG,CAAC;QACZ,CAAC;QAED,MAAM,OAAO,GAAmB;YAC9B,MAAM;YACN,UAAU;YACV,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO,EAAE,IAAI;YACb,YAAY,EAAE,CAAC;YACf,iBAAiB,EAAE,IAAI;YACvB,gBAAgB,EAAE,EAAE;YACpB,YAAY,EAAE,IAAI,EAAE,8CAA8C;YAClE,YAAY,EAAE,IAAI;YAClB,gBAAgB,EAAE,KAAK;YACvB,cAAc,EAAE,CAAC;YACjB,cAAc,EAAE,CAAC;SAClB,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC3C,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,SAAS,iBAAiB,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAE/D,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAE/C,0CAA0C;QAC1C,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;OAKG;IACK,gBAAgB,CAAC,SAAiB,EAAE,OAAuB;QACjE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAE9B,iDAAiD;QACjD,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,QAAqB,EAAE,EAAE;YAC1C,IAAI,CAAC,GAAG,CAAC,WAAW,SAAS,iBAAiB,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;YAChE,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;YAC5D,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC/C,+DAA+D;YAC/D,gEAAgE;YAChE,6BAA6B;YAC7B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;gBACnC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YACpC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;YAChC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,IAAoC,EAAE,EAAE;YAClE,IAAI,CAAC,GAAG,CAAC,WAAW,SAAS,kCAAkC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC;QACnG,CAAC,CAAC,CAAC;QAEH,mEAAmE;QACnE,iEAAiE;QACjE,gEAAgE;QAChE,qDAAqD;QACrD,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,IAAuD,EAAE,EAAE;YACtF,IAAI,CAAC,GAAG,CAAC,WAAW,SAAS,kCAAkC,IAAI,CAAC,SAAS,yBAAyB,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;QACnI,CAAC,CAAC,CAAC;QAEH,yEAAyE;QACzE,wEAAwE;QACxE,qEAAqE;QACrE,qCAAqC;QACrC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACtB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC;gBAAE,OAAO;YAC1C,oEAAoE;YACpE,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM;gBAAE,OAAO;YACtC,IAAI,CAAC,GAAG,CAAC,WAAW,SAAS,wCAAwC,CAAC,CAAC;YACvE,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACpD,IAAI,CAAC,GAAG,CAAC,WAAW,SAAS,kCAAmC,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;gBACzF,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAC9C,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YAClC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACK,KAAK,CAAC,cAAc,CAAC,SAAiB,EAAE,OAAuB;QACrE,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,cAAc,GAAG,sBAAsB,EAAE,CAAC;YACjE,OAAO,CAAC,cAAc,GAAG,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,CAAC,cAAc,EAAE,CAAC;QAEzB,IAAI,OAAO,CAAC,cAAc,GAAG,mBAAmB,EAAE,CAAC;YACjD,IAAI,CAAC,GAAG,CAAC,WAAW,SAAS,+BAA+B,mBAAmB,2BAA2B,CAAC,CAAC;YAC5G,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAC5C,OAAO;QACT,CAAC;QAED,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC;YACvE,MAAM,KAAK,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC;YAC3C,iEAAiE;YACjE,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,OAAO;gBAAE,OAAO;YACrD,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;gBAC5C,MAAM;YACR,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACtD,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;YACzB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,GAAG,CAAC,WAAW,SAAS,sBAAsB,OAAO,GAAG,CAAC,IAAI,oBAAoB,CAAC,MAAM,YAAa,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;gBACnI,SAAS;YACX,CAAC;YAED,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,OAAO,EAAE,CAAC;gBAC7C,kCAAkC;gBAClC,MAAM,CAAC,UAAU,EAAE,CAAC;gBACpB,OAAO;YACT,CAAC;YAED,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;YACxB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACpC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAC1C,IAAI,CAAC,GAAG,CAAC,WAAW,SAAS,8CAA8C,OAAO,CAAC,cAAc,aAAa,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;YAC9H,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;YACpD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,wBAAwB,CAAC,OAAuB;QAC5D,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QACpD,MAAM,eAAe,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC/D,IAAI,eAAe,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,CAAC;YACrF,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,gBAAgB,CAAC,OAAuB;QACpD,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QAClE,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC9C,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;QACzB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,kBAAkB,CAAC,SAAiB,EAAE,OAAuB;QACnE,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,OAAO;YAAE,OAAO;QACrD,IAAI,CAAC,GAAG,CAAC,WAAW,SAAS,qCAAqC,CAAC,CAAC;QACpE,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC,CAAC;IACzF,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,gBAAgB,CACpB,SAAiB,EACjB,UAAkB,EAClB,GAAW,EACX,SAAiB,EACjB,cAAwC;QAExC,IAAI,CAAC,GAAG,CAAC,wBAAwB,SAAS,SAAS,GAAG,YAAY,UAAU,EAAE,CAAC,CAAC;QAEhF,4BAA4B;QAC5B,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,GAAG,CAAC,WAAW,SAAS,8BAA8B,GAAG,UAAU,CAAC,CAAC;YAC1E,OAAO,IAAI,CAAC;QACd,CAAC;QAED,mDAAmD;QACnD,MAAM,eAAe,GAAG,MAAM,mBAAmB,CAAC,GAAG,CAAC,CAAC;QACvD,IAAI,eAAe,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,SAAS,CAAC,GAAG,IAAI,EAAE,CAAC;YAC7E,6DAA6D;YAC7D,IAAI,CAAC,GAAG,CAAC,WAAW,SAAS,0BAA0B,GAAG,+BAA+B,CAAC,CAAC;YAC3F,OAAO,IAAI,CAAC;QACd,CAAC;QAED,2BAA2B;QAC3B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;gBACrB,IAAI,CAAC,GAAG,CAAC,WAAW,SAAS,6CAA6C,CAAC,CAAC;gBAC5E,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,GAAG,CAAC,WAAW,SAAS,kDAAkD,CAAC,CAAC;YACjF,OAAO,IAAI,CAAC;QACd,CAAC;QAED,iBAAiB;QACjB,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACzB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,WAAW,SAAS,qCAAsC,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5F,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,UAAU,GAAG,CAAC,CAAC,cAAc,CAAC;QACpC,MAAM,OAAO,GAAmB;YAC9B,MAAM;YACN,UAAU;YACV,GAAG;YACH,SAAS;YACT,OAAO,EAAE;gBACP,SAAS;gBACT,OAAO,EAAE,cAAc,EAAE,OAAO,IAAI,EAAE;gBACtC,IAAI,EAAE,cAAc,EAAE,IAAI,IAAI,EAAE;gBAChC,GAAG,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE;gBAC9B,GAAG,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE;gBAC9B,GAAG,qBAAqB,CAAC;oBACvB,aAAa,EAAE,UAAU;oBACzB,YAAY,EAAE,cAAc,EAAE,YAAY;oBAC1C,WAAW,EAAE,cAAc,EAAE,WAAW;oBACxC,iBAAiB,EAAE,cAAc,EAAE,iBAAiB;iBACrD,CAAC;gBACF,iBAAiB,EAAE,cAAc,EAAE,iBAAiB;aACrD;YACD,YAAY,EAAE,CAAC;YACf,iBAAiB,EAAE,IAAI;YACvB,gBAAgB,EAAE,EAAE;YACpB,YAAY,EAAE,IAAI;YAClB,YAAY,EAAE,IAAI;YAClB,gBAAgB,EAAE,KAAK;YACvB,cAAc,EAAE,CAAC;YACjB,cAAc,EAAE,CAAC;SAClB,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG,CAAC,WAAW,SAAS,qBAAqB,GAAG,EAAE,CAAC,CAAC;QAEzD,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAE1C,uDAAuD;QACvD,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW,CAAC,SAAiB;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,IAAI,CAAC,GAAG,CAAC,mBAAmB,SAAS,SAAS,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAE7D,sBAAsB;QACtB,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;YAC9B,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;YACxC,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;QACnC,CAAC;QAED,2EAA2E;QAC3E,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAEhC,eAAe;QACf,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QACvC,CAAC;QAAC,MAAM,CAAC;YACP,uBAAuB;QACzB,CAAC;QAED,mCAAmC;QACnC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAE9D,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,aAAa;YACb,IAAI,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACvC,CAAC;YAAC,MAAM,CAAC;gBACP,eAAe;YACjB,CAAC;QACH,CAAC;QAED,wCAAwC;QACxC,IAAI,CAAC,GAAG,CAAC,WAAW,SAAS,mBAAmB,CAAC,CAAC;QAClD,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QAE3C,oBAAoB;QACpB,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QAE5B,uBAAuB;QACvB,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,YAAY;QACV,MAAM,MAAM,GAAG,IAAI,GAAG,EAA2B,CAAC;QAClD,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1C,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,SAAiB;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAC1B,OAAO;YACL,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,UAAU,EAAE,OAAO,CAAC,UAAU;SAC/B,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,mBAAmB;QACvB,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,KAAe,CAAC;QACpB,IAAI,CAAC;YACH,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,CAAC;QACX,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAE,SAAS;YAEvE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAExD,0BAA0B;YAC1B,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;gBACpC,IAAI,IAAI,CAAC,cAAc,EAAE;oBAAE,SAAS;gBACpC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;oBAAE,SAAS;YACjC,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YAED,8DAA8D;YAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAErE,6CAA6C;YAC7C,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC;gBAAE,SAAS;YAE3C,kEAAkE;YAClE,oEAAoE;YACpE,wEAAwE;YACxE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YACjD,IAAI,OAAO;gBAAE,SAAS;YAEtB,+BAA+B;YAC/B,IAAI,CAAC;gBACH,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBACxB,OAAO,EAAE,CAAC;YACZ,CAAC;YAAC,MAAM,CAAC;gBACP,mCAAmC;YACrC,CAAC;YACD,wDAAwD;YACxD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAClD,IAAI,CAAC;gBAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QACxD,CAAC;QAED,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YAChB,IAAI,CAAC,GAAG,CAAC,WAAW,OAAO,gBAAgB,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;OAGG;IACK,WAAW,CAAC,UAAkB;QACpC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,MAAM,GAAG,GAAG,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC9B,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,OAAO,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC,EAAE,IAAI,CAAC,CAAC;YAET,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;gBACxB,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACtB,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,OAAO,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,KAAK,CAAC,qBAAqB;QACzB,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;QACrC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YAC7C,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC;QAED,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACnD,KAAK,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,OAAO,EAAE,CAAC;gBAC1C,IAAI,GAAG,KAAK,OAAO,CAAC,GAAG;oBAAE,SAAS,CAAE,uBAAuB;gBAC3D,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;oBAAE,SAAS,CAAE,uBAAuB;gBAE3D,oEAAoE;gBACpE,mEAAmE;gBACnE,0DAA0D;gBAC1D,IAAI,UAAU,EAAE,CAAC;oBACf,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;oBACnD,IAAI,OAAO,EAAE,CAAC;wBACZ,IAAI,CAAC,GAAG,CAAC,cAAc,GAAG,0BAA0B,UAAU,kBAAkB,CAAC,CAAC;wBAClF,SAAS;oBACX,CAAC;gBACH,CAAC;gBAED,IAAI,CAAC,GAAG,CAAC,0CAA0C,GAAG,EAAE,CAAC,CAAC;gBAC1D,IAAI,CAAC;oBACH,+DAA+D;oBAC/D,kEAAkE;oBAClE,kCAAkC;oBAClC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;oBAC9B,MAAM,EAAE,CAAC;gBACX,CAAC;gBAAC,MAAM,CAAC;oBACP,gEAAgE;oBAChE,IAAI,CAAC;wBAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;wBAAC,MAAM,EAAE,CAAC;oBAAC,CAAC;oBAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;gBAC9E,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,yCAAyC;QAC3C,CAAC;QAED,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,UAAU,MAAM,gCAAgC,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;;;;OASG;IACK,qBAAqB;QAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,6CAA6C;YAC7C,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;gBACzD,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;oBAC1B,OAAO,CAAC,EAAE,CAAC,CAAC;oBACZ,OAAO;gBACT,CAAC;gBACD,MAAM,OAAO,GAAgD,EAAE,CAAC;gBAChE,4EAA4E;gBAC5E,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC;gBAC9G,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC7C,IAAI,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;wBACpE,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;wBACtC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;4BAC3B,yEAAyE;4BACzE,gFAAgF;4BAChF,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;4BAC/D,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;wBACtD,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,OAAO,CAAC,OAAO,CAAC,CAAC;YACnB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,QAAQ;QACN,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1C,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;gBAC9B,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;gBACxC,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;YACnC,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAED,0BAA0B;IAE1B;;;OAGG;IACH;;;;;;;;OAQG;IACK,iBAAiB,CAAC,SAAiB;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAChD,CAAC;IAED;;;;;;;;OAQG;IACK,wBAAwB,CAAC,SAAiB;QAChD,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,IAAI,CAAC,wBAAwB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YAC9D,IAAI,CAAC,GAAG,CAAC,WAAW,SAAS,2BAA4B,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QACpF,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,oBAAoB,CAAC,SAAiB;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAC1B,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;YAC9B,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;YACxC,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;QACnC,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAChC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,wBAAwB,CAAC,SAAiB,EAAE,OAAuB;QAC/E,IAAI,MAAM,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,GAAG,CAAC,WAAW,SAAS,6BAA6B,OAAO,CAAC,GAAG,8BAA8B,CAAC,CAAC;YACrG,OAAO;QACT,CAAC;QACD,yEAAyE;QACzE,uEAAuE;QACvE,mEAAmE;QACnE,gEAAgE;QAChE,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACjC,OAAO;QACT,CAAC;QACD,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAChD,CAAC;IAEO,aAAa,CAAC,SAAiB;QACrC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,YAAY,SAAS,OAAO,CAAC,CAAC;IACxE,CAAC;IAEO,oBAAoB,CAAC,UAAkB;QAC7C,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YACtC,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;gBACpB,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,uBAAuB;QACzB,CAAC;QACD,4DAA4D;QAC5D,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACpD,IAAI,CAAC;YACH,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;QAAC,MAAM,CAAC;YACP,uBAAuB;QACzB,CAAC;IACH,CAAC;IAEO,gBAAgB,CACtB,KAAiC,EACjC,aAAqB;QAErB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,MAAM,IAAI,GAAG,CAAC,OAAe,EAAE,EAAE;gBAC/B,IAAI,OAAO;oBAAE,OAAO;gBACpB,OAAO,GAAG,IAAI,CAAC;gBACf,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;YAChF,CAAC,CAAC;YACF,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC9B,IAAI,CAAC,6CAA6C,CAAC,CAAC;YACtD,CAAC,EAAE,MAAM,CAAC,CAAC;YAEX,KAAK,CAAC,MAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;gBACzC,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC3B,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,MAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBAC3B,IAAI,OAAO;oBAAE,OAAO;gBACpB,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAuC,CAAC;oBACpE,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;wBACvE,IAAI,CAAC,4BAA4B,CAAC,CAAC;wBACnC,OAAO;oBACT,CAAC;oBACD,OAAO,GAAG,IAAI,CAAC;oBACf,YAAY,CAAC,OAAO,CAAC,CAAC;oBACtB,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChB,CAAC;gBAAC,MAAM,CAAC;oBACP,IAAI,CAAC,4BAA4B,CAAC,CAAC;gBACrC,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBACxB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACpB,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBACxB,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;oBAC/C,IAAI,CAAC,6BAA6B,IAAI,sBAAsB,CAAC,CAAC;gBAChE,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,uBAAuB,CAAC,OAAe,EAAE,MAAc,EAAE,aAAqB;QACpF,MAAM,OAAO,GAAa,CAAC,OAAO,CAAC,CAAC;QACpC,MAAM,aAAa,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QACzD,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,WAAW,aAAa,EAAE,CAAC,CAAC;QAC3C,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAC1D,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,eAAe,aAAa,MAAM,UAAU,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAEO,qBAAqB,CAAC,KAAa;QACzC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACxF,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAEO,qBAAqB,CAAC,KAAc;QAC1C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACxC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;gBACpC,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,YAAY,CAAC,QAAgB,EAAE,QAAgB;QACrD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YAC1D,IAAI,CAAC,OAAO;gBAAE,OAAO,EAAE,CAAC;YACxB,OAAO,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACxE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,UAAkB,EAAE,OAAO,GAAG,IAAI;QACtD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,GAAG,EAAE;gBACjB,IAAI,CAAC;oBACH,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;oBACxB,OAAO,EAAE,CAAC;gBACZ,CAAC;gBAAC,MAAM,CAAC;oBACP,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,OAAO,EAAE,CAAC;wBACjC,MAAM,CAAC,IAAI,KAAK,CAAC,UAAU,UAAU,uBAAuB,OAAO,IAAI,CAAC,CAAC,CAAC;oBAC5E,CAAC;yBAAM,CAAC;wBACN,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBACxB,CAAC;gBACH,CAAC;YACH,CAAC,CAAC;YACF,KAAK,EAAE,CAAC;QACV,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,cAAc,CAAC,GAAW;QAChC,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACrB,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAEO,kBAAkB,CAAC,GAAW,EAAE,OAAe;QACrD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,GAAG,EAAE;gBACjB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC9B,OAAO,CAAC,IAAI,CAAC,CAAC;oBACd,OAAO;gBACT,CAAC;gBACD,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,OAAO,EAAE,CAAC;oBACjC,OAAO,CAAC,KAAK,CAAC,CAAC;oBACf,OAAO;gBACT,CAAC;gBACD,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACzB,CAAC,CAAC;YACF,KAAK,EAAE,CAAC;QACV,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,gBAAgB,CAAC,OAAuB,EAAE,SAAiB;QACjE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAiB,EAAE,EAAE;YAC9C,sDAAsD;YACtD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC;gBAAE,OAAO;YAE1C,oEAAoE;YACpE,8EAA8E;YAC9E,8CAA8C;YAC9C,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;gBAC9B,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;gBACxC,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;YACnC,CAAC;YAED,yEAAyE;YACzE,0EAA0E;YAC1E,0EAA0E;YAC1E,yEAAyE;YACzE,yEAAyE;YACzE,6DAA6D;YAC7D,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3B,IAAI,CAAC,GAAG,CAAC,WAAW,SAAS,qDAAqD,CAAC,CAAC;gBACpF,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;gBACjD,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;gBAClC,OAAO;YACT,CAAC;YAED,sEAAsE;YACtE,oEAAoE;YACpE,sEAAsE;YACtE,sEAAsE;YACtE,sEAAsE;YACtE,oEAAoE;YACpE,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBACpB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACvB,OAAO,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,MAAM,CACxD,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,oBAAoB,CACvC,CAAC;gBACF,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACnC,IAAI,CAAC,2BAA2B,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;YAC5D,CAAC;YAED,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC;YACtD,IAAI,OAAO,CAAC,YAAY,IAAI,WAAW,EAAE,CAAC;gBACxC,IAAI,CAAC,GAAG,CAAC,WAAW,SAAS,4BAA4B,WAAW,gCAAgC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,YAAY,IAAI,CAAC,MAAM,IAAI,IAAI,GAAG,CAAC,CAAC;gBACvJ,yEAAyE;gBACzE,wEAAwE;gBACxE,oEAAoE;gBACpE,kCAAkC;gBAClC,OAAO,CAAC,gBAAgB,GAAG,KAAK,CAAC;gBACjC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;gBACxD,kEAAkE;gBAClE,sEAAsE;gBACtE,yEAAyE;gBACzE,wEAAwE;gBACxE,4DAA4D;gBAC5D,kEAAkE;gBAClE,wEAAwE;gBACxE,yEAAyE;gBACzE,yDAAyD;gBACzD,qEAAqE;gBACrE,6DAA6D;gBAC7D,wBAAwB;gBACxB,IAAI,CAAC;oBACH,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;gBACxC,CAAC;gBAAC,MAAM,CAAC;oBACP,mCAAmC;gBACrC,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,IAAI,KAAK,CAAC,iBAAiB,WAAW,YAAY,CAAC,CAAC,CAAC;gBAC3F,4CAA4C;gBAC5C,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;gBAClC,OAAO;YACT,CAAC;YAED,OAAO,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC;YACnD,IAAI,CAAC,GAAG,CAAC,WAAW,SAAS,kBAAkB,OAAO,CAAC,YAAY,IAAI,WAAW,OAAO,KAAK,IAAI,CAAC,CAAC;YAEpG,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,SAAS,EAAE;gBACtC,YAAY,EAAE,OAAO,CAAC,YAAY;gBAClC,KAAK;aACN,CAAC,CAAC;YAEH,UAAU,CAAC,GAAG,EAAE;gBACd,4CAA4C;gBAC5C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC;oBAAE,OAAO;gBAE1C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;oBACnB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO;oBAChC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI;oBAC1B,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG;oBACxB,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG;iBACzB,CAAC,CAAC;gBAEH,wDAAwD;gBACxD,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;YACvC,CAAC,EAAE,KAAK,CAAC,CAAC;QACZ,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACK,2BAA2B,CAAC,OAAuB,EAAE,SAAiB,EAAE,GAAW;QACzF,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC;QACnD,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC;YAAE,OAAO;QAE3D,OAAO,CAAC,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QACrC,OAAO,CAAC,OAAO,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;QACnC,OAAO,CAAC,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;QAC9C,IAAI,CAAC,GAAG,CAAC,WAAW,SAAS,+CAA+C,CAAC,CAAC;QAC9E,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrB,IAAI,CAAC;gBACH,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,GAAG,CAAC,WAAW,SAAS,wCAAyC,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YACjG,CAAC;QACH,CAAC;IACH,CAAC;IAEO,sBAAsB,CAAC,OAAuB;QACpD,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;YAC9B,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAC1C,CAAC;QAED,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC;QAC1D,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,IAAI,OAAO,CAAC,CAAC,YAAY;QAC7E,yEAAyE;QACzE,wEAAwE;QACxE,MAAM,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QAC/D,OAAO,CAAC,iBAAiB,GAAG,UAAU,CAAC,GAAG,EAAE;YAC1C,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC;QAC3B,CAAC,EAAE,mBAAmB,CAAC,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACK,iBAAiB,CAAC,MAAgB,EAAE,MAAoB;QAC9D,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC3B,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YAClC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACtB,gDAAgD;QAClD,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACK,aAAa,CAAC,SAAiB,EAAE,OAAuB,EAAE,QAAgB;QAChF,IAAI,OAAO,CAAC,gBAAgB;YAAE,OAAO;QACrC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,OAAO,CAAC,YAAY;YAAE,OAAO;QAElC,MAAM,OAAO,GAAG,CAAC,UAAmB,EAAE,EAAE;YACtC,OAAO,CAAC,YAAa,CAAC,KAAK,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,YAAa,CAAC,QAAQ,EAAE,CAAC;YAC/C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YAC/B,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,IAAI,CAAC,GAAG,CAAC,WAAW,SAAS,eAAe,MAAM,QAAQ,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAClF,CAAC,CAAC;QAEF,6EAA6E;QAC7E,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;YAC5D,OAAO,CAAC,KAAK,CAAC,CAAC;YACf,OAAO;QACT,CAAC;QAED,+CAA+C;QAC/C,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAAC,QAAQ,GAAG,IAAI,CAAC;gBAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAAC,CAAC;QACpD,CAAC,EAAE,IAAI,CAAC,CAAC;QACT,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YAC7B,IAAI,OAAO,CAAC,YAAa,CAAC,SAAS,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACjD,QAAQ,GAAG,IAAI,CAAC;gBAChB,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,aAAa,CAAC,KAAK,CAAC,CAAC;gBACrB,OAAO,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC;QACH,CAAC,EAAE,EAAE,CAAC,CAAC;QACP,8CAA8C;QAC9C,UAAU,CAAC,GAAG,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC7C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,CAAC;YACL,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAClC,mCAAmC;gBACnC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;oBACnE,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;wBAC1B,OAAO,CAAC,IAAI,CAAC,CAAC;wBACd,OAAO;oBACT,CAAC;oBACD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;oBACrC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;wBAC1B,OAAO,CAAC,IAAI,CAAC,CAAC;wBACd,OAAO;oBACT,CAAC;oBACD,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC1B,CAAC,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;gBACxC,8DAA8D;gBAC9D,EAAE,CAAC,QAAQ,CAAC,SAAS,GAAG,OAAO,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;oBACtD,IAAI,GAAG,EAAE,CAAC;wBACR,OAAO,CAAC,IAAI,CAAC,CAAC;wBACd,OAAO;oBACT,CAAC;oBACD,uEAAuE;oBACvE,oEAAoE;oBACpE,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;oBAC5C,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE,CAAC;wBACzB,OAAO,CAAC,IAAI,CAAC,CAAC;wBACd,OAAO;oBACT,CAAC;oBACD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC5D,mEAAmE;oBACnE,2DAA2D;oBAC3D,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;oBAChD,IAAI,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;wBAC1B,OAAO,CAAC,IAAI,CAAC,CAAC;wBACd,OAAO;oBACT,CAAC;oBACD,sEAAsE;oBACtE,4EAA4E;oBAC5E,EAAE,CAAC,IAAI,CAAC,SAAS,GAAG,EAAE,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;wBACxC,IAAI,OAAO,EAAE,CAAC;4BACZ,OAAO,CAAC,IAAI,CAAC,CAAC;4BACd,OAAO;wBACT,CAAC;wBACD,oEAAoE;wBACpE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACxB,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC;QACD,CAAC;QAAC,MAAM,CAAC;YACP,oEAAoE;YACpE,iEAAiE;YACjE,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -14,11 +14,15 @@
|
|
|
14
14
|
*/
|
|
15
15
|
import { EventEmitter } from 'node:events';
|
|
16
16
|
import { type WelcomeMessage, type SpawnMessage } from './shellper-protocol.js';
|
|
17
|
+
export declare const DEFAULT_REPLAY_TIMEOUT_MS = 500;
|
|
18
|
+
export declare const LEGACY_REPLAY_TIMEOUT_MS = 50;
|
|
17
19
|
export interface IShellperClient extends EventEmitter {
|
|
18
20
|
connect(): Promise<WelcomeMessage>;
|
|
19
21
|
disconnect(): void;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
+
/** Returns false when the frame was dropped because the client is not connected (#1198). */
|
|
23
|
+
write(data: string | Buffer): boolean;
|
|
24
|
+
/** Returns false when the frame was dropped because the client is not connected (#1198). */
|
|
25
|
+
resize(cols: number, rows: number): boolean;
|
|
22
26
|
signal(sig: number): void;
|
|
23
27
|
spawn(msg: SpawnMessage): void;
|
|
24
28
|
ping(): void;
|
|
@@ -38,8 +42,10 @@ export declare class ShellperClient extends EventEmitter implements IShellperCli
|
|
|
38
42
|
private readonly clientType;
|
|
39
43
|
private socket;
|
|
40
44
|
private _connected;
|
|
45
|
+
private _closePending;
|
|
41
46
|
private replayData;
|
|
42
47
|
private _lastDataAt;
|
|
48
|
+
private _alwaysSendsReplay;
|
|
43
49
|
constructor(socketPath: string, clientType?: 'tower' | 'terminal');
|
|
44
50
|
/**
|
|
45
51
|
* Emit an 'error' event only if listeners are attached.
|
|
@@ -64,8 +70,8 @@ export declare class ShellperClient extends EventEmitter implements IShellperCli
|
|
|
64
70
|
private handleFrame;
|
|
65
71
|
disconnect(): void;
|
|
66
72
|
private cleanup;
|
|
67
|
-
write(data: string | Buffer):
|
|
68
|
-
resize(cols: number, rows: number):
|
|
73
|
+
write(data: string | Buffer): boolean;
|
|
74
|
+
resize(cols: number, rows: number): boolean;
|
|
69
75
|
signal(sig: number): void;
|
|
70
76
|
spawn(msg: SpawnMessage): void;
|
|
71
77
|
ping(): void;
|
|
@@ -76,6 +82,15 @@ export declare class ShellperClient extends EventEmitter implements IShellperCli
|
|
|
76
82
|
* The shellper sends REPLAY immediately after WELCOME, but they may
|
|
77
83
|
* arrive in separate reads. Returns the replay data, or empty Buffer
|
|
78
84
|
* if no REPLAY arrives within the timeout (shellper had nothing to replay).
|
|
85
|
+
*
|
|
86
|
+
* #1215: a shellper that didn't advertise `alwaysSendsReplay` on WELCOME
|
|
87
|
+
* only sends REPLAY when it has buffered data — an idle one never sends
|
|
88
|
+
* it at all, so waiting the full `timeoutMs` (DEFAULT_REPLAY_TIMEOUT_MS
|
|
89
|
+
* by default) for every such session is pure stall. Bound the wait to
|
|
90
|
+
* LEGACY_REPLAY_TIMEOUT_MS instead: short enough to keep idle-session
|
|
91
|
+
* cost low, long enough to still catch a busy legacy shellper's REPLAY
|
|
92
|
+
* arriving on the later socket read this method exists to wait for in
|
|
93
|
+
* the first place (#1198).
|
|
79
94
|
*/
|
|
80
95
|
waitForReplay(timeoutMs?: number): Promise<Buffer>;
|
|
81
96
|
}
|