1;!function(){try { var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&((e._debugIds|| (e._debugIds={}))[n]="b27a16bd-59b6-fc0b-d7cf-218d7dc5a834")}catch(e){}}(); 2(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,916392,295711,487444,e=>{"use strict";function t(e,r=!1){let n={};for(let[t,a]of Object.entries(e??{})){let e=function(e,t){let{value:r,unit:n}="object"==typeof e&&null!=e&&!Array.isArray(e)&&Object.keys(e).includes("value")?e:{value:e,unit:void 0},a=function(e){let t="string"==typeof e?"string":"boolean"==typeof e?"boolean":"number"!=typeof e||Number.isNaN(e)?null:Number.isInteger(e)?"integer":"double";if(t)return{value:e,type:t}}(r),o=n&&"string"==typeof n?{unit:n}:{};if(a)return{...a,...o};if(!t||"skip-undefined"===t&&void 0===r)return;let i="";try{i=JSON.stringify(r)??""}catch{}return{value:i,type:"string",...o}}(a,r);e&&(n[t]=e)}return n}e.s(["serializeAttributes",0,t],916392);var r=e.i(444035),n=e.i(938598),a=e.i(943913);function o(e,t){return t?(0,r.withScope)(t,()=>{let o=(0,a.getActiveSpan)(),i=o?(0,a.spanToTraceContext)(o):(0,r.getTraceContextFromScope)(t);return[o?(0,n.getDynamicSamplingContextFromSpan)(o):(0,n.getDynamicSamplingContextFromScope)(e,t),i]}):[void 0,void 0]}e.s(["_getTraceInfoFromScope",0,o],295711);var i=e.i(957941),s=e.i(475392),l=e.i(501046),u=e.i(874292),c=e.i(333204),p=e.i(752925),d=e.i(643107),m=e.i(497569);function g(e,t,r,n=!0){!r||!n&&t in e||(e[t]=r)}function f(e,t){var r;let n=_(),a=(r=e,_().get(r));void 0===a?n.set(e,[t]):a.length>=1e3?(y(e,a),n.set(e,[t])):n.set(e,[...a,t])}function y(e,t){var r,n,a,o;let i,s=t??(o=e,_().get(o))??[];if(0===s.length)return;let l=e.getOptions(),u=(r=l._metadata,n=l.tunnel,a=e.getDsn(),i={},r?.sdk&&(i.sdk={name:r.sdk.name,version:r.sdk.version}),n&&a&&(i.dsn=(0,d.dsnToString)(a)),(0,m.createEnvelope)(i,[[{type:"trace_metric",item_count:s.length,content_type:"application/vnd.sentry.items.trace-metric+json"},{items:s}]]));_().set(e,[]),e.emit("flushMetrics"),e.sendEnvelope(u)}function _(){return(0,i.getGlobalSingleton)("clientToMetricBufferMap",()=>new WeakMap)}e.s(["_INTERNAL_captureMetric",0,function(e,n){let a=n?.scope??(0,r.getCurrentScope)(),i=n?.captureSerializedMetric??f,d=a?.getClient()??(0,r.getClient)();if(!d){s.DEBUG_BUILD&&l.debug.warn("No client available to capture metric.");return}let{_experiments:m,enableMetrics:y,beforeSendMetric:_}=d.getOptions();if(!(y??m?.enableMetrics??!0)){s.DEBUG_BUILD&&l.debug.warn("metrics option not enabled, metric will not be captured.");return}let{user:h,attributes:x}=(0,u.getCombinedScopeData)((0,r.getIsolationScope)(),a),b=function(e,t,r){let{release:n,environment:a}=t.getOptions(),o={...e.attributes};g(o,"user.id",r.id,!1),g(o,"user.email",r.email,!1),g(o,"user.name",r.username,!1),g(o,"sentry.release",n),g(o,"sentry.environment",a);let{name:i,version:s}=t.getSdkMetadata()?.sdk??{};g(o,"sentry.sdk.name",i),g(o,"sentry.sdk.version",s);let l=t.getIntegrationByName("Replay"),u=l?.getReplayId(!0);return g(o,"sentry.replay_id",u),u&&l?.getRecordingMode()==="buffer"&&g(o,"sentry._internal.replay_is_buffering",!0),{...e,attributes:o}}(e,d,h);d.emit("processMetric",b);let T=_||m?.beforeSendMetric,A=T?T(b):b;if(!A){s.DEBUG_BUILD&&l.debug.log("`beforeSendMetric` returned `null`, will not send metric.");return}let O=function(e,r,n,a){let[,i]=o(r,n),s=(0,c._getSpanForScope)(n),l=s?s.spanContext().traceId:i?.trace_id,u=s?s.spanContext().spanId:void 0;return{timestamp:(0,p.timestampInSeconds)(),trace_id:l??"",span_id:u,name:e.name,type:e.type,unit:e.unit,value:e.value,attributes:{...t(a),...t(e.attributes,"skip-undefined")}}}(A,d,a,x);s.DEBUG_BUILD&&l.debug.log("[Metric]",O),i(d,O),d.emit("afterCaptureMetric",A)},"_INTERNAL_flushMetricsBuffer",0,y],487444)},664753,e=>{"use strict";var t=e.i(487444);function r(e,r,n,a){(0,t._INTERNAL_captureMetric)({type:e,name:r,value:n,unit:a?.unit,attributes:a?.attributes},{scope:a?.scope})}e.s(["count",0,function(e,t=1,n){r("counter",e,t,n)},"distribution",0,function(e,t,n){r("distribution",e,t,n)},"gauge",0,function(e,t,n){r("gauge",e,t,n)}],918457);var n=e.i(918457);e.s(["metrics",0,n],664753)},864156,988522,758818,251074,236465,e=>{"use strict";var t=e.i(15337),r=e.i(476868),n=e.i(530072);let a=({messages:e,contextLimit:t=0,allowedContextLength:r,dependencies:{getEstimatedTokens:n,getTextContent:a}}={})=>
2{if(!e||!e.length)return{skipped:0,contextMessages:[]};let o=[],i=e[e.length-1];o.unshift(i);let s=n(a(i.content));for(let t=e.length-2;t>=0;t--){let i=e[t];if((s+=n(a(i.content)))>r){for(let r=t;r>=0;r--)("system"===e[r].role||"training-message"===e[r].type)&&o.unshift(e[r]);if("assistant"===o[0].role)for(;o.length&&o[0]?.role!=="user";)o.shift();break}o.unshift(i)}if(t>0){let r=o.filter(e=>"system"===e.role).length,n=o.slice(-Math.min(e.length-r,t)),a=[];if(n[0]?.role==="tool"){let r=e.length-t;for(let t=r-1;t>=0&&(a.unshift(e[t]),!e[t]?.tool_calls);t--);}o=[...o.slice(0,r),...a,...n]}return{skipped:e.length-o.length,contextMessages:o}},o=e=>{let t=Math.min(.15*e,2e3);return e-t};var i=e.i(393088);let s=[": OPENROUTER PROCESSING"],l=(e,t,r,n)=>{let a;if(t.trim())try{if(s.includes(t.trim()))return;if((a=JSON.parse(t)).error){let e="";e="server_error"===a.error.type?"OpenAI is currently experiencing a server error. This could be a temporary issue caused by high demand. Please try again. Original error message: "+a.error.message:`Sorry, the provider of this model has rejected your request (Message: ${a.error.message||"(Unknown)"}). Please try again or contact support.`,n(Error(e));return}let o=a?.usage;if(o)for(let t in o)e.usage=e.usage||{},e.usage[t]=a.usage[t];if(a?.citations&&(e.citations=a?.citations),!a.choices||!a.choices.length)return;let i=a?.choices?.[0]?.delta;for(let t in"string"!=typeof i.reasoning||i.reasoning_content||(i.reasoning_content=i.reasoning,delete i.reasoning),i?.annotations&&(e.citations=[...e.citations||[],...i.annotations],delete i.annotations),"reasoning_content"in i&&null===i.reasoning_content&&("<think>"===i.content?(e.reasoning_tag_convert_start=Date.now(),i.content=""):"</think>"===i.content?(e.reasoning_tag_convert_finish=Date.now(),i.content=""):e.reasoning_tag_convert_start&&!e.reasoning_tag_convert_finish&&(i.reasoning_content=i.content,i.content="")),i.content&&"string"==typeof i.content&&("<think>\n"===i.content||"<think>"===i.content?(e.thinking_tag_start=Date.now(),i.content=""):/^\n*<\/think>\n*$/.test(i.content)?(e.thinking_tag_finish=Date.now(),i.content=""):e.thinking_tag_start&&!e.thinking_tag_finish&&(i.reasoning_content=i.content,i.content="")),i.reasoning_content&&!e._reasoning_start&&(e._reasoning_start=Date.now()),(i.content||i.tool_calls)&&e.reasoning_content&&!e._reasoning_finish&&(e._reasoning_finish=Date.now()),i)!function e({target:t,key:r,value:n,ignoreKeysIfExist:a=[]}){if((!a.includes(r)||!t[r])&&null!==n)if("string"==typeof n)if("content"===r&&Array.isArray(t.content)){let e=t.content.findLast(e=>"text"===e.type);e||(e={type:"text",text:""},t.content.push(e)),e.text=(e.text||"")+(n||"")}else t[r]=(t[r]||"")+(n||"");else if(Array.isArray(n))for(let o in t[r]=t[r]||[],n){let i=n[o],s=i.index;for("object"==typeof i&&("index"in i)||(console.warn('Property "index" is missing in array item',i),s=Number(o));i?.type&&t[r][s]?.type&&t[r][s].type!==i.type;)s+=1;e({target:t[r],key:s,value:i,ignoreKeysIfExist:a})}else if("object"==typeof n)for(let o in t[r]=t[r]||{},n)e({target:t[r],key:o,value:n[o],ignoreKeysIfExist:a});else t[r]=n}({target:e,key:t,value:i[t],ignoreKeysIfExist:["role","id","type","format","name"]});return r&&(e?.tool_calls?.length===0&&e.content&&delete e.tool_calls,r(e)),a.choices[0]?.finish_reason||a.choices[0]?.finish}catch(e){console.error("stream error",e)}};function u(e,t="\n\n"){if(!e||!Array.isArray(e))return e;let r=e.findIndex(e=>"text"===e.type),n=e.filter(e=>"text"===e.type).filter(e=>"string"==typeof e.text&&""!==e.text.trim()).map(e=>e.text).join(t),a=[...e.filter(e=>"text"!==e.type)];return r>=0&&n&&a.splice(r,0,{type:"text",text:n}),a}var c=e.i(639007),p=e.i(392274),d=e.i(35298),m=e.i(585314),g=e.i(417827);let f=(e,{metadata:t}={})=>` 3<FILE_ATTACHMENT name="${t?.name||"(Empty)"}"> 4${e} 5</FILE_ATTACHMENT> 6`;var y=e.i(963510);class _ extends Error{}async function h(e,{blobStorageController:t}={}){let r=e.metadata?.base64;if(e.metadata?.localBlobID){if(!t)throw new _("Blob file found but blobStorageController is not provided");if(!(r=await t.getBlobBase64(e.metadata.localBlobID,{metadata:e.metadata})))throw new _(`Unable to access the attachment "${e.metadata.name||""}". Please try again or check your attachments.`)}switch(e.type){case"tm_image_file":return e.sync?.url&&(r=await (0,p.fetchFileURLAsBase64String)(e.sync?.url)),{base64:r};case"tm_text_file":{let t=e.text;if(!t&&e.sync.url)try{t=await (0,p.fetchFileURLAsString)(e.sync.url)}catch(t){throw console.error("error fetching attachment",t),new _(`Unable to access the attachment "${e.metadata?.name||e.sync.url}", it may have been deleted or became unaccessible. Please try again or remove the attachments to continue the chat.`)}return{text:f(t,{metadata:e.metadata}),rawText:t}}
6case"tm_blob_file":if(!r&&e.sync?.url)try{r=await (0,p.fetchFileURLAsBase64String)(e.sync?.url)}catch(t){throw console.error("error fetching attachment",t),new _(`Unable to retrieve the attachment "${e.metadata?.name||e.sync.url}". Please try again or check your attachments.`)}if(e.metadata?.fileFormat===y.FILE_FORMAT.PDF){let t=await (0,d.pdfBlobToText)((0,m.base64UrlToFile)(r,e.metadata?.name)),n="";return{...(n="success"===t.state?t.content:"[Could not read PDF text content]")?{text:f(n,{metadata:e.metadata}),rawText:n}:{},base64:r}}if(e.metadata?.fileFormat===y.FILE_FORMAT.XLSX){let t=(0,m.base64UrlToFile)(r,e.metadata?.name),n=await t.arrayBuffer(),a=(0,g.read)(n),o="";return a.SheetNames.forEach(e=>{let t=a.Sheets[e],r=g.utils.sheet_to_txt(t);o+=r}),{text:f(o,{metadata:e.metadata}),rawText:o,base64:r}}if(e.metadata?.fileFormat===y.FILE_FORMAT.DOCX){let t=await (0,m.base64UrlToFile)(r,e.metadata?.name).arrayBuffer(),n=await (0,c.extractRawText)({arrayBuffer:t});if(n?.value)return{text:f(n.value,{metadata:e.metadata}),rawText:n.value,base64:r};throw new _("Could not read the file.")}if(e.metadata?.fileFormat===y.FILE_FORMAT.TEXT){let t=(0,m.base64UrlToFile)(r,e.metadata?.name),n=await (0,m.readFileAsText)(t);if(n)return{text:f(n,{metadata:e.metadata}),rawText:n,base64:r};throw new _("Could not read the file.")}return{base64:r};default:throw new _(`Unsupported attachment type: ${e}`)}}let x=(e,{cacheController:t,blobStorageController:r})=>t&&"function"==typeof t&&e.id?t({cacheKey:"attachment-"+e.id,cacheGroup:"attachment_parser",fn:()=>h(e,{blobStorageController:r}),expireInSeconds:864e4}):(t||console.warn("parseAttachmentWithCache called without cache controller provided. Skipping cache."),"function"!=typeof t&&console.warn("parseAttachmentWithCache called with invalid cache controller. Skipping cache."),e.id||console.warn("Attachment without id, skipping cache."),h(e,{blobStorageController:r}));e.s(["parseAttachmentWithCache",0,x],988522);var b=e.i(357287);let T={system:["role","content","name"],user:["role","content","name"],assistant:["role","content","name","refusal","tool_calls","function_call"],tool:["role","content","tool_call_id"],function:["role","content","name"]},A={system:["text"],user:["text","image_url","input_audio","file"],assistant:["text","refusal"],tool:["text"]},O={text:["type","text"],image_url:["type","image_url"],file:["type","file"],refusal:["type","refusal"]},E=async({messages:e,cacheController:t,blobStorageController:r,pdfSupported:n,externalPDFURLSupported:a,externalImageURLSupported:o=!0})=>{let{totalSizeInMB:i}=(0,b.checkTotalPDFSizeFromMessages)(e),s=n&&i<=50,l=async e=>{let n;if(e.metadata?.localBlobID){if(!r)throw Error("Blob file found but blobStorageController is not provided");if(!(n=await r.getBlobBase64(e.metadata.localBlobID,{metadata:e.metadata})))throw Error(`Unable to access the attachment "${e.metadata.name||""}". Please try again or check your attachments.`)}else if(!o&&e.sync?.url){let{base64:a}=await x(e,{cacheController:t,blobStorageController:r});n=a}else n=e.sync?.url||e.metadata.base64;return{type:"image_url",image_url:{url:n,detail:"high"}}};return await Promise.all(e.map(async e=>{if(!Array.isArray(e.content))return e;if(["user","tool"].includes(e.role)){let n=(await Promise.all(e.content.map(async e=>{if("tm_image_file"===e.type)return await l(e);if(["tm_text_file","tm_blob_file"].includes(e.type)){if(s&&e.metadata?.fileFormat==="pdf"&&e.metadata?.size<0x3200000){let n;if(a&&e.sync?.url)n=e.sync.url;else{let{base64:a}=await x(e,{cacheController:t,blobStorageController:r});n=a}return{type:"file",file:{filename:e.metadata?.name||"file.pdf",file_data:n}}}let{text:n}=await x(e,{cacheController:t,blobStorageController:r});return n?{type:"text",text:n}:{type:"text",text:e.text}}return e}))).filter(e=>"string"!=typeof e.text||""!==e.text.trim());return{...e,content:u(n)}}if("assistant"===e.role){let t=await Promise.all(e.content.map(async e=>"tm_image_file"===e.type?await l(e):e));return{...e,content:t}}return e}))},k=async({messages:e,cacheController:t,blobStorageController:r})=>await Promise.all(e.map(async e=>{if(!e.reasoning_details||Array.isArray(e.reasoning_details)||"object"!=typeof e.reasoning_details||!e.reasoning_details.metaBlobID)return e;let n=e.metaBlobs?.find(t=>
6t.id===e.reasoning_details.metaBlobID);if(!n)return e;let{rawText:a}=await x(n,{cacheController:t,blobStorageController:r}),o=(0,b.parseOrNull)(a);return o?{...e,reasoning_details:o}:e}));var I=e.i(524572),w=e.i(566406),S=e.i(236910);let P={"openai-response-api":{PROVIDER_WEB_SEARCH:[{type:"web_search"}],PROVIDER_CODE_EXECUTION:[{type:"code_interpreter",container:{type:"auto",memory_limit:"4g"}}]},claude:{PROVIDER_WEB_SEARCH:[{type:"web_search_20250305",name:"web_search",max_uses:5},{type:"web_fetch_20250910",name:"web_fetch",max_uses:10,max_content_tokens:1e4}],PROVIDER_CODE_EXECUTION:[{type:"code_execution_20250825",name:"code_execution"}]},gemini:{PROVIDER_WEB_SEARCH:[{google_search:{}},{url_context:{}}],PROVIDER_CODE_EXECUTION:[{code_execution:{}}]}},v=({providerTools:e,providerToolDefinitions:t,apiType:r})=>Array.isArray(e)?e.flatMap(e=>{let n=t?.find(t=>t.name===e);return n?.definition?n.definition:P[r]?.[e]||[]}):[];e.s(["getProviderToolDefinitions",0,v,"isProviderToolAvailable",0,e=>!!P[e]],758818);let D="Something went wrong. This could be a temporary network connection issue. Please try again or contact support. Opening the console might help clarifying the issue.",R=[{name:"temperature",keyName:"temperature",type:"number"},{name:"presencePenalty",keyName:"presence_penalty",type:"number"},{name:"frequencyPenalty",keyName:"frequency_penalty",type:"number"},{name:"topP",keyName:"top_p",type:"number"},{name:"maxTokens",keyName:"max_completion_tokens",type:"number"},{name:"reasoningEffort",keyName:"reasoning_effort",type:"enum",options:["low","medium","high"]}];function C(e){let t;if(!e||!e.images||!e.images?.length)return e;let r=e.images,n=e.content;if("string"==typeof n){let e=n.trim();t=e?[{type:"text",text:e}]:[]}else t=Array.isArray(n)?[...n]:[];for(let e of r)if("image_url"===e.type&&e.image_url?.url){let r=e.image_url.url,n="image/png";if(r.startsWith("data:"))try{let{mimeType:e}=(0,i.parseGenericBase64ToRequestData)(r);n=e}catch(e){}t.push({id:(0,I.v4)(),type:"tm_image_file",metadata:{type:n,base64:r}})}return e.content=t,delete e.images,e}async function N({endpoint:e,model:t,modelInfo:i,temperature:s,reasoningEffort:u,presencePenalty:c,frequencyPenalty:p,extraModelParamsEnabled:d,extraModelParamsJSON:g,topP:f,maxTokens:y,parameterDefinitions:_=[],contextLimit:h=0,contextLengthOverride:x,signal:P,stream:L,messages:M,functions:B,providerTools:U,providerToolDefinitions:$=[],extras:j={},headers:F={},onStreamStarted:q=()=>{},onStreamTextChunk:G=e=>{},onModelUnavailable:H=()=>{},onContextSkipped:V=()=>{},onFreeMessagesCountChanged:K=()=>{},onAborted:Y=()=>{},onStreamError:X=()=>{},onRequestPrepared:z=()=>{},cacheController:J,blobStorageController:W}={}){let Q,Z,ee=["text","image_url","input_audio","refusal","audio","file",...w.BUILT_IN_TM_CONTENT_TYPES],et=["system","user","assistant","function","tool"],{contextMessages:er,skipped:e
6n}=a({messages:M.filter(e=>et.includes(e.role)).map(e=>e.tool_calls?{...e,tool_calls:e.tool_calls.map(e=>r.default.omit(e,["index","pluginUUID","pluginFunctionID","thoughtSignature","output_item_id","call_id","annotations"]))}:e).map(e=>{if(Array.isArray(e.content)){let t=e.content.filter(e=>ee.includes(e.type));return t.length!==e.content.length&&console.warn(`Some content in the message is not supported: ${e.content.filter(e=>!ee.includes(e.type)).map(e=>e.type).join(", ")}`),{...e,content:t}}return e}).map(e=>{if(Array.isArray(e.content)&&1===e.content.length){let t=e.content[0];if("text"===t.type)return{...e,content:t.text||""}}return e}).map(e=>"system"===e.role&&!1===i.systemMessageSupported?{...e,role:"user"}:e),contextLimit:h,allowedContextLength:o(x||i?.contextLength),dependencies:{getEstimatedTokens:n.getEstimatedTokens,getTextContent:b.getTextContent}});if(V?.(en),i?.streamOutputSupported===!1&&L)return{error:`The model you are using (${i.title}) doesn't support streaming output. Please disable output streaming and try again.`};let ea=d&&(0,b.parseOrNull)(g)||{};try{let t="https://openrouter.ai/api/v1/chat/completions"===e,n=[...t?["reasoning_details"]:[],..."https://api.moonshot.ai/v1/chat/completions"===e||"https://api.deepseek.com/chat/completions"===e||"https://api.deepseek.com/v1/chat/completions"===e?["reasoning_content"]:[]],a={...t||"https://ai-gateway.vercel.sh/v1/chat/completions"===e?{assistant:["image_url"]}:{}};Z=await E({messages:er,cacheController:J,blobStorageController:W,pdfSupported:i?.pdfSupported,externalPDFURLSupported:i?.externalPDFURLSupported,externalImageURLSupported:i?.externalImageURLSupported}),t&&(Z=await k({messages:Z,cacheController:J,blobStorageController:W})),Z=((e=[],{extraSupportedMessageProperties:t=[],extraSupportedContentTypesByRole:n={}}={})=>e.map(e=>{var a;let o=[...T[e.role]||[],...t],i=r.default.pickBy(r.default.pick(e,o),e=>null!=e);return"content"in i&&(i.content=(({content:e,role:t,extraSupportedContentTypesByRole:n})=>{if(!Array.isArray(e))return e;let a=[...A[t]||[],...n[t]||[]];return e.filter(e=>a.includes(e?.type)).map(e=>(({contentPart:e,fieldsByType:t})=>{let n=t[e?.type];if(!n)return null;let a=r.default.pickBy(r.default.pick(e,n),e=>null!=e);return"image_url"===e.type&&(a.image_url=r.default.pickBy(r.default.pick(e.image_url,["url","detail"]),e=>null!=e)),"file"===e.type&&(a.file=r.default.pickBy(r.default.pick(e.file,["file_data","file_id","filename"]),e=>null!=e)),a})({contentPart:e,fieldsByType:O})).filter(Boolean)})({content:i.content,role:i.role,extraSupportedContentTypesByRole:n})),i.tool_calls&&(i.tool_calls=Array.isArray(a=i.tool_calls)?a.map(e=>r.default.pickBy({id:e.id,type:e.type,function:e.function?r.default.pickBy(r.default.pick(e.function,["name","arguments"]),e=>null!=e):void 0},e=>null!=e)):a),i.function_call&&(i.function_call=r.default.pickBy(r.default.pick(i.function_call,["name","arguments"]),e=>null!=e)),i}))(Z,{extraSupportedMessageProperties:n,extraSupportedContentTypesByRole:a})}catch(e){return console.error(e),{error:e.message}}try{let r={"Content-Type":"application/json",...F},n={model:t,stream:L,...i.hasStreamUsageReport&&L&&"https://api.openai.com/v1/chat/completions"===e?{stream_options:{include_usage:!0}}:{},messages:Z,...B?.length||U?.length?{tools:[...v({providerTools:U,providerToolDefinitions:$,apiType:"openai"}),...(B||[]).map(e=>{let{annotations:t,...r}=e;return{type:"function",function:r}})],tool_choice:"auto"}:{}};(0,S.applyModelParameters)({body:n,modelParameters:{temperature:s,presencePenalty:c,frequencyPenalty:p,topP:f,maxTokens:parseInt(y),reasoningEffort:u},parameterDefinitions:(0,S.mergeParameterDefinitions)(R,_)}),n={...n,...ea,...j},z&&z({endpoint:e,headers:r,body:n});try{Q=await fetch(e,{method:"POST",signal:P,headers:r,body:JSON.stringify(n)})}catch(e){if(e instanceof TypeError)return{code:"client_fetch_error",error:"Could not connect to the API. Please check your network connection and try again (code: 1)."};throw e}}catch(e){if("AbortError"===e.name)return void Y();throw e}if(500===Q.status)return{status:Q.status,error:"Could not connect to OpenAI API. Please try again later. This could be because OpenAI's server is experiencing high demand and rejected your request. Go to https://status.open
6ai.com/ to check their status."};if(Q.status>=400){let e;try{e=await Q.clone().json()}catch(e){return console.error("Could not parse JSON response from OpenAI API",e),console.error("Original error message:",await Q.clone().text()),{status:Q.status,error:"Sorry, this model is currently experiencing a problem from the server side. Please try again later or select another model. Open the console log to see the original error message."}}if("access_denied"===e.error)return{status:Q.status,error:"Access denied. Please try to reopen the app. If the issue persists, please contact support."};if(e.error?.code==="setapp_refresh_token_failed")return window.webkit?.messageHandlers?.TypingMindMacApp?.postMessage("SETAPP_REFRESH_TOKEN_FAILED"),{status:Q.status,error:"Your login session has expired. Please close the app and reopen again."};if(e.error?.code==="setapp_insufficient_credits"){let t=e.error.paymentUrl;return{status:Q.status,error:t?`You've run out of Setapp AI credits. Add more credits here: ${t}`:"You've run out of Setapp AI credits. Please add more credits in your Setapp account and try again."}}if(e.error?.type==="insufficient_quota")return{status:Q.status,error:"Your OpenAI API key has run out of quota. Please go to your OpenAI Dashboard to fix this: https://platform.openai.com/account/billing/overview"};if(429===Q.status)return e.userMessage?{status:Q.status,error:e.userMessage}:{status:Q.status,error:"OpenAI has rejected your request with error code 429. Here are the possible reasons: 1. You are sending requests too quickly; 2. You have hit your maximum monthly spend (hard limit); 3. The model is currently overloaded. Here is the error message from OpenAI: "+(e.error?.message||"")};if(e.error&&"invalid_api_key"===e.error.code){let e=F?.Authorization||F?.authorization;return e&&e.includes("encrypted-")?{status:Q.status,error:"API Key is locked, please unlock it first."}:{status:Q.status,error:"Invalid API key or the API key has been revoked."}}if(e.error&&"context_length_exceeded"===e.error.code)return{status:Q.status,code:"context_length_exceeded",error:e.error?.message};if(i?.providerID==="xiaomi"&&/webSearchEnabled is false/i.test(e.error?.param||""))return{status:Q.status,error:"To use Web browser with Xiaomi models, enable the âWeb Searchâ plugin here: https://platform.xiaomimimo.com/console/plugin, then try again. It may take a few minutes to apply. Otherwise, turn off web search for this chat."};if(e.error&&e.error.message){let r=e.error.message;r.match(/The model: `(.*)` does not exist/)&&(r+=`. You are using ${t} model. Please change the model in the setting and try again. Note that even if you have ChatGPT Plus, you still need to request access to the GPT-4 API in order to use it with your API Key. This is OpenAI's restriction and we can't do anything about it. You can join the waitlist here https://openai.com/waitlist/gpt-4-api.`),H();let n=i?.source||t;return{status:Q.status,error:`Sorry, ${n} has rejected your request. Here is the error message from ${n}: `+r}}return e.userMessage?{status:Q.status,error:e.userMessage}:"tm_not_authorized"===e.code?{status:Q.status,error:"Your session has expired. Please reload the app and try again."}:{status:Q.status,error:D+" Technical details: "+JSON.stringify(e),serverError:e}}if(!Q.ok)return{status:Q.status,error:D+" Technical details: Not OK."};let eo=Q.headers.get("x-remaining-free-messages");eo&&K(Number(eo));let ei=null,es=null,el=null,eu=null,ec=!1;if(L){if("u"<typeof TextDecoderStream)return{error:"Your browser doesn't support streaming response. Please upgrade your browser to the latest version or turn off streaming."};let e=Q.body.pipeThrough(new TextDecoderStream).getReader(),t={content:""};q();try{let r="",n=!1;for(;;){let{value:a,done:o}=await e.read();if(o||n)break;for(let e of a)if(r+=e,":"===e&&"data:"===r&&(r=""),"\n"===e){if("[DONE]"===r.trim()){n=!0,r="";break}let e=l(t,r,e=>{G(C({...e}))},X);ei=ei||e,r=""}}}catch(t){"AbortError"===t.name?(e.releaseLock(),ec=!0):X(t)}if(es=C({...t,...ec?{tmMetadata:{incomplete:!0}}:{}}),t.usage)el=t.usage;else{let e=(0,n.getEstimatedTokens)(t.content),r=(0,n.getEstimatedTokens)(er.map(e=>(0,b.getTextContent)(e.content)).join("\n"));el={completion_tokens:e,prompt_tokens:r,total_tokens:e+r}}t.citations&&(eu=t.citations)}else{let e=await Q.json();es=C(e.choices?.[0]?.message),el=e.usage,ei=e.choices?.[0]?.finish_reason,eu=e.citations||es?.annotations}es&&"string"==typeof es.reasoning&&!es.reasoning_content&&(es.reasoning_content=es.reasoning,delete es.reasoning),es?.tool_calls&&0===es.tool_calls.length&&es.content&&delete es.tool_calls,es?.annotations&&delete es.annotations;
6let ep=el?.prompt_tokens_details?.cached_tokens;ep&&(el.cache_read_input_tokens=ep,el.prompt_tokens=el.prompt_tokens-ep),({message:es,citations:eu}=function({message:e,citations:t}){if(!e?.executed_tools)return{message:e,citations:t};let r={...e},n=r.executed_tools.flatMap(e=>e?.search_results?.results||[]).filter(e=>e?.url).map(e=>({title:e.title||e.url,url:e.url}));return delete r.executed_tools,{message:r,citations:Array.isArray(t)&&t.length?t:n}}({message:es,citations:eu})),"object"==typeof eu?.[0]&&(eu=eu.map(e=>e.url_citation?.url?{title:e.url_citation.title,url:e.url_citation.url}:e.url?{title:e.title||e.url,url:e.url}:null).filter(Boolean)),"string"==typeof eu?.[0]&&(eu=eu.map(e=>({title:e,url:e})));let ed=[],em=JSON.stringify(es?.reasoning_details);if(es?.reasoning_details&&em.length>w.REASONING_DETAILS_EXPORT_THRESHOLD_BYTES){let e=(0,I.v4)();ed.push({id:e,type:"tm_blob_file",text:"[Openrouter reasoning details]",metadata:{name:`reasoning_details_${es?.id||(0,I.v4)()}.txt`,base64:(0,m.convertTextToBase64Url)(em),fileFormat:"text",size:em.length}}),es.reasoning_details={metaBlobID:e}}return{response:{...es,usage:el,finish:ei||"stop",citations:eu,metaBlobs:ed}}}var L=e.i(682876),M=e.i(827264);let B=["bash_code_execution","text_editor_code_execution"],U=["bash_code_execution_tool_result","text_editor_code_execution_tool_result"],$=({endpoint:e,fileID:t})=>{let r=e?.replace(/\/messages$/,"")||"https://api.anthropic.com/v1",n=`${r}/files/${t}/content`;return n.startsWith("https://api.anthropic.com/")?(0,b.getCloudEndpoint)()+`/api/claude/v1/files/${t}/content`:n},j=async({content:e,endpoint:t,headers:r={}})=>{if(!Array.isArray(e))return[];let n=[],a=new Set;for(let t of e.filter(e=>e?.type==="bash_code_execution_tool_result"||e?.type===M.TM_PROVIDER_TOOL_CALL_RESULT&&e?.originalResult?.type==="bash_code_execution_tool_result"))for(let e of(t?.type===M.TM_PROVIDER_TOOL_CALL_RESULT?t.originalResult?.content?.content:t?.content?.content)||[])e?.type==="bash_code_execution_output"&&e?.file_id&&!a.has(e.file_id)&&(a.add(e.file_id),n.push({file_id:e.file_id}));if(0===n.length)return[];let o=[];for(let e of n)try{let n,a=$({endpoint:t,fileID:e.file_id});try{n=await fetch(a,{method:"GET",headers:{...r,"anthropic-beta":"files-api-2025-04-14"}})}catch(t){if("TypeError"===t.name){console.error(`Network error while downloading file ${e.file_id}:`,t);continue}throw t}if(!n.ok){console.error(`Failed to download file ${e.file_id}: ${n.status} ${n.statusText}`);continue}let i=n.headers.get("Content-Disposition"),s="file";if(i){let e=i.match(/filename="?([^";\n]+)"?/);e&&(s=e[1])}let l=n.headers.get("Content-Type")||(0,m.getMimeTypeFromFilename)(s),u=await n.arrayBuffer(),c=(0,m.arrayBufferToBase64)(u),p=l?.startsWith("image/")?"tm_image_file":"tm_blob_file",d={id:(0,I.v4)(),type:p,text:`[File Attachment: ${s} (${l})]`,metadata:{name:s,size:u.byteLength,type:l,base64:`data:${l};base64,${c}`,source:"anthropic_code_execution",fileID:e.file_id}};o.push(d)}catch(t){console.error(`Error downloading file ${e.file_id}:`,t)}return o};var F=e.i(912229);let q=e=>{let r;if("1"===t.default.env.ALLOW_UNSAFE_USER_ENDPOINTS)return!0;try{r=new URL(e).hostname}catch(e){return!1}return"localhost"!==r.toLowerCase()&&!!F.TLDs.some(e=>r.toLowerCase().endsWith("."+e.toLowerCase()))};e.s(["isAllowedUserEndpoint",0,q],251074);let G={user:["role","content"],assistant:["role","content"],system:["role","content"]},H={text:["type","text","cache_control","citations"],image:["type","source","cache_control"],document:["type","source","cache_control","citations","context","title"],search_result:["type","content","source","title","cache_control","citations"],thinking:["type","thinking","signature"],redacted_thinking:["type","data"],tool_use:["type","id","name","input","cache_control","caller"],tool_result:["type","tool_use_id","content","cache_control","is_error"],server_tool_use:["type","id","name","input","cache_control","caller"],web_search_tool_result:["type","tool_use_id","content","cache_control","caller"],web_fetch_tool_result:["type","tool_use_id","content","cache_control","caller"],code_execution_tool_result:["type","tool_use_id","content","cache_control"],bash_code_execution_tool_result:["type","tool_use_id","content","cache_control"],text_editor_code_execution_tool_result:["type","tool_use_id","content","cache_control"],tool_search_tool_result:["type","tool_use_id","content","cache_control"],container_upload:["type","file_id","cache_control"],mid_conv_system:["type","content","cache_control"],tool_reference:["type","tool_name","cache_control"]},V={base64:["type","media_type","data"],url:["type","url"],text:["type","media_type","data"],content:["type","content"]}
6,K={direct:["type"],code_execution_20250825:["type","tool_id"],code_execution_20260120:["type","tool_id"]},Y=(e=[],{role:t}={})=>e.map(e=>(({block:e,role:t})=>{var n,a;if("assistant"===t&&e?.type==="image"||e?.type==="text"&&"string"==typeof e.text&&!e.text.trim())return null;let o=H[e?.type];if(!o)return null;let i=r.default.pickBy(r.default.pick(e,o),e=>null!=e);return i.cache_control&&(i.cache_control=(n=i.cache_control)?r.default.pickBy(r.default.pick(n,["type","ttl"]),e=>null!=e):n),i.source&&(i.source=(e=>{if(!e||"object"!=typeof e)return e;let t=r.default.pickBy(r.default.pick(e,V[e.type]||[]),e=>null!=e);return Array.isArray(t.content)&&(t.content=Y(t.content)),t})(i.source)),i.caller&&(i.caller=(a=i.caller)&&"object"==typeof a?r.default.pickBy(r.default.pick(a,K[a.type]||[]),e=>null!=e):a),Array.isArray(i.content)&&"web_search_tool_result"!==e.type&&(i.content=Y(i.content)),i})({block:e,role:t})).filter(Boolean),X=async({block:e,cacheController:t,blobStorageController:r,convertSubContent:n=!0,pdfSupported:a,externalImageURLSupported:o})=>{if("image_url"===e.type&&e.image_url?.url){let t=e.image_url?.url;if(!o&&!t?.startsWith("data:image")){if(!q(t))throw Error(`This image can't be processed. Please re-upload the image and try again. Image URL: ${t}`);t=await (0,p.fetchFileURLAsBase64String)(t)}if(t?.startsWith("data:image")){let{mimeType:e,data:r}=(0,i.parseGenericBase64ToRequestData)(t);return{type:"image",source:{type:"base64",media_type:e,data:r}}}return{type:"image",source:{type:"url",url:t}}}if(["tm_image_file","tm_text_file","tm_blob_file"].includes(e.type)){if("tm_image_file"===e.type&&e.sync?.url){if(!o){let{base64:n}=await x(e,{cacheController:t,blobStorageController:r}),{mimeType:a,data:o}=(0,i.parseGenericBase64ToRequestData)(n);return{type:"image",source:{type:"base64",media_type:a,data:o}}}return{type:"image",source:{type:"url",url:e.sync.url}}}let n=a&&e.metadata?.fileFormat==="pdf"&&e.metadata?.numPages<=100;if(n&&o&&e.sync?.url)return{type:"document",source:{type:"url",url:e.sync.url}};let{text:s,base64:l}=await x(e,{cacheController:t,blobStorageController:r});if(n&&l)return{type:"document",source:{type:"base64",media_type:"application/pdf",data:l.replace(/^data:application\/pdf;base64,/,"")}};if(s)return{type:"text",text:s};if("tm_blob_file"===e.type){if(!e.text)throw Error("Blob file block is missing text content.");return{type:"text",text:e.text}}let{mimeType:u,data:c}=(0,i.parseGenericBase64ToRequestData)(l);return{type:"image",source:{type:"base64",media_type:u,data:c}}}if("tool_result"===e.type&&Array.isArray(e.content)&&n){let n=await Promise.all(e.content.map(e=>X({block:e,cacheController:t,convertSubContent:!1,blobStorageController:r,pdfSupported:a,externalImageURLSupported:o})));return{...e,content:n}}if(e.type===M.TM_PROVIDER_TOOL_CALL||e.type===M.TM_PROVIDER_TOOL_CALL_RESULT)if(e.name===M.PROVIDER_TOOL_NAMES.ANTHROPIC_CODE_EXECUTION)return(({block:e})=>e?e.type===M.TM_PROVIDER_TOOL_CALL&&e.name===M.PROVIDER_TOOL_NAMES.ANTHROPIC_CODE_EXECUTION?e.originalCall:e.type===M.TM_PROVIDER_TOOL_CALL_RESULT&&e.name===M.PROVIDER_TOOL_NAMES.ANTHROPIC_CODE_EXECUTION?e.originalResult:e:e)({block:e});else return null;return e},z=async({messages:e,cacheController:t,blobStorageController:n,pdfSupported:a,externalImageURLSupported:o=!0})=>{let{totalSizeInPages:i,totalSizeInMB:s}=(0,b.checkTotalPDFSizeFromMessages)(e),l=a&&i<=100&&s<=25;return((e=[])=>e.map(e=>{let t=r.default.pickBy(r.default.pick(e,G[e.role]||[]),e=>null!=e);return Array.isArray(t.content)&&(t.content=Y(t.content,{role:t.role})),t}))(await Promise.all(e.map(async e=>{if(Array.isArray(e.content)){let r=(await Promise.all(e.content.map(e=>X({block:e,cacheController:t,blobStorageController:n,pdfSupported:l,externalImageURLSupported:o})))).filter(Boolean);return(r=u(r)).some(e=>"image"===e.type)&&!r.some(e=>"text"===e.type&&(e.text||"").trim())&&(r=r.map(e=>"text"===e.type?{...e,text:"(Image)"}:e)),{...e,content:r}}return e})))},J=[": OPENROUTER PROCESSING"],W=(e,t,r,n,a)=>{let o;
6if(r.trim())try{if(J.includes(r.trim()))return;if((o=JSON.parse(r)).error){let e="";e="server_error"===o.error.type?"Claude is currently experiencing a server error. This could be a temporary issue caused by high demand. Please try again. Original error message: "+o.error.message:"Claude is currently experiencing a problem. This could be a temporary issue caused by high demand. Please try again. Original error message: "+o.error.message,a(Error(e));return}if("message_start"===e){let e=o.message;for(let r in e)t[r]=e[r]}else if("message_delta"===e){let e=o?.delta;for(let r in e)t[r]=e[r];for(let e in o.usage)t.usage=t.usage||{},t.usage[e]=o.usage[e]}else if("content_block_delta"===e){let e=o?.delta;if(e?.type==="text_delta")if("string"==typeof t.content)t.content+=e.text;else{let r=t.content[t.content.length-1];r.text+=e.text}else if(e?.type==="citations_delta")if("string"==typeof t.content);else{let r=t.content[t.content.length-1];Array.isArray(r.citations)||(r.citations=[]),e.citation&&r.citations.push(e.citation)}else if(e?.type==="input_json_delta"){let r=t.content[t.content.length-1];r.input_json_string=r.input_json_string||"",r.input_json_string+=e.partial_json}else if(e?.type==="thinking_delta"){let r=t.content[t.content.length-1];r.thinking+=e.thinking||"",r._reasoning_start||(r._reasoning_start=Date.now())}else if(e?.type==="signature_delta"){let r=t.content[t.content.length-1];r.signature+=e.signature||""}}else if("content_block_start"===e){let e=o.content_block;t.content=t.content||[],e&&"text"===e.type&&!Array.isArray(e.citations)&&(e.citations=[]),t.content.push(e)}else if("content_block_stop"===e){let e=t.content[t.content.length-1];if("string"==typeof e.input_json_string)try{e.input_json_string&&(e.input=JSON.parse(e.input_json_string)),delete e.input_json_string}catch(e){console.error("error parsing input_json_string",e)}e._reasoning_start&&!e._reasoning_finish&&(e._reasoning_finish=Date.now())}return n(t),t?.stop_reason}catch(e){console.error("stream error",e)}},Q="Something went wrong. This could be a temporary network connection issue. Please try again or contact support. Opening the console might help clarifying the issue.",Z=[{name:"temperature",keyName:"temperature",type:"number",min:0,max:1},{name:"topP",keyName:"top_p",type:"number"},{name:"topK",keyName:"top_k",type:"number"},{name:"maxTokens",keyName:"max_tokens",type:"number"},{name:"reasoningEffort",transformer:"claudeThinkingBudget"}],ee=e=>{try{return(({content:e})=>{if(!Array.isArray(e))return null;let t=e.filter(e=>e?.type==="server_tool_use"&&(e?.name==="web_search"||e?.name==="web_fetch")).map((e,t)=>{let r,n="string"==typeof e?.id?e.id:void 0,a=e?.name;if("web_search"===a){let t="string"==typeof e?.input?.query?e.input.query:void 0;r=t?`Search "${t}"`:void 0}else if("web_fetch"===a){let t="string"==typeof e?.input?.url?e.input.url:void 0;r=t?`Read page ${t}`:void 0}return{id:`aws_call_${(0,b.simpleHash)(n||`${t}:${r||""}`)}`,provider:"anthropic",toolName:a,...r?{description:r}:{}}});return t.length>0?{version:1,calls:t}:null})({content:e})}catch(e){return console.error("Failed to build webSearch (anthropic)",e),L.captureException(e),null}},et=e=>{try{return(({content:e})=>Array.isArray(e)?e.map(e=>{if(e?.type==="server_tool_use"&&B.includes(e?.name))return{type:M.TM_PROVIDER_TOOL_CALL,id:e.id,name:M.PROVIDER_TOOL_NAMES.ANTHROPIC_CODE_EXECUTION,input:{code:(e=>{let t=e?.name,r=e?.input;if("bash_code_execution"===t)return r?.command||"";if("text_editor_code_execution"===t){if(r?.file_text)return r.file_text;let e=r?.command||"",t=r?.path||"";return`${e} ${t}`.trim()}return""})(e)},originalCall:e};if(U.includes(e?.type)){let t={stdout:e.content?.stdout||"",stderr:e.content?.stderr||""};return{type:M.TM_PROVIDER_TOOL_CALL_RESULT,callID:e.tool_use_id,name:M.PROVIDER_TOOL_NAMES.ANTHROPIC_CODE_EXECUTION,output:t,originalResult:e}}return e}):e)({content:e})}catch(t){return console.error("Failed to transform codeExecution (anthropic)",t),L.captureException(t),e}},er=e=>{try{if(!Array.isArray(e))return e;let t=[],r=null,n=()=>{r&&r.text&&t.push(r),r=null};for(let a of e){if("text"!==a.type){n(),t.push(a);continue}if(r||(r={type:"text",text:""}),r.text+=a.text||"",!Array.isArray(a.citations)||!a.citations?.length)continue;r.textAnnotations=r.textAnnotations||[];let e={type:"tm_web_search_source",apiType:"anthropic",startIndex:r.text.length-(a.text?a.text.length:0),endIndex:r.text.length,sources:[],originalAnnotation:a.citations};for(let t of a.citations)e.sources.push({title:t.title,url:t.url,snippet:t.cited_text});r.textAnnotations.push(e)}return n(),t}catch(t){return console.error("Failed to merge text contents with citations",t),L.captureException(t),e}};async function en({endpoint:e,model:t,modelInfo:i,temperature:s,reasoningEffort:l,extraModelParamsEnabled:u,extraModelParamsJSON:c,topP:p,topK:d,maxTokens:m,parameterDefinitions:g=[],contextLimit:f=0,contextLengthOverride:y,stop:_,signal:h,stream:x,messages:T,functions:A,providerTools:O,providerToolDefinitions:E=[],extras:k={},headers:I={},onStreamStarted:P=()=>{},onStreamTextChunk:D=e=>{},onStreamFinished:R=()=>{},onAPIStatusChanged:C=()=>{},onModelUnavailable:N=()=>{},onContextSkipped:L=()=>{},onFreeMessagesCountChanged:M=()=>{},onAborted:B=()=>{},onStreamError:U=()=>{},promptCachingEnabled:$,thinkingOptions:F,onRequestPrepared:q=()=>{},cacheController:G,blobStorageController:H,customLLMDependencies:V={}}={}){var K;let Y,X,J=["system","user","assistant","function","tool"],{contextMessages:ea,skipped:eo}=a({messages:T.filter(e=>J.includes(e.role)),contextLimit:f,allowedContextLength:o(y||i?.contextLength),dependencies:{getEstimatedTokens:n.getEstimatedTokens,getTextContent:b.getTextContent}});L?.(eo);let ei=ea.map(e=>{if("tool"===e.role)return{role:"user",content:[{type:"tool_result",tool_use_id:e.tool_call_id,content:e.content,..."error"===e.format?{is_error:!0}:{}}]};if(e.tool_calls?.length){let t=e.tool_calls.map(e=>({type:"tool_use",id:e.id,name:e.function.name,input:(0,b.parseOrNull)(e.function.arguments)}));return{role:e.role,content:[...Array.isArray(e.content)?e.content:[{type:"text",text:e.content}],...t].filter(e=>"text"!==e.type||(e.text||"").trim())}}return e}).map(e=>Array.isArray(e.content)?{...e,content:e.content.map(e=>"thinking"===e.type?e.signature?.trim()?r.default.pick(e,["type","signature","thinking"]):null:e).filter(
6Boolean)}:e).filter(e=>!Array.isArray(e.content)||0!==e.content.length),es=(ei||[]).find(e=>"system"===e.role)||{role:"system",content:""};try{X=await z({messages:(e=>{let t=e.find(e=>"system"!==e.role);if(!t)return e;let r=e.filter(e=>"system"===e.role);return"assistant"===t.role?[...r,{role:"user",content:"Hello"},...e.filter(e=>"system"!==e.role)]:e})((ei||[]).filter(e=>"system"!==e.role)).map(e=>r.default.pick(e,["role","content","function_call","tool_calls","tool_call_id","name"])),cacheController:G,blobStorageController:H,pdfSupported:i?.pdfSupported,externalImageURLSupported:i?.apiType!=="bedrock-claude"&&i?.externalImageURLSupported})}catch(e){return console.error("Error processing message content for Claude",e),{error:e.message}}let el=A?.length||O?.length,eu=i.thinkingSupported&&l&&"none"!==l,ec=(({messages:e,providerTools:t})=>{if(!t?.includes("PROVIDER_CODE_EXECUTION")||!Array.isArray(e))return null;for(let t of[...e].reverse()){if(t?.role!=="assistant")continue;let e=t?.container?.id,r=t?.container?.expires_at;if(!e||!r)continue;let n=Date.parse(r);if(Number.isNaN(n)||n<=Date.now())break;return e}return null})({messages:T,providerTools:O});el||(X=X.map(e=>{if(Array.isArray(e.content)&&e.content.some(e=>"tool_use"===e.type||"tool_result"===e.type)){let t=e.content.filter(e=>"tool_use"!==e.type&&"tool_result"!==e.type);return t.length?{...e,content:t}:null}return e}).filter(Boolean)),eu||(X=X.map(e=>Array.isArray(e.content)?{...e,content:e.content.filter(e=>"thinking"!==e.type)}:e));let ep=u&&(0,b.parseOrNull)(c)||{};try{let r=(i.anthropicBetaHeaders||[]).filter(Boolean).join(","),n=i.maxOutputTokens||4096,a=parseInt(m)||n,o={"Content-Type":"application/json",...r?{"anthropic-beta":r}:{},...I},u={model:t,...ec?{container:ec}:{},...es?.content?{system:es.content}:{},stream:x,messages:X,...el?{tools:[...v({providerTools:O,providerToolDefinitions:E,apiType:"claude"}),...(A||[]).map(e=>({name:e.name,description:e.description,input_schema:e.parameters}))]}:{}};try{(0,S.applyModelParameters)({body:u,modelParameters:{temperature:s,topP:p,topK:parseInt(d),maxTokens:a,reasoningEffort:l},parameterDefinitions:(0,S.mergeParameterDefinitions)(Z,g),parameterTransformers:{claudeThinkingBudget:()=>{if(!eu)return null;let e=eu?Math.max(parseInt((w.THINKING_BUDGET_RATIO_MAP[l]??.5)*a),w.MIN_CLAUDE_THINKING_BUDGET_TOKENS):0;if(e>a){let t=Error("Enabling thinking requires increasing max tokens to at least "+(e+1e3));throw t.code="invalid_parameter",t}return[{keyName:"thinking.type",value:"enabled"},{keyName:"thinking.display",value:F?"summarized":"omitted"},{keyName:"thinking.budget_tokens",value:e}]},claudeThinkingAdaptive:({parameterDefinition:e})=>{if(!eu)return null;let t={auto:"medium",minimal:"low",low:"low",medium:"medium",high:"high",xhigh:e.options?.includes("xhigh")?"xhigh":"max",max:"max"}[l]||"medium";return[{keyName:"thinking.type",value:"adaptive"},{keyName:"thinking.display",value:F?"summarized":"omitted"},{keyName:"output_config.effort",value:t}]}}})}catch(e){if("invalid_parameter"===e.code)return{error:e.message};throw e}if(u={...u,...ep,...k},$&&i.promptCachingSupported&&((({endpoint:e,headers:t})=>{let r,n=t?.["x-target-endpoint"]||e;if(!n)return!1;try{r=new URL(n)}catch(e){return!1}return"api.anthropic.com"===r.hostname})({endpoint:e,headers:o})?u.cache_control={type:"ephemeral",ttl:"extended"===$?"1h":"5m"}:([es,...X]=(0,b.addCacheControlToClaudeMessages)({messages:[es].concat(X),mode:"extended"===$?"1h":"5m"}),u={...u,...es?.content?{system:es.content}:{},messages:X})),q&&q({endpoint:e,headers:o,body:u}),"tm_internal_bedrock_sdk://"===e){let{getBedrockClaudeResponse:e}=V?.["tm_internal_bedrock_sdk://"]||{};if(e){let{awsAccessKey:t,awsSecretKey:r,awsRegion:n}=I;
6delete I.awsAccessKey,delete I.awsSecretKey,delete I.awsRegion,Y=await e({body:u,headers:{"Content-Type":"application/json","anthropic-version":"2023-06-01",...I},keys:{awsAccessKey:t,awsSecretKey:r,awsRegion:n}})}else throw Error("Anthropic Bedrock SDK is not available for use directly in the browser. This limitation is set by Anthropic/AWS. Checkout our team version that support server-side LLMs at https://custom.typingmnd.com")}else try{Y=await fetch(e,{method:"POST",signal:h,headers:o,body:JSON.stringify(u)})}catch(e){if(e instanceof TypeError)return{code:"client_fetch_error",error:"Could not connect to the API. Please check your network connection and try again (code: 3)."};throw e}}catch(e){if("AbortError"===e.name)return void B();throw e}if(500===Y.status)return{status:Y.status,error:"Could not connect to Claude API. Please try again later. This could be because Claude's server is experiencing high demand and rejected your request."};if(Y.status>=400){let e;try{e=await Y.clone().json()}catch(e){return console.error("Could not parse JSON response from Claude API",e),console.error("Original error message:",await Y.clone().text()),{status:Y.status,error:"Sorry, this model is currently experiencing a problem from the server side. Please try again later or select another model. Open the console log to see the original error message."}}if(e.userMessage)return{status:Y.status,error:e.userMessage};if("tm_not_authorized"===e.code)return{status:Y.status,error:"Your session has expired. Please reload the app and try again."};if("access_denied"===e.error)return{status:Y.status,error:"Access denied. Please try to reopen the app. If the issue persists, please contact support."};if(e.error?.code==="setapp_refresh_token_failed")return window.webkit?.messageHandlers?.TypingMindMacApp?.postMessage("SETAPP_REFRESH_TOKEN_FAILED"),{status:Y.status,error:"Your login session has expired. Please close the app and reopen again."};if(429===Y.status)return e.userMessage?{status:Y.status,error:e.userMessage}:{status:Y.status,error:"Claude has rejected your request with error code 429. Here are the possible reasons: 1. You are sending requests too quickly; 2. You have hit your maximum monthly spend (hard limit); 3. The model is currently overloaded. Here is the error message from Claude: "+(e.error?.message||"")};if(e.error&&"authentication_error"===e.error.type){let e=I?.["x-api-key"];return"string"==typeof e&&e.startsWith("encrypted-")?{status:Y.status,error:"API Key is locked, please unlock it first."}:{status:Y.status,error:"Invalid API key or the API key has been revoked."}}return e.error&&"context_length_exceeded"===e.error.code?{status:Y.status,code:"context_length_exceeded",error:e.error?.message}:e.error&&"invalid_request_error"===e.error.type&&e.error.message?{status:Y.status,error:"Request failed. Error details: "+e.error.message}:e.error&&e.userMessage?{status:Y.status,error:e.userMessage}:{status:Y.status,error:Q+" Technical details: "+JSON.stringify(e),serverError:e}}if(!Y.ok)return{status:Y.status,error:Q+" Technical details: Not OK."};let ed=Y.headers.get("x-remaining-free-messages");ed&&M(Number(ed));let em=null,eg=null,ef=!1;if(x){if("u"<typeof TextDecoderStream)return{error:"Your browser doesn't support streaming response. Please upgrade your browser to the latest version or turn off streaming."};let e=Y.body.pipeThrough(new TextDecoderStream).getReader(),t={content:""};P();let r=e=>{let t=ee(e?.content),r=er(et(e?.content)),n=Array.isArray(e?.content)?e.content.filter(e=>"tool_use"===e.type):[];D({...e,...r?{content:r}:{},...t?{webSearch:t}:{},...n.length?{tool_calls:n.map((e,t)=>({index:t,id:e.id,type:"function",function:{name:e.name,arguments:"string"==typeof e.input_json_string?e.input_json_string:JSON.stringify(e.input??{})},..."string"==typeof e.input_json_string?{incomplete:!0}:{}}))}:{}})};try{let n="",a="",o=!1;for(;;){let{value:i,done:s}=await e.read();if(s||o)break;for(let e of i)if(a+=e,":"===e&&"data:"===a&&(a=""),"\n"===e&&a){if("[DONE]"===a.trim()){o=!0;break}if(a.startsWith("event:")){n=a.replace("event:","").trim(),a="";continue}W(n,t,a,r,U),n="",a=""}}}catch(t){"AbortError"===t.name?(e.releaseLock(),ef=!0):U(t)}let a=t.usage?.output_tokens||(0,n.getEstimatedTokens)(t.content),o=t.usage?.input_tokens||(0,n.getEstimatedTokens)(ei.map(e=>(0,b.getTextContent)(e.content)).join("\n")),i=t.usage?.cache_creation?.ephemeral_1h_input_tokens||0,s=(t.usage?.cache_creation_input_tokens||0)-i,l=t.usage?.cache_read_input_tokens||0;em={...t,...ef?{tmMetadata:{incomplete:!0}}:{}},eg={completion_tokens:a,prompt_tokens:o,cache_creation_input_tokens:s,extended_cache_creation_input_tokens:i,cache_read_input_tokens:l,total_tokens:a+o+s+i+l}}else{let e=await Y.json();em=e;let t=e.usage?.cache_creation?.ephemeral_1h_input_tokens||0,r=(e.usage?.cache_creation_input_tokens||0)-t,n=e.usage?.cache_read_input_tokens||0;eg={completion_tokens:e.usage?.output_tokens,prompt_tokens:e.usage?.input_tokens,cache_creation_input_tokens:r,cache_read_input_tokens:n,extended_cache_creation_input_tokens:t,total_tokens:e.usage?.output_tokens+e.usage?.input_tokens+r+t+n}}if(Array.isArray(em.content)&&(em.content=em.content.filter(e=>!(("tool_use"===e.type||"server_tool_use"===e.type)&&e.name?.startsWith("openrouter:")))),em?.stop_reason==="refusal"){let e=em.stop_details?.explanation?.trim();return{error:["Claude declined this request because it triggered a safety classifier. Please try again or switch to another model.",e?`Details: ${e}
6`:null].filter(Boolean).join(" ")}}let ey=Array.isArray(em.content)&&em.content.filter(e=>"tool_use"===e.type);if(ey?.length){let e=em.content.filter(e=>"tool_use"!==e.type);em.content=e.length?e:"";let t=ey.filter(e=>"string"!=typeof e.input_json_string);t.length&&(em.tool_calls=t.map((e,t)=>({index:t,id:e.id,type:"function",function:{name:e.name,arguments:JSON.stringify(e.input)}})))}let e_=ee(em.content);if(e_&&(em.webSearch=e_),em.content=et(em.content),O?.includes("PROVIDER_CODE_EXECUTION")){let t=await j({content:em.content,endpoint:I["x-target-endpoint"]||e,headers:I});t?.length&&(em.content=[...em.content,...t])}let eh=er(em.content);return eh&&(em.content=eh),{response:{...em,usage:eg,finish:"max_tokens"===(K=em?.stop_reason)?"length":K}}}let ea=async(e,t,{cacheController:r,blobStorageController:n})=>{if(!e)return null;if("string"==typeof e)return e;if("object"!=typeof e||!e.metaBlobID)return null;let a=t?.find(t=>t.id===e.metaBlobID);if(!a)return null;let{rawText:o}=await x(a,{cacheController:r,blobStorageController:n});return o},eo=async({messages:e,cacheController:t,blobStorageController:r,pdfSupported:n})=>(await Promise.all(e.map(async(e,a)=>{if("assistant"===e.role){let n={role:"model",parts:[]},o=!!Array.isArray(e.content)&&e.content.some(e=>"tm_image_file"===e.type),s=Array.isArray(e.content)?await Promise.all(e.content.map(async n=>{if(n.image_url?.url){let{mimeType:e,data:t}=(0,i.parseGenericBase64ToRequestData)(n.image_url.url);return{type:"inlineData",part:{inlineData:{mimeType:e,data:t}}}}if(["tm_image_file"].includes(n.type)){let{base64:a}=await x(n,{cacheController:t,blobStorageController:r}),{data:o,mimeType:s}=(0,i.parseGenericBase64ToRequestData)(a),l=await ea(n.metadata?.thoughtSignature,e.metaBlobs,{cacheController:t,blobStorageController:r});return{id:n.id,type:"inlineData",part:{inlineData:{mimeType:s,data:o},...l?{thoughtSignature:l}:{}}}}if(n.type===M.TM_PROVIDER_TOOL_CALL||n.type===M.TM_PROVIDER_TOOL_CALL_RESULT){let a=(({block:e})=>e?e.type===M.TM_PROVIDER_TOOL_CALL&&e.name===M.PROVIDER_TOOL_NAMES.GEMINI_CODE_EXECUTION?e.originalCall:e.type===M.TM_PROVIDER_TOOL_CALL_RESULT&&e.name===M.PROVIDER_TOOL_NAMES.GEMINI_CODE_EXECUTION?e.originalResult:null:null)({block:n});if(!a)return null;let o=await ea(n.thoughtSignature,e.metaBlobs,{cacheController:t,blobStorageController:r});return{id:n.id||n.callID,type:n.type===M.TM_PROVIDER_TOOL_CALL?"executableCode":"codeExecutionResult",part:{...a,...o?{thoughtSignature:o}:{}}}}if(!n.text||o&&!n.thoughtSignature)return null;let a=await ea(n.thoughtSignature,e.metaBlobs,{cacheController:t,blobStorageController:r});return{id:n.id,type:"text",part:{text:n.text,...a?{thoughtSignature:a}:{}}}})):e.content?[{part:{text:e.content}}]:[],l=await Promise.all((e.otherGeminiOutputs||[]).map(async n=>{let{id:a,...o}=n,i=await ea(o.thoughtSignature,e.metaBlobs,{cacheController:t,blobStorageController:r});return{id:a,type:o.toolCall?"toolCall":o.toolResponse?"toolResponse":Object.keys(o).find(e=>"thoughtSignature"!==e)||"unknown",part:{...o,...i?{thoughtSignature:i}:{}}}})),u=e.tool_calls||[],c=u?.length?await Promise.all(u.map(async n=>{let a=await ea(n.thoughtSignature,e.metaBlobs,{cacheController:t,blobStorageController:r});return{id:n.id,type:"functionCall",part:{functionCall:{name:n.function.name,args:JSON.parse(n.function.arguments)},...a?{thoughtSignature:a}:{}}}})):[];return n.parts.push(...(({items:e,geminiOutputOrder:t})=>{if(!Array.isArray(t)||!t.length)return e;let r=new Map;return t.forEach((e,t)=>{let n=e?.id&&e?.type?`${e.type}:${e.id}`:null;n&&!r.has(n)&&r.set(n,t),e?.id&&!r.has(e.id)&&r.set(e.id,t)}),[...e].sort((e,t)=>(r.get(`${e.type}:${e.id}`)??r.get(e.id)??1/0)-(r.get(`${t.type}:${t.id}`)??r.get(t.id)??1/0))})({items:[...s.filter(Boolean),...l.filter(Boolean),...c.filter(Boolean)],geminiOutputOrder:e.geminiOutputOrder}).map(e=>e.part)),[0===a&&{role:"user",parts:[{text:"Conversation begins:"}]},n].filter(Boolean)}let o=[{text:e.content}];return(["user","tool"].includes(e.role)&&Array.isArray(e.content)&&(o=(await Promise.all(e.content.map(async e=>{if("image_url"===e.type&&e.image_url?.url){let t=e.image_url.url;t?.startsWith("data:image")||(t=await (0,p.fetchFileURLAsBase64String)(e.image_url?.url));let{mimeType:r,data:n}=(0,i.parseGenericBase64ToRequestData)(t);return{inlineData:{mimeType:r,data:n}}}if(["tm_image_file","tm_text_file","tm_blob_file"].includes(e.type)){let{text:a,base64:o}=await x(e,{cacheController:t,blobStorageController:r});if(n&&o&&e.metadata?.fileFormat==="pdf"&&e.metadata?.size<=0x5000000)return{inline_data:{mime_type:"application/pdf",data:o.replace(/^data:application\/pdf;base64,/,"")}};if(a)return{text:a};let{data:s,mimeType:l}=(0,i.parseGenericBase64ToRequestData)(o);return{inlineData:{mimeType:l,data:s}}}return{text:e.text}}))).filter(e=>"string"!=typeof e.text||""!==e.text.trim())),"tool"===e.role)?{role:"user",parts:[{functionResponse:{name:e.name,response:{name:e.name,content:o}}}]}:{role:"user",parts:o}}))).flat().map((e,t,r)=>e.parts[0]?.functionResponse&&r[t+1]?.parts[0]?.functionResponse?(r[t+1].parts.push(...e.parts),null):e).filter(
6Boolean);var ei=e.i(265689);let es=(e,t)=>{if(Array.isArray(e)){let r=e.map(e=>es(e));return["enum","required","type"].includes(t)&&r.every(e=>null===e||["string","number","boolean"].includes(typeof e))?r.sort((e,t)=>{let r=(0,ei.default)(e),n=(0,ei.default)(t);return r<n?-1:+(r>n)}):r}return e&&"object"==typeof e?Object.fromEntries(Object.keys(e).sort().map(t=>[t,es(e[t],t)])):e},el=e=>{if(!e||"object"!=typeof e||Array.isArray(e)||!e.type&&!e.anyOf&&!e.oneOf&&!e.allOf)return null;let t={};if(e.type){if(!["string","number","integer","boolean","array","object","null"].includes(String(e.type).toLowerCase()))return null;t.type=e.type}if("string"==typeof e.description&&(t.description=e.description),"string"==typeof e.title&&(t.title=e.title),void 0!==e.enum&&Array.isArray(e.enum)&&e.enum.every(e=>"string"==typeof e)&&(t.enum=e.enum),"string"==typeof e.format){let r=e.format.toLowerCase();({number:["float","double"],integer:["int32","int64"],string:["enum","date-time"]})[t.type]?.includes(r)&&(t.format=r)}return"boolean"==typeof e.nullable&&(t.nullable=e.nullable),"boolean"==typeof e.nullable&&(t.nullable=e.nullable),void 0!==e.default&&(t.default=e.default),void 0!==e.example&&(t.example=e.example),void 0!==e.minLength&&"string"==typeof e.minLength&&/^\d+$/.test(e.minLength)&&(t.minLength=e.minLength),void 0!==e.maxLength&&"string"==typeof e.maxLength&&/^\d+$/.test(e.maxLength)&&(t.maxLength=e.maxLength),"string"==typeof e.pattern&&(t.pattern=e.pattern),"number"==typeof e.minimum&&(t.minimum=e.minimum),"number"==typeof e.maximum&&(t.maximum=e.maximum),["anyOf","oneOf","allOf"].forEach(r=>{if(Array.isArray(e[r])){let n=e[r].map(e=>el(e)).filter(Boolean);n.length>0&&(t[r]=n)}}),"object"===e.type&&("string"==typeof e.minProperties&&/^\d+$/.test(e.minProperties)&&(t.minProperties=e.minProperties),"string"==typeof e.maxProperties&&/^\d+$/.test(e.maxProperties)&&(t.maxProperties=e.maxProperties),Array.isArray(e.propertyOrdering)&&e.propertyOrdering.every(e=>"string"==typeof e)&&(t.propertyOrdering=e.propertyOrdering),t.properties={},Object.keys(e.properties||{}).forEach(r=>{let n=el(e.properties[r]);n&&(t.properties[r]=n)}),Array.isArray(e.required)&&e.required.every(e=>"string"==typeof e)&&(t.required=e.required.filter(e=>t.properties[e]))),"array"===e.type&&("string"==typeof e.minItems&&/^\d+$/.test(e.minItems)&&(t.minItems=e.minItems),"string"==typeof e.maxItems&&/^\d+$/.test(e.maxItems)&&(t.maxItems=e.maxItems),t.items=el(e.items)||{}),Object.keys(t).length>0?t:null},eu=async({messages:e,functions:t,providerTools:r,providerToolDefinitions:n,cacheController:a,blobStorageController:o,pdfSupported:i,mixedToolsSupported:s})=>{let l=await eo({messages:e.filter(e=>"system"!==e.role),cacheController:a,blobStorageController:o,pdfSupported:i}),u=e.filter(e=>"system"===e.role).flatMap(e=>Array.isArray(e.content)?e.content.filter(e=>e.text).map(e=>({text:e.text})):{text:e.content}),c=(t||[]).filter(({name:e})=>[w.SEARCH_TRAINING_DATA_PLUGIN_INFO.id,w.READ_KB_DOCUMENT_PLUGIN_INFO.id].includes(e)),p=(t||[]).filter(e=>!c.includes(e));if(r?.length&&!s&&p.length)throw Error("Gemini API does not support using the provider tools and plugins together at the same time. Please turn off one of them and try again.");let d=s||!r?.length?[...p,...c]:[];return{contents:l,...d.length||r?.length?{tools:[...v({providerTools:r,providerToolDefinitions:n,apiType:"gemini"}),...d.length?[{function_declarations:d.map(e=>({name:e.name,description:e.description,parameters:el(e.parameters)||{type:"object",properties:{}}}))}]:[]]}:{},systemInstruction:u.length?{parts:u}:void 0}},ec=e=>{var t;let r=[],n=e.candidates?.[0]?.content?.parts||[],a=[],o=[],i=[],s=[];n.filter(e=>!e.thought).forEach((t,r)=>{let n=t.functionCall?.id||t.toolCall?.id||t.toolResponse?.id||(t.executableCode||t.codeExecutionResult?e.responseId:(0,I.v4)());if(i.push({index:r,id:n,type:t.functionCall?"functionCall":t.text?"text":t.inlineData?"inlineData":t.toolCall?"toolCall":t.toolResponse?"toolResponse":t.executableCode?"executableCode":t.codeExecutionResult?"codeExecutionResult":Object.keys(t).find(e=>"thoughtSignature"!==e)||"unknown"}
6),t.functionCall){let e={id:n,type:"function",function:{name:t.functionCall.name,arguments:JSON.stringify(t.functionCall.args)},...t.thoughtSignature?{thoughtSignature:t.thoughtSignature}:{}};a.push(e);return}if("string"==typeof t.text)return void s.push({id:n,type:"text",text:t.text,...t.thoughtSignature?{thoughtSignature:t.thoughtSignature}:{}});if(t.inlineData){let e=`file-${Date.now()}`+(t.inlineData?.mimeType?`.${(0,m.getFileExtFromMimeType)(t.inlineData?.mimeType)}`:"");t.inlineData.mimeType.startsWith("image/")?s.push({id:n,type:"tm_image_file",metadata:{name:e,type:t.inlineData.mimeType,base64:`data:${t.inlineData.mimeType};base64,${t.inlineData.data}`,...t.thoughtSignature?{thoughtSignature:t.thoughtSignature}:{}}}):s.push({id:n,type:"tm_blob_file",metadata:{name:e,base64:`data:${t.inlineData.mimeType};base64,${t.inlineData.data}`,...t.thoughtSignature?{thoughtSignature:t.thoughtSignature}:{}}});return}t.executableCode||t.codeExecutionResult?s.push((({part:e,id:t})=>{if(!e)return null;if(e.executableCode)return{type:M.TM_PROVIDER_TOOL_CALL,id:t,name:M.PROVIDER_TOOL_NAMES.GEMINI_CODE_EXECUTION,input:{code:e.executableCode.code||""},originalCall:e,...e.thoughtSignature?{thoughtSignature:e.thoughtSignature}:{}};if(e.codeExecutionResult){let r="OUTCOME_OK"===e.codeExecutionResult.outcome;return{type:M.TM_PROVIDER_TOOL_CALL_RESULT,callID:t,name:M.PROVIDER_TOOL_NAMES.GEMINI_CODE_EXECUTION,output:{stdout:r&&e.codeExecutionResult.output||"",stderr:r?"":e.codeExecutionResult.output||""},originalResult:e}}return null})({part:t,id:n})):o.push({id:n,...t})}),a.concat(o).forEach(e=>{if(e.thoughtSignature&&e.thoughtSignature.length>w.REASONING_DETAILS_EXPORT_THRESHOLD_BYTES){let t=(0,I.v4)();r.push({id:t,type:"tm_blob_file",internalBlob:!0,text:"[Gemini thought signature]",metadata:{name:`thought-signature-${e.id}.txt`,base64:(0,m.convertTextToBase64Url)(e.thoughtSignature),fileFormat:"text",size:e.thoughtSignature.length}}),e.thoughtSignature={metaBlobID:t}}}),s.forEach(e=>{if(e.metadata?.thoughtSignature&&e.metadata?.thoughtSignature.length>w.REASONING_DETAILS_EXPORT_THRESHOLD_BYTES){let t=(0,I.v4)();r.push({id:t,type:"tm_blob_file",text:"[Gemini thought signature]",internalBlob:!0,metadata:{name:`thought-signature-${e.id}.txt`,base64:(0,m.convertTextToBase64Url)(e.metadata.thoughtSignature),fileFormat:"text",size:e.metadata?.thoughtSignature.length}}),e.metadata.thoughtSignature={metaBlobID:t}}});let l=n.filter(e=>e.thought&&e.text).map(e=>e.text).join("\n\n"),u=e.candidates?.[0]?.groundingMetadata,c=e.usageMetadata?.promptTokenCount||0,p=e.usageMetadata?.candidatesTokenCount||0,d=e.usageMetadata?.cachedContentTokenCount||0,g=e.usageMetadata?.candidatesTokensDetail
6s?.find(e=>"IMAGE"===e.modality)?.tokenCount||0;return{content:s,...a.length>0?{tool_calls:a}:{},...o.length>0?{otherGeminiOutputs:o}:{},...i.length>0?{geminiOutputOrder:i}:{},usage:e.usageMetadata?{completion_tokens:p-g,prompt_tokens:c-d,total_tokens:e.usageMetadata?.totalTokenCount,cache_read_input_tokens:d,thinking_tokens:e.usageMetadata?.thoughtsTokenCount||0,image_completion_tokens:g}:void 0,finish:"MAX_TOKENS"===(t=e.candidates?.[0]?.finishReason)?"length":["SAFETY","PROHIBITED_CONTENT"].includes(t)?"incomplete":t,reasoning_content:l,groundingMetadata:u,metaBlobs:r}},ep=({groundingMetadata:e,textContent:t=""})=>{try{if(!e||"object"!=typeof e)return null;let r=Array.isArray(e.groundingSupports)?e.groundingSupports:[];if(!r.length)return null;let n=Array.isArray(e.groundingChunks)?e.groundingChunks:[];return r.map(e=>{let r=t.substring(e.segment?.startIndex||0,e.segment?.endIndex||0)===e.segment?.text,a=r?e.segment?.startIndex||0:t.indexOf(e.segment?.text),o=r?e.segment?.endIndex||0:a+e.segment?.text.length;return{type:"tm_web_search_source",apiType:"gemini",startIndex:a,endIndex:o,sources:e.groundingChunkIndices.map(e=>({url:n[e]?.web?.uri||"",title:n[e]?.web?.title||"",faviconDomain:(e=>{if(e)try{return new URL(e.includes("://")?e:`https://${e}`).hostname}catch{return}})(n[e]?.web?.title)||n[e]?.web?.uri})),originalAnnotation:e}})}catch(e){console.error(e)}},ed="Something went wrong. This could be a temporary network connection issue. Please try again or contact support. Opening the console might help clarifying the issue.",em=/^data\: (.*)(?:\n\n|\r\r|\r\n\r\n)/,eg=e=>{try{if(!e||"object"!=typeof e)return null;let t=(Array.isArray(e.webSearchQueries)?e.webSearchQueries:[]).map((e,t)=>{let r=`gws_call_${(0,b.simpleHash)(`gemini:${t}:${e}`)}`,n=e?`Search "${e}"`:void 0;return{id:r,provider:"gemini",toolName:"web_search",...n?{description:n}:{}}});return t.length>0?{version:1,calls:t}:null}catch(e){return console.error("Failed to build webSearch (gemini)",e),L.captureException(e),null}},ef=[{name:"temperature",keyName:"generationConfig.temperature",type:"number"},{name:"topP",keyName:"generationConfig.topP",type:"number"},{name:"topK",keyName:"generationConfig.topK",type:"number"},{name:"maxTokens",keyName:"generationConfig.maxOutputTokens",type:"number"},{name:"reasoningEffort",keyName:"generationConfig.thinkingConfig.thinkingLevel",type:"enum",options:["low","high"]},{name:"imageSize",keyName:"generationConfig.imageConfig.imageSize",type:"enum",options:["1K","2K","4K"]}];async function ey({endpoint:e="https://generativelanguage.googleapis.com/v1beta/models",model:t,modelInfo:r,temperature:i,reasoningEffort:s,topP:l,topK:u,maxTokens:c,imageSize:p,parameterDefinitions:d=[],extraModelParamsEnabled:m,extraModelParamsJSON:g,safetySettings:f,contextLimit:y=0,contextLengthOverride:_,signal:h,stream:x,messages:T,functions:A,providerTools:O,providerToolDefinitions:E=[],extras:k={},headers:I={},proxyEnabled:P=!1,onStreamStarted:v=()=>{},onStreamTextChunk:D=e=>{},onContextSkipped:R=()=>{},onAborted:C=()=>{},onStreamError:N=()=>{},promptCachingEnabled:L,onRequestPrepared:M,cacheController:B,blobStorageController:U,thinkingOptions:$}={}){let j,F,q,G,H=["system","user","assistant","function","tool"],{contextMessages:V,skipped:K}=a({model:t,messages:T.filter(e=>H.includes(e.role)),contextLimit:y,allowedContextLength:o(_||r?.contextLength),dependencies:{getEstimatedTokens:n.getEstimatedTokens,getTextContent:b.getTextContent}});R?.(K);try{({contents:F,tools:q,systemInstruction:G}=await eu({messages:V,functions:A,providerTools:O,providerToolDefinitions:E,cacheController:B,blobStorageController:U,pdfSupported:r?.pdfSupported,mixedToolsSupported:r?.mixedToolsSupported}))}catch(e){return console.error("failed to process request data",e),{error:e.message||ed}}let Y="gemini-pro"!==r.modelID;!Y&&G&&F.unshift({role:"user",parts:G.parts},{role:"model",parts:[{text:"Understood"}]});let X=Y?G:void 0,z=m&&(0,b.parseOrNull)(g)||{},J={system_instruction:!1!==r.systemMessageSupported?X:void 0,contents:F,tools:q,toolConfig:q?.length&&r?.mixedToolsSupported?{includeServerSideToolInvocations:!0}:void 0,generationConfig:{...r.responseModalitiesSupported?{responseModalities:["Text","Image"]}:{},...r.thinkingSupported?{thinkingConfig:{includeThoughts:!!$?.enabled}}:{}},safetySettings:f?Object.entries(f).map(([e,t])=>({category:e,threshold:t})):void 0,...z,...k};(0,S.applyModelParameters)({body:J,modelParameters:{temperature:i,topP:l,topK:u,maxTokens:c,reasoningEffort:s,imageSize:p},parameterDefinitions:(0,S.mergeParameterDefinitions)(ef,d),parameterTransformers:{geminiThinkingBugdet:({parameterDefinition:e})=>{let t=(()=>{let e=s?w.THINKING_BUDGET_RATIO_MAP[s]:0;if(0===e)return 0;let t=parseInt(c)||r.maxOutputTokens;return t&&e?Math.max(Math.min(parseInt(e*t),w.MAX_GEMINI_THINKING_BUDGET_TOKENS),w.MIN_GEMINI_THINKING_BUDGET_TOKENS):null})();return"number"==typeof t?{keyName:e.keyName||"generationConfig.thinkingConfig.thinkingBudgetTokens",value:t}:null}}});try{let{apiKey:t,...n}=I,a=`${r.modelID}:${x?"streamGenerateContent?alt=sse":"generateContent"}`,o={"Content-Type":"application/json",...n,...t?{"x-goog-api-key":t}:{}},i=e;P&&o["x-target-endpoint"]?o["x-target-endpoint"]=o["x-target-endpoint"].endsWith("/")?o["x-target-endpoint"]+a:o["x-target-endpoint"]+"/"+a:i=i.endsWith("/")?i+a:i+"/"+a,M&&M({endpoint:i,headers:o,body:J});try{j=await fetch(i,{method:"POST",signal:h,body:JSON.stringify(J),headers:o})}catch(e){if(e instanceof TypeError)return{code:"client_fetch_error",error:"Could not connect to the API. Please check your network connection and try again (code: 4)."};throw e}}catch(e){if("AbortError"===e.name)return void C();throw e}if(j.ok||(console.log("original messages",V),console.log("transformed messages",F)),500===j.status)return{status:j.status,error:"Could not connect to API server. Usually this is a temporary problem. Please try again. If the problem persist, please contact support."};
6if(j.status>=400){let e=await j.json();if(e.userMessage)return{status:j.status,error:e.userMessage};if("tm_not_authorized"===e.code)return{status:j.status,error:"Your session has expired. Please reload the app and try again."};let t=e.error?.message||e[0]?.error?.message;return t.indexOf("not supported for StreamGenerateContent")>-1?{status:j.status,error:`Sorry, your API Key does not have access to the model ${r.title} (${r.id}). Please select another model.`}:{status:j.status,error:`Sorry, the provider of this model has rejected your request (Message: ${t||"(Unknown)"}). Please try again or contact support.`}}if(!j.ok)return{status:j.status,error:ed};let W=null,Q=!1;if(x){let e=j.body.pipeThrough(new TextDecoderStream("utf8",{fatal:!0})).getReader();v();try{let t="";for(;;){let{value:r,done:n}=await e.read();if(n)break;let a=(t+=r).match(em);for(;a;){let e;try{e=JSON.parse(a[1])}catch(e){throw console.log(e.message),console.log(r),e}let{content:n,tool_calls:o,usage:i,reasoning_content:s,finish:l,metaBlobs:u,groundingMetadata:c,otherGeminiOutputs:p,geminiOutputOrder:d}=ec(e),m=c||W?.groundingMetadata,g=ep({groundingMetadata:c,textContent:(0,b.getTextContent)(n)}),f=(function(e,t=` 7 8`){if(!e||!Array.isArray(e))return e;let r=[],n=null;for(let a of e)if("text"===a.type)if(n){let e=n.text,r=a.text;Object.assign(n,a),"string"==typeof r&&""!==r.trim()?n.text=e+t+r:n.text=e}else n=a,r.push(n);else n=null,r.push(a);return r})((W?.content||[]).concat(n||[]),"").map(e=>"text"===e.type&&g?.length?{...e,textAnnotations:g}:e),y=eg(m);W={...W,finish:l,usage:i,role:"assistant",content:f,reasoning_content:(W?.reasoning_content||"")+(s||""),...o?{tool_calls:(W?.tool_calls||[]).concat(o)}:{},...p?.length?{otherGeminiOutputs:(W?.otherGeminiOutputs||[]).concat(p)}:{},...d?.length?{geminiOutputOrder:(W?.geminiOutputOrder||[]).concat(d.map(e=>({...e,index:(W?.geminiOutputOrder?.length||0)+e.index})))}:{},...u?.length?{metaBlobs:(W?.metaBlobs||[]).concat(u)}:{},...m?{groundingMetadata:m}:{},...y?{webSearch:y}:{}},s&&!W._reasoning_start&&(W._reasoning_start=Date.now()),!W._reasoning_start||s||W._reasoning_finish||(W._reasoning_finish=Date.now()),D(W),a=(t=t.substring(a[0].length)).match(em)}}}catch(t){"AbortError"===t.name?(e.releaseLock(),Q=!0):(console.error("Stream processing error",t),N(t))}finally{if(W?.geminiOutputOrder?.length){let e=new Set([].concat(W.content||[],W.tool_calls||[],W.otherGeminiOutputs||[]).map(e=>e?.id).filter(Boolean)),t=W.geminiOutputOrder.filter(t=>t?.id&&e.has(t.id));t.length?W.geminiOutputOrder=t:delete W.geminiOutputOrder}}}else W={role:"assistant",...ec(await j.json())};let Z=ep({groundingMetadata:W.groundingMetadata,textContent:(0,b.getTextContent)(W.content)});Array.isArray(W?.content)&&(W.content=W.content.map(e=>"text"===e.type&&Z?.length?{...e,textAnnotations:Z}:e));let ee=eg(W?.groundingMetadata);ee&&(W.webSearch=ee);let et=W?.usage;if(!et){let e=(0,n.getEstimatedTokens)(W?.content),t=(0,n.getEstimatedTokens)(T.map(e=>e.content).join("\n"));et={completion_tokens:e,prompt_tokens:t,total_tokens:e+t}}return{response:{...W,...Q?{tmMetadata:{incomplete:!0}}:{},model:t,usage:et,finish:W?.finish,...W?.reasoning_content?{_reasoning_finish:W._reasoning_finish||Date.now()}:{}}}}var e_=e.i(664753);let eh={message:["id","type","role","content","status"],function_call:["id","type","call_id","name","arguments","status","namespace"],function_call_output:["id","type","call_id","output","status"],reasoning:["id","type","summary","encrypted_content","status"],code_interpreter_call:["id","type","code","container_id","outputs","status"],web_search_call:["id","type","action","status"],file_search_call:["id","type","queries","results","status"]},ex=["type","role","content","status","phase"],eb={system:["input_text"],user:["input_text","input_image","input_file"],assistant:["output_text","refusal"]},eT={input_text:["type","text"],input_image:["type","image_url","file_id","detail"],input_file:["type","file_id","filename","file_url","file_data","detail"],output_text:["type","text","annotations","logprobs"],refusal:["type","refusal"]},eA=e=>{let t=Array.isArray(e?.content)?e.content:null;return e?.output_item_id||e?.id||t?.find(e=>e.output_item_id)?.output_item_id||t?.find(e=>e.id)?.id}
8,eO=async({messages:e,cacheController:t,blobStorageController:n,reasoningSupported:a,pdfSupported:o,externalImageURLSupported:i=!0})=>{let{totalSizeInMB:s}=(0,b.checkTotalPDFSizeFromMessages)(e),l=o&&s<=50;return((e=[])=>e.map(e=>{let t=eh[e.type]||(e.role&&(!e.type||"message"===e.type)?ex:[]),n=r.default.pickBy(r.default.pick(e,t),e=>null!=e);return"content"in n&&(n.content=(({content:e,role:t})=>{if(!Array.isArray(e))return e;let n=eb[t]||[];return e.filter(e=>n.includes(e?.type)).map(e=>r.default.pickBy(r.default.pick(e,eT[e.type]),e=>null!=e))})({content:n.content,role:n.role})),n}).filter(e=>Object.keys(e).length>0))((await Promise.all(e.map(async e=>{if(["user","tool"].includes(e.role)&&Array.isArray(e.content)){let r=(await Promise.all(e.content.map(async e=>{if("tm_image_file"===e.type){let r;if(e.metadata?.localBlobID){if(!n)throw Error("Blob file found but blobStorageController is not provided");if(!(r=await n.getBlobBase64(e.metadata.localBlobID,{metadata:e.metadata})))throw Error(`Unable to access the attachment "${e.metadata.name||""}". Please try again or check your attachments.`)}else if(!i&&e.sync?.url){let{base64:a}=await x(e,{cacheController:t,blobStorageController:n});r=a}else r=e.sync?.url||e.metadata.base64;return{type:"image_url",image_url:{url:r,detail:"high"}}}if(["tm_text_file","tm_blob_file"].includes(e.type)){let r=l&&e.metadata?.fileFormat==="pdf"&&e.metadata?.size<0x3200000;if(r&&e.sync?.url)return{type:"file",file:{file_url:e.sync.url}};let{text:a,base64:o}=await x(e,{cacheController:t,blobStorageController:n});return r?{type:"file",file:{filename:e.metadata?.name||"file.pdf",file_data:o}}:a?{type:"text",text:a}:{type:"text",text:e.text}}return e}))).filter(Boolean).filter(e=>"string"!=typeof e.text||""!==e.text.trim());return{...e,content:u(r)}}return e}))).map(e=>Array.isArray(e.content)?{...e,content:e.content.map(t=>{if("text"===t.type){let{textAnnotations:r,...n}=t;return{...n,type:"assistant"===e.role?"output_text":"input_text"}}if("file"===t.type)return{...t.file,type:"input_file"};if("refusal"===t.type){let{text:e,...r}=t;return{...r,refusal:e}}return"image_url"===t.type?{type:"input_image",image_url:t.image_url?.url,detail
8:t.image_url?.detail||"auto"}:t})}:e).map(e=>Array.isArray(e.content)&&"assistant"===e.role?{...e,content:e.content.filter(e=>!w.BUILT_IN_TM_CONTENT_TYPES.includes(e.type)||e.type===M.TM_PROVIDER_TOOL_CALL)}:e).flatMap(e=>(({message:e,reasoningSupported:t})=>{if("tool"===e.role)return[{type:"function_call_output",call_id:e.tool_call_id,output:"string"==typeof e.content?e.content:JSON.stringify(e.content)}];if("assistant"!==e.role)return[e];let{tool_calls:r,reasoning_summary:n,otherOutputs:a,outputOrder:o,...i}=e,s=t&&Array.isArray(n)?n:[],l=Array.isArray(r)?r.map(e=>({id:e.output_item_id,arguments:e.function.arguments,call_id:e.call_id||e.id,name:e.function.name,type:"function_call"})):[],u=i.content&&(!Array.isArray(i.content)||i.content.length>0)?(e=>{if(!Array.isArray(e.content)||!e.content.some(e=>e.type===M.TM_PROVIDER_TOOL_CALL))return[e];let t=[],r=[];for(let n of e.content)if(n.type===M.TM_PROVIDER_TOOL_CALL){if(n.name!==M.PROVIDER_TOOL_NAMES.OPENAI_CODE_EXECUTION)continue;r.length>0&&(t.push({...e,content:r}),r=[]),t.push(n.originalCall)}else n.type!==M.TM_PROVIDER_TOOL_CALL_RESULT&&r.push(n);return r.length>0&&t.push({...e,content:r}),t.length>0?t:[e]})(i):[];return(({items:e,outputOrder:t})=>{if(!Array.isArray(t)||0===t.length)return e;let r=new Map;return t.forEach((e,t)=>{let n=eA(e);n&&!r.has(n)&&r.set(n,t)}),[...e].sort((e,t)=>(r.get(e.id)??1/0)-(r.get(t.id)??1/0))})({items:[...s,...Array.isArray(a)?a:[],...u,...l].map(e=>({...e,id:eA(e)})),outputOrder:o})})({message:e,reasoningSupported:a})).map((e,t,n)=>"code_interpreter_call"===e.type||"reasoning"===e.type&&n[t+1]?.type==="code_interpreter_call"?e:r.default.omit(e,"id")).filter((e,t,r)=>"reasoning"!==e.type||r[t+1]?.role!=="user"||(e_.metrics.count("invalid_reasoning_message",1),!1)))},eE=e=>{var t;if(!Array.isArray(e?.output))return console.warn("Invalid OpenAI response format:",e),{content:[],tool_calls:[]};let n=(e=>{if(!Array.isArray(e))return[];let t=-1;return(e.forEach((e,r)=>{e?.type==="message"&&e?.role==="user"&&(t=r)}),-1===t)?e:e.slice(t+1)})(e.output),a=n.flatMap(e=>{if("message"===e.type)return(e.content||[]).map(t=>({id:e.id,output_item_id:e.id,type:"refusal"===t.type?"refusal":"text",text:t.text||t.refusal||"",...Array.isArray(t.annotations)&&t.annotations.length?{textAnnotations:t.annotations.map(e=>"url_citation"===e.type?{apiType:"openai",startIndex:e.start_index,endIndex:e.end_index,sources:[{url:e.url,title:e.title}],type:"tm_web_search_source",originalAnnotation:e}:"container_file_citation"===e.type?{apiType:"openai",startIndex:e.start_index,endIndex:e.end_index,fileID:e.file_id,fileName:e.filename,type:"tm_file_attachment",originalAnnotation:e}:{type:"tm_unsupported_annotation",apiType:"openai",originalAnnotation:e})}:{}}));if("code_interpreter_call"===e.type){if(!e||"code_interpreter_call"!==e.type)return[];let t=[];if(t.push({type:M.TM_PROVIDER_TOOL_CALL,id:e.id,name:M.PROVIDER_TOOL_NAMES.OPENAI_CODE_EXECUTION,input:{code:e.code||""},originalCall:e}),e.status&&"in_progress"!==e.status){let r="completed"===e.status;t.push({type:M.TM_PROVIDER_TOOL_CALL_RESULT,callID:e.id,name:M.PROVIDER_TOOL_NAMES.OPENAI_CODE_EXECUTION,output:{stdout:"",stderr:r?"":"Code execution failed"},originalResult:e})}return t}return[]}),o=n.filter(e=>"reasoning"===e.type),i=o.flatMap(e=>(e.summary||[]).map(e=>e.text||"")).join("\n\n"),s=n.filter(e=>"function_call"===e.type).map(e=>({id:e.call_id,output_item_id:e.id,call_id:e.call_id,type:"function",function:{name:e.name,arguments:e.arguments}})),l=e.usage?.input_tokens_details?.cached_tokens,u=l?e.usage?.input_tokens-l:e.usage?.input_tokens,c={completion_tokens:e.usage?.output_tokens,prompt_tokens:u,total_tokens:e.usage?.total_tokens,...l?{cache_read_input_tokens:l}:{}},p="max_output_tokens"===(t=e.incomplete_details?.reason)?"length":t,d={content:a,tool_calls:s,otherOutputs:n.filter(e=>"message"!==e.type&&"function_call"!==e.type&&"reasoning"!==e.type&&"code_interpreter_call"!==e.type),outputOrder:n.map((e,t)=>r.default.pickBy({index:t,type:e?.type,id:e?.id,call_id:e?.call_id},e=>void 0!==e)),usage:c,finish:p,reasoning_summary:o,reasoning_content:i,_reasoning_finish:a.length>0||s.length>0?Date.now():void 0},m=null;try{m=(({processedResponse:e})=>
8{if(!e||"object"!=typeof e)return null;let t=(Array.isArray(e.otherOutputs)?e.otherOutputs:[]).filter(e=>e?.type==="web_search_call").map((e,t)=>{let r,n="string"==typeof e?.id?e.id:void 0,a=e?.action?.type,o=e?.action?.query,i=e?.action?.url,s=e?.action?.pattern;return"search"===a&&o?r=`Search "${o}"`:"open_page"===a&&i?r=`Open ${i}`:"find_in_page"===a&&s&&i&&(r=`Find "${s}" in ${i}`),{id:`ows_call_${(0,b.simpleHash)(n||`${t}:${o||i||""}`)}`,provider:"openai",toolName:"web_search",...r?{description:r}:{}}});return t.length>0?{version:1,calls:t}:null})({processedResponse:d})}catch(e){console.error("Failed to build webSearch",e)}return{...d,...m?{webSearch:m}:{}}},ek=({data:e,buffer:t={}})=>{switch(e.type){case"response.created":case"response.in_progress":{let r=e.response||{};return{...t,...r,output:Array.isArray(r.output)&&r.output.length>0?r.output:t.output||r.output||[]}}case"response.output_item.added":return{...t,output:(t.output||[]).concat(e.item?[e.item]:[])};case"response.content_part.added":{let{output_index:r,part:n}=e;return{...t,output:(t.output||[]).map((e,t)=>{if(t===r){let t=e.content||[];return{...e,content:t.concat(n||[])}}return e})}}case"response.output_text.delta":{let{output_index:r,content_index:n,delta:a}=e;return{...t,output:(t.output||[]).map((e,t)=>{if(t!==r)return e;let o=[...e.content||[]],i=o[n]||{type:"output_text",text:""};return o[n]={...i,text:(i.text||"")+(a||"")},{...e,content:o}})}}case"response.output_text.annotation.added":{let{output_index:r,content_index:n,annotation:a}=e;return{...t,output:(t.output||[]).map((e,t)=>{if(t!==r)return e;let o=[...e.content||[]],i=o[n]||{type:"output_text",text:""};return o[n]={...i,annotations:(i.annotations||[]).concat(a||[])},{...e,content:o}})}}case"response.reasoning_summary_part.added":{let{output_index:r,part:n}=e;return{...t,output:(t.output||[]).map((e,t)=>{if(t===r){let t=e.summary||[];return{...e,_reasoning_start:e._reasoning_start||Date.now(),summary:t.concat(n||[])}}return e})}}case"response.reasoning_summary_text.delta":{let{output_index:r,summary_index:n,delta:a}=e;return{...t,output:(t.output||[]).map((e,t)=>{if(t!==r)return e;let o=[...e.summary||[]],i=o[n]||{type:"summary_text",text:""};return o[n]={...i,text:(i.text||"")+(a||"")},{...e,summary:o}})}}case"response.reasoning_summary_part.done":{let{output_index:r}=e;return{...t,output:(t.output||[]).map((e,t)=>t===r?{...e,_reasoning_finish:Date.now()}:e)}}case"response.function_call_arguments.delta":{let{output_index:r,delta:n}=e;return{...t,output:(t.output||[]).map((e,t)=>t===r?{...e,arguments:(e.arguments||"")+(n||"")}:e)}}case"response.code_interpreter_call_code.delta":{let{output_index:r,delta:n}=e;return{...t,output:(t.output||[]).map((e,t)=>{if(t===r){let t=e.code||"";return{...e,code:t+(n||"")}}return e})}}case"response.code_interpreter_call.completed":{let{output_index:r}=e;return{...t,output:(t.output||[]).map((e,t)=>t===r?{...e,status:"completed"}:e)}}case"response.output_item.done":{let{item:r}=e;return{...t,output:(t.output||[]).map(e=>e.id===r.id?r:e)}}case"response.completed":case"response.incomplete":case"response.failed":{let r=e.response||{};return{...t,...r,output:Array.isArray(r.output)&&r.output.length>0?r.output:t.output||r.output||[]}}case"error":throw Error(e?.error?.message||"Unknown streaming error");default:return t}},eI=async({content:e,endpoint:t,headers:r={}})=>{if(!Array.isArray(e))return[];let n=t?.replace(/\/responses$/,"")||"https://api.openai.com/v1",a=[],o=new Set;for(let t of e)for(let e of t?.textAnnotations||[])if(e?.type==="tm_file_attachment"&&e?.originalAnnotation){let{container_id:t,file_id:r,filename:n}=e.originalAnnotation;t&&r&&!o.has(r)&&(o.add(r),a.push({container_id:t,file_id:r,filename:n||e.fileName||"file"}))}if(0===a.length)return[];let i=[];for(let e of a)try{let t=`${n}/containers/${e.container_id}/files/${e.file_id}/content`,a=await fetch(t,{method:"GET",headers:r});if(!a.ok){console.error(`Failed to download file ${e.file_id}: ${a.status} ${a.statusText}`);continue}let o=a.headers.get("Content-Type")||(0,m.getMimeTypeFromFilename)(e.filename),s=await a.arrayBuffer(),l=(0,m.arrayBufferToBase64)(s),u=o?.startsWith("image/")?"tm_image_file":"tm_blob_file",c={id:(0,I.v4)(),type:u,text:`[File Attachment: ${e.filename} (${o})]`,metadata:{name:e.filename,size:s.byteLength,type:o,base64:`data:${o};base64,${l}`,source:"openai_code_execution",fileID:e.file_id,containerID:e.container_id}};i.push(c)}catch(t){console.error(`Error downloading file ${e.file_id}:`,t)}return i},ew="Something went wrong. This could be a temporary network connection issue. Please try again or c
8ontact support. Opening the console might help clarifying the issue.",eS=/(?:^|\r?\n)data:\s*(.*)(?:\n\n|\r\r|\r\n\r\n)/,eP=[{name:"temperature",keyName:"temperature",type:"number"},{name:"presencePenalty",keyName:"presence_penalty",type:"number"},{name:"frequencyPenalty",keyName:"frequency_penalty",type:"number"},{name:"topP",keyName:"top_p",type:"number"},{name:"maxTokens",keyName:"max_output_tokens",type:"number"},{name:"reasoningEffort",keyName:"reasoning.effort",type:"enum",options:["low","medium","high"]}];async function ev({endpoint:e="https://api.openai.com/v1/responses",model:t,modelInfo:i,temperature:s,reasoningEffort:l,presencePenalty:u,frequencyPenalty:c,extraModelParamsEnabled:p,extraModelParamsJSON:d,topP:m,maxTokens:g,parameterDefinitions:f=[],contextLimit:y=0,contextLengthOverride:_,signal:h,stream:x,messages:T,functions:A,providerTools:O,providerToolDefinitions:E=[],extras:k={},headers:I={},onStreamStarted:P=()=>{},onStreamTextChunk:D=e=>{},onModelUnavailable:R=()=>{},onContextSkipped:C=()=>{},onFreeMessagesCountChanged:N=()=>{},onAborted:L=()=>{},onStreamError:M=()=>{},onRequestPrepared:B=()=>{},cacheController:U,blobStorageController:$,thinkingOptions:j,runInBackground:F=!1}={}){let q,G,H=["text","image_url","input_audio","refusal","audio","file",...w.BUILT_IN_TM_CONTENT_TYPES],V=["system","user","assistant","function","tool"],{contextMessages:K,skipped:Y}=a({messages:T.filter(e=>V.includes(e.role)).map(e=>({...e,type:void 0})).map(e=>e.tool_calls?{...e,tool_calls:e.tool_calls.map(e=>r.default.omit(e,["index","pluginUUID","pluginFunctionID","thoughtSignature"]))}:e).map(e=>{if(Array.isArray(e.content)){let t=e.content.filter(e=>H.includes(e.type));return t.length!==e.content.length&&console.warn(`Some content in the message is not supported: ${e.content.filter(e=>!H.includes(e.type)).map(e=>e.type).join(", ")}`),{...e,content:t}}return e}).map(e=>"system"===e.role&&!1===i.systemMessageSupported?{...e,role:"user"}:e),contextLimit:y,allowedContextLength:o(_||i?.contextLength),dependencies:{getEstimatedTokens:n.getEstimatedTokens,getTextContent:b.getTextContent}});C?.(Y);let X=x&&!F;if(i?.streamOutputSupported===!1&&X)return{error:`The model you are using (${i.title}) doesn't support streaming output. Please disable output streaming and try again.`};let z=p&&(0,b.parseOrNull)(d)||{};try{G=await eO({messages:K,cacheController:U,blobStorageController:$,reasoningSupported:i?.reasoningSupported||i?.thinkingSupported,pdfSupported:i?.pdfSupported,externalImageURLSupported:i?.externalImageURLSupported})}catch(e){return console.error(e),{error:e.message}}let J=F&&["o3","o4-mini"].includes(t),W=F||O?.includes("PROVIDER_CODE_EXECUTION"),Q="gpt-5-chat-latest"!==t;try{let r={"Content-Type":"application/json",...I},n={model:t,...i?.reasoningSupported||i?.thinkingSupported?{reasoning:{summary:j?"auto":void 0},include:Q?["reasoning.encrypted_content"]:[]}:{},stream:X,input:G,store:!!W||void 0,background:!!F||void 0,service_tier:J?"flex":void 0,...A?.length||O?.length?{tools:[...v({providerTools:O,providerToolDefinitions:E,apiType:"openai-response-api"}),...(A||[]).map(e=>({...e,type:e.type||"function"}))],tool_choice:"auto"}:{}};(0,S.applyModelParameters)({body:n,modelParameters:{temperature:s,presencePenalty:u,frequencyPenalty:c,topP:m,maxTokens:parseInt(g),reasoningEffort:l},parameterDefinitions:(0,S.mergeParameterDefinitions)(eP,f)}),n={...n,...z,...k,reasoning:z.reasoning||k.reasoning?{...n.reasoning,...z.reasoning,...k.reasoning}:n.reasoning},B?.({endpoint:e,headers:r,body:n});try{q=await fetch(e,{method:"POST",signal:h,headers:r,body:JSON.stringify(n)})}catch(e){if(e instanceof TypeError)return{code:"client_fetch_error",error:"Could not connect to the API. Please check your network connection and try again (code: 2)."};throw e}}catch(e){if("AbortError"===e.name)return void L();throw e}if(500===q.status)return{status:q.status,error:"Could not connect to OpenAI API. Please try again later. This could be because OpenAI's server is experiencing high demand and rejected your request. Go to https://status.openai.com/ to check their status."};if(q.status>=400){let e;try{e=await q.clone().json()}catch(e){return console.error("Could not parse JSON response from OpenAI API",e),console.error("Original error message:",await q.clone().text()),{status:q.status,error:"Sorry, this model is currently experiencing a problem from the server side. Please try again later or select another model. Open the console log to see the original error message."}}
8if("access_denied"===e.error)return{status:q.status,error:"Access denied. Please try to reopen the app. If the issue persists, please contact support."};if(e.error?.code==="setapp_refresh_token_failed")return window.webkit?.messageHandlers?.TypingMindMacApp?.postMessage("SETAPP_REFRESH_TOKEN_FAILED"),{status:q.status,error:"Your login session has expired. Please close the app and reopen again."};if(e.error?.type==="insufficient_quota")return{status:q.status,error:"Your OpenAI API key has run out of quota. Please go to your OpenAI Dashboard to fix this: https://platform.openai.com/account/billing/overview"};if(429===q.status)return e.userMessage?{status:q.status,error:e.userMessage}:{status:q.status,error:"OpenAI has rejected your request with error code 429. Here are the possible reasons: 1. You are sending requests too quickly; 2. You have hit your maximum monthly spend (hard limit); 3. The model is currently overloaded. Here is the error message from OpenAI: "+(e.error?.message||"")};if(e.error&&"invalid_api_key"===e.error.code){let e=I?.Authorization||I?.authorization;return e&&e.includes("encrypted-")?{status:q.status,error:"API Key is locked, please unlock it first."}:{status:q.status,error:"Invalid API key or the API key has been revoked."}}if(e.error&&"context_length_exceeded"===e.error.code)return{status:q.status,code:"context_length_exceeded",error:e.error?.message};if(e.error?.code==="model_not_found"&&i.availableSoon)return{status:q.status,code:"model_available_soon",error:`${i?.source} has not released the ${i.modelID} model for API use yet. Please try again later or check the latest announcement from ${i?.source}.`};if(e.error&&e.error.message){let r=e.error.message;r.match(/The model: `(.*)` does not exist/)&&(r+=`. You are using ${t} model. Please change the model in the setting and try again.`),R();let n=i?.source||t;return{status:q.status,error:`Sorry, ${n} has rejected your request. Here is the error message from ${n}: `+r}}return e.userMessage?{status:q.status,error:e.userMessage}:"tm_not_authorized"===e.code?{status:q.status,error:"Your session has expired. Please reload the app and try again."}:{status:q.status,error:ew+" Technical details: "+JSON.stringify(e),serverError:e}}if(!q.ok)return{status:q.status,error:ew+" Technical details: Not OK."};let Z=q.headers.get("x-remaining-free-messages");Z&&N(Number(Z));let ee=null,et=null,er=!1;if(X){if("u"<typeof TextDecoderStream)return{error:"Your browser doesn't support streaming response. Please upgrade your browser to the latest version or turn off streaming."};let e=q.body.pipeThrough(new TextDecoderStream("utf8",{fatal:!0})).getReader();P();let t={};try{let r="";for(;;){let{value:n,done:a}=await e.read();if(a)break;let o=(r+=n).match(eS);for(;o&&"[DONE]"!==o[1].trim();){let e=JSON.parse(o[1]);t=ek({data:e,buffer:t});let{content:n,tool_calls:a,reasoning_content:i,_reasoning_finish:s,webSearch:l}=eE(t);(n.length||a?.length||l?.calls?.length||i)&&D({content:n,tool_calls:a?.length?a:void 0,reasoning_content:i,_reasoning_finish:s,...l?{webSearch:l}:{}}),o=(r=r.slice(o.index+o[0].length)).match(eS)}}}catch(t){console.error("Error while reading streaming response:",t),"AbortError"===t.name?(e.releaseLock(),er=!0):M(t)}let r=eE(t);if(ee={role:"assistant",...r,...er?{tmMetadata:{incomplete:!0}}:{}},r.usage)et=r.usage;else{let e=(0,n.getEstimatedTokens)(r.content),t=(0,n.getEstimatedTokens)(K.map(e=>(0,b.getTextContent)(e.content)).join("\n"));et={completion_tokens:e,prompt_tokens:t,total_tokens:e+t}}}else{let e=await q.json();if(F)return{backgroundRequestID:e.id};let t=eE(e);ee={role:"assistant",...t},et=t.usage}if(ee?.tool_calls&&0===ee.tool_calls.length&&ee.content&&delete ee.tool_calls,O?.includes("PROVIDER_CODE_EXECUTION")){let t=await eI({content:ee.content,endpoint:e,headers:I});t?.length&&(ee.content=[...ee.content,...t])}return{response:{...ee,usage:et}}}let eD=async({endpoint:e="https://api.openai.com/v1/responses",requestID:t,signal:r,headers:n={}})=>{let a;try{let o={"Content-Type":"application/json",...n};a=await fetch(`${e}/${t}`,{method:"GET",signal:r,headers:o})}catch(e){if("AbortError"===e.name)return{status:"failed",error:"aborted"};throw e}if(500===a.status)return{status:"pending"};let o=e=>
8{if("access_denied"===e)return{status:"failed",error:"Access denied. Please try to reopen the app. If the issue persists, please contact support."};if(e?.type==="insufficient_quota")return{status:"failed",error:"Your OpenAI API key has run out of quota. Please go to your OpenAI Dashboard to fix this: https://platform.openai.com/account/billing/overview"};if("invalid_api_key"===e.code){let e=n?.Authorization||n?.authorization;return e&&e.includes("encrypted-")?{status:"failed",error:"API Key is locked, please unlock it first."}:{status:"failed",error:"Invalid API key or the API key has been revoked."}}if("context_length_exceeded"===e.code)return{status:"failed",code:"context_length_exceeded",error:e?.message};if(e.message){let t=e.message;return t.match(/The model: `(.*)` does not exist/)&&(t+=`. You are using ${model} model. Please change the model in the setting and try again.`),{status:"failed",error:"Sorry, the model provider has rejected your request. Here is the error message from the model provider: "+t}}return console.error("Unknown error from OpenAI API:",e),L.captureException(e),{status:"failed",error:ew+" Technical details: Not OK."}};if(a.status>=400){let e;try{e=await a.clone().json()}catch(e){return console.error("Could not parse JSON response from OpenAI API",e),console.error("Original error message:",await a.clone().text()),{status:"failed",error:"Sorry, this model is currently experiencing a problem from the server side. Please try again later or select another model. Open the console log to see the original error message."}}return 429===a.status?e.userMessage?{status:"failed",error:e.userMessage}:{status:"failed",error:"OpenAI has rejected your request with error code 429. Here are the possible reasons: 1. You are sending requests too quickly; 2. You have hit your maximum monthly spend (hard limit); 3. The model is currently overloaded. Here is the error message from OpenAI: "+(e.error?.message||"")}:e.userMessage?{status:"failed",error:e.userMessage}:"tm_not_authorized"===e.code?{status:"failed",error:"Your session has expired. Please reload the app and try again."}:e.error?o(e.error):{status:"failed",error:ew+" Technical details: "+JSON.stringify(e),serverError:e}}if(!a.ok)return{status:"failed",error:ew+" Technical details: Not OK."};let i=await a.json();if(["queued","in_progress"].includes(i.status))return{status:"pending"};if(["failed","cancelled"].includes(i.status))return i.error?o(i.error):"cancelled"===i.status?{status:"failed",error:"The request has been cancelled."}:(console.error("OpenAI API returned failed status without error message:",i),{status:"failed",error:ew+" Technical details: Not OK."});if(i.error)return o(i.error);let s=eE(i),l={role:"assistant",...s},u=s.usage;return l?.tool_calls&&0===l.tool_calls.length&&l.content&&delete l.tool_calls,{status:"completed",response:{...l,usage:u}}};e.s(["default",0,ev,"pollOpenAIResponse",0,eD],236465);var eR=e.i(471789);let eC=["encrypted_content","reasoning_content","reasoning_details","reasoning","reasoning_summary","_reasoning_start","_reasoning_finish"],eN=["signature","thoughtSignature","_reasoning_start","_reasoning_finish"],eL=(e,t)=>Array.isArray(e)?e.map(e=>eL(e,t)):e&&"object"==typeof e?Object.fromEntries(Object.entries(e).filter(([e])=>!t.includes(e)).map(([e,r])=>[e,eL(r,t)])):e,eM=async({model:e,modelInfo:t,providerInfo:r,messages:n,proxyEndpoint:a,options:o={},customLLMDependencies:i={}})=>{let s,l=(0,eR.getProviderAPITypeConfig)({providerInfo:r,apiType:t.apiType}),u=t.apiType||l?.type,c="claude"===u||"bedrock-claude"===u?en:"gemini"===u?ey:"openai"===u||"setapp"===u?N:"openai-response-api"===u?ev:null;if(!c)throw Error("Unsupported API Type");let p=window.localStorage.getItem("__OVERRIDE_HOSTED_COMPLETION_ENDPOINT__")||a||t.endpoint||l?.endpoint||("bedrock-claude"===u?"tm_internal_bedrock_sdk://":"");if(!p)throw Error("No target API endpoint found");let d=t?.useTypingMindProxy&&(t?.expireTypingMindProxyAt===null||Date.now()<t?.expireTypingMindProxyAt),m=r?.useTypingMindProxy||d,g=m?"https://www.typingmind.com/api/cors-proxy":p,f=Object.fromEntries([...r?.headerRows||[],...t?.headerRows||[]].map(e=>[e.key,e.value]).concat(m?[["x-target-endpoint",p]]:[]));if(n.some(e=>Array.isArray(e.content)&&e.content.some(e=>"image_url"===e.type||"tm_image_file"===e.type))&&!t.visionSupported)return{error:`The model you are using (${t.title}) doesn't support image input. Please select a different model and try again.`};let y=n.filter(e=>"clear-context"!==e.type);y.length!==n.length&&console.warn("Some messages have been filtered out due to invali
8d role.");let _=(s=y.filter(e=>("tool"!==e.role||!!e.tool_call_id)&&(!e.tool_call_id||y.some(t=>t.tool_calls&&t.tool_calls.some(t=>t&&t.id===e.tool_call_id))))).map(e=>{let{tool_calls:t,...r}=e;if(t&&t.length>0){let n=t.filter(e=>e&&s.some(t=>t.tool_call_id===e.id));return n.length>0?{...r,tool_calls:n}:(Array.isArray(e.content)?e.content.length>0:e.content?.trim())?r:null}return e}).filter(Boolean);_.length!==y.length&&console.warn("Some messages have been filtered out due to having invalid format.",n.filter(e=>!_.includes(e)));let{contextLimit:h,temperature:x,presencePenalty:T,frequencyPenalty:A,topP:O,topK:E,maxTokens:k,safetySettings:I,promptCachingEnabled:w,reasoningEffort:P,thinkingOptions:v,imageSize:D,functions:R,endpoint:C,headers:L,proxyEndpoint:M,...B}=o,U=t.supportedParameters||l?.supportedParameters||b.DEFAULT_SUPPORTED_PARAMETERS_MAP[u]||b.DEFAULT_SUPPORTED_PARAMETERS_MAP.global,$=(0,S.filterSupportedParameters)({contextLimit:h,temperature:x,presencePenalty:T,frequencyPenalty:A,topP:O,topK:E,maxTokens:k,safetySettings:I,promptCachingEnabled:w,reasoningEffort:P,imageSize:D},U);return await c({...B,...$,functions:Array.isArray(R)?R.filter(Boolean).map(e=>JSON.parse((0,ei.default)(es(e)))).sort((e,t)=>{let r=e?.name||e?.function?.name||"",n=t?.name||t?.function?.name||"";if(r<n)return -1;if(r>n)return 1;let a=(0,ei.default)(e),o=(0,ei.default)(t);return a<o?-1:+(a>o)}):[],model:e,modelInfo:t,messages:(({messages:e,providerID:t,modelID:r})=>t||r?e.map(e=>{if(e?.role!=="assistant"||!e.provider||(({messageProviderID:e,messageModelID:t,currentProviderID:r,currentModelID:n})=>e===eR.OTHERS_PROVIDER.id&&r===eR.OTHERS_PROVIDER.id?t===n:e===r)({messageProviderID:e.provider,messageModelID:e.model,currentProviderID:t,currentModelID:r}))return e;let n={...e};for(let e of eC)delete n[e];return delete n.otherOutputs,delete n.outputOrder,Array.isArray(n.content)&&(n.content=n.content.map(e=>e&&"object"==typeof e?"thinking"===e.type?null:eL(e,eN):e).filter(Boolean)),Array.isArray(n.tool_calls)&&(n.tool_calls=n.tool_calls.map(e=>e&&"object"==typeof e?eL(e,eN):e)),delete n.otherGeminiOutputs,delete n.geminiOutputOrder,delete n.metaBlobs,n}):e)({messages:_,providerID:r?.id||eR.OTHERS_PROVIDER.id,modelID:t?.id}),endpoint:g,headers:f,proxyEnabled:m,orgID:t.connectionParams?.openAIOrgID,parameterDefinitions:(0,S.mergeParameterDefinitions)(l?.supportedParameters||[],t.supportedParameters||[]),providerToolDefinitions:l?.providerToolDefinitions||[],thinkingOptions:v,extras:{...o.extras,...t.bodyParams||{},...Object.fromEntries([...r?.bodyRows||[],...t?.bodyRows||[]].map(e=>{let t=e.value;if("number"===e.type&&(t=Number(t)),"boolean"===e.type&&(t="true"===t.trim()),"object"===e.type)try{t=JSON.parse(t)}catch(e){throw Error("Custom model body parsing error: ",e.message)}return[e.key,t]})||[])},customLLMDependencies:i})};e.s(["getAIResponse",0,eM],864156)},236910,e=>{"use strict";var t=e.i(476868);let r=(e=[])=>e.map(e=>"string"==typeof e?e:e?.name?e.name:null).filter(Boolean),n=(...e)=>{let t=new Map;return e.flat().filter(e=>"object"==typeof e&&null!==e).forEach(e=>{t.set(e.name,e)}),Array.from(t.values())};e.s(["applyModelParameters",0,({body:e,modelParameters:r,parameterDefinitions:a,parameterTransformers:o})=>{let i=n(a);Object.entries(r).forEach(([r,n])=>{let a=i.find(e=>e.name===r);if(!a)return;let s=(o?.[a.transformer]||(({value:e,parameterDefinition:t})=>{if(!t)return null;let{keyName:r,type:n}=t;if("number"===n){let n=parseFloat(e);if(!Number.isFinite(n))return null;let{min:a,max:o}=t;return void 0!==a&&n<a||void 0!==o&&n>o?null:{keyName:r,value:n}}if("enum"===n){let{options:r}=t;if(!Array.isArray(r)||!r.includes(e))return null}return{keyName:r,value:e}}))({value:n,parameterDefinition:a});s&&(Array.isArray(s)?s.forEach(r=>{t.default.set(e,r.keyName,r.value)}):t.default.set(e,s.keyName,s.value))})},"filterSupportedParameters",0,(e={},t)=>{let n={},a=r(t);return Object.keys(e).forEach(t=>{a.includes(t)&&(n[t]=e[t])}),n},"getModelSettingsFromCharacter",0,function(e){return e?.isEnforceDefaultModel&&e?.isEnforceModelParameters?e?.modelParameters:null}
8,"getSupportedParameterNames",0,r,"mergeParameterDefinitions",0,n])}]); 9 10//# debugId=b27a16bd-59b6-fc0b-d7cf-218d7dc5a834 11//# sourceMappingURL=26yx_fqt8xz6_.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.