aboutsummaryrefslogtreecommitdiff
path: root/src/tools.ts
diff options
context:
space:
mode:
authoramankumarsingh77 <amankumarsingh7702@gmal.com>2026-05-02 16:28:15 +0530
committeramankumarsingh77 <amankumarsingh7702@gmal.com>2026-05-02 16:28:15 +0530
commite8650dc566bd0655348e1458772486eaf0ea90d6 (patch)
treef782f4b82bddcf1526371565cab7654505bc3692 /src/tools.ts
parent1d0873c75e36d7bd1f1a12b6cae46ee10a53ee3b (diff)
feat(domains): migrate tab tools (list, current, switch, new)
Diffstat (limited to 'src/tools.ts')
-rw-r--r--src/tools.ts153
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