From 9776e0f4cb8b01f87b8e1c3043bfc4a16a416eee Mon Sep 17 00:00:00 2001 From: Nathan Flurry Date: Tue, 17 Mar 2026 06:21:32 -0700 Subject: [PATCH] feat: [US-021] - Add TypeScript SDK browser navigation and tab methods Co-Authored-By: Claude Opus 4.6 (1M context) --- sdks/typescript/src/client.ts | 53 +++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/sdks/typescript/src/client.ts b/sdks/typescript/src/client.ts index acff243..adaa58e 100644 --- a/sdks/typescript/src/client.ts +++ b/sdks/typescript/src/client.ts @@ -30,8 +30,17 @@ import { type AgentInstallRequest, type AgentInstallResponse, type AgentListResponse, + type BrowserActionResponse, + type BrowserCreateTabRequest, + type BrowserNavigateRequest, + type BrowserPageInfo, + type BrowserReloadRequest, type BrowserStartRequest, type BrowserStatusResponse, + type BrowserTabInfo, + type BrowserTabListResponse, + type BrowserWaitRequest, + type BrowserWaitResponse, type DesktopActionResponse, type DesktopClipboardQuery, type DesktopClipboardResponse, @@ -2032,6 +2041,50 @@ export class SandboxAgent { ); } + async browserNavigate(request: BrowserNavigateRequest): Promise { + return this.requestJson("POST", `${API_PREFIX}/browser/navigate`, { + body: request, + }); + } + + async browserBack(): Promise { + return this.requestJson("POST", `${API_PREFIX}/browser/back`); + } + + async browserForward(): Promise { + return this.requestJson("POST", `${API_PREFIX}/browser/forward`); + } + + async browserReload(request: BrowserReloadRequest = {}): Promise { + return this.requestJson("POST", `${API_PREFIX}/browser/reload`, { + body: request, + }); + } + + async browserWait(request: BrowserWaitRequest): Promise { + return this.requestJson("POST", `${API_PREFIX}/browser/wait`, { + body: request, + }); + } + + async getBrowserTabs(): Promise { + return this.requestJson("GET", `${API_PREFIX}/browser/tabs`); + } + + async createBrowserTab(request: BrowserCreateTabRequest = {}): Promise { + return this.requestJson("POST", `${API_PREFIX}/browser/tabs`, { + body: request, + }); + } + + async activateBrowserTab(tabId: string): Promise { + return this.requestJson("POST", `${API_PREFIX}/browser/tabs/${tabId}/activate`); + } + + async closeBrowserTab(tabId: string): Promise { + return this.requestJson("DELETE", `${API_PREFIX}/browser/tabs/${tabId}`); + } + private async getLiveConnection(agent: string): Promise { await this.awaitHealthy();