{"version":3,"sources":["../../../src/bridges/openai/bridge.ts"],"names":[],"mappings":";AAiEO,SAAS,iBAAA,CACZ,KAAA,EACA,OAAA,GAA+B,EAAC,EAChB;AAChB,EAAA,MAAM,OAAA,GAAU,MAAM,iBAAA,EAAkB;AAExC,EAAA,IAAI,IAAA,GAAO,OAAA,CAAQ,YAAA,IAAgB,OAAA,CAAQ,IAAA;AAC3C,EAAA,IAAI,OAAA,CAAQ,WAAW,YAAA,EAAc;AACjC,IAAA,IAAA,GAAO,IAAA,CAAK,QAAQ,UAAA,EAAY,KAAK,EAAE,WAAA,EAAY,CAAE,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAA;AAAA,EACzE;AAEA,EAAA,IAAI,WAAA,GAAc,OAAA,CAAQ,WAAA,IAAe,OAAA,CAAQ,WAAA;AACjD,EAAA,IAAI,QAAQ,eAAA,EAAiB;AACzB,IAAA,WAAA,IAAe;;AAAA;AAAA;AAAA;AAAA,sFAAA,CAAA;AAAA,EAMnB;AAEA,EAAA,OAAO;AAAA,IACH;AAAA,MACI,IAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAY,OAAA,CAAQ;AAAA;AACxB,GACJ;AACJ;AAKO,SAAS,aAAA,CACZ,KAAA,EACA,OAAA,GAA+B,EAAC,EACpB;AACZ,EAAA,MAAM,SAAA,GAAY,iBAAA,CAAkB,KAAA,EAAO,OAAO,CAAA;AAElD,EAAA,OAAO,SAAA,CAAU,GAAA,CAAI,CAAC,EAAA,MAAQ;AAAA,IAC1B,IAAA,EAAM,UAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACd,CAAE,CAAA;AACN;AAgBO,SAAS,eACZ,KAAA,EAC6D;AAC7D,EAAA,OAAO,OAAO,YAAA,KAAiB;AAC3B,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,YAAA,CAAa,SAAS,CAAA;AAChD,IAAA,OAAO,KAAA,CAAM,eAAe,MAAM,CAAA;AAAA,EACtC,CAAA;AACJ;AAKO,SAAS,mBACZ,KAAA,EACuE;AACvE,EAAA,MAAM,QAAA,GAAW,eAAe,KAAK,CAAA;AACrC,EAAA,OAAO,OAAO,QAAA,KAAa,QAAA,CAAS,QAAA,CAAS,QAAQ,CAAA;AACzD;AAKO,SAAS,iBAAiB,MAAA,EAAgC;AAC7D,EAAA,OAAO,IAAA,CAAK,SAAA,CAAU,MAAA,EAAQ,IAAA,EAAM,CAAC,CAAA;AACzC","file":"index.mjs","sourcesContent":["\n\nimport type { GQP } from \"../../core/engine.js\";\nimport type { ToolCallParams, ToolCallResult } from \"../../core/types.js\";\n\n/**\n * OpenAI Function Definition\n */\nexport interface OpenAIFunction {\n    name: string;\n    description: string;\n    parameters: {\n        type: \"object\";\n        properties: Record<string, unknown>;\n        required?: string[];\n    };\n}\n\n/**\n * OpenAI Function Call (from API response)\n */\nexport interface OpenAIFunctionCall {\n    name: string;\n    arguments: string;\n}\n\n/**\n * OpenAI Tool Definition (newer format)\n */\nexport interface OpenAITool {\n    type: \"function\";\n    function: OpenAIFunction;\n}\n\n/**\n * Bridge options\n */\nexport interface OpenAIBridgeOptions {\n    /** Naming convention for function name */\n    naming?: \"camelCase\" | \"snake_case\";\n    /** Include example queries in description */\n    includeExamples?: boolean;\n    /** Custom function name */\n    functionName?: string;\n    /** Custom description */\n    description?: string;\n}\n\n/**\n * Convert GQP to OpenAI function definitions\n *\n * @example\n * ```typescript\n * import { toOpenAIFunctions } from '@mzhub/gqp/openai';\n *\n * const functions = toOpenAIFunctions(graph);\n *\n * const response = await openai.chat.completions.create({\n *   model: 'gpt-4-turbo',\n *   messages: [...],\n *   functions,\n *   function_call: 'auto'\n * });\n * ```\n */\nexport function toOpenAIFunctions(\n    graph: GQP,\n    options: OpenAIBridgeOptions = {}\n): OpenAIFunction[] {\n    const toolDef = graph.getToolDefinition();\n\n    let name = options.functionName || toolDef.name;\n    if (options.naming === \"snake_case\") {\n        name = name.replace(/([A-Z])/g, \"_$1\").toLowerCase().replace(/^_/, \"\");\n    }\n\n    let description = options.description || toolDef.description;\n    if (options.includeExamples) {\n        description += `\n\nExample calls:\n- Explore available data: {\"action\": \"explore\"}\n- Navigate to Orders: {\"action\": \"navigate\", \"node\": \"Order\"}\n- Query orders: {\"action\": \"query\", \"node\": \"Order\", \"filters\": {\"status\": \"pending\"}}`;\n    }\n\n    return [\n        {\n            name,\n            description,\n            parameters: toolDef.inputSchema as OpenAIFunction[\"parameters\"],\n        },\n    ];\n}\n\n/**\n * Convert GQP to OpenAI tools format (newer API)\n */\nexport function toOpenAITools(\n    graph: GQP,\n    options: OpenAIBridgeOptions = {}\n): OpenAITool[] {\n    const functions = toOpenAIFunctions(graph, options);\n\n    return functions.map((fn) => ({\n        type: \"function\" as const,\n        function: fn,\n    }));\n}\n\n/**\n * Create an executor for OpenAI function calls\n *\n * @example\n * ```typescript\n * import { toOpenAIFunctions, createExecutor } from '@mzhub/gqp/openai';\n *\n * const executor = createExecutor(graph);\n *\n * if (response.choices[0].message.function_call) {\n *   const result = await executor(response.choices[0].message.function_call);\n * }\n * ```\n */\nexport function createExecutor(\n    graph: GQP\n): (functionCall: OpenAIFunctionCall) => Promise<ToolCallResult> {\n    return async (functionCall) => {\n        const params = JSON.parse(functionCall.arguments) as ToolCallParams;\n        return graph.handleToolCall(params);\n    };\n}\n\n/**\n * Create a tool executor for OpenAI tool calls (newer API)\n */\nexport function createToolExecutor(\n    graph: GQP\n): (toolCall: { function: OpenAIFunctionCall }) => Promise<ToolCallResult> {\n    const executor = createExecutor(graph);\n    return async (toolCall) => executor(toolCall.function);\n}\n\n/**\n * Helper to format result for OpenAI tool response\n */\nexport function formatToolResult(result: ToolCallResult): string {\n    return JSON.stringify(result, null, 2);\n}\n"]}