{"version":3,"file":"projection-w3XxXmVi.cjs","names":["path","fs","createHash"],"sources":["../src/services/projection/index.ts"],"sourcesContent":["import { createHash } from 'node:crypto';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nimport type { DoomMcpProjection } from '@agimon-ai/doompi-core/mcpProjection';\n\nimport type { McpSessionConfig } from '../../types/mcpConfig';\n\n/**\n * Uses the selected plugin sources from the projection and the exact session\n * directory for repository MCP. A disabled projection never discovers sources.\n */\nexport function mcpSessionConfigFromProjection(\n  projection: DoomMcpProjection,\n  cwd = projection.repoRoot,\n): McpSessionConfig {\n  let sources = projection.sources;\n  if (projection.enabled && cwd !== projection.repoRoot) {\n    const configPath = path.join(cwd, '.mcp.json');\n    let repositorySource: (typeof projection.sources)[number] | undefined;\n    try {\n      const content = fs.readFileSync(configPath);\n      repositorySource = {\n        sourceId: 'repository:.mcp.json',\n        owner: 'repository',\n        format: 'native',\n        configPath,\n        contentDigest: createHash('sha256').update(content).digest('hex'),\n      };\n    } catch (error) {\n      if ((error as NodeJS.ErrnoException).code !== 'ENOENT') throw error;\n    }\n    sources = [\n      ...projection.sources.filter((source) => source.owner !== 'repository'),\n      ...(repositorySource ? [repositorySource] : []),\n    ];\n  }\n  return {\n    enabled: projection.enabled,\n    repoRoot: cwd,\n    stagingDirectory: projection.stagingDirectory,\n    ...(cwd === projection.repoRoot && projection.generatedConfigPath\n      ? { generatedConfigPath: projection.generatedConfigPath }\n      : {}),\n    sources,\n    ...(projection.allowlist\n      ? {\n          allowlist: {\n            ...(projection.allowlist.servers ? { servers: [...projection.allowlist.servers] } : {}),\n            ...(projection.allowlist.proxy ? { proxy: [...projection.allowlist.proxy] } : {}),\n          },\n        }\n      : {}),\n  };\n}\n"],"mappings":";;;;;;;;;;;AAYA,SAAgB,+BACd,YACA,MAAM,WAAW,UACC;CAClB,IAAI,UAAU,WAAW;CACzB,IAAI,WAAW,WAAW,QAAQ,WAAW,UAAU;EACrD,MAAM,aAAaA,UAAAA,QAAK,KAAK,KAAK,WAAW;EAC7C,IAAI;EACJ,IAAI;GACF,MAAM,UAAUC,QAAAA,QAAG,aAAa,UAAU;GAC1C,mBAAmB;IACjB,UAAU;IACV,OAAO;IACP,QAAQ;IACR;IACA,gBAAA,GAAeC,YAAAA,WAAAA,CAAW,QAAQ,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,OAAO,KAAK;GAClE;EACF,SAAS,OAAO;GACd,IAAK,MAAgC,SAAS,UAAU,MAAM;EAChE;EACA,UAAU,CACR,GAAG,WAAW,QAAQ,QAAQ,WAAW,OAAO,UAAU,YAAY,GACtE,GAAI,mBAAmB,CAAC,gBAAgB,IAAI,CAAC,CAC/C;CACF;CACA,OAAO;EACL,SAAS,WAAW;EACpB,UAAU;EACV,kBAAkB,WAAW;EAC7B,GAAI,QAAQ,WAAW,YAAY,WAAW,sBAC1C,EAAE,qBAAqB,WAAW,oBAAoB,IACtD,CAAC;EACL;EACA,GAAI,WAAW,YACX,EACE,WAAW;GACT,GAAI,WAAW,UAAU,UAAU,EAAE,SAAS,CAAC,GAAG,WAAW,UAAU,OAAO,EAAE,IAAI,CAAC;GACrF,GAAI,WAAW,UAAU,QAAQ,EAAE,OAAO,CAAC,GAAG,WAAW,UAAU,KAAK,EAAE,IAAI,CAAC;EACjF,EACF,IACA,CAAC;CACP;AACF"}