From fff9cecad219dbb79eccf22934da06ee408d0851 Mon Sep 17 00:00:00 2001 From: Danny Avila Date: Wed, 7 Jan 2026 19:00:25 -0500 Subject: [PATCH] refactor: streamline tool classification logic for local and programmatic tools --- packages/api/src/tools/classification.ts | 51 ++++++++++++------------ 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/packages/api/src/tools/classification.ts b/packages/api/src/tools/classification.ts index 5a77a242ff..23a9c8e2f5 100644 --- a/packages/api/src/tools/classification.ts +++ b/packages/api/src/tools/classification.ts @@ -376,36 +376,35 @@ export async function buildToolClassification( return { toolRegistry, additionalTools }; } - try { - const authValues = await loadAuthValues({ - userId, - authFields: [EnvVar.CODE_API_KEY], + /** Tool search uses local mode (no API key needed) */ + if (hasDeferredTools) { + const toolSearchTool = createToolSearch({ + mode: 'local', + toolRegistry, }); - const codeApiKey = authValues[EnvVar.CODE_API_KEY]; + additionalTools.push(toolSearchTool); + logger.debug(`[buildToolClassification] Tool Search enabled for agent ${agentId}`); + } - if (!codeApiKey) { - logger.warn( - '[buildToolClassification] PTC/ToolSearch configured but CODE_API_KEY not available', - ); - return { toolRegistry, additionalTools }; - } - - if (hasProgrammaticTools) { - const ptcTool = createProgrammaticToolCallingTool({ apiKey: codeApiKey }); - additionalTools.push(ptcTool); - logger.debug(`[buildToolClassification] PTC tool enabled for agent ${agentId}`); - } - - if (hasDeferredTools) { - const toolSearchTool = createToolSearch({ - apiKey: codeApiKey, - toolRegistry, + /** PTC requires CODE_API_KEY for sandbox execution */ + if (hasProgrammaticTools) { + try { + const authValues = await loadAuthValues({ + userId, + authFields: [EnvVar.CODE_API_KEY], }); - additionalTools.push(toolSearchTool); - logger.debug(`[buildToolClassification] Tool Search enabled for agent ${agentId}`); + const codeApiKey = authValues[EnvVar.CODE_API_KEY]; + + if (!codeApiKey) { + logger.warn('[buildToolClassification] PTC configured but CODE_API_KEY not available'); + } else { + const ptcTool = createProgrammaticToolCallingTool({ apiKey: codeApiKey }); + additionalTools.push(ptcTool); + logger.debug(`[buildToolClassification] PTC tool enabled for agent ${agentId}`); + } + } catch (error) { + logger.error('[buildToolClassification] Error creating PTC tool:', error); } - } catch (error) { - logger.error('[buildToolClassification] Error creating PTC/ToolSearch tools:', error); } return { toolRegistry, additionalTools };