{"version":3,"file":"mcp.mjs","names":[],"sources":["../../../../../../../src/astro/routes/api/admin/plugins/[id]/mcp.ts"],"sourcesContent":["import type { APIRoute } from \"astro\";\nimport { z } from \"zod\";\n\nimport { requirePerm } from \"#api/authorize.js\";\nimport { apiError, apiSuccess } from \"#api/error.js\";\nimport { parseBody } from \"#api/parse.js\";\nimport { PluginStateRepository } from \"#plugins/state.js\";\n\nexport const prerender = false;\n\nconst bodySchema = z.object({ enabled: z.boolean() });\n\nexport const PUT: APIRoute = async ({ params, request, locals }) => {\n\tconst { emdash, user } = locals;\n\tif (!emdash?.db) return apiError(\"NOT_CONFIGURED\", \"EmDash is not initialized\", 500);\n\tconst denied = requirePerm(user, \"plugins:manage\");\n\tif (denied) return denied;\n\tif (!params.id) return apiError(\"INVALID_REQUEST\", \"Plugin ID required\", 400);\n\n\tconst parsed = await parseBody(request, bodySchema);\n\tif (parsed instanceof Response) return parsed;\n\tconst tools = await emdash.getPluginMcpTools(params.id);\n\tif (parsed.enabled && tools.length === 0) {\n\t\treturn apiError(\"NO_MCP_TOOLS\", \"Plugin does not declare MCP tools\", 400);\n\t}\n\tconst stateRepo = new PluginStateRepository(emdash.db);\n\tconst existing = await stateRepo.get(params.id);\n\tconst configuredVersion =\n\t\temdash.configuredPlugins.find((plugin) => plugin.id === params.id)?.version ??\n\t\temdash.sandboxedPluginEntries.find((plugin) => plugin.id === params.id)?.version;\n\tconst version = existing?.version ?? configuredVersion;\n\tif (!version) return apiError(\"NOT_FOUND\", \"Plugin not found\", 404);\n\tconst consent = parsed.enabled ? emdash.serializePluginMcpConsent(tools, params.id) : null;\n\tconst item = await stateRepo.upsert(params.id, version, existing?.status ?? \"active\", {\n\t\tmcpToolsEnabled: parsed.enabled,\n\t\tmcpToolsConsent: consent,\n\t});\n\treturn apiSuccess({\n\t\tenabled: item.mcpToolsEnabled,\n\t\ttools: tools.map(({ inputSchema: _, outputSchema: __, ...tool }) => tool),\n\t});\n};\n"],"mappings":";;;;;;;;;AAQA,MAAa,YAAY;AAEzB,MAAM,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAErD,MAAa,MAAgB,OAAO,EAAE,QAAQ,SAAS,aAAa;CACnE,MAAM,EAAE,QAAQ,SAAS;AACzB,KAAI,CAAC,QAAQ,GAAI,QAAO,SAAS,kBAAkB,6BAA6B,IAAI;CACpF,MAAM,SAAS,YAAY,MAAM,iBAAiB;AAClD,KAAI,OAAQ,QAAO;AACnB,KAAI,CAAC,OAAO,GAAI,QAAO,SAAS,mBAAmB,sBAAsB,IAAI;CAE7E,MAAM,SAAS,MAAM,UAAU,SAAS,WAAW;AACnD,KAAI,kBAAkB,SAAU,QAAO;CACvC,MAAM,QAAQ,MAAM,OAAO,kBAAkB,OAAO,GAAG;AACvD,KAAI,OAAO,WAAW,MAAM,WAAW,EACtC,QAAO,SAAS,gBAAgB,qCAAqC,IAAI;CAE1E,MAAM,YAAY,IAAI,sBAAsB,OAAO,GAAG;CACtD,MAAM,WAAW,MAAM,UAAU,IAAI,OAAO,GAAG;CAC/C,MAAM,oBACL,OAAO,kBAAkB,MAAM,WAAW,OAAO,OAAO,OAAO,GAAG,EAAE,WACpE,OAAO,uBAAuB,MAAM,WAAW,OAAO,OAAO,OAAO,GAAG,EAAE;CAC1E,MAAM,UAAU,UAAU,WAAW;AACrC,KAAI,CAAC,QAAS,QAAO,SAAS,aAAa,oBAAoB,IAAI;CACnE,MAAM,UAAU,OAAO,UAAU,OAAO,0BAA0B,OAAO,OAAO,GAAG,GAAG;AAKtF,QAAO,WAAW;EACjB,UALY,MAAM,UAAU,OAAO,OAAO,IAAI,SAAS,UAAU,UAAU,UAAU;GACrF,iBAAiB,OAAO;GACxB,iBAAiB;GACjB,CAAC,EAEa;EACd,OAAO,MAAM,KAAK,EAAE,aAAa,GAAG,cAAc,IAAI,GAAG,WAAW,KAAK;EACzE,CAAC"}