{"version":3,"file":"index.mjs","names":[],"sources":["../../../../../src/cli/commands/compat/providers/index.ts"],"sourcesContent":["import type { CompatibilityContext } from '../context';\nimport type { CompatibilityProvider } from '../types';\nimport { launchAntigravity } from './antigravity';\nimport { CODEX_PROVIDER, launchCodex } from './codex';\nimport { runInteractive } from './process';\nimport { additionalDirectoryArgs, SKIP_PERMISSIONS_OPTION } from './shared';\n\nexport { adaptAntigravityMcpDefinition, antigravityCompatibilityArgs, launchAntigravity } from './antigravity';\nexport {\n  codexCompatibilityArgs,\n  codexEnvironment,\n  codexPluginDirectories,\n  launchCodex,\n  supportsCodexManagedProfile,\n} from './codex';\nexport {\n  acquireDirectoryLock,\n  forwardSignals,\n  isFileSystemError,\n  lockOwnerIsRunning,\n  pathInside,\n  runCaptured,\n  runChecked,\n  runInteractive,\n  signalExitCode,\n  waitForExit,\n} from './process';\nexport { mcpProxyArguments } from './shared';\n\nconst CLAUDE_PROVIDER = 'claude';\n/** The DoomPi-side flag that asks for the bypass, quoted back in the warning. */\nconst SKIP_PERMISSIONS_REQUEST_OPTION = '--skip-permissions';\nconst PLUGIN_DIRECTORY_OPTION = '--plugin-dir';\nconst MCP_CONFIG_OPTION = '--mcp-config';\nconst STRICT_MCP_CONFIG_OPTION = '--strict-mcp-config';\nconst APPEND_SYSTEM_PROMPT_FILE_OPTION = '--append-system-prompt-file';\n\n/**\n * Claude needs no state sync: everything it reads is passed as an argument, so\n * a run leaves nothing behind to revert.\n */\nexport function claudeCompatibilityArgs(context: CompatibilityContext): string[] {\n  const args = context.options.skipPermissions ? [SKIP_PERMISSIONS_OPTION] : [];\n  for (const plugin of context.plugins) args.push(PLUGIN_DIRECTORY_OPTION, plugin.directory);\n  if (context.mcpAllowlist) args.push(MCP_CONFIG_OPTION, context.mcpConfigPath, STRICT_MCP_CONFIG_OPTION);\n  if (context.personaFile) args.push(APPEND_SYSTEM_PROMPT_FILE_OPTION, context.personaFile);\n  args.push(...additionalDirectoryArgs(context));\n  return [...args, ...context.options.providerArgs];\n}\n\n/**\n * One line on stderr, once per run, naming the frontend whose gate is off.\n *\n * The bypass is invisible in the child's own UI: the frontend simply stops\n * asking. Announcing it here is the only point where the user learns that the\n * absence of prompts was DoomPi's doing and not the frontend's default.\n */\nfunction warnPermissionsBypassed(provider: CompatibilityProvider): void {\n  process.stderr.write(\n    `[doompi] ${SKIP_PERMISSIONS_REQUEST_OPTION}: approval prompts are disabled for this ${provider} run.\\n`,\n  );\n}\n\nexport async function launchCompatibility(context: CompatibilityContext): Promise<number> {\n  const provider: CompatibilityProvider = context.options.provider;\n  if (context.options.skipPermissions) warnPermissionsBypassed(provider);\n  if (provider === CLAUDE_PROVIDER) {\n    return runInteractive(\n      CLAUDE_PROVIDER,\n      claudeCompatibilityArgs(context),\n      context.options.currentDirectory,\n      context.environment,\n    );\n  }\n  if (provider === CODEX_PROVIDER) return launchCodex(context);\n  return launchAntigravity(context);\n}\n"],"mappings":";;;;;AA6BA,MAAM,kBAAkB;;AAExB,MAAM,kCAAkC;AACxC,MAAM,0BAA0B;AAChC,MAAM,oBAAoB;AAC1B,MAAM,2BAA2B;AACjC,MAAM,mCAAmC;;;;;AAMzC,SAAgB,wBAAwB,SAAyC;CAC/E,MAAM,OAAO,QAAQ,QAAQ,kBAAkB,CAAC,uBAAuB,IAAI,CAAC;CAC5E,KAAK,MAAM,UAAU,QAAQ,SAAS,KAAK,KAAK,yBAAyB,OAAO,SAAS;CACzF,IAAI,QAAQ,cAAc,KAAK,KAAK,mBAAmB,QAAQ,eAAe,wBAAwB;CACtG,IAAI,QAAQ,aAAa,KAAK,KAAK,kCAAkC,QAAQ,WAAW;CACxF,KAAK,KAAK,GAAG,wBAAwB,OAAO,CAAC;CAC7C,OAAO,CAAC,GAAG,MAAM,GAAG,QAAQ,QAAQ,YAAY;AAClD;;;;;;;;AASA,SAAS,wBAAwB,UAAuC;CACtE,QAAQ,OAAO,MACb,YAAY,gCAAgC,2CAA2C,SAAS,QAClG;AACF;AAEA,eAAsB,oBAAoB,SAAgD;CACxF,MAAM,WAAkC,QAAQ,QAAQ;CACxD,IAAI,QAAQ,QAAQ,iBAAiB,wBAAwB,QAAQ;CACrE,IAAI,aAAa,iBACf,OAAO,eACL,iBACA,wBAAwB,OAAO,GAC/B,QAAQ,QAAQ,kBAChB,QAAQ,WACV;CAEF,IAAI,aAAA,SAA6B,OAAO,YAAY,OAAO;CAC3D,OAAO,kBAAkB,OAAO;AAClC"}