{"version":3,"file":"config.mjs","names":[],"sources":["../src/config.ts"],"sourcesContent":["import type { GatewayModelId } from \"ai\"\nimport * as z from \"zod\"\n\nimport { DEFAULT_PROMPT } from \"./ai\"\nimport type { ResolvedConfig } from \"./shared/types\"\n\nexport const DEFAULT_EXCLUDE_PATHS = [\n  \"pnpm-lock.yaml\",\n  \"package-lock.json\",\n  \"yarn.lock\",\n  \"**/*.snap\",\n  \"**/*.map\",\n  \"**/dist/**\",\n  \"**/build/**\",\n  \"**/coverage/**\",\n  \"**/*.min.*\",\n  \"**/*.lock\",\n]\n\nexport const DEFAULT_MODEL = \"openai/gpt-5.4-nano\" satisfies GatewayModelId\n\nconst nonEmptyStringSchema = z.string().trim().min(1)\nconst gatewayModelSchema = nonEmptyStringSchema.transform((value): GatewayModelId => value)\n\nconst pluginConfigSchema = z.object({\n  discordWebhookUrl: nonEmptyStringSchema.optional(),\n  slackWebhookUrl: nonEmptyStringSchema.optional(),\n  gatewayApiKey: nonEmptyStringSchema.optional(),\n  model: gatewayModelSchema.optional(),\n  prompt: nonEmptyStringSchema.optional(),\n  branches: z.array(z.string()).optional(),\n  includePaths: z.array(z.string()).optional(),\n  excludePaths: z.array(z.string()).optional(),\n  dryRun: z.boolean().optional(),\n})\n\nfunction readEnv(name: string) {\n  // oxlint-disable-next-line node/no-process-env -- this is the package's centralized environment fallback.\n  return process.env[name]?.trim() || undefined\n}\n\nexport function resolveConfig(pluginConfig: unknown): ResolvedConfig {\n  const parsed = pluginConfigSchema.parse(pluginConfig ?? {})\n  const discordWebhookUrl = parsed.discordWebhookUrl ?? readEnv(\"AI_CHANGELOG_DISCORD_WEBHOOK\")\n  const slackWebhookUrl = parsed.slackWebhookUrl ?? readEnv(\"AI_CHANGELOG_SLACK_WEBHOOK\")\n  const gatewayApiKey = parsed.gatewayApiKey ?? readEnv(\"AI_GATEWAY_API_KEY\")\n  const model = parsed.model ?? readEnv(\"AI_CHANGELOG_MODEL\") ?? DEFAULT_MODEL\n  const prompt = parsed.prompt ?? DEFAULT_PROMPT\n\n  if (!(discordWebhookUrl || slackWebhookUrl || parsed.dryRun)) {\n    throw new Error(\n      \"Missing notification webhook URL. Set discordWebhookUrl, slackWebhookUrl, \" +\n        \"AI_CHANGELOG_DISCORD_WEBHOOK, or AI_CHANGELOG_SLACK_WEBHOOK.\",\n    )\n  }\n\n  return {\n    discordWebhookUrl,\n    slackWebhookUrl,\n    gatewayApiKey,\n    model,\n    prompt,\n    branches: parsed.branches ?? [\"main\"],\n    includePaths: parsed.includePaths ?? [],\n    excludePaths: [...DEFAULT_EXCLUDE_PATHS, ...(parsed.excludePaths ?? [])],\n    dryRun: parsed.dryRun ?? false,\n  }\n}\n"],"mappings":";;;AAMA,MAAa,wBAAwB;CACnC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;AAEA,MAAa,gBAAgB;AAE7B,MAAM,uBAAuB,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;AACpD,MAAM,qBAAqB,qBAAqB,WAAW,UAA0B,KAAK;AAE1F,MAAM,qBAAqB,EAAE,OAAO;CAClC,mBAAmB,qBAAqB,SAAS;CACjD,iBAAiB,qBAAqB,SAAS;CAC/C,eAAe,qBAAqB,SAAS;CAC7C,OAAO,mBAAmB,SAAS;CACnC,QAAQ,qBAAqB,SAAS;CACtC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS;CACvC,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS;CAC3C,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS;CAC3C,QAAQ,EAAE,QAAQ,CAAC,CAAC,SAAS;AAC/B,CAAC;AAED,SAAS,QAAQ,MAAc;CAE7B,OAAO,QAAQ,IAAI,KAAK,EAAE,KAAK,KAAK,KAAA;AACtC;AAEA,SAAgB,cAAc,cAAuC;CACnE,MAAM,SAAS,mBAAmB,MAAM,gBAAgB,CAAC,CAAC;CAC1D,MAAM,oBAAoB,OAAO,qBAAqB,QAAQ,8BAA8B;CAC5F,MAAM,kBAAkB,OAAO,mBAAmB,QAAQ,4BAA4B;CACtF,MAAM,gBAAgB,OAAO,iBAAiB,QAAQ,oBAAoB;CAC1E,MAAM,QAAQ,OAAO,SAAS,QAAQ,oBAAoB,KAAA;CAC1D,MAAM,SAAS,OAAO,UAAA;CAEtB,IAAI,EAAE,qBAAqB,mBAAmB,OAAO,SACnD,MAAM,IAAI,MACR,wIAEF;CAGF,OAAO;EACL;EACA;EACA;EACA;EACA;EACA,UAAU,OAAO,YAAY,CAAC,MAAM;EACpC,cAAc,OAAO,gBAAgB,CAAC;EACtC,cAAc,CAAC,GAAG,uBAAuB,GAAI,OAAO,gBAAgB,CAAC,CAAE;EACvE,QAAQ,OAAO,UAAU;CAC3B;AACF"}