From f4c43a5ac5294db20259d337fe0d498db8ccc988 Mon Sep 17 00:00:00 2001 From: Nathan Flurry Date: Tue, 17 Mar 2026 06:23:14 -0700 Subject: [PATCH] feat: [US-022] - Add TypeScript SDK browser content extraction 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 adaa58e..2f0e7e4 100644 --- a/sdks/typescript/src/client.ts +++ b/sdks/typescript/src/client.ts @@ -31,10 +31,21 @@ import { type AgentInstallResponse, type AgentListResponse, type BrowserActionResponse, + type BrowserContentQuery, + type BrowserContentResponse, type BrowserCreateTabRequest, + type BrowserExecuteRequest, + type BrowserExecuteResponse, + type BrowserLinksResponse, + type BrowserMarkdownResponse, type BrowserNavigateRequest, type BrowserPageInfo, + type BrowserPdfQuery, type BrowserReloadRequest, + type BrowserScreenshotQuery, + type BrowserScrapeRequest, + type BrowserScrapeResponse, + type BrowserSnapshotResponse, type BrowserStartRequest, type BrowserStatusResponse, type BrowserTabInfo, @@ -2085,6 +2096,48 @@ export class SandboxAgent { return this.requestJson("DELETE", `${API_PREFIX}/browser/tabs/${tabId}`); } + async takeBrowserScreenshot(query: BrowserScreenshotQuery = {}): Promise { + const response = await this.requestRaw("GET", `${API_PREFIX}/browser/screenshot`, { + query, + accept: "image/*", + }); + const buffer = await response.arrayBuffer(); + return new Uint8Array(buffer); + } + + async getBrowserPdf(query: BrowserPdfQuery = {}): Promise { + const response = await this.requestRaw("GET", `${API_PREFIX}/browser/pdf`, { + query, + accept: "application/pdf", + }); + const buffer = await response.arrayBuffer(); + return new Uint8Array(buffer); + } + + async getBrowserContent(query: BrowserContentQuery = {}): Promise { + return this.requestJson("GET", `${API_PREFIX}/browser/content`, { query }); + } + + async getBrowserMarkdown(): Promise { + return this.requestJson("GET", `${API_PREFIX}/browser/markdown`); + } + + async scrapeBrowser(request: BrowserScrapeRequest): Promise { + return this.requestJson("POST", `${API_PREFIX}/browser/scrape`, { body: request }); + } + + async getBrowserLinks(): Promise { + return this.requestJson("GET", `${API_PREFIX}/browser/links`); + } + + async executeBrowserScript(request: BrowserExecuteRequest): Promise { + return this.requestJson("POST", `${API_PREFIX}/browser/execute`, { body: request }); + } + + async getBrowserSnapshot(): Promise { + return this.requestJson("GET", `${API_PREFIX}/browser/snapshot`); + } + private async getLiveConnection(agent: string): Promise { await this.awaitHealthy();