import { BaseSubagent, type SubagentConfig } from '../base-subagent.js'; import type { BaseChatModel } from '@langchain/core/language_models/chat_models'; import type { FastifyBaseLogger } from 'fastify'; /** * Web Explore Subagent * * Accepts a research instruction, searches the web (DuckDuckGo) or arXiv * for academic queries, fetches relevant page/PDF content, and returns a * markdown summary with cited sources. * * No MCP client needed — operates entirely through platform tools. */ export class WebExploreSubagent extends BaseSubagent { constructor( config: SubagentConfig, model: BaseChatModel, logger: FastifyBaseLogger, tools?: any[] ) { super(config, model, logger, undefined, tools); } protected getRecursionLimit() { return 15; } protected getFallbackText() { return 'No results found.'; } protected requiresMCPClient() { return false; } } /** * Factory function to create and initialize WebExploreSubagent */ export async function createWebExploreSubagent( model: BaseChatModel, logger: FastifyBaseLogger, basePath: string, tools?: any[] ): Promise { const config = await BaseSubagent.loadConfig(basePath); const subagent = new WebExploreSubagent(config, model, logger, tools); await subagent.initialize(basePath); return subagent; }