{"version":3,"sources":["../../../src/adapters/ollama/shared.ts"],"names":["registerClient","Serializer","register","Client","toPlain","value","config","getPropStrict","fetch","fromPlain","host","proxy","retrieveVersion","baseUrl","client","url","URL","response","ok","Error","data","json","version","retrieveFormat","guided","undefined","compareVersion","String","Comparator","GTE","isString","JSON","parse","extractModelMeta","tokenLimit","Object","entries","model_info","find","k","includes","at","Infinity"],"mappings":";;;;;;;;;;AAuBO,SAASA,cAAAA,GAAAA;AACdC,EAAAA,yBAAAA,CAAWC,SAASC,aAAQ,EAAA;AAC1BC,IAAAA,OAAAA,0BAAUC,KAAW,MAAA;MACnBC,MAAQC,EAAAA,wBAAAA,CAAcF,OAAO,QAAA,CAAA;MAC7BG,KAAOD,EAAAA,wBAAAA,CAAcF,OAAO,OAAA;KAFrB,CAAA,EAAA,SAAA,CAAA;IAITI,SAAW,kBAAA,MAAA,CAAA,CAACJ,KACV,KAAA,IAAIF,aAAO,CAAA;MACTK,KAAOH,EAAAA,KAAAA,CAAMG,KAASH,IAAAA,KAAAA,CAAMC,MAAOE,CAAAA,KAAAA;AACnCE,MAAAA,IAAAA,EAAML,MAAMC,MAAOI,CAAAA,IAAAA;AACnBC,MAAAA,KAAAA,EAAON,MAAMC,MAAOK,CAAAA;AACtB,KAAA,CALS,EAAA,WAAA;GAMb,CAAA;AACF;AAbgBX,MAAAA,CAAAA,cAAAA,EAAAA,gBAAAA,CAAAA;AAehB,eAAsBY,eAAAA,CACpBC,OACAC,EAAAA,MAAAA,GAAuBN,KAAK,EAAA;AAE5B,EAAA,MAAMO,GAAM,GAAA,IAAIC,GAAI,CAAA,cAAA,EAAgBH,OAAAA,CAAAA;AACpC,EAAMI,MAAAA,QAAAA,GAAW,MAAMH,MAAAA,CAAOC,GAAAA,CAAAA;AAC9B,EAAI,IAAA,CAACE,SAASC,EAAI,EAAA;AAChB,IAAM,MAAA,IAAIC,MAAM,CAAwC,sCAAA,CAAA,CAAA;AAC1D;AACA,EAAMC,MAAAA,IAAAA,GAAO,MAAMH,QAAAA,CAASI,IAAI,EAAA;AAChC,EAAA,OAAOD,IAAKE,CAAAA,OAAAA;AACd;AAXsBV,MAAAA,CAAAA,eAAAA,EAAAA,iBAAAA,CAAAA;AAaf,SAASW,cAAAA,CACdD,SACAE,MAAsB,EAAA;AAEtB,EAAI,IAAA,CAACA,QAAQH,IAAM,EAAA;AACjB,IAAOI,OAAAA,MAAAA;AACT;AAEA,EAAA,IAAIC,0BAAeC,MAAOL,CAAAA,OAAAA,GAAUM,qBAAWC,CAAAA,GAAAA,EAAK,OAAA,CAAU,EAAA;AAC5D,IAAOC,OAAAA,eAAAA,CAASN,OAAOH,IAAI,CAAA,GAAIU,KAAKC,KAAMR,CAAAA,MAAAA,CAAOH,IAAI,CAAA,GAAIG,MAAOH,CAAAA,IAAAA;GAC3D,MAAA;AACL,IAAO,OAAA,MAAA;AACT;AACF;AAbgBE,MAAAA,CAAAA,cAAAA,EAAAA,gBAAAA,CAAAA;AAeT,SAASU,iBAAiBhB,QAAsB,EAAA;AACrD,EAAMiB,MAAAA,UAAAA,GAAaC,OAAOC,OAAQnB,CAAAA,QAAAA,CAASoB,UAAU,CAClDC,CAAAA,IAAAA,CAAK,CAAC,CAACC,CAAAA,MAAOA,CAAEC,CAAAA,QAAAA,CAAS,gBAAA,CAAqBD,IAAAA,CAAAA,CAAEC,SAAS,qBAAA,CAAA,CACxDC,EAAAA,EAAAA,CAAG,CAAA,CAAA;AAEP,EAAO,OAAA;AACLP,IAAAA,UAAAA,EAAYA,UAAcQ,IAAAA;AAC5B,GAAA;AACF;AARgBT,MAAAA,CAAAA,gBAAAA,EAAAA,kBAAAA,CAAAA","file":"shared.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Serializer } from \"@/serializer/serializer.js\";\nimport { Config, Ollama as Client, ShowResponse } from \"ollama\";\nimport { getPropStrict } from \"@/internals/helpers/object.js\";\nimport { GuidedOptions, LLMMeta } from \"@/llms/base.js\";\nimport { Comparator, compareVersion } from \"@/internals/helpers/string.js\";\nimport { isString } from \"remeda\";\n\nexport function registerClient() {\n  Serializer.register(Client, {\n    toPlain: (value) => ({\n      config: getPropStrict(value, \"config\") as Config,\n      fetch: getPropStrict(value, \"fetch\"),\n    }),\n    fromPlain: (value) =>\n      new Client({\n        fetch: value.fetch ?? value.config.fetch,\n        host: value.config.host,\n        proxy: value.config.proxy,\n      }),\n  });\n}\n\nexport async function retrieveVersion(\n  baseUrl: string,\n  client: typeof fetch = fetch,\n): Promise<string> {\n  const url = new URL(\"/api/version\", baseUrl);\n  const response = await client(url);\n  if (!response.ok) {\n    throw new Error(`Could not retrieve Ollama API version.`);\n  }\n  const data = await response.json();\n  return data.version;\n}\n\nexport function retrieveFormat(\n  version: string | number,\n  guided?: GuidedOptions,\n): string | object | undefined {\n  if (!guided?.json) {\n    return undefined;\n  }\n\n  if (compareVersion(String(version), Comparator.GTE, \"0.5.0\")) {\n    return isString(guided.json) ? JSON.parse(guided.json) : guided.json;\n  } else {\n    return \"json\";\n  }\n}\n\nexport function extractModelMeta(response: ShowResponse): LLMMeta {\n  const tokenLimit = Object.entries(response.model_info)\n    .find(([k]) => k.includes(\"context_length\") || k.includes(\"max_sequence_length\"))\n    ?.at(1);\n\n  return {\n    tokenLimit: tokenLimit || Infinity,\n  };\n}\n"]}