diff options
| author | amankumarsingh77 <amankumarsingh7702@gmal.com> | 2026-05-02 16:28:15 +0530 |
|---|---|---|
| committer | amankumarsingh77 <amankumarsingh7702@gmal.com> | 2026-05-02 16:28:15 +0530 |
| commit | e8650dc566bd0655348e1458772486eaf0ea90d6 (patch) | |
| tree | f782f4b82bddcf1526371565cab7654505bc3692 /src/tools.ts | |
| parent | 1d0873c75e36d7bd1f1a12b6cae46ee10a53ee3b (diff) | |
feat(domains): migrate tab tools (list, current, switch, new)
Diffstat (limited to 'src/tools.ts')
| -rw-r--r-- | src/tools.ts | 153 |
1 files changed, 0 insertions, 153 deletions
diff --git a/src/tools.ts b/src/tools.ts index 77023cd..581a7ca 100644 --- a/src/tools.ts +++ b/src/tools.ts @@ -136,159 +136,6 @@ export function registerTools(pi: ExtensionAPI, daemon: BrowserDaemon): void { }); // ═══════════════════════════════════════════════════════════════════════════ - // browser_list_tabs - // ═══════════════════════════════════════════════════════════════════════════ - pi.registerTool({ - name: "browser_list_tabs", - label: "Browser List Tabs", - description: "List all open browser tabs.", - promptSnippet: "List all open browser tabs with URLs and titles", - promptGuidelines: [ - "Use browser_list_tabs to see what tabs are open before switching.", - "Use browser_switch_tab to switch to a specific tab by targetId.", - "Set includeChrome: true to also see Chrome internal pages (devtools, settings, etc).", - ], - parameters: Type.Object({ - includeChrome: Type.Optional(Type.Boolean({ description: "Include Chrome internal pages (chrome://, devtools://, etc). Default: true" })), - }), - async execute(_id, params) { - try { - await daemon.ensureAlive(); - const tabs = await daemon.listTabs(params.includeChrome !== false); - const listing = tabs - .map((t, i) => `[${i}] ${t.title || "(no title)"}\n URL: ${t.url}\n ID: ${t.targetId}`) - .join("\n\n"); - return { - content: [{ type: "text" as const, text: `${tabs.length} tab(s):\n\n${listing}` }], - details: { tabs }, - }; - } catch (err) { - return { - isError: true, - content: [{ type: "text" as const, text: `Failed: ${err instanceof Error ? err.message : String(err)}` }], - details: undefined, - }; - } - }, - renderResult(result, { expanded }, theme) { - const details = result.details as { - tabs?: TabInfo[]; - fullOutputPath?: string; - } | undefined; - - const tabCount = details?.tabs?.length ?? 0; - - if (expanded) { - // Expanded (CTRL+O): show full tab listing - const content = result.content[0]; - const raw = content?.type === "text" ? content.text : ""; - return new Text(raw || "(no tabs)", 0, 0); - } - - // Collapsed (default): compact count - return new Text( - theme ? theme.fg("dim", `📋 ${tabCount} tab${tabCount !== 1 ? "s" : ""}`) : `📋 ${tabCount} tab${tabCount !== 1 ? "s" : ""}`, - 0, - 0, - ); - }, - }); - - // ═══════════════════════════════════════════════════════════════════════════ - // browser_current_tab - // ═══════════════════════════════════════════════════════════════════════════ - pi.registerTool({ - name: "browser_current_tab", - label: "Browser Current Tab", - description: "Get info about the currently active tab.", - promptSnippet: "Get the current active tab's URL, title, and ID", - promptGuidelines: [ - "Use browser_current_tab to confirm which tab you're controlling.", - ], - parameters: Type.Object({}), - async execute() { - try { - await daemon.ensureAlive(); - const tab = await daemon.currentTab(); - return { - content: [{ type: "text" as const, text: `Current tab: ${tab.title || "(no title)"}\nURL: ${tab.url}\nID: ${tab.targetId}` }], - details: undefined, - }; - } catch (err) { - return { - isError: true, - content: [{ type: "text" as const, text: `Failed: ${err instanceof Error ? err.message : String(err)}` }], - details: undefined, - }; - } - }, - }); - - // ═══════════════════════════════════════════════════════════════════════════ - // browser_switch_tab - // ═══════════════════════════════════════════════════════════════════════════ - pi.registerTool({ - name: "browser_switch_tab", - label: "Browser Switch Tab", - description: "Switch to a different browser tab by targetId (from browser_list_tabs).", - promptSnippet: "Switch to a browser tab by its targetId", - promptGuidelines: [ - "Use browser_list_tabs first to find the targetId, then browser_switch_tab to switch.", - ], - parameters: Type.Object({ - targetId: Type.String({ description: "Target ID of the tab to switch to (from browser_list_tabs)" }), - }), - async execute(_id, params) { - try { - await daemon.ensureAlive(); - await daemon.switchTab(params.targetId); - const tab = await daemon.currentTab(); - return { - content: [{ type: "text" as const, text: `Switched to: ${tab.title || "(no title)"}\nURL: ${tab.url}` }], - details: undefined, - }; - } catch (err) { - return { - isError: true, - content: [{ type: "text" as const, text: `Switch failed: ${err instanceof Error ? err.message : String(err)}` }], - details: undefined, - }; - } - }, - }); - - // ═══════════════════════════════════════════════════════════════════════════ - // browser_new_tab - // ═══════════════════════════════════════════════════════════════════════════ - pi.registerTool({ - name: "browser_new_tab", - label: "Browser New Tab", - description: "Open a new browser tab and switch to it. Optionally navigate to a URL.", - promptSnippet: "Open a new browser tab, optionally navigate to a URL", - promptGuidelines: [ - "Use browser_new_tab for the first navigation in a task — it preserves the user's active tab.", - "Use browser_navigate for subsequent navigation in the same tab.", - ], - parameters: Type.Object({ - url: Type.Optional(Type.String({ description: "URL to navigate to in the new tab. Default: about:blank" })), - }), - async execute(_id, params) { - try { - await daemon.ensureAlive(); - const targetId = await daemon.newTab(params.url); - const msg = params.url - ? `New tab created and navigated to: ${params.url}\nTarget: ${targetId}` - : `New tab created: about:blank\nTarget: ${targetId}`; - return { content: [{ type: "text" as const, text: msg }], details: undefined }; - } catch (err) { - return { - isError: true, - content: [{ type: "text" as const, text: `Failed: ${err instanceof Error ? err.message : String(err)}` }], - details: undefined, - }; - } - }, - }); // ═══════════════════════════════════════════════════════════════════════════ // browser_execute_js |
