{"version":3,"file":"generators-C__iJC0E.cjs","names":["pluginTsName","File","path","Client","pluginZodName","pluginTsName","File","Server"],"sources":["../src/generators/mcpGenerator.tsx","../src/generators/serverGenerator.tsx"],"sourcesContent":["import path from 'node:path'\nimport { Client } from '@kubb/plugin-client/components'\nimport { createReactGenerator } from '@kubb/plugin-oas/generators'\nimport { useOas, useOperationManager } from '@kubb/plugin-oas/hooks'\nimport { getBanner, getFooter } from '@kubb/plugin-oas/utils'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { File } from '@kubb/react-fabric'\nimport type { PluginMcp } from '../types'\n\nexport const mcpGenerator = createReactGenerator<PluginMcp>({\n  name: 'mcp',\n  Operation({ config, operation, generator, plugin }) {\n    const { options } = plugin\n    const oas = useOas()\n\n    const { getSchemas, getName, getFile } = useOperationManager(generator)\n\n    const mcp = {\n      name: getName(operation, { type: 'function', suffix: 'handler' }),\n      file: getFile(operation),\n    }\n\n    const type = {\n      file: getFile(operation, { pluginKey: [pluginTsName] }),\n      schemas: getSchemas(operation, { pluginKey: [pluginTsName], type: 'type' }),\n    }\n\n    return (\n      <File\n        baseName={mcp.file.baseName}\n        path={mcp.file.path}\n        meta={mcp.file.meta}\n        banner={getBanner({ oas, output: options.output })}\n        footer={getFooter({ oas, output: options.output })}\n      >\n        {options.client.importPath ? (\n          <>\n            <File.Import name={'fetch'} path={options.client.importPath} />\n            <File.Import name={['Client', 'RequestConfig', 'ResponseErrorConfig']} path={options.client.importPath} isTypeOnly />\n            {options.client.dataReturnType === 'full' && <File.Import name={['ResponseConfig']} path={options.client.importPath} isTypeOnly />}\n          </>\n        ) : (\n          <>\n            <File.Import name={['fetch']} root={mcp.file.path} path={path.resolve(config.root, config.output.path, '.kubb/fetch.ts')} />\n            <File.Import\n              name={['Client', 'RequestConfig', 'ResponseErrorConfig']}\n              root={mcp.file.path}\n              path={path.resolve(config.root, config.output.path, '.kubb/fetch.ts')}\n              isTypeOnly\n            />\n            {options.client.dataReturnType === 'full' && (\n              <File.Import name={['ResponseConfig']} root={mcp.file.path} path={path.resolve(config.root, config.output.path, '.kubb/fetch.ts')} isTypeOnly />\n            )}\n          </>\n        )}\n        <File.Import name={['buildFormData']} root={mcp.file.path} path={path.resolve(config.root, config.output.path, '.kubb/config.ts')} />\n        <File.Import name={['CallToolResult']} path={'@modelcontextprotocol/sdk/types'} isTypeOnly />\n        <File.Import\n          name={[\n            type.schemas.request?.name,\n            type.schemas.response.name,\n            type.schemas.pathParams?.name,\n            type.schemas.queryParams?.name,\n            type.schemas.headerParams?.name,\n            ...(type.schemas.statusCodes?.map((item) => item.name) || []),\n          ].filter(Boolean)}\n          root={mcp.file.path}\n          path={type.file.path}\n          isTypeOnly\n        />\n\n        <Client\n          name={mcp.name}\n          isConfigurable={false}\n          returnType={'Promise<CallToolResult>'}\n          baseURL={options.client.baseURL}\n          operation={operation}\n          typeSchemas={type.schemas}\n          zodSchemas={undefined}\n          dataReturnType={options.client.dataReturnType || 'data'}\n          paramsType={'object'}\n          paramsCasing={options.client?.paramsCasing || options.paramsCasing}\n          pathParamsType={'object'}\n          parser={'client'}\n        >\n          {options.client.dataReturnType === 'data' &&\n            `return {\n            content: [\n              {\n                type: 'text',\n                text: JSON.stringify(res.data)\n              }\n            ],\n            structuredContent: { data: res.data }\n           }`}\n          {options.client.dataReturnType === 'full' &&\n            `return {\n            content: [\n              {\n                type: 'text',\n                text: JSON.stringify(res)\n              }\n            ],\n            structuredContent: { data: res.data }\n           }`}\n        </Client>\n      </File>\n    )\n  },\n})\n","import { usePluginManager } from '@kubb/core/hooks'\nimport { createReactGenerator } from '@kubb/plugin-oas/generators'\nimport { useOas, useOperationManager } from '@kubb/plugin-oas/hooks'\nimport { getBanner, getFooter } from '@kubb/plugin-oas/utils'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { pluginZodName } from '@kubb/plugin-zod'\nimport { File } from '@kubb/react-fabric'\nimport { Server } from '../components/Server'\nimport type { PluginMcp } from '../types'\n\nexport const serverGenerator = createReactGenerator<PluginMcp>({\n  name: 'operations',\n  Operations({ operations, generator, plugin }) {\n    const pluginManager = usePluginManager()\n    const { options } = plugin\n\n    const oas = useOas()\n    const { getFile, getName, getSchemas } = useOperationManager(generator)\n\n    const name = 'server'\n    const file = pluginManager.getFile({ name, extname: '.ts', pluginKey: plugin.key })\n\n    const jsonFile = pluginManager.getFile({ name: '.mcp', extname: '.json', pluginKey: plugin.key })\n\n    const operationsMapped = operations.map((operation) => {\n      return {\n        tool: {\n          name: operation.getOperationId() || operation.getSummary() || `${operation.method.toUpperCase()} ${operation.path}`,\n          title: operation.getSummary() || undefined,\n          description: operation.getDescription() || `Make a ${operation.method.toUpperCase()} request to ${operation.path}`,\n        },\n        mcp: {\n          name: getName(operation, {\n            type: 'function',\n            suffix: 'handler',\n          }),\n          file: getFile(operation),\n        },\n        zod: {\n          name: getName(operation, {\n            type: 'function',\n            pluginKey: [pluginZodName],\n          }),\n          schemas: getSchemas(operation, { pluginKey: [pluginZodName], type: 'function' }),\n          file: getFile(operation, { pluginKey: [pluginZodName] }),\n        },\n        type: {\n          schemas: getSchemas(operation, { pluginKey: [pluginTsName], type: 'type' }),\n        },\n      }\n    })\n\n    const imports = operationsMapped.flatMap(({ mcp, zod }) => {\n      return [\n        <File.Import key={mcp.name} name={[mcp.name]} root={file.path} path={mcp.file.path} />,\n        <File.Import\n          key={zod.name}\n          name={[\n            zod.schemas.request?.name,\n            zod.schemas.pathParams?.name,\n            zod.schemas.queryParams?.name,\n            zod.schemas.headerParams?.name,\n            zod.schemas.response?.name,\n          ].filter(Boolean)}\n          root={file.path}\n          path={zod.file.path}\n        />,\n      ]\n    })\n\n    return (\n      <>\n        <File\n          baseName={file.baseName}\n          path={file.path}\n          meta={file.meta}\n          banner={getBanner({ oas, output: options.output, config: pluginManager.config })}\n          footer={getFooter({ oas, output: options.output })}\n        >\n          <File.Import name={['McpServer']} path={'@modelcontextprotocol/sdk/server/mcp'} />\n          <File.Import name={['z']} path={'zod'} />\n          <File.Import name={['StdioServerTransport']} path={'@modelcontextprotocol/sdk/server/stdio'} />\n\n          {imports}\n          <Server serverName={oas.api.info?.title} serverVersion={oas.getVersion()} paramsCasing={options.paramsCasing} operations={operationsMapped} />\n        </File>\n\n        <File baseName={jsonFile.baseName} path={jsonFile.path} meta={jsonFile.meta}>\n          <File.Source name={name}>\n            {`\n          {\n            \"mcpServers\": {\n              \"${oas.api.info?.title || 'server'}\": {\n                \"type\": \"stdio\",\n                \"command\": \"npx\",\n                \"args\": [\"tsx\", \"${file.path}\"]\n              }\n            }\n          }\n          `}\n          </File.Source>\n        </File>\n      </>\n    )\n  },\n})\n"],"mappings":"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"}