{"version":3,"sources":["/home/mkabumattar/work/withrawi/rawi/dist/chunk-KE7P5FK7.cjs","../src/libs/providers/ollama/convert-to-ollama-chat-messages.ts"],"names":["convertToOllamaChatMessages","prompt","messages","content","role","previous","current","UnsupportedFunctionalityError","convertUint8ArrayToBase64","text","toolCalls","part","contentText","item","_exhaustiveCheck"],"mappings":"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","file":"/home/mkabumattar/work/withrawi/rawi/dist/chunk-KE7P5FK7.cjs","sourcesContent":[null,"import {\n  type LanguageModelV2Prompt,\n  UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {convertUint8ArrayToBase64} from '@ai-sdk/provider-utils';\n\nimport type {OllamaChatPrompt} from './ollama-chat-prompt.js';\n\nexport function convertToOllamaChatMessages(\n  prompt: LanguageModelV2Prompt,\n): OllamaChatPrompt {\n  const messages: OllamaChatPrompt = [];\n\n  for (const {content, role} of prompt) {\n    switch (role) {\n      case 'system': {\n        messages.push({content, role: 'system'});\n        break;\n      }\n\n      case 'user': {\n        messages.push({\n          ...content.reduce<{content: string; images?: string[]}>(\n            (previous, current) => {\n              if (current.type === 'text') {\n                previous.content += current.text;\n              } else if (\n                current.type === 'file' &&\n                current.mediaType.startsWith('image/') &&\n                current.data instanceof URL\n              ) {\n                throw new UnsupportedFunctionalityError({\n                  functionality: 'Image URLs in user messages',\n                });\n              } else if (\n                current.type === 'file' &&\n                current.mediaType.startsWith('image/') &&\n                typeof current.data === 'string'\n              ) {\n                previous.images = previous.images || [];\n                previous.images.push(current.data);\n              } else if (\n                current.type === 'file' &&\n                current.mediaType.startsWith('image/') &&\n                current.data instanceof Uint8Array\n              ) {\n                previous.images = previous.images || [];\n                previous.images.push(convertUint8ArrayToBase64(current.data));\n              }\n\n              return previous;\n            },\n            {content: ''},\n          ),\n          role: 'user',\n        });\n        break;\n      }\n\n      case 'assistant': {\n        const text: Array<string> = [];\n        const toolCalls: Array<{\n          function: {arguments: object; name: string};\n          id: string;\n          type: 'function';\n        }> = [];\n\n        for (const part of content) {\n          switch (part.type) {\n            case 'text': {\n              text.push(part.text);\n              break;\n            }\n            case 'tool-call': {\n              toolCalls.push({\n                function: {\n                  arguments: part.input as object,\n                  name: part.toolName,\n                },\n                id: part.toolCallId,\n                type: 'function',\n              });\n              break;\n            }\n            case 'tool-result': {\n              if (\n                part.output.type === 'text' ||\n                part.output.type === 'error-text'\n              ) {\n                text.push(part.output.value);\n              } else if (\n                part.output.type === 'json' ||\n                part.output.type === 'error-json'\n              ) {\n                text.push(JSON.stringify(part.output.value));\n              } else if (part.output.type === 'content') {\n                const contentText = part.output.value\n                  .map((item) => (item.type === 'text' ? item.text : '[media]'))\n                  .join('');\n                text.push(contentText);\n              }\n              break;\n            }\n            case 'file':\n            case 'reasoning': {\n              break;\n            }\n            default: {\n              const _exhaustiveCheck: never = part;\n              throw new Error(`Unsupported part: ${_exhaustiveCheck}`);\n            }\n          }\n        }\n\n        messages.push({\n          content: text.join(','),\n          role: 'assistant',\n          tool_calls: toolCalls.length > 0 ? toolCalls : undefined,\n        });\n\n        break;\n      }\n\n      case 'tool': {\n        messages.push(\n          ...content.map((part) => {\n            let contentValue: string;\n\n            if (\n              part.output.type === 'text' ||\n              part.output.type === 'error-text'\n            ) {\n              contentValue = part.output.value;\n            } else if (\n              part.output.type === 'json' ||\n              part.output.type === 'error-json'\n            ) {\n              contentValue = JSON.stringify(part.output.value);\n            } else if (part.output.type === 'content') {\n              contentValue = part.output.value\n                .map((item) => (item.type === 'text' ? item.text : '[media]'))\n                .join('');\n            } else {\n              contentValue = String(part.output);\n            }\n\n            return {\n              content: contentValue,\n              role: 'tool' as const,\n              tool_call_id: part.toolCallId,\n            };\n          }),\n        );\n        break;\n      }\n\n      default: {\n        const _exhaustiveCheck: string = role;\n        throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n      }\n    }\n  }\n\n  return messages;\n}\n"]}