murmur-rag 2.0.0 → 2.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import{oe,Ie}from"./embed-s9zy3aav.js";import{tt}from"./embed-7xhp36fz.js";import{m,b,P,me,u,e,r,c,v,Ae,o,t,U,l,y,i,n,G,k,T,d,Oe,ue,fe,ae,j,X,M,we,Yt,te,le,xe,ke,Z,F,Te,z,K,He,Me,tn,de,C,R,L,Ze,he,W,Se,lt,ge,Q,a,s,q,J,h,g,ve,S,_,O,H,I,D,p,_e,E,Y}from"./embed-3swpcbya.js";var zn="4.0.107",fn=()=>t({code:r().nullable(),message:e(),status:e(),details:o(v()).nullish()}),Jn=a(()=>s(t({error:fn()}))),Xe=I({errorSchema:Jn,errorToMessage:(f)=>f.error.message}),Yn=()=>l([t({text:e()}),t({inlineData:t({mimeType:e(),data:e()})}),t({fileData:t({fileUri:e(),mimeType:e()})})]),Xn=a(()=>s(t({outputDimensionality:r().optional(),taskType:i(["SEMANTIC_SIMILARITY","CLASSIFICATION","CLUSTERING","RETRIEVAL_DOCUMENT","RETRIEVAL_QUERY","QUESTION_ANSWERING","FACT_VERIFICATION","CODE_RETRIEVAL_QUERY"]).optional(),content:o(o(Yn()).min(1).nullable()).optional()}))),Qn=class f{static[k](w){return E({modelId:w.modelId,config:w.config})}static[T](w){return new f(w.modelId,w.config)}get provider(){return this.config.provider}constructor(w,x){this.specificationVersion="v4",this.maxEmbeddingsPerCall=100,this.supportsParallelCalls=!0,this[tn]=({providerOptions:A,values:N,startIndex:B,endIndex:re})=>{let ee=A?.google?.content;if(!Array.isArray(ee))return A;return zt({multimodalContent:ee,values:N}),{...A,google:{...A?.google,content:ee.slice(B,re)}}},this.modelId=w,this.config=x}async doEmbed({values:w,dimensions:x,headers:A,abortSignal:N,providerOptions:B}){let re=await h({provider:"google",providerOptions:B,schema:Xn});if(w.length>this.maxEmbeddingsPerCall)throw new me({provider:this.provider,modelId:this.modelId,maxEmbeddingsPerCall:this.maxEmbeddingsPerCall,values:w});let ee=d(this.config.headers?await _(this.config.headers):void 0,A),V=re?.content;if(zt({multimodalContent:V,values:w}),w.length===1){let Le=V?.[0],Ce=w[0]?[{text:w[0]}]:[],Ee=Le!=null?[...Ce,...Le]:[{text:w[0]}],{responseHeaders:je,value:Ne,rawValue:ye}=await g({url:`${this.config.baseURL}/models/${this.modelId}:embedContent`,headers:ee,body:{model:`models/${this.modelId}`,content:{parts:Ee},outputDimensionality:re?.outputDimensionality??x,taskType:re?.taskType},failedResponseHandler:Xe,successfulResponseHandler:p(eo),abortSignal:N,fetch:this.config.fetch});return{warnings:[],embeddings:[Ne.embedding.values],usage:void 0,response:{headers:je,body:ye}}}let{responseHeaders:pe,value:ce,rawValue:Re}=await g({url:`${this.config.baseURL}/models/${this.modelId}:batchEmbedContents`,headers:ee,body:{requests:w.map((Le,Ce)=>{let Ee=V?.[Ce],je=Le?[{text:Le}]:[];return{model:`models/${this.modelId}`,content:{role:"user",parts:Ee!=null?[...je,...Ee]:[{text:Le}]},outputDimensionality:re?.outputDimensionality??x,taskType:re?.taskType}})},failedResponseHandler:Xe,successfulResponseHandler:p(Zn),abortSignal:N,fetch:this.config.fetch});return{warnings:[],embeddings:ce.embeddings.map((Le)=>Le.values),usage:void 0,response:{headers:pe,body:Re}}}},Zn=a(()=>s(t({embeddings:o(t({values:o(r())}))}))),eo=a(()=>s(t({embedding:t({values:o(r())})})));function zt({multimodalContent:f,values:w}){if(f!=null&&f.length!==w.length)throw Error(`The number of multimodal content entries (${f.length}) must match the number of values (${w.length}).`)}function Tt(f){return f.includes("/")?f:`models/${f}`}function to({stream:f,getContinuationToken:w,continueStream:x}){let A=f.getReader(),N;return new ReadableStream({async pull(B){while(!0){let{done:re,value:ee}=await A.read();if(!re){if(ee.success){let pe=w(ee.value);if(pe!=null)N=pe}B.enqueue(ee);return}if(N==null){B.close();return}let V=N;N=void 0;try{A=(await x(V)).getReader(),B.enqueue({type:"continuation-start"});return}catch(pe){B.enqueue({success:!1,error:pe,rawValue:void 0}),B.close();return}}},async cancel(B){await A.cancel(B)}})}function Jt(f){if(f==null)return te();let w=f.promptTokenCount??0,x=f.candidatesTokenCount??0,A=f.toolUsePromptTokenCount??0,N=f.cachedContentTokenCount??0,B=f.thoughtsTokenCount??0,re=w+A;return{inputTokens:{total:re,noCache:re-N,cacheRead:N,cacheWrite:void 0},outputTokens:{total:x+B,text:x,reasoning:B},raw:f}}function jt(f,w){if(f==null||w==null)return w??f;return{...f,...w,promptTokenCount:vt(f.promptTokenCount,w.promptTokenCount),candidatesTokenCount:vt(f.candidatesTokenCount,w.candidatesTokenCount),toolUsePromptTokenCount:vt(f.toolUsePromptTokenCount,w.toolUsePromptTokenCount),totalTokenCount:vt(f.totalTokenCount,w.totalTokenCount),cachedContentTokenCount:vt(f.cachedContentTokenCount,w.cachedContentTokenCount),thoughtsTokenCount:vt(f.thoughtsTokenCount,w.thoughtsTokenCount),promptTokensDetails:kt(f.promptTokensDetails,w.promptTokensDetails),cacheTokensDetails:kt(f.cacheTokensDetails,w.cacheTokensDetails),candidatesTokensDetails:kt(f.candidatesTokensDetails,w.candidatesTokensDetails),toolUsePromptTokensDetails:kt(f.toolUsePromptTokensDetails,w.toolUsePromptTokensDetails)}}function vt(f,w){return f==null&&w==null?w??f:(f??0)+(w??0)}function kt(f,w){if(f==null||w==null)return w??f;let x=new Map;for(let{modality:A,tokenCount:N}of[...f,...w])x.set(A,(x.get(A)??0)+N);return Array.from(x,([A,N])=>({modality:A,tokenCount:N}))}var yn=t({language:e().describe("The programming language of the code."),code:e().describe("The code to be executed.")}),vn=t({outcome:e().describe('The outcome of the execution (e.g., "OUTCOME_OK").'),output:e().describe("The output from the code execution.")}),no=S({id:"google.code_execution",inputSchema:yn,outputSchema:vn}),oo="skip_thought_signature_validator",io=/^data:([^;,]+);base64,(.+)$/s;function so(f){let w=io.exec(f);if(w==null)return;return{mediaType:w[1],data:w[2]}}function ao(f){let w=so(f);if(w==null)return;return{inlineData:{mimeType:w.mediaType,data:w.data}}}function Gt(f){if(Array.isArray(f))return f.some(Gt);if(typeof f!=="object"||f===null)return!1;return Object.entries(f).some(([w,x])=>w==="$ref"||Gt(x))}function Xt(f){return Gt(f)?JSON.stringify(f):f}function ro(f,w,x,A,N=!0,B={}){let re=[],ee=[];for(let V of x)switch(V.type){case"text":ee.push(V.text);break;case"file":if(V.data.type==="data")re.push({inlineData:{mimeType:O({part:V}),data:M(V.data.data)}});else if(V.data.type==="url"){let pe=V.data.url.toString(),ce=ao(pe),Re=V.data.url.protocol==="gs:"&&V.data.originalUrl!=null?V.data.originalUrl:pe;if(ce!=null)re.push(ce);else if(K(V.mediaType)&&Ze({url:Re,mediaType:V.mediaType,supportedUrls:B}))re.push({fileData:{mimeType:V.mediaType,fileUri:Re}});else ee.push(JSON.stringify(V))}else ee.push(JSON.stringify(V));break;default:ee.push(JSON.stringify(V))}f.push({functionResponse:{...N&&A!=null?{id:A}:{},name:w,response:{name:w,content:ee.length>0?ee.join(`
1
+ import{oe,Ie}from"./embed-3vb4wcng.js";import{tt}from"./embed-f7gzw56s.js";import{m,b,P,me,u,e,r,c,v,Ae,o,t,U,l,y,i,n,G,k,T,d,Oe,ue,fe,ae,j,X,M,we,Yt,te,le,xe,ke,Z,F,Te,z,K,He,Me,tn,de,C,R,L,Ze,he,W,Se,lt,ge,Q,a,s,q,J,h,g,ve,S,_,O,H,I,D,p,_e,E,Y}from"./embed-52n5pm9t.js";var zn="4.0.107",fn=()=>t({code:r().nullable(),message:e(),status:e(),details:o(v()).nullish()}),Jn=a(()=>s(t({error:fn()}))),Xe=I({errorSchema:Jn,errorToMessage:(f)=>f.error.message}),Yn=()=>l([t({text:e()}),t({inlineData:t({mimeType:e(),data:e()})}),t({fileData:t({fileUri:e(),mimeType:e()})})]),Xn=a(()=>s(t({outputDimensionality:r().optional(),taskType:i(["SEMANTIC_SIMILARITY","CLASSIFICATION","CLUSTERING","RETRIEVAL_DOCUMENT","RETRIEVAL_QUERY","QUESTION_ANSWERING","FACT_VERIFICATION","CODE_RETRIEVAL_QUERY"]).optional(),content:o(o(Yn()).min(1).nullable()).optional()}))),Qn=class f{static[k](w){return E({modelId:w.modelId,config:w.config})}static[T](w){return new f(w.modelId,w.config)}get provider(){return this.config.provider}constructor(w,x){this.specificationVersion="v4",this.maxEmbeddingsPerCall=100,this.supportsParallelCalls=!0,this[tn]=({providerOptions:A,values:N,startIndex:B,endIndex:re})=>{let ee=A?.google?.content;if(!Array.isArray(ee))return A;return zt({multimodalContent:ee,values:N}),{...A,google:{...A?.google,content:ee.slice(B,re)}}},this.modelId=w,this.config=x}async doEmbed({values:w,dimensions:x,headers:A,abortSignal:N,providerOptions:B}){let re=await h({provider:"google",providerOptions:B,schema:Xn});if(w.length>this.maxEmbeddingsPerCall)throw new me({provider:this.provider,modelId:this.modelId,maxEmbeddingsPerCall:this.maxEmbeddingsPerCall,values:w});let ee=d(this.config.headers?await _(this.config.headers):void 0,A),V=re?.content;if(zt({multimodalContent:V,values:w}),w.length===1){let Le=V?.[0],Ce=w[0]?[{text:w[0]}]:[],Ee=Le!=null?[...Ce,...Le]:[{text:w[0]}],{responseHeaders:je,value:Ne,rawValue:ye}=await g({url:`${this.config.baseURL}/models/${this.modelId}:embedContent`,headers:ee,body:{model:`models/${this.modelId}`,content:{parts:Ee},outputDimensionality:re?.outputDimensionality??x,taskType:re?.taskType},failedResponseHandler:Xe,successfulResponseHandler:p(eo),abortSignal:N,fetch:this.config.fetch});return{warnings:[],embeddings:[Ne.embedding.values],usage:void 0,response:{headers:je,body:ye}}}let{responseHeaders:pe,value:ce,rawValue:Re}=await g({url:`${this.config.baseURL}/models/${this.modelId}:batchEmbedContents`,headers:ee,body:{requests:w.map((Le,Ce)=>{let Ee=V?.[Ce],je=Le?[{text:Le}]:[];return{model:`models/${this.modelId}`,content:{role:"user",parts:Ee!=null?[...je,...Ee]:[{text:Le}]},outputDimensionality:re?.outputDimensionality??x,taskType:re?.taskType}})},failedResponseHandler:Xe,successfulResponseHandler:p(Zn),abortSignal:N,fetch:this.config.fetch});return{warnings:[],embeddings:ce.embeddings.map((Le)=>Le.values),usage:void 0,response:{headers:pe,body:Re}}}},Zn=a(()=>s(t({embeddings:o(t({values:o(r())}))}))),eo=a(()=>s(t({embedding:t({values:o(r())})})));function zt({multimodalContent:f,values:w}){if(f!=null&&f.length!==w.length)throw Error(`The number of multimodal content entries (${f.length}) must match the number of values (${w.length}).`)}function Tt(f){return f.includes("/")?f:`models/${f}`}function to({stream:f,getContinuationToken:w,continueStream:x}){let A=f.getReader(),N;return new ReadableStream({async pull(B){while(!0){let{done:re,value:ee}=await A.read();if(!re){if(ee.success){let pe=w(ee.value);if(pe!=null)N=pe}B.enqueue(ee);return}if(N==null){B.close();return}let V=N;N=void 0;try{A=(await x(V)).getReader(),B.enqueue({type:"continuation-start"});return}catch(pe){B.enqueue({success:!1,error:pe,rawValue:void 0}),B.close();return}}},async cancel(B){await A.cancel(B)}})}function Jt(f){if(f==null)return te();let w=f.promptTokenCount??0,x=f.candidatesTokenCount??0,A=f.toolUsePromptTokenCount??0,N=f.cachedContentTokenCount??0,B=f.thoughtsTokenCount??0,re=w+A;return{inputTokens:{total:re,noCache:re-N,cacheRead:N,cacheWrite:void 0},outputTokens:{total:x+B,text:x,reasoning:B},raw:f}}function jt(f,w){if(f==null||w==null)return w??f;return{...f,...w,promptTokenCount:vt(f.promptTokenCount,w.promptTokenCount),candidatesTokenCount:vt(f.candidatesTokenCount,w.candidatesTokenCount),toolUsePromptTokenCount:vt(f.toolUsePromptTokenCount,w.toolUsePromptTokenCount),totalTokenCount:vt(f.totalTokenCount,w.totalTokenCount),cachedContentTokenCount:vt(f.cachedContentTokenCount,w.cachedContentTokenCount),thoughtsTokenCount:vt(f.thoughtsTokenCount,w.thoughtsTokenCount),promptTokensDetails:kt(f.promptTokensDetails,w.promptTokensDetails),cacheTokensDetails:kt(f.cacheTokensDetails,w.cacheTokensDetails),candidatesTokensDetails:kt(f.candidatesTokensDetails,w.candidatesTokensDetails),toolUsePromptTokensDetails:kt(f.toolUsePromptTokensDetails,w.toolUsePromptTokensDetails)}}function vt(f,w){return f==null&&w==null?w??f:(f??0)+(w??0)}function kt(f,w){if(f==null||w==null)return w??f;let x=new Map;for(let{modality:A,tokenCount:N}of[...f,...w])x.set(A,(x.get(A)??0)+N);return Array.from(x,([A,N])=>({modality:A,tokenCount:N}))}var yn=t({language:e().describe("The programming language of the code."),code:e().describe("The code to be executed.")}),vn=t({outcome:e().describe('The outcome of the execution (e.g., "OUTCOME_OK").'),output:e().describe("The output from the code execution.")}),no=S({id:"google.code_execution",inputSchema:yn,outputSchema:vn}),oo="skip_thought_signature_validator",io=/^data:([^;,]+);base64,(.+)$/s;function so(f){let w=io.exec(f);if(w==null)return;return{mediaType:w[1],data:w[2]}}function ao(f){let w=so(f);if(w==null)return;return{inlineData:{mimeType:w.mediaType,data:w.data}}}function Gt(f){if(Array.isArray(f))return f.some(Gt);if(typeof f!=="object"||f===null)return!1;return Object.entries(f).some(([w,x])=>w==="$ref"||Gt(x))}function Xt(f){return Gt(f)?JSON.stringify(f):f}function ro(f,w,x,A,N=!0,B={}){let re=[],ee=[];for(let V of x)switch(V.type){case"text":ee.push(V.text);break;case"file":if(V.data.type==="data")re.push({inlineData:{mimeType:O({part:V}),data:M(V.data.data)}});else if(V.data.type==="url"){let pe=V.data.url.toString(),ce=ao(pe),Re=V.data.url.protocol==="gs:"&&V.data.originalUrl!=null?V.data.originalUrl:pe;if(ce!=null)re.push(ce);else if(K(V.mediaType)&&Ze({url:Re,mediaType:V.mediaType,supportedUrls:B}))re.push({fileData:{mimeType:V.mediaType,fileUri:Re}});else ee.push(JSON.stringify(V))}else ee.push(JSON.stringify(V));break;default:ee.push(JSON.stringify(V))}f.push({functionResponse:{...N&&A!=null?{id:A}:{},name:w,response:{name:w,content:ee.length>0?ee.join(`
2
2
  `):"Tool executed successfully."},...re.length>0?{parts:re}:{}}})}function lo(f,w,x,A,N=!0){for(let B of x)switch(B.type){case"text":f.push({functionResponse:{...N&&A!=null?{id:A}:{},name:w,response:{name:w,content:B.text}}});break;case"file":if(B.data.type==="data"){let re=z(B.mediaType);f.push({inlineData:{mimeType:O({part:B}),data:M(B.data.data)}},{text:`Tool executed successfully and returned this ${re==="image"?"image":"file"} as a response`})}else f.push({text:JSON.stringify(B)});break;default:f.push({text:JSON.stringify(B)})}}function uo(f,w){let x=[],A=[],N=!0,B=w?.isGemmaModel??!1,re=w?.isGemini3Model??!1,ee=w?.onWarning,V=w?.providerOptionsNames??["google"],pe=!V.includes("google"),ce=w?.supportsFunctionResponseParts??!0,Re=w?.includeFunctionCallIds??!0,Le=w?.supportedFunctionResponseUrls??{},Ce=!1,Ee=[],je=(ye)=>(Ee.push(ye),Ce=!0,oo),Ne=(ye)=>{for(let ie of V){let be=ye.providerOptions?.[ie];if(be!=null)return be}if(pe)return ye.providerOptions?.google;return ye.providerOptions?.googleVertex??ye.providerOptions?.vertex};for(let{role:ye,content:ie}of f)switch(ye){case"system":if(!N)throw new u({functionality:"system messages are only supported at the beginning of the conversation"});x.push({text:ie});break;case"user":{N=!1;let be=[];for(let ne of ie)switch(ne.type){case"text":be.push({text:ne.text});break;case"file":switch(ne.data.type){case"url":be.push({fileData:{mimeType:O({part:ne}),fileUri:ne.data.url.protocol==="gs:"&&ne.data.originalUrl!=null?ne.data.originalUrl:ne.data.url.toString()}});break;case"reference":if(pe)throw new u({functionality:"file parts with provider references"});be.push({fileData:{mimeType:O({part:ne}),fileUri:H({reference:ne.data.reference,provider:"google"})}});break;case"text":be.push({inlineData:{mimeType:K(ne.mediaType)?ne.mediaType:"text/plain",data:M(new TextEncoder().encode(ne.data.text))}});break;case"data":be.push({inlineData:{mimeType:O({part:ne}),data:M(ne.data.data)}})}}A.push({role:"user",parts:be});break}case"assistant":{N=!1;let be=!1;A.push({role:"model",parts:ie.map((ne)=>{let se=Ne(ne),Ue=se?.thoughtSignature!=null?String(se.thoughtSignature):void 0;switch(ne.type){case"text":return ne.text.length===0?void 0:{text:ne.text,thoughtSignature:Ue};case"reasoning":return ne.text.length===0?void 0:{text:ne.text,thought:!0,thoughtSignature:Ue};case"reasoning-file":switch(ne.data.type){case"url":throw new u({functionality:"File data URLs in assistant messages are not supported"});case"data":return{inlineData:{mimeType:ne.mediaType,data:M(ne.data.data)},thought:!0,thoughtSignature:Ue}}break;case"file":switch(ne.data.type){case"url":throw new u({functionality:"File data URLs in assistant messages are not supported"});case"reference":if(pe)throw new u({functionality:"file parts with provider references"});return{fileData:{mimeType:ne.mediaType,fileUri:H({reference:ne.data.reference,provider:"google"})},...se?.thought===!0?{thought:!0}:{},thoughtSignature:Ue};case"text":return{inlineData:{mimeType:K(ne.mediaType)?ne.mediaType:"text/plain",data:M(new TextEncoder().encode(ne.data.text))},...se?.thought===!0?{thought:!0}:{},thoughtSignature:Ue};case"data":return{inlineData:{mimeType:ne.mediaType,data:M(ne.data.data)},...se?.thought===!0?{thought:!0}:{},thoughtSignature:Ue}}break;case"tool-call":{if(ne.providerExecuted===!0&&ne.toolName==="code_execution")return{executableCode:yn.parse(typeof ne.input==="string"?Q(ne.input):ne.input)};let De=se?.serverToolCallId!=null?String(se.serverToolCallId):void 0,qe=se?.serverToolType!=null?String(se.serverToolType):void 0,We=De!=null&&qe!=null,nt=Ue??(re&&!(!We&&Ue==null&&be)?je(ne.toolName):void 0);if(!We&&Ue!=null)be=!0;if(We)return{toolCall:{toolType:qe,args:typeof ne.input==="string"?Q(ne.input):ne.input,id:De},thoughtSignature:nt};return{functionCall:{...Re&&ne.toolCallId!=null?{id:ne.toolCallId}:{},name:ne.toolName,args:ne.input},thoughtSignature:nt}}case"tool-result":{if(ne.toolName==="code_execution"&&ne.output.type==="json")return{codeExecutionResult:vn.parse(ne.output.value)};let De=se?.serverToolCallId!=null?String(se.serverToolCallId):void 0,qe=se?.serverToolType!=null?String(se.serverToolType):void 0;if(De&&qe)return{toolResponse:{toolType:qe,response:ne.output.type==="json"?ne.output.value:{},id:De},thoughtSignature:Ue};return}}}).filter((ne)=>ne!==void 0)});break}case"tool":{N=!1;let be=[];for(let ne of ie){if(ne.type==="tool-approval-response")continue;let se=Ne(ne),Ue=se?.serverToolCallId!=null?String(se.serverToolCallId):void 0,De=se?.serverToolType!=null?String(se.serverToolType):void 0;if(Ue&&De){let We=se?.thoughtSignature!=null?String(se.thoughtSignature):void 0;if(A.length>0){let nt=A[A.length-1];if(nt.role==="model"){nt.parts.push({toolResponse:{toolType:De,response:ne.output.type==="json"?ne.output.value:{},id:Ue},thoughtSignature:We});continue}}}let qe=ne.output;if(qe.type==="content")if(ce)ro(be,ne.toolName,qe.value,ne.toolCallId,Re,Le);else lo(be,ne.toolName,qe.value,ne.toolCallId,Re);else{let We=qe.type==="error-text"||qe.type==="error-json"||qe.type==="execution-denied";be.push({functionResponse:{...Re&&ne.toolCallId!=null?{id:ne.toolCallId}:{},name:ne.toolName,response:{name:ne.toolName,...We?{error:qe.type==="execution-denied"?qe.reason??"Tool call execution denied.":Xt(qe.value)}:{content:Xt(qe.value)}}}})}}A.push({role:"user",parts:be});break}}if(B&&x.length>0&&A.length>0&&A[0].role==="user"){let ye=x.map((ie)=>ie.text).join(`
3
3
 
4
4
  `);A[0].parts.unshift({text:ye+`
@@ -1 +1 @@
1
- import{Re,ht,De,Qe,Le,Ue,yt,bt}from"./embed-s9zy3aav.js";var i="https://maxgfr.github.io/murmur/cdn/models.json";function l(e){let r=e.endpoint?Ue(e.endpoint):null;if(!r)return null;let o=e.model||"default",t={apiKey:"",model:o,customEndpoint:r,customModel:o};if(e.headers)t.headers=e.headers;return t}function d(e,r={}){let o=r.storageKey??"murmur",t={};if(e.provider)t.providerId=e.provider;if(e.model)t.model=e.model;return bt({catalog:ht({fallbackUrl:r.catalogUrl??i}),storage:yt({prefsKey:`${o}-llm`,dbName:`${o}-secrets`}),recommended:e.provider?[e.provider,...Re.filter((n)=>n!==e.provider)]:Re,defaults:t})}async function m(e,r){let o=l(e);if(o)return o;let t=r?await r.load():null;return t&&Le(t)?t:null}export{De as describeError,Le as isConfigured,Qe as loadModel,l as proxySettings,m as resolveSettings,d as visitorStore};
1
+ import{Re,ht,De,Qe,Le,Ue,yt,bt}from"./embed-3vb4wcng.js";var i="https://maxgfr.github.io/murmur/cdn/models.json";function l(e){let r=e.endpoint?Ue(e.endpoint):null;if(!r)return null;let o=e.model||"default",t={apiKey:"",model:o,customEndpoint:r,customModel:o};if(e.headers)t.headers=e.headers;return t}function d(e,r={}){let o=r.storageKey??"murmur",t={};if(e.provider)t.providerId=e.provider;if(e.model)t.model=e.model;return bt({catalog:ht({fallbackUrl:r.catalogUrl??i}),storage:yt({prefsKey:`${o}-llm`,dbName:`${o}-secrets`}),recommended:e.provider?[e.provider,...Re.filter((n)=>n!==e.provider)]:Re,defaults:t})}async function m(e,r){let o=l(e);if(o)return o;let t=r?await r.load():null;return t&&Le(t)?t:null}export{De as describeError,Le as isConfigured,Qe as loadModel,l as proxySettings,m as resolveSettings,d as visitorStore};
@@ -1 +1 @@
1
- import{Re,ht,De,Qe,Le,Ue,gn,yt,bt}from"./embed-s9zy3aav.js";export{Re as DEFAULT_RECOMMENDED,gn as ENDPOINT_PRESETS,bt as createLlmSettingsStore,De as describeError,Le as isConfigured,ht as liveCatalog,Qe as loadModel,yt as secureStorage,Ue as validateEndpoint};
1
+ import{Re,ht,De,Qe,Le,Ue,gn,yt,bt}from"./embed-3vb4wcng.js";export{Re as DEFAULT_RECOMMENDED,gn as ENDPOINT_PRESETS,bt as createLlmSettingsStore,De as describeError,Le as isConfigured,ht as liveCatalog,Qe as loadModel,yt as secureStorage,Ue as validateEndpoint};
@@ -0,0 +1 @@
1
+ import{xn,St}from"./embed-xdftb0b2.js";export{xn as generateText,St as streamText};
@@ -1,3 +1,3 @@
1
- import{oe,Ie}from"./embed-s9zy3aav.js";import{b,Ge,me,u,e,r,c,ie,o,t,l,f,y,i,n,G,k,T,d,j,M,ee,te,le,F,z,C,jt,he,W,Se,ct,a,s,h,g,ne,ve,S,O,I,D,p,E,Ce,Y}from"./embed-3swpcbya.js";var xe=t({messages:o(G()).nullish(),cached_tokens:r().nullish(),audio_tokens:r().nullish()}).catchall(G()),Ue=t({reasoning_tokens:r().nullish()}).catchall(G()),_e=t({prompt_tokens:r(),completion_tokens:r(),total_tokens:r(),prompt_audio_seconds:r().nullish(),request_count:r().nullish(),service_tier:e().nullish(),num_cached_tokens:r().nullish(),prompt_tokens_details:xe.nullish(),prompt_token_details:xe.nullish(),completion_tokens_details:Ue.nullish()}).catchall(G());function pe(w){if(w==null)return te();let{prompt_tokens:m,completion_tokens:_}=w,H=w.num_cached_tokens??w.prompt_tokens_details?.cached_tokens??w.prompt_token_details?.cached_tokens??0;return{inputTokens:{total:m,noCache:m-H,cacheRead:H||void 0,cacheWrite:void 0},outputTokens:{total:_,text:_,reasoning:void 0},raw:w}}function ke({part:w}){if(w.data.type==="url")return w.data.url.toString();if(w.data.type==="data")return`data:${O({part:w})};base64,${M(w.data.data)}`;throw new u({functionality:`file part data type ${w.data.type}`})}function be(w){let m=[];for(let _=0;_<w.length;_++){let{role:H,content:L}=w[_],v=_===w.length-1;switch(H){case"system":m.push({role:"system",content:L});break;case"user":m.push({role:"user",content:L.map((q)=>{switch(q.type){case"text":return{type:"text",text:q.text};case"file":switch(q.data.type){case"reference":throw new u({functionality:"file parts with provider references"});case"text":throw new u({functionality:"text file parts"});case"url":case"data":if(z(q.mediaType)==="image")return{type:"image_url",image_url:ke({part:q})};else{if(q.data.type==="data"){if(O({part:q})!=="application/pdf")throw new u({functionality:"Only images and PDF file parts are supported"})}else if(q.mediaType!=="application/pdf")throw new u({functionality:"Only images and PDF file parts are supported"});return{type:"document_url",document_url:ke({part:q})}}}}})});break;case"assistant":{let q="",N=!1,x=[],R=[];for(let A of L)switch(A.type){case"text":q+=A.text,x.push({type:"text",text:A.text});break;case"tool-call":R.push({id:A.toolCallId,type:"function",function:{name:A.toolName,arguments:JSON.stringify(A.input)}});break;case"reasoning":N=!0,x.push({type:"thinking",thinking:[{type:"text",text:A.text}],closed:!0});break;default:throw Error(`Unsupported content type in assistant message: ${A.type}`)}m.push({role:"assistant",content:N?x:q,prefix:v?!0:void 0,tool_calls:R.length>0?R:void 0});break}case"tool":for(let q of L){if(q.type==="tool-approval-response")continue;let N=q.output,x;switch(N.type){case"text":case"error-text":x=N.value;break;case"execution-denied":x=N.reason??"Tool call execution denied.";break;case"content":case"json":case"error-json":x=JSON.stringify(N.value)}m.push({role:"tool",name:q.toolName,tool_call_id:q.toolCallId,content:x})}break;default:throw Error(`Unsupported role: ${H}`)}}return m}function je(w){switch(w){case"stop":return"stop";case"length":case"model_length":return"length";case"tool_calls":return"tool-calls";case"error":return"error";default:return"other"}}var Ee=()=>t({safePrompt:c().optional(),documentImageLimit:r().optional(),documentPageLimit:r().optional(),structuredOutputs:c().optional(),strictJsonSchema:c().optional(),parallelToolCalls:c().optional(),promptCacheKey:e().optional(),reasoningEffort:i(["high","none","low","max"]).optional()}),$e=a(()=>s(Ee())),De=a(()=>s(t({object:n("error"),message:e(),type:e(),param:e().nullable(),code:e().nullable()}))),ce=I({errorSchema:De,errorToMessage:(w)=>w.message});function Pe({tools:w,toolChoice:m}){w=w?.length?w:void 0;let _=[];if(w==null)return{tools:void 0,toolChoice:void 0,toolWarnings:_};let H=[];for(let v of w)if(v.type==="provider")_.push({type:"unsupported",feature:`provider-defined tool ${v.id}`});else H.push({type:"function",function:{name:v.name,description:v.description,parameters:v.inputSchema,...v.strict!=null?{strict:v.strict}:{}}});if(m==null)return{tools:H,toolChoice:void 0,toolWarnings:_};let L=m.type;switch(L){case"auto":case"none":return{tools:H,toolChoice:L,toolWarnings:_};case"required":return{tools:H,toolChoice:"any",toolWarnings:_};case"tool":return{tools:H.filter((v)=>v.function.name===m.toolName),toolChoice:"any",toolWarnings:_};default:throw new u({functionality:`tool choice type: ${L}`})}}var Ve=new Set(["codestral-2508","codestral-latest","ministral-14b-2512","ministral-14b-latest","ministral-3b-2512","ministral-3b-latest","ministral-8b-2512","ministral-8b-latest","mistral-code-fim-latest","mistral-code-latest","mistral-large-latest","mistral-large-2512","voxtral-small-2507","voxtral-small-latest"]),Je=new Set(["zai-glm-5","zai-glm-5-3","zai-glm-5-3-flash","zai-glm-latest"]),ze=class w{static[k](m){return E({modelId:m.modelId,config:m.config})}static[T](m){return new w(m.modelId,m.config)}constructor(m,_){this.specificationVersion="v4",this.supportedUrls={"application/pdf":[/^https:\/\/.*$/]},this.modelId=m,this.config=_,this.generateId=_.generateId??C}get provider(){return this.config.provider}async getArgs({prompt:m,maxOutputTokens:_,temperature:H,topP:L,topK:v,frequencyPenalty:q,presencePenalty:N,reasoning:x,stopSequences:R,responseFormat:A,seed:U,providerOptions:X,tools:se,toolChoice:Q}){let Z=[],V=await h({provider:"mistral",providerOptions:X,schema:$e})??{};if(v!=null)Z.push({type:"unsupported",feature:"topK"});let re=!Ve.has(this.modelId),K;if(re){let de=Je.has(this.modelId);if(V.reasoningEffort==null&&x==="none"&&de)Z.push({type:"compatibility",feature:"reasoning",details:'reasoning "none" is not directly supported by this model. mapped to effort "low".'});K=V.reasoningEffort??(W(x)?x==="none"?de?"low":"none":Se({reasoning:x,effortMap:de?{minimal:"low",low:"low",medium:"high",high:"high",xhigh:"max",max:"max"}:{minimal:"high",low:"high",medium:"high",high:"high",xhigh:"high",max:"high"},warnings:Z}):void 0)}else if(W(x))Z.push({type:"unsupported",feature:"reasoning",details:"This model does not support reasoning configuration."});let J=V.structuredOutputs??!0,P=V.strictJsonSchema??!1;if(A?.type==="json"&&(!J||A.schema==null))m=jt({messages:m,schema:A.schema});let B={model:this.modelId,safe_prompt:V.safePrompt,max_tokens:_,temperature:H,top_p:L,...q!=null?{frequency_penalty:q}:{},...N!=null?{presence_penalty:N}:{},stop:R,random_seed:U,reasoning_effort:K,response_format:A?.type==="json"?J&&A?.schema!=null?{type:"json_schema",json_schema:{schema:A.schema,strict:P,name:A.name??"response",description:A.description}}:{type:"json_object"}:void 0,document_image_limit:V.documentImageLimit,document_page_limit:V.documentPageLimit,...V.promptCacheKey!==void 0?{prompt_cache_key:V.promptCacheKey}:{},messages:be(m)},{tools:ae,toolChoice:fe,toolWarnings:ye}=Pe({tools:se,toolChoice:Q});return{args:{...B,tools:ae,tool_choice:fe,...ae!=null&&V.parallelToolCalls!==void 0?{parallel_tool_calls:V.parallelToolCalls}:{}},warnings:[...Z,...ye]}}async doGenerate(m){let{args:_,warnings:H}=await this.getArgs(m),{responseHeaders:L,value:v,rawValue:q}=await g({url:`${this.config.baseURL}/chat/completions`,headers:d(this.config.headers?.(),m.headers),body:_,failedResponseHandler:ce,successfulResponseHandler:p(Ke),abortSignal:m.abortSignal,fetch:this.config.fetch}),N=v.choices[0],x=[];if(N.message.content!=null&&Array.isArray(N.message.content)){for(let R of N.message.content)if(R.type==="thinking"){let A=Te(R.thinking);if(A.length>0)x.push({type:"reasoning",text:A})}else if(R.type==="text"){if(R.text.length>0)x.push({type:"text",text:R.text})}}else{let R=Me(N.message.content);if(R!=null&&R.length>0)x.push({type:"text",text:R})}if(N.message.tool_calls!=null)for(let R of N.message.tool_calls)x.push({type:"tool-call",toolCallId:R.id,toolName:R.function.name,input:R.function.arguments});return{content:x,finishReason:{unified:je(N.finish_reason),raw:N.finish_reason??void 0},usage:pe(v.usage),request:{body:_},response:{...ee(v),headers:L,body:q},warnings:H}}async doStream(m){let{args:_,warnings:H}=await this.getArgs(m),L={..._,stream:!0},{responseHeaders:v,value:q}=await g({url:`${this.config.baseURL}/chat/completions`,headers:d(this.config.headers?.(),m.headers),body:L,failedResponseHandler:ce,successfulResponseHandler:D(Be),abortSignal:m.abortSignal,fetch:this.config.fetch}),N={unified:"interrupted",raw:void 0},x=void 0,R=!0,A=!1,U=null,X,se=this.generateId;return{stream:q.pipeThrough(new TransformStream({start(Q){X=new Ce(Q,{generateId:se}),Q.enqueue({type:"stream-start",warnings:H})},transform(Q,Z){if(m.includeRawChunks)Z.enqueue({type:"raw",rawValue:Q.rawValue});if(!Q.success){N={unified:"error",raw:void 0},Z.enqueue({type:"error",error:Q.error});return}let V=Q.value;if(R)R=!1,Z.enqueue({type:"response-metadata",...ee(V)});if(V.usage!=null)x=V.usage;let re=V.choices[0],K=re.delta,J=Me(K.content);if(K.content!=null&&Array.isArray(K.content)){for(let P of K.content)if(P.type==="thinking"){let B=Te(P.thinking);if(B.length>0){if(U==null){if(A)Z.enqueue({type:"text-end",id:"0"}),A=!1;U=se(),Z.enqueue({type:"reasoning-start",id:U})}Z.enqueue({type:"reasoning-delta",id:U,delta:B})}}}if(J!=null&&J.length>0){if(!A){if(U!=null)Z.enqueue({type:"reasoning-end",id:U}),U=null;Z.enqueue({type:"text-start",id:"0"}),A=!0}Z.enqueue({type:"text-delta",id:"0",delta:J})}if(K?.tool_calls!=null)for(let P of K.tool_calls)X.processDelta(P);if(re.finish_reason!=null)N={unified:je(re.finish_reason),raw:re.finish_reason}},flush(Q){if(U!=null)Q.enqueue({type:"reasoning-end",id:U});if(A)Q.enqueue({type:"text-end",id:"0"});X.flush(),Q.enqueue({type:"finish",finishReason:N,usage:pe(x)})}})),request:{body:L},response:{headers:v}}}};function Te(w){return w.filter((m)=>m.type==="text").map((m)=>m.text).join("")}function Me(w){if(typeof w==="string")return w;if(w==null)return;let m=[];for(let _ of w){let{type:H}=_;switch(H){case"text":m.push(_.text);break;case"thinking":case"image_url":case"reference":break;default:throw Error(`Unsupported type: ${H}`)}}return m.length?m.join(""):void 0}var qe=()=>l([e(),o(f("type",[t({type:n("text"),text:e()}),t({type:n("image_url"),image_url:l([e(),t({url:e(),detail:e().nullable()})])}),t({type:n("reference"),reference_ids:o(l([e(),r()]))}),t({type:n("thinking"),thinking:o(t({type:n("text"),text:e()}))})]))]).nullish(),Ke=a(()=>s(t({id:e().nullish(),created:r().nullish(),model:e().nullish(),choices:o(t({message:t({role:n("assistant"),content:qe(),tool_calls:o(t({id:e(),function:t({name:e(),arguments:e()})})).nullish()}),index:r(),finish_reason:e().nullish()})),object:n("chat.completion"),usage:_e}))),Be=a(()=>s(t({id:e().nullish(),created:r().nullish(),model:e().nullish(),choices:o(t({delta:t({role:i(["assistant"]).optional(),content:qe(),tool_calls:o(t({index:r().nullish(),id:e().nullish(),function:t({name:e().nullish(),arguments:e().nullish()})})).nullish()}),finish_reason:e().nullish(),index:r()})),usage:_e.nullish()})));function We(w,m){let _=[],H=[],L=new Set,v=(q)=>{if(L.has(q.toolCallId)){let x=null;if(q.output.type==="json"){let R=q.output.value,A=R!=null&&typeof R==="object"&&"info"in R?R.info:void 0;if(A!=null&&typeof A==="object"&&!Array.isArray(A))x="result"in A?A.result??A:A}_.push({type:"function.result",tool_call_id:q.toolCallId,result:typeof x==="string"?x:JSON.stringify(x)});return}let N=be([{role:"tool",content:[q]}])[0];_.push({type:"function.result",tool_call_id:q.toolCallId,result:N.content})};for(let q of w)switch(q.role){case"system":H.push(q.content);break;case"user":{let N=be([q])[0];if(N.role==="user")_.push({type:"message.input",role:"user",content:N.content});break}case"assistant":{let N=[],x=()=>{if(N.length>0)_.push({type:"message.input",role:"assistant",content:N}),N=[]};for(let R of q.content)switch(R.type){case"text":N.push({type:"text",text:R.text});break;case"reasoning":N.push({type:"thinking",thinking:[{type:"text",text:R.text}],closed:!0});break;case"tool-call":if(x(),R.providerExecuted){let A=R.providerOptions?.mistral?.function??R.providerOptions?.mistral?.name,U=R.input;_.push({type:"function.call",tool_call_id:R.toolCallId,name:typeof A==="string"?A:m.toProviderToolName(R.toolName),arguments:typeof U?.arguments==="string"?U.arguments:JSON.stringify(R.input)}),L.add(R.toolCallId)}else _.push({type:"function.call",tool_call_id:R.toolCallId,name:R.toolName,arguments:JSON.stringify(R.input)});break;case"tool-result":x(),v(R);break;default:throw new u({functionality:`assistant content type: ${R.type}`})}x();break}case"tool":for(let N of q.content){if(N.type==="tool-approval-response")continue;v(N)}}return{inputs:_,instructions:H.length>0?H.join(`
1
+ import{oe,Ie}from"./embed-3vb4wcng.js";import{b,Ge,me,u,e,r,c,ie,o,t,l,f,y,i,n,G,k,T,d,j,M,ee,te,le,F,z,C,jt,he,W,Se,ct,a,s,h,g,ne,ve,S,O,I,D,p,E,Ce,Y}from"./embed-52n5pm9t.js";var xe=t({messages:o(G()).nullish(),cached_tokens:r().nullish(),audio_tokens:r().nullish()}).catchall(G()),Ue=t({reasoning_tokens:r().nullish()}).catchall(G()),_e=t({prompt_tokens:r(),completion_tokens:r(),total_tokens:r(),prompt_audio_seconds:r().nullish(),request_count:r().nullish(),service_tier:e().nullish(),num_cached_tokens:r().nullish(),prompt_tokens_details:xe.nullish(),prompt_token_details:xe.nullish(),completion_tokens_details:Ue.nullish()}).catchall(G());function pe(w){if(w==null)return te();let{prompt_tokens:m,completion_tokens:_}=w,H=w.num_cached_tokens??w.prompt_tokens_details?.cached_tokens??w.prompt_token_details?.cached_tokens??0;return{inputTokens:{total:m,noCache:m-H,cacheRead:H||void 0,cacheWrite:void 0},outputTokens:{total:_,text:_,reasoning:void 0},raw:w}}function ke({part:w}){if(w.data.type==="url")return w.data.url.toString();if(w.data.type==="data")return`data:${O({part:w})};base64,${M(w.data.data)}`;throw new u({functionality:`file part data type ${w.data.type}`})}function be(w){let m=[];for(let _=0;_<w.length;_++){let{role:H,content:L}=w[_],v=_===w.length-1;switch(H){case"system":m.push({role:"system",content:L});break;case"user":m.push({role:"user",content:L.map((q)=>{switch(q.type){case"text":return{type:"text",text:q.text};case"file":switch(q.data.type){case"reference":throw new u({functionality:"file parts with provider references"});case"text":throw new u({functionality:"text file parts"});case"url":case"data":if(z(q.mediaType)==="image")return{type:"image_url",image_url:ke({part:q})};else{if(q.data.type==="data"){if(O({part:q})!=="application/pdf")throw new u({functionality:"Only images and PDF file parts are supported"})}else if(q.mediaType!=="application/pdf")throw new u({functionality:"Only images and PDF file parts are supported"});return{type:"document_url",document_url:ke({part:q})}}}}})});break;case"assistant":{let q="",N=!1,x=[],R=[];for(let A of L)switch(A.type){case"text":q+=A.text,x.push({type:"text",text:A.text});break;case"tool-call":R.push({id:A.toolCallId,type:"function",function:{name:A.toolName,arguments:JSON.stringify(A.input)}});break;case"reasoning":N=!0,x.push({type:"thinking",thinking:[{type:"text",text:A.text}],closed:!0});break;default:throw Error(`Unsupported content type in assistant message: ${A.type}`)}m.push({role:"assistant",content:N?x:q,prefix:v?!0:void 0,tool_calls:R.length>0?R:void 0});break}case"tool":for(let q of L){if(q.type==="tool-approval-response")continue;let N=q.output,x;switch(N.type){case"text":case"error-text":x=N.value;break;case"execution-denied":x=N.reason??"Tool call execution denied.";break;case"content":case"json":case"error-json":x=JSON.stringify(N.value)}m.push({role:"tool",name:q.toolName,tool_call_id:q.toolCallId,content:x})}break;default:throw Error(`Unsupported role: ${H}`)}}return m}function je(w){switch(w){case"stop":return"stop";case"length":case"model_length":return"length";case"tool_calls":return"tool-calls";case"error":return"error";default:return"other"}}var Ee=()=>t({safePrompt:c().optional(),documentImageLimit:r().optional(),documentPageLimit:r().optional(),structuredOutputs:c().optional(),strictJsonSchema:c().optional(),parallelToolCalls:c().optional(),promptCacheKey:e().optional(),reasoningEffort:i(["high","none","low","max"]).optional()}),$e=a(()=>s(Ee())),De=a(()=>s(t({object:n("error"),message:e(),type:e(),param:e().nullable(),code:e().nullable()}))),ce=I({errorSchema:De,errorToMessage:(w)=>w.message});function Pe({tools:w,toolChoice:m}){w=w?.length?w:void 0;let _=[];if(w==null)return{tools:void 0,toolChoice:void 0,toolWarnings:_};let H=[];for(let v of w)if(v.type==="provider")_.push({type:"unsupported",feature:`provider-defined tool ${v.id}`});else H.push({type:"function",function:{name:v.name,description:v.description,parameters:v.inputSchema,...v.strict!=null?{strict:v.strict}:{}}});if(m==null)return{tools:H,toolChoice:void 0,toolWarnings:_};let L=m.type;switch(L){case"auto":case"none":return{tools:H,toolChoice:L,toolWarnings:_};case"required":return{tools:H,toolChoice:"any",toolWarnings:_};case"tool":return{tools:H.filter((v)=>v.function.name===m.toolName),toolChoice:"any",toolWarnings:_};default:throw new u({functionality:`tool choice type: ${L}`})}}var Ve=new Set(["codestral-2508","codestral-latest","ministral-14b-2512","ministral-14b-latest","ministral-3b-2512","ministral-3b-latest","ministral-8b-2512","ministral-8b-latest","mistral-code-fim-latest","mistral-code-latest","mistral-large-latest","mistral-large-2512","voxtral-small-2507","voxtral-small-latest"]),Je=new Set(["zai-glm-5","zai-glm-5-3","zai-glm-5-3-flash","zai-glm-latest"]),ze=class w{static[k](m){return E({modelId:m.modelId,config:m.config})}static[T](m){return new w(m.modelId,m.config)}constructor(m,_){this.specificationVersion="v4",this.supportedUrls={"application/pdf":[/^https:\/\/.*$/]},this.modelId=m,this.config=_,this.generateId=_.generateId??C}get provider(){return this.config.provider}async getArgs({prompt:m,maxOutputTokens:_,temperature:H,topP:L,topK:v,frequencyPenalty:q,presencePenalty:N,reasoning:x,stopSequences:R,responseFormat:A,seed:U,providerOptions:X,tools:se,toolChoice:Q}){let Z=[],V=await h({provider:"mistral",providerOptions:X,schema:$e})??{};if(v!=null)Z.push({type:"unsupported",feature:"topK"});let re=!Ve.has(this.modelId),K;if(re){let de=Je.has(this.modelId);if(V.reasoningEffort==null&&x==="none"&&de)Z.push({type:"compatibility",feature:"reasoning",details:'reasoning "none" is not directly supported by this model. mapped to effort "low".'});K=V.reasoningEffort??(W(x)?x==="none"?de?"low":"none":Se({reasoning:x,effortMap:de?{minimal:"low",low:"low",medium:"high",high:"high",xhigh:"max",max:"max"}:{minimal:"high",low:"high",medium:"high",high:"high",xhigh:"high",max:"high"},warnings:Z}):void 0)}else if(W(x))Z.push({type:"unsupported",feature:"reasoning",details:"This model does not support reasoning configuration."});let J=V.structuredOutputs??!0,P=V.strictJsonSchema??!1;if(A?.type==="json"&&(!J||A.schema==null))m=jt({messages:m,schema:A.schema});let B={model:this.modelId,safe_prompt:V.safePrompt,max_tokens:_,temperature:H,top_p:L,...q!=null?{frequency_penalty:q}:{},...N!=null?{presence_penalty:N}:{},stop:R,random_seed:U,reasoning_effort:K,response_format:A?.type==="json"?J&&A?.schema!=null?{type:"json_schema",json_schema:{schema:A.schema,strict:P,name:A.name??"response",description:A.description}}:{type:"json_object"}:void 0,document_image_limit:V.documentImageLimit,document_page_limit:V.documentPageLimit,...V.promptCacheKey!==void 0?{prompt_cache_key:V.promptCacheKey}:{},messages:be(m)},{tools:ae,toolChoice:fe,toolWarnings:ye}=Pe({tools:se,toolChoice:Q});return{args:{...B,tools:ae,tool_choice:fe,...ae!=null&&V.parallelToolCalls!==void 0?{parallel_tool_calls:V.parallelToolCalls}:{}},warnings:[...Z,...ye]}}async doGenerate(m){let{args:_,warnings:H}=await this.getArgs(m),{responseHeaders:L,value:v,rawValue:q}=await g({url:`${this.config.baseURL}/chat/completions`,headers:d(this.config.headers?.(),m.headers),body:_,failedResponseHandler:ce,successfulResponseHandler:p(Ke),abortSignal:m.abortSignal,fetch:this.config.fetch}),N=v.choices[0],x=[];if(N.message.content!=null&&Array.isArray(N.message.content)){for(let R of N.message.content)if(R.type==="thinking"){let A=Te(R.thinking);if(A.length>0)x.push({type:"reasoning",text:A})}else if(R.type==="text"){if(R.text.length>0)x.push({type:"text",text:R.text})}}else{let R=Me(N.message.content);if(R!=null&&R.length>0)x.push({type:"text",text:R})}if(N.message.tool_calls!=null)for(let R of N.message.tool_calls)x.push({type:"tool-call",toolCallId:R.id,toolName:R.function.name,input:R.function.arguments});return{content:x,finishReason:{unified:je(N.finish_reason),raw:N.finish_reason??void 0},usage:pe(v.usage),request:{body:_},response:{...ee(v),headers:L,body:q},warnings:H}}async doStream(m){let{args:_,warnings:H}=await this.getArgs(m),L={..._,stream:!0},{responseHeaders:v,value:q}=await g({url:`${this.config.baseURL}/chat/completions`,headers:d(this.config.headers?.(),m.headers),body:L,failedResponseHandler:ce,successfulResponseHandler:D(Be),abortSignal:m.abortSignal,fetch:this.config.fetch}),N={unified:"interrupted",raw:void 0},x=void 0,R=!0,A=!1,U=null,X,se=this.generateId;return{stream:q.pipeThrough(new TransformStream({start(Q){X=new Ce(Q,{generateId:se}),Q.enqueue({type:"stream-start",warnings:H})},transform(Q,Z){if(m.includeRawChunks)Z.enqueue({type:"raw",rawValue:Q.rawValue});if(!Q.success){N={unified:"error",raw:void 0},Z.enqueue({type:"error",error:Q.error});return}let V=Q.value;if(R)R=!1,Z.enqueue({type:"response-metadata",...ee(V)});if(V.usage!=null)x=V.usage;let re=V.choices[0],K=re.delta,J=Me(K.content);if(K.content!=null&&Array.isArray(K.content)){for(let P of K.content)if(P.type==="thinking"){let B=Te(P.thinking);if(B.length>0){if(U==null){if(A)Z.enqueue({type:"text-end",id:"0"}),A=!1;U=se(),Z.enqueue({type:"reasoning-start",id:U})}Z.enqueue({type:"reasoning-delta",id:U,delta:B})}}}if(J!=null&&J.length>0){if(!A){if(U!=null)Z.enqueue({type:"reasoning-end",id:U}),U=null;Z.enqueue({type:"text-start",id:"0"}),A=!0}Z.enqueue({type:"text-delta",id:"0",delta:J})}if(K?.tool_calls!=null)for(let P of K.tool_calls)X.processDelta(P);if(re.finish_reason!=null)N={unified:je(re.finish_reason),raw:re.finish_reason}},flush(Q){if(U!=null)Q.enqueue({type:"reasoning-end",id:U});if(A)Q.enqueue({type:"text-end",id:"0"});X.flush(),Q.enqueue({type:"finish",finishReason:N,usage:pe(x)})}})),request:{body:L},response:{headers:v}}}};function Te(w){return w.filter((m)=>m.type==="text").map((m)=>m.text).join("")}function Me(w){if(typeof w==="string")return w;if(w==null)return;let m=[];for(let _ of w){let{type:H}=_;switch(H){case"text":m.push(_.text);break;case"thinking":case"image_url":case"reference":break;default:throw Error(`Unsupported type: ${H}`)}}return m.length?m.join(""):void 0}var qe=()=>l([e(),o(f("type",[t({type:n("text"),text:e()}),t({type:n("image_url"),image_url:l([e(),t({url:e(),detail:e().nullable()})])}),t({type:n("reference"),reference_ids:o(l([e(),r()]))}),t({type:n("thinking"),thinking:o(t({type:n("text"),text:e()}))})]))]).nullish(),Ke=a(()=>s(t({id:e().nullish(),created:r().nullish(),model:e().nullish(),choices:o(t({message:t({role:n("assistant"),content:qe(),tool_calls:o(t({id:e(),function:t({name:e(),arguments:e()})})).nullish()}),index:r(),finish_reason:e().nullish()})),object:n("chat.completion"),usage:_e}))),Be=a(()=>s(t({id:e().nullish(),created:r().nullish(),model:e().nullish(),choices:o(t({delta:t({role:i(["assistant"]).optional(),content:qe(),tool_calls:o(t({index:r().nullish(),id:e().nullish(),function:t({name:e().nullish(),arguments:e().nullish()})})).nullish()}),finish_reason:e().nullish(),index:r()})),usage:_e.nullish()})));function We(w,m){let _=[],H=[],L=new Set,v=(q)=>{if(L.has(q.toolCallId)){let x=null;if(q.output.type==="json"){let R=q.output.value,A=R!=null&&typeof R==="object"&&"info"in R?R.info:void 0;if(A!=null&&typeof A==="object"&&!Array.isArray(A))x="result"in A?A.result??A:A}_.push({type:"function.result",tool_call_id:q.toolCallId,result:typeof x==="string"?x:JSON.stringify(x)});return}let N=be([{role:"tool",content:[q]}])[0];_.push({type:"function.result",tool_call_id:q.toolCallId,result:N.content})};for(let q of w)switch(q.role){case"system":H.push(q.content);break;case"user":{let N=be([q])[0];if(N.role==="user")_.push({type:"message.input",role:"user",content:N.content});break}case"assistant":{let N=[],x=()=>{if(N.length>0)_.push({type:"message.input",role:"assistant",content:N}),N=[]};for(let R of q.content)switch(R.type){case"text":N.push({type:"text",text:R.text});break;case"reasoning":N.push({type:"thinking",thinking:[{type:"text",text:R.text}],closed:!0});break;case"tool-call":if(x(),R.providerExecuted){let A=R.providerOptions?.mistral?.function??R.providerOptions?.mistral?.name,U=R.input;_.push({type:"function.call",tool_call_id:R.toolCallId,name:typeof A==="string"?A:m.toProviderToolName(R.toolName),arguments:typeof U?.arguments==="string"?U.arguments:JSON.stringify(R.input)}),L.add(R.toolCallId)}else _.push({type:"function.call",tool_call_id:R.toolCallId,name:R.toolName,arguments:JSON.stringify(R.input)});break;case"tool-result":x(),v(R);break;default:throw new u({functionality:`assistant content type: ${R.type}`})}x();break}case"tool":for(let N of q.content){if(N.type==="tool-approval-response")continue;v(N)}}return{inputs:_,instructions:H.length>0?H.join(`
2
2
 
3
3
  `):void 0}}var Fe=a(()=>s(Ee())),ge={"mistral.web_search":"web_search","mistral.web_search_premium":"web_search_premium"};function Ze({tools:w,toolChoice:m}){w=w?.length?w:void 0;let _=[];if(w==null)return{tools:void 0,toolChoice:void 0,toolWarnings:_};let H=[];for(let v of w)if(v.type==="provider"){if(v.id==="mistral.web_search"||v.id==="mistral.web_search_premium"){H.push({type:ge[v.id]});continue}_.push({type:"unsupported",feature:`provider-defined tool ${v.id}`})}else H.push({type:"function",function:{name:v.name,description:v.description,parameters:v.inputSchema,...v.strict!=null?{strict:v.strict}:{}}});if(m==null)return{tools:H,toolChoice:void 0,toolWarnings:_};let L=m.type;switch(L){case"auto":case"none":return{tools:H,toolChoice:L,toolWarnings:_};case"required":return{tools:H,toolChoice:"any",toolWarnings:_};case"tool":{let v=le({tools:w,providerToolNames:ge}).toProviderToolName(m.toolName);return{tools:H.filter((q)=>q.type==="function"?q.function.name===v:q.type===v),toolChoice:"any",toolWarnings:_}}default:throw new u({functionality:`tool choice type: ${L}`})}}var Ye=new Set(["glm-5-2","labs-leanstral-1-5","labs-leanstral-1-5-1","magistral-medium-latest","magistral-small-latest","mistral-large-4","mistral-large-4-0","mistral-medium","mistral-medium-2604","mistral-medium-3","mistral-medium-3-5","mistral-medium-3.5","mistral-medium-latest","mistral-small-2603","mistral-small-latest","mistral-vibe-cli-fast","mistral-vibe-cli-latest","mistral-vibe-cli-with-tools","zai-glm-5-2"]),Qe=class w{static[k](m){return E({modelId:m.modelId,config:m.config})}static[T](m){return new w(m.modelId,m.config)}constructor(m,_){this.specificationVersion="v4",this.supportedUrls={"application/pdf":[/^https:\/\/.*$/]},this.modelId=m,this.config=_,this.generateId=_.generateId??C}get provider(){return this.config.provider}async getArgs({prompt:m,maxOutputTokens:_,temperature:H,topP:L,topK:v,frequencyPenalty:q,presencePenalty:N,reasoning:x,stopSequences:R,responseFormat:A,seed:U,providerOptions:X,tools:se,toolChoice:Q}){let Z=[],V=await h({provider:"mistral",providerOptions:X,schema:Fe})??{};if(v!=null)Z.push({type:"unsupported",feature:"topK"});let re=Ye.has(this.modelId),K;if(re)K=V.reasoningEffort??(W(x)?x==="none"?"none":Se({reasoning:x,effortMap:{minimal:"high",low:"high",medium:"high",high:"high",xhigh:"high",max:"high"},warnings:Z}):void 0);else if(W(x))Z.push({type:"unsupported",feature:"reasoning",details:"This model does not support reasoning configuration."});let J=V.structuredOutputs??!0,P=V.strictJsonSchema??!1;if(A?.type==="json"&&(!J||A.schema==null))m=jt({messages:m,schema:A.schema});let B={max_tokens:_,temperature:H,top_p:L,...q!=null?{frequency_penalty:q}:{},...N!=null?{presence_penalty:N}:{},stop:R,random_seed:U,reasoning_effort:K,response_format:A?.type==="json"?J&&A?.schema!=null?{type:"json_schema",json_schema:{schema:A.schema,strict:P,name:A.name??"response",description:A.description}}:{type:"json_object"}:void 0},{tools:ae,toolChoice:fe,toolWarnings:ye}=Ze({tools:se,toolChoice:Q});for(let[de,He]of Object.entries({safePrompt:V.safePrompt,documentImageLimit:V.documentImageLimit,documentPageLimit:V.documentPageLimit,promptCacheKey:V.promptCacheKey,parallelToolCalls:V.parallelToolCalls}))if(He!=null)Z.push({type:"unsupported",feature:de,details:"Not supported by the Mistral Conversations API."});return{args:{model:this.modelId,store:!1,...We(m,le({tools:se,providerToolNames:ge})),tools:ae,completion_args:{...B,tool_choice:fe}},warnings:[...Z,...ye]}}async doGenerate(m){let{args:_,warnings:H}=await this.getArgs(m),{value:L,rawValue:v,responseHeaders:q}=await g({url:`${this.config.baseURL}/conversations`,headers:d(this.config.headers?.(),m.headers),body:_,failedResponseHandler:ce,successfulResponseHandler:p(nt),abortSignal:m.abortSignal,fetch:this.config.fetch}),N=Re({tools:m.tools,generateId:this.generateId}),x=[],R=!1,A;for(let U of L.outputs)switch(U.type){case"tool.execution":x.push(...N.convertTool(U));break;case"function.call":R=!0,x.push({type:"tool-call",toolCallId:U.tool_call_id,toolName:U.name,input:typeof U.arguments==="string"?U.arguments:JSON.stringify(U.arguments)});break;case"message.output":A=U.model??A;for(let X of typeof U.content==="string"?[{type:"text",text:U.content}]:U.content)x.push(...N.convertChunk(X))}return{content:x,finishReason:{unified:R?"tool-calls":"stop",raw:void 0},usage:pe(L.usage),request:{body:_},response:{id:L.conversation_id,modelId:A,headers:q,body:v},warnings:H}}async doStream(m){let{args:_,warnings:H}=await this.getArgs(m),L={..._,stream:!0},{value:v,responseHeaders:q}=await g({url:`${this.config.baseURL}/conversations`,headers:d(this.config.headers?.(),m.headers),body:L,failedResponseHandler:ce,successfulResponseHandler:D(st),abortSignal:m.abortSignal,fetch:this.config.fetch}),N=Re({tools:m.tools,generateId:this.generateId}),x=new Map,R,A,U,X=!1,se=!1,Q=!1,Z=!1,V=(K)=>{if(A!=null)K.enqueue({type:A.type==="text"?"text-end":"reasoning-end",id:A.id}),A=void 0},re=this.generateId;return{stream:v.pipeThrough(new TransformStream({start(K){R=new Ce(K,{generateId:re}),K.enqueue({type:"stream-start",warnings:H})},transform(K,J){if(m.includeRawChunks)J.enqueue({type:"raw",rawValue:K.rawValue});if(!K.success){se=!0,J.enqueue({type:"error",error:K.error});return}let P=K.value;switch(P.type){case"conversation.response.started":J.enqueue({type:"response-metadata",id:P.conversation_id,...P.created_at!=null?{timestamp:new Date(P.created_at)}:{}});break;case"conversation.response.done":U=P.usage??void 0,Q=!0;break;case"conversation.response.error":se=!0,J.enqueue({type:"error",error:P});break;case"message.output.delta":if(!Z&&P.model!=null)Z=!0,J.enqueue({type:"response-metadata",modelId:P.model});for(let B of N.convertChunk(typeof P.content==="string"?{type:"text",text:P.content}:P.content))if(B.type==="text"||B.type==="reasoning"){let ae=`${P.id}-${P.content_index??0}`;if(A?.id!==ae||A.type!==B.type)V(J),A={id:ae,type:B.type},J.enqueue({type:B.type==="text"?"text-start":"reasoning-start",id:ae});J.enqueue({type:B.type==="text"?"text-delta":"reasoning-delta",id:ae,delta:B.text})}else if(B.type==="source")J.enqueue(B);break;case"function.call.delta":V(J),X=!0,R.processDelta({id:P.tool_call_id,index:P.output_index,function:{name:P.name,arguments:P.arguments}});break;case"tool.execution.started":case"tool.execution.delta":{V(J);let B=x.get(P.id);if(B==null)x.set(P.id,{name:P.name,arguments:P.arguments,function:P.function}),J.enqueue({type:"tool-input-start",id:P.id,toolName:N.toolNameMapping.toCustomToolName(P.name),providerExecuted:!0});else B.arguments+=P.arguments;break}case"tool.execution.done":{let B=x.get(P.id);if(B==null){se=!0,J.enqueue({type:"error",error:Error(`Missing tool execution start for ${P.id}`)});break}J.enqueue({type:"tool-input-delta",id:P.id,delta:JSON.stringify({arguments:B.arguments})}),J.enqueue({type:"tool-input-end",id:P.id});for(let ae of N.convertTool({type:"tool.execution",id:P.id,name:B.name,arguments:B.arguments,function:P.function??B.function,info:P.info}))J.enqueue(ae);x.delete(P.id);break}}},flush(K){V(K),R.flush(),K.enqueue({type:"finish",finishReason:{unified:se||!Q||x.size>0?"error":X?"tool-calls":"stop",raw:void 0},usage:pe(U)})}})),request:{body:L},response:{headers:q}}}};function Re({tools:w,generateId:m}){let _=le({tools:w,providerToolNames:ge}),H=new Set;return{toolNameMapping:_,convertChunk(L){switch(L.type){case"text":return L.text.length>0?[{type:"text",text:L.text}]:[];case"thinking":{let q=L.thinking.map((N)=>N.text).join("");return q.length>0?[{type:"reasoning",text:q}]:[]}case"tool_reference":if(L.url==null||H.has(L.url))return[];let v=m();return H.add(L.url),[{type:"source",sourceType:"url",id:v,url:L.url,title:L.title??L.url}]}},convertTool(L){let v=_.toCustomToolName(L.name);return[{type:"tool-call",toolCallId:L.id,toolName:v,input:JSON.stringify({arguments:L.arguments}),providerExecuted:!0,providerMetadata:{mistral:{type:"tool.execution",name:L.name,...L.function!=null?{function:L.function}:{}}}},{type:"tool-result",toolCallId:L.id,toolName:v,result:{...L.info!=null?{info:L.info}:{}}}]}}}var Oe=()=>f("type",[t({type:n("text"),text:e()}),t({type:n("thinking"),thinking:o(t({type:n("text"),text:e()}))}),t({type:n("tool_reference"),tool:e().nullish(),title:e().nullish(),url:e().nullish()})]),Xe=()=>l([e(),o(Oe())]),et=()=>t({type:n("tool.execution"),id:e(),name:e(),arguments:e(),function:e().nullish(),info:y(e(),G()).nullish()}),tt=()=>t({type:n("function.call"),tool_call_id:e(),name:e(),arguments:l([e(),y(e(),G())])}),Le=()=>_e.extend({prompt_tokens:r().default(0),completion_tokens:r().default(0),total_tokens:r().default(0)}),nt=a(()=>s(t({conversation_id:e(),outputs:o(f("type",[et(),tt(),t({type:n("message.output"),content:Xe(),model:e().nullish()})])),usage:Le().nullish()}))),st=a(()=>s(f("type",[t({type:n("conversation.response.started"),conversation_id:e(),created_at:e().nullish()}),t({type:n("conversation.response.done"),usage:Le().nullish()}),t({type:n("conversation.response.error"),message:e(),code:r()}),t({type:n("message.output.delta"),id:e(),content_index:r().nullish(),content:l([e(),Oe()]),model:e().nullish()}),t({type:n("function.call.delta"),tool_call_id:e(),name:e(),arguments:e(),output_index:r().nullish()}),t({type:i(["tool.execution.started","tool.execution.delta"]),id:e(),name:e(),arguments:e(),function:e().nullish()}),t({type:n("tool.execution.done"),id:e(),name:e(),function:e().nullish(),info:y(e(),G()).nullish()})]))),ot=t({metadata:y(e(),ie()).optional(),outputDimension:r().int().positive().optional(),outputDtype:i(["float","int8","uint8","binary","ubinary"]).optional()}),at=class w{get provider(){return this.config.provider}static[k](m){return E({modelId:m.modelId,config:m.config})}static[T](m){return new w(m.modelId,m.config)}constructor(m,_){this.specificationVersion="v4",this.maxEmbeddingsPerCall=32,this.supportsParallelCalls=!1,this.modelId=m,this.config=_}async doEmbed({values:m,dimensions:_,abortSignal:H,headers:L,providerOptions:v}){if(m.length>this.maxEmbeddingsPerCall)throw new me({provider:this.provider,modelId:this.modelId,maxEmbeddingsPerCall:this.maxEmbeddingsPerCall,values:m});let q=await h({provider:"mistral",providerOptions:v,schema:ot})??{},{responseHeaders:N,value:x,rawValue:R}=await g({url:`${this.config.baseURL}/embeddings`,headers:d(this.config.headers?.(),L),body:{model:this.modelId,input:m,metadata:q.metadata,output_dimension:q.outputDimension??_,output_dtype:q.outputDtype,encoding_format:"float"},failedResponseHandler:ce,successfulResponseHandler:p(it),abortSignal:H,fetch:this.config.fetch});return{warnings:[],embeddings:x.data.map((A)=>A.embedding),usage:x.usage?{tokens:x.usage.prompt_tokens}:void 0,response:{headers:N,body:R}}}},it=a(()=>s(t({data:o(t({embedding:o(r())})),usage:t({prompt_tokens:r()}).nullish()}))),rt=a(()=>s(t({refAudio:e().min(1).optional(),expressiveness:r().min(1).max(5).optional(),phonemeHints:y(e().min(1),o(e().min(1)).min(1)).optional()}))),lt=class w{static[k](m){return E({modelId:m.modelId,config:m.config})}static[T](m){return new w(m.modelId,m.config)}get provider(){return this.config.provider}constructor(m,_){this.modelId=m,this.config=_,this.specificationVersion="v4"}async getArgs({text:m,voice:_,outputFormat:H="mp3",instructions:L,speed:v,language:q,providerOptions:N}){let x=[],R=await h({provider:"mistral",providerOptions:N,schema:rt}),A="mp3";if(["pcm","wav","mp3","flac","opus"].includes(H))A=H;else x.push({type:"unsupported",feature:"outputFormat",details:`Unsupported output format: ${H}. Using mp3 instead.`});if(L!=null)x.push({type:"unsupported",feature:"instructions",details:"Mistral speech models do not support the `instructions` option. Use a reference audio clip to guide delivery."});if(v!=null)x.push({type:"unsupported",feature:"speed",details:"Mistral speech models do not support the `speed` option. It was ignored."});if(q!=null)x.push({type:"unsupported",feature:"language",details:"Mistral speech models do not support the `language` option. Language is inferred from the input text and voice."});let U=R?.refAudio,X={model:this.modelId,input:m,voice_id:U==null?_:void 0,ref_audio:U,expressiveness:R?.expressiveness,phoneme_hints:R?.phonemeHints,response_format:A,stream:!1};return{requestBody:X,requestBodyValues:{...X,ref_audio:U==null?void 0:"[redacted]"},warnings:x}}async doGenerate(m){let _=this.config._internal?.currentDate?.()??new Date,{requestBody:H,requestBodyValues:L,warnings:v}=await this.getArgs(m),{value:q,responseHeaders:N,rawValue:x}=await ve({url:`${this.config.baseURL}/audio/speech`,headers:d({"Content-Type":"application/json"},this.config.headers?.(),m.headers),body:{content:JSON.stringify(H),values:L},failedResponseHandler:ce,successfulResponseHandler:p(ut),abortSignal:m.abortSignal,fetch:this.config.fetch});return{audio:q.audio_data,warnings:v,request:{body:JSON.stringify(L)},response:{timestamp:_,modelId:this.modelId,headers:N,body:x}}}},ut=a(()=>s(t({audio_data:e()}))),dt=a(()=>s(t({language:e().min(1).optional(),returnLanguage:c().optional(),temperature:r().optional(),timestampGranularities:o(i(["segment","word"])).min(1).optional(),diarize:c().optional(),contextBias:o(e().min(1)).optional()}))),pt=class w{static[k](m){return E({modelId:m.modelId,config:m.config})}static[T](m){return new w(m.modelId,m.config)}get provider(){return this.config.provider}constructor(m,_){this.modelId=m,this.config=_,this.specificationVersion="v4"}async getArgs({audio:m,mediaType:_,providerOptions:H}){let L=[],v=await h({provider:"mistral",providerOptions:H,schema:dt});if(["voxtral-mini-2507","voxtral-mini-2602","voxtral-mini-latest"].includes(this.modelId)&&v?.language!=null&&v.timestampGranularities!=null)throw new b({argument:"providerOptions",message:"providerOptions.mistral.language cannot be combined with providerOptions.mistral.timestampGranularities"});if(v?.language!=null&&v.returnLanguage)throw new b({argument:"providerOptions",message:"providerOptions.mistral.language cannot be combined with providerOptions.mistral.returnLanguage"});let q=new FormData,N=m instanceof Uint8Array?new Blob([m]):new Blob([j(m)]);if(q.append("model",this.modelId),q.append("file",new File([N],"audio",{type:_}),`audio.${ct(_)}`),v!=null)ue(q,"language",v.language),ue(q,"return_language",v.returnLanguage),ue(q,"temperature",v.temperature),ue(q,"timestamp_granularities",v.timestampGranularities),ue(q,"diarize",v.diarize),ue(q,"context_bias",v.contextBias);return{formData:q,warnings:L}}async doGenerate(m){let _=this.config._internal?.currentDate?.()??new Date,{formData:H,warnings:L}=await this.getArgs(m),{value:v,responseHeaders:q,rawValue:N}=await ne({url:`${this.config.baseURL}/audio/transcriptions`,headers:d(this.config.headers?.(),m.headers),formData:H,failedResponseHandler:ce,successfulResponseHandler:p(mt),abortSignal:m.abortSignal,fetch:this.config.fetch}),x=v.segments?.map((U)=>({text:U.text,startSecond:U.start,endSecond:U.end}))??[],R={};if(v.usage!=null)R.usage={...v.usage.prompt_tokens!=null&&{promptTokens:v.usage.prompt_tokens},...v.usage.completion_tokens!=null&&{completionTokens:v.usage.completion_tokens},...v.usage.total_tokens!=null&&{totalTokens:v.usage.total_tokens},...v.usage.prompt_audio_seconds!=null&&{promptAudioSeconds:v.usage.prompt_audio_seconds},...v.usage.request_count!=null&&{requestCount:v.usage.request_count}};let A=v.segments?.filter((U)=>U.type!=null||U.score!=null||U.speaker_id!=null).map((U)=>({text:U.text,startSecond:U.start,endSecond:U.end,...U.type!=null&&{type:U.type},...U.score!=null&&{score:U.score},...U.speaker_id!=null&&{speakerId:U.speaker_id}}));if(A!=null&&A.length>0)R.segments=A;return{text:v.text,segments:x,language:v.language??void 0,durationInSeconds:v.usage?.prompt_audio_seconds??x.at(-1)?.endSecond??void 0,warnings:L,...v.usage!=null&&{usage:v.usage},response:{timestamp:_,modelId:v.model,headers:q,body:N},...Object.keys(R).length>0&&{providerMetadata:{mistral:R}}}}};function ue(w,m,_){if(_==null)return;if(Array.isArray(_)){for(let H of _)w.append(m,H);return}w.append(m,String(_))}var mt=a(()=>s(t({model:e(),text:e(),language:e().nullish(),segments:o(t({type:n("transcription_segment").nullish(),text:e(),start:r(),end:r(),score:r().nullish(),speaker_id:e().nullish()})).nullish(),usage:t({prompt_tokens:r().nullish(),completion_tokens:r().nullish(),total_tokens:r().nullish(),prompt_audio_seconds:r().nullish(),request_count:r().nullish()}).nullish()}))),gt="4.0.74",Ae=a(()=>s(t({arguments:e()}))),Ne=a(()=>s(t({info:y(e(),G()).optional()}))),ht=S({id:"mistral.web_search",inputSchema:Ae,outputSchema:Ne}),ft=S({id:"mistral.web_search_premium",inputSchema:Ae,outputSchema:Ne}),yt=(w={})=>ht(w),bt=(w={})=>ft(w),vt={webSearch:yt,webSearchPremium:bt};function we(w={}){let m=Y(w.baseURL)??"https://api.mistral.ai/v1",_=()=>F({Authorization:`Bearer ${he({apiKey:w.apiKey,environmentVariableName:"MISTRAL_API_KEY",description:"Mistral"})}`,...w.headers},`ai-sdk-mistral/${gt}`),H=(R)=>new ze(R,{provider:"mistral.chat",baseURL:m,headers:_,fetch:w.fetch,generateId:w.generateId}),L=(R)=>new at(R,{provider:"mistral.embedding",baseURL:m,headers:_,fetch:w.fetch}),v=(R)=>new Qe(R,{provider:"mistral.conversation",baseURL:m,headers:_,fetch:w.fetch,generateId:w.generateId}),q=(R)=>new lt(R,{provider:"mistral.speech",baseURL:m,headers:_,fetch:w.fetch}),N=(R)=>new pt(R,{provider:"mistral.transcription",baseURL:m,headers:_,fetch:w.fetch}),x=function(R){if(new.target)throw Error("The Mistral model function cannot be called with the new keyword.");return H(R)};return x.specificationVersion="v4",x.languageModel=H,x.chat=H,x.conversation=v,x.tools=vt,x.embedding=L,x.embeddingModel=L,x.textEmbedding=L,x.textEmbeddingModel=L,x.speech=q,x.speechModel=q,x.transcription=N,x.transcriptionModel=N,x.imageModel=(R)=>{throw new Ge({modelId:R,modelType:"imageModel"})},x}var St=we();var _t=Ie(we);function Rt(){oe("mistral",_t)}export{Rt as register};
@@ -1,4 +1,4 @@
1
- import{St}from"./embed-hhcax25m.js";import{Ct}from"./embed-wd4wcxtq.js";import{Ye,zt,Dt,Xe,et}from"./embed-q03dhgpb.js";function M(e,s){let t=[...s].reverse().find((o)=>o.role==="user");return Ye(e)<12&&t?`${t.content} ${e}`:e}function T(e){let s=e.retriever??(e.index?Ct(e.index):null)??(()=>{throw Error("murmur: pass `index` or `retriever`.")})();return{retriever:s,async ask(t,{history:o=[],signal:u}={}){let a={};if(e.limit!==void 0)a.limit=e.limit;if(e.budgetTokens!==void 0)a.budgetTokens=e.budgetTokens;let i=await s.search(M(t,o),a),d=[e.instructions?.trim(),Dt(e.language),i.length?`Sources:
1
+ import{St}from"./embed-xdftb0b2.js";import{Ct}from"./embed-wd4wcxtq.js";import{Ye,zt,Dt,Xe,et}from"./embed-q03dhgpb.js";function M(e,s){let t=[...s].reverse().find((o)=>o.role==="user");return Ye(e)<12&&t?`${t.content} ${e}`:e}function T(e){let s=e.retriever??(e.index?Ct(e.index):null)??(()=>{throw Error("murmur: pass `index` or `retriever`.")})();return{retriever:s,async ask(t,{history:o=[],signal:u}={}){let a={};if(e.limit!==void 0)a.limit=e.limit;if(e.budgetTokens!==void 0)a.budgetTokens=e.budgetTokens;let i=await s.search(M(t,o),a),d=[e.instructions?.trim(),Dt(e.language),i.length?`Sources:
2
2
 
3
3
  ${zt(i)}`:"Sources: none matched this question. Say you could not find it on this site."].filter(Boolean).join(`
4
4
 
@@ -1,9 +1,9 @@
1
- import{N,yn,Xe,et,Ot}from"./embed-q03dhgpb.js";yn(import.meta.url,["5s838jnv","q38abctd","nhd6pd73","tjxzgn54","yjgc7apa","3yz0vzz9","k0v6as0z","f5ctpc4w","q03dhgpb","s9zy3aav","zckjbrcx","hhcax25m","wd4wcxtq","nr67a9j3","8byk6wkm","ev3304hr","t87kf8t0","q9byakt1","1y1mb77z","b4zxgp7g","e1jxb6vy","3swpcbya","7xhp36fz"],[["./murmur.js",8],["./index-q38abctd.js",9],["./chunk-nhd6pd73.js",10],["./index-tjxzgn54.js",10],["./murmur-yjgc7apa.js",11,12,8],["./retriever-3yz0vzz9.js",12],["./index-k0v6as0z.js",9],["./index-f5ctpc4w.js",8],["./embed-q03dhgpb.js"],["./embed-s9zy3aav.js",8],["./embed-zckjbrcx.js"],["./embed-hhcax25m.js",8,21],["./embed-wd4wcxtq.js",8],["./transformers.web-nr67a9j3.js",8],["./openai-compatible-8byk6wkm.js",9,21],["./index-ev3304hr.js",11],["./browser-t87kf8t0.js"],["./openai-q9byakt1.js",9,8,21],["./anthropic-1y1mb77z.js",9,22,21],["./google-b4zxgp7g.js",9,22,21],["./mistral-e1jxb6vy.js",9,21],["./embed-3swpcbya.js"],["./embed-7xhp36fz.js",21]],0);
2
- var X={open:"Ask a question",close:"Close",title:"Ask this site",greeting:"Hi! Ask me anything about this site. I answer from its pages and link to them.",placeholder:"Your question…",send:"Send",stop:"Stop",settings:"AI settings",back:"Back to chat",sources:"Sources",notFound:"Nothing on this site matched. Try other words?",thinking:"Looking through the site…",newChat:"New conversation",poweredBy:"Answers from this site's pages, by murmur",errorAuth:"The key was refused. Check it in the AI settings.",errorNetwork:"No answer from the AI provider: key refused or network down.",errorRate:"The AI provider is busy or rate-limited. Try again in a moment.",errorOther:"The answer failed:",retry:"Try again",setupTitle:"Connect an AI model",setupIntro:"Pick how this site answers you: a model that runs in your browser, or your own AI key, kept encrypted in your browser and sent only to the provider you pick.",provider:"Provider",model:"Model",apiKey:"API key",apiKeyHint:"Sent only to the provider, never to this site.",remember:"Remember on this device",local:"Local server (Ollama, LM Studio)",localHint:"The server must allow this site's origin (CORS).",endpoint:"Server URL",test:"Test",testing:"Testing…",testOk:"Connected.",testFail:"Connection failed:",save:"Save and chat",forget:"Forget my key",loadingCatalog:"Loading models…",catalogError:"Could not load the model list.",searchModels:"Search models",recommended:"Recommended",otherProviders:"Other providers",localOption:"Run a model in this browser",localOptionHint:"{name}, about {size} downloaded once, then kept in this browser. Needs WebGPU; nothing you type leaves your device.",localActive:"Running in this browser",orKey:"or connect a provider with your key",useKey:"Use an API key instead",localConsent:"This assistant can run entirely in your browser with {name}, an AI model of about {size}. It downloads once, then stays in this browser; your questions never leave your device.",localDownload:"Download and answer",localLoading:"Downloading the model…",localLoadingLabel:"Model download",localPreparing:"Preparing the model on your GPU…",localNoWebGPU:"This browser cannot run the model locally (no WebGPU). Try a recent Chrome, Edge or Safari, or use an API key.",localLoadFailed:"The model could not be loaded in this browser.",localNoWebGPUOnly:"This site answers with an AI model that runs in your browser, and this browser cannot run it (no WebGPU). Try a recent Chrome, Edge or Safari.",gigabytes:"GB",megabytes:"MB"},ce={open:"Poser une question",close:"Fermer",title:"Demandez au site",greeting:"Bonjour ! Posez-moi une question sur ce site. Je réponds à partir de ses pages, avec les liens.",placeholder:"Votre question…",send:"Envoyer",stop:"Arrêter",settings:"Réglages IA",back:"Retour au chat",sources:"Sources",notFound:"Rien sur ce site ne correspond. Essayez d'autres mots ?",thinking:"Je cherche dans le site…",newChat:"Nouvelle conversation",poweredBy:"Réponses tirées des pages de ce site, par murmur",errorAuth:"La clé a été refusée. Vérifiez-la dans les réglages IA.",errorNetwork:"Pas de réponse du fournisseur d'IA : clé refusée ou réseau coupé.",errorRate:"Le fournisseur d'IA est saturé ou limite les appels. Réessayez dans un instant.",errorOther:"La réponse a échoué :",retry:"Réessayer",setupTitle:"Connecter un modèle d'IA",setupIntro:"Choisissez comment ce site vous répond : un modèle qui tourne dans votre navigateur, ou votre propre clé d'IA, gardée chiffrée dans votre navigateur et envoyée seulement au fournisseur choisi.",provider:"Fournisseur",model:"Modèle",apiKey:"Clé API",apiKeyHint:"Envoyée uniquement au fournisseur, jamais à ce site.",remember:"Mémoriser sur cet appareil",local:"Serveur local (Ollama, LM Studio)",localHint:"Le serveur doit autoriser l'origine de ce site (CORS).",endpoint:"URL du serveur",test:"Tester",testing:"Test…",testOk:"Connecté.",testFail:"Échec de la connexion :",save:"Enregistrer et discuter",forget:"Oublier ma clé",loadingCatalog:"Chargement des modèles…",catalogError:"Impossible de charger la liste des modèles.",searchModels:"Chercher un modèle",recommended:"Recommandés",otherProviders:"Autres fournisseurs",localOption:"Faire tourner un modèle dans ce navigateur",localOptionHint:"{name}, environ {size} téléchargés une fois puis gardés dans ce navigateur. Nécessite WebGPU ; rien de ce que vous tapez ne quitte votre appareil.",localActive:"Modèle actif dans ce navigateur",orKey:"ou connectez un fournisseur avec votre clé",useKey:"Utiliser une clé API à la place",localConsent:"Cet assistant peut fonctionner entièrement dans votre navigateur avec {name}, un modèle d'IA d'environ {size}. Il se télécharge une fois puis reste dans ce navigateur ; vos questions ne quittent jamais votre appareil.",localDownload:"Télécharger et répondre",localLoading:"Téléchargement du modèle…",localLoadingLabel:"Téléchargement du modèle",localPreparing:"Préparation du modèle sur votre GPU…",localNoWebGPU:"Ce navigateur ne peut pas faire tourner le modèle en local (pas de WebGPU). Essayez un Chrome, Edge ou Safari récent, ou utilisez une clé API.",localLoadFailed:"Le modèle n'a pas pu être chargé dans ce navigateur.",localNoWebGPUOnly:"Ce site répond avec un modèle d'IA qui tourne dans votre navigateur, et ce navigateur ne peut pas le faire tourner (pas de WebGPU). Essayez un Chrome, Edge ou Safari récent.",gigabytes:"Go",megabytes:"Mo"},ee={en:X,fr:ce};function te(...e){for(let n of e){let o=n?.toLowerCase().split(/[-_]/)[0];if(o&&o in ee)return o}return"en"}function B(e,n={}){return{...ee[e]??X,...n}}var de={chat:'<path d="M4 6.5A2.5 2.5 0 0 1 6.5 4h11A2.5 2.5 0 0 1 20 6.5v7a2.5 2.5 0 0 1-2.5 2.5H10l-4.2 3.4c-.5.4-1.3 0-1.3-.6V6.5Z"/><path d="M8.5 9h7M8.5 12h4.5"/>',close:'<path d="M6 6l12 12M18 6 6 18"/>',send:'<path d="M12 19V5M6 11l6-6 6 6"/>',stop:'<rect x="7" y="7" width="10" height="10" rx="1.5"/>',settings:'<path d="M4 7h9M17 7h3M4 17h3M11 17h9"/><circle cx="15" cy="7" r="2"/><circle cx="9" cy="17" r="2"/>',reset:'<path d="M5 12a7 7 0 1 0 2.1-5"/><path d="M5 4.5V8h3.5"/>',back:'<path d="M14.5 6 8.5 12l6 6"/>',check:'<path d="m5.5 12.5 4 4 9-9"/>',key:'<circle cx="8" cy="15" r="3.5"/><path d="m10.5 12.5 8-8M16 7l2 2M14 9l1.5 1.5"/>'};function U(e,n){let o=e.createElement("template");return o.innerHTML=`<svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">${de[n]??""}</svg>`,o.content.firstElementChild}var pe=/^(https?:\/\/|\/|#|\.\/|mailto:)/i;function S(e,n,o,t){let s=/(`[^`]+`)|(\*\*[^*]+\*\*)|(\*[^*\s][^*]*\*|_[^_\s][^_]*_)|(\[[^\]]+\]\([^)\s]+\))|(\[\d{1,2}\])/g,i=0;for(let a of n.matchAll(s)){let p=a.index??0;if(p>i)t.appendChild(e.createTextNode(n.slice(i,p)));i=p+a[0].length;let l=a[0];if(a[1]){let c=e.createElement("code");c.textContent=l.slice(1,-1),t.appendChild(c)}else if(a[2]){let c=e.createElement("strong");S(e,l.slice(2,-2),o,c),t.appendChild(c)}else if(a[3]){let c=e.createElement("em");S(e,l.slice(1,-1),o,c),t.appendChild(c)}else if(a[4]){let c=l.indexOf("]("),d=l.slice(1,c),u=l.slice(c+2,-1);if(pe.test(u)){let m=e.createElement("a");if(m.href=u,m.textContent=d,/^https?:/i.test(u))m.target="_blank",m.rel="noopener noreferrer";t.appendChild(m)}else t.appendChild(e.createTextNode(d))}else{let c=o(Number(l.slice(1,-1)));t.appendChild(c??e.createTextNode(l))}}if(i<n.length)t.appendChild(e.createTextNode(n.slice(i)))}var ue=/^\s*\|?\s*:?-{3,}:?\s*(?:\|\s*:?-{3,}:?\s*)*\|?\s*$/;function ne(e,n){return/ {2,}$|\\$/.test(n)?e.createElement("br"):e.createTextNode(" ")}function oe(e){return e.trim().replace(/^\|/,"").replace(/\|$/,"").split("|").map((n)=>n.trim())}function W(e,n,o){let t=e.ownerDocument,s=t.createDocumentFragment(),i=n.replace(/\r\n?/g,`
1
+ import{N,yn,Xe,et,Ot}from"./embed-q03dhgpb.js";yn(import.meta.url,["9a9djeyw","0yvq5pe3","nhd6pd73","tjxzgn54","krwan2e5","3yz0vzz9","arpy64fv","f5ctpc4w","q03dhgpb","3vb4wcng","zckjbrcx","xdftb0b2","wd4wcxtq","nr67a9j3","vqp1sqdg","r7h9ewgp","t87kf8t0","t1hcmmxm","p21yv83k","df5pjzyw","0tm1pmab","52n5pm9t","f7gzw56s"],[["./murmur.js",8],["./index-0yvq5pe3.js",9],["./chunk-nhd6pd73.js",10],["./index-tjxzgn54.js",10],["./murmur-krwan2e5.js",11,12,8],["./retriever-3yz0vzz9.js",12],["./index-arpy64fv.js",9],["./index-f5ctpc4w.js",8],["./embed-q03dhgpb.js"],["./embed-3vb4wcng.js",8],["./embed-zckjbrcx.js"],["./embed-xdftb0b2.js",8,21],["./embed-wd4wcxtq.js",8],["./transformers.web-nr67a9j3.js",8],["./openai-compatible-vqp1sqdg.js",9,21],["./index-r7h9ewgp.js",11],["./browser-t87kf8t0.js"],["./openai-t1hcmmxm.js",9,8,21],["./anthropic-p21yv83k.js",9,22,21],["./google-df5pjzyw.js",9,22,21],["./mistral-0tm1pmab.js",9,21],["./embed-52n5pm9t.js"],["./embed-f7gzw56s.js",21]],0);
2
+ var X={open:"Ask a question",close:"Close",title:"Ask this site",greeting:"Hi! Ask me anything about this site. I answer from its pages and link to them.",placeholder:"Your question…",send:"Send",stop:"Stop",settings:"AI settings",back:"Back to chat",sources:"Sources",notFound:"Nothing on this site matched. Try other words?",thinking:"Looking through the site…",newChat:"New conversation",poweredBy:"Answers from this site's pages, by murmur",errorAuth:"The key was refused. Check it in the AI settings.",errorNetwork:"No answer from the AI provider: key refused or network down.",errorRate:"The AI provider is busy or rate-limited. Try again in a moment.",errorOther:"The answer failed:",retry:"Try again",setupTitle:"Connect an AI model",setupIntro:"Pick how this site answers you: a model that runs in your browser, or your own AI key, kept encrypted in your browser and sent only to the provider you pick.",provider:"Provider",model:"Model",apiKey:"API key",apiKeyHint:"Sent only to the provider, never to this site.",remember:"Remember on this device",local:"Local server (Ollama, LM Studio)",localHint:"The server must allow this site's origin (CORS).",endpoint:"Server URL",test:"Test",testing:"Testing…",testOk:"Connected.",testFail:"Connection failed:",save:"Save and chat",forget:"Forget my key",loadingCatalog:"Loading models…",catalogError:"Could not load the model list.",searchModels:"Search models",recommended:"Recommended",otherProviders:"Other providers",localOption:"Run a model in this browser",localOptionHint:"{name}, about {size} downloaded once, then kept in this browser. Needs WebGPU; nothing you type leaves your device.",localActive:"Running in this browser",orKey:"or connect a provider with your key",useKey:"Use an API key instead",localConsent:"This assistant can run entirely in your browser with {name}, an AI model of about {size}. It downloads once, then stays in this browser; your questions never leave your device.",localDownload:"Download and answer",localLoading:"Downloading the model…",localLoadingLabel:"Model download",localPreparing:"Preparing the model on your GPU…",localNoWebGPU:"This browser cannot run the model locally (no WebGPU). Try a recent Chrome, Edge or Safari, or use an API key.",localLoadFailed:"The model could not be loaded in this browser.",localNoWebGPUOnly:"This site answers with an AI model that runs in your browser, and this browser cannot run it (no WebGPU). Try a recent Chrome, Edge or Safari.",gigabytes:"GB",megabytes:"MB"},ce={open:"Poser une question",close:"Fermer",title:"Demandez au site",greeting:"Bonjour ! Posez-moi une question sur ce site. Je réponds à partir de ses pages, avec les liens.",placeholder:"Votre question…",send:"Envoyer",stop:"Arrêter",settings:"Réglages IA",back:"Retour au chat",sources:"Sources",notFound:"Rien sur ce site ne correspond. Essayez d'autres mots ?",thinking:"Je cherche dans le site…",newChat:"Nouvelle conversation",poweredBy:"Réponses tirées des pages de ce site, par murmur",errorAuth:"La clé a été refusée. Vérifiez-la dans les réglages IA.",errorNetwork:"Pas de réponse du fournisseur d'IA : clé refusée ou réseau coupé.",errorRate:"Le fournisseur d'IA est saturé ou limite les appels. Réessayez dans un instant.",errorOther:"La réponse a échoué :",retry:"Réessayer",setupTitle:"Connecter un modèle d'IA",setupIntro:"Choisissez comment ce site vous répond : un modèle qui tourne dans votre navigateur, ou votre propre clé d'IA, gardée chiffrée dans votre navigateur et envoyée seulement au fournisseur choisi.",provider:"Fournisseur",model:"Modèle",apiKey:"Clé API",apiKeyHint:"Envoyée uniquement au fournisseur, jamais à ce site.",remember:"Mémoriser sur cet appareil",local:"Serveur local (Ollama, LM Studio)",localHint:"Le serveur doit autoriser l'origine de ce site (CORS).",endpoint:"URL du serveur",test:"Tester",testing:"Test…",testOk:"Connecté.",testFail:"Échec de la connexion :",save:"Enregistrer et discuter",forget:"Oublier ma clé",loadingCatalog:"Chargement des modèles…",catalogError:"Impossible de charger la liste des modèles.",searchModels:"Chercher un modèle",recommended:"Recommandés",otherProviders:"Autres fournisseurs",localOption:"Faire tourner un modèle dans ce navigateur",localOptionHint:"{name}, environ {size} téléchargés une fois puis gardés dans ce navigateur. Nécessite WebGPU ; rien de ce que vous tapez ne quitte votre appareil.",localActive:"Modèle actif dans ce navigateur",orKey:"ou connectez un fournisseur avec votre clé",useKey:"Utiliser une clé API à la place",localConsent:"Cet assistant peut fonctionner entièrement dans votre navigateur avec {name}, un modèle d'IA d'environ {size}. Il se télécharge une fois puis reste dans ce navigateur ; vos questions ne quittent jamais votre appareil.",localDownload:"Télécharger et répondre",localLoading:"Téléchargement du modèle…",localLoadingLabel:"Téléchargement du modèle",localPreparing:"Préparation du modèle sur votre GPU…",localNoWebGPU:"Ce navigateur ne peut pas faire tourner le modèle en local (pas de WebGPU). Essayez un Chrome, Edge ou Safari récent, ou utilisez une clé API.",localLoadFailed:"Le modèle n'a pas pu être chargé dans ce navigateur.",localNoWebGPUOnly:"Ce site répond avec un modèle d'IA qui tourne dans votre navigateur, et ce navigateur ne peut pas le faire tourner (pas de WebGPU). Essayez un Chrome, Edge ou Safari récent.",gigabytes:"Go",megabytes:"Mo"},ee={en:X,fr:ce};function te(...e){for(let n of e){let o=n?.toLowerCase().split(/[-_]/)[0];if(o&&o in ee)return o}return"en"}function B(e,n={}){return{...ee[e]??X,...n}}var de={chat:'<path d="M4 6.5A2.5 2.5 0 0 1 6.5 4h11A2.5 2.5 0 0 1 20 6.5v7a2.5 2.5 0 0 1-2.5 2.5H10l-4.2 3.4c-.5.4-1.3 0-1.3-.6V6.5Z"/><path d="M8.5 9h7M8.5 12h4.5"/>',close:'<path d="M6 6l12 12M18 6 6 18"/>',send:'<path d="M12 19V5M6 11l6-6 6 6"/>',stop:'<rect x="7" y="7" width="10" height="10" rx="1.5"/>',settings:'<path d="M4 7h9M17 7h3M4 17h3M11 17h9"/><circle cx="15" cy="7" r="2"/><circle cx="9" cy="17" r="2"/>',reset:'<path d="M5 12a7 7 0 1 0 2.1-5"/><path d="M5 4.5V8h3.5"/>',back:'<path d="M14.5 6 8.5 12l6 6"/>',check:'<path d="m5.5 12.5 4 4 9-9"/>',key:'<circle cx="8" cy="15" r="3.5"/><path d="m10.5 12.5 8-8M16 7l2 2M14 9l1.5 1.5"/>'};function U(e,n){let o=e.createElement("template");return o.innerHTML=`<svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">${de[n]??""}</svg>`,o.content.firstElementChild}var pe=/^(https?:\/\/|\/|#|\.\/|mailto:)/i;function S(e,n,o,t){let s=/(`[^`]+`)|(\*\*[^*]+\*\*)|(\*[^*\s][^*]*\*|_[^_\s][^_]*_)|(\[[^\]]+\]\([^)\s]+\))|(\[\d{1,2}\])/g,i=0;for(let c of n.matchAll(s)){let u=c.index??0;if(u>i)t.appendChild(e.createTextNode(n.slice(i,u)));i=u+c[0].length;let d=c[0];if(c[1]){let a=e.createElement("code");a.textContent=d.slice(1,-1),t.appendChild(a)}else if(c[2]){let a=e.createElement("strong");S(e,d.slice(2,-2),o,a),t.appendChild(a)}else if(c[3]){let a=e.createElement("em");S(e,d.slice(1,-1),o,a),t.appendChild(a)}else if(c[4]){let a=d.indexOf("]("),l=d.slice(1,a),p=d.slice(a+2,-1);if(pe.test(p)){let m=e.createElement("a");if(m.href=p,m.textContent=l,/^https?:/i.test(p))m.target="_blank",m.rel="noopener noreferrer";t.appendChild(m)}else t.appendChild(e.createTextNode(l))}else{let a=o(Number(d.slice(1,-1))),l=a?/^[.,;:!?)»]+/.exec(n.slice(i))?.[0]:void 0;if(a&&l){let p=e.createElement("span");p.className="nowrap",p.append(a,e.createTextNode(l)),t.appendChild(p),i+=l.length}else t.appendChild(a??e.createTextNode(d))}}if(i<n.length)t.appendChild(e.createTextNode(n.slice(i)))}var ue=/^\s*\|?\s*:?-{3,}:?\s*(?:\|\s*:?-{3,}:?\s*)*\|?\s*$/;function ne(e,n){return/ {2,}$|\\$/.test(n)?e.createElement("br"):e.createTextNode(" ")}function oe(e){return e.trim().replace(/^\|/,"").replace(/\|$/,"").split("|").map((n)=>n.trim())}function W(e,n,o){let t=e.ownerDocument,s=t.createDocumentFragment(),i=n.replace(/\r\n?/g,`
3
3
  `).split(`
4
- `),a=[],p=null,l=()=>{if(!a.length)return;let d=t.createElement("p");a.forEach((u,m)=>{if(m)d.appendChild(ne(t,a[m-1]??""));S(t,u.trim(),o,d)}),s.appendChild(d),a=[]},c=()=>{p=null};for(let d=0;d<i.length;d++){let u=i[d]??"",m=/^(\s*)```/.exec(u);if(m){l();let h=m[1]?.length??0,g=h>=2&&p?p.lastElementChild:null;if(!g)c();let y=[];for(d++;d<i.length&&!/^\s*```/.test(i[d]??"");d++){let k=i[d]??"";y.push(k.startsWith(" ".repeat(h))?k.slice(h):k.trimStart())}let E=t.createElement("pre");E.tabIndex=0;let C=t.createElement("code");C.textContent=y.join(`
5
- `),E.appendChild(C),(g??s).appendChild(E);continue}if(/^\s*([-*_])(?:\s*\1){2,}\s*$/.test(u)){l(),c(),s.appendChild(t.createElement("hr"));continue}if(u.includes("|")&&ue.test(i[d+1]??"")){l(),c();let h=[oe(u)];for(d+=2;d<i.length&&(i[d]??"").includes("|");d++)h.push(oe(i[d]??""));d--;let g=t.createElement("div");g.className="table",g.tabIndex=0;let y=t.createElement("table");h.forEach((E,C)=>{let k=t.createElement("tr");for(let T of E){let A=t.createElement(C===0?"th":"td");S(t,T,o,A),k.appendChild(A)}y.appendChild(k)}),g.appendChild(y),s.appendChild(g);continue}let f=/^\s*>\s?(.*)$/.exec(u);if(f){l(),c();let h=[f[1]??""];for(;/^\s*>/.test(i[d+1]??"");d++)h.push((i[d+1]??"").replace(/^\s*>\s?/,""));let g=t.createElement("blockquote");W(g,h.join(`
6
- `),o),s.appendChild(g);continue}let v=/^\s*(?:([-*+])|(\d+)[.)])\s+(.*)$/.exec(u);if(v){l();let h=v[1]?"ul":"ol";if(!p||p.tagName.toLowerCase()!==h){if(p=t.createElement(h),h==="ol"&&v[2]&&v[2]!=="1")p.setAttribute("start",v[2]);s.appendChild(p)}let g=t.createElement("li");S(t,(v[3]??"").trimEnd(),o,g),p.appendChild(g);continue}let w=/^\s*#{1,6}\s+(.*)$/.exec(u);if(w){l(),c();let h=t.createElement("p"),g=t.createElement("strong");S(t,w[1]??"",o,g),h.appendChild(g),s.appendChild(h);continue}if(!u.trim()){l();let h=i.slice(d+1).find((y)=>y.trim())??"",g=p?.tagName.toLowerCase()==="ol"?/^\s*\d+[.)]\s+/:/^\s*[-*+]\s+/;if(!p||!g.test(h))c();continue}if(p&&/^\s{2,}\S/.test(u)){let h=p.lastElementChild;if(h){h.appendChild(ne(t,i[d-1]??"")),S(t,u.trim(),o,h);continue}}c(),a.push(u)}l(),e.replaceChildren(s)}var he={limit:4,budgetTokens:1500};class q{options;turns=[];engine=null;storePromise=null;historyKey;key;local={status:"idle"};localListeners=new Set;constructor(e){this.options=e;this.key=e.storageKey??"murmur",this.historyKey=`${e.storageKey??"murmur"}-chat:${location.pathname.split("/")[1]??""}`;try{let n=sessionStorage.getItem(this.historyKey);if(n)this.turns=JSON.parse(n)}catch{this.turns=[]}}get configured(){return this.options.mode??"auto"}get mode(){let e=this.configured;if(this.options.model)return"custom";if(e==="proxy"||e==="auto"&&this.options.llm?.endpoint)return"proxy";if(e==="local")return"local";if(e==="key"||!this.localAllowed)return"visitor";return F(`${this.key}-local`)==="0"?"visitor":"local"}get localAllowed(){let e=this.configured;if(this.options.model||e==="proxy"||e==="key")return!1;if(e==="local")return!0;return!this.options.llm?.endpoint&&this.options.local!==!1}get keyAllowed(){let e=this.configured;if(this.options.model||e==="proxy"||e==="local")return!1;return!this.options.llm?.endpoint}get localState(){return this.local}onLocalState(e){return this.localListeners.add(e),()=>this.localListeners.delete(e)}setLocal(e){this.local=e;for(let n of this.localListeners)n(e)}async warmUp(){if(this.mode!=="local"||this.local.status!=="idle")return;if(!await this.canRunLocally())return;let{loadLocalModel:e}=await (N("f5ctpc4w"),import("./index-f5ctpc4w.js"));this.setLocal({status:"loading"});try{await e(await this.localSpec(),(n)=>this.setLocal({status:"loading",progress:n})),this.setLocal({status:"ready"})}catch{this.setLocal({status:"error"})}}async warmUpIfCached(){if(this.mode!=="local"||this.preload==="consent")return;let{isLocalModelCached:e}=await (N("f5ctpc4w"),import("./index-f5ctpc4w.js"));if(await e(await this.localSpec()))await this.warmUp()}get preload(){return this.options.preload??"question"}async settleChoice(){if(!this.localAllowed||!this.keyAllowed||F(`${this.key}-local`)!==null)return;let[{isConfigured:e},n]=await Promise.all([(N("q38abctd"),import("./index-q38abctd.js")),this.store()]),o=await n.load();if(o&&e(o))G(`${this.key}-local`,"0")}async localSpec(){let{local:e}=this.options;if(e&&typeof e==="object")return e;return(await (N("f5ctpc4w"),import("./index-f5ctpc4w.js"))).DEFAULT_LOCAL_MODEL}useLocal(e){G(`${this.key}-local`,e?"1":"0"),this.engine=null}get needsDownloadConsent(){return this.mode==="local"&&this.preload==="consent"&&this.local.status!=="ready"&&F(`${this.key}-local-consent`)!=="1"}agreeToDownload(){G(`${this.key}-local-consent`,"1")}persist(){try{sessionStorage.setItem(this.historyKey,JSON.stringify(this.turns.slice(-30)))}catch{}}clear(){this.turns=[],this.persist()}store(){return this.storePromise??=(N("q38abctd"),import("./index-q38abctd.js")).then((e)=>{let n={};if(this.options.catalogUrl)n.catalogUrl=this.options.catalogUrl;if(this.options.storageKey)n.storageKey=this.options.storageKey;return e.visitorStore(this.options.llm??{},n)}),this.storePromise}async settings(){let e=this.mode;if(e==="custom"||e==="local")return null;let n=await (N("q38abctd"),import("./index-q38abctd.js")),o=this.options.llm??{};if(e==="proxy")return n.proxySettings(o);return n.resolveSettings({...o,endpoint:""},await this.store())}async needsSetup(){return this.mode==="visitor"&&!await this.settings()}async canRunLocally(){return(await (N("f5ctpc4w"),import("./index-f5ctpc4w.js"))).hasWebGPU()}async loadIndex(){let{index:e}=this.options;if(e&&typeof e!=="string")return e;let{isMurmurIndex:n}=await (N("nhd6pd73"),import("./chunk-nhd6pd73.js"));if(e){let t=await fetch(new URL(e,location.href));if(!t.ok)throw Error(`murmur: index ${t.status}`);let s=await t.json();if(!n(s))throw Error("murmur: not a murmur index");return s}let{indexDocument:o}=await (N("tjxzgn54"),import("./index-tjxzgn54.js"));return o(document,location.pathname+location.search)}createEngine(){return(async()=>{let[{createMurmur:e},n]=await Promise.all([(N("yjgc7apa"),import("./murmur-yjgc7apa.js")),this.options.retriever??(N("3yz0vzz9"),import("./retriever-3yz0vzz9.js")).then(async(i)=>i.bm25Retriever(await this.loadIndex()))]),o=this.mode==="local",t=this.options.model??(o?async()=>{let{localModel:i}=await (N("f5ctpc4w"),import("./index-f5ctpc4w.js"));return i({spec:await this.localSpec(),onProgress:(a)=>this.setLocal({status:"loading",progress:a})})}:async()=>{let i=await this.settings();if(!i)throw new H;let{loadModel:a}=await (N("q38abctd"),import("./index-q38abctd.js"));return a(i)}),s={retriever:n,model:t,...o?he:{}};if(this.options.instructions)s.instructions=this.options.instructions;if(this.options.lang)s.language=this.options.lang;return e(s)})()}async ask(e,n,o){let t=this.turns.filter((i)=>!i.error).map(({role:i,content:a})=>({role:i,content:a}));this.turns.push({role:"user",content:e});let s={role:"assistant",content:""};this.turns.push(s),this.persist();try{if(this.mode==="local")this.warmUp();this.engine??=this.createEngine();let a=await(await this.engine.catch((l)=>{throw this.engine=null,l})).ask(e,{history:t,signal:o});s.passages=a.passages.map(({url:l,anchor:c,title:d,heading:u})=>({url:l,anchor:c,title:d,heading:u}));for await(let l of a.textStream)s.content+=l,n(s.content,s);let p=await a.done;if(this.mode==="local")this.setLocal({status:"ready"});s.content=p.text,s.cited=p.cited}catch(i){if(o.aborted)s.cited=[];else if(i instanceof H)throw this.turns.splice(-2,2),i;else s.error=await this.describe(i)}finally{this.persist()}return s}async describe(e){if(e instanceof Error&&e.name==="LocalModelError")return`local-${e.code??"load"}|${e.message}`;try{let{describeError:n}=await (N("q38abctd"),import("./index-q38abctd.js")),o=this.mode==="custom"||this.mode==="local"?null:await this.settings(),t=n(e,o?.apiKey);return`${t.code}|${t.message}`}catch{return`unknown|${e instanceof Error?e.message:String(e)}`}}}function F(e){try{return localStorage.getItem(e)}catch{return null}}function G(e,n){try{if(n===null)localStorage.removeItem(e);else localStorage.setItem(e,n)}catch{}}class H extends Error{constructor(){super("murmur: no model set up")}}var se=`
4
+ `),c=[],u=null,d=()=>{if(!c.length)return;let l=t.createElement("p");c.forEach((p,m)=>{if(m)l.appendChild(ne(t,c[m-1]??""));S(t,p.trim(),o,l)}),s.appendChild(l),c=[]},a=()=>{u=null};for(let l=0;l<i.length;l++){let p=i[l]??"",m=/^(\s*)```/.exec(p);if(m){d();let h=m[1]?.length??0,g=h>=2&&u?u.lastElementChild:null;if(!g)a();let y=[];for(l++;l<i.length&&!/^\s*```/.test(i[l]??"");l++){let k=i[l]??"";y.push(k.startsWith(" ".repeat(h))?k.slice(h):k.trimStart())}let E=t.createElement("pre");E.tabIndex=0;let C=t.createElement("code");C.textContent=y.join(`
5
+ `),E.appendChild(C),(g??s).appendChild(E);continue}if(/^\s*([-*_])(?:\s*\1){2,}\s*$/.test(p)){d(),a(),s.appendChild(t.createElement("hr"));continue}if(p.includes("|")&&ue.test(i[l+1]??"")){d(),a();let h=[oe(p)];for(l+=2;l<i.length&&(i[l]??"").includes("|");l++)h.push(oe(i[l]??""));l--;let g=t.createElement("div");g.className="table",g.tabIndex=0;let y=t.createElement("table");h.forEach((E,C)=>{let k=t.createElement("tr");for(let T of E){let A=t.createElement(C===0?"th":"td");S(t,T,o,A),k.appendChild(A)}y.appendChild(k)}),g.appendChild(y),s.appendChild(g);continue}let f=/^\s*>\s?(.*)$/.exec(p);if(f){d(),a();let h=[f[1]??""];for(;/^\s*>/.test(i[l+1]??"");l++)h.push((i[l+1]??"").replace(/^\s*>\s?/,""));let g=t.createElement("blockquote");W(g,h.join(`
6
+ `),o),s.appendChild(g);continue}let v=/^\s*(?:([-*+])|(\d+)[.)])\s+(.*)$/.exec(p);if(v){d();let h=v[1]?"ul":"ol";if(!u||u.tagName.toLowerCase()!==h){if(u=t.createElement(h),h==="ol"&&v[2]&&v[2]!=="1")u.setAttribute("start",v[2]);s.appendChild(u)}let g=t.createElement("li");S(t,(v[3]??"").trimEnd(),o,g),u.appendChild(g);continue}let w=/^\s*#{1,6}\s+(.*)$/.exec(p);if(w){d(),a();let h=t.createElement("p"),g=t.createElement("strong");S(t,w[1]??"",o,g),h.appendChild(g),s.appendChild(h);continue}if(!p.trim()){d();let h=i.slice(l+1).find((y)=>y.trim())??"",g=u?.tagName.toLowerCase()==="ol"?/^\s*\d+[.)]\s+/:/^\s*[-*+]\s+/;if(!u||!g.test(h))a();continue}if(u&&/^\s{2,}\S/.test(p)){let h=u.lastElementChild;if(h){h.appendChild(ne(t,i[l-1]??"")),S(t,p.trim(),o,h);continue}}a(),c.push(p)}d(),e.replaceChildren(s)}var he={limit:4,budgetTokens:1500};class q{options;turns=[];engine=null;storePromise=null;historyKey;key;local={status:"idle"};localListeners=new Set;constructor(e){this.options=e;this.key=e.storageKey??"murmur",this.historyKey=`${e.storageKey??"murmur"}-chat:${location.pathname.split("/")[1]??""}`;try{let n=sessionStorage.getItem(this.historyKey);if(n)this.turns=JSON.parse(n)}catch{this.turns=[]}}get configured(){return this.options.mode??"auto"}get mode(){let e=this.configured;if(this.options.model)return"custom";if(e==="proxy"||e==="auto"&&this.options.llm?.endpoint)return"proxy";if(e==="local")return"local";if(e==="key"||!this.localAllowed)return"visitor";return F(`${this.key}-local`)==="0"?"visitor":"local"}get localAllowed(){let e=this.configured;if(this.options.model||e==="proxy"||e==="key")return!1;if(e==="local")return!0;return!this.options.llm?.endpoint&&this.options.local!==!1}get keyAllowed(){let e=this.configured;if(this.options.model||e==="proxy"||e==="local")return!1;return!this.options.llm?.endpoint}get localState(){return this.local}onLocalState(e){return this.localListeners.add(e),()=>this.localListeners.delete(e)}setLocal(e){this.local=e;for(let n of this.localListeners)n(e)}async warmUp(){if(this.mode!=="local"||this.local.status!=="idle")return;if(!await this.canRunLocally())return;let{loadLocalModel:e}=await (N("f5ctpc4w"),import("./index-f5ctpc4w.js"));this.setLocal({status:"loading"});try{await e(await this.localSpec(),(n)=>this.setLocal({status:"loading",progress:n})),this.setLocal({status:"ready"})}catch{this.setLocal({status:"error"})}}async warmUpIfCached(){if(this.mode!=="local"||this.preload==="consent")return;let{isLocalModelCached:e}=await (N("f5ctpc4w"),import("./index-f5ctpc4w.js"));if(await e(await this.localSpec()))await this.warmUp()}get preload(){return this.options.preload??"question"}async settleChoice(){if(!this.localAllowed||!this.keyAllowed||F(`${this.key}-local`)!==null)return;let[{isConfigured:e},n]=await Promise.all([(N("0yvq5pe3"),import("./index-0yvq5pe3.js")),this.store()]),o=await n.load();if(o&&e(o))G(`${this.key}-local`,"0")}async localSpec(){let{local:e}=this.options;if(e&&typeof e==="object")return e;return(await (N("f5ctpc4w"),import("./index-f5ctpc4w.js"))).DEFAULT_LOCAL_MODEL}useLocal(e){G(`${this.key}-local`,e?"1":"0"),this.engine=null}get needsDownloadConsent(){return this.mode==="local"&&this.preload==="consent"&&this.local.status!=="ready"&&F(`${this.key}-local-consent`)!=="1"}agreeToDownload(){G(`${this.key}-local-consent`,"1")}persist(){try{sessionStorage.setItem(this.historyKey,JSON.stringify(this.turns.slice(-30)))}catch{}}clear(){this.turns=[],this.persist()}store(){return this.storePromise??=(N("0yvq5pe3"),import("./index-0yvq5pe3.js")).then((e)=>{let n={};if(this.options.catalogUrl)n.catalogUrl=this.options.catalogUrl;if(this.options.storageKey)n.storageKey=this.options.storageKey;return e.visitorStore(this.options.llm??{},n)}),this.storePromise}async settings(){let e=this.mode;if(e==="custom"||e==="local")return null;let n=await (N("0yvq5pe3"),import("./index-0yvq5pe3.js")),o=this.options.llm??{};if(e==="proxy")return n.proxySettings(o);return n.resolveSettings({...o,endpoint:""},await this.store())}async needsSetup(){return this.mode==="visitor"&&!await this.settings()}async canRunLocally(){return(await (N("f5ctpc4w"),import("./index-f5ctpc4w.js"))).hasWebGPU()}async loadIndex(){let{index:e}=this.options;if(e&&typeof e!=="string")return e;let{isMurmurIndex:n}=await (N("nhd6pd73"),import("./chunk-nhd6pd73.js"));if(e){let t=await fetch(new URL(e,location.href));if(!t.ok)throw Error(`murmur: index ${t.status}`);let s=await t.json();if(!n(s))throw Error("murmur: not a murmur index");return s}let{indexDocument:o}=await (N("tjxzgn54"),import("./index-tjxzgn54.js"));return o(document,location.pathname+location.search)}createEngine(){return(async()=>{let[{createMurmur:e},n]=await Promise.all([(N("krwan2e5"),import("./murmur-krwan2e5.js")),this.options.retriever??(N("3yz0vzz9"),import("./retriever-3yz0vzz9.js")).then(async(i)=>i.bm25Retriever(await this.loadIndex()))]),o=this.mode==="local",t=this.options.model??(o?async()=>{let{localModel:i}=await (N("f5ctpc4w"),import("./index-f5ctpc4w.js"));return i({spec:await this.localSpec(),onProgress:(c)=>this.setLocal({status:"loading",progress:c})})}:async()=>{let i=await this.settings();if(!i)throw new H;let{loadModel:c}=await (N("0yvq5pe3"),import("./index-0yvq5pe3.js"));return c(i)}),s={retriever:n,model:t,...o?he:{}};if(this.options.instructions)s.instructions=this.options.instructions;if(this.options.lang)s.language=this.options.lang;return e(s)})()}async ask(e,n,o){let t=this.turns.filter((i)=>!i.error).map(({role:i,content:c})=>({role:i,content:c}));this.turns.push({role:"user",content:e});let s={role:"assistant",content:""};this.turns.push(s),this.persist();try{if(this.mode==="local")this.warmUp();this.engine??=this.createEngine();let c=await(await this.engine.catch((d)=>{throw this.engine=null,d})).ask(e,{history:t,signal:o});s.passages=c.passages.map(({url:d,anchor:a,title:l,heading:p})=>({url:d,anchor:a,title:l,heading:p}));for await(let d of c.textStream)s.content+=d,n(s.content,s);let u=await c.done;if(this.mode==="local")this.setLocal({status:"ready"});s.content=u.text,s.cited=u.cited}catch(i){if(o.aborted)s.cited=[];else if(i instanceof H)throw this.turns.splice(-2,2),i;else s.error=await this.describe(i)}finally{this.persist()}return s}async describe(e){if(e instanceof Error&&e.name==="LocalModelError")return`local-${e.code??"load"}|${e.message}`;try{let{describeError:n}=await (N("0yvq5pe3"),import("./index-0yvq5pe3.js")),o=this.mode==="custom"||this.mode==="local"?null:await this.settings(),t=n(e,o?.apiKey);return`${t.code}|${t.message}`}catch{return`unknown|${e instanceof Error?e.message:String(e)}`}}}function F(e){try{return localStorage.getItem(e)}catch{return null}}function G(e,n){try{if(n===null)localStorage.removeItem(e);else localStorage.setItem(e,n)}catch{}}class H extends Error{constructor(){super("murmur: no model set up")}}var se=`
7
7
  :host {
8
8
  --accent: var(--murmur-accent, #211c17);
9
9
  --accent-ink: var(--murmur-accent-ink, #f6efe0);
@@ -124,6 +124,7 @@ header .icon-btn:focus-visible { outline-color: var(--accent-ink); }
124
124
  .bot { align-self: stretch; }
125
125
  .greeting { color: var(--muted); }
126
126
 
127
+ .nowrap { white-space: nowrap; }
127
128
  .cite {
128
129
  display: inline-grid; place-items: center; min-width: 1.45em; height: 1.45em; padding: 0 0.3em;
129
130
  margin: 0 0.1em; vertical-align: 0.12em;
@@ -220,4 +221,4 @@ progress::-moz-progress-bar { background: var(--lamp); }
220
221
  @media (prefers-reduced-motion: reduce) {
221
222
  *, .panel { animation: none !important; transition: none !important; }
222
223
  }
223
- `;var me={auth:"errorAuth","auth-or-network":"errorNetwork","rate-limit":"errorRate",overloaded:"errorRate","local-webgpu":"localNoWebGPU","local-load":"localLoadFailed"};function V(e,n,o){if(e>=1000)return`${(e/1000).toLocaleString(n,{maximumFractionDigits:1})} ${o.gigabytes}`;return`${Math.round(e).toLocaleString(n)} ${o.megabytes}`}var ge=typeof HTMLElement>"u"?class{}:HTMLElement;class Y extends ge{options={};session=null;t=B("en");uiLang="en";root;launcher;panel;log;chatView;setupView;input;sendBtn;settingsBtn;controller=null;built=!1;unsubscribe=null;unsubscribeLocal=null;loadbar;constructor(){super();this.root=this.attachShadow({mode:"open"})}configure(e){if(this.options={...this.options,...e},this.isConnected)this.build();return this}get isOpen(){return this.hasAttribute("inline")||this.launcher?.getAttribute("aria-expanded")==="true"}connectedCallback(){this.build()}disconnectedCallback(){this.controller?.abort(),this.unsubscribe?.(),this.unsubscribeLocal?.(),this.unsubscribeLocal?.()}async open(){if(!this.built)this.build();if(this.launcher.setAttribute("aria-expanded","true"),this.panel.hidden=!1,this.session?.preload==="open")this.session.warmUp();this.session?.persist(),j("set",this.openKey),this.input.focus()}close(){if(this.hasAttribute("inline"))return;this.launcher.setAttribute("aria-expanded","false"),this.panel.hidden=!0,j("remove",this.openKey),this.launcher.focus()}async ask(e){if(!this.isOpen)await this.open();this.input.value=e,await this.submit()}get openKey(){return`${this.options.storageKey??"murmur"}-open`}build(){let e=this.options,n=te(e.lang,document.documentElement.lang,navigator.language);this.uiLang=n;let o={...e.messages};if(this.t=B(n,o),e.position)this.setAttribute("position",e.position);if(e.theme&&e.theme!=="auto")this.setAttribute("theme",e.theme);if(e.accent)this.style.setProperty("--murmur-accent",e.accent);this.controller?.abort(),this.unsubscribe?.();let t=this.ownerDocument,s=t.createElement("style");s.textContent=se,this.launcher=r(t,"button",{class:"launcher",type:"button","aria-expanded":"false"}),this.launcher.setAttribute("aria-controls","murmur-panel"),this.launcher.append(r(t,"span",{class:"lamp","aria-hidden":"true"}),x(t,"span",this.t.open)),this.launcher.addEventListener("click",()=>void this.open()),this.panel=r(t,"section",{class:"panel",id:"murmur-panel",role:"dialog"}),this.panel.setAttribute("aria-label",this.t.title),this.panel.hidden=!this.hasAttribute("inline"),this.panel.addEventListener("keydown",(f)=>{if(f.key==="Escape")this.close()});let i=r(t,"header"),a=x(t,"h2",this.t.title),p=_(t,"reset",this.t.newChat);p.addEventListener("click",()=>{this.controller?.abort(),this.session?.clear(),this.renderChat(),this.input.focus()}),this.settingsBtn=_(t,"settings",this.t.settings),this.settingsBtn.hidden=!!e.model||!!e.llm?.endpoint,this.settingsBtn.addEventListener("click",()=>void this.showSetup());let l=_(t,"close",this.t.close);l.hidden=this.hasAttribute("inline"),l.addEventListener("click",()=>this.close()),i.append(a,p,this.settingsBtn,l),this.chatView=r(t,"div",{class:"chat"}),this.chatView.style.cssText="display:flex;flex-direction:column;flex:1;min-height:0",this.log=r(t,"div",{class:"log",role:"log","aria-live":"polite","aria-relevant":"additions"});let c=r(t,"form",{class:"composer"});this.input=r(t,"textarea",{rows:"1",placeholder:this.t.placeholder}),this.input.setAttribute("aria-label",this.t.placeholder),this.input.addEventListener("input",()=>this.autosize()),this.input.addEventListener("keydown",(f)=>{if(f.key==="Enter"&&!f.shiftKey&&!f.isComposing)f.preventDefault(),this.submit()}),this.sendBtn=r(t,"button",{class:"send",type:"submit"}),this.setSendMode("send"),c.addEventListener("submit",(f)=>{if(f.preventDefault(),this.controller)this.controller.abort();else this.submit()}),c.append(this.input,this.sendBtn),this.loadbar=r(t,"div",{class:"loadbar",role:"status"}),this.loadbar.hidden=!0;let d=r(t,"footer"),u=r(t,"a",{href:"https://maxgfr.github.io/murmur/",target:"_blank",rel:"noopener"});if(u.textContent=this.t.poweredBy,d.append(u),this.chatView.append(this.log,this.loadbar,c,d),this.setupView=r(t,"div",{class:"setup"}),this.setupView.hidden=!0,this.panel.append(i,this.chatView,this.setupView),this.root.replaceChildren(s,this.launcher,this.panel),this.hasAttribute("inline"))this.launcher.hidden=!0;this.built=!0;let m=new q({...e,lang:n});if(this.session=m,this.settingsBtn.hidden=!m.keyAllowed,this.unsubscribeLocal=m.onLocalState((f)=>this.drawLocal(f)),ve(()=>{if(m.preload==="idle")m.warmUp();else m.warmUpIfCached()}),this.renderChat(),e.open||!this.hasAttribute("inline")&&j("get",this.openKey))this.open()}drawLocal(e){let n=this.ownerDocument;if(this.launcher.querySelector(".lamp")?.classList.toggle("busy",e.status==="loading"),e.status!=="loading"){this.loadbar.hidden=!0;return}let t=e.progress,s=!t?this.t.localLoading:t.progress>=1?this.t.localPreparing:`${this.t.localLoading} ${Math.round(t.progress*100)} % · ${Math.round(t.loaded/1e6).toLocaleString(this.uiLang)} / ${V(t.total/1e6,this.uiLang,this.t)}`,i=r(n,"progress",{max:"1"});if(t&&t.progress<1)i.setAttribute("value",String(t.progress));i.setAttribute("aria-label",this.t.localLoadingLabel),this.loadbar.replaceChildren(x(n,"span",s),i),this.loadbar.hidden=!1}autosize(){this.input.style.height="auto",this.input.style.height=`${Math.min(this.input.scrollHeight,140)}px`}setSendMode(e){this.sendBtn.replaceChildren(U(this.ownerDocument,e)),this.sendBtn.setAttribute("aria-label",e==="send"?this.t.send:this.t.stop)}emit(e){this.dispatchEvent(new CustomEvent("murmur:state",{detail:e,bubbles:!0,composed:!0}))}renderChat(){let e=this.ownerDocument,n=this.session?.turns??[],o=[],t=r(e,"div",{class:"msg bot greeting"});t.append(x(e,"p",this.t.greeting)),o.push(t);for(let s of n)o.push(this.turnNode(s));this.log.replaceChildren(...o),this.log.scrollTop=this.log.scrollHeight}turnNode(e){let n=this.ownerDocument;if(e.role==="user"){let t=r(n,"div",{class:"msg user"});return t.textContent=e.content,t}let o=r(n,"div",{class:"msg bot"});return this.fillAnswer(o,e,!0),o}fillAnswer(e,n,o){let t=this.ownerDocument;if(n.error){let[u="unknown",...m]=n.error.split("|"),f=me[u],v=r(t,"div",{class:"error",role:"alert"});v.append(x(t,"p",f?this.t[f]:`${this.t.errorOther} ${m.join("|")}`));let w=r(t,"div",{class:"row"}),h=r(t,"button",{class:"text-btn",type:"button"});if(h.textContent=this.t.retry,h.addEventListener("click",()=>{let g=this.session?.turns??[],y=g.at(-2)?.content??"";if(g.splice(-2,2),this.renderChat(),y)this.ask(y)}),w.append(h),u==="auth"||u==="auth-or-network"){if(!this.settingsBtn.hidden){let g=r(t,"button",{class:"text-btn",type:"button"});g.textContent=this.t.settings,g.addEventListener("click",()=>void this.showSetup()),w.append(g)}}v.append(w),e.replaceChildren(v);return}let s=n.passages??[],i=Xe(n.content),a=et(i,s.length),p=(u)=>a.indexOf(u)+1,l=r(t,"div");W(l,i,(u)=>{let m=s[u-1];if(!m||!p(u))return null;let f=r(t,"a",{class:"cite",href:Ot(m)});return f.textContent=String(p(u)),f.setAttribute("aria-label",`${this.t.sources} ${p(u)}: ${m.title}`),f});let c=[l];if(o&&!n.content.trim()&&!s.length){let u=r(t,"p",{class:"status"});u.append(r(t,"span",{class:"lamp off","aria-hidden":"true"}),t.createTextNode(this.t.notFound)),c.push(u)}let d=a;if(o&&d.length){c.push(x(t,"p",this.t.sources,"sources-label"));let u=r(t,"ol",{class:"sources"});for(let m of d){let f=s[m-1];if(!f)continue;let v=r(t,"li"),w=r(t,"a",{href:Ot(f)}),h=x(t,"span",String(p(m)),"cite");h.setAttribute("aria-hidden","true");let g=r(t,"span",{class:"where"});if(g.append(t.createTextNode(f.title||f.url)),f.heading&&f.heading!==f.title)g.append(x(t,"span",` › ${f.heading}`));w.append(h,g),v.append(w),u.append(v)}c.push(u)}e.replaceChildren(...c)}async submit(){let e=this.input.value.trim();if(!e||this.controller||!this.session)return;if(await this.session.settleChoice(),this.session.needsDownloadConsent||this.session.mode==="local"&&!await this.session.canRunLocally()){await this.showConsent(e);return}if(await this.session.needsSetup()){await this.showSetup(e);return}let n=this.ownerDocument;this.input.value="",this.autosize(),this.log.append(this.turnNode({role:"user",content:e}));let o=r(n,"div",{class:"msg bot"}),t=r(n,"p",{class:"status"});t.append(r(n,"span",{class:"lamp busy","aria-hidden":"true"}),n.createTextNode(this.t.thinking)),o.append(t),this.log.append(o),this.log.scrollTop=this.log.scrollHeight,this.log.setAttribute("aria-busy","true");let s=new AbortController;this.controller=s,this.setSendMode("stop"),this.emit({state:"searching"});let i=!1;try{let a=await this.session.ask(e,(p,l)=>{if(!i)i=!0,this.emit({state:"streaming",passages:l.passages??[]});let c=this.log.scrollHeight-this.log.scrollTop-this.log.clientHeight<40;if(this.fillAnswer(o,l,!1),c)this.log.scrollTop=this.log.scrollHeight},s.signal);this.fillAnswer(o,a,!0),this.emit(a.error?{state:"error"}:{state:"done",passages:a.passages??[],cited:a.cited??[]})}catch(a){if(o.remove(),this.log.lastElementChild?.remove(),this.emit({state:"idle"}),a instanceof H)await this.showSetup(e);else throw a}finally{this.controller=null,this.setSendMode("send"),this.log.setAttribute("aria-busy","false"),this.log.scrollTop=this.log.scrollHeight}}async showConsent(e){if(!this.session)return;let n=this.ownerDocument,o=this.t,t=this.session,s=await t.localSpec(),i=r(n,"div",{class:"msg bot consent"}),a=r(n,"div",{class:"row"}),p=()=>{i.remove(),t.useLocal(!1),this.showSetup(e)};if(!await t.canRunLocally()){if(i.append(x(n,"p",t.keyAllowed?o.localNoWebGPU:o.localNoWebGPUOnly)),t.keyAllowed){let l=r(n,"button",{class:"primary",type:"button"});l.textContent=o.useKey,l.addEventListener("click",p),a.append(l)}}else{i.append(x(n,"p",o.localConsent.replace("{name}",s.name).replace("{size}",V(s.sizeMB,this.uiLang,o))));let l=r(n,"button",{class:"primary",type:"button"});if(l.textContent=o.localDownload,l.addEventListener("click",()=>{t.agreeToDownload(),i.remove(),this.input.value=e,this.submit()}),a.append(l),t.keyAllowed){let c=r(n,"button",{class:"link-btn",type:"button"});c.textContent=o.useKey,c.addEventListener("click",p),a.append(c)}}i.append(a),this.log.append(i),this.log.scrollTop=this.log.scrollHeight,a.querySelector("button")?.focus()}async showSetup(e){if(!this.session)return;let n=this.ownerDocument,o=await this.session.store();await o.load(),o.open(),this.chatView.hidden=!0,this.setupView.hidden=!1;let t=this.t,s=r(n,"button",{class:"link-btn",type:"button"});s.textContent=t.back,s.addEventListener("click",()=>this.hideSetup());let i=x(n,"h3",t.setupTitle);i.style.cssText="margin:0;font-size:17px;font-weight:650";let a=x(n,"p",t.setupIntro,"intro"),p=this.session,l=await p.localSpec(),c=r(n,"div",{class:"local-choice"}),d=r(n,"button",{class:"primary",type:"button"});d.textContent=t.localOption;let u=x(n,"small",t.localOptionHint.replace("{name}",l.name).replace("{size}",V(l.sizeMB,this.uiLang,t)));c.append(d,u),d.addEventListener("click",()=>{if(p.useLocal(!0),this.hideSetup(),e)this.input.value=e,this.submit()});let m=r(n,"button",{class:"link-btn",type:"button"});if(m.textContent=t.useKey,m.addEventListener("click",()=>{p.useLocal(!1),d.textContent=t.localOption,d.disabled=!1,m.remove()}),p.mode==="local")d.textContent=t.localActive,d.disabled=!0,c.append(m);p.canRunLocally().then((b)=>{if(b)return;d.textContent=t.localOption,d.disabled=!0,u.textContent=t.localNoWebGPU,m.remove()});let f=x(n,"p",t.orKey,"or");c.hidden=f.hidden=!p.localAllowed;let v=ie(n,t.local),w=I(n,t.provider,r(n,"select")),h=w.control,g=I(n,t.model,r(n,"select")),y=g.control,E=I(n,t.endpoint,r(n,"input",{type:"url",inputmode:"url"}),t.localHint),C=E.control,k=I(n,t.model,r(n,"input",{type:"text",autocomplete:"off"})),T=k.control,A=r(n,"div",{class:"presets"});for(let b of["ollama","lmstudio"]){let L=r(n,"button",{class:"text-btn",type:"button"});L.textContent=b==="ollama"?"Ollama":"LM Studio",L.addEventListener("click",async()=>{let{ENDPOINT_PRESETS:M}=await (N("k0v6as0z"),import("./index-k0v6as0z.js"));o.applyPreset(M[b])}),A.append(L)}let Z=I(n,t.apiKey,r(n,"input",{type:"password",autocomplete:"off",spellcheck:"false"}),t.apiKeyHint),O=Z.control,R=ie(n,t.remember),P=r(n,"button",{class:"text-btn",type:"button"});P.textContent=t.test;let z=r(n,"p",{class:"result",role:"status"});z.style.margin="0";let K=r(n,"button",{class:"primary",type:"button"});K.textContent=t.save;let D=r(n,"button",{class:"link-btn",type:"button"});D.textContent=t.forget,v.input.addEventListener("change",()=>o.toggleCustom(v.input.checked)),h.addEventListener("change",()=>o.selectProvider(h.value)),y.addEventListener("change",()=>o.selectModel(y.value)),C.addEventListener("input",()=>o.setEndpoint(C.value)),T.addEventListener("input",()=>o.setCustomModel(T.value)),O.addEventListener("input",()=>o.setApiKey(O.value)),R.input.addEventListener("change",()=>o.setRememberKey(R.input.checked)),P.addEventListener("click",()=>void o.test()),K.addEventListener("click",async()=>{if(!(await o.save()).ok)return;if(p.useLocal(!1),this.hideSetup(),e)this.input.value=e,this.submit()}),D.addEventListener("click",()=>void o.clear());let Q=r(n,"div",{class:"row"});Q.append(P,z),this.setupView.replaceChildren(s,i,a,c,f,v.label,w.label,g.label,A,E.label,k.label,Z.label,R.label,Q,K,D);let le=(b)=>{let L=b.draft.custom;if(v.input.checked=L,w.label.hidden=L,g.label.hidden=L,A.hidden=!L,E.label.hidden=!L,k.label.hidden=!L,b.catalogStatus==="ready")fe(n,h,b,t),be(n,y,b);else h.replaceChildren(J(n,"",b.catalogStatus==="error"?t.catalogError:t.loadingCatalog)),y.replaceChildren();if(C!==this.root.activeElement)C.value=b.draft.customEndpoint;if(T!==this.root.activeElement)T.value=b.draft.customModel;if(O!==this.root.activeElement)O.value=b.apiKey;R.input.checked=b.draft.rememberKey,P.disabled=!b.canTest||b.testing,P.textContent=b.testing?t.testing:t.test,K.disabled=!b.canSave;let M=b.testResult;z.className=M?M.ok?"result ok":"result fail":"result",z.textContent=!M?"":M.ok?t.testOk:`${t.testFail} ${M.reason}${M.message?` (${M.message})`:""}`};this.unsubscribe?.(),this.unsubscribe=o.subscribe(le),this.setupView.scrollTop=0,s.focus()}hideSetup(){this.unsubscribe?.(),this.unsubscribe=null,this.setupView.hidden=!0,this.chatView.hidden=!1,this.input.focus()}}function fe(e,n,o,t){let s=[[t.recommended,o.providers.recommended],[t.otherProviders,o.providers.others]],i=`${o.draft.providerId}|${o.providers.recommended.length+o.providers.others.length}`;if(n.dataset.sig===i)return;n.dataset.sig=i,n.replaceChildren(...s.filter(([,a])=>a.length).map(([a,p])=>{let l=e.createElement("optgroup");return l.label=a,l.append(...p.map((c)=>J(e,c.id,c.name))),l})),n.value=o.draft.providerId}function be(e,n,o){let t=`${o.draft.providerId}|${o.draft.model}|${o.models.length}`;if(n.dataset.sig===t)return;n.dataset.sig=t;let s=o.recommendedModel?.id;n.replaceChildren(...o.models.map((i)=>J(e,i.id,i.id===s?`${i.name} ★`:i.name))),n.value=o.draft.model}function j(e,n){try{if(e==="set")sessionStorage.setItem(n,"1");else if(e==="remove")sessionStorage.removeItem(n);else return sessionStorage.getItem(n)!==null}catch{}return!1}function ve(e){let n=globalThis.requestIdleCallback;if(n)n(e,{timeout:4000});else setTimeout(e,1500)}function r(e,n,o={}){let t=e.createElement(n);for(let[s,i]of Object.entries(o))t.setAttribute(s,i);return t}function x(e,n,o,t){let s=e.createElement(n);if(s.textContent=o,t)s.className=t;return s}function J(e,n,o){let t=e.createElement("option");return t.value=n,t.textContent=o,t}function _(e,n,o){let t=r(e,"button",{class:"icon-btn",type:"button",title:o});return t.setAttribute("aria-label",o),t.append(U(e,n)),t}function I(e,n,o,t){let s=r(e,"label",{class:"field"});if(s.append(x(e,"span",n),o),t)s.append(x(e,"small",t));return{label:s,control:o}}function ie(e,n){let o=r(e,"label",{class:"check"}),t=r(e,"input",{type:"checkbox"});return o.append(t,e.createTextNode(n)),{label:o,input:t}}function xe(e="murmur-chat"){if(!customElements.get(e))customElements.define(e,class extends Y{});return customElements.get(e)}function re(e={}){xe();let{target:n,inline:o,...t}=e,s=document.createElement("murmur-chat");if(o)s.setAttribute("inline","");return s.configure(t),(n??document.body).append(s),s}function ye(e,n){let o={};if(e.index)o.index=new URL(e.index,n).href;let t={};if(e.provider)t.provider=e.provider;if(e.model)t.model=e.model;if(e.endpoint)t.endpoint=e.endpoint;if(e.apiKey&&typeof console<"u")console.error('murmur: data-api-key is ignored: a key in the page can be read by anyone. Keep it in a Worker (data-endpoint), run the model in the browser (data-mode="local"), or let visitors use their own key.');if(Object.keys(t).length)o.llm=t;if(e.instructions)o.instructions=e.instructions;if(e.lang)o.lang=e.lang;let s={};if(e.title)s.title=e.title;if(e.greeting)s.greeting=e.greeting;if(e.placeholder)s.placeholder=e.placeholder;if(e.button)s.open=e.button;if(Object.keys(s).length)o.messages=s;if(e.position==="bottom-left"||e.position==="bottom-right")o.position=e.position;if(e.theme==="light"||e.theme==="dark"||e.theme==="auto")o.theme=e.theme;if(e.accent)o.accent=e.accent;if(e.catalog)o.catalogUrl=new URL(e.catalog,n).href;if(e.storageKey)o.storageKey=e.storageKey;if(e.open==="true")o.open=!0;if(e.local==="false")o.local=!1;if(e.mode==="auto"||e.mode==="proxy"||e.mode==="local"||e.mode==="key")o.mode=e.mode;if(e.preload==="question"||e.preload==="open"||e.preload==="idle"||e.preload==="consent")o.preload=e.preload;return o}function ae(){let e=import.meta.url,n=[...document.querySelectorAll("script[src]")].find((t)=>t.src===e&&!t.dataset.murmurReady);if(n)n.dataset.murmurReady="true";let o=ye(n?.dataset??{},location.href);o.catalogUrl??=new URL("./models.json",e).href,re(o)}if(typeof document<"u"&&!document.querySelector("murmur-chat:not([inline])"))if(document.readyState==="loading")document.addEventListener("DOMContentLoaded",ae,{once:!0});else ae();export{ye as optionsFromDataset};
224
+ `;var me={auth:"errorAuth","auth-or-network":"errorNetwork","rate-limit":"errorRate",overloaded:"errorRate","local-webgpu":"localNoWebGPU","local-load":"localLoadFailed"};function V(e,n,o){if(e>=1000)return`${(e/1000).toLocaleString(n,{maximumFractionDigits:1})} ${o.gigabytes}`;return`${Math.round(e).toLocaleString(n)} ${o.megabytes}`}var ge=typeof HTMLElement>"u"?class{}:HTMLElement;class Y extends ge{options={};session=null;t=B("en");uiLang="en";root;launcher;panel;log;chatView;setupView;input;sendBtn;settingsBtn;controller=null;built=!1;unsubscribe=null;unsubscribeLocal=null;loadbar;constructor(){super();this.root=this.attachShadow({mode:"open"})}configure(e){if(this.options={...this.options,...e},this.isConnected)this.build();return this}get isOpen(){return this.hasAttribute("inline")||this.launcher?.getAttribute("aria-expanded")==="true"}connectedCallback(){this.build()}disconnectedCallback(){this.controller?.abort(),this.unsubscribe?.(),this.unsubscribeLocal?.(),this.unsubscribeLocal?.()}async open(){if(!this.built)this.build();if(this.launcher.setAttribute("aria-expanded","true"),this.panel.hidden=!1,this.session?.preload==="open")this.session.warmUp();this.session?.persist(),j("set",this.openKey),this.input.focus()}close(){if(this.hasAttribute("inline"))return;this.launcher.setAttribute("aria-expanded","false"),this.panel.hidden=!0,j("remove",this.openKey),this.launcher.focus()}async ask(e){if(!this.isOpen)await this.open();this.input.value=e,await this.submit()}get openKey(){return`${this.options.storageKey??"murmur"}-open`}build(){let e=this.options,n=te(e.lang,document.documentElement.lang,navigator.language);this.uiLang=n;let o={...e.messages};if(this.t=B(n,o),e.position)this.setAttribute("position",e.position);if(e.theme&&e.theme!=="auto")this.setAttribute("theme",e.theme);if(e.accent)this.style.setProperty("--murmur-accent",e.accent);this.controller?.abort(),this.unsubscribe?.();let t=this.ownerDocument,s=t.createElement("style");s.textContent=se,this.launcher=r(t,"button",{class:"launcher",type:"button","aria-expanded":"false"}),this.launcher.setAttribute("aria-controls","murmur-panel"),this.launcher.append(r(t,"span",{class:"lamp","aria-hidden":"true"}),x(t,"span",this.t.open)),this.launcher.addEventListener("click",()=>void this.open()),this.panel=r(t,"section",{class:"panel",id:"murmur-panel",role:"dialog"}),this.panel.setAttribute("aria-label",this.t.title),this.panel.hidden=!this.hasAttribute("inline"),this.panel.addEventListener("keydown",(f)=>{if(f.key==="Escape")this.close()});let i=r(t,"header"),c=x(t,"h2",this.t.title),u=_(t,"reset",this.t.newChat);u.addEventListener("click",()=>{this.controller?.abort(),this.session?.clear(),this.renderChat(),this.input.focus()}),this.settingsBtn=_(t,"settings",this.t.settings),this.settingsBtn.hidden=!!e.model||!!e.llm?.endpoint,this.settingsBtn.addEventListener("click",()=>void this.showSetup());let d=_(t,"close",this.t.close);d.hidden=this.hasAttribute("inline"),d.addEventListener("click",()=>this.close()),i.append(c,u,this.settingsBtn,d),this.chatView=r(t,"div",{class:"chat"}),this.chatView.style.cssText="display:flex;flex-direction:column;flex:1;min-height:0",this.log=r(t,"div",{class:"log",role:"log","aria-live":"polite","aria-relevant":"additions"});let a=r(t,"form",{class:"composer"});this.input=r(t,"textarea",{rows:"1",placeholder:this.t.placeholder}),this.input.setAttribute("aria-label",this.t.placeholder),this.input.addEventListener("input",()=>this.autosize()),this.input.addEventListener("keydown",(f)=>{if(f.key==="Enter"&&!f.shiftKey&&!f.isComposing)f.preventDefault(),this.submit()}),this.sendBtn=r(t,"button",{class:"send",type:"submit"}),this.setSendMode("send"),a.addEventListener("submit",(f)=>{if(f.preventDefault(),this.controller)this.controller.abort();else this.submit()}),a.append(this.input,this.sendBtn),this.loadbar=r(t,"div",{class:"loadbar",role:"status"}),this.loadbar.hidden=!0;let l=r(t,"footer"),p=r(t,"a",{href:"https://maxgfr.github.io/murmur/",target:"_blank",rel:"noopener"});if(p.textContent=this.t.poweredBy,l.append(p),this.chatView.append(this.log,this.loadbar,a,l),this.setupView=r(t,"div",{class:"setup"}),this.setupView.hidden=!0,this.panel.append(i,this.chatView,this.setupView),this.root.replaceChildren(s,this.launcher,this.panel),this.hasAttribute("inline"))this.launcher.hidden=!0;this.built=!0;let m=new q({...e,lang:n});if(this.session=m,this.settingsBtn.hidden=!m.keyAllowed,this.unsubscribeLocal=m.onLocalState((f)=>this.drawLocal(f)),ve(()=>{if(m.preload==="idle")m.warmUp();else m.warmUpIfCached()}),this.renderChat(),e.open||!this.hasAttribute("inline")&&j("get",this.openKey))this.open()}drawLocal(e){let n=this.ownerDocument;if(this.launcher.querySelector(".lamp")?.classList.toggle("busy",e.status==="loading"),e.status!=="loading"){this.loadbar.hidden=!0;return}let t=e.progress,s=!t?this.t.localLoading:t.progress>=1?this.t.localPreparing:`${this.t.localLoading} ${Math.round(t.progress*100)} % · ${Math.round(t.loaded/1e6).toLocaleString(this.uiLang)} / ${V(t.total/1e6,this.uiLang,this.t)}`,i=r(n,"progress",{max:"1"});if(t&&t.progress<1)i.setAttribute("value",String(t.progress));i.setAttribute("aria-label",this.t.localLoadingLabel),this.loadbar.replaceChildren(x(n,"span",s),i),this.loadbar.hidden=!1}autosize(){this.input.style.height="auto",this.input.style.height=`${Math.min(this.input.scrollHeight,140)}px`}setSendMode(e){this.sendBtn.replaceChildren(U(this.ownerDocument,e)),this.sendBtn.setAttribute("aria-label",e==="send"?this.t.send:this.t.stop)}emit(e){this.dispatchEvent(new CustomEvent("murmur:state",{detail:e,bubbles:!0,composed:!0}))}renderChat(){let e=this.ownerDocument,n=this.session?.turns??[],o=[],t=r(e,"div",{class:"msg bot greeting"});t.append(x(e,"p",this.t.greeting)),o.push(t);for(let s of n)o.push(this.turnNode(s));this.log.replaceChildren(...o),this.log.scrollTop=this.log.scrollHeight}turnNode(e){let n=this.ownerDocument;if(e.role==="user"){let t=r(n,"div",{class:"msg user"});return t.textContent=e.content,t}let o=r(n,"div",{class:"msg bot"});return this.fillAnswer(o,e,!0),o}fillAnswer(e,n,o){let t=this.ownerDocument;if(n.error){let[p="unknown",...m]=n.error.split("|"),f=me[p],v=r(t,"div",{class:"error",role:"alert"});v.append(x(t,"p",f?this.t[f]:`${this.t.errorOther} ${m.join("|")}`));let w=r(t,"div",{class:"row"}),h=r(t,"button",{class:"text-btn",type:"button"});if(h.textContent=this.t.retry,h.addEventListener("click",()=>{let g=this.session?.turns??[],y=g.at(-2)?.content??"";if(g.splice(-2,2),this.renderChat(),y)this.ask(y)}),w.append(h),p==="auth"||p==="auth-or-network"){if(!this.settingsBtn.hidden){let g=r(t,"button",{class:"text-btn",type:"button"});g.textContent=this.t.settings,g.addEventListener("click",()=>void this.showSetup()),w.append(g)}}v.append(w),e.replaceChildren(v);return}let s=n.passages??[],i=Xe(n.content),c=et(i,s.length),u=(p)=>c.indexOf(p)+1,d=r(t,"div");W(d,i,(p)=>{let m=s[p-1];if(!m||!u(p))return null;let f=r(t,"a",{class:"cite",href:Ot(m)});return f.textContent=String(u(p)),f.setAttribute("aria-label",`${this.t.sources} ${u(p)}: ${m.title}`),f});let a=[d];if(o&&!n.content.trim()&&!s.length){let p=r(t,"p",{class:"status"});p.append(r(t,"span",{class:"lamp off","aria-hidden":"true"}),t.createTextNode(this.t.notFound)),a.push(p)}let l=c;if(o&&l.length){a.push(x(t,"p",this.t.sources,"sources-label"));let p=r(t,"ol",{class:"sources"});for(let m of l){let f=s[m-1];if(!f)continue;let v=r(t,"li"),w=r(t,"a",{href:Ot(f)}),h=x(t,"span",String(u(m)),"cite");h.setAttribute("aria-hidden","true");let g=r(t,"span",{class:"where"});if(g.append(t.createTextNode(f.title||f.url)),f.heading&&f.heading!==f.title)g.append(x(t,"span",` › ${f.heading}`));w.append(h,g),v.append(w),p.append(v)}a.push(p)}e.replaceChildren(...a)}async submit(){let e=this.input.value.trim();if(!e||this.controller||!this.session)return;if(await this.session.settleChoice(),this.session.needsDownloadConsent||this.session.mode==="local"&&!await this.session.canRunLocally()){await this.showConsent(e);return}if(await this.session.needsSetup()){await this.showSetup(e);return}let n=this.ownerDocument;this.input.value="",this.autosize(),this.log.append(this.turnNode({role:"user",content:e}));let o=r(n,"div",{class:"msg bot"}),t=r(n,"p",{class:"status"});t.append(r(n,"span",{class:"lamp busy","aria-hidden":"true"}),n.createTextNode(this.t.thinking)),o.append(t),this.log.append(o),this.log.scrollTop=this.log.scrollHeight,this.log.setAttribute("aria-busy","true");let s=new AbortController;this.controller=s,this.setSendMode("stop"),this.emit({state:"searching"});let i=!1;try{let c=await this.session.ask(e,(u,d)=>{if(!i)i=!0,this.emit({state:"streaming",passages:d.passages??[]});let a=this.log.scrollHeight-this.log.scrollTop-this.log.clientHeight<40;if(this.fillAnswer(o,d,!1),a)this.log.scrollTop=this.log.scrollHeight},s.signal);this.fillAnswer(o,c,!0),this.emit(c.error?{state:"error"}:{state:"done",passages:c.passages??[],cited:c.cited??[]})}catch(c){if(o.remove(),this.log.lastElementChild?.remove(),this.emit({state:"idle"}),c instanceof H)await this.showSetup(e);else throw c}finally{this.controller=null,this.setSendMode("send"),this.log.setAttribute("aria-busy","false"),this.log.scrollTop=this.log.scrollHeight}}async showConsent(e){if(!this.session)return;let n=this.ownerDocument,o=this.t,t=this.session,s=await t.localSpec(),i=r(n,"div",{class:"msg bot consent"}),c=r(n,"div",{class:"row"}),u=()=>{i.remove(),t.useLocal(!1),this.showSetup(e)};if(!await t.canRunLocally()){if(i.append(x(n,"p",t.keyAllowed?o.localNoWebGPU:o.localNoWebGPUOnly)),t.keyAllowed){let d=r(n,"button",{class:"primary",type:"button"});d.textContent=o.useKey,d.addEventListener("click",u),c.append(d)}}else{i.append(x(n,"p",o.localConsent.replace("{name}",s.name).replace("{size}",V(s.sizeMB,this.uiLang,o))));let d=r(n,"button",{class:"primary",type:"button"});if(d.textContent=o.localDownload,d.addEventListener("click",()=>{t.agreeToDownload(),i.remove(),this.input.value=e,this.submit()}),c.append(d),t.keyAllowed){let a=r(n,"button",{class:"link-btn",type:"button"});a.textContent=o.useKey,a.addEventListener("click",u),c.append(a)}}i.append(c),this.log.append(i),this.log.scrollTop=this.log.scrollHeight,c.querySelector("button")?.focus()}async showSetup(e){if(!this.session)return;let n=this.ownerDocument,o=await this.session.store();await o.load(),o.open(),this.chatView.hidden=!0,this.setupView.hidden=!1;let t=this.t,s=r(n,"button",{class:"link-btn",type:"button"});s.textContent=t.back,s.addEventListener("click",()=>this.hideSetup());let i=x(n,"h3",t.setupTitle);i.style.cssText="margin:0;font-size:17px;font-weight:650";let c=x(n,"p",t.setupIntro,"intro"),u=this.session,d=await u.localSpec(),a=r(n,"div",{class:"local-choice"}),l=r(n,"button",{class:"primary",type:"button"});l.textContent=t.localOption;let p=x(n,"small",t.localOptionHint.replace("{name}",d.name).replace("{size}",V(d.sizeMB,this.uiLang,t)));a.append(l,p),l.addEventListener("click",()=>{if(u.useLocal(!0),this.hideSetup(),e)this.input.value=e,this.submit()});let m=r(n,"button",{class:"link-btn",type:"button"});if(m.textContent=t.useKey,m.addEventListener("click",()=>{u.useLocal(!1),l.textContent=t.localOption,l.disabled=!1,m.remove()}),u.mode==="local")l.textContent=t.localActive,l.disabled=!0,a.append(m);u.canRunLocally().then((b)=>{if(b)return;l.textContent=t.localOption,l.disabled=!0,p.textContent=t.localNoWebGPU,m.remove()});let f=x(n,"p",t.orKey,"or");a.hidden=f.hidden=!u.localAllowed;let v=ie(n,t.local),w=I(n,t.provider,r(n,"select")),h=w.control,g=I(n,t.model,r(n,"select")),y=g.control,E=I(n,t.endpoint,r(n,"input",{type:"url",inputmode:"url"}),t.localHint),C=E.control,k=I(n,t.model,r(n,"input",{type:"text",autocomplete:"off"})),T=k.control,A=r(n,"div",{class:"presets"});for(let b of["ollama","lmstudio"]){let L=r(n,"button",{class:"text-btn",type:"button"});L.textContent=b==="ollama"?"Ollama":"LM Studio",L.addEventListener("click",async()=>{let{ENDPOINT_PRESETS:M}=await (N("arpy64fv"),import("./index-arpy64fv.js"));o.applyPreset(M[b])}),A.append(L)}let Z=I(n,t.apiKey,r(n,"input",{type:"password",autocomplete:"off",spellcheck:"false"}),t.apiKeyHint),O=Z.control,R=ie(n,t.remember),P=r(n,"button",{class:"text-btn",type:"button"});P.textContent=t.test;let z=r(n,"p",{class:"result",role:"status"});z.style.margin="0";let K=r(n,"button",{class:"primary",type:"button"});K.textContent=t.save;let D=r(n,"button",{class:"link-btn",type:"button"});D.textContent=t.forget,v.input.addEventListener("change",()=>o.toggleCustom(v.input.checked)),h.addEventListener("change",()=>o.selectProvider(h.value)),y.addEventListener("change",()=>o.selectModel(y.value)),C.addEventListener("input",()=>o.setEndpoint(C.value)),T.addEventListener("input",()=>o.setCustomModel(T.value)),O.addEventListener("input",()=>o.setApiKey(O.value)),R.input.addEventListener("change",()=>o.setRememberKey(R.input.checked)),P.addEventListener("click",()=>void o.test()),K.addEventListener("click",async()=>{if(!(await o.save()).ok)return;if(u.useLocal(!1),this.hideSetup(),e)this.input.value=e,this.submit()}),D.addEventListener("click",()=>void o.clear());let Q=r(n,"div",{class:"row"});Q.append(P,z),this.setupView.replaceChildren(s,i,c,a,f,v.label,w.label,g.label,A,E.label,k.label,Z.label,R.label,Q,K,D);let le=(b)=>{let L=b.draft.custom;if(v.input.checked=L,w.label.hidden=L,g.label.hidden=L,A.hidden=!L,E.label.hidden=!L,k.label.hidden=!L,b.catalogStatus==="ready")fe(n,h,b,t),be(n,y,b);else h.replaceChildren(J(n,"",b.catalogStatus==="error"?t.catalogError:t.loadingCatalog)),y.replaceChildren();if(C!==this.root.activeElement)C.value=b.draft.customEndpoint;if(T!==this.root.activeElement)T.value=b.draft.customModel;if(O!==this.root.activeElement)O.value=b.apiKey;R.input.checked=b.draft.rememberKey,P.disabled=!b.canTest||b.testing,P.textContent=b.testing?t.testing:t.test,K.disabled=!b.canSave;let M=b.testResult;z.className=M?M.ok?"result ok":"result fail":"result",z.textContent=!M?"":M.ok?t.testOk:`${t.testFail} ${M.reason}${M.message?` (${M.message})`:""}`};this.unsubscribe?.(),this.unsubscribe=o.subscribe(le),this.setupView.scrollTop=0,s.focus()}hideSetup(){this.unsubscribe?.(),this.unsubscribe=null,this.setupView.hidden=!0,this.chatView.hidden=!1,this.input.focus()}}function fe(e,n,o,t){let s=[[t.recommended,o.providers.recommended],[t.otherProviders,o.providers.others]],i=`${o.draft.providerId}|${o.providers.recommended.length+o.providers.others.length}`;if(n.dataset.sig===i)return;n.dataset.sig=i,n.replaceChildren(...s.filter(([,c])=>c.length).map(([c,u])=>{let d=e.createElement("optgroup");return d.label=c,d.append(...u.map((a)=>J(e,a.id,a.name))),d})),n.value=o.draft.providerId}function be(e,n,o){let t=`${o.draft.providerId}|${o.draft.model}|${o.models.length}`;if(n.dataset.sig===t)return;n.dataset.sig=t;let s=o.recommendedModel?.id;n.replaceChildren(...o.models.map((i)=>J(e,i.id,i.id===s?`${i.name} ★`:i.name))),n.value=o.draft.model}function j(e,n){try{if(e==="set")sessionStorage.setItem(n,"1");else if(e==="remove")sessionStorage.removeItem(n);else return sessionStorage.getItem(n)!==null}catch{}return!1}function ve(e){let n=globalThis.requestIdleCallback;if(n)n(e,{timeout:4000});else setTimeout(e,1500)}function r(e,n,o={}){let t=e.createElement(n);for(let[s,i]of Object.entries(o))t.setAttribute(s,i);return t}function x(e,n,o,t){let s=e.createElement(n);if(s.textContent=o,t)s.className=t;return s}function J(e,n,o){let t=e.createElement("option");return t.value=n,t.textContent=o,t}function _(e,n,o){let t=r(e,"button",{class:"icon-btn",type:"button",title:o});return t.setAttribute("aria-label",o),t.append(U(e,n)),t}function I(e,n,o,t){let s=r(e,"label",{class:"field"});if(s.append(x(e,"span",n),o),t)s.append(x(e,"small",t));return{label:s,control:o}}function ie(e,n){let o=r(e,"label",{class:"check"}),t=r(e,"input",{type:"checkbox"});return o.append(t,e.createTextNode(n)),{label:o,input:t}}function xe(e="murmur-chat"){if(!customElements.get(e))customElements.define(e,class extends Y{});return customElements.get(e)}function re(e={}){xe();let{target:n,inline:o,...t}=e,s=document.createElement("murmur-chat");if(o)s.setAttribute("inline","");return s.configure(t),(n??document.body).append(s),s}function ye(e,n){let o={};if(e.index)o.index=new URL(e.index,n).href;let t={};if(e.provider)t.provider=e.provider;if(e.model)t.model=e.model;if(e.endpoint)t.endpoint=e.endpoint;if(e.apiKey&&typeof console<"u")console.error('murmur: data-api-key is ignored: a key in the page can be read by anyone. Keep it in a Worker (data-endpoint), run the model in the browser (data-mode="local"), or let visitors use their own key.');if(Object.keys(t).length)o.llm=t;if(e.instructions)o.instructions=e.instructions;if(e.lang)o.lang=e.lang;let s={};if(e.title)s.title=e.title;if(e.greeting)s.greeting=e.greeting;if(e.placeholder)s.placeholder=e.placeholder;if(e.button)s.open=e.button;if(Object.keys(s).length)o.messages=s;if(e.position==="bottom-left"||e.position==="bottom-right")o.position=e.position;if(e.theme==="light"||e.theme==="dark"||e.theme==="auto")o.theme=e.theme;if(e.accent)o.accent=e.accent;if(e.catalog)o.catalogUrl=new URL(e.catalog,n).href;if(e.storageKey)o.storageKey=e.storageKey;if(e.open==="true")o.open=!0;if(e.local==="false")o.local=!1;if(e.mode==="auto"||e.mode==="proxy"||e.mode==="local"||e.mode==="key")o.mode=e.mode;if(e.preload==="question"||e.preload==="open"||e.preload==="idle"||e.preload==="consent")o.preload=e.preload;return o}function ae(){let e=import.meta.url,n=[...document.querySelectorAll("script[src]")].find((t)=>t.src===e&&!t.dataset.murmurReady);if(n)n.dataset.murmurReady="true";let o=ye(n?.dataset??{},location.href);o.catalogUrl??=new URL("./models.json",e).href,re(o)}if(typeof document<"u"&&!document.querySelector("murmur-chat:not([inline])"))if(document.readyState==="loading")document.addEventListener("DOMContentLoaded",ae,{once:!0});else ae();export{ye as optionsFromDataset};
@@ -1,4 +1,4 @@
1
- import{oe}from"./embed-s9zy3aav.js";import{ye,P,me,u,e,r,c,ie,o,t,U,l,y,i,n,k,T,d,j,M,st,ee,te,F,z,Me,C,R,W,a,s,h,g,ne,O,H,I,D,p,pt,an,E,Ce,Y}from"./embed-3swpcbya.js";function ce(m){return m.replace(/[_-]([a-z])/g,(f)=>f[1].toUpperCase())}function Ne(m,f){let b=ce(m);if(b!==m&&f?.[b]!=null)return b;return m}function be({rawName:m,providerOptions:f,warnings:b}){let _=ce(m);if(_!==m&&f?.[m]!=null)b.push({type:"deprecated",setting:`providerOptions key '${m}'`,message:`Use '${_}' instead.`})}var ge={errorSchema:t({error:t({message:e(),type:e().nullish(),param:ie().nullish(),code:l([e(),r()]).nullish()})}),errorToMessage:(m)=>m.error.message};function $e(m){if(m==null)return te();let f=m.prompt_tokens??0,b=m.completion_tokens??0,_=m.prompt_tokens_details?.cached_tokens??0,w=m.completion_tokens_details?.reasoning_tokens??0;return{inputTokens:{total:f,noCache:f-_,cacheRead:_,cacheWrite:void 0},outputTokens:{total:b,text:Math.max(0,b-w),reasoning:w},raw:m}}function he(m){return m?.providerOptions?.openaiCompatible??{}}function Le(m){switch(m){case"audio/wav":return"wav";case"audio/mp3":case"audio/mpeg":return"mp3";default:return null}}function Ae(m,f){let b=he(m);switch(m.type){case"text":return{type:"text",text:m.text,...b};case"file":switch(m.data.type){case"reference":return{type:"file",file:{file_id:H({reference:m.data.reference,provider:f})},...b};case"text":throw new u({functionality:"text file parts"});case"url":case"data":{let _=z(m.mediaType);if(_==="image")return{type:"image_url",image_url:{url:m.data.type==="url"?m.data.url.toString():`data:${O({part:m})};base64,${M(m.data.data)}`},...b};if(_==="video")return{type:"video_url",video_url:{url:m.data.type==="url"?m.data.url.toString():`data:${O({part:m})};base64,${M(m.data.data)}`},...b};if(_==="audio"){if(m.data.type==="url")throw new u({functionality:"audio file parts with URLs"});let w=O({part:m}),A=Le(w);if(A===null)throw new u({functionality:`audio media type ${w}`});return{type:"input_audio",input_audio:{data:M(m.data.data),format:A},...b}}if(_==="application"){if(m.data.type==="url")throw new u({functionality:"PDF file parts with URLs"});let w=O({part:m});if(w!=="application/pdf")throw new u({functionality:`file part media type ${w}`});return{type:"file",file:{filename:m.filename??"document.pdf",file_data:`data:application/pdf;base64,${M(m.data.data)}`},...b}}if(_==="text")return{type:"text",text:m.data.type==="url"?m.data.url.toString():typeof m.data.data==="string"?new TextDecoder().decode(j(m.data.data)):new TextDecoder().decode(m.data.data),...b};throw new u({functionality:`file part media type ${m.mediaType}`})}}}}function Be(m,f){if(m.type==="custom")throw new u({functionality:"custom tool content parts"});return Ae(m,f)}function Ke(m,{provider:f="openaiCompatible",providerOptionsKey:b="google",supportsMultiPartToolContent:_=!1}={}){let w=[];for(let{role:A,content:N,...L}of m){let K=he({...L});switch(A){case"system":w.push({role:"system",content:N,...K});break;case"user":if(N.length===1&&N[0].type==="text"){w.push({role:"user",content:N[0].text,...he(N[0])});break}w.push({role:"user",content:N.map((q)=>Ae(q,f)),...K});break;case"assistant":{let q="",x="",v=[];for(let S of N){let Z=he(S);switch(S.type){case"text":q+=S.text;break;case"reasoning":x+=S.text;break;case"tool-call":{let J=S.providerOptions?.[b]?.thoughtSignature??S.providerOptions?.google?.thoughtSignature;v.push({id:S.toolCallId,type:"function",function:{name:S.toolName,arguments:JSON.stringify(S.input)},...Z,...J?{extra_content:{google:{thought_signature:String(J)}}}:{}});break}}}w.push({role:"assistant",content:v.length>0?q||null:q,...x.length>0?{reasoning_content:x}:{},tool_calls:v.length>0?v:void 0,...K});break}case"tool":for(let q of N){if(q.type==="tool-approval-response")continue;let x=q.output,v;switch(x.type){case"text":case"error-text":v=x.value;break;case"execution-denied":v=x.reason??"Tool call execution denied.";break;case"json":case"error-json":v=JSON.stringify(x.value);break;case"content":v=_?x.value.map((Z)=>Be(Z,f)):JSON.stringify(x.value)}let S=he(q);w.push({role:"tool",tool_call_id:q.toolCallId,content:v,...S})}break;default:throw Error(`Unsupported role: ${A}`)}}return w}function we({id:m,model:f,created:b}){return ee({id:m,model:f,created:b||void 0})}function xe(m){switch(m){case"stop":return"stop";case"length":return"length";case"content_filter":return"content-filter";case"function_call":case"tool_calls":return"tool-calls";default:return"other"}}var pe=t({user:e().optional(),reasoningEffort:e().optional(),textVerbosity:e().optional(),strictJsonSchema:c().optional()});function Ve({tools:m,toolChoice:f}){m=m?.length?m:void 0;let b=[];if(m==null)return{tools:void 0,toolChoice:void 0,toolWarnings:b};let _=[];for(let A of m)if(A.type==="provider")b.push({type:"unsupported",feature:`provider-defined tool ${A.id}`});else _.push({type:"function",function:{name:A.name,description:A.description,parameters:A.inputSchema,...A.strict!=null?{strict:A.strict}:{}}});if(f==null)return{tools:_,toolChoice:void 0,toolWarnings:b};let w=f.type;switch(w){case"auto":case"none":case"required":return{tools:_,toolChoice:w,toolWarnings:b};case"tool":return{tools:_,toolChoice:{type:"function",function:{name:f.toolName}},toolWarnings:b};default:throw new u({functionality:`tool choice type: ${w}`})}}var Je=class m{static[k](f){return E({modelId:f.modelId,config:f.config})}static[T](f){return new m(f.modelId,f.config)}constructor(f,b){this.specificationVersion="v4",this.modelId=f,this.config=b;let _=b.errorStructure??ge;this.chunkSchema=We(_.errorSchema),this.failedResponseHandler=I(_),this.supportsStructuredOutputs=b.supportsStructuredOutputs??!1}get provider(){return this.config.provider}get providerOptionsName(){return this.config.provider.split(".")[0].trim()}get supportedUrls(){return this.config.supportedUrls?.()??{}}transformRequestBody(f,b){return this.config.transformRequestBody?.(f,b)??f}convertUsage(f){return this.config.convertUsage?.(f)??$e(f)}async getArgs({prompt:f,maxOutputTokens:b,temperature:_,topP:w,topK:A,frequencyPenalty:N,presencePenalty:L,reasoning:K,providerOptions:q,stopSequences:x,responseFormat:v,seed:S,toolChoice:Z,tools:J}){let G=[],se=await h({provider:"openai-compatible",providerOptions:q,schema:pe});if(se!=null)G.push({type:"deprecated",setting:"providerOptions key 'openai-compatible'",message:"Use 'openaiCompatible' instead."});be({rawName:this.providerOptionsName,providerOptions:q,warnings:G});let X=Object.assign(se??{},await h({provider:"openaiCompatible",providerOptions:q,schema:pe})??{},await h({provider:this.providerOptionsName,providerOptions:q,schema:pe})??{},await h({provider:ce(this.providerOptionsName),providerOptions:q,schema:pe})??{}),ae=X?.strictJsonSchema??!0;if(A!=null)G.push({type:"unsupported",feature:"topK"});if(v?.type==="json"&&v.schema!=null&&!this.supportsStructuredOutputs)G.push({type:"unsupported",feature:"responseFormat",details:"JSON response format schema is only supported with structuredOutputs"});let{tools:de,toolChoice:B,toolWarnings:V}=Ve({tools:J,toolChoice:Z}),Q=Ne(this.providerOptionsName,q);return{metadataKey:Q,args:{model:this.modelId,user:X.user,max_tokens:b,temperature:_,top_p:w,frequency_penalty:N,presence_penalty:L,response_format:v?.type==="json"?this.supportsStructuredOutputs===!0&&v.schema!=null?{type:"json_schema",json_schema:{schema:v.schema,strict:ae,name:v.name??"response",description:v.description}}:{type:"json_object"}:void 0,stop:x,seed:S,...Object.fromEntries(Object.entries({...q?.[this.providerOptionsName],...q?.[ce(this.providerOptionsName)]}).filter(([re])=>!Object.keys(pe.shape).includes(re))),reasoning_effort:X.reasoningEffort??(W(K)?K:void 0),verbosity:X.textVerbosity,messages:Ke(f,{provider:this.providerOptionsName,providerOptionsKey:Q,supportsMultiPartToolContent:this.config.supportsMultiPartToolContent}),tools:de,tool_choice:B},warnings:[...G,...V]}}async doGenerate(f){let{args:b,warnings:_,metadataKey:w}=await this.getArgs({...f}),A=this.transformRequestBody(b,_),N=JSON.stringify(A),{responseHeaders:L,value:K,rawValue:q}=await g({url:this.config.url({path:"/chat/completions",modelId:this.modelId}),headers:d(this.config.headers?.(),f.headers),body:A,failedResponseHandler:this.failedResponseHandler,successfulResponseHandler:p(De),abortSignal:f.abortSignal,fetch:this.config.fetch}),x=K.choices[0];if(x==null)throw new P({data:q,message:"Response did not contain any choices."});let v=[],S=x.message.reasoning_content??x.message.reasoning;if(S!=null&&S.length>0)v.push({type:"reasoning",text:S});if(v.push(...Ie(x.message.content)),x.message.tool_calls!=null)for(let G of x.message.tool_calls){let se=G.extra_content?.google?.thought_signature;v.push({type:"tool-call",toolCallId:G.id||C(),toolName:G.function.name,input:G.function.arguments,...se?{providerMetadata:{[w]:{thoughtSignature:se}}}:{}})}let Z={[w]:{},...await this.config.metadataExtractor?.extractMetadata?.({parsedBody:q})},J=K.usage?.completion_tokens_details;if(J?.accepted_prediction_tokens!=null)Z[w].acceptedPredictionTokens=J?.accepted_prediction_tokens;if(J?.rejected_prediction_tokens!=null)Z[w].rejectedPredictionTokens=J?.rejected_prediction_tokens;return{content:v,finishReason:{unified:xe(x.finish_reason),raw:x.finish_reason??void 0},usage:this.convertUsage(K.usage),providerMetadata:Z,request:{body:N},response:{...we(K),headers:L,body:q},warnings:_}}async doStream(f){let{args:b,warnings:_,metadataKey:w}=await this.getArgs({...f}),A=this.transformRequestBody({...b,stream:!0,stream_options:this.config.includeUsage?{include_usage:!0}:void 0},_),N=this.config.metadataExtractor?.createStreamExtractor(),{responseHeaders:L,value:K}=await g({url:this.config.url({path:"/chat/completions",modelId:this.modelId}),headers:d(this.config.headers?.(),f.headers),body:A,failedResponseHandler:this.failedResponseHandler,successfulResponseHandler:D(this.chunkSchema),abortSignal:f.abortSignal,fetch:this.config.fetch}),q=w,x,v=new Map,S=new Set,Z=(B)=>{let V=B.index;if(V==null||S.has(V)){x.processDelta(B);return}let Q=v.get(V);if(Q==null)Q={id:B.id??null,bufferedArguments:"",extraContent:B.extra_content??null},v.set(V,Q);else{if(Q.id==null&&B.id!=null)Q.id=B.id;if(Q.extraContent==null&&B.extra_content!=null)Q.extraContent=B.extra_content}let re=B.function?.arguments;if(re!=null)Q.bufferedArguments+=re;let ue=B.function?.name;if(ue!=null){let fe={index:V,id:Q.id,function:{name:ue,arguments:Q.bufferedArguments},extra_content:Q.extraContent??void 0};x.processDelta(fe),v.delete(V),S.add(V)}},J,G=void 0,se=!1,X=!1,ae=!1,de=(B)=>this.convertUsage(B);return{stream:K.pipeThrough(new TransformStream({start(B){x=new Ce(B,{generateId:C,extractMetadata:(V)=>{let Q=V.extra_content?.google?.thought_signature;return Q?{[q]:{thoughtSignature:Q}}:void 0},buildToolCallProviderMetadata:(V)=>V}),B.enqueue({type:"stream-start",warnings:_})},transform(B,V){if(f.includeRawChunks)V.enqueue({type:"raw",rawValue:B.rawValue});if(!B.success){J={unified:"error",raw:void 0},V.enqueue({type:"error",error:B.error});return}if(N?.processChunk(B.rawValue),"error"in B.value){J={unified:"error",raw:void 0},V.enqueue({type:"error",error:B.value.error});return}let Q=B.value;if(!se){let le=we(Q);if(Object.values(le).some(Boolean))se=!0,V.enqueue({type:"response-metadata",...le})}if(Q.usage!=null)G=Q.usage;let re=Q.choices[0];if(re?.finish_reason!=null)J={unified:xe(re.finish_reason),raw:re.finish_reason??void 0};if(re?.delta==null)return;let ue=re.delta,fe=(le)=>{if(ae)V.enqueue({type:"text-end",id:"txt-0"}),ae=!1;if(!X)V.enqueue({type:"reasoning-start",id:"reasoning-0"}),X=!0;V.enqueue({type:"reasoning-delta",id:"reasoning-0",delta:le})},Pe=(le)=>{if(X)V.enqueue({type:"reasoning-end",id:"reasoning-0"}),X=!1;if(!ae)V.enqueue({type:"text-start",id:"txt-0"}),ae=!0;V.enqueue({type:"text-delta",id:"txt-0",delta:le})},ve=ue.reasoning_content??ue.reasoning;if(ve)fe(ve);for(let le of Ie(ue.content))if(le.type==="reasoning")fe(le.text);else Pe(le.text);if(ue.tool_calls!=null&&ue.tool_calls.length>0){if(X)V.enqueue({type:"reasoning-end",id:"reasoning-0"}),X=!1;for(let le of ue.tool_calls)Z(le)}},flush(B){if(X)B.enqueue({type:"reasoning-end",id:"reasoning-0"});if(ae)B.enqueue({type:"text-end",id:"txt-0"});for(let[Q,re]of v)x.processDelta({index:Q,id:re.id,function:{arguments:re.bufferedArguments}});if(v.clear(),x.flush(),J==null)J={unified:"error",raw:void 0},B.enqueue({type:"error",error:new P({data:void 0,message:"Response stream ended without a finish reason."})});let V={[q]:{},...N?.buildMetadata()};if(G?.completion_tokens_details?.accepted_prediction_tokens!=null)V[q].acceptedPredictionTokens=G?.completion_tokens_details?.accepted_prediction_tokens;if(G?.completion_tokens_details?.rejected_prediction_tokens!=null)V[q].rejectedPredictionTokens=G?.completion_tokens_details?.rejected_prediction_tokens;B.enqueue({type:"finish",finishReason:J,usage:de(G),providerMetadata:V})}})),request:{body:A},response:{headers:L}}}},Ue=()=>U({prompt_tokens:r().nullish(),completion_tokens:r().nullish(),total_tokens:r().nullish(),prompt_tokens_details:U({cached_tokens:r().nullish()}).nullish(),completion_tokens_details:U({reasoning_tokens:r().nullish(),accepted_prediction_tokens:r().nullish(),rejected_prediction_tokens:r().nullish()}).nullish()}).nullish(),qe=()=>l([e(),o(U({type:e()}))]).nullish();function Ie(m){if(m==null)return[];if(typeof m==="string")return m.length>0?[{type:"text",text:m}]:[];let f=[];for(let b of m)if(b.type==="text"&&typeof b.text==="string"){if(b.text.length>0)f.push({type:"text",text:b.text})}else if(b.type==="thinking"&&Array.isArray(b.thinking)){let _=b.thinking.filter((w)=>w!=null&&typeof w==="object"&&("type"in w)&&w.type==="text"&&("text"in w)&&typeof w.text==="string").map((w)=>w.text).join("");if(_.length>0)f.push({type:"reasoning",text:_})}return f}var De=a(()=>s(U({id:e().nullish(),created:r().nullish(),model:e().nullish(),choices:o(t({message:t({role:n("assistant").nullish(),content:qe(),reasoning_content:e().nullish(),reasoning:e().nullish(),tool_calls:o(t({id:e().nullish(),function:t({name:e(),arguments:e()}),extra_content:t({google:t({thought_signature:e().nullish()}).nullish()}).nullish()})).nullish()}),finish_reason:e().nullish()})),usage:Ue()}))),Fe=()=>U({id:e().nullish(),created:r().nullish(),model:e().nullish(),choices:o(t({delta:t({role:i(["assistant",""]).nullish(),content:qe(),reasoning_content:e().nullish(),reasoning:e().nullish(),tool_calls:o(t({index:r().nullish(),id:e().nullish(),function:t({name:e().nullish(),arguments:e().nullish()}),extra_content:t({google:t({thought_signature:e().nullish()}).nullish()}).nullish()})).nullish()}).nullish(),finish_reason:e().nullish()})),usage:Ue()}),We=(m)=>l([Fe(),m]);function Oe(m){if(m==null)return te();let f=m.prompt_tokens??0,b=m.completion_tokens??0;return{inputTokens:{total:f,noCache:f,cacheRead:void 0,cacheWrite:void 0},outputTokens:{total:b,text:b,reasoning:void 0},raw:m}}function ze({prompt:m,user:f="user",assistant:b="assistant"}){let _="";if(m[0].role==="system")_+=`${m[0].content}
1
+ import{oe}from"./embed-3vb4wcng.js";import{ye,P,me,u,e,r,c,ie,o,t,U,l,y,i,n,k,T,d,j,M,st,ee,te,F,z,Me,C,R,W,a,s,h,g,ne,O,H,I,D,p,pt,an,E,Ce,Y}from"./embed-52n5pm9t.js";function ce(m){return m.replace(/[_-]([a-z])/g,(f)=>f[1].toUpperCase())}function Ne(m,f){let b=ce(m);if(b!==m&&f?.[b]!=null)return b;return m}function be({rawName:m,providerOptions:f,warnings:b}){let _=ce(m);if(_!==m&&f?.[m]!=null)b.push({type:"deprecated",setting:`providerOptions key '${m}'`,message:`Use '${_}' instead.`})}var ge={errorSchema:t({error:t({message:e(),type:e().nullish(),param:ie().nullish(),code:l([e(),r()]).nullish()})}),errorToMessage:(m)=>m.error.message};function $e(m){if(m==null)return te();let f=m.prompt_tokens??0,b=m.completion_tokens??0,_=m.prompt_tokens_details?.cached_tokens??0,w=m.completion_tokens_details?.reasoning_tokens??0;return{inputTokens:{total:f,noCache:f-_,cacheRead:_,cacheWrite:void 0},outputTokens:{total:b,text:Math.max(0,b-w),reasoning:w},raw:m}}function he(m){return m?.providerOptions?.openaiCompatible??{}}function Le(m){switch(m){case"audio/wav":return"wav";case"audio/mp3":case"audio/mpeg":return"mp3";default:return null}}function Ae(m,f){let b=he(m);switch(m.type){case"text":return{type:"text",text:m.text,...b};case"file":switch(m.data.type){case"reference":return{type:"file",file:{file_id:H({reference:m.data.reference,provider:f})},...b};case"text":throw new u({functionality:"text file parts"});case"url":case"data":{let _=z(m.mediaType);if(_==="image")return{type:"image_url",image_url:{url:m.data.type==="url"?m.data.url.toString():`data:${O({part:m})};base64,${M(m.data.data)}`},...b};if(_==="video")return{type:"video_url",video_url:{url:m.data.type==="url"?m.data.url.toString():`data:${O({part:m})};base64,${M(m.data.data)}`},...b};if(_==="audio"){if(m.data.type==="url")throw new u({functionality:"audio file parts with URLs"});let w=O({part:m}),A=Le(w);if(A===null)throw new u({functionality:`audio media type ${w}`});return{type:"input_audio",input_audio:{data:M(m.data.data),format:A},...b}}if(_==="application"){if(m.data.type==="url")throw new u({functionality:"PDF file parts with URLs"});let w=O({part:m});if(w!=="application/pdf")throw new u({functionality:`file part media type ${w}`});return{type:"file",file:{filename:m.filename??"document.pdf",file_data:`data:application/pdf;base64,${M(m.data.data)}`},...b}}if(_==="text")return{type:"text",text:m.data.type==="url"?m.data.url.toString():typeof m.data.data==="string"?new TextDecoder().decode(j(m.data.data)):new TextDecoder().decode(m.data.data),...b};throw new u({functionality:`file part media type ${m.mediaType}`})}}}}function Be(m,f){if(m.type==="custom")throw new u({functionality:"custom tool content parts"});return Ae(m,f)}function Ke(m,{provider:f="openaiCompatible",providerOptionsKey:b="google",supportsMultiPartToolContent:_=!1}={}){let w=[];for(let{role:A,content:N,...L}of m){let K=he({...L});switch(A){case"system":w.push({role:"system",content:N,...K});break;case"user":if(N.length===1&&N[0].type==="text"){w.push({role:"user",content:N[0].text,...he(N[0])});break}w.push({role:"user",content:N.map((q)=>Ae(q,f)),...K});break;case"assistant":{let q="",x="",v=[];for(let S of N){let Z=he(S);switch(S.type){case"text":q+=S.text;break;case"reasoning":x+=S.text;break;case"tool-call":{let J=S.providerOptions?.[b]?.thoughtSignature??S.providerOptions?.google?.thoughtSignature;v.push({id:S.toolCallId,type:"function",function:{name:S.toolName,arguments:JSON.stringify(S.input)},...Z,...J?{extra_content:{google:{thought_signature:String(J)}}}:{}});break}}}w.push({role:"assistant",content:v.length>0?q||null:q,...x.length>0?{reasoning_content:x}:{},tool_calls:v.length>0?v:void 0,...K});break}case"tool":for(let q of N){if(q.type==="tool-approval-response")continue;let x=q.output,v;switch(x.type){case"text":case"error-text":v=x.value;break;case"execution-denied":v=x.reason??"Tool call execution denied.";break;case"json":case"error-json":v=JSON.stringify(x.value);break;case"content":v=_?x.value.map((Z)=>Be(Z,f)):JSON.stringify(x.value)}let S=he(q);w.push({role:"tool",tool_call_id:q.toolCallId,content:v,...S})}break;default:throw Error(`Unsupported role: ${A}`)}}return w}function we({id:m,model:f,created:b}){return ee({id:m,model:f,created:b||void 0})}function xe(m){switch(m){case"stop":return"stop";case"length":return"length";case"content_filter":return"content-filter";case"function_call":case"tool_calls":return"tool-calls";default:return"other"}}var pe=t({user:e().optional(),reasoningEffort:e().optional(),textVerbosity:e().optional(),strictJsonSchema:c().optional()});function Ve({tools:m,toolChoice:f}){m=m?.length?m:void 0;let b=[];if(m==null)return{tools:void 0,toolChoice:void 0,toolWarnings:b};let _=[];for(let A of m)if(A.type==="provider")b.push({type:"unsupported",feature:`provider-defined tool ${A.id}`});else _.push({type:"function",function:{name:A.name,description:A.description,parameters:A.inputSchema,...A.strict!=null?{strict:A.strict}:{}}});if(f==null)return{tools:_,toolChoice:void 0,toolWarnings:b};let w=f.type;switch(w){case"auto":case"none":case"required":return{tools:_,toolChoice:w,toolWarnings:b};case"tool":return{tools:_,toolChoice:{type:"function",function:{name:f.toolName}},toolWarnings:b};default:throw new u({functionality:`tool choice type: ${w}`})}}var Je=class m{static[k](f){return E({modelId:f.modelId,config:f.config})}static[T](f){return new m(f.modelId,f.config)}constructor(f,b){this.specificationVersion="v4",this.modelId=f,this.config=b;let _=b.errorStructure??ge;this.chunkSchema=We(_.errorSchema),this.failedResponseHandler=I(_),this.supportsStructuredOutputs=b.supportsStructuredOutputs??!1}get provider(){return this.config.provider}get providerOptionsName(){return this.config.provider.split(".")[0].trim()}get supportedUrls(){return this.config.supportedUrls?.()??{}}transformRequestBody(f,b){return this.config.transformRequestBody?.(f,b)??f}convertUsage(f){return this.config.convertUsage?.(f)??$e(f)}async getArgs({prompt:f,maxOutputTokens:b,temperature:_,topP:w,topK:A,frequencyPenalty:N,presencePenalty:L,reasoning:K,providerOptions:q,stopSequences:x,responseFormat:v,seed:S,toolChoice:Z,tools:J}){let G=[],se=await h({provider:"openai-compatible",providerOptions:q,schema:pe});if(se!=null)G.push({type:"deprecated",setting:"providerOptions key 'openai-compatible'",message:"Use 'openaiCompatible' instead."});be({rawName:this.providerOptionsName,providerOptions:q,warnings:G});let X=Object.assign(se??{},await h({provider:"openaiCompatible",providerOptions:q,schema:pe})??{},await h({provider:this.providerOptionsName,providerOptions:q,schema:pe})??{},await h({provider:ce(this.providerOptionsName),providerOptions:q,schema:pe})??{}),ae=X?.strictJsonSchema??!0;if(A!=null)G.push({type:"unsupported",feature:"topK"});if(v?.type==="json"&&v.schema!=null&&!this.supportsStructuredOutputs)G.push({type:"unsupported",feature:"responseFormat",details:"JSON response format schema is only supported with structuredOutputs"});let{tools:de,toolChoice:B,toolWarnings:V}=Ve({tools:J,toolChoice:Z}),Q=Ne(this.providerOptionsName,q);return{metadataKey:Q,args:{model:this.modelId,user:X.user,max_tokens:b,temperature:_,top_p:w,frequency_penalty:N,presence_penalty:L,response_format:v?.type==="json"?this.supportsStructuredOutputs===!0&&v.schema!=null?{type:"json_schema",json_schema:{schema:v.schema,strict:ae,name:v.name??"response",description:v.description}}:{type:"json_object"}:void 0,stop:x,seed:S,...Object.fromEntries(Object.entries({...q?.[this.providerOptionsName],...q?.[ce(this.providerOptionsName)]}).filter(([re])=>!Object.keys(pe.shape).includes(re))),reasoning_effort:X.reasoningEffort??(W(K)?K:void 0),verbosity:X.textVerbosity,messages:Ke(f,{provider:this.providerOptionsName,providerOptionsKey:Q,supportsMultiPartToolContent:this.config.supportsMultiPartToolContent}),tools:de,tool_choice:B},warnings:[...G,...V]}}async doGenerate(f){let{args:b,warnings:_,metadataKey:w}=await this.getArgs({...f}),A=this.transformRequestBody(b,_),N=JSON.stringify(A),{responseHeaders:L,value:K,rawValue:q}=await g({url:this.config.url({path:"/chat/completions",modelId:this.modelId}),headers:d(this.config.headers?.(),f.headers),body:A,failedResponseHandler:this.failedResponseHandler,successfulResponseHandler:p(De),abortSignal:f.abortSignal,fetch:this.config.fetch}),x=K.choices[0];if(x==null)throw new P({data:q,message:"Response did not contain any choices."});let v=[],S=x.message.reasoning_content??x.message.reasoning;if(S!=null&&S.length>0)v.push({type:"reasoning",text:S});if(v.push(...Ie(x.message.content)),x.message.tool_calls!=null)for(let G of x.message.tool_calls){let se=G.extra_content?.google?.thought_signature;v.push({type:"tool-call",toolCallId:G.id||C(),toolName:G.function.name,input:G.function.arguments,...se?{providerMetadata:{[w]:{thoughtSignature:se}}}:{}})}let Z={[w]:{},...await this.config.metadataExtractor?.extractMetadata?.({parsedBody:q})},J=K.usage?.completion_tokens_details;if(J?.accepted_prediction_tokens!=null)Z[w].acceptedPredictionTokens=J?.accepted_prediction_tokens;if(J?.rejected_prediction_tokens!=null)Z[w].rejectedPredictionTokens=J?.rejected_prediction_tokens;return{content:v,finishReason:{unified:xe(x.finish_reason),raw:x.finish_reason??void 0},usage:this.convertUsage(K.usage),providerMetadata:Z,request:{body:N},response:{...we(K),headers:L,body:q},warnings:_}}async doStream(f){let{args:b,warnings:_,metadataKey:w}=await this.getArgs({...f}),A=this.transformRequestBody({...b,stream:!0,stream_options:this.config.includeUsage?{include_usage:!0}:void 0},_),N=this.config.metadataExtractor?.createStreamExtractor(),{responseHeaders:L,value:K}=await g({url:this.config.url({path:"/chat/completions",modelId:this.modelId}),headers:d(this.config.headers?.(),f.headers),body:A,failedResponseHandler:this.failedResponseHandler,successfulResponseHandler:D(this.chunkSchema),abortSignal:f.abortSignal,fetch:this.config.fetch}),q=w,x,v=new Map,S=new Set,Z=(B)=>{let V=B.index;if(V==null||S.has(V)){x.processDelta(B);return}let Q=v.get(V);if(Q==null)Q={id:B.id??null,bufferedArguments:"",extraContent:B.extra_content??null},v.set(V,Q);else{if(Q.id==null&&B.id!=null)Q.id=B.id;if(Q.extraContent==null&&B.extra_content!=null)Q.extraContent=B.extra_content}let re=B.function?.arguments;if(re!=null)Q.bufferedArguments+=re;let ue=B.function?.name;if(ue!=null){let fe={index:V,id:Q.id,function:{name:ue,arguments:Q.bufferedArguments},extra_content:Q.extraContent??void 0};x.processDelta(fe),v.delete(V),S.add(V)}},J,G=void 0,se=!1,X=!1,ae=!1,de=(B)=>this.convertUsage(B);return{stream:K.pipeThrough(new TransformStream({start(B){x=new Ce(B,{generateId:C,extractMetadata:(V)=>{let Q=V.extra_content?.google?.thought_signature;return Q?{[q]:{thoughtSignature:Q}}:void 0},buildToolCallProviderMetadata:(V)=>V}),B.enqueue({type:"stream-start",warnings:_})},transform(B,V){if(f.includeRawChunks)V.enqueue({type:"raw",rawValue:B.rawValue});if(!B.success){J={unified:"error",raw:void 0},V.enqueue({type:"error",error:B.error});return}if(N?.processChunk(B.rawValue),"error"in B.value){J={unified:"error",raw:void 0},V.enqueue({type:"error",error:B.value.error});return}let Q=B.value;if(!se){let le=we(Q);if(Object.values(le).some(Boolean))se=!0,V.enqueue({type:"response-metadata",...le})}if(Q.usage!=null)G=Q.usage;let re=Q.choices[0];if(re?.finish_reason!=null)J={unified:xe(re.finish_reason),raw:re.finish_reason??void 0};if(re?.delta==null)return;let ue=re.delta,fe=(le)=>{if(ae)V.enqueue({type:"text-end",id:"txt-0"}),ae=!1;if(!X)V.enqueue({type:"reasoning-start",id:"reasoning-0"}),X=!0;V.enqueue({type:"reasoning-delta",id:"reasoning-0",delta:le})},Pe=(le)=>{if(X)V.enqueue({type:"reasoning-end",id:"reasoning-0"}),X=!1;if(!ae)V.enqueue({type:"text-start",id:"txt-0"}),ae=!0;V.enqueue({type:"text-delta",id:"txt-0",delta:le})},ve=ue.reasoning_content??ue.reasoning;if(ve)fe(ve);for(let le of Ie(ue.content))if(le.type==="reasoning")fe(le.text);else Pe(le.text);if(ue.tool_calls!=null&&ue.tool_calls.length>0){if(X)V.enqueue({type:"reasoning-end",id:"reasoning-0"}),X=!1;for(let le of ue.tool_calls)Z(le)}},flush(B){if(X)B.enqueue({type:"reasoning-end",id:"reasoning-0"});if(ae)B.enqueue({type:"text-end",id:"txt-0"});for(let[Q,re]of v)x.processDelta({index:Q,id:re.id,function:{arguments:re.bufferedArguments}});if(v.clear(),x.flush(),J==null)J={unified:"error",raw:void 0},B.enqueue({type:"error",error:new P({data:void 0,message:"Response stream ended without a finish reason."})});let V={[q]:{},...N?.buildMetadata()};if(G?.completion_tokens_details?.accepted_prediction_tokens!=null)V[q].acceptedPredictionTokens=G?.completion_tokens_details?.accepted_prediction_tokens;if(G?.completion_tokens_details?.rejected_prediction_tokens!=null)V[q].rejectedPredictionTokens=G?.completion_tokens_details?.rejected_prediction_tokens;B.enqueue({type:"finish",finishReason:J,usage:de(G),providerMetadata:V})}})),request:{body:A},response:{headers:L}}}},Ue=()=>U({prompt_tokens:r().nullish(),completion_tokens:r().nullish(),total_tokens:r().nullish(),prompt_tokens_details:U({cached_tokens:r().nullish()}).nullish(),completion_tokens_details:U({reasoning_tokens:r().nullish(),accepted_prediction_tokens:r().nullish(),rejected_prediction_tokens:r().nullish()}).nullish()}).nullish(),qe=()=>l([e(),o(U({type:e()}))]).nullish();function Ie(m){if(m==null)return[];if(typeof m==="string")return m.length>0?[{type:"text",text:m}]:[];let f=[];for(let b of m)if(b.type==="text"&&typeof b.text==="string"){if(b.text.length>0)f.push({type:"text",text:b.text})}else if(b.type==="thinking"&&Array.isArray(b.thinking)){let _=b.thinking.filter((w)=>w!=null&&typeof w==="object"&&("type"in w)&&w.type==="text"&&("text"in w)&&typeof w.text==="string").map((w)=>w.text).join("");if(_.length>0)f.push({type:"reasoning",text:_})}return f}var De=a(()=>s(U({id:e().nullish(),created:r().nullish(),model:e().nullish(),choices:o(t({message:t({role:n("assistant").nullish(),content:qe(),reasoning_content:e().nullish(),reasoning:e().nullish(),tool_calls:o(t({id:e().nullish(),function:t({name:e(),arguments:e()}),extra_content:t({google:t({thought_signature:e().nullish()}).nullish()}).nullish()})).nullish()}),finish_reason:e().nullish()})),usage:Ue()}))),Fe=()=>U({id:e().nullish(),created:r().nullish(),model:e().nullish(),choices:o(t({delta:t({role:i(["assistant",""]).nullish(),content:qe(),reasoning_content:e().nullish(),reasoning:e().nullish(),tool_calls:o(t({index:r().nullish(),id:e().nullish(),function:t({name:e().nullish(),arguments:e().nullish()}),extra_content:t({google:t({thought_signature:e().nullish()}).nullish()}).nullish()})).nullish()}).nullish(),finish_reason:e().nullish()})),usage:Ue()}),We=(m)=>l([Fe(),m]);function Oe(m){if(m==null)return te();let f=m.prompt_tokens??0,b=m.completion_tokens??0;return{inputTokens:{total:f,noCache:f,cacheRead:void 0,cacheWrite:void 0},outputTokens:{total:b,text:b,reasoning:void 0},raw:m}}function ze({prompt:m,user:f="user",assistant:b="assistant"}){let _="";if(m[0].role==="system")_+=`${m[0].content}
2
2
 
3
3
  `,m=m.slice(1);for(let{role:w,content:A}of m)switch(w){case"system":throw new ye({message:`Unexpected system message in prompt: ${A}`,prompt:m});case"user":{let N=A.map((L)=>{switch(L.type){case"text":return L.text}}).filter(Boolean).join("");_+=`${f}:
4
4
  ${N}