pinecall 0.3.1 → 0.4.0

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 (50) hide show
  1. package/dist/cli/config.d.ts.map +1 -1
  2. package/dist/cli/config.js +14 -6
  3. package/dist/cli/config.js.map +1 -1
  4. package/dist/cli/env.d.ts +18 -2
  5. package/dist/cli/env.d.ts.map +1 -1
  6. package/dist/cli/env.js +47 -8
  7. package/dist/cli/env.js.map +1 -1
  8. package/dist/cli/gateway.d.ts.map +1 -1
  9. package/dist/cli/gateway.js +9 -5
  10. package/dist/cli/gateway.js.map +1 -1
  11. package/dist/cli/index.d.ts.map +1 -1
  12. package/dist/cli/index.js +1 -4
  13. package/dist/cli/index.js.map +1 -1
  14. package/dist/cli/profiles.d.ts +33 -3
  15. package/dist/cli/profiles.d.ts.map +1 -1
  16. package/dist/cli/profiles.js +75 -9
  17. package/dist/cli/profiles.js.map +1 -1
  18. package/dist/cli/ui/console/assets/{index-DTMBzpRG.js → index-DhcpHPdk.js} +10 -10
  19. package/dist/cli/ui/console/assets/index-iylvEP0_.css +1 -0
  20. package/dist/cli/ui/console/index.html +2 -2
  21. package/dist/cli/ui/console/pinecall-logo.png +0 -0
  22. package/dist/cli/ui/console/pinecall-mark.png +0 -0
  23. package/dist/cli/world.d.ts.map +1 -1
  24. package/dist/cli/world.js +2 -1
  25. package/dist/cli/world.js.map +1 -1
  26. package/package.json +2 -2
  27. package/dist/cli/signup.d.ts +0 -25
  28. package/dist/cli/signup.d.ts.map +0 -1
  29. package/dist/cli/signup.js +0 -126
  30. package/dist/cli/signup.js.map +0 -1
  31. package/dist/cli/ui/admin/assets/index-BlHXSYVz.css +0 -1
  32. package/dist/cli/ui/admin/assets/index-BpdIOuyO.js +0 -58
  33. package/dist/cli/ui/admin/index.html +0 -20
  34. package/dist/cli/ui/browser.d.ts +0 -10
  35. package/dist/cli/ui/browser.d.ts.map +0 -1
  36. package/dist/cli/ui/browser.js +0 -30
  37. package/dist/cli/ui/browser.js.map +0 -1
  38. package/dist/cli/ui/console/assets/index-C7LdwphQ.css +0 -1
  39. package/dist/cli/ui/index.d.ts +0 -15
  40. package/dist/cli/ui/index.d.ts.map +0 -1
  41. package/dist/cli/ui/index.js +0 -117
  42. package/dist/cli/ui/index.js.map +0 -1
  43. package/dist/cli/ui/refused.d.ts +0 -8
  44. package/dist/cli/ui/refused.d.ts.map +0 -1
  45. package/dist/cli/ui/refused.js +0 -11
  46. package/dist/cli/ui/refused.js.map +0 -1
  47. package/dist/cli/ui/server.d.ts +0 -22
  48. package/dist/cli/ui/server.d.ts.map +0 -1
  49. package/dist/cli/ui/server.js +0 -211
  50. package/dist/cli/ui/server.js.map +0 -1
@@ -1,20 +0,0 @@
1
- <!doctype html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width, initial-scale=1" />
6
- <title>Pinecall admin</title>
7
- <link rel="icon" type="image/png" href="/logo-mark.png" />
8
- <link rel="preconnect" href="https://fonts.googleapis.com" />
9
- <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
10
- <link
11
- href="https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500&display=swap"
12
- rel="stylesheet"
13
- />
14
- <script type="module" crossorigin src="/admin/assets/index-BpdIOuyO.js"></script>
15
- <link rel="stylesheet" crossorigin href="/admin/assets/index-BlHXSYVz.css">
16
- </head>
17
- <body>
18
- <div id="root"></div>
19
- </body>
20
- </html>
@@ -1,10 +0,0 @@
1
- /** This machine's browser: whether it has one to speak of, and how a URL is handed to it. */
2
- /**
3
- * Why no page can open here, or null when one can. A talk page needs a microphone, and a
4
- * microphone is a browser's on a screen: over ssh there is no screen on this end, and a Linux
5
- * with no display has no browser to hand a URL to. Both are said before a token is minted.
6
- */
7
- export declare function headless(env?: NodeJS.ProcessEnv, platform?: string): string | null;
8
- /** Hand this URL to the browser and never wait for it: the URL is on screen either way. */
9
- export declare function openInBrowser(url: string, platform?: string): void;
10
- //# sourceMappingURL=browser.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../../src/cli/ui/browser.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAY7F;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,EAAE,QAAQ,GAAE,MAAyB,GAAG,MAAM,GAAG,IAAI,CAMjH;AAED,2FAA2F;AAC3F,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAyB,GAAG,IAAI,CAKpF"}
@@ -1,30 +0,0 @@
1
- /** This machine's browser: whether it has one to speak of, and how a URL is handed to it. */
2
- import { spawn } from "node:child_process";
3
- // One command per platform. Anything else is treated as a Linux with xdg-open, which is what a
4
- // BSD or a container with a desktop most likely has.
5
- const OPENERS = {
6
- darwin: "open",
7
- win32: "start",
8
- linux: "xdg-open",
9
- };
10
- /**
11
- * Why no page can open here, or null when one can. A talk page needs a microphone, and a
12
- * microphone is a browser's on a screen: over ssh there is no screen on this end, and a Linux
13
- * with no display has no browser to hand a URL to. Both are said before a token is minted.
14
- */
15
- export function headless(env = process.env, platform = process.platform) {
16
- if (env["SSH_CONNECTION"] !== undefined)
17
- return "this is an ssh session";
18
- if (platform === "linux" && env["DISPLAY"] === undefined && env["WAYLAND_DISPLAY"] === undefined) {
19
- return "no DISPLAY and no WAYLAND_DISPLAY";
20
- }
21
- return null;
22
- }
23
- /** Hand this URL to the browser and never wait for it: the URL is on screen either way. */
24
- export function openInBrowser(url, platform = process.platform) {
25
- const opener = OPENERS[platform] ?? OPENERS["linux"];
26
- const opened = spawn(opener, [url], { stdio: "ignore", detached: true, shell: platform === "win32" });
27
- opened.on("error", () => undefined);
28
- opened.unref();
29
- }
30
- //# sourceMappingURL=browser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../../src/cli/ui/browser.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAE7F,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,+FAA+F;AAC/F,qDAAqD;AACrD,MAAM,OAAO,GAA2B;IACtC,MAAM,EAAE,MAAM;IACd,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,UAAU;CAClB,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAG,GAAsB,OAAO,CAAC,GAAG,EAAE,QAAQ,GAAW,OAAO,CAAC,QAAQ;IAChG,IAAI,GAAG,CAAC,gBAAgB,CAAC,KAAK,SAAS;QAAE,OAAO,wBAAwB,CAAC;IACzE,IAAI,QAAQ,KAAK,OAAO,IAAI,GAAG,CAAC,SAAS,CAAC,KAAK,SAAS,IAAI,GAAG,CAAC,iBAAiB,CAAC,KAAK,SAAS,EAAE,CAAC;QACjG,OAAO,mCAAmC,CAAC;IAC7C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,QAAQ,GAAW,OAAO,CAAC,QAAQ;IAC5E,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,OAAO,CAAE,CAAC;IACtD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,KAAK,OAAO,EAAE,CAAC,CAAC;IACtG,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACpC,MAAM,CAAC,KAAK,EAAE,CAAC;AACjB,CAAC"}
@@ -1 +0,0 @@
1
- :root{--ink:#101014;--ink-2:#3c3a47;--ink-3:#6b6975;--ink-4:#8a8895;--ink-5:#9d9baa;--ink-6:#a3a1ad;--ink-7:#c0bdc9;--line:#eeedf2;--line-2:#f2f1f5;--line-3:#f7f6fa;--line-control:#e8e6ee;--line-field:#e4e2ea;--line-hover:#d6d3df;--line-hover-2:#cfccd8;--line-muted:#d8d4e4;--ground:#fff;--ground-side:#fbfafc;--ground-3:#f7f6fa;--ground-4:#f4f3f7;--ground-5:#f1f0f5;--ground-tint:#faf9ff;--accent:#5b3df5;--on-accent:#fff;--accent-hover:#4c2fe0;--accent-soft:#ede9fe;--accent-selected:#efeafe;--accent-2:#8b6bff;--accent-3:#c4b5fd;--accent-line:#cfc7fb;--accent-tint-line:#e6e0fd;--accent-ink:#6b5fd0;--accent-ring:0 0 0 3px #5b3df51f;--selection:#ddd6fe;--green:#15803d;--green-dot:#16a34a;--green-soft:#dcfce7;--amber:#a16207;--amber-dot:#f59e0b;--amber-soft:#fef3c7;--amber-tint:#fffdf5;--red:#b91c1c;--red-soft:#fee2e2;--red-line:#f3c8c8;--indigo:#4338ca;--indigo-soft:#e0e7ff;--pink:#be185d;--pink-soft:#fce7f3;--teal:#0f766e;--shadow-pop:0 16px 40px -16px #10101442, 0 2px 6px #1010140d;--shadow-card:0 1px 2px #1010140a;--shadow-raised:0 1px 2px #10101414;--shadow-talk:0 10px 24px -12px #5b3df5e6;--shadow-preview:0 8px 20px -14px #1010144d;--face:Inter, system-ui, -apple-system, sans-serif;--face-fixed:ui-monospace, SFMono-Regular, Menlo, monospace;--side:244px;--side-folded:62px;--head:54px}*{box-sizing:border-box}html,body,#root{margin:0;padding:0}body{background:var(--ground);color:var(--ink);font-family:var(--face);-webkit-font-smoothing:antialiased;font-feature-settings:"cv11", "ss01";font-size:14px;line-height:normal}a{color:var(--ink);text-decoration:none}a:hover{color:var(--accent)}input,select,button,textarea{font-family:inherit;font-size:inherit}input:focus,textarea:focus{outline:none}::placeholder{color:var(--ink-6)}::selection{background:var(--selection)}.ui-fixed{font-family:var(--face-fixed)}.ui-page{flex-direction:column;flex:1;gap:18px;max-width:1180px;min-height:0;padding:26px 22px 48px;display:flex;overflow:auto}.ui-page>*{flex:none}.ui-page-tight{gap:16px}.ui-page-1060{max-width:1060px}.ui-page-900{max-width:900px}.ui-page-760{max-width:760px}.ui-head{flex-wrap:wrap;align-items:flex-end;gap:14px;display:flex}.ui-head-words{min-width:0}.ui-head-actions{gap:8px;margin-left:auto;display:flex}.ui-title{letter-spacing:-.6px;margin:0 0 4px;font-size:23px;font-weight:650}.ui-lede{color:var(--ink-3);margin:0;font-size:13.5px}.ui-lede-long{line-height:1.6}.ui-back{color:var(--ink-4);font-size:12.5px}.ui-card{border:1px solid var(--line);background:var(--ground);border-radius:12px;overflow:hidden}.ui-card-pad{padding:14px 16px}.ui-card-head{border-bottom:1px solid var(--line-2);align-items:center;gap:10px;padding:13px 16px;display:flex}.ui-card-title{font-size:13.5px;font-weight:600}.ui-card-meta{color:var(--ink-4);font-size:12px}.ui-card-action{color:var(--accent);cursor:pointer;background:0 0;border:0;margin-left:auto;padding:0;font-size:12.5px;font-weight:500}.ui-card-action:hover{color:var(--accent-hover)}.ui-card-foot{color:var(--ink-4);align-items:center;gap:10px;padding:11px 16px;font-size:12.5px;display:flex}.ui-card-body{padding:14px 16px}.ui-card-list{padding:6px 8px 10px}.ui-note{color:var(--ink-4);font-size:12.5px;line-height:1.6}.ui-empty{color:var(--ink-4);padding:18px 16px;font-size:13px;line-height:1.6}.ui-refused{color:var(--red);font-size:12.5px;line-height:1.55}.ui-row{border-bottom:1px solid var(--line-3);color:var(--ink);align-items:center;gap:12px;padding:13px 16px;display:flex}.ui-row-link{cursor:pointer}.ui-row-link:hover{background:var(--ground-side);color:var(--ink)}.ui-row-main{flex:1;min-width:0}.ui-row-line{align-items:center;gap:7px;display:flex}.ui-row-name{font-size:13.5px;font-weight:550}.ui-row-sub{color:var(--ink-3);white-space:nowrap;text-overflow:ellipsis;font-size:12.5px;overflow:hidden}.ui-row-end{text-align:right;flex:none}.ui-row-end-1{color:var(--ink-4);font-size:12px}.ui-row-end-2{color:var(--ink-6);font-size:11.5px}.ui-item{color:var(--ink);border-radius:9px;align-items:center;gap:10px;padding:9px;display:flex}.ui-item:hover{background:var(--ground-side)}.ui-item-name{font-size:13px;font-weight:500}.ui-item-sub{color:var(--ink-4);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.ui-section-label{color:var(--ink-6);letter-spacing:.06em;text-transform:uppercase;padding:13px 15px 9px;font-size:11px;font-weight:600}.ui-section-label-ruled{border-top:1px solid var(--line);padding-top:10px}.ui-kv{align-items:baseline;gap:10px;display:flex}.ui-kv-key{width:104px;color:var(--ink-4);flex:none;font-size:12px}.ui-kv-value{min-width:0;color:var(--ink);word-break:break-word;flex:1;font-size:12.5px}.ui-stats{gap:12px;display:grid}.ui-stat{border:1px solid var(--line);background:var(--ground);border-radius:12px;min-width:0;padding:14px 16px}.ui-stat-label{color:var(--ink-4);margin-bottom:7px;font-size:12.5px}.ui-stat-value{letter-spacing:-.7px;font-size:22px;font-weight:600;line-height:1}.ui-stat-of{color:var(--ink-4);font-size:13px;font-weight:450}.ui-stat-big{padding:15px 16px}.ui-stat-big .ui-stat-label{margin-bottom:8px}.ui-stat-big .ui-stat-value{letter-spacing:-.8px;font-size:25px}.ui-stat-line{align-items:flex-end;gap:7px;display:flex}.ui-stat-delta{color:var(--ink-4);padding-bottom:2px;font-size:12px;font-weight:500}.ui-stat-delta-up{color:var(--green)}.ui-stat-delta-down{color:var(--red)}.ui-stat-small{padding:13px 15px}.ui-stat-small .ui-stat-label{margin-bottom:6px;font-size:11.5px}.ui-stat-small .ui-stat-value{letter-spacing:-.6px;font-size:21px;line-height:normal}.ui-stat-fact .ui-stat-label{margin-bottom:5px}.ui-stat-fact .ui-stat-value{letter-spacing:normal;word-break:break-word;font-size:13.5px;font-weight:550;line-height:1.45}.ui-stat-accent{background:var(--ground-tint);border-color:var(--accent-tint-line)}.ui-stat-accent .ui-stat-label{color:var(--accent-ink)}.ui-stat-accent .ui-stat-value{color:var(--accent-hover)}.ui-table-head,.ui-table-row{gap:12px;padding:10px 16px;display:grid}.ui-table-head{border-bottom:1px solid var(--line-2);background:var(--ground-side)}.ui-table-head>span{color:var(--ink-4);font-size:11.5px;font-weight:500}.ui-table-row{border-top:1px solid var(--line-3);color:var(--ink);align-items:center;padding:12px 16px}.ui-table-head+.ui-table-row{border-top:0}.ui-table-row:hover{background:var(--ground-side);color:var(--ink)}.ui-table-row-link{cursor:pointer}.ui-cell-right{text-align:right;justify-self:stretch}.ui-cell-end{justify-content:flex-end;align-items:center;gap:10px;display:flex}.ui-cell-strong{min-width:0;font-size:13.5px;font-weight:550}.ui-cell{color:var(--ink-3);min-width:0;font-size:13px}.ui-cell-ink{color:var(--ink-2);min-width:0;font-size:13px}.ui-cell-faint{color:var(--ink-4);min-width:0;font-size:12.5px}.ui-cell-link{color:var(--accent);font-size:13px;font-weight:550}.ui-clip{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.ui-tabs{border-bottom:1px solid var(--line);gap:2px;margin-top:-4px;display:flex}.ui-tab{white-space:nowrap;height:36px;color:var(--ink-3);cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;flex:none;align-items:center;gap:7px;margin-bottom:-1px;padding:0 12px;font-size:13px;font-weight:450;display:flex}.ui-tab:hover{color:var(--ink)}.ui-tab-on,.ui-tab-on:hover{color:var(--ink);border-bottom-color:var(--accent);font-weight:600}.ui-button{border:1px solid var(--line-control);background:var(--ground);height:34px;color:var(--ink);cursor:pointer;white-space:nowrap;border-radius:9px;justify-content:center;align-items:center;gap:7px;padding:0 13px;font-size:13px;font-weight:500;display:inline-flex}.ui-button:hover{border-color:var(--line-hover);color:var(--ink)}.ui-button:disabled{cursor:default;opacity:.55}.ui-button-primary{background:var(--accent);color:var(--on-accent);border-color:#0000;padding:0 14px;font-weight:550}.ui-button-primary:hover{background:var(--accent-hover);color:var(--on-accent);border-color:#0000}.ui-button-dashed{border-style:dashed;border-color:var(--line-hover);color:var(--ink-2);font-size:12.5px}.ui-button-dashed:hover{border-color:var(--accent);color:var(--accent-hover)}.ui-button-danger{color:var(--red)}.ui-button-danger:hover{border-color:var(--red-line);color:var(--red)}.ui-button-pill{border-radius:99px}.ui-button-xs{border-radius:8px;height:28px;padding:0 10px;font-size:12.5px}.ui-button-sm{border-radius:8px;height:30px;padding:0 12px;font-size:12.5px}.ui-button-md{height:32px;padding:0 12px;font-size:12.5px}.ui-button-form{height:36px}.ui-button-lg{width:100%;height:42px;font-size:14px}.ui-text-action{color:var(--accent);cursor:pointer;white-space:nowrap;background:0 0;border:0;padding:0;font-size:12.5px;font-weight:500}.ui-text-action:disabled{color:var(--ink-7);cursor:default}.ui-text-action-danger{color:var(--red)}.ui-label{color:var(--ink-2);margin-bottom:6px;font-size:12.5px;font-weight:500;display:block}.ui-input,.ui-select{border:1px solid var(--line-control);background:var(--ground);width:100%;height:36px;color:var(--ink);border-radius:9px;padding:0 12px;font-size:13px}.ui-select{padding:0 10px}.ui-input:focus,.ui-select:focus{border-color:var(--accent);box-shadow:var(--accent-ring);outline:none}.ui-input-sm,.ui-select-sm{height:34px}.ui-input-lg{border-color:var(--line-field);height:40px;font-size:14px}.ui-textarea{border:1px solid var(--line-control);background:var(--ground);width:100%;min-height:72px;color:var(--ink);resize:vertical;border-radius:9px;padding:9px 12px;font-size:13px;line-height:1.5}.ui-textarea:focus{border-color:var(--accent);box-shadow:var(--accent-ring)}.ui-form{flex-wrap:wrap;align-items:flex-end;gap:10px;display:flex}.ui-form-grow{flex:1;min-width:200px}.ui-check{color:var(--ink-2);cursor:pointer;align-items:center;gap:7px;font-size:13px;display:inline-flex}.ui-check input{accent-color:var(--accent)}.ui-segmented{background:var(--ground-4);border-radius:9px;gap:4px;padding:3px;display:flex}.ui-segment{height:26px;color:var(--ink-3);cursor:pointer;white-space:nowrap;background:0 0;border:0;border-radius:7px;padding:0 10px;font-size:12px;font-weight:450}.ui-segment-on{background:var(--ground);color:var(--ink);box-shadow:var(--shadow-raised);font-weight:550}.ui-chips{flex-wrap:wrap;gap:7px;display:flex}.ui-chip{border:1px solid var(--line-control);background:var(--ground);height:30px;color:var(--ink-3);cursor:pointer;border-radius:99px;padding:0 12px;font-size:12.5px;font-weight:450}.ui-chip-on{background:var(--ink);border-color:var(--ink);color:var(--on-accent);font-weight:550}.ui-choice{cursor:pointer;background:var(--ground-5);height:28px;color:var(--ink-3);border:0;border-radius:8px;padding:0 11px;font-size:12.5px;font-weight:450}.ui-choice-on{background:var(--ink);color:var(--on-accent);font-weight:550}.ui-choice:disabled{cursor:default}.ui-switch{background:var(--line-muted);cursor:pointer;border:0;border-radius:99px;align-items:center;width:36px;height:20px;padding:2px;display:flex}.ui-switch-on{background:var(--accent);justify-content:flex-end}.ui-switch-knob{background:var(--on-accent);border-radius:50%;width:16px;height:16px}.ui-pill{white-space:nowrap;border-radius:99px;flex:none;padding:2px 8px;font-size:11.5px;font-weight:500;line-height:normal;display:inline-block}.ui-pill-small{padding:1.5px 7px;font-size:11px}.ui-pill-green{color:var(--green);background:var(--green-soft)}.ui-pill-amber{color:var(--amber);background:var(--amber-soft)}.ui-pill-red{color:var(--red);background:var(--red-soft)}.ui-pill-indigo{color:var(--indigo);background:var(--indigo-soft)}.ui-pill-violet{color:var(--accent-hover);background:var(--accent-soft)}.ui-pill-gray{color:var(--ink-3);background:var(--ground-5)}.ui-pill-muted{color:var(--ink-4);background:var(--ground-5)}.ui-tag{color:var(--ink-2);background:var(--ground-5);white-space:nowrap;border-radius:99px;padding:2px 8px;font-size:11.5px;font-weight:500}.ui-tags{flex-wrap:wrap;gap:5px;display:flex}.ui-dot{background:var(--line-muted);border-radius:50%;flex:none;width:7px;height:7px;display:inline-block}.ui-dot-small{width:6px;height:6px}.ui-dot-green{background:var(--green-dot)}.ui-dot-amber{background:var(--amber-dot)}.ui-live{color:var(--green-dot);align-items:center;gap:6px;font-size:12px;display:inline-flex}.ui-avatar{border-radius:9px;flex:none;place-items:center;width:28px;height:28px;font-size:11px;font-weight:600;display:grid}.ui-avatar-26{border-radius:8px;width:26px;height:26px}.ui-avatar-36{border-radius:11px;width:36px;height:36px;font-size:12.5px}.ui-avatar-round{border-radius:50%;font-size:12px}.ui-avatar-round.ui-avatar-38{width:38px;height:38px;font-size:13px}.ui-tint-violet{background:var(--accent-soft);color:var(--accent-hover)}.ui-tint-green{background:var(--green-soft);color:var(--green)}.ui-tint-pink{background:var(--pink-soft);color:var(--pink)}.ui-tint-amber{background:var(--amber-soft);color:var(--amber)}.ui-tint-indigo{background:var(--indigo-soft);color:var(--indigo)}.ui-tint-red{background:var(--red-soft);color:var(--red)}.ui-tint-ink{background:var(--ink);color:var(--on-accent)}.ui-code{background:var(--ground-side);font:12.5px var(--face-fixed);color:var(--ink-2);white-space:pre;margin:0;padding:14px 16px;line-height:1.7;overflow-x:auto}.ui-bar{background:var(--ground-5);border-radius:99px;height:6px;display:block;overflow:hidden}.ui-bar-fill{background:var(--accent);border-radius:99px;height:100%;display:block}.ui-icon{display:block}@media (width<=720px){.ui-page{padding:20px 16px 40px}.ui-card{overflow-x:auto}.ui-table-head,.ui-table-row{min-width:640px}}.login{background:var(--ground);grid-template-columns:minmax(0,1fr) minmax(0,1fr);min-height:100vh;display:grid}.login-side{flex-direction:column;justify-content:space-between;min-height:640px;padding:32px 40px;display:flex}.login-logo{align-self:flex-start;width:auto;height:26px;display:block}.login-form{width:100%;max-width:352px;margin:0 auto;padding:40px 0}.login-title{letter-spacing:-.7px;margin:0 0 7px;font-size:26px;font-weight:650}.login-lede{color:var(--ink-3);margin:0 0 28px;font-size:14px;line-height:1.5}.login-label{color:var(--ink-2);margin-bottom:6px;font-size:13px;font-weight:500;display:block}.login-label-row{justify-content:space-between;align-items:baseline;margin-bottom:6px;display:flex}.login-label-row .login-label{margin-bottom:0}.login-hint{color:var(--ink-4);font-size:12.5px}.login-input{border:1px solid var(--line-field);background:var(--ground);width:100%;height:40px;color:var(--ink);border-radius:9px;margin-bottom:14px;padding:0 12px;font-size:14px}.login-input:focus{border-color:var(--accent);box-shadow:var(--accent-ring)}.login-input-secret{letter-spacing:.1em}.login-workspace{border:1px solid var(--line-field);background:var(--ground);border-radius:9px;align-items:center;gap:10px;height:40px;margin-bottom:22px;padding:0 12px;display:flex}.login-workspace:hover{border-color:var(--line-hover-2)}.login-workspace:focus-within{border-color:var(--accent);box-shadow:var(--accent-ring)}.login-workspace-tile{background:var(--accent);width:18px;height:18px;color:var(--on-accent);border-radius:5px;flex:none;place-items:center;font-size:10px;font-weight:600;display:grid}.login-workspace-input{min-width:0;height:100%;color:var(--ink);background:0 0;border:0;flex:1;font-size:14px}.login-go{background:var(--accent);width:100%;height:42px;color:var(--on-accent);cursor:pointer;border:0;border-radius:9px;font-size:14px;font-weight:550}.login-go:hover{background:var(--accent-hover)}.login-go:disabled{opacity:.6;cursor:default}.login-refused{color:var(--red);margin:14px 0 0;font-size:13px;line-height:1.5}.login-note{color:var(--ink-4);margin:22px 0 0;font-size:12.5px;line-height:1.6}.login-foot{color:var(--ink-5);margin:0;font-size:12.5px}.login-command{color:var(--ink-2);font-weight:500}.login-commands{border:1px solid var(--line);background:var(--ground-side);font:13px var(--face-fixed);color:var(--ink-2);white-space:pre;border-radius:12px;margin:0;padding:14px 16px;line-height:1.7}.login-show{background:var(--ground-3);border-left:1px solid var(--line);flex-direction:column;justify-content:center;gap:22px;padding:40px;display:flex}.login-show-words{max-width:420px}.login-show-title{letter-spacing:-.5px;text-wrap:pretty;margin:0 0 8px;font-size:22px;font-weight:600}.login-show-lede{color:var(--ink-3);text-wrap:pretty;margin:0;font-size:14px;line-height:1.6}.login-show-card{background:var(--ground);border:1px solid var(--line);max-width:420px;box-shadow:var(--shadow-card);border-radius:14px;overflow:hidden}.login-show-head{border-bottom:1px solid var(--line-2);align-items:center;gap:9px;padding:13px 16px;display:flex}.login-show-today{font-size:13px;font-weight:550}.login-show-count{color:var(--ink-4);margin-left:auto;font-size:12px}.login-show-row{border-bottom:1px solid var(--line-3);align-items:center;gap:12px;padding:12px 16px;display:flex}.login-show-row:last-child{border-bottom:0}.login-show-name{font-size:13px;font-weight:500}.login-show-line{color:var(--ink-4);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.login-show-channel{color:var(--ink-5);flex:none;font-size:11.5px}.login-card{border:1px solid var(--line);background:var(--ground);max-width:460px;box-shadow:var(--shadow-card);border-radius:14px;margin:12vh auto 0;padding:24px}.login-card .login-title{letter-spacing:-.5px;font-size:22px}.login-card .login-lede{margin-bottom:20px}@media (width<=860px){.login{grid-template-columns:minmax(0,1fr)}.login-show{display:none}.login-side{padding:24px 16px}}.login-link{color:var(--accent);cursor:pointer;background:0 0;border:0;padding:0;font-size:12.5px}.login-forgot{color:var(--ink-3);margin:-6px 0 14px;font-size:12.5px;line-height:1.5}select.login-workspace-input{appearance:none;cursor:pointer}.login-or{align-items:center;gap:12px;margin:20px 0;display:flex}.login-or-line{background:var(--line);flex:1;height:1px}.login-or-word{color:var(--ink-5);font-size:12px}.login-sso{border:1px solid var(--line-field);background:var(--ground);width:100%;height:42px;color:var(--ink);cursor:pointer;border-radius:9px;justify-content:center;align-items:center;gap:9px;font-size:14px;font-weight:500;display:flex}.login-sso:hover{border-color:var(--line-hover-2);background:var(--ground-side)}.login-sso:disabled{opacity:.6;cursor:default}.login-sso-glyph{background:var(--ink);border-radius:4px;width:16px;height:16px}.login-sso-pick{margin-top:14px}.login-sso-pick .login-workspace{margin-bottom:0}.login-sso-note{color:var(--ink-3);margin:12px 0 0;font-size:12.5px;line-height:1.5}.agents-watching{color:var(--green-dot);align-items:center;gap:6px;margin-left:auto;font-size:12px;display:flex}.agents-corners{margin-left:12px}.agents-name{align-items:center;gap:10px;min-width:0;display:flex}.agents-live{color:var(--green-dot);align-items:center;gap:6px;font-size:12px;display:flex}.agents-idle{color:var(--ink-4);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.agents-numbers{color:var(--ink-3);font-size:12.5px}.agents-figure{text-align:right;font-size:13px;font-weight:500}.agents-score{color:var(--ink-6)}.agents-split{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:14px;display:grid}.agents-none{color:var(--ink-4);padding:9px;font-size:12.5px}@media (width<=900px){.agents-split{grid-template-columns:minmax(0,1fr)}}.agents-score-good{color:var(--green)}.agents-score-fair{color:var(--amber)}.agents-score-poor{color:var(--red)}.box-fixed{font-family:var(--face-fixed);font-size:12px}.box-back{color:var(--ink-4);margin-bottom:6px;font-size:12.5px;text-decoration:none;display:inline-block}.box-back:hover{color:var(--ink)}.box-line{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.box-head-moves{align-items:center;gap:8px;margin-left:auto;display:flex}.box-inline{border-bottom:1px solid var(--line-2);background:var(--ground-side);padding:14px 16px}.box-inline-foot{color:var(--ink-4);flex-wrap:wrap;align-items:baseline;gap:4px;margin-top:10px;font-size:12.5px;line-height:1.6;display:flex}.box-inline-close{margin-left:auto}.box-done{color:var(--green);font-size:13px}.box-done-row{border-bottom:1px solid var(--line-2);padding:11px 16px}.box-bad{color:var(--red);font-size:13px}.box-note,.box-done-under{margin-top:10px}.box-kvs{flex-direction:column;gap:9px;padding:14px 16px;display:flex}.box-kvs-moves{margin-top:6px}.box-pick{flex-wrap:wrap;gap:8px;display:flex}.box-load{grid-template-columns:56px auto;align-items:center;gap:8px;display:grid}.box-limits{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px 12px;padding:14px 16px 4px;display:grid}.box-limit-about{color:var(--ink-5);margin-top:5px;font-size:12px}.box-save{flex-wrap:wrap;align-items:center;gap:12px;padding:12px 16px 14px;display:flex}.box-anywhere{border-bottom:1px solid var(--line-2);align-items:center;gap:16px;padding:14px 16px;display:flex}.box-anywhere-words{flex-direction:column;flex:1;gap:2px;font-size:13.5px;display:flex}.box-form{flex-direction:column;gap:14px;padding:14px 16px;display:flex}.box-form-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:12px;display:grid}.box-form-pair{grid-template-columns:96px minmax(0,1fr);gap:12px;display:grid}.box-redirect{border-top:1px solid var(--line-2)}.box-redirect-head{justify-content:space-between;align-items:center;gap:10px;padding:10px 16px;display:flex}.box-accent{grid-template-columns:36px minmax(0,1fr);gap:8px;display:grid}.box-accent-well{border:1px solid var(--line-field);background:var(--ground);cursor:pointer;border-radius:9px;width:36px;height:36px;padding:2px}.box-letter-ground{background:var(--ground-3);justify-content:center;padding:28px 16px;display:flex}.box-letter{border:1px solid var(--line);background:var(--ground);border-radius:14px;flex-direction:column;align-items:flex-start;gap:12px;width:100%;max-width:460px;padding:28px 28px 30px;display:flex}.box-letter-logo{width:auto;height:28px}.box-letter-name{letter-spacing:-.01em;font-size:17px;font-weight:700}.box-letter-title{letter-spacing:-.01em;margin-top:8px;font-size:18px;font-weight:650}.box-letter-words{color:var(--ink-3);font-size:13.5px;line-height:1.6}.box-letter-button{color:var(--on-accent);border-radius:9px;margin-top:6px;padding:10px 18px;font-size:13.5px;font-weight:600}@media (width<=720px){.box-form-grid{grid-template-columns:minmax(0,1fr)}}.dial-anchor{position:relative}.dial-pop{z-index:30;border:1px solid var(--line-control);background:var(--ground);width:288px;box-shadow:var(--shadow-pop);border-radius:12px;flex-direction:column;gap:11px;padding:14px;display:flex;position:absolute;top:calc(100% + 6px);right:0}.dial-ask{font-size:13.5px;font-weight:550;line-height:1.45}.dial-moves{gap:8px;display:flex}.dial-panel{border:1px solid var(--line-control);background:var(--ground);box-shadow:var(--shadow-pop);border-radius:12px;overflow:hidden}.dial-panel-head{align-items:center;gap:10px;padding:10px 12px 0;display:flex}.dial-panel-close{width:24px;height:24px;color:var(--ink-4);cursor:pointer;background:0 0;border:0;border-radius:7px;margin-left:auto;font-size:16px;line-height:1}.dial-panel-close:hover{background:var(--ground-5);color:var(--ink)}.dial-form{flex-direction:column;gap:10px;padding:12px;display:flex}.dial-note{color:var(--ink-3);margin:0;font-size:12px;line-height:1.5}.dial-refused{color:var(--red);margin:0;font-size:12.5px;line-height:1.5}.sim{background:var(--ground);border:1px solid var(--line-control);box-shadow:var(--shadow-pop);border-radius:12px;flex-direction:column;gap:10px;padding:12px 13px 14px;display:flex}.sim-head{align-items:center;display:flex}.sim-title{font-size:13px;font-weight:600}.sim-close{width:24px;height:24px;color:var(--ink-4);cursor:pointer;background:0 0;border:0;border-radius:7px;margin-left:auto;font-size:16px;line-height:1}.sim-close:hover{background:var(--ground-5);color:var(--ink)}.sim-note{color:var(--ink-3);margin:0;font-size:12px;line-height:1.5}.sim-pair{grid-template-columns:repeat(auto-fit,minmax(90px,1fr));gap:8px;display:grid}.sim-checks{flex-direction:column;gap:6px;display:flex}.sim-aside{color:var(--ink-4);font-size:11.5px}.sim-refused{color:var(--red);margin:0;font-size:12px;line-height:1.5}.ib{flex:1;grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(180px,292px) minmax(0,1fr);min-height:0;display:grid}.ib-list{border-right:1px solid var(--line);flex-direction:column;min-width:0;min-height:0;display:flex}.ib-list-head{border-bottom:1px solid var(--line);flex:none;gap:8px;padding:12px 13px;display:flex;position:relative}.ib-search{border:1px solid var(--line-control);background:var(--ground-side);min-width:0;height:34px;color:var(--ink);border-radius:99px;flex:1;padding:0 12px;font-size:13px}.ib-search:focus{border-color:var(--accent);background:var(--ground);box-shadow:var(--accent-ring)}.ib-new{background:var(--accent);width:34px;height:34px;color:var(--on-accent);cursor:pointer;border:0;border-radius:50%;flex:none;font-size:17px;line-height:1}.ib-new:hover{background:var(--accent-hover)}.ib-sim{z-index:30;position:absolute;top:calc(100% + 4px);left:8px;right:8px}.ib-threads{flex:1;overflow:auto}.ib-empty{color:var(--ink-4);margin:0;padding:14px 13px;font-size:12.5px;line-height:1.55}.ib-refused{color:var(--red)}.ib-row{border:0;border-bottom:1px solid var(--line-3);cursor:pointer;text-align:left;background:0 0;align-items:center;gap:11px;width:100%;padding:11px 13px;display:flex}.ib-row:hover{background:var(--ground-side)}.ib-row-on,.ib-row-on:hover{background:var(--ground-4)}.ib-row-main{flex:1;min-width:0}.ib-row-top{align-items:baseline;gap:8px;display:flex}.ib-row-name{min-width:0;color:var(--ink);white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:13.5px;font-weight:600;overflow:hidden}.ib-row-time{color:var(--ink-6);flex:none;font-size:11px}.ib-row-bottom{align-items:center;gap:7px;margin-top:2px;display:flex}.ib-row-last{min-width:0;color:var(--ink-4);white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:12.5px;overflow:hidden}.ib-row-last-live{color:var(--green)}.ib-unread{background:var(--green-dot);min-width:18px;height:18px;color:var(--on-accent);border-radius:99px;flex:none;place-items:center;padding:0 5px;font-size:11px;font-weight:600;display:grid}.ib-thread{background:var(--ground-side);flex-direction:column;min-width:0;min-height:0;display:flex}.ib-nothing{color:var(--ink-3);padding:26px 22px;font-size:13.5px}.ib-head{border-bottom:1px solid var(--line);background:var(--ground);flex-wrap:wrap;flex:none;align-items:center;gap:11px;padding:11px 16px;display:flex}.ib-head-words{min-width:0}.ib-head-name{letter-spacing:-.15px;font-size:14px;font-weight:600}.ib-head-sub{color:var(--ink-4);font-size:12px}.ib-head-actions{flex:none;gap:8px;margin-left:auto;display:flex}.ib-messages{flex-direction:column;flex:1;gap:9px;padding:18px 20px;display:flex;overflow:auto}.ib-bubble-wrap{flex-direction:column;gap:9px;display:flex}.ib-day{color:var(--ink-6);background:var(--ground-5);border-radius:99px;align-self:center;margin-bottom:4px;padding:3px 11px;font-size:11.5px}.ib-line{justify-content:flex-start;display:flex}.ib-line-out{justify-content:flex-end}.ib-line-call{justify-content:center}.ib-call{background:var(--ground-5);color:var(--ink-3);border-radius:99px;padding:6px 12px;font-size:12px;font-weight:500}.ib-bubble{background:var(--ground-4);max-width:66%;color:var(--ink);white-space:pre-wrap;word-break:break-word;border-radius:14px 14px 14px 5px;padding:9px 13px 7px;font-size:13.5px;line-height:1.5;position:relative}.ib-bubble-out{background:var(--accent-soft);border-bottom-right-radius:5px;border-bottom-left-radius:14px}.ib-time{color:var(--ink-6);text-align:right;margin-top:3px;font-size:10.5px;display:block}.ib-quiet{color:var(--ink-4);align-self:center;margin:0;font-size:12.5px}.ib-refused-line{color:var(--red);margin:0;font-size:12.5px;line-height:1.5}.ib-refused-foot{background:var(--ground);flex:none;padding:6px 16px 0}.ib-composer{border-top:1px solid var(--line);background:var(--ground);flex:none;gap:9px;padding:12px 16px;display:flex}.ib-write{border:1px solid var(--line-control);background:var(--ground-side);min-width:0;height:38px;color:var(--ink);border-radius:99px;flex:1;padding:0 14px;font-size:13.5px}.ib-write:focus{border-color:var(--accent);background:var(--ground);box-shadow:var(--accent-ring)}.ib-write:disabled{cursor:not-allowed}.ib-send{background:var(--accent);height:38px;color:var(--on-accent);cursor:pointer;border:0;border-radius:99px;flex:none;padding:0 18px;font-size:13.5px;font-weight:550}.ib-send:hover{background:var(--accent-hover)}.ib-send:disabled{opacity:.55;cursor:default}@media (width<=720px){.ib{grid-template-rows:auto minmax(0,1fr);grid-template-columns:minmax(0,1fr);overflow:auto}.ib-list{border-right:0;border-bottom:1px solid var(--line);max-height:34vh}}.ib-sim-ways{border:1px solid var(--line-control);background:var(--ground);box-shadow:var(--shadow-pop);border-radius:12px;margin-bottom:6px;padding:5px;display:flex}.inspector{border-left:1px solid var(--line);background:var(--ground-side);min-width:0;min-height:0;overflow:auto}.inspector-head{border-bottom:1px solid var(--line);align-items:center;gap:8px;padding:13px 15px;display:flex}.inspector-title{font-size:13px;font-weight:600}.inspector-standing{margin-left:auto}.inspector-standing .ui-pill{font-weight:550}.inspector-tabs{padding:4px 8px 12px}.inspector-count{color:var(--ink-6);font-size:11px;font-weight:500}.inspector-quiet{color:var(--ink-4);margin:0;padding:14px 15px;font-size:12.5px;line-height:1.55}.inspector-figures{flex-wrap:wrap;gap:12px 18px;padding:0 15px 14px;display:flex}.inspector-figure-label{color:var(--ink-4);margin-bottom:2px;font-size:11.5px}.inspector-figure{letter-spacing:-.3px;font-size:15px;font-weight:600}.inspector-call{color:var(--ink-6);word-break:break-all;margin:-6px 15px 14px;font-size:11px}.inspector-turns,.inspector-tools{flex-direction:column;gap:9px;padding:0 15px 14px;display:flex}.inspector-turn{gap:9px;display:flex}.inspector-who{width:42px;color:var(--ink-4);flex:none;padding-top:1px;font-size:11.5px;font-weight:600}.inspector-who-agent{color:var(--accent-hover)}.inspector-turn-body{flex:1;min-width:0}.inspector-turn-text{color:var(--ink-2);font-size:12.5px;line-height:1.5;display:block}.inspector-turn-meta{color:var(--ink-6);margin-top:2px;font-size:11px;display:block}.inspector-tool{border:1px solid var(--line);background:var(--ground);border-radius:10px;padding:9px 11px}.inspector-tool-name{font-size:12.5px;font-weight:550}.inspector-tool-args{color:var(--ink-4);word-break:break-word;margin-top:2px;font-size:11.5px;line-height:1.5}.inspector-tool-result{color:var(--green);word-break:break-word;margin-top:4px;font-size:11.5px}.inspector-tool-failed{color:var(--red)}.inspector-tool-running{color:var(--amber)}.inspector-state{flex-direction:column;gap:8px;padding:0 15px 22px;display:flex}.inspector-field{align-items:baseline;gap:10px;display:flex}.inspector-field-key{width:100px;color:var(--ink-4);text-overflow:ellipsis;flex:none;font-size:12px;overflow:hidden}.inspector-field-value{word-break:break-word;flex:1;min-width:0;font-size:12.5px}.inspector-none{color:var(--ink-6);margin:0;font-size:12px}.inspector-refused{color:var(--red);margin:0;padding:0 15px 16px;font-size:12px}.chat-grid{flex:1;grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(0,1fr) minmax(210px,300px);min-height:0;display:grid}.chat-column{flex-direction:column;min-width:0;min-height:0;display:flex}.chat-head{border-bottom:1px solid var(--line);flex:none;align-items:center;gap:12px;padding:16px 20px 12px;display:flex}.chat-head-words{flex:1;min-width:0}.chat-title{letter-spacing:-.3px;font-size:15px;font-weight:650}.chat-sub{color:var(--ink-3);margin-top:2px;font-size:12.5px}.chat-head-actions{flex:none;align-items:center;gap:12px;display:flex}.chat-whole{color:var(--accent);font-size:12.5px;font-weight:500}.chat-lines{background:var(--ground-side);flex-direction:column;flex:1;gap:11px;min-height:0;padding:18px 20px;display:flex;overflow:auto}.chat-line{justify-content:flex-start;display:flex}.chat-line-user{justify-content:flex-end}.chat-line-tool{justify-content:center}.chat-line-pending{opacity:.6}.chat-bubble{background:var(--ground-4);max-width:74%;color:var(--ink);white-space:pre-wrap;word-break:break-word;border-radius:14px;padding:10px 13px;font-size:13.5px;line-height:1.55}.chat-bubble-you{background:var(--accent);color:var(--on-accent)}.chat-caret{vertical-align:text-bottom;background:var(--accent);width:2px;height:1em;margin-left:2px;animation:1s steps(2,start) infinite chat-blink;display:inline-block}@keyframes chat-blink{to{visibility:hidden}}.chat-typing{align-items:center;gap:4px;padding:14px 15px;display:inline-flex}.chat-typing i{background:var(--ink-6);border-radius:50%;width:6px;height:6px;animation:1.2s ease-in-out infinite chat-dots}.chat-typing i:nth-child(2){animation-delay:.2s}.chat-typing i:nth-child(3){animation-delay:.4s}@keyframes chat-dots{0%,80%,to{opacity:.3}40%{opacity:1}}.chat-tool{background:var(--ground-5);color:var(--ink-3);text-overflow:ellipsis;white-space:nowrap;border-radius:99px;max-width:90%;padding:6px 12px;font-size:12px;font-weight:500;overflow:hidden}.chat-tool-failed{color:var(--red);background:var(--red-soft)}.chat-tool-running{color:var(--amber);background:var(--amber-soft)}.chat-error{color:var(--red);margin:0;font-size:12.5px}.chat-refused{flex:none;padding:8px 16px 0}.chat-composer{border-top:1px solid var(--line);background:var(--ground);flex:none;gap:9px;padding:12px 16px;display:flex}.chat-say{border:1px solid var(--line-control);background:var(--ground-side);min-width:0;height:38px;color:var(--ink);border-radius:10px;flex:1;padding:0 13px;font-size:13.5px}.chat-say:focus{border-color:var(--accent);background:var(--ground);box-shadow:var(--accent-ring)}.chat-send{background:var(--accent);height:38px;color:var(--on-accent);cursor:pointer;border:0;border-radius:10px;flex:none;padding:0 16px;font-size:13.5px;font-weight:550}.chat-send:hover{background:var(--accent-hover)}.chat-send:disabled{cursor:default;opacity:.55}.chat-start{width:100%;max-width:520px;margin:12px auto 0}.chat-start-form{flex-direction:column;gap:13px;display:flex}.chat-note{color:var(--ink-3);margin:0;font-size:12.5px;line-height:1.6}@media (width<=900px){.chat-grid{grid-template-rows:minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr)}}.chat-over{border-top:1px solid var(--line);background:var(--ground);color:var(--ink-4);flex:none;padding:14px 16px;font-size:12.5px}.oev-held{align-items:center;gap:10px;min-width:0;display:flex}.oev-held .ui-bar{flex:1}.oev-share{text-align:right;width:40px;color:var(--ink-2);flex:none;font-size:12.5px}.oev-none{color:var(--ink-5);font-size:12.5px}.oev-when{color:var(--ink-4);font-size:12px}.oev-open{color:var(--accent);font-size:12.5px}.talk-grid{flex:1;grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(0,1fr) minmax(260px,330px);min-height:0;display:grid}.talk-grid>.ui-page{min-width:0}.talk-card{border:1px solid var(--line);border-radius:12px;flex-direction:column;align-items:center;gap:14px;padding:28px 20px;display:flex}.talk-door{background:var(--accent);width:96px;height:96px;color:var(--on-accent);cursor:pointer;box-shadow:var(--shadow-talk);border:0;border-radius:50%;font-size:15px;font-weight:600}.talk-door-clock{opacity:.85;margin-top:2px;font-size:11.5px;font-weight:500;display:block}.talk-mic{align-items:center;gap:10px;display:flex}.talk-door:hover{background:var(--accent-hover)}.talk-door:disabled{cursor:default;opacity:.7}.talk-door-on,.talk-door-on:hover{background:var(--red);box-shadow:none}.talk-standing{text-align:center}.talk-phase{font-size:13.5px;font-weight:550}.talk-hint{color:var(--ink-4);margin-top:3px;font-size:12.5px}.talk-bars{align-items:flex-end;gap:3px;height:20px;display:flex}.talk-bars span{background:var(--line-muted);border-radius:2px;width:3px}.talk-bars span:first-child{height:6px}.talk-bars span:nth-child(2){height:12px}.talk-bars span:nth-child(3){height:8px}.talk-bars span:nth-child(4){height:16px}.talk-bars span:nth-child(5){height:9px}.talk-bars-on span{background:var(--accent);transform-origin:bottom;animation:.9s ease-in-out infinite alternate talk-level}.talk-bars-on span:nth-child(2){animation-delay:.15s}.talk-bars-on span:nth-child(3){animation-delay:.3s}.talk-bars-on span:nth-child(4){animation-delay:.45s}.talk-bars-on span:nth-child(5){animation-delay:.6s}@keyframes talk-level{0%{transform:scaleY(.35)}to{transform:scaleY(1)}}.talk-call{color:var(--ink-6);word-break:break-all;text-align:center;font-size:11.5px}.talk-facts{flex-wrap:wrap;gap:12px;display:flex}.talk-fact{border:1px solid var(--line);border-radius:12px;flex:1;min-width:200px;padding:13px 15px}.talk-fact-label{color:var(--ink-4);margin-bottom:5px;font-size:11.5px}.talk-fact-value{font-size:13.5px;font-weight:550}.talk-whole{flex-direction:column;flex:1;min-height:0;display:flex}.talk-whole .talk-lines{background:var(--ground);flex:1;max-height:none;padding:22px 24px}.talk-lines{background:var(--ground-side);flex-direction:column;gap:11px;min-height:120px;max-height:420px;padding:18px 20px;display:flex;overflow:auto}.talk-quiet{color:var(--ink-4);margin:auto;font-size:12.5px}.talk-said{justify-content:flex-start;display:flex}.talk-said-you{justify-content:flex-end}.talk-bubble{background:var(--ground-4);max-width:74%;color:var(--ink);border-radius:14px;margin:0;padding:10px 13px;font-size:13.5px;line-height:1.55}.talk-bubble-you{background:var(--accent);color:var(--on-accent)}.talk-bubble-unsettled{opacity:.6}.talk-word{animation:.18s ease-out talk-arrive}@keyframes talk-arrive{0%{opacity:0}to{opacity:1}}.talk-cursor{vertical-align:text-bottom;background:currentColor;width:2px;height:1em;margin-left:2px;animation:1s steps(2,start) infinite talk-blink;display:inline-block}@keyframes talk-blink{to{visibility:hidden}}.talk-mark{background:var(--ground-5);color:var(--ink-4);border-radius:99px;align-self:center;margin:0;padding:3px 11px;font-size:12px}.talk-composer{border-top:1px solid var(--line);background:var(--ground);gap:9px;padding:12px 16px;display:flex}.talk-write{border:1px solid var(--line-control);background:var(--ground-side);min-width:0;height:38px;color:var(--ink);border-radius:10px;flex:1;padding:0 13px;font-size:13.5px}.talk-write:focus{border-color:var(--accent);background:var(--ground);box-shadow:var(--accent-ring)}.talk-write:disabled{cursor:not-allowed}.talk-send{background:var(--accent);height:38px;color:var(--on-accent);cursor:pointer;border:0;border-radius:10px;flex:none;padding:0 16px;font-size:13.5px;font-weight:550}.talk-send:hover{background:var(--accent-hover)}.talk-send:disabled{opacity:.55;cursor:default}.talk-mark-tool{color:var(--amber)}.talk-mark-error{color:var(--red)}.talk-mark-supervisor{color:var(--accent-hover)}@media (width<=900px){.talk-grid{grid-template-rows:auto auto;grid-template-columns:minmax(0,1fr);overflow:auto}}.rchat-grid{flex:1;grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(0,1fr) minmax(260px,330px);min-height:0;display:grid}.rchat-stage{background:var(--ground-4);place-items:center;min-width:0;min-height:0;padding:22px;display:grid}.rchat{border:1px solid var(--line);background:var(--ground);border-radius:18px;flex-direction:column;width:min(820px,100%);height:100%;max-height:780px;display:flex;overflow:hidden;box-shadow:0 1px 2px #1010140a,0 26px 60px -28px #10101459}.rchat-bar{border-bottom:1px solid var(--line);flex:none;align-items:center;gap:12px;padding:12px 20px;display:flex}.rchat-light{background:var(--line-muted);border-radius:50%;flex:none;width:9px;height:9px}.rchat-light-on{background:var(--green-dot);box-shadow:0 0 0 4px var(--green-soft)}.rchat-words{min-width:0}.rchat-title{font-size:14px;font-weight:600}.rchat-standing{color:var(--ink-4);margin-top:1px;font-size:12.5px}.rchat-moves{align-items:center;gap:8px;margin-left:auto;display:flex}.rchat-empty{background:var(--ground-side);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:10px;min-height:0;padding:32px 24px;display:flex}.rchat-empty-words{text-align:center;max-width:460px;color:var(--ink-3);margin:0;font-size:13.5px;line-height:1.65}.rchat-empty-failed{color:var(--red);margin:0;font-size:12.5px}.rchat-refused{border-top:1px solid var(--line-2);color:var(--red);flex:none;margin:0;padding:10px 20px;font-size:12.5px}@media (width<=900px){.rchat-grid{grid-template-rows:minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr);overflow:auto}.rchat-stage{padding:0}.rchat{max-height:none;box-shadow:none;border:0;border-radius:0}}.ev-last{letter-spacing:-.3px;padding-top:4px;font-size:15px;font-weight:600}.ev-run-all{margin-left:auto}.ev-goldens>.ui-table-row:first-child{border-top:0}.ev-golden{flex-direction:column;min-width:0;display:flex}.ev-golden-says{color:var(--ink-2);font-size:13px}.ev-golden-name,.ev-golden-call{color:var(--ink-6);font-size:11.5px}.ev-golden-call:hover{color:var(--accent)}.ev-views{display:flex}.ev-row-open,.ev-row-open:hover{background:var(--ground-tint)}.ev-num{text-align:right;font-size:13px;font-weight:500}.ev-num-faint{color:var(--ink-4);font-weight:400}.ev-num-bad{color:var(--red)}.ev-head-end{margin-left:auto}.ev-facts{border-bottom:1px solid var(--line-2);grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:9px 22px;padding:14px 16px;display:grid}.ev-score{flex-direction:column;gap:5px;min-width:0;display:flex}.ev-score-value{font-variant-numeric:tabular-nums;font-size:12.5px;font-weight:500}.ev-reason{color:var(--ink-3);min-width:0;font-size:12.5px;line-height:1.55}.ev-repro-body{flex-direction:column;gap:10px;padding:0 16px 14px;display:flex}.ev-repro-open{border:1px solid var(--line);border-radius:10px;overflow:hidden}.ev-repro-title{border-bottom:1px solid var(--line-2);padding:11px 14px;font-size:13px;font-weight:600}.ev-repro-verdict{border-bottom:1px solid var(--line-3);align-items:baseline;gap:9px;padding:9px 14px;display:flex}.ev-asked{max-height:360px;overflow:auto}.ev-judge{color:var(--green);background:var(--green-soft);white-space:nowrap;border-radius:99px;padding:2px 8px;font-size:11.5px;font-weight:500}.ev-judge-bad{color:var(--red);background:var(--red-soft)}.ev-evidence{background:var(--ground-side);border-top:1px solid var(--line-3);flex-direction:column;gap:10px;padding:12px 16px 16px;display:flex}.ev-evidence-head{display:flex}.ev-acts{flex-direction:column;gap:8px;display:flex}.ev-acts-buttons{flex-wrap:wrap;gap:8px;display:flex}.ev-warn{color:var(--amber);font-size:12.5px;line-height:1.55}.ev-said{border:1px solid var(--line);background:var(--ground);border-radius:10px}.ev-said-body{flex-direction:column;gap:7px;padding:0 15px 13px;display:flex}.ev-quote{border-left:2px solid var(--line-control);color:var(--ink-2);padding-left:10px;font-size:13px;line-height:1.55}.ev-suite-controls{flex-wrap:wrap;align-items:flex-end;gap:14px;padding:14px 16px;display:flex}.ev-suite-models{flex:1;min-width:240px}.ev-suite-number{width:120px}.ev-suite-controls .ui-check{height:34px}.ev-suite-go{margin-left:auto}.ev-suite-all{background:var(--ground-side);border-top:1px solid var(--line-2);border-bottom:1px solid var(--line-2);padding:9px 16px}.ev-suite-golden{border-top:1px solid var(--line-3);grid-template-columns:minmax(0,1fr) minmax(0,1.2fr) minmax(0,1fr);align-items:center;gap:12px;padding:10px 16px;display:grid}.ev-suite-golden:first-of-type{border-top:0}.ev-suite-name{color:var(--ink);font-size:13px;font-weight:500}.ev-suite-says{color:var(--ink-3);font-size:13px}.ev-suite-expects{color:var(--ink-4);font-size:12px}.ev-drift-windows{gap:10px;margin-left:auto;display:flex}.ev-drift-field{color:var(--ink-4);white-space:nowrap;align-items:center;gap:7px;font-size:12px;display:flex}.ev-drift-field .ui-input{width:64px;height:30px}.ev-broke{border-top:1px solid var(--line-3);grid-template-columns:minmax(0,1fr) auto minmax(0,2fr);align-items:baseline;gap:12px;padding:10px 16px;display:grid}@media (width<=720px){.ev-suite-golden{grid-template-columns:minmax(0,1fr)}}.lv{flex:1;grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(0,1fr) minmax(190px,244px);min-width:0;min-height:0;display:grid}.lv-middle{flex-direction:column;min-width:0;min-height:0;display:flex}.lv-head{border-bottom:1px solid var(--line);flex-wrap:wrap;flex:none;align-items:center;gap:10px;padding:12px 16px;display:flex}.lv-call{letter-spacing:-.1px;word-break:break-all;font-size:13.5px;font-weight:600}.lv-tag{color:var(--ink-2);background:var(--ground-5);white-space:nowrap;border-radius:99px;padding:2px 8px;font-size:12px;font-weight:500}.lv-status{white-space:nowrap;color:var(--green);background:var(--green-soft);border-radius:99px;padding:2px 8px;font-size:12px;font-weight:500}.lv-status-over{color:var(--ink-3);background:var(--ground-5)}.lv-sub{color:var(--ink-4);font-size:12px}.lv-connection-bad{color:var(--red)}.lv-session{border:1px solid var(--line-hover);background:var(--ground);height:30px;color:var(--ink-2);border-radius:8px;flex:none;align-items:center;margin-left:auto;padding:0 11px;font-size:12.5px;font-weight:500;display:inline-flex}.lv-session+.lv-listen{margin-left:8px}.lv-session:hover{border-color:var(--accent);color:var(--accent-hover)}.lv-listen{border:1px solid var(--line-control);background:var(--ground);height:30px;color:var(--ink);cursor:pointer;white-space:nowrap;border-radius:99px;align-items:center;gap:7px;margin-left:auto;padding:0 12px;font-size:12.5px;font-weight:550;display:flex}.lv-listen:hover{border-color:var(--accent);color:var(--accent-hover)}.lv-listen:disabled{cursor:default;color:var(--ink-6);border-color:var(--line-control)}.lv-listen-open{border-color:var(--accent-line);background:var(--ground-tint);color:var(--accent-hover)}.lv-desk{border-bottom:1px solid var(--line);background:var(--ground-side);flex-wrap:wrap;flex:none;align-items:center;gap:8px;padding:10px 16px;display:flex}.lv-desk-say{flex:100%;order:2;align-items:center;gap:8px;min-width:0;display:flex}.lv-desk-text{flex:1;min-width:120px}.lv-desk-dot{background:var(--line-muted);border-radius:50%;width:6px;height:6px}.lv-desk-dot-warm{background:var(--amber-dot)}.lv-desk-dot-on{background:var(--green-dot)}.lv-desk-armed,.lv-desk-armed:hover{border-color:var(--red-line);background:var(--red-soft);color:var(--red)}.lv-desk-holding,.lv-desk-holding:hover{border-color:var(--amber-dot);background:var(--amber-soft);color:var(--amber)}.lv-desk-number{width:150px}.lv-desk-refused{color:var(--red);flex-basis:100%;order:3;font-size:12.5px;line-height:1.5}.lv-desk-note{color:var(--ink-4);flex:1;font-size:12px}.lv-rows{flex:1;min-height:0;overflow:auto}.lv-recording{border-top:1px solid var(--line-3);padding:12px 14px}.lv-recording audio{width:100%}.lv-row{border-top:1px solid var(--line-3);display:block}.lv-row:first-child{border-top:0}.lv-line{flex-wrap:wrap;gap:4px 10px;padding:9px 14px;list-style:none;display:flex}.lv-line::-webkit-details-marker{display:none}details.lv-row>.lv-line{cursor:pointer}.lv-state{background:var(--ground-tint)}.lv-tool,.lv-confirm{background:var(--amber-tint)}.lv-supervisor{background:var(--pink-soft)}.lv-seq{width:26px;color:var(--ink-7);text-align:right;flex:none;padding-top:1px;font-size:12px}.lv-kind{min-width:46px;color:var(--ink);flex:none;padding-top:1px;font-size:12px;font-weight:550}.lv-kind-state{color:var(--accent-hover)}.lv-kind-tool,.lv-kind-confirm{color:var(--amber)}.lv-kind-quiet{color:var(--ink-6)}.lv-kind-event,.lv-kind-lookup{color:var(--indigo)}.lv-kind-supervisor{color:var(--pink)}.lv-text{min-width:0;color:var(--ink-2);word-break:break-word;flex:150px;font-size:12.5px;line-height:1.55}.lv-text-turn{color:var(--ink);font-size:13.5px}.lv-text-quiet{color:var(--ink-6)}.lv-who{color:var(--ink-4);margin-right:7px;font-size:12px;font-weight:600;display:inline-block}.lv-who-agent{color:var(--accent-hover)}.lv-note{color:var(--ink-4);margin-top:4px;font-size:11.5px;display:block}.lv-failed{color:var(--red)}.lv-more{padding:2px 14px 12px 106px}.lv-list{color:var(--ink-3);margin:0;padding:0;font-size:12px;line-height:1.6;list-style:none}.lv-data{font:12px var(--face-fixed);color:var(--ink-2);white-space:pre-wrap;word-break:break-word;margin:0}.lv-block-name{color:var(--ink-6);letter-spacing:.06em;text-transform:uppercase;margin:8px 0 4px;font-size:11px;font-weight:600}.lv-foot{border-top:1px solid var(--line);background:var(--ground-side);flex:none;padding:9px 14px}.lv-foot-line{color:var(--ink-4);margin:0;font-size:12.5px;line-height:1.55}.lv-foot-said{color:var(--ink)}.lv-foot-caret{vertical-align:-2px;background:var(--accent);width:6px;height:13px;margin-left:2px;animation:1s steps(2,end) infinite lv-blink;display:inline-block}@keyframes lv-blink{50%{opacity:0}}.lv-nothing{color:var(--ink-3);padding:26px 22px;font-size:13.5px;line-height:1.6}.lv-pane{border-left:1px solid var(--line);background:var(--ground-side);min-width:0;min-height:0;overflow:auto}.lv-pane-body{flex-direction:column;gap:9px;padding:0 15px 14px;display:flex}.lv-pane-body-tight{gap:7px}.lv-pane-text{color:var(--ink-3);padding:0 15px 14px;font-size:12.5px;line-height:1.55}.lv-seen{color:var(--ink-6);margin-left:5px;font-size:11px}.lv-seen-pii{color:var(--pink)}.lv-people{flex-direction:column;gap:5px;margin:8px 0 0;padding:0;list-style:none;display:flex}.lv-person{color:var(--ink);font-size:12.5px}.lv-person summary{cursor:pointer;align-items:center;gap:7px;list-style:none;display:flex}.lv-person summary::-webkit-details-marker{display:none}.lv-person-kind{color:var(--ink-6);margin-left:auto;font-size:11px}.lv-speaking{background:var(--green-dot)}.lv-meter{grid-template-columns:104px minmax(0,1fr) auto;align-items:center;gap:8px;display:grid}.lv-meter-name{color:var(--ink-4);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.lv-meter-value{color:var(--ink);white-space:nowrap;font-size:12.5px}.lv-blocks{color:var(--ink-3);font-size:12px}.lv-blocks summary{cursor:pointer;padding:2px 0}.lv-readings{flex-direction:column;gap:5px;margin:6px 0;display:flex}@media (width<=1100px){.lv{grid-template-rows:minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr);overflow:auto}.lv-pane{border-left:0;border-top:1px solid var(--line);max-height:40vh}}.fl{flex:1;grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(260px,320px) minmax(0,1fr);min-height:0;display:grid}.fl-side{border-right:1px solid var(--line);background:var(--ground-side);flex-direction:column;min-width:0;min-height:0;display:flex}.fl-side-head{border-bottom:1px solid var(--line);padding:13px 13px 11px;position:relative}.fl-standing{align-items:center;gap:7px;margin-bottom:9px;display:flex}.fl-count{white-space:nowrap;font-size:13px;font-weight:600}.fl-asked{color:var(--ink-4);white-space:nowrap;text-overflow:ellipsis;margin-left:auto;font-size:11.5px;overflow:hidden}.fl-only{color:var(--ink-2);align-items:center;gap:6px;margin-bottom:9px;font-size:12px;display:flex}.fl-only-clear{color:var(--accent);cursor:pointer;background:0 0;border:0;flex:none;margin-left:auto;padding:0;font-size:12px}.fl-search{width:100%;margin-bottom:9px}.fl-all{color:var(--accent);padding:12px 14px 14px;font-size:12.5px;display:block}.fl-row-words{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.fl-row-top{align-items:baseline;gap:8px;display:flex}.fl-row-sub{color:var(--ink-4);align-items:center;gap:6px;font-size:12px;display:flex}.fl-score{flex:none;margin-left:auto}.fl-outcome{color:var(--ink-3);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:12px;line-height:1.45;display:-webkit-box;overflow:hidden}.fl-simulate{border:1px dashed var(--line-hover);background:var(--ground);width:100%;height:32px;color:var(--ink-2);cursor:pointer;border-radius:9px;font-size:12.5px;font-weight:500}.fl-simulate:hover{border-color:var(--accent);color:var(--accent-hover)}.fl-sim{z-index:30;width:300px;position:absolute;top:calc(100% - 4px);left:8px}.fl-list{flex:1;padding:6px 0;overflow:auto}.fl-label{color:var(--ink-6);letter-spacing:.06em;text-transform:uppercase;padding:6px 13px 4px;font-size:11px;font-weight:600}.fl-empty{color:var(--ink-4);margin:0;padding:6px 13px;font-size:12px;line-height:1.5}.fl-refused{color:var(--red)}.fl-row{border-bottom:1px solid var(--line-2);width:100%;color:var(--ink);background:0 0;border-left:2px solid #0000;align-items:flex-start;gap:10px;padding:11px 14px;display:flex}.fl-row:hover{color:var(--ink);background:var(--ground-5)}.fl-row-on,.fl-row-on:hover{border-left-color:var(--accent);background:var(--ground-tint)}.fl-dot{background:var(--line-muted);border-radius:50%;flex:none;width:6px;height:6px;margin-top:6px}.fl-dot-live{background:var(--green-dot)}.fl-id{min-width:0;color:var(--ink);white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:13px;font-weight:450;overflow:hidden}.fl-row-on .fl-id{font-weight:600}.fl-meta{color:var(--ink-6);flex:none;font-size:11.5px}.fl-meta-live{color:var(--green)}.fl-nothing{color:var(--ink-3);padding:26px 22px;font-size:13.5px;line-height:1.6}@media (width<=720px){.fl{grid-template-rows:auto minmax(0,1fr);grid-template-columns:minmax(0,1fr);overflow:auto}.fl-side{border-right:0;border-bottom:1px solid var(--line);max-height:34vh}}.sessions-filters{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.sessions-search{flex:1;width:auto;min-width:220px}.sessions-select{width:auto;color:var(--ink-2)}.sessions-id{min-width:0}.sessions-call{min-width:0;color:var(--accent);align-items:center;gap:6px;font-size:13px;font-weight:550;display:flex}.sessions-from{color:var(--ink-4);font-size:12px}.sessions-live{color:var(--green);font-weight:500}.sessions-more{margin-left:auto}.session-title{letter-spacing:-.4px;word-break:break-all;margin:7px 0 10px;font-size:20px;font-weight:650}.session-acts{flex-direction:column;gap:8px;display:flex}.session-buttons{flex-wrap:wrap;gap:8px;display:flex}.session-result{flex-wrap:wrap;align-items:center;gap:7px;display:flex}.session-result-lead{color:var(--ink-2);font-size:12.5px;font-weight:550}.session-result-note{color:var(--ink-4);font-size:12.5px}.session-result-line{flex-basis:100%}.session-path{color:var(--ink-2);font-size:12px}.session-facts .ui-stat{padding:13px 15px}.session-facts .ui-stat-value{line-height:normal}.session-outcome-label{color:var(--ink-4);margin-bottom:5px;font-size:11.5px}.session-outcome{max-width:760px;font-size:13.5px;line-height:1.55}.session-split{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);align-items:start;gap:14px;display:grid}.session-side{flex-direction:column;gap:14px;display:flex}.session-turns{flex-direction:column;gap:13px;padding:14px 16px;display:flex}.session-turn{gap:10px;display:flex}.session-who{width:52px;color:var(--ink-4);flex:none;padding-top:2px;font-size:12px;font-weight:550}.session-who-agent{color:var(--accent-hover)}.session-said{color:var(--ink-2);min-width:0;font-size:13.5px;line-height:1.6}.session-said-agent{color:var(--ink)}.session-interrupted{color:var(--ink-6);font-size:12px}.session-latency{flex-wrap:wrap;gap:14px 22px;padding:14px 16px;display:flex}.session-latency-none{padding:14px 16px}.session-latency-label{color:var(--ink-4);margin-bottom:4px;font-size:11.5px}.session-latency-value{letter-spacing:-.6px;font-size:21px;font-weight:600}.session-latency-max{color:var(--ink-6);margin-top:2px;font-size:11.5px}.session-standing{margin-bottom:5px;font-size:13px;font-weight:550}.session-standing-amber{color:var(--amber)}.session-standing-green{color:var(--green)}.session-standing-red{color:var(--red)}.session-sentence{color:var(--ink-3);margin:0 0 12px;font-size:12.5px;line-height:1.55}.session-sentence:last-child{margin-bottom:0}.session-judges{flex-direction:column;gap:10px;margin:8px 0 12px;display:flex}.session-judge-line{flex-wrap:wrap;align-items:center;gap:7px;display:flex}.session-judge-name{font-size:12.5px;font-weight:550}.session-judge-reason{color:var(--ink-3);margin-top:3px;font-size:12.5px;line-height:1.5}.session-judge-said{color:var(--ink-4)}.session-seq{color:var(--accent);font-size:11.5px}.session-total{margin-left:auto;font-size:13px;font-weight:550}.session-cost{border-top:1px solid var(--line-3);align-items:baseline;gap:12px;padding:10px 16px;display:flex}.session-cost:first-child{border-top:0}.session-cost-model{flex:1;min-width:0;font-size:13px}.session-cost-kind{color:var(--ink-4)}.session-cost-units{color:var(--ink-3);white-space:nowrap;flex:none;font-size:12.5px}.session-cost-eur{text-align:right;white-space:nowrap;flex:none;width:74px;font-size:13px;font-weight:500}.session-note{border-top:1px solid var(--line-3);color:var(--ink-4);padding:10px 16px 12px;font-size:12px;line-height:1.55}.session-player{width:100%;margin-bottom:10px;display:block}.session-consents{padding:4px 16px}.session-consent{border-top:1px solid var(--line-3);padding:11px 0}.session-consent:first-child{border-top:0}.session-consent-join{flex-wrap:wrap;align-items:baseline;gap:10px;display:flex}.session-consent-tool{font-size:13px;font-weight:550}.session-consent-seqs{color:var(--ink-2);font-size:12.5px}.session-consent-id{color:var(--ink-6);font-size:11.5px}.session-consent-said{color:var(--ink-2);margin-top:4px;font-size:13px;line-height:1.5}.session-consent-audience{color:var(--ink-4);margin-top:3px;font-size:12px}.session-prompt{flex-direction:column;gap:8px;padding:14px 16px;display:flex}.session-hash{font-size:12px}.session-log-action{margin-left:auto}.session-log{max-height:720px;overflow:auto}.session-entry{border-top:1px solid var(--line-3);grid-template-columns:34px 64px 128px minmax(0,1fr);gap:10px;padding:9px 16px;scroll-margin:60px;display:grid}.session-entry:first-child{border-top:0}.session-entry-opens{cursor:pointer}.session-entry-opens:hover{background:var(--ground-side)}.session-entry-cited{box-shadow:inset 2px 0 0 var(--accent);background:var(--ground-tint)}.session-entry-seq{color:var(--ink-7);text-align:right;padding-top:1px;font-size:12px}.session-entry-since{font:11.5px var(--face-fixed);color:var(--ink-6);padding-top:1px}.session-entry-type{color:var(--ink-4);word-break:break-word;font-size:12px;font-weight:550}.session-entry-mark{color:var(--ink-6)}.session-entry-turn .session-entry-type{color:var(--ink)}.session-entry-state{background:var(--ground-tint)}.session-entry-state .session-entry-type{color:var(--accent-hover)}.session-entry-tool{background:var(--amber-tint)}.session-entry-tool .session-entry-type{color:var(--amber)}.session-entry-call .session-entry-type{color:var(--green)}.session-entry-payload{min-width:0;color:var(--ink-2);word-break:break-word;font-size:12.5px;line-height:1.55}.session-entry-turn .session-entry-payload{color:var(--ink);font-size:13.5px}.session-entry-quiet .session-entry-payload{color:var(--ink-4)}.session-entry-caret{color:var(--ink-6)}.session-chips{flex-wrap:wrap;gap:5px;margin-top:4px;display:flex}.session-chip{color:var(--ink-4);background:var(--ground-5);white-space:nowrap;border-radius:99px;padding:1px 7px;font-size:11.5px}.session-chip b{color:var(--ink-2);font-weight:550}.session-fields{flex-direction:column;gap:2px;margin-top:6px;display:flex}.session-field{font:11.5px var(--face-fixed);gap:10px;display:flex}.session-field-name{width:220px;color:var(--ink-4);text-overflow:ellipsis;flex:none;overflow:hidden}.session-field-value{min-width:0;color:var(--ink-2);word-break:break-all}@media (width<=900px){.session-split{grid-template-columns:minmax(0,1fr)}.session-entry{grid-template-columns:30px minmax(0,1fr)}.session-entry-since,.session-entry-type,.session-entry-payload{grid-column:2}}.session-attach{margin-top:12px}.session-refused-line{color:var(--red)}.session-details{text-align:left;cursor:pointer;width:100%;color:var(--ink);background:0 0;border:0;align-items:center;gap:10px;padding:13px 16px;display:flex}.session-details:hover{background:var(--ground-side)}.session-details-caret{color:var(--accent);margin-left:auto;font-size:12.5px;font-weight:500}.home-split{grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);align-items:start;gap:14px;display:grid}.home-side{flex-direction:column;gap:14px;display:flex}.home-floor-title{align-items:center;gap:8px;display:flex}.home-floor{flex-direction:column;gap:11px;padding:14px 16px;display:flex}.home-quiet{color:var(--ink-3);font-size:12.5px;line-height:1.55}.home-live{align-items:center;gap:10px;display:flex}.home-live-name{font-size:13px;font-weight:500}.home-live-sub{color:var(--ink-4);font-size:12px}.home-channels{flex-direction:column;gap:12px;padding:14px 16px;display:flex}.home-channel-line{align-items:baseline;gap:8px;margin-bottom:6px;display:flex}.home-channel-name{font-size:12.5px;font-weight:500}.home-channel-share{color:var(--ink-4);margin-left:auto;font-size:12px}.home-steps{padding:6px 8px 10px}.home-step{color:var(--ink);border-radius:9px;align-items:center;gap:10px;padding:8px;display:flex}.home-step:hover{background:var(--ground-side);color:var(--ink)}.home-step-open{cursor:pointer}.home-step-done{background:var(--green-dot);width:16px;height:16px;color:var(--on-accent);border-radius:50%;place-items:center;font-size:10px;display:grid}.home-step-todo{border:1.5px solid var(--line-hover-2);border-radius:50%;width:16px;height:16px}.home-step-name{flex:1;font-size:12.5px;font-weight:500}.home-step-name-done{color:var(--ink-4);font-weight:400;text-decoration:line-through}.home-step-action{color:var(--accent);font-size:12px;font-weight:500}@media (width<=900px){.home-split{grid-template-columns:minmax(0,1fr)}}.home-step-button{text-align:left;width:100%;font:inherit;background:0 0;border:0}.keys-form{flex-wrap:wrap;align-items:flex-end;gap:10px;display:flex}.keys-label-field{flex:1;min-width:200px}.keys-env-select{width:auto}.keys-form-note{color:var(--ink-4);flex-basis:100%;font-size:12.5px}.keys-minted-actions{gap:6px;margin-left:auto;display:flex}.keys-minted-warn{color:var(--amber);padding:10px 16px 12px;font-size:12.5px}.keys-name{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:13.5px;font-weight:550;overflow:hidden}.keys-name-gone{color:var(--ink-4)}.keys-scopes{color:var(--ink-4);min-width:0;font-size:12.5px;line-height:1.5}.keys-revoke{visibility:hidden}.keys-row:hover .keys-revoke,.keys-revoke-sure,.keys-revoke:focus-within{visibility:visible}@media (hover:none){.keys-revoke{visibility:visible}}.prov-hint{color:var(--ink-4);margin-top:10px;font-size:12.5px;line-height:1.6}.prov-row{border-bottom:1px solid var(--line-3);align-items:center;gap:12px;padding:12px 16px;display:grid}.prov-row:hover{background:var(--ground-side)}.prov-name{text-overflow:ellipsis;min-width:0;font-size:13.5px;font-weight:550;overflow:hidden}.prov-note{min-width:0;color:var(--ink-3);align-items:center;gap:10px;font-size:12.5px;display:flex}.prov-note .ui-text-action{margin-left:auto}.prov-kinds{color:var(--ink-4);font-size:12px}.kb-base{align-items:center;gap:10px;margin-left:auto;display:flex}.kb-base-label{color:var(--ink-4);font-size:12.5px}.kb-base-input{background:var(--ground-5);color:var(--ink);border:1px solid #0000;border-radius:7px;padding:3px 9px;font-size:12.5px;font-weight:550}.kb-base-input:focus{border-color:var(--accent);box-shadow:var(--accent-ring)}.kb-here{flex-wrap:wrap;align-items:center;gap:12px;padding:14px 16px;display:flex}.kb-path{color:var(--ink-3);word-break:break-all;font-size:13px}.kb-count{font-size:13px;font-weight:550}.kb-figures{border-bottom:1px solid var(--line-3);gap:22px;padding:14px 16px;display:flex}.kb-figure-label{color:var(--ink-4);margin-bottom:4px;font-size:11.5px}.kb-figure{letter-spacing:-.6px;font-size:21px;font-weight:600}.kb-miss{border-top:1px solid var(--line-3);padding:11px 16px}.kb-miss-asks{color:var(--ink-2);font-size:13px}.kb-miss-why{color:var(--ink-4);margin-top:2px;font-size:12px}.mem-look{align-items:center;gap:8px;min-width:0;margin-left:auto;display:flex}.mem-look .ui-input{width:260px;max-width:100%}.mem-caller{font-size:13px;font-weight:550}.mem-fact{color:var(--ink-2);min-width:0;font-size:13px;line-height:1.5}.mem-gone .mem-fact,.mem-gone .mem-caller{color:var(--ink-6)}.mem-superseded{color:var(--ink-6);font-size:12px}.mem-category{text-align:right}.mem-goldens{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:14px;display:grid}.mem-run{flex-direction:column;align-items:flex-start;gap:12px;padding:14px 16px;display:flex}.mem-say{color:var(--ink-3);margin:0;font-size:12.5px;line-height:1.55}.mem-figures{border-top:1px solid var(--line-2);gap:22px;padding:12px 16px;display:flex}.mem-figure-label{color:var(--ink-4);margin-bottom:4px;font-size:11.5px}.mem-figure{letter-spacing:-.4px;font-size:17px;font-weight:600}.mem-miss{border-top:1px solid var(--line-3);padding:10px 16px}.mem-miss-asks{color:var(--ink-2);font-size:13px}.mem-miss-why{color:var(--ink-4);margin-top:2px;font-size:12px}@media (width<=720px){.mem-goldens{grid-template-columns:minmax(0,1fr)}}.num-row{border-bottom:1px solid var(--line-3);flex-wrap:wrap;align-items:center;gap:12px;padding:13px 16px;display:flex}.num-number{font-size:14px;font-weight:550}.num-arrow{color:var(--ink-6);font-size:13px}.num-agent{color:var(--ink-2);font-size:13.5px}.num-remove,.num-end{margin-left:auto}.num-foot{color:var(--ink-4);padding:11px 16px;font-size:12.5px}.num-ways{margin-left:auto}.num-ways .ui-segment:disabled{cursor:default;opacity:.5}.num-fields{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;padding:14px 16px;display:grid}.num-fields-3{grid-template-columns:repeat(3,minmax(0,1fr))}.num-actions{flex-wrap:wrap;align-items:center;gap:12px;padding:0 16px 14px;display:flex}.num-note{color:var(--ink-4);font-size:12.5px}.num-plan{border-top:1px solid var(--line-2);background:var(--ground-side);padding:14px 16px}.num-plan-done{background:var(--ground)}.num-plan-title{margin-bottom:10px;font-size:13px;font-weight:550}.num-steps{flex-direction:column;gap:6px;margin:0 0 12px;padding:0;list-style:none;display:flex}.num-steps li{font:12.5px var(--face-fixed);color:var(--ink-2);gap:10px;line-height:1.5;display:flex}.num-step-kind{min-width:70px;color:var(--accent-hover);flex:none;font-weight:500}.num-step-text{word-break:break-word;min-width:0}.num-plan-moves{gap:8px;display:flex}.num-carrier{align-items:center;gap:12px;padding:14px 16px;display:flex}.num-kind{color:var(--accent-hover);background:var(--accent-soft);border-radius:7px;flex:none;padding:3px 9px;font-size:11.5px;font-weight:600}.num-carrier-standing{flex:none;font-size:13.5px;font-weight:500}.num-carrier-account{min-width:0;color:var(--ink-4);white-space:nowrap;text-overflow:ellipsis;font-size:12.5px;overflow:hidden}.num-carrier-moves{flex:none;gap:8px;margin-left:auto;display:flex}.num-body{color:var(--ink-2);padding:14px 16px;font-size:13.5px;line-height:1.6}@media (width<=720px){.num-fields,.num-fields-3{grid-template-columns:minmax(0,1fr)}}.num-outbound-group{padding:0 16px 14px}.num-outbound-title{color:var(--ink-2);margin-bottom:3px;font-size:12.5px;font-weight:600}.num-outbound-say{color:var(--ink-4);margin-bottom:10px;font-size:12.5px}.num-fields-4{grid-template-columns:minmax(0,1.4fr) 110px minmax(0,1fr) minmax(0,1fr)}.num-fields-flush{padding:0}@media (width<=720px){.num-fields-4{grid-template-columns:minmax(0,1fr)}}.num-add{border-top:1px solid var(--line-2);background:var(--ground-side)}.num-add-head{align-items:center;gap:10px;padding:12px 16px 0;display:flex}.num-add-close{color:var(--ink-4);margin-left:auto}.num-added{border-top:1px solid var(--line-2);color:var(--green);padding:12px 16px;font-size:13px}.num-hero{flex-direction:column;gap:8px;max-width:560px;padding:28px 24px 26px;display:flex}.num-hero-title{letter-spacing:-.4px;font-size:18px;font-weight:650}.num-hero-say{color:var(--ink-3);margin:0;font-size:13.5px;line-height:1.6}.num-hero-missing{color:var(--amber);margin:0;font-size:13px;line-height:1.6}.num-hero-move{flex-wrap:wrap;align-items:center;gap:12px;margin-top:10px;display:flex}.num-on{color:var(--ink-2);align-items:center;gap:9px;font-size:13.5px;display:flex}.num-on b{color:var(--green);font-weight:600}.num-placed{color:var(--ink-2);font-size:13px}.num-placed a{color:var(--accent);font-weight:500}.num-refused{padding:0 16px 14px}.num-limits{align-items:flex-start;gap:16px;padding:2px 4px;display:flex}.num-limits>div{flex:1;min-width:0}.num-limits-say{color:var(--ink-3);font-size:12.5px;line-height:1.6}.num-limits-who{color:var(--ink-5);margin-top:2px;font-size:12px}.pipe-legs{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px;display:grid}.pipe-leg-head{border-bottom:1px solid var(--line-2);background:var(--ground-side);align-items:center;gap:8px;padding:11px 15px;display:flex}.pipe-leg-vendor{font-size:13px;font-weight:600}.pipe-leg-job{color:var(--ink-4);margin-left:auto;font-size:11.5px}.pipe-leg-body{flex-direction:column;gap:12px;padding:14px 15px;display:flex}.pipe-field+.pipe-field{border-top:1px solid var(--line-2);padding-top:12px}.pipe-label{color:var(--ink-4);margin-bottom:3px;font-size:11.5px}.pipe-value{word-break:break-word;font-size:13.5px;font-weight:550}.pipe-note{color:var(--ink-4);margin:3px 0 0;font-size:12.5px;line-height:1.5}.pipe-refused{color:var(--red);font-size:12.5px;line-height:1.5}.pipe-anatomy{padding:6px 16px 14px}.pipe-turn-row{border-bottom:1px solid var(--line-3);grid-template-columns:120px minmax(0,1fr) 72px;align-items:center;gap:12px;padding:11px 0;display:grid}.pipe-turn-row-last{border-bottom:0}.pipe-turn-label{font-size:13px;font-weight:500}.pipe-track{background:var(--ground-5);border-radius:99px;height:7px;display:block;overflow:hidden}.pipe-bar{border-radius:99px;height:100%;display:block}.pipe-ms{text-align:right;font-size:12.5px;font-weight:500}.pipe-ms-none{color:var(--ink-6);font-weight:400}.pipe-controls{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px 16px;padding:14px 16px;display:grid}.pipe-control-wide{grid-column:1/-1}.pipe-stage{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;display:grid}.pipe-save{flex-wrap:wrap;align-items:center;gap:12px;padding:0 16px 14px;display:flex}.pipe-save-note{color:var(--ink-4);font-size:12.5px}.pipe-save-error{color:var(--red);font-size:12.5px}.pipe-turned{align-items:center;gap:12px;padding:11px 16px;display:flex}.pipe-turned+.pipe-turned{border-top:1px solid var(--line-3)}.pipe-turned-field{width:110px;color:var(--ink-4);flex:none;font-size:12.5px}.pipe-turned-value{word-break:break-word;flex:1;min-width:0;font-size:13px}.terminal{flex:1;padding:12vh 22px 48px;overflow:auto}.terminal-card{border:1px solid var(--line);background:var(--ground);max-width:460px;box-shadow:var(--shadow-card);border-radius:14px;margin:0 auto;padding:26px 24px 24px}.terminal-mark{width:auto;height:22px;margin-bottom:18px;display:block}.terminal-title{letter-spacing:-.5px;margin:0 0 7px;font-size:22px;font-weight:650}.terminal-lede{color:var(--ink-3);margin:0 0 20px;font-size:14px;line-height:1.55}.terminal-refused{color:var(--red);margin:14px 0 0;font-size:13px;line-height:1.5}.team-invite{border-bottom:1px solid var(--line-2);background:var(--ground-side);padding:14px 16px}.team-roles{color:var(--ink-4);flex-wrap:wrap;align-items:baseline;gap:4px;margin-top:10px;font-size:12.5px;line-height:1.6;display:flex}.team-invite-close{margin-left:auto}.team-editable{text-align:left;cursor:pointer;background:0 0;border:0;border-bottom:1px dashed #0000;justify-self:start;max-width:100%;padding:0;font-size:13px}.team-editable:hover{border-bottom-color:var(--line-hover)}.team-sure{color:var(--ink-3);font-size:12.5px}.team-role{color:var(--ink-2)}.team-agents{color:var(--ink-4)}.team-link-moves{gap:8px;margin-left:auto;display:flex}.team-role-opens{line-height:1.5}.team-sso-values{flex-direction:column;gap:9px;padding:14px 16px;display:flex}.team-sso-form{flex-direction:column;gap:12px;padding:14px 16px;display:flex}.team-sso-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:end;gap:12px;display:grid}.team-sso-required{align-items:center;gap:10px;height:36px;display:flex}.team-sso-required-words{color:var(--ink-2);flex:1;font-size:13px}.team-sso-moves{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.team-sso-redirect{border-top:1px solid var(--line-2)}.team-sso-redirect-head{justify-content:space-between;align-items:center;gap:10px;padding:10px 16px;display:flex}@media (width<=720px){.team-sso-grid{grid-template-columns:minmax(0,1fr)}}.usage-call{color:var(--accent);min-width:0;font-size:13px}.usage-right{text-align:right}.usage-cost{text-align:right;white-space:nowrap;font-size:13px;font-weight:500}.usage-bar{align-self:center;padding:0 14px}.widget-copy{margin-left:auto}.widget-endpoints{border-top:1px solid var(--line-2);color:var(--ink-4);padding:11px 16px 13px;font-size:12.5px;line-height:1.6}.widget-endpoints a{color:var(--accent)}.widget-split{grid-template-columns:minmax(0,1fr) 280px;align-items:start;gap:14px;display:grid}.widget-fields{flex-direction:column;gap:13px;padding:14px 16px;display:flex}.widget-pair{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;display:grid}.widget-accent-label{color:var(--ink-2);margin-bottom:7px;font-size:12.5px;font-weight:500}.widget-accents{gap:7px;display:flex}.widget-accent{cursor:pointer;border:0;border-radius:8px;width:26px;height:26px;padding:0}.widget-toggle{align-items:center;gap:10px;display:flex}.widget-toggle-label{color:var(--ink-2);flex:1;font-size:13px}.widget-preview{border:1px solid var(--line);background:var(--ground-side);border-radius:12px;flex-direction:column;align-items:center;gap:12px;min-width:0;padding:16px;display:flex}.widget-preview-label{color:var(--ink-4);font-size:11.5px}.widget-stage{justify-content:center;width:100%;min-height:120px;display:flex}.widget-open{color:var(--accent);font-size:12.5px;font-weight:500}.widget-blank{background:var(--ground);height:100vh;position:relative}.widget-blank-mark{color:var(--ink-6);font-size:11px;position:absolute;top:12px;left:16px}.widget-blank-refused{color:var(--red);margin:0;font-size:12.5px;position:absolute;top:36px;left:16px}@media (width<=760px){.widget-split,.widget-pair{grid-template-columns:minmax(0,1fr)}}.ring-stack{right:20px;bottom:calc(20px + env(safe-area-inset-bottom,0px));z-index:60;pointer-events:none;flex-direction:column;gap:10px;width:min(360px,100vw - 32px);display:flex;position:fixed}.ring{pointer-events:auto;border:1px solid var(--line);background:var(--ground);border-radius:14px;animation:.28s cubic-bezier(.2,.9,.3,1.2) ring-arrive;position:relative;box-shadow:0 1px 2px #1010140a,0 12px 32px -8px #1010142e}.ring:before{content:"";background:var(--accent);border-radius:0 3px 3px 0;width:3px;position:absolute;top:12px;bottom:12px;left:0}.ring-ended{opacity:.7}.ring-ended:before{background:var(--line-muted)}@keyframes ring-arrive{0%{opacity:0;transform:translateY(12px)scale(.97)}to{opacity:1;transform:none}}.ring-body{text-align:left;cursor:pointer;width:100%;font:inherit;color:var(--ink);background:0 0;border:0;border-radius:14px;align-items:center;gap:12px;padding:13px 16px;display:flex}.ring-body:hover{background:var(--ground-tint)}.ring-icon{background:var(--accent-soft);width:36px;height:36px;color:var(--accent);border-radius:50%;flex:none;place-items:center;display:grid;position:relative}.ring-icon:after{content:"";border:2px solid var(--accent);border-radius:50%;animation:1.6s ease-out infinite ring-pulse;position:absolute;inset:0}.ring-icon-ended{background:var(--ground-5);color:var(--ink-4)}.ring-icon-ended:after{display:none}@keyframes ring-pulse{0%{opacity:.6;transform:scale(1)}to{opacity:0;transform:scale(1.55)}}.ring-words{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.ring-kicker{letter-spacing:.04em;text-transform:uppercase;color:var(--accent);font-size:11px;font-weight:600}.ring-ended .ring-kicker{color:var(--ink-4)}.ring-who{white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:600;overflow:hidden}.ring-sub{color:var(--ink-4);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.ring-top{align-items:baseline;gap:8px;display:flex}.ring-watch{color:var(--accent);flex:none;margin-left:auto;font-size:12px;font-weight:550}.ring-close{border:1px solid var(--line);background:var(--ground);width:24px;height:24px;color:var(--ink-5);cursor:pointer;border-radius:50%;font-size:17px;line-height:1;display:none;position:absolute;top:-9px;right:-9px;box-shadow:0 2px 6px #1010141f}.ring:hover .ring-close,.ring-close:focus-visible{place-items:center;display:grid}.ring-close:hover{background:var(--ground-5);color:var(--ink)}@media (prefers-reduced-motion:reduce){.ring,.ring-icon:after{animation:none}}.frame{background:var(--ground);min-height:100vh;display:flex}.frame-main{flex-direction:column;flex:1;min-width:0;height:100vh;display:flex;overflow:hidden}.frame-screen{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.side{width:var(--side);border-right:1px solid var(--line);background:var(--ground-side);flex-direction:column;flex:none;height:100vh;display:flex;position:sticky;top:0}.side-folded{width:var(--side-folded)}.side-workspace-wrap{flex-direction:column;display:flex}.side-workspace{cursor:pointer;text-align:left;color:var(--ink);background:0 0;border:0;border-radius:9px;align-items:center;gap:9px;margin:12px 10px 8px;padding:7px 8px;display:flex}.side-workspace:hover{background:var(--ground-5)}.side-folded .side-workspace{justify-content:center;margin:12px 6px 8px;padding:7px 0}.side-tile{background:var(--accent);width:24px;height:24px;color:var(--on-accent);border-radius:7px;flex:none;place-items:center;font-size:11px;font-weight:600;display:grid}.side-label{flex:1;min-width:0}.side-folded .side-label,.side-folded .side-caret,.side-folded .side-kbd,.side-folded .side-badge{display:none}.side-org{letter-spacing:-.1px;white-space:nowrap;text-overflow:ellipsis;font-size:13.5px;font-weight:600;display:block;overflow:hidden}.side-org-sub{color:var(--ink-4);font-size:11.5px;display:block}.side-caret{color:var(--ink-6);flex:none;font-size:11px}.side-search-wrap{padding:0 10px 10px}.side-folded .side-search-wrap{padding:0 6px 10px}.side-search{border:1px solid var(--line-control);background:var(--ground);width:100%;height:34px;color:var(--ink-4);cursor:pointer;text-align:left;border-radius:9px;align-items:center;gap:8px;padding:0 10px;font-size:13px;display:flex}.side-search:hover{border-color:var(--line-hover);color:var(--ink-2)}.side-folded .side-search{justify-content:center;padding:0}.side-kbd{color:var(--ink-6);flex:none;font-size:11px}.side-nav{flex:1;padding:0 10px;overflow:auto}.side-group{color:var(--ink-4);padding:14px 9px 5px;font-size:11.5px;font-weight:500}.side-group-first{padding-top:6px}.side-folded .side-group{background:var(--line-control);height:1px;margin:12px 8px 8px;padding:0;font-size:0;overflow:hidden}.side-link{color:var(--ink-2);border-radius:9px;align-items:center;gap:10px;margin-bottom:1px;padding:7px 9px;font-size:13.5px;font-weight:450;display:flex}.side-link:hover{color:var(--ink-2);background:var(--ground-5)}.side-folded .side-link{justify-content:center;padding:8px 0}.side-link-on,.side-link-on:hover{background:var(--accent-selected);color:var(--accent-hover);font-weight:550}.side-icon{color:var(--ink-4);flex:none;place-items:center;display:grid}.side-link-on .side-icon{color:var(--accent)}.side-icon-live{color:var(--green-dot)}.side-name{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.side-name-agent{font-size:13px}.side-folded .side-name{display:none}.side-badge{color:var(--ink-4);flex:none;font-size:11.5px}.side-badge-live{color:var(--green);background:var(--green-soft);border-radius:99px;padding:1px 7px;font-weight:550}.side-none{color:var(--ink-6);padding:4px 9px;font-size:12.5px}.side-foot{border-top:1px solid var(--line);align-items:center;gap:9px;padding:10px;display:flex}.side-folded .side-foot{flex-direction:column}.side-user{flex:1;align-items:center;gap:9px;min-width:0;display:flex}.side-folded .side-user{flex:none}.side-user-avatar{background:var(--ink);width:26px;height:26px;color:var(--on-accent);border-radius:8px;flex:none;place-items:center;font-size:10.5px;font-weight:600;display:grid}.side-user-name{white-space:nowrap;text-overflow:ellipsis;font-size:12.5px;font-weight:500;display:block;overflow:hidden}.side-user-role{color:var(--ink-4);font-size:11.5px;display:block}.side-fold{border:1px solid var(--line-control);background:var(--ground);width:28px;height:28px;color:var(--ink-4);cursor:pointer;border-radius:8px;flex:none;place-items:center;display:grid}.side-fold:hover{border-color:var(--line-hover);color:var(--ink)}.side-orgs{z-index:40;background:var(--ground);border:1px solid var(--line-control);max-height:60vh;box-shadow:var(--shadow-pop);border-radius:12px;padding:6px;position:absolute;top:54px;left:10px;right:10px;overflow:auto}.side-orgs-label{color:var(--ink-4);padding:7px 8px 5px;font-size:11.5px;font-weight:500}.side-org-row{cursor:pointer;text-align:left;width:100%;color:var(--ink);background:0 0;border:0;border-radius:9px;align-items:center;gap:9px;padding:7px 8px;font-size:13px;display:flex}.side-org-row:hover{background:var(--ground-side)}.side-org-row:disabled{cursor:default}.side-org-role{color:var(--ink-4);margin-left:auto;font-size:11.5px}.top{height:var(--head);border-bottom:1px solid var(--line);background:var(--ground);z-index:5;flex:none;align-items:center;gap:10px;padding:0 22px;display:flex}.top-crumb{color:var(--ink-6);white-space:nowrap;font-size:13px}.top-title{letter-spacing:-.2px;white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:600;overflow:hidden}.top-right{align-items:center;gap:8px;margin-left:auto;display:flex;position:relative}.top-leave{border:1px solid var(--line-control);background:var(--ground);height:30px;color:var(--ink-2);cursor:pointer;border-radius:8px;padding:0 11px;font-size:12.5px;font-weight:500}.top-leave:hover{border-color:var(--line-hover)}.switch-trigger{border:1px solid var(--line-control);background:var(--ground);cursor:pointer;height:30px;color:var(--ink);border-radius:8px;align-items:center;gap:8px;padding:0 9px;display:flex}.switch-trigger-open{border-color:var(--accent-line)}.switch-agent{white-space:nowrap;font-size:12.5px;font-weight:550}.switch-caret{color:var(--ink-6);font-size:10px}.switch-panel{background:var(--ground);border:1px solid var(--line-control);width:384px;max-width:calc(100vw - 32px);box-shadow:var(--shadow-pop);z-index:40;border-radius:14px;position:absolute;top:38px;right:0;overflow:hidden}.switch-who{border-bottom:1px solid var(--line-2);align-items:center;gap:12px;padding:15px 16px;display:flex}.switch-who-name{letter-spacing:-.2px;font-size:14px;font-weight:600}.switch-who-sub{color:var(--ink-4);white-space:nowrap;text-overflow:ellipsis;font-size:12.5px;overflow:hidden}.switch-where{border-bottom:1px solid var(--line-2);flex-direction:column;gap:11px;padding:13px 16px;display:flex}.switch-label{color:var(--ink-4);margin-bottom:6px;font-size:11.5px;font-weight:500}.switch-choices{flex-wrap:wrap;gap:5px;display:flex}.switch-note{color:var(--ink-4);margin-top:6px;font-size:12px;line-height:1.5}.switch-agents{max-height:50vh;padding:13px 16px 15px;overflow:auto}.switch-agents .switch-label{margin-bottom:9px}.switch-list{flex-direction:column;gap:7px;display:flex}.switch-card{border:1px solid var(--line-2);background:var(--ground-side);cursor:pointer;text-align:left;border-radius:10px;align-items:center;gap:10px;width:100%;padding:9px 11px;display:flex}.switch-card:hover{border-color:var(--accent-line);background:var(--ground-tint)}.switch-card:disabled{cursor:default;border-color:var(--line-2);background:var(--ground-side)}.switch-card-here{border-color:var(--accent-line);background:var(--ground-tint)}.switch-card-name{color:var(--ink);font-size:13.5px;font-weight:600;display:block}.switch-card-sub{color:var(--ink-4);font-size:12px;display:block}.switch-card-open{color:var(--accent);flex:none;font-size:12.5px;font-weight:550}.switch-card:disabled .switch-card-open{color:var(--ink-6)}.switch-looking{border-bottom:1px solid var(--line-2);color:var(--ink-2);background:var(--amber-tint);align-items:center;gap:10px;padding:11px 16px;font-size:12.5px;display:flex}.switch-empty{color:var(--ink-4);font-size:12.5px;line-height:1.55}.agenthead{flex-wrap:wrap;flex:none;align-items:center;gap:14px;padding:12px 22px 0;display:flex}.agenthead-name{align-items:center;gap:9px;display:flex}.agenthead-slug{letter-spacing:-.3px;font-size:15px;font-weight:650}.agenthead-status{border-radius:99px;padding:2px 8px;font-size:12px;font-weight:500}.agenthead-doors{color:var(--ink-4);font-size:12.5px}.agenttabs{border-bottom:1px solid var(--line);flex:none;gap:2px;padding:10px 22px 0;display:flex;overflow-x:auto}.agenttab{white-space:nowrap;height:36px;color:var(--ink-3);background:0 0;border-bottom:2px solid #0000;flex:none;align-items:center;margin-bottom:-1px;padding:0 12px;font-size:13px;font-weight:450;display:flex}.agenttab:hover{color:var(--ink)}.agenttab-on,.agenttab-on:hover{color:var(--ink);border-bottom-color:var(--accent);font-weight:600}.missing{max-width:640px;color:var(--ink-3);padding:26px 22px;font-size:13.5px;line-height:1.6}.palette-veil{z-index:60;background:#1010143d;justify-content:center;align-items:flex-start;padding:12vh 16px 16px;display:flex;position:fixed;inset:0}.palette{background:var(--ground);border:1px solid var(--line-control);width:560px;max-width:100%;box-shadow:var(--shadow-pop);border-radius:14px;overflow:hidden}.palette-input-row{border-bottom:1px solid var(--line-2);color:var(--ink-4);align-items:center;gap:10px;padding:0 16px;display:flex}.palette-input{min-width:0;height:48px;color:var(--ink);background:0 0;border:0;flex:1;font-size:14px}.palette-list{max-height:52vh;padding:6px;overflow:auto}.palette-group{color:var(--ink-4);padding:8px 10px 4px;font-size:11.5px;font-weight:500}.palette-item{text-align:left;cursor:pointer;width:100%;color:var(--ink);background:0 0;border:0;border-radius:9px;align-items:center;gap:10px;padding:8px 10px;font-size:13.5px;display:flex}.palette-item-on{background:var(--accent-selected);color:var(--accent-hover)}.palette-item-sub{color:var(--ink-4);white-space:nowrap;text-overflow:ellipsis;max-width:55%;margin-left:auto;font-size:12px;overflow:hidden}.palette-none{color:var(--ink-4);padding:18px 12px;font-size:13px}@media (width<=720px){.side:not(.side-folded){width:var(--side-folded)}.side:not(.side-folded) .side-label,.side:not(.side-folded) .side-caret,.side:not(.side-folded) .side-kbd,.side:not(.side-folded) .side-badge,.side:not(.side-folded) .side-name{display:none}.side:not(.side-folded) .side-link{justify-content:center;padding:8px 0}.side:not(.side-folded) .side-group{background:var(--line-control);height:1px;margin:12px 8px 8px;padding:0;font-size:0;overflow:hidden}.side:not(.side-folded) .side-foot{flex-direction:column}.top{padding:0 16px}.switch-agent,.top-crumb{display:none}}
@@ -1,15 +0,0 @@
1
- /** `pinecall ui [agent]`: the console on 127.0.0.1 for the life of the command, opened in this machine's browser. */
2
- import type { Group } from "../groups.js";
3
- export declare const group: Group;
4
- /** What ui can be told besides the argv: where to print, and which browser to open. Tests only. */
5
- export interface Opening {
6
- out?: NodeJS.WritableStream;
7
- err?: NodeJS.WritableStream;
8
- open?: (url: string) => void;
9
- env?: NodeJS.ProcessEnv;
10
- files?: string;
11
- }
12
- /** Serve, open, wait, close. The org key is read once and spent only by the server, never printed. */
13
- export declare function ui(argv: string[], how?: Opening): Promise<number>;
14
- export declare function consoleFiles(): string;
15
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/ui/index.ts"],"names":[],"mappings":"AAAA,qHAAqH;AAOrH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAoB1C,eAAO,MAAM,KAAK,EAAE,KAcnB,CAAC;AAEF,mGAAmG;AACnG,MAAM,WAAW,OAAO;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IAC5B,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,sGAAsG;AACtG,wBAAsB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,GAAE,OAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAuD3E;AAWD,wBAAgB,YAAY,IAAI,MAAM,CAMrC"}
@@ -1,117 +0,0 @@
1
- /** `pinecall ui [agent]`: the console on 127.0.0.1 for the life of the command, opened in this machine's browser. */
2
- import { existsSync } from "node:fs";
3
- import { fileURLToPath } from "node:url";
4
- import { slugOf } from "../../runtime/connect.js";
5
- import { doorLine, theDoor } from "../env.js";
6
- import { agentOfThisDirectory, DEFAULT_AGENTS } from "../load.js";
7
- import { headless, openInBrowser } from "./browser.js";
8
- import { chattingFrom } from "./chatting.js";
9
- import { driftingFrom } from "./drifting.js";
10
- import { ownDoors } from "./doors.js";
11
- import { knowingFrom } from "./knowing.js";
12
- import { promotingFrom } from "./promoting.js";
13
- import { rememberingFrom } from "./remembering.js";
14
- import { reproducingFrom } from "./reproducing.js";
15
- import { LocalConsole } from "./server.js";
16
- import { simulatingFrom } from "./simulating.js";
17
- import { testingFrom } from "./testing.js";
18
- const USAGE = "usage: pinecall ui [agent]";
19
- // A checkout runs everything else from its sources; the console is the one thing that has to be
20
- // bundled first, because a browser reads no TypeScript. The sentence names the command.
21
- const NOT_BUILT = "the console is not built: run scripts/build once, then pinecall ui";
22
- export const group = {
23
- purpose: "the console: this gateway's agents, their calls and logs as they happen, evals, and a page to talk",
24
- usage: `${USAGE}
25
-
26
- Opens the console on this gateway, landing on the agent of this directory — the class in
27
- ${DEFAULT_AGENTS[0]} — or on the agent named, or on the list of every agent the gateway holds when
28
- there is neither. The console is served on 127.0.0.1 for as long as the command runs and opened
29
- in this machine's browser: Talk joins the agent's room with the browser's microphone, Calls
30
- follows every call as it happens, Sessions reads the finished ones, Evals and Pipeline read
31
- their doors. Ctrl-C here closes the port with the command.
32
-
33
- The key never reaches the browser: this process signs every request the console makes, under a
34
- URL only it printed. Runs where a browser is — over ssh or with no display it says so and exits 2.`,
35
- run: ui,
36
- };
37
- /** Serve, open, wait, close. The org key is read once and spent only by the server, never printed. */
38
- export async function ui(argv, how = {}) {
39
- const out = how.out ?? process.stdout;
40
- const err = how.err ?? process.stderr;
41
- const env = how.env ?? process.env;
42
- if (argv[0]?.startsWith("-")) {
43
- out.write(`${USAGE}\n`);
44
- return 2;
45
- }
46
- const door = theDoor(env, err);
47
- if (door === undefined)
48
- return 2;
49
- const why = headless(env);
50
- if (why !== null) {
51
- err.write(`ui needs a browser on this machine and ${why}: run it where the screen is\n`);
52
- return 2;
53
- }
54
- const here = await agentOfThisDirectory();
55
- const agent = argv[0] ?? here;
56
- const files = how.files ?? consoleFiles();
57
- if (!existsSync(files)) {
58
- err.write(`${NOT_BUILT}\n`);
59
- return 2;
60
- }
61
- // A simulation or a suite started from the page mounts the class of THIS directory in this
62
- // process and prints here, exactly as `pinecall simulate` and `pinecall test` would; the page
63
- // watches the call's log, or the run's row.
64
- const chatting = chattingFrom(door, here, out);
65
- const served = await LocalConsole.open(door, files, ownDoors({
66
- simulating: simulatingFrom(door, here, out),
67
- testing: testingFrom(door, here, out),
68
- chatting,
69
- knowing: knowingFrom(door, here),
70
- remembering: rememberingFrom(door, here),
71
- promoting: promotingFrom(door, here, out),
72
- drifting: driftingFrom(door),
73
- reproducing: reproducingFrom(),
74
- }));
75
- const at = agent === null ? served.url : served.at(`a/${agent}`);
76
- // Which gateway and which of the four places the key came from: the one line that answers
77
- // "why is it talking to that box" before anybody has to grep for an exported name.
78
- out.write(`${doorLine(door)}\n`);
79
- out.write(`${agent ?? "console"} · ${door.url} · ${at}\n`);
80
- (how.open ?? openInBrowser)(at);
81
- const hungUp = interrupted();
82
- try {
83
- await hungUp.happened;
84
- }
85
- finally {
86
- hungUp.stop();
87
- await chatting.close();
88
- await served.close();
89
- }
90
- return 0;
91
- }
92
- // Named by the same rule `run` registers it under, read from the same file, so the two verbs never
93
- // The console is a browser program inside this package: its source is src/cli/ui/console and vite
94
- // writes its build to dist/cli/ui/console, which is what `files` publishes. So from the compiled
95
- // verb the page is the sibling directory, and from the source under a loader it is the same path
96
- // in dist — one of the two exists, and a tree where neither does was never built.
97
- // Beside this module sits `console/` twice over: in the published package it is the BUILT console,
98
- // and in a checkout it is the SOURCE, whose index.html points at `main.tsx` — TypeScript, which no
99
- // browser runs, and which served a blank page for as long as the check was `existsSync` alone.
100
- // What tells them apart is that source file, so that is what is asked about.
101
- export function consoleFiles() {
102
- const beside = fileURLToPath(new URL("console/", import.meta.url));
103
- if (existsSync(beside) && !existsSync(fileURLToPath(new URL("console/main.tsx", import.meta.url)))) {
104
- return beside;
105
- }
106
- return fileURLToPath(new URL("../../../dist/cli/ui/console/", import.meta.url));
107
- }
108
- /** Ctrl-C, as a promise that resolves once, and the handle that unhooks it. */
109
- function interrupted() {
110
- let hungUp = () => undefined;
111
- const happened = new Promise((resolve) => {
112
- hungUp = () => resolve();
113
- process.once("SIGINT", hungUp);
114
- });
115
- return { happened, stop: () => process.off("SIGINT", hungUp) };
116
- }
117
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/ui/index.ts"],"names":[],"mappings":"AAAA,qHAAqH;AAErH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE9C,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,KAAK,GAAG,4BAA4B,CAAC;AAE3C,gGAAgG;AAChG,wFAAwF;AACxF,MAAM,SAAS,GAAG,oEAAoE,CAAC;AAEvF,MAAM,CAAC,MAAM,KAAK,GAAU;IAC1B,OAAO,EAAE,oGAAoG;IAC7G,KAAK,EAAE,GAAG,KAAK;;;IAGb,cAAc,CAAC,CAAC,CAAC;;;;;;;qGAOgF;IACnG,GAAG,EAAE,EAAE;CACR,CAAC;AAWF,sGAAsG;AACtG,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC,IAAc,EAAE,GAAG,GAAY,EAAE;IACxD,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;IACtC,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;IACtC,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACnC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;QACxB,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC/B,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,CAAC,CAAC;IACjC,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjB,GAAG,CAAC,KAAK,CAAC,0CAA0C,GAAG,gCAAgC,CAAC,CAAC;QACzF,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,oBAAoB,EAAE,CAAC;IAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAC9B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,YAAY,EAAE,CAAC;IAC1C,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,GAAG,CAAC,KAAK,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC;QAC5B,OAAO,CAAC,CAAC;IACX,CAAC;IACD,2FAA2F;IAC3F,8FAA8F;IAC9F,4CAA4C;IAC5C,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,CACpC,IAAI,EACJ,KAAK,EACL,QAAQ,CAAC;QACP,UAAU,EAAE,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC;QAC3C,OAAO,EAAE,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC;QACrC,QAAQ;QACR,OAAO,EAAE,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC;QAChC,WAAW,EAAE,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC;QACxC,SAAS,EAAE,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC;QACzC,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC;QAC5B,WAAW,EAAE,eAAe,EAAE;KAC/B,CAAC,CACH,CAAC;IACF,MAAM,EAAE,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;IACjE,0FAA0F;IAC1F,mFAAmF;IACnF,GAAG,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,IAAI,SAAS,MAAM,IAAI,CAAC,GAAG,MAAM,EAAE,IAAI,CAAC,CAAC;IAC3D,CAAC,GAAG,CAAC,IAAI,IAAI,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,WAAW,EAAE,CAAC;IAC7B,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,QAAQ,CAAC;IACxB,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,IAAI,EAAE,CAAC;QACd,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;QACvB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,mGAAmG;AACnG,kGAAkG;AAClG,iGAAiG;AACjG,iGAAiG;AACjG,kFAAkF;AAClF,mGAAmG;AACnG,mGAAmG;AACnG,+FAA+F;AAC/F,6EAA6E;AAC7E,MAAM,UAAU,YAAY;IAC1B,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,UAAU,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACnE,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,kBAAkB,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACnG,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,aAAa,CAAC,IAAI,GAAG,CAAC,+BAA+B,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAClF,CAAC;AAED,+EAA+E;AAC/E,SAAS,WAAW;IAClB,IAAI,MAAM,GAAG,GAAS,EAAE,CAAC,SAAS,CAAC;IACnC,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAC7C,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;AACjE,CAAC"}
@@ -1,8 +0,0 @@
1
- /** A refusal from one of the console's own doors: a sentence for the page, and the status it travels under. */
2
- /** Thrown by a door of this process; the server writes it as `{detail}` under `status`, as FastAPI would. */
3
- export declare class Refused extends Error {
4
- readonly status: number;
5
- readonly name = "Refused";
6
- constructor(status: number, message: string);
7
- }
8
- //# sourceMappingURL=refused.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"refused.d.ts","sourceRoot":"","sources":["../../../src/cli/ui/refused.ts"],"names":[],"mappings":"AAAA,+GAA+G;AAE/G,6GAA6G;AAC7G,qBAAa,OAAQ,SAAQ,KAAK;IAI9B,QAAQ,CAAC,MAAM,EAAE,MAAM;IAHzB,SAAkB,IAAI,aAAa;IAEnC,YACW,MAAM,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EAGhB;CACF"}
@@ -1,11 +0,0 @@
1
- /** A refusal from one of the console's own doors: a sentence for the page, and the status it travels under. */
2
- /** Thrown by a door of this process; the server writes it as `{detail}` under `status`, as FastAPI would. */
3
- export class Refused extends Error {
4
- status;
5
- name = "Refused";
6
- constructor(status, message) {
7
- super(message);
8
- this.status = status;
9
- }
10
- }
11
- //# sourceMappingURL=refused.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"refused.js","sourceRoot":"","sources":["../../../src/cli/ui/refused.ts"],"names":[],"mappings":"AAAA,+GAA+G;AAE/G,6GAA6G;AAC7G,MAAM,OAAO,OAAQ,SAAQ,KAAK;IAIrB,MAAM;IAHC,IAAI,GAAG,SAAS,CAAC;IAEnC,YACW,MAAc,EACvB,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;sBAHN,MAAM;IAIjB,CAAC;CACF"}
@@ -1,22 +0,0 @@
1
- /** The local server behind `pinecall ui`: the console's files and the gateway's doors, under one nonce on 127.0.0.1. */
2
- import type { Door } from "../testing/gateway.js";
3
- import type { OwnDoor } from "./doors.js";
4
- /**
5
- * The console's server for the life of one command. Under its nonce it serves the built console
6
- * and forwards `v1/*` to the gateway with the org key on the header; outside the nonce it answers
7
- * 404 and nothing else. The key is a field of this object and is written into exactly one place:
8
- * the authorization header of a request this process makes.
9
- */
10
- export declare class LocalConsole {
11
- #private;
12
- private constructor();
13
- /** Bind the loopback on a free port and serve the console in `files` for this door. */
14
- static open(door: Door, files: string, own?: OwnDoor[]): Promise<LocalConsole>;
15
- /** Where the console is: the loopback, the port, the nonce. The one URL that answers anything. */
16
- get url(): string;
17
- /** Where one screen of the console is, by the path the console routes. */
18
- at(path: string): string;
19
- /** Close every socket and the port. After this, nothing answers at `url`. */
20
- close(): Promise<void>;
21
- }
22
- //# sourceMappingURL=server.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/cli/ui/server.ts"],"names":[],"mappings":"AAAA,wHAAwH;AASxH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAoC1C;;;;;GAKG;AACH,qBAAa,YAAY;;IAQvB,OAAO,eAYN;IAED,uFAAuF;IACvF,OAAa,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,GAAE,OAAO,EAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CAIvF;IAED,kGAAkG;IAClG,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,0EAA0E;IAC1E,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvB;IAED,6EAA6E;IACvE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAG3B;CAqHF"}