{"version":3,"sources":["../../../src/bridges/vercel-ai/bridge.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * Vercel AI SDK Bridge for GQP\n * Creates Vercel AI SDK tools from GQP graph\n */\n\nimport type { GQP } from \"../../core/engine.js\";\nimport type { ToolCallParams } from \"../../core/types.js\";\n\n/**\n * Vercel AI tool options\n */\nexport interface VercelAIBridgeOptions {\n    /** Custom tool name */\n    name?: string;\n    /** Custom description */\n    description?: string;\n}\n\n/**\n * Create Vercel AI SDK tool from GQP\n *\n * @example\n * ```typescript\n * import { createTools } from '@mzhub/gqp/vercel-ai';\n * import { streamText } from 'ai';\n * import { openai } from '@ai-sdk/openai';\n *\n * const tools = createTools(graph);\n *\n * const result = await streamText({\n *   model: openai('gpt-4-turbo'),\n *   prompt: 'Find customers with high-value orders',\n *   tools,\n * });\n * ```\n */\nexport async function createTools(\n    graph: GQP,\n    options: VercelAIBridgeOptions = {}\n): Promise<Record<string, unknown>> {\n    // Dynamic import to make ai package optional\n    const { tool } = (await import(\"ai\" as any)) as any;\n    const { z } = await import(\"zod\");\n\n    const toolDef = graph.getToolDefinition();\n    const name = options.name || toolDef.name;\n\n    return {\n        [name]: tool({\n            description: options.description || toolDef.description,\n            parameters: z.object({\n                action: z.enum([\"explore\", \"navigate\", \"query\", \"introspect\"]),\n                node: z.string().optional(),\n                query: z.string().optional(),\n                filters: z.record(z.string(), z.unknown()).optional(),\n                options: z\n                    .object({\n                        limit: z.number().optional().default(10),\n                        offset: z.number().optional().default(0),\n                        include: z.array(z.string()).optional(),\n                    })\n                    .optional(),\n                cursorId: z.string().optional(),\n            }),\n            execute: async (params: ToolCallParams) => {\n                return graph.handleToolCall(params);\n            },\n        }),\n    };\n}\n\n/**\n * Create separate tools for each action\n */\nexport async function createActionTools(\n    graph: GQP,\n    options: VercelAIBridgeOptions = {}\n): Promise<Record<string, unknown>> {\n    const { tool } = (await import(\"ai\" as any)) as any;\n    const { z } = await import(\"zod\");\n\n    const prefix = options.name || \"data\";\n\n    return {\n        [`${prefix}_explore`]: tool({\n            description: \"Discover available data nodes\",\n            parameters: z.object({}),\n            execute: async () => graph.handleToolCall({ action: \"explore\" }),\n        }),\n\n        [`${prefix}_navigate`]: tool({\n            description: \"Focus on a specific data node to see its fields and relations\",\n            parameters: z.object({\n                node: z.string().describe(\"Name of the node to navigate to\"),\n            }),\n            execute: async (params: { node: string }) =>\n                graph.handleToolCall({ action: \"navigate\", node: params.node }),\n        }),\n\n        [`${prefix}_query`]: tool({\n            description: \"Search and filter data within a node\",\n            parameters: z.object({\n                node: z.string().describe(\"Name of the node to query\"),\n                query: z.string().optional().describe(\"Semantic search query\"),\n                filters: z.record(z.string(), z.unknown()).optional().describe(\"Field filters\"),\n                limit: z.number().optional().default(10).describe(\"Max results\"),\n            }),\n            execute: async (params: {\n                node: string;\n                query?: string;\n                filters?: Record<string, unknown>;\n                limit?: number;\n            }) =>\n                graph.handleToolCall({\n                    action: \"query\",\n                    node: params.node,\n                    query: params.query,\n                    filters: params.filters,\n                    options: { limit: params.limit },\n                }),\n        }),\n    };\n}\n\n/**\n * Get tool schema for manual use\n */\nexport function getToolSchema(\n    graph: GQP,\n    options: VercelAIBridgeOptions = {}\n): {\n    name: string;\n    description: string;\n    parameters: object;\n} {\n    const toolDef = graph.getToolDefinition();\n\n    return {\n        name: options.name || toolDef.name,\n        description: options.description || toolDef.description,\n        parameters: toolDef.inputSchema,\n    };\n}\n"]}