{"version":3,"file":"options.mjs","names":[],"sources":["../../src/cli/options.ts"],"sourcesContent":["import path from 'node:path';\n\nimport { defaultDomainsForMajorMode } from '@agimon-ai/doompi-config/domains';\n\nimport type { HarnessOutputFormat, HarnessPreset, ParsedHarnessArgs } from '../composition/types/harness';\nimport {\n  ADD_DIRECTORY_OPTION,\n  DEFAULT_MAJOR_MODE,\n  DOMAIN_OPTION,\n  DOMAINS_OPTION,\n  DOOMPI_PRESET_ENV,\n  MAJOR_MODE_OPTION,\n  matchesOption,\n  PROFILE_OPTION,\n  parseCsv,\n  parseMajorMode,\n  parseProfileValue,\n  REMOVED_LAYER_OPTION,\n  REMOVED_LAYERS_OPTION,\n  REMOVED_TARGET_OPTION,\n  readOption,\n  resolveAdditionalDirectories,\n  resolveInheritedMajorMode,\n  resolveInheritedProfile,\n} from './matrixOptions';\n\nconst KIMI_FOR_CODING = 'kimi-for-coding';\nconst KIMI_FOR_CODING_HIGHSPEED = 'kimi-for-coding-highspeed';\nconst KIMI_K2_6 = 'kimi-k2.6';\nconst DEFAULT_PRESET = 'default';\nconst KIMI_PRESET = 'kimi';\nconst OLLAMA_PRESET = 'ollama';\nconst OLLAMA_PREFIX = 'ollama/';\nconst KIMI_CODING_PREFIX = 'kimi-coding/';\nconst CLOUD_SUFFIX = ':cloud';\nconst NATIVE_FORMAT = 'native';\nconst KIMI_CODE_MODEL_ENV = 'KIMI_CODE_MODEL';\nconst OLLAMA_CLAUDE_MODEL_ENV = 'OLLAMA_CLAUDE_MODEL';\nconst MODEL_OPTION = '--model';\nconst MODEL_SHORT_OPTION = '-m';\nconst MODE_OPTION = '--mode';\nconst THINKING_OPTION = '--thinking';\nconst PRINT_OPTION = '--print';\nconst PRINT_SHORT_OPTION = '-p';\nconst APPROVE_OPTION = '--approve';\nconst APPROVE_SHORT_OPTION = '-a';\nconst PROFILES_OPTION = '--profiles';\nconst NO_DOMAINS_OPTION = '--no-domains';\nconst PRESET_OPTION = '--preset';\nconst EFFORT_OPTION = '--effort';\nconst OUTPUT_FORMAT_OPTION = '--output-format';\nconst MUTE_OPTION = '--mute';\nconst VIBE_LINT_FORMAT = 'vibe-lint';\nconst STREAM_JSON_FORMAT = 'stream-json';\nconst JSON_FORMAT = 'json';\nconst EXPLAIN_OPTION = '--explain';\nconst EMIT_MCP_OPTION = '--emit-mcp';\nconst PLUGIN_DIRECTORY_OPTION = '--plugin-dir';\nconst CWD_OPTION = '--cwd';\nconst CD_OPTION = '--cd';\nconst AUTOMATION_OPTION = '--automation';\nconst AUTO_STOP_OPTION = '--auto-stop';\nconst SANDBOX_OPTION = '--sandbox';\nconst ALLOW_PROTECTED_WRITES_OPTION = '--allow-protected-writes';\nconst HOOKS_OPTION = '--hooks';\nconst MCP_OPTION = '--mcp';\nconst AGENTS_OPTION = '--agents';\nconst NO_HOOKS_OPTION = '--no-hooks';\nconst NO_MCP_OPTION = '--no-mcp';\nconst NO_AGENTS_OPTION = '--no-agents';\nconst VERBOSE_OPTION = '--verbose';\nconst DANGEROUSLY_SKIP_PERMISSIONS_OPTION = '--dangerously-skip-permissions';\nconst HELP_OPTION = '--help';\nconst HELP_SHORT_OPTION = '-h';\nconst VERSION_OPTION = '--version';\nconst VERSION_SHORT_OPTION = '-v';\n\nconst KIMI_ALIASES = new Map([\n  ['k2p5', KIMI_FOR_CODING],\n  ['k2p6', KIMI_FOR_CODING],\n  ['k2p7', KIMI_FOR_CODING],\n  ['kimi-k2.5', KIMI_FOR_CODING],\n  [KIMI_K2_6, KIMI_FOR_CODING],\n  ['kimi-k2.7-code', KIMI_FOR_CODING],\n  [KIMI_FOR_CODING, KIMI_FOR_CODING],\n  [KIMI_FOR_CODING_HIGHSPEED, KIMI_FOR_CODING_HIGHSPEED],\n]);\n\nfunction parsePreset(value: string): HarnessPreset {\n  if (value === DEFAULT_PRESET || value === KIMI_PRESET || value === OLLAMA_PRESET) return value;\n  throw new Error(`Unsupported preset: ${value}`);\n}\n\nfunction hasOption(args: string[], ...names: string[]): boolean {\n  return args.some((arg) => names.includes(arg) || names.some((name) => arg.startsWith(`${name}=`)));\n}\n\nfunction modelValue(args: string[]): { index: number; value: string; inline: boolean } | undefined {\n  for (let index = 0; index < args.length; index += 1) {\n    if (args[index] === MODEL_OPTION || args[index] === MODEL_SHORT_OPTION) {\n      const value = args[index + 1];\n      if (value) return { index, value, inline: false };\n    }\n    if (args[index]?.startsWith(`${MODEL_OPTION}=`)) {\n      return { index, value: args[index].slice(`${MODEL_OPTION}=`.length), inline: true };\n    }\n  }\n  return undefined;\n}\n\nfunction replaceModel(args: string[], value: string): void {\n  const selected = modelValue(args);\n  if (!selected) {\n    args.unshift(MODEL_OPTION, value);\n  } else if (selected.inline) {\n    args[selected.index] = `${MODEL_OPTION}=${value}`;\n  } else {\n    args[selected.index + 1] = value;\n  }\n}\n\nfunction normalizeProviderArgs(preset: HarnessPreset, piArgs: string[], environment: NodeJS.ProcessEnv): void {\n  const selected = modelValue(piArgs);\n  if (preset === KIMI_PRESET) {\n    const value = selected?.value ?? environment[KIMI_CODE_MODEL_ENV] ?? KIMI_FOR_CODING;\n    const unqualified = value.includes('/') ? value.slice(value.indexOf('/') + 1) : value;\n    replaceModel(piArgs, `${KIMI_CODING_PREFIX}${KIMI_ALIASES.get(unqualified) ?? unqualified}`);\n  }\n  if (preset === OLLAMA_PRESET) {\n    const value = selected?.value ?? environment[OLLAMA_CLAUDE_MODEL_ENV] ?? KIMI_K2_6;\n    const unqualified = value.startsWith(OLLAMA_PREFIX) ? value.slice(OLLAMA_PREFIX.length) : value;\n    replaceModel(\n      piArgs,\n      `${OLLAMA_PREFIX}${unqualified.includes(':') ? unqualified : `${unqualified}${CLOUD_SUFFIX}`}`,\n    );\n  }\n}\n\n/**\n * Answers `--help` and `--version` without reading the environment.\n *\n * The caller only looks at `help` and `version` for these, and never launches,\n * so the options carry defaults rather than a resolved matrix. This exists so a\n * stale export cannot break the one command that explains how to fix it.\n */\nfunction parseInformationalArgs(args: string[], currentDirectory: string): ParsedHarnessArgs | undefined {\n  const help = args.some((arg) => arg === HELP_OPTION || arg === HELP_SHORT_OPTION);\n  const version = args.some((arg) => arg === VERSION_OPTION || arg === VERSION_SHORT_OPTION);\n  if (!help && !version) return undefined;\n  return {\n    options: {\n      cwd: currentDirectory,\n      profile: undefined,\n      domains: [],\n      majorMode: DEFAULT_MAJOR_MODE,\n      explain: false,\n      emitMcp: undefined,\n      pluginDirectories: [],\n      additionalDirectories: [],\n      preset: DEFAULT_PRESET,\n      outputFormat: NATIVE_FORMAT,\n      mute: false,\n      automation: false,\n      autoStop: false,\n      sandbox: false,\n      allowProtectedWrites: false,\n      hooks: true,\n      mcp: true,\n      agents: true,\n      piArgs: [],\n    },\n    help,\n    version,\n  };\n}\n\nexport function parseHarnessArgs(\n  args: string[],\n  environment: NodeJS.ProcessEnv = process.env,\n  currentDirectory = process.cwd(),\n  defaultMajorMode: string = DEFAULT_MAJOR_MODE,\n  defaultDomains?: readonly string[],\n  defaultProfile?: string,\n): ParsedHarnessArgs {\n  const informational = parseInformationalArgs(args, currentDirectory);\n  if (informational) return informational;\n\n  // An inherited profile wins: a nested run stays on the persona its parent\n  // chose rather than snapping back to the repository default.\n  let profile = resolveInheritedProfile(environment) ?? defaultProfile;\n  let profileProvided = false;\n  let majorMode = resolveInheritedMajorMode(environment, defaultMajorMode);\n  let majorModeProvided = false;\n  const domains: string[] = [];\n  // Directory options are collected verbatim and resolved once after the loop,\n  // so a relative path means the same thing regardless of where --cwd appears\n  // in the argument list.\n  const pluginDirectoryValues: string[] = [];\n  const additionalDirectoryValues: string[] = [];\n  const piArgs: string[] = [];\n  let cwd = currentDirectory;\n  let preset = parsePreset(environment[DOOMPI_PRESET_ENV] ?? DEFAULT_PRESET);\n  let outputFormat: HarnessOutputFormat = NATIVE_FORMAT;\n  let domainsDisabled = false;\n  let mute = false;\n  let automation = false;\n  let autoStop = false;\n  let sandbox = false;\n  let allowProtectedWrites = false;\n  let hooks = true;\n  let mcp = true;\n  let agents = true;\n  let help = false;\n  let version = false;\n  let explain = false;\n  let emitMcp: string | undefined;\n\n  for (let index = 0; index < args.length; index += 1) {\n    const arg = args[index]!;\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    if (matchesOption(arg, PROFILES_OPTION)) {\n      throw new Error(`${PROFILES_OPTION} was replaced by ${DOMAINS_OPTION}`);\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(...parseCsv(domainMatch.value));\n      index = domainMatch.nextIndex;\n      continue;\n    }\n\n    const emitMcpMatch = readOption(args, index, EMIT_MCP_OPTION);\n    if (emitMcpMatch) {\n      emitMcp = path.resolve(currentDirectory, emitMcpMatch.value);\n      index = emitMcpMatch.nextIndex;\n      continue;\n    }\n\n    const pluginDirectoryMatch = readOption(args, index, PLUGIN_DIRECTORY_OPTION);\n    if (pluginDirectoryMatch) {\n      pluginDirectoryValues.push(pluginDirectoryMatch.value);\n      index = pluginDirectoryMatch.nextIndex;\n      continue;\n    }\n\n    const addDirectoryMatch = readOption(args, index, ADD_DIRECTORY_OPTION);\n    if (addDirectoryMatch) {\n      additionalDirectoryValues.push(addDirectoryMatch.value);\n      index = addDirectoryMatch.nextIndex;\n      continue;\n    }\n\n    const presetMatch = readOption(args, index, PRESET_OPTION);\n    if (presetMatch) {\n      preset = parsePreset(presetMatch.value);\n      index = presetMatch.nextIndex;\n      continue;\n    }\n\n    const cwdMatch = readOption(args, index, CWD_OPTION) ?? readOption(args, index, CD_OPTION);\n    if (cwdMatch) {\n      cwd = path.resolve(currentDirectory, cwdMatch.value);\n      index = cwdMatch.nextIndex;\n      continue;\n    }\n\n    const effortMatch = readOption(args, index, EFFORT_OPTION);\n    if (effortMatch) {\n      if (effortMatch.inline) piArgs.push(`${THINKING_OPTION}=${effortMatch.value}`);\n      else piArgs.push(THINKING_OPTION, effortMatch.value);\n      index = effortMatch.nextIndex;\n      continue;\n    }\n\n    const outputFormatMatch = readOption(args, index, OUTPUT_FORMAT_OPTION);\n    if (outputFormatMatch) {\n      const requested = outputFormatMatch.value;\n      if (requested === VIBE_LINT_FORMAT) {\n        outputFormat = VIBE_LINT_FORMAT;\n      } else {\n        const mode = requested === STREAM_JSON_FORMAT ? JSON_FORMAT : requested;\n        if (outputFormatMatch.inline) piArgs.push(`${MODE_OPTION}=${mode}`);\n        else piArgs.push(MODE_OPTION, mode);\n      }\n      index = outputFormatMatch.nextIndex;\n      continue;\n    }\n\n    if (arg === NO_DOMAINS_OPTION) domainsDisabled = true;\n    else if (arg === EXPLAIN_OPTION) explain = true;\n    else if (arg === AUTOMATION_OPTION) automation = true;\n    else if (arg === MUTE_OPTION) mute = true;\n    else if (arg === AUTO_STOP_OPTION) autoStop = true;\n    else if (arg === SANDBOX_OPTION) sandbox = true;\n    else if (arg === ALLOW_PROTECTED_WRITES_OPTION) allowProtectedWrites = true;\n    else if (arg === HOOKS_OPTION) hooks = true;\n    else if (arg === MCP_OPTION) mcp = true;\n    else if (arg === AGENTS_OPTION) agents = true;\n    else if (arg === NO_HOOKS_OPTION) hooks = false;\n    else if (arg === NO_MCP_OPTION) mcp = false;\n    else if (arg === NO_AGENTS_OPTION) agents = false;\n    else if (arg === HELP_OPTION || arg === HELP_SHORT_OPTION) help = true;\n    else if (arg === VERSION_OPTION || arg === VERSION_SHORT_OPTION) version = true;\n    // Accepted for Claude Code compatibility and deliberately not forwarded.\n    else if (arg !== VERBOSE_OPTION && arg !== DANGEROUSLY_SKIP_PERMISSIONS_OPTION) piArgs.push(arg);\n  }\n\n  if (domainsDisabled && domains.length > 0) {\n    throw new Error(`${NO_DOMAINS_OPTION} cannot be combined with ${DOMAINS_OPTION}`);\n  }\n  if (!domainsDisabled && domains.length === 0 && pluginDirectoryValues.length === 0) {\n    domains.push(...defaultDomainsForMajorMode(majorMode, environment, defaultDomains));\n  }\n  if (automation) {\n    if (!hasOption(piArgs, PRINT_OPTION, PRINT_SHORT_OPTION)) piArgs.unshift(PRINT_OPTION);\n    if (!hasOption(piArgs, MODE_OPTION)) piArgs.unshift(MODE_OPTION, JSON_FORMAT);\n    if (!hasOption(piArgs, APPROVE_OPTION, APPROVE_SHORT_OPTION)) piArgs.unshift(APPROVE_OPTION);\n  }\n  if (\n    autoStop &&\n    (automation ||\n      outputFormat === VIBE_LINT_FORMAT ||\n      hasOption(piArgs, PRINT_OPTION, PRINT_SHORT_OPTION, MODE_OPTION))\n  ) {\n    throw new Error(`${AUTO_STOP_OPTION} only supports interactive Pi mode`);\n  }\n  normalizeProviderArgs(preset, piArgs, environment);\n\n  return {\n    options: {\n      cwd,\n      profile,\n      domains,\n      majorMode,\n      explain,\n      emitMcp,\n      pluginDirectories: pluginDirectoryValues.map((value) => path.resolve(currentDirectory, value)),\n      additionalDirectories: [\n        ...new Set([\n          ...resolveAdditionalDirectories(environment, currentDirectory),\n          ...additionalDirectoryValues.map((value) => path.resolve(currentDirectory, value)),\n        ]),\n      ],\n      preset,\n      outputFormat,\n      mute,\n      automation,\n      autoStop,\n      sandbox,\n      allowProtectedWrites,\n      hooks,\n      mcp,\n      agents,\n      piArgs,\n    },\n    help,\n    version,\n  };\n}\n"],"mappings":"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"}