import { z } from "zod"; import { ScrapybaraClient as FernClient } from "./Client"; import * as Scrapybara from "./api/index"; import { Tool } from "./api/types/Tool"; import { Message, AssistantMessage, ToolMessage, Step, Model, ActResponse } from "./api/types/Act"; export declare namespace ScrapybaraClient { type Options = FernClient.Options; type RequestOptions = FernClient.RequestOptions; } export declare class ScrapybaraClient { readonly _options?: ScrapybaraClient.Options | undefined; private _fern; constructor(_options?: ScrapybaraClient.Options | undefined); startUbuntu(request?: Omit, requestOptions?: ScrapybaraClient.RequestOptions): Promise; startBrowser(request?: Omit, requestOptions?: ScrapybaraClient.RequestOptions): Promise; startWindows(request?: Omit, requestOptions?: ScrapybaraClient.RequestOptions): Promise; get(instanceId: string, requestOptions?: ScrapybaraClient.RequestOptions): Promise; getInstances(requestOptions?: ScrapybaraClient.RequestOptions): Promise<(UbuntuInstance | BrowserInstance | WindowsInstance)[]>; getAuthStates(requestOptions?: ScrapybaraClient.RequestOptions): Promise; /** * Run an agent loop with the given tools and model, returning all messages at the end. * Include either prompt or messages, but not both. * * @param model - The model to use for generating responses * @param tools - List of tools available to the agent * @param system - System prompt for the agent * @param prompt - Initial user prompt * @param messages - List of messages to start with * @param schema - Optional schema for structured output * @param onAssistantMessage - Callback for each assistant message * @param onToolMessage - Callback for each tool message * @param onStep - Callback for each step of the conversation * @param temperature - Optional temperature parameter for the model * @param maxTokens - Optional max tokens parameter for the model * @param imagesToKeep - Optional maximum number of most recent images to retain in messages and model call, defaults to 4 * @param requestOptions - Optional request configuration * @returns Promise that resolves to list of all messages from the conversation */ act({ model, tools, system, prompt, messages, schema, onAssistantMessage, onToolMessage, onStep, temperature, maxTokens, imagesToKeep, requestOptions, }: { model: Model; tools?: Tool[]; system?: string; prompt?: string; messages?: Message[]; schema?: T; onAssistantMessage?: (message: AssistantMessage) => void | Promise; onToolMessage?: (message: ToolMessage) => void | Promise; onStep?: (step: Step) => void | Promise; temperature?: number; maxTokens?: number; imagesToKeep?: number; requestOptions?: ScrapybaraClient.RequestOptions; }): Promise>>; /** * Run an interactive agent loop with the given tools and model. * Include either prompt or messages, but not both. * * @param model - The model to use for generating responses * @param tools - List of tools available to the agent * @param system - System prompt for the agent * @param prompt - Initial user prompt * @param messages - List of messages to start with * @param schema - Optional schema for structured output * @param onAssistantMessage - Callback for each assistant message * @param onToolMessage - Callback for each tool message * @param onStep - Callback for each step of the conversation * @param temperature - Optional temperature parameter for the model * @param maxTokens - Optional max tokens parameter for the model * @param imagesToKeep - Optional maximum number of most recent images to retain in messages and model call, defaults to 4 * @param requestOptions - Optional request configuration * @yields Steps from the conversation, including tool results */ actStream({ model, tools, system, prompt, messages, schema, onAssistantMessage, onToolMessage, onStep, temperature, maxTokens, imagesToKeep, requestOptions, }: { model: Model; tools?: Tool[]; system?: string; prompt?: string; messages?: Message[]; schema?: T; onAssistantMessage?: (message: AssistantMessage) => void | Promise; onToolMessage?: (message: ToolMessage) => void | Promise; onStep?: (step: Step) => void | Promise; temperature?: number; maxTokens?: number; imagesToKeep?: number; requestOptions?: ScrapybaraClient.RequestOptions; }): AsyncGenerator; protected _getCustomAuthorizationHeaders(): Promise<{ "x-api-key": string | undefined; }>; } export declare class BaseInstance { readonly id: string; readonly launchTime: Date; readonly status: string; protected readonly fern: FernClient; constructor(id: string, launchTime: Date, status: string, fern: FernClient); screenshot(requestOptions?: FernClient.RequestOptions): Promise; getStreamUrl(requestOptions?: FernClient.RequestOptions): Promise; computer(request: Scrapybara.Request, requestOptions?: FernClient.RequestOptions): Promise; stop(requestOptions?: FernClient.RequestOptions): Promise; pause(requestOptions?: FernClient.RequestOptions): Promise; resume(request?: Scrapybara.InstanceResumeRequest, requestOptions?: FernClient.RequestOptions): Promise; /** * Upload a file to the instance */ upload(file: File | Blob | any, request: Scrapybara.BodyUploadV1InstanceInstanceIdUploadPost, requestOptions?: FernClient.RequestOptions): Promise; } export declare class UbuntuInstance extends BaseInstance { readonly browser: Browser; readonly code: Code; readonly notebook: Notebook; readonly env: Env; constructor(id: string, launchTime: Date, status: string, fern: FernClient); bash(request?: Scrapybara.BashRequest, requestOptions?: FernClient.RequestOptions): Promise; edit(request: Scrapybara.EditRequest, requestOptions?: FernClient.RequestOptions): Promise; file(request: Scrapybara.FileRequest, requestOptions?: FernClient.RequestOptions): Promise; } export declare class BrowserInstance extends BaseInstance { constructor(id: string, launchTime: Date, status: string, fern: FernClient); getCdpUrl(requestOptions?: FernClient.RequestOptions): Promise; getCurrentUrl(requestOptions?: FernClient.RequestOptions): Promise; saveAuth(request: Scrapybara.BrowserSaveAuthRequest, requestOptions?: FernClient.RequestOptions): Promise; modifyAuth(request: Scrapybara.BrowserModifyAuthRequest, requestOptions?: FernClient.RequestOptions): Promise; authenticate(request: Scrapybara.BrowserAuthenticateRequest, requestOptions?: FernClient.RequestOptions): Promise; } export declare class WindowsInstance extends BaseInstance { constructor(id: string, launchTime: Date, status: string, fern: FernClient); } export declare class Browser { private readonly instanceId; private readonly fern; constructor(instanceId: string, fern: FernClient); start(requestOptions?: FernClient.RequestOptions): Promise; getCdpUrl(requestOptions?: FernClient.RequestOptions): Promise; getCurrentUrl(requestOptions?: FernClient.RequestOptions): Promise; saveAuth(request: Scrapybara.BrowserSaveAuthRequest, requestOptions?: FernClient.RequestOptions): Promise; modifyAuth(request: Scrapybara.BrowserModifyAuthRequest, requestOptions?: FernClient.RequestOptions): Promise; authenticate(request: Scrapybara.BrowserAuthenticateRequest, requestOptions?: FernClient.RequestOptions): Promise; stop(requestOptions?: FernClient.RequestOptions): Promise; } export declare class Code { private readonly instanceId; private readonly fern; constructor(instanceId: string, fern: FernClient); execute(request: Scrapybara.CodeExecuteRequest, requestOptions?: FernClient.RequestOptions): Promise; } export declare class Notebook { private readonly instanceId; private readonly fern; constructor(instanceId: string, fern: FernClient); listKernels(requestOptions?: FernClient.RequestOptions): Promise; create(request: Scrapybara.CreateNotebookRequest, requestOptions?: FernClient.RequestOptions): Promise; get(notebookId: string, requestOptions?: FernClient.RequestOptions): Promise; delete(notebookId: string, requestOptions?: FernClient.RequestOptions): Promise>; addCell(notebookId: string, request: Scrapybara.AddCellRequest, requestOptions?: FernClient.RequestOptions): Promise; executeCell(notebookId: string, cellId: string, request: Scrapybara.ExecuteCellRequest, requestOptions?: FernClient.RequestOptions): Promise; execute(notebookId: string, request: Scrapybara.ExecuteCellRequest, requestOptions?: FernClient.RequestOptions): Promise; } export declare class Env { private readonly instanceId; private readonly fern; constructor(instanceId: string, fern: FernClient); set(request: Scrapybara.EnvSetRequest, requestOptions?: FernClient.RequestOptions): Promise; get(requestOptions?: FernClient.RequestOptions): Promise; delete(request: Scrapybara.EnvDeleteRequest, requestOptions?: FernClient.RequestOptions): Promise; }