{"version":3,"sources":["/Users/Raffael.Prem/WebstormProjects/agentest/dist/chunk-3PSS35CG.cjs","../node_modules/tsup/assets/cjs_shims.js","../src/llm/provider.ts"],"names":[],"mappings":"AAAA;ACKA,IAAM,iBAAA,EAAmB,CAAA,EAAA,GACvB,OAAO,SAAA,IAAa,YAAA,EAChB,IAAI,GAAA,CAAI,CAAA,KAAA,EAAQ,UAAU,CAAA,CAAA;AAK8B;ADT4B;AACA;AEJf;AA2B5C;AAMhB;AACN,EAAA;AACL,IAAA;AAEiD,IAAA;AACX,MAAA;AAClC,QAAA;AACgB,QAAA;AAGD,QAAA;AACH,UAAA;AACG,UAAA;AACX,QAAA;AACsC,QAAA;AAC3C,MAAA;AAC0B,MAAA;AAC7B,IAAA;AAE6E,IAAA;AACvC,MAAA;AAClC,QAAA;AACgB,QAAA;AAGD,QAAA;AACH,UAAA;AACG,UAAA;AACX,QAAA;AAC4C,QAAA;AACN,QAAA;AAC3C,MAAA;AAC0B,MAAA;AACgD,QAAA;AAC3E,MAAA;AAC6C,MAAA;AAC/C,IAAA;AACF,EAAA;AACF;AAgBgC;AAMR;AACJ,EAAA;AACX,IAAA;AAC4C,MAAA;AAC5C,IAAA;AACyC,MAAA;AACzC,IAAA;AACyC,MAAA;AACzC,IAAA;AACwC,MAAA;AACZ,QAAA;AACZ,QAAA;AACG,QAAA;AACA,QAAA;AACrB,MAAA;AACE,IAAA;AACoB,MAAA;AACX,QAAA;AACR,UAAA;AACF,QAAA;AACF,MAAA;AAC2C,MAAA;AACxB,QAAA;AACD,QAAA;AACI,QAAA;AACD,QAAA;AACpB,MAAA;AACL,EAAA;AACF;AAKwB;AACmD,EAAA;AAC3C,EAAA;AAChC;AAKwB;AAC6C,EAAA;AACrC,EAAA;AAChC;AAKwB;AAC6C,EAAA;AACrC,EAAA;AAChC;AAUwB;AAC0C,EAAA;AAClC,EAAA;AAChC;AFxE0F;AACA;AACA;AACA;AACA;AACA","file":"/Users/Raffael.Prem/WebstormProjects/agentest/dist/chunk-3PSS35CG.cjs","sourcesContent":[null,"// Shim globals in cjs bundle\n// There's a weird bug that esbuild will always inject importMetaUrl\n// if we export it as `const importMetaUrl = ... __filename ...`\n// But using a function will not cause this issue\n\nconst getImportMetaUrl = () => \n  typeof document === \"undefined\" \n    ? new URL(`file:${__filename}`).href \n    : (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT') \n      ? document.currentScript.src \n      : new URL(\"main.js\", document.baseURI).href;\n\nexport const importMetaUrl = /* @__PURE__ */ getImportMetaUrl()\n","import { type LanguageModel, generateText as aiGenerateText, Output } from 'ai'\nimport { z } from 'zod'\n\nexport interface GenerateTextOptions {\n  system?: string\n  messages: Array<{ role: 'user' | 'assistant' | 'system'; content: string }>\n}\n\nexport interface GenerateObjectOptions<T extends z.ZodType> {\n  schema: T\n  system?: string\n  messages: Array<{ role: 'user' | 'assistant' | 'system'; content: string }>\n}\n\nexport interface LLMProvider {\n  readonly model: LanguageModel\n\n  generateText(options: GenerateTextOptions): Promise<{ text: string }>\n\n  generateObject<T extends z.ZodType>(\n    options: GenerateObjectOptions<T>,\n  ): Promise<{ object: z.infer<T> }>\n}\n\n/**\n * Creates an LLMProvider from any Vercel AI SDK LanguageModel instance.\n */\nconst DEFAULT_LLM_TIMEOUT_MS = 120_000\n\nexport function createLLMProvider(\n  model: LanguageModel,\n  label: string,\n  timeoutMs: number = DEFAULT_LLM_TIMEOUT_MS,\n): LLMProvider {\n  return {\n    model,\n\n    async generateText(options: GenerateTextOptions) {\n      const result = await aiGenerateText({\n        model,\n        system: options.system,\n        messages: options.messages\n          .filter((m) => m.role !== 'system')\n          .map((m) => ({\n            role: m.role as 'user' | 'assistant',\n            content: m.content,\n          })),\n        abortSignal: AbortSignal.timeout(timeoutMs),\n      })\n      return { text: result.text }\n    },\n\n    async generateObject<T extends z.ZodType>(options: GenerateObjectOptions<T>) {\n      const result = await aiGenerateText({\n        model,\n        system: options.system,\n        messages: options.messages\n          .filter((m) => m.role !== 'system')\n          .map((m) => ({\n            role: m.role as 'user' | 'assistant',\n            content: m.content,\n          })),\n        output: Output.object({ schema: options.schema }),\n        abortSignal: AbortSignal.timeout(timeoutMs),\n      })\n      if (result.output == null) {\n        throw new Error(`LLM did not return a valid structured output (${label})`)\n      }\n      return { object: result.output as z.infer<T> }\n    },\n  }\n}\n\nexport type ProviderName = 'openai' | 'anthropic' | 'google' | 'ollama' | 'openai-compatible'\n\nexport interface ProviderOptions {\n  baseURL?: string\n  apiKey?: string\n  timeoutMs?: number\n  /**\n   * Extra JSON fields merged into every request body. Currently honored by the\n   * `openai-compatible` and `ollama` providers. Useful for vendor-specific params\n   * like `{ chat_template_kwargs: { enable_thinking: false } }` (Qwen3).\n   */\n  extraBody?: Record<string, unknown>\n}\n\nconst DEFAULT_OLLAMA_BASE_URL = 'http://localhost:11434/v1'\n\nexport async function createProvider(\n  provider: ProviderName,\n  modelId: string,\n  options?: ProviderOptions,\n): Promise<LLMProvider> {\n  switch (provider) {\n    case 'anthropic':\n      return createAnthropicProvider(modelId, options)\n    case 'openai':\n      return createOpenAIProvider(modelId, options)\n    case 'google':\n      return createGoogleProvider(modelId, options)\n    case 'ollama':\n      return createOpenAICompatProvider(modelId, {\n        baseURL: options?.baseURL ?? DEFAULT_OLLAMA_BASE_URL,\n        apiKey: options?.apiKey,\n        timeoutMs: options?.timeoutMs,\n        extraBody: options?.extraBody,\n      })\n    case 'openai-compatible':\n      if (!options?.baseURL) {\n        throw new Error(\n          'providerOptions.baseURL is required when using the \"openai-compatible\" provider',\n        )\n      }\n      return createOpenAICompatProvider(modelId, {\n        baseURL: options.baseURL,\n        apiKey: options.apiKey,\n        timeoutMs: options?.timeoutMs,\n        extraBody: options.extraBody,\n      })\n  }\n}\n\nasync function createAnthropicProvider(\n  modelId: string,\n  options?: ProviderOptions,\n): Promise<LLMProvider> {\n  const { createAnthropicProvider: create } = await import('./anthropic.js')\n  return create(modelId, options)\n}\n\nasync function createOpenAIProvider(\n  modelId: string,\n  options?: ProviderOptions,\n): Promise<LLMProvider> {\n  const { createOpenAIProvider: create } = await import('./openai.js')\n  return create(modelId, options)\n}\n\nasync function createGoogleProvider(\n  modelId: string,\n  options?: ProviderOptions,\n): Promise<LLMProvider> {\n  const { createGoogleProvider: create } = await import('./google.js')\n  return create(modelId, options)\n}\n\nasync function createOpenAICompatProvider(\n  modelId: string,\n  options: {\n    baseURL: string\n    apiKey?: string\n    timeoutMs?: number\n    extraBody?: Record<string, unknown>\n  },\n): Promise<LLMProvider> {\n  const { createOpenAICompatibleProvider: create } = await import('./openai-compatible.js')\n  return create(modelId, options)\n}\n"]}