@shumai-one/shumai 0.2.1 → 0.2.2

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.
Files changed (138) hide show
  1. package/bin/{chunk-qag3w2dd.js → chunk-0aj303as.js} +1 -1
  2. package/bin/{chunk-976v5s8y.js → chunk-0qkj838r.js} +1 -1
  3. package/bin/{chunk-mg6fce5x.js → chunk-0rxhc7ka.js} +1 -1
  4. package/bin/chunk-0xbf8bcg.js +2 -0
  5. package/bin/{chunk-t1mxqskx.js → chunk-15sefy5t.js} +1 -1
  6. package/bin/{chunk-jfjcxyhf.js → chunk-1wm57c6y.js} +3 -3
  7. package/bin/{chunk-7ktvhtp1.js → chunk-1xpec5r8.js} +1 -1
  8. package/bin/chunk-23d3968z.js +2 -0
  9. package/bin/{chunk-y4s3xr4n.js → chunk-262hkppb.js} +2 -2
  10. package/bin/{chunk-qj2kpkje.js → chunk-29tx9qe2.js} +1 -1
  11. package/bin/{chunk-a5s5ny4z.js → chunk-2aamsc5v.js} +1 -1
  12. package/bin/{chunk-gd5xwgp6.js → chunk-2aascrtb.js} +1 -1
  13. package/bin/chunk-2g12s6mc.js +2 -0
  14. package/bin/{chunk-pv76qkym.js → chunk-31baz5n0.js} +1 -1
  15. package/bin/{chunk-hmsb7ehr.js → chunk-46ar48f9.js} +1 -1
  16. package/bin/chunk-4e3jbp84.js +1 -0
  17. package/bin/chunk-4jk0y1w1.js +1 -0
  18. package/bin/{chunk-ga0drqj7.js → chunk-4qpa7b5t.js} +1 -1
  19. package/bin/{chunk-99db4j0k.js → chunk-54tr7y2x.js} +1 -1
  20. package/bin/{chunk-9n783gva.js → chunk-5d2q46mx.js} +1 -1
  21. package/bin/{chunk-qf7n519d.js → chunk-5m9be8an.js} +2 -2
  22. package/bin/{chunk-1w9dnk5p.js → chunk-5r8858hx.js} +1 -1
  23. package/bin/{chunk-ydagqpny.js → chunk-5t6c3038.js} +1 -1
  24. package/bin/chunk-6z65xd0w.js +3 -0
  25. package/bin/{chunk-qjjr3fff.js → chunk-77r8w95d.js} +1 -1
  26. package/bin/chunk-7e06b2zb.js +2 -0
  27. package/bin/{chunk-58aabg1f.js → chunk-7hsgmjpa.js} +2 -2
  28. package/bin/{chunk-7mnezagc.js → chunk-88fg1sw7.js} +1 -1
  29. package/bin/{chunk-m11g9hx7.js → chunk-8mkfgcvb.js} +2 -2
  30. package/bin/chunk-8tf6kgdj.js +2 -0
  31. package/bin/{chunk-b9hb5jzt.js → chunk-8wqfkm4c.js} +1 -1
  32. package/bin/{chunk-ag35pxnb.js → chunk-922nnh39.js} +1 -1
  33. package/bin/{chunk-ymyyap80.js → chunk-925q4paa.js} +1 -1
  34. package/bin/{chunk-wfex9jw0.js → chunk-92xxys10.js} +6 -6
  35. package/bin/{chunk-0a5k9avd.js → chunk-97jzve52.js} +1 -1
  36. package/bin/{chunk-dzm2f82x.js → chunk-9ab6k4rq.js} +1 -1
  37. package/bin/{chunk-mwh2n8yt.js → chunk-9avkn3x1.js} +1 -1
  38. package/bin/{chunk-pmx9760x.js → chunk-9h027f50.js} +1 -1
  39. package/bin/chunk-av71yjaa.js +1 -0
  40. package/bin/{chunk-mjncyjwf.js → chunk-b8js74jk.js} +1 -1
  41. package/bin/{chunk-861dz0bf.js → chunk-bd71dp4j.js} +1 -1
  42. package/bin/{chunk-v3j7acwn.js → chunk-bs0fjz3w.js} +2 -2
  43. package/bin/chunk-byqc8tzq.js +1 -0
  44. package/bin/chunk-ccw7mjgq.js +5 -0
  45. package/bin/{chunk-kj751zje.js → chunk-cxhmr356.js} +1 -1
  46. package/bin/{chunk-hcz4snm7.js → chunk-d3wmdjze.js} +1 -1
  47. package/bin/{chunk-82w2419d.js → chunk-de99643r.js} +2 -2
  48. package/bin/{chunk-dwf5e5g3.js → chunk-dghtwyq1.js} +1 -1
  49. package/bin/{chunk-5k03xpzq.js → chunk-dqgv5yy1.js} +1 -1
  50. package/bin/{chunk-q72ax3m8.js → chunk-e3s3rz2e.js} +1 -1
  51. package/bin/{chunk-79n633wf.js → chunk-e52nga6c.js} +1 -1
  52. package/bin/{chunk-8abs8d48.js → chunk-e7ndw3hg.js} +2 -2
  53. package/bin/chunk-f14sqw1d.js +1 -0
  54. package/bin/chunk-f7sbkfmk.js +2 -0
  55. package/bin/{chunk-2xnys7v4.js → chunk-fa2g2wge.js} +1 -1
  56. package/bin/{chunk-044xt1se.js → chunk-fbte2rmd.js} +1 -1
  57. package/bin/{chunk-k1r17nfa.js → chunk-fcvtgx1y.js} +1 -1
  58. package/bin/chunk-fd5a3pdd.js +1 -0
  59. package/bin/{chunk-hqptebzb.js → chunk-fepymbka.js} +1 -1
  60. package/bin/{chunk-cpr05qng.js → chunk-fz88kkk1.js} +1 -1
  61. package/bin/chunk-g6zzg6v2.js +1 -0
  62. package/bin/{chunk-6724dtsx.js → chunk-g8th86na.js} +1 -1
  63. package/bin/chunk-gswbc6y9.js +2 -0
  64. package/bin/{chunk-pvy0gccg.js → chunk-gtrc5ka2.js} +1 -1
  65. package/bin/chunk-h0ytx8zc.js +2 -0
  66. package/bin/{chunk-mv8c5fky.js → chunk-hkbybhww.js} +1 -1
  67. package/bin/{chunk-e3c6hyz8.js → chunk-hr97a5j5.js} +1 -1
  68. package/bin/{chunk-7h75r7ep.js → chunk-j8qtab70.js} +1 -1
  69. package/bin/{chunk-jyjnt0s9.js → chunk-jf3vn5c3.js} +2 -2
  70. package/bin/{chunk-azfgjqjx.js → chunk-kfhtk3eh.js} +1 -1
  71. package/bin/chunk-kr06nrbx.js +2 -0
  72. package/bin/{chunk-nceqrqey.js → chunk-m4zpf9gg.js} +1 -1
  73. package/bin/{chunk-1ae8csk6.js → chunk-mqjzmn0e.js} +1 -1
  74. package/bin/{chunk-sp75qe28.js → chunk-mzg1h07d.js} +1 -1
  75. package/bin/{chunk-cj5qwc9c.js → chunk-nrwna4ha.js} +1 -1
  76. package/bin/chunk-nyhqy6q2.js +62 -0
  77. package/bin/{chunk-4zq8vxcy.css → chunk-pmswtfe3.css} +1 -1
  78. package/bin/chunk-pq18zenh.js +2 -0
  79. package/bin/{chunk-p3emandj.js → chunk-q24epdh8.js} +2 -2
  80. package/bin/{chunk-2djd6pq1.js → chunk-qksb0v3c.js} +2 -2
  81. package/bin/chunk-qqk51620.js +2 -0
  82. package/bin/chunk-r0w920zb.js +1 -0
  83. package/bin/{chunk-2dz8nn9v.js → chunk-re0b7sj7.js} +1 -1
  84. package/bin/{chunk-x9q2vzn8.js → chunk-rtngbgpk.js} +1 -1
  85. package/bin/{chunk-zn9jbc6t.js → chunk-ry33f2qk.js} +1 -1
  86. package/bin/{chunk-k5bekrrp.js → chunk-s46zwr4p.js} +1 -1
  87. package/bin/chunk-s8t74q9m.js +1 -0
  88. package/bin/chunk-sd86v1e6.js +1 -0
  89. package/bin/{chunk-v98yavtp.js → chunk-srn8t0v7.js} +1 -1
  90. package/bin/chunk-szzff7gd.js +1 -0
  91. package/bin/{chunk-46c5xkmn.js → chunk-t3t6021k.js} +1 -1
  92. package/bin/{chunk-jbde7evp.js → chunk-thsbcbay.js} +1 -1
  93. package/bin/chunk-tspps87j.js +1 -0
  94. package/bin/{chunk-v05d1aeq.js → chunk-w7dn1m95.js} +1 -1
  95. package/bin/{chunk-w1d5vmtc.js → chunk-wc8sc9r9.js} +1 -1
  96. package/bin/chunk-wg98cacx.js +2 -0
  97. package/bin/chunk-wsyg4rwg.js +2 -0
  98. package/bin/{chunk-ga3mh3cd.js → chunk-xcwbg4w9.js} +1 -1
  99. package/bin/{chunk-9bpjfkjf.js → chunk-xyjw8w3r.js} +1 -1
  100. package/bin/chunk-y2qp11v9.js +1 -0
  101. package/bin/{chunk-ngd23mtc.js → chunk-ybhgmvxa.js} +1 -1
  102. package/bin/{chunk-phw4ne8b.js → chunk-ygz6pawn.js} +1 -1
  103. package/bin/{chunk-hy50c4pw.js → chunk-ymeycphq.js} +2 -2
  104. package/bin/{chunk-c1v946wb.js → chunk-zemrvz79.js} +2 -2
  105. package/bin/{chunk-29pkpmvy.js → chunk-zzx99j8t.js} +1 -1
  106. package/bin/shumai-app.html +1 -1
  107. package/bin/shumai-app.js +248 -224
  108. package/package.json +7 -7
  109. package/prisma/migrations/20260723025234_add_ai_usage_table/migration.sql +28 -0
  110. package/prisma/migrations/20260723032755_add_ai_usage_unique_constraint/migration.sql +8 -0
  111. package/prisma/schema.prisma +25 -0
  112. package/bin/chunk-211y81mp.js +0 -1
  113. package/bin/chunk-25d1g086.js +0 -2
  114. package/bin/chunk-4fnak2zn.js +0 -2
  115. package/bin/chunk-50ebjdkv.js +0 -2
  116. package/bin/chunk-5j7axztv.js +0 -2
  117. package/bin/chunk-6h4ay2p8.js +0 -2
  118. package/bin/chunk-6w5cn6p3.js +0 -3
  119. package/bin/chunk-75jka5v9.js +0 -5
  120. package/bin/chunk-9evm8x70.js +0 -1
  121. package/bin/chunk-bepnbw1g.js +0 -2
  122. package/bin/chunk-bg24g9kk.js +0 -1
  123. package/bin/chunk-dqtq9t8e.js +0 -1
  124. package/bin/chunk-fgnxtqtk.js +0 -1
  125. package/bin/chunk-fxvb6g2r.js +0 -1
  126. package/bin/chunk-kjkmh26f.js +0 -1
  127. package/bin/chunk-m3dwydr3.js +0 -2
  128. package/bin/chunk-mk1jewvw.js +0 -2
  129. package/bin/chunk-q9sgjs4d.js +0 -1
  130. package/bin/chunk-s2725w64.js +0 -1
  131. package/bin/chunk-saq5797j.js +0 -1
  132. package/bin/chunk-sy8rqacm.js +0 -2
  133. package/bin/chunk-t84t3v6q.js +0 -1
  134. package/bin/chunk-ttsqdsxr.js +0 -2
  135. package/bin/chunk-vreq89j6.js +0 -1
  136. package/bin/chunk-wbhsmhgp.js +0 -2
  137. package/bin/chunk-wf4d1anc.js +0 -62
  138. package/bin/chunk-xv4mfppt.js +0 -2
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{hk as r,ik as p,jk as d,kk as i}from"./chunk-mv8c5fky.js";import{qk as n}from"./chunk-ydagqpny.js";import{rk as b}from"./chunk-dzm2f82x.js";import{uk as I}from"./chunk-c1v946wb.js";import"./chunk-v3j7acwn.js";import{wk as u}from"./chunk-ga0drqj7.js";import{Ik as m,Kk as c}from"./chunk-2dz8nn9v.js";import{Lk as h,Mk as k,Nk as g}from"./chunk-ag35pxnb.js";import{Ok as w}from"./chunk-pmx9760x.js";import"./chunk-976v5s8y.js";function JJ(J){for(let X of J){if(X.role==="toolResult")return!0;if(X.role==="assistant"){if(X.content.some((Q)=>Q.type==="toolCall"))return!0}}return!1}function x(J){return J.type==="text"}function QJ(J){return J.type==="thinking"}function XJ(J){return J.type==="toolCall"}function YJ(J){return J.type==="image"}function a(J){if(J)return J;if(typeof process<"u"&&process.env.PI_CACHE_RETENTION==="long")return"long";return"short"}var _J=(J,X,Q)=>{let Y=new g;return(async()=>{let $={role:"assistant",content:[],api:J.api,provider:J.provider,model:J.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:"stop",timestamp:Date.now()};try{let N=Q?.apiKey;if(!N)throw Error(`No API key for provider: ${J.provider}`);let V=T(J),_=a(Q?.cacheRetention),q=_==="none"?void 0:Q?.sessionId,j=$J(J,X,N,Q?.headers,q,V),W=qJ(J,X,Q,V,_),H=await Q?.onPayload?.(W,J);if(H!==void 0)W=H;let K={...Q?.signal?{signal:Q.signal}:{},...Q?.timeoutMs!==void 0?{timeout:Q.timeoutMs}:{},maxRetries:Q?.maxRetries??0},{data:P,response:A}=await j.chat.completions.create(W,K).withResponse();await Q?.onResponse?.({status:A.status,headers:u(A.headers)},J),Y.push({type:"start",partial:$});let S=null,L=null,O=!1,M=new Map,f=new Map,U=$.content,v=(z)=>U.indexOf(z),s=(z)=>{let Z=v(z);if(Z===-1)return;if(z.type==="text")Y.push({type:"text_end",contentIndex:Z,content:z.text,partial:$});else if(z.type==="thinking")Y.push({type:"thinking_end",contentIndex:Z,content:z.thinking,partial:$});else if(z.type==="toolCall")z.arguments=I(z.partialArgs),delete z.partialArgs,delete z.streamIndex,Y.push({type:"toolcall_end",contentIndex:Z,toolCall:z,partial:$})},t=()=>{if(!S)S={type:"text",text:""},U.push(S),Y.push({type:"text_start",contentIndex:v(S),partial:$});return S},e=(z)=>{if(!L)L={type:"thinking",thinking:"",thinkingSignature:z},U.push(L),Y.push({type:"thinking_start",contentIndex:v(L),partial:$});return L},o=(z)=>{let Z=typeof z.index==="number"?z.index:void 0,G=Z!==void 0?M.get(Z):void 0;if(!G&&z.id)G=f.get(z.id);if(!G){if(G={type:"toolCall",id:z.id||"",name:z.function?.name||"",arguments:{},partialArgs:"",streamIndex:Z},Z!==void 0)M.set(Z,G);if(z.id)f.set(z.id,G);U.push(G),Y.push({type:"toolcall_start",contentIndex:v(G),partial:$})}if(Z!==void 0&&G.streamIndex===void 0)G.streamIndex=Z,M.set(Z,G);if(z.id)f.set(z.id,G);return G};for await(let z of P){if(!z||typeof z!=="object")continue;if($.responseId||=z.id,typeof z.model==="string"&&z.model.length>0&&z.model!==J.id)$.responseModel||=z.model;if(z.usage)$.usage=C(z.usage,J);let Z=Array.isArray(z.choices)?z.choices[0]:void 0;if(!Z)continue;if(!z.usage&&Z.usage)$.usage=C(Z.usage,J);if(Z.finish_reason){let G=DJ(Z.finish_reason);if($.stopReason=G.stopReason,G.errorMessage)$.errorMessage=G.errorMessage;O=!0}if(Z.delta){if(Z.delta.content!==null&&Z.delta.content!==void 0&&Z.delta.content.length>0){let E=t();E.text+=Z.delta.content,Y.push({type:"text_delta",contentIndex:v(E),delta:Z.delta.content,partial:$})}let G=["reasoning_content","reasoning","reasoning_text"],R=Z.delta,y=null;for(let E of G){let D=R[E];if(typeof D==="string"&&D.length>0){y=E;break}}if(y){let E=R[y];if(typeof E==="string"&&E.length>0){let D=J.provider==="opencode-go"&&y==="reasoning"?"reasoning_content":y,F=e(D);F.thinking+=E,Y.push({type:"thinking_delta",contentIndex:v(F),delta:E,partial:$})}}if(Z?.delta?.tool_calls)for(let E of Z.delta.tool_calls){let D=o(E);if(!D.id&&E.id)D.id=E.id,f.set(E.id,D);if(!D.name&&E.function?.name)D.name=E.function.name;let F="";if(E.function?.arguments)F=E.function.arguments,D.partialArgs=(D.partialArgs??"")+E.function.arguments,D.arguments=I(D.partialArgs);Y.push({type:"toolcall_delta",contentIndex:v(D),delta:F,partial:$})}let B=Z.delta.reasoning_details;if(B&&Array.isArray(B)){for(let E of B)if(E.type==="reasoning.encrypted"&&E.id&&E.data){let D=$.content.find((F)=>F.type==="toolCall"&&F.id===E.id);if(D)D.thoughtSignature=JSON.stringify(E)}}}}for(let z of U)s(z);if(Q?.signal?.aborted)throw Error("Request was aborted");if($.stopReason==="aborted")throw Error("Request was aborted");if($.stopReason==="error")throw Error($.errorMessage||"Provider returned an error stop reason");if(!O)throw Error("Stream ended without finish_reason");Y.push({type:"done",reason:$.stopReason,message:$}),Y.end()}catch(N){for(let _ of $.content)delete _.index,delete _.partialArgs,delete _.streamIndex;$.stopReason=Q?.signal?.aborted?"aborted":"error",$.errorMessage=N instanceof Error?N.message:JSON.stringify(N);let V=N?.error?.metadata?.raw;if(V)$.errorMessage+=`
2
+ import{nk as r,ok as p,pk as d,qk as i}from"./chunk-hkbybhww.js";import{wk as n}from"./chunk-5t6c3038.js";import{xk as b}from"./chunk-9ab6k4rq.js";import{Ak as I}from"./chunk-zemrvz79.js";import"./chunk-bs0fjz3w.js";import{Ck as u}from"./chunk-4qpa7b5t.js";import{Ok as m,Qk as c}from"./chunk-re0b7sj7.js";import{Rk as h,Sk as k,Tk as g}from"./chunk-922nnh39.js";import{Uk as w}from"./chunk-9h027f50.js";import"./chunk-0qkj838r.js";function JJ(J){for(let X of J){if(X.role==="toolResult")return!0;if(X.role==="assistant"){if(X.content.some((Q)=>Q.type==="toolCall"))return!0}}return!1}function x(J){return J.type==="text"}function QJ(J){return J.type==="thinking"}function XJ(J){return J.type==="toolCall"}function YJ(J){return J.type==="image"}function a(J){if(J)return J;if(typeof process<"u"&&process.env.PI_CACHE_RETENTION==="long")return"long";return"short"}var _J=(J,X,Q)=>{let Y=new g;return(async()=>{let $={role:"assistant",content:[],api:J.api,provider:J.provider,model:J.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:"stop",timestamp:Date.now()};try{let N=Q?.apiKey;if(!N)throw Error(`No API key for provider: ${J.provider}`);let V=T(J),_=a(Q?.cacheRetention),q=_==="none"?void 0:Q?.sessionId,j=$J(J,X,N,Q?.headers,q,V),W=qJ(J,X,Q,V,_),H=await Q?.onPayload?.(W,J);if(H!==void 0)W=H;let K={...Q?.signal?{signal:Q.signal}:{},...Q?.timeoutMs!==void 0?{timeout:Q.timeoutMs}:{},maxRetries:Q?.maxRetries??0},{data:P,response:A}=await j.chat.completions.create(W,K).withResponse();await Q?.onResponse?.({status:A.status,headers:u(A.headers)},J),Y.push({type:"start",partial:$});let S=null,L=null,O=!1,M=new Map,f=new Map,U=$.content,v=(z)=>U.indexOf(z),s=(z)=>{let Z=v(z);if(Z===-1)return;if(z.type==="text")Y.push({type:"text_end",contentIndex:Z,content:z.text,partial:$});else if(z.type==="thinking")Y.push({type:"thinking_end",contentIndex:Z,content:z.thinking,partial:$});else if(z.type==="toolCall")z.arguments=I(z.partialArgs),delete z.partialArgs,delete z.streamIndex,Y.push({type:"toolcall_end",contentIndex:Z,toolCall:z,partial:$})},t=()=>{if(!S)S={type:"text",text:""},U.push(S),Y.push({type:"text_start",contentIndex:v(S),partial:$});return S},e=(z)=>{if(!L)L={type:"thinking",thinking:"",thinkingSignature:z},U.push(L),Y.push({type:"thinking_start",contentIndex:v(L),partial:$});return L},o=(z)=>{let Z=typeof z.index==="number"?z.index:void 0,G=Z!==void 0?M.get(Z):void 0;if(!G&&z.id)G=f.get(z.id);if(!G){if(G={type:"toolCall",id:z.id||"",name:z.function?.name||"",arguments:{},partialArgs:"",streamIndex:Z},Z!==void 0)M.set(Z,G);if(z.id)f.set(z.id,G);U.push(G),Y.push({type:"toolcall_start",contentIndex:v(G),partial:$})}if(Z!==void 0&&G.streamIndex===void 0)G.streamIndex=Z,M.set(Z,G);if(z.id)f.set(z.id,G);return G};for await(let z of P){if(!z||typeof z!=="object")continue;if($.responseId||=z.id,typeof z.model==="string"&&z.model.length>0&&z.model!==J.id)$.responseModel||=z.model;if(z.usage)$.usage=C(z.usage,J);let Z=Array.isArray(z.choices)?z.choices[0]:void 0;if(!Z)continue;if(!z.usage&&Z.usage)$.usage=C(Z.usage,J);if(Z.finish_reason){let G=DJ(Z.finish_reason);if($.stopReason=G.stopReason,G.errorMessage)$.errorMessage=G.errorMessage;O=!0}if(Z.delta){if(Z.delta.content!==null&&Z.delta.content!==void 0&&Z.delta.content.length>0){let E=t();E.text+=Z.delta.content,Y.push({type:"text_delta",contentIndex:v(E),delta:Z.delta.content,partial:$})}let G=["reasoning_content","reasoning","reasoning_text"],R=Z.delta,y=null;for(let E of G){let D=R[E];if(typeof D==="string"&&D.length>0){y=E;break}}if(y){let E=R[y];if(typeof E==="string"&&E.length>0){let D=J.provider==="opencode-go"&&y==="reasoning"?"reasoning_content":y,F=e(D);F.thinking+=E,Y.push({type:"thinking_delta",contentIndex:v(F),delta:E,partial:$})}}if(Z?.delta?.tool_calls)for(let E of Z.delta.tool_calls){let D=o(E);if(!D.id&&E.id)D.id=E.id,f.set(E.id,D);if(!D.name&&E.function?.name)D.name=E.function.name;let F="";if(E.function?.arguments)F=E.function.arguments,D.partialArgs=(D.partialArgs??"")+E.function.arguments,D.arguments=I(D.partialArgs);Y.push({type:"toolcall_delta",contentIndex:v(D),delta:F,partial:$})}let B=Z.delta.reasoning_details;if(B&&Array.isArray(B)){for(let E of B)if(E.type==="reasoning.encrypted"&&E.id&&E.data){let D=$.content.find((F)=>F.type==="toolCall"&&F.id===E.id);if(D)D.thoughtSignature=JSON.stringify(E)}}}}for(let z of U)s(z);if(Q?.signal?.aborted)throw Error("Request was aborted");if($.stopReason==="aborted")throw Error("Request was aborted");if($.stopReason==="error")throw Error($.errorMessage||"Provider returned an error stop reason");if(!O)throw Error("Stream ended without finish_reason");Y.push({type:"done",reason:$.stopReason,message:$}),Y.end()}catch(N){for(let _ of $.content)delete _.index,delete _.partialArgs,delete _.streamIndex;$.stopReason=Q?.signal?.aborted?"aborted":"error",$.errorMessage=N instanceof Error?N.message:JSON.stringify(N);let V=N?.error?.metadata?.raw;if(V)$.errorMessage+=`
3
3
  ${V}`;Y.push({type:"error",reason:$.stopReason,error:$}),Y.end()}})(),Y},MJ=(J,X,Q)=>{let Y=Q?.apiKey;if(!Y)throw Error(`No API key for provider: ${J.provider}`);let $=m(J,Q,Y),N=Q?.reasoning?k(J,Q.reasoning):void 0,V=N==="off"?void 0:N,_=Q?.toolChoice;return _J(J,X,{...$,reasoningEffort:V,toolChoice:_})};function $J(J,X,Q,Y,$,N=T(J)){let V={...J.headers};if(J.provider==="github-copilot"){let q=d(X.messages),j=i({messages:X.messages,hasImages:q});Object.assign(V,j)}if($&&N.sendSessionAffinityHeaders)V.session_id=$,V["x-client-request-id"]=$,V["x-session-affinity"]=$;if(Y)Object.assign(V,Y);let _=J.provider==="cloudflare-ai-gateway"?{...V,Authorization:V.Authorization??null,"cf-aig-authorization":`Bearer ${Q}`}:V;return new b({apiKey:Q,baseURL:r(J.provider)?p(J):J.baseUrl,dangerouslyAllowBrowser:!0,defaultHeaders:_})}function qJ(J,X,Q,Y=T(J),$=a(Q?.cacheRetention)){let N=WJ(J,X,Y),V=zJ(Y,$),_={model:J.id,messages:N,stream:!0,prompt_cache_key:J.baseUrl.includes("api.openai.com")&&$!=="none"||$==="long"&&Y.supportsLongCacheRetention?n(Q?.sessionId):void 0,prompt_cache_retention:$==="long"&&Y.supportsLongCacheRetention?"24h":void 0};if(Y.supportsUsageInStreaming!==!1)_.stream_options={include_usage:!0};if(Y.supportsStore)_.store=!1;if(Q?.maxTokens)if(Y.maxTokensField==="max_tokens")_.max_tokens=Q.maxTokens;else _.max_completion_tokens=Q.maxTokens;if(Q?.temperature!==void 0)_.temperature=Q.temperature;if(X.tools&&X.tools.length>0){if(_.tools=GJ(X.tools,Y),Y.zaiToolStream)_.tool_stream=!0}else if(JJ(X.messages))_.tools=[];if(V)LJ(N,_.tools,V);if(Q?.toolChoice)_.tool_choice=Q.toolChoice;if(Y.thinkingFormat==="zai"&&J.reasoning)_.enable_thinking=!!Q?.reasoningEffort;else if(Y.thinkingFormat==="qwen"&&J.reasoning)_.enable_thinking=!!Q?.reasoningEffort;else if(Y.thinkingFormat==="qwen-chat-template"&&J.reasoning)_.chat_template_kwargs={enable_thinking:!!Q?.reasoningEffort,preserve_thinking:!0};else if(Y.thinkingFormat==="deepseek"&&J.reasoning){if(_.thinking={type:Q?.reasoningEffort?"enabled":"disabled"},Q?.reasoningEffort&&Y.supportsReasoningEffort)_.reasoning_effort=J.thinkingLevelMap?.[Q.reasoningEffort]??Q.reasoningEffort}else if(Y.thinkingFormat==="openrouter"&&J.reasoning){let q=_;if(Q?.reasoningEffort)q.reasoning={effort:J.thinkingLevelMap?.[Q.reasoningEffort]??Q.reasoningEffort};else if(J.thinkingLevelMap?.off!==null)q.reasoning={effort:J.thinkingLevelMap?.off??"none"}}else if(Y.thinkingFormat==="together"&&J.reasoning){let q=_;if(q.reasoning={enabled:!!Q?.reasoningEffort},Q?.reasoningEffort&&Y.supportsReasoningEffort)q.reasoning_effort=J.thinkingLevelMap?.[Q.reasoningEffort]??Q.reasoningEffort}else if(Y.thinkingFormat==="string-thinking"&&J.reasoning){let q=_;if(Q?.reasoningEffort)q.thinking=J.thinkingLevelMap?.[Q.reasoningEffort]??Q.reasoningEffort;else if(J.thinkingLevelMap?.off!==null)q.thinking=J.thinkingLevelMap?.off??"none"}else if(Q?.reasoningEffort&&J.reasoning&&Y.supportsReasoningEffort)_.reasoning_effort=J.thinkingLevelMap?.[Q.reasoningEffort]??Q.reasoningEffort;else if(!Q?.reasoningEffort&&J.reasoning&&Y.supportsReasoningEffort){let q=J.thinkingLevelMap?.off;if(typeof q==="string")_.reasoning_effort=q}if(J.baseUrl.includes("openrouter.ai")&&J.compat?.openRouterRouting)_.provider=J.compat.openRouterRouting;if(J.baseUrl.includes("ai-gateway.vercel.sh")&&J.compat?.vercelGatewayRouting){let q=J.compat.vercelGatewayRouting;if(q.only||q.order){let j={};if(q.only)j.only=q.only;if(q.order)j.order=q.order;_.providerOptions={gateway:j}}}return _}function zJ(J,X){if(J.cacheControlFormat!=="anthropic"||X==="none")return;let Q=X==="long"&&J.supportsLongCacheRetention?"1h":void 0;return{type:"ephemeral",...Q?{ttl:Q}:{}}}function LJ(J,X,Q){NJ(J,Q),ZJ(X,Q),VJ(J,Q)}function NJ(J,X){for(let Q of J)if(Q.role==="system"||Q.role==="developer"){jJ(Q,X);return}}function VJ(J,X){for(let Q=J.length-1;Q>=0;Q--){let Y=J[Q];if(Y.role==="user"||Y.role==="assistant"){if(EJ(Y,X))return}}}function ZJ(J,X){if(!J||J.length===0)return;let Q=J[J.length-1];Q.cache_control=X}function jJ(J,X){return l(J,X)}function EJ(J,X){if(J.role==="user"||J.role==="assistant")return l(J,X);return!1}function l(J,X){let Q=J.content;if(typeof Q==="string"){if(Q.length===0)return!1;return J.content=[{type:"text",text:Q,cache_control:X}],!0}if(!Array.isArray(Q))return!1;for(let Y=Q.length-1;Y>=0;Y--){let $=Q[Y];if($?.type==="text"){let N=$;return N.cache_control=X,!0}}return!1}function WJ(J,X,Q){let Y=[],$=(_)=>{if(_.includes("|")){let[q]=_.split("|");return q.replace(/[^a-zA-Z0-9_-]/g,"_").slice(0,40)}if(J.provider==="openai")return _.length>40?_.slice(0,40):_;return _},N=c(X.messages,J,(_)=>$(_));if(X.systemPrompt){let q=J.reasoning&&Q.supportsDeveloperRole?"developer":"system";Y.push({role:q,content:w(X.systemPrompt)})}let V=null;for(let _=0;_<N.length;_++){let q=N[_];if(Q.requiresAssistantAfterToolResult&&V==="toolResult"&&q.role==="user")Y.push({role:"assistant",content:"I have processed the tool results."});if(q.role==="user")if(typeof q.content==="string")Y.push({role:"user",content:w(q.content)});else{let j=q.content.map((W)=>{if(W.type==="text")return{type:"text",text:w(W.text)};else return{type:"image_url",image_url:{url:`data:${W.mimeType};base64,${W.data}`}}});if(j.length===0)continue;Y.push({role:"user",content:j})}else if(q.role==="assistant"){let j={role:"assistant",content:Q.requiresAssistantAfterToolResult?"":null},W=q.content.filter(x).filter((L)=>L.text.trim().length>0).map((L)=>({type:"text",text:w(L.text)})),H=W.map((L)=>L.text).join(""),K=q.content.filter(QJ).filter((L)=>L.thinking.trim().length>0);if(K.length>0)if(Q.requiresThinkingAsText){let L=K.map((O)=>w(O.thinking)).join(`
4
4
 
5
5
  `);j.content=[{type:"text",text:L},...W]}else{if(H.length>0)j.content=H;let L=K[0].thinkingSignature;if(J.provider==="opencode-go"&&L==="reasoning")L="reasoning_content";if(L&&L.length>0)j[L]=K.map((O)=>O.thinking).join(`