@kdonev/termscape 0.1.5 → 0.1.7

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 (86) hide show
  1. package/README.md +17 -7
  2. package/dist/agents/profiles.d.ts +23 -0
  3. package/dist/agents/profiles.d.ts.map +1 -1
  4. package/dist/agents/profiles.js +48 -5
  5. package/dist/agents/profiles.js.map +1 -1
  6. package/dist/agents/templates.d.ts +18 -0
  7. package/dist/agents/templates.d.ts.map +1 -1
  8. package/dist/agents/templates.js +19 -0
  9. package/dist/agents/templates.js.map +1 -1
  10. package/dist/agents/visibility.d.ts +22 -0
  11. package/dist/agents/visibility.d.ts.map +1 -0
  12. package/dist/agents/visibility.js +20 -0
  13. package/dist/agents/visibility.js.map +1 -0
  14. package/dist/agents/wiring.d.ts +1 -1
  15. package/dist/agents/wiring.d.ts.map +1 -1
  16. package/dist/agents/wiring.js +12 -3
  17. package/dist/agents/wiring.js.map +1 -1
  18. package/dist/cli-args.d.ts +4 -0
  19. package/dist/cli-args.d.ts.map +1 -1
  20. package/dist/cli-args.js +2 -0
  21. package/dist/cli-args.js.map +1 -1
  22. package/dist/cli.js +63 -23
  23. package/dist/cli.js.map +1 -1
  24. package/dist/db/migrations.d.ts.map +1 -1
  25. package/dist/db/migrations.js +29 -0
  26. package/dist/db/migrations.js.map +1 -1
  27. package/dist/db/store.d.ts +8 -0
  28. package/dist/db/store.d.ts.map +1 -1
  29. package/dist/db/store.js +25 -4
  30. package/dist/db/store.js.map +1 -1
  31. package/dist/hub.d.ts +129 -26
  32. package/dist/hub.d.ts.map +1 -1
  33. package/dist/hub.js +331 -51
  34. package/dist/hub.js.map +1 -1
  35. package/dist/hub.tgz +0 -0
  36. package/dist/mcp/server.d.ts.map +1 -1
  37. package/dist/mcp/server.js +6 -1
  38. package/dist/mcp/server.js.map +1 -1
  39. package/dist/protocol/domain.d.ts +1 -0
  40. package/dist/protocol/domain.d.ts.map +1 -1
  41. package/dist/protocol/domain.js +12 -0
  42. package/dist/protocol/domain.js.map +1 -1
  43. package/dist/protocol/mcp-tools.js +1 -1
  44. package/dist/protocol/mcp-tools.js.map +1 -1
  45. package/dist/protocol/peer.d.ts +58 -1
  46. package/dist/protocol/peer.d.ts.map +1 -1
  47. package/dist/protocol/peer.js +72 -1
  48. package/dist/protocol/peer.js.map +1 -1
  49. package/dist/protocol/ws.d.ts +6 -0
  50. package/dist/protocol/ws.d.ts.map +1 -1
  51. package/dist/protocol/ws.js +2 -0
  52. package/dist/protocol/ws.js.map +1 -1
  53. package/dist/remote/peer-serve.d.ts.map +1 -1
  54. package/dist/remote/peer-serve.js +16 -3
  55. package/dist/remote/peer-serve.js.map +1 -1
  56. package/dist/remote/registry.d.ts +8 -0
  57. package/dist/remote/registry.d.ts.map +1 -1
  58. package/dist/remote/registry.js +15 -0
  59. package/dist/remote/registry.js.map +1 -1
  60. package/dist/server.d.ts.map +1 -1
  61. package/dist/server.js +13 -2
  62. package/dist/server.js.map +1 -1
  63. package/dist/session/manager.d.ts +22 -2
  64. package/dist/session/manager.d.ts.map +1 -1
  65. package/dist/session/manager.js +52 -9
  66. package/dist/session/manager.js.map +1 -1
  67. package/dist/session/pty.d.ts +30 -1
  68. package/dist/session/pty.d.ts.map +1 -1
  69. package/dist/session/pty.js +77 -1
  70. package/dist/session/pty.js.map +1 -1
  71. package/dist/window/app-window.d.ts +2 -0
  72. package/dist/window/app-window.d.ts.map +1 -0
  73. package/dist/window/app-window.js +137 -0
  74. package/dist/window/app-window.js.map +1 -0
  75. package/dist/window/open-window.d.ts +38 -0
  76. package/dist/window/open-window.d.ts.map +1 -0
  77. package/dist/window/open-window.js +76 -0
  78. package/dist/window/open-window.js.map +1 -0
  79. package/package.json +5 -2
  80. package/web/assets/index-gfbbNQK4.css +1 -0
  81. package/web/assets/index-i7fXLKF0.js +111 -0
  82. package/web/icon.png +0 -0
  83. package/web/icon.svg +22 -0
  84. package/web/index.html +4 -2
  85. package/web/assets/index-Z03Ta4g3.js +0 -111
  86. package/web/assets/index-u_uCiaPD.css +0 -1
@@ -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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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=app-window.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-window.d.ts","sourceRoot":"","sources":["../../src/window/app-window.ts"],"names":[],"mappings":""}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * The canvas in a native window: the process open-window.ts starts.
3
+ *
4
+ * Run as `node app-window.js <url>`. It shows the hub's own web UI in the OS
5
+ * webview - WebView2 on Windows, WKWebView on macOS, WebKitGTK on Linux - and
6
+ * exits 0 when the user closes it, which the hub takes as "stop". It exits
7
+ * WINDOW_UNAVAILABLE when there is no webview to show, which the hub takes as
8
+ * "open the browser instead".
9
+ */
10
+ import { mkdirSync } from 'node:fs';
11
+ import { join } from 'node:path';
12
+ import { openInBrowser } from '../browser.js';
13
+ import { paths } from '../paths.js';
14
+ import { WINDOW_UNAVAILABLE } from './open-window.js';
15
+ const PACKAGE = '@webviewjs/webview';
16
+ /** Say why there is no window, and let the hub open the browser instead. */
17
+ function unavailable(what, err) {
18
+ console.error(`[app] ${what}: ${err instanceof Error ? err.message : err}`);
19
+ if (process.platform === 'linux') {
20
+ console.error(' the window needs WebKitGTK 4.1 and libxdo, e.g.');
21
+ console.error(' sudo apt install libwebkit2gtk-4.1-0 libxdo3');
22
+ }
23
+ return process.exit(WINDOW_UNAVAILABLE);
24
+ }
25
+ async function loadWebview() {
26
+ try {
27
+ // A variable specifier keeps TypeScript from resolving the optional package.
28
+ const mod = (await import(PACKAGE));
29
+ return mod.Application ? mod : mod.default;
30
+ }
31
+ catch (err) {
32
+ return unavailable(`cannot load ${PACKAGE}`, err);
33
+ }
34
+ }
35
+ /**
36
+ * Put the canvas's icon on the window, and with it the taskbar.
37
+ *
38
+ * Asked of the hub rather than read off disk: the UI it serves is where the
39
+ * icon lives, and that is a different directory in the repo and in the
40
+ * published package. A window without its icon is still the canvas, so any
41
+ * failure here leaves the default one.
42
+ */
43
+ async function setIcon(window, origin) {
44
+ try {
45
+ const res = await fetch(new URL('/icon.png', origin));
46
+ if (!res.ok)
47
+ return;
48
+ window.setWindowIcon(new Uint8Array(await res.arrayBuffer()));
49
+ }
50
+ catch {
51
+ // No icon is not worth a word.
52
+ }
53
+ }
54
+ async function main() {
55
+ const url = process.argv[2];
56
+ if (!url) {
57
+ console.error('usage: app-window <url>');
58
+ process.exit(2);
59
+ }
60
+ const origin = new URL(url).origin;
61
+ /*
62
+ * A window onto a canvas that no longer exists should not stay open, so
63
+ * this watches the hub that started it. By polling its pid rather than by
64
+ * holding an IPC channel: with one open on Windows, the webview never gets
65
+ * to handle its own close button.
66
+ */
67
+ const hubPid = process.ppid;
68
+ setInterval(() => {
69
+ try {
70
+ process.kill(hubPid, 0);
71
+ }
72
+ catch {
73
+ process.exit(0);
74
+ }
75
+ }, 1000).unref();
76
+ /*
77
+ * WebView2 keeps its profile beside the executable by default, and for a
78
+ * node.exe installed under Program Files that is not writable: creating the
79
+ * webview fails with "Access is denied". The environment variable is
80
+ * WebView2's own override. The library's WebContext `dataDirectory` would be
81
+ * the obvious way to say this, but with it the app never reaches ready.
82
+ */
83
+ if (process.platform === 'win32' && !process.env.WEBVIEW2_USER_DATA_FOLDER) {
84
+ const dataDirectory = join(paths.home(), 'webview');
85
+ mkdirSync(dataDirectory, { recursive: true });
86
+ process.env.WEBVIEW2_USER_DATA_FOLDER = dataDirectory;
87
+ }
88
+ const { Application } = await loadWebview();
89
+ const app = new Application();
90
+ const close = () => {
91
+ app.exit();
92
+ process.exit(0);
93
+ };
94
+ app.on('window-close-requested', close);
95
+ app.on('application-close-requested', close);
96
+ try {
97
+ const window = app.createBrowserWindow({ title: 'Termscape', width: 1400, height: 900 });
98
+ window.createWebview({
99
+ url,
100
+ enableDevtools: true,
101
+ clipboard: true,
102
+ // Left on, though the canvas does its own zooming. On Windows wry ties
103
+ // WebView2's pinch zoom to this same switch, and with pinch off Chromium
104
+ // never turns a touchpad pinch into the ctrl+wheel stream the canvas
105
+ // zooms on. The page zoom it would otherwise do is not a risk: the
106
+ // canvas preventDefaults every ctrl+wheel it takes, as in a browser tab.
107
+ hotkeysZoom: true,
108
+ // The window shows the canvas and nothing else. Links out of it - the
109
+ // bug report, anything opened with target="_blank" - go to the browser.
110
+ navigationHandler: (target) => {
111
+ let parsed;
112
+ try {
113
+ parsed = new URL(target);
114
+ }
115
+ catch {
116
+ return false;
117
+ }
118
+ if (parsed.origin === origin || parsed.protocol === 'about:')
119
+ return true;
120
+ if (parsed.protocol === 'http:' || parsed.protocol === 'https:')
121
+ openInBrowser(target);
122
+ return false;
123
+ },
124
+ });
125
+ void setIcon(window, origin);
126
+ }
127
+ catch (err) {
128
+ // Nothing has been shown yet, so a tab is still a fair substitute.
129
+ unavailable('cannot open a webview', err);
130
+ }
131
+ await app.whenReady();
132
+ }
133
+ main().catch((err) => {
134
+ console.error('[app]', err);
135
+ process.exit(1);
136
+ });
137
+ //# sourceMappingURL=app-window.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-window.js","sourceRoot":"","sources":["../../src/window/app-window.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Exit code the window process uses to say "there is no webview to open",
3
+ * as opposed to a window that opened and then failed. The first is a reason to
4
+ * fall back to the browser; the second is not, because the user already saw
5
+ * one window come and go and a browser tab appearing after it would be a
6
+ * surprise rather than a rescue.
7
+ */
8
+ export declare const WINDOW_UNAVAILABLE = 3;
9
+ export type WindowOutcome = 'closed' | 'unavailable' | 'crashed';
10
+ /** What a window process's exit means for the hub that started it. */
11
+ export declare function windowOutcome(code: number | null, signal: NodeJS.Signals | null): WindowOutcome;
12
+ export interface WindowHandlers {
13
+ /** The user closed the window. */
14
+ onClosed: () => void;
15
+ /** No native webview could be loaded here; nothing was shown. */
16
+ onUnavailable: () => void;
17
+ /** The window process died some other way. */
18
+ onCrashed: (why: string) => void;
19
+ }
20
+ /**
21
+ * The Node flags the window inherits: whatever loader the hub itself runs
22
+ * under, which is how a .ts window loads under tsx. An inspector flag is left
23
+ * behind, since two processes cannot both take its port.
24
+ */
25
+ export declare function childExecArgv(execArgv?: readonly string[]): string[];
26
+ /**
27
+ * Open the canvas in a native window of its own.
28
+ *
29
+ * The window is a separate Node process running app-window.js, not a webview
30
+ * inside the hub. A native crash in the webview then costs a window rather than
31
+ * every agent on the canvas, macOS gets a process whose main thread belongs to
32
+ * its UI, and a hub that never opens a window never loads the native module.
33
+ *
34
+ * The child is not detached, and watches this process's pid so that it closes
35
+ * when the hub goes away.
36
+ */
37
+ export declare function openAppWindow(url: string, handlers: WindowHandlers, script?: string): void;
38
+ //# sourceMappingURL=open-window.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open-window.d.ts","sourceRoot":"","sources":["../../src/window/open-window.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAEpC,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,aAAa,GAAG,SAAS,CAAC;AAEjE,sEAAsE;AACtE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,GAAG,aAAa,CAI/F;AAED,MAAM,WAAW,cAAc;IAC7B,kCAAkC;IAClC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,iEAAiE;IACjE,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,8CAA8C;IAC9C,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AAcD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,QAAQ,GAAE,SAAS,MAAM,EAAqB,GAAG,MAAM,EAAE,CAEtF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,cAAc,EACxB,MAAM,GAAE,MAAuB,GAC9B,IAAI,CA0BN"}
@@ -0,0 +1,76 @@
1
+ import { spawn } from 'node:child_process';
2
+ import { fileURLToPath } from 'node:url';
3
+ /**
4
+ * Exit code the window process uses to say "there is no webview to open",
5
+ * as opposed to a window that opened and then failed. The first is a reason to
6
+ * fall back to the browser; the second is not, because the user already saw
7
+ * one window come and go and a browser tab appearing after it would be a
8
+ * surprise rather than a rescue.
9
+ */
10
+ export const WINDOW_UNAVAILABLE = 3;
11
+ /** What a window process's exit means for the hub that started it. */
12
+ export function windowOutcome(code, signal) {
13
+ if (signal === null && code === 0)
14
+ return 'closed';
15
+ if (signal === null && code === WINDOW_UNAVAILABLE)
16
+ return 'unavailable';
17
+ return 'crashed';
18
+ }
19
+ /**
20
+ * The window's entry point, beside this module.
21
+ *
22
+ * Built, that is dist/window/app-window.js. Under `npm run dev` this module is
23
+ * src/window/open-window.ts run through tsx, and there is no .js beside it -
24
+ * so the extension is taken from this file rather than assumed.
25
+ */
26
+ function windowScript() {
27
+ const ext = import.meta.url.endsWith('.ts') ? '.ts' : '.js';
28
+ return fileURLToPath(new URL(`./app-window${ext}`, import.meta.url));
29
+ }
30
+ /**
31
+ * The Node flags the window inherits: whatever loader the hub itself runs
32
+ * under, which is how a .ts window loads under tsx. An inspector flag is left
33
+ * behind, since two processes cannot both take its port.
34
+ */
35
+ export function childExecArgv(execArgv = process.execArgv) {
36
+ return execArgv.filter((arg) => !/^--inspect(-brk|-wait)?(=|$)/.test(arg));
37
+ }
38
+ /**
39
+ * Open the canvas in a native window of its own.
40
+ *
41
+ * The window is a separate Node process running app-window.js, not a webview
42
+ * inside the hub. A native crash in the webview then costs a window rather than
43
+ * every agent on the canvas, macOS gets a process whose main thread belongs to
44
+ * its UI, and a hub that never opens a window never loads the native module.
45
+ *
46
+ * The child is not detached, and watches this process's pid so that it closes
47
+ * when the hub goes away.
48
+ */
49
+ export function openAppWindow(url, handlers, script = windowScript()) {
50
+ let settled = false;
51
+ const settle = (fn) => {
52
+ if (settled)
53
+ return;
54
+ settled = true;
55
+ fn();
56
+ };
57
+ const child = spawn(process.execPath, [...childExecArgv(), script, url], {
58
+ stdio: ['ignore', 'inherit', 'inherit'],
59
+ });
60
+ // Spawning node itself failing is as good as having no webview: the browser
61
+ // can still show the canvas.
62
+ child.on('error', () => settle(handlers.onUnavailable));
63
+ child.on('exit', (code, signal) => {
64
+ settle(() => {
65
+ switch (windowOutcome(code, signal)) {
66
+ case 'closed':
67
+ return handlers.onClosed();
68
+ case 'unavailable':
69
+ return handlers.onUnavailable();
70
+ case 'crashed':
71
+ return handlers.onCrashed(signal ?? `exit code ${code}`);
72
+ }
73
+ });
74
+ });
75
+ }
76
+ //# sourceMappingURL=open-window.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open-window.js","sourceRoot":"","sources":["../../src/window/open-window.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAIpC,sEAAsE;AACtE,MAAM,UAAU,aAAa,CAAC,IAAmB,EAAE,MAA6B;IAC9E,IAAI,MAAM,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IACnD,IAAI,MAAM,KAAK,IAAI,IAAI,IAAI,KAAK,kBAAkB;QAAE,OAAO,aAAa,CAAC;IACzE,OAAO,SAAS,CAAC;AACnB,CAAC;AAWD;;;;;;GAMG;AACH,SAAS,YAAY;IACnB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IAC5D,OAAO,aAAa,CAAC,IAAI,GAAG,CAAC,eAAe,GAAG,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACvE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,WAA8B,OAAO,CAAC,QAAQ;IAC1E,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,8BAA8B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAC3B,GAAW,EACX,QAAwB,EACxB,SAAiB,YAAY,EAAE;IAE/B,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,MAAM,MAAM,GAAG,CAAC,EAAc,EAAQ,EAAE;QACtC,IAAI,OAAO;YAAE,OAAO;QACpB,OAAO,GAAG,IAAI,CAAC;QACf,EAAE,EAAE,CAAC;IACP,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,aAAa,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE;QACvE,KAAK,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC;KACxC,CAAC,CAAC;IACH,4EAA4E;IAC5E,6BAA6B;IAC7B,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;IACxD,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;QAChC,MAAM,CAAC,GAAG,EAAE;YACV,QAAQ,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;gBACpC,KAAK,QAAQ;oBACX,OAAO,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBAC7B,KAAK,aAAa;oBAChB,OAAO,QAAQ,CAAC,aAAa,EAAE,CAAC;gBAClC,KAAK,SAAS;oBACZ,OAAO,QAAQ,CAAC,SAAS,CAAC,MAAM,IAAI,aAAa,IAAI,EAAE,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kdonev/termscape",
3
- "version": "0.1.5",
3
+ "version": "0.1.7",
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",
@@ -28,7 +28,7 @@
28
28
  "termscape": "./dist/cli.js"
29
29
  },
30
30
  "engines": {
31
- "node": ">=22"
31
+ "node": ">=24"
32
32
  },
33
33
  "dependencies": {
34
34
  "@fastify/static": "^10.1.3",
@@ -43,6 +43,9 @@
43
43
  "ssh2": "^1.16.0",
44
44
  "zod": "^4.5.4"
45
45
  },
46
+ "optionalDependencies": {
47
+ "@webviewjs/webview": "0.4.5"
48
+ },
46
49
  "scripts": {
47
50
  "start": "node dist/cli.js"
48
51
  }
@@ -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}.btn.on{border-color:var(--accent);color:var(--accent);background:#1e2a45}.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;pointer-events:auto;cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none;align-items:baseline;gap:8px;font-size:12px;font-weight:600;display:flex;position:absolute;top:-22px;left:12px}.ws-label.dragging{cursor:grabbing}.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}.share-app{flex-direction:column;height:100%;display:flex}.share-header{background:var(--panel);border-bottom:1px solid var(--border);flex:none;align-items:center;gap:8px;padding:8px 12px;display:flex}.share-header .dot{border-radius:50%;flex:none;width:8px;height:8px}.share-header .addr{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:600;overflow:hidden}.share-header .meta{color:var(--muted);flex:none;font-size:12px}.share-body{background:#0e1117;flex:1;min-height:0;position:relative}.share-stage{transform-origin:0 0;position:absolute;top:0;left:0}.share-stage .term-host{inset:0}.share-message{color:var(--muted);text-align:center;flex:1;justify-content:center;align-items:center;padding:16px;display:flex}.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}.note{color:#2b2b2b;border-radius:6px;flex-direction:column;display:flex;position:absolute;top:0;left:0;box-shadow:0 8px 24px #00000080}.note.selected{box-shadow:0 0 0 2px var(--accent), 0 10px 30px #0000008c}.note[data-color=yellow]{background:#f5e08c}.note[data-color=pink]{background:#f3b6c8}.note[data-color=green]{background:#b9e0a5}.note[data-color=blue]{background:#a9d3ec}.note-bar{cursor:grab;-webkit-user-select:none;user-select:none;flex:none;align-items:center;gap:6px;padding:4px 6px;display:flex}.note-bar:active{cursor:grabbing}.note-bar .btn{color:#2b2b2b;background:0 0;border:none;padding:0 4px;font-size:14px;line-height:1}.note-bar .btn:hover:not(:disabled){color:#b3261e}.note-swatches{gap:4px;display:flex}.note-swatch{cursor:pointer;border:1px solid #00000059;border-radius:50%;width:14px;height:14px;padding:0}.note-swatch[data-color=yellow]{background:#f5e08c}.note-swatch[data-color=pink]{background:#f3b6c8}.note-swatch[data-color=green]{background:#b9e0a5}.note-swatch[data-color=blue]{background:#a9d3ec}.note-swatch.active{border-color:#2b2b2b}.note-text{resize:none;color:#2b2b2b;min-height:0;font:inherit;background:0 0;border:none;outline:none;flex:1;padding:0 8px 8px}.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}