murmur-rag 1.3.0 → 2.0.0
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.
- package/README.md +9 -9
- package/dist/cdn/{anthropic-tw416spz.js → anthropic-1y1mb77z.js} +2 -2
- package/dist/cdn/chunk-nhd6pd73.js +1 -0
- package/dist/cdn/embed-3swpcbya.js +83 -0
- package/dist/cdn/{embed-yz75savs.js → embed-7xhp36fz.js} +3 -3
- package/dist/cdn/{embed-3am76qfd.js → embed-hhcax25m.js} +6 -6
- package/dist/cdn/{embed-cx1r66ch.js → embed-q03dhgpb.js} +5 -5
- package/dist/cdn/embed-s9zy3aav.js +10 -0
- package/dist/cdn/{embed-g0p6yc29.js → embed-wd4wcxtq.js} +2 -2
- package/dist/cdn/{embed-q81wdr1z.js → embed-zckjbrcx.js} +4 -4
- package/dist/cdn/{google-556tp13p.js → google-b4zxgp7g.js} +5 -5
- package/dist/cdn/index-ev3304hr.js +1 -0
- package/dist/cdn/{index-8r44b2wt.js → index-f5ctpc4w.js} +1 -1
- package/dist/cdn/index-k0v6as0z.js +1 -0
- package/dist/cdn/index-q38abctd.js +1 -0
- package/dist/cdn/{index-qpy1k923.js → index-tjxzgn54.js} +2 -2
- package/dist/cdn/{mistral-25w1nsx5.js → mistral-e1jxb6vy.js} +2 -2
- package/dist/cdn/{murmur-1a55et82.js → murmur-yjgc7apa.js} +3 -3
- package/dist/cdn/murmur.js +6 -6
- package/dist/cdn/{openai-compatible-sg25g0vj.js → openai-compatible-8byk6wkm.js} +2 -2
- package/dist/cdn/{openai-bjrbem49.js → openai-q9byakt1.js} +11 -11
- package/dist/cdn/retriever-3yz0vzz9.js +1 -0
- package/dist/cdn/{transformers.web-49m0ht4a.js → transformers.web-nr67a9j3.js} +14 -14
- package/dist/lib/chunks/{index-4ftk20yq.js → index-ekxks9vp.js} +17 -17
- package/dist/lib/embed.js +4 -4
- package/dist/lib/llm/index.js +0 -23
- package/dist/lib/widget/index.js +2 -2
- package/dist/types/llm/index.d.ts +0 -8
- package/dist/types/widget/session.d.ts +7 -7
- package/package.json +4 -2
- package/dist/cdn/chunk-xyp6nm65.js +0 -1
- package/dist/cdn/embed-50pfy67v.js +0 -83
- package/dist/cdn/embed-rjpq8psf.js +0 -10
- package/dist/cdn/index-a5j4aat5.js +0 -1
- package/dist/cdn/index-ft8r539a.js +0 -1
- package/dist/cdn/index-pjxy71n5.js +0 -1
- package/dist/cdn/retriever-06ybegpd.js +0 -1
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import{N}from"./embed-cx1r66ch.js";var K=["@ai-sdk/anthropic","@ai-sdk/google","@ai-sdk/mistral","@ai-sdk/openai","@ai-sdk/openai-compatible"];function Re(e){if(!e)return;if(e.defaultModel&&e.models[e.defaultModel])return e.defaultModel;return Object.keys(e.models)[0]}function F(e,t=""){if(!e)return[];let r=Object.values(e.models),n=t.trim().toLowerCase();if(!n)return r;return r.filter((i)=>i.name.toLowerCase().includes(n)||i.id.toLowerCase().includes(n))}var ne="llm-connect-catalog",ae=3600000;var ke=["content-type","etag","last-modified"];function Pe(){try{return globalThis.caches}catch{return}}function De(e){let t=globalThis.location;if(!t)return!0;try{return new URL(e,t.href).origin===t.origin}catch{return!1}}function Ke(e){if(typeof e==="string")return e;if(e instanceof URL)return e.href;return e.url}function te(e){if(!e?.aborted)return!1;return e.reason?.name!=="TimeoutError"}async function re(e,t,r,n){let i=new Headers({["x-llm-connect-stored-at"]:String(Date.now())});for(let l of ke){let d=n.get(l);if(d)i.set(l,d)}try{await e.put(t,new Response(r,{headers:i}))}catch{}return new Response(r,{status:200,headers:i})}function ie(e={}){let{cacheName:t="llm-connect-catalog",ttlMs:r=3600000}=e,n=(d,f)=>(e.fetch??globalThis.fetch)(d,f),i,l=()=>(i??=(async()=>{let d=e.caches??Pe();if(!d)return null;try{return await d.open(t)}catch{return null}})(),i);return async(d,f)=>{let m=(f?.method??(d instanceof Request?d.method:"GET")).toUpperCase()==="GET"?await l():null;if(!m)return n(d,f);let p=Ke(d),c=await m.match(p).catch(()=>{return}),h=Number(c?.headers.get("x-llm-connect-stored-at"));if(c&&Date.now()-h<r)return c;let b=new Headers(f?.headers),w=c?.headers.get("etag");if(w&&De(p))b.set("If-None-Match",w);let E;try{E=await n(p,{...f,headers:b})}catch(a){if(c&&!te(f?.signal))return c;throw a}if(c&&E.status===304)return re(m,p,await c.text(),c.headers);if(!E.ok)return c??E;let o;try{o=await E.text()}catch(a){if(c&&!te(f?.signal))return c;throw a}return re(m,p,o,E.headers)}}var Le=["openai","anthropic","google","mistral"],B=new Map;function $e(e,t=globalThis.fetch){let r=B.get(e);if(!r)r=t(e).then((n)=>{if(!n.ok)throw Error(`Model list unavailable (${n.status})`);return n.json()}).catch((n)=>{throw B.delete(e),n}),B.set(e,r);return r}async function Fe(e){let{buildSlimCatalog:t}=await (N("t87kf8t0"),import("./browser-t87kf8t0.js"));return t(e)}function _t(e={}){let{fallbackUrl:t,npm:r=K,required:n,build:i=Fe,cacheName:l=ne,cacheTtlMs:d=ae}=e,f=(c,h)=>(e.fetch??globalThis.fetch)(c,h),u=l===!1?f:ie({cacheName:l,ttlMs:d,fetch:f,...e.cacheStorage?{caches:e.cacheStorage}:{}}),m=null;async function p(){try{let c=await i({npm:r,...n?{required:n}:{},fetch:u});if(Object.keys(c).length===0)throw Error("Empty catalog");return c}catch(c){if(!t)throw c;return $e(t,e.fetch)}}return()=>{if(!m)m=p().catch((c)=>{throw m=null,c});return m}}function G(e,t){if(!e)return{recommended:[],others:[]};let r=t.map((i)=>e[i]).filter((i)=>!!i),n=Object.values(e).filter((i)=>!t.includes(i.id)).sort((i,l)=>i.name.localeCompare(l.name));return{recommended:r,others:n}}var H={providerId:"openai",providerName:"OpenAI",providerNpm:"@ai-sdk/openai",providerApi:"https://api.openai.com/v1"};function Ue(e,t){let r=e?.[t];if(!r)return null;return{providerId:r.id,providerName:r.name,providerNpm:r.npm,providerApi:r.api??""}}var O={authentication_error:"auth",permission_error:"auth",rate_limit_error:"rate-limit",overloaded_error:"overloaded",api_error:"server",not_found_error:"not-found",invalid_request_error:"invalid-request",request_too_large:"invalid-request",context_length_exceeded:"context-length",insufficient_quota:"rate-limit"},Be=/prompt is too long|context[ _-]?length|context window|maximum context|too many (input )?tokens|input is too long|exceeds the model'?s? (maximum|context)/i,He=/api key not valid|invalid api key|incorrect api key|invalid x-api-key/i,qe=/failed to fetch|fetch failed|networkerror|network error|load failed|cannot connect|network connection/i,je=new Set(["auth-or-network","rate-limit","overloaded","server"]);function T(e,t){let r=e;if(t&&t.length>=4)r=r.split(t).join("***");return r.length>500?`${r.slice(0,500)}…`:r}function S(e){return typeof e==="object"&&e!==null}function se(e,t){if(!S(e))return!1;return e[Symbol.for(`vercel.ai.error.${t}`)]===!0}var y=(e)=>typeof e==="string"&&e.length>0?e:void 0;function Je(e){let t=Array.isArray(e)?e[0]:e;if(!S(t))return{};let r=S(t.error)?t.error:t,n=y(r.message)??y(r.msg)??y(t.message)??y(t.msg)??(typeof t.error==="string"?t.error:void 0);return{type:y(r.type)??y(r.status),code:y(r.code),message:n}}var Ye=["choices","content","candidates","output","data","models"];function q(e){let t=typeof e==="string"?Number(e):e;return typeof t==="number"&&Number.isInteger(t)&&t>=400&&t<=599?t:void 0}function L(e){let t=Array.isArray(e)&&e.length===1?e[0]:e;if(!S(t)||Array.isArray(t))return null;if(Ye.some((l)=>t[l]!==void 0))return null;let r=S(t.error)?t.error:void 0,n=y(t.msg)!==void 0||y(t.message)!==void 0;if(!(r!==void 0||y(t.error)!==void 0||t.type==="error"||t.success===!1||q(t.code)!==void 0&&n))return null;return q(t.code)??q(r?.code)??502}function ze(e){if(typeof e!=="string"||!e)return;try{return JSON.parse(e)}catch{return}}function Xe(e,t){let r=t.code&&O[t.code]||t.type&&O[t.type]||void 0;if(r==="context-length"||Be.test(t.message)){if(e===400||e===413||e===422||r==="context-length")return"context-length"}if(e===401||e===403)return"auth";if(e===429)return r==="overloaded"?"overloaded":"rate-limit";if(e===529||e===503||r==="overloaded")return"overloaded";if(e===404)return"not-found";if(e>=500)return"server";if(e===400||e===413||e===422)return r==="auth"||He.test(t.message)?"auth":"invalid-request";return r??"unknown"}function M(e,t,r,n){return{code:e,message:T(t,r),...n===void 0?{}:{status:n},retryable:je.has(e)}}function Qe(e){let t=e;for(let r=0;r<5&&t instanceof Error;r++){if(qe.test(t.message))return!0;t=t.cause}return!1}function Ge(e,t){if(se(e,"AI_RetryError")&&S(e)&&e.lastError!==void 0)return Ge(e.lastError,t);if(S(e)){let r=se(e,"AI_APICallError"),n=r?ze(e.responseBody):void 0,i=Je(e.data??n),l=y(e.type)??i.type,d=y(e.code)??i.code,f=typeof e.statusCode==="number"?e.statusCode:void 0,u=i.message??y(e.message)??"";if(f!==void 0)return M(Xe(f,{type:l,code:d,message:u}),u,t,r?f:void 0);let m=l&&O[l]||d&&O[d]||void 0;if(m)return M(m,u,t)}if(Qe(e))return M("auth-or-network",e instanceof Error?e.message:"",t);return M("unknown",e instanceof Error?e.message:String(e),t)}var ce=Symbol.for("llm-connect.registry"),le=globalThis;le[ce]??=new Map;var j=le[ce],Ze={"@ai-sdk/openai":"openai","@ai-sdk/anthropic":"anthropic","@ai-sdk/google":"google","@ai-sdk/mistral":"mistral","@ai-sdk/openai-compatible":"openai-compatible"};function v(e){return Ze[e]??e}function oe(e,t){j.set(v(e),t)}var R="https://api.openai.com/v1";function tt(e){return e.trim().replace(/\/+$/,"")===R}function Ie(e){return(t)=>{let r=e({apiKey:t.apiKey,...t.baseURL&&{baseURL:t.baseURL},...t.headers&&{headers:t.headers},...t.fetch&&{fetch:t.fetch}});if(t.baseURL&&!tt(t.baseURL)&&typeof r.chat==="function")return r.chat(t.model);return r(t.model)}}function ue(e){return j.has(v(e))}var rt={openai:"openai",anthropic:"anthropic",google:"google",mistral:"mistral","openai-compatible":"openai-compatible"};function de(e){let t=v(e),r=j.get(t);if(r)return r;let n=rt[t],i=n?` import { register } from "llm-connect/providers/${n}";
|
|
2
|
-
register();
|
|
3
|
-
|
|
4
|
-
or let loadModel() import it on demand.`:` import { registerProvider } from "llm-connect";
|
|
5
|
-
registerProvider("${t}", (config) => /* your LanguageModel */);`;throw Error(`Provider "${t}" is not registered.
|
|
6
|
-
|
|
7
|
-
Register it before calling AI functions:
|
|
8
|
-
|
|
9
|
-
${i}
|
|
10
|
-
`)}var Dt={anthropic:"https://api.anthropic.com/v1",openai:R,google:"https://generativelanguage.googleapis.com/v1beta",mistral:"https://api.mistral.ai/v1"},ot="api.anthropic.com";function fe(e){return e.trim().replace(/\/+$/,"")}function me(e){if(e.customEndpoint)return"openai-compatible";let t=v(e.providerNpm||"openai");if(t==="openai"&&e.providerApi&&fe(e.providerApi)!==R)return"openai-compatible";return t}function Ve(e){if(!e)return!1;try{return new URL(e).hostname===ot}catch{return!1}}function yt(e){let t=fe(e);try{let{pathname:r}=new URL(t);return/\/v\d+$/.test(r)?t:`${t}/v1`}catch{return t}}var bt="anthropic-dangerous-direct-browser-access",nt={anthropic:["x-api-key","anthropic-version","anthropic-beta",bt],openai:["authorization"],google:["x-goog-api-key"],mistral:["authorization"],"openai-compatible":["authorization"]},at="server-side-fallback-2026-06-01";function it(e){return typeof Request<"u"&&e instanceof Request?e.url:String(e)}function st(e,t){let r=t["anthropic-beta"];if(r===void 0||typeof e!=="string"||!e.includes('"fallbacks"'))return;let n;try{n=JSON.parse(e)}catch{return}if(n?.fallbacks!=="default")return;let i=r.split(",").filter((l)=>l.trim()!==at);if(i.length>0)t["anthropic-beta"]=i.join(",");else delete t["anthropic-beta"]}async function ct(e){if(!e.ok||!(e.headers.get("content-type")??"").includes("json"))return e;let t,r;try{t=await e.clone().text(),r=L(JSON.parse(t))}catch{return e}if(r===null)return e;return new Response(t,{status:r,headers:e.headers})}function pe(e,t={}){let r=nt[e],n=t.strictHeaders&&r?new Set(["content-type","accept",...r]):void 0;return(i,l)=>{let d=it(i),f=l?.headers??(typeof Request<"u"&&i instanceof Request?i.headers:void 0),u={};if(new Headers(f).forEach((p,c)=>{if(c==="user-agent")return;if(n&&!n.has(c))return;if(c===bt&&!Ve(d))return;u[c]=p}),e==="anthropic")st(l?.body,u);return(t.fetch??globalThis.fetch)(i instanceof URL||typeof i==="string"?d:i,{...l,headers:u}).then(ct)}}function W(e){if(e.customEndpoint)return"openai";return v(e.providerNpm||"openai")}function he(e,t={}){let r=de(W(e)),n=pe(me(e),t);if(e.customEndpoint)return r({apiKey:e.apiKey||"",model:e.customModel||e.model||"",baseURL:e.customEndpoint,...e.headers&&{headers:e.headers},fetch:n});return r({apiKey:e.apiKey,model:e.model||"",...e.providerApi&&{baseURL:e.providerApi},...e.headers&&{headers:e.headers},fetch:n})}async function lt(e){switch(e){case"openai":(await (N("bjrbem49"),import("./openai-bjrbem49.js"))).register();return;case"anthropic":(await (N("tw416spz"),import("./anthropic-tw416spz.js"))).register();return;case"google":(await (N("556tp13p"),import("./google-556tp13p.js"))).register();return;case"mistral":(await (N("25w1nsx5"),import("./mistral-25w1nsx5.js"))).register();return;case"openai-compatible":(await (N("sg25g0vj"),import("./openai-compatible-sg25g0vj.js"))).register();return}}async function et(e,t={}){let r=W(e);if(!ue(r))await lt(r);return he(e,t)}function Ne(e){if(e?.customEndpoint?.trim())return!!e.customModel?.trim();return!!e?.apiKey?.trim()}function C(e){return e.custom?e.customApiKey:e.apiKey}function k(e){return e.custom?!!e.customEndpoint.trim()&&!!e.customModel.trim():!!e.apiKey.trim()&&!!e.model}function J(e){return e.custom?!!e.customEndpoint.trim():!!e.apiKey.trim()}function ge(e){let t=e.toLowerCase();return t==="localhost"||t.endsWith(".localhost")||t==="[::1]"||/^127(?:\.\d{1,3}){3}$/.test(t)}function _(e){let t;try{t=new URL(e.trim())}catch{return"invalid-endpoint"}if(t.username||t.password)return"invalid-endpoint";if(t.protocol==="https:")return null;if(t.protocol!=="http:")return"invalid-endpoint";return ge(t.hostname)?null:"insecure-endpoint"}function We(e){if(_(e))return null;return e.trim().replace(/\/+$/,"")}var bn={ollama:{id:"ollama",name:"Ollama",endpoint:"http://localhost:11434/v1",model:"llama3.2"},lmstudio:{id:"lmstudio",name:"LM Studio",endpoint:"http://localhost:1234/v1",model:"local-model"},jan:{id:"jan",name:"Jan",endpoint:"http://localhost:1337/v1"}};function V(e){try{return globalThis[e]??null}catch{return null}}function Y(e,t){try{return V(e)?.getItem(t)??null}catch{return null}}function z(e,t,r){try{V(e)?.setItem(t,r)}catch{}}function I(e,t){try{V(e)?.removeItem(t)}catch{}}var ut=["model","providerId","providerName","providerNpm","providerApi","customEndpoint","customModel","language"];function Ee(e){let t=Y("localStorage",e);if(t===null)return null;let r={};try{let i=JSON.parse(t);if(i&&typeof i==="object"&&!Array.isArray(i))r=i}catch{}let n={...r,apiKey:"",model:""};for(let i of ut){let l=r[i];if(typeof l==="string"&&l)n[i]=l;else if(i!=="model")delete n[i]}return n.rememberKey=r.rememberKey===!0,n}var X="kv",Q="crypto-key",P="api-key";function Z(){try{return!!globalThis.indexedDB&&!!globalThis.crypto?.subtle}catch{return!1}}function ye(e){let t="";for(let r of e)t+=String.fromCharCode(r);return btoa(t)}function be(e){let t=atob(e),r=new Uint8Array(new ArrayBuffer(t.length));for(let n=0;n<t.length;n++)r[n]=t.charCodeAt(n);return r}function wt({prefsKey:e,dbName:t,sessionKey:r=`${e}-key`}){let n=null;function i(){return new Promise((o,a)=>{let s=indexedDB.open(t,1);s.onupgradeneeded=()=>s.result.createObjectStore(X),s.onsuccess=()=>o(s.result),s.onerror=()=>a(s.error)})}async function l(o,a){let s=await i();try{return await new Promise((g,A)=>{let x=s.transaction(X,o),Ce=a(x.objectStore(X));x.oncomplete=()=>g(Ce.result),x.onerror=()=>A(x.error),x.onabort=()=>A(x.error)})}finally{s.close()}}let d=(o)=>l("readonly",(a)=>a.get(o)),f=(o,a)=>l("readwrite",(s)=>s.put(a,o)),u=(o)=>l("readwrite",(a)=>a.delete(o));async function m(o){let a=await d(Q);if(a||!o)return a;let s=await crypto.subtle.generateKey({name:"AES-GCM",length:256},!1,["encrypt","decrypt"]);return await f(Q,s),s}async function p(o){let a=await m(!0);if(!a)throw Error("No encryption key");let s=crypto.getRandomValues(new Uint8Array(new ArrayBuffer(12))),g=await crypto.subtle.encrypt({name:"AES-GCM",iv:s},a,new TextEncoder().encode(o));return{iv:s,ciphertext:g}}async function c(o){let a=o&&await m(!1);if(!o||!a)return"";let s=await crypto.subtle.decrypt({name:"AES-GCM",iv:o.iv},a,o.ciphertext);return new TextDecoder().decode(s)}function h(){let o=Y("sessionStorage",r);if(!o)return;try{let{iv:a,ciphertext:s}=JSON.parse(o);return{iv:be(a),ciphertext:be(s).buffer}}catch{return}}async function b(o){if(!Z())return"";try{return await c(o?await d(P):h())}catch{return""}}async function w(o,a){if(I("sessionStorage",r),!Z())return;try{if(!o||!a)await u(P);if(!o)return;let s=await p(o);if(a)await f(P,s);else z("sessionStorage",r,JSON.stringify({iv:ye(s.iv),ciphertext:ye(new Uint8Array(s.ciphertext))}))}catch{}}async function E(){let o=Ee(e);if(!o)return null;if(n===null)n=await b(o.rememberKey===!0);return{...o,apiKey:n}}return{loadDraft:E,async load(){let o=await E();return Ne(o)?o:null},async save(o,{rememberKey:a}){let{apiKey:s,...g}=o;z("localStorage",e,JSON.stringify({...g,rememberKey:a})),n=s,await w(s,a)},async clear(){if(n=null,I("localStorage",e),I("sessionStorage",r),!Z())return;try{await u(P),await u(Q)}catch{}}}}var Se=5000,dt=1e4;function ve(e){return e.trim().replace(/\/+$/,"")}function we(e,t,r){let n=t.trim();if(!n)return{};if(e==="@ai-sdk/anthropic")return{"x-api-key":n,"anthropic-version":"2023-06-01",...Ve(r)&&{"anthropic-dangerous-direct-browser-access":"true"}};if(e==="@ai-sdk/google")return{"x-goog-api-key":n};return{Authorization:`Bearer ${n}`}}function D(e,t){return e instanceof Error&&e.name===t}function ft(e){let t=e;if(Array.isArray(t?.data))return t.data.map((r)=>r?.id).filter((r)=>typeof r==="string");if(Array.isArray(t?.models))return t.models.map((r)=>r?.name).filter((r)=>typeof r==="string").map((r)=>r.replace(/^models\//,""));return[]}function ee(e,t){return{ok:!1,reason:e===401||e===403?"auth":"http",status:e,...t?{message:t}:{}}}function mt(e){if(typeof AbortSignal.any==="function")return AbortSignal.any(e);let t=new AbortController;for(let r of e){if(r.aborted){t.abort(r.reason);break}r.addEventListener("abort",()=>t.abort(r.reason),{once:!0})}return t.signal}function xe(e,t){let r=t?AbortSignal.timeout(t):void 0;if(e&&r)return mt([e,r]);return e??r}async function _e(e,t,r,n){let i=r.fetch??globalThis.fetch;try{let l=await i(e,{headers:t,signal:xe(r.signal,r.timeoutMs)});if(!l.ok)return ee(l.status);let d=await l.json().catch(()=>null),f=L(d);if(f!==null){let{message:m}=Ge({statusCode:f,data:d},n.trim());return ee(f,m||void 0)}let u=ft(d);return{ok:!0,modelCount:u.length,models:u}}catch(l){if(r.signal?.aborted)throw l;if(D(l,"TimeoutError")||D(l,"AbortError"))return{ok:!1,reason:"timeout"};return{ok:!1,reason:"cors",...l instanceof Error?{message:T(l.message,n.trim())}:{}}}}function pt(e,t="",r={}){let n=`${ve(e)}/models`;return _e(n,we(void 0,t,n),{timeoutMs:Se,...r},t)}function ht(e){let t=[];for(let r=e;r instanceof Error&&t.length<4;r=r.cause)t.push(r.message);return t.some((r)=>/failed to fetch|fetch failed|networkerror|load failed|cannot connect to api/i.test(r))}async function Ae(e,t){try{let[{generateText:r},n]=await Promise.all([(N("pjxy71n5"),import("./index-pjxy71n5.js")),et(e,t.fetch?{fetch:t.fetch}:{})]);return await r({model:n,prompt:"Reply with OK.",maxOutputTokens:16,maxRetries:0,abortSignal:xe(t.signal,t.timeoutMs)}),{ok:!0}}catch(r){if(t.signal?.aborted)throw r;if(D(r,"TimeoutError")||D(r,"AbortError"))return{ok:!1,reason:"timeout"};let n=T(r instanceof Error?r.message:String(r),e.apiKey?.trim()),i=r?.statusCode;if(typeof i==="number")return ee(i,n);if(ht(r))return{ok:!1,reason:"cors",message:n};return{ok:!1,reason:"config",message:n}}}var gt=new Set([404,405,501]);function Et(e){if(e.ok)return!1;if(e.reason==="cors")return!0;return e.reason==="http"&&e.status!==void 0&>.has(e.status)}async function At(e,t){if(e.customEndpoint)return pt(e.customEndpoint,e.apiKey,{signal:t.signal,fetch:t.fetch,timeoutMs:t.timeoutMs??Se});let r=ve(e.providerApi??""),n=r&&e.providerNpm==="@ai-sdk/anthropic"?yt(r):r;if(!n)return null;let i=`${n}/models`;return _e(i,we(e.providerNpm,e.apiKey,i),{signal:t.signal,fetch:t.fetch,timeoutMs:t.timeoutMs??dt},e.apiKey)}async function Te(e,t={}){if(e.customEndpoint){let n=_(e.customEndpoint);if(n==="insecure-endpoint")return{ok:!1,reason:"insecure",message:"Plain http is only allowed to this machine: use https"};if(n)return{ok:!1,reason:"config",message:"Invalid endpoint URL"}}if(t.mode==="generate")return Ae(e,t);let r=await At(e,t);if(t.mode==="auto"&&(!r||Et(r)))return Ae(e,t);return r??{ok:!1,reason:"config",message:"No API URL for this provider"}}var St=[{code:"en",name:"English",label:"English"},{code:"fr",name:"French",label:"Français"},{code:"es",name:"Spanish",label:"Español"},{code:"de",name:"German",label:"Deutsch"},{code:"it",name:"Italian",label:"Italiano"},{code:"pt",name:"Portuguese",label:"Português"},{code:"nl",name:"Dutch",label:"Nederlands"},{code:"ru",name:"Russian",label:"Русский"},{code:"zh",name:"Chinese",label:"中文"},{code:"ja",name:"Japanese",label:"日本語"},{code:"ko",name:"Korean",label:"한국어"},{code:"ar",name:"Arabic",label:"العربية"},{code:"hi",name:"Hindi",label:"हिन्दी"},{code:"tr",name:"Turkish",label:"Türkçe"},{code:"pl",name:"Polish",label:"Polski"},{code:"sv",name:"Swedish",label:"Svenska"}];function Me(e){let t=e?.trim().toLowerCase();if(!t)return;let r=t.split(/[-_]/)[0];return St.find((n)=>n.code===r||n.name.toLowerCase()===t||n.label.toLowerCase()===t)}function U(e){return Me(e)?.code??"en"}function Oe(){try{let e=globalThis.navigator?.languages??[globalThis.navigator?.language];for(let t of e){let r=Me(t);if(r)return r.code}}catch{}return"en"}function vt(e){let t=e.recommended??Le,r=e.catalog??e.catalogUrl;if(!r)throw Error("createLlmSettingsStore: `catalog` is required");let n=r,i={providerId:e.defaults?.providerId??t[0]??"openai",model:e.defaults?.model??"",rememberKey:e.defaults?.rememberKey??!1},l=()=>e.defaults?.language?U(e.defaults.language):Oe();function d(o){let a=!!o?.customEndpoint,s=o?.apiKey??"";return{custom:a,providerId:o?.providerId||i.providerId,model:o?.model||i.model,apiKey:a?"":s,customApiKey:a?s:"",customEndpoint:o?.customEndpoint??"",customModel:o?.customModel??"",rememberKey:o?.rememberKey??i.rememberKey,language:o?.language?U(o.language):l()}}function f(o){let a=o.catalog?.[o.draft.providerId]??null,s=F(a,o.search),g=a?.defaultModel;return{...o,provider:a,providers:G(o.catalog,t),isRecommendedProvider:t.includes(o.draft.providerId),models:s,recommendedModel:g?s.find((A)=>A.id===g)??null:null,apiKey:C(o.draft),canSave:k(o.draft),canTest:J(o.draft)}}let u=f({catalog:null,catalogStatus:"idle",catalogError:null,saved:null,draft:d(null),search:"",testing:!1,testResult:null}),m=new Set,p=!1;function c(o){let a={...u,...o};if(!a.draft.model&&a.catalog){let s=Re(a.catalog[a.draft.providerId]);if(s)a.draft={...a.draft,model:s}}u=f(a);for(let s of m)s(u)}function h(o){p=!0,c({draft:{...u.draft,...o},testResult:null})}function b(){if(u.catalogStatus==="loading"||u.catalogStatus==="ready")return;c({catalogStatus:"loading",catalogError:null}),(typeof n==="string"?$e(n,e.fetch):n()).then((a)=>c({catalog:a,catalogStatus:"ready",catalogError:null}),(a)=>c({catalogStatus:"error",catalogError:a instanceof Error?a.message:"Model list unavailable"}))}function w(){let{draft:o,catalog:a,saved:s}=u,g=Ue(a,o.providerId);if(g)return g;if(s?.providerId===o.providerId)return{providerId:o.providerId,providerName:s.providerName??o.providerId,providerNpm:s.providerNpm??"",providerApi:s.providerApi??""};return H}function E(){let{draft:o}=u;return{apiKey:C(o),model:o.model,...w(),language:o.language,...o.custom?{customEndpoint:We(o.customEndpoint)??o.customEndpoint.trim(),customModel:o.customModel.trim()}:{}}}return{getState:()=>u,subscribe(o){return m.add(o),o(u),()=>{m.delete(o)}},async load(){let o=await(e.storage.loadDraft??e.storage.load)();if(p)c({saved:o});else c({saved:o,draft:d(o),search:"",testResult:null});return o},reset(o){p=!1,c({saved:o,draft:d(o),search:"",testResult:null})},open(){p=!1,c({draft:d(u.saved),search:"",testing:!1,testResult:null}),b()},retryCatalog:b,selectProvider(o){let a=Re(u.catalog?.[o])??"";p=!0,c({draft:{...u.draft,providerId:o,model:a},search:"",testResult:null})},selectModel:(o)=>h({model:o}),setApiKey(o){h(u.draft.custom?{customApiKey:o}:{apiKey:o})},setSearch:(o)=>c({search:o}),toggleCustom(o){h({custom:o??!u.draft.custom})},applyPreset(o){h({customEndpoint:o.endpoint,...!u.draft.customModel.trim()&&o.model?{customModel:o.model}:{}})},setEndpoint:(o)=>h({customEndpoint:o}),setCustomModel:(o)=>h({customModel:o}),setRememberKey:(o)=>h({rememberKey:o}),setLanguage:(o)=>h({language:U(o)}),settings:E,async test(o={}){c({testing:!0,testResult:null});try{let a=await Te(E(),{mode:e.testMode??"models",signal:o.signal,fetch:e.fetch});return c({testing:!1,testResult:a}),a}catch(a){throw c({testing:!1}),a}},async save(o){let{draft:a}=u;if(!k(a))return{ok:!1,reason:"incomplete"};let s=a.custom?_(a.customEndpoint):null;if(s)return{ok:!1,reason:s};let g={...E(),...o};await e.storage.save(g,{rememberKey:a.rememberKey});let A={...g,rememberKey:a.rememberKey};return c({saved:A}),{ok:!0,settings:A}},async clear(){await e.storage.clear(),c({saved:null,draft:{...u.draft,custom:!1,apiKey:"",customApiKey:"",customEndpoint:"",customModel:"",language:l()},testResult:null})}}}export{Re,Le,$e,_t,Ue,Ge,oe,Ie,Dt,Ve,yt,bt,et,Ne,We,bn,wt,vt};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Re,Le,$e,_t,Ue,Ge,et,Ne,We,bn,wt,vt}from"./embed-rjpq8psf.js";export{Le as DEFAULT_RECOMMENDED,bn as ENDPOINT_PRESETS,vt as createLlmSettingsStore,Re as defaultModelOf,Ge as describeError,Ne as isConfigured,_t as liveCatalog,$e as loadCatalog,et as loadModel,Ue as providerMeta,wt as secureStorage,We as validateEndpoint};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Re,Le,$e,_t,Ue,Ge,et,Ne,We,wt,vt}from"./embed-rjpq8psf.js";var l="https://maxgfr.github.io/murmur/cdn/models.json";function d(e){let o=e.endpoint?We(e.endpoint):null;if(!o)return null;let r=e.model||"default",t={apiKey:"",model:r,customEndpoint:o,customModel:r};if(e.headers)t.headers=e.headers;return t}var s=!1;async function p(e,o=l){if(!e.apiKey)return null;if(!s&&typeof console<"u")s=!0,console.warn("murmur: the API key in this page can be read by anyone. Use a key with a spending limit, or a proxy (data-endpoint).");let r=e.provider||"openai",t=await $e(o),n=Ue(t,r);if(!n)throw Error(`murmur: unknown provider "${r}"`);let a=e.model||Re(t[r])||"",i={apiKey:e.apiKey,model:a,...n};if(e.headers)i.headers=e.headers;return i}function u(e,o={}){let r=o.storageKey??"murmur",t={};if(e.provider)t.providerId=e.provider;if(e.model)t.model=e.model;return vt({catalog:_t({fallbackUrl:o.catalogUrl??l}),storage:wt({prefsKey:`${r}-llm`,dbName:`${r}-secrets`}),recommended:e.provider?[e.provider,...Le.filter((n)=>n!==e.provider)]:Le,defaults:t})}async function g(e,o){let r=d(e);if(r)return r;let t=o?await o.load():null;return t&&Ne(t)?t:null}export{Ge as describeError,Ne as isConfigured,et as loadModel,p as ownerKeySettings,d as proxySettings,g as resolveSettings,u as visitorStore};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Mn,It}from"./embed-3am76qfd.js";export{Mn as generateText,It as streamText};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Et}from"./embed-g0p6yc29.js";export{Et as bm25Retriever};
|