"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.convertWatsonxToolCallToUtilityToolCall = exports.convertUtilityToolToWatsonxTool = void 0;
/**
 * Converts a utility agent tool to a Watsonx text chat parameter tool format. This function
 * transforms the tool definition from the utility agent format to the format expected by Watsonx
 * text chat APIs.
 *
 * @example
 *   ```typescript
 *   const utilityTool = {
 *     name: 'calculator',
 *     description: 'Performs calculations',
 *     input_schema: { type: 'object', properties: { expression: { type: 'string' } } }
 *   };
 *   const watsonxTool = convertUtilityToolToWatsonxTool(utilityTool);
 *   ```;
 *
 * @param {WatsonXAI.UtilityAgentTool} utilityTool - The utility agent tool to convert
 * @returns {WatsonXAI.TextChatParameterTools} The converted tool in Watsonx format
 */
function convertUtilityToolToWatsonxTool(utilityTool) {
    // eslint-disable-next-line @typescript-eslint/naming-convention
    const { name, description, input_schema } = utilityTool;
    const parseParameters = (input) => {
        if (input)
            return input;
        return {
            properties: {
                input: { type: 'string', description: 'Input for the tool' },
            },
            type: 'object',
        };
    };
    const tool = {
        type: 'function',
        function: {
            name,
            description,
            parameters: parseParameters(input_schema),
        },
    };
    return tool;
}
exports.convertUtilityToolToWatsonxTool = convertUtilityToolToWatsonxTool;
/**
 * Converts a Watsonx tool call to a utility agent tool run request. This function transforms the
 * tool call from Watsonx text chat format to the format expected by the utility agent tools run
 * API.
 *
 * @example
 *   ```typescript
 *   const toolCall = {
 *     id: '12345',
 *     type: 'function',
 *     function: {
 *       name: 'calculator',
 *       arguments: '{"input": "2 + 2"}'
 *     }
 *   };
 *   const runRequest = convertWatsonxToolCallToUtilityToolCall(toolCall);
 *   ```;
 *
 * @param {WatsonXAI.TextChatToolCall} toolCall - The Watsonx tool call to convert
 * @param {WatsonXAI.JsonObject} [config] - Optional configuration for the tool run
 * @returns {WatsonXAI.WxUtilityAgentToolsRunRequest} The converted tool run request
 */
function convertWatsonxToolCallToUtilityToolCall(toolCall, config) {
    const { name, arguments: stringifiedArguments } = toolCall.function;
    const jsonArguments = JSON.parse(stringifiedArguments);
    const { input } = jsonArguments;
    return {
        input: input !== null && input !== void 0 ? input : jsonArguments,
        tool_name: name,
        config,
    };
}
exports.convertWatsonxToolCallToUtilityToolCall = convertWatsonxToolCallToUtilityToolCall;
//# sourceMappingURL=converters.js.map