{"version":3,"file":"ai-model/model-adapter/chat-completion.mjs","sources":["../../../../src/ai-model/model-adapter/chat-completion.ts"],"sourcesContent":["import type {\n  ChatCompletionAdapter,\n  ChatCompletionCallContext,\n  ChatCompletionContentSource,\n  ContentAndReasoning,\n  MidsceneChatCompletionDefaults,\n  ModelAdapterDefinition,\n} from './types';\n\nconst defaultImageDetail = (_input: unknown) => undefined;\n\nconst defaultChatCompletionParams = ({\n  midsceneDefaults,\n  userConfig,\n}: ChatCompletionCallContext) => ({\n  config: {\n    temperature: userConfig.temperature ?? midsceneDefaults.temperature,\n  },\n});\n\nconst midsceneChatCompletionDefaults: MidsceneChatCompletionDefaults = {\n  temperature: 0,\n};\n\nexport function defaultExtractContentAndReasoning(\n  message: ChatCompletionContentSource | undefined,\n): ContentAndReasoning {\n  if (!message) {\n    return {\n      content: '',\n      reasoning_content: '',\n    };\n  }\n\n  const messageReasoning =\n    typeof message.reasoning_content === 'string'\n      ? message.reasoning_content\n      : '';\n\n  return {\n    content: typeof message.content === 'string' ? message.content : '',\n    reasoning_content: messageReasoning,\n  };\n}\n\nexport function resolveChatCompletion(\n  chatCompletion: ModelAdapterDefinition['chatCompletion'],\n): ChatCompletionAdapter {\n  const buildChatCompletionParams =\n    chatCompletion?.buildChatCompletionParams ?? defaultChatCompletionParams;\n  const resolveImageDetail =\n    chatCompletion?.resolveImageDetail ?? defaultImageDetail;\n  const unsupportedUserConfig = chatCompletion?.unsupportedUserConfig ?? [];\n  const extractContentAndReasoning =\n    chatCompletion?.extractContentAndReasoning ??\n    defaultExtractContentAndReasoning;\n\n  return {\n    unsupportedUserConfig,\n    buildChatCompletionParams: (input) => {\n      const context = {\n        ...input,\n        userConfig: input.userConfig ?? {},\n        midsceneDefaults: midsceneChatCompletionDefaults,\n      };\n      return buildChatCompletionParams(context);\n    },\n    resolveImageDetail: (input) =>\n      resolveImageDetail({\n        ...input,\n        userConfig: input.userConfig ?? {},\n        midsceneDefaults: midsceneChatCompletionDefaults,\n      }),\n    extractContentAndReasoning,\n  };\n}\n"],"names":["defaultImageDetail","_input","undefined","defaultChatCompletionParams","midsceneDefaults","userConfig","midsceneChatCompletionDefaults","defaultExtractContentAndReasoning","message","messageReasoning","resolveChatCompletion","chatCompletion","buildChatCompletionParams","resolveImageDetail","unsupportedUserConfig","extractContentAndReasoning","input","context"],"mappings":"AASA,MAAMA,qBAAqB,CAACC,SAAoBC;AAEhD,MAAMC,8BAA8B,CAAC,EACnCC,gBAAgB,EAChBC,UAAU,EACgB,GAAM;QAChC,QAAQ;YACN,aAAaA,WAAW,WAAW,IAAID,iBAAiB,WAAW;QACrE;IACF;AAEA,MAAME,iCAAiE;IACrE,aAAa;AACf;AAEO,SAASC,kCACdC,OAAgD;IAEhD,IAAI,CAACA,SACH,OAAO;QACL,SAAS;QACT,mBAAmB;IACrB;IAGF,MAAMC,mBACJ,AAAqC,YAArC,OAAOD,QAAQ,iBAAiB,GAC5BA,QAAQ,iBAAiB,GACzB;IAEN,OAAO;QACL,SAAS,AAA2B,YAA3B,OAAOA,QAAQ,OAAO,GAAgBA,QAAQ,OAAO,GAAG;QACjE,mBAAmBC;IACrB;AACF;AAEO,SAASC,sBACdC,cAAwD;IAExD,MAAMC,4BACJD,gBAAgB,6BAA6BR;IAC/C,MAAMU,qBACJF,gBAAgB,sBAAsBX;IACxC,MAAMc,wBAAwBH,gBAAgB,yBAAyB,EAAE;IACzE,MAAMI,6BACJJ,gBAAgB,8BAChBJ;IAEF,OAAO;QACLO;QACA,2BAA2B,CAACE;YAC1B,MAAMC,UAAU;gBACd,GAAGD,KAAK;gBACR,YAAYA,MAAM,UAAU,IAAI,CAAC;gBACjC,kBAAkBV;YACpB;YACA,OAAOM,0BAA0BK;QACnC;QACA,oBAAoB,CAACD,QACnBH,mBAAmB;gBACjB,GAAGG,KAAK;gBACR,YAAYA,MAAM,UAAU,IAAI,CAAC;gBACjC,kBAAkBV;YACpB;QACFS;IACF;AACF"}