Edit: /tmp/tsx-0/17887-ba07caacf40d5fd4c1f8213673b077eb35a2665b (30940B)
{"code":"__filename=\"/opt/canhelp/apps/api/src/translate.ts\";(()=>{\n\"use strict\";var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf;var __hasOwnProp=Object.prototype.hasOwnProperty;var __name=(target,value)=>__defProp(target,\"name\",{value,configurable:true});var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:true})};var __copyProps=(to,from,except,desc)=>{if(from&&typeof from===\"object\"||typeof from===\"function\"){for(let key of __getOwnPropNames(from))if(!__hasOwnProp.call(to,key)&&key!==except)__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable})}return to};var __toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,\"default\",{value:mod,enumerable:true}):target,mod));var __toCommonJS=mod=>__copyProps(__defProp({},\"__esModule\",{value:true}),mod);var translate_exports={};__export(translate_exports,{generateSpecialistDescription:()=>generateSpecialistDescription,translateMessageAllLocales:()=>translateMessageAllLocales,translateString:()=>translateString,translateStringsBatch:()=>translateStringsBatch,translateTask:()=>translateTask,translateTaskAllLocales:()=>translateTaskAllLocales});module.exports=__toCommonJS(translate_exports);var import_sdk=__toESM(require(\"@anthropic-ai/sdk\"));var import_openai=__toESM(require(\"openai\"));var import_db=require(\"./db.js\");var import_db2=require(\"@canhelp/db\");const LANG_NAMES={el:\"Greek\",en:\"English\",ru:\"Russian\",uk:\"Ukrainian\"};const PROMPT=__name((from,to,title,description)=>`Translate the following task listing from ${LANG_NAMES[from]} to ${LANG_NAMES[to]}.\nReturn ONLY a JSON object with keys \"title\" and \"description\". No extra text.\n\nTitle: ${title}\nDescription: ${description}`,\"PROMPT\");function parseJson(text){const match=text.match(/\\{[\\s\\S]*\\}/);if(!match)return null;try{return JSON.parse(match[0])}catch{return null}}__name(parseJson,\"parseJson\");const PRICING={\"claude-haiku-4-5-20251001\":{input:.8,output:4},\"claude-haiku-4-5\":{input:.8,output:4},\"claude-3-haiku-20240307\":{input:.25,output:1.25},\"gpt-4o-mini\":{input:.15,output:.6},\"gpt-4o\":{input:2.5,output:10}};function calcCost(model,inputTokens,outputTokens){const p=PRICING[model];if(!p||!inputTokens&&!outputTokens)return void 0;return((inputTokens??0)*p.input+(outputTokens??0)*p.output)/1e6}__name(calcCost,\"calcCost\");async function writeLog(entry){await import_db.db.insert(import_db2.aiLogs).values(entry).catch(e=>{console.error(\"[translate] log write failed:\",e)})}__name(writeLog,\"writeLog\");const ANTHROPIC_MODEL=\"claude-haiku-4-5-20251001\";const anthropic=process.env.ANTHROPIC_API_KEY?new import_sdk.default({apiKey:process.env.ANTHROPIC_API_KEY}):null;async function translateViaAnthropic(title,description,from,to){if(!anthropic)return null;const start=Date.now();try{const msg=await anthropic.messages.create({model:ANTHROPIC_MODEL,max_tokens:1024,messages:[{role:\"user\",content:PROMPT(from,to,title,description)}]});const durationMs=Date.now()-start;const result=parseJson(msg.content[0].text);await writeLog({provider:\"anthropic\",model:ANTHROPIC_MODEL,action:\"translate\",fromLocale:from,toLocale:to,inputTokens:msg.usage.input_tokens,outputTokens:msg.usage.output_tokens,totalTokens:msg.usage.input_tokens+msg.usage.output_tokens,durationMs,costUsd:calcCost(ANTHROPIC_MODEL,msg.usage.input_tokens,msg.usage.output_tokens),success:result!==null,error:result===null?\"Failed to parse JSON response\":void 0});return result}catch(err){await writeLog({provider:\"anthropic\",model:ANTHROPIC_MODEL,action:\"translate\",fromLocale:from,toLocale:to,durationMs:Date.now()-start,success:false,error:err?.message??String(err)});return null}}__name(translateViaAnthropic,\"translateViaAnthropic\");const OPENAI_MODEL=\"gpt-4o-mini\";const openai=process.env.OPENAI_API_KEY?new import_openai.default({apiKey:process.env.OPENAI_API_KEY}):null;async function translateViaOpenAI(title,description,from,to){if(!openai)return null;const start=Date.now();try{const msg=await openai.chat.completions.create({model:OPENAI_MODEL,messages:[{role:\"user\",content:PROMPT(from,to,title,description)}],max_tokens:1024});const durationMs=Date.now()-start;const text=msg.choices[0]?.message?.content??\"\";const result=parseJson(text);await writeLog({provider:\"openai\",model:OPENAI_MODEL,action:\"translate\",fromLocale:from,toLocale:to,inputTokens:msg.usage?.prompt_tokens,outputTokens:msg.usage?.completion_tokens,totalTokens:msg.usage?.total_tokens,durationMs,costUsd:calcCost(OPENAI_MODEL,msg.usage?.prompt_tokens,msg.usage?.completion_tokens),success:result!==null,error:result===null?\"Failed to parse JSON response\":void 0});return result}catch(err){await writeLog({provider:\"openai\",model:OPENAI_MODEL,action:\"translate\",fromLocale:from,toLocale:to,durationMs:Date.now()-start,success:false,error:err?.message??String(err)});return null}}__name(translateViaOpenAI,\"translateViaOpenAI\");async function translateTask(title,description,fromLocale,toLocale){if(fromLocale===toLocale)return{title,description};const provider=process.env.TRANSLATE_PROVIDER??\"anthropic\";if(provider===\"openai\"){return await translateViaOpenAI(title,description,fromLocale,toLocale)??await translateViaAnthropic(title,description,fromLocale,toLocale)}return await translateViaAnthropic(title,description,fromLocale,toLocale)??await translateViaOpenAI(title,description,fromLocale,toLocale)}__name(translateTask,\"translateTask\");async function translateTaskAllLocales(title,description,fromLocale){const targets=[\"el\",\"en\",\"ru\",\"uk\"].filter(l=>l!==fromLocale);const results={[fromLocale]:{title,description}};await Promise.all(targets.map(async loc=>{const t=await translateTask(title,description,fromLocale,loc);if(t)results[loc]=t}));return results}__name(translateTaskAllLocales,\"translateTaskAllLocales\");const DESCRIPTION_PROMPT=__name((categories,locale)=>`Write a natural, professional service-card description in ${LANG_NAMES[locale]??locale} for a marketplace specialist.\nCategories: ${categories.join(\", \")}.\nWrite in the first person, using the natural first-person form for the requested language. Use 2 to 4 short readable paragraphs separated by blank lines. Write 50 to 150 words for each category where the total allows it, never exceed 500 words overall, and cover every category. Do not use a heading, markdown, contact details, prices, or claims that cannot be verified.`,\"DESCRIPTION_PROMPT\");function formatDescriptionParagraphs(description){const normalized=description.replace(/\\r\\n/g,\"\\n\").trim();if(normalized.includes(\"\\n\\n\"))return normalized;const sentences=normalized.match(/[^.!?]+[.!?]+|[^.!?]+$/g)??[];if(sentences.length<3)return normalized;const chunkSize=Math.ceil(sentences.length/Math.min(3,sentences.length));const paragraphs=Array.from({length:Math.ceil(sentences.length/chunkSize)},(_,index)=>sentences.slice(index*chunkSize,(index+1)*chunkSize).join(\" \").trim());return paragraphs.join(\"\\n\\n\")}__name(formatDescriptionParagraphs,\"formatDescriptionParagraphs\");async function generateSpecialistDescription(categories,locale){const prompt=DESCRIPTION_PROMPT(categories,locale);const provider=process.env.TRANSLATE_PROVIDER??\"anthropic\";const generateWithAnthropic=__name(async()=>{if(!anthropic)return null;const start=Date.now();try{const message=await anthropic.messages.create({model:ANTHROPIC_MODEL,max_tokens:800,messages:[{role:\"user\",content:prompt}]});const description=formatDescriptionParagraphs(message.content[0].text);await writeLog({provider:\"anthropic\",model:ANTHROPIC_MODEL,action:\"specialist_description\",inputTokens:message.usage.input_tokens,outputTokens:message.usage.output_tokens,totalTokens:message.usage.input_tokens+message.usage.output_tokens,durationMs:Date.now()-start,costUsd:calcCost(ANTHROPIC_MODEL,message.usage.input_tokens,message.usage.output_tokens),success:!!description});return description||null}catch(error){await writeLog({provider:\"anthropic\",model:ANTHROPIC_MODEL,action:\"specialist_description\",durationMs:Date.now()-start,success:false,error:error?.message??String(error)});return null}},\"generateWithAnthropic\");const generateWithOpenAI=__name(async()=>{if(!openai)return null;const start=Date.now();try{const completion=await openai.chat.completions.create({model:OPENAI_MODEL,max_tokens:800,messages:[{role:\"user\",content:prompt}]});const description=formatDescriptionParagraphs(completion.choices[0]?.message?.content??\"\");await writeLog({provider:\"openai\",model:OPENAI_MODEL,action:\"specialist_description\",inputTokens:completion.usage?.prompt_tokens,outputTokens:completion.usage?.completion_tokens,totalTokens:completion.usage?.total_tokens,durationMs:Date.now()-start,costUsd:calcCost(OPENAI_MODEL,completion.usage?.prompt_tokens,completion.usage?.completion_tokens),success:!!description});return description||null}catch(error){await writeLog({provider:\"openai\",model:OPENAI_MODEL,action:\"specialist_description\",durationMs:Date.now()-start,success:false,error:error?.message??String(error)});return null}},\"generateWithOpenAI\");if(provider===\"openai\"){return await generateWithOpenAI()??await generateWithAnthropic()}return await generateWithAnthropic()??await generateWithOpenAI()}__name(generateSpecialistDescription,\"generateSpecialistDescription\");const STR_PROMPT=__name((from,to,text)=>`Translate the following short text from ${LANG_NAMES[from]??from} to ${LANG_NAMES[to]??to}.\nReturn ONLY the translated text, no quotes, no explanations.\n\n${text}`,\"STR_PROMPT\");async function translateStringViaAnthropic(text,from,to){if(!anthropic)return null;const start=Date.now();try{const msg=await anthropic.messages.create({model:ANTHROPIC_MODEL,max_tokens:256,messages:[{role:\"user\",content:STR_PROMPT(from,to,text)}]});const result=msg.content[0].text.trim();await writeLog({provider:\"anthropic\",model:ANTHROPIC_MODEL,action:\"translate_string\",fromLocale:from,toLocale:to,inputTokens:msg.usage.input_tokens,outputTokens:msg.usage.output_tokens,totalTokens:msg.usage.input_tokens+msg.usage.output_tokens,durationMs:Date.now()-start,costUsd:calcCost(ANTHROPIC_MODEL,msg.usage.input_tokens,msg.usage.output_tokens),success:true});return result||null}catch(err){await writeLog({provider:\"anthropic\",model:ANTHROPIC_MODEL,action:\"translate_string\",fromLocale:from,toLocale:to,durationMs:Date.now()-start,success:false,error:err?.message??String(err)});return null}}__name(translateStringViaAnthropic,\"translateStringViaAnthropic\");async function translateStringViaOpenAI(text,from,to){if(!openai)return null;const start=Date.now();try{const chat=await openai.chat.completions.create({model:OPENAI_MODEL,max_tokens:256,messages:[{role:\"user\",content:STR_PROMPT(from,to,text)}]});const result=chat.choices[0]?.message?.content?.trim();await writeLog({provider:\"openai\",model:OPENAI_MODEL,action:\"translate_string\",fromLocale:from,toLocale:to,inputTokens:chat.usage?.prompt_tokens,outputTokens:chat.usage?.completion_tokens,totalTokens:chat.usage?.total_tokens,durationMs:Date.now()-start,costUsd:calcCost(OPENAI_MODEL,chat.usage?.prompt_tokens,chat.usage?.completion_tokens),success:!!result});return result||null}catch(err){await writeLog({provider:\"openai\",model:OPENAI_MODEL,action:\"translate_string\",fromLocale:from,toLocale:to,durationMs:Date.now()-start,success:false,error:err?.message??String(err)});return null}}__name(translateStringViaOpenAI,\"translateStringViaOpenAI\");async function translateString(text,fromLocale,toLocale){if(fromLocale===toLocale)return text;const provider=process.env.TRANSLATE_PROVIDER??\"anthropic\";if(provider===\"openai\"){return await translateStringViaOpenAI(text,fromLocale,toLocale)??await translateStringViaAnthropic(text,fromLocale,toLocale)}return await translateStringViaAnthropic(text,fromLocale,toLocale)??await translateStringViaOpenAI(text,fromLocale,toLocale)}__name(translateString,\"translateString\");const BATCH_PROMPT=__name((from,to,texts)=>`Translate the following ${texts.length} texts from ${LANG_NAMES[from]??from} to ${LANG_NAMES[to]??to}.\nReturn ONLY a valid JSON array with exactly ${texts.length} translated strings in the same order. No markdown, no extra text.\n\n${JSON.stringify(texts)}`,\"BATCH_PROMPT\");function parseBatchResult(text,count){const match=text.match(/\\[[\\s\\S]*\\]/);if(!match)return Array(count).fill(null);try{const arr=JSON.parse(match[0]);if(!Array.isArray(arr))return Array(count).fill(null);return arr.map(v=>typeof v===\"string\"&&v.trim()?v.trim():null)}catch{return Array(count).fill(null)}}__name(parseBatchResult,\"parseBatchResult\");async function translateBatchViaAnthropic(texts,from,to){if(!anthropic)return Array(texts.length).fill(null);const start=Date.now();try{const msg=await anthropic.messages.create({model:ANTHROPIC_MODEL,max_tokens:8192,messages:[{role:\"user\",content:BATCH_PROMPT(from,to,texts)}]});const result=parseBatchResult(msg.content[0].text,texts.length);await writeLog({provider:\"anthropic\",model:ANTHROPIC_MODEL,action:\"translate_batch\",fromLocale:from,toLocale:to,inputTokens:msg.usage.input_tokens,outputTokens:msg.usage.output_tokens,totalTokens:msg.usage.input_tokens+msg.usage.output_tokens,durationMs:Date.now()-start,costUsd:calcCost(ANTHROPIC_MODEL,msg.usage.input_tokens,msg.usage.output_tokens),success:true});return result}catch(err){await writeLog({provider:\"anthropic\",model:ANTHROPIC_MODEL,action:\"translate_batch\",fromLocale:from,toLocale:to,durationMs:Date.now()-start,success:false,error:err?.message??String(err)});return Array(texts.length).fill(null)}}__name(translateBatchViaAnthropic,\"translateBatchViaAnthropic\");async function translateBatchViaOpenAI(texts,from,to){if(!openai)return Array(texts.length).fill(null);const start=Date.now();try{const chat=await openai.chat.completions.create({model:OPENAI_MODEL,max_tokens:8192,messages:[{role:\"user\",content:BATCH_PROMPT(from,to,texts)}]});const text=chat.choices[0]?.message?.content??\"\";const result=parseBatchResult(text,texts.length);await writeLog({provider:\"openai\",model:OPENAI_MODEL,action:\"translate_batch\",fromLocale:from,toLocale:to,inputTokens:chat.usage?.prompt_tokens,outputTokens:chat.usage?.completion_tokens,totalTokens:chat.usage?.total_tokens,durationMs:Date.now()-start,costUsd:calcCost(OPENAI_MODEL,chat.usage?.prompt_tokens,chat.usage?.completion_tokens),success:!!text});return result}catch(err){await writeLog({provider:\"openai\",model:OPENAI_MODEL,action:\"translate_batch\",fromLocale:from,toLocale:to,durationMs:Date.now()-start,success:false,error:err?.message??String(err)});return Array(texts.length).fill(null)}}__name(translateBatchViaOpenAI,\"translateBatchViaOpenAI\");async function translateStringsBatch(texts,fromLocale,toLocale){if(texts.length===0)return[];if(fromLocale===toLocale)return texts;const CHUNK=50;const results=new Array(texts.length).fill(null);const callBatch=__name(async chunk=>{const provider=process.env.TRANSLATE_PROVIDER??\"anthropic\";if(provider===\"openai\"){const r2=await translateBatchViaOpenAI(chunk,fromLocale,toLocale);if(r2.some(x=>x!==null))return r2;return translateBatchViaAnthropic(chunk,fromLocale,toLocale)}const r=await translateBatchViaAnthropic(chunk,fromLocale,toLocale);if(r.some(x=>x!==null))return r;return translateBatchViaOpenAI(chunk,fromLocale,toLocale)},\"callBatch\");for(let i=0;i
`Translate the following chat message to ${LANG_NAMES[to]}. Return ONLY the translated text, no explanations, no extra text.\n\n${text}`,\"MSG_PROMPT\");async function translateMessageViaAnthropic(text,to){if(!anthropic)return null;const start=Date.now();try{const msg=await anthropic.messages.create({model:ANTHROPIC_MODEL,max_tokens:512,messages:[{role:\"user\",content:MSG_PROMPT(to,text)}]});const result=msg.content[0].text.trim();await writeLog({provider:\"anthropic\",model:ANTHROPIC_MODEL,action:\"translate_message\",toLocale:to,inputTokens:msg.usage.input_tokens,outputTokens:msg.usage.output_tokens,totalTokens:msg.usage.input_tokens+msg.usage.output_tokens,durationMs:Date.now()-start,costUsd:calcCost(ANTHROPIC_MODEL,msg.usage.input_tokens,msg.usage.output_tokens),success:true});return result}catch(err){await writeLog({provider:\"anthropic\",model:ANTHROPIC_MODEL,action:\"translate_message\",toLocale:to,durationMs:Date.now()-start,success:false,error:err?.message});return null}}__name(translateMessageViaAnthropic,\"translateMessageViaAnthropic\");async function translateMessageViaOpenAI(text,to){if(!openai)return null;const start=Date.now();try{const msg=await openai.chat.completions.create({model:OPENAI_MODEL,messages:[{role:\"user\",content:MSG_PROMPT(to,text)}],max_tokens:512});const result=msg.choices[0]?.message?.content?.trim()??\"\";await writeLog({provider:\"openai\",model:OPENAI_MODEL,action:\"translate_message\",toLocale:to,inputTokens:msg.usage?.prompt_tokens,outputTokens:msg.usage?.completion_tokens,totalTokens:msg.usage?.total_tokens,durationMs:Date.now()-start,costUsd:calcCost(OPENAI_MODEL,msg.usage?.prompt_tokens,msg.usage?.completion_tokens),success:true});return result}catch(err){await writeLog({provider:\"openai\",model:OPENAI_MODEL,action:\"translate_message\",toLocale:to,durationMs:Date.now()-start,success:false,error:err?.message});return null}}__name(translateMessageViaOpenAI,\"translateMessageViaOpenAI\");async function translateMessageAllLocales(text,fromLocale){const targets=[\"el\",\"en\",\"ru\",\"uk\"].filter(l=>l!==fromLocale);const result={[fromLocale]:text};const provider=process.env.TRANSLATE_PROVIDER??\"anthropic\";await Promise.all(targets.map(async to=>{let translated=null;if(provider===\"openai\"){translated=await translateMessageViaOpenAI(text,to)??await translateMessageViaAnthropic(text,to)}else{translated=await translateMessageViaAnthropic(text,to)??await translateMessageViaOpenAI(text,to)}if(translated)result[to]=translated}));return result}__name(translateMessageAllLocales,\"translateMessageAllLocales\");0&&(module.exports={generateSpecialistDescription,translateMessageAllLocales,translateString,translateStringsBatch,translateTask,translateTaskAllLocales});\n})()\n","warnings":[],"map":{"version":3,"mappings":";8/BAAA,uZAAsB,sCACtB,kBAAmB,2BACnB,cAAmB,mBACnB,IAAAA,WAAuB,uBAEvB,MAAM,WAAqC,CACzC,GAAI,QACJ,GAAI,UACJ,GAAI,UACJ,GAAI,WACN,EAEA,MAAM,OAAS,QAAC,KAAc,GAAY,MAAe,cACvD,6CAA6C,WAAW,IAAI,CAAC,OAAO,WAAW,EAAE,CAAC;AAAA;AAAA;AAAA,SAG3E,KAAK;AAAA,eACC,WAAW,GALX,UAOf,SAAS,UAAU,KAA6D,CAC9E,MAAM,MAAQ,KAAK,MAAM,aAAa,EACtC,GAAI,CAAC,MAAO,OAAO,KACnB,GAAI,CACF,OAAO,KAAK,MAAM,MAAM,CAAC,CAAC,CAC5B,MAAQ,CACN,OAAO,IACT,CACF,CARS,8BAWT,MAAM,QAA6D,CACjE,4BAA6B,CAAE,MAAO,GAAM,OAAQ,CAAK,EACzD,mBAA6B,CAAE,MAAO,GAAM,OAAQ,CAAK,EACzD,0BAA6B,CAAE,MAAO,IAAM,OAAQ,IAAK,EACzD,cAA6B,CAAE,MAAO,IAAM,OAAQ,EAAK,EACzD,SAA6B,CAAE,MAAO,IAAM,OAAQ,EAAM,CAC5D,EAEA,SAAS,SAAS,MAAe,YAAsB,aAA2C,CAChG,MAAM,EAAI,QAAQ,KAAK,EACvB,GAAI,CAAC,GAAM,CAAC,aAAe,CAAC,aAAe,OAAO,OAClD,QAAS,aAAe,GAAK,EAAE,OAAS,cAAgB,GAAK,EAAE,QAAU,GAC3E,CAJS,4BAMT,eAAe,SAAS,MAarB,CACD,MAAM,aAAG,OAAO,iBAAM,EAAE,OAAO,KAAK,EAAE,MAAO,GAAM,CACjD,QAAQ,MAAM,gCAAiC,CAAC,CAClD,CAAC,CACH,CAjBe,4BAqBf,MAAM,gBAAkB,4BAExB,MAAM,UAAY,QAAQ,IAAI,kBAC1B,IAAI,WAAAC,QAAU,CAAE,OAAQ,QAAQ,IAAI,iBAAkB,CAAC,EACvD,KAEJ,eAAe,sBACb,MACA,YACA,KACA,GACwD,CACxD,GAAI,CAAC,UAAW,OAAO,KAEvB,MAAM,MAAQ,KAAK,IAAI,EACvB,GAAI,CACF,MAAM,IAAM,MAAM,UAAU,SAAS,OAAO,CAC1C,MAAO,gBACP,WAAY,KACZ,SAAU,CAAC,CAAE,KAAM,OAAQ,QAAS,OAAO,KAAM,GAAI,MAAO,WAAW,CAAE,CAAC,CAC5E,CAAC,EACD,MAAM,WAAa,KAAK,IAAI,EAAI,MAChC,MAAM,OAAS,UAAW,IAAI,QAAQ,CAAC,EAA0B,IAAI,EAErE,MAAM,SAAS,CACb,SAAU,YACV,MAAO,gBACP,OAAQ,YACR,WAAY,KACZ,SAAU,GACV,YAAa,IAAI,MAAM,aACvB,aAAc,IAAI,MAAM,cACxB,YAAa,IAAI,MAAM,aAAe,IAAI,MAAM,cAChD,WACA,QAAS,SAAS,gBAAiB,IAAI,MAAM,aAAc,IAAI,MAAM,aAAa,EAClF,QAAS,SAAW,KACpB,MAAO,SAAW,KAAO,gCAAkC,MAC7D,CAAC,EAED,OAAO,MACT,OAAS,IAAU,CACjB,MAAM,SAAS,CACb,SAAU,YACV,MAAO,gBACP,OAAQ,YACR,WAAY,KACZ,SAAU,GACV,WAAY,KAAK,IAAI,EAAI,MACzB,QAAS,MACT,MAAO,KAAK,SAAW,OAAO,GAAG,CACnC,CAAC,EACD,OAAO,IACT,CACF,CA/Ce,sDAmDf,MAAM,aAAe,cAErB,MAAM,OAAS,QAAQ,IAAI,eACvB,IAAI,cAAAC,QAAO,CAAE,OAAQ,QAAQ,IAAI,cAAe,CAAC,EACjD,KAEJ,eAAe,mBACb,MACA,YACA,KACA,GACwD,CACxD,GAAI,CAAC,OAAQ,OAAO,KAEpB,MAAM,MAAQ,KAAK,IAAI,EACvB,GAAI,CACF,MAAM,IAAM,MAAM,OAAO,KAAK,YAAY,OAAO,CAC/C,MAAO,aACP,SAAU,CAAC,CAAE,KAAM,OAAQ,QAAS,OAAO,KAAM,GAAI,MAAO,WAAW,CAAE,CAAC,EAC1E,WAAY,IACd,CAAC,EACD,MAAM,WAAa,KAAK,IAAI,EAAI,MAChC,MAAM,KAAO,IAAI,QAAQ,CAAC,GAAG,SAAS,SAAW,GACjD,MAAM,OAAS,UAAU,IAAI,EAE7B,MAAM,SAAS,CACb,SAAU,SACV,MAAO,aACP,OAAQ,YACR,WAAY,KACZ,SAAU,GACV,YAAa,IAAI,OAAO,cACxB,aAAc,IAAI,OAAO,kBACzB,YAAa,IAAI,OAAO,aACxB,WACA,QAAS,SAAS,aAAc,IAAI,OAAO,cAAe,IAAI,OAAO,iBAAiB,EACtF,QAAS,SAAW,KACpB,MAAO,SAAW,KAAO,gCAAkC,MAC7D,CAAC,EAED,OAAO,MACT,OAAS,IAAU,CACjB,MAAM,SAAS,CACb,SAAU,SACV,MAAO,aACP,OAAQ,YACR,WAAY,KACZ,SAAU,GACV,WAAY,KAAK,IAAI,EAAI,MACzB,QAAS,MACT,MAAO,KAAK,SAAW,OAAO,GAAG,CACnC,CAAC,EACD,OAAO,IACT,CACF,CAhDe,gDAoDf,eAAsB,cACpB,MACA,YACA,WACA,SACwD,CACxD,GAAI,aAAe,SAAU,MAAO,CAAE,MAAO,WAAY,EACzD,MAAM,SAAW,QAAQ,IAAI,oBAAsB,YAEnD,GAAI,WAAa,SAAU,CACzB,OAAQ,MAAM,mBAAmB,MAAO,YAAa,WAAY,QAAQ,GACnE,MAAM,sBAAsB,MAAO,YAAa,WAAY,QAAQ,CAC5E,CACA,OAAQ,MAAM,sBAAsB,MAAO,YAAa,WAAY,QAAQ,GACtE,MAAM,mBAAmB,MAAO,YAAa,WAAY,QAAQ,CACzE,CAfsB,sCAiBtB,eAAsB,wBACpB,MACA,YACA,WACiE,CACjE,MAAM,QAAU,CAAC,KAAM,KAAM,KAAM,IAAI,EAAE,OAAQ,GAAM,IAAM,UAAU,EACvE,MAAM,QAAkE,CACtE,CAAC,UAAU,EAAG,CAAE,MAAO,WAAY,CACrC,EAEA,MAAM,QAAQ,IACZ,QAAQ,IAAI,MAAO,KAAQ,CACzB,MAAM,EAAI,MAAM,cAAc,MAAO,YAAa,WAAY,GAAG,EACjE,GAAI,EAAG,QAAQ,GAAG,EAAI,CACxB,CAAC,CACH,EAEA,OAAO,OACT,CAlBsB,0DAoBtB,MAAM,mBAAqB,QAAC,WAAsB,SAChD,6DAA6D,WAAW,MAAM,GAAK,MAAM;AAAA,cAC7E,WAAW,KAAK,IAAI,CAAC;AAAA,oXAFR,sBAK3B,SAAS,4BAA4B,YAA6B,CAChE,MAAM,WAAa,YAAY,QAAQ,QAAS,IAAI,EAAE,KAAK,EAC3D,GAAI,WAAW,SAAS,MAAM,EAAG,OAAO,WACxC,MAAM,UAAY,WAAW,MAAM,yBAAyB,GAAK,CAAC,EAClE,GAAI,UAAU,OAAS,EAAG,OAAO,WACjC,MAAM,UAAY,KAAK,KAAK,UAAU,OAAS,KAAK,IAAI,EAAG,UAAU,MAAM,CAAC,EAC5E,MAAM,WAAa,MAAM,KACvB,CAAE,OAAQ,KAAK,KAAK,UAAU,OAAS,SAAS,CAAE,EAClD,CAAC,EAAG,QACF,UACG,MAAM,MAAQ,WAAY,MAAQ,GAAK,SAAS,EAChD,KAAK,GAAG,EACR,KAAK,CACZ,EACA,OAAO,WAAW,KAAK,MAAM,CAC/B,CAfS,kEAiBT,eAAsB,8BACpB,WACA,OACwB,CACxB,MAAM,OAAS,mBAAmB,WAAY,MAAM,EACpD,MAAM,SAAW,QAAQ,IAAI,oBAAsB,YAEnD,MAAM,sBAAwB,gBAAoC,CAChE,GAAI,CAAC,UAAW,OAAO,KACvB,MAAM,MAAQ,KAAK,IAAI,EACvB,GAAI,CACF,MAAM,QAAU,MAAM,UAAU,SAAS,OAAO,CAC9C,MAAO,gBACP,WAAY,IACZ,SAAU,CAAC,CAAE,KAAM,OAAQ,QAAS,MAAO,CAAC,CAC9C,CAAC,EACD,MAAM,YAAc,4BAA6B,QAAQ,QAAQ,CAAC,EAA0B,IAAI,EAChG,MAAM,SAAS,CACb,SAAU,YAAa,MAAO,gBAAiB,OAAQ,yBACvD,YAAa,QAAQ,MAAM,aAAc,aAAc,QAAQ,MAAM,cACrE,YAAa,QAAQ,MAAM,aAAe,QAAQ,MAAM,cACxD,WAAY,KAAK,IAAI,EAAI,MACzB,QAAS,SAAS,gBAAiB,QAAQ,MAAM,aAAc,QAAQ,MAAM,aAAa,EAC1F,QAAS,CAAC,CAAC,WACb,CAAC,EACD,OAAO,aAAe,IACxB,OAAS,MAAY,CACnB,MAAM,SAAS,CAAE,SAAU,YAAa,MAAO,gBAAiB,OAAQ,yBAA0B,WAAY,KAAK,IAAI,EAAI,MAAO,QAAS,MAAO,MAAO,OAAO,SAAW,OAAO,KAAK,CAAE,CAAC,EAC1L,OAAO,IACT,CACF,EAvB8B,yBAyB9B,MAAM,mBAAqB,gBAAoC,CAC7D,GAAI,CAAC,OAAQ,OAAO,KACpB,MAAM,MAAQ,KAAK,IAAI,EACvB,GAAI,CACF,MAAM,WAAa,MAAM,OAAO,KAAK,YAAY,OAAO,CACtD,MAAO,aACP,WAAY,IACZ,SAAU,CAAC,CAAE,KAAM,OAAQ,QAAS,MAAO,CAAC,CAC9C,CAAC,EACD,MAAM,YAAc,4BAA4B,WAAW,QAAQ,CAAC,GAAG,SAAS,SAAW,EAAE,EAC7F,MAAM,SAAS,CACb,SAAU,SAAU,MAAO,aAAc,OAAQ,yBACjD,YAAa,WAAW,OAAO,cAAe,aAAc,WAAW,OAAO,kBAC9E,YAAa,WAAW,OAAO,aAAc,WAAY,KAAK,IAAI,EAAI,MACtE,QAAS,SAAS,aAAc,WAAW,OAAO,cAAe,WAAW,OAAO,iBAAiB,EACpG,QAAS,CAAC,CAAC,WACb,CAAC,EACD,OAAO,aAAe,IACxB,OAAS,MAAY,CACnB,MAAM,SAAS,CAAE,SAAU,SAAU,MAAO,aAAc,OAAQ,yBAA0B,WAAY,KAAK,IAAI,EAAI,MAAO,QAAS,MAAO,MAAO,OAAO,SAAW,OAAO,KAAK,CAAE,CAAC,EACpL,OAAO,IACT,CACF,EAtB2B,sBAwB3B,GAAI,WAAa,SAAU,CACzB,OAAQ,MAAM,mBAAmB,GAAO,MAAM,sBAAsB,CACtE,CACA,OAAQ,MAAM,sBAAsB,GAAO,MAAM,mBAAmB,CACtE,CA5DsB,sEAgEtB,MAAM,WAAa,QAAC,KAAc,GAAY,OAC5C,2CAA2C,WAAW,IAAI,GAAK,IAAI,OAAO,WAAW,EAAE,GAAK,EAAE;AAAA;AAAA;AAAA,EAG9F,IAAI,GAJa,cAMnB,eAAe,4BAA4B,KAAc,KAAc,GAAoC,CACzG,GAAI,CAAC,UAAW,OAAO,KACvB,MAAM,MAAQ,KAAK,IAAI,EACvB,GAAI,CACF,MAAM,IAAM,MAAM,UAAU,SAAS,OAAO,CAC1C,MAAO,gBACP,WAAY,IACZ,SAAU,CAAC,CAAE,KAAM,OAAQ,QAAS,WAAW,KAAM,GAAI,IAAI,CAAE,CAAC,CAClE,CAAC,EACD,MAAM,OAAU,IAAI,QAAQ,CAAC,EAA0B,KAAK,KAAK,EACjE,MAAM,SAAS,CACb,SAAU,YAAa,MAAO,gBAAiB,OAAQ,mBACvD,WAAY,KAAM,SAAU,GAC5B,YAAa,IAAI,MAAM,aAAc,aAAc,IAAI,MAAM,cAC7D,YAAa,IAAI,MAAM,aAAe,IAAI,MAAM,cAChD,WAAY,KAAK,IAAI,EAAI,MACzB,QAAS,SAAS,gBAAiB,IAAI,MAAM,aAAc,IAAI,MAAM,aAAa,EAClF,QAAS,IACX,CAAC,EACD,OAAO,QAAU,IACnB,OAAS,IAAU,CACjB,MAAM,SAAS,CAAE,SAAU,YAAa,MAAO,gBAAiB,OAAQ,mBAAoB,WAAY,KAAM,SAAU,GAAI,WAAY,KAAK,IAAI,EAAI,MAAO,QAAS,MAAO,MAAO,KAAK,SAAW,OAAO,GAAG,CAAE,CAAC,EAChN,OAAO,IACT,CACF,CAxBe,kEA0Bf,eAAe,yBAAyB,KAAc,KAAc,GAAoC,CACtG,GAAI,CAAC,OAAQ,OAAO,KACpB,MAAM,MAAQ,KAAK,IAAI,EACvB,GAAI,CACF,MAAM,KAAO,MAAM,OAAO,KAAK,YAAY,OAAO,CAChD,MAAO,aACP,WAAY,IACZ,SAAU,CAAC,CAAE,KAAM,OAAQ,QAAS,WAAW,KAAM,GAAI,IAAI,CAAE,CAAC,CAClE,CAAC,EACD,MAAM,OAAS,KAAK,QAAQ,CAAC,GAAG,SAAS,SAAS,KAAK,EACvD,MAAM,SAAS,CACb,SAAU,SAAU,MAAO,aAAc,OAAQ,mBACjD,WAAY,KAAM,SAAU,GAC5B,YAAa,KAAK,OAAO,cAAe,aAAc,KAAK,OAAO,kBAClE,YAAa,KAAK,OAAO,aACzB,WAAY,KAAK,IAAI,EAAI,MACzB,QAAS,SAAS,aAAc,KAAK,OAAO,cAAe,KAAK,OAAO,iBAAiB,EACxF,QAAS,CAAC,CAAC,MACb,CAAC,EACD,OAAO,QAAU,IACnB,OAAS,IAAU,CACjB,MAAM,SAAS,CAAE,SAAU,SAAU,MAAO,aAAc,OAAQ,mBAAoB,WAAY,KAAM,SAAU,GAAI,WAAY,KAAK,IAAI,EAAI,MAAO,QAAS,MAAO,MAAO,KAAK,SAAW,OAAO,GAAG,CAAE,CAAC,EAC1M,OAAO,IACT,CACF,CAxBe,4DA0Bf,eAAsB,gBAAgB,KAAc,WAAoB,SAA0C,CAChH,GAAI,aAAe,SAAU,OAAO,KACpC,MAAM,SAAW,QAAQ,IAAI,oBAAsB,YACnD,GAAI,WAAa,SAAU,CACzB,OAAQ,MAAM,yBAAyB,KAAM,WAAY,QAAQ,GAC3D,MAAM,4BAA4B,KAAM,WAAY,QAAQ,CACpE,CACA,OAAQ,MAAM,4BAA4B,KAAM,WAAY,QAAQ,GAC9D,MAAM,yBAAyB,KAAM,WAAY,QAAQ,CACjE,CATsB,0CAatB,MAAM,aAAe,QAAC,KAAc,GAAY,QAC9C,2BAA2B,MAAM,MAAM,eAAe,WAAW,IAAI,GAAK,IAAI,OAAO,WAAW,EAAE,GAAK,EAAE;AAAA,8CAC7D,MAAM,MAAM;AAAA;AAAA,EAExD,KAAK,UAAU,KAAK,CAAC,GAJF,gBAMrB,SAAS,iBAAiB,KAAc,MAAkC,CACxE,MAAM,MAAQ,KAAK,MAAM,aAAa,EACtC,GAAI,CAAC,MAAO,OAAO,MAAM,KAAK,EAAE,KAAK,IAAI,EACzC,GAAI,CACF,MAAM,IAAM,KAAK,MAAM,MAAM,CAAC,CAAC,EAC/B,GAAI,CAAC,MAAM,QAAQ,GAAG,EAAG,OAAO,MAAM,KAAK,EAAE,KAAK,IAAI,EACtD,OAAO,IAAI,IAAK,GAAgB,OAAO,IAAM,UAAY,EAAE,KAAK,EAAI,EAAE,KAAK,EAAI,IAAK,CACtF,MAAQ,CACN,OAAO,MAAM,KAAK,EAAE,KAAK,IAAI,CAC/B,CACF,CAVS,4CAYT,eAAe,2BAA2B,MAAiB,KAAc,GAAwC,CAC/G,GAAI,CAAC,UAAW,OAAO,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,EACpD,MAAM,MAAQ,KAAK,IAAI,EACvB,GAAI,CACF,MAAM,IAAM,MAAM,UAAU,SAAS,OAAO,CAC1C,MAAO,gBACP,WAAY,KACZ,SAAU,CAAC,CAAE,KAAM,OAAQ,QAAS,aAAa,KAAM,GAAI,KAAK,CAAE,CAAC,CACrE,CAAC,EACD,MAAM,OAAS,iBAAkB,IAAI,QAAQ,CAAC,EAA0B,KAAM,MAAM,MAAM,EAC1F,MAAM,SAAS,CACb,SAAU,YAAa,MAAO,gBAAiB,OAAQ,kBACvD,WAAY,KAAM,SAAU,GAC5B,YAAa,IAAI,MAAM,aAAc,aAAc,IAAI,MAAM,cAC7D,YAAa,IAAI,MAAM,aAAe,IAAI,MAAM,cAChD,WAAY,KAAK,IAAI,EAAI,MACzB,QAAS,SAAS,gBAAiB,IAAI,MAAM,aAAc,IAAI,MAAM,aAAa,EAClF,QAAS,IACX,CAAC,EACD,OAAO,MACT,OAAS,IAAU,CACjB,MAAM,SAAS,CAAE,SAAU,YAAa,MAAO,gBAAiB,OAAQ,kBAAmB,WAAY,KAAM,SAAU,GAAI,WAAY,KAAK,IAAI,EAAI,MAAO,QAAS,MAAO,MAAO,KAAK,SAAW,OAAO,GAAG,CAAE,CAAC,EAC/M,OAAO,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,CACtC,CACF,CAxBe,gEA0Bf,eAAe,wBAAwB,MAAiB,KAAc,GAAwC,CAC5G,GAAI,CAAC,OAAQ,OAAO,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,EACjD,MAAM,MAAQ,KAAK,IAAI,EACvB,GAAI,CACF,MAAM,KAAO,MAAM,OAAO,KAAK,YAAY,OAAO,CAChD,MAAO,aACP,WAAY,KACZ,SAAU,CAAC,CAAE,KAAM,OAAQ,QAAS,aAAa,KAAM,GAAI,KAAK,CAAE,CAAC,CACrE,CAAC,EACD,MAAM,KAAO,KAAK,QAAQ,CAAC,GAAG,SAAS,SAAW,GAClD,MAAM,OAAS,iBAAiB,KAAM,MAAM,MAAM,EAClD,MAAM,SAAS,CACb,SAAU,SAAU,MAAO,aAAc,OAAQ,kBACjD,WAAY,KAAM,SAAU,GAC5B,YAAa,KAAK,OAAO,cAAe,aAAc,KAAK,OAAO,kBAClE,YAAa,KAAK,OAAO,aACzB,WAAY,KAAK,IAAI,EAAI,MACzB,QAAS,SAAS,aAAc,KAAK,OAAO,cAAe,KAAK,OAAO,iBAAiB,EACxF,QAAS,CAAC,CAAC,IACb,CAAC,EACD,OAAO,MACT,OAAS,IAAU,CACjB,MAAM,SAAS,CAAE,SAAU,SAAU,MAAO,aAAc,OAAQ,kBAAmB,WAAY,KAAM,SAAU,GAAI,WAAY,KAAK,IAAI,EAAI,MAAO,QAAS,MAAO,MAAO,KAAK,SAAW,OAAO,GAAG,CAAE,CAAC,EACzM,OAAO,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,CACtC,CACF,CAzBe,0DA2Bf,eAAsB,sBAAsB,MAAiB,WAAoB,SAA8C,CAC7H,GAAI,MAAM,SAAW,EAAG,MAAO,CAAC,EAChC,GAAI,aAAe,SAAU,OAAO,MAGpC,MAAM,MAAQ,GACd,MAAM,QAA6B,IAAI,MAAM,MAAM,MAAM,EAAE,KAAK,IAAI,EAEpE,MAAM,UAAY,aAAO,OAAgD,CACvE,MAAM,SAAW,QAAQ,IAAI,oBAAsB,YACnD,GAAI,WAAa,SAAU,CACzB,MAAMC,GAAI,MAAM,wBAAwB,MAAO,WAAY,QAAQ,EACnE,GAAIA,GAAE,KAAM,GAAM,IAAM,IAAI,EAAG,OAAOA,GACtC,OAAO,2BAA2B,MAAO,WAAY,QAAQ,CAC/D,CACA,MAAM,EAAI,MAAM,2BAA2B,MAAO,WAAY,QAAQ,EACtE,GAAI,EAAE,KAAM,GAAM,IAAM,IAAI,EAAG,OAAO,EACtC,OAAO,wBAAwB,MAAO,WAAY,QAAQ,CAC5D,EAVkB,aAYlB,QAAS,EAAI,EAAG,EAAI,MAAM,OAAQ,GAAK,MAAO,CAC5C,MAAM,MAAQ,MAAM,MAAM,EAAG,EAAI,KAAK,EACtC,MAAM,aAAe,MAAM,UAAU,KAAK,EAC1C,QAAS,EAAI,EAAG,EAAI,aAAa,OAAQ,IAAK,CAC5C,QAAQ,EAAI,CAAC,EAAI,aAAa,CAAC,CACjC,CACF,CAEA,OAAO,OACT,CA7BsB,sDAiCtB,MAAM,WAAa,QAAC,GAAY,OAC9B,2CAA2C,WAAW,EAAE,CAAC;AAAA;AAAA,EAAyE,IAAI,GADrH,cAGnB,eAAe,6BAA6B,KAAc,GAAoC,CAC5F,GAAI,CAAC,UAAW,OAAO,KACvB,MAAM,MAAQ,KAAK,IAAI,EACvB,GAAI,CACF,MAAM,IAAM,MAAM,UAAU,SAAS,OAAO,CAC1C,MAAO,gBACP,WAAY,IACZ,SAAU,CAAC,CAAE,KAAM,OAAQ,QAAS,WAAW,GAAI,IAAI,CAAE,CAAC,CAC5D,CAAC,EACD,MAAM,OAAU,IAAI,QAAQ,CAAC,EAA0B,KAAK,KAAK,EACjE,MAAM,SAAS,CACb,SAAU,YAAa,MAAO,gBAAiB,OAAQ,oBACvD,SAAU,GAAI,YAAa,IAAI,MAAM,aAAc,aAAc,IAAI,MAAM,cAC3E,YAAa,IAAI,MAAM,aAAe,IAAI,MAAM,cAChD,WAAY,KAAK,IAAI,EAAI,MACzB,QAAS,SAAS,gBAAiB,IAAI,MAAM,aAAc,IAAI,MAAM,aAAa,EAClF,QAAS,IACX,CAAC,EACD,OAAO,MACT,OAAS,IAAU,CACjB,MAAM,SAAS,CAAE,SAAU,YAAa,MAAO,gBAAiB,OAAQ,oBAAqB,SAAU,GAAI,WAAY,KAAK,IAAI,EAAI,MAAO,QAAS,MAAO,MAAO,KAAK,OAAQ,CAAC,EAChL,OAAO,IACT,CACF,CAvBe,oEAyBf,eAAe,0BAA0B,KAAc,GAAoC,CACzF,GAAI,CAAC,OAAQ,OAAO,KACpB,MAAM,MAAQ,KAAK,IAAI,EACvB,GAAI,CACF,MAAM,IAAM,MAAM,OAAO,KAAK,YAAY,OAAO,CAC/C,MAAO,aACP,SAAU,CAAC,CAAE,KAAM,OAAQ,QAAS,WAAW,GAAI,IAAI,CAAE,CAAC,EAC1D,WAAY,GACd,CAAC,EACD,MAAM,OAAS,IAAI,QAAQ,CAAC,GAAG,SAAS,SAAS,KAAK,GAAK,GAC3D,MAAM,SAAS,CACb,SAAU,SAAU,MAAO,aAAc,OAAQ,oBACjD,SAAU,GAAI,YAAa,IAAI,OAAO,cAAe,aAAc,IAAI,OAAO,kBAC9E,YAAa,IAAI,OAAO,aAAc,WAAY,KAAK,IAAI,EAAI,MAC/D,QAAS,SAAS,aAAc,IAAI,OAAO,cAAe,IAAI,OAAO,iBAAiB,EACtF,QAAS,IACX,CAAC,EACD,OAAO,MACT,OAAS,IAAU,CACjB,MAAM,SAAS,CAAE,SAAU,SAAU,MAAO,aAAc,OAAQ,oBAAqB,SAAU,GAAI,WAAY,KAAK,IAAI,EAAI,MAAO,QAAS,MAAO,MAAO,KAAK,OAAQ,CAAC,EAC1K,OAAO,IACT,CACF,CAtBe,8DAyBf,eAAsB,2BACpB,KACA,WACiC,CACjC,MAAM,QAAU,CAAC,KAAM,KAAM,KAAM,IAAI,EAAE,OAAQ,GAAM,IAAM,UAAU,EACvE,MAAM,OAAiC,CAAE,CAAC,UAAU,EAAG,IAAK,EAC5D,MAAM,SAAW,QAAQ,IAAI,oBAAsB,YAEnD,MAAM,QAAQ,IACZ,QAAQ,IAAI,MAAO,IAAO,CACxB,IAAI,WAA4B,KAChC,GAAI,WAAa,SAAU,CACzB,WAAa,MAAM,0BAA0B,KAAM,EAAE,GAAK,MAAM,6BAA6B,KAAM,EAAE,CACvG,KAAO,CACL,WAAa,MAAM,6BAA6B,KAAM,EAAE,GAAK,MAAM,0BAA0B,KAAM,EAAE,CACvG,CACA,GAAI,WAAY,OAAO,EAAE,EAAI,UAC/B,CAAC,CACH,EAEA,OAAO,MACT,CArBsB","names":["import_db","Anthropic","OpenAI","r"],"ignoreList":[],"sources":["/opt/canhelp/apps/api/src/translate.ts"],"sourcesContent":[null]}}