@kdonev/termscape 0.1.1 → 0.1.3

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 (97) hide show
  1. package/README.md +53 -82
  2. package/dist/agents/profiles.d.ts +12 -5
  3. package/dist/agents/profiles.d.ts.map +1 -1
  4. package/dist/agents/profiles.js +44 -7
  5. package/dist/agents/profiles.js.map +1 -1
  6. package/dist/agents/router.d.ts.map +1 -1
  7. package/dist/agents/router.js +2 -2
  8. package/dist/agents/router.js.map +1 -1
  9. package/dist/agents/templates.d.ts +15 -0
  10. package/dist/agents/templates.d.ts.map +1 -1
  11. package/dist/agents/templates.js +32 -0
  12. package/dist/agents/templates.js.map +1 -1
  13. package/dist/agents/wiring.d.ts.map +1 -1
  14. package/dist/agents/wiring.js +14 -1
  15. package/dist/agents/wiring.js.map +1 -1
  16. package/dist/cli.js +21 -11
  17. package/dist/cli.js.map +1 -1
  18. package/dist/db/migrations.d.ts.map +1 -1
  19. package/dist/db/migrations.js +39 -0
  20. package/dist/db/migrations.js.map +1 -1
  21. package/dist/db/store.d.ts +19 -1
  22. package/dist/db/store.d.ts.map +1 -1
  23. package/dist/db/store.js +64 -9
  24. package/dist/db/store.js.map +1 -1
  25. package/dist/hub.d.ts +38 -1
  26. package/dist/hub.d.ts.map +1 -1
  27. package/dist/hub.js +49 -4
  28. package/dist/hub.js.map +1 -1
  29. package/dist/hub.tgz +0 -0
  30. package/dist/mcp/server.d.ts +1 -0
  31. package/dist/mcp/server.d.ts.map +1 -1
  32. package/dist/mcp/server.js +9 -1
  33. package/dist/mcp/server.js.map +1 -1
  34. package/dist/paths.d.ts +9 -0
  35. package/dist/paths.d.ts.map +1 -1
  36. package/dist/paths.js +9 -0
  37. package/dist/paths.js.map +1 -1
  38. package/dist/protocol/domain.d.ts +1 -0
  39. package/dist/protocol/domain.d.ts.map +1 -1
  40. package/dist/protocol/domain.js +10 -0
  41. package/dist/protocol/domain.js.map +1 -1
  42. package/dist/protocol/inject.d.ts +22 -2
  43. package/dist/protocol/inject.d.ts.map +1 -1
  44. package/dist/protocol/inject.js +24 -4
  45. package/dist/protocol/inject.js.map +1 -1
  46. package/dist/protocol/mcp-tools.d.ts +13 -0
  47. package/dist/protocol/mcp-tools.d.ts.map +1 -1
  48. package/dist/protocol/mcp-tools.js +15 -0
  49. package/dist/protocol/mcp-tools.js.map +1 -1
  50. package/dist/protocol/peer.d.ts +13 -1
  51. package/dist/protocol/peer.d.ts.map +1 -1
  52. package/dist/protocol/peer.js +45 -2
  53. package/dist/protocol/peer.js.map +1 -1
  54. package/dist/protocol/ws.d.ts +17 -0
  55. package/dist/protocol/ws.d.ts.map +1 -1
  56. package/dist/protocol/ws.js +21 -0
  57. package/dist/protocol/ws.js.map +1 -1
  58. package/dist/remote/deployer.d.ts.map +1 -1
  59. package/dist/remote/deployer.js +15 -2
  60. package/dist/remote/deployer.js.map +1 -1
  61. package/dist/remote/enroll.d.ts.map +1 -1
  62. package/dist/remote/enroll.js +25 -11
  63. package/dist/remote/enroll.js.map +1 -1
  64. package/dist/remote/join-script.d.ts.map +1 -1
  65. package/dist/remote/join-script.js +34 -2
  66. package/dist/remote/join-script.js.map +1 -1
  67. package/dist/remote/join.d.ts +2 -0
  68. package/dist/remote/join.d.ts.map +1 -1
  69. package/dist/remote/join.js +40 -1
  70. package/dist/remote/join.js.map +1 -1
  71. package/dist/remote/lan.d.ts +45 -22
  72. package/dist/remote/lan.d.ts.map +1 -1
  73. package/dist/remote/lan.js +95 -30
  74. package/dist/remote/lan.js.map +1 -1
  75. package/dist/remote/peer-serve.d.ts.map +1 -1
  76. package/dist/remote/peer-serve.js +9 -1
  77. package/dist/remote/peer-serve.js.map +1 -1
  78. package/dist/remote/registry.d.ts +1 -0
  79. package/dist/remote/registry.d.ts.map +1 -1
  80. package/dist/remote/registry.js.map +1 -1
  81. package/dist/server.d.ts.map +1 -1
  82. package/dist/server.js +21 -4
  83. package/dist/server.js.map +1 -1
  84. package/dist/session/manager.d.ts +32 -0
  85. package/dist/session/manager.d.ts.map +1 -1
  86. package/dist/session/manager.js +65 -7
  87. package/dist/session/manager.js.map +1 -1
  88. package/dist/session/pty.d.ts +48 -0
  89. package/dist/session/pty.d.ts.map +1 -1
  90. package/dist/session/pty.js +167 -1
  91. package/dist/session/pty.js.map +1 -1
  92. package/package.json +1 -1
  93. package/web/assets/index-CHlXyCCd.css +1 -0
  94. package/web/assets/index-DTl8am-O.js +111 -0
  95. package/web/index.html +2 -2
  96. package/web/assets/index-Bq_Y0JcC.js +0 -107
  97. package/web/assets/index-DQYDkOwJ.css +0 -1
@@ -31,6 +31,39 @@ const HEURISTIC_QUIET_MS = 400;
31
31
  * spinner, which is not silence.
32
32
  */
33
33
  const HOOK_FALLBACK_QUIET_MS = 2000;
34
+ /**
35
+ * How much is written into a PTY in one go, and how long the gap between one
36
+ * chunk and the next.
37
+ *
38
+ * A paste is one `write()` here but not on the far side: a pty's input buffer
39
+ * is small — 4KB on Linux, and ConPTY's is no more generous — and a writer
40
+ * that fills it faster than the program drains it loses the remainder with no
41
+ * error anywhere. An agent handed a long instruction therefore acts on the
42
+ * first few lines of it and never sees the rest, which is worse than failing.
43
+ *
44
+ * So anything past one chunk is fed in paced pieces. The gap only has to be
45
+ * long enough for the program to come back round to its read; it is not a
46
+ * throughput limit worth tuning, and at these sizes even a very long message
47
+ * is delivered in well under a second.
48
+ */
49
+ const WRITE_CHUNK = 1024;
50
+ const WRITE_GAP_MS = 8;
51
+ /**
52
+ * How long a pasted message is left to land before the Enter that sends it.
53
+ *
54
+ * The two cannot go in together. An agent TUI debounces a paste on purpose -
55
+ * so that pasting a block full of newlines does not submit half of it - and a
56
+ * CR arriving inside that window is taken as part of the pasted text rather
57
+ * than as a keypress. That is how a message could be delivered, appear in full
58
+ * in the recipient's composer, and never be sent.
59
+ *
60
+ * Bounded on both sides. Long enough to clear any debounce worth the name, and
61
+ * short enough that nobody watching the canvas sees a pause between the message
62
+ * appearing and going in. The write pacing above is 8ms because it only has to
63
+ * outlast a read() returning; this has to outlast a render, which is a
64
+ * different order of magnitude.
65
+ */
66
+ const SUBMIT_SETTLE_MS = 120;
34
67
  /**
35
68
  * One PTY plus a headless xterm that mirrors it.
36
69
  *
@@ -63,6 +96,11 @@ export class PtySession extends EventEmitter {
63
96
  /** argv[0], to recognise the one title the program did not choose. */
64
97
  launchedFile = '';
65
98
  disposed = false;
99
+ /** Input still to be fed in, when a write was too big for one go. */
100
+ writeQueue = [];
101
+ writeTimer = null;
102
+ /** Pending Enter for a message already pasted in. See inject(). */
103
+ submitTimer = null;
66
104
  constructor(id, cols, rows, readyHint, statusMode) {
67
105
  super();
68
106
  this.id = id;
@@ -209,10 +247,109 @@ export class PtySession extends EventEmitter {
209
247
  this._status = s;
210
248
  this.emit('status', s);
211
249
  }
250
+ /**
251
+ * Feed input to the program.
252
+ *
253
+ * Keystrokes take the direct path — they are one or two bytes and must not
254
+ * acquire latency — while anything larger is queued and paced. The queue is
255
+ * shared so ordering holds: a keystroke that arrives while a paste is still
256
+ * draining goes behind it, exactly as it would have on a real terminal.
257
+ */
212
258
  write(data) {
213
259
  if (!this.proc)
214
260
  throw new Error(`session ${this.id} is not running`);
215
- this.proc.write(data);
261
+ if (data.length === 0)
262
+ return;
263
+ if (this.writeQueue.length === 0 && data.length <= WRITE_CHUNK) {
264
+ this.proc.write(data);
265
+ return;
266
+ }
267
+ this.writeQueue.push(...splitChunks(data, WRITE_CHUNK));
268
+ this.drainWrites();
269
+ }
270
+ /**
271
+ * Feed the program bytes that are not text.
272
+ *
273
+ * Mouse reports in the default encoding are what arrive here: a coordinate
274
+ * spelled `32 + n`, so past column 95 the report contains bytes above 0x7f
275
+ * and is not UTF-8 at all. `write` would hand node-pty a string, which it
276
+ * encodes as UTF-8 on the way to the pty - one byte in, two bytes out, and a
277
+ * program that prints the wreckage instead of scrolling. A Buffer travels
278
+ * the same path to the same socket and is written verbatim.
279
+ *
280
+ * These are single reports, a handful of bytes each, so there is nothing to
281
+ * chunk; the queue is still respected so a report cannot overtake a paste
282
+ * that is still draining.
283
+ */
284
+ writeBytes(data) {
285
+ if (!this.proc)
286
+ throw new Error(`session ${this.id} is not running`);
287
+ if (data.length === 0)
288
+ return;
289
+ if (this.writeQueue.length === 0) {
290
+ this.proc.write(data);
291
+ return;
292
+ }
293
+ this.writeQueue.push(data);
294
+ this.drainWrites();
295
+ }
296
+ /**
297
+ * Paste a message in, then send it.
298
+ *
299
+ * Two writes, never one. See SUBMIT_SETTLE_MS for why, and `INJECT_SUBMIT`
300
+ * for what it cost when this was a single write with a CR on the end.
301
+ *
302
+ * The wait starts once the paste is actually out - a long message is fed in
303
+ * paced chunks, and a settle measured from the first of them is no settle at
304
+ * all. A second message arriving mid-wait replaces the pending Enter rather
305
+ * than adding one: two of them would submit an empty prompt.
306
+ */
307
+ inject(paste, submit) {
308
+ this.write(paste);
309
+ if (this.submitTimer)
310
+ clearTimeout(this.submitTimer);
311
+ const tick = () => {
312
+ this.submitTimer = null;
313
+ if (this.disposed || !this.proc)
314
+ return;
315
+ if (this.writeQueue.length > 0)
316
+ return arm();
317
+ try {
318
+ this.write(submit);
319
+ }
320
+ catch {
321
+ // It exited between the paste and the Enter. The message log already
322
+ // records the delivery; there is nothing left to submit it to.
323
+ }
324
+ };
325
+ const arm = () => {
326
+ this.submitTimer = setTimeout(tick, SUBMIT_SETTLE_MS);
327
+ this.submitTimer.unref?.();
328
+ };
329
+ arm();
330
+ }
331
+ /** One chunk per tick until the queue is empty, the process dies, or we do. */
332
+ drainWrites() {
333
+ if (this.writeTimer)
334
+ return;
335
+ const next = () => {
336
+ this.writeTimer = null;
337
+ const chunk = this.writeQueue.shift();
338
+ if (chunk === undefined)
339
+ return;
340
+ if (!this.proc || this.disposed) {
341
+ // Nothing left to write into. Drop the rest rather than throwing from
342
+ // a timer, where there is no caller to tell.
343
+ this.writeQueue.length = 0;
344
+ return;
345
+ }
346
+ this.proc.write(chunk);
347
+ if (this.writeQueue.length > 0) {
348
+ this.writeTimer = setTimeout(next, WRITE_GAP_MS);
349
+ this.writeTimer.unref?.();
350
+ }
351
+ };
352
+ next();
216
353
  }
217
354
  resize(cols, rows) {
218
355
  if (cols < 1 || rows < 1)
@@ -280,6 +417,15 @@ export class PtySession extends EventEmitter {
280
417
  }
281
418
  kill() {
282
419
  this.clearIdleTimer();
420
+ // Whatever is left of a paste has nowhere to go once the process is gone,
421
+ // and neither does the Enter that would have sent it.
422
+ if (this.writeTimer)
423
+ clearTimeout(this.writeTimer);
424
+ this.writeTimer = null;
425
+ if (this.submitTimer)
426
+ clearTimeout(this.submitTimer);
427
+ this.submitTimer = null;
428
+ this.writeQueue.length = 0;
283
429
  if (!this.proc)
284
430
  return;
285
431
  try {
@@ -297,4 +443,24 @@ export class PtySession extends EventEmitter {
297
443
  this.removeAllListeners();
298
444
  }
299
445
  }
446
+ /**
447
+ * Split text into pieces of at most `size` UTF-16 units, never between the two
448
+ * halves of a surrogate pair — a lone half would reach the program as a
449
+ * replacement character and corrupt whatever emoji or CJK text it came from.
450
+ */
451
+ export function splitChunks(text, size) {
452
+ const out = [];
453
+ let i = 0;
454
+ while (i < text.length) {
455
+ let end = Math.min(i + size, text.length);
456
+ const code = text.charCodeAt(end - 1);
457
+ // A high surrogate as the last unit means its pair starts here; keep both
458
+ // together by leaving it for the next chunk.
459
+ if (end < text.length && code >= 0xd800 && code <= 0xdbff)
460
+ end -= 1;
461
+ out.push(text.slice(i, end));
462
+ i = end;
463
+ }
464
+ return out;
465
+ }
300
466
  //# sourceMappingURL=pty.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pty.js","sourceRoot":"","sources":["../../src/session/pty.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pty.js","sourceRoot":"","sources":["../../src/session/pty.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kdonev/termscape",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "Run a crew of AI coding agents on one infinite canvas, and let them talk to each other.",
5
5
  "license": "MIT",
6
6
  "author": "kdonev",
@@ -0,0 +1 @@
1
+ .xterm{cursor:text;-webkit-user-select:none;user-select:none;position:relative}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{z-index:5;position:absolute;top:0}.xterm .xterm-helper-textarea{opacity:0;z-index:-5;white-space:nowrap;resize:none;border:0;width:0;height:0;margin:0;padding:0;position:absolute;top:0;left:-9999em;overflow:hidden}.xterm .composition-view{color:#fff;white-space:nowrap;z-index:1;background:#000;display:none;position:absolute}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{cursor:default;background-color:#000;position:absolute;inset:0;overflow-y:scroll}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;top:0;left:0}.xterm .xterm-scroll-area{visibility:hidden}.xterm-char-measure-element{visibility:hidden;line-height:normal;display:inline-block;position:absolute;top:0;left:-9999em}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{z-index:10;color:#0000;pointer-events:none;position:absolute;inset:0}.xterm .xterm-accessibility-tree:not(.debug) ::selection{color:#0000}.xterm .xterm-accessibility-tree{-webkit-user-select:text;user-select:text;white-space:pre}.xterm .live-region{width:1px;height:1px;position:absolute;left:-9999px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{-webkit-text-decoration:underline double;text-decoration:underline double}.xterm-underline-3{-webkit-text-decoration:underline wavy;text-decoration:underline wavy}.xterm-underline-4{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.xterm-underline-5{-webkit-text-decoration:underline dashed;text-decoration:underline dashed}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:underline overline}.xterm-overline.xterm-underline-2{-webkit-text-decoration:overline double underline;text-decoration:overline double underline}.xterm-overline.xterm-underline-3{-webkit-text-decoration:overline wavy underline;text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{-webkit-text-decoration:overline dotted underline;text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{-webkit-text-decoration:overline dashed underline;text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;pointer-events:none;position:absolute;top:0;right:0}.xterm-decoration-top{z-index:2;position:relative}:root{--bg:#0a0c10;--grid:#151a23;--panel:#12161e;--panel-2:#171c26;--border:#262d3b;--text:#d5dae2;--muted:#7c8596;--accent:#7c9cf5;--danger:#e06c75;--ok:#88c07a;--warn:#d8b271;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font:13px/1.45 ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;overflow:hidden}.app{flex-direction:column;height:100%;display:flex}.toolbar{background:var(--panel);border-bottom:1px solid var(--border);z-index:20;flex:none;align-items:center;gap:10px;padding:8px 12px;display:flex;position:relative}.brand{letter-spacing:.2px;align-items:baseline;gap:8px;font-weight:650;display:flex}.conn{font-size:11px;font-weight:400}.conn.on{color:var(--muted)}.conn.off{color:var(--warn)}.group{align-items:center;gap:6px;display:flex}.spacer{flex:1}.input{background:var(--panel-2);border:1px solid var(--border);color:var(--text);font:inherit;border-radius:6px;min-width:120px;padding:5px 8px}.input.wide{min-width:260px}.input:focus{border-color:var(--accent);outline:none}.btn{background:var(--panel-2);border:1px solid var(--border);color:var(--text);font:inherit;cursor:pointer;white-space:nowrap;border-radius:6px;padding:5px 9px}a.btn{text-decoration:none;display:inline-block}.btn:hover:not(:disabled){border-color:var(--accent)}.btn:disabled{opacity:.45;cursor:default}.btn.primary{background:#1e2a45;border-color:#33406a}.btn.danger:hover{border-color:var(--danger);color:var(--danger)}.btn.wide{min-width:56px}.canvas{cursor:default;background-color:var(--bg);background-image:linear-gradient(var(--grid) 1px, transparent 1px), linear-gradient(90deg, var(--grid) 1px, transparent 1px);touch-action:none;background-size:40px 40px;flex:1;position:relative;overflow:hidden}.canvas.panning{cursor:grabbing}.world{transform-origin:0 0;position:absolute;inset:0}.world.interacting{will-change:transform}.edges{pointer-events:none;position:absolute;overflow:visible}.ws-group{background:color-mix(in srgb, currentColor 6%, transparent);pointer-events:none;border:2px dashed;border-radius:14px;position:absolute;top:0;left:0}.ws-label{white-space:nowrap;align-items:baseline;gap:8px;font-size:12px;font-weight:600;display:flex;position:absolute;top:-22px;left:12px}.ws-path{color:var(--muted);font-size:11px;font-weight:400}.window{background:var(--panel);border:1px solid var(--border);border-radius:10px;flex-direction:column;display:flex;position:absolute;top:0;left:0;overflow:hidden;box-shadow:0 8px 28px #00000073}.window.selected{box-shadow:0 0 0 1px var(--accent), 0 12px 36px #0000008c}.window.stopped{opacity:.82}.window-bar{background:var(--panel-2);border-bottom:1px solid var(--border);cursor:grab;-webkit-user-select:none;user-select:none;flex:none;align-items:center;gap:8px;padding:6px 8px;display:flex}.window-bar:active{cursor:grabbing}.window-bar .dot{border-radius:50%;flex:none;width:8px;height:8px}.window-bar .addr{font-size:12px;font-weight:600}.window-bar .meta{color:var(--muted);font-size:11px}.window-bar .btn{padding:2px 7px;font-size:11px}.window-body{background:#0e1117;flex:1;min-height:0;position:relative}.term-host{position:absolute;inset:4px 6px;overflow:hidden}.term-scale{transform-origin:0 0;position:absolute;top:0;left:0}.term-scale .xterm{width:100%;height:100%}.term-scale .xterm-viewport{scrollbar-width:none}.term-scale .xterm-viewport::-webkit-scrollbar{width:0;height:0;display:none}.resize-handle{cursor:nwse-resize;background:linear-gradient(135deg, transparent 50%, var(--border) 50%);width:16px;height:16px;position:absolute;bottom:0;right:0}.msg-log{background:var(--panel);border:1px solid var(--border);border-radius:10px;width:420px;max-height:60vh;padding:8px;position:absolute;top:100%;right:12px;overflow-y:auto;box-shadow:0 12px 32px #00000080}.msg-empty{color:var(--muted);text-align:center;padding:10px}.msg{border-left:2px solid var(--ok);background:var(--panel-2);border-radius:7px;margin-bottom:6px;padding:7px 9px}.msg.failed{border-left-color:var(--danger)}.msg-head{align-items:baseline;gap:6px;font-size:11px;display:flex}.msg-head .from,.msg-head .to{font-weight:600}.msg-head .arrow,.msg-head .when{color:var(--muted)}.msg-head .when{margin-left:auto}.msg-body{white-space:pre-wrap;word-break:break-word;max-height:90px;margin-top:4px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:11px;overflow:hidden}.msg-error{color:var(--danger);margin-top:4px;font-size:11px}.empty-state{text-align:center;max-width:460px;color:var(--muted);pointer-events:none;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.empty-state h1{color:var(--text);margin:0 0 8px;font-size:20px}.empty-state p{margin:0 0 10px}.empty-state .hint{opacity:.7;font-size:11px}.empty-state .btn{pointer-events:auto}.errors{z-index:30;flex-direction:column;gap:6px;max-width:460px;display:flex;position:absolute;bottom:14px;left:14px}.error{border:1px solid var(--danger);color:#f0b6bb;background:#2a1a1e;border-radius:7px;align-items:flex-start;gap:8px;padding:7px 10px;font-size:12px;display:flex}.error-body{word-break:break-word;flex:1;min-width:0}.error-close{color:inherit;opacity:.7;font:inherit;cursor:pointer;background:0 0;border:0;flex:none;padding:0 2px;line-height:1}.error-close:hover{opacity:1}.panel{background:var(--panel);border-left:1px solid var(--border);z-index:40;flex-direction:column;width:420px;max-width:92vw;transition:transform .18s;display:flex;position:absolute;top:0;bottom:0;right:0;transform:translate(100%);box-shadow:-18px 0 40px #00000073}.panel.open{transform:translate(0)}.panel[aria-hidden=true]{visibility:hidden}.panel.open[aria-hidden=false]{visibility:visible}.panel-head{border-bottom:1px solid var(--border);flex:none;align-items:center;gap:8px;padding:9px 12px;display:flex}.panel-title{font-weight:650}.panel-body{flex:1;padding:8px;overflow-y:auto}.node{border-radius:6px;align-items:center;gap:7px;min-width:0;padding:5px 7px;display:flex}.node .dot{border-radius:50%;flex:none;width:8px;height:8px}.node-label{white-space:nowrap;text-overflow:ellipsis;flex:0 auto;font-weight:600;overflow:hidden}.node-sub{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;flex:0 auto;min-width:0;font-size:11px;overflow:hidden}.node.machine,.node.root{background:var(--panel-2);margin-top:6px}.node.template:hover{background:var(--panel-2)}.node.template .node-label{font-weight:500}.node.session{cursor:pointer}.node.session:hover{background:var(--panel-2)}.node.session.on{box-shadow:inset 0 0 0 1px var(--accent);background:#1b2540}.node .btn{padding:2px 7px;font-size:11px}.node-children{border-left:1px solid var(--border);margin-left:11px;padding-left:9px}.node-empty{color:var(--muted);padding:4px 8px;font-size:11px}.node-error{color:var(--danger);word-break:break-word;padding:2px 8px 4px 26px;font-size:11px}.node-log{color:var(--muted);word-break:break-word;padding:2px 8px 4px 26px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:10.5px;line-height:1.35}.twisty{color:var(--muted);cursor:pointer;font:inherit;background:0 0;border:0;flex:none;width:14px;padding:0}.twisty:hover{color:var(--text)}.add-machine{margin:10px 0 0 7px}.dialog-tabs{border-bottom:1px solid var(--border);align-items:center;gap:4px;padding:0 16px;display:flex}.dialog-tabs .tab{font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;flex:1;padding:5px 8px;font-size:11px}.dialog-tabs .tab:hover{color:var(--text)}.dialog-tabs .tab.on{color:var(--text);background:var(--panel-2);border-color:var(--border)}.join-url{background:var(--panel-2);border:1px solid var(--border);border-radius:7px;align-items:center;gap:6px;padding:7px 8px;display:flex}.join-url code{white-space:nowrap;min-width:0;color:var(--accent);flex:1;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11.5px;overflow-x:auto}.dialog{color:var(--text);font:inherit;background:0 0;border:0;width:100%;max-width:min(560px,94vw);max-height:88vh;padding:0}.dialog::backdrop{-webkit-backdrop-filter:blur(1.5px);backdrop-filter:blur(1.5px);background:#05070b9e}.dialog-card{background:var(--panel);border:1px solid var(--border);border-radius:12px;flex-direction:column;max-height:88vh;display:flex;overflow:hidden;box-shadow:0 24px 60px #0000008c}.dialog-head{border-bottom:1px solid var(--border);flex:none;align-items:center;gap:8px;padding:12px 12px 12px 16px;display:flex}.dialog-title{margin:0;font-size:14px;font-weight:650}.dialog-body{flex-direction:column;gap:14px;padding:16px;display:flex;overflow-y:auto}.dialog-field{flex-direction:column;gap:5px;min-width:0;display:flex}.dialog-label{color:var(--muted);font-size:11px}.dialog-field .input{width:100%;min-width:0}.dialog-field .input.tiny{max-width:72px}.dialog-hint{color:var(--muted);font-size:11px;line-height:1.45}.dialog-field .input:disabled{opacity:.5}.dialog-row{align-items:flex-start;gap:10px;display:flex}.dialog-row .dialog-field{flex:1}.dialog-row .dialog-field:last-child{flex:none}.dialog-note{color:var(--muted);margin:0;font-size:11.5px;line-height:1.5}.dialog-note code{color:var(--text);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.dialog-error{border:1px solid var(--danger);color:var(--danger);background:#e06c7517;border-radius:7px;margin:0;padding:8px 10px;font-size:11.5px;line-height:1.45}.dialog-actions{justify-content:flex-end;gap:8px;padding-top:2px;display:flex}.btn.danger-solid{border-color:var(--danger);color:var(--danger);background:#e06c7524}.btn.danger-solid:hover:not(:disabled){background:#e06c7538}.node-agents{flex-wrap:wrap;gap:4px;padding:2px 8px 6px 26px;display:flex}.agent-chip{border:1px solid var(--border);background:var(--panel-2);color:var(--text);white-space:nowrap;border-radius:10px;align-items:baseline;gap:4px;padding:1px 6px;font-size:10.5px;display:inline-flex}.agent-chip em{color:var(--muted);font-size:10px;font-style:normal}.agent-chip.off{color:var(--muted);opacity:.65;text-decoration:line-through}.agent-chip.unknown{color:var(--muted);opacity:.65}.model-list{background:var(--panel-2);border:1px solid var(--border);border-radius:7px;flex-wrap:wrap;gap:4px;max-height:132px;padding:7px 8px;display:flex;overflow-y:auto}.model-list code{color:var(--accent);white-space:nowrap;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:10.5px}.link{font:inherit;color:var(--accent);cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.node-tag{border:1px solid var(--border);color:var(--muted);white-space:nowrap;border-radius:9px;flex:none;padding:0 5px;font-size:10px}.dialog-field textarea.input{font:inherit;resize:vertical;min-height:56px}