@shumai-one/shumai-agent 0.3.2 → 0.3.4
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/bin/chunk-081v79v3.js +2 -0
- package/bin/chunk-12h1srs7.js +3 -0
- package/bin/{chunk-hbnpkkay.js → chunk-15y416ps.js} +1 -1
- package/bin/{chunk-ba518ea4.js → chunk-2qp0n7qr.js} +3 -3
- package/bin/{chunk-wr1gq0mr.js → chunk-36c7hn2a.js} +1 -1
- package/bin/chunk-3g2568q8.js +4 -0
- package/bin/chunk-5b9qr9hd.js +2 -0
- package/bin/chunk-5qfgf76w.js +11 -0
- package/bin/{chunk-xepkfmkj.js → chunk-6e30fa04.js} +1 -1
- package/bin/chunk-75q7k7ws.js +6 -0
- package/bin/chunk-9px4mby3.js +5 -0
- package/bin/chunk-b9fvn1we.js +2 -0
- package/bin/{chunk-09wm68m9.js → chunk-c35a19j7.js} +2 -2
- package/bin/{chunk-nbvdnrcb.js → chunk-c6wkem7t.js} +2 -2
- package/bin/{chunk-dgxfdzaf.js → chunk-cm4dpd3k.js} +1 -1
- package/bin/{chunk-p3egm13v.js → chunk-d5pe7gc0.js} +2 -2
- package/bin/chunk-decj3jj5.js +8 -0
- package/bin/chunk-dnje06y3.js +2 -0
- package/bin/chunk-em0kmz2k.js +3 -0
- package/bin/{chunk-ceg8d25c.js → chunk-frztqry5.js} +1 -1
- package/bin/{chunk-6k9j5xzb.js → chunk-fyy1bs2c.js} +2 -2
- package/bin/{chunk-p69bnq4x.js → chunk-ghp1vchh.js} +1 -1
- package/bin/chunk-ghwhw8p2.js +8 -0
- package/bin/chunk-gza7gcvv.js +3 -0
- package/bin/chunk-hbzg8qk9.js +12 -0
- package/bin/chunk-hkacwxx5.js +3 -0
- package/bin/chunk-kjh8ef83.js +2 -0
- package/bin/chunk-n7pc3vzj.js +2 -0
- package/bin/{chunk-m0mp7pd2.js → chunk-n7ywq5jm.js} +2 -2
- package/bin/{chunk-gx72kpkb.js → chunk-ncafamz2.js} +1 -1
- package/bin/chunk-p2420qj9.js +2 -0
- package/bin/chunk-q8rfm9yd.js +45 -0
- package/bin/{chunk-22m0y0fs.js → chunk-qget207r.js} +1 -1
- package/bin/chunk-qsj8bjjz.js +4 -0
- package/bin/{chunk-fvmb8en4.js → chunk-r6kwqq12.js} +1 -1
- package/bin/{chunk-geqqct8k.js → chunk-rwm4gzpt.js} +1 -1
- package/bin/chunk-s6td43rw.js +2 -0
- package/bin/{chunk-e0mazw0r.js → chunk-sy5nq4n6.js} +1 -1
- package/bin/{chunk-6xzgjgh4.js → chunk-tzn6yhz8.js} +1 -1
- package/bin/{chunk-xeg1gre0.js → chunk-vra858k4.js} +1 -1
- package/bin/chunk-w5rk53bc.js +3 -0
- package/bin/chunk-wd4xdvj8.js +7 -0
- package/bin/{chunk-gcy9m8nz.js → chunk-wt1c7rd5.js} +39 -9
- package/bin/{chunk-0bdvgych.js → chunk-wtznsfef.js} +3 -3
- package/bin/chunk-xmjzej3m.js +3 -0
- package/bin/{chunk-b35kbsh7.js → chunk-y6k3ph6k.js} +1 -1
- package/bin/shumai-agent-app.js +505 -389
- package/package.json +7 -7
- package/prisma/migrations/20260801065040_add_audit_log/migration.sql +33 -0
- package/prisma/migrations/20260805021613_add_asset_autofill_context/migration.sql +2 -0
- package/prisma/migrations/20260806082136_add_sharelink_watermark/migration.sql +69 -0
- package/prisma/migrations/20260806085643_add_watermark_file_status/migration.sql +7 -0
- package/prisma/migrations/20260807140837_clean_media_remove_raw_transcodes_and_original_download_url/migration.sql +86 -0
- package/prisma/migrations/20260808014542_add_sharelink_allow_download/migration.sql +2 -0
- package/prisma/schema.prisma +93 -0
- package/bin/chunk-2dm6jcp4.js +0 -3
- package/bin/chunk-2gefycgt.js +0 -3
- package/bin/chunk-2t47accr.js +0 -3
- package/bin/chunk-2w4hxpqr.js +0 -3
- package/bin/chunk-3nbbx6x7.js +0 -3
- package/bin/chunk-5190gazn.js +0 -3
- package/bin/chunk-74zq8r33.js +0 -2
- package/bin/chunk-7m8a8vhh.js +0 -2
- package/bin/chunk-7qwd1bfq.js +0 -3
- package/bin/chunk-85swzdas.js +0 -41
- package/bin/chunk-98fyskbt.js +0 -2
- package/bin/chunk-98zfcdae.js +0 -14
- package/bin/chunk-aw167aaq.js +0 -8
- package/bin/chunk-b77c23jm.js +0 -2
- package/bin/chunk-bq4j07gf.js +0 -4
- package/bin/chunk-bwvq03ga.js +0 -12
- package/bin/chunk-c55dg49y.js +0 -7
- package/bin/chunk-cpmyq7y4.js +0 -3
- package/bin/chunk-d5rvr87v.js +0 -3
- package/bin/chunk-db5dg26j.js +0 -4
- package/bin/chunk-dja3b5qj.js +0 -8
- package/bin/chunk-e0np0fc1.js +0 -2
- package/bin/chunk-epkgpyvw.js +0 -3
- package/bin/chunk-fy6ak60v.js +0 -2
- package/bin/chunk-hf7g4s7z.js +0 -8
- package/bin/chunk-hrckvejt.js +0 -6
- package/bin/chunk-j4w76sg7.js +0 -2
- package/bin/chunk-jr7ndn0h.js +0 -4
- package/bin/chunk-jrnczqc1.js +0 -4
- package/bin/chunk-k4gc54nc.js +0 -3
- package/bin/chunk-m6rw11kp.js +0 -2
- package/bin/chunk-mdmba231.js +0 -7
- package/bin/chunk-n8m6vtk4.js +0 -3
- package/bin/chunk-nvze6c2k.js +0 -4
- package/bin/chunk-p0yhjbsx.js +0 -6
- package/bin/chunk-p67v44jc.js +0 -2
- package/bin/chunk-pwm0zg91.js +0 -7
- package/bin/chunk-r3r0643t.js +0 -4
- package/bin/chunk-ryyybwjr.js +0 -3
- package/bin/chunk-t9qt4a80.js +0 -8
- package/bin/chunk-tg1x6f4h.js +0 -2
- package/bin/chunk-tn22n12j.js +0 -3
- package/bin/chunk-xy7jrz8f.js +0 -2
- package/bin/chunk-y50ys5g5.js +0 -6
- package/bin/chunk-ywhm8gh6.js +0 -2
- package/bin/chunk-zkjpc8zs.js +0 -2
- package/bin/chunk-zmeynqb0.js +0 -6
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
import{Kb as Xq,Lb as Yq}from"./chunk-6e30fa04.js";import{Pb as _q}from"./chunk-vra858k4.js";import{Qb as a}from"./chunk-15y416ps.js";import{Rb as c}from"./chunk-r6kwqq12.js";import{Tb as e}from"./chunk-em0kmz2k.js";import{Vb as C}from"./chunk-9px4mby3.js";import{Wb as t}from"./chunk-n7ywq5jm.js";import{hc as n,ic as s}from"./chunk-w5rk53bc.js";import{jc as o,kc as qq,lc as Jq,mc as Qq,nc as u,pc as $q,rc as Zq}from"./chunk-12h1srs7.js";import{sc as M}from"./chunk-ghp1vchh.js";import{tc as l}from"./chunk-y6k3ph6k.js";import{Ac as m,zc as i}from"./chunk-xmjzej3m.js";import{Bc as d}from"./chunk-hkacwxx5.js";import"./chunk-qget207r.js";function g(q,Q){if(!q)return!1;let J=Q.toLowerCase();for(let[X,Y]of Object.entries(q))if(X.toLowerCase()===J&&Y!==null&&Y.trim().length>0)return!0;return!1}function Kq(q,Q,J){if(Q)return Q;if(g(J,"authorization")||g(J,"cf-aig-authorization"))return"unused";throw Error(`No API key for provider: ${q}`)}function Fq(q){for(let Q of q){if(Q.role==="toolResult")return!0;if(Q.role==="assistant"){if(Q.content.some((J)=>J.type==="toolCall"))return!0}}return!1}function Nq(q){let Q=new Set;for(let J of q)if(J.role==="toolResult")for(let X of J.addedToolNames??[])Q.add(X);return Q}function Aq(q,Q){if(!q)return[];let J=new Map(q.map((X)=>[X.name,X]));return Array.from(Q).map((X)=>J.get(X)).filter((X)=>X!==void 0)}function r(q){return q.type==="text"}function Eq(q){return q.type==="thinking"}function Dq(q){return q.type==="toolCall"}function Pq(q){return q.type==="image"}function wq(q){if(typeof q!=="object"||q===null)return!1;let Q=q;return Q.type==="reasoning.encrypted"&&typeof Q.id==="string"&&Q.id.length>0&&typeof Q.data==="string"&&Q.data.length>0}function jq(q,Q){if(q)return q;if(t("PI_CACHE_RETENTION",Q)==="long")return"long";return"short"}var Uq=(q,Q,J)=>{let X=new d;return(async()=>{let Y={role:"assistant",content:[],api:q.api,provider:q.provider,model:q.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 V=Kq(q.provider,J?.apiKey,J?.headers),j=h(q),F=u(Q.tools,j.supportsOpenAIGrammarTools),$=jq(J?.cacheRetention,J?.env),W=$==="none"?void 0:J?.sessionId,z=Bq(q,Q,V,J?.headers,W,j),Z=yq(q,Q,J,j,$,F),S=await J?.onPayload?.(Z,q);if(S!==void 0)Z=S;let O={...J?.signal?{signal:J.signal}:{},...J?.timeoutMs!==void 0?{timeout:J.timeoutMs}:{},maxRetries:0},{data:P,response:U}=await e(()=>z.chat.completions.create(Z,O).withResponse(),{maxRetries:J?.maxRetries,maxRetryDelayMs:J?.maxRetryDelayMs,signal:J?.signal});await J?.onResponse?.({status:U.status,headers:l(U.headers)},q),X.push({type:"start",partial:Y});let B=null,G=null,N=!1,D=new Map,T=new Map,x=new Map,f=Y.content,v=(_)=>f.indexOf(_),b=(_)=>{let K=_.customInput?.property;if(K===void 0)return"";let E=_.arguments[K];return typeof E==="string"?E:""},k=(_,K,E)=>{let H=_.customInput;if(!H)return;let w=qq(H.jsonBuffer,H.property,K,E);return _.arguments={[H.property]:K},w},Lq=(_)=>{let K=v(_);if(K===-1)return;if(_.type==="text")X.push({type:"text_end",contentIndex:K,content:_.text,partial:Y});else if(_.type==="thinking")X.push({type:"thinking_end",contentIndex:K,content:_.thinking,partial:Y});else if(_.type==="toolCall"){if(_.customInput){let E=k(_,b(_),!0);if(E!==void 0)X.push({type:"toolcall_delta",contentIndex:K,delta:E,partial:Y})}else _.arguments=C(_.partialArgs);delete _.partialArgs,delete _.customInput,delete _.streamIndex,X.push({type:"toolcall_end",contentIndex:K,toolCall:_,partial:Y})}},Vq=()=>{if(!B)B={type:"text",text:""},f.push(B),X.push({type:"text_start",contentIndex:v(B),partial:Y});return B},Wq=(_)=>{if(!G)G={type:"thinking",thinking:"",thinkingSignature:_},f.push(G),X.push({type:"thinking_start",contentIndex:v(G),partial:Y});return G},Gq=(_)=>{if(!_.id)return;let K=x.get(_.id);if(K)_.thoughtSignature=K,x.delete(_.id)},Sq=(_)=>{let K=typeof _.index==="number"?_.index:void 0,E=_.function?.name??_.custom?.name??"",H=K!==void 0?D.get(K):void 0;if(!H&&_.id)H=T.get(_.id);if(!H){let w=_.custom?F.get(E)??"input":void 0,R=w!==void 0;if(H={type:"toolCall",id:_.id||"",name:E,arguments:R?{[w]:""}:{},partialArgs:R?void 0:"",customInput:R?{property:w,jsonBuffer:{input:"",started:!1,closed:!1}}:void 0,streamIndex:K},K!==void 0)D.set(K,H);if(_.id)T.set(_.id,H);f.push(H),X.push({type:"toolcall_start",contentIndex:v(H),partial:Y})}if(K!==void 0&&H.streamIndex===void 0)H.streamIndex=K,D.set(K,H);if(_.id)T.set(_.id,H);if(!H.name&&E)H.name=E;if(_.custom&&!H.customInput){let w=F.get(H.name)??"input";H.arguments={[w]:""},H.customInput={property:w,jsonBuffer:{input:"",started:!1,closed:!1}},delete H.partialArgs}return Gq(H),H};for await(let _ of P){if(!_||typeof _!=="object")continue;if(Y.responseId||=_.id,typeof _.model==="string"&&_.model.length>0&&_.model!==q.id)Y.responseModel||=_.model;if(_.usage)Y.usage=p(_.usage,q);let K=Array.isArray(_.choices)?_.choices[0]:void 0;if(!K)continue;if(!_.usage&&K.usage)Y.usage=p(K.usage,q);if(K.finish_reason){let E=bq(K.finish_reason);if(Y.stopReason=E.stopReason,E.errorMessage)Y.errorMessage=E.errorMessage;N=!0}if(K.delta){if(K.delta.content!==null&&K.delta.content!==void 0&&K.delta.content.length>0){let L=Vq();L.text+=K.delta.content,X.push({type:"text_delta",contentIndex:v(L),delta:K.delta.content,partial:Y})}let E=["reasoning_content","reasoning","reasoning_text"],H=K.delta,w=null;for(let L of E){let A=H[L];if(typeof A==="string"&&A.length>0){w=L;break}}if(w){let L=H[w];if(typeof L==="string"&&L.length>0){let A=q.provider==="opencode-go"&&w==="reasoning"?"reasoning_content":w,y=Wq(A);y.thinking+=L,X.push({type:"thinking_delta",contentIndex:v(y),delta:L,partial:Y})}}if(K?.delta?.tool_calls)for(let L of K.delta.tool_calls){let A=Sq(L);if(!A.id&&L.id)A.id=L.id,T.set(L.id,A);let y=L.function?.name??L.custom?.name;if(!A.name&&y)A.name=y;let I="";if(L.function?.arguments)I=L.function.arguments,A.partialArgs=(A.partialArgs??"")+L.function.arguments,A.arguments=C(A.partialArgs);else if(L.custom?.input){let Oq=b(A)+L.custom.input;I=k(A,Oq,!1)??""}X.push({type:"toolcall_delta",contentIndex:v(A),delta:I,partial:Y})}let R=K.delta.reasoning_details;if(Array.isArray(R)){for(let L of R)if(wq(L)){let A=JSON.stringify(L),y=T.get(L.id);if(y)y.thoughtSignature=A;else x.set(L.id,A)}}}}for(let _ of f)Lq(_);if(J?.signal?.aborted)throw Error("Request was aborted");if(Y.stopReason==="aborted")throw Error("Request was aborted");if(Y.stopReason==="error")throw Error(Y.errorMessage||"Provider returned an error stop reason");if(!N)throw Error("Stream ended without finish_reason");X.push({type:"done",reason:Y.stopReason,message:Y}),X.end()}catch(V){for(let F of Y.content)delete F.index,delete F.partialArgs,delete F.customInput,delete F.streamIndex;Y.stopReason=J?.signal?.aborted?"aborted":"error",Y.errorMessage=s(n(V));let j=V?.error?.metadata?.raw;if(j&&!Y.errorMessage.includes(String(j)))Y.errorMessage+=`
|
|
3
|
+
${j}`;X.push({type:"error",reason:Y.stopReason,error:Y}),X.end()}})(),X},JJ=(q,Q,J)=>{Kq(q.provider,J?.apiKey,J?.headers);let X=$q(q,Q,J,J?.apiKey),Y=J?.reasoning?m(q,J.reasoning):void 0,V=Y==="off"?void 0:Y,j=J?.toolChoice;return Uq(q,Q,{...X,reasoningEffort:V,toolChoice:j})};function Bq(q,Q,J,X,Y,V=h(q)){let j={...q.headers};if(q.provider==="github-copilot"){let F=Xq(Q.messages),$=Yq({messages:Q.messages,hasImages:F});Object.assign(j,$)}if(Y&&V.sendSessionAffinityHeaders)if(V.sessionAffinityFormat==="openrouter")j["x-session-id"]=Y;else{if(V.sessionAffinityFormat==="openai")j.session_id=Y;j["x-client-request-id"]=Y,j["x-session-affinity"]=Y}if(X)Object.assign(j,X);return new c({apiKey:J,baseURL:q.baseUrl,dangerouslyAllowBrowser:!0,defaultHeaders:j})}function yq(q,Q,J,X=h(q),Y=jq(J?.cacheRetention,J?.env),V=u(Q.tools,X.supportsOpenAIGrammarTools)){let j=hq(q,Q,X,{grammarToolInputProperties:V}),F=Rq(X,Y),$={model:q.id,messages:j,stream:!0,prompt_cache_key:q.baseUrl.includes("api.openai.com")&&Y!=="none"||Y==="long"&&X.supportsLongCacheRetention?_q(J?.sessionId):void 0,prompt_cache_retention:Y==="long"&&X.supportsLongCacheRetention?"24h":void 0};if(X.supportsUsageInStreaming!==!1)$.stream_options={include_usage:!0};if(X.supportsStore)$.store=!1;if(J?.maxTokens)if(X.maxTokensField==="max_tokens")$.max_tokens=J.maxTokens;else $.max_completion_tokens=J.maxTokens;if(J?.temperature!==void 0)$.temperature=J.temperature;let W=X.deferredToolsMode==="kimi"?Nq(Q.messages):new Set,z=Q.tools?.filter((Z)=>!W.has(Z.name));if(z&&z.length>0){if($.tools=Hq(z,X),X.zaiToolStream)$.tool_stream=!0}else if(Fq(Q.messages))$.tools=[];if(F)Tq(j,$.tools,F);if(J?.toolChoice)$.tool_choice=J.toolChoice;if(X.thinkingFormat==="zai"&&q.reasoning){let Z=$;if(Z.thinking=J?.reasoningEffort?{type:"enabled",clear_thinking:!1}:{type:"disabled"},J?.reasoningEffort&&X.supportsReasoningEffort){let S=q.thinkingLevelMap?.[J.reasoningEffort],O=S===void 0?J.reasoningEffort:S;if(typeof O==="string")Z.reasoning_effort=O}}else if(X.thinkingFormat==="qwen"&&q.reasoning)$.enable_thinking=!!J?.reasoningEffort;else if(X.thinkingFormat==="qwen-chat-template"&&q.reasoning)$.chat_template_kwargs={enable_thinking:!!J?.reasoningEffort,preserve_thinking:!0};else if(X.thinkingFormat==="chat-template"&&q.reasoning){let Z=Mq(q,J,X);if(Z)$.chat_template_kwargs=Z}else if(X.thinkingFormat==="deepseek"&&q.reasoning){if(J?.reasoningEffort)$.thinking={type:"enabled"};else if(q.thinkingLevelMap?.off!==null)$.thinking={type:"disabled"};if(J?.reasoningEffort&&X.supportsReasoningEffort)$.reasoning_effort=q.thinkingLevelMap?.[J.reasoningEffort]??J.reasoningEffort}else if(X.thinkingFormat==="openrouter"&&q.reasoning){let Z=$;if(J?.reasoningEffort)Z.reasoning={effort:q.thinkingLevelMap?.[J.reasoningEffort]??J.reasoningEffort};else if(q.thinkingLevelMap?.off!==null)Z.reasoning={effort:q.thinkingLevelMap?.off??"none"}}else if(X.thinkingFormat==="ant-ling"&&q.reasoning&&J?.reasoningEffort){let Z=q.thinkingLevelMap?.[J.reasoningEffort];if(typeof Z==="string")$.reasoning={effort:Z}}else if(X.thinkingFormat==="together"&&q.reasoning){let Z=$;if(Z.reasoning={enabled:!!J?.reasoningEffort},J?.reasoningEffort&&X.supportsReasoningEffort)Z.reasoning_effort=q.thinkingLevelMap?.[J.reasoningEffort]??J.reasoningEffort}else if(X.thinkingFormat==="string-thinking"&&q.reasoning){let Z=$;if(J?.reasoningEffort)Z.thinking=q.thinkingLevelMap?.[J.reasoningEffort]??J.reasoningEffort;else if(q.thinkingLevelMap?.off!==null)Z.thinking=q.thinkingLevelMap?.off??"none"}else if(J?.reasoningEffort&&q.reasoning&&X.supportsReasoningEffort)$.reasoning_effort=q.thinkingLevelMap?.[J.reasoningEffort]??J.reasoningEffort;else if(!J?.reasoningEffort&&q.reasoning&&X.supportsReasoningEffort){let Z=q.thinkingLevelMap?.off;if(typeof Z==="string")$.reasoning_effort=Z}if(q.compat?.openRouterRouting)$.provider=q.compat.openRouterRouting;if(q.compat?.vercelGatewayRouting){let Z=q.compat.vercelGatewayRouting;if(Z.only||Z.order){let S={};if(Z.only)S.only=Z.only;if(Z.order)S.order=Z.order;$.providerOptions={gateway:S}}}return $}function Mq(q,Q,J){let X={};for(let[Y,V]of Object.entries(J.chatTemplateKwargs)){let j=vq(q,Q,V);if(j!==void 0)X[Y]=j}return Object.keys(X).length>0?X:void 0}function vq(q,Q,J){if(typeof J!=="object"||J===null)return J;let X=Q?.reasoningEffort;if(!X&&J.omitWhenOff)return;if(J.$var==="thinking.enabled")return!!X;let Y=X?q.thinkingLevelMap?.[X]:q.thinkingLevelMap?.off;return Y===void 0?X:typeof Y==="string"?Y:void 0}function Rq(q,Q){if(q.cacheControlFormat!=="anthropic"||Q==="none")return;let J=Q==="long"&&q.supportsLongCacheRetention?"1h":void 0;return{type:"ephemeral",...J?{ttl:J}:{}}}function Tq(q,Q,J){fq(q,J),Iq(Q,J),xq(q,J)}function fq(q,Q){for(let J of q)if(J.role==="system"||J.role==="developer"){Cq(J,Q);return}}function xq(q,Q){for(let J=q.length-1;J>=0;J--){let X=q[J];if(X.role==="user"||X.role==="assistant"||X.role==="tool"){if(uq(X,Q))return}}}function Iq(q,Q){if(!q||q.length===0)return;let J=q[q.length-1];J.cache_control=Q}function Cq(q,Q){return zq(q,Q)}function uq(q,Q){if(q.role==="user"||q.role==="assistant"||q.role==="tool")return zq(q,Q);return!1}function zq(q,Q){let J=q.content;if(typeof J==="string"){if(J.length===0)return!1;return q.content=[{type:"text",text:J,cache_control:Q}],!0}if(!Array.isArray(J))return!1;for(let X=J.length-1;X>=0;X--){let Y=J[X];if(Y?.type==="text"){let V=Y;return V.cache_control=Q,!0}}return!1}function hq(q,Q,J,X){let Y=[],V=($)=>{if($.includes("|")){let W=$.indexOf("|"),z=$.slice(0,W).replace(/[^a-zA-Z0-9_-]/g,"_"),Z=$.slice(W+1).replace(/[^a-zA-Z0-9_-]/g,"_"),S=Z.length>0?`${z}_${Z}`:z;if(S.length<=40)return S;let O=a($).slice(0,8);return`${z.slice(0,Math.max(1,40-O.length-1))}_${O}`}if(q.provider==="openai")return $.length>40?$.slice(0,40):$;return $},j=Zq(Q.messages,q,($)=>V($));if(Q.systemPrompt){let W=q.reasoning&&J.supportsDeveloperRole?"developer":"system";Y.push({role:W,content:M(Q.systemPrompt)})}let F=null;for(let $=0;$<j.length;$++){let W=j[$];if(J.requiresAssistantAfterToolResult&&F==="toolResult"&&W.role==="user")Y.push({role:"assistant",content:"I have processed the tool results."});if(W.role==="user")if(typeof W.content==="string")Y.push({role:"user",content:M(W.content)});else{let z=W.content.map((Z)=>{if(Z.type==="text")return{type:"text",text:M(Z.text)};else return{type:"image_url",image_url:{url:`data:${Z.mimeType};base64,${Z.data}`}}});if(z.length===0)continue;Y.push({role:"user",content:z})}else if(W.role==="assistant"){let z={role:"assistant",content:J.requiresAssistantAfterToolResult?"":null},Z=W.content.filter(r).filter((G)=>G.text.trim().length>0).map((G)=>({type:"text",text:M(G.text)})),S=Z.map((G)=>G.text).join(""),O=W.content.filter(Eq).filter((G)=>G.thinking.trim().length>0);if(O.length>0)if(J.requiresThinkingAsText){let G=O.map((N)=>M(N.thinking)).join(`
|
|
4
|
+
|
|
5
|
+
`);z.content=[{type:"text",text:G},...Z]}else{if(S.length>0)z.content=S;let G=O[0].thinkingSignature;if(q.provider==="opencode-go"&&G==="reasoning")G="reasoning_content";if(G&&G.length>0)z[G]=O.map((N)=>N.thinking).join(`
|
|
6
|
+
`)}else if(S.length>0)z.content=S;let P=W.content.filter(Dq);if(P.length>0){z.tool_calls=P.map((N)=>{let D=X?.grammarToolInputProperties?.get(N.name);if(D!==void 0)return{id:N.id,type:"custom",custom:{name:N.name,input:M(o(N.name,N.arguments,D))}};return{id:N.id,type:"function",function:{name:N.name,arguments:JSON.stringify(N.arguments)}}});let G=P.filter((N)=>N.thoughtSignature).map((N)=>{try{return JSON.parse(N.thoughtSignature)}catch{return null}}).filter(Boolean);if(G.length>0)z.reasoning_details=G}if(J.requiresReasoningContentOnAssistantMessages&&q.reasoning&&z.reasoning_content===void 0)z.reasoning_content="";let U=z.content;if(!(U!==null&&U!==void 0&&(typeof U==="string"?U.length>0:U.length>0))&&!z.tool_calls)continue;Y.push(z)}else if(W.role==="toolResult"){let z=[],Z=new Set,S=$;for(;S<j.length&&j[S].role==="toolResult";S++){let O=j[S],P=O.content.filter(r).map((D)=>D.text).join(`
|
|
7
|
+
`),U=O.content.some((D)=>D.type==="image"),G=P.length>0?P:U?"(see attached image)":"(no tool output)",N={role:"tool",content:M(G),tool_call_id:O.toolCallId};if(J.requiresToolResultName&&O.toolName)N.name=O.toolName;if(Y.push(N),J.deferredToolsMode==="kimi")for(let D of O.addedToolNames??[])Z.add(D);if(U&&q.input.includes("image")){for(let D of O.content)if(Pq(D))z.push({type:"image_url",image_url:{url:`data:${D.mimeType};base64,${D.data}`}})}}if($=S-1,z.length>0){if(J.requiresAssistantAfterToolResult)Y.push({role:"assistant",content:"I have processed the tool results."});Y.push({role:"user",content:[{type:"text",text:"Attached image(s) from tool result:"},...z]}),F="user"}else F="toolResult";if(Z.size>0){let O=Aq(Q.tools,Z);if(O.length>0){let P={role:"system",tools:Hq(O,J)};Y.push(P)}}continue}F=W.role}return Y}function Hq(q,Q){return q.map((J)=>{let X=Qq(J,Q.supportsOpenAIGrammarTools);if(X)return{type:"custom",custom:{name:J.name,description:J.description,format:{type:"grammar",grammar:{syntax:X.format,definition:X.definition}}}};let Y=Jq(J,Q.supportsStrictMode!==!1);return{type:"function",function:{name:J.name,description:J.description,parameters:J.parameters,...Q.supportsStrictMode!==!1&&{strict:Y??!1}}}})}function p(q,Q){let J=q.prompt_tokens||0,X=q.prompt_tokens_details?.cached_tokens??q.prompt_cache_hit_tokens??0,Y=q.prompt_tokens_details?.cache_write_tokens||0,V=Math.max(0,J-X-Y),j=q.completion_tokens||0,F={input:V,output:j,cacheRead:X,cacheWrite:Y,reasoning:q.completion_tokens_details?.reasoning_tokens||0,totalTokens:V+j+X+Y,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}};return i(Q,F),F}function bq(q){if(q===null)return{stopReason:"stop"};switch(q){case"stop":case"end":return{stopReason:"stop"};case"length":return{stopReason:"length"};case"function_call":case"tool_calls":return{stopReason:"toolUse"};case"content_filter":return{stopReason:"error",errorMessage:"Provider finish_reason: content_filter"};case"network_error":return{stopReason:"error",errorMessage:"Provider finish_reason: network_error"};default:return{stopReason:"error",errorMessage:`Provider finish_reason: ${q}`}}}function kq(q){let{provider:Q,baseUrl:J}=q,X=Q==="zai"||Q==="zai-coding-cn"||J.includes("api.z.ai")||J.includes("open.bigmodel.cn"),Y=Q==="together"||J.includes("api.together.ai")||J.includes("api.together.xyz"),V=Q==="moonshotai"||Q==="moonshotai-cn"||J.includes("api.moonshot."),j=Q==="openrouter"||J.includes("openrouter.ai"),F=Q==="cloudflare-workers-ai"||J.includes("api.cloudflare.com"),$=Q==="cloudflare-ai-gateway"||J.includes("gateway.ai.cloudflare.com"),W=Q==="nvidia"||J.includes("integrate.api.nvidia.com"),z=Q==="ant-ling"||J.includes("api.ant-ling.com"),Z=W||Q==="cerebras"||J.includes("cerebras.ai")||Q==="xai"||J.includes("api.x.ai")||Y||J.includes("chutes.ai")||J.includes("deepseek.com")||X||V||Q==="opencode"||J.includes("opencode.ai")||F||$||z,S=J.includes("chutes.ai")||V||$||Y||W||z,O=Q==="xai"||J.includes("api.x.ai"),P=Q==="deepseek"||J.includes("deepseek.com"),U=j&&(q.id.startsWith("anthropic/")||q.id.startsWith("openai/")),B=Q==="openrouter"&&q.id.startsWith("anthropic/")?"anthropic":void 0;return{supportsStore:!Z,supportsDeveloperRole:U||!Z&&!j,supportsReasoningEffort:!O&&!X&&!V&&!Y&&!$&&!W&&!z,supportsUsageInStreaming:!0,maxTokensField:S?"max_tokens":"max_completion_tokens",requiresToolResultName:!1,requiresAssistantAfterToolResult:!1,requiresThinkingAsText:!1,requiresReasoningContentOnAssistantMessages:P,thinkingFormat:P?"deepseek":X?"zai":Y?"together":z?"ant-ling":j?"openrouter":"openai",openRouterRouting:{},vercelGatewayRouting:{},chatTemplateKwargs:{},zaiToolStream:!1,supportsStrictMode:!V&&!Y&&!$&&!W,supportsOpenAIGrammarTools:!1,cacheControlFormat:B,sendSessionAffinityHeaders:!1,deferredToolsMode:void 0,sessionAffinityFormat:j?"openrouter":"openai",supportsLongCacheRetention:!(Y||F||$||W||z)}}function h(q){let Q=kq(q);if(!q.compat)return Q;return{supportsStore:q.compat.supportsStore??Q.supportsStore,supportsDeveloperRole:q.compat.supportsDeveloperRole??Q.supportsDeveloperRole,supportsReasoningEffort:q.compat.supportsReasoningEffort??Q.supportsReasoningEffort,supportsUsageInStreaming:q.compat.supportsUsageInStreaming??Q.supportsUsageInStreaming,maxTokensField:q.compat.maxTokensField??Q.maxTokensField,requiresToolResultName:q.compat.requiresToolResultName??Q.requiresToolResultName,requiresAssistantAfterToolResult:q.compat.requiresAssistantAfterToolResult??Q.requiresAssistantAfterToolResult,requiresThinkingAsText:q.compat.requiresThinkingAsText??Q.requiresThinkingAsText,requiresReasoningContentOnAssistantMessages:q.compat.requiresReasoningContentOnAssistantMessages??Q.requiresReasoningContentOnAssistantMessages,thinkingFormat:q.compat.thinkingFormat??Q.thinkingFormat,openRouterRouting:q.compat.openRouterRouting??{},vercelGatewayRouting:q.compat.vercelGatewayRouting??Q.vercelGatewayRouting,chatTemplateKwargs:q.compat.chatTemplateKwargs??Q.chatTemplateKwargs,zaiToolStream:q.compat.zaiToolStream??Q.zaiToolStream,supportsStrictMode:q.compat.supportsStrictMode??Q.supportsStrictMode,supportsOpenAIGrammarTools:q.compat.supportsOpenAIGrammarTools??Q.supportsOpenAIGrammarTools,cacheControlFormat:q.compat.cacheControlFormat??Q.cacheControlFormat,sendSessionAffinityHeaders:q.compat.sendSessionAffinityHeaders??Q.sendSessionAffinityHeaders,deferredToolsMode:q.compat.deferredToolsMode??Q.deferredToolsMode,sessionAffinityFormat:q.compat.sessionAffinityFormat??Q.sessionAffinityFormat,supportsLongCacheRetention:q.compat.supportsLongCacheRetention??Q.supportsLongCacheRetention}}export{JJ as streamSimple,Uq as stream,hq as convertMessages};
|