{"version":3,"file":"mcp.mjs","names":[],"sources":["../../src/extension/mcp.ts"],"sourcesContent":["import { resolveAllCommands } from '../core/commands.ts';\nimport type { PadroneMcpPreferences } from '../feature/mcp.ts';\nimport type { AnyPadroneBuilder, CommandTypesBase, PadroneCommand } from '../types/index.ts';\nimport type { PadroneSchema } from '../types/schema.ts';\nimport type { WithCommand } from '../util/type-utils.ts';\nimport { getRootCommand } from '../util/utils.ts';\nimport { passthroughSchema } from './utils.ts';\n\n// ── Types ────────────────────────────────────────────────────────────────\n\ntype McpArgs = { transport?: string; port?: string; host?: string; basePath?: string };\n\ntype McpCommand = PadroneCommand<'mcp', '', PadroneSchema<McpArgs>, void, [], [], true>;\n\nexport type WithMcp<T> = WithCommand<T, 'mcp', McpCommand>;\n\n// ── Extension ────────────────────────────────────────────────────────────\n\n/**\n * Extension that adds the `mcp` command for starting a Model Context Protocol server.\n *\n * Usage:\n * ```ts\n * import { createPadrone } from 'padrone';\n * import { padroneMcp } from 'padrone/mcp';\n *\n * createPadrone('my-cli').extend(padroneMcp())\n * ```\n */\nexport function padroneMcp(defaults?: PadroneMcpPreferences): <T extends CommandTypesBase>(builder: T) => WithMcp<T> {\n  return ((builder: AnyPadroneBuilder) =>\n    builder.command('mcp', (c) =>\n      c\n        .configure({ description: 'Start a Model Context Protocol server', hidden: true })\n        .arguments(passthroughSchema({ transport: 'string', port: 'string', host: 'string', 'base-path': 'string' }), {\n          positional: ['transport'],\n        })\n        .async()\n        .action(async (args, ctx) => {\n          const rootCommand = getRootCommand(ctx.command);\n          resolveAllCommands(rootCommand);\n          const { startMcpServer } = await import('../feature/mcp.ts');\n          const transport = args.transport === 'stdio' || args.transport === 'http' ? args.transport : undefined;\n          const port = args.port ? parseInt(args.port, 10) : undefined;\n          const prefs: PadroneMcpPreferences = {\n            ...defaults,\n            transport: transport ?? defaults?.transport,\n            port: port && !Number.isNaN(port) ? port : defaults?.port,\n            host: args.host ?? defaults?.host,\n            basePath: args['base-path'] ?? defaults?.basePath,\n          };\n          await startMcpServer(ctx.program, rootCommand, ctx.program.eval, prefs);\n        }),\n    )) as any;\n}\n"],"mappings":";;;;;;;;;;;;;;;AA6BA,SAAgB,WAAW,UAA0F;CACnH,SAAS,YACP,QAAQ,QAAQ,QAAQ,MACtB,EACG,UAAU;EAAE,aAAa;EAAyC,QAAQ;CAAK,CAAC,CAAC,CACjF,UAAU,kBAAkB;EAAE,WAAW;EAAU,MAAM;EAAU,MAAM;EAAU,aAAa;CAAS,CAAC,GAAG,EAC5G,YAAY,CAAC,WAAW,EAC1B,CAAC,CAAC,CACD,MAAM,CAAC,CACP,OAAO,OAAO,MAAM,QAAQ;EAC3B,MAAM,cAAc,eAAe,IAAI,OAAO;EAC9C,mBAAmB,WAAW;EAC9B,MAAM,EAAE,mBAAmB,MAAM,OAAO;EACxC,MAAM,YAAY,KAAK,cAAc,WAAW,KAAK,cAAc,SAAS,KAAK,YAAY,KAAA;EAC7F,MAAM,OAAO,KAAK,OAAO,SAAS,KAAK,MAAM,EAAE,IAAI,KAAA;EACnD,MAAM,QAA+B;GACnC,GAAG;GACH,WAAW,aAAa,UAAU;GAClC,MAAM,QAAQ,CAAC,OAAO,MAAM,IAAI,IAAI,OAAO,UAAU;GACrD,MAAM,KAAK,QAAQ,UAAU;GAC7B,UAAU,KAAK,gBAAgB,UAAU;EAC3C;EACA,MAAM,eAAe,IAAI,SAAS,aAAa,IAAI,QAAQ,MAAM,KAAK;CACxE,CAAC,CACL;AACJ"}