{"version":3,"file":"options.mjs","names":[],"sources":["../../../../src/cli/commands/compat/options.ts"],"sourcesContent":["import { defaultDomainsForMajorMode } from '@agimon-ai/doompi-config/domains';\n\nimport {\n  DOMAIN_OPTION,\n  DOMAINS_OPTION,\n  MAJOR_MODE_OPTION,\n  matchesOption,\n  PROFILE_OPTION,\n  parseMajorMode,\n  parseProfileValue,\n  parseRequiredCsv,\n  REMOVED_LAYER_OPTION,\n  REMOVED_LAYERS_OPTION,\n  REMOVED_TARGET_OPTION,\n  readOption,\n  resolveAdditionalDirectories,\n  resolveInheritedMajorMode,\n  resolveInheritedProfile,\n} from '../../matrixOptions';\nimport type { CompatibilityProvider, ParsedCompatibilityArgs } from './types';\n\nconst COMPATIBILITY_PROVIDERS = new Set<CompatibilityProvider>(['antigravity', 'claude', 'codex']);\n\n/** Whether a token names a provider, without throwing the way parsing does. */\nexport function isCompatibilityProvider(value: string | undefined): value is CompatibilityProvider {\n  return value !== undefined && COMPATIBILITY_PROVIDERS.has(value as CompatibilityProvider);\n}\nconst PROVIDER_ARGUMENT_SEPARATOR = '--';\nconst SKIP_PERMISSIONS_OPTION = '--skip-permissions';\n\nexport function parseCompatibilityProvider(value: string | undefined): CompatibilityProvider {\n  if (!value || !COMPATIBILITY_PROVIDERS.has(value as CompatibilityProvider)) {\n    throw new Error(`compat requires one of: ${[...COMPATIBILITY_PROVIDERS].join(', ')}`);\n  }\n  return value as CompatibilityProvider;\n}\n\n/**\n * Parses only the matrix options shared by every frontend.\n *\n * Every other argument remains untouched for the selected provider. In\n * particular, Pi aliases such as --effort and --output-format are not rewritten.\n * Use -- to pass a provider-native --profile, --domain, or --major-mode option.\n */\nexport function parseCompatibilityArgs(\n  args: string[],\n  environment: NodeJS.ProcessEnv = process.env,\n  currentDirectory = process.cwd(),\n  defaultMajorMode?: string,\n  defaultDomains?: readonly string[],\n): ParsedCompatibilityArgs {\n  let profile = resolveInheritedProfile(environment);\n  let profileProvided = false;\n  let majorMode = resolveInheritedMajorMode(environment, defaultMajorMode);\n  let majorModeProvided = false;\n  const domains: string[] = [];\n  const providerArgs: string[] = [];\n  let skipPermissions = false;\n\n  for (let index = 0; index < args.length; index += 1) {\n    const arg = args[index]!;\n    if (arg === PROVIDER_ARGUMENT_SEPARATOR) {\n      providerArgs.push(...args.slice(index + 1));\n      break;\n    }\n    if (matchesOption(arg, REMOVED_TARGET_OPTION)) {\n      throw new Error(`${REMOVED_TARGET_OPTION} was replaced by ${MAJOR_MODE_OPTION}`);\n    }\n    if (matchesOption(arg, REMOVED_LAYER_OPTION)) {\n      throw new Error(`${REMOVED_LAYER_OPTION} was replaced by ${MAJOR_MODE_OPTION}`);\n    }\n    if (matchesOption(arg, REMOVED_LAYERS_OPTION)) {\n      throw new Error(`${REMOVED_LAYERS_OPTION} was removed; select one major mode with ${MAJOR_MODE_OPTION}`);\n    }\n\n    if (matchesOption(arg, SKIP_PERMISSIONS_OPTION)) {\n      if (arg !== SKIP_PERMISSIONS_OPTION) throw new Error(`${SKIP_PERMISSIONS_OPTION} does not take a value`);\n      skipPermissions = true;\n      continue;\n    }\n\n    const majorModeMatch = readOption(args, index, MAJOR_MODE_OPTION);\n    if (majorModeMatch) {\n      if (majorModeProvided) throw new Error(`${MAJOR_MODE_OPTION} can only be provided once`);\n      majorMode = parseMajorMode(majorModeMatch.value, MAJOR_MODE_OPTION);\n      majorModeProvided = true;\n      index = majorModeMatch.nextIndex;\n      continue;\n    }\n\n    const profileMatch = readOption(args, index, PROFILE_OPTION);\n    if (profileMatch) {\n      if (profileProvided) throw new Error(`${PROFILE_OPTION} can only be provided once`);\n      profile = parseProfileValue(profileMatch.value, PROFILE_OPTION);\n      profileProvided = true;\n      index = profileMatch.nextIndex;\n      continue;\n    }\n\n    const domainMatch = readOption(args, index, DOMAINS_OPTION) ?? readOption(args, index, DOMAIN_OPTION);\n    if (domainMatch) {\n      domains.push(\n        ...parseRequiredCsv(domainMatch.value, matchesOption(arg, DOMAINS_OPTION) ? DOMAINS_OPTION : DOMAIN_OPTION),\n      );\n      index = domainMatch.nextIndex;\n      continue;\n    }\n\n    providerArgs.push(arg);\n  }\n\n  if (domains.length === 0) domains.push(...defaultDomainsForMajorMode(majorMode, environment, defaultDomains));\n\n  return {\n    options: {\n      currentDirectory,\n      profile,\n      domains,\n      majorMode,\n      providerArgs,\n      additionalDirectories: [...new Set(resolveAdditionalDirectories(environment, currentDirectory))],\n      skipPermissions,\n    },\n  };\n}\n"],"mappings":";;;AAqBA,MAAM,0CAA0B,IAAI,IAA2B;CAAC;CAAe;CAAU;AAAO,CAAC;;AAGjG,SAAgB,wBAAwB,OAA2D;CACjG,OAAO,UAAU,KAAA,KAAa,wBAAwB,IAAI,KAA8B;AAC1F;AACA,MAAM,8BAA8B;AACpC,MAAM,0BAA0B;AAEhC,SAAgB,2BAA2B,OAAkD;CAC3F,IAAI,CAAC,SAAS,CAAC,wBAAwB,IAAI,KAA8B,GACvE,MAAM,IAAI,MAAM,2BAA2B,CAAC,GAAG,uBAAuB,CAAC,CAAC,KAAK,IAAI,GAAG;CAEtF,OAAO;AACT;;;;;;;;AASA,SAAgB,uBACd,MACA,cAAiC,QAAQ,KACzC,mBAAmB,QAAQ,IAAI,GAC/B,kBACA,gBACyB;CACzB,IAAI,UAAU,wBAAwB,WAAW;CACjD,IAAI,kBAAkB;CACtB,IAAI,YAAY,0BAA0B,aAAa,gBAAgB;CACvE,IAAI,oBAAoB;CACxB,MAAM,UAAoB,CAAC;CAC3B,MAAM,eAAyB,CAAC;CAChC,IAAI,kBAAkB;CAEtB,KAAK,IAAI,QAAQ,GAAG,QAAQ,KAAK,QAAQ,SAAS,GAAG;EACnD,MAAM,MAAM,KAAK;EACjB,IAAI,QAAQ,6BAA6B;GACvC,aAAa,KAAK,GAAG,KAAK,MAAM,QAAQ,CAAC,CAAC;GAC1C;EACF;EACA,IAAI,cAAc,KAAA,UAA0B,GAC1C,MAAM,IAAI,MAAM,GAAG,sBAAsB,mBAAmB,mBAAmB;EAEjF,IAAI,cAAc,KAAA,SAAyB,GACzC,MAAM,IAAI,MAAM,GAAG,qBAAqB,mBAAmB,mBAAmB;EAEhF,IAAI,cAAc,KAAA,UAA0B,GAC1C,MAAM,IAAI,MAAM,GAAG,sBAAsB,2CAA2C,mBAAmB;EAGzG,IAAI,cAAc,KAAK,uBAAuB,GAAG;GAC/C,IAAI,QAAQ,yBAAyB,MAAM,IAAI,MAAM,GAAG,wBAAwB,uBAAuB;GACvG,kBAAkB;GAClB;EACF;EAEA,MAAM,iBAAiB,WAAW,MAAM,OAAO,iBAAiB;EAChE,IAAI,gBAAgB;GAClB,IAAI,mBAAmB,MAAM,IAAI,MAAM,GAAG,kBAAkB,2BAA2B;GACvF,YAAY,eAAe,eAAe,OAAO,iBAAiB;GAClE,oBAAoB;GACpB,QAAQ,eAAe;GACvB;EACF;EAEA,MAAM,eAAe,WAAW,MAAM,OAAO,cAAc;EAC3D,IAAI,cAAc;GAChB,IAAI,iBAAiB,MAAM,IAAI,MAAM,GAAG,eAAe,2BAA2B;GAClF,UAAU,kBAAkB,aAAa,OAAO,cAAc;GAC9D,kBAAkB;GAClB,QAAQ,aAAa;GACrB;EACF;EAEA,MAAM,cAAc,WAAW,MAAM,OAAA,WAAqB,KAAK,WAAW,MAAM,OAAA,UAAoB;EACpG,IAAI,aAAa;GACf,QAAQ,KACN,GAAG,iBAAiB,YAAY,OAAO,cAAc,KAAA,WAAmB,IAAI,iBAAiB,aAAa,CAC5G;GACA,QAAQ,YAAY;GACpB;EACF;EAEA,aAAa,KAAK,GAAG;CACvB;CAEA,IAAI,QAAQ,WAAW,GAAG,QAAQ,KAAK,GAAG,2BAA2B,WAAW,aAAa,cAAc,CAAC;CAE5G,OAAO,EACL,SAAS;EACP;EACA;EACA;EACA;EACA;EACA,uBAAuB,CAAC,GAAG,IAAI,IAAI,6BAA6B,aAAa,gBAAgB,CAAC,CAAC;EAC/F;CACF,EACF;AACF"}