@bkm016/basalt 0.1.8 → 0.1.10
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/{chunk-0039s4jt.js → chunk-02d3x4mj.js} +3 -3
- package/{chunk-ky55taar.js → chunk-0mjb3sm3.js} +327 -316
- package/{chunk-ckjw3b61.js → chunk-13gvs0ax.js} +2 -2
- package/{chunk-0d51ggzj.js → chunk-1n7dat03.js} +4 -4
- package/{chunk-ppxv5q7y.js → chunk-1zj3zvw5.js} +3 -3
- package/{chunk-2ek3wq4b.js → chunk-29qrxygd.js} +1 -1
- package/{chunk-7p6e2f5s.js → chunk-30rjf7my.js} +3 -3
- package/{chunk-v2srrqcv.js → chunk-38g3gctw.js} +2 -2
- package/chunk-3mqf9ped.js +479 -0
- package/{chunk-3j2kkgsc.js → chunk-4dw43syb.js} +1 -1
- package/{chunk-t66jqz12.js → chunk-4gtgqcct.js} +2 -2
- package/{chunk-qmdpgbg3.js → chunk-755sy11p.js} +1 -1
- package/{chunk-n015c8nx.js → chunk-7zkswxvk.js} +1 -1
- package/{chunk-91r5nvth.js → chunk-82v8jh1h.js} +2 -2
- package/{chunk-12trygzx.js → chunk-95964592.js} +16 -16
- package/{chunk-nmtk9xra.js → chunk-9as0p561.js} +2 -2
- package/{chunk-pn413hjw.js → chunk-a1352w87.js} +1 -1
- package/{chunk-rnt1ckk9.js → chunk-a1rb1a48.js} +5 -5
- package/{chunk-fzcmzbsq.js → chunk-a98wma9j.js} +1 -1
- package/{chunk-kgkrccr1.js → chunk-asyr3gnq.js} +2 -2
- package/{chunk-5gxj9560.js → chunk-ax04trym.js} +1 -1
- package/chunk-b2bxqeb4.js +2 -0
- package/{chunk-xjw78yey.js → chunk-bdjr0kfr.js} +4 -4
- package/{chunk-7kjr9gdx.js → chunk-bk4rpnm8.js} +2 -2
- package/{chunk-47vf66t6.js → chunk-c0zfefq8.js} +1 -1
- package/{chunk-kpvaqb7c.js → chunk-c6q04xrd.js} +2 -2
- package/chunk-c71173py.js +25 -0
- package/{chunk-adys4qq4.js → chunk-cmwdjes8.js} +5 -5
- package/{chunk-dcwdmpw2.js → chunk-d0a1jxk5.js} +1 -1
- package/{chunk-2nrkqq45.js → chunk-d5j74pcp.js} +7 -7
- package/{chunk-pkpj7s2k.js → chunk-dfh9m9n7.js} +1 -1
- package/{chunk-26cz8et8.js → chunk-dq01v5eq.js} +1 -1
- package/{chunk-fpxc6qjr.js → chunk-e1x629v0.js} +2 -2
- package/{chunk-86xhmz7k.js → chunk-en218k4y.js} +1 -1
- package/{chunk-3hg7yn1t.js → chunk-fgwda4m0.js} +1 -1
- package/chunk-gbjn6d81.js +2 -0
- package/{chunk-x496kg3v.js → chunk-gkf5jwvj.js} +1 -1
- package/{chunk-k3q5jqjj.js → chunk-hb4f2v34.js} +2 -2
- package/{chunk-mr807v9n.js → chunk-hbnmymaq.js} +1 -1
- package/{chunk-818nd6s1.js → chunk-jj4hqbrx.js} +2 -2
- package/{chunk-jyv9cae6.js → chunk-jn5pqy5v.js} +1 -1
- package/{chunk-yyy2yp6f.js → chunk-jtsve11b.js} +9 -9
- package/chunk-m1eam0s5.js +2 -0
- package/{chunk-6vnjg5x9.js → chunk-mbpb5c7w.js} +1 -1
- package/{chunk-t40fag3z.js → chunk-msm9hmk9.js} +1 -1
- package/{chunk-j781n7ca.js → chunk-n0ybj4h9.js} +2 -2
- package/{chunk-jp5afrwm.js → chunk-n2jcx65v.js} +2 -2
- package/{chunk-2ks2tnac.js → chunk-nrsd810j.js} +2 -2
- package/chunk-pnspvnyd.js +2 -0
- package/chunk-pz2afna8.js +2 -0
- package/{chunk-d37gemt2.js → chunk-q9f4xb0w.js} +3 -3
- package/{chunk-hd3x1w46.js → chunk-qaeyhe65.js} +1 -1
- package/chunk-qnkrrwmg.js +2 -0
- package/{chunk-e6c2mzxc.js → chunk-r4ttdkrz.js} +2 -2
- package/{chunk-r9aatvwm.js → chunk-stj493dn.js} +2 -2
- package/{chunk-g3ed130w.js → chunk-tevejprz.js} +4 -4
- package/{chunk-k3rmjrf1.js → chunk-v3ee9z3f.js} +1 -1
- package/{chunk-4n49ptbz.js → chunk-vtqr7dm8.js} +2 -2
- package/{chunk-z3ch1wg6.js → chunk-xh444pfn.js} +14 -14
- package/{chunk-pehyqj8k.js → chunk-zc9ar0r4.js} +1 -1
- package/{chunk-ef9yhnk3.js → chunk-zyyzk5ha.js} +1 -1
- package/compiled.js +9 -9
- package/package.json +1 -1
- package/ui-test-worker.js +8 -8
- package/web/chunk-045d3b5d.js +1 -0
- package/web/{chunk-r4ffr96e.js → chunk-0770q5e1.js} +1 -1
- package/web/chunk-12qf1r6m.js +1 -0
- package/web/{chunk-s7e93552.js → chunk-18neka5g.js} +4 -4
- package/web/{chunk-et8q775x.js → chunk-1ev0n3n4.js} +5 -5
- package/web/chunk-1ex3wgms.js +2 -0
- package/web/{chunk-svh2gkx8.js → chunk-1qh7f5kr.js} +1 -1
- package/web/{chunk-s38s9ff9.js → chunk-26ecc2xh.js} +30 -30
- package/web/chunk-2cz7tx8q.js +1 -0
- package/web/chunk-32ty2xfn.js +1 -0
- package/web/{chunk-q1xxs319.js → chunk-3eexx7y5.js} +4 -4
- package/web/{chunk-v14s4vgc.js → chunk-46jnkghq.js} +1 -1
- package/web/chunk-4am8j3k3.js +1 -0
- package/web/{chunk-85gdsmt4.js → chunk-5qvmefq2.js} +1 -1
- package/web/chunk-5svqfj4g.js +3 -0
- package/web/{chunk-f93pe4kb.js → chunk-5v5q13hz.js} +4 -4
- package/web/chunk-5z2n4z9x.css +1 -0
- package/web/{chunk-qcge7d6s.js → chunk-6e87m0nm.js} +2 -2
- package/web/chunk-6y55gk1n.js +1 -0
- package/web/chunk-7np1jp3x.js +8 -0
- package/web/chunk-87e8d1hv.js +1 -0
- package/web/{chunk-33w36n91.js → chunk-88wd49xe.js} +2 -2
- package/web/chunk-8h2x89tw.js +2 -0
- package/web/chunk-8y2526ve.js +1 -0
- package/web/chunk-905vw286.js +2 -0
- package/web/chunk-918e5t4x.js +2 -0
- package/web/chunk-96m2m3e8.js +1 -0
- package/web/chunk-9f4zzqbx.js +1 -0
- package/web/{chunk-fe31sv6t.js → chunk-9yfftz38.js} +1 -1
- package/web/{chunk-z0zrp8n8.js → chunk-a1n4468c.js} +1 -1
- package/web/chunk-arnzrqnm.js +1 -0
- package/web/{chunk-c01176kn.js → chunk-awkdw9rw.js} +2 -2
- package/web/{chunk-m5y2d4zv.js → chunk-b46ws7rf.js} +1 -1
- package/web/chunk-bc3ajvfg.js +24 -0
- package/web/chunk-bwy3e58v.js +1 -0
- package/web/{chunk-ja7w629n.js → chunk-c57f714b.js} +2 -2
- package/web/chunk-d5gshd1a.js +1 -0
- package/web/chunk-de40q05r.js +30 -0
- package/web/chunk-dp0k5vhd.js +1 -0
- package/web/{chunk-qq2v8h6d.js → chunk-dv1berk6.js} +5 -5
- package/web/{chunk-jzte2phh.js → chunk-eh7wp62z.js} +1 -1
- package/web/{chunk-823b7866.js → chunk-ehtmb6sn.js} +18 -18
- package/web/{chunk-d9wdsjkk.js → chunk-eqndhs21.js} +2 -2
- package/web/chunk-et1hytyv.js +1 -0
- package/web/chunk-f7jpakwh.js +1 -0
- package/web/chunk-f9m9seam.js +1 -0
- package/web/{chunk-7a4xk6j9.js → chunk-fmmrthpa.js} +5 -5
- package/web/{chunk-fv6vm14n.js → chunk-frnh4zqf.js} +2 -2
- package/web/chunk-g2erm7k0.js +1 -0
- package/web/chunk-g3kbn0t2.js +1 -0
- package/web/{chunk-h5cfg3vv.js → chunk-g7dc4hrd.js} +2 -2
- package/web/{chunk-dgwkqcz6.js → chunk-g7kz8f7q.js} +2 -2
- package/web/chunk-ght0t49g.js +1 -0
- package/web/{chunk-jjjtv2r1.js → chunk-ghwm7bdj.js} +2 -2
- package/web/{chunk-sda7cyrt.js → chunk-grm2208k.js} +21 -21
- package/web/{chunk-0zwc2rvh.js → chunk-gsw1tv96.js} +1 -1
- package/web/chunk-gw8x1g61.js +24 -0
- package/web/chunk-gx340asc.js +1 -0
- package/web/chunk-h2txs73e.js +39 -0
- package/web/chunk-h3tkacc7.js +1 -0
- package/web/{chunk-cyjnert7.js → chunk-h5ckjk48.js} +16 -16
- package/web/{chunk-1s8zg6fb.js → chunk-j37p0b13.js} +5 -5
- package/web/chunk-j89s11x8.js +78 -0
- package/web/{chunk-jam45rqg.js → chunk-jccz14ye.js} +2 -2
- package/web/chunk-je78j3vr.js +1 -0
- package/web/chunk-jke2ev6m.js +2 -0
- package/web/{chunk-1gx0zpmp.js → chunk-js6kb05s.js} +9 -9
- package/web/{chunk-30b33r2w.js → chunk-k0cg4n2k.js} +2 -2
- package/web/{chunk-tkp72r9b.js → chunk-knm82fw9.js} +1 -1
- package/web/{chunk-xb9m0092.js → chunk-kxdtg9dt.js} +1 -1
- package/web/{chunk-w37n09px.js → chunk-m4fxd5d9.js} +10 -10
- package/web/chunk-m9xzt9p7.js +1 -0
- package/web/{chunk-8773nwdc.js → chunk-myd6sc76.js} +1 -1
- package/web/{chunk-sf101c23.js → chunk-mykrm8ba.js} +2 -2
- package/web/chunk-mzzaet63.js +1 -0
- package/web/{chunk-2axwda8c.js → chunk-n4yzs2q0.js} +7 -7
- package/web/{chunk-wj3ymejj.js → chunk-nawxgz87.js} +4 -4
- package/web/chunk-ngt1j8py.js +1139 -0
- package/web/{chunk-hstbgb83.js → chunk-p55vhns6.js} +5 -5
- package/web/{chunk-xabcx3ry.js → chunk-pgwf37s2.js} +3 -3
- package/web/chunk-q34as3v6.js +1 -0
- package/web/{chunk-dtg5yhhs.js → chunk-q4bst4an.js} +1 -1
- package/web/chunk-qdzy124b.js +4 -0
- package/web/chunk-qe0bgeda.js +1 -0
- package/web/{chunk-sd3cdqcm.js → chunk-qh62nkem.js} +2 -2
- package/web/{chunk-j1bw5v1g.js → chunk-qq6m2my8.js} +2 -2
- package/web/{chunk-8dp7h6w8.js → chunk-qy1zx2yw.js} +16 -16
- package/web/chunk-rag65pfs.js +4 -0
- package/web/chunk-rbqnre6q.js +36 -0
- package/web/{chunk-hbkasy6c.js → chunk-rh3xb76f.js} +22 -22
- package/web/{chunk-fx4mackk.js → chunk-rwfmccmh.js} +4 -4
- package/web/{chunk-mf6xng5b.js → chunk-rxvm70w5.js} +2 -2
- package/web/chunk-sat7zyva.js +1 -0
- package/web/{chunk-cn0tmwjs.js → chunk-sc63488q.js} +2 -2
- package/web/{chunk-xsz1dfm2.js → chunk-sd3xat3r.js} +20 -20
- package/web/{chunk-nky3bqfg.js → chunk-se4h6wx0.js} +1 -1
- package/web/chunk-sjkg40ay.js +7 -0
- package/web/chunk-sk0hpa80.js +1 -0
- package/web/{chunk-xqyazzm7.js → chunk-t5nvgz7z.js} +5 -5
- package/web/{chunk-3q0v8w45.js → chunk-tfqarvdx.js} +80 -80
- package/web/{chunk-d0m0h0eb.js → chunk-tqze6d6b.js} +1 -1
- package/web/{chunk-rbdvc8x7.js → chunk-tt93zbn4.js} +7 -7
- package/web/chunk-tvcxrx6h.js +1 -0
- package/web/chunk-tzpnh70q.js +1 -0
- package/web/{chunk-8wg44w91.js → chunk-vasppf6b.js} +2 -2
- package/web/chunk-vb7g4xg6.js +1 -0
- package/web/chunk-w3zgfhjb.js +2 -0
- package/web/{chunk-0j9a7811.js → chunk-wrevb4ew.js} +6 -6
- package/web/chunk-wtvch4ad.js +106 -0
- package/web/chunk-wzfe6jtq.js +1 -0
- package/web/{chunk-cez1k71m.js → chunk-x5g1yy12.js} +1 -1
- package/web/chunk-x850q01z.js +1 -0
- package/web/chunk-xh4xn1az.js +1 -0
- package/web/chunk-xk904wqv.js +1 -0
- package/web/chunk-xtn305fd.js +1 -0
- package/web/chunk-xzwxcxb4.js +1 -0
- package/web/{chunk-4anjs6yp.js → chunk-y2rzeb4v.js} +2 -2
- package/web/chunk-yekaz74b.js +1 -0
- package/web/{chunk-8nv7q5ac.js → chunk-yppgejg7.js} +15 -15
- package/web/chunk-ys2tns0p.js +1 -0
- package/web/chunk-z4bp6p32.js +62 -0
- package/web/{chunk-p0cjvjdx.js → chunk-z5qn0xev.js} +1 -1
- package/web/{chunk-rkjkynm3.js → chunk-zms6mrqk.js} +12 -12
- package/web/{chunk-6e38yf3a.js → chunk-zse05v6j.js} +4 -4
- package/web/{chunk-cn1xpg3q.js → chunk-zz1qkaar.js} +2 -2
- package/web/index.html +1 -1
- package/worker.js +1 -1
- package/chunk-2gcp3xdc.js +0 -2
- package/chunk-320174qe.js +0 -2
- package/chunk-dvb5nd2x.js +0 -2
- package/chunk-frt9k18g.js +0 -480
- package/chunk-ndt6rjt9.js +0 -2
- package/chunk-xy2bxwq8.js +0 -2
- package/chunk-yzevjkms.js +0 -25
- package/chunk-zdyd8hbn.js +0 -2
- package/web/chunk-0jfda4jw.js +0 -2
- package/web/chunk-2p3fkhy8.js +0 -1
- package/web/chunk-3sz5qcwj.js +0 -1
- package/web/chunk-433c80pc.js +0 -1
- package/web/chunk-48cnmhvd.js +0 -106
- package/web/chunk-5r37rwq1.js +0 -4
- package/web/chunk-6bwgdvf6.js +0 -1
- package/web/chunk-7f1t7z72.js +0 -2
- package/web/chunk-7x35g67d.js +0 -78
- package/web/chunk-8pzg8qw4.js +0 -1
- package/web/chunk-8r0s8tx7.js +0 -1
- package/web/chunk-9p5dfvav.js +0 -1
- package/web/chunk-9q9w9pay.js +0 -1
- package/web/chunk-a3teqvz2.js +0 -39
- package/web/chunk-ahztazsg.js +0 -1
- package/web/chunk-bd8ftfxn.js +0 -3
- package/web/chunk-c03bt2pz.js +0 -1
- package/web/chunk-c1ha2xg6.js +0 -8
- package/web/chunk-cgng31df.js +0 -1
- package/web/chunk-cvd4f51j.js +0 -1
- package/web/chunk-cybvxssy.js +0 -1
- package/web/chunk-d22wq71s.js +0 -1
- package/web/chunk-dynajx8x.js +0 -2
- package/web/chunk-f3vv7n52.js +0 -1
- package/web/chunk-fmthkpff.js +0 -1
- package/web/chunk-fpa81dv7.js +0 -62
- package/web/chunk-g17n6asp.js +0 -1
- package/web/chunk-g9dzaw9e.js +0 -30
- package/web/chunk-gcwhx3av.js +0 -1139
- package/web/chunk-gf8vm6b5.js +0 -1
- package/web/chunk-gnmeyy4h.js +0 -1
- package/web/chunk-hn7mhsbg.js +0 -1
- package/web/chunk-jfvxxp5c.js +0 -1
- package/web/chunk-k8h8zx6r.js +0 -24
- package/web/chunk-m3ajw575.js +0 -1
- package/web/chunk-mbwwj216.js +0 -1
- package/web/chunk-mz9b5bsa.js +0 -1
- package/web/chunk-np33kmn4.js +0 -1
- package/web/chunk-nvk8mazs.js +0 -1
- package/web/chunk-nyw5ewgv.js +0 -1
- package/web/chunk-p56dcqpr.js +0 -1
- package/web/chunk-pdn4r8x4.js +0 -1
- package/web/chunk-qpt34d8d.js +0 -1
- package/web/chunk-qskt3tqa.js +0 -1
- package/web/chunk-qt3n897m.js +0 -4
- package/web/chunk-r1rt48h9.js +0 -1
- package/web/chunk-r7tgd2fm.js +0 -7
- package/web/chunk-rznszqmy.js +0 -1
- package/web/chunk-s1pefd34.js +0 -1
- package/web/chunk-sc29azev.js +0 -1
- package/web/chunk-t4jc4nac.js +0 -1
- package/web/chunk-t7g366a5.js +0 -24
- package/web/chunk-thbqwq6b.js +0 -1
- package/web/chunk-v94v68xg.js +0 -36
- package/web/chunk-wcphswcx.js +0 -2
- package/web/chunk-wwcnvyjh.css +0 -1
- package/web/chunk-xce8n339.js +0 -1
- package/web/chunk-xfd3b01q.js +0 -1
- package/web/chunk-xtss82z2.js +0 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{P}from"./chunk-c4qr1f41.js";var i="v1";function s(r){let e=new Map;if(!r)return e;for(let t of r.split(",")){let a=t.trim();if(!a)continue;let[n,o]=a.split("=",2);if(!n||!o)continue;e.set(n.trim(),o.trim())}return e}function mr(r,e){if(e?.azureDeploymentName)return e.azureDeploymentName;return s(P("AZURE_OPENAI_DEPLOYMENT_NAME_MAP",e?.env)).get(r.id)||r.id}function m(r){let e=r.trim().replace(/\/+$/,""),t;try{t=new URL(e)}catch{throw Error(`Invalid Azure OpenAI base URL: ${r}`)}let a=t.hostname.endsWith(".openai.azure.com")||t.hostname.endsWith(".cognitiveservices.azure.com")||t.hostname.endsWith(".ai.azure.com"),n=t.pathname.replace(/\/+$/,"");if(a&&(n===""||n==="/"||n==="/openai"||n==="/openai/v1/responses"))t.pathname="/openai/v1",t.search="";return t.toString().replace(/\/+$/,"")}function u(r){return`https://${r}.openai.azure.com/openai/v1`}function
|
|
3
|
-
export{mr,
|
|
2
|
+
import{P}from"./chunk-c4qr1f41.js";var i="v1";function s(r){let e=new Map;if(!r)return e;for(let t of r.split(",")){let a=t.trim();if(!a)continue;let[n,o]=a.split("=",2);if(!n||!o)continue;e.set(n.trim(),o.trim())}return e}function mr(r,e){if(e?.azureDeploymentName)return e.azureDeploymentName;return s(P("AZURE_OPENAI_DEPLOYMENT_NAME_MAP",e?.env)).get(r.id)||r.id}function m(r){let e=r.trim().replace(/\/+$/,""),t;try{t=new URL(e)}catch{throw Error(`Invalid Azure OpenAI base URL: ${r}`)}let a=t.hostname.endsWith(".openai.azure.com")||t.hostname.endsWith(".cognitiveservices.azure.com")||t.hostname.endsWith(".ai.azure.com"),n=t.pathname.replace(/\/+$/,"");if(a&&(n===""||n==="/"||n==="/openai"||n==="/openai/v1/responses"))t.pathname="/openai/v1",t.search="";return t.toString().replace(/\/+$/,"")}function u(r){return`https://${r}.openai.azure.com/openai/v1`}function to(r,e){let t=e?.azureBaseUrl?.trim()||P("AZURE_OPENAI_BASE_URL",e?.env)?.trim()||void 0,a=e?.azureResourceName||P("AZURE_OPENAI_RESOURCE_NAME",e?.env),n=t;if(!n&&a)n=u(a);if(!n&&r.baseUrl)n=r.baseUrl;if(!n)throw Error("Azure OpenAI base URL is required. Set AZURE_OPENAI_BASE_URL or AZURE_OPENAI_RESOURCE_NAME, or pass azureBaseUrl, azureResourceName, or model.baseUrl.");return m(n)}function jo(r,e){return{baseUrl:to(r,e),apiVersion:e?.azureApiVersion||P("AZURE_OPENAI_API_VERSION",e?.env)||i}}
|
|
3
|
+
export{mr,to,jo};
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{M,Ve}from"./chunk-
|
|
2
|
+
import{M,Ve}from"./chunk-n2jcx65v.js";function H(e,t,r){return{role:"assistant",content:[],api:e.api,provider:e.provider,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:"error",errorMessage:t instanceof Error?t.message:String(t),timestamp:r}}function z(e){return typeof e.result==="function"}async function F(e,t){for await(let r of t)e.push(r);e.end(z(t)?await t.result():void 0)}function Ie(e,t){let r=Date.now(),n=new M;return t().then((s)=>F(n,s)).catch((s)=>{let o=H(e,s,r);n.push({type:"error",reason:"error",error:o}),n.end(o)}),n}function te(e,t){let r={stream:(n,s,o)=>Ie(n,async()=>(await e()).stream(n,s,o)),streamSimple:(n,s,o)=>Ie(n,async()=>(await e()).streamSimple(n,s,o))};if(t?.fetchDeferred)r.fetchDeferred=(n,s,o)=>Ie(n,async()=>{let i=await e();if(!i.fetchDeferred)throw Error("API does not support deferred responses");return i.fetchDeferred(n,s,o)});if(t?.cancelDeferred)r.cancelDeferred=async(n,s,o)=>{let i=await e();if(!i.cancelDeferred)throw Error("API cannot cancel deferred responses");await i.cancelDeferred(n,s,o)};return r}var J=function(e,t){if(typeof e==="string"&&/^\.\.?\//.test(e))return e.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i,function(r,n,s,o,i){return n?t?".jsx":".js":s&&(!o||!i)?r:s+o+"."+i.toLowerCase()+"js"});return e},O=(e)=>import(J(e));function V(){return globalThis.process?.env}function Ho(){return{async env(e){let t=V()?.[e];return typeof t==="string"&&t.trim().length>0?t:void 0},async fileExists(e){try{let t=await O("node:fs/promises"),r=e;if(r.startsWith("~"))r=(await O("node:os")).homedir()+r.slice(1);return await t.access(r),!0}catch{return!1}}}}function R(e){if(e.reason!==void 0)return e.reason;let t=Error("The operation was aborted");return t.name="AbortError",t}function g(e){return e??new AbortController().signal}function v(e,t){if(t.aborted)return e.catch(()=>{}),Promise.reject(R(t));return new Promise((r,n)=>{let s=!1,o=()=>t.removeEventListener("abort",i),i=()=>{if(s)return;s=!0,o(),n(R(t))};if(t.addEventListener("abort",i,{once:!0}),e.then((c)=>{if(s)return;s=!0,o(),r(c)},(c)=>{if(s)return;s=!0,o(),n(c)}),t.aborted)i()})}class zn{credentials=new Map;chains=new Map;enqueue(e,t,r){let n=g(r?.signal),s=this.chains.get(e)??Promise.resolve(),o=(async()=>(await s.catch(()=>{}),n.throwIfAborted(),t()))(),i=o.catch(()=>{});return this.chains.set(e,i),i.then(()=>{if(this.chains.get(e)===i)this.chains.delete(e)}),v(o,n)}async read(e,t){return t?.signal?.throwIfAborted(),this.credentials.get(e)}async list(e){return e?.signal?.throwIfAborted(),[...this.credentials].map(([t,r])=>({providerId:t,type:r.type}))}modify(e,t,r){return this.enqueue(e,async()=>{let n=this.credentials.get(e),s=await t(n);if(r?.signal?.throwIfAborted(),s!==void 0)this.credentials.set(e,s);return s??n},r)}delete(e,t){return this.enqueue(e,async()=>{this.credentials.delete(e)},t)}}class I extends Error{code;constructor(e,t,r){super(Y(t,r?.cause),r);this.name="ModelsError",this.code=e}}function Y(e,t){if(t===void 0||t===null)return e;let r=Ve(t).trim();if(!r||e.includes(r))return e;return`${e}: ${r}`}function E(e,t,r,n){let s=g(n?.signal);return v(X(e,t,r,n,s),s)}async function X(e,t,r,n,s){s.throwIfAborted();let o=n?.env?B(r,n.env):r;if(n?.apiKey!==void 0&&e.auth.apiKey)return P(o,e.auth.apiKey,e.id,{type:"api_key",key:n.apiKey,env:n.env},s);let i=await se(t,e.id,s);if(i){if(i.type==="oauth"&&e.auth.oauth)return ne(t,e.id,e.auth.oauth,i,s,n?.minOAuthValidityMs);if(i.type==="api_key"&&e.auth.apiKey){let c=n?.env?{...i,env:{...i.env,...n.env}}:i;return P(o,e.auth.apiKey,e.id,c,s)}return}return e.auth.apiKey?P(o,e.auth.apiKey,e.id,void 0,s):void 0}function B(e,t){return{env:async(r)=>t[r]||await e.env(r),fileExists:(r)=>e.fileExists(r)}}var Z=300000,ee=15000;async function T(e,t,r,n,s){let o,i=new AbortController,c=()=>i.abort(s.reason);if(s.addEventListener("abort",c,{once:!0}),s.aborted)c();try{o=await e.modify(t,async(u)=>{if(s.removeEventListener("abort",c),s.throwIfAborted(),u?.type!=="oauth")return;if(!n(u))return;try{return await r.refresh(u,AbortSignal.timeout(ee))}catch(f){throw new I("oauth",`OAuth refresh failed for ${t}`,{cause:f})}},{signal:i.signal})}catch(u){if(u instanceof I)throw u;throw s.throwIfAborted(),new I("auth",`Credential store modify failed for ${t}`,{cause:u})}finally{s.removeEventListener("abort",c)}return o?.type==="oauth"?o:void 0}async function ne(e,t,r,n,s,o){let i=Math.max(Z,o??0),c=(f)=>Date.now()+i>=f.expires,u=n;if(c(u)){let f=await T(e,t,r,c,s);if(!f)return;if(u=f,o!==void 0&&c(u))throw new I("oauth",`OAuth refresh returned a token that expires too soon for ${t}`)}try{return{auth:await r.toAuth(u),source:"OAuth"}}catch(f){throw new I("oauth",`OAuth auth derivation failed for ${t}`,{cause:f})}}async function P(e,t,r,n,s){try{return await t.resolve({ctx:e,credential:n,signal:s})}catch(o){throw new I("auth",`API key auth failed for provider ${r}`,{cause:o})}}async function se(e,t,r){try{return await e.read(t,{signal:r})}catch(n){throw new I("auth",`Credential store read failed for ${t}`,{cause:n})}}class jn{entries=new Map;async read(e,t){t?.signal?.throwIfAborted();let r=this.entries.get(e);return r?structuredClone(r):void 0}async write(e,t,r){r?.signal?.throwIfAborted(),this.entries.set(e,structuredClone(t))}async delete(e,t){t?.signal?.throwIfAborted(),this.entries.delete(e)}}function ht(e){return e.type??"chat"}function Me(e,t){return ht(e)===t}function q(e){if(!Me(e,"chat"))throw new I("provider",`Model ${e.provider}/${e.id} is not a chat model`)}function _(e){if(!Me(e,"image"))throw new I("provider",`Model ${e.provider}/${e.id} is not an image model`)}function K(e){if(!Me(e,"classifier"))throw new I("provider",`Model ${e.provider}/${e.id} is not a classifier model`)}function L(e,t){if(t.images?.length&&!e.input.includes("image"))throw new I("provider",`Model ${e.provider}/${e.id} does not accept image input`)}function k(e,t,r=!1){return{api:e.api,provider:e.provider,model:e.id,output:[],stopReason:r?"aborted":"error",errorMessage:t instanceof Error?t.message:String(t),timestamp:Date.now()}}function D(e,t,r=!1){return{api:e.api,provider:e.provider,model:e.id,answers:{},stopReason:r?"aborted":"error",errorMessage:t instanceof Error?t.message:String(t),timestamp:Date.now()}}function dr(e,t=`
|
|
3
3
|
`){if(typeof e==="string")return e;return e.filter((r)=>r.type==="text").map((r)=>r.text).join(t)}function U(e){let t=[dr(e.content)];for(let r of Object.values(e.sections??{}))if(r!==null)t.push(r);return t.filter((r)=>r.length>0).join(`
|
|
4
4
|
|
|
5
5
|
`)}function Le(e){let t=[],r=dr(e.content);if(r.length>0)t.push(r);for(let[n,s]of Object.entries(e.sections??{}))t.push(s===null?`Removed system prompt section "${n}".`:`Updated system prompt section "${n}":
|
|
6
6
|
|
|
7
7
|
${s}`);return t.join(`
|
|
8
8
|
|
|
9
|
-
`)}function
|
|
9
|
+
`)}function Vn(e,t){let r=e!==void 0&&e.length>0,n=t!==void 0&&t.length>0;if(!r&&!n)return;return{role:"system",content:e??"",...n?{toolsAdded:t}:{},timestamp:0}}function ft(e){let t=Vn(e.systemPrompt,e.tools);return{messages:t?[t,...e.messages]:e.messages}}function x(e){return e.role==="system"}function me(e){let t=e[0];return t&&x(t)?t:void 0}function $t(e){return me(e)?e.slice(1):e}function oe(e){let t=new Map;for(let r of e){if(!x(r))continue;for(let n of r.toolsRemoved??[])t.delete(n.name);for(let n of r.toolsAdded??[])t.set(n.name,n)}return[...t.values()]}function Xr(e){let t=[],r=new Map,n;for(let o of e){if(!x(o))continue;n??=o.timestamp;let i=dr(o.content);if(i.length>0)t.push(i);for(let[c,u]of Object.entries(o.sections??{}))if(u===null)r.delete(c);else r.set(c,u)}let s=oe(e);if(n===void 0&&s.length===0)return;return{role:"system",content:t.join(`
|
|
10
10
|
|
|
11
|
-
`),...r.size>0?{sections:Object.fromEntries(r)}:{},...s.length>0?{toolsAdded:s}:{},timestamp:n??0}}function Ho(e){let t=Xr(e);return t?U(t):""}function Oe(e){let t=Xr(e.messages),r=e.messages.filter((n)=>n.role!=="system");return{messages:t?[t,...r]:r}}function re(e,t){return t?e:Oe(e)}function ot(e){return{name:e.name,description:e.description,parameters:JSON.parse(JSON.stringify(e.parameters)),...e.constrainedSampling===void 0?{}:{constrainedSampling:e.constrainedSampling}}}function Qn(e,t){return JSON.stringify(ot(e))===JSON.stringify(ot(t))}function qo(e,t){let r=new Map(e.map((s)=>[s.name,s])),n=new Map(t.map((s)=>[s.name,s]));return{toolsAdded:t.filter((s)=>{let o=r.get(s.name);return o===void 0||!Qn(o,s)}).map(ot),toolsRemoved:e.filter((s)=>{let o=n.get(s.name);return o===void 0||!Qn(s,o)}).map((s)=>({name:s.name}))}}function ye(e){let t=new Map;for(let r of e){if(!x(r))continue;for(let n of r.toolsAdded??[])t.set(n.name,n)}return[...t.values()]}function ki(e){let t=new Map;for(let r of e){if(!x(r))continue;for(let n of r.toolsAdded??[]){let s=t.get(n.name);if(s!==void 0&&!Qn(s,n))return!0;t.set(n.name,n)}}return!1}function vi(e){let t=new Set;for(let r of e){if(!x(r))continue;if((r.toolsRemoved?.length??0)>0)return!0;for(let n of r.toolsAdded??[]){if(t.has(n.name))return!0;t.add(n.name)}}return!1}function be(e,t){let r=t&&!vi(e);return{requestTools:r?de(e)?.toolsAdded??[]:oe(e),anchorsAdditions:r}}var ie={chat:!0,image:!0,classifier:!0};function j(e){return Object.hasOwn(ie,ht(e))}function ae(e){return{...e,models:e.models.filter(j)}}function W(e,t){if(!e&&!t)return;let r={...e};for(let[n,s]of Object.entries(t??{})){let o=n.toLowerCase();for(let i of Object.keys(r))if(i.toLowerCase()===o)delete r[i];r[n]=s}return r}class N{providers=new Map;credentials;modelsStore;authContext;refreshGenerations=new Map;refreshControllers=new Map;publicationChains=new Map;constructor(e){this.credentials=e?.credentials??new jn,this.modelsStore=e?.modelsStore??new Vn,this.authContext=e?.authContext??$o()}setProvider(e){this.supersedeProviderRefresh(e.id),this.providers.set(e.id,e)}deleteProvider(e){this.supersedeProviderRefresh(e),this.providers.delete(e)}clearProviders(){for(let e of new Set([...this.providers.keys(),...this.refreshControllers.keys()]))this.supersedeProviderRefresh(e);this.providers.clear()}getProviders(){return Array.from(this.providers.values())}getProvider(e){return this.providers.get(e)}getModels(e){if(e!==void 0){let r=this.providers.get(e);if(!r)return[];try{return r.getModels()}catch{return[]}}let t=[];for(let r of this.providers.values())try{t.push(...r.getModels())}catch{}return t}getAllModels(e){if(e!==void 0){let r=this.providers.get(e);if(!r)return[];try{return r.getAllModels?.()??r.getModels()}catch{return[]}}let t=[];for(let r of this.providers.values())try{t.push(...r.getAllModels?.()??r.getModels())}catch{}return t}getModelsOfType(e,t){return this.getAllModels(t).filter((r)=>Me(r,e))}getModel(e,t){return this.getModels(e).find((r)=>r.id===t)}getModelOfType(e,t,r){return this.getModelsOfType(e,t).find((n)=>n.id===r)}supersedeProviderRefresh(e){let t=(this.refreshGenerations.get(e)??0)+1;this.refreshGenerations.set(e,t);let r=this.refreshControllers.get(e);if(r)this.refreshControllers.delete(e),r.abort();return t}beginProviderRefresh(e){let t=this.supersedeProviderRefresh(e),r=new AbortController;return this.refreshControllers.set(e,r),{generation:t,controller:r}}publishProviderModels(e,t,r,n){let s=this.publicationChains.get(e)??Promise.resolve(),o=(async()=>{if(await s.catch(()=>{}),r.aborted||this.refreshGenerations.get(e)!==t)return!1;if(n.persist===null)await this.modelsStore.delete(e,{signal:r});else if(n.persist!==void 0)await this.modelsStore.write(e,structuredClone(n.persist),{signal:r});if(r.aborted||this.refreshGenerations.get(e)!==t)return!1;return n.update?.(),!0})(),i=o.catch(()=>{});return this.publicationChains.set(e,i),i.then(()=>{if(this.publicationChains.get(e)===i)this.publicationChains.delete(e)}),v(o,r)}async runProviderRefreshPhase(e,t,r,n,s,o){let i=await this.modelsStore.read(e.id,{signal:o});await e.refreshModels({credential:t,stored:i?ae(structuredClone(i)):void 0,publish:(c)=>this.publishProviderModels(e.id,s,o,c),allowNetwork:r,force:r?n:void 0,signal:o,baseUrl:e.baseUrl})}async refresh(e={}){let t=e.allowNetwork??!0,r=g(e.signal),n=new Map;if(r.aborted)return{aborted:!0,errors:n};let s=e.providers?new Set(e.providers):void 0,o=Array.from(this.providers.values()).filter((c)=>c.refreshModels!==void 0&&(!s||s.has(c.id))),i=Promise.all(o.map(async(c)=>{let{generation:u,controller:f}=this.beginProviderRefresh(c.id),m=AbortSignal.any([r,f.signal]),b=(async()=>{let w,y;try{w=await this.readCredential(c.id,m)}catch(a){y=a}if(await this.runProviderRefreshPhase(c,w,!1,void 0,u,m),y!==void 0)throw y;if(!t||m.aborted)return;let A=await this.resolveRefreshCredential(c,w,m);if(!A)return;await this.runProviderRefreshPhase(c,A,!0,e.force,u,m)})();try{await v(b,m)}catch(w){if(!m.aborted)n.set(c.id,w instanceof Error?w:new I("model_source",`Model refresh failed for ${c.id}`,{cause:w}))}finally{if(this.refreshControllers.get(c.id)===f)this.refreshControllers.delete(c.id)}}));try{await v(i,r)}catch(c){if(!r.aborted)throw c}return{aborted:r.aborted,errors:new Map(n)}}async resolveRefreshCredential(e,t,r){if(t?.type==="oauth"){let i=e.auth.oauth;if(!i)return;if(Date.now()<t.expires)return t;if(r.aborted)return;return T(this.credentials,e.id,i,(c)=>Date.now()>=c.expires,r)}let n=e.auth.apiKey;if(!n)return;let s=t?.type==="api_key"?t:void 0,o=await n.resolve({ctx:this.authContext,credential:s,signal:r});if(!o)return;return{type:"api_key",key:o.auth.apiKey,env:o.env}}async readCredential(e,t){try{return await this.credentials.read(e,{signal:t})}catch(r){throw new I("auth",`Credential store read failed for ${e}`,{cause:r})}}async checkProviderAuth(e,t,r){if(t?.type==="oauth")return e.auth.oauth?{source:"OAuth",type:"oauth"}:void 0;let n=e.auth.apiKey;if(!n)return;if(n.check)try{return await n.check({ctx:this.authContext,credential:t?.type==="api_key"?t:void 0,signal:r})}catch(o){throw new I("auth",`API key auth check failed for provider ${e.id}`,{cause:o})}let s=await E(e,this.credentials,this.authContext,{signal:r});return s?{source:s.source,type:"api_key"}:void 0}checkAuth(e,t){let r=g(t?.signal),n=(async()=>{r.throwIfAborted();let s=this.providers.get(e);if(!s)return;return this.checkProviderAuth(s,await this.readCredential(e,r),r)})();return v(n,r)}async getAuthenticatedProviders(e,t){t.throwIfAborted();let r=e?[this.providers.get(e)].filter((s)=>s!==void 0):this.getProviders();return(await Promise.all(r.map(async(s)=>{let o=await this.readCredential(s.id,t);return{provider:s,credential:o,auth:await this.checkProviderAuth(s,o,t)}}))).filter((s)=>s.auth!==void 0)}getAvailable(e,t){let r=g(t?.signal),n=(async()=>(await this.getAuthenticatedProviders(e,r)).flatMap(({provider:o,credential:i})=>{let c=o.getModels();return o.filterModels?.(c,i)??c}))();return v(n,r)}async getAvailableOfType(e,t,r){return(await this.getAllAvailable(t,r)).filter((n)=>Me(n,e))}getAllAvailable(e,t){let r=g(t?.signal),n=(async()=>(await this.getAuthenticatedProviders(e,r)).flatMap(({provider:o,credential:i})=>{let c=o.getAllModels?.()??o.getModels();if(o.filterAllModels)return o.filterAllModels(c,i);if(!o.filterModels)return c;let u=new Set(o.filterModels(o.getModels(),i).map((f)=>f.id));return c.filter((f)=>!Me(f,"chat")||u.has(f.id))}))();return v(n,r)}async getAuth(e,t){let r=g(t?.signal),n=typeof e==="string"?e:e.provider,s=this.providers.get(n);if(!s)return;let o=await E(s,this.credentials,this.authContext,{...t,signal:r});if(!o||typeof e==="string"||!e.headers)return o;return{...o,auth:{...o.auth,headers:W(o.auth.headers,e.headers)}}}async login(e,t,r,n){let s=g(r.signal);s.throwIfAborted();let o=this.providers.get(e);if(!o)throw new I("provider",`Unknown provider: ${e}`);let i=t==="oauth"?o.auth.oauth:o.auth.apiKey;if(!i?.login)throw new I("auth",`${o.name} does not support ${t} login`);let c=i.login({...r,signal:s},n),u=await v(c,s),f=!1,m,b=new Promise((y)=>{m=y}),w=this.credentials.modify(e,async()=>(f=!0,m?.(),u),{signal:s});w.catch(()=>{});try{await new Promise((y,A)=>{let a=()=>{if(!f)A(s.reason)};if(s.addEventListener("abort",a,{once:!0}),Promise.race([b,w]).then(()=>{s.removeEventListener("abort",a),y()},(l)=>{s.removeEventListener("abort",a),A(l)}),s.aborted)a()}),await w}catch(y){throw s.throwIfAborted(),new I("auth",`Credential store modify failed for ${e}`,{cause:y})}return u}async logout(e,t){let r=g(t?.signal);r.throwIfAborted();try{await this.credentials.delete(e,{signal:r})}catch(n){throw r.throwIfAborted(),new I("auth",`Credential store delete failed for ${e}`,{cause:n})}}requireProvider(e){let t=this.providers.get(e.provider);if(!t)throw new I("provider",`Unknown provider: ${e.provider}`);return t}requireChatProvider(e){return q(e),this.requireProvider(e)}async applyAuth(e,t){this.requireProvider(e);let r=await this.getAuth(e,{apiKey:t?.apiKey,env:t?.env,signal:t?.signal});if(!r)throw new I("auth",`Provider is not configured: ${e.provider}`);let n=r.auth,s=t?.apiKey??n.apiKey,o=W(n.headers,t?.headers);if(t?.transformHeaders)o=await t.transformHeaders(o??{});let i=r.env||t?.env?{...r.env??{},...t?.env??{}}:void 0,c=n.baseUrl?{...e,baseUrl:n.baseUrl}:e,{transformHeaders:u,...f}=t??{},m={...f,apiKey:s,headers:o,env:i};return{requestModel:c,requestOptions:m}}stream(e,t,r){let n=ft(t);return Ie(e,async()=>{let s=this.requireChatProvider(e),{requestModel:o,requestOptions:i}=await this.applyAuth(e,r);return s.stream(o,n,i)})}async complete(e,t,r){return this.stream(e,t,r).result()}streamSimple(e,t,r){let n=ft(t);return Ie(e,async()=>{let s=this.requireChatProvider(e),{requestModel:o,requestOptions:i}=await this.applyAuth(e,r);return s.streamSimple(o,n,i)})}async completeSimple(e,t,r){return this.streamSimple(e,t,r).result()}streamDeferred(e,t,r){return Ie(e,async()=>{let n=this.requireChatProvider(e);if(!n.fetchDeferred)throw new I("provider",`Provider ${e.provider} does not support deferred responses`);let{requestModel:s,requestOptions:o}=await this.applyAuth(e,r);return n.fetchDeferred(s,t,o)})}async fetchDeferred(e,t,r){return this.streamDeferred(e,t,r).result()}async cancelDeferred(e,t,r){let n=this.requireChatProvider(e);if(!n.cancelDeferred)throw new I("provider",`Provider ${e.provider} does not support deferred responses`);let{requestModel:s,requestOptions:o}=await this.applyAuth(e,r);await n.cancelDeferred(s,t,o)}async generateImages(e,t,r){try{_(e);let n=this.requireProvider(e);if(!n.generateImages)throw new I("provider",`Provider ${e.provider} does not support image generation`);let{requestModel:s,requestOptions:o}=await this.applyAuth(e,r);return await n.generateImages(s,t,o)}catch(n){return k(e,n,r?.signal?.aborted)}}async classify(e,t,r){try{K(e),L(e,t);let n=this.requireProvider(e);if(!n.classify)throw new I("provider",`Provider ${e.provider} does not support classification`);let{requestModel:s,requestOptions:o}=await this.applyAuth(e,r);return await n.classify(s,t,o)}catch(n){return D(e,n,r?.signal?.aborted)}}}function Xn(e){return new N(e)}function d(e){let t=e.api&&typeof e.api.stream==="function"?e.api:void 0,r=t||!e.api?void 0:e.api,{images:n,classifiers:s}=e,o=t?[t]:Object.values(r??{}).filter((a)=>a!==void 0),i=Object.values(n??{}).filter((a)=>a!==void 0),c=Object.values(s??{}).filter((a)=>a!==void 0);if(o.length===0&&i.length===0&&c.length===0)throw Error(`Provider ${e.id}: at least one of "api", "images", or "classifiers" is required.`);let u=e.models,f=[],m=e.fetchModels,b=()=>{let a=[...u];for(let l of f){let h=a.findIndex((p)=>ht(p)===ht(l)&&p.id===l.id);if(h>=0)a[h]=l;else a.push(l)}return a},w=(a)=>t??r?.[a.api],y=(a,l)=>{let h=w(a);if(!h)return Ie(a,async()=>{throw new I("stream",`Provider ${e.id} has no API implementation for "${a.api}"`)});return l(h)},A={id:e.id,name:e.name??e.id,baseUrl:e.baseUrl,headers:e.headers,auth:e.auth,getModels:()=>b().filter((a)=>Me(a,"chat")),getAllModels:b,refreshModels:m?async(a)=>{if(a.stored){let p=a.stored.models.filter((C)=>C.provider===e.id).map((C)=>C);if(!await a.publish({update:()=>{f=p}}))return}if(!a.allowNetwork||a.signal.aborted)return;let l=await m(a);if(a.signal.aborted)return;let h=l.filter(j);await a.publish({persist:{models:h,checkedAt:Date.now()},update:()=>{f=h}})}:void 0,filterModels:e.filterModels,filterAllModels:e.filterAllModels,stream:(a,l,h)=>y(a,(p)=>p.stream(a,l,h)),streamSimple:(a,l,h)=>y(a,(p)=>p.streamSimple(a,l,h))};if(o.some((a)=>a.fetchDeferred!==void 0))A.fetchDeferred=(a,l,h)=>Ie(a,async()=>{let p=w(a);if(!p?.fetchDeferred)throw new I("provider",`Provider ${e.id} does not support deferred responses for "${a.api}"`);return p.fetchDeferred(a,l,h)});if(o.some((a)=>a.cancelDeferred!==void 0))A.cancelDeferred=async(a,l,h)=>{let p=w(a);if(!p?.cancelDeferred)throw new I("provider",`Provider ${e.id} cannot cancel deferred responses for "${a.api}"`);await p.cancelDeferred(a,l,h)};if(n&&i.length>0)A.generateImages=async(a,l,h)=>{let p=n[a.api];if(!p)return k(a,new I("provider",`Provider ${e.id} has no image generation implementation for "${a.api}"`));return p.generateImages(a,l,h)};if(s&&c.length>0)A.classify=async(a,l,h)=>{let p=s[a.api];if(!p)return D(a,new I("provider",`Provider ${e.id} has no classifier implementation for "${a.api}"`));return p.classify(a,l,h)};return A}function Ri(e,t){return Me(e,"chat")&&e.api===t}function Q(e,t){let r=t.input+t.cacheRead+t.cacheWrite,n=e.cost,s=-1;for(let c of e.cost.tiers??[])if(r>c.inputTokensAbove&&c.inputTokensAbove>s)n=c,s=c.inputTokensAbove;let o=t.cacheWrite1h??0,i=t.cacheWrite-o;return t.cost.input=n.input/1e6*t.input,t.cost.output=n.output/1e6*t.output,t.cost.cacheRead=n.cacheRead/1e6*t.cacheRead,t.cost.cacheWrite=(n.cacheWrite*i+n.input*2*o)/1e6,t.cost.total=t.cost.input+t.cost.output+t.cost.cacheRead+t.cost.cacheWrite,t.cost}var S=["off","minimal","low","medium","high","xhigh","max"];function Jr(e){if(!e.reasoning)return["off"];return S.filter((t)=>{let r=e.thinkingLevelMap?.[t];if(r===null)return!1;if(t==="xhigh"||t==="max")return r!==void 0;return!0})}function G(e,t){let r=Jr(e);if(r.includes(t))return t;let n=S.indexOf(t);if(n===-1)return r[0]??"off";for(let s=n;s<S.length;s++){let o=S[s];if(r.includes(o))return o}for(let s=n-1;s>=0;s--){let o=S[s];if(r.includes(o))return o}return r[0]??"off"}function Ci(e,t){if(!e||!t)return!1;return ht(e)===ht(t)&&e.id===t.id&&e.provider===t.provider}
|
|
12
|
-
export{Ie,te
|
|
11
|
+
`),...r.size>0?{sections:Object.fromEntries(r)}:{},...s.length>0?{toolsAdded:s}:{},timestamp:n??0}}function qo(e){let t=Xr(e);return t?U(t):""}function Oe(e){let t=Xr(e.messages),r=e.messages.filter((n)=>n.role!=="system");return{messages:t?[t,...r]:r}}function re(e,t){return t?e:Oe(e)}function nt(e){return{name:e.name,description:e.description,parameters:JSON.parse(JSON.stringify(e.parameters)),...e.constrainedSampling===void 0?{}:{constrainedSampling:e.constrainedSampling}}}function Kn(e,t){return JSON.stringify(nt(e))===JSON.stringify(nt(t))}function Go(e,t){let r=new Map(e.map((s)=>[s.name,s])),n=new Map(t.map((s)=>[s.name,s]));return{toolsAdded:t.filter((s)=>{let o=r.get(s.name);return o===void 0||!Kn(o,s)}).map(nt),toolsRemoved:e.filter((s)=>{let o=n.get(s.name);return o===void 0||!Kn(s,o)}).map((s)=>({name:s.name}))}}function be(e){let t=new Map;for(let r of e){if(!x(r))continue;for(let n of r.toolsAdded??[])t.set(n.name,n)}return[...t.values()]}function Ii(e){let t=new Map;for(let r of e){if(!x(r))continue;for(let n of r.toolsAdded??[]){let s=t.get(n.name);if(s!==void 0&&!Kn(s,n))return!0;t.set(n.name,n)}}return!1}function yi(e){let t=new Set;for(let r of e){if(!x(r))continue;if((r.toolsRemoved?.length??0)>0)return!0;for(let n of r.toolsAdded??[]){if(t.has(n.name))return!0;t.add(n.name)}}return!1}function Se(e,t){let r=t&&!yi(e);return{requestTools:r?me(e)?.toolsAdded??[]:oe(e),anchorsAdditions:r}}var ie={chat:!0,image:!0,classifier:!0};function j(e){return Object.hasOwn(ie,ht(e))}function ae(e){return{...e,models:e.models.filter(j)}}function W(e,t){if(!e&&!t)return;let r={...e};for(let[n,s]of Object.entries(t??{})){let o=n.toLowerCase();for(let i of Object.keys(r))if(i.toLowerCase()===o)delete r[i];r[n]=s}return r}class N{providers=new Map;credentials;modelsStore;authContext;refreshGenerations=new Map;refreshControllers=new Map;publicationChains=new Map;constructor(e){this.credentials=e?.credentials??new zn,this.modelsStore=e?.modelsStore??new jn,this.authContext=e?.authContext??Ho()}setProvider(e){this.supersedeProviderRefresh(e.id),this.providers.set(e.id,e)}deleteProvider(e){this.supersedeProviderRefresh(e),this.providers.delete(e)}clearProviders(){for(let e of new Set([...this.providers.keys(),...this.refreshControllers.keys()]))this.supersedeProviderRefresh(e);this.providers.clear()}getProviders(){return Array.from(this.providers.values())}getProvider(e){return this.providers.get(e)}getModels(e){if(e!==void 0){let r=this.providers.get(e);if(!r)return[];try{return r.getModels()}catch{return[]}}let t=[];for(let r of this.providers.values())try{t.push(...r.getModels())}catch{}return t}getAllModels(e){if(e!==void 0){let r=this.providers.get(e);if(!r)return[];try{return r.getAllModels?.()??r.getModels()}catch{return[]}}let t=[];for(let r of this.providers.values())try{t.push(...r.getAllModels?.()??r.getModels())}catch{}return t}getModelsOfType(e,t){return this.getAllModels(t).filter((r)=>Me(r,e))}getModel(e,t){return this.getModels(e).find((r)=>r.id===t)}getModelOfType(e,t,r){return this.getModelsOfType(e,t).find((n)=>n.id===r)}supersedeProviderRefresh(e){let t=(this.refreshGenerations.get(e)??0)+1;this.refreshGenerations.set(e,t);let r=this.refreshControllers.get(e);if(r)this.refreshControllers.delete(e),r.abort();return t}beginProviderRefresh(e){let t=this.supersedeProviderRefresh(e),r=new AbortController;return this.refreshControllers.set(e,r),{generation:t,controller:r}}publishProviderModels(e,t,r,n){let s=this.publicationChains.get(e)??Promise.resolve(),o=(async()=>{if(await s.catch(()=>{}),r.aborted||this.refreshGenerations.get(e)!==t)return!1;if(n.persist===null)await this.modelsStore.delete(e,{signal:r});else if(n.persist!==void 0)await this.modelsStore.write(e,structuredClone(n.persist),{signal:r});if(r.aborted||this.refreshGenerations.get(e)!==t)return!1;return n.update?.(),!0})(),i=o.catch(()=>{});return this.publicationChains.set(e,i),i.then(()=>{if(this.publicationChains.get(e)===i)this.publicationChains.delete(e)}),v(o,r)}async runProviderRefreshPhase(e,t,r,n,s,o){let i=await this.modelsStore.read(e.id,{signal:o});await e.refreshModels({credential:t,stored:i?ae(structuredClone(i)):void 0,publish:(c)=>this.publishProviderModels(e.id,s,o,c),allowNetwork:r,force:r?n:void 0,signal:o,baseUrl:e.baseUrl})}async refresh(e={}){let t=e.allowNetwork??!0,r=g(e.signal),n=new Map;if(r.aborted)return{aborted:!0,errors:n};let s=e.providers?new Set(e.providers):void 0,o=Array.from(this.providers.values()).filter((c)=>c.refreshModels!==void 0&&(!s||s.has(c.id))),i=Promise.all(o.map(async(c)=>{let{generation:u,controller:f}=this.beginProviderRefresh(c.id),m=AbortSignal.any([r,f.signal]),b=(async()=>{let w,y;try{w=await this.readCredential(c.id,m)}catch(a){y=a}if(await this.runProviderRefreshPhase(c,w,!1,void 0,u,m),y!==void 0)throw y;if(!t||m.aborted)return;let A=await this.resolveRefreshCredential(c,w,m);if(!A)return;await this.runProviderRefreshPhase(c,A,!0,e.force,u,m)})();try{await v(b,m)}catch(w){if(!m.aborted)n.set(c.id,w instanceof Error?w:new I("model_source",`Model refresh failed for ${c.id}`,{cause:w}))}finally{if(this.refreshControllers.get(c.id)===f)this.refreshControllers.delete(c.id)}}));try{await v(i,r)}catch(c){if(!r.aborted)throw c}return{aborted:r.aborted,errors:new Map(n)}}async resolveRefreshCredential(e,t,r){if(t?.type==="oauth"){let i=e.auth.oauth;if(!i)return;if(Date.now()<t.expires)return t;if(r.aborted)return;return T(this.credentials,e.id,i,(c)=>Date.now()>=c.expires,r)}let n=e.auth.apiKey;if(!n)return;let s=t?.type==="api_key"?t:void 0,o=await n.resolve({ctx:this.authContext,credential:s,signal:r});if(!o)return;return{type:"api_key",key:o.auth.apiKey,env:o.env}}async readCredential(e,t){try{return await this.credentials.read(e,{signal:t})}catch(r){throw new I("auth",`Credential store read failed for ${e}`,{cause:r})}}async checkProviderAuth(e,t,r){if(t?.type==="oauth")return e.auth.oauth?{source:"OAuth",type:"oauth"}:void 0;let n=e.auth.apiKey;if(!n)return;if(n.check)try{return await n.check({ctx:this.authContext,credential:t?.type==="api_key"?t:void 0,signal:r})}catch(o){throw new I("auth",`API key auth check failed for provider ${e.id}`,{cause:o})}let s=await E(e,this.credentials,this.authContext,{signal:r});return s?{source:s.source,type:"api_key"}:void 0}checkAuth(e,t){let r=g(t?.signal),n=(async()=>{r.throwIfAborted();let s=this.providers.get(e);if(!s)return;return this.checkProviderAuth(s,await this.readCredential(e,r),r)})();return v(n,r)}async getAuthenticatedProviders(e,t){t.throwIfAborted();let r=e?[this.providers.get(e)].filter((s)=>s!==void 0):this.getProviders();return(await Promise.all(r.map(async(s)=>{let o=await this.readCredential(s.id,t);return{provider:s,credential:o,auth:await this.checkProviderAuth(s,o,t)}}))).filter((s)=>s.auth!==void 0)}getAvailable(e,t){let r=g(t?.signal),n=(async()=>(await this.getAuthenticatedProviders(e,r)).flatMap(({provider:o,credential:i})=>{let c=o.getModels();return o.filterModels?.(c,i)??c}))();return v(n,r)}async getAvailableOfType(e,t,r){return(await this.getAllAvailable(t,r)).filter((n)=>Me(n,e))}getAllAvailable(e,t){let r=g(t?.signal),n=(async()=>(await this.getAuthenticatedProviders(e,r)).flatMap(({provider:o,credential:i})=>{let c=o.getAllModels?.()??o.getModels();if(o.filterAllModels)return o.filterAllModels(c,i);if(!o.filterModels)return c;let u=new Set(o.filterModels(o.getModels(),i).map((f)=>f.id));return c.filter((f)=>!Me(f,"chat")||u.has(f.id))}))();return v(n,r)}async getAuth(e,t){let r=g(t?.signal),n=typeof e==="string"?e:e.provider,s=this.providers.get(n);if(!s)return;let o=await E(s,this.credentials,this.authContext,{...t,signal:r});if(!o||typeof e==="string"||!e.headers)return o;return{...o,auth:{...o.auth,headers:W(o.auth.headers,e.headers)}}}async login(e,t,r,n){let s=g(r.signal);s.throwIfAborted();let o=this.providers.get(e);if(!o)throw new I("provider",`Unknown provider: ${e}`);let i=t==="oauth"?o.auth.oauth:o.auth.apiKey;if(!i?.login)throw new I("auth",`${o.name} does not support ${t} login`);let c=i.login({...r,signal:s},n),u=await v(c,s),f=!1,m,b=new Promise((y)=>{m=y}),w=this.credentials.modify(e,async()=>(f=!0,m?.(),u),{signal:s});w.catch(()=>{});try{await new Promise((y,A)=>{let a=()=>{if(!f)A(s.reason)};if(s.addEventListener("abort",a,{once:!0}),Promise.race([b,w]).then(()=>{s.removeEventListener("abort",a),y()},(l)=>{s.removeEventListener("abort",a),A(l)}),s.aborted)a()}),await w}catch(y){throw s.throwIfAborted(),new I("auth",`Credential store modify failed for ${e}`,{cause:y})}return u}async logout(e,t){let r=g(t?.signal);r.throwIfAborted();try{await this.credentials.delete(e,{signal:r})}catch(n){throw r.throwIfAborted(),new I("auth",`Credential store delete failed for ${e}`,{cause:n})}}requireProvider(e){let t=this.providers.get(e.provider);if(!t)throw new I("provider",`Unknown provider: ${e.provider}`);return t}requireChatProvider(e){return q(e),this.requireProvider(e)}async applyAuth(e,t){this.requireProvider(e);let r=await this.getAuth(e,{apiKey:t?.apiKey,env:t?.env,signal:t?.signal});if(!r)throw new I("auth",`Provider is not configured: ${e.provider}`);let n=r.auth,s=t?.apiKey??n.apiKey,o=W(n.headers,t?.headers);if(t?.transformHeaders)o=await t.transformHeaders(o??{});let i=r.env||t?.env?{...r.env??{},...t?.env??{}}:void 0,c=n.baseUrl?{...e,baseUrl:n.baseUrl}:e,{transformHeaders:u,...f}=t??{},m={...f,apiKey:s,headers:o,env:i};return{requestModel:c,requestOptions:m}}stream(e,t,r){let n=ft(t);return Ie(e,async()=>{let s=this.requireChatProvider(e),{requestModel:o,requestOptions:i}=await this.applyAuth(e,r);return s.stream(o,n,i)})}async complete(e,t,r){return this.stream(e,t,r).result()}streamSimple(e,t,r){let n=ft(t);return Ie(e,async()=>{let s=this.requireChatProvider(e),{requestModel:o,requestOptions:i}=await this.applyAuth(e,r);return s.streamSimple(o,n,i)})}async completeSimple(e,t,r){return this.streamSimple(e,t,r).result()}streamDeferred(e,t,r){return Ie(e,async()=>{let n=this.requireChatProvider(e);if(!n.fetchDeferred)throw new I("provider",`Provider ${e.provider} does not support deferred responses`);let{requestModel:s,requestOptions:o}=await this.applyAuth(e,r);return n.fetchDeferred(s,t,o)})}async fetchDeferred(e,t,r){return this.streamDeferred(e,t,r).result()}async cancelDeferred(e,t,r){let n=this.requireChatProvider(e);if(!n.cancelDeferred)throw new I("provider",`Provider ${e.provider} does not support deferred responses`);let{requestModel:s,requestOptions:o}=await this.applyAuth(e,r);await n.cancelDeferred(s,t,o)}async generateImages(e,t,r){try{_(e);let n=this.requireProvider(e);if(!n.generateImages)throw new I("provider",`Provider ${e.provider} does not support image generation`);let{requestModel:s,requestOptions:o}=await this.applyAuth(e,r);return await n.generateImages(s,t,o)}catch(n){return k(e,n,r?.signal?.aborted)}}async classify(e,t,r){try{K(e),L(e,t);let n=this.requireProvider(e);if(!n.classify)throw new I("provider",`Provider ${e.provider} does not support classification`);let{requestModel:s,requestOptions:o}=await this.applyAuth(e,r);return await n.classify(s,t,o)}catch(n){return D(e,n,r?.signal?.aborted)}}}function Qn(e){return new N(e)}function d(e){let t=e.api&&typeof e.api.stream==="function"?e.api:void 0,r=t||!e.api?void 0:e.api,{images:n,classifiers:s}=e,o=t?[t]:Object.values(r??{}).filter((a)=>a!==void 0),i=Object.values(n??{}).filter((a)=>a!==void 0),c=Object.values(s??{}).filter((a)=>a!==void 0);if(o.length===0&&i.length===0&&c.length===0)throw Error(`Provider ${e.id}: at least one of "api", "images", or "classifiers" is required.`);let u=e.models,f=[],m=e.fetchModels,b=()=>{let a=[...u];for(let l of f){let h=a.findIndex((p)=>ht(p)===ht(l)&&p.id===l.id);if(h>=0)a[h]=l;else a.push(l)}return a},w=(a)=>t??r?.[a.api],y=(a,l)=>{let h=w(a);if(!h)return Ie(a,async()=>{throw new I("stream",`Provider ${e.id} has no API implementation for "${a.api}"`)});return l(h)},A={id:e.id,name:e.name??e.id,baseUrl:e.baseUrl,headers:e.headers,auth:e.auth,getModels:()=>b().filter((a)=>Me(a,"chat")),getAllModels:b,refreshModels:m?async(a)=>{if(a.stored){let p=a.stored.models.filter((C)=>C.provider===e.id).map((C)=>C);if(!await a.publish({update:()=>{f=p}}))return}if(!a.allowNetwork||a.signal.aborted)return;let l=await m(a);if(a.signal.aborted)return;let h=l.filter(j);await a.publish({persist:{models:h,checkedAt:Date.now()},update:()=>{f=h}})}:void 0,filterModels:e.filterModels,filterAllModels:e.filterAllModels,stream:(a,l,h)=>y(a,(p)=>p.stream(a,l,h)),streamSimple:(a,l,h)=>y(a,(p)=>p.streamSimple(a,l,h))};if(o.some((a)=>a.fetchDeferred!==void 0))A.fetchDeferred=(a,l,h)=>Ie(a,async()=>{let p=w(a);if(!p?.fetchDeferred)throw new I("provider",`Provider ${e.id} does not support deferred responses for "${a.api}"`);return p.fetchDeferred(a,l,h)});if(o.some((a)=>a.cancelDeferred!==void 0))A.cancelDeferred=async(a,l,h)=>{let p=w(a);if(!p?.cancelDeferred)throw new I("provider",`Provider ${e.id} cannot cancel deferred responses for "${a.api}"`);await p.cancelDeferred(a,l,h)};if(n&&i.length>0)A.generateImages=async(a,l,h)=>{let p=n[a.api];if(!p)return k(a,new I("provider",`Provider ${e.id} has no image generation implementation for "${a.api}"`));return p.generateImages(a,l,h)};if(s&&c.length>0)A.classify=async(a,l,h)=>{let p=s[a.api];if(!p)return D(a,new I("provider",`Provider ${e.id} has no classifier implementation for "${a.api}"`));return p.classify(a,l,h)};return A}function Mi(e,t){return Me(e,"chat")&&e.api===t}function Q(e,t){let r=t.input+t.cacheRead+t.cacheWrite,n=e.cost,s=-1;for(let c of e.cost.tiers??[])if(r>c.inputTokensAbove&&c.inputTokensAbove>s)n=c,s=c.inputTokensAbove;let o=t.cacheWrite1h??0,i=t.cacheWrite-o;return t.cost.input=n.input/1e6*t.input,t.cost.output=n.output/1e6*t.output,t.cost.cacheRead=n.cacheRead/1e6*t.cacheRead,t.cost.cacheWrite=(n.cacheWrite*i+n.input*2*o)/1e6,t.cost.total=t.cost.input+t.cost.output+t.cost.cacheRead+t.cost.cacheWrite,t.cost}var S=["off","minimal","low","medium","high","xhigh","max"];function Jr(e){if(!e.reasoning)return["off"];return S.filter((t)=>{let r=e.thinkingLevelMap?.[t];if(r===null)return!1;if(t==="xhigh"||t==="max")return r!==void 0;return!0})}function G(e,t){let r=Jr(e);if(r.includes(t))return t;let n=S.indexOf(t);if(n===-1)return r[0]??"off";for(let s=n;s<S.length;s++){let o=S[s];if(r.includes(o))return o}for(let s=n-1;s>=0;s--){let o=S[s];if(r.includes(o))return o}return r[0]??"off"}function Li(e,t){if(!e||!t)return!1;return ht(e)===ht(t)&&e.id===t.id&&e.provider===t.provider}
|
|
12
|
+
export{Ie,te,Ho,zn,I,jn,ht,Me,dr,U,Le,Vn,ft,me,$t,oe,Xr,qo,Oe,re,nt,Kn,Go,be,Ii,yi,Se,Qn,d,Mi,Q,Jr,G,Li};
|