UNPKG

puppeteer-core

Version:

A high-level API to control headless Chrome over the DevTools Protocol

225 lines 5.25 kB
/** * @license * Copyright 2026 Google Inc. * SPDX-License-Identifier: Apache-2.0 */ import type { Protocol } from 'devtools-protocol'; import type { CDPSession } from '../api/CDPSession.js'; import type { ElementHandle } from '../api/ElementHandle.js'; import type { Frame } from '../api/Frame.js'; import type { ConsoleMessageLocation } from '../common/ConsoleMessage.js'; import { EventEmitter } from '../common/EventEmitter.js'; import type { FrameManager } from './FrameManager.js'; /** * Tool annotations * * @public */ export interface WebMCPAnnotation { /** * A hint indicating that the tool does not modify any state. */ readOnly?: boolean; /** * A hint indicating that the tool output may contain untrusted content, ex: UGC, 3rd * party data. */ untrustedContent?: boolean; /** * If the declarative tool was declared with the autosubmit attribute. */ autosubmit?: boolean; } /** * Represents the status of a tool invocation. * * @public */ export type WebMCPInvocationStatus = 'Completed' | 'Canceled' | 'Error'; /** * @internal */ export interface ProtocolWebMCPTool { name: string; description: string; inputSchema?: object; annotations?: WebMCPAnnotation; frameId: string; backendNodeId?: number; stackTrace?: Protocol.Runtime.StackTrace; } /** * Represents a registered WebMCP tool available on the page. * * @public */ export declare class WebMCPTool extends EventEmitter<{ /** Emitted when invocation starts. */ toolinvoked: WebMCPToolCall; }> { #private; /** * Tool name. */ name: string; /** * Tool description. */ description: string; /** * Schema for the tool's input parameters. */ inputSchema?: object; /** * Optional annotations for the tool. */ annotations?: WebMCPAnnotation; /** * Frame the tool was defined for. */ frame: Frame; /** * Source location that defined the tool (if available). */ location?: ConsoleMessageLocation; /** * @internal */ rawStackTrace?: Protocol.Runtime.StackTrace; /** * @internal */ constructor(webmcp: WebMCP, tool: ProtocolWebMCPTool, frame: Frame); /** * The corresponding ElementHandle when tool was registered via a form. */ get formElement(): Promise<ElementHandle<HTMLFormElement> | undefined>; /** * Executes tool with input parameters, matching tool's `inputSchema`. */ execute(input?: object): Promise<WebMCPToolCallResult>; } /** * @public */ export interface WebMCPToolsAddedEvent { /** * Array of tools that were added. */ tools: WebMCPTool[]; } /** * @public */ export interface WebMCPToolsRemovedEvent { /** * Array of tools that were removed. */ tools: WebMCPTool[]; } /** * @public */ export declare class WebMCPToolCall { /** * Tool invocation identifier. */ id: string; /** * Tool that was called. */ tool: WebMCPTool; /** * The input parameters used for the call. */ input: object; /** * @internal */ constructor(invocationId: string, tool: WebMCPTool, input: string); } /** * @public */ export interface WebMCPToolCallResult { /** * Tool invocation identifier. */ id: string; /** * The corresponding tool call if available. */ call?: WebMCPToolCall; /** * Status of the invocation. */ status: WebMCPInvocationStatus; /** * Output or error delivered as delivered to the agent. Missing if `status` is anything * other than Completed. */ output?: any; /** * Error text. */ errorText?: string; /** * The exception object, if the javascript tool threw an error. */ exception?: Protocol.Runtime.RemoteObject; } /** * The experimental WebMCP class provides an API for the WebMCP API. * * See the * {@link https://pptr.dev/guides/webmcp|WebMCP guide} * for more details. * * @example * * ```ts * await page.goto('https://www.example.com'); * const tools = page.webmcp.tools(); * for (const tool of tools) { * console.log(`Tool found: ${tool.name} - ${tool.description}`); * } * ``` * * @experimental * @public */ export declare class WebMCP extends EventEmitter<{ /** Emitted when tools are added. */ toolsadded: WebMCPToolsAddedEvent; /** Emitted when tools are removed. */ toolsremoved: WebMCPToolsRemovedEvent; /** Emitted when a tool invocation starts. */ toolinvoked: WebMCPToolCall; /** Emitted when a tool invocation completes or fails. */ toolresponded: WebMCPToolCallResult; }> { #private; /** * @internal */ constructor(client: CDPSession, frameManager: FrameManager); /** * @internal */ initialize(): Promise<void>; /** * @internal */ invokeTool(tool: WebMCPTool, input: object): Promise<{ invocationId: string; }>; /** * Gets all WebMCP tools defined by the page. */ tools(): WebMCPTool[]; /** * @internal */ updateClient(client: CDPSession): void; } //# sourceMappingURL=WebMCP.d.ts.map