{"version":3,"sources":["../../../../src/adapters/groq/backend/chat.ts"],"names":["GroqChatModel","VercelChatModel","modelId","getEnv","parameters","client","model","GroqClient","ensure","instance","languageModel","Object","assign","register","_createStream","input","run","chunk","error","handleError","_create","catch","e","matchedErrorMessages","cause","ChatModelError","getCause","responseBodyRaw","APICallError","isInstance","responseBody","isPlainObject","JSON","stringify","undefined","some","message","includes","parseBrokenJson","pair","tools","map","t","name","join","ChatModelToolCallError","String","generatedContent","failed_generation","generatedError"],"mappings":"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","file":"chat.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { VercelChatModel } from \"@/adapters/vercel/backend/chat.js\";\nimport { GroqClient, GroqClientSettings } from \"@/adapters/groq/backend/client.js\";\nimport { getEnv } from \"@/internals/env.js\";\nimport { GroqProvider } from \"@ai-sdk/groq\";\nimport { ChatModelInput, ChatModelParameters } from \"@/backend/chat.js\";\nimport type { GetRunContext } from \"@/context.js\";\nimport { APICallError } from \"ai\";\nimport { ChatModelError, ChatModelToolCallError } from \"@/backend/errors.js\";\nimport { parseBrokenJson } from \"@/internals/helpers/schema.js\";\nimport { isPlainObject } from \"remeda\";\n\ntype GroqParameters = Parameters<GroqProvider[\"languageModel\"]>;\nexport type GroqChatModelId = NonNullable<GroqParameters[0]>;\n\nexport class GroqChatModel extends VercelChatModel {\n  constructor(\n    modelId: GroqChatModelId = getEnv(\"GROQ_CHAT_MODEL\", \"openai/gpt-oss-20b\"),\n    parameters: ChatModelParameters = {},\n    client?: GroqClientSettings | GroqClient,\n  ) {\n    const model = GroqClient.ensure(client).instance.languageModel(modelId);\n    super(model);\n    Object.assign(this.parameters, parameters ?? {});\n  }\n\n  static {\n    this.register();\n  }\n\n  async *_createStream(input: ChatModelInput, run: GetRunContext<this>) {\n    try {\n      for await (const chunk of super._createStream(input, run)) {\n        yield chunk;\n      }\n    } catch (error) {\n      this.handleError(input, error);\n    }\n  }\n\n  protected async _create(input: ChatModelInput, run: GetRunContext<this>) {\n    return await super._create(input, run).catch((e) => this.handleError(input, e));\n  }\n\n  protected handleError(input: ChatModelInput, error: Error): never {\n    const matchedErrorMessages = [\n      \"model did not call a tool\",\n      \"tool call validation failed\",\n      \"tool choice is required\",\n      \"Parsing failed\",\n    ];\n\n    const cause: Error | Record<string, any> =\n      error instanceof ChatModelError ? error.getCause() : error;\n    const responseBodyRaw = APICallError.isInstance(cause)\n      ? cause.responseBody\n      : isPlainObject(cause)\n        ? JSON.stringify(cause)\n        : undefined;\n\n    if (\n      responseBodyRaw &&\n      matchedErrorMessages.some((message) => responseBodyRaw.includes(message))\n    ) {\n      const responseBody = parseBrokenJson(responseBodyRaw, { pair: [\"{\", \"}\"] });\n      if (!responseBody) {\n        throw cause;\n      }\n\n      const tools = (input.tools || []).map((t) => t.name).join(\", \");\n      throw new ChatModelToolCallError(\n        responseBody?.error?.message || responseBody?.message || String(responseBody),\n        [],\n        {\n          generatedContent: responseBody?.error?.failed_generation || \"empty\",\n          generatedError: `Invalid response. Use one of the following tools: ${tools}. `,\n        },\n      );\n    }\n    throw cause;\n  }\n}\n"]}