{"version":3,"file":"tool-call-engine/ToolCallEngine.mjs","sources":["webpack://@multimodal/agent/./src/tool-call-engine/ToolCallEngine.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n/*\n * Copyright (c) 2025 Bytedance, Inc. and its affiliates.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n  Tool,\n  ToolCallEngine,\n  ParsedModelResponse,\n  PrepareRequestContext,\n  AgentSingleLoopReponse,\n  MultimodalToolCallResult,\n  ChatCompletionMessageParam,\n  ChatCompletionCreateParams,\n  StreamProcessingState,\n  StreamChunkResult,\n  ChatCompletionChunk,\n} from '@multimodal/agent-interface';\nimport { buildToolCallResultMessages } from './utils';\n\n/**\n * Base implementation of ToolCallEngine with common functionality\n * \n * This abstract base class provides shared implementations for common operations\n * across different tool call engines, reducing code duplication and improving maintainability.\n */\nexport abstract class BaseToolCallEngine extends ToolCallEngine {\n  /**\n   * Build historical tool call result messages for non-native engines\n   * \n   * This is the common implementation used by both PromptEngineering and StructuredOutputs engines\n   * since they both format tool results as user messages rather than tool messages.\n   */\n  protected buildNonNativeToolCallResultMessages(\n    toolResults: MultimodalToolCallResult[],\n  ): ChatCompletionMessageParam[] {\n    return buildToolCallResultMessages(toolResults, false);\n  }\n\n  /**\n   * Build historical tool call result messages for native engines\n   * \n   * This implementation is used by native engines that support OpenAI's tool protocol\n   * with separate tool and user message roles.\n   */\n  protected buildNativeToolCallResultMessages(\n    toolResults: MultimodalToolCallResult[],\n  ): ChatCompletionMessageParam[] {\n    return buildToolCallResultMessages(toolResults, true);\n  }\n\n  /**\n   * Create a basic streaming processing state\n   * \n   * Provides a default implementation that can be extended by specific engines\n   */\n  initStreamProcessingState(): StreamProcessingState {\n    return {\n      contentBuffer: '',\n      toolCalls: [],\n      reasoningBuffer: '',\n      finishReason: null,\n    };\n  }\n\n  /**\n   * Extract reasoning content from chunk delta\n   * \n   * Common logic for processing reasoning content across different engines\n   */\n  protected extractReasoningContent(delta: any): string {\n    // Handle reasoning content if present (non-standard OpenAI field)\n    return delta?.reasoning_content || '';\n  }\n\n  /**\n   * Update finish reason from chunk\n   * \n   * Common logic for updating finish reason from streaming chunks\n   */\n  protected updateFinishReason(\n    chunk: ChatCompletionChunk,\n    state: StreamProcessingState,\n  ): void {\n    if (chunk.choices[0]?.finish_reason) {\n      state.finishReason = chunk.choices[0].finish_reason;\n    }\n  }\n\n  /**\n   * Create a basic stream chunk result\n   * \n   * Helper method to create StreamChunkResult with common structure\n   */\n  protected createStreamChunkResult(\n    content: string = '',\n    reasoningContent: string = '',\n    hasToolCallUpdate: boolean = false,\n    toolCalls: any[] = [],\n    streamingToolCallUpdates?: any,\n  ): StreamChunkResult {\n    return {\n      content,\n      reasoningContent,\n      hasToolCallUpdate,\n      toolCalls,\n      streamingToolCallUpdates,\n    };\n  }\n}\n"],"names":["BaseToolCallEngine","ToolCallEngine","toolResults","buildToolCallResultMessages","delta","chunk","state","_chunk_choices_","content","reasoningContent","hasToolCallUpdate","toolCalls","streamingToolCallUpdates"],"mappings":";;;;;;AA2BO,MAAeA,2BAA2BC;IAOrC,qCACRC,WAAuC,EACT;QAC9B,OAAOC,4BAA4BD,aAAa;IAClD;IAQU,kCACRA,WAAuC,EACT;QAC9B,OAAOC,4BAA4BD,aAAa;IAClD;IAOA,4BAAmD;QACjD,OAAO;YACL,eAAe;YACf,WAAW,EAAE;YACb,iBAAiB;YACjB,cAAc;QAChB;IACF;IAOU,wBAAwBE,KAAU,EAAU;QAEpD,OAAOA,AAAAA,CAAAA,QAAAA,QAAAA,KAAAA,IAAAA,MAAO,iBAAiB,AAAD,KAAK;IACrC;IAOU,mBACRC,KAA0B,EAC1BC,KAA4B,EACtB;YACFC;QAAJ,IAAI,QAAAA,CAAAA,kBAAAA,MAAM,OAAO,CAAC,EAAE,AAAD,IAAfA,KAAAA,IAAAA,gBAAkB,aAAa,EACjCD,MAAM,YAAY,GAAGD,MAAM,OAAO,CAAC,EAAE,CAAC,aAAa;IAEvD;IAOU,wBACRG,UAAkB,EAAE,EACpBC,mBAA2B,EAAE,EAC7BC,oBAA6B,KAAK,EAClCC,YAAmB,EAAE,EACrBC,wBAA8B,EACX;QACnB,OAAO;YACLJ;YACAC;YACAC;YACAC;YACAC;QACF;IACF;AACF"}