UNPKG

@lucidcms/core

Version:

The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.

2 lines 3.27 kB
import{copy as e}from"../../../libs/i18n/copy.mjs";import t from"../checks/check-feature-enabled.mjs";import n from"../../../libs/lucid-remote/services/generate-cms-ai.mjs";import{getCmsAiGenerateFailedMessage as r,isCmsAiGenerateAcceptedData as i,isCmsAiGenerateCompletedData as a,isCmsAiGenerateFailedData as o}from"../../../libs/lucid-remote/utils.mjs";import s from"../../options/get-license-key.mjs";import c from"../storage/store-failed-generation.mjs";import l from"../storage/store-generation.mjs";import u from"zod";const d=u.record(u.string(),u.string()),f=async(u,f)=>{let p=await t(u,{feature:`altGeneration`});if(p.error)return p;let m=Date.now(),h=await s(u);if(h.error)return h;let g=[];f.instruction&&g.push({type:`text`,role:`user-instruction`,value:f.instruction}),g.push({type:`image`,role:`source-image`,image:{type:`base64`,data:f.image.data,mimeType:f.image.mimeType,detail:f.image.detail,filename:f.image.filename}});let _={feature:{key:`media.alt.generate`,version:`v1`},input:g,context:{locale:f.locale,media:f.media,previousResponses:f.previousResponses}},v=await n(u,{licenseKey:h.data,request:_});if(v.error)return v;let y=v.data.json.data,b=o(y);if(i(y)||b){let t=b?r(y,u.translate(`server:core.routes.ai.generate.error.message`)):u.translate(`server:core.routes.ai.generate.error.message`),n=await c(u,{userId:f.userId,requestId:y.requestId,feature:y.feature,targetType:`media-alt`,target:{mediaId:f.media.id??null,locale:f.locale,image:{detail:f.image.detail,filename:f.image.filename??null,mimeType:f.image.mimeType}},requestStartedAt:m,errorMessage:t,usage:b?y.usage:void 0});return n.error?n:{error:{type:`basic`,status:502,message:b?e.literal(t):e(`server:core.routes.ai.generate.error.message`)},data:void 0}}if(!a(y))return{error:{type:`basic`,status:502,message:e(`server:core.routes.ai.generate.error.message`)},data:void 0};let x=d.safeParse(y.output);if(!x.success){let t=await l(u,{userId:f.userId,response:y,targetType:`media-alt`,requestStartedAt:m,status:`failed`,errorMessage:u.translate(`server:core.routes.ai.generate.error.message`),target:{mediaId:f.media.id??null,locale:f.locale,image:{detail:f.image.detail,filename:f.image.filename??null,mimeType:f.image.mimeType}}});return t.error?t:{error:{type:`basic`,status:502,message:e(`server:core.routes.ai.generate.error.message`)},data:void 0}}if(f.locale.target.find(e=>x.data[e]===void 0)){let t=await l(u,{userId:f.userId,response:y,targetType:`media-alt`,requestStartedAt:m,status:`failed`,errorMessage:u.translate(`server:core.routes.ai.generate.error.message`),target:{mediaId:f.media.id??null,locale:f.locale,image:{detail:f.image.detail,filename:f.image.filename??null,mimeType:f.image.mimeType}}});return t.error?t:{error:{type:`basic`,status:502,message:e(`server:core.routes.ai.generate.error.message`)},data:void 0}}let S=await l(u,{userId:f.userId,response:y,targetType:`media-alt`,requestStartedAt:m,target:{mediaId:f.media.id??null,locale:f.locale,image:{detail:f.image.detail,filename:f.image.filename??null,mimeType:f.image.mimeType}}});return S.error?S:{error:void 0,data:{mode:y.mode,requestId:y.requestId,feature:{key:`media.alt.generate`,version:`v1`},output:x.data,usage:y.usage}}};export{f as default}; //# sourceMappingURL=media-alt-generate.mjs.map