@hasna/browser 0.4.0 → 0.4.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/cli/index.js +200 -12
- package/dist/engines/tui.d.ts +3 -0
- package/dist/engines/tui.d.ts.map +1 -1
- package/dist/index.js +77 -2
- package/dist/lib/session.d.ts.map +1 -1
- package/dist/mcp/capture.d.ts.map +1 -1
- package/dist/mcp/index.js +258 -61
- package/dist/mcp/meta.d.ts.map +1 -1
- package/dist/mcp/network.d.ts.map +1 -1
- package/dist/mcp/recordings.d.ts.map +1 -1
- package/dist/mcp/sessions.d.ts.map +1 -1
- package/dist/server/index.js +77 -2
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -12691,7 +12691,35 @@ async function launchTui(command, options = {}) {
|
|
|
12691
12691
|
waitUntil: "domcontentloaded"
|
|
12692
12692
|
});
|
|
12693
12693
|
await page.waitForSelector(".xterm-screen", { timeout: 1e4 });
|
|
12694
|
-
|
|
12694
|
+
let resolvedTheme = "dark";
|
|
12695
|
+
const requestedTheme = options.theme ?? "system";
|
|
12696
|
+
if (requestedTheme === "light") {
|
|
12697
|
+
resolvedTheme = "light";
|
|
12698
|
+
} else if (requestedTheme === "dark") {
|
|
12699
|
+
resolvedTheme = "dark";
|
|
12700
|
+
} else {
|
|
12701
|
+
try {
|
|
12702
|
+
const result = execSync2("defaults read -g AppleInterfaceStyle 2>/dev/null", { encoding: "utf8" }).trim();
|
|
12703
|
+
resolvedTheme = result === "Dark" ? "dark" : "light";
|
|
12704
|
+
} catch {
|
|
12705
|
+
resolvedTheme = "light";
|
|
12706
|
+
}
|
|
12707
|
+
}
|
|
12708
|
+
const themeColors = THEMES[resolvedTheme];
|
|
12709
|
+
await page.evaluate((theme) => {
|
|
12710
|
+
const term = window.term ?? window.terminal;
|
|
12711
|
+
if (term?.options) {
|
|
12712
|
+
term.options.theme = theme;
|
|
12713
|
+
}
|
|
12714
|
+
document.body.style.backgroundColor = theme.background;
|
|
12715
|
+
const container = document.getElementById("terminal-container");
|
|
12716
|
+
if (container)
|
|
12717
|
+
container.style.backgroundColor = theme.background;
|
|
12718
|
+
const viewport2 = document.querySelector(".xterm-viewport");
|
|
12719
|
+
if (viewport2)
|
|
12720
|
+
viewport2.style.backgroundColor = theme.background;
|
|
12721
|
+
}, themeColors);
|
|
12722
|
+
return { ttydProcess, port, browser, page, theme: resolvedTheme };
|
|
12695
12723
|
} catch (err) {
|
|
12696
12724
|
ttydProcess.kill();
|
|
12697
12725
|
throw err;
|
|
@@ -12708,11 +12736,57 @@ async function closeTui(session) {
|
|
|
12708
12736
|
session.ttydProcess.kill("SIGTERM");
|
|
12709
12737
|
} catch {}
|
|
12710
12738
|
}
|
|
12711
|
-
var DEFAULT_TTYD_PORT_START = 7780, nextPort;
|
|
12739
|
+
var DEFAULT_TTYD_PORT_START = 7780, nextPort, THEMES;
|
|
12712
12740
|
var init_tui = __esm(() => {
|
|
12713
12741
|
init_types();
|
|
12714
12742
|
init_playwright();
|
|
12715
12743
|
nextPort = DEFAULT_TTYD_PORT_START;
|
|
12744
|
+
THEMES = {
|
|
12745
|
+
dark: {
|
|
12746
|
+
background: "#1e1e1e",
|
|
12747
|
+
foreground: "#d4d4d4",
|
|
12748
|
+
cursor: "#d4d4d4",
|
|
12749
|
+
selectionBackground: "#264f78",
|
|
12750
|
+
black: "#1e1e1e",
|
|
12751
|
+
red: "#f44747",
|
|
12752
|
+
green: "#6a9955",
|
|
12753
|
+
yellow: "#d7ba7d",
|
|
12754
|
+
blue: "#569cd6",
|
|
12755
|
+
magenta: "#c586c0",
|
|
12756
|
+
cyan: "#4ec9b0",
|
|
12757
|
+
white: "#d4d4d4",
|
|
12758
|
+
brightBlack: "#808080",
|
|
12759
|
+
brightRed: "#f44747",
|
|
12760
|
+
brightGreen: "#6a9955",
|
|
12761
|
+
brightYellow: "#d7ba7d",
|
|
12762
|
+
brightBlue: "#569cd6",
|
|
12763
|
+
brightMagenta: "#c586c0",
|
|
12764
|
+
brightCyan: "#4ec9b0",
|
|
12765
|
+
brightWhite: "#ffffff"
|
|
12766
|
+
},
|
|
12767
|
+
light: {
|
|
12768
|
+
background: "#ffffff",
|
|
12769
|
+
foreground: "#1e1e1e",
|
|
12770
|
+
cursor: "#1e1e1e",
|
|
12771
|
+
selectionBackground: "#add6ff",
|
|
12772
|
+
black: "#1e1e1e",
|
|
12773
|
+
red: "#cd3131",
|
|
12774
|
+
green: "#008000",
|
|
12775
|
+
yellow: "#795e26",
|
|
12776
|
+
blue: "#0451a5",
|
|
12777
|
+
magenta: "#af00db",
|
|
12778
|
+
cyan: "#0598bc",
|
|
12779
|
+
white: "#d4d4d4",
|
|
12780
|
+
brightBlack: "#808080",
|
|
12781
|
+
brightRed: "#cd3131",
|
|
12782
|
+
brightGreen: "#008000",
|
|
12783
|
+
brightYellow: "#795e26",
|
|
12784
|
+
brightBlue: "#0451a5",
|
|
12785
|
+
brightMagenta: "#af00db",
|
|
12786
|
+
brightCyan: "#0598bc",
|
|
12787
|
+
brightWhite: "#ffffff"
|
|
12788
|
+
}
|
|
12789
|
+
};
|
|
12716
12790
|
});
|
|
12717
12791
|
|
|
12718
12792
|
// src/engines/selector.ts
|
|
@@ -14149,7 +14223,8 @@ async function createSession2(opts = {}) {
|
|
|
14149
14223
|
const command = opts.startUrl ?? "bash";
|
|
14150
14224
|
const tuiSess = await launchTui(command, {
|
|
14151
14225
|
headless: opts.headless ?? true,
|
|
14152
|
-
viewport: opts.viewport
|
|
14226
|
+
viewport: opts.viewport,
|
|
14227
|
+
theme: opts.tuiTheme ?? "system"
|
|
14153
14228
|
});
|
|
14154
14229
|
browser = tuiSess.browser;
|
|
14155
14230
|
page = tuiSess.page;
|
|
@@ -27577,12 +27652,26 @@ var init_helpers = __esm(() => {
|
|
|
27577
27652
|
|
|
27578
27653
|
// src/mcp/sessions.ts
|
|
27579
27654
|
function register4(server) {
|
|
27580
|
-
server.tool("browser_session_create",
|
|
27581
|
-
|
|
27582
|
-
|
|
27655
|
+
server.tool("browser_session_create", `Create a new browser session. Returns a session object with an id you must pass to other tools.
|
|
27656
|
+
|
|
27657
|
+
ENGINES:
|
|
27658
|
+
- "auto" (default): picks the best engine for your use case automatically
|
|
27659
|
+
- "playwright": full browser automation \u2014 forms, SPAs, auth flows, multi-tab
|
|
27660
|
+
- "cdp": Chrome DevTools Protocol \u2014 network monitoring, perf profiling, script injection
|
|
27661
|
+
- "lightpanda": fast headless for static pages
|
|
27662
|
+
- "bun": native Bun.WebView \u2014 fastest for screenshots and scraping
|
|
27663
|
+
- "tui": terminal UI testing \u2014 launches a CLI/TUI app (Ink, Blessed, Bubbletea, etc.) via ttyd and connects Playwright to it. Pass the shell command as start_url (e.g. "htop", "bun run app.tsx"). All browser tools (screenshot, click, type, wait) work on the terminal. Use tui_theme to control dark/light appearance.
|
|
27664
|
+
|
|
27665
|
+
TIPS:
|
|
27666
|
+
- If agent_id is set and already has an active session, returns the existing one (use force_new to override)
|
|
27667
|
+
- If session_id is omitted on other tools, the single active session is auto-selected
|
|
27668
|
+
- Use cdp_url to attach to an already-running Chrome instance
|
|
27669
|
+
- For TUI sessions: start_url is the shell command to run, NOT a URL`, {
|
|
27670
|
+
engine: exports_external2.enum(["playwright", "cdp", "lightpanda", "bun", "tui", "auto"]).optional().default("auto").describe("Browser engine. Use 'tui' for terminal/CLI app testing \u2014 pass the command as start_url"),
|
|
27671
|
+
use_case: exports_external2.string().optional().describe("Hint for auto engine selection: scrape, screenshot, form, auth, network, har, perf, terminal, tui"),
|
|
27583
27672
|
project_id: exports_external2.string().optional(),
|
|
27584
27673
|
agent_id: exports_external2.string().optional(),
|
|
27585
|
-
start_url: exports_external2.string().optional(),
|
|
27674
|
+
start_url: exports_external2.string().optional().describe("URL to navigate to, OR for engine='tui': the shell command to run (e.g. 'htop', 'bun run app.tsx')"),
|
|
27586
27675
|
headless: exports_external2.boolean().optional().default(true),
|
|
27587
27676
|
viewport_width: exports_external2.number().optional().default(1280),
|
|
27588
27677
|
viewport_height: exports_external2.number().optional().default(720),
|
|
@@ -27591,8 +27680,9 @@ function register4(server) {
|
|
|
27591
27680
|
storage_state: exports_external2.string().optional().describe("Name of saved storage state to load (restores cookies/auth from previous session)"),
|
|
27592
27681
|
force_new: exports_external2.boolean().optional().default(false).describe("Force create a new session even if agent already has one"),
|
|
27593
27682
|
tags: exports_external2.array(exports_external2.string()).optional(),
|
|
27594
|
-
cdp_url: exports_external2.string().optional().describe("Connect to existing Chrome via CDP (e.g. http://localhost:9222). Start Chrome with --remote-debugging-port=9222")
|
|
27595
|
-
|
|
27683
|
+
cdp_url: exports_external2.string().optional().describe("Connect to existing Chrome via CDP (e.g. http://localhost:9222). Start Chrome with --remote-debugging-port=9222"),
|
|
27684
|
+
tui_theme: exports_external2.enum(["dark", "light", "system"]).optional().default("system").describe("TUI engine only: terminal color theme. 'system' auto-detects OS dark/light mode. Choose 'light' for light backgrounds or 'dark' for dark backgrounds. AI agents should pick based on readability needs.")
|
|
27685
|
+
}, async ({ engine, use_case, project_id, agent_id, start_url, headless, viewport_width, viewport_height, stealth, auto_gallery, storage_state, force_new, tags, cdp_url, tui_theme }) => {
|
|
27596
27686
|
try {
|
|
27597
27687
|
if (agent_id && !force_new) {
|
|
27598
27688
|
const existing = getActiveSessionForAgent2(agent_id);
|
|
@@ -27610,7 +27700,8 @@ function register4(server) {
|
|
|
27610
27700
|
stealth,
|
|
27611
27701
|
autoGallery: auto_gallery,
|
|
27612
27702
|
storageState: storage_state,
|
|
27613
|
-
cdpUrl: cdp_url
|
|
27703
|
+
cdpUrl: cdp_url,
|
|
27704
|
+
tuiTheme: tui_theme
|
|
27614
27705
|
});
|
|
27615
27706
|
if (tags?.length) {
|
|
27616
27707
|
const { addSessionTag: addSessionTag2 } = await Promise.resolve().then(() => (init_sessions(), exports_sessions));
|
|
@@ -28807,6 +28898,40 @@ function register6(server) {
|
|
|
28807
28898
|
return err(e);
|
|
28808
28899
|
}
|
|
28809
28900
|
});
|
|
28901
|
+
server.tool("browser_diff", "Visual diff between two URLs or a URL and a gallery entry. Screenshots both, returns a pixel diff image highlighting changes in red.", {
|
|
28902
|
+
session_id: exports_external2.string().optional(),
|
|
28903
|
+
url1: exports_external2.string().describe("First URL to screenshot"),
|
|
28904
|
+
url2: exports_external2.string().describe("Second URL to screenshot"),
|
|
28905
|
+
threshold: exports_external2.number().optional().default(10).describe("Pixel difference threshold (0-255, default 10)"),
|
|
28906
|
+
wait_ms: exports_external2.number().optional().default(1000).describe("Wait time after navigation before screenshot (ms)")
|
|
28907
|
+
}, async ({ session_id, url1, url2, threshold, wait_ms }) => {
|
|
28908
|
+
try {
|
|
28909
|
+
const sid = resolveSessionId(session_id);
|
|
28910
|
+
const page = getSessionPage(sid);
|
|
28911
|
+
await page.goto(url1, { waitUntil: "domcontentloaded" });
|
|
28912
|
+
await new Promise((r) => setTimeout(r, wait_ms));
|
|
28913
|
+
const ss1 = await takeScreenshot(page, { maxWidth: 1280, compress: true, track: false });
|
|
28914
|
+
await page.goto(url2, { waitUntil: "domcontentloaded" });
|
|
28915
|
+
await new Promise((r) => setTimeout(r, wait_ms));
|
|
28916
|
+
const ss2 = await takeScreenshot(page, { maxWidth: 1280, compress: true, track: false });
|
|
28917
|
+
const { diffImages: diffImages2 } = await Promise.resolve().then(() => (init_gallery_diff(), exports_gallery_diff));
|
|
28918
|
+
const diff = await diffImages2(ss1.path, ss2.path);
|
|
28919
|
+
logEvent(sid, "diff", { url1, url2, changed_percent: diff.changed_percent });
|
|
28920
|
+
return json({
|
|
28921
|
+
url1,
|
|
28922
|
+
url2,
|
|
28923
|
+
changed_pixels: diff.changed_pixels,
|
|
28924
|
+
total_pixels: diff.total_pixels,
|
|
28925
|
+
changed_percent: Math.round(diff.changed_percent * 100) / 100,
|
|
28926
|
+
diff_path: diff.diff_path,
|
|
28927
|
+
diff_base64: diff.diff_base64.length > 50000 ? undefined : diff.diff_base64,
|
|
28928
|
+
screenshot1_path: ss1.path,
|
|
28929
|
+
screenshot2_path: ss2.path
|
|
28930
|
+
});
|
|
28931
|
+
} catch (e) {
|
|
28932
|
+
return err(e);
|
|
28933
|
+
}
|
|
28934
|
+
});
|
|
28810
28935
|
}
|
|
28811
28936
|
var init_capture = __esm(() => {
|
|
28812
28937
|
init_helpers();
|
|
@@ -31942,6 +32067,53 @@ function register7(server) {
|
|
|
31942
32067
|
return err(e);
|
|
31943
32068
|
}
|
|
31944
32069
|
});
|
|
32070
|
+
server.tool("browser_performance_budget", "Check page performance against a budget. Set thresholds for LCP, FCP, CLS, TTFB, DOM complete, and load event. Returns pass/fail per metric with actual values.", {
|
|
32071
|
+
session_id: exports_external2.string().optional(),
|
|
32072
|
+
lcp_ms: exports_external2.number().optional().describe("Largest Contentful Paint budget in ms (good: <2500)"),
|
|
32073
|
+
fcp_ms: exports_external2.number().optional().describe("First Contentful Paint budget in ms (good: <1800)"),
|
|
32074
|
+
cls: exports_external2.number().optional().describe("Cumulative Layout Shift budget (good: <0.1)"),
|
|
32075
|
+
ttfb_ms: exports_external2.number().optional().describe("Time to First Byte budget in ms (good: <800)"),
|
|
32076
|
+
dom_complete_ms: exports_external2.number().optional().describe("DOM complete budget in ms"),
|
|
32077
|
+
load_event_ms: exports_external2.number().optional().describe("Load event budget in ms"),
|
|
32078
|
+
js_heap_mb: exports_external2.number().optional().describe("JS heap size budget in MB")
|
|
32079
|
+
}, async ({ session_id, lcp_ms, fcp_ms, cls, ttfb_ms, dom_complete_ms, load_event_ms, js_heap_mb }) => {
|
|
32080
|
+
try {
|
|
32081
|
+
const sid = resolveSessionId(session_id);
|
|
32082
|
+
const page = getSessionPage(sid);
|
|
32083
|
+
const metrics = await getPerformanceMetrics(page);
|
|
32084
|
+
const checks = [];
|
|
32085
|
+
let allPassed = true;
|
|
32086
|
+
const check = (name, budget, actual) => {
|
|
32087
|
+
if (budget === undefined)
|
|
32088
|
+
return;
|
|
32089
|
+
const passed = actual !== undefined && actual <= budget;
|
|
32090
|
+
if (!passed)
|
|
32091
|
+
allPassed = false;
|
|
32092
|
+
checks.push({ metric: name, budget, actual, passed });
|
|
32093
|
+
};
|
|
32094
|
+
check("lcp", lcp_ms, metrics.lcp);
|
|
32095
|
+
check("fcp", fcp_ms, metrics.fcp);
|
|
32096
|
+
check("cls", cls, metrics.cls);
|
|
32097
|
+
check("ttfb", ttfb_ms, metrics.ttfb);
|
|
32098
|
+
check("dom_complete", dom_complete_ms, metrics.dom_complete);
|
|
32099
|
+
check("load_event", load_event_ms, metrics.load_event);
|
|
32100
|
+
if (js_heap_mb !== undefined && metrics.js_heap_size_used !== undefined) {
|
|
32101
|
+
const heapMb = metrics.js_heap_size_used / (1024 * 1024);
|
|
32102
|
+
const passed = heapMb <= js_heap_mb;
|
|
32103
|
+
if (!passed)
|
|
32104
|
+
allPassed = false;
|
|
32105
|
+
checks.push({ metric: "js_heap_mb", budget: js_heap_mb, actual: Math.round(heapMb * 100) / 100, passed });
|
|
32106
|
+
}
|
|
32107
|
+
return json({
|
|
32108
|
+
passed: allPassed,
|
|
32109
|
+
checks,
|
|
32110
|
+
metrics,
|
|
32111
|
+
url: page.url()
|
|
32112
|
+
});
|
|
32113
|
+
} catch (e) {
|
|
32114
|
+
return err(e);
|
|
32115
|
+
}
|
|
32116
|
+
});
|
|
31945
32117
|
}
|
|
31946
32118
|
var init_network2 = __esm(() => {
|
|
31947
32119
|
init_helpers();
|
|
@@ -32390,6 +32562,19 @@ function register8(server) {
|
|
|
32390
32562
|
return err(e);
|
|
32391
32563
|
}
|
|
32392
32564
|
});
|
|
32565
|
+
server.tool("browser_record_export", "Export a recording as a Playwright test (.spec.ts), Puppeteer script, or JSON. Returns the generated code as text.", {
|
|
32566
|
+
recording_id: exports_external2.string().describe("ID of the recording to export"),
|
|
32567
|
+
format: exports_external2.enum(["playwright", "puppeteer", "json"]).optional().default("playwright").describe("Export format")
|
|
32568
|
+
}, async ({ recording_id, format }) => {
|
|
32569
|
+
try {
|
|
32570
|
+
const { exportRecording: exportRecording2 } = await Promise.resolve().then(() => (init_recorder(), exports_recorder));
|
|
32571
|
+
const code = exportRecording2(recording_id, format);
|
|
32572
|
+
const ext = format === "json" ? ".json" : format === "playwright" ? ".spec.ts" : ".js";
|
|
32573
|
+
return json({ format, filename: `recording-${recording_id}${ext}`, code });
|
|
32574
|
+
} catch (e) {
|
|
32575
|
+
return err(e);
|
|
32576
|
+
}
|
|
32577
|
+
});
|
|
32393
32578
|
}
|
|
32394
32579
|
var init_recordings2 = __esm(() => {
|
|
32395
32580
|
init_helpers();
|
|
@@ -47967,7 +48152,8 @@ function register10(server) {
|
|
|
47967
48152
|
{ tool: "browser_screenshot", description: "Take a screenshot (PNG/JPEG/WebP, annotate=true for labels)" },
|
|
47968
48153
|
{ tool: "browser_pdf", description: "Generate a PDF of the page" },
|
|
47969
48154
|
{ tool: "browser_scroll_and_screenshot", description: "Scroll then screenshot in one call" },
|
|
47970
|
-
{ tool: "browser_scroll_to_element", description: "Scroll element into view + screenshot" }
|
|
48155
|
+
{ tool: "browser_scroll_to_element", description: "Scroll element into view + screenshot" },
|
|
48156
|
+
{ tool: "browser_diff", description: "Visual diff between two URLs \u2014 highlights changes in red" }
|
|
47971
48157
|
],
|
|
47972
48158
|
Storage: [
|
|
47973
48159
|
{ tool: "browser_cookies_get", description: "Get cookies" },
|
|
@@ -47992,7 +48178,8 @@ function register10(server) {
|
|
|
47992
48178
|
{ tool: "browser_intercept_clear", description: "Remove all response intercepts" }
|
|
47993
48179
|
],
|
|
47994
48180
|
Performance: [
|
|
47995
|
-
{ tool: "browser_performance", description: "Get performance metrics" }
|
|
48181
|
+
{ tool: "browser_performance", description: "Get performance metrics" },
|
|
48182
|
+
{ tool: "browser_performance_budget", description: "Check perf against budget thresholds (LCP, FCP, CLS, TTFB)" }
|
|
47996
48183
|
],
|
|
47997
48184
|
Console: [
|
|
47998
48185
|
{ tool: "browser_console_log", description: "Get console messages" },
|
|
@@ -48005,6 +48192,7 @@ function register10(server) {
|
|
|
48005
48192
|
{ tool: "browser_record_step", description: "Add a step to recording" },
|
|
48006
48193
|
{ tool: "browser_record_stop", description: "Stop and save recording" },
|
|
48007
48194
|
{ tool: "browser_record_replay", description: "Replay a recorded sequence" },
|
|
48195
|
+
{ tool: "browser_record_export", description: "Export recording as Playwright test, Puppeteer script, or JSON" },
|
|
48008
48196
|
{ tool: "browser_recordings_list", description: "List all recordings" }
|
|
48009
48197
|
],
|
|
48010
48198
|
Auth: [
|
package/dist/engines/tui.d.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { type ChildProcess } from "node:child_process";
|
|
2
2
|
import type { Browser, Page } from "playwright";
|
|
3
|
+
export type TuiTheme = "dark" | "light" | "system";
|
|
3
4
|
export interface TuiSession {
|
|
4
5
|
ttydProcess: ChildProcess;
|
|
5
6
|
port: number;
|
|
6
7
|
browser: Browser;
|
|
7
8
|
page: Page;
|
|
9
|
+
theme: TuiTheme;
|
|
8
10
|
}
|
|
9
11
|
/**
|
|
10
12
|
* Check if ttyd is installed on this system.
|
|
@@ -23,6 +25,7 @@ export declare function launchTui(command: string, options?: {
|
|
|
23
25
|
width: number;
|
|
24
26
|
height: number;
|
|
25
27
|
};
|
|
28
|
+
theme?: TuiTheme;
|
|
26
29
|
}): Promise<TuiSession>;
|
|
27
30
|
/**
|
|
28
31
|
* Send keystrokes to the TUI app via the Playwright page.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui.d.ts","sourceRoot":"","sources":["../../src/engines/tui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAYhD,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,YAAY,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"tui.d.ts","sourceRoot":"","sources":["../../src/engines/tui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAYhD,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEnD,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,YAAY,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,QAAQ,CAAC;CACjB;AAkDD;;GAEG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAOxC;AAqCD;;;;;;GAMG;AACH,wBAAsB,SAAS,CAC7B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IACP,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,KAAK,CAAC,EAAE,QAAQ,CAAC;CACb,GACL,OAAO,CAAC,UAAU,CAAC,CAuFrB;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAStE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAO3E;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAuBjE;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,MAAM,EACZ,SAAS,GAAE,MAAe,GACzB,OAAO,CAAC,OAAO,CAAC,CAQlB;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAUjE"}
|
package/dist/index.js
CHANGED
|
@@ -18362,6 +18362,52 @@ init_types();
|
|
|
18362
18362
|
import { execSync as execSync2, spawn as spawn2 } from "child_process";
|
|
18363
18363
|
var DEFAULT_TTYD_PORT_START = 7780;
|
|
18364
18364
|
var nextPort = DEFAULT_TTYD_PORT_START;
|
|
18365
|
+
var THEMES = {
|
|
18366
|
+
dark: {
|
|
18367
|
+
background: "#1e1e1e",
|
|
18368
|
+
foreground: "#d4d4d4",
|
|
18369
|
+
cursor: "#d4d4d4",
|
|
18370
|
+
selectionBackground: "#264f78",
|
|
18371
|
+
black: "#1e1e1e",
|
|
18372
|
+
red: "#f44747",
|
|
18373
|
+
green: "#6a9955",
|
|
18374
|
+
yellow: "#d7ba7d",
|
|
18375
|
+
blue: "#569cd6",
|
|
18376
|
+
magenta: "#c586c0",
|
|
18377
|
+
cyan: "#4ec9b0",
|
|
18378
|
+
white: "#d4d4d4",
|
|
18379
|
+
brightBlack: "#808080",
|
|
18380
|
+
brightRed: "#f44747",
|
|
18381
|
+
brightGreen: "#6a9955",
|
|
18382
|
+
brightYellow: "#d7ba7d",
|
|
18383
|
+
brightBlue: "#569cd6",
|
|
18384
|
+
brightMagenta: "#c586c0",
|
|
18385
|
+
brightCyan: "#4ec9b0",
|
|
18386
|
+
brightWhite: "#ffffff"
|
|
18387
|
+
},
|
|
18388
|
+
light: {
|
|
18389
|
+
background: "#ffffff",
|
|
18390
|
+
foreground: "#1e1e1e",
|
|
18391
|
+
cursor: "#1e1e1e",
|
|
18392
|
+
selectionBackground: "#add6ff",
|
|
18393
|
+
black: "#1e1e1e",
|
|
18394
|
+
red: "#cd3131",
|
|
18395
|
+
green: "#008000",
|
|
18396
|
+
yellow: "#795e26",
|
|
18397
|
+
blue: "#0451a5",
|
|
18398
|
+
magenta: "#af00db",
|
|
18399
|
+
cyan: "#0598bc",
|
|
18400
|
+
white: "#d4d4d4",
|
|
18401
|
+
brightBlack: "#808080",
|
|
18402
|
+
brightRed: "#cd3131",
|
|
18403
|
+
brightGreen: "#008000",
|
|
18404
|
+
brightYellow: "#795e26",
|
|
18405
|
+
brightBlue: "#0451a5",
|
|
18406
|
+
brightMagenta: "#af00db",
|
|
18407
|
+
brightCyan: "#0598bc",
|
|
18408
|
+
brightWhite: "#ffffff"
|
|
18409
|
+
}
|
|
18410
|
+
};
|
|
18365
18411
|
function isTuiAvailable() {
|
|
18366
18412
|
try {
|
|
18367
18413
|
execSync2("which ttyd", { stdio: "ignore" });
|
|
@@ -18419,7 +18465,35 @@ async function launchTui(command, options = {}) {
|
|
|
18419
18465
|
waitUntil: "domcontentloaded"
|
|
18420
18466
|
});
|
|
18421
18467
|
await page.waitForSelector(".xterm-screen", { timeout: 1e4 });
|
|
18422
|
-
|
|
18468
|
+
let resolvedTheme = "dark";
|
|
18469
|
+
const requestedTheme = options.theme ?? "system";
|
|
18470
|
+
if (requestedTheme === "light") {
|
|
18471
|
+
resolvedTheme = "light";
|
|
18472
|
+
} else if (requestedTheme === "dark") {
|
|
18473
|
+
resolvedTheme = "dark";
|
|
18474
|
+
} else {
|
|
18475
|
+
try {
|
|
18476
|
+
const result = execSync2("defaults read -g AppleInterfaceStyle 2>/dev/null", { encoding: "utf8" }).trim();
|
|
18477
|
+
resolvedTheme = result === "Dark" ? "dark" : "light";
|
|
18478
|
+
} catch {
|
|
18479
|
+
resolvedTheme = "light";
|
|
18480
|
+
}
|
|
18481
|
+
}
|
|
18482
|
+
const themeColors = THEMES[resolvedTheme];
|
|
18483
|
+
await page.evaluate((theme) => {
|
|
18484
|
+
const term = window.term ?? window.terminal;
|
|
18485
|
+
if (term?.options) {
|
|
18486
|
+
term.options.theme = theme;
|
|
18487
|
+
}
|
|
18488
|
+
document.body.style.backgroundColor = theme.background;
|
|
18489
|
+
const container = document.getElementById("terminal-container");
|
|
18490
|
+
if (container)
|
|
18491
|
+
container.style.backgroundColor = theme.background;
|
|
18492
|
+
const viewport2 = document.querySelector(".xterm-viewport");
|
|
18493
|
+
if (viewport2)
|
|
18494
|
+
viewport2.style.backgroundColor = theme.background;
|
|
18495
|
+
}, themeColors);
|
|
18496
|
+
return { ttydProcess, port, browser, page, theme: resolvedTheme };
|
|
18423
18497
|
} catch (err) {
|
|
18424
18498
|
ttydProcess.kill();
|
|
18425
18499
|
throw err;
|
|
@@ -18842,7 +18916,8 @@ async function createSession2(opts = {}) {
|
|
|
18842
18916
|
const command = opts.startUrl ?? "bash";
|
|
18843
18917
|
const tuiSess = await launchTui(command, {
|
|
18844
18918
|
headless: opts.headless ?? true,
|
|
18845
|
-
viewport: opts.viewport
|
|
18919
|
+
viewport: opts.viewport,
|
|
18920
|
+
theme: opts.tuiTheme ?? "system"
|
|
18846
18921
|
});
|
|
18847
18922
|
browser = tuiSess.browser;
|
|
18848
18923
|
page = tuiSess.page;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/lib/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,EAAE,aAAa,EAAW,MAAM,mBAAmB,CAAC;AAG3D,OAAO,EAA0F,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE/I,OAAO,EAAE,iBAAiB,EAAyB,MAAM,2BAA2B,CAAC;AAyBrF,QAAA,MAAM,IAAI,aAAqB,CAAC;AA2ChC,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,wBAAsB,aAAa,CAAC,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC,
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/lib/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,EAAE,aAAa,EAAW,MAAM,mBAAmB,CAAC;AAG3D,OAAO,EAA0F,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE/I,OAAO,EAAE,iBAAiB,EAAyB,MAAM,2BAA2B,CAAC;AAyBrF,QAAA,MAAM,IAAI,aAAqB,CAAC;AA2ChC,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,wBAAsB,aAAa,CAAC,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAkL3F;AAID,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAkBtD;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAE7E;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAK5D;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,CAIjE;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAIlE;AAED,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAuBtE;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAErD;AAED,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,aAAa,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,EAAE,CAE/F;AAED,wBAAgB,iBAAiB,IAAI,OAAO,EAAE,CAE7C;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAKtD;AAED,OAAO,EAAE,IAAI,IAAI,WAAW,EAAE,CAAC;AAE/B,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,kBAE5C;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,WAErD;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAGxF;AAID,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAcpF;AAID,wBAAgB,iBAAiB,IAAI,mBAAmB,GAAG,IAAI,CAa9D;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../src/mcp/capture.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA6BzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../src/mcp/capture.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA6BzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,QAogBzC"}
|
package/dist/mcp/index.js
CHANGED
|
@@ -10657,7 +10657,35 @@ async function launchTui(command, options = {}) {
|
|
|
10657
10657
|
waitUntil: "domcontentloaded"
|
|
10658
10658
|
});
|
|
10659
10659
|
await page.waitForSelector(".xterm-screen", { timeout: 1e4 });
|
|
10660
|
-
|
|
10660
|
+
let resolvedTheme = "dark";
|
|
10661
|
+
const requestedTheme = options.theme ?? "system";
|
|
10662
|
+
if (requestedTheme === "light") {
|
|
10663
|
+
resolvedTheme = "light";
|
|
10664
|
+
} else if (requestedTheme === "dark") {
|
|
10665
|
+
resolvedTheme = "dark";
|
|
10666
|
+
} else {
|
|
10667
|
+
try {
|
|
10668
|
+
const result = execSync2("defaults read -g AppleInterfaceStyle 2>/dev/null", { encoding: "utf8" }).trim();
|
|
10669
|
+
resolvedTheme = result === "Dark" ? "dark" : "light";
|
|
10670
|
+
} catch {
|
|
10671
|
+
resolvedTheme = "light";
|
|
10672
|
+
}
|
|
10673
|
+
}
|
|
10674
|
+
const themeColors = THEMES[resolvedTheme];
|
|
10675
|
+
await page.evaluate((theme) => {
|
|
10676
|
+
const term = window.term ?? window.terminal;
|
|
10677
|
+
if (term?.options) {
|
|
10678
|
+
term.options.theme = theme;
|
|
10679
|
+
}
|
|
10680
|
+
document.body.style.backgroundColor = theme.background;
|
|
10681
|
+
const container = document.getElementById("terminal-container");
|
|
10682
|
+
if (container)
|
|
10683
|
+
container.style.backgroundColor = theme.background;
|
|
10684
|
+
const viewport2 = document.querySelector(".xterm-viewport");
|
|
10685
|
+
if (viewport2)
|
|
10686
|
+
viewport2.style.backgroundColor = theme.background;
|
|
10687
|
+
}, themeColors);
|
|
10688
|
+
return { ttydProcess, port, browser, page, theme: resolvedTheme };
|
|
10661
10689
|
} catch (err) {
|
|
10662
10690
|
ttydProcess.kill();
|
|
10663
10691
|
throw err;
|
|
@@ -10674,11 +10702,57 @@ async function closeTui(session) {
|
|
|
10674
10702
|
session.ttydProcess.kill("SIGTERM");
|
|
10675
10703
|
} catch {}
|
|
10676
10704
|
}
|
|
10677
|
-
var DEFAULT_TTYD_PORT_START = 7780, nextPort;
|
|
10705
|
+
var DEFAULT_TTYD_PORT_START = 7780, nextPort, THEMES;
|
|
10678
10706
|
var init_tui = __esm(() => {
|
|
10679
10707
|
init_types();
|
|
10680
10708
|
init_playwright();
|
|
10681
10709
|
nextPort = DEFAULT_TTYD_PORT_START;
|
|
10710
|
+
THEMES = {
|
|
10711
|
+
dark: {
|
|
10712
|
+
background: "#1e1e1e",
|
|
10713
|
+
foreground: "#d4d4d4",
|
|
10714
|
+
cursor: "#d4d4d4",
|
|
10715
|
+
selectionBackground: "#264f78",
|
|
10716
|
+
black: "#1e1e1e",
|
|
10717
|
+
red: "#f44747",
|
|
10718
|
+
green: "#6a9955",
|
|
10719
|
+
yellow: "#d7ba7d",
|
|
10720
|
+
blue: "#569cd6",
|
|
10721
|
+
magenta: "#c586c0",
|
|
10722
|
+
cyan: "#4ec9b0",
|
|
10723
|
+
white: "#d4d4d4",
|
|
10724
|
+
brightBlack: "#808080",
|
|
10725
|
+
brightRed: "#f44747",
|
|
10726
|
+
brightGreen: "#6a9955",
|
|
10727
|
+
brightYellow: "#d7ba7d",
|
|
10728
|
+
brightBlue: "#569cd6",
|
|
10729
|
+
brightMagenta: "#c586c0",
|
|
10730
|
+
brightCyan: "#4ec9b0",
|
|
10731
|
+
brightWhite: "#ffffff"
|
|
10732
|
+
},
|
|
10733
|
+
light: {
|
|
10734
|
+
background: "#ffffff",
|
|
10735
|
+
foreground: "#1e1e1e",
|
|
10736
|
+
cursor: "#1e1e1e",
|
|
10737
|
+
selectionBackground: "#add6ff",
|
|
10738
|
+
black: "#1e1e1e",
|
|
10739
|
+
red: "#cd3131",
|
|
10740
|
+
green: "#008000",
|
|
10741
|
+
yellow: "#795e26",
|
|
10742
|
+
blue: "#0451a5",
|
|
10743
|
+
magenta: "#af00db",
|
|
10744
|
+
cyan: "#0598bc",
|
|
10745
|
+
white: "#d4d4d4",
|
|
10746
|
+
brightBlack: "#808080",
|
|
10747
|
+
brightRed: "#cd3131",
|
|
10748
|
+
brightGreen: "#008000",
|
|
10749
|
+
brightYellow: "#795e26",
|
|
10750
|
+
brightBlue: "#0451a5",
|
|
10751
|
+
brightMagenta: "#af00db",
|
|
10752
|
+
brightCyan: "#0598bc",
|
|
10753
|
+
brightWhite: "#ffffff"
|
|
10754
|
+
}
|
|
10755
|
+
};
|
|
10682
10756
|
});
|
|
10683
10757
|
|
|
10684
10758
|
// src/engines/selector.ts
|
|
@@ -12111,7 +12185,8 @@ async function createSession2(opts = {}) {
|
|
|
12111
12185
|
const command = opts.startUrl ?? "bash";
|
|
12112
12186
|
const tuiSess = await launchTui(command, {
|
|
12113
12187
|
headless: opts.headless ?? true,
|
|
12114
|
-
viewport: opts.viewport
|
|
12188
|
+
viewport: opts.viewport,
|
|
12189
|
+
theme: opts.tuiTheme ?? "system"
|
|
12115
12190
|
});
|
|
12116
12191
|
browser = tuiSess.browser;
|
|
12117
12192
|
page = tuiSess.page;
|
|
@@ -19493,6 +19568,63 @@ var init_agents2 = __esm(() => {
|
|
|
19493
19568
|
init_agents();
|
|
19494
19569
|
});
|
|
19495
19570
|
|
|
19571
|
+
// src/lib/gallery-diff.ts
|
|
19572
|
+
var exports_gallery_diff = {};
|
|
19573
|
+
__export(exports_gallery_diff, {
|
|
19574
|
+
diffImages: () => diffImages
|
|
19575
|
+
});
|
|
19576
|
+
import { join as join11 } from "path";
|
|
19577
|
+
import { mkdirSync as mkdirSync9 } from "fs";
|
|
19578
|
+
async function diffImages(path1, path2) {
|
|
19579
|
+
const img1 = import_sharp2.default(path1);
|
|
19580
|
+
const img2 = import_sharp2.default(path2);
|
|
19581
|
+
const [meta1, meta2] = await Promise.all([img1.metadata(), img2.metadata()]);
|
|
19582
|
+
const w = Math.min(meta1.width ?? 1280, meta2.width ?? 1280);
|
|
19583
|
+
const h = Math.min(meta1.height ?? 720, meta2.height ?? 720);
|
|
19584
|
+
const [raw1, raw2] = await Promise.all([
|
|
19585
|
+
import_sharp2.default(path1).resize(w, h, { fit: "fill" }).raw().toBuffer(),
|
|
19586
|
+
import_sharp2.default(path2).resize(w, h, { fit: "fill" }).raw().toBuffer()
|
|
19587
|
+
]);
|
|
19588
|
+
const totalPixels = w * h;
|
|
19589
|
+
const channels = 3;
|
|
19590
|
+
const diffBuffer = Buffer.alloc(raw1.length);
|
|
19591
|
+
let changedPixels = 0;
|
|
19592
|
+
for (let i = 0;i < raw1.length; i += channels) {
|
|
19593
|
+
const dr = Math.abs(raw1[i] - raw2[i]);
|
|
19594
|
+
const dg = Math.abs(raw1[i + 1] - raw2[i + 1]);
|
|
19595
|
+
const db = Math.abs(raw1[i + 2] - raw2[i + 2]);
|
|
19596
|
+
const diff = (dr + dg + db) / 3;
|
|
19597
|
+
if (diff > 10) {
|
|
19598
|
+
changedPixels++;
|
|
19599
|
+
diffBuffer[i] = 255;
|
|
19600
|
+
diffBuffer[i + 1] = 0;
|
|
19601
|
+
diffBuffer[i + 2] = 0;
|
|
19602
|
+
} else {
|
|
19603
|
+
diffBuffer[i] = Math.round(raw1[i] * 0.4);
|
|
19604
|
+
diffBuffer[i + 1] = Math.round(raw1[i + 1] * 0.4);
|
|
19605
|
+
diffBuffer[i + 2] = Math.round(raw1[i + 2] * 0.4);
|
|
19606
|
+
}
|
|
19607
|
+
}
|
|
19608
|
+
const dataDir = getDataDir2();
|
|
19609
|
+
const diffDir = join11(dataDir, "diffs");
|
|
19610
|
+
mkdirSync9(diffDir, { recursive: true });
|
|
19611
|
+
const diffPath = join11(diffDir, `diff-${Date.now()}.webp`);
|
|
19612
|
+
const diffImageBuffer = await import_sharp2.default(diffBuffer, { raw: { width: w, height: h, channels } }).webp({ quality: 85 }).toBuffer();
|
|
19613
|
+
await Bun.write(diffPath, diffImageBuffer);
|
|
19614
|
+
return {
|
|
19615
|
+
diff_path: diffPath,
|
|
19616
|
+
diff_base64: diffImageBuffer.toString("base64"),
|
|
19617
|
+
changed_pixels: changedPixels,
|
|
19618
|
+
total_pixels: totalPixels,
|
|
19619
|
+
changed_percent: changedPixels / totalPixels * 100
|
|
19620
|
+
};
|
|
19621
|
+
}
|
|
19622
|
+
var import_sharp2;
|
|
19623
|
+
var init_gallery_diff = __esm(() => {
|
|
19624
|
+
init_schema();
|
|
19625
|
+
import_sharp2 = __toESM(require_lib3(), 1);
|
|
19626
|
+
});
|
|
19627
|
+
|
|
19496
19628
|
// src/lib/profiles.ts
|
|
19497
19629
|
var exports_profiles = {};
|
|
19498
19630
|
__export(exports_profiles, {
|
|
@@ -43580,57 +43712,9 @@ function detectType(filename) {
|
|
|
43580
43712
|
};
|
|
43581
43713
|
return map[ext] ?? "file";
|
|
43582
43714
|
}
|
|
43583
|
-
// src/lib/gallery-diff.ts
|
|
43584
|
-
init_schema();
|
|
43585
|
-
var import_sharp2 = __toESM(require_lib3(), 1);
|
|
43586
|
-
import { join as join11 } from "path";
|
|
43587
|
-
import { mkdirSync as mkdirSync9 } from "fs";
|
|
43588
|
-
async function diffImages(path1, path2) {
|
|
43589
|
-
const img1 = import_sharp2.default(path1);
|
|
43590
|
-
const img2 = import_sharp2.default(path2);
|
|
43591
|
-
const [meta1, meta2] = await Promise.all([img1.metadata(), img2.metadata()]);
|
|
43592
|
-
const w = Math.min(meta1.width ?? 1280, meta2.width ?? 1280);
|
|
43593
|
-
const h = Math.min(meta1.height ?? 720, meta2.height ?? 720);
|
|
43594
|
-
const [raw1, raw2] = await Promise.all([
|
|
43595
|
-
import_sharp2.default(path1).resize(w, h, { fit: "fill" }).raw().toBuffer(),
|
|
43596
|
-
import_sharp2.default(path2).resize(w, h, { fit: "fill" }).raw().toBuffer()
|
|
43597
|
-
]);
|
|
43598
|
-
const totalPixels = w * h;
|
|
43599
|
-
const channels = 3;
|
|
43600
|
-
const diffBuffer = Buffer.alloc(raw1.length);
|
|
43601
|
-
let changedPixels = 0;
|
|
43602
|
-
for (let i = 0;i < raw1.length; i += channels) {
|
|
43603
|
-
const dr = Math.abs(raw1[i] - raw2[i]);
|
|
43604
|
-
const dg = Math.abs(raw1[i + 1] - raw2[i + 1]);
|
|
43605
|
-
const db = Math.abs(raw1[i + 2] - raw2[i + 2]);
|
|
43606
|
-
const diff = (dr + dg + db) / 3;
|
|
43607
|
-
if (diff > 10) {
|
|
43608
|
-
changedPixels++;
|
|
43609
|
-
diffBuffer[i] = 255;
|
|
43610
|
-
diffBuffer[i + 1] = 0;
|
|
43611
|
-
diffBuffer[i + 2] = 0;
|
|
43612
|
-
} else {
|
|
43613
|
-
diffBuffer[i] = Math.round(raw1[i] * 0.4);
|
|
43614
|
-
diffBuffer[i + 1] = Math.round(raw1[i + 1] * 0.4);
|
|
43615
|
-
diffBuffer[i + 2] = Math.round(raw1[i + 2] * 0.4);
|
|
43616
|
-
}
|
|
43617
|
-
}
|
|
43618
|
-
const dataDir = getDataDir2();
|
|
43619
|
-
const diffDir = join11(dataDir, "diffs");
|
|
43620
|
-
mkdirSync9(diffDir, { recursive: true });
|
|
43621
|
-
const diffPath = join11(diffDir, `diff-${Date.now()}.webp`);
|
|
43622
|
-
const diffImageBuffer = await import_sharp2.default(diffBuffer, { raw: { width: w, height: h, channels } }).webp({ quality: 85 }).toBuffer();
|
|
43623
|
-
await Bun.write(diffPath, diffImageBuffer);
|
|
43624
|
-
return {
|
|
43625
|
-
diff_path: diffPath,
|
|
43626
|
-
diff_base64: diffImageBuffer.toString("base64"),
|
|
43627
|
-
changed_pixels: changedPixels,
|
|
43628
|
-
total_pixels: totalPixels,
|
|
43629
|
-
changed_percent: changedPixels / totalPixels * 100
|
|
43630
|
-
};
|
|
43631
|
-
}
|
|
43632
43715
|
|
|
43633
43716
|
// src/mcp/helpers.ts
|
|
43717
|
+
init_gallery_diff();
|
|
43634
43718
|
init_snapshot();
|
|
43635
43719
|
|
|
43636
43720
|
// src/lib/files-integration.ts
|
|
@@ -43806,12 +43890,26 @@ function resolveSessionId(sessionId) {
|
|
|
43806
43890
|
|
|
43807
43891
|
// src/mcp/sessions.ts
|
|
43808
43892
|
function register(server) {
|
|
43809
|
-
server.tool("browser_session_create",
|
|
43810
|
-
|
|
43811
|
-
|
|
43893
|
+
server.tool("browser_session_create", `Create a new browser session. Returns a session object with an id you must pass to other tools.
|
|
43894
|
+
|
|
43895
|
+
ENGINES:
|
|
43896
|
+
- "auto" (default): picks the best engine for your use case automatically
|
|
43897
|
+
- "playwright": full browser automation \u2014 forms, SPAs, auth flows, multi-tab
|
|
43898
|
+
- "cdp": Chrome DevTools Protocol \u2014 network monitoring, perf profiling, script injection
|
|
43899
|
+
- "lightpanda": fast headless for static pages
|
|
43900
|
+
- "bun": native Bun.WebView \u2014 fastest for screenshots and scraping
|
|
43901
|
+
- "tui": terminal UI testing \u2014 launches a CLI/TUI app (Ink, Blessed, Bubbletea, etc.) via ttyd and connects Playwright to it. Pass the shell command as start_url (e.g. "htop", "bun run app.tsx"). All browser tools (screenshot, click, type, wait) work on the terminal. Use tui_theme to control dark/light appearance.
|
|
43902
|
+
|
|
43903
|
+
TIPS:
|
|
43904
|
+
- If agent_id is set and already has an active session, returns the existing one (use force_new to override)
|
|
43905
|
+
- If session_id is omitted on other tools, the single active session is auto-selected
|
|
43906
|
+
- Use cdp_url to attach to an already-running Chrome instance
|
|
43907
|
+
- For TUI sessions: start_url is the shell command to run, NOT a URL`, {
|
|
43908
|
+
engine: exports_external.enum(["playwright", "cdp", "lightpanda", "bun", "tui", "auto"]).optional().default("auto").describe("Browser engine. Use 'tui' for terminal/CLI app testing \u2014 pass the command as start_url"),
|
|
43909
|
+
use_case: exports_external.string().optional().describe("Hint for auto engine selection: scrape, screenshot, form, auth, network, har, perf, terminal, tui"),
|
|
43812
43910
|
project_id: exports_external.string().optional(),
|
|
43813
43911
|
agent_id: exports_external.string().optional(),
|
|
43814
|
-
start_url: exports_external.string().optional(),
|
|
43912
|
+
start_url: exports_external.string().optional().describe("URL to navigate to, OR for engine='tui': the shell command to run (e.g. 'htop', 'bun run app.tsx')"),
|
|
43815
43913
|
headless: exports_external.boolean().optional().default(true),
|
|
43816
43914
|
viewport_width: exports_external.number().optional().default(1280),
|
|
43817
43915
|
viewport_height: exports_external.number().optional().default(720),
|
|
@@ -43820,8 +43918,9 @@ function register(server) {
|
|
|
43820
43918
|
storage_state: exports_external.string().optional().describe("Name of saved storage state to load (restores cookies/auth from previous session)"),
|
|
43821
43919
|
force_new: exports_external.boolean().optional().default(false).describe("Force create a new session even if agent already has one"),
|
|
43822
43920
|
tags: exports_external.array(exports_external.string()).optional(),
|
|
43823
|
-
cdp_url: exports_external.string().optional().describe("Connect to existing Chrome via CDP (e.g. http://localhost:9222). Start Chrome with --remote-debugging-port=9222")
|
|
43824
|
-
|
|
43921
|
+
cdp_url: exports_external.string().optional().describe("Connect to existing Chrome via CDP (e.g. http://localhost:9222). Start Chrome with --remote-debugging-port=9222"),
|
|
43922
|
+
tui_theme: exports_external.enum(["dark", "light", "system"]).optional().default("system").describe("TUI engine only: terminal color theme. 'system' auto-detects OS dark/light mode. Choose 'light' for light backgrounds or 'dark' for dark backgrounds. AI agents should pick based on readability needs.")
|
|
43923
|
+
}, async ({ engine, use_case, project_id, agent_id, start_url, headless, viewport_width, viewport_height, stealth, auto_gallery, storage_state, force_new, tags, cdp_url, tui_theme }) => {
|
|
43825
43924
|
try {
|
|
43826
43925
|
if (agent_id && !force_new) {
|
|
43827
43926
|
const existing = getActiveSessionForAgent2(agent_id);
|
|
@@ -43839,7 +43938,8 @@ function register(server) {
|
|
|
43839
43938
|
stealth,
|
|
43840
43939
|
autoGallery: auto_gallery,
|
|
43841
43940
|
storageState: storage_state,
|
|
43842
|
-
cdpUrl: cdp_url
|
|
43941
|
+
cdpUrl: cdp_url,
|
|
43942
|
+
tuiTheme: tui_theme
|
|
43843
43943
|
});
|
|
43844
43944
|
if (tags?.length) {
|
|
43845
43945
|
const { addSessionTag: addSessionTag2 } = await Promise.resolve().then(() => (init_sessions(), exports_sessions));
|
|
@@ -44879,6 +44979,40 @@ function register3(server) {
|
|
|
44879
44979
|
return err(e);
|
|
44880
44980
|
}
|
|
44881
44981
|
});
|
|
44982
|
+
server.tool("browser_diff", "Visual diff between two URLs or a URL and a gallery entry. Screenshots both, returns a pixel diff image highlighting changes in red.", {
|
|
44983
|
+
session_id: exports_external.string().optional(),
|
|
44984
|
+
url1: exports_external.string().describe("First URL to screenshot"),
|
|
44985
|
+
url2: exports_external.string().describe("Second URL to screenshot"),
|
|
44986
|
+
threshold: exports_external.number().optional().default(10).describe("Pixel difference threshold (0-255, default 10)"),
|
|
44987
|
+
wait_ms: exports_external.number().optional().default(1000).describe("Wait time after navigation before screenshot (ms)")
|
|
44988
|
+
}, async ({ session_id, url1, url2, threshold, wait_ms }) => {
|
|
44989
|
+
try {
|
|
44990
|
+
const sid = resolveSessionId(session_id);
|
|
44991
|
+
const page = getSessionPage(sid);
|
|
44992
|
+
await page.goto(url1, { waitUntil: "domcontentloaded" });
|
|
44993
|
+
await new Promise((r) => setTimeout(r, wait_ms));
|
|
44994
|
+
const ss1 = await takeScreenshot(page, { maxWidth: 1280, compress: true, track: false });
|
|
44995
|
+
await page.goto(url2, { waitUntil: "domcontentloaded" });
|
|
44996
|
+
await new Promise((r) => setTimeout(r, wait_ms));
|
|
44997
|
+
const ss2 = await takeScreenshot(page, { maxWidth: 1280, compress: true, track: false });
|
|
44998
|
+
const { diffImages: diffImages2 } = await Promise.resolve().then(() => (init_gallery_diff(), exports_gallery_diff));
|
|
44999
|
+
const diff = await diffImages2(ss1.path, ss2.path);
|
|
45000
|
+
logEvent(sid, "diff", { url1, url2, changed_percent: diff.changed_percent });
|
|
45001
|
+
return json({
|
|
45002
|
+
url1,
|
|
45003
|
+
url2,
|
|
45004
|
+
changed_pixels: diff.changed_pixels,
|
|
45005
|
+
total_pixels: diff.total_pixels,
|
|
45006
|
+
changed_percent: Math.round(diff.changed_percent * 100) / 100,
|
|
45007
|
+
diff_path: diff.diff_path,
|
|
45008
|
+
diff_base64: diff.diff_base64.length > 50000 ? undefined : diff.diff_base64,
|
|
45009
|
+
screenshot1_path: ss1.path,
|
|
45010
|
+
screenshot2_path: ss2.path
|
|
45011
|
+
});
|
|
45012
|
+
} catch (e) {
|
|
45013
|
+
return err(e);
|
|
45014
|
+
}
|
|
45015
|
+
});
|
|
44882
45016
|
}
|
|
44883
45017
|
|
|
44884
45018
|
// src/mcp/network.ts
|
|
@@ -45223,6 +45357,53 @@ function register4(server) {
|
|
|
45223
45357
|
return err(e);
|
|
45224
45358
|
}
|
|
45225
45359
|
});
|
|
45360
|
+
server.tool("browser_performance_budget", "Check page performance against a budget. Set thresholds for LCP, FCP, CLS, TTFB, DOM complete, and load event. Returns pass/fail per metric with actual values.", {
|
|
45361
|
+
session_id: exports_external.string().optional(),
|
|
45362
|
+
lcp_ms: exports_external.number().optional().describe("Largest Contentful Paint budget in ms (good: <2500)"),
|
|
45363
|
+
fcp_ms: exports_external.number().optional().describe("First Contentful Paint budget in ms (good: <1800)"),
|
|
45364
|
+
cls: exports_external.number().optional().describe("Cumulative Layout Shift budget (good: <0.1)"),
|
|
45365
|
+
ttfb_ms: exports_external.number().optional().describe("Time to First Byte budget in ms (good: <800)"),
|
|
45366
|
+
dom_complete_ms: exports_external.number().optional().describe("DOM complete budget in ms"),
|
|
45367
|
+
load_event_ms: exports_external.number().optional().describe("Load event budget in ms"),
|
|
45368
|
+
js_heap_mb: exports_external.number().optional().describe("JS heap size budget in MB")
|
|
45369
|
+
}, async ({ session_id, lcp_ms, fcp_ms, cls, ttfb_ms, dom_complete_ms, load_event_ms, js_heap_mb }) => {
|
|
45370
|
+
try {
|
|
45371
|
+
const sid = resolveSessionId(session_id);
|
|
45372
|
+
const page = getSessionPage(sid);
|
|
45373
|
+
const metrics = await getPerformanceMetrics(page);
|
|
45374
|
+
const checks = [];
|
|
45375
|
+
let allPassed = true;
|
|
45376
|
+
const check = (name, budget, actual) => {
|
|
45377
|
+
if (budget === undefined)
|
|
45378
|
+
return;
|
|
45379
|
+
const passed = actual !== undefined && actual <= budget;
|
|
45380
|
+
if (!passed)
|
|
45381
|
+
allPassed = false;
|
|
45382
|
+
checks.push({ metric: name, budget, actual, passed });
|
|
45383
|
+
};
|
|
45384
|
+
check("lcp", lcp_ms, metrics.lcp);
|
|
45385
|
+
check("fcp", fcp_ms, metrics.fcp);
|
|
45386
|
+
check("cls", cls, metrics.cls);
|
|
45387
|
+
check("ttfb", ttfb_ms, metrics.ttfb);
|
|
45388
|
+
check("dom_complete", dom_complete_ms, metrics.dom_complete);
|
|
45389
|
+
check("load_event", load_event_ms, metrics.load_event);
|
|
45390
|
+
if (js_heap_mb !== undefined && metrics.js_heap_size_used !== undefined) {
|
|
45391
|
+
const heapMb = metrics.js_heap_size_used / (1024 * 1024);
|
|
45392
|
+
const passed = heapMb <= js_heap_mb;
|
|
45393
|
+
if (!passed)
|
|
45394
|
+
allPassed = false;
|
|
45395
|
+
checks.push({ metric: "js_heap_mb", budget: js_heap_mb, actual: Math.round(heapMb * 100) / 100, passed });
|
|
45396
|
+
}
|
|
45397
|
+
return json({
|
|
45398
|
+
passed: allPassed,
|
|
45399
|
+
checks,
|
|
45400
|
+
metrics,
|
|
45401
|
+
url: page.url()
|
|
45402
|
+
});
|
|
45403
|
+
} catch (e) {
|
|
45404
|
+
return err(e);
|
|
45405
|
+
}
|
|
45406
|
+
});
|
|
45226
45407
|
}
|
|
45227
45408
|
|
|
45228
45409
|
// src/mcp/recordings.ts
|
|
@@ -45397,6 +45578,19 @@ function register5(server) {
|
|
|
45397
45578
|
return err(e);
|
|
45398
45579
|
}
|
|
45399
45580
|
});
|
|
45581
|
+
server.tool("browser_record_export", "Export a recording as a Playwright test (.spec.ts), Puppeteer script, or JSON. Returns the generated code as text.", {
|
|
45582
|
+
recording_id: exports_external.string().describe("ID of the recording to export"),
|
|
45583
|
+
format: exports_external.enum(["playwright", "puppeteer", "json"]).optional().default("playwright").describe("Export format")
|
|
45584
|
+
}, async ({ recording_id, format }) => {
|
|
45585
|
+
try {
|
|
45586
|
+
const { exportRecording: exportRecording2 } = await Promise.resolve().then(() => (init_recorder(), exports_recorder));
|
|
45587
|
+
const code = exportRecording2(recording_id, format);
|
|
45588
|
+
const ext = format === "json" ? ".json" : format === "playwright" ? ".spec.ts" : ".js";
|
|
45589
|
+
return json({ format, filename: `recording-${recording_id}${ext}`, code });
|
|
45590
|
+
} catch (e) {
|
|
45591
|
+
return err(e);
|
|
45592
|
+
}
|
|
45593
|
+
});
|
|
45400
45594
|
}
|
|
45401
45595
|
|
|
45402
45596
|
// src/mcp/scripts.ts
|
|
@@ -45809,7 +46003,8 @@ function register7(server) {
|
|
|
45809
46003
|
{ tool: "browser_screenshot", description: "Take a screenshot (PNG/JPEG/WebP, annotate=true for labels)" },
|
|
45810
46004
|
{ tool: "browser_pdf", description: "Generate a PDF of the page" },
|
|
45811
46005
|
{ tool: "browser_scroll_and_screenshot", description: "Scroll then screenshot in one call" },
|
|
45812
|
-
{ tool: "browser_scroll_to_element", description: "Scroll element into view + screenshot" }
|
|
46006
|
+
{ tool: "browser_scroll_to_element", description: "Scroll element into view + screenshot" },
|
|
46007
|
+
{ tool: "browser_diff", description: "Visual diff between two URLs \u2014 highlights changes in red" }
|
|
45813
46008
|
],
|
|
45814
46009
|
Storage: [
|
|
45815
46010
|
{ tool: "browser_cookies_get", description: "Get cookies" },
|
|
@@ -45834,7 +46029,8 @@ function register7(server) {
|
|
|
45834
46029
|
{ tool: "browser_intercept_clear", description: "Remove all response intercepts" }
|
|
45835
46030
|
],
|
|
45836
46031
|
Performance: [
|
|
45837
|
-
{ tool: "browser_performance", description: "Get performance metrics" }
|
|
46032
|
+
{ tool: "browser_performance", description: "Get performance metrics" },
|
|
46033
|
+
{ tool: "browser_performance_budget", description: "Check perf against budget thresholds (LCP, FCP, CLS, TTFB)" }
|
|
45838
46034
|
],
|
|
45839
46035
|
Console: [
|
|
45840
46036
|
{ tool: "browser_console_log", description: "Get console messages" },
|
|
@@ -45847,6 +46043,7 @@ function register7(server) {
|
|
|
45847
46043
|
{ tool: "browser_record_step", description: "Add a step to recording" },
|
|
45848
46044
|
{ tool: "browser_record_stop", description: "Stop and save recording" },
|
|
45849
46045
|
{ tool: "browser_record_replay", description: "Replay a recorded sequence" },
|
|
46046
|
+
{ tool: "browser_record_export", description: "Export recording as Playwright test, Puppeteer script, or JSON" },
|
|
45850
46047
|
{ tool: "browser_recordings_list", description: "List all recordings" }
|
|
45851
46048
|
],
|
|
45852
46049
|
Auth: [
|
package/dist/mcp/meta.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../src/mcp/meta.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA8CzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../src/mcp/meta.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA8CzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,QAq7BzC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/mcp/network.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAiCzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/mcp/network.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAiCzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,QAmgBzC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recordings.d.ts","sourceRoot":"","sources":["../../src/mcp/recordings.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAkBzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"recordings.d.ts","sourceRoot":"","sources":["../../src/mcp/recordings.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAkBzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,QAiQzC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/mcp/sessions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAgCzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/mcp/sessions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAgCzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,QAwYzC"}
|
package/dist/server/index.js
CHANGED
|
@@ -18153,6 +18153,52 @@ init_types();
|
|
|
18153
18153
|
import { execSync as execSync2, spawn as spawn2 } from "child_process";
|
|
18154
18154
|
var DEFAULT_TTYD_PORT_START = 7780;
|
|
18155
18155
|
var nextPort = DEFAULT_TTYD_PORT_START;
|
|
18156
|
+
var THEMES = {
|
|
18157
|
+
dark: {
|
|
18158
|
+
background: "#1e1e1e",
|
|
18159
|
+
foreground: "#d4d4d4",
|
|
18160
|
+
cursor: "#d4d4d4",
|
|
18161
|
+
selectionBackground: "#264f78",
|
|
18162
|
+
black: "#1e1e1e",
|
|
18163
|
+
red: "#f44747",
|
|
18164
|
+
green: "#6a9955",
|
|
18165
|
+
yellow: "#d7ba7d",
|
|
18166
|
+
blue: "#569cd6",
|
|
18167
|
+
magenta: "#c586c0",
|
|
18168
|
+
cyan: "#4ec9b0",
|
|
18169
|
+
white: "#d4d4d4",
|
|
18170
|
+
brightBlack: "#808080",
|
|
18171
|
+
brightRed: "#f44747",
|
|
18172
|
+
brightGreen: "#6a9955",
|
|
18173
|
+
brightYellow: "#d7ba7d",
|
|
18174
|
+
brightBlue: "#569cd6",
|
|
18175
|
+
brightMagenta: "#c586c0",
|
|
18176
|
+
brightCyan: "#4ec9b0",
|
|
18177
|
+
brightWhite: "#ffffff"
|
|
18178
|
+
},
|
|
18179
|
+
light: {
|
|
18180
|
+
background: "#ffffff",
|
|
18181
|
+
foreground: "#1e1e1e",
|
|
18182
|
+
cursor: "#1e1e1e",
|
|
18183
|
+
selectionBackground: "#add6ff",
|
|
18184
|
+
black: "#1e1e1e",
|
|
18185
|
+
red: "#cd3131",
|
|
18186
|
+
green: "#008000",
|
|
18187
|
+
yellow: "#795e26",
|
|
18188
|
+
blue: "#0451a5",
|
|
18189
|
+
magenta: "#af00db",
|
|
18190
|
+
cyan: "#0598bc",
|
|
18191
|
+
white: "#d4d4d4",
|
|
18192
|
+
brightBlack: "#808080",
|
|
18193
|
+
brightRed: "#cd3131",
|
|
18194
|
+
brightGreen: "#008000",
|
|
18195
|
+
brightYellow: "#795e26",
|
|
18196
|
+
brightBlue: "#0451a5",
|
|
18197
|
+
brightMagenta: "#af00db",
|
|
18198
|
+
brightCyan: "#0598bc",
|
|
18199
|
+
brightWhite: "#ffffff"
|
|
18200
|
+
}
|
|
18201
|
+
};
|
|
18156
18202
|
function isTuiAvailable() {
|
|
18157
18203
|
try {
|
|
18158
18204
|
execSync2("which ttyd", { stdio: "ignore" });
|
|
@@ -18210,7 +18256,35 @@ async function launchTui(command, options = {}) {
|
|
|
18210
18256
|
waitUntil: "domcontentloaded"
|
|
18211
18257
|
});
|
|
18212
18258
|
await page.waitForSelector(".xterm-screen", { timeout: 1e4 });
|
|
18213
|
-
|
|
18259
|
+
let resolvedTheme = "dark";
|
|
18260
|
+
const requestedTheme = options.theme ?? "system";
|
|
18261
|
+
if (requestedTheme === "light") {
|
|
18262
|
+
resolvedTheme = "light";
|
|
18263
|
+
} else if (requestedTheme === "dark") {
|
|
18264
|
+
resolvedTheme = "dark";
|
|
18265
|
+
} else {
|
|
18266
|
+
try {
|
|
18267
|
+
const result = execSync2("defaults read -g AppleInterfaceStyle 2>/dev/null", { encoding: "utf8" }).trim();
|
|
18268
|
+
resolvedTheme = result === "Dark" ? "dark" : "light";
|
|
18269
|
+
} catch {
|
|
18270
|
+
resolvedTheme = "light";
|
|
18271
|
+
}
|
|
18272
|
+
}
|
|
18273
|
+
const themeColors = THEMES[resolvedTheme];
|
|
18274
|
+
await page.evaluate((theme) => {
|
|
18275
|
+
const term = window.term ?? window.terminal;
|
|
18276
|
+
if (term?.options) {
|
|
18277
|
+
term.options.theme = theme;
|
|
18278
|
+
}
|
|
18279
|
+
document.body.style.backgroundColor = theme.background;
|
|
18280
|
+
const container = document.getElementById("terminal-container");
|
|
18281
|
+
if (container)
|
|
18282
|
+
container.style.backgroundColor = theme.background;
|
|
18283
|
+
const viewport2 = document.querySelector(".xterm-viewport");
|
|
18284
|
+
if (viewport2)
|
|
18285
|
+
viewport2.style.backgroundColor = theme.background;
|
|
18286
|
+
}, themeColors);
|
|
18287
|
+
return { ttydProcess, port, browser, page, theme: resolvedTheme };
|
|
18214
18288
|
} catch (err) {
|
|
18215
18289
|
ttydProcess.kill();
|
|
18216
18290
|
throw err;
|
|
@@ -18577,7 +18651,8 @@ async function createSession2(opts = {}) {
|
|
|
18577
18651
|
const command = opts.startUrl ?? "bash";
|
|
18578
18652
|
const tuiSess = await launchTui(command, {
|
|
18579
18653
|
headless: opts.headless ?? true,
|
|
18580
|
-
viewport: opts.viewport
|
|
18654
|
+
viewport: opts.viewport,
|
|
18655
|
+
theme: opts.tuiTheme ?? "system"
|
|
18581
18656
|
});
|
|
18582
18657
|
browser = tuiSess.browser;
|
|
18583
18658
|
page = tuiSess.page;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hasna/browser",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.2",
|
|
4
4
|
"description": "General-purpose browser agent toolkit — Playwright, Chrome DevTools Protocol, Lightpanda with auto engine selection. CLI + MCP + REST + SDK.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|