import { builtinAgentTools } from "./builtin-tools.js"; import { selectCloudAgentTools } from "./cloud-agent-tools-select.js"; import { selectMemoryTools } from "./memory-tools.js"; import { filterBuiltinToolsForRun, filterBuiltinToolsForThread, } from "./schedule-tools.js"; import { filterImageReturningComputerTools, } from "./model-vision.js"; /** Browser tools that require a graphical computer (Chrome). */ export const PAGE_BROWSER_TOOL_NAMES = new Set([ "browser_navigate", "browser_snapshot", "browser_act", ]); export function filterPageBrowserTools( tools: T[], pageBrowserAllowed: boolean, ): T[] { if (pageBrowserAllowed) return tools; return tools.filter((tool) => !PAGE_BROWSER_TOOL_NAMES.has(tool.name)); } export function selectBuiltinToolsForRun(options: { graphicalToolsAllowed: boolean; /** Page browser tools need a graphical computer (Chrome), not model vision. */ pageBrowserAllowed?: boolean; groupId: string | null; trigger: string; semanticMemoryEnabled: boolean; cloudAgentEnabled?: boolean; messagingChannelRun: boolean; }) { return selectCloudAgentTools( selectMemoryTools( filterBuiltinToolsForRun( filterBuiltinToolsForThread( filterPageBrowserTools( filterImageReturningComputerTools(builtinAgentTools, options.graphicalToolsAllowed), options.pageBrowserAllowed ?? options.graphicalToolsAllowed, ), options.groupId, ), options.trigger, ), options.semanticMemoryEnabled, ), Boolean(options.cloudAgentEnabled), ).filter( (tool) => !options.messagingChannelRun || (!["remember", "save_memory", "recall_memory", "forget_memory"].includes(tool.name) && !tool.name.startsWith("scratchpad_")), ); }