@unlikeotherai/unloved 0.3.0 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js
CHANGED
|
@@ -46,8 +46,9 @@ async function getVersion() {
|
|
|
46
46
|
// src/commands/start.ts
|
|
47
47
|
import { existsSync as existsSync2 } from "fs";
|
|
48
48
|
import { createConnection } from "net";
|
|
49
|
-
import { resolve as resolve6, dirname as
|
|
49
|
+
import { resolve as resolve6, dirname as dirname3 } from "path";
|
|
50
50
|
import { fileURLToPath as fileURLToPath2 } from "url";
|
|
51
|
+
import { execFileSync as execFileSync3 } from "child_process";
|
|
51
52
|
|
|
52
53
|
// ../server/dist/index.js
|
|
53
54
|
import { createServer as createHttpServer } from "http";
|
|
@@ -76,7 +77,10 @@ import { execFile as execFile2 } from "child_process";
|
|
|
76
77
|
import { promisify as promisify2 } from "util";
|
|
77
78
|
import { Router as Router4 } from "express";
|
|
78
79
|
import { WebSocketServer } from "ws";
|
|
80
|
+
import { chmodSync, statSync } from "fs";
|
|
79
81
|
import { execFileSync } from "child_process";
|
|
82
|
+
import { createRequire } from "module";
|
|
83
|
+
import { dirname as dirname2, join } from "path";
|
|
80
84
|
import { spawn } from "node-pty";
|
|
81
85
|
var configRouter = Router();
|
|
82
86
|
var getConfigPath = (homeDir) => resolve2(homeDir, "config.json");
|
|
@@ -327,20 +331,28 @@ try {
|
|
|
327
331
|
tmuxBin = execFileSync("which", ["tmux"], { encoding: "utf-8" }).trim();
|
|
328
332
|
} catch {
|
|
329
333
|
}
|
|
334
|
+
try {
|
|
335
|
+
const req = createRequire(import.meta.url);
|
|
336
|
+
const ptyPkgRoot = dirname2(dirname2(req.resolve("node-pty")));
|
|
337
|
+
const helper = join(ptyPkgRoot, "prebuilds", `${process.platform}-${process.arch}`, "spawn-helper");
|
|
338
|
+
const st = statSync(helper);
|
|
339
|
+
if (!(st.mode & 73)) chmodSync(helper, st.mode | 493);
|
|
340
|
+
} catch {
|
|
341
|
+
}
|
|
330
342
|
var entries = /* @__PURE__ */ new Map();
|
|
331
343
|
var GRACE_MS = 6e4;
|
|
332
344
|
function sendJson(ws, msg) {
|
|
333
345
|
ws.send(JSON.stringify(msg));
|
|
334
346
|
}
|
|
335
|
-
function attach(sessionName, ws) {
|
|
347
|
+
function attach(sessionName, ws, initialCols = 120, initialRows = 30) {
|
|
336
348
|
let entry = entries.get(sessionName);
|
|
337
349
|
if (!entry) {
|
|
338
350
|
let pty;
|
|
339
351
|
try {
|
|
340
352
|
pty = spawn(tmuxBin, ["attach-session", "-t", sessionName], {
|
|
341
353
|
name: "xterm-256color",
|
|
342
|
-
cols:
|
|
343
|
-
rows:
|
|
354
|
+
cols: initialCols,
|
|
355
|
+
rows: initialRows,
|
|
344
356
|
cwd: process.env.HOME ?? "/",
|
|
345
357
|
env: { ...process.env }
|
|
346
358
|
});
|
|
@@ -373,6 +385,7 @@ function attach(sessionName, ws) {
|
|
|
373
385
|
clearTimeout(entry.graceTimer);
|
|
374
386
|
entry.graceTimer = null;
|
|
375
387
|
}
|
|
388
|
+
entry.pty.resize(initialCols, initialRows);
|
|
376
389
|
const replay = entry.buffer.getAll();
|
|
377
390
|
if (replay.length > 0) {
|
|
378
391
|
sendJson(ws, { type: "replay", data: replay.toString("utf-8") });
|
|
@@ -408,8 +421,11 @@ function createWsHandler(server) {
|
|
|
408
421
|
wss.emit("connection", ws, req, match[1]);
|
|
409
422
|
});
|
|
410
423
|
});
|
|
411
|
-
wss.on("connection", (ws,
|
|
412
|
-
|
|
424
|
+
wss.on("connection", (ws, req, sessionName) => {
|
|
425
|
+
const url = new URL(req.url ?? "", "http://localhost");
|
|
426
|
+
const cols = Math.max(1, Number(url.searchParams.get("cols")) || 120);
|
|
427
|
+
const rows = Math.max(1, Number(url.searchParams.get("rows")) || 30);
|
|
428
|
+
attach(sessionName, ws, cols, rows);
|
|
413
429
|
ws.on("message", (raw, isBinary) => {
|
|
414
430
|
if (isBinary) {
|
|
415
431
|
write(sessionName, raw.toString());
|
|
@@ -582,12 +598,29 @@ function isPortInUse(port) {
|
|
|
582
598
|
});
|
|
583
599
|
});
|
|
584
600
|
}
|
|
601
|
+
function isTmuxAvailable() {
|
|
602
|
+
try {
|
|
603
|
+
execFileSync3("tmux", ["-V"], { stdio: "ignore" });
|
|
604
|
+
return true;
|
|
605
|
+
} catch {
|
|
606
|
+
return false;
|
|
607
|
+
}
|
|
608
|
+
}
|
|
585
609
|
async function startCommand(args2) {
|
|
586
610
|
const port = args2.flags.port ? Number(args2.flags.port) : 6200;
|
|
587
611
|
if (!Number.isFinite(port) || port < 1 || port > 65535) {
|
|
588
612
|
console.error("Error: --port must be a number between 1 and 65535");
|
|
589
613
|
process.exit(1);
|
|
590
614
|
}
|
|
615
|
+
if (!isTmuxAvailable()) {
|
|
616
|
+
console.error("Error: tmux is required but not found in PATH");
|
|
617
|
+
console.error();
|
|
618
|
+
console.error("Install it with:");
|
|
619
|
+
console.error(" macOS: brew install tmux");
|
|
620
|
+
console.error(" Ubuntu: sudo apt install tmux");
|
|
621
|
+
console.error(" Fedora: sudo dnf install tmux");
|
|
622
|
+
process.exit(1);
|
|
623
|
+
}
|
|
591
624
|
const sessionName = args2.positional[0] ?? await detectTmuxSession() ?? void 0;
|
|
592
625
|
const homeDir = await ensureHome();
|
|
593
626
|
if (!args2.flags["no-sync"]) {
|
|
@@ -600,7 +633,7 @@ async function startCommand(args2) {
|
|
|
600
633
|
}
|
|
601
634
|
process.exit(0);
|
|
602
635
|
}
|
|
603
|
-
const __dirname =
|
|
636
|
+
const __dirname = dirname3(fileURLToPath2(import.meta.url));
|
|
604
637
|
const bundledDir = resolve6(__dirname, "..", "public");
|
|
605
638
|
const syncedDir = resolve6(homeDir, "repo", "packages", "web", "dist");
|
|
606
639
|
const staticDir = !args2.flags["no-sync"] && existsSync2(syncedDir) ? syncedDir : bundledDir;
|
package/package.json
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! tailwindcss v4.1.7 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:"Inter",sans-serif;--font-mono:"JetBrains Mono",monospace;--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-green-500:oklch(72.3% .219 149.579);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-md:28rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--font-weight-medium:500;--font-weight-semibold:600;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--ease-in-out:cubic-bezier(.4,0,.2,1);--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-bg:#f6f7f9;--color-bg-dark:#0b0f19;--color-sidebar:#f3f4f6;--color-sidebar-hover:#e9ebf0;--color-sidebar-active:#fff;--color-card:#fff;--color-card-dark:#111827;--color-divider:#e6e8ec;--color-divider-dark:#1f2937;--color-accent:#5b6bff;--color-accent-hover:#4c59e8;--color-accent-dark:#6d7dff;--color-accent-ring:#5b6bff33;--color-text-primary:#0f172a;--color-text-secondary:#6b7280;--color-text-dark:#e5e7eb;--color-terminal-bg:#0d1117;--color-terminal-text:#e6edf3;--radius-card:20px;--radius-button:12px;--radius-input:14px;--radius-sidebar:10px;--sidebar-width:260px;--header-height:64px;--color-gradient-top:#e7eaf3;--color-gradient-mid:#5a7cff;--color-gradient-pink:#ff4da3;--color-gradient-red:#ff4d4d}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.invisible{visibility:hidden}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:calc(var(--spacing)*0)}.inset-y-0{inset-block:calc(var(--spacing)*0)}.top-1\/2{top:50%}.top-3\.5{top:calc(var(--spacing)*3.5)}.top-\[-140px\]{top:-140px}.top-full{top:100%}.right-0{right:calc(var(--spacing)*0)}.right-2{right:calc(var(--spacing)*2)}.right-\[-100px\]{right:-100px}.bottom-\[-100px\]{bottom:-100px}.left-0{left:calc(var(--spacing)*0)}.left-1\/2{left:50%}.-z-10{z-index:-10}.z-40{z-index:40}.z-50{z-index:50}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.mt-1{margin-top:calc(var(--spacing)*1)}.flex{display:flex}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.h-1{height:calc(var(--spacing)*1)}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-2{height:calc(var(--spacing)*2)}.h-4{height:calc(var(--spacing)*4)}.h-6{height:calc(var(--spacing)*6)}.h-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-12{height:calc(var(--spacing)*12)}.h-\[350px\]{height:350px}.h-\[400px\]{height:400px}.h-\[500px\]{height:500px}.h-\[var\(--header-height\)\]{height:var(--header-height)}.h-dvh{height:100dvh}.h-full{height:100%}.h-px{height:1px}.min-h-0{min-height:calc(var(--spacing)*0)}.w-1{width:calc(var(--spacing)*1)}.w-1\.5{width:calc(var(--spacing)*1.5)}.w-2{width:calc(var(--spacing)*2)}.w-4{width:calc(var(--spacing)*4)}.w-6{width:calc(var(--spacing)*6)}.w-7{width:calc(var(--spacing)*7)}.w-8{width:calc(var(--spacing)*8)}.w-12{width:calc(var(--spacing)*12)}.w-52{width:calc(var(--spacing)*52)}.w-64{width:calc(var(--spacing)*64)}.w-72{width:calc(var(--spacing)*72)}.w-\[350px\]{width:350px}.w-\[400px\]{width:400px}.w-\[500px\]{width:500px}.w-dvw{width:100dvw}.w-full{width:100%}.max-w-md{max-width:var(--container-md)}.min-w-\[var\(--sidebar-width\)\]{min-width:var(--sidebar-width)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.origin-top-right{transform-origin:100% 0}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-x-full{--tw-translate-x:-100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.scale-95{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.resize{resize:both}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.gap-0\.5{gap:calc(var(--spacing)*.5)}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-2\.5{gap:calc(var(--spacing)*2.5)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-5{gap:calc(var(--spacing)*5)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-button{border-radius:var(--radius-button)}.rounded-card{border-radius:var(--radius-card)}.rounded-full{border-radius:3.40282e38px}.rounded-input{border-radius:var(--radius-input)}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sidebar{border-radius:var(--radius-sidebar)}.rounded-sm{border-radius:var(--radius-sm)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-divider{border-color:var(--color-divider)}.border-divider\/60{border-color:#e6e8ec99}@supports (color:color-mix(in lab,red,red)){.border-divider\/60{border-color:color-mix(in oklab,var(--color-divider)60%,transparent)}}.bg-\[\#E5E7EB\]{background-color:#e5e7eb}.bg-accent{background-color:var(--color-accent)}.bg-bg{background-color:var(--color-bg)}.bg-black\/20{background-color:#0003}@supports (color:color-mix(in lab,red,red)){.bg-black\/20{background-color:color-mix(in oklab,var(--color-black)20%,transparent)}}.bg-card{background-color:var(--color-card)}.bg-divider{background-color:var(--color-divider)}.bg-gradient-mid{background-color:var(--color-gradient-mid)}.bg-gradient-top{background-color:var(--color-gradient-top)}.bg-green-500{background-color:var(--color-green-500)}.bg-sidebar{background-color:var(--color-sidebar)}.bg-sidebar-active{background-color:var(--color-sidebar-active)}.bg-terminal-bg{background-color:var(--color-terminal-bg)}.bg-text-primary{background-color:var(--color-text-primary)}.bg-text-secondary\/30{background-color:#6b72804d}@supports (color:color-mix(in lab,red,red)){.bg-text-secondary\/30{background-color:color-mix(in oklab,var(--color-text-secondary)30%,transparent)}}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\/95{background-color:#fffffff2}@supports (color:color-mix(in lab,red,red)){.bg-white\/95{background-color:color-mix(in oklab,var(--color-white)95%,transparent)}}.bg-linear-to-br{--tw-gradient-position:to bottom right}@supports (background-image:linear-gradient(in lab,red,red)){.bg-linear-to-br{--tw-gradient-position:to bottom right in oklab}}.bg-linear-to-br{background-image:linear-gradient(var(--tw-gradient-stops))}.from-gradient-pink{--tw-gradient-from:var(--color-gradient-pink);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-gradient-red{--tw-gradient-to:var(--color-gradient-red);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.p-3{padding:calc(var(--spacing)*3)}.p-8{padding:calc(var(--spacing)*8)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-3\.5{padding-inline:calc(var(--spacing)*3.5)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-5{padding-inline:calc(var(--spacing)*5)}.px-11{padding-inline:calc(var(--spacing)*11)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-2\.5{padding-block:calc(var(--spacing)*2.5)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.pt-\[env\(safe-area-inset-top\)\]{padding-top:env(safe-area-inset-top)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-\[env\(safe-area-inset-bottom\)\]{padding-bottom:env(safe-area-inset-bottom)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[11px\]{font-size:11px}.text-\[13px\]{font-size:13px}.text-\[28px\]{font-size:28px}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.whitespace-nowrap{white-space:nowrap}.text-accent{color:var(--color-accent)}.text-red-400{color:var(--color-red-400)}.text-red-500{color:var(--color-red-500)}.text-text-primary{color:var(--color-text-primary)}.text-text-secondary{color:var(--color-text-secondary)}.text-text-secondary\/40{color:#6b728066}@supports (color:color-mix(in lab,red,red)){.text-text-secondary\/40{color:color-mix(in oklab,var(--color-text-secondary)40%,transparent)}}.text-text-secondary\/60{color:#6b728099}@supports (color:color-mix(in lab,red,red)){.text-text-secondary\/60{color:color-mix(in oklab,var(--color-text-secondary)60%,transparent)}}.text-white{color:var(--color-white)}.underline{text-decoration-line:underline}.accent-accent{accent-color:var(--color-accent)}.opacity-0{opacity:0}.opacity-30{opacity:.3}.opacity-40{opacity:.4}.opacity-70{opacity:.7}.opacity-100{opacity:1}.shadow-card{--tw-shadow:0 8px 24px var(--tw-shadow-color,#00000014);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-float{--tw-shadow:0 10px 40px var(--tw-shadow-color,#0000001f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-subtle{--tw-shadow:0 2px 8px var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.blur-\[120px\]{--tw-blur:blur(120px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur-\[2px\]{--tw-backdrop-blur:blur(2px);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.outline-none{--tw-outline-style:none;outline-style:none}@media(hover:hover){.hover\:bg-\[\#D1D5DB\]:hover{background-color:#d1d5db}.hover\:bg-accent:hover{background-color:var(--color-accent)}.hover\:bg-accent-hover:hover{background-color:var(--color-accent-hover)}.hover\:bg-sidebar-hover:hover{background-color:var(--color-sidebar-hover)}.hover\:bg-sidebar-hover\/60:hover{background-color:#e9ebf099}@supports (color:color-mix(in lab,red,red)){.hover\:bg-sidebar-hover\/60:hover{background-color:color-mix(in oklab,var(--color-sidebar-hover)60%,transparent)}}.hover\:text-text-secondary:hover{color:var(--color-text-secondary)}}.focus\:border-accent:focus{border-color:var(--color-accent)}.focus\:ring-3:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-accent-ring:focus{--tw-ring-color:var(--color-accent-ring)}.disabled\:cursor-default:disabled{cursor:default}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-50:disabled{opacity:.5}@media(min-width:48rem){.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}}.dark\:border-divider-dark:where(.dark,.dark *){border-color:var(--color-divider-dark)}.dark\:border-divider-dark\/60:where(.dark,.dark *){border-color:#1f293799}@supports (color:color-mix(in lab,red,red)){.dark\:border-divider-dark\/60:where(.dark,.dark *){border-color:color-mix(in oklab,var(--color-divider-dark)60%,transparent)}}.dark\:bg-bg-dark:where(.dark,.dark *){background-color:var(--color-bg-dark)}.dark\:bg-card-dark:where(.dark,.dark *){background-color:var(--color-card-dark)}.dark\:bg-card-dark\/95:where(.dark,.dark *){background-color:#111827f2}@supports (color:color-mix(in lab,red,red)){.dark\:bg-card-dark\/95:where(.dark,.dark *){background-color:color-mix(in oklab,var(--color-card-dark)95%,transparent)}}.dark\:bg-divider-dark:where(.dark,.dark *){background-color:var(--color-divider-dark)}.dark\:bg-gradient-mid:where(.dark,.dark *){background-color:var(--color-gradient-mid)}.dark\:text-accent-dark:where(.dark,.dark *){color:var(--color-accent-dark)}.dark\:text-text-dark:where(.dark,.dark *){color:var(--color-text-dark)}.dark\:opacity-15:where(.dark,.dark *){opacity:.15}.dark\:opacity-20:where(.dark,.dark *){opacity:.2}.dark\:opacity-25:where(.dark,.dark *){opacity:.25}@media(hover:hover){.dark\:hover\:bg-accent-dark:where(.dark,.dark *):hover{background-color:var(--color-accent-dark)}.dark\:hover\:bg-divider-dark:where(.dark,.dark *):hover{background-color:var(--color-divider-dark)}.dark\:hover\:bg-divider-dark\/40:where(.dark,.dark *):hover{background-color:#1f293766}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-divider-dark\/40:where(.dark,.dark *):hover{background-color:color-mix(in oklab,var(--color-divider-dark)40%,transparent)}}}}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:100;src:url(/assets/inter-latin-100-normal-Cg8nSI4P.woff2)format("woff2"),url(/assets/inter-latin-100-normal-J9XNenR1.woff)format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:200;src:url(/assets/inter-latin-200-normal-CGIQ4gbF.woff2)format("woff2"),url(/assets/inter-latin-200-normal-fAycq8N-.woff)format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:300;src:url(/assets/inter-latin-300-normal-BVlfKGgI.woff2)format("woff2"),url(/assets/inter-latin-300-normal-i8F0SvXL.woff)format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-latin-400-normal-C38fXH4l.woff2)format("woff2"),url(/assets/inter-latin-400-normal-CyCys3Eg.woff)format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-latin-500-normal-Cerq10X2.woff2)format("woff2"),url(/assets/inter-latin-500-normal-BL9OpVg8.woff)format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-latin-600-normal-LgqL8muc.woff2)format("woff2"),url(/assets/inter-latin-600-normal-CiBQ2DWP.woff)format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-latin-700-normal-Drs_5D37.woff2)format("woff2"),url(/assets/inter-latin-700-normal-KTwiWvO9.woff)format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/inter-latin-800-normal-BYj_oED-.woff2)format("woff2"),url(/assets/inter-latin-800-normal-D1mf63XC.woff)format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:900;src:url(/assets/inter-latin-900-normal-D4nM5aha.woff2)format("woff2"),url(/assets/inter-latin-900-normal-EUCDUbiG.woff)format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:100;src:url(/assets/jetbrains-mono-latin-100-normal-DlYB2XW3.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-100-normal-DzH8uRxw.woff)format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:200;src:url(/assets/jetbrains-mono-latin-200-normal-DvzYDkvL.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-200-normal-CHn02WOn.woff)format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:300;src:url(/assets/jetbrains-mono-latin-300-normal-DuMDZskh.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-300-normal-BYcAiAh2.woff)format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff)format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/jetbrains-mono-latin-500-normal-BWZEU5yA.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-500-normal-CJOVTJB7.woff)format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/jetbrains-mono-latin-600-normal-C8RAYTDA.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-600-normal-BfsvjouI.woff)format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/jetbrains-mono-latin-700-normal-BYuf6tUa.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-700-normal-D3wTyLJW.woff)format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/jetbrains-mono-latin-800-normal-D2mQHRMK.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-800-normal-Dj9qwObk.woff)format("woff")}.xterm{cursor:text;-webkit-user-select:none;user-select:none;position:relative}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{z-index:5;position:absolute;top:0}.xterm .xterm-helper-textarea{opacity:0;z-index:-5;white-space:nowrap;resize:none;border:0;width:0;height:0;margin:0;padding:0;position:absolute;top:0;left:-9999em;overflow:hidden}.xterm .composition-view{color:#fff;white-space:nowrap;z-index:1;background:#000;display:none;position:absolute}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{cursor:default;background-color:#000;position:absolute;top:0;right:0;bottom:0;left:0;overflow-y:scroll}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;top:0;left:0}.xterm-char-measure-element{visibility:hidden;line-height:normal;display:inline-block;position:absolute;top:0;left:-9999em}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{z-index:10;color:#0000;pointer-events:none;position:absolute;top:0;right:0;bottom:0;left:0}.xterm .xterm-accessibility-tree:not(.debug) ::selection{color:#0000}.xterm .xterm-accessibility-tree{-webkit-user-select:text;user-select:text;white-space:pre;font-family:monospace}.xterm .xterm-accessibility-tree>div{transform-origin:0;width:fit-content}.xterm .live-region{width:1px;height:1px;position:absolute;left:-9999px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{-webkit-text-decoration:underline double;text-decoration:underline double}.xterm-underline-3{-webkit-text-decoration:underline wavy;text-decoration:underline wavy}.xterm-underline-4{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.xterm-underline-5{-webkit-text-decoration:underline dashed;text-decoration:underline dashed}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:underline overline}.xterm-overline.xterm-underline-2{-webkit-text-decoration:overline double underline;text-decoration:overline double underline}.xterm-overline.xterm-underline-3{-webkit-text-decoration:overline wavy underline;text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{-webkit-text-decoration:overline dotted underline;text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{-webkit-text-decoration:overline dashed underline;text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;pointer-events:none;position:absolute;top:0;right:0}.xterm-decoration-top{z-index:2;position:relative}.xterm .xterm-scrollable-element>.scrollbar{cursor:default}.xterm .xterm-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.xterm .xterm-scrollable-element>.visible{opacity:1;z-index:11;background:0 0;transition:opacity .1s linear}.xterm .xterm-scrollable-element>.invisible{opacity:0;pointer-events:none}.xterm .xterm-scrollable-element>.invisible.fade{transition:opacity .8s linear}.xterm .xterm-scrollable-element>.shadow{display:none;position:absolute}.xterm .xterm-scrollable-element>.shadow.top{width:100%;height:3px;box-shadow:var(--vscode-scrollbar-shadow,#000) 0 6px 6px -6px inset;display:block;top:0;left:3px}.xterm .xterm-scrollable-element>.shadow.left{width:3px;height:100%;box-shadow:var(--vscode-scrollbar-shadow,#000) 6px 0 6px -6px inset;display:block;top:3px;left:0}.xterm .xterm-scrollable-element>.shadow.top-left-corner{width:3px;height:3px;display:block;top:0;left:0}.xterm .xterm-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow,#000) 6px 0 6px -6px inset}:root{color-scheme:light dark}html{background:var(--color-bg)}html:where(.dark){background:var(--color-bg-dark)}body{font-family:var(--font-sans);margin:0}[data-panel-group-id]>[role=separator]{outline:none}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}
|