/** * WebFetchAdapter — 用 Node.js 原生 fetch 抓取 URL 并提取文本。 * 实现 ResearchExecutorAdapter 接口,可直接注入 ResearchExecutor。 * * 支持的 step.method: 'web_search'(将 query 视为 URL)、'document_read'。 * 不支持的 method 返回空 artifacts。 */ import type { ResearchExecutorAdapter } from './research-executor.js'; import type { ResearchStep, ResearchStepResult, ResearchTask } from './research-task-types.js'; /** * 宿主环境 web search 回调返回的单条搜索结果。 * 宿主可对接 Tavily、Bing、Google 等任意搜索后端。 */ export interface WebSearchResult { url: string; title: string; content: string; } export interface WebFetchAdapterOptions { /** fetch 超时毫秒数,默认 10_000 */ timeoutMs?: number; /** 自定义 User-Agent */ userAgent?: string; /** 可注入自定义 fetch 实现(测试用) */ fetchFn?: typeof globalThis.fetch; /** * 宿主环境提供的 web search 回调。 * 当 step.method 为 'web_search' 且 query 中不含 URL 时调用。 * 未提供时,自然语言查询将返回空结果。 */ searchFn?: (query: string, limit: number) => Promise; } export declare class WebFetchAdapter implements ResearchExecutorAdapter { private readonly timeoutMs; private readonly userAgent; private readonly fetchFn; private readonly searchFn?; constructor(options?: WebFetchAdapterOptions); execute(step: ResearchStep, task: ResearchTask): Promise; /** * 通过宿主 searchFn 执行 web search,将结果转为 ResearchArtifact。 */ private executeHostSearch; /** 抓取 URL 并提取纯文本 */ private fetchAndExtract; } /** 从查询字符串中提取所有 URL */ export declare function extractUrls(query: string): string[]; /** 从 HTML 中提取可读文本(轻量实现,无外部依赖) */ export declare function extractTextFromHtml(html: string): string; //# sourceMappingURL=web-fetch-adapter.d.ts.map