@songsid/agend 2.1.8 → 2.1.10-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/README.md +8 -3
  2. package/README.zh-TW.md +11 -5
  3. package/dist/backend/claude-code.d.ts +35 -5
  4. package/dist/backend/claude-code.js +288 -17
  5. package/dist/backend/claude-code.js.map +1 -1
  6. package/dist/backend/codex.d.ts +13 -0
  7. package/dist/backend/codex.js +74 -2
  8. package/dist/backend/codex.js.map +1 -1
  9. package/dist/backend/credential-profile.d.ts +9 -0
  10. package/dist/backend/credential-profile.js +20 -0
  11. package/dist/backend/credential-profile.js.map +1 -1
  12. package/dist/backend/grok.js +19 -0
  13. package/dist/backend/grok.js.map +1 -1
  14. package/dist/backend/kiro.d.ts +0 -2
  15. package/dist/backend/kiro.js +8 -7
  16. package/dist/backend/kiro.js.map +1 -1
  17. package/dist/backend/muse.d.ts +6 -0
  18. package/dist/backend/muse.js +7 -1
  19. package/dist/backend/muse.js.map +1 -1
  20. package/dist/backend/types.d.ts +1 -1
  21. package/dist/channel/adapters/telegram.js +4 -3
  22. package/dist/channel/adapters/telegram.js.map +1 -1
  23. package/dist/channel/mcp-operation-response.js +5 -4
  24. package/dist/channel/mcp-operation-response.js.map +1 -1
  25. package/dist/channel/mcp-server.js +9 -0
  26. package/dist/channel/mcp-server.js.map +1 -1
  27. package/dist/channel/mcp-tools.js +1 -1
  28. package/dist/channel/mcp-tools.js.map +1 -1
  29. package/dist/channel/types.d.ts +7 -0
  30. package/dist/cli.js +150 -52
  31. package/dist/cli.js.map +1 -1
  32. package/dist/config-validator.js +24 -0
  33. package/dist/config-validator.js.map +1 -1
  34. package/dist/config.d.ts +1 -0
  35. package/dist/config.js +27 -1
  36. package/dist/config.js.map +1 -1
  37. package/dist/cross-instance-envelope.d.ts +7 -0
  38. package/dist/cross-instance-envelope.js +19 -1
  39. package/dist/cross-instance-envelope.js.map +1 -1
  40. package/dist/daemon.d.ts +112 -3
  41. package/dist/daemon.js +360 -41
  42. package/dist/daemon.js.map +1 -1
  43. package/dist/delivery-outbox.d.ts +9 -1
  44. package/dist/delivery-outbox.js +43 -27
  45. package/dist/delivery-outbox.js.map +1 -1
  46. package/dist/fleet-manager.d.ts +133 -5
  47. package/dist/fleet-manager.js +525 -86
  48. package/dist/fleet-manager.js.map +1 -1
  49. package/dist/forged-envelope-scan.d.ts +160 -0
  50. package/dist/forged-envelope-scan.js +309 -0
  51. package/dist/forged-envelope-scan.js.map +1 -0
  52. package/dist/general-knowledge/skills/persona-emoji/SKILL.md +5 -2
  53. package/dist/instance-lifecycle.d.ts +90 -6
  54. package/dist/instance-lifecycle.js +238 -30
  55. package/dist/instance-lifecycle.js.map +1 -1
  56. package/dist/locale.js +180 -8
  57. package/dist/locale.js.map +1 -1
  58. package/dist/login-controller.d.ts +38 -0
  59. package/dist/login-controller.js +236 -8
  60. package/dist/login-controller.js.map +1 -1
  61. package/dist/login-flows.d.ts +25 -1
  62. package/dist/login-flows.js +10 -2
  63. package/dist/login-flows.js.map +1 -1
  64. package/dist/ls-rows.d.ts +17 -0
  65. package/dist/ls-rows.js +73 -0
  66. package/dist/ls-rows.js.map +1 -1
  67. package/dist/outbound-handlers.d.ts +3 -0
  68. package/dist/outbound-handlers.js +17 -19
  69. package/dist/outbound-handlers.js.map +1 -1
  70. package/dist/outbound-schemas.d.ts +2 -0
  71. package/dist/outbound-schemas.js +1 -1
  72. package/dist/outbound-schemas.js.map +1 -1
  73. package/dist/paths.js +4 -2
  74. package/dist/paths.js.map +1 -1
  75. package/dist/pause-marker.d.ts +10 -1
  76. package/dist/pause-marker.js +26 -2
  77. package/dist/pause-marker.js.map +1 -1
  78. package/dist/routing-engine.d.ts +17 -2
  79. package/dist/routing-engine.js +48 -5
  80. package/dist/routing-engine.js.map +1 -1
  81. package/dist/service-installer.d.ts +8 -0
  82. package/dist/service-installer.js +36 -1
  83. package/dist/service-installer.js.map +1 -1
  84. package/dist/settings-api.d.ts +2 -0
  85. package/dist/settings-api.js +3 -1
  86. package/dist/settings-api.js.map +1 -1
  87. package/dist/setup-wizard.js +3 -1
  88. package/dist/setup-wizard.js.map +1 -1
  89. package/dist/status-emojis.d.ts +9 -1
  90. package/dist/status-emojis.js +11 -1
  91. package/dist/status-emojis.js.map +1 -1
  92. package/dist/target-queue-worker.d.ts +67 -0
  93. package/dist/target-queue-worker.js +76 -0
  94. package/dist/target-queue-worker.js.map +1 -0
  95. package/dist/tool-permissions.js +7 -2
  96. package/dist/tool-permissions.js.map +1 -1
  97. package/dist/topic-commands.js +23 -19
  98. package/dist/topic-commands.js.map +1 -1
  99. package/dist/transcript-sources.d.ts +30 -0
  100. package/dist/transcript-sources.js +78 -0
  101. package/dist/transcript-sources.js.map +1 -1
  102. package/dist/tunnel/cloudflared.d.ts +23 -5
  103. package/dist/tunnel/cloudflared.js +32 -13
  104. package/dist/tunnel/cloudflared.js.map +1 -1
  105. package/dist/tunnel/manager.d.ts +6 -0
  106. package/dist/tunnel/manager.js +60 -22
  107. package/dist/tunnel/manager.js.map +1 -1
  108. package/dist/tunnel/public-fetch.d.ts +30 -0
  109. package/dist/tunnel/public-fetch.js +156 -0
  110. package/dist/tunnel/public-fetch.js.map +1 -0
  111. package/dist/tunnel/types.d.ts +8 -2
  112. package/dist/tunnel/types.js +8 -2
  113. package/dist/tunnel/types.js.map +1 -1
  114. package/dist/types.d.ts +50 -1
  115. package/dist/types.js +9 -1
  116. package/dist/types.js.map +1 -1
  117. package/dist/ui/settings.html +2 -2
  118. package/dist/ui/view.html +14 -0
  119. package/dist/ui/web-terminal/terminal.html +1 -0
  120. package/dist/wake-coordinator.d.ts +128 -0
  121. package/dist/wake-coordinator.js +337 -0
  122. package/dist/wake-coordinator.js.map +1 -0
  123. package/dist/web-api.d.ts +3 -1
  124. package/dist/web-api.js +1 -1
  125. package/dist/web-api.js.map +1 -1
  126. package/dist/web-host-guard.d.ts +47 -0
  127. package/dist/web-host-guard.js +75 -0
  128. package/dist/web-host-guard.js.map +1 -0
  129. package/dist/web-terminal-http.d.ts +34 -0
  130. package/dist/web-terminal-http.js +63 -0
  131. package/dist/web-terminal-http.js.map +1 -1
  132. package/dist/web-terminal.d.ts +2 -0
  133. package/dist/web-terminal.js +3 -6
  134. package/dist/web-terminal.js.map +1 -1
  135. package/package.json +1 -1
  136. package/templates/systemd.service.ejs +7 -0
@@ -26,12 +26,31 @@
26
26
  * step is audited to the event log without token/cookie/URL secrets
27
27
  * - fleet shutdown cancels the active session and waits for the confirmed
28
28
  * tmux kill (no orphaned login CLI)
29
+ *
30
+ * Public link (web_terminal.tunnel.allow_public, default OFF — with it off none of this
31
+ * exists): for a flow marked `tunnelOk` the confirmation grows an "Open public link" button
32
+ * beside "Local link only". Pressing it is the consent, once per login — nothing is ever
33
+ * exposed on a standing basis. Then:
34
+ * - a Cloudflare Quick Tunnel is put in front of THIS session's listener only, through the
35
+ * fleet-wide ManagedTunnel (lease, confirmed stop); the listener is told the tunnel's
36
+ * exact host before the readiness probe arrives under it, and marks cookies Secure on it
37
+ * - the public URL and the access token go ONLY to the requester, as two private messages;
38
+ * the channel gets one line and never the URL. If either private message cannot be
39
+ * delivered the tunnel and session are closed — there is no "post it in the channel" path
40
+ * - fail closed: a tunnel that dies ends the session; a session that ends (done, cancelled,
41
+ * TTL, shutdown, failed delivery) closes the tunnel BEFORE the window is released, and a
42
+ * tunnel that cannot be confirmed stopped is announced loudly and blocks further tunnels
43
+ * - the link is minted fresh each time and never logged or audited (the host name is part of
44
+ * the capability)
29
45
  */
30
46
  import { homedir } from "node:os";
31
47
  import { LOGIN_BACKEND_ALIASES, LOGIN_FLOWS, checkAuthStatus } from "./login-flows.js";
32
48
  import { t } from "./locale.js";
33
49
  import { MAX_TTL_MS, TmuxTerminalBackend, WebTerminalSession, } from "./web-terminal.js";
34
50
  import { WebTerminalHttpServer } from "./web-terminal-http.js";
51
+ import { allowedHostNames } from "./web-host-guard.js";
52
+ import { ManagedTunnel, newTunnelSid } from "./tunnel/manager.js";
53
+ import { CloudflaredProvider } from "./tunnel/cloudflared.js";
35
54
  export const LOGIN_TOKEN_RESEND_PREFIX = "login-token:";
36
55
  export const DEFAULT_WEB_TERMINAL_TTL_MINUTES = 10;
37
56
  /** Design §3.1: a requester may create at most this many sessions per window. */
@@ -111,6 +130,8 @@ export class LoginController {
111
130
  shutdownGeneration = 0;
112
131
  backendFactory = new TmuxTerminalBackend();
113
132
  startTimes = new Map();
133
+ /** One tunnel owner for the process: the lease it writes is fleet-wide, so this must not be per-login. */
134
+ managedTunnel = null;
114
135
  constructor(deps) {
115
136
  this.deps = deps;
116
137
  }
@@ -186,16 +207,24 @@ export class LoginController {
186
207
  return t("login.web_shutting_down");
187
208
  this.deps.releaseWindow(claim); // nothing runs until the button is pressed
188
209
  const logoutFirst = tokenPresent && flow.preCommand?.when === "token-present";
210
+ const publicLink = this.tunnelAllowed(cfg, flow);
211
+ const confirmation = t(flow.deviceAuth ? "login.device_confirm" : "login.web_confirm", backend)
212
+ + (publicLink ? t("login.tunnel_confirm_extra") : "");
189
213
  try {
190
214
  await this.deps.postButtons({
191
215
  prefix: "login-confirm:",
192
216
  instanceName: backend,
193
217
  chat,
194
218
  message: logoutFirst
195
- ? `${t("login.web_confirm", backend)}\n${t("login.still_valid_precommand", backend, flow.preCommand.command)}`
196
- : t("login.web_confirm", backend),
219
+ ? `${confirmation}\n${t("login.still_valid_precommand", backend, flow.preCommand.command)}`
220
+ : confirmation,
197
221
  choices: [
198
- { action: tokenPresent ? "go-relogin" : "go", label: t("login.web_confirm_go") },
222
+ // Consent is a separate, labelled button — never a side effect of the ordinary one.
223
+ ...(publicLink ? [{ action: tokenPresent ? "go-relogin-tunnel" : "go-tunnel", label: t("login.tunnel_go") }] : []),
224
+ {
225
+ action: tokenPresent ? "go-relogin" : "go",
226
+ label: publicLink ? t("login.tunnel_go_local") : t(flow.deviceAuth ? "login.device_confirm_go" : "login.web_confirm_go"),
227
+ },
199
228
  { action: "cancel", label: t("login.relogin_cancel") },
200
229
  ],
201
230
  expiredText: t("buttons.stale"),
@@ -214,6 +243,12 @@ export class LoginController {
214
243
  return null;
215
244
  }
216
245
  const userId = chat.userId;
246
+ const wantTunnel = opts.tunnel === true;
247
+ if (wantTunnel && !this.tunnelAllowed(cfg, flow)) {
248
+ // A stale button, or the config was switched off after the prompt went out.
249
+ this.audit("tunnel_refused", { backend, requester: userId });
250
+ return t("login.tunnel_not_allowed", backend);
251
+ }
217
252
  const command = this.buildCommand(flow, opts.tokenPresent === true);
218
253
  const ttlMs = this.ttlMs(cfg);
219
254
  const spec = {
@@ -225,6 +260,7 @@ export class LoginController {
225
260
  observe: {
226
261
  urlPattern: flow.urlPattern,
227
262
  codePattern: flow.codePattern,
263
+ deviceAuth: flow.deviceAuth,
228
264
  successPattern: flow.successPattern,
229
265
  failures: flow.failures,
230
266
  },
@@ -233,11 +269,24 @@ export class LoginController {
233
269
  const logger = this.deps.logger;
234
270
  const entry = {
235
271
  claim, session: null, http: null, backend, chat,
236
- requesterUserId: userId, url: "", tokenDelivered: false, silent: false,
272
+ requesterUserId: userId, url: "", tokenDelivered: false, silent: false, tunnel: null,
237
273
  };
238
274
  const events = {
239
- onHint: (url, code) => this.sendHint(chat, backend, url, code),
275
+ // A public-link login never relays the provider's own sign-in URL/code to the channel: they are as
276
+ // sensitive as the link and token that were kept out of it, the browser terminal already shows them,
277
+ // and the channel is the one place this mode promises not to put anything. Local and device-auth
278
+ // logins keep their contract.
279
+ onHint: (url, code) => {
280
+ if (wantTunnel) {
281
+ this.audit("hint_not_relayed", { backend, requester: userId, hadCode: code !== null });
282
+ return Promise.resolve();
283
+ }
284
+ return this.sendHint(chat, backend, url, code);
285
+ },
240
286
  onDone: async (result) => {
287
+ // The tunnel goes first and the window is held until it is confirmed gone: a login that
288
+ // is over must not leave its listener reachable while the fleet believes it is free.
289
+ await this.closeTunnel(entry);
241
290
  this.releaseEntry(entry);
242
291
  if (!entry.silent)
243
292
  await this.reportDone(chat, backend, result);
@@ -254,17 +303,34 @@ export class LoginController {
254
303
  await entry.session.start();
255
304
  if (this.stale(generation, claim))
256
305
  return this.abort(entry, t("login.web_shutting_down"), "fleet shutdown");
306
+ // Device auth needs only the provider link/code emitted by onHint.
307
+ // Keep the engine's TTL, cancellation and recovery, without exposing a
308
+ // second browser terminal URL or sending an unused access token.
309
+ if (flow.deviceAuth)
310
+ return t("login.started", backend);
257
311
  const http = (this.deps.createHttp ?? ((s, l, o) => new WebTerminalHttpServer(s, l, o)))(entry.session, logger, {
258
312
  bind: cfg?.web_terminal?.bind,
259
313
  hostname: cfg?.hostname || "localhost",
314
+ allowedHosts: allowedHostNames(cfg),
260
315
  });
261
316
  entry.http = http;
262
- entry.url = (await http.listen()).url;
317
+ const listening = await http.listen();
318
+ entry.url = listening.url;
263
319
  if (this.stale(generation, claim))
264
320
  return this.abort(entry, t("login.web_shutting_down"), "fleet shutdown");
321
+ if (wantTunnel) {
322
+ const failed = await this.openTunnel(entry, http, listening.port, cfg, ttlMs);
323
+ if (failed !== null)
324
+ return failed;
325
+ if (this.stale(generation, claim))
326
+ return this.abort(entry, t("login.web_shutting_down"), "fleet shutdown");
327
+ }
265
328
  }
266
329
  catch (err) {
267
- return this.abort(entry, t("login.failed", backend, err.message), "startup failed");
330
+ // In public mode the text is fixed: nothing a provider or the network said goes to the chat.
331
+ return this.abort(entry, wantTunnel
332
+ ? t("login.tunnel_failed", t("login.tunnel_reason.other"))
333
+ : t("login.failed", backend, err.message), "startup failed");
268
334
  }
269
335
  // Delivery is part of starting: a link nobody received, or a token that
270
336
  // reached neither the requester nor a resend button, means the session
@@ -272,6 +338,18 @@ export class LoginController {
272
338
  // awaits aborts instead of announcing a terminal that no longer exists.
273
339
  if (this.stale(generation, claim))
274
340
  return this.abort(entry, t("login.web_shutting_down"), "fleet shutdown");
341
+ if (entry.tunnel) {
342
+ // Public mode never uses the channel for the link or the token (D-b): two private
343
+ // messages or nothing. The caller posts the one-line status we return.
344
+ const minutes = Math.round(ttlMs / 60_000);
345
+ if (!(await this.sendTunnelLink(entry, minutes, command)) || !(await this.sendToken(entry, { offerResend: false }))) {
346
+ return this.abort(entry, t("login.tunnel_dm_failed"), "private delivery failed");
347
+ }
348
+ if (this.stale(generation, claim))
349
+ return this.abort(entry, t("login.web_shutting_down"), "fleet shutdown");
350
+ this.audit("tunnel_delivered", { backend, requester: userId });
351
+ return t("login.tunnel_started", backend, String(minutes));
352
+ }
275
353
  if (!(await this.sendLink(entry, Math.round(ttlMs / 60_000), command))) {
276
354
  return this.abort(entry, t("login.failed", backend, t("login.web_link_failed")), "link delivery failed");
277
355
  }
@@ -310,6 +388,7 @@ export class LoginController {
310
388
  // kill ≤31 s). Releasing ownership early would let the fleet exit while
311
389
  // the dedicated tmux server is still being torn down.
312
390
  await entry.session.cancel("fleet shutdown").catch(err => this.deps.logger.warn(safeErr(err), "web login shutdown failed"));
391
+ await this.closeTunnel(entry);
313
392
  await entry.http?.close().catch(() => { });
314
393
  this.releaseEntry(entry);
315
394
  }
@@ -318,7 +397,7 @@ export class LoginController {
318
397
  /** The "resend token" button: only the requester, only while the token is unredeemed. */
319
398
  async resendToken(requesterUserId) {
320
399
  const entry = this.active;
321
- if (!entry)
400
+ if (!entry || !entry.http)
322
401
  return t("login.no_session");
323
402
  if (!requesterUserId || requesterUserId !== entry.requesterUserId) {
324
403
  this.audit("token_resend_denied", { backend: entry.backend, requester: requesterUserId ?? null });
@@ -355,11 +434,148 @@ export class LoginController {
355
434
  if (entry.session.state === "running") {
356
435
  await entry.session.cancel(detail).catch(err => this.deps.logger.warn(safeErr(err), "web login abort failed"));
357
436
  }
437
+ await this.closeTunnel(entry);
358
438
  await entry.http?.close().catch(() => { });
359
439
  this.releaseEntry(entry);
360
440
  this.audit("aborted", { backend: entry.backend, requester: entry.requesterUserId, detail });
361
441
  return report;
362
442
  }
443
+ // ── Public link ──
444
+ /**
445
+ * Whether this flow may be offered over a public tunnel right now. Every term is required, and
446
+ * the answer is recomputed at both ends of the button press.
447
+ */
448
+ tunnelAllowed(cfg, flow) {
449
+ if (flow.tunnelOk !== true || flow.noShellEscape !== true || flow.deviceAuth)
450
+ return false;
451
+ if (cfg?.web_terminal?.enabled === false)
452
+ return false;
453
+ if (cfg?.web_terminal?.tunnel?.allow_public !== true)
454
+ return false;
455
+ return this.deps.createTunnel !== undefined || this.deps.tunnelDataDir !== undefined;
456
+ }
457
+ tunnelPort(cfg) {
458
+ if (this.deps.createTunnel)
459
+ return this.deps.createTunnel(cfg);
460
+ const dataDir = this.deps.tunnelDataDir();
461
+ this.managedTunnel ??= new ManagedTunnel({ dataDir, log: m => this.deps.logger.info({}, m) });
462
+ const managed = this.managedTunnel;
463
+ const provider = new CloudflaredProvider({ protocol: cfg?.web_terminal?.tunnel?.protocol });
464
+ return { start: ctx => managed.start(provider, ctx), stop: reason => managed.stop(reason) };
465
+ }
466
+ /**
467
+ * Put a tunnel in front of this session's listener. Returns null on success, or the report to
468
+ * hand the caller after the session has been aborted.
469
+ */
470
+ async openTunnel(entry, http, port, cfg, ttlMs) {
471
+ const abort = new AbortController();
472
+ const tunnel = { port: this.tunnelPort(cfg), abort, starting: null, handle: null, closing: null };
473
+ entry.tunnel = tunnel;
474
+ this.audit("tunnel_requested", { backend: entry.backend, requester: entry.requesterUserId });
475
+ tunnel.starting = tunnel.port.start({
476
+ sid: newTunnelSid(),
477
+ origin: new URL(`http://127.0.0.1:${port}`),
478
+ pagePath: new URL(entry.url).pathname,
479
+ readinessMarker: http.readinessMarker,
480
+ expiresAt: (this.deps.now ?? Date.now)() + ttlMs,
481
+ signal: abort.signal,
482
+ // The provider's readiness probe arrives under the public host: the listener has to
483
+ // expect exactly that one name before it, and drop it again if no tunnel results.
484
+ onCandidateHost: host => http.setExternalHost(host),
485
+ });
486
+ let result;
487
+ try {
488
+ result = await tunnel.starting;
489
+ }
490
+ catch (err) {
491
+ http.setExternalHost(null);
492
+ const kind = tunnelErrorKind(err?.errorKind);
493
+ this.audit("tunnel_failed", { backend: entry.backend, requester: entry.requesterUserId, errorKind: kind });
494
+ return this.abort(entry, t("login.tunnel_failed", t(`login.tunnel_reason.${kind}`)), "tunnel failed");
495
+ }
496
+ // The login ended (cancel, TTL, shutdown) while the tunnel was coming up: closeTunnel is already
497
+ // on its way to stop it, and nothing here may re-publish a host it just took away.
498
+ if (tunnel.closing !== null) {
499
+ return this.abort(entry, t("login.cancelled", entry.backend), "closed while the tunnel was starting");
500
+ }
501
+ if (!result.ok) {
502
+ http.setExternalHost(null);
503
+ const kind = tunnelErrorKind(result.errorKind);
504
+ this.audit("tunnel_failed", { backend: entry.backend, requester: entry.requesterUserId, errorKind: kind, leaseHeld: result.leaseHeld });
505
+ // Only the allowlisted kind becomes words: `result.message` is the provider's own text, and a TLS or
506
+ // network error in it can carry the tunnel's random host name straight into the channel.
507
+ // `leaseHeld`: a tunnel process exists that nobody can account for. Not a fallback — a stop.
508
+ const report = result.leaseHeld
509
+ ? t("login.tunnel_unconfirmed", "", t("login.tunnel_reason.lease-held"))
510
+ : t("login.tunnel_failed", t(`login.tunnel_reason.${kind}`));
511
+ return this.abort(entry, report, "tunnel failed");
512
+ }
513
+ tunnel.handle = result.handle;
514
+ http.setExternalHost(new URL(result.handle.baseUrl).host);
515
+ entry.url = result.handle.pageUrl;
516
+ result.handle.onUnexpectedExit(() => {
517
+ this.audit("tunnel_lost", { backend: entry.backend, requester: entry.requesterUserId });
518
+ // The page is gone the moment the tunnel is: end the login rather than leave a window open on nothing.
519
+ void entry.session.cancel(t("login.tunnel_lost")).catch(err => this.deps.logger.warn(safeErr(err), "web login tunnel-loss cancel failed"));
520
+ });
521
+ return null;
522
+ }
523
+ /** Idempotent: every end of a public-link login funnels through here, and the second caller joins the first. */
524
+ closeTunnel(entry) {
525
+ const tunnel = entry.tunnel;
526
+ if (!tunnel)
527
+ return Promise.resolve();
528
+ tunnel.closing ??= this.doCloseTunnel(entry, tunnel);
529
+ return tunnel.closing;
530
+ }
531
+ async doCloseTunnel(entry, tunnel) {
532
+ // Nothing may reach this listener under the public name from here on, whatever the process does next.
533
+ entry.http?.setExternalHost(null);
534
+ tunnel.abort.abort();
535
+ // A start still in flight is cancelled by the abort and settles after proving its child gone; stopping
536
+ // before it settles would find nothing active and let the start finish into a tunnel nobody owns.
537
+ await tunnel.starting?.catch(() => { });
538
+ let result;
539
+ try {
540
+ result = await tunnel.port.stop("login ended");
541
+ }
542
+ catch {
543
+ result = { confirmed: false, reason: "stopping the tunnel threw", pid: null, identity: null };
544
+ }
545
+ // Again, after the stop: whatever ran in between, the public name is not this listener's any more.
546
+ entry.http?.setExternalHost(null);
547
+ if (result.confirmed) {
548
+ this.audit("tunnel_closed", { backend: entry.backend, requester: entry.requesterUserId });
549
+ return;
550
+ }
551
+ this.audit("tunnel_unconfirmed", { backend: entry.backend, requester: entry.requesterUserId, pid: result.pid });
552
+ this.deps.logger.error({ pid: result.pid }, "login tunnel could not be confirmed stopped");
553
+ const where = result.pid !== null ? ` (pid ${result.pid})` : "";
554
+ await entry.chat.adapter.sendText(entry.chat.chatId, t("login.tunnel_unconfirmed", where, t("login.tunnel_reason.stop-unconfirmed")), { threadId: entry.chat.threadId })
555
+ .catch(() => { });
556
+ }
557
+ /** First of the two private messages: the public link. Never the channel. Returns delivery success. */
558
+ async sendTunnelLink(entry, ttlMinutes, command) {
559
+ const { chat } = entry;
560
+ if (typeof chat.adapter.sendDirect !== "function") {
561
+ this.audit("tunnel_link_failed", { backend: entry.backend, requester: entry.requesterUserId, via: "none" });
562
+ return false;
563
+ }
564
+ try {
565
+ await chat.adapter.sendDirect(entry.requesterUserId, t("login.tunnel_link", entry.backend, String(ttlMinutes), command, entry.url), {
566
+ format: "text",
567
+ disablePreview: true,
568
+ });
569
+ this.audit("tunnel_link_sent", { backend: entry.backend, requester: entry.requesterUserId, via: "dm" });
570
+ return true;
571
+ }
572
+ catch (err) {
573
+ // Never the message: a provider error may echo the payload (the URL).
574
+ this.deps.logger.warn({ ...safeErr(err), backend: entry.backend }, "web terminal tunnel link DM failed");
575
+ this.audit("tunnel_link_failed", { backend: entry.backend, requester: entry.requesterUserId, via: "dm", ...safeErr(err) });
576
+ return false;
577
+ }
578
+ }
363
579
  buildCommand(flow, tokenPresent) {
364
580
  const pre = flow.preCommand;
365
581
  const runPre = pre && (pre.when === "always" || (pre.when === "token-present" && tokenPresent));
@@ -484,6 +700,18 @@ export class LoginController {
484
700
  catch { /* never break the flow */ }
485
701
  }
486
702
  }
703
+ /**
704
+ * The only tunnel failure vocabulary that reaches a chat. A provider's message is free text — it can
705
+ * contain the tunnel's host (a TLS name mismatch does) — so it is mapped to one of these kinds, each of
706
+ * which has a fixed sentence in the locale table, and anything unrecognised becomes "other".
707
+ */
708
+ const TUNNEL_ERROR_KINDS = new Set([
709
+ "binary-missing", "binary-not-executable", "not-logged-in", "spawn-failed", "no-url",
710
+ "bad-url", "readiness-failed", "timeout", "cancelled", "lease-held",
711
+ ]);
712
+ function tunnelErrorKind(kind) {
713
+ return typeof kind === "string" && TUNNEL_ERROR_KINDS.has(kind) ? kind : "other";
714
+ }
487
715
  function escapeHtml(s) {
488
716
  return s.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
489
717
  }
@@ -1 +1 @@
1
- {"version":3,"file":"login-controller.js","sourceRoot":"","sources":["../src/login-controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"login-controller.js","sourceRoot":"","sources":["../src/login-controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGlC,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,eAAe,EAAwD,MAAM,kBAAkB,CAAC;AAC7I,OAAO,EAAE,CAAC,EAAE,MAAM,aAAa,CAAC;AAEhC,OAAO,EACL,UAAU,EAAE,mBAAmB,EAAE,kBAAkB,GAEpD,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,qBAAqB,EAA+B,MAAM,wBAAwB,CAAC;AAC5F,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,YAAY,EAA2B,MAAM,qBAAqB,CAAC;AAC3F,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAG9D,MAAM,CAAC,MAAM,yBAAyB,GAAG,cAAc,CAAC;AACxD,MAAM,CAAC,MAAM,gCAAgC,GAAG,EAAE,CAAC;AACnD,iFAAiF;AACjF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAClC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,GAAG,MAAM,CAAC;AAe/C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,MAAM,CAAC;AAEtD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,OAAe,EACf,OAAyC,EACzC,IAAwC,EACxC,UAAU,GAAG,+BAA+B;IAE5C,MAAM,IAAI,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC;IAC7B,IAAI,MAAyB,CAAC;IAC9B,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,OAAO,EAAE,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,2EAA2E;QAC3E,uDAAuD;QACvD,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAE,GAAa,EAAE,OAAO,IAAI,GAAG,CAAC,EAAE,CAAC;IACrG,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,KAAe,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3E,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,IAAI,CAAC,CAAC,CAAC,sBAAsB,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9D,OAAO;IACT,CAAC;IACD,0EAA0E;IAC1E,kEAAkE;IAClE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IACrC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,IAAI,CAAC,CAAC,CAAC,uBAAuB,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3G,OAAO;IACT,CAAC;IACD,MAAM,IAAI,CAAC,CAAC,CAAC,iBAAiB,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACxF,CAAC;AAyFD;;;;;GAKG;AACH,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;IAC1B,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc;IAC3G,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,yBAAyB;CAChH,CAAC,CAAC;AACH,SAAS,OAAO,CAAC,GAAY;IAC3B,MAAM,IAAI,GAAI,GAAiC,EAAE,IAAI,CAAC;IACtD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAClG,4FAA4F;IAC5F,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAClG,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AAChC,CAAC;AAED,MAAM,OAAO,eAAe;IAeG;IAdrB,MAAM,GAAuB,IAAI,CAAC;IAC1C,qEAAqE;IAC7D,QAAQ,GAAG,KAAK,CAAC;IACzB;;;;OAIG;IACK,kBAAkB,GAAG,CAAC,CAAC;IACd,cAAc,GAAG,IAAI,mBAAmB,EAAE,CAAC;IAC3C,UAAU,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC1D,0GAA0G;IAClG,aAAa,GAAyB,IAAI,CAAC;IAEnD,YAA6B,IAAyB;QAAzB,SAAI,GAAJ,IAAI,CAAqB;IAAG,CAAC;IAE1D,QAAQ,KAAc,OAAO,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC;IACpD,IAAI,aAAa,KAAoB,OAAO,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC;IAE3E,6EAA6E;IAC7E,IAAI;QACF,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IAC5E,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,KAAK,CAAC,UAAkB,EAAE,IAAe,EAAE,OAA0B,EAAE;QAC3E,MAAM,OAAO,GAAG,qBAAqB,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;QAC5F,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI;YAAE,OAAO,CAAC,CAAC,mBAAmB,EAAE,UAAU,CAAC,CAAC;QACrD,IAAI,IAAI,CAAC,WAAW,KAAK,aAAa,EAAE,CAAC;YACvC,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC;YAChF,OAAO,CAAC,CAAC,oCAAoC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACxE,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO,CAAC,CAAC,yBAAyB,CAAC,CAAC;QACvD,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAC3C,2DAA2D;QAC3D,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACzE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YAC7F,OAAO,CAAC,CAAC,mBAAmB,CAAC,CAAC;QAChC,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACpC,IAAI,GAAG,EAAE,YAAY,EAAE,OAAO,KAAK,KAAK;YAAE,OAAO,CAAC,CAAC,oBAAoB,CAAC,CAAC;QACzE,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;YAChC,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YACpE,OAAO,CAAC,CAAC,4BAA4B,EAAE,OAAO,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAChE,OAAO,CAAC,CAAC,wBAAwB,EAAE,MAAM,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC,oBAAoB,GAAG,MAAM,CAAC,CAAC,CAAC;QACtG,CAAC;QAED,0EAA0E;QAC1E,yEAAyE;QACzE,oEAAoE;QACpE,wEAAwE;QACxE,gEAAgE;QAChE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACjD,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACnH,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,WAAW;gBAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,mHAAmH;IAC3G,KAAK,CAAC,UAAkB,EAAE,KAA8B;QAC9D,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,kBAAkB,KAAK,UAAU,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;IACzH,CAAC;IAEO,KAAK,CAAC,YAAY,CACxB,IAAe,EAAE,OAAe,EAAE,IAAe,EAAE,IAAuB,EAAE,GAAuB,EACnG,KAAuB,EAAE,UAAkB,EAAE,eAA2B;QAExE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,yEAAyE;YACzE,qEAAqE;YACrE,sEAAsE;YACtE,IAAI,YAAY,GAAG,KAAK,CAAC;YACzB,IAAI,IAAI,CAAC,SAAS;gBAAE,YAAY,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,eAAe,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,OAAO,CAAC;YAChH,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC;gBAAE,OAAO,CAAC,CAAC,yBAAyB,CAAC,CAAC;YACvE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAuB,2CAA2C;YACjG,MAAM,WAAW,GAAG,YAAY,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,eAAe,CAAC;YAC9E,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACjD,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,mBAAmB,EAAE,OAAO,CAAC;kBAC3F,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACxD,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;oBAC1B,MAAM,EAAE,gBAAgB;oBACxB,YAAY,EAAE,OAAO;oBACrB,IAAI;oBACJ,OAAO,EAAE,WAAW;wBAClB,CAAC,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,8BAA8B,EAAE,OAAO,EAAE,IAAI,CAAC,UAAW,CAAC,OAAO,CAAC,EAAE;wBAC5F,CAAC,CAAC,YAAY;oBAChB,OAAO,EAAE;wBACP,oFAAoF;wBACpF,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;wBAClH;4BACE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI;4BAC1C,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,sBAAsB,CAAC;yBACzH;wBACD,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,sBAAsB,CAAC,EAAE;qBACvD;oBACD,WAAW,EAAE,CAAC,CAAC,eAAe,CAAC;iBAChC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,EAAE,mCAAmC,CAAC,CAAC;gBACzF,OAAO,CAAC,CAAC,cAAc,EAAE,OAAO,EAAE,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC;YACnE,CAAC;YACD,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC;gBACjC,gEAAgE;gBAChE,sEAAsE;gBACtE,iEAAiE;gBACjE,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YACxE,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAgB,CAAC;QACrC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC;QACxC,IAAI,UAAU,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC;YACjD,4EAA4E;YAC5E,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;YAC7D,OAAO,CAAC,CAAC,0BAA0B,EAAE,OAAO,CAAC,CAAC;QAChD,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC;QACpE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAoB;YAC5B,IAAI,EAAE,OAAO;YACb,OAAO;YACP,OAAO;YACP,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,EAAE;YAClC,KAAK;YACL,OAAO,EAAE;gBACP,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB;YACD,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;SAC/F,CAAC;QAEF,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QAChC,MAAM,KAAK,GAAgB;YACzB,KAAK,EAAE,OAAO,EAAE,IAAqC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI;YAChF,eAAe,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI;SACrF,CAAC;QACF,MAAM,MAAM,GAAsB;YAChC,mGAAmG;YACnG,qGAAqG;YACrG,iGAAiG;YACjG,8BAA8B;YAC9B,MAAM,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;gBACpB,IAAI,UAAU,EAAE,CAAC;oBACf,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,KAAK,IAAI,EAAE,CAAC,CAAC;oBACvF,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;gBAC3B,CAAC;gBACD,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YACjD,CAAC;YACD,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;gBACrB,wFAAwF;gBACxF,qFAAqF;gBACrF,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAC9B,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBACzB,IAAI,CAAC,KAAK,CAAC,MAAM;oBAAE,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAClE,CAAC;YACD,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC;SACpF,CAAC;QACF,0EAA0E;QAC1E,2EAA2E;QAC3E,KAAK,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACvI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,eAAe,EAAE,CAAC,CAAsC,wEAAwE;QAChI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAEvB,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC5B,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,yBAAyB,CAAC,EAAE,gBAAgB,CAAC,CAAC;YAC5G,mEAAmE;YACnE,uEAAuE;YACvE,iEAAiE;YACjE,IAAI,IAAI,CAAC,UAAU;gBAAE,OAAO,CAAC,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;YACxD,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE;gBAC9G,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI;gBAC7B,QAAQ,EAAE,GAAG,EAAE,QAAQ,IAAI,WAAW;gBACtC,YAAY,EAAE,gBAAgB,CAAC,GAAG,CAAC;aACpC,CAAC,CAAC;YACH,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;YAClB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;YACtC,KAAK,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC;YAC1B,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,yBAAyB,CAAC,EAAE,gBAAgB,CAAC,CAAC;YAC5G,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;gBAC9E,IAAI,MAAM,KAAK,IAAI;oBAAE,OAAO,MAAM,CAAC;gBACnC,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC;oBAAE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,yBAAyB,CAAC,EAAE,gBAAgB,CAAC,CAAC;YAC9G,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,6FAA6F;YAC7F,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU;gBACjC,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC,2BAA2B,CAAC,CAAC;gBAC1D,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,OAAO,EAAG,GAAa,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC,CAAC;QAC5E,CAAC;QAED,wEAAwE;QACxE,uEAAuE;QACvE,sEAAsE;QACtE,wEAAwE;QACxE,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,yBAAyB,CAAC,EAAE,gBAAgB,CAAC,CAAC;QAC5G,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,kFAAkF;YAClF,uEAAuE;YACvE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;YAC3C,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC;gBACpH,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,wBAAwB,CAAC,EAAE,yBAAyB,CAAC,CAAC;YACnF,CAAC;YACD,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,yBAAyB,CAAC,EAAE,gBAAgB,CAAC,CAAC;YAC5G,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;YAC/D,OAAO,CAAC,CAAC,sBAAsB,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;YACvE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,cAAc,EAAE,OAAO,EAAE,CAAC,CAAC,uBAAuB,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC;QAC3G,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,yBAAyB,CAAC,EAAE,gBAAgB,CAAC,CAAC;QAC5G,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;YAC1D,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,cAAc,EAAE,OAAO,EAAE,CAAC,CAAC,wBAAwB,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAC;QAC7G,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,yBAAyB,CAAC,EAAE,gBAAgB,CAAC,CAAC;QAC5G,OAAO,CAAC,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,mCAAmC;IACnC,KAAK,CAAC,MAAM;QACV,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,CAAC,CAAC,kBAAkB,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QACpC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC9C,OAAO,CAAC,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;QACpB,mEAAmE;QACnE,uEAAuE;QACvE,wEAAwE;QACxE,sDAAsD;QACtD,MAAM,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,2BAA2B,CAAC,CAAC,CAAC;QAC5H,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC9B,MAAM,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAkC,CAAC,CAAC,CAAC;QAC1E,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,8DAA8D;IAC9D,MAAM,KAAW,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC;IAEzC,yFAAyF;IACzF,KAAK,CAAC,WAAW,CAAC,eAAmC;QACnD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI;YAAE,OAAO,CAAC,CAAC,kBAAkB,CAAC,CAAC;QACxD,IAAI,CAAC,eAAe,IAAI,eAAe,KAAK,KAAK,CAAC,eAAe,EAAE,CAAC;YAClE,IAAI,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,eAAe,IAAI,IAAI,EAAE,CAAC,CAAC;YAClG,OAAO,CAAC,CAAC,mBAAmB,CAAC,CAAC;QAChC,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE,KAAK,IAAI;YAAE,OAAO,CAAC,CAAC,8BAA8B,CAAC,CAAC;QACvF,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/E,IAAI,EAAE;YAAE,OAAO,CAAC,CAAC,wBAAwB,CAAC,CAAC;QAC3C,uEAAuE;QACvE,kEAAkE;QAClE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,+BAA+B,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,qBAAqB,CAAC,CAAC;IACrG,CAAC;IAED,kBAAkB;IAEV,SAAS,CAAC,MAAc;QAC9B,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,GAAG,oBAAoB,CAAC,CAAC;QACjG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACpC,OAAO,MAAM,CAAC,MAAM,GAAG,gBAAgB,CAAC;IAC1C,CAAC;IAEO,SAAS,CAAC,MAAc;QAC9B,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC7E,CAAC;IAEO,YAAY,CAAC,KAAkB;QACrC,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK;YAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAU,4CAA4C;QACpG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,4FAA4F;IACpF,KAAK,CAAC,KAAK,CAAC,KAAkB,EAAE,MAAc,EAAE,MAAc;QACpE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;QACpB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACtC,MAAM,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,wBAAwB,CAAC,CAAC,CAAC;QACjH,CAAC;QACD,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC9B,MAAM,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAA0B,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACzB,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,eAAe,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5F,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,oBAAoB;IAEpB;;;OAGG;IACK,aAAa,CAAC,GAAuB,EAAE,IAAe;QAC5D,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO,KAAK,CAAC;QAC3F,IAAI,GAAG,EAAE,YAAY,EAAE,OAAO,KAAK,KAAK;YAAE,OAAO,KAAK,CAAC;QACvD,IAAI,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC;QACnE,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,KAAK,SAAS,CAAC;IACvF,CAAC;IAEO,UAAU,CAAC,GAAuB;QACxC,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,aAAc,EAAE,CAAC;QAC3C,IAAI,CAAC,aAAa,KAAK,IAAI,aAAa,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9F,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;QACnC,MAAM,QAAQ,GAAG,IAAI,mBAAmB,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC5F,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;IAC9F,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,UAAU,CACtB,KAAkB,EAAE,IAA2B,EAAE,IAAY,EAAE,GAAuB,EAAE,KAAa;QAErG,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAA0C,EAAE,MAAM,EAAE,IAA2B,EAAE,OAAO,EAAE,IAA4B,EAAE,CAAC;QACvL,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;QAC7F,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;YAClC,GAAG,EAAE,YAAY,EAAE;YACnB,MAAM,EAAE,IAAI,GAAG,CAAC,oBAAoB,IAAI,EAAE,CAAC;YAC3C,QAAQ,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ;YACrC,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,SAAS,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK;YAChD,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,oFAAoF;YACpF,kFAAkF;YAClF,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;SACpD,CAAC,CAAC;QACH,IAAI,MAA0B,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC;QACjC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAC3B,MAAM,IAAI,GAAG,eAAe,CAAE,GAAsC,EAAE,SAAS,CAAC,CAAC;YACjF,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,eAAe,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3G,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;QACxG,CAAC;QACD,iGAAiG;QACjG,mFAAmF;QACnF,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,iBAAiB,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,sCAAsC,CAAC,CAAC;QACxG,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAC3B,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC/C,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,eAAe,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;YACxI,qGAAqG;YACrG,yFAAyF;YACzF,6FAA6F;YAC7F,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS;gBAC7B,CAAC,CAAC,CAAC,CAAC,0BAA0B,EAAE,EAAE,EAAE,CAAC,CAAC,gCAAgC,CAAC,CAAC;gBACxE,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAC,CAAC;YAC/D,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;QACpD,CAAC;QACD,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1D,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;QAClC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE;YAClC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;YACxF,uGAAuG;YACvG,KAAK,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,qCAAqC,CAAC,CAAC,CAAC;QAC7I,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gHAAgH;IACxG,WAAW,CAAC,KAAkB;QACpC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,MAAM;YAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QACtC,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACrD,OAAO,MAAM,CAAC,OAAO,CAAC;IACxB,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,KAAkB,EAAE,MAA0C;QACxF,sGAAsG;QACtG,KAAK,CAAC,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACrB,uGAAuG;QACvG,kGAAkG;QAClG,MAAM,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,EAAE,GAAgC,CAAC,CAAC,CAAC;QACrE,IAAI,MAAwB,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACjD,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,2BAA2B,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAChG,CAAC;QACD,mGAAmG;QACnG,KAAK,CAAC,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;YAC1F,OAAO;QACT,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,eAAe,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QAChH,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,EAAE,6CAA6C,CAAC,CAAC;QAC3F,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,0BAA0B,EAAE,KAAK,EAAE,CAAC,CAAC,sCAAsC,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;aACrK,KAAK,CAAC,GAAG,EAAE,GAA8C,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,uGAAuG;IAC/F,KAAK,CAAC,cAAc,CAAC,KAAkB,EAAE,UAAkB,EAAE,OAAe;QAClF,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;QACvB,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;YAClD,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,eAAe,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;YAC5G,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,mBAAmB,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE;gBAClI,MAAM,EAAE,MAAM;gBACd,cAAc,EAAE,IAAI;aACrB,CAAC,CAAC;YACH,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,eAAe,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;YACxG,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,sEAAsE;YACtE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,oCAAoC,CAAC,CAAC;YACzG,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,eAAe,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC3H,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,IAAe,EAAE,YAAqB;QACzD,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC;QAC5B,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,eAAe,IAAI,YAAY,CAAC,CAAC,CAAC;QAChG,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;IACnE,CAAC;IAEO,KAAK,CAAC,GAAuB;QACnC,MAAM,OAAO,GAAG,GAAG,EAAE,YAAY,EAAE,WAAW,IAAI,gCAAgC,CAAC;QACnF,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC,CAAC;QAChF,OAAO,OAAO,GAAG,MAAM,CAAC;IAC1B,CAAC;IAED,8FAA8F;IACtF,KAAK,CAAC,QAAQ,CAAC,KAAkB,EAAE,UAAkB,EAAE,OAAe;QAC5E,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;QACvB,MAAM,IAAI,GAAG,CAAC,CAAC,gBAAgB,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QACxF,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;YAClG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,eAAe,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC/G,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,qCAAqC,CAAC,CAAC;YAC1G,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,eAAe,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACzG,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,SAAS,CAAC,KAAkB,EAAE,CAA+C;QACzF,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;QACvB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;QAC9C,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC,CAA0B,uCAAuC;QACjG,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,UAAU;YAC3C,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,iBAAiB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,iBAAiB,UAAU,CAAC,KAAK,CAAC,eAAe;YACrG,CAAC,CAAC,GAAG,CAAC,CAAC,iBAAiB,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC;QAC3D,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;YAClD,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,eAAe,EAAE,IAAI,EAAE;oBACzD,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;oBAC1D,cAAc,EAAE,IAAI;iBACrB,CAAC,CAAC;gBACH,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,eAAe,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;gBAChI,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,wEAAwE;gBACxE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,8BAA8B,CAAC,CAAC;YACrG,CAAC;QACH,CAAC;QACD,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;QAC5F,IAAI,CAAC,CAAC,CAAC,WAAW;YAAE,OAAO,KAAK,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;gBAC1B,MAAM,EAAE,yBAAyB;gBACjC,YAAY,EAAE,KAAK,CAAC,OAAO;gBAC3B,IAAI;gBACJ,OAAO,EAAE,CAAC,CAAC,2BAA2B,CAAC;gBACvC,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC;gBAC7D,WAAW,EAAE,CAAC,CAAC,eAAe,CAAC;aAChC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,oCAAoC,CAAC,CAAC;YACzG,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,qHAAqH;IAC7G,KAAK,CAAC,QAAQ,CAAC,IAAe,EAAE,OAAe,EAAE,GAAW,EAAE,IAAmB;QACvF,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,iBAAiB,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBACrC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EACrC,GAAG,UAAU,CAAC,CAAC,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,iBAAiB,UAAU,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,eAAe,EAClH,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YACjD,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,iBAAiB,EAAE,OAAO,CAAC,KAAK,GAAG,GAAG,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC/H,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,EAAE,6BAA6B,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,IAAe,EAAE,OAAe,EAAE,MAAyB;QAClF,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,EAAE,CAC5B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAmB,CAAC,CAAC,CAAC;QAEzG,IAAI,IAAY,CAAC;QACjB,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;YACd,wEAAwE;YACxE,0EAA0E;YAC1E,iEAAiE;YACjE,MAAM,IAAI,CAAC,CAAC,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,CAAC;YAC1C,MAAM,yBAAyB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;YACjG,IAAI,MAAM,CAAC,aAAa;gBAAE,MAAM,IAAI,CAAC,CAAC,CAAC,0BAA0B,EAAE,OAAO,CAAC,CAAC,CAAC;YAC7E,OAAO;QACT,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAChE,IAAI,GAAG,EAAE,CAAC,CAA8C,wDAAwD;QAClH,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YACjD,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;gBAAE,IAAI,IAAI,KAAK,CAAC,CAAC,2BAA2B,CAAC,EAAE,CAAC;iBAC3E,IAAI,MAAM,CAAC,OAAO,KAAK,YAAY;gBAAE,IAAI,IAAI,KAAK,CAAC,CAAC,8BAA8B,CAAC,EAAE,CAAC;QAC7F,CAAC;QACD,IAAI,MAAM,CAAC,aAAa;YAAE,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,0BAA0B,EAAE,OAAO,CAAC,EAAE,CAAC;QACjG,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAmB,CAAC,CAAC,CAAC;IAC/G,CAAC;IAEO,KAAK,CAAC,KAAa,EAAE,MAA+B;QAC1D,IAAI,CAAC;YAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,aAAa,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,0BAA0B,CAAC,CAAC;IACnH,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,kBAAkB,GAAwB,IAAI,GAAG,CAAC;IACtD,gBAAgB,EAAE,uBAAuB,EAAE,eAAe,EAAE,cAAc,EAAE,QAAQ;IACpF,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY;CACpE,CAAC,CAAC;AACH,SAAS,eAAe,CAAC,IAAa;IACpC,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AACnF,CAAC;AAED,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,MAAM,CAAC,GAAW;IACzB,IAAI,CAAC;QAAC,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,GAAG,CAAC;IAAC,CAAC;AACzD,CAAC"}
@@ -50,6 +50,21 @@ export interface LoginFlow {
50
50
  * incident, not a crash and not an MCP failure.
51
51
  */
52
52
  loginScreenPattern?: RegExp;
53
+ /**
54
+ * Structural check for the logged-out screen, used INSTEAD of the bare
55
+ * `loginScreenPattern.test` when present. Needed where the pattern's wording
56
+ * can also sit in a resumed transcript (a conversation about the login menu):
57
+ * the predicate anchors on the live bottom of the pane.
58
+ */
59
+ loginScreenActive?: (pane: string) => boolean;
60
+ /**
61
+ * Evaluate the login screen BEFORE the ready pattern during the startup scan.
62
+ * Claude's login menu and OAuth prompt carry the `❯` selector that its ready
63
+ * pattern matches, so checked after ready (the default) the screen was
64
+ * declared ready and the check never ran. Opt-in: other backends' patterns
65
+ * are loose substrings that a resumed transcript could contain.
66
+ */
67
+ loginScreenBeforeReady?: true;
53
68
  /** Arrow-key selector shown by the CLI (kiro). Option N = Down×N then Enter. */
54
69
  menu?: {
55
70
  promptPattern: RegExp;
@@ -62,6 +77,8 @@ export interface LoginFlow {
62
77
  urlPattern?: RegExp;
63
78
  /** One-time user code displayed next to the URL, when the CLI prints one. */
64
79
  codePattern?: RegExp;
80
+ /** Present the provider URL + code together, without an AgEnD browser terminal. */
81
+ deviceAuth?: true;
65
82
  /** Pane content that proves the CLI finished signing in. */
66
83
  successPattern: RegExp;
67
84
  /** Hard cap for the whole login session. */
@@ -89,6 +106,13 @@ export interface LoginFlow {
89
106
  * command, no shell" depends on it.
90
107
  */
91
108
  noShellEscape?: true;
109
+ /**
110
+ * This flow may be offered over a public tunnel (web_terminal.tunnel.allow_public) — an
111
+ * ADDITIONAL review on top of `noShellEscape`: the link then reaches the internet instead of
112
+ * this machine, so it is opt-in per flow and only for CLIs whose login terminal was checked
113
+ * to put nothing sensitive on screen beyond the sign-in itself.
114
+ */
115
+ tunnelOk?: true;
92
116
  /**
93
117
  * Remote /login is declined outright for this backend (every mode), with a
94
118
  * user-facing reason. Kept in LOGIN_FLOWS only for authCheck /
@@ -138,7 +162,7 @@ export declare const LOGIN_BACKEND_ALIASES: Record<string, string>;
138
162
  * Extract the authorization URL and one-time code from joined pane text.
139
163
  * Returns nulls until the CLI has printed them.
140
164
  */
141
- export declare function extractLoginHint(pane: string, flow: Pick<LoginFlow, "urlPattern" | "codePattern">): {
165
+ export declare function extractLoginHint(pane: string, flow: Pick<LoginFlow, "urlPattern" | "codePattern" | "deviceAuth">): {
142
166
  url: string | null;
143
167
  code: string | null;
144
168
  };
@@ -28,6 +28,7 @@
28
28
  * pane, so instance delivery, pane-state detection, and progress monitors are
29
29
  * untouched by design.
30
30
  */
31
+ import { claudeLoginScreenActive } from "./backend/claude-code.js";
31
32
  const LOGIN_TIMEOUT_MS = 10 * 60 * 1000;
32
33
  /**
33
34
  * Cheap auth probes for backends that do not have an AgEnD-managed /login
@@ -90,6 +91,8 @@ export const LOGIN_FLOWS = {
90
91
  command: "codex login --device-auth",
91
92
  authCheck: { argv: ["codex", "login", "status"] },
92
93
  loginScreenPattern: /Sign in with ChatGPT/,
94
+ deviceAuth: true,
95
+ urlPattern: /https:\/\/auth\.openai\.com\/codex\/device(?=$|[\s"'<>\]),.])/,
93
96
  codePattern: STANDALONE_DEVICE_CODE,
94
97
  successPattern: /Successfully logged in/,
95
98
  timeoutMs: LOGIN_TIMEOUT_MS,
@@ -107,6 +110,7 @@ export const LOGIN_FLOWS = {
107
110
  },
108
111
  "kiro-cli": {
109
112
  noShellEscape: true, // login TUI reviewed: menu/prompts/device code only, no shell
113
+ tunnelOk: true, // the escape hatch exists for this flow: a phone can finish the browser sign-in
110
114
  backend: "kiro-cli",
111
115
  command: "kiro-cli login",
112
116
  authCheck: { argv: ["kiro-cli", "whoami", "--format", "json"] },
@@ -152,7 +156,9 @@ export const LOGIN_FLOWS = {
152
156
  backend: "claude-code",
153
157
  command: "claude auth login",
154
158
  authCheck: { argv: ["claude", "auth", "status"], validPattern: /"loggedIn":\s*true/ },
155
- loginScreenPattern: /Select login method:|Sign in (?:to|with) your Anthropic account/,
159
+ loginScreenPattern: /Select login method:|Sign in (?:to|with) your Anthropic account|Paste code here if prompted >/,
160
+ loginScreenActive: claudeLoginScreenActive,
161
+ loginScreenBeforeReady: true,
156
162
  inputPrompt: /Paste code here if prompted/,
157
163
  successPattern: /Login successful|Logged in as/,
158
164
  timeoutMs: LOGIN_TIMEOUT_MS,
@@ -201,7 +207,9 @@ export function extractLoginHint(pane, flow) {
201
207
  const codeMatch = flow.codePattern ? pane.match(flow.codePattern) : null;
202
208
  // Alternation patterns carry several capture groups — take the one that hit.
203
209
  const code = codeMatch ? codeMatch.slice(1).find(group => group !== undefined) ?? null : null;
204
- return { url, code };
210
+ // Pane output can arrive in pieces. Do not latch a device URL before its
211
+ // code is visible, or observers that deduplicate URLs would lose the code.
212
+ return { url: flow.deviceAuth && !code ? null : url, code };
205
213
  }
206
214
  const AUTH_CHECK_TIMEOUT_MS = 5_000;
207
215
  let authCheckRunnerOverride = null;
@@ -1 +1 @@
1
- {"version":3,"file":"login-flows.js","sourceRoot":"","sources":["../src/login-flows.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"login-flows.js","sourceRoot":"","sources":["../src/login-flows.ts"],"names":[],"mappings":"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"}
package/dist/ls-rows.d.ts CHANGED
@@ -41,6 +41,23 @@ export interface LsRow {
41
41
  }
42
42
  /** Generous backstop: a healthy row resolves inside the 2s capture bound. */
43
43
  export declare const LS_ROW_TIMEOUT_MS = 10000;
44
+ /** Display width accounting for fullwidth (CJK) characters. */
45
+ export declare function displayWidth(s: string): number;
46
+ /**
47
+ * Truncate to a display width, keeping room for the ellipsis. Real model
48
+ * names run to 23 columns (gemini-3.8-flash-medium, "Opus 5.5 (1M context)");
49
+ * table columns cap them so Model never blows the table wider (#1052
50
+ * measured the live fleet's ls table at ~121 wide on names alone).
51
+ */
52
+ export declare function truncateDisplay(s: string, maxWidth: number): string;
53
+ /** Max model column: fits claude-sonnet-4.6 whole, truncates the 21+ ones. */
54
+ export declare const MODEL_DISPLAY_WIDTH_MAX = 20;
55
+ /**
56
+ * Status icon shared by `agend ls` and /status's merged State column (#1052):
57
+ * one glyph per lifecycle/execution state — ⏸ paused, ✗ stopped.
58
+ */
59
+ export declare function lsStatusIcon(s: string, idle?: boolean, state?: string | null): string;
60
+ export declare function lsStatusLabel(s: string, idle?: boolean, state?: string | null): string;
44
61
  export declare function collectLsRow(input: LsRowInput, env: LsRowEnv): Promise<LsRow>;
45
62
  /**
46
63
  * Collect every row concurrently: total time is ~max(one instance), not the