import type { Browser } from 'puppeteer'; import { CheerioAPI } from 'cheerio'; import { Element as Element_2 } from 'cheerio'; import { ElementHandle } from 'puppeteer'; import type { HTTPRequest } from 'puppeteer'; import type { HTTPResponse } from 'puppeteer'; import { Page } from 'puppeteer'; import type { PuppeteerLifeCycleEvent } from 'puppeteer'; import type { Viewport } from 'puppeteer'; export declare type ActionConfig = { name: string; arguments?: string[]; }; export declare const actionDefinitions: ({ name: string; description: string; parameters: { type: string; properties: { plan: { type: string; description: string; }; }; }; required: string[]; } | { name: string; description: string; parameters: { type: string; properties: { filename: { type: string; description: string; }; }; }; required: string[]; } | { name: string; description: string; parameters: { type: string; properties: { url: { type: string; description: string; }; }; }; required: string[]; } | { name: string; description: string; parameters: { type: string; properties: { form_data: { type: string; items: { type: string; properties: { pp_id: { type: string; description: string; }; label: { type: string; description: string; }; name: { type: string; description: string; }; text: { type: string; description: string; }; select: { type: string; description: string; items: { type: string; description: string; }; }; index: { type: string; description: string; }; check: { type: string; description: string; }; }; }; }; submit: { type: string; description: string; }; }; }; required: string[]; } | { name: string; description: string; parameters: { type: string; properties: { parentType: { type: string; description: string; }; parentId: { type: string; description: string; }; type: { type: string; description: string; }; id: { type: string; description: string; }; selector: { type: string; description: string; }; content: { type: string; description: string; }; }; }; } | { name: string; description: string; parameters: { type: string; properties: { summary: { type: string; description: string; }; answer: { type: string; description: string; }; }; }; required: string[]; } | { name: string; description: string; parameters: { type: string; properties: { query: { type: string; description: string; }; searchEngine: { type: string; description: string; }; }; }; required: string[]; } | { name: string; description: string; parameters: { type: string; properties: {}; }; required: never[]; })[]; export declare class ActionDefinitionsRegistry { definitions: any[]; setDefinitions(definitions: any[]): void; addDefinition(definition: any, overwrite?: boolean): void; addDefinitions(definitions: any[], overwrite?: boolean): void; defaultDefinitions(): ({ name: string; description: string; parameters: { type: string; properties: { plan: { type: string; description: string; }; }; }; required: string[]; } | { name: string; description: string; parameters: { type: string; properties: { filename: { type: string; description: string; }; }; }; required: string[]; } | { name: string; description: string; parameters: { type: string; properties: { url: { type: string; description: string; }; }; }; required: string[]; } | { name: string; description: string; parameters: { type: string; properties: { form_data: { type: string; items: { type: string; properties: { pp_id: { type: string; description: string; }; label: { type: string; description: string; }; name: { type: string; description: string; }; text: { type: string; description: string; }; select: { type: string; description: string; items: { type: string; description: string; }; }; index: { type: string; description: string; }; check: { type: string; description: string; }; }; }; }; submit: { type: string; description: string; }; }; }; required: string[]; } | { name: string; description: string; parameters: { type: string; properties: { parentType: { type: string; description: string; }; parentId: { type: string; description: string; }; type: { type: string; description: string; }; id: { type: string; description: string; }; selector: { type: string; description: string; }; content: { type: string; description: string; }; }; }; } | { name: string; description: string; parameters: { type: string; properties: { summary: { type: string; description: string; }; answer: { type: string; description: string; }; }; }; required: string[]; } | { name: string; description: string; parameters: { type: string; properties: { query: { type: string; description: string; }; searchEngine: { type: string; description: string; }; }; }; required: string[]; } | { name: string; description: string; parameters: { type: string; properties: {}; }; required: never[]; })[]; } export declare class ActionsRegistry { driver: IAgentDriver; actions: TActionStore; constructor(driver: IAgentDriver); registerAction(action: IDriverAction, id?: string): void; removeAction(id: string): void; protected addDefinition(definition: string): void; } export declare class AgentBrowser implements IAgentBrowser { page?: Page; launched: boolean; loaded: boolean; debug: boolean; headless: boolean; downloadStarted: boolean; responses: number; requests: number; view: ViewportOpts; browser?: Browser; driver: IAgentDriver; constructor(driver: IAgentDriver, opts?: BrowserOpts); launch(): Promise; getNewPage(): Promise; createPuppeteerBrowser(): Promise; start(): Promise; close(): void; protected get defaultViewport(): { width: number; height: number; deviceScaleFactor: number; }; get viewport(): Viewport; protected print(...msgs: any[]): void; protected isBlock(_request: HTTPRequest): boolean; protected onRequestBlock(request: HTTPRequest): void; protected incRequestCount(): void; protected startDownload(): void; protected isLargeResponse(response: HTTPResponse): boolean; protected isBinary(headers: PageHeaders): boolean; protected hasAttachment(headers: PageHeaders): boolean; protected hasLargeContent(headers: PageHeaders): boolean; protected get maxMbs(): number; protected incResponseCount(): void; protected sleep(ms: number, debug?: boolean): Promise; } export declare class AgentDriver implements IAgentDriver { browser: AgentBrowser; page?: Page; message?: string; autopilot: boolean; contextLengthLimit: number; model: string; messageToController?: any; debug: boolean; agentState?: IAgentState; nextStep: any; context?: any[]; elementSelector: IElementSelector; messageBuilder: IMessageBuilder; inputController: IInputController; messageBroker: IMessageBroker; stepRunner: IStepRunner; costCalculator: ITokenCostCalculator; actionsRegistry: IActionsRegistry; actionDefinitionsRegistry: IActionDefinitionsRegistry; opts: DriverOpts; constructor(opts?: DriverOpts); get element(): ElementHandle | undefined; setInteractiveElements(elements: ElementHandle[]): void; get interactiveElements(): ElementHandle[]; setNoContent(val: boolean): void; get noContent(): boolean; get definitions(): any[]; get actions(): TActionStore; setDefinitions(definitions: any[]): void; addDefinitions(definitions: any[]): void; addDefinition(definition: any): void; start(): Promise; run(agentState: IAgentState): Promise; doStep(): Promise; closeBrowser(): void; log(msg: any): void; markerClass(id: number): string; protected prepareStep(agentState: IAgentState): void; protected onStepDone(): void; protected initialize(): Promise; protected setState(agentState: IAgentState): void; get response(): HTTPResponse | undefined; protected createActionDefinitionsRegistry(): ActionDefinitionsRegistry; protected createActionRegistry(): ActionsRegistry; protected createDefaultInputReader(): { question: (text: string) => Promise; }; protected createStepRunner(): StepRunner; protected createMessageBroker(): MessageBroker; protected createInputController(): TerminalInputController; protected createMessageBuilder(): MessageBuilder; protected createElementSelector(): ElementSelector; protected createAgentBrowser(): AgentBrowser; protected createCostCalculator(): OpenAITokenCostCalculator; protected openBrowserPage(): Promise; printCurrentCost(): void; protected get autopilotOn(): boolean; protected getAnswerTo(content: string): Promise; getInput(prompt: string): Promise; addToMessage(message: string): void; setMessage(message: string): void; createMessageForController(content: string): Promise; get structuredMsg(): StructuredMsg; getControllerResponse(structuredMsg: StructuredMsg, context: any, actionConfig?: { name: string; }): Promise; } export declare class AgentPlanner implements IAgentPlanner { context: any[]; aiAgentResponse?: any; assignedMsg?: AssignedMsg; promptMessage?: string; promptText?: string; driver: IAgentDriver; debug: boolean; acceptPlan?: boolean; opts: PlannerOpts; agentState?: IAgentState; constructor(context: any, opts?: PlannerOpts); get messageBroker(): IMessageBroker; get definitions(): any[]; setDefinitions(definitions: any[]): void; addDefinitions(definitions: any[]): void; start(): Promise; runPlan(): Promise; askForPlanAcceptance(): Promise; protected onPlanCompleted(): void; protected get structuredMsg(): StructuredMsg; protected parseResponseArgs(): any; protected createInitialContext(): { role: string; content: string; }[]; protected isPlanAccepted(): boolean; protected closeBrowser(): void; protected prepareAgentState(): { context: any[]; response: any; }; protected runDriver(): Promise; protected preparePlanPrompt(): void; protected createDriver(): AgentDriver; protected startDriver(): Promise; protected get browser(): IAgentBrowser; protected logContext(): void; protected addToContext(item: unknown): void; protected addMessageToContext(msg: unknown): void; protected addResponseToContext(response: HTTPResponse): void; protected getAgentResponse(): Promise; createActionConfig(): { name: string; arguments: string[]; }; protected getControllerResponse(msg: any, context: any, actionConfig: any): Promise; protected handleAcceptPlan(): Promise; protected userAccept(): Promise; protected autoAccept(): boolean; protected getInput(prompt: string): Promise; protected handleArgs(args: any): void; protected log(data: any): void; } export declare interface AIMessageRedactor { redactMessages(messages: any[]): string[]; } export declare type AssignedMsg = { role: string; content: string; }; export declare abstract class BaseDriverAction implements IDriverAction { driver: IAgentDriver; fnArgs: FnArgs; context: Context; debug: boolean; definition: any; opts: IDriverActionOpts; taskPrefix: string; name: string; constructor(driver: IAgentDriver, opts?: IDriverActionOpts); protected updateState(): void; setState({ args, context }: { args: any; context: any; }): void; protected setContext(context: any[]): void; protected setArgs(args: any): void; protected get prefix(): string | undefined; execute(): Promise; protected baseInit(): void; protected initialize(): void; protected addToMessage(message: string): void; protected get page(): Page | undefined; protected get autopilot(): boolean; protected getInput(msg: string): Promise; resetMessage(): void; protected setMessage(msg: string): void; protected logTask(msg: any): void; protected log(msg: any): void; } export declare abstract class BaseResponseHandler implements IResponseHandler { step: any; driver: IAgentDriver; opts: IResponseHandlerOpts; constructor(driver: IAgentDriver, opts?: IResponseHandlerOpts); protected setStep(step: any): this; protected isFunctionCallStep(): any; handle(step: any): Promise; } export declare type BrowserOpts = { debug?: boolean; headless?: boolean; viewport?: ViewportOpts; }; export declare class ClickLinkAction extends ElementAction implements IClickLinkAction { message: string; link?: HTMLAnchorElement; linkId?: string; linkText?: string; userMsg?: string; interactiveElements: any; url?: string; requestCount: number; responseCount: number; downloadStarted: boolean; navigator: IPageNavigator; name: string; definition: { name: string; description: string; parameters: { type: string; properties: { text: { type: string; description: string; }; pp_id: { type: string; description: string; }; }; }; required: string[]; }; constructor(driver: IAgentDriver, interactiveElements: any[]); protected updateState(): void; protected createNavigator(): PageNavigator; protected missingLinkId(): void; protected missingLinkText(): void; protected findLink(): any; protected get page(): Page | undefined; protected onStart(linkText?: string): void; protected initAction(): void; protected get linkElementSelector(): string; action(): void; onTimeOutError(_link?: HTMLAnchorElement): void; onError(link: any): void; clickLink(): Promise; clickOnPage(): void; waitForNavigation(): Promise; onLinkNavigation(): void; onDownloadStarted(): true | undefined; set noContent(val: boolean); get noContent(): boolean; execute(): Promise; validatePage(): void; scrapePage(): Promise; getElementsOn(page: Page): Promise[]>; } export declare class CommunicateAction extends BaseDriverAction implements IReceiveInputAction { costCalculator?: ITokenCostCalculator; text?: string; name: string; definition: { name: string; description: string; parameters: { type: string; properties: { summary: { type: string; description: string; }; answer: { type: string; description: string; }; }; }; required: string[]; }; protected initialize(): void; protected createCostCalculator(): OpenAITokenCostCalculator; execute(): Promise; protected prepareAnswer(): void; protected get promptAnswer(): string; protected setText(text?: string): void; protected textFromFnArgs(): any; protected get userMsg(): string; protected get autoPilotMsg(): string; receiveInput(msg: string): Promise; protected printCurrentCost(): void; } export declare class ContentResponseHandler extends BaseResponseHandler { actionId?: string; handle(step: any): Promise; createMessageForController(content: string): void; printCurrentCost(): void; } export declare type Context = any[]; export declare type ControllerResponseData = { choices: any[]; usage: TokenUsage; }; export declare type DebugOpts = { debug?: boolean; }; export declare class DocumentTraverser implements IDocumentTraverser { html?: string; $: CheerioAPI; driver: IAgentDriver; formatter: IHtmlFormatter; debug: boolean; opts: DebugOpts; elementTypeHandler: IElementTypeHandler; constructor(driver: IAgentDriver, opts?: DebugOpts); createElementTypeHandler(): ElementTypeHandler; formatHtml(bodyHtml: string): CheerioAPI; createFormatter(): HtmlFormatter; initialize(html: string): void; start(html: string): string; traverse(element: Element_2): string; } export declare type DriverOpts = DebugOpts & { definitions?: any[]; }; export declare abstract class ElementAction extends BaseDriverAction implements IDriverAction { protected getCssSelector(elem: Element): string; protected getRelevantTextBeforeNextHeader(headingElement: Element): string; protected findNearestHeadingElement(startElement: Element): Element | undefined; protected getTabbableElements(): Promise[]>; getContentFor(handle: ElementHandle, maxLength?: number): Promise; protected sliceOff(text?: string, length?: number): string | undefined; getContentForFirst(handle: ElementHandle, selector: string): Promise; getContentForAll(mainHandle: ElementHandle, selector: string): Promise; handleToElement(element: ElementHandle): Promise; protected matchesContent(element: Element, content: string): boolean | ""; protected markerClass(id: number | string): string; protected get elementSelector(): IElementSelector; protected set element(elem: ElementHandle); protected get element(): ElementHandle | undefined; } export declare class ElementEvaluator { element?: Element; id: number; selector: string; role?: string | null; placeholder?: string; textContent?: string; type?: string; value?: string; href?: string; title?: string; driver: IAgentDriver; debug: boolean; opts: DebugOpts; maxAttrLength: number; constructor(driver: IAgentDriver, element: any, id: number, selector: string, opts?: DebugOpts); evaluate(): Element | undefined; protected configureElement(): void; protected get markerClass(): string; protected addMarkerClass(): void; protected elemRole(): void; protected titledElement(): void; protected externalRefElem(): void; protected formElement(): void; protected text(): void; protected sliceOff(text?: string, length?: number): string | undefined; ignoreElement(): boolean; trimWhiteSpaces(textContent: string | null): string; } export declare class ElementSelector implements IElementSelector { page?: Page; interactiveElementHandler: InteractiveElementHandler; skipped: ElementHandle[]; selected: ElementHandle[]; debug: boolean; driver: IAgentDriver; constructor(driver: IAgentDriver, opts?: SelectorOpts); getElements(page: Page, selector?: string): Promise[]>; protected createInteractiveElementHandler(): InteractiveElementHandler; protected get elementSelector(): string; get selectors(): string[]; protected getNext(element: ElementHandle, id: number, selector: string): Promise; protected skipElement(element: ElementHandle): void; protected selectElement(element: ElementHandle): void; protected writeElements(fileName: string, elements: ElementHandle[]): void; protected logElements(): void; } export declare class ElementTypeHandler implements IElementTypeHandler { element?: Element_2; docTraverser: IDocumentTraverser; output: string; driver: IAgentDriver; tagBuilder: ITagBuilder; debug: boolean; opts: DebugOpts; constructor(driver: IAgentDriver, docTraverser: DocumentTraverser, opts?: DebugOpts); handle(element: Element_2): string; protected get $(): CheerioAPI; protected addToOutput(text: string): void; protected handleHeaderElement(): void; protected handleFormElement(): void; protected handleSections(): void; protected handleHeadersAndSectionElements(): void; protected makeTag(element?: Element_2): any; protected createTagBuilder(): TagBuilder; protected handleSpecialAttr(elemTag: any): boolean; protected handleNonSpecialTag(): boolean; protected handleMisc(): void; protected traverse(element: Element_2): string; protected handleChildren(): void; protected formatOutput(): string; } export declare class EnterDataFormAction extends ElementAction implements IEnterDataAction { formData: IFieldData[]; prevInput?: ElementHandle; navigator: IPageNavigator; taskName: string; definition: { name: string; description: string; parameters: { type: string; properties: { form_data: { type: string; items: { type: string; properties: { pp_id: { type: string; description: string; }; label: { type: string; description: string; }; name: { type: string; description: string; }; text: { type: string; description: string; }; select: { type: string; description: string; items: { type: string; description: string; }; }; index: { type: string; description: string; }; check: { type: string; description: string; }; }; }; }; submit: { type: string; description: string; }; }; }; required: string[]; }; constructor(driver: IAgentDriver, opts?: DebugOpts); protected createNavigator(): PageNavigator; selectElement(elementCssSelector: string): Promise | null | undefined>; getElementAttr(element: Element, attrName: string): string; getSelectElementAttr(element: Element): { options: HTMLOptionsCollection; selectedIndex: number; selectedOptions: HTMLCollectionOf; multiple: boolean; }; getElementChecked(element: Element): string; getElementType(element: Element): string; getElementName(element: Element): string; getElementTagName(element: Element): string; onSubmittable({ tagName, type }: IElementDetails): boolean; isTextInputField({ tagName, type }: IElementDetails): boolean; isFileInput({ tagName, type }: IElementDetails): boolean; isTextAreaField({ tagName }: IElementDetails): boolean; onTextField(element: ElementHandle, details: IElementDetails, data: any): Promise; onFileField(element: ElementHandle, details: IElementDetails, data: any): Promise; uploadFile(handle: ElementHandle, data: any): Promise; protected hasMatchingOption(options: HTMLOptionsCollection, data: any): HTMLOptionElement | undefined; onSelectField(handle: ElementHandle, element: Element, details: IElementDetails, data: IFieldData): Promise; isRadioField({ type, tagName }: IElementDetails): boolean; findTextFieldWithPlaceholder(selector: string, text: string): Promise; findElementWithText(selector: string, text: string): Promise; findHandleForFieldNamed(name: string): Promise; onRadioField(handle: ElementHandle, element: Element, details: IElementDetails, data: IFieldData): Promise; onFormField(handle: ElementHandle, element: Element, details: IElementDetails, data: IFieldData): Promise; get checkAnswers(): string[]; get uncheckAnswers(): string[]; clickRadio(handle: ElementHandle, details: IElementDetails, checked: boolean): Promise; checkRadioOn(handle: ElementHandle, details: IElementDetails, checked: boolean, data: IFieldData): Promise; unselectSelected(select: TSelectAttrs): void; selectOptionsOn(handle: ElementHandle, details: IElementDetails, select: TSelectAttrs, data: IFieldData): Promise; selectSingleOption(handle: ElementHandle, select: TSelectAttrs, data: IFieldData): Promise; selectMultipleOptions(handle: ElementHandle, details: IElementDetails, select: TSelectAttrs, data: IFieldData): Promise; selectOptionFor(handle: ElementHandle, details: IElementDetails, option: string): Promise; typeTextIn(element: ElementHandle, details: IElementDetails, data: IFieldData): Promise; elementClassIdSelector(id: string): string; setElement(element: ElementHandle): void; findFieldForLabel(labelElem: Element): Promise | null | undefined> | undefined; getFormData(): any; getElementById(id: string): Promise | null | undefined>; getElementDetails(element: Element): IElementDetails; getFieldHandleByPlaceholder(data: IFieldData): Promise; getFieldHandleByLabel(data: IFieldData): Promise | null | undefined>; getFieldHandleById(data: IFieldData): Promise | null | undefined>; getFieldHandle(data: IFieldData): Promise>; execute(): Promise; protected waitForNavigation(): Promise; protected onSubmit(): Promise; setInteractiveElements(elements: ElementHandle[]): void; getPageUrl(): Promise; handleForm(): Promise; onSubmitFormError(error: any): void; } export declare type FindElementDetails = { parentType?: "main" | "footer" | "header" | "aside" | "dialog" | "nav" | "article" | "section" | "form"; parentId?: string; type: "header" | "section" | "field" | "form" | "canvas" | "figure" | "article" | "video" | "code" | "table"; id?: string; selector?: string; content?: string; }; export declare type FnArgs = Record; export declare class FunctionResponseHandler extends BaseResponseHandler implements IFunctionResponseHandler { actionId?: string; fn?: any; fnName: string; fnArgs: FnArgs; chatMsg?: string; handle(step: any): Promise; get contextLengthLimit(): number; get context(): any[] | undefined; protected setFunctionAttributes(): void; protected parseArgs(): any; protected performAction(): Promise; protected log(msg: string): void; protected communicateMessage(msg: string): void; protected handleAction(): void; protected defaultAction(): void; protected findAction(): IDriverAction; get actions(): TActionStore; } export declare class GotoUrlAction extends ElementAction implements IGotoUrlAction { waitUntil: PuppeteerLifeCycleEvent; interactiveElements?: ElementHandle[]; name: string; definition: { name: string; description: string; parameters: { type: string; properties: { url: { type: string; description: string; }; }; }; required: string[]; }; onStart(url: string): void; execute(): Promise; gotoUrl(url: string): Promise; getUrl(): Promise; onStartScraping(): void; get defaultGotoErrorMessage(): string; protected getTabbableElements(): Promise[]>; downloadError(error: unknown): string | undefined; } export declare type GotoUrlOpts = DebugOpts & {}; export declare class HtmlFormatter implements IHtmlFormatter { html?: string; $?: CheerioAPI; debug: boolean; driver: IAgentDriver; constructor(driver: IAgentDriver, opts?: DebugOpts); protected get prioritySelectors(): string[]; format(html: string): CheerioAPI; } export declare interface IActionDefinitionsRegistry { definitions: any[]; setDefinitions(definitions: any[]): void; addDefinition(definition: any, overwrite?: boolean): void; addDefinitions(definitions: any[], overwrite?: boolean): void; } export declare interface IActionsRegistry { actions: TActionStore; registerAction(action: IDriverAction, id?: string): void; removeAction(id: string): void; } export declare interface IAgentBrowser { launch(): Promise; start(): Promise; close(): void; } export declare interface IAgentDriver { structuredMsg: StructuredMsg; context?: any[]; message?: string; markerClass(id: number | string): string; createMessageForController(content: string): Promise; start(): Promise; closeBrowser(): void; run(agentState: IAgentState): Promise; doStep(interactiveElements: any, element: any): Promise; setMessage(msg: string): void; addToMessage(message: string): void; getInput(msg: string): Promise; getControllerResponse(structuredMsg: StructuredMsg, context: any, actionConfig: any): Promise; page?: Page; elementSelector: IElementSelector; autopilot: boolean; noContent: boolean; contextLengthLimit: number; model: string; definitions: any[]; actions: TActionStore; setDefinitions(definitions: any[]): void; addDefinition(definition: string): void; addDefinitions(definitions: any[]): void; printCurrentCost(): void; log(msg: any): void; browser: IAgentBrowser; messageBroker: IMessageBroker; inputController: IInputController; messageBuilder: IMessageBuilder; element?: ElementHandle; setInteractiveElements(elements: ElementHandle[]): void; setNoContent(val: boolean): void; } export declare interface IAgentPlanner { askForPlanAcceptance(): Promise; definitions: any[]; setDefinitions(definitions: any[]): void; addDefinitions(definitions: any[]): void; } export declare interface IAgentState { context: any[]; response: HTTPResponse; } export declare interface IAIController { getResponse(messages: any[], definitions: any[], fnCall: any): Promise; } export declare interface IClickLinkAction extends IDriverAction { } export declare interface IContentResponseHandler extends IResponseHandler { } export declare type ICreateTerminalReader = () => ITerminalReader; export declare interface IDocumentTraverser { $: CheerioAPI; start(html: string): string; traverse(element: Element_2): string; } export declare interface IDriverAction { execute(): Promise; definition: any; name: string; setState({ args, context }: { args: any; context: any; }): void; } export declare type IDriverActionOpts = DebugOpts & { definition?: any; }; export declare interface IElementDetails { name: string; type: string; tagName: string; } export declare interface IElementSelector { getElements(page: Page, selector?: string): Promise[]>; } export declare interface IElementTypeHandler { handle(element: Element_2): string; } export declare interface IEnterDataAction extends IDriverAction { } export declare interface IFieldData { pp_id: string; text: string; label?: string; name?: string; select?: string[]; index?: number; check?: boolean; multipleFiles?: boolean; filepath?: string; filepaths?: string[]; } export declare interface IFunctionResponseHandler extends IResponseHandler { } export declare interface IGotoUrlAction extends IDriverAction { } export declare interface IHtmlFormatter { format(html: string): CheerioAPI; } export declare interface IInputController { getInput(text: string): Promise; } export declare interface IMessageBroker { getControllerResponse(message: unknown, context: any, actionConfig: ActionConfig): Promise; } export declare interface IMessageBuilder { message: StructuredMsg; setContent(content?: string): void; addContent(content: string): void; setUrl(url: string): void; } export declare interface InputData { prompt: string; imageData: string; } export declare class InteractiveElementHandler { driver: IAgentDriver; debug: boolean; opts: DebugOpts; constructor(driver: IAgentDriver, opts?: DebugOpts); get page(): Page | undefined; onEvaluate: (element: Element, id: number, selector: string) => Promise; createElementEvaluator(element: Element, id: number, selector: string): ElementEvaluator; protected markerClass(id: number): string; nextInteractiveElement(element: ElementHandle, id: number, selector?: string): Promise; addBoundingBoxTo(element: Element, id: number): void; } export declare interface IPageNavigator { waitForNavigation(page: Page): Promise; } export declare interface IPageScraper { getPageContent(page: Page): Promise; } export declare type IQuestionFn = (text: string) => Promise; export declare interface IReadFileAction extends IDriverAction { readFile(): Promise; } export declare interface IReceiveInputAction extends IDriverAction { receiveInput(msg: string): Promise; } export declare interface IResponseHandler { step: any; handle(step: any): Promise; } export declare type IResponseHandlerOpts = DebugOpts & {}; export declare interface ISearchAction extends IDriverAction { } export declare interface ISearchEngineAdapter { getSearchResults(): Promise; } export declare interface ISearchResult { href: string; title: string; description?: string; } export declare interface IStepRunner { run(step: any): Promise; noContent: boolean; element?: ElementHandle; interactiveElements: ElementHandle[]; clearHandlers(): void; registerHandler(handler: IResponseHandler): void; } export declare type IStepRunnerOpts = DebugOpts & {}; export declare interface ITagBuilder { build(element: Element_2): any; } export declare type ITakeScrenshotAction = IDriverAction; export declare interface ITerminalReader { question: IQuestionFn; } export declare interface ITokenCostCalculator { tokenCost(promptTokens: number, completionTokens: number): number; printCurrentCost(): void; } export declare class MessageBroker implements IMessageBroker { debug: boolean; messages: unknown[]; tokenUsage: TokenUsage; taskPrefix: string; autopilot: boolean; opts: DebugOpts; model: string; calculator?: ITokenCostCalculator; actions: any[]; controller?: IAIController; driver: IAgentDriver; constructor(driver: IAgentDriver, opts?: TBrokerOpts); get definitions(): any[]; getControllerResponse(message: unknown, context: any, actionConfig: ActionConfig): Promise; get costLimits(): { min: number; }; protected createController(): OpenAIController; protected createTokenCostCalculator(): OpenAITokenCostCalculator; protected logMessageContext(messages: unknown): void; protected filterDefinitions(actions?: string[], definitions?: any[]): any[]; protected getControllerResponseData(actionConfig: ActionConfig, filteredDefinitions: any[]): Promise; protected getController(): void; protected print(data: any): void; protected handleInvalidData(data: any): void; protected formatResponseData(data: any): void; protected calculateTokenCost(data: any): number | undefined; protected tokenCost(promptTokens: number, completionTokens: number): number | undefined; protected handleCost(cost: number, data: any): void; protected round(cost: number, decimals?: number): string; protected getMessageFromAiData(data: ControllerResponseData): any; protected onAutoPilotActivated(data: ControllerResponseData): void; } export declare class MessageBuilder implements IMessageBuilder { content: string; url: string; get message(): StructuredMsg; setContent(content?: string): void; addContent(content: string): void; setUrl(url: string): void; } export declare class NavigationOutlineAction extends ElementAction { name: string; definition: { name: string; description: string; parameters: { type: string; properties: {}; }; required: never[]; }; get defaultNavSelector(): string; get navSelector(): any; getLinkInfoFor(element: HTMLAnchorElement): { href: string; text: string; } | undefined; execute(): Promise; } export declare type ObjType = Record; export declare class OpenAIController { definitions: any[]; debug: boolean; model: string; redacter: OpenAIMessageRedactor; opts: DebugOpts; get openaiApiKey(): string | undefined; constructor(driver: IAgentDriver, definitions?: any[], opts?: DebugOpts); get apiEndpoint(): string; redactMessages(messages: any[]): void; getResponse(messages: any[], definitions: any[], fnCall?: string): Promise; print(data: any): void; } export declare class OpenAIMessageRedactor implements AIMessageRedactor { currentUrl: string; debug: boolean; driver: IAgentDriver; constructor(driver: IAgentDriver, opts: DebugOpts); redactMessages(messages: any[]): any[]; redactMessage(message: any): any; logRedacted(redactedMessages: any[]): void; } export declare class OpenAITokenCostCalculator { tokenUsage: { promptTokens: number; completionTokens: number; totalTokens: number; }; driver: IAgentDriver; model: string; debug: boolean; constructor(driver: IAgentDriver, opts?: DebugOpts); printCurrentCost(): void; tokenCost(promptTokens: number, completionTokens: number): number; protected getTokenPrice(model: string, direction: string): number; protected round(num: number, decimals?: number): string; protected print(message?: string): void; } export declare type PageHeaders = Record; export declare class PageNavigator implements IPageNavigator { navigationTimeout: number; waitUntil: PuppeteerLifeCycleEvent; debug: boolean; driver: IAgentDriver; opts: PageNavigatorOpts; constructor(driver: IAgentDriver, opts?: PageNavigatorOpts); get defaults(): { navigationTimeout: number; }; waitForNavigation(page: Page): Promise; log(msg: string): void; onError(_error: any): void; } export declare type PageNavigatorOpts = DebugOpts & { navigationTimeout?: number; }; export declare class PageScraper implements IPageScraper { debug: boolean; opts: DebugOpts; driver: IAgentDriver; documentTraverser: IDocumentTraverser; constructor(driver: IAgentDriver, opts?: DebugOpts); createDocumentTraverser(): DocumentTraverser; getPageContent(page: Page): Promise; formatHtml(html: string): string; } export declare type PlannerOpts = DebugOpts & { model?: string; }; export declare class PresearchAdapter implements ISearchEngineAdapter { page: Page; constructor(page: Page); get resultSelector(): string; get resultLink(): string; get resultTitle(): string; get resultDescription(): string; getContentFor(handle: ElementHandle, selector: string): Promise; getSearchResultFrom(handle: ElementHandle): Promise<{ href: string; title: string; description: string | undefined; } | undefined>; getSearchResults(): Promise; } export declare type QueryFn = (query: string) => string; export declare class ReadFileAction extends BaseDriverAction implements IReadFileAction { filename?: string; contextLengthLimit: number; skipFile: boolean; name: string; definition: { name: string; description: string; parameters: { type: string; properties: { filename: { type: string; description: string; }; }; }; required: string[]; }; onStartTask(): void; readFile(): Promise; getFileData(): Promise; contentFromFileData(fileData: string): string; handleReadError(_error: any): void; attemptToReadFile(): Promise; handleCannotReadFile(): void; execute(): Promise; protected prepareReadFile(): void; protected setFileName(): void; getInput(msg: string): Promise; get askToReadFileMsg(): string; shouldReadFile(): Promise; } export declare type ResponseData = { usage: TokenUsage; }; export declare class SearchAction extends ElementAction implements ISearchAction { waitUntil: PuppeteerLifeCycleEvent; name: string; defaultEngine: string; searchEngines: SearchEngineRegistry; searchResults?: ISearchResult[]; adapters: Record; registerDefaultAdapters(): void; registerAdapter(key: string, adapter: ISearchEngineAdapter): void; get query(): any; get searchEngineName(): any; get searchEngine(): QueryFn | undefined; get adapter(): ISearchEngineAdapter | undefined; get queryUrl(): string; onStart(): void; execute(): Promise; gotoUrl(url: string): Promise; onStartScraping(): void; protected getSearchResults(): Promise; } export declare type SearchEngineRegistry = Record; export declare type SearchOpts = DebugOpts & {}; export declare class SectionOutlineAction extends ElementAction { taskName: string; definition: { name: string; description: string; parameters: { type: string; properties: { maxSectionTextSize: { type: string; description: string; default: number; }; }; }; required: never[]; }; get maxSectionTextSize(): any; get headersSelector(): string; execute(): Promise; } export declare type SelectorOpts = { debug?: boolean; }; export declare class SimpleGPTVision { private openai; constructor(options: SimpleGPTVisionOptions); processInput(input: InputData): Promise; } export declare interface SimpleGPTVisionOptions { apiKey: string; } export declare class StepRunner { step: any; element?: ElementHandle; interactiveElements: ElementHandle[]; driver: IAgentDriver; debug: boolean; opts: IStepRunnerOpts; noContent: boolean; handlers: IResponseHandler[]; pageScraper: IPageScraper; domElement?: Element; constructor(driver: IAgentDriver, opts?: IStepRunnerOpts); clearHandlers(): void; registerHandler(handler: IResponseHandler): void; run(step: any): Promise; protected doNextStep(): Promise; protected defaultHandlers(): (FunctionResponseHandler | ContentResponseHandler)[]; protected createPageScraper(): PageScraper; protected createFunctionHandler(): FunctionResponseHandler; protected createContentHandler(): ContentResponseHandler; protected get context(): any[] | undefined; protected logContext(): void; protected initState(step: any): void; protected handleStep(): Promise; protected getPageData(): Promise; protected prepareNextStep(): Promise; protected ensurePageContent(): Promise; protected hasContent(): boolean; protected getPageContent(): Promise; protected get page(): Page | undefined; protected get messageBuilder(): IMessageBuilder; protected addPageContent(pageContent: string): void; get contextLengthLimit(): number; protected updateContext(): void; get structuredMsg(): StructuredMsg; get message(): string | undefined; protected getNextStep(): Promise; getControllerResponse(structuredMsg: StructuredMsg, context: any, actionConfig?: { name: string; }): Promise; setPageUrl(): Promise; getPageUrl(): Promise; addToContext(data: any): void; } export declare type StructuredMsg = { content: string; url: string; }; export declare type TActionStore = Record; export declare class TagBuilder implements ITagBuilder { element: any; tagName?: string; value?: string; role?: string; type?: string; id?: string; tag?: string; title?: string; href?: string; placeholder?: string; textContent?: string; obj: ObjType; driver: IAgentDriver; opts: DebugOpts; constructor(driver: IAgentDriver, opts?: DebugOpts); initialize(): void; getAttrValue(name: string): string | undefined; build(element: Element_2): ObjType; createObj(): ObjType; setTag(): void; setTextContent(): void; setPlaceholder(): void; setTitle(): void; setHref(): void; } export declare class TakeScrenshotAction extends ElementAction implements ITakeScrenshotAction { name: string; definition: { name: string; description: string; parameters: { type: string; properties: { parentType: { type: string; description: string; }; parentId: { type: string; description: string; }; type: { type: string; description: string; }; id: { type: string; description: string; }; selector: { type: string; description: string; }; content: { type: string; description: string; }; }; }; }; get filePath(): any; get startFrom(): any; get screenshotOptions(): { path: any; }; execute(): Promise; pageScreenshot(): Promise; parentSelector(startFrom: FindElementDetails): "article" | "aside" | "dialog" | "footer" | "form" | "main" | "nav" | "section" | "h1,h2,h3" | undefined; mainSelector(startFrom: FindElementDetails): "article" | "canvas" | "code" | "figure" | "form" | "section" | "table" | "video" | "h1,h2,h3" | "input,select,textarea"; idSelector(id: string): string; selectorFor(startFrom: FindElementDetails): string; findElement(startFrom: FindElementDetails): Promise | undefined>; elementScreenshot(): Promise; } export declare type TBrokerOpts = DebugOpts; export declare class TerminalInputController implements IInputController { createReader: ICreateTerminalReader; constructor(createReader: any); getInput(text: string): Promise; } export declare type TokenUsage = { completionTokens: number; promptTokens: number; totalTokens: number; }; export declare type TSelectAttrs = { multiple: boolean; options: HTMLOptionsCollection; selectedIndex: number; selectedOptions: HTMLCollectionOf; }; export declare type ViewportOpts = { width?: number; height?: number; scaleFactor?: number; }; export { }