synabun 2026.3.31007 → 2026.4.1
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/CHANGELOG.md +51 -52
- package/hooks/claude-code/prompt-submit.mjs +6 -6
- package/mcp-server/dist/services/neural-interface.d.ts +20 -19
- package/mcp-server/dist/services/neural-interface.d.ts.map +1 -1
- package/mcp-server/dist/services/neural-interface.js +52 -45
- package/mcp-server/dist/services/neural-interface.js.map +1 -1
- package/mcp-server/dist/tools/browser-advanced.d.ts +4 -0
- package/mcp-server/dist/tools/browser-advanced.d.ts.map +1 -1
- package/mcp-server/dist/tools/browser-advanced.js +7 -4
- package/mcp-server/dist/tools/browser-advanced.js.map +1 -1
- package/mcp-server/dist/tools/browser-interact.d.ts +16 -0
- package/mcp-server/dist/tools/browser-interact.d.ts.map +1 -1
- package/mcp-server/dist/tools/browser-interact.js +25 -16
- package/mcp-server/dist/tools/browser-interact.js.map +1 -1
- package/mcp-server/dist/tools/browser-navigate.d.ts +8 -0
- package/mcp-server/dist/tools/browser-navigate.d.ts.map +1 -1
- package/mcp-server/dist/tools/browser-navigate.js +13 -8
- package/mcp-server/dist/tools/browser-navigate.js.map +1 -1
- package/mcp-server/dist/tools/browser-observe.d.ts +48 -0
- package/mcp-server/dist/tools/browser-observe.d.ts.map +1 -1
- package/mcp-server/dist/tools/browser-observe.js +74 -49
- package/mcp-server/dist/tools/browser-observe.js.map +1 -1
- package/mcp-server/dist/tools/leonardo-browser-tools.d.ts +20 -0
- package/mcp-server/dist/tools/leonardo-browser-tools.d.ts.map +1 -1
- package/mcp-server/dist/tools/leonardo-browser-tools.js +39 -34
- package/mcp-server/dist/tools/leonardo-browser-tools.js.map +1 -1
- package/mcp-server/src/services/neural-interface.ts +58 -46
- package/mcp-server/src/tools/browser-advanced.ts +10 -5
- package/mcp-server/src/tools/browser-interact.ts +34 -24
- package/mcp-server/src/tools/browser-navigate.ts +83 -77
- package/mcp-server/src/tools/browser-observe.ts +99 -73
- package/mcp-server/src/tools/leonardo-browser-tools.ts +47 -37
- package/neural-interface/public/shared/styles.css +49 -0
- package/neural-interface/public/shared/ui-automation-studio.js +71 -3
- package/neural-interface/public/shared/ui-claude-panel.js +29 -23
- package/neural-interface/public/shared/ui-settings.js +10 -10
- package/neural-interface/public/shared/ui-terminal.js +9 -7
- package/neural-interface/server.js +732 -386
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,67 +1,66 @@
|
|
|
1
|
-
# Changelog
|
|
1
|
+
# SynaBun Changelog
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Raw internal changelogs are archived in [changelog/](changelog/).
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
- **`getMcpSetup()` in `onboarding.html` used `DATA_HOME` for the MCP entry file path** — On Windows global npm installs, `DATA_HOME` resolves to `%APPDATA%/synabun` (user data dir) while the actual `run.mjs` lives in `PACKAGE_ROOT` (`%APPDATA%/npm/node_modules/synabun`). The generated `~/.claude.json` pointed to a non-existent file, silently breaking MCP startup
|
|
7
|
-
- `GET /api/setup/onboarding` now returns `packageRoot: PACKAGE_ROOT` alongside `projectDir: DATA_HOME`
|
|
8
|
-
- `getMcpSetup()` rewritten: uses `packageRoot` for MCP entry path (`run.mjs`), `projectRoot` (data home) for env/data paths
|
|
9
|
-
- All tool configs (Claude CLI, Cursor, Windsurf, `.mcp.json`) now include full env block: `DOTENV_PATH`, `SYNABUN_DATA_HOME`, `MEMORY_DATA_DIR` — previously only had `DOTENV_PATH`
|
|
10
|
-
- Added startup warning in `server.js` when `SYNABUN_DATA_HOME` is unset and `PACKAGE_ROOT` contains `node_modules` — catches misconfigured global installs early
|
|
5
|
+
## v.2026.04.01
|
|
11
6
|
|
|
12
|
-
|
|
7
|
+
### Added — Effort Level (Think) Selector in Automation Studio
|
|
8
|
+
|
|
9
|
+
- **Effort chip row in launch panel** — New Off / Low / Med / High / Max selector visible when Claude Code CLI is selected. Frosty glass chip design with tier-based accent colors (warm gold for Max, cool blue for Med). Selection persists via storage
|
|
10
|
+
- **Profile-aware visibility** — Effort section auto-hides when switching to Codex or Gemini profiles, re-appears on Claude Code. Applied in both main launch panel and quick timer
|
|
11
|
+
- **`--effort` flag plumbed through all launch paths** — Flows through loop launch, agent launch, quick timer, and scheduled loops. Stored in loop state JSON for traceability
|
|
12
|
+
|
|
13
|
+
### Fixed — MCP Registration Path Wrong on Windows Global Install
|
|
14
|
+
|
|
15
|
+
- **Onboarding wizard generated broken paths** — `getMcpSetup()` used `DATA_HOME` for the MCP entry file path. On Windows global npm installs, `DATA_HOME` resolves to `%APPDATA%/synabun` while `run.mjs` lives in `PACKAGE_ROOT` (`%APPDATA%/npm/node_modules/synabun`). The generated `~/.claude.json` pointed to a non-existent file, silently breaking MCP startup
|
|
16
|
+
- **All tool configs now include full env block** — Claude CLI, Cursor, Windsurf, and `.mcp.json` configs now include `DOTENV_PATH`, `SYNABUN_DATA_HOME`, and `MEMORY_DATA_DIR`
|
|
17
|
+
- **Startup warning for misconfigured global installs** — Server logs a warning when `SYNABUN_DATA_HOME` is unset and `PACKAGE_ROOT` contains `node_modules`
|
|
18
|
+
|
|
19
|
+
### Fixed — Edit Plan Shows Wrong Content
|
|
20
|
+
|
|
21
|
+
- **Stale fallback chain picked up post-plan messages** — `extractPlanText()` was called lazily when the user clicked "Edit plan", by which time remember results and stop hook outputs had been rendered in the DOM. The backward DOM walk picked these up instead of the actual plan
|
|
22
|
+
- **Eager plan capture** — Plan content is now captured immediately when ExitPlanMode is detected, before any post-plan messages exist. Removed unreliable disk scan fallback that found stale files from previous sessions
|
|
23
|
+
- **State cleanup on plan toggle** — All 3 plan mode entry points now clear cached plan data when toggled ON, preventing stale data inheritance
|
|
13
24
|
|
|
14
25
|
### Fixed — Browser Rendering Parity with Real Chrome
|
|
15
|
-
- Set Playwright `viewport: null` in headed mode so pages render at the actual window size instead of a forced 1280x800 emulated box
|
|
16
|
-
- Removed forced `deviceScaleFactor: 1` override — Chrome now uses its native DPR (2x on Retina) for correct rendering
|
|
17
|
-
- Fixes white-page rendering on complex SPAs like Twitter/X where the emulated viewport broke CSS flexbox layouts
|
|
18
26
|
|
|
19
|
-
|
|
20
|
-
- Screencast streaming now disabled by default for fresh installs (was enabled)
|
|
21
|
-
- All 7 check sites updated: `disabled !== false` instead of `!!disabled` — stream only runs when explicitly toggled ON in Settings
|
|
22
|
-
- Affects server.js, ui-terminal.js (4 sites), ui-settings.js, ui-automation-studio.js
|
|
27
|
+
- **Viewport and DPR overrides removed** — Set Playwright `viewport: null` in headed mode so pages render at actual window size. Removed forced `deviceScaleFactor: 1` — Chrome now uses native DPR (2x on Retina). Fixes white-page rendering on complex SPAs like Twitter/X
|
|
23
28
|
|
|
24
|
-
### Fixed — Terminal Text Cropped at Bottom
|
|
25
|
-
- **xterm FitAddon overcounted rows by ~2** — The global `* { box-sizing: border-box }` reset caused `getComputedStyle(parent).height` to return the border-box height (including 40px of vertical padding) for `.term-viewport`. xterm's FitAddon v0.10.0 uses this value as available space, calculating ~2 extra rows that rendered beyond the visible content area and got clipped
|
|
26
|
-
- Verified empirically via Playwright: border-box returns 386px vs child `height: 100%` resolving to 346px — a 40px mismatch equal to the viewport padding
|
|
27
|
-
- Fix: added `box-sizing: content-box` to `.term-viewport` (docked) and `.term-float-viewport-wrap .term-viewport` (floating tabs) — `getComputedStyle().height` now returns content height matching what `.xterm { height: 100% }` resolves to, with no visual size change
|
|
29
|
+
### Fixed — Terminal Text Cropped at Bottom
|
|
28
30
|
|
|
29
|
-
|
|
30
|
-
- **`tomlUpsertSection()` wrote JSON syntax for objects instead of TOML inline tables** — The `env` field in `~/.codex/config.toml` was serialized as `{"key":"value"}` (JSON, with colons) instead of `{key = "value"}` (TOML inline table, with `=`). Codex CLI rejected this with "missing assignment between key-value pairs, expected `=`"
|
|
31
|
-
- Added `tomlSerializeValue()` helper that recursively serializes strings, arrays, and objects with correct TOML syntax
|
|
32
|
-
- `tomlUpsertSection()` now calls `tomlSerializeValue(v)` instead of `JSON.stringify(v)`
|
|
33
|
-
- Affects `POST /api/setup/codex/mcp` endpoint — the onboarding/settings toggle that registers SynaBun MCP in Codex
|
|
31
|
+
- **FitAddon box-sizing mismatch** — The global `* { box-sizing: border-box }` reset caused xterm's FitAddon to overcalculate available rows by ~2 (40px padding mismatch). Fix: `box-sizing: content-box` on terminal viewport elements — no visual size change
|
|
34
32
|
|
|
35
|
-
###
|
|
36
|
-
|
|
37
|
-
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
- **
|
|
42
|
-
- **Browser enforcement prompt includes `browserTabId`** — `buildBrowserNote()` in `prompt-submit.mjs` now tells Claude which tab is theirs in the shared browser
|
|
43
|
-
|
|
44
|
-
### Fixed — Greeting Re-fires on Every Message in Ongoing Sessions
|
|
45
|
-
- **`session-start.mjs` injected `## GREETING DIRECTIVE` into persistent `additionalContext`** — SessionStart hook's `additionalContext` persists in the conversation context for the entire session. Claude saw the "begin with this greeting" instruction on every turn and re-greeted, overpowering the `bootCancel` countermeasure on messages 2+
|
|
46
|
-
- Removed GREETING DIRECTIVE block and Session Boot Sequence block from `session-start.mjs` — these no longer persist in session context
|
|
47
|
-
- Removed dead greeting helper functions (`loadGreetingConfig`, `getProjectGreetingConfig`, `getTimeGreeting`, `resolveTemplate`, `formatReminders`) from `session-start.mjs`
|
|
48
|
-
- Added greeting helpers + `buildGreetingContext()` to `prompt-submit.mjs` — builds full greeting directive + boot sequence on message 1 only, so it never persists
|
|
49
|
-
- Removed `bootCancel` injection on messages 2+ (no longer needed since there's no persistent directive to cancel)
|
|
33
|
+
### Fixed — Codex CLI Config Parse Error
|
|
34
|
+
|
|
35
|
+
- **TOML serialization wrote JSON syntax** — `tomlUpsertSection()` serialized the `env` field as `{"key":"value"}` (JSON) instead of `{key = "value"}` (TOML inline table). Codex CLI rejected with "missing assignment between key-value pairs". Added proper `tomlSerializeValue()` helper
|
|
36
|
+
|
|
37
|
+
### Fixed — Greeting Re-fires on Every Message
|
|
38
|
+
|
|
39
|
+
- **Greeting directive persisted in session context** — The SessionStart hook injected the greeting into `additionalContext` which persists for the entire session. Claude saw "begin with this greeting" on every turn. Moved greeting injection to the prompt-submit hook (message 1 only) so it never persists
|
|
50
40
|
|
|
51
41
|
### Fixed — Windows Cross-Platform Hook Compatibility
|
|
52
|
-
- **`hookCommandString()` embedded machine-specific absolute paths** — When hooks were installed into SynaBun's own `.claude/settings.json`, the function generated paths like `/Users/.../hooks/claude-code/script.mjs` that only worked on the originating OS. On Windows PowerShell, these macOS paths caused `SessionStart:startup hook error`. Fix: when `targetProjectPath` matches `PACKAGE_ROOT`, generate relative paths (`hooks/claude-code/script.mjs`) that work cross-platform. Absolute paths still used for global/external project installations
|
|
53
|
-
- Updated `addHookToSettings()`, `removeHookFromSettings()`, `isHookInstalled()`, `isSpecificHookInstalled()` with `targetProjectPath` parameter
|
|
54
|
-
- `removeHookFromSettings()` now matches both relative and absolute-path variants for cleanup of old installs
|
|
55
42
|
|
|
56
|
-
|
|
57
|
-
- **`pre-websearch.mjs` had no stdin timeout** — On PowerShell, stdin `end` event may never fire, causing the hook to hang indefinitely. Added 2000ms timeout that fires `handleInput()` directly if stdin doesn't close. Refactored inline handler to named `handleInput()` function
|
|
43
|
+
- **Hooks embedded machine-specific absolute paths** — When installed into SynaBun's own settings, hook commands contained macOS-style paths that failed on Windows PowerShell. Fix: generate relative paths when target matches `PACKAGE_ROOT`. Cleanup now matches both relative and absolute-path variants
|
|
58
44
|
|
|
59
|
-
### Fixed —
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
45
|
+
### Fixed — Pre-WebSearch Hook Hangs on PowerShell
|
|
46
|
+
|
|
47
|
+
- **Missing stdin timeout** — On PowerShell, stdin `end` event may never fire, causing the hook to hang indefinitely. Added 2000ms timeout fallback
|
|
48
|
+
|
|
49
|
+
### Fixed — Hooks Crash with Unhandled Errors
|
|
50
|
+
|
|
51
|
+
- **All 7 hooks now handle uncaught exceptions** — Added `process.on('uncaughtException')` and `process.on('unhandledRejection')` to every hook. Each outputs valid JSON appropriate to its hook type and exits cleanly to prevent "hook error" messages
|
|
52
|
+
|
|
53
|
+
### Changed — Browser Stream Defaults to OFF
|
|
54
|
+
|
|
55
|
+
- **Screencast streaming disabled by default** — Stream only runs when explicitly toggled ON in Settings. All 7 check sites updated across server and UI modules
|
|
56
|
+
|
|
57
|
+
### Changed — Loop Browser: Shared System Chrome with Tabs
|
|
58
|
+
|
|
59
|
+
- **One-time Chrome restart per NI boot** — `ensureChromeDebuggable()` ensures Chrome runs with `--remote-debugging-port=9222`. Graceful AppleScript quit with polling, then `killall` fallback. Result cached — subsequent calls just probe the port
|
|
60
|
+
- **Shared session architecture** — Replaced per-loop Chrome restarts and 15-second UI polls with shared CDP sessions. Opens new tab per loop instead of creating isolated sessions. Loop stop closes only the loop's tab, preserving the shared session
|
|
61
|
+
- **MCP session fallback** — When `SYNABUN_BROWSER_SESSION` is pinned but stale, auto-selects or creates instead of failing
|
|
64
62
|
|
|
65
63
|
### Changed — Dependency Updates
|
|
66
|
-
|
|
67
|
-
- **
|
|
64
|
+
|
|
65
|
+
- **mcp-server** — 44 packages updated: `@modelcontextprotocol/sdk` 1.27.1→1.29.0, `@inquirer/prompts` 8.3.0→8.3.2, `vitest` 4.1.0→4.1.2, `@types/node` 22.19.13→22.19.15
|
|
66
|
+
- **neural-interface** — 17 packages updated: `@anthropic-ai/claude-code` 2.1.71→2.1.89, `playwright` 1.58.2→1.59.0, `ws` 8.19.0→8.20.0. Fixed `lodash` prototype pollution vulnerability
|
|
@@ -236,14 +236,14 @@ function buildBrowserNote(state) {
|
|
|
236
236
|
'=== BROWSER ENFORCEMENT (MANDATORY) ===',
|
|
237
237
|
'This automation REQUIRES the SynaBun internal browser. You MUST:',
|
|
238
238
|
];
|
|
239
|
-
//
|
|
239
|
+
// Session and tab are auto-routed via SYNABUN_BROWSER_SESSION / SYNABUN_BROWSER_TAB env vars.
|
|
240
|
+
// Display IDs for debugging visibility but no manual pass-through needed.
|
|
240
241
|
if (state.browserSessionId) {
|
|
241
|
-
lines.push(`YOUR BROWSER SESSION
|
|
242
|
-
lines.push('Pass sessionId: "' + state.browserSessionId + '" to ALL browser tool calls (browser_navigate, browser_click, etc.).');
|
|
242
|
+
lines.push(`YOUR BROWSER SESSION: ${state.browserSessionId}`);
|
|
243
243
|
if (state.browserTabId) {
|
|
244
|
-
lines.push(`YOUR BROWSER TAB
|
|
245
|
-
lines.push('This is your dedicated tab in the shared system browser. Other tabs belong to the user or other automations.');
|
|
244
|
+
lines.push(`YOUR BROWSER TAB: ${state.browserTabId}`);
|
|
246
245
|
}
|
|
246
|
+
lines.push('Your session and tab are auto-configured via environment. All browser tool calls will target your dedicated tab automatically — no need to pass sessionId or tabId manually.');
|
|
247
247
|
}
|
|
248
248
|
lines.push(
|
|
249
249
|
'1. Call `browser_navigate` with your target URL to create or reuse a browser session',
|
|
@@ -251,7 +251,7 @@ function buildBrowserNote(state) {
|
|
|
251
251
|
'3. NEVER use Playwright plugin tools (mcp__plugin_playwright_*) — they launch a separate browser that the user cannot see',
|
|
252
252
|
'4. NEVER use WebFetch or WebSearch tools for tasks that require visual browsing — use the SynaBun browser instead',
|
|
253
253
|
'5. If the browser shows a login page, CAPTCHA, or any wall requiring human action: STOP immediately. Report the blocker to the user and WAIT. Do NOT abandon the browser and fall back to web search. The user can interact with the browser panel to resolve it.',
|
|
254
|
-
'
|
|
254
|
+
'SynaBun launches a headful browser using the profile selected in Browser Settings. The user can see and interact with that browser session.',
|
|
255
255
|
'=== END BROWSER ENFORCEMENT ===',
|
|
256
256
|
);
|
|
257
257
|
return lines.join('\n');
|
|
@@ -24,8 +24,9 @@ interface NiResponse {
|
|
|
24
24
|
*/
|
|
25
25
|
export declare function resolveSession(sessionId?: string, autoCreate?: {
|
|
26
26
|
url?: string;
|
|
27
|
-
}): Promise<{
|
|
27
|
+
}, tabId?: string): Promise<{
|
|
28
28
|
sessionId: string;
|
|
29
|
+
tabId?: string;
|
|
29
30
|
} | {
|
|
30
31
|
error: string;
|
|
31
32
|
}>;
|
|
@@ -33,34 +34,34 @@ export declare function invalidateCache(reason: string): Promise<void>;
|
|
|
33
34
|
export declare function listSessions(): Promise<NiResponse>;
|
|
34
35
|
export declare function createSession(url?: string): Promise<NiResponse>;
|
|
35
36
|
export declare function closeSession(sessionId: string): Promise<NiResponse>;
|
|
36
|
-
export declare function navigate(sessionId: string, url: string): Promise<NiResponse>;
|
|
37
|
-
export declare function goBack(sessionId: string): Promise<NiResponse>;
|
|
38
|
-
export declare function goForward(sessionId: string): Promise<NiResponse>;
|
|
39
|
-
export declare function reload(sessionId: string): Promise<NiResponse>;
|
|
40
|
-
export declare function click(sessionId: string, selector: string, nthMatch?: number): Promise<NiResponse>;
|
|
41
|
-
export declare function fill(sessionId: string, selector: string, value: string, nthMatch?: number): Promise<NiResponse>;
|
|
42
|
-
export declare function type(sessionId: string, selector: string | null, text: string, nthMatch?: number): Promise<NiResponse>;
|
|
43
|
-
export declare function hover(sessionId: string, selector: string, nthMatch?: number): Promise<NiResponse>;
|
|
44
|
-
export declare function selectOption(sessionId: string, selector: string, value: string, nthMatch?: number): Promise<NiResponse>;
|
|
45
|
-
export declare function pressKey(sessionId: string, key: string): Promise<NiResponse>;
|
|
37
|
+
export declare function navigate(sessionId: string, url: string, tabId?: string): Promise<NiResponse>;
|
|
38
|
+
export declare function goBack(sessionId: string, tabId?: string): Promise<NiResponse>;
|
|
39
|
+
export declare function goForward(sessionId: string, tabId?: string): Promise<NiResponse>;
|
|
40
|
+
export declare function reload(sessionId: string, tabId?: string): Promise<NiResponse>;
|
|
41
|
+
export declare function click(sessionId: string, selector: string, nthMatch?: number, tabId?: string): Promise<NiResponse>;
|
|
42
|
+
export declare function fill(sessionId: string, selector: string, value: string, nthMatch?: number, tabId?: string): Promise<NiResponse>;
|
|
43
|
+
export declare function type(sessionId: string, selector: string | null, text: string, nthMatch?: number, tabId?: string): Promise<NiResponse>;
|
|
44
|
+
export declare function hover(sessionId: string, selector: string, nthMatch?: number, tabId?: string): Promise<NiResponse>;
|
|
45
|
+
export declare function selectOption(sessionId: string, selector: string, value: string, nthMatch?: number, tabId?: string): Promise<NiResponse>;
|
|
46
|
+
export declare function pressKey(sessionId: string, key: string, tabId?: string): Promise<NiResponse>;
|
|
46
47
|
export declare function scroll(sessionId: string, opts: {
|
|
47
48
|
direction: string;
|
|
48
49
|
distance?: number;
|
|
49
50
|
selector?: string;
|
|
50
|
-
}): Promise<NiResponse>;
|
|
51
|
-
export declare function upload(sessionId: string, selector: string, filePaths: string[], nthMatch?: number): Promise<NiResponse>;
|
|
52
|
-
export declare function snapshot(sessionId: string, selector?: string): Promise<NiResponse>;
|
|
53
|
-
export declare function getContent(sessionId: string): Promise<NiResponse>;
|
|
54
|
-
export declare function getMarkdown(sessionId: string): Promise<NiResponse>;
|
|
51
|
+
}, tabId?: string): Promise<NiResponse>;
|
|
52
|
+
export declare function upload(sessionId: string, selector: string, filePaths: string[], nthMatch?: number, tabId?: string): Promise<NiResponse>;
|
|
53
|
+
export declare function snapshot(sessionId: string, selector?: string, tabId?: string): Promise<NiResponse>;
|
|
54
|
+
export declare function getContent(sessionId: string, tabId?: string): Promise<NiResponse>;
|
|
55
|
+
export declare function getMarkdown(sessionId: string, tabId?: string): Promise<NiResponse>;
|
|
55
56
|
export declare function fetchMarkdown(url: string, timeout?: number): Promise<NiResponse>;
|
|
56
|
-
export declare function screenshot(sessionId: string): Promise<NiResponse>;
|
|
57
|
-
export declare function evaluate(sessionId: string, script: string): Promise<NiResponse>;
|
|
57
|
+
export declare function screenshot(sessionId: string, tabId?: string): Promise<NiResponse>;
|
|
58
|
+
export declare function evaluate(sessionId: string, script: string, tabId?: string): Promise<NiResponse>;
|
|
58
59
|
export declare function waitFor(sessionId: string, opts: {
|
|
59
60
|
selector?: string;
|
|
60
61
|
state?: string;
|
|
61
62
|
loadState?: string;
|
|
62
63
|
timeout?: number;
|
|
63
|
-
}): Promise<NiResponse>;
|
|
64
|
+
}, tabId?: string): Promise<NiResponse>;
|
|
64
65
|
export declare function getWhiteboard(): Promise<NiResponse>;
|
|
65
66
|
export declare function addWhiteboardElements(elements: Record<string, unknown>[], coordMode?: string, layout?: string): Promise<NiResponse>;
|
|
66
67
|
export declare function updateWhiteboardElement(id: string, updates: Record<string, unknown>, coordMode?: string): Promise<NiResponse>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"neural-interface.d.ts","sourceRoot":"","sources":["../../src/services/neural-interface.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"neural-interface.d.ts","sourceRoot":"","sources":["../../src/services/neural-interface.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ const BASE_URL = process.env.NEURAL_INTERFACE_URL
|
|
|
7
7
|
|| `http://localhost:${process.env.NEURAL_PORT || '3344'}`;
|
|
8
8
|
const DEFAULT_TIMEOUT = 10_000;
|
|
9
9
|
const LONG_TIMEOUT = 30_000;
|
|
10
|
+
const SESSION_CREATE_TIMEOUT = 70_000;
|
|
10
11
|
async function request(method, path, body, timeout = DEFAULT_TIMEOUT) {
|
|
11
12
|
const controller = new AbortController();
|
|
12
13
|
const timer = setTimeout(() => controller.abort(), timeout);
|
|
@@ -44,7 +45,9 @@ async function request(method, path, body, timeout = DEFAULT_TIMEOUT) {
|
|
|
44
45
|
* - If 0 sessions exist and autoCreate is true, create one.
|
|
45
46
|
* - If multiple sessions and no ID, return error listing them.
|
|
46
47
|
*/
|
|
47
|
-
export async function resolveSession(sessionId, autoCreate) {
|
|
48
|
+
export async function resolveSession(sessionId, autoCreate, tabId) {
|
|
49
|
+
// Resolve tab ID from explicit param or environment variable
|
|
50
|
+
const resolvedTabId = tabId || process.env.SYNABUN_BROWSER_TAB || undefined;
|
|
48
51
|
// Agent-scoped browser session — set by the agent orchestrator to pin
|
|
49
52
|
// this MCP instance to a specific browser session (multi-agent isolation).
|
|
50
53
|
// Verify the pinned session still exists; fall through to auto-select if gone.
|
|
@@ -53,13 +56,13 @@ export async function resolveSession(sessionId, autoCreate) {
|
|
|
53
56
|
const check = await request('GET', '/api/browser/sessions');
|
|
54
57
|
const active = (check.sessions || []).find(s => s.id === pinnedSession);
|
|
55
58
|
if (active)
|
|
56
|
-
return { sessionId: pinnedSession };
|
|
57
|
-
|
|
59
|
+
return { sessionId: pinnedSession, tabId: resolvedTabId };
|
|
60
|
+
return { error: `Pinned browser session ${pinnedSession} is no longer available. Launch the automation again so SynaBun can open the selected browser profile.` };
|
|
58
61
|
}
|
|
59
62
|
if (sessionId) {
|
|
60
63
|
// Trust the server — it will 404 if the session doesn't exist.
|
|
61
64
|
// Skipping the extra GET /api/browser/sessions verification call saves a full round-trip.
|
|
62
|
-
return { sessionId };
|
|
65
|
+
return { sessionId, tabId: resolvedTabId };
|
|
63
66
|
}
|
|
64
67
|
// List sessions
|
|
65
68
|
const data = await request('GET', '/api/browser/sessions');
|
|
@@ -67,16 +70,16 @@ export async function resolveSession(sessionId, autoCreate) {
|
|
|
67
70
|
return { error: data.error };
|
|
68
71
|
const sessions = (data.sessions || []);
|
|
69
72
|
if (sessions.length === 1) {
|
|
70
|
-
return { sessionId: sessions[0].id };
|
|
73
|
+
return { sessionId: sessions[0].id, tabId: resolvedTabId };
|
|
71
74
|
}
|
|
72
75
|
if (sessions.length === 0) {
|
|
73
76
|
if (autoCreate) {
|
|
74
77
|
const created = await request('POST', '/api/browser/sessions', {
|
|
75
78
|
url: autoCreate.url || 'about:blank',
|
|
76
|
-
},
|
|
79
|
+
}, SESSION_CREATE_TIMEOUT);
|
|
77
80
|
if (created.error)
|
|
78
81
|
return { error: `Failed to auto-create session: ${created.error}` };
|
|
79
|
-
return { sessionId: created.sessionId };
|
|
82
|
+
return { sessionId: created.sessionId, tabId: resolvedTabId };
|
|
80
83
|
}
|
|
81
84
|
return { error: 'No browser sessions open. Use browser_session to create one first, or use browser_navigate with a URL to auto-create.' };
|
|
82
85
|
}
|
|
@@ -100,73 +103,77 @@ export async function listSessions() {
|
|
|
100
103
|
export async function createSession(url) {
|
|
101
104
|
return request('POST', '/api/browser/sessions', {
|
|
102
105
|
url: url || 'about:blank',
|
|
103
|
-
},
|
|
106
|
+
}, SESSION_CREATE_TIMEOUT);
|
|
104
107
|
}
|
|
105
108
|
export async function closeSession(sessionId) {
|
|
106
109
|
return request('DELETE', `/api/browser/sessions/${sessionId}`);
|
|
107
110
|
}
|
|
108
111
|
// ── Navigation ──
|
|
109
|
-
export async function navigate(sessionId, url) {
|
|
110
|
-
return request('POST', `/api/browser/sessions/${sessionId}/navigate`, { url }, LONG_TIMEOUT);
|
|
112
|
+
export async function navigate(sessionId, url, tabId) {
|
|
113
|
+
return request('POST', `/api/browser/sessions/${sessionId}/navigate`, { url, ...(tabId && { tabId }) }, LONG_TIMEOUT);
|
|
111
114
|
}
|
|
112
|
-
export async function goBack(sessionId) {
|
|
113
|
-
return request('POST', `/api/browser/sessions/${sessionId}/back
|
|
115
|
+
export async function goBack(sessionId, tabId) {
|
|
116
|
+
return request('POST', `/api/browser/sessions/${sessionId}/back`, { ...(tabId && { tabId }) });
|
|
114
117
|
}
|
|
115
|
-
export async function goForward(sessionId) {
|
|
116
|
-
return request('POST', `/api/browser/sessions/${sessionId}/forward
|
|
118
|
+
export async function goForward(sessionId, tabId) {
|
|
119
|
+
return request('POST', `/api/browser/sessions/${sessionId}/forward`, { ...(tabId && { tabId }) });
|
|
117
120
|
}
|
|
118
|
-
export async function reload(sessionId) {
|
|
119
|
-
return request('POST', `/api/browser/sessions/${sessionId}/reload`,
|
|
121
|
+
export async function reload(sessionId, tabId) {
|
|
122
|
+
return request('POST', `/api/browser/sessions/${sessionId}/reload`, { ...(tabId && { tabId }) }, LONG_TIMEOUT);
|
|
120
123
|
}
|
|
121
124
|
// ── Interaction (selector-based) ──
|
|
122
|
-
export async function click(sessionId, selector, nthMatch) {
|
|
123
|
-
return request('POST', `/api/browser/sessions/${sessionId}/click`, { selector, ...(nthMatch !== undefined && { nthMatch }) });
|
|
125
|
+
export async function click(sessionId, selector, nthMatch, tabId) {
|
|
126
|
+
return request('POST', `/api/browser/sessions/${sessionId}/click`, { selector, ...(nthMatch !== undefined && { nthMatch }), ...(tabId && { tabId }) });
|
|
124
127
|
}
|
|
125
|
-
export async function fill(sessionId, selector, value, nthMatch) {
|
|
126
|
-
return request('POST', `/api/browser/sessions/${sessionId}/fill`, { selector, value, ...(nthMatch !== undefined && { nthMatch }) });
|
|
128
|
+
export async function fill(sessionId, selector, value, nthMatch, tabId) {
|
|
129
|
+
return request('POST', `/api/browser/sessions/${sessionId}/fill`, { selector, value, ...(nthMatch !== undefined && { nthMatch }), ...(tabId && { tabId }) });
|
|
127
130
|
}
|
|
128
|
-
export async function type(sessionId, selector, text, nthMatch) {
|
|
129
|
-
return request('POST', `/api/browser/sessions/${sessionId}/type`, { selector, text, ...(nthMatch !== undefined && { nthMatch }) });
|
|
131
|
+
export async function type(sessionId, selector, text, nthMatch, tabId) {
|
|
132
|
+
return request('POST', `/api/browser/sessions/${sessionId}/type`, { selector, text, ...(nthMatch !== undefined && { nthMatch }), ...(tabId && { tabId }) });
|
|
130
133
|
}
|
|
131
|
-
export async function hover(sessionId, selector, nthMatch) {
|
|
132
|
-
return request('POST', `/api/browser/sessions/${sessionId}/hover`, { selector, ...(nthMatch !== undefined && { nthMatch }) });
|
|
134
|
+
export async function hover(sessionId, selector, nthMatch, tabId) {
|
|
135
|
+
return request('POST', `/api/browser/sessions/${sessionId}/hover`, { selector, ...(nthMatch !== undefined && { nthMatch }), ...(tabId && { tabId }) });
|
|
133
136
|
}
|
|
134
|
-
export async function selectOption(sessionId, selector, value, nthMatch) {
|
|
135
|
-
return request('POST', `/api/browser/sessions/${sessionId}/select`, { selector, value, ...(nthMatch !== undefined && { nthMatch }) });
|
|
137
|
+
export async function selectOption(sessionId, selector, value, nthMatch, tabId) {
|
|
138
|
+
return request('POST', `/api/browser/sessions/${sessionId}/select`, { selector, value, ...(nthMatch !== undefined && { nthMatch }), ...(tabId && { tabId }) });
|
|
136
139
|
}
|
|
137
|
-
export async function pressKey(sessionId, key) {
|
|
138
|
-
return request('POST', `/api/browser/sessions/${sessionId}/press`, { key });
|
|
140
|
+
export async function pressKey(sessionId, key, tabId) {
|
|
141
|
+
return request('POST', `/api/browser/sessions/${sessionId}/press`, { key, ...(tabId && { tabId }) });
|
|
139
142
|
}
|
|
140
|
-
export async function scroll(sessionId, opts) {
|
|
141
|
-
return request('POST', `/api/browser/sessions/${sessionId}/scroll`, opts);
|
|
143
|
+
export async function scroll(sessionId, opts, tabId) {
|
|
144
|
+
return request('POST', `/api/browser/sessions/${sessionId}/scroll`, { ...opts, ...(tabId && { tabId }) });
|
|
142
145
|
}
|
|
143
|
-
export async function upload(sessionId, selector, filePaths, nthMatch) {
|
|
144
|
-
return request('POST', `/api/browser/sessions/${sessionId}/upload`, { selector, filePaths, ...(nthMatch !== undefined && { nthMatch }) }, LONG_TIMEOUT);
|
|
146
|
+
export async function upload(sessionId, selector, filePaths, nthMatch, tabId) {
|
|
147
|
+
return request('POST', `/api/browser/sessions/${sessionId}/upload`, { selector, filePaths, ...(nthMatch !== undefined && { nthMatch }), ...(tabId && { tabId }) }, LONG_TIMEOUT);
|
|
145
148
|
}
|
|
146
149
|
// ── Observation ──
|
|
147
|
-
export async function snapshot(sessionId, selector) {
|
|
150
|
+
export async function snapshot(sessionId, selector, tabId) {
|
|
148
151
|
if (selector)
|
|
149
|
-
return request('POST', `/api/browser/sessions/${sessionId}/snapshot`, { selector });
|
|
150
|
-
|
|
152
|
+
return request('POST', `/api/browser/sessions/${sessionId}/snapshot`, { selector, ...(tabId && { tabId }) });
|
|
153
|
+
const qs = tabId ? `?tabId=${tabId}` : '';
|
|
154
|
+
return request('GET', `/api/browser/sessions/${sessionId}/snapshot${qs}`);
|
|
151
155
|
}
|
|
152
|
-
export async function getContent(sessionId) {
|
|
153
|
-
|
|
156
|
+
export async function getContent(sessionId, tabId) {
|
|
157
|
+
const qs = tabId ? `?tabId=${tabId}` : '';
|
|
158
|
+
return request('GET', `/api/browser/sessions/${sessionId}/content${qs}`);
|
|
154
159
|
}
|
|
155
|
-
export async function getMarkdown(sessionId) {
|
|
156
|
-
|
|
160
|
+
export async function getMarkdown(sessionId, tabId) {
|
|
161
|
+
const qs = tabId ? `?tabId=${tabId}` : '';
|
|
162
|
+
return request('GET', `/api/browser/sessions/${sessionId}/markdown${qs}`, undefined, LONG_TIMEOUT);
|
|
157
163
|
}
|
|
158
164
|
export async function fetchMarkdown(url, timeout) {
|
|
159
165
|
return request('POST', '/api/fetch-markdown', { url, timeout }, LONG_TIMEOUT);
|
|
160
166
|
}
|
|
161
|
-
export async function screenshot(sessionId) {
|
|
162
|
-
|
|
167
|
+
export async function screenshot(sessionId, tabId) {
|
|
168
|
+
const qs = tabId ? `?tabId=${tabId}` : '';
|
|
169
|
+
return request('GET', `/api/browser/sessions/${sessionId}/screenshot-base64${qs}`);
|
|
163
170
|
}
|
|
164
171
|
// ── Advanced ──
|
|
165
|
-
export async function evaluate(sessionId, script) {
|
|
166
|
-
return request('POST', `/api/browser/sessions/${sessionId}/evaluate`, { script }, LONG_TIMEOUT);
|
|
172
|
+
export async function evaluate(sessionId, script, tabId) {
|
|
173
|
+
return request('POST', `/api/browser/sessions/${sessionId}/evaluate`, { script, ...(tabId && { tabId }) }, LONG_TIMEOUT);
|
|
167
174
|
}
|
|
168
|
-
export async function waitFor(sessionId, opts) {
|
|
169
|
-
return request('POST', `/api/browser/sessions/${sessionId}/wait`, opts, LONG_TIMEOUT);
|
|
175
|
+
export async function waitFor(sessionId, opts, tabId) {
|
|
176
|
+
return request('POST', `/api/browser/sessions/${sessionId}/wait`, { ...opts, ...(tabId && { tabId }) }, LONG_TIMEOUT);
|
|
170
177
|
}
|
|
171
178
|
// ── Whiteboard ──
|
|
172
179
|
export async function getWhiteboard() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"neural-interface.js","sourceRoot":"","sources":["../../src/services/neural-interface.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"neural-interface.js","sourceRoot":"","sources":["../../src/services/neural-interface.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,12 +3,14 @@ export declare const browserEvaluateSchema: {
|
|
|
3
3
|
script: z.ZodOptional<z.ZodString>;
|
|
4
4
|
expression: z.ZodOptional<z.ZodString>;
|
|
5
5
|
sessionId: z.ZodOptional<z.ZodString>;
|
|
6
|
+
tabId: z.ZodOptional<z.ZodString>;
|
|
6
7
|
};
|
|
7
8
|
export declare const browserEvaluateDescription = "Execute JavaScript in the browser page context and return the result. Useful for reading DOM state, extracting data, or performing actions not covered by other tools.";
|
|
8
9
|
export declare function handleBrowserEvaluate(args: {
|
|
9
10
|
script?: string;
|
|
10
11
|
expression?: string;
|
|
11
12
|
sessionId?: string;
|
|
13
|
+
tabId?: string;
|
|
12
14
|
}): Promise<{
|
|
13
15
|
content: {
|
|
14
16
|
type: "text";
|
|
@@ -21,6 +23,7 @@ export declare const browserWaitSchema: {
|
|
|
21
23
|
loadState: z.ZodOptional<z.ZodEnum<["load", "domcontentloaded", "networkidle"]>>;
|
|
22
24
|
timeout: z.ZodOptional<z.ZodNumber>;
|
|
23
25
|
sessionId: z.ZodOptional<z.ZodString>;
|
|
26
|
+
tabId: z.ZodOptional<z.ZodString>;
|
|
24
27
|
};
|
|
25
28
|
export declare const browserWaitDescription = "Wait for an element to reach a certain state, a page load state, or a fixed timeout. Useful after navigation or clicks that trigger async content loading. Use loadState=\"networkidle\" after posting on Twitter/X or after navigation to ensure all async requests have settled.";
|
|
26
29
|
export declare function handleBrowserWait(args: {
|
|
@@ -29,6 +32,7 @@ export declare function handleBrowserWait(args: {
|
|
|
29
32
|
loadState?: string;
|
|
30
33
|
timeout?: number;
|
|
31
34
|
sessionId?: string;
|
|
35
|
+
tabId?: string;
|
|
32
36
|
}): Promise<{
|
|
33
37
|
content: {
|
|
34
38
|
type: "text";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-advanced.d.ts","sourceRoot":"","sources":["../../src/tools/browser-advanced.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"browser-advanced.d.ts","sourceRoot":"","sources":["../../src/tools/browser-advanced.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,eAAO,MAAM,qBAAqB;;;;;CAKjC,CAAC;AAEF,eAAO,MAAM,0BAA0B,2KACmI,CAAC;AAE3K,wBAAsB,qBAAqB,CAAC,IAAI,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE;;;;;GAoB7H;AAID,eAAO,MAAM,iBAAiB;;;;;;;CAS7B,CAAC;AAEF,eAAO,MAAM,sBAAsB,uRACiP,CAAC;AAErR,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;;;;;GAmBA;AAID,eAAO,MAAM,oBAAoB;;;;CAIhC,CAAC;AAEF,eAAO,MAAM,yBAAyB,uGAC2D,CAAC;AAElG,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;;;;;GA4BA"}
|
|
@@ -1,21 +1,23 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import * as ni from '../services/neural-interface.js';
|
|
3
3
|
import { text } from './response.js';
|
|
4
|
+
const tabIdField = z.string().optional().describe('Target a specific tab within the session. Auto-resolved from environment if omitted.');
|
|
4
5
|
// ── browser_evaluate ──
|
|
5
6
|
export const browserEvaluateSchema = {
|
|
6
7
|
script: z.string().optional().describe('JavaScript code to execute in the browser page context. The return value will be serialized to JSON.'),
|
|
7
8
|
expression: z.string().optional().describe('Alias for "script" — accepted for compatibility with Playwright conventions.'),
|
|
8
9
|
sessionId: z.string().optional().describe('Browser session ID. If omitted, auto-selects the only open session.'),
|
|
10
|
+
tabId: tabIdField,
|
|
9
11
|
};
|
|
10
12
|
export const browserEvaluateDescription = 'Execute JavaScript in the browser page context and return the result. Useful for reading DOM state, extracting data, or performing actions not covered by other tools.';
|
|
11
13
|
export async function handleBrowserEvaluate(args) {
|
|
12
14
|
const code = args.script || args.expression;
|
|
13
15
|
if (!code)
|
|
14
16
|
return text('Either "script" or "expression" is required.');
|
|
15
|
-
const resolved = await ni.resolveSession(args.sessionId);
|
|
17
|
+
const resolved = await ni.resolveSession(args.sessionId, undefined, args.tabId);
|
|
16
18
|
if ('error' in resolved)
|
|
17
19
|
return text(resolved.error);
|
|
18
|
-
const result = await ni.evaluate(resolved.sessionId, code);
|
|
20
|
+
const result = await ni.evaluate(resolved.sessionId, code, resolved.tabId);
|
|
19
21
|
if (result.error)
|
|
20
22
|
return text(`Evaluate failed: ${result.error}`);
|
|
21
23
|
let msg;
|
|
@@ -36,10 +38,11 @@ export const browserWaitSchema = {
|
|
|
36
38
|
loadState: z.enum(['load', 'domcontentloaded', 'networkidle']).optional().describe('Page load state to wait for. Use "networkidle" after posting a tweet to confirm XHR requests settled. Takes priority over selector when provided.'),
|
|
37
39
|
timeout: z.coerce.number().optional().describe('Timeout in ms (default: 10000 for element waits, 15000 for loadState).'),
|
|
38
40
|
sessionId: z.string().optional().describe('Browser session ID. If omitted, auto-selects the only open session.'),
|
|
41
|
+
tabId: tabIdField,
|
|
39
42
|
};
|
|
40
43
|
export const browserWaitDescription = 'Wait for an element to reach a certain state, a page load state, or a fixed timeout. Useful after navigation or clicks that trigger async content loading. Use loadState="networkidle" after posting on Twitter/X or after navigation to ensure all async requests have settled.';
|
|
41
44
|
export async function handleBrowserWait(args) {
|
|
42
|
-
const resolved = await ni.resolveSession(args.sessionId);
|
|
45
|
+
const resolved = await ni.resolveSession(args.sessionId, undefined, args.tabId);
|
|
43
46
|
if ('error' in resolved)
|
|
44
47
|
return text(resolved.error);
|
|
45
48
|
const result = await ni.waitFor(resolved.sessionId, {
|
|
@@ -47,7 +50,7 @@ export async function handleBrowserWait(args) {
|
|
|
47
50
|
state: args.state,
|
|
48
51
|
loadState: args.loadState,
|
|
49
52
|
timeout: args.timeout,
|
|
50
|
-
});
|
|
53
|
+
}, resolved.tabId);
|
|
51
54
|
if (result.error)
|
|
52
55
|
return text(`Wait failed: ${result.error}`);
|
|
53
56
|
if (args.loadState) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-advanced.js","sourceRoot":"","sources":["../../src/tools/browser-advanced.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,iCAAiC,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAErC,yBAAyB;AAEzB,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sGAAsG,CAAC;IAC9I,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8EAA8E,CAAC;IAC1H,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qEAAqE,CAAC;
|
|
1
|
+
{"version":3,"file":"browser-advanced.js","sourceRoot":"","sources":["../../src/tools/browser-advanced.ts"],"names":[],"mappings":"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"}
|