@shumai-one/shumai-agent 0.1.1 → 0.1.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.
- package/bin/shumai-agent-app.js +1 -1
- package/package.json +7 -7
package/bin/shumai-agent-app.js
CHANGED
|
@@ -13369,7 +13369,7 @@ References are relative to ${jYF(B.filePath)}.
|
|
|
13369
13369
|
${B.content}
|
|
13370
13370
|
</skill>`;return Q?`${F}
|
|
13371
13371
|
|
|
13372
|
-
${Q}`:F}function jYF(B){let Q=B.replace(/\/+$/,""),F=Q.lastIndexOf("/");return F<=0?"/":Q.slice(0,F)}function Di(B,Q){let F=[{type:"text",text:B}];if(Q)F.push(...Q);return{role:"user",content:F,timestamp:Date.now()}}function nYF(B,Q,F){return{role:"assistant",content:[{type:"text",text:""}],api:B.api,provider:B.provider,model:B.id,stopReason:F?"aborted":"error",errorMessage:Q instanceof Error?Q.message:String(Q),timestamp:Date.now(),usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}}}}function mz(B){return{...B,headers:B?.headers?{...B.headers}:void 0,metadata:B?.metadata?{...B.metadata}:void 0}}function iYF(...B){let Q={},F=!1;for(let U of B){if(!U)continue;Object.assign(Q,U),F=!0}return F?Q:void 0}function pYF(B){let Q=new Set,F=new Set;for(let U of B){if(Q.has(U))F.add(U);Q.add(U)}return[...F]}function aYF(B,Q){let F=mz(B);if(!Q)return F;if(Object.hasOwn(Q,"transport"))F.transport=Q.transport;if(Object.hasOwn(Q,"timeoutMs"))F.timeoutMs=Q.timeoutMs;if(Object.hasOwn(Q,"maxRetries"))F.maxRetries=Q.maxRetries;if(Object.hasOwn(Q,"maxRetryDelayMs"))F.maxRetryDelayMs=Q.maxRetryDelayMs;if(Object.hasOwn(Q,"cacheRetention"))F.cacheRetention=Q.cacheRetention;if(Object.hasOwn(Q,"headers"))if(Q.headers===void 0)F.headers=void 0;else{let U={...F.headers??{}};for(let[I,G]of Object.entries(Q.headers))if(G===void 0)delete U[I];else U[I]=G;F.headers=Object.keys(U).length>0?U:void 0}if(Object.hasOwn(Q,"metadata"))if(Q.metadata===void 0)F.metadata=void 0;else{let U={...F.metadata??{}};for(let[I,G]of Object.entries(Q.metadata))if(G===void 0)delete U[I];else U[I]=G;F.metadata=Object.keys(U).length>0?U:void 0}return F}var zi="*";function TN(B,Q){if(B instanceof nI)return B;let F=cV(B);if(F instanceof kR)return new nI("session",F.message,F);if(F instanceof oY)return new nI("compaction",F.message,F);if(F instanceof FT)return new nI("branch_summary",F.message,F);return new nI(Q,F.message,F)}function Tz(B){return TN(B,"hook")}class GRB{env;session;phase="idle";runAbortController;runPromise;pendingSessionWrites=[];model;thinkingLevel;systemPrompt;streamOptions;getApiKeyAndHeaders;resources;tools=new Map;activeToolNames;steerQueue=[];steeringQueueMode;followUpQueue=[];followUpQueueMode;nextTurnQueue=[];handlers=new Map;constructor(B){this.env=B.env,this.session=B.session,this.resources=B.resources??{},this.streamOptions=mz(B.streamOptions),this.systemPrompt=B.systemPrompt,this.getApiKeyAndHeaders=B.getApiKeyAndHeaders,this.validateUniqueNames((B.tools??[]).map((Q)=>Q.name),"Duplicate tool name(s)");for(let Q of B.tools??[])this.tools.set(Q.name,Q);this.model=B.model,this.thinkingLevel=B.thinkingLevel??"off",this.activeToolNames=B.activeToolNames?[...B.activeToolNames]:(B.tools??[]).map((Q)=>Q.name),this.validateUniqueNames(this.activeToolNames,"Duplicate active tool name(s)"),this.validateToolNames(this.activeToolNames),this.steeringQueueMode=B.steeringMode??"one-at-a-time",this.followUpQueueMode=B.followUpMode??"one-at-a-time"}getHandlers(B){return this.handlers.get(B)}async emitOwn(B,Q){for(let F of this.getHandlers(zi)??[])try{await F(B,Q)}catch(U){throw Tz(U)}}async emitAny(B,Q){for(let F of this.getHandlers(zi)??[])try{await F(B,Q)}catch(U){throw Tz(U)}}async emitHook(B){let Q=this.getHandlers(B.type);if(!Q||Q.size===0)return;let F;for(let U of Q)try{let I=await U(B);if(I!==void 0)F=I}catch(I){throw Tz(I)}return F}async emitBeforeProviderRequest(B,Q,F){let U=this.getHandlers("before_provider_request"),I=mz(F);if(!U||U.size===0)return I;for(let G of U)try{let Z=await G({type:"before_provider_request",model:B,sessionId:Q,streamOptions:mz(I)});if(Z?.streamOptions)I=aYF(I,Z.streamOptions)}catch(Z){throw Tz(Z)}return I}async emitBeforeProviderPayload(B,Q){let F=this.getHandlers("before_provider_payload"),U=Q;if(!F||F.size===0)return U;for(let I of F)try{let G=await I({type:"before_provider_payload",model:B,payload:U});if(G!==void 0)U=G.payload}catch(G){throw Tz(G)}return U}async emitQueueUpdate(){await this.emitOwn({type:"queue_update",steer:[...this.steerQueue],followUp:[...this.followUpQueue],nextTurn:[...this.nextTurnQueue]})}startRunPromise(){let B=()=>{};return this.runPromise=new Promise((Q)=>{B=Q}),()=>{this.runPromise=void 0,B()}}async createTurnState(){let B=await this.session.buildContext(),Q=this.getResources(),F=await this.session.getMetadata(),U=[...this.tools.values()],I=this.activeToolNames.map((Z)=>this.tools.get(Z)).filter((Z)=>Z!==void 0),G="You are a helpful assistant.";if(typeof this.systemPrompt==="string")G=this.systemPrompt;else if(this.systemPrompt)G=await this.systemPrompt({env:this.env,session:this.session,model:this.model,thinkingLevel:this.thinkingLevel,activeTools:I,resources:Q});return{messages:B.messages,resources:Q,streamOptions:mz(this.streamOptions),sessionId:F.id,systemPrompt:G,model:this.model,thinkingLevel:this.thinkingLevel,tools:U,activeTools:I}}createContext(B,Q){return{systemPrompt:Q??B.systemPrompt,messages:B.messages.slice(),tools:B.activeTools.slice()}}createStreamFn(B){return async(Q,F,U)=>{let I=B(),G=await this.getApiKeyAndHeaders?.(Q),Z={...I.streamOptions,headers:iYF(I.streamOptions.headers,G?.headers)},W=await this.emitBeforeProviderRequest(Q,I.sessionId,Z);return iM(Q,F,{cacheRetention:W.cacheRetention,headers:W.headers,maxRetries:W.maxRetries,maxRetryDelayMs:W.maxRetryDelayMs,metadata:W.metadata,onPayload:async(g)=>await this.emitBeforeProviderPayload(Q,g),onResponse:async(g)=>{let V={...g.headers};await this.emitOwn({type:"after_provider_response",status:g.status,headers:V},U?.signal)},reasoning:U?.reasoning,signal:U?.signal,sessionId:I.sessionId,timeoutMs:W.timeoutMs,transport:W.transport,apiKey:G?.apiKey})}}async drainQueuedMessages(B,Q){let F=Q==="all"?B.splice(0):B.splice(0,1);if(F.length===0)return F;try{return await this.emitQueueUpdate(),F}catch(U){throw B.unshift(...F),Tz(U)}}createLoopConfig(B,Q){let F=B();return{model:F.model,reasoning:F.thinkingLevel==="off"?void 0:F.thinkingLevel,convertToLlm:Jz,transformContext:async(U)=>{return(await this.emitHook({type:"context",messages:[...U]}))?.messages??U},beforeToolCall:async({toolCall:U,args:I})=>{let G=await this.emitHook({type:"tool_call",toolCallId:U.id,toolName:U.name,input:I});return G?{block:G.block,reason:G.reason}:void 0},afterToolCall:async({toolCall:U,args:I,result:G,isError:Z})=>{let W=await this.emitHook({type:"tool_result",toolCallId:U.id,toolName:U.name,input:I,content:G.content,details:G.details,isError:Z});return W?{content:W.content,details:W.details,isError:W.isError,terminate:W.terminate}:void 0},prepareNextTurn:async()=>{await this.flushPendingSessionWrites();let U=await this.createTurnState();return Q(U),{context:this.createContext(U),model:U.model,thinkingLevel:U.thinkingLevel}},getSteeringMessages:async()=>this.drainQueuedMessages(this.steerQueue,this.steeringQueueMode),getFollowUpMessages:async()=>this.drainQueuedMessages(this.followUpQueue,this.followUpQueueMode)}}validateUniqueNames(B,Q){let F=pYF(B);if(F.length>0)throw new nI("invalid_argument",`${Q}: ${F.join(", ")}`)}validateToolNames(B,Q=this.tools){this.validateUniqueNames(B,"Duplicate active tool name(s)");let F=B.filter((U)=>!Q.has(U));if(F.length>0)throw new nI("invalid_argument",`Unknown tool(s): ${F.join(", ")}`)}async flushPendingSessionWrites(){while(this.pendingSessionWrites.length>0){let B=this.pendingSessionWrites[0];if(B.type==="message")await this.session.appendMessage(B.message);else if(B.type==="model_change")await this.session.appendModelChange(B.provider,B.modelId);else if(B.type==="thinking_level_change")await this.session.appendThinkingLevelChange(B.thinkingLevel);else if(B.type==="active_tools_change")await this.session.appendActiveToolsChange(B.activeToolNames);else if(B.type==="custom")await this.session.appendCustomEntry(B.customType,B.data);else if(B.type==="custom_message")await this.session.appendCustomMessageEntry(B.customType,B.content,B.display,B.details);else if(B.type==="label")await this.session.appendLabel(B.targetId,B.label);else if(B.type==="session_info")await this.session.appendSessionName(B.name??"");else if(B.type==="leaf")await this.session.getStorage().setLeafId(B.targetId);this.pendingSessionWrites.shift()}}async handleAgentEvent(B,Q){if(B.type==="message_end"){await this.session.appendMessage(B.message),await this.emitAny(B,Q);return}if(B.type==="turn_end"){let F;try{await this.emitAny(B,Q)}catch(I){F=I}let U=this.pendingSessionWrites.length>0;if(await this.flushPendingSessionWrites(),F)throw F;await this.emitOwn({type:"save_point",hadPendingMutations:U});return}if(B.type==="agent_end"){await this.flushPendingSessionWrites(),this.phase="idle",await this.emitAny(B,Q),await this.emitOwn({type:"settled",nextTurnCount:this.nextTurnQueue.length},Q);return}await this.emitAny(B,Q)}async emitRunFailure(B,Q,F,U){let I=nYF(B,Q,F);return await this.handleAgentEvent({type:"message_start",message:I},U),await this.handleAgentEvent({type:"message_end",message:I},U),await this.handleAgentEvent({type:"turn_end",message:I,toolResults:[]},U),await this.handleAgentEvent({type:"agent_end",messages:[I]},U),[I]}async executeTurn(B,Q,F){let U=B,I=[Di(Q,F?.images)];if(this.nextTurnQueue.length>0){let b=this.nextTurnQueue.splice(0);try{await this.emitQueueUpdate()}catch(X){throw this.nextTurnQueue.unshift(...b),Tz(X)}I=[...b,I[0]]}let G=await this.emitHook({type:"before_agent_start",prompt:Q,images:F?.images,systemPrompt:B.systemPrompt,resources:B.resources});if(G?.messages)I=[...I,...G.messages];let Z=new AbortController,W=()=>U,g=(b)=>{U=b};this.runAbortController=Z;let V=(async()=>{try{return await _XB(I,this.createContext(B,G?.systemPrompt),this.createLoopConfig(W,g),(b)=>this.handleAgentEvent(b,Z.signal),Z.signal,this.createStreamFn(W))}catch(b){try{return await this.emitRunFailure(U.model,b,Z.signal.aborted,Z.signal)}catch(X){let C=AggregateError([cV(b),cV(X)],"Agent run failed and failure reporting failed");throw new nI("unknown",C.message,C)}}})();try{let b=await V;for(let X=b.length-1;X>=0;X--){let C=b[X];if(C.role==="assistant")return C}throw new nI("invalid_state","AgentHarness prompt completed without an assistant message")}finally{try{await this.flushPendingSessionWrites()}finally{this.runAbortController=void 0}}}async prompt(B,Q){if(this.phase!=="idle")throw new nI("busy","AgentHarness is busy");this.phase="turn";let F=this.startRunPromise();try{let U=await this.createTurnState();return await this.executeTurn(U,B,Q)}catch(U){throw this.phase="idle",TN(U,"unknown")}finally{F()}}async skill(B,Q){if(this.phase!=="idle")throw new nI("busy","AgentHarness is busy");this.phase="turn";let F=this.startRunPromise();try{let U=await this.createTurnState(),I=(U.resources.skills??[]).find((G)=>G.name===B);if(!I)throw new nI("invalid_argument",`Unknown skill: ${B}`);return await this.executeTurn(U,$gQ(I,Q))}catch(U){throw this.phase="idle",TN(U,"unknown")}finally{F()}}async promptFromTemplate(B,Q=[]){if(this.phase!=="idle")throw new nI("busy","AgentHarness is busy");this.phase="turn";let F=this.startRunPromise();try{let U=await this.createTurnState(),I=(U.resources.promptTemplates??[]).find((G)=>G.name===B);if(!I)throw new nI("invalid_argument",`Unknown prompt template: ${B}`);return await this.executeTurn(U,zgQ(I,Q))}catch(U){throw this.phase="idle",TN(U,"unknown")}finally{F()}}async steer(B,Q){if(this.phase==="idle")throw new nI("invalid_state","Cannot steer while idle");this.steerQueue.push(Di(B,Q?.images)),await this.emitQueueUpdate()}async followUp(B,Q){if(this.phase==="idle")throw new nI("invalid_state","Cannot follow up while idle");this.followUpQueue.push(Di(B,Q?.images)),await this.emitQueueUpdate()}async nextTurn(B,Q){this.nextTurnQueue.push(Di(B,Q?.images)),await this.emitQueueUpdate()}async appendMessage(B){try{if(this.phase==="idle")await this.session.appendMessage(B);else this.pendingSessionWrites.push({type:"message",message:B})}catch(Q){throw TN(Q,"session")}}async compact(B){if(this.phase!=="idle")throw new nI("busy","compact() requires idle harness");this.phase="compaction";try{let Q=this.model;if(!Q)throw new nI("invalid_state","No model set for compaction");let F=await this.getApiKeyAndHeaders?.(Q);if(!F)throw new nI("auth","No auth available for compaction");let U=await this.session.getBranch(),I=lXB(U,fXB);if(!I.ok)throw I.error;let G=I.value;if(!G)throw new nI("compaction","Nothing to compact");let Z=await this.emitHook({type:"session_before_compact",preparation:G,branchEntries:U,customInstructions:B,signal:new AbortController().signal});if(Z?.cancel)throw new nI("compaction","Compaction cancelled");let W=Z?.compaction,g=W?{ok:!0,value:W}:await uXB(G,Q,F.apiKey,F.headers,B,void 0,this.thinkingLevel);if(!g.ok)throw g.error;let V=g.value,b=await this.session.appendCompaction(V.summary,V.firstKeptEntryId,V.tokensBefore,V.details,W!==void 0),X=await this.session.getEntry(b);if(X?.type==="compaction")await this.emitOwn({type:"session_compact",compactionEntry:X,fromHook:W!==void 0});return V}catch(Q){throw TN(Q,"compaction")}finally{this.phase="idle"}}async navigateTree(B,Q){if(this.phase!=="idle")throw new nI("busy","navigateTree() requires idle harness");this.phase="branch_summary";try{let F=await this.session.getLeafId();if(F===B)return{cancelled:!1};let U=await this.session.getEntry(B);if(!U)throw new nI("invalid_argument",`Entry ${B} not found`);let{entries:I,commonAncestorId:G}=await qXB(this.session,F,B),Z={targetId:B,oldLeafId:F,commonAncestorId:G,entriesToSummarize:I,userWantsSummary:Q?.summarize??!1,customInstructions:Q?.customInstructions,replaceInstructions:Q?.replaceInstructions,label:Q?.label},W=new AbortController().signal,g=await this.emitHook({type:"session_before_tree",preparation:Z,signal:W});if(g?.cancel)return{cancelled:!0};let V,b=g?.summary?.summary,X=g?.summary?.details;if(!b&&Q?.summarize&&I.length>0){let A=this.model;if(!A)throw new nI("invalid_state","No model set for branch summary");let Y=await this.getApiKeyAndHeaders?.(A);if(!Y)throw new nI("auth","No auth available for branch summary");let L=await jXB(I,{model:A,apiKey:Y.apiKey,headers:Y.headers,signal:new AbortController().signal,customInstructions:g?.customInstructions??Q?.customInstructions,replaceInstructions:g?.replaceInstructions??Q?.replaceInstructions});if(!L.ok){if(L.error.code==="aborted")return{cancelled:!0};throw new nI("branch_summary",L.error.message,L.error)}b=L.value.summary,X={readFiles:L.value.readFiles,modifiedFiles:L.value.modifiedFiles}}let C,N;if(U.type==="message"&&U.message.role==="user"){N=U.parentId;let A=U.message.content;C=typeof A==="string"?A:A.filter((Y)=>Y.type==="text").map((Y)=>Y.text).join("")}else if(U.type==="custom_message")N=U.parentId,C=typeof U.content==="string"?U.content:U.content.filter((A)=>A.type==="text").map((A)=>A.text).join("");else N=B;let R=await this.session.moveTo(N,b?{summary:b,details:X,fromHook:g?.summary!==void 0}:void 0);if(R){let A=await this.session.getEntry(R);if(A?.type==="branch_summary")V=A}return await this.emitOwn({type:"session_tree",newLeafId:await this.session.getLeafId(),oldLeafId:F,summaryEntry:V,fromHook:g?.summary!==void 0}),{cancelled:!1,editorText:C,summaryEntry:V}}catch(F){throw TN(F,"branch_summary")}finally{this.phase="idle"}}getModel(){return this.model}async setModel(B){try{let Q=this.model;if(this.phase==="idle")await this.session.appendModelChange(B.provider,B.id);else this.pendingSessionWrites.push({type:"model_change",provider:B.provider,modelId:B.id});this.model=B,await this.emitOwn({type:"model_update",model:B,previousModel:Q,source:"set"})}catch(Q){throw TN(Q,"session")}}getThinkingLevel(){return this.thinkingLevel}async setThinkingLevel(B){try{let Q=this.thinkingLevel;if(this.phase==="idle")await this.session.appendThinkingLevelChange(B);else this.pendingSessionWrites.push({type:"thinking_level_change",thinkingLevel:B});this.thinkingLevel=B,await this.emitOwn({type:"thinking_level_update",level:B,previousLevel:Q})}catch(Q){throw TN(Q,"session")}}getTools(){return[...this.tools.values()]}async setTools(B,Q){try{this.validateUniqueNames(B.map((Z)=>Z.name),"Duplicate tool name(s)");let F=new Map(B.map((Z)=>[Z.name,Z])),U=Q?[...Q]:this.activeToolNames;this.validateToolNames(U,F);let I=[...this.tools.keys()],G=[...this.activeToolNames];if(this.phase==="idle")await this.session.appendActiveToolsChange(U);else this.pendingSessionWrites.push({type:"active_tools_change",activeToolNames:[...U]});this.tools=F,this.activeToolNames=[...U],await this.emitOwn({type:"tools_update",toolNames:[...this.tools.keys()],previousToolNames:I,activeToolNames:[...this.activeToolNames],previousActiveToolNames:G,source:"set"})}catch(F){throw TN(F,"invalid_argument")}}getActiveTools(){return this.activeToolNames.map((B)=>this.tools.get(B))}async setActiveTools(B){try{this.validateToolNames(B);let Q=[...this.tools.keys()],F=[...this.activeToolNames];if(this.phase==="idle")await this.session.appendActiveToolsChange(B);else this.pendingSessionWrites.push({type:"active_tools_change",activeToolNames:[...B]});this.activeToolNames=[...B],await this.emitOwn({type:"tools_update",toolNames:[...this.tools.keys()],previousToolNames:Q,activeToolNames:[...this.activeToolNames],previousActiveToolNames:F,source:"set"})}catch(Q){throw TN(Q,"invalid_argument")}}getSteeringMode(){return this.steeringQueueMode}async setSteeringMode(B){this.steeringQueueMode=B}getFollowUpMode(){return this.followUpQueueMode}async setFollowUpMode(B){this.followUpQueueMode=B}getResources(){return{skills:this.resources.skills?.slice(),promptTemplates:this.resources.promptTemplates?.slice()}}async setResources(B){let Q=this.getResources();this.resources={skills:B.skills?.slice(),promptTemplates:B.promptTemplates?.slice()},await this.emitOwn({type:"resources_update",resources:this.getResources(),previousResources:Q})}getStreamOptions(){return mz(this.streamOptions)}async setStreamOptions(B){this.streamOptions=mz(B)}async abort(){let B=[...this.steerQueue],Q=[...this.followUpQueue];this.steerQueue=[],this.followUpQueue=[],this.runAbortController?.abort();let F=[];try{await this.emitQueueUpdate()}catch(U){F.push(cV(U))}try{await this.waitForIdle()}catch(U){F.push(cV(U))}try{await this.emitOwn({type:"abort",clearedSteer:B,clearedFollowUp:Q})}catch(U){F.push(cV(U))}if(F.length>0){let U=F.length===1?F[0]:AggregateError(F,"Abort completed with errors");throw TN(U,"hook")}return{clearedSteer:B,clearedFollowUp:Q}}async waitForIdle(){await this.runPromise}subscribe(B){let Q=this.handlers.get(zi);if(!Q)Q=new Set,this.handlers.set(zi,Q);return Q.add(B),()=>Q.delete(B)}on(B,Q){let F=this.handlers.get(B);if(!F)F=new Set,this.handlers.set(B,F);return F.add(Q),()=>F.delete(Q)}}var m1I=globalThis.Buffer;import{spawn as bRB}from"child_process";import{randomUUID as BLF}from"crypto";import{constants as QLF,createReadStream as FLF}from"fs";import{access as ULF,appendFile as ILF,lstat as _gQ,mkdir as WRB,mkdtemp as GLF,readdir as ZLF,readFile as vgQ,realpath as WLF,rm as gLF,writeFile as PgQ}from"fs/promises";import{tmpdir as VLF}from"os";import{isAbsolute as bLF,join as gRB,resolve as wi}from"path";import{createInterface as XLF}from"readline";function mN(B,Q){return bLF(Q)?Q:wi(B,Q)}function CLF(B){if(B.isFile())return"file";if(B.isDirectory())return"directory";if(B.isSymbolicLink())return"symlink";return}function fgQ(B,Q){let F=CLF(Q);if(!F)return pU(new wN("invalid","Unsupported file type",B));return H0({name:B.replace(/\/+$/,"").split("/").pop()??B,path:B,kind:F,size:Q.size,mtimeMs:Q.mtimeMs})}function RLF(B){return B instanceof Error&&"code"in B}function dR(B,Q){if(B instanceof wN)return B;let F=cV(B);if(RLF(B)){let U=B.message;switch(B.code){case"ABORT_ERR":return new wN("aborted",U,Q,F);case"ENOENT":return new wN("not_found",U,Q,F);case"EACCES":case"EPERM":return new wN("permission_denied",U,Q,F);case"ENOTDIR":return new wN("not_directory",U,Q,F);case"EISDIR":return new wN("is_directory",U,Q,F);case"EINVAL":return new wN("invalid",U,Q,F)}}return new wN("unknown",F.message,Q,F)}function VJ(B,Q){return B?.aborted?pU(new wN("aborted","aborted",Q)):void 0}async function Si(B){try{return await ULF(B,QLF.F_OK),!0}catch{return!1}}async function lgQ(B,Q,F){return await new Promise((U)=>{let I="",G;try{G=bRB(B,Q,{stdio:["ignore","pipe","ignore"],windowsHide:!0})}catch{U({stdout:"",status:null});return}let Z=setTimeout(()=>{if(G.pid)VRB(G.pid)},F);G.stdout?.setEncoding("utf8"),G.stdout?.on("data",(W)=>{I+=W}),G.on("error",()=>{clearTimeout(Z),U({stdout:"",status:null})}),G.on("close",(W)=>{clearTimeout(Z),U({stdout:I,status:W})})})}async function ugQ(){let B=process.platform==="win32"?await lgQ("where",["bash.exe"],5000):await lgQ("which",["bash"],5000);if(B.status!==0||!B.stdout)return null;let Q=B.stdout.trim().split(/\r?\n/)[0];return Q&&await Si(Q)?Q:null}async function NLF(B){if(B){if(await Si(B))return H0({shell:B,args:["-c"]});return pU(new SN("shell_unavailable",`Custom shell path not found: ${B}`))}if(process.platform==="win32"){let F=[],U=process.env.ProgramFiles;if(U)F.push(`${U}\\Git\\bin\\bash.exe`);let I=process.env["ProgramFiles(x86)"];if(I)F.push(`${I}\\Git\\bin\\bash.exe`);for(let Z of F)if(await Si(Z))return H0({shell:Z,args:["-c"]});let G=await ugQ();if(G)return H0({shell:G,args:["-c"]});return pU(new SN("shell_unavailable","No bash shell found"))}if(await Si("/bin/bash"))return H0({shell:"/bin/bash",args:["-c"]});let Q=await ugQ();if(Q)return H0({shell:Q,args:["-c"]});return H0({shell:"sh",args:["-c"]})}function ALF(B,Q){return{...process.env,...B,...Q}}function VRB(B){if(process.platform==="win32"){try{bRB("taskkill",["/F","/T","/PID",String(B)],{stdio:"ignore",detached:!0,windowsHide:!0})}catch{}return}try{process.kill(-B,"SIGKILL")}catch{try{process.kill(B,"SIGKILL")}catch{}}}class yi{cwd;shellPath;shellEnv;constructor(B){this.cwd=B.cwd,this.shellPath=B.shellPath,this.shellEnv=B.shellEnv}async absolutePath(B){return H0(mN(this.cwd,B))}async joinPath(B){return H0(gRB(...B))}async exec(B,Q){if(Q?.abortSignal?.aborted)return pU(new SN("aborted","aborted"));let F=Q?.cwd?mN(this.cwd,Q.cwd):this.cwd,U=await NLF(this.shellPath);if(!U.ok)return U;return await new Promise((I)=>{let G="",Z="",W=!1,g=!1,V,b,X,C=()=>{if(b?.pid)VRB(b.pid)},N=(R)=>{if(X)clearTimeout(X);if(Q?.abortSignal)Q.abortSignal.removeEventListener("abort",C);if(W)return;W=!0,I(R)};try{b=bRB(U.value.shell,[...U.value.args,B],{cwd:F,detached:process.platform!=="win32",env:ALF(this.shellEnv,Q?.env),stdio:["ignore","pipe","pipe"],windowsHide:!0})}catch(R){let A=cV(R);N(pU(new SN("spawn_error",A.message,A)));return}if(X=typeof Q?.timeout==="number"?setTimeout(()=>{if(g=!0,b?.pid)VRB(b.pid)},Q.timeout*1000):void 0,Q?.abortSignal)if(Q.abortSignal.aborted)C();else Q.abortSignal.addEventListener("abort",C,{once:!0});b.stdout?.setEncoding("utf8"),b.stderr?.setEncoding("utf8"),b.stdout?.on("data",(R)=>{G+=R;try{Q?.onStdout?.(R)}catch(A){let Y=cV(A);V=new SN("callback_error",Y.message,Y),C()}}),b.stderr?.on("data",(R)=>{Z+=R;try{Q?.onStderr?.(R)}catch(A){let Y=cV(A);V=new SN("callback_error",Y.message,Y),C()}}),b.on("error",(R)=>{N(pU(new SN("spawn_error",R.message,R)))}),b.on("close",(R)=>{if(V){N(pU(V));return}if(g){N(pU(new SN("timeout",`timeout:${Q?.timeout}`)));return}if(Q?.abortSignal?.aborted){N(pU(new SN("aborted","aborted")));return}N(H0({stdout:G,stderr:Z,exitCode:R??0}))})})}async readTextFile(B,Q){let F=mN(this.cwd,B),U=VJ(Q,F);if(U)return U;try{return H0(await vgQ(F,{encoding:"utf8",signal:Q}))}catch(I){return pU(dR(I,F))}}async readTextLines(B,Q){let F=mN(this.cwd,B),U=VJ(Q?.abortSignal,F);if(U)return U;if(Q?.maxLines!==void 0&&Q.maxLines<=0)return H0([]);let I,G;try{I=FLF(F,{encoding:"utf8",signal:Q?.abortSignal}),G=XLF({input:I,crlfDelay:1/0});let Z=[];for await(let g of G){let V=VJ(Q?.abortSignal,F);if(V)return V;if(Z.push(g),Q?.maxLines!==void 0&&Z.length>=Q.maxLines)break}let W=VJ(Q?.abortSignal,F);if(W)return W;return H0(Z)}catch(Z){return pU(dR(Z,F))}finally{G?.close(),I?.destroy()}}async readBinaryFile(B,Q){let F=mN(this.cwd,B),U=VJ(Q,F);if(U)return U;try{return H0(await vgQ(F,{signal:Q}))}catch(I){return pU(dR(I,F))}}async writeFile(B,Q,F){let U=mN(this.cwd,B),I=VJ(F,U);if(I)return I;try{await WRB(wi(U,".."),{recursive:!0});let G=VJ(F,U);if(G)return G;return await PgQ(U,Q,{signal:F}),H0(void 0)}catch(G){return pU(dR(G,U))}}async appendFile(B,Q){let F=mN(this.cwd,B);try{return await WRB(wi(F,".."),{recursive:!0}),await ILF(F,Q),H0(void 0)}catch(U){return pU(dR(U,F))}}async fileInfo(B){let Q=mN(this.cwd,B);try{return fgQ(Q,await _gQ(Q))}catch(F){return pU(dR(F,Q))}}async listDir(B,Q){let F=mN(this.cwd,B),U=VJ(Q,F);if(U)return U;try{let I=await ZLF(F,{withFileTypes:!0}),G=[];for(let Z of I){let W=VJ(Q,F);if(W)return W;let g=wi(F,Z.name);try{let V=fgQ(g,await _gQ(g));if(V.ok)G.push(V.value)}catch(V){return pU(dR(V,g))}}return H0(G)}catch(I){return pU(dR(I,F))}}async canonicalPath(B){let Q=mN(this.cwd,B);try{return H0(await WLF(Q))}catch(F){return pU(dR(F,Q))}}async exists(B){let Q=await this.fileInfo(B);if(Q.ok)return H0(!0);if(Q.error.code==="not_found")return H0(!1);return pU(Q.error)}async createDir(B,Q){let F=mN(this.cwd,B);try{return await WRB(F,{recursive:Q?.recursive??!0}),H0(void 0)}catch(U){return pU(dR(U,F))}}async remove(B,Q){let F=mN(this.cwd,B);try{return await gLF(F,{recursive:Q?.recursive??!1,force:Q?.force??!1}),H0(void 0)}catch(U){return pU(dR(U,F))}}async createTempDir(B="tmp-"){try{return H0(await GLF(gRB(VLF(),B)))}catch(Q){return pU(dR(Q))}}async createTempFile(B){let Q=await this.createTempDir("tmp-");if(!Q.ok)return Q;let F=gRB(Q.value,`${B?.prefix??""}${BLF()}${B?.suffix??""}`);try{return await PgQ(F,""),H0(F)}catch(U){return pU(dR(U,F))}}async cleanup(){}}var YLF=new Map;function LLF(B,Q){return(F,U,I)=>{if(F.api!==B)throw Error(`Mismatched api: ${F.api} expected ${B}`);return Q(F,U,I)}}function HLF(B,Q){return(F,U,I)=>{if(F.api!==B)throw Error(`Mismatched api: ${F.api} expected ${B}`);return Q(F,U,I)}}function GA(B,Q){YLF.set(B.api,{provider:{api:B.api,stream:LLF(B.api,B.stream),streamSimple:HLF(B.api,B.streamSimple)},sourceId:Q})}ZA();var qgQ={openrouter:{"black-forest-labs/flux.2-flex":{id:"black-forest-labs/flux.2-flex",name:"Black Forest Labs: FLUX.2 Flex",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"black-forest-labs/flux.2-klein-4b":{id:"black-forest-labs/flux.2-klein-4b",name:"Black Forest Labs: FLUX.2 Klein 4B",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"black-forest-labs/flux.2-max":{id:"black-forest-labs/flux.2-max",name:"Black Forest Labs: FLUX.2 Max",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"black-forest-labs/flux.2-pro":{id:"black-forest-labs/flux.2-pro",name:"Black Forest Labs: FLUX.2 Pro",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"bytedance-seed/seedream-4.5":{id:"bytedance-seed/seedream-4.5",name:"ByteDance Seed: Seedream 4.5",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["image","text"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"google/gemini-2.5-flash-image":{id:"google/gemini-2.5-flash-image",name:"Google: Nano Banana (Gemini 2.5 Flash Image)",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["image","text"],output:["image","text"],cost:{input:0.3,output:2.5,cacheRead:0.03,cacheWrite:0.08333333333333334}},"google/gemini-3-pro-image-preview":{id:"google/gemini-3-pro-image-preview",name:"Google: Nano Banana Pro (Gemini 3 Pro Image Preview)",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["image","text"],output:["image","text"],cost:{input:2,output:12,cacheRead:0.19999999999999998,cacheWrite:0.375}},"google/gemini-3.1-flash-image-preview":{id:"google/gemini-3.1-flash-image-preview",name:"Google: Nano Banana 2 (Gemini 3.1 Flash Image Preview)",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["image","text"],output:["image","text"],cost:{input:0.5,output:3,cacheRead:0,cacheWrite:0}},"openai/gpt-5-image":{id:"openai/gpt-5-image",name:"OpenAI: GPT-5 Image",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["image","text"],output:["image","text"],cost:{input:10,output:10,cacheRead:1.25,cacheWrite:0}},"openai/gpt-5-image-mini":{id:"openai/gpt-5-image-mini",name:"OpenAI: GPT-5 Image Mini",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["image","text"],output:["image","text"],cost:{input:2.5,output:2,cacheRead:0.25,cacheWrite:0}},"openai/gpt-5.4-image-2":{id:"openai/gpt-5.4-image-2",name:"OpenAI: GPT-5.4 Image 2",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["image","text"],output:["image","text"],cost:{input:8,output:15,cacheRead:2,cacheWrite:0}},"openrouter/auto":{id:"openrouter/auto",name:"Auto Router",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["text","image"],cost:{input:-1e6,output:-1e6,cacheRead:0,cacheWrite:0}},"recraft/recraft-v3":{id:"recraft/recraft-v3",name:"Recraft: Recraft V3",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4":{id:"recraft/recraft-v4",name:"Recraft: Recraft V4",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4-pro":{id:"recraft/recraft-v4-pro",name:"Recraft: Recraft V4 Pro",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4-pro-vector":{id:"recraft/recraft-v4-pro-vector",name:"Recraft: Recraft V4 Pro Vector",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4-vector":{id:"recraft/recraft-v4-vector",name:"Recraft: Recraft V4 Vector",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4.1":{id:"recraft/recraft-v4.1",name:"Recraft: Recraft V4.1",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4.1-pro":{id:"recraft/recraft-v4.1-pro",name:"Recraft: Recraft V4.1 Pro",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4.1-pro-vector":{id:"recraft/recraft-v4.1-pro-vector",name:"Recraft: Recraft V4.1 Pro Vector",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4.1-utility":{id:"recraft/recraft-v4.1-utility",name:"Recraft: Recraft V4.1 Utility",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4.1-utility-pro":{id:"recraft/recraft-v4.1-utility-pro",name:"Recraft: Recraft V4.1 Utility Pro",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4.1-vector":{id:"recraft/recraft-v4.1-vector",name:"Recraft: Recraft V4.1 Vector",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"sourceful/riverflow-v2-fast":{id:"sourceful/riverflow-v2-fast",name:"Sourceful: Riverflow V2 Fast",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"sourceful/riverflow-v2-fast-preview":{id:"sourceful/riverflow-v2-fast-preview",name:"Sourceful: Riverflow V2 Fast Preview",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"sourceful/riverflow-v2-max-preview":{id:"sourceful/riverflow-v2-max-preview",name:"Sourceful: Riverflow V2 Max Preview",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"sourceful/riverflow-v2-pro":{id:"sourceful/riverflow-v2-pro",name:"Sourceful: Riverflow V2 Pro",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"sourceful/riverflow-v2-standard-preview":{id:"sourceful/riverflow-v2-standard-preview",name:"Sourceful: Riverflow V2 Standard Preview",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"x-ai/grok-imagine-image-quality":{id:"x-ai/grok-imagine-image-quality",name:"xAI: Grok Imagine Image Quality",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}}}};var yLF=new Map;for(let[B,Q]of Object.entries(qgQ)){let F=new Map;for(let[U,I]of Object.entries(Q))F.set(U,I);yLF.set(B,F)}var MLF=new Map;function TLF(B,Q){return(F,U,I)=>{if(F.api!==B)throw Error(`Mismatched api: ${F.api} expected ${B}`);return Q(F,U,I)}}function jgQ(B,Q){MLF.set(B.api,{provider:{api:B.api,generateImages:TLF(B.api,B.generateImages)},sourceId:Q})}var pgQ;function hLF(B,Q){return{api:B.api,provider:B.provider,model:B.id,output:[],stopReason:"error",errorMessage:Q instanceof Error?Q.message:String(Q),timestamp:Date.now()}}function kLF(){return pgQ||=Promise.resolve().then(() => (igQ(),ngQ)).then((B)=>B),pgQ}var dLF=async(B,Q,F)=>{try{return await(await kLF()).generateImagesOpenRouter(B,Q,F)}catch(U){return hLF(B,U)}};function $LF(){jgQ({api:"openrouter-images",generateImages:dLF})}$LF();WA();ON();ON();var w5F=function(B,Q){if(typeof B==="string"&&/^\.\.?\//.test(B))return B.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i,function(F,U,I,G,Z){return U?Q?".jsx":".js":I&&(!G||!Z)?F:I+G+"."+Z.toLowerCase()+"js"});return B},S5F=(B)=>{let Q=import.meta.url.endsWith(".js")?B.replace(/\.ts$/,".js"):B;return import(w5F(Q))},gbQ,VbQ,bbQ,XbQ,CbQ,RbQ,NbQ,AbQ,YbQ,LbQ;function HbQ(B,Q){(async()=>{for await(let F of Q)B.push(F);B.end()})()}function JbQ(B,Q){return{role:"assistant",content:[],api:B.api,provider:B.provider,model:B.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:Q instanceof Error?Q.message:String(Q),timestamp:Date.now()}}function bJ(B){return(Q,F,U)=>{let I=new nW;return B().then((G)=>{let Z=G.stream(Q,F,U);HbQ(I,Z)}).catch((G)=>{let Z=JbQ(Q,G);I.push({type:"error",reason:"error",error:Z}),I.end(Z)}),I}}function XJ(B){return(Q,F,U)=>{let I=new nW;return B().then((G)=>{let Z=G.streamSimple(Q,F,U);HbQ(I,Z)}).catch((G)=>{let Z=JbQ(Q,G);I.push({type:"error",reason:"error",error:Z}),I.end(Z)}),I}}function xbQ(){return gbQ||=Promise.resolve().then(() => (ZVQ(),GVQ)).then((B)=>{let Q=B;return{stream:Q.streamAnthropic,streamSimple:Q.streamSimpleAnthropic}}),gbQ}function EbQ(){return VbQ||=Promise.resolve().then(() => (VVQ(),gVQ)).then((B)=>{let Q=B;return{stream:Q.streamAzureOpenAIResponses,streamSimple:Q.streamSimpleAzureOpenAIResponses}}),VbQ}function DbQ(){return bbQ||=Promise.resolve().then(() => (RVQ(),CVQ)).then((B)=>{let Q=B;return{stream:Q.streamGoogle,streamSimple:Q.streamSimpleGoogle}}),bbQ}function zbQ(){return XbQ||=Promise.resolve().then(() => (HVQ(),LVQ)).then((B)=>{let Q=B;return{stream:Q.streamGoogleVertex,streamSimple:Q.streamSimpleGoogleVertex}}),XbQ}function wbQ(){return CbQ||=Promise.resolve().then(() => (wVQ(),zVQ)).then((B)=>{let Q=B;return{stream:Q.streamMistral,streamSimple:Q.streamSimpleMistral}}),CbQ}function SbQ(){return RbQ||=Promise.resolve().then(() => (aVQ(),pVQ)).then((B)=>{let Q=B;return{stream:Q.streamOpenAICodexResponses,streamSimple:Q.streamSimpleOpenAICodexResponses}}),RbQ}function ybQ(){return NbQ||=Promise.resolve().then(() => (FbQ(),QbQ)).then((B)=>{let Q=B;return{stream:Q.streamOpenAICompletions,streamSimple:Q.streamSimpleOpenAICompletions}}),NbQ}function MbQ(){return AbQ||=Promise.resolve().then(() => (WbQ(),ZbQ)).then((B)=>{let Q=B;return{stream:Q.streamOpenAIResponses,streamSimple:Q.streamSimpleOpenAIResponses}}),AbQ}function TbQ(){if(YbQ)return Promise.resolve(YbQ);return LbQ||=S5F("./amazon-bedrock.ts").then((B)=>{let Q=B;return{stream:Q.streamBedrock,streamSimple:Q.streamSimpleBedrock}}),LbQ}var y5F=bJ(xbQ),M5F=XJ(xbQ),T5F=bJ(EbQ),m5F=XJ(EbQ),O5F=bJ(DbQ),c5F=XJ(DbQ),K5F=bJ(zbQ),h5F=XJ(zbQ),k5F=bJ(wbQ),d5F=XJ(wbQ),$5F=bJ(SbQ),_5F=XJ(SbQ),v5F=bJ(ybQ),P5F=XJ(ybQ),f5F=bJ(MbQ),l5F=XJ(MbQ),u5F=bJ(TbQ),q5F=XJ(TbQ);function j5F(){GA({api:"anthropic-messages",stream:y5F,streamSimple:M5F}),GA({api:"openai-completions",stream:v5F,streamSimple:P5F}),GA({api:"mistral-conversations",stream:k5F,streamSimple:d5F}),GA({api:"openai-responses",stream:f5F,streamSimple:l5F}),GA({api:"azure-openai-responses",stream:T5F,streamSimple:m5F}),GA({api:"openai-codex-responses",stream:$5F,streamSimple:_5F}),GA({api:"google-generative-ai",stream:O5F,streamSimple:c5F}),GA({api:"google-vertex",stream:K5F,streamSimple:h5F}),GA({api:"bedrock-converse-stream",stream:u5F,streamSimple:q5F})}j5F();yRB();ZA();ON();LT();var wb={};WU(wb,{IsUndefined:()=>xW,IsUint8Array:()=>RJ,IsSymbol:()=>dRB,IsString:()=>IG,IsRegExp:()=>rh,IsObject:()=>mI,IsNumber:()=>PR,IsNull:()=>kRB,IsIterator:()=>hRB,IsFunction:()=>KRB,IsDate:()=>Kz,IsBoolean:()=>CJ,IsBigInt:()=>oh,IsAsyncIterator:()=>cRB,IsArray:()=>JW,HasPropertyKey:()=>pi});function pi(B,Q){return Q in B}function cRB(B){return mI(B)&&!JW(B)&&!RJ(B)&&Symbol.asyncIterator in B}function JW(B){return Array.isArray(B)}function oh(B){return typeof B==="bigint"}function CJ(B){return typeof B==="boolean"}function Kz(B){return B instanceof globalThis.Date}function KRB(B){return typeof B==="function"}function hRB(B){return mI(B)&&!JW(B)&&!RJ(B)&&Symbol.iterator in B}function kRB(B){return B===null}function PR(B){return typeof B==="number"}function mI(B){return typeof B==="object"&&B!==null}function rh(B){return B instanceof globalThis.RegExp}function IG(B){return typeof B==="string"}function dRB(B){return typeof B==="symbol"}function RJ(B){return B instanceof globalThis.Uint8Array}function xW(B){return B===void 0}function n5F(B){return B.map((Q)=>ai(Q))}function i5F(B){return new Date(B.getTime())}function p5F(B){return new Uint8Array(B)}function a5F(B){return new RegExp(B.source,B.flags)}function o5F(B){let Q={};for(let F of Object.getOwnPropertyNames(B))Q[F]=ai(B[F]);for(let F of Object.getOwnPropertySymbols(B))Q[F]=ai(B[F]);return Q}function ai(B){return JW(B)?n5F(B):Kz(B)?i5F(B):RJ(B)?p5F(B):rh(B)?a5F(B):mI(B)?o5F(B):B}function nG(B){return ai(B)}function zT(B,Q){return Q===void 0?nG(B):nG({...Q,...B})}function mbQ(B){return B!==null&&typeof B==="object"}function ObQ(B){return globalThis.Array.isArray(B)&&!globalThis.ArrayBuffer.isView(B)}function cbQ(B){return B===void 0}function KbQ(B){return typeof B==="number"}var oi;(function(B){B.InstanceMode="default",B.ExactOptionalPropertyTypes=!1,B.AllowArrayObject=!1,B.AllowNaN=!1,B.AllowNullVoid=!1;function Q(Z,W){return B.ExactOptionalPropertyTypes?W in Z:Z[W]!==void 0}B.IsExactOptionalProperty=Q;function F(Z){let W=mbQ(Z);return B.AllowArrayObject?W:W&&!ObQ(Z)}B.IsObjectLike=F;function U(Z){return F(Z)&&!(Z instanceof Date)&&!(Z instanceof Uint8Array)}B.IsRecordLike=U;function I(Z){return B.AllowNaN?KbQ(Z):Number.isFinite(Z)}B.IsNumberLike=I;function G(Z){let W=cbQ(Z);return B.AllowNullVoid?W||Z===null:W}B.IsVoidLike=G})(oi||(oi={}));function r5F(B){return globalThis.Object.freeze(B).map((Q)=>sh(Q))}function s5F(B){return B}function t5F(B){return B}function e5F(B){return B}function BxF(B){let Q={};for(let F of Object.getOwnPropertyNames(B))Q[F]=sh(B[F]);for(let F of Object.getOwnPropertySymbols(B))Q[F]=sh(B[F]);return globalThis.Object.freeze(Q)}function sh(B){return JW(B)?r5F(B):Kz(B)?s5F(B):RJ(B)?t5F(B):rh(B)?e5F(B):mI(B)?BxF(B):B}function UQ(B,Q){let F=Q!==void 0?{...Q,...B}:B;switch(oi.InstanceMode){case"freeze":return sh(F);case"clone":return nG(F);default:return F}}class KV extends Error{constructor(B){super(B)}}var iW=Symbol.for("TypeBox.Transform"),VA=Symbol.for("TypeBox.Readonly"),hV=Symbol.for("TypeBox.Optional"),cN=Symbol.for("TypeBox.Hint"),zQ=Symbol.for("TypeBox.Kind");function wT(B){return mI(B)&&B[VA]==="Readonly"}function SC(B){return mI(B)&&B[hV]==="Optional"}function $RB(B){return J0(B,"Any")}function _RB(B){return J0(B,"Argument")}function bA(B){return J0(B,"Array")}function hz(B){return J0(B,"AsyncIterator")}function kz(B){return J0(B,"BigInt")}function NJ(B){return J0(B,"Boolean")}function XA(B){return J0(B,"Computed")}function CA(B){return J0(B,"Constructor")}function QxF(B){return J0(B,"Date")}function RA(B){return J0(B,"Function")}function NA(B){return J0(B,"Integer")}function wZ(B){return J0(B,"Intersect")}function dz(B){return J0(B,"Iterator")}function J0(B,Q){return mI(B)&&zQ in B&&B[zQ]===Q}function ri(B){return CJ(B)||PR(B)||IG(B)}function fR(B){return J0(B,"Literal")}function lR(B){return J0(B,"MappedKey")}function iG(B){return J0(B,"MappedResult")}function r9(B){return J0(B,"Never")}function FxF(B){return J0(B,"Not")}function th(B){return J0(B,"Null")}function AA(B){return J0(B,"Number")}function EW(B){return J0(B,"Object")}function $z(B){return J0(B,"Promise")}function _z(B){return J0(B,"Record")}function UW(B){return J0(B,"Ref")}function vRB(B){return J0(B,"RegExp")}function AJ(B){return J0(B,"String")}function eh(B){return J0(B,"Symbol")}function uR(B){return J0(B,"TemplateLiteral")}function UxF(B){return J0(B,"This")}function s9(B){return mI(B)&&iW in B}function qR(B){return J0(B,"Tuple")}function Bk(B){return J0(B,"Undefined")}function y0(B){return J0(B,"Union")}function IxF(B){return J0(B,"Uint8Array")}function GxF(B){return J0(B,"Unknown")}function ZxF(B){return J0(B,"Unsafe")}function WxF(B){return J0(B,"Void")}function gxF(B){return mI(B)&&zQ in B&&IG(B[zQ])}function jR(B){return $RB(B)||_RB(B)||bA(B)||NJ(B)||kz(B)||hz(B)||XA(B)||CA(B)||QxF(B)||RA(B)||NA(B)||wZ(B)||dz(B)||fR(B)||lR(B)||iG(B)||r9(B)||FxF(B)||th(B)||AA(B)||EW(B)||$z(B)||_z(B)||UW(B)||vRB(B)||AJ(B)||eh(B)||uR(B)||UxF(B)||qR(B)||Bk(B)||y0(B)||IxF(B)||GxF(B)||ZxF(B)||WxF(B)||gxF(B)}var SB={};WU(SB,{TypeGuardUnknownTypeError:()=>hbQ,IsVoid:()=>xXQ,IsUnsafe:()=>JXQ,IsUnknown:()=>HXQ,IsUnionLiteral:()=>LxF,IsUnion:()=>lRB,IsUndefined:()=>YXQ,IsUint8Array:()=>LXQ,IsTuple:()=>AXQ,IsTransform:()=>NXQ,IsThis:()=>RXQ,IsTemplateLiteral:()=>CXQ,IsSymbol:()=>XXQ,IsString:()=>bXQ,IsSchema:()=>tg,IsRegExp:()=>VXQ,IsRef:()=>gXQ,IsRecursive:()=>YxF,IsRecord:()=>WXQ,IsReadonly:()=>CxF,IsProperties:()=>si,IsPromise:()=>ZXQ,IsOptional:()=>RxF,IsObject:()=>GXQ,IsNumber:()=>IXQ,IsNull:()=>UXQ,IsNot:()=>FXQ,IsNever:()=>QXQ,IsMappedResult:()=>BXQ,IsMappedKey:()=>ebQ,IsLiteralValue:()=>tbQ,IsLiteralString:()=>rbQ,IsLiteralNumber:()=>sbQ,IsLiteralBoolean:()=>AxF,IsLiteral:()=>Fk,IsKindOf:()=>B0,IsKind:()=>EXQ,IsIterator:()=>obQ,IsIntersect:()=>abQ,IsInteger:()=>pbQ,IsImport:()=>NxF,IsFunction:()=>ibQ,IsDate:()=>nbQ,IsConstructor:()=>jbQ,IsComputed:()=>qbQ,IsBoolean:()=>ubQ,IsBigInt:()=>lbQ,IsAsyncIterator:()=>fbQ,IsArray:()=>PbQ,IsArgument:()=>vbQ,IsAny:()=>_bQ});class hbQ extends KV{}var VxF=["Argument","Any","Array","AsyncIterator","BigInt","Boolean","Computed","Constructor","Date","Enum","Function","Integer","Intersect","Iterator","Literal","MappedKey","MappedResult","Not","Null","Number","Object","Promise","Record","Ref","RegExp","String","Symbol","TemplateLiteral","This","Tuple","Undefined","Union","Uint8Array","Unknown","Void"];function kbQ(B){try{return new RegExp(B),!0}catch{return!1}}function PRB(B){if(!IG(B))return!1;for(let Q=0;Q<B.length;Q++){let F=B.charCodeAt(Q);if(F>=7&&F<=13||F===27||F===127)return!1}return!0}function dbQ(B){return fRB(B)||tg(B)}function Qk(B){return xW(B)||oh(B)}function GG(B){return xW(B)||PR(B)}function fRB(B){return xW(B)||CJ(B)}function OI(B){return xW(B)||IG(B)}function bxF(B){return xW(B)||IG(B)&&PRB(B)&&kbQ(B)}function XxF(B){return xW(B)||IG(B)&&PRB(B)}function $bQ(B){return xW(B)||tg(B)}function CxF(B){return mI(B)&&B[VA]==="Readonly"}function RxF(B){return mI(B)&&B[hV]==="Optional"}function _bQ(B){return B0(B,"Any")&&OI(B.$id)}function vbQ(B){return B0(B,"Argument")&&PR(B.index)}function PbQ(B){return B0(B,"Array")&&B.type==="array"&&OI(B.$id)&&tg(B.items)&&GG(B.minItems)&&GG(B.maxItems)&&fRB(B.uniqueItems)&&$bQ(B.contains)&&GG(B.minContains)&&GG(B.maxContains)}function fbQ(B){return B0(B,"AsyncIterator")&&B.type==="AsyncIterator"&&OI(B.$id)&&tg(B.items)}function lbQ(B){return B0(B,"BigInt")&&B.type==="bigint"&&OI(B.$id)&&Qk(B.exclusiveMaximum)&&Qk(B.exclusiveMinimum)&&Qk(B.maximum)&&Qk(B.minimum)&&Qk(B.multipleOf)}function ubQ(B){return B0(B,"Boolean")&&B.type==="boolean"&&OI(B.$id)}function qbQ(B){return B0(B,"Computed")&&IG(B.target)&&JW(B.parameters)&&B.parameters.every((Q)=>tg(Q))}function jbQ(B){return B0(B,"Constructor")&&B.type==="Constructor"&&OI(B.$id)&&JW(B.parameters)&&B.parameters.every((Q)=>tg(Q))&&tg(B.returns)}function nbQ(B){return B0(B,"Date")&&B.type==="Date"&&OI(B.$id)&&GG(B.exclusiveMaximumTimestamp)&&GG(B.exclusiveMinimumTimestamp)&&GG(B.maximumTimestamp)&&GG(B.minimumTimestamp)&&GG(B.multipleOfTimestamp)}function ibQ(B){return B0(B,"Function")&&B.type==="Function"&&OI(B.$id)&&JW(B.parameters)&&B.parameters.every((Q)=>tg(Q))&&tg(B.returns)}function NxF(B){return B0(B,"Import")&&pi(B,"$defs")&&mI(B.$defs)&&si(B.$defs)&&pi(B,"$ref")&&IG(B.$ref)&&B.$ref in B.$defs}function pbQ(B){return B0(B,"Integer")&&B.type==="integer"&&OI(B.$id)&&GG(B.exclusiveMaximum)&&GG(B.exclusiveMinimum)&&GG(B.maximum)&&GG(B.minimum)&&GG(B.multipleOf)}function si(B){return mI(B)&&Object.entries(B).every(([Q,F])=>PRB(Q)&&tg(F))}function abQ(B){return B0(B,"Intersect")&&(IG(B.type)&&B.type!=="object"?!1:!0)&&JW(B.allOf)&&B.allOf.every((Q)=>tg(Q)&&!NXQ(Q))&&OI(B.type)&&(fRB(B.unevaluatedProperties)||$bQ(B.unevaluatedProperties))&&OI(B.$id)}function obQ(B){return B0(B,"Iterator")&&B.type==="Iterator"&&OI(B.$id)&&tg(B.items)}function B0(B,Q){return mI(B)&&zQ in B&&B[zQ]===Q}function rbQ(B){return Fk(B)&&IG(B.const)}function sbQ(B){return Fk(B)&&PR(B.const)}function AxF(B){return Fk(B)&&CJ(B.const)}function Fk(B){return B0(B,"Literal")&&OI(B.$id)&&tbQ(B.const)}function tbQ(B){return CJ(B)||PR(B)||IG(B)}function ebQ(B){return B0(B,"MappedKey")&&JW(B.keys)&&B.keys.every((Q)=>PR(Q)||IG(Q))}function BXQ(B){return B0(B,"MappedResult")&&si(B.properties)}function QXQ(B){return B0(B,"Never")&&mI(B.not)&&Object.getOwnPropertyNames(B.not).length===0}function FXQ(B){return B0(B,"Not")&&tg(B.not)}function UXQ(B){return B0(B,"Null")&&B.type==="null"&&OI(B.$id)}function IXQ(B){return B0(B,"Number")&&B.type==="number"&&OI(B.$id)&&GG(B.exclusiveMaximum)&&GG(B.exclusiveMinimum)&&GG(B.maximum)&&GG(B.minimum)&&GG(B.multipleOf)}function GXQ(B){return B0(B,"Object")&&B.type==="object"&&OI(B.$id)&&si(B.properties)&&dbQ(B.additionalProperties)&&GG(B.minProperties)&&GG(B.maxProperties)}function ZXQ(B){return B0(B,"Promise")&&B.type==="Promise"&&OI(B.$id)&&tg(B.item)}function WXQ(B){return B0(B,"Record")&&B.type==="object"&&OI(B.$id)&&dbQ(B.additionalProperties)&&mI(B.patternProperties)&&((Q)=>{let F=Object.getOwnPropertyNames(Q.patternProperties);return F.length===1&&kbQ(F[0])&&mI(Q.patternProperties)&&tg(Q.patternProperties[F[0]])})(B)}function YxF(B){return mI(B)&&cN in B&&B[cN]==="Recursive"}function gXQ(B){return B0(B,"Ref")&&OI(B.$id)&&IG(B.$ref)}function VXQ(B){return B0(B,"RegExp")&&OI(B.$id)&&IG(B.source)&&IG(B.flags)&&GG(B.maxLength)&&GG(B.minLength)}function bXQ(B){return B0(B,"String")&&B.type==="string"&&OI(B.$id)&&GG(B.minLength)&&GG(B.maxLength)&&bxF(B.pattern)&&XxF(B.format)}function XXQ(B){return B0(B,"Symbol")&&B.type==="symbol"&&OI(B.$id)}function CXQ(B){return B0(B,"TemplateLiteral")&&B.type==="string"&&IG(B.pattern)&&B.pattern[0]==="^"&&B.pattern[B.pattern.length-1]==="$"}function RXQ(B){return B0(B,"This")&&OI(B.$id)&&IG(B.$ref)}function NXQ(B){return mI(B)&&iW in B}function AXQ(B){return B0(B,"Tuple")&&B.type==="array"&&OI(B.$id)&&PR(B.minItems)&&PR(B.maxItems)&&B.minItems===B.maxItems&&(xW(B.items)&&xW(B.additionalItems)&&B.minItems===0||JW(B.items)&&B.items.every((Q)=>tg(Q)))}function YXQ(B){return B0(B,"Undefined")&&B.type==="undefined"&&OI(B.$id)}function LxF(B){return lRB(B)&&B.anyOf.every((Q)=>rbQ(Q)||sbQ(Q))}function lRB(B){return B0(B,"Union")&&OI(B.$id)&&mI(B)&&JW(B.anyOf)&&B.anyOf.every((Q)=>tg(Q))}function LXQ(B){return B0(B,"Uint8Array")&&B.type==="Uint8Array"&&OI(B.$id)&&GG(B.minByteLength)&&GG(B.maxByteLength)}function HXQ(B){return B0(B,"Unknown")&&OI(B.$id)}function JXQ(B){return B0(B,"Unsafe")}function xXQ(B){return B0(B,"Void")&&B.type==="void"&&OI(B.$id)}function EXQ(B){return mI(B)&&zQ in B&&IG(B[zQ])&&!VxF.includes(B[zQ])}function tg(B){return mI(B)&&(_bQ(B)||vbQ(B)||PbQ(B)||ubQ(B)||lbQ(B)||fbQ(B)||qbQ(B)||jbQ(B)||nbQ(B)||ibQ(B)||pbQ(B)||abQ(B)||obQ(B)||Fk(B)||ebQ(B)||BXQ(B)||QXQ(B)||FXQ(B)||UXQ(B)||IXQ(B)||GXQ(B)||ZXQ(B)||WXQ(B)||gXQ(B)||VXQ(B)||bXQ(B)||XXQ(B)||CXQ(B)||RXQ(B)||AXQ(B)||YXQ(B)||lRB(B)||LXQ(B)||HXQ(B)||JXQ(B)||xXQ(B)||EXQ(B))}var DXQ="(true|false)",ti="(0|[1-9][0-9]*)",zXQ="(.*)";var t9="^(0|[1-9][0-9]*)$",e9="^(.*)$",wXQ="^(?!.*)$";function SXQ(B,Q){return B.includes(Q)}function yXQ(B){return[...new Set(B)]}function HxF(B,Q){return B.filter((F)=>Q.includes(F))}function JxF(B,Q){return B.reduce((F,U)=>{return HxF(F,U)},Q)}function MXQ(B){return B.length===1?B[0]:B.length>1?JxF(B.slice(1),B[0]):[]}function TXQ(B){let Q=[];for(let F of B)Q.push(...F);return Q}function BE(B){return UQ({[zQ]:"Any"},B)}function ST(B,Q){return UQ({[zQ]:"Array",type:"array",items:B},Q)}function mXQ(B){return UQ({[zQ]:"Argument",index:B})}function yT(B,Q){return UQ({[zQ]:"AsyncIterator",type:"AsyncIterator",items:B},Q)}function mG(B,Q,F){return UQ({[zQ]:"Computed",target:B,parameters:Q},F)}function xxF(B,Q){let{[Q]:F,...U}=B;return U}function SZ(B,Q){return Q.reduce((F,U)=>xxF(F,U),B)}function M0(B){return UQ({[zQ]:"Never",not:{}},B)}function f0(B){return UQ({[zQ]:"MappedResult",properties:B})}function MT(B,Q,F){return UQ({[zQ]:"Constructor",type:"Constructor",parameters:B,returns:Q},F)}function eY(B,Q,F){return UQ({[zQ]:"Function",type:"Function",parameters:B,returns:Q},F)}function Uk(B,Q){return UQ({[zQ]:"Union",anyOf:B},Q)}function ExF(B){return B.some((Q)=>SC(Q))}function OXQ(B){return B.map((Q)=>SC(Q)?DxF(Q):Q)}function DxF(B){return SZ(B,[hV])}function zxF(B,Q){return ExF(B)?Sb(Uk(OXQ(B),Q)):Uk(OXQ(B),Q)}function BL(B,Q){return B.length===1?UQ(B[0],Q):B.length===0?M0(Q):zxF(B,Q)}function AI(B,Q){return B.length===0?M0(Q):B.length===1?UQ(B[0],Q):Uk(B,Q)}class uRB extends KV{}function wxF(B){return B.replace(/\\\$/g,"$").replace(/\\\*/g,"*").replace(/\\\^/g,"^").replace(/\\\|/g,"|").replace(/\\\(/g,"(").replace(/\\\)/g,")")}function qRB(B,Q,F){return B[Q]===F&&B.charCodeAt(Q-1)!==92}function LJ(B,Q){return qRB(B,Q,"(")}function Ik(B,Q){return qRB(B,Q,")")}function cXQ(B,Q){return qRB(B,Q,"|")}function SxF(B){if(!(LJ(B,0)&&Ik(B,B.length-1)))return!1;let Q=0;for(let F=0;F<B.length;F++){if(LJ(B,F))Q+=1;if(Ik(B,F))Q-=1;if(Q===0&&F!==B.length-1)return!1}return!0}function yxF(B){return B.slice(1,B.length-1)}function MxF(B){let Q=0;for(let F=0;F<B.length;F++){if(LJ(B,F))Q+=1;if(Ik(B,F))Q-=1;if(cXQ(B,F)&&Q===0)return!0}return!1}function TxF(B){for(let Q=0;Q<B.length;Q++)if(LJ(B,Q))return!0;return!1}function mxF(B){let[Q,F]=[0,0],U=[];for(let G=0;G<B.length;G++){if(LJ(B,G))Q+=1;if(Ik(B,G))Q-=1;if(cXQ(B,G)&&Q===0){let Z=B.slice(F,G);if(Z.length>0)U.push(TT(Z));F=G+1}}let I=B.slice(F);if(I.length>0)U.push(TT(I));if(U.length===0)return{type:"const",const:""};if(U.length===1)return U[0];return{type:"or",expr:U}}function OxF(B){function Q(I,G){if(!LJ(I,G))throw new uRB("TemplateLiteralParser: Index must point to open parens");let Z=0;for(let W=G;W<I.length;W++){if(LJ(I,W))Z+=1;if(Ik(I,W))Z-=1;if(Z===0)return[G,W]}throw new uRB("TemplateLiteralParser: Unclosed group parens in expression")}function F(I,G){for(let Z=G;Z<I.length;Z++)if(LJ(I,Z))return[G,Z];return[G,I.length]}let U=[];for(let I=0;I<B.length;I++)if(LJ(B,I)){let[G,Z]=Q(B,I),W=B.slice(G,Z+1);U.push(TT(W)),I=Z}else{let[G,Z]=F(B,I),W=B.slice(G,Z);if(W.length>0)U.push(TT(W));I=Z-1}return U.length===0?{type:"const",const:""}:U.length===1?U[0]:{type:"and",expr:U}}function TT(B){return SxF(B)?TT(yxF(B)):MxF(B)?mxF(B):TxF(B)?OxF(B):{type:"const",const:wxF(B)}}function mT(B){return TT(B.slice(1,B.length-1))}class KXQ extends KV{}function cxF(B){return B.type==="or"&&B.expr.length===2&&B.expr[0].type==="const"&&B.expr[0].const==="0"&&B.expr[1].type==="const"&&B.expr[1].const==="[1-9][0-9]*"}function KxF(B){return B.type==="or"&&B.expr.length===2&&B.expr[0].type==="const"&&B.expr[0].const==="true"&&B.expr[1].type==="const"&&B.expr[1].const==="false"}function hxF(B){return B.type==="const"&&B.const===".*"}function vz(B){return cxF(B)||hxF(B)?!1:KxF(B)?!0:B.type==="and"?B.expr.every((Q)=>vz(Q)):B.type==="or"?B.expr.every((Q)=>vz(Q)):B.type==="const"?!0:(()=>{throw new KXQ("Unknown expression type")})()}function hXQ(B){let Q=mT(B.pattern);return vz(Q)}class kXQ extends KV{}function*dXQ(B){if(B.length===1)return yield*B[0];for(let Q of B[0])for(let F of dXQ(B.slice(1)))yield`${Q}${F}`}function*kxF(B){return yield*dXQ(B.expr.map((Q)=>[...Gk(Q)]))}function*dxF(B){for(let Q of B.expr)yield*Gk(Q)}function*$xF(B){return yield B.const}function*Gk(B){return B.type==="and"?yield*kxF(B):B.type==="or"?yield*dxF(B):B.type==="const"?yield*$xF(B):(()=>{throw new kXQ("Unknown expression")})()}function ei(B){let Q=mT(B.pattern);return vz(Q)?[...Gk(Q)]:[]}function GI(B,Q){return UQ({[zQ]:"Literal",const:B,type:typeof B},Q)}function Bp(B){return UQ({[zQ]:"Boolean",type:"boolean"},B)}function OT(B){return UQ({[zQ]:"BigInt",type:"bigint"},B)}function KN(B){return UQ({[zQ]:"Number",type:"number"},B)}function YA(B){return UQ({[zQ]:"String",type:"string"},B)}function*_xF(B){let Q=B.trim().replace(/"|'/g,"");return Q==="boolean"?yield Bp():Q==="number"?yield KN():Q==="bigint"?yield OT():Q==="string"?yield YA():yield(()=>{let F=Q.split("|").map((U)=>GI(U.trim()));return F.length===0?M0():F.length===1?F[0]:BL(F)})()}function*vxF(B){if(B[1]!=="{"){let Q=GI("$"),F=jRB(B.slice(1));return yield*[Q,...F]}for(let Q=2;Q<B.length;Q++)if(B[Q]==="}"){let F=_xF(B.slice(2,Q)),U=jRB(B.slice(Q+1));return yield*[...F,...U]}yield GI(B)}function*jRB(B){for(let Q=0;Q<B.length;Q++)if(B[Q]==="$"){let F=GI(B.slice(0,Q)),U=vxF(B.slice(Q));return yield*[F,...U]}yield GI(B)}function $XQ(B){return[...jRB(B)]}class _XQ extends KV{}function PxF(B){return B.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function vXQ(B,Q){return uR(B)?B.pattern.slice(1,B.pattern.length-1):y0(B)?`(${B.anyOf.map((F)=>vXQ(F,Q)).join("|")})`:AA(B)?`${Q}${ti}`:NA(B)?`${Q}${ti}`:kz(B)?`${Q}${ti}`:AJ(B)?`${Q}${zXQ}`:fR(B)?`${Q}${PxF(B.const.toString())}`:NJ(B)?`${Q}${DXQ}`:(()=>{throw new _XQ(`Unexpected Kind '${B[zQ]}'`)})()}function nRB(B){return`^${B.map((Q)=>vXQ(Q,"")).join("")}$`}function Pz(B){let F=ei(B).map((U)=>GI(U));return BL(F)}function Qp(B,Q){let F=IG(B)?nRB($XQ(B)):nRB(B);return UQ({[zQ]:"TemplateLiteral",type:"string",pattern:F},Q)}function fxF(B){return ei(B).map((F)=>F.toString())}function lxF(B){let Q=[];for(let F of B)Q.push(...yC(F));return Q}function uxF(B){return[B.toString()]}function yC(B){return[...new Set(uR(B)?fxF(B):y0(B)?lxF(B.anyOf):fR(B)?uxF(B.const):AA(B)?["[number]"]:NA(B)?["[number]"]:[])]}function qxF(B,Q,F){let U={};for(let I of Object.getOwnPropertyNames(Q))U[I]=QE(B,yC(Q[I]),F);return U}function jxF(B,Q,F){return qxF(B,Q.properties,F)}function PXQ(B,Q,F){let U=jxF(B,Q,F);return f0(U)}function lXQ(B,Q){return B.map((F)=>uXQ(F,Q))}function nxF(B){return B.filter((Q)=>!r9(Q))}function ixF(B,Q){return Fp(nxF(lXQ(B,Q)))}function pxF(B){return B.some((Q)=>r9(Q))?[]:B}function axF(B,Q){return BL(pxF(lXQ(B,Q)))}function oxF(B,Q){return Q in B?B[Q]:Q==="[number]"?BL(B):M0()}function rxF(B,Q){return Q==="[number]"?B:M0()}function sxF(B,Q){return Q in B?B[Q]:M0()}function uXQ(B,Q){return wZ(B)?ixF(B.allOf,Q):y0(B)?axF(B.anyOf,Q):qR(B)?oxF(B.items??[],Q):bA(B)?rxF(B.items,Q):EW(B)?sxF(B.properties,Q):M0()}function iRB(B,Q){return Q.map((F)=>uXQ(B,F))}function fXQ(B,Q){return BL(iRB(B,Q))}function QE(B,Q,F){if(UW(B)||UW(Q)){if(!jR(B)||!jR(Q))throw new KV("Index types using Ref parameters require both Type and Key to be of TSchema");return mG("Index",[B,Q])}if(iG(Q))return PXQ(B,Q,F);if(lR(Q))return qXQ(B,Q,F);return UQ(jR(Q)?fXQ(B,yC(Q)):fXQ(B,Q),F)}function txF(B,Q,F){return{[Q]:QE(B,[Q],nG(F))}}function exF(B,Q,F){return Q.reduce((U,I)=>{return{...U,...txF(B,I,F)}},{})}function B9F(B,Q,F){return exF(B,Q.keys,F)}function qXQ(B,Q,F){let U=B9F(B,Q,F);return f0(U)}function cT(B,Q){return UQ({[zQ]:"Iterator",type:"Iterator",items:B},Q)}function Q9F(B){return globalThis.Object.keys(B).filter((Q)=>!SC(B[Q]))}function F9F(B,Q){let F=Q9F(B),U=F.length>0?{[zQ]:"Object",type:"object",required:F,properties:B}:{[zQ]:"Object",type:"object",properties:B};return UQ(U,Q)}var cI=F9F;function Up(B,Q){return UQ({[zQ]:"Promise",type:"Promise",item:B},Q)}function U9F(B){return UQ(SZ(B,[VA]))}function I9F(B){return UQ({...B,[VA]:"Readonly"})}function G9F(B,Q){return Q===!1?U9F(B):I9F(B)}function MC(B,Q){let F=Q??!0;return iG(B)?jXQ(B,F):G9F(B,F)}function Z9F(B,Q){let F={};for(let U of globalThis.Object.getOwnPropertyNames(B))F[U]=MC(B[U],Q);return F}function W9F(B,Q){return Z9F(B.properties,Q)}function jXQ(B,Q){let F=W9F(B,Q);return f0(F)}function hN(B,Q){return UQ(B.length>0?{[zQ]:"Tuple",type:"array",items:B,additionalItems:!1,minItems:B.length,maxItems:B.length}:{[zQ]:"Tuple",type:"array",minItems:B.length,maxItems:B.length},Q)}function nXQ(B,Q){return B in Q?kN(B,Q[B]):f0(Q)}function g9F(B){return{[B]:GI(B)}}function V9F(B){let Q={};for(let F of B)Q[F]=GI(F);return Q}function b9F(B,Q){return SXQ(Q,B)?g9F(B):V9F(Q)}function X9F(B,Q){let F=b9F(B,Q);return nXQ(B,F)}function Zk(B,Q){return Q.map((F)=>kN(B,F))}function C9F(B,Q){let F={};for(let U of globalThis.Object.getOwnPropertyNames(Q))F[U]=kN(B,Q[U]);return F}function kN(B,Q){let F={...Q};return SC(Q)?Sb(kN(B,SZ(Q,[hV]))):wT(Q)?MC(kN(B,SZ(Q,[VA]))):iG(Q)?nXQ(B,Q.properties):lR(Q)?X9F(B,Q.keys):CA(Q)?MT(Zk(B,Q.parameters),kN(B,Q.returns),F):RA(Q)?eY(Zk(B,Q.parameters),kN(B,Q.returns),F):hz(Q)?yT(kN(B,Q.items),F):dz(Q)?cT(kN(B,Q.items),F):wZ(Q)?yb(Zk(B,Q.allOf),F):y0(Q)?AI(Zk(B,Q.anyOf),F):qR(Q)?hN(Zk(B,Q.items??[]),F):EW(Q)?cI(C9F(B,Q.properties),F):bA(Q)?ST(kN(B,Q.items),F):$z(Q)?Up(kN(B,Q.item),F):Q}function R9F(B,Q){let F={};for(let U of B)F[U]=kN(U,Q);return F}function iXQ(B,Q,F){let U=jR(B)?yC(B):B,I=Q({[zQ]:"MappedKey",keys:U}),G=R9F(U,I);return cI(G,F)}function N9F(B){return UQ(SZ(B,[hV]))}function A9F(B){return UQ({...B,[hV]:"Optional"})}function Y9F(B,Q){return Q===!1?N9F(B):A9F(B)}function Sb(B,Q){let F=Q??!0;return iG(B)?pXQ(B,F):Y9F(B,F)}function L9F(B,Q){let F={};for(let U of globalThis.Object.getOwnPropertyNames(B))F[U]=Sb(B[U],Q);return F}function H9F(B,Q){return L9F(B.properties,Q)}function pXQ(B,Q){let F=H9F(B,Q);return f0(F)}function Wk(B,Q={}){let F=B.every((I)=>EW(I)),U=jR(Q.unevaluatedProperties)?{unevaluatedProperties:Q.unevaluatedProperties}:{};return UQ(Q.unevaluatedProperties===!1||jR(Q.unevaluatedProperties)||F?{...U,[zQ]:"Intersect",type:"object",allOf:B}:{...U,[zQ]:"Intersect",allOf:B},Q)}function J9F(B){return B.every((Q)=>SC(Q))}function x9F(B){return SZ(B,[hV])}function aXQ(B){return B.map((Q)=>SC(Q)?x9F(Q):Q)}function E9F(B,Q){return J9F(B)?Sb(Wk(aXQ(B),Q)):Wk(aXQ(B),Q)}function Fp(B,Q={}){if(B.length===1)return UQ(B[0],Q);if(B.length===0)return M0(Q);if(B.some((F)=>s9(F)))throw Error("Cannot intersect transform types");return E9F(B,Q)}function yb(B,Q){if(B.length===1)return UQ(B[0],Q);if(B.length===0)return M0(Q);if(B.some((F)=>s9(F)))throw Error("Cannot intersect transform types");return Wk(B,Q)}function QL(...B){let[Q,F]=typeof B[0]==="string"?[B[0],B[1]]:[B[0].$id,B[1]];if(typeof Q!=="string")throw new KV("Ref: $ref must be a string");return UQ({[zQ]:"Ref",$ref:Q},F)}function D9F(B,Q){return mG("Awaited",[mG(B,Q)])}function z9F(B){return mG("Awaited",[QL(B)])}function w9F(B){return yb(oXQ(B))}function S9F(B){return AI(oXQ(B))}function y9F(B){return KT(B)}function oXQ(B){return B.map((Q)=>KT(Q))}function KT(B,Q){return UQ(XA(B)?D9F(B.target,B.parameters):wZ(B)?w9F(B.allOf):y0(B)?S9F(B.anyOf):$z(B)?y9F(B.item):UW(B)?z9F(B.$ref):B,Q)}function rXQ(B){let Q=[];for(let F of B)Q.push(gk(F));return Q}function M9F(B){let Q=rXQ(B);return TXQ(Q)}function T9F(B){let Q=rXQ(B);return MXQ(Q)}function m9F(B){return B.map((Q,F)=>F.toString())}function O9F(B){return["[number]"]}function c9F(B){return globalThis.Object.getOwnPropertyNames(B)}function K9F(B){if(!h9F)return[];return globalThis.Object.getOwnPropertyNames(B).map((F)=>{return F[0]==="^"&&F[F.length-1]==="$"?F.slice(1,F.length-1):F})}function gk(B){return wZ(B)?M9F(B.allOf):y0(B)?T9F(B.anyOf):qR(B)?m9F(B.items??[]):bA(B)?O9F(B.items):EW(B)?c9F(B.properties):_z(B)?K9F(B.patternProperties):[]}var h9F=!1;function k9F(B,Q){return mG("KeyOf",[mG(B,Q)])}function d9F(B){return mG("KeyOf",[QL(B)])}function $9F(B,Q){let F=gk(B),U=_9F(F),I=BL(U);return UQ(I,Q)}function _9F(B){return B.map((Q)=>Q==="[number]"?KN():GI(Q))}function hT(B,Q){return XA(B)?k9F(B.target,B.parameters):UW(B)?d9F(B.$ref):iG(B)?sXQ(B,Q):$9F(B,Q)}function v9F(B,Q){let F={};for(let U of globalThis.Object.getOwnPropertyNames(B))F[U]=hT(B[U],nG(Q));return F}function P9F(B,Q){return v9F(B.properties,Q)}function sXQ(B,Q){let F=P9F(B,Q);return f0(F)}function f9F(B){let Q=[];for(let F of B)Q.push(...gk(F));return yXQ(Q)}function l9F(B){return B.filter((Q)=>!r9(Q))}function u9F(B,Q){let F=[];for(let U of B)F.push(...iRB(U,[Q]));return l9F(F)}function q9F(B,Q){let F={};for(let U of Q)F[U]=Fp(u9F(B,U));return F}function tXQ(B,Q){let F=f9F(B),U=q9F(B,F);return cI(U,Q)}function Ip(B){return UQ({[zQ]:"Date",type:"Date"},B)}function Gp(B){return UQ({[zQ]:"Null",type:"null"},B)}function Zp(B){return UQ({[zQ]:"Symbol",type:"symbol"},B)}function Wp(B){return UQ({[zQ]:"Undefined",type:"undefined"},B)}function gp(B){return UQ({[zQ]:"Uint8Array",type:"Uint8Array"},B)}function FE(B){return UQ({[zQ]:"Unknown"},B)}function j9F(B){return B.map((Q)=>pRB(Q,!1))}function n9F(B){let Q={};for(let F of globalThis.Object.getOwnPropertyNames(B))Q[F]=MC(pRB(B[F],!1));return Q}function Vp(B,Q){return Q===!0?B:MC(B)}function pRB(B,Q){return cRB(B)?Vp(BE(),Q):hRB(B)?Vp(BE(),Q):JW(B)?MC(hN(j9F(B))):RJ(B)?gp():Kz(B)?Ip():mI(B)?Vp(cI(n9F(B)),Q):KRB(B)?Vp(eY([],FE()),Q):xW(B)?Wp():kRB(B)?Gp():dRB(B)?Zp():oh(B)?OT():PR(B)?GI(B):CJ(B)?GI(B):IG(B)?GI(B):cI({})}function eXQ(B,Q){return UQ(pRB(B,!0),Q)}function BCQ(B,Q){return CA(B)?hN(B.parameters,Q):M0(Q)}function QCQ(B,Q){if(xW(B))throw Error("Enum undefined or empty");let F=globalThis.Object.getOwnPropertyNames(B).filter((G)=>isNaN(G)).map((G)=>B[G]),I=[...new Set(F)].map((G)=>GI(G));return AI(I,{...Q,[cN]:"Enum"})}class ZCQ extends KV{}var IQ;(function(B){B[B.Union=0]="Union",B[B.True=1]="True",B[B.False=2]="False"})(IQ||(IQ={}));function dN(B){return B===IQ.False?B:IQ.True}function kT(B){throw new ZCQ(B)}function pW(B){return SB.IsNever(B)||SB.IsIntersect(B)||SB.IsUnion(B)||SB.IsUnknown(B)||SB.IsAny(B)}function aW(B,Q){return SB.IsNever(Q)?VCQ(B,Q):SB.IsIntersect(Q)?bp(B,Q):SB.IsUnion(Q)?tRB(B,Q):SB.IsUnknown(Q)?RCQ(B,Q):SB.IsAny(Q)?sRB(B,Q):kT("StructuralRight")}function sRB(B,Q){return IQ.True}function i9F(B,Q){return SB.IsIntersect(Q)?bp(B,Q):SB.IsUnion(Q)&&Q.anyOf.some((F)=>SB.IsAny(F)||SB.IsUnknown(F))?IQ.True:SB.IsUnion(Q)?IQ.Union:SB.IsUnknown(Q)?IQ.True:SB.IsAny(Q)?IQ.True:IQ.Union}function p9F(B,Q){return SB.IsUnknown(B)?IQ.False:SB.IsAny(B)?IQ.Union:SB.IsNever(B)?IQ.True:IQ.False}function a9F(B,Q){return SB.IsObject(Q)&&Xp(Q)?IQ.True:pW(Q)?aW(B,Q):!SB.IsArray(Q)?IQ.False:dN(KI(B.items,Q.items))}function o9F(B,Q){return pW(Q)?aW(B,Q):!SB.IsAsyncIterator(Q)?IQ.False:dN(KI(B.items,Q.items))}function r9F(B,Q){return pW(Q)?aW(B,Q):SB.IsObject(Q)?Mb(B,Q):SB.IsRecord(Q)?$N(B,Q):SB.IsBigInt(Q)?IQ.True:IQ.False}function WCQ(B,Q){return SB.IsLiteralBoolean(B)?IQ.True:SB.IsBoolean(B)?IQ.True:IQ.False}function s9F(B,Q){return pW(Q)?aW(B,Q):SB.IsObject(Q)?Mb(B,Q):SB.IsRecord(Q)?$N(B,Q):SB.IsBoolean(Q)?IQ.True:IQ.False}function t9F(B,Q){return pW(Q)?aW(B,Q):SB.IsObject(Q)?Mb(B,Q):!SB.IsConstructor(Q)?IQ.False:B.parameters.length>Q.parameters.length?IQ.False:!B.parameters.every((F,U)=>dN(KI(Q.parameters[U],F))===IQ.True)?IQ.False:dN(KI(B.returns,Q.returns))}function e9F(B,Q){return pW(Q)?aW(B,Q):SB.IsObject(Q)?Mb(B,Q):SB.IsRecord(Q)?$N(B,Q):SB.IsDate(Q)?IQ.True:IQ.False}function BEF(B,Q){return pW(Q)?aW(B,Q):SB.IsObject(Q)?Mb(B,Q):!SB.IsFunction(Q)?IQ.False:B.parameters.length>Q.parameters.length?IQ.False:!B.parameters.every((F,U)=>dN(KI(Q.parameters[U],F))===IQ.True)?IQ.False:dN(KI(B.returns,Q.returns))}function gCQ(B,Q){return SB.IsLiteral(B)&&wb.IsNumber(B.const)?IQ.True:SB.IsNumber(B)||SB.IsInteger(B)?IQ.True:IQ.False}function QEF(B,Q){return SB.IsInteger(Q)||SB.IsNumber(Q)?IQ.True:pW(Q)?aW(B,Q):SB.IsObject(Q)?Mb(B,Q):SB.IsRecord(Q)?$N(B,Q):IQ.False}function bp(B,Q){return Q.allOf.every((F)=>KI(B,F)===IQ.True)?IQ.True:IQ.False}function FEF(B,Q){return B.allOf.some((F)=>KI(F,Q)===IQ.True)?IQ.True:IQ.False}function UEF(B,Q){return pW(Q)?aW(B,Q):!SB.IsIterator(Q)?IQ.False:dN(KI(B.items,Q.items))}function IEF(B,Q){return SB.IsLiteral(Q)&&Q.const===B.const?IQ.True:pW(Q)?aW(B,Q):SB.IsObject(Q)?Mb(B,Q):SB.IsRecord(Q)?$N(B,Q):SB.IsString(Q)?CCQ(B,Q):SB.IsNumber(Q)?bCQ(B,Q):SB.IsInteger(Q)?gCQ(B,Q):SB.IsBoolean(Q)?WCQ(B,Q):IQ.False}function VCQ(B,Q){return IQ.False}function GEF(B,Q){return IQ.True}function FCQ(B){let[Q,F]=[B,0];while(!0){if(!SB.IsNot(Q))break;Q=Q.not,F+=1}return F%2===0?Q:FE()}function ZEF(B,Q){return SB.IsNot(B)?KI(FCQ(B),Q):SB.IsNot(Q)?KI(B,FCQ(Q)):kT("Invalid fallthrough for Not")}function WEF(B,Q){return pW(Q)?aW(B,Q):SB.IsObject(Q)?Mb(B,Q):SB.IsRecord(Q)?$N(B,Q):SB.IsNull(Q)?IQ.True:IQ.False}function bCQ(B,Q){return SB.IsLiteralNumber(B)?IQ.True:SB.IsNumber(B)||SB.IsInteger(B)?IQ.True:IQ.False}function gEF(B,Q){return pW(Q)?aW(B,Q):SB.IsObject(Q)?Mb(B,Q):SB.IsRecord(Q)?$N(B,Q):SB.IsInteger(Q)||SB.IsNumber(Q)?IQ.True:IQ.False}function TC(B,Q){return Object.getOwnPropertyNames(B.properties).length===Q}function UCQ(B){return Xp(B)}function ICQ(B){return TC(B,0)||TC(B,1)&&"description"in B.properties&&SB.IsUnion(B.properties.description)&&B.properties.description.anyOf.length===2&&(SB.IsString(B.properties.description.anyOf[0])&&SB.IsUndefined(B.properties.description.anyOf[1])||SB.IsString(B.properties.description.anyOf[1])&&SB.IsUndefined(B.properties.description.anyOf[0]))}function aRB(B){return TC(B,0)}function GCQ(B){return TC(B,0)}function VEF(B){return TC(B,0)}function bEF(B){return TC(B,0)}function XEF(B){return Xp(B)}function CEF(B){let Q=KN();return TC(B,0)||TC(B,1)&&"length"in B.properties&&dN(KI(B.properties.length,Q))===IQ.True}function REF(B){return TC(B,0)}function Xp(B){let Q=KN();return TC(B,0)||TC(B,1)&&"length"in B.properties&&dN(KI(B.properties.length,Q))===IQ.True}function NEF(B){let Q=eY([BE()],BE());return TC(B,0)||TC(B,1)&&"then"in B.properties&&dN(KI(B.properties.then,Q))===IQ.True}function XCQ(B,Q){return KI(B,Q)===IQ.False?IQ.False:SB.IsOptional(B)&&!SB.IsOptional(Q)?IQ.False:IQ.True}function Mb(B,Q){return SB.IsUnknown(B)?IQ.False:SB.IsAny(B)?IQ.Union:SB.IsNever(B)||SB.IsLiteralString(B)&&UCQ(Q)||SB.IsLiteralNumber(B)&&aRB(Q)||SB.IsLiteralBoolean(B)&&GCQ(Q)||SB.IsSymbol(B)&&ICQ(Q)||SB.IsBigInt(B)&&VEF(Q)||SB.IsString(B)&&UCQ(Q)||SB.IsSymbol(B)&&ICQ(Q)||SB.IsNumber(B)&&aRB(Q)||SB.IsInteger(B)&&aRB(Q)||SB.IsBoolean(B)&&GCQ(Q)||SB.IsUint8Array(B)&&XEF(Q)||SB.IsDate(B)&&bEF(Q)||SB.IsConstructor(B)&&REF(Q)||SB.IsFunction(B)&&CEF(Q)?IQ.True:SB.IsRecord(B)&&SB.IsString(oRB(B))?(()=>{return Q[cN]==="Record"?IQ.True:IQ.False})():SB.IsRecord(B)&&SB.IsNumber(oRB(B))?(()=>{return TC(Q,0)?IQ.True:IQ.False})():IQ.False}function AEF(B,Q){return pW(Q)?aW(B,Q):SB.IsRecord(Q)?$N(B,Q):!SB.IsObject(Q)?IQ.False:(()=>{for(let F of Object.getOwnPropertyNames(Q.properties)){if(!(F in B.properties)&&!SB.IsOptional(Q.properties[F]))return IQ.False;if(SB.IsOptional(Q.properties[F]))return IQ.True;if(XCQ(B.properties[F],Q.properties[F])===IQ.False)return IQ.False}return IQ.True})()}function YEF(B,Q){return pW(Q)?aW(B,Q):SB.IsObject(Q)&&NEF(Q)?IQ.True:!SB.IsPromise(Q)?IQ.False:dN(KI(B.item,Q.item))}function oRB(B){return t9 in B.patternProperties?KN():(e9 in B.patternProperties)?YA():kT("Unknown record key pattern")}function rRB(B){return t9 in B.patternProperties?B.patternProperties[t9]:(e9 in B.patternProperties)?B.patternProperties[e9]:kT("Unable to get record value schema")}function $N(B,Q){let[F,U]=[oRB(Q),rRB(Q)];return SB.IsLiteralString(B)&&SB.IsNumber(F)&&dN(KI(B,U))===IQ.True?IQ.True:SB.IsUint8Array(B)&&SB.IsNumber(F)?KI(B,U):SB.IsString(B)&&SB.IsNumber(F)?KI(B,U):SB.IsArray(B)&&SB.IsNumber(F)?KI(B,U):SB.IsObject(B)?(()=>{for(let I of Object.getOwnPropertyNames(B.properties))if(XCQ(U,B.properties[I])===IQ.False)return IQ.False;return IQ.True})():IQ.False}function LEF(B,Q){return pW(Q)?aW(B,Q):SB.IsObject(Q)?Mb(B,Q):!SB.IsRecord(Q)?IQ.False:KI(rRB(B),rRB(Q))}function HEF(B,Q){let F=SB.IsRegExp(B)?YA():B,U=SB.IsRegExp(Q)?YA():Q;return KI(F,U)}function CCQ(B,Q){return SB.IsLiteral(B)&&wb.IsString(B.const)?IQ.True:SB.IsString(B)?IQ.True:IQ.False}function JEF(B,Q){return pW(Q)?aW(B,Q):SB.IsObject(Q)?Mb(B,Q):SB.IsRecord(Q)?$N(B,Q):SB.IsString(Q)?IQ.True:IQ.False}function xEF(B,Q){return pW(Q)?aW(B,Q):SB.IsObject(Q)?Mb(B,Q):SB.IsRecord(Q)?$N(B,Q):SB.IsSymbol(Q)?IQ.True:IQ.False}function EEF(B,Q){return SB.IsTemplateLiteral(B)?KI(Pz(B),Q):SB.IsTemplateLiteral(Q)?KI(B,Pz(Q)):kT("Invalid fallthrough for TemplateLiteral")}function DEF(B,Q){return SB.IsArray(Q)&&B.items!==void 0&&B.items.every((F)=>KI(F,Q.items)===IQ.True)}function zEF(B,Q){return SB.IsNever(B)?IQ.True:SB.IsUnknown(B)?IQ.False:SB.IsAny(B)?IQ.Union:IQ.False}function wEF(B,Q){return pW(Q)?aW(B,Q):SB.IsObject(Q)&&Xp(Q)?IQ.True:SB.IsArray(Q)&&DEF(B,Q)?IQ.True:!SB.IsTuple(Q)?IQ.False:wb.IsUndefined(B.items)&&!wb.IsUndefined(Q.items)||!wb.IsUndefined(B.items)&&wb.IsUndefined(Q.items)?IQ.False:wb.IsUndefined(B.items)&&!wb.IsUndefined(Q.items)?IQ.True:B.items.every((F,U)=>KI(F,Q.items[U])===IQ.True)?IQ.True:IQ.False}function SEF(B,Q){return pW(Q)?aW(B,Q):SB.IsObject(Q)?Mb(B,Q):SB.IsRecord(Q)?$N(B,Q):SB.IsUint8Array(Q)?IQ.True:IQ.False}function yEF(B,Q){return pW(Q)?aW(B,Q):SB.IsObject(Q)?Mb(B,Q):SB.IsRecord(Q)?$N(B,Q):SB.IsVoid(Q)?mEF(B,Q):SB.IsUndefined(Q)?IQ.True:IQ.False}function tRB(B,Q){return Q.anyOf.some((F)=>KI(B,F)===IQ.True)?IQ.True:IQ.False}function MEF(B,Q){return B.anyOf.every((F)=>KI(F,Q)===IQ.True)?IQ.True:IQ.False}function RCQ(B,Q){return IQ.True}function TEF(B,Q){return SB.IsNever(Q)?VCQ(B,Q):SB.IsIntersect(Q)?bp(B,Q):SB.IsUnion(Q)?tRB(B,Q):SB.IsAny(Q)?sRB(B,Q):SB.IsString(Q)?CCQ(B,Q):SB.IsNumber(Q)?bCQ(B,Q):SB.IsInteger(Q)?gCQ(B,Q):SB.IsBoolean(Q)?WCQ(B,Q):SB.IsArray(Q)?p9F(B,Q):SB.IsTuple(Q)?zEF(B,Q):SB.IsObject(Q)?Mb(B,Q):SB.IsUnknown(Q)?IQ.True:IQ.False}function mEF(B,Q){return SB.IsUndefined(B)?IQ.True:SB.IsUndefined(B)?IQ.True:IQ.False}function OEF(B,Q){return SB.IsIntersect(Q)?bp(B,Q):SB.IsUnion(Q)?tRB(B,Q):SB.IsUnknown(Q)?RCQ(B,Q):SB.IsAny(Q)?sRB(B,Q):SB.IsObject(Q)?Mb(B,Q):SB.IsVoid(Q)?IQ.True:IQ.False}function KI(B,Q){return SB.IsTemplateLiteral(B)||SB.IsTemplateLiteral(Q)?EEF(B,Q):SB.IsRegExp(B)||SB.IsRegExp(Q)?HEF(B,Q):SB.IsNot(B)||SB.IsNot(Q)?ZEF(B,Q):SB.IsAny(B)?i9F(B,Q):SB.IsArray(B)?a9F(B,Q):SB.IsBigInt(B)?r9F(B,Q):SB.IsBoolean(B)?s9F(B,Q):SB.IsAsyncIterator(B)?o9F(B,Q):SB.IsConstructor(B)?t9F(B,Q):SB.IsDate(B)?e9F(B,Q):SB.IsFunction(B)?BEF(B,Q):SB.IsInteger(B)?QEF(B,Q):SB.IsIntersect(B)?FEF(B,Q):SB.IsIterator(B)?UEF(B,Q):SB.IsLiteral(B)?IEF(B,Q):SB.IsNever(B)?GEF(B,Q):SB.IsNull(B)?WEF(B,Q):SB.IsNumber(B)?gEF(B,Q):SB.IsObject(B)?AEF(B,Q):SB.IsRecord(B)?LEF(B,Q):SB.IsString(B)?JEF(B,Q):SB.IsSymbol(B)?xEF(B,Q):SB.IsTuple(B)?wEF(B,Q):SB.IsPromise(B)?YEF(B,Q):SB.IsUint8Array(B)?SEF(B,Q):SB.IsUndefined(B)?yEF(B,Q):SB.IsUnion(B)?MEF(B,Q):SB.IsUnknown(B)?TEF(B,Q):SB.IsVoid(B)?OEF(B,Q):kT(`Unknown left type operand '${B[zQ]}'`)}function UE(B,Q){return KI(B,Q)}function cEF(B,Q,F,U,I){let G={};for(let Z of globalThis.Object.getOwnPropertyNames(B))G[Z]=dT(B[Z],Q,F,U,nG(I));return G}function KEF(B,Q,F,U,I){return cEF(B.properties,Q,F,U,I)}function NCQ(B,Q,F,U,I){let G=KEF(B,Q,F,U,I);return f0(G)}function hEF(B,Q,F,U){let I=UE(B,Q);return I===IQ.Union?AI([F,U]):I===IQ.True?F:U}function dT(B,Q,F,U,I){return iG(B)?NCQ(B,Q,F,U,I):lR(B)?UQ(ACQ(B,Q,F,U,I)):UQ(hEF(B,Q,F,U),I)}function kEF(B,Q,F,U,I){return{[B]:dT(GI(B),Q,F,U,nG(I))}}function dEF(B,Q,F,U,I){return B.reduce((G,Z)=>{return{...G,...kEF(Z,Q,F,U,I)}},{})}function $EF(B,Q,F,U,I){return dEF(B.keys,Q,F,U,I)}function ACQ(B,Q,F,U,I){let G=$EF(B,Q,F,U,I);return f0(G)}function YCQ(B,Q){return $T(Pz(B),Q)}function _EF(B,Q){let F=B.filter((U)=>UE(U,Q)===IQ.False);return F.length===1?F[0]:AI(F)}function $T(B,Q,F={}){if(uR(B))return UQ(YCQ(B,Q),F);if(iG(B))return UQ(LCQ(B,Q),F);return UQ(y0(B)?_EF(B.anyOf,Q):UE(B,Q)!==IQ.False?M0():B,F)}function vEF(B,Q){let F={};for(let U of globalThis.Object.getOwnPropertyNames(B))F[U]=$T(B[U],Q);return F}function PEF(B,Q){return vEF(B.properties,Q)}function LCQ(B,Q){let F=PEF(B,Q);return f0(F)}function HCQ(B,Q){return _T(Pz(B),Q)}function fEF(B,Q){let F=B.filter((U)=>UE(U,Q)!==IQ.False);return F.length===1?F[0]:AI(F)}function _T(B,Q,F){if(uR(B))return UQ(HCQ(B,Q),F);if(iG(B))return UQ(JCQ(B,Q),F);return UQ(y0(B)?fEF(B.anyOf,Q):UE(B,Q)!==IQ.False?B:M0(),F)}function lEF(B,Q){let F={};for(let U of globalThis.Object.getOwnPropertyNames(B))F[U]=_T(B[U],Q);return F}function uEF(B,Q){return lEF(B.properties,Q)}function JCQ(B,Q){let F=uEF(B,Q);return f0(F)}function xCQ(B,Q){return CA(B)?UQ(B.returns,Q):M0(Q)}function Cp(B){return MC(Sb(B))}function fz(B,Q,F){return UQ({[zQ]:"Record",type:"object",patternProperties:{[B]:Q}},F)}function eRB(B,Q,F){let U={};for(let I of B)U[I]=Q;return cI(U,{...F,[cN]:"Record"})}function qEF(B,Q,F){return hXQ(B)?eRB(yC(B),Q,F):fz(B.pattern,Q,F)}function jEF(B,Q,F){return eRB(yC(AI(B)),Q,F)}function nEF(B,Q,F){return eRB([B.toString()],Q,F)}function iEF(B,Q,F){return fz(B.source,Q,F)}function pEF(B,Q,F){let U=xW(B.pattern)?e9:B.pattern;return fz(U,Q,F)}function aEF(B,Q,F){return fz(e9,Q,F)}function oEF(B,Q,F){return fz(wXQ,Q,F)}function rEF(B,Q,F){return cI({true:Q,false:Q},F)}function sEF(B,Q,F){return fz(t9,Q,F)}function tEF(B,Q,F){return fz(t9,Q,F)}function Rp(B,Q,F={}){return y0(B)?jEF(B.anyOf,Q,F):uR(B)?qEF(B,Q,F):fR(B)?nEF(B.const,Q,F):NJ(B)?rEF(B,Q,F):NA(B)?sEF(B,Q,F):AA(B)?tEF(B,Q,F):vRB(B)?iEF(B,Q,F):AJ(B)?pEF(B,Q,F):$RB(B)?aEF(B,Q,F):r9(B)?oEF(B,Q,F):M0(F)}function Np(B){return globalThis.Object.getOwnPropertyNames(B.patternProperties)[0]}function ECQ(B){let Q=Np(B);return Q===e9?YA():Q===t9?KN():YA({pattern:Q})}function Ap(B){return B.patternProperties[Np(B)]}function eEF(B,Q){return Q.parameters=Vk(B,Q.parameters),Q.returns=LA(B,Q.returns),Q}function BDF(B,Q){return Q.parameters=Vk(B,Q.parameters),Q.returns=LA(B,Q.returns),Q}function QDF(B,Q){return Q.allOf=Vk(B,Q.allOf),Q}function FDF(B,Q){return Q.anyOf=Vk(B,Q.anyOf),Q}function UDF(B,Q){if(xW(Q.items))return Q;return Q.items=Vk(B,Q.items),Q}function IDF(B,Q){return Q.items=LA(B,Q.items),Q}function GDF(B,Q){return Q.items=LA(B,Q.items),Q}function ZDF(B,Q){return Q.items=LA(B,Q.items),Q}function WDF(B,Q){return Q.item=LA(B,Q.item),Q}function gDF(B,Q){let F=CDF(B,Q.properties);return{...Q,...cI(F)}}function VDF(B,Q){let F=LA(B,ECQ(Q)),U=LA(B,Ap(Q)),I=Rp(F,U);return{...Q,...I}}function bDF(B,Q){return Q.index in B?B[Q.index]:FE()}function XDF(B,Q){let F=wT(Q),U=SC(Q),I=LA(B,Q);return F&&U?Cp(I):F&&!U?MC(I):!F&&U?Sb(I):I}function CDF(B,Q){return globalThis.Object.getOwnPropertyNames(Q).reduce((F,U)=>{return{...F,[U]:XDF(B,Q[U])}},{})}function Vk(B,Q){return Q.map((F)=>LA(B,F))}function LA(B,Q){return CA(Q)?eEF(B,Q):RA(Q)?BDF(B,Q):wZ(Q)?QDF(B,Q):y0(Q)?FDF(B,Q):qR(Q)?UDF(B,Q):bA(Q)?IDF(B,Q):hz(Q)?GDF(B,Q):dz(Q)?ZDF(B,Q):$z(Q)?WDF(B,Q):EW(Q)?gDF(B,Q):_z(Q)?VDF(B,Q):_RB(Q)?bDF(B,Q):Q}function DCQ(B,Q){return LA(Q,zT(B))}function zCQ(B){return UQ({[zQ]:"Integer",type:"integer"},B)}function RDF(B,Q,F){return{[B]:HA(GI(B),Q,nG(F))}}function NDF(B,Q,F){return B.reduce((I,G)=>{return{...I,...RDF(G,Q,F)}},{})}function ADF(B,Q,F){return NDF(B.keys,Q,F)}function wCQ(B,Q,F){let U=ADF(B,Q,F);return f0(U)}function YDF(B){let[Q,F]=[B.slice(0,1),B.slice(1)];return[Q.toLowerCase(),F].join("")}function LDF(B){let[Q,F]=[B.slice(0,1),B.slice(1)];return[Q.toUpperCase(),F].join("")}function HDF(B){return B.toUpperCase()}function JDF(B){return B.toLowerCase()}function xDF(B,Q,F){let U=mT(B.pattern);if(!vz(U))return{...B,pattern:SCQ(B.pattern,Q)};let Z=[...Gk(U)].map((V)=>GI(V)),W=yCQ(Z,Q),g=AI(W);return Qp([g],F)}function SCQ(B,Q){return typeof B==="string"?Q==="Uncapitalize"?YDF(B):Q==="Capitalize"?LDF(B):Q==="Uppercase"?HDF(B):Q==="Lowercase"?JDF(B):B:B.toString()}function yCQ(B,Q){return B.map((F)=>HA(F,Q))}function HA(B,Q,F={}){return lR(B)?wCQ(B,Q,F):uR(B)?xDF(B,Q,F):y0(B)?AI(yCQ(B.anyOf,Q),F):fR(B)?GI(SCQ(B.const,Q),F):UQ(B,F)}function MCQ(B,Q={}){return HA(B,"Capitalize",Q)}function TCQ(B,Q={}){return HA(B,"Lowercase",Q)}function mCQ(B,Q={}){return HA(B,"Uncapitalize",Q)}function OCQ(B,Q={}){return HA(B,"Uppercase",Q)}function EDF(B,Q,F){let U={};for(let I of globalThis.Object.getOwnPropertyNames(B))U[I]=IE(B[I],Q,nG(F));return U}function DDF(B,Q,F){return EDF(B.properties,Q,F)}function cCQ(B,Q,F){let U=DDF(B,Q,F);return f0(U)}function zDF(B,Q){return B.map((F)=>B2B(F,Q))}function wDF(B,Q){return B.map((F)=>B2B(F,Q))}function SDF(B,Q){let{[Q]:F,...U}=B;return U}function yDF(B,Q){return Q.reduce((F,U)=>SDF(F,U),B)}function MDF(B,Q,F){let U=SZ(B,[iW,"$id","required","properties"]),I=yDF(F,Q);return cI(I,U)}function TDF(B){let Q=B.reduce((F,U)=>ri(U)?[...F,GI(U)]:F,[]);return AI(Q)}function B2B(B,Q){return wZ(B)?yb(zDF(B.allOf,Q)):y0(B)?AI(wDF(B.anyOf,Q)):EW(B)?MDF(B,Q,B.properties):cI({})}function IE(B,Q,F){let U=JW(Q)?TDF(Q):Q,I=jR(Q)?yC(Q):Q,G=UW(B),Z=UW(Q);return iG(B)?cCQ(B,I,F):lR(Q)?KCQ(B,Q,F):G&&Z?mG("Omit",[B,U],F):!G&&Z?mG("Omit",[B,U],F):G&&!Z?mG("Omit",[B,U],F):UQ({...B2B(B,I),...F})}function mDF(B,Q,F){return{[Q]:IE(B,[Q],nG(F))}}function ODF(B,Q,F){return Q.reduce((U,I)=>{return{...U,...mDF(B,I,F)}},{})}function cDF(B,Q,F){return ODF(B,Q.keys,F)}function KCQ(B,Q,F){let U=cDF(B,Q,F);return f0(U)}function KDF(B,Q,F){let U={};for(let I of globalThis.Object.getOwnPropertyNames(B))U[I]=GE(B[I],Q,nG(F));return U}function hDF(B,Q,F){return KDF(B.properties,Q,F)}function hCQ(B,Q,F){let U=hDF(B,Q,F);return f0(U)}function kDF(B,Q){return B.map((F)=>Q2B(F,Q))}function dDF(B,Q){return B.map((F)=>Q2B(F,Q))}function $DF(B,Q){let F={};for(let U of Q)if(U in B)F[U]=B[U];return F}function _DF(B,Q,F){let U=SZ(B,[iW,"$id","required","properties"]),I=$DF(F,Q);return cI(I,U)}function vDF(B){let Q=B.reduce((F,U)=>ri(U)?[...F,GI(U)]:F,[]);return AI(Q)}function Q2B(B,Q){return wZ(B)?yb(kDF(B.allOf,Q)):y0(B)?AI(dDF(B.anyOf,Q)):EW(B)?_DF(B,Q,B.properties):cI({})}function GE(B,Q,F){let U=JW(Q)?vDF(Q):Q,I=jR(Q)?yC(Q):Q,G=UW(B),Z=UW(Q);return iG(B)?hCQ(B,I,F):lR(Q)?kCQ(B,Q,F):G&&Z?mG("Pick",[B,U],F):!G&&Z?mG("Pick",[B,U],F):G&&!Z?mG("Pick",[B,U],F):UQ({...Q2B(B,I),...F})}function PDF(B,Q,F){return{[Q]:GE(B,[Q],nG(F))}}function fDF(B,Q,F){return Q.reduce((U,I)=>{return{...U,...PDF(B,I,F)}},{})}function lDF(B,Q,F){return fDF(B,Q.keys,F)}function kCQ(B,Q,F){let U=lDF(B,Q,F);return f0(U)}function uDF(B,Q){return mG("Partial",[mG(B,Q)])}function qDF(B){return mG("Partial",[QL(B)])}function jDF(B){let Q={};for(let F of globalThis.Object.getOwnPropertyNames(B))Q[F]=Sb(B[F]);return Q}function nDF(B,Q){let F=SZ(B,[iW,"$id","required","properties"]),U=jDF(Q);return cI(U,F)}function dCQ(B){return B.map((Q)=>$CQ(Q))}function $CQ(B){return XA(B)?uDF(B.target,B.parameters):UW(B)?qDF(B.$ref):wZ(B)?yb(dCQ(B.allOf)):y0(B)?AI(dCQ(B.anyOf)):EW(B)?nDF(B,B.properties):kz(B)?B:NJ(B)?B:NA(B)?B:fR(B)?B:th(B)?B:AA(B)?B:AJ(B)?B:eh(B)?B:Bk(B)?B:cI({})}function vT(B,Q){if(iG(B))return _CQ(B,Q);else return UQ({...$CQ(B),...Q})}function iDF(B,Q){let F={};for(let U of globalThis.Object.getOwnPropertyNames(B))F[U]=vT(B[U],nG(Q));return F}function pDF(B,Q){return iDF(B.properties,Q)}function _CQ(B,Q){let F=pDF(B,Q);return f0(F)}function aDF(B,Q){return mG("Required",[mG(B,Q)])}function oDF(B){return mG("Required",[QL(B)])}function rDF(B){let Q={};for(let F of globalThis.Object.getOwnPropertyNames(B))Q[F]=SZ(B[F],[hV]);return Q}function sDF(B,Q){let F=SZ(B,[iW,"$id","required","properties"]),U=rDF(Q);return cI(U,F)}function vCQ(B){return B.map((Q)=>PCQ(Q))}function PCQ(B){return XA(B)?aDF(B.target,B.parameters):UW(B)?oDF(B.$ref):wZ(B)?yb(vCQ(B.allOf)):y0(B)?AI(vCQ(B.anyOf)):EW(B)?sDF(B,B.properties):kz(B)?B:NJ(B)?B:NA(B)?B:fR(B)?B:th(B)?B:AA(B)?B:AJ(B)?B:eh(B)?B:Bk(B)?B:cI({})}function PT(B,Q){if(iG(B))return fCQ(B,Q);else return UQ({...PCQ(B),...Q})}function tDF(B,Q){let F={};for(let U of globalThis.Object.getOwnPropertyNames(B))F[U]=PT(B[U],Q);return F}function eDF(B,Q){return tDF(B.properties,Q)}function fCQ(B,Q){let F=eDF(B,Q);return f0(F)}function B3F(B,Q){return Q.map((F)=>{return UW(F)?F2B(B,F.$ref):nR(B,F)})}function F2B(B,Q){return Q in B?UW(B[Q])?F2B(B,B[Q].$ref):nR(B,B[Q]):M0()}function Q3F(B){return KT(B[0])}function F3F(B){return QE(B[0],B[1])}function U3F(B){return hT(B[0])}function I3F(B){return vT(B[0])}function G3F(B){return IE(B[0],B[1])}function Z3F(B){return GE(B[0],B[1])}function W3F(B){return PT(B[0])}function g3F(B,Q,F){let U=B3F(B,F);return Q==="Awaited"?Q3F(U):Q==="Index"?F3F(U):Q==="KeyOf"?U3F(U):Q==="Partial"?I3F(U):Q==="Omit"?G3F(U):Q==="Pick"?Z3F(U):Q==="Required"?W3F(U):M0()}function V3F(B,Q){return ST(nR(B,Q))}function b3F(B,Q){return yT(nR(B,Q))}function X3F(B,Q,F){return MT(bk(B,Q),nR(B,F))}function C3F(B,Q,F){return eY(bk(B,Q),nR(B,F))}function R3F(B,Q){return yb(bk(B,Q))}function N3F(B,Q){return cT(nR(B,Q))}function A3F(B,Q){return cI(globalThis.Object.keys(Q).reduce((F,U)=>{return{...F,[U]:nR(B,Q[U])}},{}))}function Y3F(B,Q){let[F,U]=[nR(B,Ap(Q)),Np(Q)],I=zT(Q);return I.patternProperties[U]=F,I}function L3F(B,Q){return UW(Q)?{...F2B(B,Q.$ref),[iW]:Q[iW]}:Q}function H3F(B,Q){return hN(bk(B,Q))}function J3F(B,Q){return AI(bk(B,Q))}function bk(B,Q){return Q.map((F)=>nR(B,F))}function nR(B,Q){return SC(Q)?UQ(nR(B,SZ(Q,[hV])),Q):wT(Q)?UQ(nR(B,SZ(Q,[VA])),Q):s9(Q)?UQ(L3F(B,Q),Q):bA(Q)?UQ(V3F(B,Q.items),Q):hz(Q)?UQ(b3F(B,Q.items),Q):XA(Q)?UQ(g3F(B,Q.target,Q.parameters)):CA(Q)?UQ(X3F(B,Q.parameters,Q.returns),Q):RA(Q)?UQ(C3F(B,Q.parameters,Q.returns),Q):wZ(Q)?UQ(R3F(B,Q.allOf),Q):dz(Q)?UQ(N3F(B,Q.items),Q):EW(Q)?UQ(A3F(B,Q.properties),Q):_z(Q)?UQ(Y3F(B,Q)):qR(Q)?UQ(H3F(B,Q.items||[]),Q):y0(Q)?UQ(J3F(B,Q.anyOf),Q):Q}function x3F(B,Q){return Q in B?nR(B,B[Q]):M0()}function lCQ(B){return globalThis.Object.getOwnPropertyNames(B).reduce((Q,F)=>{return{...Q,[F]:x3F(B,F)}},{})}class uCQ{constructor(B){let Q=lCQ(B),F=this.WithIdentifiers(Q);this.$defs=F}Import(B,Q){let F={...this.$defs,[B]:UQ(this.$defs[B],Q)};return UQ({[zQ]:"Import",$defs:F,$ref:B})}WithIdentifiers(B){return globalThis.Object.getOwnPropertyNames(B).reduce((Q,F)=>{return{...Q,[F]:{...B[F],$id:F}}},{})}}function qCQ(B){return new uCQ(B)}function jCQ(B,Q){return UQ({[zQ]:"Not",not:B},Q)}function nCQ(B,Q){return RA(B)?hN(B.parameters,Q):M0()}var E3F=0;function iCQ(B,Q={}){if(xW(Q.$id))Q.$id=`T${E3F++}`;let F=zT(B({[zQ]:"This",$ref:`${Q.$id}`}));return F.$id=Q.$id,UQ({[cN]:"Recursive",...F},Q)}function pCQ(B,Q){let F=IG(B)?new globalThis.RegExp(B):B;return UQ({[zQ]:"RegExp",type:"RegExp",source:F.source,flags:F.flags},Q)}function D3F(B){return wZ(B)?B.allOf:y0(B)?B.anyOf:qR(B)?B.items??[]:[]}function aCQ(B){return D3F(B)}function oCQ(B,Q){return RA(B)?UQ(B.returns,Q):M0(Q)}class rCQ{constructor(B){this.schema=B}Decode(B){return new sCQ(this.schema,B)}}class sCQ{constructor(B,Q){this.schema=B,this.decode=Q}EncodeTransform(B,Q){let I={Encode:(G)=>Q[iW].Encode(B(G)),Decode:(G)=>this.decode(Q[iW].Decode(G))};return{...Q,[iW]:I}}EncodeSchema(B,Q){let F={Decode:this.decode,Encode:B};return{...Q,[iW]:F}}Encode(B){return s9(this.schema)?this.EncodeTransform(B,this.schema):this.EncodeSchema(B,this.schema)}}function tCQ(B){return new rCQ(B)}function eCQ(B={}){return UQ({[zQ]:B[zQ]??"Unsafe"},B)}function BRQ(B){return UQ({[zQ]:"Void",type:"void"},B)}var U2B={};WU(U2B,{Void:()=>BRQ,Uppercase:()=>OCQ,Unsafe:()=>eCQ,Unknown:()=>FE,Union:()=>AI,Undefined:()=>Wp,Uncapitalize:()=>mCQ,Uint8Array:()=>gp,Tuple:()=>hN,Transform:()=>tCQ,TemplateLiteral:()=>Qp,Symbol:()=>Zp,String:()=>YA,ReturnType:()=>oCQ,Rest:()=>aCQ,Required:()=>PT,RegExp:()=>pCQ,Ref:()=>QL,Recursive:()=>iCQ,Record:()=>Rp,ReadonlyOptional:()=>Cp,Readonly:()=>MC,Promise:()=>Up,Pick:()=>GE,Partial:()=>vT,Parameters:()=>nCQ,Optional:()=>Sb,Omit:()=>IE,Object:()=>cI,Number:()=>KN,Null:()=>Gp,Not:()=>jCQ,Never:()=>M0,Module:()=>qCQ,Mapped:()=>iXQ,Lowercase:()=>TCQ,Literal:()=>GI,KeyOf:()=>hT,Iterator:()=>cT,Intersect:()=>yb,Integer:()=>zCQ,Instantiate:()=>DCQ,InstanceType:()=>xCQ,Index:()=>QE,Function:()=>eY,Extract:()=>_T,Extends:()=>dT,Exclude:()=>$T,Enum:()=>QCQ,Date:()=>Ip,ConstructorParameters:()=>BCQ,Constructor:()=>MT,Const:()=>eXQ,Composite:()=>tXQ,Capitalize:()=>MCQ,Boolean:()=>Bp,BigInt:()=>OT,Awaited:()=>KT,AsyncIterator:()=>yT,Array:()=>ST,Argument:()=>mXQ,Any:()=>BE});var DU=U2B;import*as Rm from"fs";import*as Xr from"path";var{S3Client:z3F}=globalThis.Bun;import*as Xk from"crypto";import*as yZ from"fs";import*as kV from"path";class I2B{cache=new Map;maxCapacity;iterator=null;sampleSize;constructor(B=50000,Q=50){this.maxCapacity=Math.max(0,B),this.sampleSize=Math.max(1,Q)}get(B){this.evictSample();let Q=this.cache.get(B);if(!Q)return;if(this.now()>Q.expiresAt){this.cache.delete(B);return}return this.cache.delete(B),this.cache.set(B,Q),Q.value}set(B,Q,F){if(this.maxCapacity<=0||F<=0||isNaN(F)){this.cache.delete(B);return}if(this.cache.has(B))this.cache.delete(B);else if(this.cache.size>=this.maxCapacity){let U=this.cache.keys().next().value;if(U!==void 0)this.cache.delete(U)}this.cache.set(B,{value:Q,expiresAt:this.now()+F})}delete(B){return this.cache.delete(B)}evictSample(){if(this.cache.size===0)return;if(!this.iterator)this.iterator=this.cache.keys();let B=this.now();for(let Q=0;Q<this.sampleSize;Q++){let F=this.iterator.next();if(F.done){this.iterator=this.cache.keys();break}let U=F.value,I=this.cache.get(U);if(I&&B>I.expiresAt)this.cache.delete(U)}}now(){return performance.now()}get size(){return this.cache.size}clear(){this.cache.clear(),this.iterator=null}}function w3F(B,Q){let F=process.env.BETTER_AUTH_SECRET||"shumai-local-storage-secret",U=Xk.createHmac("sha256",F);U.update(`${B}/${Q}`);let I=U.digest("hex");return`/api/upload/local?bucket=${encodeURIComponent(B)}&key=${encodeURIComponent(Q)}&Signature=${I}`}class FRQ{client;bucket;presignCache=new I2B(50000);constructor(B,Q,F,U,I,G="auto"){let Z=B;if(!Z.startsWith("http://")&&!Z.startsWith("https://"))Z=`${I?"https":"http"}://${B}`;this.client=new z3F({region:G,endpoint:Z,accessKeyId:Q,secretAccessKey:F,bucket:U}),this.bucket=U}async getObjectSize(B,Q){return await this.client.size(Q,{bucket:B})}async putObject(B,Q,F,U,I){await this.client.write(Q,F,{bucket:B,type:I})}async getObject(B,Q){let F=this.client.file(Q,{bucket:B}),U=await F.arrayBuffer();return{buffer:Buffer.from(U),contentType:F.type||"application/octet-stream"}}async copyObject(B,Q,F,U){let I=this.client.file(Q,{bucket:B});await this.client.write(U,I,{bucket:F})}async downloadToFile(B,Q,F){let U=this.client.file(Q,{bucket:B});await Bun.write(F,U)}async deleteObject(B,Q){try{if(!await this.client.exists(Q,{bucket:B}))return 0;return await this.client.delete(Q,{bucket:B}),1}catch{return 0}}async deletePrefix(B,Q){let F=await this.listObjects(B,Q);if(F.length>0)await Promise.all(F.map((U)=>this.deleteObject(B,U)));return F.length}async headObject(B,Q){let F=this.client.file(Q,{bucket:B});if(!await F.exists())throw Error("NoSuchKey: The specified key does not exist.");return{key:Q,size:await F.size,lastModified:new Date,contentType:F.type||"application/octet-stream",eTag:""}}async listObjects(B,Q){let F=[],U=!0,I=void 0;while(U){let G=await this.client.list({prefix:Q,continuationToken:I});if(G.contents){for(let Z of G.contents)if(Z.key)F.push(Z.key)}U=G.isTruncated||!1,I=G.nextContinuationToken}return F}async uploadFile(B,Q){let F=NG()+kV.extname(B);return await this.uploadFileToKey(B,F,Q),F}async uploadFileToKey(B,Q,F){await this.client.write(Q,Bun.file(B),{bucket:this.bucket,type:F})}async presign(B,Q,F,U){let I=parseInt(process.env.PRESIGNED_URL_EXPIRES_IN||"5",10),G=I*3600,W=Math.round(I*60*2/3)*60*1000,g=`${B}:${Q}:${U||""}`;if(F==="GET"){let X=this.presignCache.get(g);if(X)return X}let V={bucket:B,expiresIn:G,method:F};if(U)V.contentDisposition=`attachment; filename="${U}"`;let b=this.client.presign(Q,V);if(F==="GET")this.presignCache.set(g,b,W);return b}}class URQ{basePath;endpoint;constructor(B,Q="data"){if(this.endpoint=B.replace(/\/$/,""),this.basePath=kV.resolve(Q),!yZ.existsSync(this.basePath))yZ.mkdirSync(this.basePath,{recursive:!0})}getFilePath(B,Q){let F=kV.join(this.basePath,B,Q);if(!F.startsWith(this.basePath))throw Error("Invalid path: potential path traversal detected");return F}async getObjectSize(B,Q){let F=this.getFilePath(B,Q);try{return(await yZ.promises.stat(F)).size}catch(U){if(U instanceof Error&&U.code==="ENOENT")throw Error("NoSuchKey: The specified key does not exist.",{cause:U});throw U}}async putObject(B,Q,F,U,I){let G=this.getFilePath(B,Q),Z=kV.dirname(G);if(!yZ.existsSync(Z))yZ.mkdirSync(Z,{recursive:!0});await yZ.promises.writeFile(G,F)}async getObject(B,Q){let F=this.getFilePath(B,Q);try{return{buffer:await yZ.promises.readFile(F),contentType:Bun.file(F).type||"application/octet-stream"}}catch(U){if(U instanceof Error&&U.code==="ENOENT")throw Error("NoSuchKey: The specified key does not exist.",{cause:U});throw U}}async copyObject(B,Q,F,U){let I=this.getFilePath(B,Q),G=this.getFilePath(F,U),Z=kV.dirname(G);if(!yZ.existsSync(Z))yZ.mkdirSync(Z,{recursive:!0});await yZ.promises.copyFile(I,G)}async downloadToFile(B,Q,F){let U=this.getFilePath(B,Q);await yZ.promises.copyFile(U,F)}async deleteObject(B,Q){let F=this.getFilePath(B,Q);try{return await yZ.promises.unlink(F),1}catch(U){if(U instanceof Error&&U.code==="ENOENT")return 0;throw U}}async deletePrefix(B,Q){let F=await this.listObjects(B,Q);if(F.length===0)return 0;let U=this.getFilePath(B,Q);try{return await yZ.promises.rm(U,{recursive:!0,force:!0}),F.length}catch(I){if(I instanceof Error&&I.code==="ENOENT")return 0;throw I}}async headObject(B,Q){let F=this.getFilePath(B,Q);try{let U=await yZ.promises.stat(F),I=Xk.createHash("md5").update(F+U.mtimeMs).digest("hex");return{key:Q,size:U.size,lastModified:U.mtime,contentType:Bun.file(Q).type||"application/octet-stream",eTag:`"${I}"`}}catch(U){if(U instanceof Error&&U.code==="ENOENT")throw Error("NoSuchKey: The specified key does not exist.",{cause:U});throw U}}async listObjects(B,Q){let F=kV.join(this.basePath,B),U=[];if(!yZ.existsSync(F))return U;let I=async(G)=>{let Z=await yZ.promises.readdir(G);for(let W of Z){let g=kV.join(G,W);if((await yZ.promises.stat(g)).isDirectory())await I(g);else{let X=kV.relative(F,g).split(kV.sep).join("/");if(X.startsWith(Q))U.push(X)}}};return await I(F),U}async uploadFile(B,Q){let F=NG()+kV.extname(B);return await this.uploadFileToKey(B,F,Q),F}async uploadFileToKey(B,Q,F){let U=process.env.S3_BUCKET||"shumai",I=this.getFilePath(U,Q),G=kV.dirname(I);if(!yZ.existsSync(G))yZ.mkdirSync(G,{recursive:!0});await yZ.promises.copyFile(B,I)}async presign(B,Q,F,U){if(F!=="GET"&&F!=="PUT")throw Error(`Invalid method: ${F}`);if(F==="PUT")return`${this.endpoint}${w3F(B,Q)}`;let I=`${this.endpoint}/files/${B}/${Q}`;if(U)I+=`?filename=${encodeURIComponent(U)}`;return I}}var S3F=process.env.STORAGE_BACKEND||"local",y3F=process.env.SHUMAI_SERVER_PORT||"3000",QRQ=process.env.AWS_ENDPOINT_URL_S3||"http://localhost",yF=S3F==="s3"?new FRQ(QRQ,process.env.S3_ACCESS_KEY_ID||"minioadmin",process.env.S3_SECRET_ACCESS_KEY||"minioadmin",process.env.S3_BUCKET||"shumai",process.env.S3_USE_SSL==="true",process.env.S3_REGION||"auto"):new URQ(`${QRQ}:${y3F}`);var _RQ=Pb(V2B(),1);import*as mC from"fs";import*as Rk from"path";function $RQ(B){if(!B)return B;let Q=B.match(/files\/[A-Z0-9]{26}/);return Q?Q[0]:B}class vRQ{prismaClient;constructor(B=VB){this.prismaClient=B}async getSkillContent(B){let Q=await this.prismaClient.skill.findUnique({where:{id:B}});if(!Q)throw Error(`Skill with ID ${B} not found.`);let F=Rk.join(process.cwd(),".pi","skills",Q.id),U=Rk.join(F,".hash"),I=!0;if(mC.existsSync(U)){if(mC.readFileSync(U,"utf8")===Q.hash)I=!1}if(I){if(mC.existsSync(F))mC.rmSync(F,{recursive:!0,force:!0});mC.mkdirSync(F,{recursive:!0});let Z=await this.prismaClient.asset.findUnique({where:{id:Q.assetId},include:{storageKey:!0}});if(!Z||!Z.storageKey?.key)throw Error("Skill asset not found or has no key");let{buffer:W}=await yF.getObject(process.env.S3_BUCKET||"shumai",Z.storageKey.key);new _RQ.default(W).extractAllTo(F,!0),mC.writeFileSync(U,Q.hash)}let G=Rk.join(F,"SKILL.md");if(!mC.existsSync(G))G=Rk.join(F,"skill.md");if(!mC.existsSync(G))throw Error(`Skill downloaded but SKILL.md not found in ${F}`);return mC.readFileSync(G,"utf8")}async getSkillEnvs(B){let Q=await this.prismaClient.skill.findUnique({where:{id:B}});if(!Q)return{};let F=Q.config,U={};if(F?.environmentVariables&&Array.isArray(F.environmentVariables))for(let I of F.environmentVariables){let G=I.default!==void 0&&I.default!==null&&I.default!==""?I.default:process.env[I.name];if(G!==void 0)U[I.name]=G}return U}async createAgent(B){let{teamId:Q,name:F,type:U,enabled:I,avatar:G,providerId:Z,modelId:W,thinkingLevel:g,systemPrompt:V,soul:b,skills:X}=B;if(U==="embedding"||U==="autofill"){if(await this.prismaClient.agent.findFirst({where:{type:U,teamId:Q}}))throw Error(`Agent of type ${U} already exists for this team`)}if(U==="chat"||U==="autofill"){if(!Z||!W)throw Error("providerId and modelId are required for chat/autofill agents");let C=await this.prismaClient.model.findUnique({where:{id:W}});if(!C)throw Error("model not found");if(C.providerId!==Z)throw Error("model does not belong to provider")}return this.prismaClient.$transaction(async(C)=>{if(!await C.team.findUnique({where:{id:Q}}))throw Error("team not found");let R={provider:Z||"",model:W||"",thinkingLevel:g,systemPrompt:V},A=await C.user.create({data:{name:F,email:`agent-${Date.now()}-${Math.random().toString(36).substring(7)}@shumai.ai`,type:"agent",image:$RQ(G)}}),Y=await C.agent.create({data:{id:A.id,teamId:Q,type:U,enabled:I??!0,providerId:Z||null,modelId:W||null,soul:b,config:R,skills:{create:X?.map((L)=>({skillId:L}))||[]}}});return await C.teamMember.create({data:{teamId:Q,userId:A.id,role:"reviewer"}}),C.agent.findUnique({where:{id:Y.id},include:{user:!0,skills:{include:{skill:!0}}}})})}async updateAgent(B){let{agentId:Q,name:F,type:U,enabled:I,avatar:G,providerId:Z,modelId:W,thinkingLevel:g,systemPrompt:V,soul:b,skills:X}=B,C=await this.prismaClient.agent.findUnique({where:{id:Q},include:{user:{include:{teamMembers:!0}}}});if(!C)throw Error("agent not found");if(U==="embedding"||U==="autofill"){if(await this.prismaClient.agent.findFirst({where:{type:U,id:{not:Q},teamId:C.teamId}}))throw Error(`Agent of type ${U} already exists for this team`)}if(U==="chat"||U==="autofill"){if(!Z||!W)throw Error("providerId and modelId are required for chat/autofill agents");let R=await this.prismaClient.model.findUnique({where:{id:W}});if(!R)throw Error("model not found");if(R.providerId!==Z)throw Error("model does not belong to provider")}let N={provider:Z||"",model:W||"",thinkingLevel:g,systemPrompt:V};return this.prismaClient.$transaction(async(R)=>{return await R.user.update({where:{id:Q},data:{name:F,image:$RQ(G)}}),await R.agentSkill.deleteMany({where:{agentId:Q}}),R.agent.update({where:{id:Q},data:{type:U,enabled:I??!0,providerId:Z||null,modelId:W||null,soul:b,config:N,skills:{create:X?.map((A)=>({skillId:A}))||[]}},include:{user:!0,skills:{include:{skill:!0}}}})})}async deleteAgent(B){let{agentId:Q}=B;if(!await this.prismaClient.agent.findUnique({where:{id:Q}}))throw Error("agent not found");await this.prismaClient.user.delete({where:{id:Q}})}async listAgents(B){return this.prismaClient.agent.findMany({where:{teamId:B.teamId},orderBy:{id:"desc"},include:{user:!0,provider:!0,modelRef:!0,skills:{include:{skill:!0}}}})}async getSessionEntries(B){return this.prismaClient.agentSessionEntry.findMany({where:{sessionId:B.sessionId},orderBy:{id:"asc"}})}}var uz=new vRQ;class qz{sessionId;constructor(B){this.sessionId=B}async getMetadata(){let B=await VB.agentSession.findUnique({where:{id:this.sessionId}});if(!B)throw Error(`Session ${this.sessionId} not found`);return{id:B.id,createdAt:B.createdAt.toISOString(),agentId:B.agentId,userId:B.userId||void 0,cwd:B.cwd,assetId:B.assetId||void 0,userCommentId:B.userCommentId||void 0}}async getLeafId(){return(await VB.agentSession.findUnique({where:{id:this.sessionId},select:{leafId:!0}}))?.leafId||null}async setLeafId(B){await VB.agentSession.update({where:{id:this.sessionId},data:{leafId:B}})}async createEntryId(){return NG()}async appendEntry(B){let Q=structuredClone(B);if(Q.type==="message"){let F=Q.message;if(F.role==="toolResult"){let U=F.details;if(Array.isArray(F.content)&&U?.sourceKeys){let I=U.sourceKeys,G=0;F.content.forEach((Z)=>{if(Z.type==="image"&&I[G])Z.data="__S3_DATA__",G++})}if(F.toolName==="read_skill"&&!F.isError){if(U?.skillId&&Array.isArray(F.content))F.content.forEach((I)=>{if(I.type==="text"&&I.text&&!I.text.startsWith("Skill with ID")&&!I.text.startsWith("Skill downloaded but")&&!I.text.startsWith("Error reading skill"))I.text="__SKILL_CONTENT__"})}}}await VB.agentSessionEntry.create({data:{id:B.id,sessionId:this.sessionId,entry:Q}}),await this.setLeafId(B.id)}async getEntry(B){let Q=await VB.agentSessionEntry.findUnique({where:{id:B}});if(!Q)return;let F=Q.entry;return await this.reinjectImageDataAsync(F),await this.reinjectSkillContentAsync(F),F}async findEntries(B){let F=(await VB.agentSessionEntry.findMany({where:{sessionId:this.sessionId,entry:{path:["type"],equals:B}},orderBy:{id:"asc"}})).map((U)=>U.entry);for(let U of F)await this.reinjectImageDataAsync(U),await this.reinjectSkillContentAsync(U);return F}async getLabel(B){return(await VB.agentSessionEntry.findFirst({where:{sessionId:this.sessionId,entry:{path:["id"],equals:B}}}))?.entry?.label}async getPathToRoot(B){if(!B)return[];let Q=await VB.agentSessionEntry.findMany({where:{sessionId:this.sessionId}}),F=new Map;for(let G of Q)F.set(G.id,G.entry);let U=[],I=B;while(I){let G=F.get(I);if(!G)break;U.unshift(G),I=G.parentId}for(let G of U)await this.reinjectImageDataAsync(G),await this.reinjectSkillContentAsync(G);return U}async getEntries(){let Q=(await VB.agentSessionEntry.findMany({where:{sessionId:this.sessionId},orderBy:{id:"asc"}})).map((F)=>F.entry);for(let F of Q)await this.reinjectImageDataAsync(F),await this.reinjectSkillContentAsync(F);return Q}async reinjectImageDataAsync(B){if(B.type==="message"){let Q=B.message;if(Q.role==="toolResult"){let F=Q.details;if(Array.isArray(Q.content)&&F?.sourceKeys){let U=F.sourceKeys,I=0;for(let G of Q.content)if(G.type==="image"&&G.data==="__S3_DATA__"&&U[I]){let Z=U[I];try{let{buffer:W}=await yF.getObject(process.env.S3_BUCKET||"shumai",Z);G.data=W.toString("base64")}catch(W){console.error(`Failed to re-inject image data for key ${Z}:`,W)}I++}}}}}async reinjectSkillContentAsync(B){if(B.type==="message"){let Q=B.message;if(Q.role==="toolResult"&&Q.toolName==="read_skill"){let F=Q.details;if(F?.skillId&&Array.isArray(Q.content)){for(let U of Q.content)if(U.type==="text"&&U.text==="__SKILL_CONTENT__")try{let I=await uz.getSkillContent(F.skillId);U.text=I}catch(I){console.error(`Failed to re-inject skill content for skill ${F.skillId}:`,I)}}}}}static async create(B){if(B.sessionId)return new qz(B.sessionId);else{let Q=await VB.agentSession.create({data:{agentId:B.agentId,userId:B.userId,cwd:B.cwd||process.cwd(),assetId:B.assetId||null,userCommentId:B.userCommentId||null}});return new qz(Q.id)}}}var e3F=DU.Object({});function PRQ(B,Q){return{name:"analyze_image",label:"Analyze Image",description:"Retrieves and views the image content. Call this tool if you need to analyze the image.",parameters:e3F,execute:async()=>{try{let F=await VB.asset.findUnique({where:{id:B},include:{storageKey:!0}});if(!F)return{content:[{type:"text",text:`Asset with ID ${B} not found.`}],details:{}};let U=F.storageKey?.key;if(F.media){let b=F.media;if(b.imageTranscodes&&b.imageTranscodes.length>0)U=b.imageTranscodes[0].key||U}if(!U)return{content:[{type:"text",text:"No media content found for this asset."}],details:{}};let I=null;if(Q){let b=await VB.assetComment.findUnique({where:{id:Q}});if(b?.annotation){let X=b.annotation;if(Array.isArray(X)&&X.length>0)I=X}}let G=U;if(I){let b=await VB.workflowTask.create({data:{assetId:B,projectId:F.projectId||"none",type:e0.transcode,status:$I.pending,payload:{projectId:F.projectId||"none",imageAnnotation:{annotations:I}}}}),C=(await oN.executeWait(b)).output;if(C?.key)G=C.key;else throw Error("Image annotation transcode workflow failed to output S3 key.")}let Z=process.env.S3_BUCKET||"shumai",{buffer:W,contentType:g}=await yF.getObject(Z,G);return{content:[{type:"image",data:W.toString("base64"),mimeType:g||"image/webp"}],details:{sourceKeys:[G]}}}catch(F){return{content:[{type:"text",text:`Error analyzing image: ${F instanceof Error?F.message:String(F)}`}],details:{}}}}}}var BzF=DU.Object({start:DU.Number({description:"Start time in seconds"}),end:DU.Number({description:"End time in seconds"}),count:DU.Number({description:"Number of screenshots to take"})});function fRQ(B,Q){return{name:"screenshot",label:"Take Video Screenshots",description:"Takes screenshots for a video at specified interval. It returns the images to the agent context.",parameters:BzF,execute:async(F,U)=>{try{let I=await VB.asset.findUnique({where:{id:B}});if(!I)return{content:[{type:"text",text:`Asset with ID ${B} not found.`}],details:{}};let G=null,Z=null;if(Q){let R=await VB.assetComment.findUnique({where:{id:Q}});if(R){if(G=R.second!==null?R.second:null,R.annotation){let A=R.annotation;if(Array.isArray(A)&&A.length>0)Z=A}}}let W=await VB.workflowTask.create({data:{assetId:B,projectId:I.projectId||"none",type:e0.transcode,status:$I.pending,payload:{projectId:I.projectId||"none",screenshot:{start:U.start,end:U.end,count:U.count,commentTimestamp:G,annotations:Z}}}}),b=(await oN.executeWait(W)).output?.screenshots;if(!b||b.length===0)return{content:[{type:"text",text:"No screenshots were generated."}],details:{}};let X=[],C=[],N=process.env.S3_BUCKET||"shumai";for(let R of b){let{buffer:A,contentType:Y}=await yF.getObject(N,R.key);X.push({type:"image",data:A.toString("base64"),mimeType:Y||"image/webp"}),C.push(R.key)}return{content:X,details:{sourceKeys:C}}}catch(I){return{content:[{type:"text",text:`Error taking screenshots: ${I instanceof Error?I.message:String(I)}`}],details:{}}}}}}async function WE(B){let Q=await VB.workflowTask.create({data:{type:e0.agent_tool_call,status:$I.pending,assetId:B.assetId,payload:{projectId:"none",agentToolCall:{toolName:B.toolName,args:B.args,userId:B.userId}}}}),F=await oN.executeWait(Q);if(F.status===$I.failed){let I=F.output?.error||"Workflow task failed";throw Error(I)}return F.output}import*as FL from"fs";import*as qT from"path";var b2B=[137,80,78,71,13,10,26,10];function Jp(B){if(lRQ(B,[255,216,255]))return B[3]===247?null:"image/jpeg";if(lRQ(B,b2B))return QzF(B)&&!FzF(B)?"image/png":null;if(jz(B,0,"GIF"))return"image/gif";if(jz(B,0,"RIFF")&&jz(B,8,"WEBP"))return"image/webp";if(jz(B,4,"ftyp"))return"video/mp4";return null}function QzF(B){return B.length>=16&&uRQ(B,b2B.length)===13&&jz(B,12,"IHDR")}function FzF(B){let Q=b2B.length;while(Q+8<=B.length){let F=uRQ(B,Q),U=Q+4;if(jz(B,U,"acTL"))return!0;if(jz(B,U,"IDAT"))return!1;let I=Q+8+F+4;if(I<=Q||I>B.length)return!1;Q=I}return!1}function uRQ(B,Q){return(B[Q]??0)*16777216+((B[Q+1]??0)<<16)+((B[Q+2]??0)<<8)+(B[Q+3]??0)}function lRQ(B,Q){if(B.length<Q.length)return!1;return Q.every((F,U)=>B[U]===F)}function jz(B,Q,F){if(B.length<Q+F.length)return!1;for(let U=0;U<F.length;U++)if(B[Q+U]!==F.charCodeAt(U))return!1;return!0}function UzF(B){try{let U=FL.openSync(B,"r");try{let I=Buffer.alloc(4100),G=FL.readSync(U,I,0,4100,0),Z=Jp(new Uint8Array(I.subarray(0,G)));if(Z)return Z}finally{FL.closeSync(U)}}catch{}let Q=qT.extname(B).toLowerCase();return{".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp",".svg":"image/svg+xml",".mp4":"video/mp4",".mov":"video/quicktime",".pdf":"application/pdf"}[Q]||"application/octet-stream"}var IzF=DU.Object({parent:DU.String({description:"The parent folder ID under which to create the file. This parameter is required."}),path:DU.String({description:"The absolute or relative local path to the file on disk. This parameter is required."})});function qRQ(B){return{name:"create_file",label:"Create File",description:"Create a new file in a specified parent folder from a local file path.",parameters:IzF,execute:async(Q,F)=>{try{let U=qT.resolve(process.cwd(),F.path);if(!FL.existsSync(U))throw Error(`Local file not found at path: ${F.path}`);let I=FL.statSync(U).size,G=UzF(U),Z=`files/${NG()}/raw`;await yF.uploadFileToKey(U,Z,G);let W=await WE({toolName:"create_file",args:{parent:F.parent,s3Key:Z,name:qT.basename(U),size:I,contentType:G},userId:B,assetId:F.parent});return{content:[{type:"text",text:JSON.stringify(W,null,2)}],details:W}}catch(U){return{content:[{type:"text",text:`Error creating file: ${U instanceof Error?U.message:String(U)}`}],details:{}}}}}}var GzF=DU.Object({parent:DU.String({description:"The parent folder ID under which to create the new folder. This parameter is required."}),name:DU.String({description:"The name of the new folder to create. This parameter is required."})});function jRQ(B){return{name:"create_folder",label:"Create Folder",description:"Create a new folder in a specified parent folder.",parameters:GzF,execute:async(Q,F)=>{try{let U=await WE({toolName:"create_folder",args:F,userId:B,assetId:F.parent});return{content:[{type:"text",text:JSON.stringify(U,null,2)}],details:U}}catch(U){return{content:[{type:"text",text:`Error creating folder: ${U instanceof Error?U.message:String(U)}`}],details:{}}}}}}import*as UL from"fs";import*as jT from"path";function ZzF(B){try{let U=UL.openSync(B,"r");try{let I=Buffer.alloc(4100),G=UL.readSync(U,I,0,4100,0),Z=Jp(new Uint8Array(I.subarray(0,G)));if(Z)return Z}finally{UL.closeSync(U)}}catch{}let Q=jT.extname(B).toLowerCase();return{".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp",".svg":"image/svg+xml",".mp4":"video/mp4",".mov":"video/quicktime",".pdf":"application/pdf"}[Q]||"application/octet-stream"}var WzF=DU.Object({parent:DU.String({description:"The parent file ID for which to create a new version. This parameter is required."}),path:DU.String({description:"The absolute or relative local path to the file on disk. This parameter is required."})});function nRQ(B){return{name:"create_version",label:"Create Version",description:"Create a new version of an existing file from a local file path.",parameters:WzF,execute:async(Q,F)=>{try{let U=jT.resolve(process.cwd(),F.path);if(!UL.existsSync(U))throw Error(`Local file not found at path: ${F.path}`);let I=UL.statSync(U).size,G=ZzF(U),Z=`files/${NG()}/raw`;await yF.uploadFileToKey(U,Z,G);let W=await WE({toolName:"create_version",args:{parent:F.parent,s3Key:Z,name:jT.basename(U),size:I,contentType:G},userId:B,assetId:F.parent});return{content:[{type:"text",text:JSON.stringify(W,null,2)}],details:W}}catch(U){return{content:[{type:"text",text:`Error creating file version: ${U instanceof Error?U.message:String(U)}`}],details:{}}}}}}var gzF=DU.Object({parent:DU.String({description:"The parent folder ID to list assets from. This parameter is required."}),page:DU.Optional(DU.Number({description:"The page number to retrieve, default is 1.",default:1})),pageSize:DU.Optional(DU.Number({description:"The number of assets per page, default is 20.",default:20})),type:DU.Optional(DU.String({description:"Filter assets by type: 'file', 'folder', or 'all'. Default is 'all'.",enum:["file","folder","all"],default:"all"}))});function iRQ(B){return{name:"list_assets",label:"List Assets",description:"List the assets (files and folders) inside a parent folder with pagination.",parameters:gzF,execute:async(Q,F)=>{try{let U=await WE({toolName:"list_assets",args:F,userId:B,assetId:F.parent});return{content:[{type:"text",text:JSON.stringify(U,null,2)}],details:U}}catch(U){return{content:[{type:"text",text:`Error listing assets: ${U instanceof Error?U.message:String(U)}`}],details:{}}}}}}var VzF=DU.Object({skillId:DU.String({description:"The ID of the skill to read"})}),pRQ=(B)=>({name:"read_skill",label:"Read Agent Skill",description:"Downloads and reads an agent skill to understand how to use it.",parameters:VzF,execute:async(Q,F)=>{try{if(!await VB.skill.findUnique({where:{id:F.skillId}}))return{content:[{type:"text",text:`Skill with ID ${F.skillId} not found.`}],details:{skillId:F.skillId}};let I=await uz.getSkillEnvs(F.skillId);return B(I),{content:[{type:"text",text:await uz.getSkillContent(F.skillId)}],details:{skillId:F.skillId}}}catch(U){return{content:[{type:"text",text:`Error reading skill ${F.skillId}: ${U instanceof Error?U.message:String(U)}`}],details:{skillId:F.skillId}}}}});import{spawn as bzF}from"child_process";var XzF=DU.Object({command:DU.String({description:"The bash command to execute."}),timeout:DU.Optional(DU.Number({description:"Maximum execution time in seconds."}))}),aRQ=(B,Q={},F)=>{return{name:"bash",description:"Execute a bash command in a sandboxed environment.",label:"Executing bash command",parameters:XzF,execute:async(U,{command:I,timeout:G},Z)=>{F?.clearBlockedHost?.();let W=await B4.wrapWithSandbox(I);return new Promise((g,V)=>{let b=bzF("bash",["-c",W],{cwd:B,detached:!0,stdio:["ignore","pipe","pipe"],env:{PATH:process.env.PATH||"",HOME:process.env.HOME||"",...Q}}),X="",C="",N=!1,R;if(G!==void 0&&G>0)R=setTimeout(()=>{if(N=!0,b.pid)try{process.kill(-b.pid,"SIGKILL")}catch{b.kill("SIGKILL")}},G*1000);b.stdout?.on("data",(Y)=>{X+=Y.toString()}),b.stderr?.on("data",(Y)=>{C+=Y.toString()});let A=()=>{if(b.pid)try{process.kill(-b.pid,"SIGKILL")}catch{b.kill("SIGKILL")}};Z?.addEventListener("abort",A,{once:!0}),b.on("error",(Y)=>{if(R)clearTimeout(R);Z?.removeEventListener("abort",A),qX.error({err:Y,command:I,stdout:X,stderr:C},"Sandboxed bash command encountered process error"),V(Y)}),b.on("close",(Y)=>{if(R)clearTimeout(R);Z?.removeEventListener("abort",A);let L=F?.getBlockedHost?.();if(Z?.aborted)qX.error({command:I,stdout:X,stderr:C},"Sandboxed bash command aborted"),V(Error("aborted"));else if(N)qX.error({timeout:G,command:I,stdout:X,stderr:C},"Sandboxed bash command timed out"),V(Error(`bash command timed out after ${G} seconds`));else if(L)V(Error(`Network request to ${L} is blocked, please ask admin to allow it in sandbox settings.`));else if(Y!==0&&Y!==null)qX.error({exitCode:Y,command:I,stdout:X,stderr:C},"Sandboxed bash command exited with failure code"),V(Error(`bash command exited with code ${Y}`));else{let H=X+C;g({content:[{type:"text",text:H||(Y===0?"Success":`Failed with exit code ${Y}`)}],details:{exitCode:Y,stdout:X,stderr:C}})}})})}}};import{ApplicationFailure as X2B}from"@temporalio/workflow";async function oRQ(B){let{updateTaskStatusActivity:Q,getEmbeddingContextActivity:F,generateImageEmbeddingActivity:U,generateVideoChunkEmbeddingActivity:I,saveAssetEmbeddingsActivity:G,updateTaskUsageActivity:Z,createCommentActivity:W,updateCommentActivity:g,getAgentWorkerQueueActivity:V,getTranscodeWorkerQueueActivity:b,downloadMediaToTmpActivity:X,cleanupTmpDirActivity:C,transcodeVideoChunkActivity:N,deleteS3ObjectActivity:R}=aN(),A,Y="",L="",H;try{Y=await QF(Fg,V),L=await QF(kL,b),await QF(Y,Q,{taskId:B.id,status:"processing"});let J=B.payload;if(A=(await QF(Y,W,{assetId:B.assetId,message:"__EMBEDDING__",sessionId:J?.agent?.sessionId||B.id,agentId:J?.agent?.agentId||"default"})).id,!B.teamId)throw X2B.create({message:"Task has no teamId",nonRetryable:!0});let M=await QF(Y,F,{teamId:B.teamId,assetId:B.assetId}),{asset:y,chunkDuration:m,chunkOverlap:c}=M,k=y.mediaType?.startsWith("image/"),d=y.mediaType?.startsWith("video/");if(!k&&!d)throw X2B.create({message:`unsupported media type for embeddings: ${y.mediaType}`,nonRetryable:!0});let $=y.storageKey?.key,FB=y.mediaType;if(y.media){let IB=y.media;if(d){if(IB.videoTranscodes&&IB.videoTranscodes.length>0){let t=IB.videoTranscodes.find((ZB)=>!ZB.isRaw)||IB.videoTranscodes[0];if(t?.key)$=t.key}}else if(k){if(IB.imageTranscodes&&IB.imageTranscodes.length>0){let t=IB.imageTranscodes.find((ZB)=>!ZB.isRaw)||IB.imageTranscodes[0];if(t?.key){if($=t.key,t.format)FB=`image/${t.format}`}}}}if(!$)throw X2B.create({message:"asset has no key",nonRetryable:!0});let bB=[],CB={model:"gemini-embedding-2",inputTokens:0,outputTokens:0};if(k){let IB=await QF(Y,U,{teamId:B.teamId,assetKey:$,mediaType:FB});if(bB.push({embedding:IB.embedding}),IB.usage)CB.inputTokens+=IB.usage.inputTokens||0,CB.outputTokens+=IB.usage.outputTokens||0}else if(d){let IB=await QF(L,X,{assetKey:$}),{filePath:t}=IB;H=IB.tmpDir;let ZB=y.media?.duration||0,LB=m||60,HQ=Math.max(1,LB-(c??5));for(let wQ=0;wQ<ZB;wQ+=HQ){let hQ=wQ+LB;if(hQ>=ZB)hQ=ZB;let jB=await QF(L,N,{assetId:y.id,filePath:t,startTime:wQ,endTime:hQ}),{chunkKey:lQ}=jB;try{let oF=await QF(Y,I,{teamId:B.teamId,chunkKey:lQ});if(bB.push({embedding:oF.embedding,startTime:wQ,endTime:hQ}),oF.usage)CB.inputTokens+=oF.usage.inputTokens||0,CB.outputTokens+=oF.usage.outputTokens||0}finally{await QF(L,R,{key:lQ})}if(hQ>=ZB)break}}if(bB.length>0)await QF(Y,G,{assetId:B.assetId,embeddings:bB});if(await QF(Y,Z,{taskId:B.id,inputTokens:CB.inputTokens,outputTokens:CB.outputTokens,model:CB.model}),A)await QF(Y,g,{commentId:A,message:"Embedding completed successfully."});await QF(Y,Q,{taskId:B.id,status:"completed"})}catch(J){if(console.error(`AgentEmbeddingMedia failed for task ${B.id}:`,J),A&&Y)try{await QF(Y,g,{commentId:A,message:`Embedding failed: ${J instanceof Error?J.message:String(J)}`})}catch(w){console.error("Failed to update error comment:",w)}if(Y)await QF(Y,Q,{taskId:B.id,status:"failed",output:{error:J instanceof Error?J.message:String(J)}});throw J}finally{if(H&&L)try{await QF(L,C,{tmpDir:H})}catch(J){console.error("Failed to cleanup transcode worker tmp dir:",J)}}}async function rRQ(B){let{generateTextEmbeddingActivity:Q,updateWorkflowTaskActivity:F,getAgentWorkerQueueActivity:U}=aN(),I="",Z=B.payload?.queryEmbeddingForSearch?.text;if(!Z)throw Error("Missing text in query_embedding_for_search task payload");try{I=await QF(Fg,U),await QF(I,F,{taskId:B.id,status:"processing",heartbeat:!0});let W=await QF(I,Q,{text:Z,teamId:B.teamId});await QF(I,F,{taskId:B.id,status:"completed",output:{embedding:W.embedding},inputTokens:W.usage.inputTokens,outputTokens:W.usage.outputTokens,model:W.usage.model})}catch(W){if(console.error(`queryEmbeddingForSearch failed for task ${B.id}:`,W),I)await QF(I,F,{taskId:B.id,status:"failed",output:{error:W instanceof Error?W.message:String(W)}});throw W}}import{ApplicationFailure as CzF}from"@temporalio/workflow";async function sRQ(B){let{updateTaskStatusActivity:Q,getAssetActivity:F,extractAiMetadataActivity:U,getProjectAutofillFieldsActivity:I,getAgentAutofillContextActivity:G,autofillAiActivity:Z,updateTaskUsageActivity:W,updateAssetMetadataActivity:g,createCommentActivity:V,updateCommentActivity:b,getTranscodeWorkerQueueActivity:X,getAgentWorkerQueueActivity:C,downloadMediaToTmpActivity:N,cleanupTmpDirActivity:R}=aN(),A,Y,L="",H="";try{H=await QF(Fg,C),L=await QF(kL,X),await QF(H,Q,{taskId:B.id,status:"processing"});let J=B.payload;A=(await QF(H,V,{assetId:B.assetId,message:"__AUTOFILL__",sessionId:J?.agent?.sessionId||B.id,agentId:J?.agent?.agentId||"default"})).id;let M=await QF(H,F,B.assetId),y=M?.storageKey?.key;if(!M||!M.project||!y)throw CzF.create({message:"Asset or project not found",nonRetryable:!0});let m=M.project.teamId,c=M.project.id,k=M.mediaType?.startsWith("image/")||!1,d=await QF(L,N,{assetKey:y}),{filePath:$}=d;Y=d.tmpDir;let FB=await QF(L,U,{assetKey:y,filePath:$,type:"autofill",isImage:k});if(FB.length===0){if(A)await QF(H,b,{commentId:A,message:"Autofill completed: No images could be extracted for analysis."});await QF(H,Q,{taskId:B.id,status:"completed"});return}let bB=await QF(H,I,c);if(bB.length===0){if(A)await QF(H,b,{commentId:A,message:"Autofill completed: No autofill fields defined in project."});await QF(H,Q,{taskId:B.id,status:"completed"});return}let CB=await QF(H,G,{teamId:m}),IB=await QF(H,Z,{teamId:m,images:FB,fields:bB.map((LB)=>({id:LB.key,config:LB.config,description:LB.description})),context:CB});if(IB.usage)await QF(H,W,{taskId:B.id,inputTokens:IB.usage.inputTokens,outputTokens:IB.usage.outputTokens,model:IB.usage.model});let t=JSON.parse(IB.text),ZB=Object.entries(t).map(([LB,NQ])=>({key:LB,value:NQ}));if(ZB.length>0)await QF(H,g,{assetId:M.id,metadata:ZB});if(A)await QF(H,b,{commentId:A,message:"Autofill completed successfully.",sessionId:IB.sessionId});await QF(H,Q,{taskId:B.id,status:"completed"})}catch(J){if(console.error(`AgentAutofillMedia failed for task ${B.id}:`,J),A&&H)try{await QF(H,b,{commentId:A,message:`Autofill failed: ${J instanceof Error?J.message:String(J)}`})}catch(w){console.error("Failed to update error comment:",w)}if(H)await QF(H,Q,{taskId:B.id,status:"failed",output:{error:J instanceof Error?J.message:String(J)}});throw J}finally{if(Y&&L)try{await QF(L,R,{tmpDir:Y})}catch(J){console.error("Failed to cleanup tmp dir:",J)}}}import{ApplicationFailure as Nk}from"@temporalio/workflow";function tRQ(B){if(!B)return"other";let Q=B.toLowerCase();if(Q.startsWith("image/")||Q==="application/x-photoshop"||Q==="image/vnd.adobe.photoshop")return"image";if(Q.startsWith("video/"))return"video";return"other"}class C2B{assetId;assetName;mediaType;videoDuration;commentTimestamp;pathContext;explicitMention=!1;constructor(B){this.assetId=B}withPathContext(B){return this.pathContext=B,this}withAssetDetails(B,Q,F){return this.assetName=B,this.mediaType=Q||void 0,this.videoDuration=F,this}withCommentTimestamp(B){if(B!==void 0&&B!==null)this.commentTimestamp=B;return this}withExplicitMention(B){return this.explicitMention=!!B,this}build(){let B=`The user is discussing an asset with ID: ${this.assetId}.`;if(this.assetName)B+=`
|
|
13372
|
+
${Q}`:F}function jYF(B){let Q=B.replace(/\/+$/,""),F=Q.lastIndexOf("/");return F<=0?"/":Q.slice(0,F)}function Di(B,Q){let F=[{type:"text",text:B}];if(Q)F.push(...Q);return{role:"user",content:F,timestamp:Date.now()}}function nYF(B,Q,F){return{role:"assistant",content:[{type:"text",text:""}],api:B.api,provider:B.provider,model:B.id,stopReason:F?"aborted":"error",errorMessage:Q instanceof Error?Q.message:String(Q),timestamp:Date.now(),usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}}}}function mz(B){return{...B,headers:B?.headers?{...B.headers}:void 0,metadata:B?.metadata?{...B.metadata}:void 0}}function iYF(...B){let Q={},F=!1;for(let U of B){if(!U)continue;Object.assign(Q,U),F=!0}return F?Q:void 0}function pYF(B){let Q=new Set,F=new Set;for(let U of B){if(Q.has(U))F.add(U);Q.add(U)}return[...F]}function aYF(B,Q){let F=mz(B);if(!Q)return F;if(Object.hasOwn(Q,"transport"))F.transport=Q.transport;if(Object.hasOwn(Q,"timeoutMs"))F.timeoutMs=Q.timeoutMs;if(Object.hasOwn(Q,"maxRetries"))F.maxRetries=Q.maxRetries;if(Object.hasOwn(Q,"maxRetryDelayMs"))F.maxRetryDelayMs=Q.maxRetryDelayMs;if(Object.hasOwn(Q,"cacheRetention"))F.cacheRetention=Q.cacheRetention;if(Object.hasOwn(Q,"headers"))if(Q.headers===void 0)F.headers=void 0;else{let U={...F.headers??{}};for(let[I,G]of Object.entries(Q.headers))if(G===void 0)delete U[I];else U[I]=G;F.headers=Object.keys(U).length>0?U:void 0}if(Object.hasOwn(Q,"metadata"))if(Q.metadata===void 0)F.metadata=void 0;else{let U={...F.metadata??{}};for(let[I,G]of Object.entries(Q.metadata))if(G===void 0)delete U[I];else U[I]=G;F.metadata=Object.keys(U).length>0?U:void 0}return F}var zi="*";function TN(B,Q){if(B instanceof nI)return B;let F=cV(B);if(F instanceof kR)return new nI("session",F.message,F);if(F instanceof oY)return new nI("compaction",F.message,F);if(F instanceof FT)return new nI("branch_summary",F.message,F);return new nI(Q,F.message,F)}function Tz(B){return TN(B,"hook")}class GRB{env;session;phase="idle";runAbortController;runPromise;pendingSessionWrites=[];model;thinkingLevel;systemPrompt;streamOptions;getApiKeyAndHeaders;resources;tools=new Map;activeToolNames;steerQueue=[];steeringQueueMode;followUpQueue=[];followUpQueueMode;nextTurnQueue=[];handlers=new Map;constructor(B){this.env=B.env,this.session=B.session,this.resources=B.resources??{},this.streamOptions=mz(B.streamOptions),this.systemPrompt=B.systemPrompt,this.getApiKeyAndHeaders=B.getApiKeyAndHeaders,this.validateUniqueNames((B.tools??[]).map((Q)=>Q.name),"Duplicate tool name(s)");for(let Q of B.tools??[])this.tools.set(Q.name,Q);this.model=B.model,this.thinkingLevel=B.thinkingLevel??"off",this.activeToolNames=B.activeToolNames?[...B.activeToolNames]:(B.tools??[]).map((Q)=>Q.name),this.validateUniqueNames(this.activeToolNames,"Duplicate active tool name(s)"),this.validateToolNames(this.activeToolNames),this.steeringQueueMode=B.steeringMode??"one-at-a-time",this.followUpQueueMode=B.followUpMode??"one-at-a-time"}getHandlers(B){return this.handlers.get(B)}async emitOwn(B,Q){for(let F of this.getHandlers(zi)??[])try{await F(B,Q)}catch(U){throw Tz(U)}}async emitAny(B,Q){for(let F of this.getHandlers(zi)??[])try{await F(B,Q)}catch(U){throw Tz(U)}}async emitHook(B){let Q=this.getHandlers(B.type);if(!Q||Q.size===0)return;let F;for(let U of Q)try{let I=await U(B);if(I!==void 0)F=I}catch(I){throw Tz(I)}return F}async emitBeforeProviderRequest(B,Q,F){let U=this.getHandlers("before_provider_request"),I=mz(F);if(!U||U.size===0)return I;for(let G of U)try{let Z=await G({type:"before_provider_request",model:B,sessionId:Q,streamOptions:mz(I)});if(Z?.streamOptions)I=aYF(I,Z.streamOptions)}catch(Z){throw Tz(Z)}return I}async emitBeforeProviderPayload(B,Q){let F=this.getHandlers("before_provider_payload"),U=Q;if(!F||F.size===0)return U;for(let I of F)try{let G=await I({type:"before_provider_payload",model:B,payload:U});if(G!==void 0)U=G.payload}catch(G){throw Tz(G)}return U}async emitQueueUpdate(){await this.emitOwn({type:"queue_update",steer:[...this.steerQueue],followUp:[...this.followUpQueue],nextTurn:[...this.nextTurnQueue]})}startRunPromise(){let B=()=>{};return this.runPromise=new Promise((Q)=>{B=Q}),()=>{this.runPromise=void 0,B()}}async createTurnState(){let B=await this.session.buildContext(),Q=this.getResources(),F=await this.session.getMetadata(),U=[...this.tools.values()],I=this.activeToolNames.map((Z)=>this.tools.get(Z)).filter((Z)=>Z!==void 0),G="You are a helpful assistant.";if(typeof this.systemPrompt==="string")G=this.systemPrompt;else if(this.systemPrompt)G=await this.systemPrompt({env:this.env,session:this.session,model:this.model,thinkingLevel:this.thinkingLevel,activeTools:I,resources:Q});return{messages:B.messages,resources:Q,streamOptions:mz(this.streamOptions),sessionId:F.id,systemPrompt:G,model:this.model,thinkingLevel:this.thinkingLevel,tools:U,activeTools:I}}createContext(B,Q){return{systemPrompt:Q??B.systemPrompt,messages:B.messages.slice(),tools:B.activeTools.slice()}}createStreamFn(B){return async(Q,F,U)=>{let I=B(),G=await this.getApiKeyAndHeaders?.(Q),Z={...I.streamOptions,headers:iYF(I.streamOptions.headers,G?.headers)},W=await this.emitBeforeProviderRequest(Q,I.sessionId,Z);return iM(Q,F,{cacheRetention:W.cacheRetention,headers:W.headers,maxRetries:W.maxRetries,maxRetryDelayMs:W.maxRetryDelayMs,metadata:W.metadata,onPayload:async(g)=>await this.emitBeforeProviderPayload(Q,g),onResponse:async(g)=>{let V={...g.headers};await this.emitOwn({type:"after_provider_response",status:g.status,headers:V},U?.signal)},reasoning:U?.reasoning,signal:U?.signal,sessionId:I.sessionId,timeoutMs:W.timeoutMs,transport:W.transport,apiKey:G?.apiKey})}}async drainQueuedMessages(B,Q){let F=Q==="all"?B.splice(0):B.splice(0,1);if(F.length===0)return F;try{return await this.emitQueueUpdate(),F}catch(U){throw B.unshift(...F),Tz(U)}}createLoopConfig(B,Q){let F=B();return{model:F.model,reasoning:F.thinkingLevel==="off"?void 0:F.thinkingLevel,convertToLlm:Jz,transformContext:async(U)=>{return(await this.emitHook({type:"context",messages:[...U]}))?.messages??U},beforeToolCall:async({toolCall:U,args:I})=>{let G=await this.emitHook({type:"tool_call",toolCallId:U.id,toolName:U.name,input:I});return G?{block:G.block,reason:G.reason}:void 0},afterToolCall:async({toolCall:U,args:I,result:G,isError:Z})=>{let W=await this.emitHook({type:"tool_result",toolCallId:U.id,toolName:U.name,input:I,content:G.content,details:G.details,isError:Z});return W?{content:W.content,details:W.details,isError:W.isError,terminate:W.terminate}:void 0},prepareNextTurn:async()=>{await this.flushPendingSessionWrites();let U=await this.createTurnState();return Q(U),{context:this.createContext(U),model:U.model,thinkingLevel:U.thinkingLevel}},getSteeringMessages:async()=>this.drainQueuedMessages(this.steerQueue,this.steeringQueueMode),getFollowUpMessages:async()=>this.drainQueuedMessages(this.followUpQueue,this.followUpQueueMode)}}validateUniqueNames(B,Q){let F=pYF(B);if(F.length>0)throw new nI("invalid_argument",`${Q}: ${F.join(", ")}`)}validateToolNames(B,Q=this.tools){this.validateUniqueNames(B,"Duplicate active tool name(s)");let F=B.filter((U)=>!Q.has(U));if(F.length>0)throw new nI("invalid_argument",`Unknown tool(s): ${F.join(", ")}`)}async flushPendingSessionWrites(){while(this.pendingSessionWrites.length>0){let B=this.pendingSessionWrites[0];if(B.type==="message")await this.session.appendMessage(B.message);else if(B.type==="model_change")await this.session.appendModelChange(B.provider,B.modelId);else if(B.type==="thinking_level_change")await this.session.appendThinkingLevelChange(B.thinkingLevel);else if(B.type==="active_tools_change")await this.session.appendActiveToolsChange(B.activeToolNames);else if(B.type==="custom")await this.session.appendCustomEntry(B.customType,B.data);else if(B.type==="custom_message")await this.session.appendCustomMessageEntry(B.customType,B.content,B.display,B.details);else if(B.type==="label")await this.session.appendLabel(B.targetId,B.label);else if(B.type==="session_info")await this.session.appendSessionName(B.name??"");else if(B.type==="leaf")await this.session.getStorage().setLeafId(B.targetId);this.pendingSessionWrites.shift()}}async handleAgentEvent(B,Q){if(B.type==="message_end"){await this.session.appendMessage(B.message),await this.emitAny(B,Q);return}if(B.type==="turn_end"){let F;try{await this.emitAny(B,Q)}catch(I){F=I}let U=this.pendingSessionWrites.length>0;if(await this.flushPendingSessionWrites(),F)throw F;await this.emitOwn({type:"save_point",hadPendingMutations:U});return}if(B.type==="agent_end"){await this.flushPendingSessionWrites(),this.phase="idle",await this.emitAny(B,Q),await this.emitOwn({type:"settled",nextTurnCount:this.nextTurnQueue.length},Q);return}await this.emitAny(B,Q)}async emitRunFailure(B,Q,F,U){let I=nYF(B,Q,F);return await this.handleAgentEvent({type:"message_start",message:I},U),await this.handleAgentEvent({type:"message_end",message:I},U),await this.handleAgentEvent({type:"turn_end",message:I,toolResults:[]},U),await this.handleAgentEvent({type:"agent_end",messages:[I]},U),[I]}async executeTurn(B,Q,F){let U=B,I=[Di(Q,F?.images)];if(this.nextTurnQueue.length>0){let b=this.nextTurnQueue.splice(0);try{await this.emitQueueUpdate()}catch(X){throw this.nextTurnQueue.unshift(...b),Tz(X)}I=[...b,I[0]]}let G=await this.emitHook({type:"before_agent_start",prompt:Q,images:F?.images,systemPrompt:B.systemPrompt,resources:B.resources});if(G?.messages)I=[...I,...G.messages];let Z=new AbortController,W=()=>U,g=(b)=>{U=b};this.runAbortController=Z;let V=(async()=>{try{return await _XB(I,this.createContext(B,G?.systemPrompt),this.createLoopConfig(W,g),(b)=>this.handleAgentEvent(b,Z.signal),Z.signal,this.createStreamFn(W))}catch(b){try{return await this.emitRunFailure(U.model,b,Z.signal.aborted,Z.signal)}catch(X){let C=AggregateError([cV(b),cV(X)],"Agent run failed and failure reporting failed");throw new nI("unknown",C.message,C)}}})();try{let b=await V;for(let X=b.length-1;X>=0;X--){let C=b[X];if(C.role==="assistant")return C}throw new nI("invalid_state","AgentHarness prompt completed without an assistant message")}finally{try{await this.flushPendingSessionWrites()}finally{this.runAbortController=void 0}}}async prompt(B,Q){if(this.phase!=="idle")throw new nI("busy","AgentHarness is busy");this.phase="turn";let F=this.startRunPromise();try{let U=await this.createTurnState();return await this.executeTurn(U,B,Q)}catch(U){throw this.phase="idle",TN(U,"unknown")}finally{F()}}async skill(B,Q){if(this.phase!=="idle")throw new nI("busy","AgentHarness is busy");this.phase="turn";let F=this.startRunPromise();try{let U=await this.createTurnState(),I=(U.resources.skills??[]).find((G)=>G.name===B);if(!I)throw new nI("invalid_argument",`Unknown skill: ${B}`);return await this.executeTurn(U,$gQ(I,Q))}catch(U){throw this.phase="idle",TN(U,"unknown")}finally{F()}}async promptFromTemplate(B,Q=[]){if(this.phase!=="idle")throw new nI("busy","AgentHarness is busy");this.phase="turn";let F=this.startRunPromise();try{let U=await this.createTurnState(),I=(U.resources.promptTemplates??[]).find((G)=>G.name===B);if(!I)throw new nI("invalid_argument",`Unknown prompt template: ${B}`);return await this.executeTurn(U,zgQ(I,Q))}catch(U){throw this.phase="idle",TN(U,"unknown")}finally{F()}}async steer(B,Q){if(this.phase==="idle")throw new nI("invalid_state","Cannot steer while idle");this.steerQueue.push(Di(B,Q?.images)),await this.emitQueueUpdate()}async followUp(B,Q){if(this.phase==="idle")throw new nI("invalid_state","Cannot follow up while idle");this.followUpQueue.push(Di(B,Q?.images)),await this.emitQueueUpdate()}async nextTurn(B,Q){this.nextTurnQueue.push(Di(B,Q?.images)),await this.emitQueueUpdate()}async appendMessage(B){try{if(this.phase==="idle")await this.session.appendMessage(B);else this.pendingSessionWrites.push({type:"message",message:B})}catch(Q){throw TN(Q,"session")}}async compact(B){if(this.phase!=="idle")throw new nI("busy","compact() requires idle harness");this.phase="compaction";try{let Q=this.model;if(!Q)throw new nI("invalid_state","No model set for compaction");let F=await this.getApiKeyAndHeaders?.(Q);if(!F)throw new nI("auth","No auth available for compaction");let U=await this.session.getBranch(),I=lXB(U,fXB);if(!I.ok)throw I.error;let G=I.value;if(!G)throw new nI("compaction","Nothing to compact");let Z=await this.emitHook({type:"session_before_compact",preparation:G,branchEntries:U,customInstructions:B,signal:new AbortController().signal});if(Z?.cancel)throw new nI("compaction","Compaction cancelled");let W=Z?.compaction,g=W?{ok:!0,value:W}:await uXB(G,Q,F.apiKey,F.headers,B,void 0,this.thinkingLevel);if(!g.ok)throw g.error;let V=g.value,b=await this.session.appendCompaction(V.summary,V.firstKeptEntryId,V.tokensBefore,V.details,W!==void 0),X=await this.session.getEntry(b);if(X?.type==="compaction")await this.emitOwn({type:"session_compact",compactionEntry:X,fromHook:W!==void 0});return V}catch(Q){throw TN(Q,"compaction")}finally{this.phase="idle"}}async navigateTree(B,Q){if(this.phase!=="idle")throw new nI("busy","navigateTree() requires idle harness");this.phase="branch_summary";try{let F=await this.session.getLeafId();if(F===B)return{cancelled:!1};let U=await this.session.getEntry(B);if(!U)throw new nI("invalid_argument",`Entry ${B} not found`);let{entries:I,commonAncestorId:G}=await qXB(this.session,F,B),Z={targetId:B,oldLeafId:F,commonAncestorId:G,entriesToSummarize:I,userWantsSummary:Q?.summarize??!1,customInstructions:Q?.customInstructions,replaceInstructions:Q?.replaceInstructions,label:Q?.label},W=new AbortController().signal,g=await this.emitHook({type:"session_before_tree",preparation:Z,signal:W});if(g?.cancel)return{cancelled:!0};let V,b=g?.summary?.summary,X=g?.summary?.details;if(!b&&Q?.summarize&&I.length>0){let A=this.model;if(!A)throw new nI("invalid_state","No model set for branch summary");let Y=await this.getApiKeyAndHeaders?.(A);if(!Y)throw new nI("auth","No auth available for branch summary");let L=await jXB(I,{model:A,apiKey:Y.apiKey,headers:Y.headers,signal:new AbortController().signal,customInstructions:g?.customInstructions??Q?.customInstructions,replaceInstructions:g?.replaceInstructions??Q?.replaceInstructions});if(!L.ok){if(L.error.code==="aborted")return{cancelled:!0};throw new nI("branch_summary",L.error.message,L.error)}b=L.value.summary,X={readFiles:L.value.readFiles,modifiedFiles:L.value.modifiedFiles}}let C,N;if(U.type==="message"&&U.message.role==="user"){N=U.parentId;let A=U.message.content;C=typeof A==="string"?A:A.filter((Y)=>Y.type==="text").map((Y)=>Y.text).join("")}else if(U.type==="custom_message")N=U.parentId,C=typeof U.content==="string"?U.content:U.content.filter((A)=>A.type==="text").map((A)=>A.text).join("");else N=B;let R=await this.session.moveTo(N,b?{summary:b,details:X,fromHook:g?.summary!==void 0}:void 0);if(R){let A=await this.session.getEntry(R);if(A?.type==="branch_summary")V=A}return await this.emitOwn({type:"session_tree",newLeafId:await this.session.getLeafId(),oldLeafId:F,summaryEntry:V,fromHook:g?.summary!==void 0}),{cancelled:!1,editorText:C,summaryEntry:V}}catch(F){throw TN(F,"branch_summary")}finally{this.phase="idle"}}getModel(){return this.model}async setModel(B){try{let Q=this.model;if(this.phase==="idle")await this.session.appendModelChange(B.provider,B.id);else this.pendingSessionWrites.push({type:"model_change",provider:B.provider,modelId:B.id});this.model=B,await this.emitOwn({type:"model_update",model:B,previousModel:Q,source:"set"})}catch(Q){throw TN(Q,"session")}}getThinkingLevel(){return this.thinkingLevel}async setThinkingLevel(B){try{let Q=this.thinkingLevel;if(this.phase==="idle")await this.session.appendThinkingLevelChange(B);else this.pendingSessionWrites.push({type:"thinking_level_change",thinkingLevel:B});this.thinkingLevel=B,await this.emitOwn({type:"thinking_level_update",level:B,previousLevel:Q})}catch(Q){throw TN(Q,"session")}}getTools(){return[...this.tools.values()]}async setTools(B,Q){try{this.validateUniqueNames(B.map((Z)=>Z.name),"Duplicate tool name(s)");let F=new Map(B.map((Z)=>[Z.name,Z])),U=Q?[...Q]:this.activeToolNames;this.validateToolNames(U,F);let I=[...this.tools.keys()],G=[...this.activeToolNames];if(this.phase==="idle")await this.session.appendActiveToolsChange(U);else this.pendingSessionWrites.push({type:"active_tools_change",activeToolNames:[...U]});this.tools=F,this.activeToolNames=[...U],await this.emitOwn({type:"tools_update",toolNames:[...this.tools.keys()],previousToolNames:I,activeToolNames:[...this.activeToolNames],previousActiveToolNames:G,source:"set"})}catch(F){throw TN(F,"invalid_argument")}}getActiveTools(){return this.activeToolNames.map((B)=>this.tools.get(B))}async setActiveTools(B){try{this.validateToolNames(B);let Q=[...this.tools.keys()],F=[...this.activeToolNames];if(this.phase==="idle")await this.session.appendActiveToolsChange(B);else this.pendingSessionWrites.push({type:"active_tools_change",activeToolNames:[...B]});this.activeToolNames=[...B],await this.emitOwn({type:"tools_update",toolNames:[...this.tools.keys()],previousToolNames:Q,activeToolNames:[...this.activeToolNames],previousActiveToolNames:F,source:"set"})}catch(Q){throw TN(Q,"invalid_argument")}}getSteeringMode(){return this.steeringQueueMode}async setSteeringMode(B){this.steeringQueueMode=B}getFollowUpMode(){return this.followUpQueueMode}async setFollowUpMode(B){this.followUpQueueMode=B}getResources(){return{skills:this.resources.skills?.slice(),promptTemplates:this.resources.promptTemplates?.slice()}}async setResources(B){let Q=this.getResources();this.resources={skills:B.skills?.slice(),promptTemplates:B.promptTemplates?.slice()},await this.emitOwn({type:"resources_update",resources:this.getResources(),previousResources:Q})}getStreamOptions(){return mz(this.streamOptions)}async setStreamOptions(B){this.streamOptions=mz(B)}async abort(){let B=[...this.steerQueue],Q=[...this.followUpQueue];this.steerQueue=[],this.followUpQueue=[],this.runAbortController?.abort();let F=[];try{await this.emitQueueUpdate()}catch(U){F.push(cV(U))}try{await this.waitForIdle()}catch(U){F.push(cV(U))}try{await this.emitOwn({type:"abort",clearedSteer:B,clearedFollowUp:Q})}catch(U){F.push(cV(U))}if(F.length>0){let U=F.length===1?F[0]:AggregateError(F,"Abort completed with errors");throw TN(U,"hook")}return{clearedSteer:B,clearedFollowUp:Q}}async waitForIdle(){await this.runPromise}subscribe(B){let Q=this.handlers.get(zi);if(!Q)Q=new Set,this.handlers.set(zi,Q);return Q.add(B),()=>Q.delete(B)}on(B,Q){let F=this.handlers.get(B);if(!F)F=new Set,this.handlers.set(B,F);return F.add(Q),()=>F.delete(Q)}}var m1I=globalThis.Buffer;import{spawn as bRB}from"child_process";import{randomUUID as BLF}from"crypto";import{constants as QLF,createReadStream as FLF}from"fs";import{access as ULF,appendFile as ILF,lstat as _gQ,mkdir as WRB,mkdtemp as GLF,readdir as ZLF,readFile as vgQ,realpath as WLF,rm as gLF,writeFile as PgQ}from"fs/promises";import{tmpdir as VLF}from"os";import{isAbsolute as bLF,join as gRB,resolve as wi}from"path";import{createInterface as XLF}from"readline";function mN(B,Q){return bLF(Q)?Q:wi(B,Q)}function CLF(B){if(B.isFile())return"file";if(B.isDirectory())return"directory";if(B.isSymbolicLink())return"symlink";return}function fgQ(B,Q){let F=CLF(Q);if(!F)return pU(new wN("invalid","Unsupported file type",B));return H0({name:B.replace(/\/+$/,"").split("/").pop()??B,path:B,kind:F,size:Q.size,mtimeMs:Q.mtimeMs})}function RLF(B){return B instanceof Error&&"code"in B}function dR(B,Q){if(B instanceof wN)return B;let F=cV(B);if(RLF(B)){let U=B.message;switch(B.code){case"ABORT_ERR":return new wN("aborted",U,Q,F);case"ENOENT":return new wN("not_found",U,Q,F);case"EACCES":case"EPERM":return new wN("permission_denied",U,Q,F);case"ENOTDIR":return new wN("not_directory",U,Q,F);case"EISDIR":return new wN("is_directory",U,Q,F);case"EINVAL":return new wN("invalid",U,Q,F)}}return new wN("unknown",F.message,Q,F)}function VJ(B,Q){return B?.aborted?pU(new wN("aborted","aborted",Q)):void 0}async function Si(B){try{return await ULF(B,QLF.F_OK),!0}catch{return!1}}async function lgQ(B,Q,F){return await new Promise((U)=>{let I="",G;try{G=bRB(B,Q,{stdio:["ignore","pipe","ignore"],windowsHide:!0})}catch{U({stdout:"",status:null});return}let Z=setTimeout(()=>{if(G.pid)VRB(G.pid)},F);G.stdout?.setEncoding("utf8"),G.stdout?.on("data",(W)=>{I+=W}),G.on("error",()=>{clearTimeout(Z),U({stdout:"",status:null})}),G.on("close",(W)=>{clearTimeout(Z),U({stdout:I,status:W})})})}async function ugQ(){let B=process.platform==="win32"?await lgQ("where",["bash.exe"],5000):await lgQ("which",["bash"],5000);if(B.status!==0||!B.stdout)return null;let Q=B.stdout.trim().split(/\r?\n/)[0];return Q&&await Si(Q)?Q:null}async function NLF(B){if(B){if(await Si(B))return H0({shell:B,args:["-c"]});return pU(new SN("shell_unavailable",`Custom shell path not found: ${B}`))}if(process.platform==="win32"){let F=[],U=process.env.ProgramFiles;if(U)F.push(`${U}\\Git\\bin\\bash.exe`);let I=process.env["ProgramFiles(x86)"];if(I)F.push(`${I}\\Git\\bin\\bash.exe`);for(let Z of F)if(await Si(Z))return H0({shell:Z,args:["-c"]});let G=await ugQ();if(G)return H0({shell:G,args:["-c"]});return pU(new SN("shell_unavailable","No bash shell found"))}if(await Si("/bin/bash"))return H0({shell:"/bin/bash",args:["-c"]});let Q=await ugQ();if(Q)return H0({shell:Q,args:["-c"]});return H0({shell:"sh",args:["-c"]})}function ALF(B,Q){return{...process.env,...B,...Q}}function VRB(B){if(process.platform==="win32"){try{bRB("taskkill",["/F","/T","/PID",String(B)],{stdio:"ignore",detached:!0,windowsHide:!0})}catch{}return}try{process.kill(-B,"SIGKILL")}catch{try{process.kill(B,"SIGKILL")}catch{}}}class yi{cwd;shellPath;shellEnv;constructor(B){this.cwd=B.cwd,this.shellPath=B.shellPath,this.shellEnv=B.shellEnv}async absolutePath(B){return H0(mN(this.cwd,B))}async joinPath(B){return H0(gRB(...B))}async exec(B,Q){if(Q?.abortSignal?.aborted)return pU(new SN("aborted","aborted"));let F=Q?.cwd?mN(this.cwd,Q.cwd):this.cwd,U=await NLF(this.shellPath);if(!U.ok)return U;return await new Promise((I)=>{let G="",Z="",W=!1,g=!1,V,b,X,C=()=>{if(b?.pid)VRB(b.pid)},N=(R)=>{if(X)clearTimeout(X);if(Q?.abortSignal)Q.abortSignal.removeEventListener("abort",C);if(W)return;W=!0,I(R)};try{b=bRB(U.value.shell,[...U.value.args,B],{cwd:F,detached:process.platform!=="win32",env:ALF(this.shellEnv,Q?.env),stdio:["ignore","pipe","pipe"],windowsHide:!0})}catch(R){let A=cV(R);N(pU(new SN("spawn_error",A.message,A)));return}if(X=typeof Q?.timeout==="number"?setTimeout(()=>{if(g=!0,b?.pid)VRB(b.pid)},Q.timeout*1000):void 0,Q?.abortSignal)if(Q.abortSignal.aborted)C();else Q.abortSignal.addEventListener("abort",C,{once:!0});b.stdout?.setEncoding("utf8"),b.stderr?.setEncoding("utf8"),b.stdout?.on("data",(R)=>{G+=R;try{Q?.onStdout?.(R)}catch(A){let Y=cV(A);V=new SN("callback_error",Y.message,Y),C()}}),b.stderr?.on("data",(R)=>{Z+=R;try{Q?.onStderr?.(R)}catch(A){let Y=cV(A);V=new SN("callback_error",Y.message,Y),C()}}),b.on("error",(R)=>{N(pU(new SN("spawn_error",R.message,R)))}),b.on("close",(R)=>{if(V){N(pU(V));return}if(g){N(pU(new SN("timeout",`timeout:${Q?.timeout}`)));return}if(Q?.abortSignal?.aborted){N(pU(new SN("aborted","aborted")));return}N(H0({stdout:G,stderr:Z,exitCode:R??0}))})})}async readTextFile(B,Q){let F=mN(this.cwd,B),U=VJ(Q,F);if(U)return U;try{return H0(await vgQ(F,{encoding:"utf8",signal:Q}))}catch(I){return pU(dR(I,F))}}async readTextLines(B,Q){let F=mN(this.cwd,B),U=VJ(Q?.abortSignal,F);if(U)return U;if(Q?.maxLines!==void 0&&Q.maxLines<=0)return H0([]);let I,G;try{I=FLF(F,{encoding:"utf8",signal:Q?.abortSignal}),G=XLF({input:I,crlfDelay:1/0});let Z=[];for await(let g of G){let V=VJ(Q?.abortSignal,F);if(V)return V;if(Z.push(g),Q?.maxLines!==void 0&&Z.length>=Q.maxLines)break}let W=VJ(Q?.abortSignal,F);if(W)return W;return H0(Z)}catch(Z){return pU(dR(Z,F))}finally{G?.close(),I?.destroy()}}async readBinaryFile(B,Q){let F=mN(this.cwd,B),U=VJ(Q,F);if(U)return U;try{return H0(await vgQ(F,{signal:Q}))}catch(I){return pU(dR(I,F))}}async writeFile(B,Q,F){let U=mN(this.cwd,B),I=VJ(F,U);if(I)return I;try{await WRB(wi(U,".."),{recursive:!0});let G=VJ(F,U);if(G)return G;return await PgQ(U,Q,{signal:F}),H0(void 0)}catch(G){return pU(dR(G,U))}}async appendFile(B,Q){let F=mN(this.cwd,B);try{return await WRB(wi(F,".."),{recursive:!0}),await ILF(F,Q),H0(void 0)}catch(U){return pU(dR(U,F))}}async fileInfo(B){let Q=mN(this.cwd,B);try{return fgQ(Q,await _gQ(Q))}catch(F){return pU(dR(F,Q))}}async listDir(B,Q){let F=mN(this.cwd,B),U=VJ(Q,F);if(U)return U;try{let I=await ZLF(F,{withFileTypes:!0}),G=[];for(let Z of I){let W=VJ(Q,F);if(W)return W;let g=wi(F,Z.name);try{let V=fgQ(g,await _gQ(g));if(V.ok)G.push(V.value)}catch(V){return pU(dR(V,g))}}return H0(G)}catch(I){return pU(dR(I,F))}}async canonicalPath(B){let Q=mN(this.cwd,B);try{return H0(await WLF(Q))}catch(F){return pU(dR(F,Q))}}async exists(B){let Q=await this.fileInfo(B);if(Q.ok)return H0(!0);if(Q.error.code==="not_found")return H0(!1);return pU(Q.error)}async createDir(B,Q){let F=mN(this.cwd,B);try{return await WRB(F,{recursive:Q?.recursive??!0}),H0(void 0)}catch(U){return pU(dR(U,F))}}async remove(B,Q){let F=mN(this.cwd,B);try{return await gLF(F,{recursive:Q?.recursive??!1,force:Q?.force??!1}),H0(void 0)}catch(U){return pU(dR(U,F))}}async createTempDir(B="tmp-"){try{return H0(await GLF(gRB(VLF(),B)))}catch(Q){return pU(dR(Q))}}async createTempFile(B){let Q=await this.createTempDir("tmp-");if(!Q.ok)return Q;let F=gRB(Q.value,`${B?.prefix??""}${BLF()}${B?.suffix??""}`);try{return await PgQ(F,""),H0(F)}catch(U){return pU(dR(U,F))}}async cleanup(){}}var YLF=new Map;function LLF(B,Q){return(F,U,I)=>{if(F.api!==B)throw Error(`Mismatched api: ${F.api} expected ${B}`);return Q(F,U,I)}}function HLF(B,Q){return(F,U,I)=>{if(F.api!==B)throw Error(`Mismatched api: ${F.api} expected ${B}`);return Q(F,U,I)}}function GA(B,Q){YLF.set(B.api,{provider:{api:B.api,stream:LLF(B.api,B.stream),streamSimple:HLF(B.api,B.streamSimple)},sourceId:Q})}ZA();var qgQ={openrouter:{"black-forest-labs/flux.2-flex":{id:"black-forest-labs/flux.2-flex",name:"Black Forest Labs: FLUX.2 Flex",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"black-forest-labs/flux.2-klein-4b":{id:"black-forest-labs/flux.2-klein-4b",name:"Black Forest Labs: FLUX.2 Klein 4B",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"black-forest-labs/flux.2-max":{id:"black-forest-labs/flux.2-max",name:"Black Forest Labs: FLUX.2 Max",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"black-forest-labs/flux.2-pro":{id:"black-forest-labs/flux.2-pro",name:"Black Forest Labs: FLUX.2 Pro",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"bytedance-seed/seedream-4.5":{id:"bytedance-seed/seedream-4.5",name:"ByteDance Seed: Seedream 4.5",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["image","text"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"google/gemini-2.5-flash-image":{id:"google/gemini-2.5-flash-image",name:"Google: Nano Banana (Gemini 2.5 Flash Image)",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["image","text"],output:["image","text"],cost:{input:0.3,output:2.5,cacheRead:0.03,cacheWrite:0.08333333333333334}},"google/gemini-3-pro-image-preview":{id:"google/gemini-3-pro-image-preview",name:"Google: Nano Banana Pro (Gemini 3 Pro Image Preview)",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["image","text"],output:["image","text"],cost:{input:2,output:12,cacheRead:0.19999999999999998,cacheWrite:0.375}},"google/gemini-3.1-flash-image-preview":{id:"google/gemini-3.1-flash-image-preview",name:"Google: Nano Banana 2 (Gemini 3.1 Flash Image Preview)",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["image","text"],output:["image","text"],cost:{input:0.5,output:3,cacheRead:0,cacheWrite:0}},"openai/gpt-5-image":{id:"openai/gpt-5-image",name:"OpenAI: GPT-5 Image",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["image","text"],output:["image","text"],cost:{input:10,output:10,cacheRead:1.25,cacheWrite:0}},"openai/gpt-5-image-mini":{id:"openai/gpt-5-image-mini",name:"OpenAI: GPT-5 Image Mini",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["image","text"],output:["image","text"],cost:{input:2.5,output:2,cacheRead:0.25,cacheWrite:0}},"openai/gpt-5.4-image-2":{id:"openai/gpt-5.4-image-2",name:"OpenAI: GPT-5.4 Image 2",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["image","text"],output:["image","text"],cost:{input:8,output:15,cacheRead:2,cacheWrite:0}},"openrouter/auto":{id:"openrouter/auto",name:"Auto Router",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["text","image"],cost:{input:-1e6,output:-1e6,cacheRead:0,cacheWrite:0}},"recraft/recraft-v3":{id:"recraft/recraft-v3",name:"Recraft: Recraft V3",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4":{id:"recraft/recraft-v4",name:"Recraft: Recraft V4",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4-pro":{id:"recraft/recraft-v4-pro",name:"Recraft: Recraft V4 Pro",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4-pro-vector":{id:"recraft/recraft-v4-pro-vector",name:"Recraft: Recraft V4 Pro Vector",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4-vector":{id:"recraft/recraft-v4-vector",name:"Recraft: Recraft V4 Vector",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4.1":{id:"recraft/recraft-v4.1",name:"Recraft: Recraft V4.1",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4.1-pro":{id:"recraft/recraft-v4.1-pro",name:"Recraft: Recraft V4.1 Pro",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4.1-pro-vector":{id:"recraft/recraft-v4.1-pro-vector",name:"Recraft: Recraft V4.1 Pro Vector",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4.1-utility":{id:"recraft/recraft-v4.1-utility",name:"Recraft: Recraft V4.1 Utility",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4.1-utility-pro":{id:"recraft/recraft-v4.1-utility-pro",name:"Recraft: Recraft V4.1 Utility Pro",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4.1-vector":{id:"recraft/recraft-v4.1-vector",name:"Recraft: Recraft V4.1 Vector",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"sourceful/riverflow-v2-fast":{id:"sourceful/riverflow-v2-fast",name:"Sourceful: Riverflow V2 Fast",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"sourceful/riverflow-v2-fast-preview":{id:"sourceful/riverflow-v2-fast-preview",name:"Sourceful: Riverflow V2 Fast Preview",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"sourceful/riverflow-v2-max-preview":{id:"sourceful/riverflow-v2-max-preview",name:"Sourceful: Riverflow V2 Max Preview",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"sourceful/riverflow-v2-pro":{id:"sourceful/riverflow-v2-pro",name:"Sourceful: Riverflow V2 Pro",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"sourceful/riverflow-v2-standard-preview":{id:"sourceful/riverflow-v2-standard-preview",name:"Sourceful: Riverflow V2 Standard Preview",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"x-ai/grok-imagine-image-quality":{id:"x-ai/grok-imagine-image-quality",name:"xAI: Grok Imagine Image Quality",api:"openrouter-images",provider:"openrouter",baseUrl:"https://openrouter.ai/api/v1",input:["text","image"],output:["image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}}}};var yLF=new Map;for(let[B,Q]of Object.entries(qgQ)){let F=new Map;for(let[U,I]of Object.entries(Q))F.set(U,I);yLF.set(B,F)}var MLF=new Map;function TLF(B,Q){return(F,U,I)=>{if(F.api!==B)throw Error(`Mismatched api: ${F.api} expected ${B}`);return Q(F,U,I)}}function jgQ(B,Q){MLF.set(B.api,{provider:{api:B.api,generateImages:TLF(B.api,B.generateImages)},sourceId:Q})}var pgQ;function hLF(B,Q){return{api:B.api,provider:B.provider,model:B.id,output:[],stopReason:"error",errorMessage:Q instanceof Error?Q.message:String(Q),timestamp:Date.now()}}function kLF(){return pgQ||=Promise.resolve().then(() => (igQ(),ngQ)).then((B)=>B),pgQ}var dLF=async(B,Q,F)=>{try{return await(await kLF()).generateImagesOpenRouter(B,Q,F)}catch(U){return hLF(B,U)}};function $LF(){jgQ({api:"openrouter-images",generateImages:dLF})}$LF();WA();ON();ON();var w5F=function(B,Q){if(typeof B==="string"&&/^\.\.?\//.test(B))return B.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i,function(F,U,I,G,Z){return U?Q?".jsx":".js":I&&(!G||!Z)?F:I+G+"."+Z.toLowerCase()+"js"});return B},S5F=(B)=>{let Q=import.meta.url.endsWith(".js")?B.replace(/\.ts$/,".js"):B;return import(w5F(Q))},gbQ,VbQ,bbQ,XbQ,CbQ,RbQ,NbQ,AbQ,YbQ,LbQ;function HbQ(B,Q){(async()=>{for await(let F of Q)B.push(F);B.end()})()}function JbQ(B,Q){return{role:"assistant",content:[],api:B.api,provider:B.provider,model:B.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:Q instanceof Error?Q.message:String(Q),timestamp:Date.now()}}function bJ(B){return(Q,F,U)=>{let I=new nW;return B().then((G)=>{let Z=G.stream(Q,F,U);HbQ(I,Z)}).catch((G)=>{let Z=JbQ(Q,G);I.push({type:"error",reason:"error",error:Z}),I.end(Z)}),I}}function XJ(B){return(Q,F,U)=>{let I=new nW;return B().then((G)=>{let Z=G.streamSimple(Q,F,U);HbQ(I,Z)}).catch((G)=>{let Z=JbQ(Q,G);I.push({type:"error",reason:"error",error:Z}),I.end(Z)}),I}}function xbQ(){return gbQ||=Promise.resolve().then(() => (ZVQ(),GVQ)).then((B)=>{let Q=B;return{stream:Q.streamAnthropic,streamSimple:Q.streamSimpleAnthropic}}),gbQ}function EbQ(){return VbQ||=Promise.resolve().then(() => (VVQ(),gVQ)).then((B)=>{let Q=B;return{stream:Q.streamAzureOpenAIResponses,streamSimple:Q.streamSimpleAzureOpenAIResponses}}),VbQ}function DbQ(){return bbQ||=Promise.resolve().then(() => (RVQ(),CVQ)).then((B)=>{let Q=B;return{stream:Q.streamGoogle,streamSimple:Q.streamSimpleGoogle}}),bbQ}function zbQ(){return XbQ||=Promise.resolve().then(() => (HVQ(),LVQ)).then((B)=>{let Q=B;return{stream:Q.streamGoogleVertex,streamSimple:Q.streamSimpleGoogleVertex}}),XbQ}function wbQ(){return CbQ||=Promise.resolve().then(() => (wVQ(),zVQ)).then((B)=>{let Q=B;return{stream:Q.streamMistral,streamSimple:Q.streamSimpleMistral}}),CbQ}function SbQ(){return RbQ||=Promise.resolve().then(() => (aVQ(),pVQ)).then((B)=>{let Q=B;return{stream:Q.streamOpenAICodexResponses,streamSimple:Q.streamSimpleOpenAICodexResponses}}),RbQ}function ybQ(){return NbQ||=Promise.resolve().then(() => (FbQ(),QbQ)).then((B)=>{let Q=B;return{stream:Q.streamOpenAICompletions,streamSimple:Q.streamSimpleOpenAICompletions}}),NbQ}function MbQ(){return AbQ||=Promise.resolve().then(() => (WbQ(),ZbQ)).then((B)=>{let Q=B;return{stream:Q.streamOpenAIResponses,streamSimple:Q.streamSimpleOpenAIResponses}}),AbQ}function TbQ(){if(YbQ)return Promise.resolve(YbQ);return LbQ||=S5F("./amazon-bedrock.ts").then((B)=>{let Q=B;return{stream:Q.streamBedrock,streamSimple:Q.streamSimpleBedrock}}),LbQ}var y5F=bJ(xbQ),M5F=XJ(xbQ),T5F=bJ(EbQ),m5F=XJ(EbQ),O5F=bJ(DbQ),c5F=XJ(DbQ),K5F=bJ(zbQ),h5F=XJ(zbQ),k5F=bJ(wbQ),d5F=XJ(wbQ),$5F=bJ(SbQ),_5F=XJ(SbQ),v5F=bJ(ybQ),P5F=XJ(ybQ),f5F=bJ(MbQ),l5F=XJ(MbQ),u5F=bJ(TbQ),q5F=XJ(TbQ);function j5F(){GA({api:"anthropic-messages",stream:y5F,streamSimple:M5F}),GA({api:"openai-completions",stream:v5F,streamSimple:P5F}),GA({api:"mistral-conversations",stream:k5F,streamSimple:d5F}),GA({api:"openai-responses",stream:f5F,streamSimple:l5F}),GA({api:"azure-openai-responses",stream:T5F,streamSimple:m5F}),GA({api:"openai-codex-responses",stream:$5F,streamSimple:_5F}),GA({api:"google-generative-ai",stream:O5F,streamSimple:c5F}),GA({api:"google-vertex",stream:K5F,streamSimple:h5F}),GA({api:"bedrock-converse-stream",stream:u5F,streamSimple:q5F})}j5F();yRB();ZA();ON();LT();var wb={};WU(wb,{IsUndefined:()=>xW,IsUint8Array:()=>RJ,IsSymbol:()=>dRB,IsString:()=>IG,IsRegExp:()=>rh,IsObject:()=>mI,IsNumber:()=>PR,IsNull:()=>kRB,IsIterator:()=>hRB,IsFunction:()=>KRB,IsDate:()=>Kz,IsBoolean:()=>CJ,IsBigInt:()=>oh,IsAsyncIterator:()=>cRB,IsArray:()=>JW,HasPropertyKey:()=>pi});function pi(B,Q){return Q in B}function cRB(B){return mI(B)&&!JW(B)&&!RJ(B)&&Symbol.asyncIterator in B}function JW(B){return Array.isArray(B)}function oh(B){return typeof B==="bigint"}function CJ(B){return typeof B==="boolean"}function Kz(B){return B instanceof globalThis.Date}function KRB(B){return typeof B==="function"}function hRB(B){return mI(B)&&!JW(B)&&!RJ(B)&&Symbol.iterator in B}function kRB(B){return B===null}function PR(B){return typeof B==="number"}function mI(B){return typeof B==="object"&&B!==null}function rh(B){return B instanceof globalThis.RegExp}function IG(B){return typeof B==="string"}function dRB(B){return typeof B==="symbol"}function RJ(B){return B instanceof globalThis.Uint8Array}function xW(B){return B===void 0}function n5F(B){return B.map((Q)=>ai(Q))}function i5F(B){return new Date(B.getTime())}function p5F(B){return new Uint8Array(B)}function a5F(B){return new RegExp(B.source,B.flags)}function o5F(B){let Q={};for(let F of Object.getOwnPropertyNames(B))Q[F]=ai(B[F]);for(let F of Object.getOwnPropertySymbols(B))Q[F]=ai(B[F]);return Q}function ai(B){return JW(B)?n5F(B):Kz(B)?i5F(B):RJ(B)?p5F(B):rh(B)?a5F(B):mI(B)?o5F(B):B}function nG(B){return ai(B)}function zT(B,Q){return Q===void 0?nG(B):nG({...Q,...B})}function mbQ(B){return B!==null&&typeof B==="object"}function ObQ(B){return globalThis.Array.isArray(B)&&!globalThis.ArrayBuffer.isView(B)}function cbQ(B){return B===void 0}function KbQ(B){return typeof B==="number"}var oi;(function(B){B.InstanceMode="default",B.ExactOptionalPropertyTypes=!1,B.AllowArrayObject=!1,B.AllowNaN=!1,B.AllowNullVoid=!1;function Q(Z,W){return B.ExactOptionalPropertyTypes?W in Z:Z[W]!==void 0}B.IsExactOptionalProperty=Q;function F(Z){let W=mbQ(Z);return B.AllowArrayObject?W:W&&!ObQ(Z)}B.IsObjectLike=F;function U(Z){return F(Z)&&!(Z instanceof Date)&&!(Z instanceof Uint8Array)}B.IsRecordLike=U;function I(Z){return B.AllowNaN?KbQ(Z):Number.isFinite(Z)}B.IsNumberLike=I;function G(Z){let W=cbQ(Z);return B.AllowNullVoid?W||Z===null:W}B.IsVoidLike=G})(oi||(oi={}));function r5F(B){return globalThis.Object.freeze(B).map((Q)=>sh(Q))}function s5F(B){return B}function t5F(B){return B}function e5F(B){return B}function BxF(B){let Q={};for(let F of Object.getOwnPropertyNames(B))Q[F]=sh(B[F]);for(let F of Object.getOwnPropertySymbols(B))Q[F]=sh(B[F]);return globalThis.Object.freeze(Q)}function sh(B){return JW(B)?r5F(B):Kz(B)?s5F(B):RJ(B)?t5F(B):rh(B)?e5F(B):mI(B)?BxF(B):B}function UQ(B,Q){let F=Q!==void 0?{...Q,...B}:B;switch(oi.InstanceMode){case"freeze":return sh(F);case"clone":return nG(F);default:return F}}class KV extends Error{constructor(B){super(B)}}var iW=Symbol.for("TypeBox.Transform"),VA=Symbol.for("TypeBox.Readonly"),hV=Symbol.for("TypeBox.Optional"),cN=Symbol.for("TypeBox.Hint"),zQ=Symbol.for("TypeBox.Kind");function wT(B){return mI(B)&&B[VA]==="Readonly"}function SC(B){return mI(B)&&B[hV]==="Optional"}function $RB(B){return J0(B,"Any")}function _RB(B){return J0(B,"Argument")}function bA(B){return J0(B,"Array")}function hz(B){return J0(B,"AsyncIterator")}function kz(B){return J0(B,"BigInt")}function NJ(B){return J0(B,"Boolean")}function XA(B){return J0(B,"Computed")}function CA(B){return J0(B,"Constructor")}function QxF(B){return J0(B,"Date")}function RA(B){return J0(B,"Function")}function NA(B){return J0(B,"Integer")}function wZ(B){return J0(B,"Intersect")}function dz(B){return J0(B,"Iterator")}function J0(B,Q){return mI(B)&&zQ in B&&B[zQ]===Q}function ri(B){return CJ(B)||PR(B)||IG(B)}function fR(B){return J0(B,"Literal")}function lR(B){return J0(B,"MappedKey")}function iG(B){return J0(B,"MappedResult")}function r9(B){return J0(B,"Never")}function FxF(B){return J0(B,"Not")}function th(B){return J0(B,"Null")}function AA(B){return J0(B,"Number")}function EW(B){return J0(B,"Object")}function $z(B){return J0(B,"Promise")}function _z(B){return J0(B,"Record")}function UW(B){return J0(B,"Ref")}function vRB(B){return J0(B,"RegExp")}function AJ(B){return J0(B,"String")}function eh(B){return J0(B,"Symbol")}function uR(B){return J0(B,"TemplateLiteral")}function UxF(B){return J0(B,"This")}function s9(B){return mI(B)&&iW in B}function qR(B){return J0(B,"Tuple")}function Bk(B){return J0(B,"Undefined")}function y0(B){return J0(B,"Union")}function IxF(B){return J0(B,"Uint8Array")}function GxF(B){return J0(B,"Unknown")}function ZxF(B){return J0(B,"Unsafe")}function WxF(B){return J0(B,"Void")}function gxF(B){return mI(B)&&zQ in B&&IG(B[zQ])}function jR(B){return $RB(B)||_RB(B)||bA(B)||NJ(B)||kz(B)||hz(B)||XA(B)||CA(B)||QxF(B)||RA(B)||NA(B)||wZ(B)||dz(B)||fR(B)||lR(B)||iG(B)||r9(B)||FxF(B)||th(B)||AA(B)||EW(B)||$z(B)||_z(B)||UW(B)||vRB(B)||AJ(B)||eh(B)||uR(B)||UxF(B)||qR(B)||Bk(B)||y0(B)||IxF(B)||GxF(B)||ZxF(B)||WxF(B)||gxF(B)}var SB={};WU(SB,{TypeGuardUnknownTypeError:()=>hbQ,IsVoid:()=>xXQ,IsUnsafe:()=>JXQ,IsUnknown:()=>HXQ,IsUnionLiteral:()=>LxF,IsUnion:()=>lRB,IsUndefined:()=>YXQ,IsUint8Array:()=>LXQ,IsTuple:()=>AXQ,IsTransform:()=>NXQ,IsThis:()=>RXQ,IsTemplateLiteral:()=>CXQ,IsSymbol:()=>XXQ,IsString:()=>bXQ,IsSchema:()=>tg,IsRegExp:()=>VXQ,IsRef:()=>gXQ,IsRecursive:()=>YxF,IsRecord:()=>WXQ,IsReadonly:()=>CxF,IsProperties:()=>si,IsPromise:()=>ZXQ,IsOptional:()=>RxF,IsObject:()=>GXQ,IsNumber:()=>IXQ,IsNull:()=>UXQ,IsNot:()=>FXQ,IsNever:()=>QXQ,IsMappedResult:()=>BXQ,IsMappedKey:()=>ebQ,IsLiteralValue:()=>tbQ,IsLiteralString:()=>rbQ,IsLiteralNumber:()=>sbQ,IsLiteralBoolean:()=>AxF,IsLiteral:()=>Fk,IsKindOf:()=>B0,IsKind:()=>EXQ,IsIterator:()=>obQ,IsIntersect:()=>abQ,IsInteger:()=>pbQ,IsImport:()=>NxF,IsFunction:()=>ibQ,IsDate:()=>nbQ,IsConstructor:()=>jbQ,IsComputed:()=>qbQ,IsBoolean:()=>ubQ,IsBigInt:()=>lbQ,IsAsyncIterator:()=>fbQ,IsArray:()=>PbQ,IsArgument:()=>vbQ,IsAny:()=>_bQ});class hbQ extends KV{}var VxF=["Argument","Any","Array","AsyncIterator","BigInt","Boolean","Computed","Constructor","Date","Enum","Function","Integer","Intersect","Iterator","Literal","MappedKey","MappedResult","Not","Null","Number","Object","Promise","Record","Ref","RegExp","String","Symbol","TemplateLiteral","This","Tuple","Undefined","Union","Uint8Array","Unknown","Void"];function kbQ(B){try{return new RegExp(B),!0}catch{return!1}}function PRB(B){if(!IG(B))return!1;for(let Q=0;Q<B.length;Q++){let F=B.charCodeAt(Q);if(F>=7&&F<=13||F===27||F===127)return!1}return!0}function dbQ(B){return fRB(B)||tg(B)}function Qk(B){return xW(B)||oh(B)}function GG(B){return xW(B)||PR(B)}function fRB(B){return xW(B)||CJ(B)}function OI(B){return xW(B)||IG(B)}function bxF(B){return xW(B)||IG(B)&&PRB(B)&&kbQ(B)}function XxF(B){return xW(B)||IG(B)&&PRB(B)}function $bQ(B){return xW(B)||tg(B)}function CxF(B){return mI(B)&&B[VA]==="Readonly"}function RxF(B){return mI(B)&&B[hV]==="Optional"}function _bQ(B){return B0(B,"Any")&&OI(B.$id)}function vbQ(B){return B0(B,"Argument")&&PR(B.index)}function PbQ(B){return B0(B,"Array")&&B.type==="array"&&OI(B.$id)&&tg(B.items)&&GG(B.minItems)&&GG(B.maxItems)&&fRB(B.uniqueItems)&&$bQ(B.contains)&&GG(B.minContains)&&GG(B.maxContains)}function fbQ(B){return B0(B,"AsyncIterator")&&B.type==="AsyncIterator"&&OI(B.$id)&&tg(B.items)}function lbQ(B){return B0(B,"BigInt")&&B.type==="bigint"&&OI(B.$id)&&Qk(B.exclusiveMaximum)&&Qk(B.exclusiveMinimum)&&Qk(B.maximum)&&Qk(B.minimum)&&Qk(B.multipleOf)}function ubQ(B){return B0(B,"Boolean")&&B.type==="boolean"&&OI(B.$id)}function qbQ(B){return B0(B,"Computed")&&IG(B.target)&&JW(B.parameters)&&B.parameters.every((Q)=>tg(Q))}function jbQ(B){return B0(B,"Constructor")&&B.type==="Constructor"&&OI(B.$id)&&JW(B.parameters)&&B.parameters.every((Q)=>tg(Q))&&tg(B.returns)}function nbQ(B){return B0(B,"Date")&&B.type==="Date"&&OI(B.$id)&&GG(B.exclusiveMaximumTimestamp)&&GG(B.exclusiveMinimumTimestamp)&&GG(B.maximumTimestamp)&&GG(B.minimumTimestamp)&&GG(B.multipleOfTimestamp)}function ibQ(B){return B0(B,"Function")&&B.type==="Function"&&OI(B.$id)&&JW(B.parameters)&&B.parameters.every((Q)=>tg(Q))&&tg(B.returns)}function NxF(B){return B0(B,"Import")&&pi(B,"$defs")&&mI(B.$defs)&&si(B.$defs)&&pi(B,"$ref")&&IG(B.$ref)&&B.$ref in B.$defs}function pbQ(B){return B0(B,"Integer")&&B.type==="integer"&&OI(B.$id)&&GG(B.exclusiveMaximum)&&GG(B.exclusiveMinimum)&&GG(B.maximum)&&GG(B.minimum)&&GG(B.multipleOf)}function si(B){return mI(B)&&Object.entries(B).every(([Q,F])=>PRB(Q)&&tg(F))}function abQ(B){return B0(B,"Intersect")&&(IG(B.type)&&B.type!=="object"?!1:!0)&&JW(B.allOf)&&B.allOf.every((Q)=>tg(Q)&&!NXQ(Q))&&OI(B.type)&&(fRB(B.unevaluatedProperties)||$bQ(B.unevaluatedProperties))&&OI(B.$id)}function obQ(B){return B0(B,"Iterator")&&B.type==="Iterator"&&OI(B.$id)&&tg(B.items)}function B0(B,Q){return mI(B)&&zQ in B&&B[zQ]===Q}function rbQ(B){return Fk(B)&&IG(B.const)}function sbQ(B){return Fk(B)&&PR(B.const)}function AxF(B){return Fk(B)&&CJ(B.const)}function Fk(B){return B0(B,"Literal")&&OI(B.$id)&&tbQ(B.const)}function tbQ(B){return CJ(B)||PR(B)||IG(B)}function ebQ(B){return B0(B,"MappedKey")&&JW(B.keys)&&B.keys.every((Q)=>PR(Q)||IG(Q))}function BXQ(B){return B0(B,"MappedResult")&&si(B.properties)}function QXQ(B){return B0(B,"Never")&&mI(B.not)&&Object.getOwnPropertyNames(B.not).length===0}function FXQ(B){return B0(B,"Not")&&tg(B.not)}function UXQ(B){return B0(B,"Null")&&B.type==="null"&&OI(B.$id)}function IXQ(B){return B0(B,"Number")&&B.type==="number"&&OI(B.$id)&&GG(B.exclusiveMaximum)&&GG(B.exclusiveMinimum)&&GG(B.maximum)&&GG(B.minimum)&&GG(B.multipleOf)}function GXQ(B){return B0(B,"Object")&&B.type==="object"&&OI(B.$id)&&si(B.properties)&&dbQ(B.additionalProperties)&&GG(B.minProperties)&&GG(B.maxProperties)}function ZXQ(B){return B0(B,"Promise")&&B.type==="Promise"&&OI(B.$id)&&tg(B.item)}function WXQ(B){return B0(B,"Record")&&B.type==="object"&&OI(B.$id)&&dbQ(B.additionalProperties)&&mI(B.patternProperties)&&((Q)=>{let F=Object.getOwnPropertyNames(Q.patternProperties);return F.length===1&&kbQ(F[0])&&mI(Q.patternProperties)&&tg(Q.patternProperties[F[0]])})(B)}function YxF(B){return mI(B)&&cN in B&&B[cN]==="Recursive"}function gXQ(B){return B0(B,"Ref")&&OI(B.$id)&&IG(B.$ref)}function VXQ(B){return B0(B,"RegExp")&&OI(B.$id)&&IG(B.source)&&IG(B.flags)&&GG(B.maxLength)&&GG(B.minLength)}function bXQ(B){return B0(B,"String")&&B.type==="string"&&OI(B.$id)&&GG(B.minLength)&&GG(B.maxLength)&&bxF(B.pattern)&&XxF(B.format)}function XXQ(B){return B0(B,"Symbol")&&B.type==="symbol"&&OI(B.$id)}function CXQ(B){return B0(B,"TemplateLiteral")&&B.type==="string"&&IG(B.pattern)&&B.pattern[0]==="^"&&B.pattern[B.pattern.length-1]==="$"}function RXQ(B){return B0(B,"This")&&OI(B.$id)&&IG(B.$ref)}function NXQ(B){return mI(B)&&iW in B}function AXQ(B){return B0(B,"Tuple")&&B.type==="array"&&OI(B.$id)&&PR(B.minItems)&&PR(B.maxItems)&&B.minItems===B.maxItems&&(xW(B.items)&&xW(B.additionalItems)&&B.minItems===0||JW(B.items)&&B.items.every((Q)=>tg(Q)))}function YXQ(B){return B0(B,"Undefined")&&B.type==="undefined"&&OI(B.$id)}function LxF(B){return lRB(B)&&B.anyOf.every((Q)=>rbQ(Q)||sbQ(Q))}function lRB(B){return B0(B,"Union")&&OI(B.$id)&&mI(B)&&JW(B.anyOf)&&B.anyOf.every((Q)=>tg(Q))}function LXQ(B){return B0(B,"Uint8Array")&&B.type==="Uint8Array"&&OI(B.$id)&&GG(B.minByteLength)&&GG(B.maxByteLength)}function HXQ(B){return B0(B,"Unknown")&&OI(B.$id)}function JXQ(B){return B0(B,"Unsafe")}function xXQ(B){return B0(B,"Void")&&B.type==="void"&&OI(B.$id)}function EXQ(B){return mI(B)&&zQ in B&&IG(B[zQ])&&!VxF.includes(B[zQ])}function tg(B){return mI(B)&&(_bQ(B)||vbQ(B)||PbQ(B)||ubQ(B)||lbQ(B)||fbQ(B)||qbQ(B)||jbQ(B)||nbQ(B)||ibQ(B)||pbQ(B)||abQ(B)||obQ(B)||Fk(B)||ebQ(B)||BXQ(B)||QXQ(B)||FXQ(B)||UXQ(B)||IXQ(B)||GXQ(B)||ZXQ(B)||WXQ(B)||gXQ(B)||VXQ(B)||bXQ(B)||XXQ(B)||CXQ(B)||RXQ(B)||AXQ(B)||YXQ(B)||lRB(B)||LXQ(B)||HXQ(B)||JXQ(B)||xXQ(B)||EXQ(B))}var DXQ="(true|false)",ti="(0|[1-9][0-9]*)",zXQ="(.*)";var t9="^(0|[1-9][0-9]*)$",e9="^(.*)$",wXQ="^(?!.*)$";function SXQ(B,Q){return B.includes(Q)}function yXQ(B){return[...new Set(B)]}function HxF(B,Q){return B.filter((F)=>Q.includes(F))}function JxF(B,Q){return B.reduce((F,U)=>{return HxF(F,U)},Q)}function MXQ(B){return B.length===1?B[0]:B.length>1?JxF(B.slice(1),B[0]):[]}function TXQ(B){let Q=[];for(let F of B)Q.push(...F);return Q}function BE(B){return UQ({[zQ]:"Any"},B)}function ST(B,Q){return UQ({[zQ]:"Array",type:"array",items:B},Q)}function mXQ(B){return UQ({[zQ]:"Argument",index:B})}function yT(B,Q){return UQ({[zQ]:"AsyncIterator",type:"AsyncIterator",items:B},Q)}function mG(B,Q,F){return UQ({[zQ]:"Computed",target:B,parameters:Q},F)}function xxF(B,Q){let{[Q]:F,...U}=B;return U}function SZ(B,Q){return Q.reduce((F,U)=>xxF(F,U),B)}function M0(B){return UQ({[zQ]:"Never",not:{}},B)}function f0(B){return UQ({[zQ]:"MappedResult",properties:B})}function MT(B,Q,F){return UQ({[zQ]:"Constructor",type:"Constructor",parameters:B,returns:Q},F)}function eY(B,Q,F){return UQ({[zQ]:"Function",type:"Function",parameters:B,returns:Q},F)}function Uk(B,Q){return UQ({[zQ]:"Union",anyOf:B},Q)}function ExF(B){return B.some((Q)=>SC(Q))}function OXQ(B){return B.map((Q)=>SC(Q)?DxF(Q):Q)}function DxF(B){return SZ(B,[hV])}function zxF(B,Q){return ExF(B)?Sb(Uk(OXQ(B),Q)):Uk(OXQ(B),Q)}function BL(B,Q){return B.length===1?UQ(B[0],Q):B.length===0?M0(Q):zxF(B,Q)}function AI(B,Q){return B.length===0?M0(Q):B.length===1?UQ(B[0],Q):Uk(B,Q)}class uRB extends KV{}function wxF(B){return B.replace(/\\\$/g,"$").replace(/\\\*/g,"*").replace(/\\\^/g,"^").replace(/\\\|/g,"|").replace(/\\\(/g,"(").replace(/\\\)/g,")")}function qRB(B,Q,F){return B[Q]===F&&B.charCodeAt(Q-1)!==92}function LJ(B,Q){return qRB(B,Q,"(")}function Ik(B,Q){return qRB(B,Q,")")}function cXQ(B,Q){return qRB(B,Q,"|")}function SxF(B){if(!(LJ(B,0)&&Ik(B,B.length-1)))return!1;let Q=0;for(let F=0;F<B.length;F++){if(LJ(B,F))Q+=1;if(Ik(B,F))Q-=1;if(Q===0&&F!==B.length-1)return!1}return!0}function yxF(B){return B.slice(1,B.length-1)}function MxF(B){let Q=0;for(let F=0;F<B.length;F++){if(LJ(B,F))Q+=1;if(Ik(B,F))Q-=1;if(cXQ(B,F)&&Q===0)return!0}return!1}function TxF(B){for(let Q=0;Q<B.length;Q++)if(LJ(B,Q))return!0;return!1}function mxF(B){let[Q,F]=[0,0],U=[];for(let G=0;G<B.length;G++){if(LJ(B,G))Q+=1;if(Ik(B,G))Q-=1;if(cXQ(B,G)&&Q===0){let Z=B.slice(F,G);if(Z.length>0)U.push(TT(Z));F=G+1}}let I=B.slice(F);if(I.length>0)U.push(TT(I));if(U.length===0)return{type:"const",const:""};if(U.length===1)return U[0];return{type:"or",expr:U}}function OxF(B){function Q(I,G){if(!LJ(I,G))throw new uRB("TemplateLiteralParser: Index must point to open parens");let Z=0;for(let W=G;W<I.length;W++){if(LJ(I,W))Z+=1;if(Ik(I,W))Z-=1;if(Z===0)return[G,W]}throw new uRB("TemplateLiteralParser: Unclosed group parens in expression")}function F(I,G){for(let Z=G;Z<I.length;Z++)if(LJ(I,Z))return[G,Z];return[G,I.length]}let U=[];for(let I=0;I<B.length;I++)if(LJ(B,I)){let[G,Z]=Q(B,I),W=B.slice(G,Z+1);U.push(TT(W)),I=Z}else{let[G,Z]=F(B,I),W=B.slice(G,Z);if(W.length>0)U.push(TT(W));I=Z-1}return U.length===0?{type:"const",const:""}:U.length===1?U[0]:{type:"and",expr:U}}function TT(B){return SxF(B)?TT(yxF(B)):MxF(B)?mxF(B):TxF(B)?OxF(B):{type:"const",const:wxF(B)}}function mT(B){return TT(B.slice(1,B.length-1))}class KXQ extends KV{}function cxF(B){return B.type==="or"&&B.expr.length===2&&B.expr[0].type==="const"&&B.expr[0].const==="0"&&B.expr[1].type==="const"&&B.expr[1].const==="[1-9][0-9]*"}function KxF(B){return B.type==="or"&&B.expr.length===2&&B.expr[0].type==="const"&&B.expr[0].const==="true"&&B.expr[1].type==="const"&&B.expr[1].const==="false"}function hxF(B){return B.type==="const"&&B.const===".*"}function vz(B){return cxF(B)||hxF(B)?!1:KxF(B)?!0:B.type==="and"?B.expr.every((Q)=>vz(Q)):B.type==="or"?B.expr.every((Q)=>vz(Q)):B.type==="const"?!0:(()=>{throw new KXQ("Unknown expression type")})()}function hXQ(B){let Q=mT(B.pattern);return vz(Q)}class kXQ extends KV{}function*dXQ(B){if(B.length===1)return yield*B[0];for(let Q of B[0])for(let F of dXQ(B.slice(1)))yield`${Q}${F}`}function*kxF(B){return yield*dXQ(B.expr.map((Q)=>[...Gk(Q)]))}function*dxF(B){for(let Q of B.expr)yield*Gk(Q)}function*$xF(B){return yield B.const}function*Gk(B){return B.type==="and"?yield*kxF(B):B.type==="or"?yield*dxF(B):B.type==="const"?yield*$xF(B):(()=>{throw new kXQ("Unknown expression")})()}function ei(B){let Q=mT(B.pattern);return vz(Q)?[...Gk(Q)]:[]}function GI(B,Q){return UQ({[zQ]:"Literal",const:B,type:typeof B},Q)}function Bp(B){return UQ({[zQ]:"Boolean",type:"boolean"},B)}function OT(B){return UQ({[zQ]:"BigInt",type:"bigint"},B)}function KN(B){return UQ({[zQ]:"Number",type:"number"},B)}function YA(B){return UQ({[zQ]:"String",type:"string"},B)}function*_xF(B){let Q=B.trim().replace(/"|'/g,"");return Q==="boolean"?yield Bp():Q==="number"?yield KN():Q==="bigint"?yield OT():Q==="string"?yield YA():yield(()=>{let F=Q.split("|").map((U)=>GI(U.trim()));return F.length===0?M0():F.length===1?F[0]:BL(F)})()}function*vxF(B){if(B[1]!=="{"){let Q=GI("$"),F=jRB(B.slice(1));return yield*[Q,...F]}for(let Q=2;Q<B.length;Q++)if(B[Q]==="}"){let F=_xF(B.slice(2,Q)),U=jRB(B.slice(Q+1));return yield*[...F,...U]}yield GI(B)}function*jRB(B){for(let Q=0;Q<B.length;Q++)if(B[Q]==="$"){let F=GI(B.slice(0,Q)),U=vxF(B.slice(Q));return yield*[F,...U]}yield GI(B)}function $XQ(B){return[...jRB(B)]}class _XQ extends KV{}function PxF(B){return B.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function vXQ(B,Q){return uR(B)?B.pattern.slice(1,B.pattern.length-1):y0(B)?`(${B.anyOf.map((F)=>vXQ(F,Q)).join("|")})`:AA(B)?`${Q}${ti}`:NA(B)?`${Q}${ti}`:kz(B)?`${Q}${ti}`:AJ(B)?`${Q}${zXQ}`:fR(B)?`${Q}${PxF(B.const.toString())}`:NJ(B)?`${Q}${DXQ}`:(()=>{throw new _XQ(`Unexpected Kind '${B[zQ]}'`)})()}function nRB(B){return`^${B.map((Q)=>vXQ(Q,"")).join("")}$`}function Pz(B){let F=ei(B).map((U)=>GI(U));return BL(F)}function Qp(B,Q){let F=IG(B)?nRB($XQ(B)):nRB(B);return UQ({[zQ]:"TemplateLiteral",type:"string",pattern:F},Q)}function fxF(B){return ei(B).map((F)=>F.toString())}function lxF(B){let Q=[];for(let F of B)Q.push(...yC(F));return Q}function uxF(B){return[B.toString()]}function yC(B){return[...new Set(uR(B)?fxF(B):y0(B)?lxF(B.anyOf):fR(B)?uxF(B.const):AA(B)?["[number]"]:NA(B)?["[number]"]:[])]}function qxF(B,Q,F){let U={};for(let I of Object.getOwnPropertyNames(Q))U[I]=QE(B,yC(Q[I]),F);return U}function jxF(B,Q,F){return qxF(B,Q.properties,F)}function PXQ(B,Q,F){let U=jxF(B,Q,F);return f0(U)}function lXQ(B,Q){return B.map((F)=>uXQ(F,Q))}function nxF(B){return B.filter((Q)=>!r9(Q))}function ixF(B,Q){return Fp(nxF(lXQ(B,Q)))}function pxF(B){return B.some((Q)=>r9(Q))?[]:B}function axF(B,Q){return BL(pxF(lXQ(B,Q)))}function oxF(B,Q){return Q in B?B[Q]:Q==="[number]"?BL(B):M0()}function rxF(B,Q){return Q==="[number]"?B:M0()}function sxF(B,Q){return Q in B?B[Q]:M0()}function uXQ(B,Q){return wZ(B)?ixF(B.allOf,Q):y0(B)?axF(B.anyOf,Q):qR(B)?oxF(B.items??[],Q):bA(B)?rxF(B.items,Q):EW(B)?sxF(B.properties,Q):M0()}function iRB(B,Q){return Q.map((F)=>uXQ(B,F))}function fXQ(B,Q){return BL(iRB(B,Q))}function QE(B,Q,F){if(UW(B)||UW(Q)){if(!jR(B)||!jR(Q))throw new KV("Index types using Ref parameters require both Type and Key to be of TSchema");return mG("Index",[B,Q])}if(iG(Q))return PXQ(B,Q,F);if(lR(Q))return qXQ(B,Q,F);return UQ(jR(Q)?fXQ(B,yC(Q)):fXQ(B,Q),F)}function txF(B,Q,F){return{[Q]:QE(B,[Q],nG(F))}}function exF(B,Q,F){return Q.reduce((U,I)=>{return{...U,...txF(B,I,F)}},{})}function B9F(B,Q,F){return exF(B,Q.keys,F)}function qXQ(B,Q,F){let U=B9F(B,Q,F);return f0(U)}function cT(B,Q){return UQ({[zQ]:"Iterator",type:"Iterator",items:B},Q)}function Q9F(B){return globalThis.Object.keys(B).filter((Q)=>!SC(B[Q]))}function F9F(B,Q){let F=Q9F(B),U=F.length>0?{[zQ]:"Object",type:"object",required:F,properties:B}:{[zQ]:"Object",type:"object",properties:B};return UQ(U,Q)}var cI=F9F;function Up(B,Q){return UQ({[zQ]:"Promise",type:"Promise",item:B},Q)}function U9F(B){return UQ(SZ(B,[VA]))}function I9F(B){return UQ({...B,[VA]:"Readonly"})}function G9F(B,Q){return Q===!1?U9F(B):I9F(B)}function MC(B,Q){let F=Q??!0;return iG(B)?jXQ(B,F):G9F(B,F)}function Z9F(B,Q){let F={};for(let U of globalThis.Object.getOwnPropertyNames(B))F[U]=MC(B[U],Q);return F}function W9F(B,Q){return Z9F(B.properties,Q)}function jXQ(B,Q){let F=W9F(B,Q);return f0(F)}function hN(B,Q){return UQ(B.length>0?{[zQ]:"Tuple",type:"array",items:B,additionalItems:!1,minItems:B.length,maxItems:B.length}:{[zQ]:"Tuple",type:"array",minItems:B.length,maxItems:B.length},Q)}function nXQ(B,Q){return B in Q?kN(B,Q[B]):f0(Q)}function g9F(B){return{[B]:GI(B)}}function V9F(B){let Q={};for(let F of B)Q[F]=GI(F);return Q}function b9F(B,Q){return SXQ(Q,B)?g9F(B):V9F(Q)}function X9F(B,Q){let F=b9F(B,Q);return nXQ(B,F)}function Zk(B,Q){return Q.map((F)=>kN(B,F))}function C9F(B,Q){let F={};for(let U of globalThis.Object.getOwnPropertyNames(Q))F[U]=kN(B,Q[U]);return F}function kN(B,Q){let F={...Q};return SC(Q)?Sb(kN(B,SZ(Q,[hV]))):wT(Q)?MC(kN(B,SZ(Q,[VA]))):iG(Q)?nXQ(B,Q.properties):lR(Q)?X9F(B,Q.keys):CA(Q)?MT(Zk(B,Q.parameters),kN(B,Q.returns),F):RA(Q)?eY(Zk(B,Q.parameters),kN(B,Q.returns),F):hz(Q)?yT(kN(B,Q.items),F):dz(Q)?cT(kN(B,Q.items),F):wZ(Q)?yb(Zk(B,Q.allOf),F):y0(Q)?AI(Zk(B,Q.anyOf),F):qR(Q)?hN(Zk(B,Q.items??[]),F):EW(Q)?cI(C9F(B,Q.properties),F):bA(Q)?ST(kN(B,Q.items),F):$z(Q)?Up(kN(B,Q.item),F):Q}function R9F(B,Q){let F={};for(let U of B)F[U]=kN(U,Q);return F}function iXQ(B,Q,F){let U=jR(B)?yC(B):B,I=Q({[zQ]:"MappedKey",keys:U}),G=R9F(U,I);return cI(G,F)}function N9F(B){return UQ(SZ(B,[hV]))}function A9F(B){return UQ({...B,[hV]:"Optional"})}function Y9F(B,Q){return Q===!1?N9F(B):A9F(B)}function Sb(B,Q){let F=Q??!0;return iG(B)?pXQ(B,F):Y9F(B,F)}function L9F(B,Q){let F={};for(let U of globalThis.Object.getOwnPropertyNames(B))F[U]=Sb(B[U],Q);return F}function H9F(B,Q){return L9F(B.properties,Q)}function pXQ(B,Q){let F=H9F(B,Q);return f0(F)}function Wk(B,Q={}){let F=B.every((I)=>EW(I)),U=jR(Q.unevaluatedProperties)?{unevaluatedProperties:Q.unevaluatedProperties}:{};return UQ(Q.unevaluatedProperties===!1||jR(Q.unevaluatedProperties)||F?{...U,[zQ]:"Intersect",type:"object",allOf:B}:{...U,[zQ]:"Intersect",allOf:B},Q)}function J9F(B){return B.every((Q)=>SC(Q))}function x9F(B){return SZ(B,[hV])}function aXQ(B){return B.map((Q)=>SC(Q)?x9F(Q):Q)}function E9F(B,Q){return J9F(B)?Sb(Wk(aXQ(B),Q)):Wk(aXQ(B),Q)}function Fp(B,Q={}){if(B.length===1)return UQ(B[0],Q);if(B.length===0)return M0(Q);if(B.some((F)=>s9(F)))throw Error("Cannot intersect transform types");return E9F(B,Q)}function yb(B,Q){if(B.length===1)return UQ(B[0],Q);if(B.length===0)return M0(Q);if(B.some((F)=>s9(F)))throw Error("Cannot intersect transform types");return Wk(B,Q)}function QL(...B){let[Q,F]=typeof B[0]==="string"?[B[0],B[1]]:[B[0].$id,B[1]];if(typeof Q!=="string")throw new KV("Ref: $ref must be a string");return UQ({[zQ]:"Ref",$ref:Q},F)}function D9F(B,Q){return mG("Awaited",[mG(B,Q)])}function z9F(B){return mG("Awaited",[QL(B)])}function w9F(B){return yb(oXQ(B))}function S9F(B){return AI(oXQ(B))}function y9F(B){return KT(B)}function oXQ(B){return B.map((Q)=>KT(Q))}function KT(B,Q){return UQ(XA(B)?D9F(B.target,B.parameters):wZ(B)?w9F(B.allOf):y0(B)?S9F(B.anyOf):$z(B)?y9F(B.item):UW(B)?z9F(B.$ref):B,Q)}function rXQ(B){let Q=[];for(let F of B)Q.push(gk(F));return Q}function M9F(B){let Q=rXQ(B);return TXQ(Q)}function T9F(B){let Q=rXQ(B);return MXQ(Q)}function m9F(B){return B.map((Q,F)=>F.toString())}function O9F(B){return["[number]"]}function c9F(B){return globalThis.Object.getOwnPropertyNames(B)}function K9F(B){if(!h9F)return[];return globalThis.Object.getOwnPropertyNames(B).map((F)=>{return F[0]==="^"&&F[F.length-1]==="$"?F.slice(1,F.length-1):F})}function gk(B){return wZ(B)?M9F(B.allOf):y0(B)?T9F(B.anyOf):qR(B)?m9F(B.items??[]):bA(B)?O9F(B.items):EW(B)?c9F(B.properties):_z(B)?K9F(B.patternProperties):[]}var h9F=!1;function k9F(B,Q){return mG("KeyOf",[mG(B,Q)])}function d9F(B){return mG("KeyOf",[QL(B)])}function $9F(B,Q){let F=gk(B),U=_9F(F),I=BL(U);return UQ(I,Q)}function _9F(B){return B.map((Q)=>Q==="[number]"?KN():GI(Q))}function hT(B,Q){return XA(B)?k9F(B.target,B.parameters):UW(B)?d9F(B.$ref):iG(B)?sXQ(B,Q):$9F(B,Q)}function v9F(B,Q){let F={};for(let U of globalThis.Object.getOwnPropertyNames(B))F[U]=hT(B[U],nG(Q));return F}function P9F(B,Q){return v9F(B.properties,Q)}function sXQ(B,Q){let F=P9F(B,Q);return f0(F)}function f9F(B){let Q=[];for(let F of B)Q.push(...gk(F));return yXQ(Q)}function l9F(B){return B.filter((Q)=>!r9(Q))}function u9F(B,Q){let F=[];for(let U of B)F.push(...iRB(U,[Q]));return l9F(F)}function q9F(B,Q){let F={};for(let U of Q)F[U]=Fp(u9F(B,U));return F}function tXQ(B,Q){let F=f9F(B),U=q9F(B,F);return cI(U,Q)}function Ip(B){return UQ({[zQ]:"Date",type:"Date"},B)}function Gp(B){return UQ({[zQ]:"Null",type:"null"},B)}function Zp(B){return UQ({[zQ]:"Symbol",type:"symbol"},B)}function Wp(B){return UQ({[zQ]:"Undefined",type:"undefined"},B)}function gp(B){return UQ({[zQ]:"Uint8Array",type:"Uint8Array"},B)}function FE(B){return UQ({[zQ]:"Unknown"},B)}function j9F(B){return B.map((Q)=>pRB(Q,!1))}function n9F(B){let Q={};for(let F of globalThis.Object.getOwnPropertyNames(B))Q[F]=MC(pRB(B[F],!1));return Q}function Vp(B,Q){return Q===!0?B:MC(B)}function pRB(B,Q){return cRB(B)?Vp(BE(),Q):hRB(B)?Vp(BE(),Q):JW(B)?MC(hN(j9F(B))):RJ(B)?gp():Kz(B)?Ip():mI(B)?Vp(cI(n9F(B)),Q):KRB(B)?Vp(eY([],FE()),Q):xW(B)?Wp():kRB(B)?Gp():dRB(B)?Zp():oh(B)?OT():PR(B)?GI(B):CJ(B)?GI(B):IG(B)?GI(B):cI({})}function eXQ(B,Q){return UQ(pRB(B,!0),Q)}function BCQ(B,Q){return CA(B)?hN(B.parameters,Q):M0(Q)}function QCQ(B,Q){if(xW(B))throw Error("Enum undefined or empty");let F=globalThis.Object.getOwnPropertyNames(B).filter((G)=>isNaN(G)).map((G)=>B[G]),I=[...new Set(F)].map((G)=>GI(G));return AI(I,{...Q,[cN]:"Enum"})}class ZCQ extends KV{}var IQ;(function(B){B[B.Union=0]="Union",B[B.True=1]="True",B[B.False=2]="False"})(IQ||(IQ={}));function dN(B){return B===IQ.False?B:IQ.True}function kT(B){throw new ZCQ(B)}function pW(B){return SB.IsNever(B)||SB.IsIntersect(B)||SB.IsUnion(B)||SB.IsUnknown(B)||SB.IsAny(B)}function aW(B,Q){return SB.IsNever(Q)?VCQ(B,Q):SB.IsIntersect(Q)?bp(B,Q):SB.IsUnion(Q)?tRB(B,Q):SB.IsUnknown(Q)?RCQ(B,Q):SB.IsAny(Q)?sRB(B,Q):kT("StructuralRight")}function sRB(B,Q){return IQ.True}function i9F(B,Q){return SB.IsIntersect(Q)?bp(B,Q):SB.IsUnion(Q)&&Q.anyOf.some((F)=>SB.IsAny(F)||SB.IsUnknown(F))?IQ.True:SB.IsUnion(Q)?IQ.Union:SB.IsUnknown(Q)?IQ.True:SB.IsAny(Q)?IQ.True:IQ.Union}function p9F(B,Q){return SB.IsUnknown(B)?IQ.False:SB.IsAny(B)?IQ.Union:SB.IsNever(B)?IQ.True:IQ.False}function a9F(B,Q){return SB.IsObject(Q)&&Xp(Q)?IQ.True:pW(Q)?aW(B,Q):!SB.IsArray(Q)?IQ.False:dN(KI(B.items,Q.items))}function o9F(B,Q){return pW(Q)?aW(B,Q):!SB.IsAsyncIterator(Q)?IQ.False:dN(KI(B.items,Q.items))}function r9F(B,Q){return pW(Q)?aW(B,Q):SB.IsObject(Q)?Mb(B,Q):SB.IsRecord(Q)?$N(B,Q):SB.IsBigInt(Q)?IQ.True:IQ.False}function WCQ(B,Q){return SB.IsLiteralBoolean(B)?IQ.True:SB.IsBoolean(B)?IQ.True:IQ.False}function s9F(B,Q){return pW(Q)?aW(B,Q):SB.IsObject(Q)?Mb(B,Q):SB.IsRecord(Q)?$N(B,Q):SB.IsBoolean(Q)?IQ.True:IQ.False}function t9F(B,Q){return pW(Q)?aW(B,Q):SB.IsObject(Q)?Mb(B,Q):!SB.IsConstructor(Q)?IQ.False:B.parameters.length>Q.parameters.length?IQ.False:!B.parameters.every((F,U)=>dN(KI(Q.parameters[U],F))===IQ.True)?IQ.False:dN(KI(B.returns,Q.returns))}function e9F(B,Q){return pW(Q)?aW(B,Q):SB.IsObject(Q)?Mb(B,Q):SB.IsRecord(Q)?$N(B,Q):SB.IsDate(Q)?IQ.True:IQ.False}function BEF(B,Q){return pW(Q)?aW(B,Q):SB.IsObject(Q)?Mb(B,Q):!SB.IsFunction(Q)?IQ.False:B.parameters.length>Q.parameters.length?IQ.False:!B.parameters.every((F,U)=>dN(KI(Q.parameters[U],F))===IQ.True)?IQ.False:dN(KI(B.returns,Q.returns))}function gCQ(B,Q){return SB.IsLiteral(B)&&wb.IsNumber(B.const)?IQ.True:SB.IsNumber(B)||SB.IsInteger(B)?IQ.True:IQ.False}function QEF(B,Q){return SB.IsInteger(Q)||SB.IsNumber(Q)?IQ.True:pW(Q)?aW(B,Q):SB.IsObject(Q)?Mb(B,Q):SB.IsRecord(Q)?$N(B,Q):IQ.False}function bp(B,Q){return Q.allOf.every((F)=>KI(B,F)===IQ.True)?IQ.True:IQ.False}function FEF(B,Q){return B.allOf.some((F)=>KI(F,Q)===IQ.True)?IQ.True:IQ.False}function UEF(B,Q){return pW(Q)?aW(B,Q):!SB.IsIterator(Q)?IQ.False:dN(KI(B.items,Q.items))}function IEF(B,Q){return SB.IsLiteral(Q)&&Q.const===B.const?IQ.True:pW(Q)?aW(B,Q):SB.IsObject(Q)?Mb(B,Q):SB.IsRecord(Q)?$N(B,Q):SB.IsString(Q)?CCQ(B,Q):SB.IsNumber(Q)?bCQ(B,Q):SB.IsInteger(Q)?gCQ(B,Q):SB.IsBoolean(Q)?WCQ(B,Q):IQ.False}function VCQ(B,Q){return IQ.False}function GEF(B,Q){return IQ.True}function FCQ(B){let[Q,F]=[B,0];while(!0){if(!SB.IsNot(Q))break;Q=Q.not,F+=1}return F%2===0?Q:FE()}function ZEF(B,Q){return SB.IsNot(B)?KI(FCQ(B),Q):SB.IsNot(Q)?KI(B,FCQ(Q)):kT("Invalid fallthrough for Not")}function WEF(B,Q){return pW(Q)?aW(B,Q):SB.IsObject(Q)?Mb(B,Q):SB.IsRecord(Q)?$N(B,Q):SB.IsNull(Q)?IQ.True:IQ.False}function bCQ(B,Q){return SB.IsLiteralNumber(B)?IQ.True:SB.IsNumber(B)||SB.IsInteger(B)?IQ.True:IQ.False}function gEF(B,Q){return pW(Q)?aW(B,Q):SB.IsObject(Q)?Mb(B,Q):SB.IsRecord(Q)?$N(B,Q):SB.IsInteger(Q)||SB.IsNumber(Q)?IQ.True:IQ.False}function TC(B,Q){return Object.getOwnPropertyNames(B.properties).length===Q}function UCQ(B){return Xp(B)}function ICQ(B){return TC(B,0)||TC(B,1)&&"description"in B.properties&&SB.IsUnion(B.properties.description)&&B.properties.description.anyOf.length===2&&(SB.IsString(B.properties.description.anyOf[0])&&SB.IsUndefined(B.properties.description.anyOf[1])||SB.IsString(B.properties.description.anyOf[1])&&SB.IsUndefined(B.properties.description.anyOf[0]))}function aRB(B){return TC(B,0)}function GCQ(B){return TC(B,0)}function VEF(B){return TC(B,0)}function bEF(B){return TC(B,0)}function XEF(B){return Xp(B)}function CEF(B){let Q=KN();return TC(B,0)||TC(B,1)&&"length"in B.properties&&dN(KI(B.properties.length,Q))===IQ.True}function REF(B){return TC(B,0)}function Xp(B){let Q=KN();return TC(B,0)||TC(B,1)&&"length"in B.properties&&dN(KI(B.properties.length,Q))===IQ.True}function NEF(B){let Q=eY([BE()],BE());return TC(B,0)||TC(B,1)&&"then"in B.properties&&dN(KI(B.properties.then,Q))===IQ.True}function XCQ(B,Q){return KI(B,Q)===IQ.False?IQ.False:SB.IsOptional(B)&&!SB.IsOptional(Q)?IQ.False:IQ.True}function Mb(B,Q){return SB.IsUnknown(B)?IQ.False:SB.IsAny(B)?IQ.Union:SB.IsNever(B)||SB.IsLiteralString(B)&&UCQ(Q)||SB.IsLiteralNumber(B)&&aRB(Q)||SB.IsLiteralBoolean(B)&&GCQ(Q)||SB.IsSymbol(B)&&ICQ(Q)||SB.IsBigInt(B)&&VEF(Q)||SB.IsString(B)&&UCQ(Q)||SB.IsSymbol(B)&&ICQ(Q)||SB.IsNumber(B)&&aRB(Q)||SB.IsInteger(B)&&aRB(Q)||SB.IsBoolean(B)&&GCQ(Q)||SB.IsUint8Array(B)&&XEF(Q)||SB.IsDate(B)&&bEF(Q)||SB.IsConstructor(B)&&REF(Q)||SB.IsFunction(B)&&CEF(Q)?IQ.True:SB.IsRecord(B)&&SB.IsString(oRB(B))?(()=>{return Q[cN]==="Record"?IQ.True:IQ.False})():SB.IsRecord(B)&&SB.IsNumber(oRB(B))?(()=>{return TC(Q,0)?IQ.True:IQ.False})():IQ.False}function AEF(B,Q){return pW(Q)?aW(B,Q):SB.IsRecord(Q)?$N(B,Q):!SB.IsObject(Q)?IQ.False:(()=>{for(let F of Object.getOwnPropertyNames(Q.properties)){if(!(F in B.properties)&&!SB.IsOptional(Q.properties[F]))return IQ.False;if(SB.IsOptional(Q.properties[F]))return IQ.True;if(XCQ(B.properties[F],Q.properties[F])===IQ.False)return IQ.False}return IQ.True})()}function YEF(B,Q){return pW(Q)?aW(B,Q):SB.IsObject(Q)&&NEF(Q)?IQ.True:!SB.IsPromise(Q)?IQ.False:dN(KI(B.item,Q.item))}function oRB(B){return t9 in B.patternProperties?KN():(e9 in B.patternProperties)?YA():kT("Unknown record key pattern")}function rRB(B){return t9 in B.patternProperties?B.patternProperties[t9]:(e9 in B.patternProperties)?B.patternProperties[e9]:kT("Unable to get record value schema")}function $N(B,Q){let[F,U]=[oRB(Q),rRB(Q)];return SB.IsLiteralString(B)&&SB.IsNumber(F)&&dN(KI(B,U))===IQ.True?IQ.True:SB.IsUint8Array(B)&&SB.IsNumber(F)?KI(B,U):SB.IsString(B)&&SB.IsNumber(F)?KI(B,U):SB.IsArray(B)&&SB.IsNumber(F)?KI(B,U):SB.IsObject(B)?(()=>{for(let I of Object.getOwnPropertyNames(B.properties))if(XCQ(U,B.properties[I])===IQ.False)return IQ.False;return IQ.True})():IQ.False}function LEF(B,Q){return pW(Q)?aW(B,Q):SB.IsObject(Q)?Mb(B,Q):!SB.IsRecord(Q)?IQ.False:KI(rRB(B),rRB(Q))}function HEF(B,Q){let F=SB.IsRegExp(B)?YA():B,U=SB.IsRegExp(Q)?YA():Q;return KI(F,U)}function CCQ(B,Q){return SB.IsLiteral(B)&&wb.IsString(B.const)?IQ.True:SB.IsString(B)?IQ.True:IQ.False}function JEF(B,Q){return pW(Q)?aW(B,Q):SB.IsObject(Q)?Mb(B,Q):SB.IsRecord(Q)?$N(B,Q):SB.IsString(Q)?IQ.True:IQ.False}function xEF(B,Q){return pW(Q)?aW(B,Q):SB.IsObject(Q)?Mb(B,Q):SB.IsRecord(Q)?$N(B,Q):SB.IsSymbol(Q)?IQ.True:IQ.False}function EEF(B,Q){return SB.IsTemplateLiteral(B)?KI(Pz(B),Q):SB.IsTemplateLiteral(Q)?KI(B,Pz(Q)):kT("Invalid fallthrough for TemplateLiteral")}function DEF(B,Q){return SB.IsArray(Q)&&B.items!==void 0&&B.items.every((F)=>KI(F,Q.items)===IQ.True)}function zEF(B,Q){return SB.IsNever(B)?IQ.True:SB.IsUnknown(B)?IQ.False:SB.IsAny(B)?IQ.Union:IQ.False}function wEF(B,Q){return pW(Q)?aW(B,Q):SB.IsObject(Q)&&Xp(Q)?IQ.True:SB.IsArray(Q)&&DEF(B,Q)?IQ.True:!SB.IsTuple(Q)?IQ.False:wb.IsUndefined(B.items)&&!wb.IsUndefined(Q.items)||!wb.IsUndefined(B.items)&&wb.IsUndefined(Q.items)?IQ.False:wb.IsUndefined(B.items)&&!wb.IsUndefined(Q.items)?IQ.True:B.items.every((F,U)=>KI(F,Q.items[U])===IQ.True)?IQ.True:IQ.False}function SEF(B,Q){return pW(Q)?aW(B,Q):SB.IsObject(Q)?Mb(B,Q):SB.IsRecord(Q)?$N(B,Q):SB.IsUint8Array(Q)?IQ.True:IQ.False}function yEF(B,Q){return pW(Q)?aW(B,Q):SB.IsObject(Q)?Mb(B,Q):SB.IsRecord(Q)?$N(B,Q):SB.IsVoid(Q)?mEF(B,Q):SB.IsUndefined(Q)?IQ.True:IQ.False}function tRB(B,Q){return Q.anyOf.some((F)=>KI(B,F)===IQ.True)?IQ.True:IQ.False}function MEF(B,Q){return B.anyOf.every((F)=>KI(F,Q)===IQ.True)?IQ.True:IQ.False}function RCQ(B,Q){return IQ.True}function TEF(B,Q){return SB.IsNever(Q)?VCQ(B,Q):SB.IsIntersect(Q)?bp(B,Q):SB.IsUnion(Q)?tRB(B,Q):SB.IsAny(Q)?sRB(B,Q):SB.IsString(Q)?CCQ(B,Q):SB.IsNumber(Q)?bCQ(B,Q):SB.IsInteger(Q)?gCQ(B,Q):SB.IsBoolean(Q)?WCQ(B,Q):SB.IsArray(Q)?p9F(B,Q):SB.IsTuple(Q)?zEF(B,Q):SB.IsObject(Q)?Mb(B,Q):SB.IsUnknown(Q)?IQ.True:IQ.False}function mEF(B,Q){return SB.IsUndefined(B)?IQ.True:SB.IsUndefined(B)?IQ.True:IQ.False}function OEF(B,Q){return SB.IsIntersect(Q)?bp(B,Q):SB.IsUnion(Q)?tRB(B,Q):SB.IsUnknown(Q)?RCQ(B,Q):SB.IsAny(Q)?sRB(B,Q):SB.IsObject(Q)?Mb(B,Q):SB.IsVoid(Q)?IQ.True:IQ.False}function KI(B,Q){return SB.IsTemplateLiteral(B)||SB.IsTemplateLiteral(Q)?EEF(B,Q):SB.IsRegExp(B)||SB.IsRegExp(Q)?HEF(B,Q):SB.IsNot(B)||SB.IsNot(Q)?ZEF(B,Q):SB.IsAny(B)?i9F(B,Q):SB.IsArray(B)?a9F(B,Q):SB.IsBigInt(B)?r9F(B,Q):SB.IsBoolean(B)?s9F(B,Q):SB.IsAsyncIterator(B)?o9F(B,Q):SB.IsConstructor(B)?t9F(B,Q):SB.IsDate(B)?e9F(B,Q):SB.IsFunction(B)?BEF(B,Q):SB.IsInteger(B)?QEF(B,Q):SB.IsIntersect(B)?FEF(B,Q):SB.IsIterator(B)?UEF(B,Q):SB.IsLiteral(B)?IEF(B,Q):SB.IsNever(B)?GEF(B,Q):SB.IsNull(B)?WEF(B,Q):SB.IsNumber(B)?gEF(B,Q):SB.IsObject(B)?AEF(B,Q):SB.IsRecord(B)?LEF(B,Q):SB.IsString(B)?JEF(B,Q):SB.IsSymbol(B)?xEF(B,Q):SB.IsTuple(B)?wEF(B,Q):SB.IsPromise(B)?YEF(B,Q):SB.IsUint8Array(B)?SEF(B,Q):SB.IsUndefined(B)?yEF(B,Q):SB.IsUnion(B)?MEF(B,Q):SB.IsUnknown(B)?TEF(B,Q):SB.IsVoid(B)?OEF(B,Q):kT(`Unknown left type operand '${B[zQ]}'`)}function UE(B,Q){return KI(B,Q)}function cEF(B,Q,F,U,I){let G={};for(let Z of globalThis.Object.getOwnPropertyNames(B))G[Z]=dT(B[Z],Q,F,U,nG(I));return G}function KEF(B,Q,F,U,I){return cEF(B.properties,Q,F,U,I)}function NCQ(B,Q,F,U,I){let G=KEF(B,Q,F,U,I);return f0(G)}function hEF(B,Q,F,U){let I=UE(B,Q);return I===IQ.Union?AI([F,U]):I===IQ.True?F:U}function dT(B,Q,F,U,I){return iG(B)?NCQ(B,Q,F,U,I):lR(B)?UQ(ACQ(B,Q,F,U,I)):UQ(hEF(B,Q,F,U),I)}function kEF(B,Q,F,U,I){return{[B]:dT(GI(B),Q,F,U,nG(I))}}function dEF(B,Q,F,U,I){return B.reduce((G,Z)=>{return{...G,...kEF(Z,Q,F,U,I)}},{})}function $EF(B,Q,F,U,I){return dEF(B.keys,Q,F,U,I)}function ACQ(B,Q,F,U,I){let G=$EF(B,Q,F,U,I);return f0(G)}function YCQ(B,Q){return $T(Pz(B),Q)}function _EF(B,Q){let F=B.filter((U)=>UE(U,Q)===IQ.False);return F.length===1?F[0]:AI(F)}function $T(B,Q,F={}){if(uR(B))return UQ(YCQ(B,Q),F);if(iG(B))return UQ(LCQ(B,Q),F);return UQ(y0(B)?_EF(B.anyOf,Q):UE(B,Q)!==IQ.False?M0():B,F)}function vEF(B,Q){let F={};for(let U of globalThis.Object.getOwnPropertyNames(B))F[U]=$T(B[U],Q);return F}function PEF(B,Q){return vEF(B.properties,Q)}function LCQ(B,Q){let F=PEF(B,Q);return f0(F)}function HCQ(B,Q){return _T(Pz(B),Q)}function fEF(B,Q){let F=B.filter((U)=>UE(U,Q)!==IQ.False);return F.length===1?F[0]:AI(F)}function _T(B,Q,F){if(uR(B))return UQ(HCQ(B,Q),F);if(iG(B))return UQ(JCQ(B,Q),F);return UQ(y0(B)?fEF(B.anyOf,Q):UE(B,Q)!==IQ.False?B:M0(),F)}function lEF(B,Q){let F={};for(let U of globalThis.Object.getOwnPropertyNames(B))F[U]=_T(B[U],Q);return F}function uEF(B,Q){return lEF(B.properties,Q)}function JCQ(B,Q){let F=uEF(B,Q);return f0(F)}function xCQ(B,Q){return CA(B)?UQ(B.returns,Q):M0(Q)}function Cp(B){return MC(Sb(B))}function fz(B,Q,F){return UQ({[zQ]:"Record",type:"object",patternProperties:{[B]:Q}},F)}function eRB(B,Q,F){let U={};for(let I of B)U[I]=Q;return cI(U,{...F,[cN]:"Record"})}function qEF(B,Q,F){return hXQ(B)?eRB(yC(B),Q,F):fz(B.pattern,Q,F)}function jEF(B,Q,F){return eRB(yC(AI(B)),Q,F)}function nEF(B,Q,F){return eRB([B.toString()],Q,F)}function iEF(B,Q,F){return fz(B.source,Q,F)}function pEF(B,Q,F){let U=xW(B.pattern)?e9:B.pattern;return fz(U,Q,F)}function aEF(B,Q,F){return fz(e9,Q,F)}function oEF(B,Q,F){return fz(wXQ,Q,F)}function rEF(B,Q,F){return cI({true:Q,false:Q},F)}function sEF(B,Q,F){return fz(t9,Q,F)}function tEF(B,Q,F){return fz(t9,Q,F)}function Rp(B,Q,F={}){return y0(B)?jEF(B.anyOf,Q,F):uR(B)?qEF(B,Q,F):fR(B)?nEF(B.const,Q,F):NJ(B)?rEF(B,Q,F):NA(B)?sEF(B,Q,F):AA(B)?tEF(B,Q,F):vRB(B)?iEF(B,Q,F):AJ(B)?pEF(B,Q,F):$RB(B)?aEF(B,Q,F):r9(B)?oEF(B,Q,F):M0(F)}function Np(B){return globalThis.Object.getOwnPropertyNames(B.patternProperties)[0]}function ECQ(B){let Q=Np(B);return Q===e9?YA():Q===t9?KN():YA({pattern:Q})}function Ap(B){return B.patternProperties[Np(B)]}function eEF(B,Q){return Q.parameters=Vk(B,Q.parameters),Q.returns=LA(B,Q.returns),Q}function BDF(B,Q){return Q.parameters=Vk(B,Q.parameters),Q.returns=LA(B,Q.returns),Q}function QDF(B,Q){return Q.allOf=Vk(B,Q.allOf),Q}function FDF(B,Q){return Q.anyOf=Vk(B,Q.anyOf),Q}function UDF(B,Q){if(xW(Q.items))return Q;return Q.items=Vk(B,Q.items),Q}function IDF(B,Q){return Q.items=LA(B,Q.items),Q}function GDF(B,Q){return Q.items=LA(B,Q.items),Q}function ZDF(B,Q){return Q.items=LA(B,Q.items),Q}function WDF(B,Q){return Q.item=LA(B,Q.item),Q}function gDF(B,Q){let F=CDF(B,Q.properties);return{...Q,...cI(F)}}function VDF(B,Q){let F=LA(B,ECQ(Q)),U=LA(B,Ap(Q)),I=Rp(F,U);return{...Q,...I}}function bDF(B,Q){return Q.index in B?B[Q.index]:FE()}function XDF(B,Q){let F=wT(Q),U=SC(Q),I=LA(B,Q);return F&&U?Cp(I):F&&!U?MC(I):!F&&U?Sb(I):I}function CDF(B,Q){return globalThis.Object.getOwnPropertyNames(Q).reduce((F,U)=>{return{...F,[U]:XDF(B,Q[U])}},{})}function Vk(B,Q){return Q.map((F)=>LA(B,F))}function LA(B,Q){return CA(Q)?eEF(B,Q):RA(Q)?BDF(B,Q):wZ(Q)?QDF(B,Q):y0(Q)?FDF(B,Q):qR(Q)?UDF(B,Q):bA(Q)?IDF(B,Q):hz(Q)?GDF(B,Q):dz(Q)?ZDF(B,Q):$z(Q)?WDF(B,Q):EW(Q)?gDF(B,Q):_z(Q)?VDF(B,Q):_RB(Q)?bDF(B,Q):Q}function DCQ(B,Q){return LA(Q,zT(B))}function zCQ(B){return UQ({[zQ]:"Integer",type:"integer"},B)}function RDF(B,Q,F){return{[B]:HA(GI(B),Q,nG(F))}}function NDF(B,Q,F){return B.reduce((I,G)=>{return{...I,...RDF(G,Q,F)}},{})}function ADF(B,Q,F){return NDF(B.keys,Q,F)}function wCQ(B,Q,F){let U=ADF(B,Q,F);return f0(U)}function YDF(B){let[Q,F]=[B.slice(0,1),B.slice(1)];return[Q.toLowerCase(),F].join("")}function LDF(B){let[Q,F]=[B.slice(0,1),B.slice(1)];return[Q.toUpperCase(),F].join("")}function HDF(B){return B.toUpperCase()}function JDF(B){return B.toLowerCase()}function xDF(B,Q,F){let U=mT(B.pattern);if(!vz(U))return{...B,pattern:SCQ(B.pattern,Q)};let Z=[...Gk(U)].map((V)=>GI(V)),W=yCQ(Z,Q),g=AI(W);return Qp([g],F)}function SCQ(B,Q){return typeof B==="string"?Q==="Uncapitalize"?YDF(B):Q==="Capitalize"?LDF(B):Q==="Uppercase"?HDF(B):Q==="Lowercase"?JDF(B):B:B.toString()}function yCQ(B,Q){return B.map((F)=>HA(F,Q))}function HA(B,Q,F={}){return lR(B)?wCQ(B,Q,F):uR(B)?xDF(B,Q,F):y0(B)?AI(yCQ(B.anyOf,Q),F):fR(B)?GI(SCQ(B.const,Q),F):UQ(B,F)}function MCQ(B,Q={}){return HA(B,"Capitalize",Q)}function TCQ(B,Q={}){return HA(B,"Lowercase",Q)}function mCQ(B,Q={}){return HA(B,"Uncapitalize",Q)}function OCQ(B,Q={}){return HA(B,"Uppercase",Q)}function EDF(B,Q,F){let U={};for(let I of globalThis.Object.getOwnPropertyNames(B))U[I]=IE(B[I],Q,nG(F));return U}function DDF(B,Q,F){return EDF(B.properties,Q,F)}function cCQ(B,Q,F){let U=DDF(B,Q,F);return f0(U)}function zDF(B,Q){return B.map((F)=>B2B(F,Q))}function wDF(B,Q){return B.map((F)=>B2B(F,Q))}function SDF(B,Q){let{[Q]:F,...U}=B;return U}function yDF(B,Q){return Q.reduce((F,U)=>SDF(F,U),B)}function MDF(B,Q,F){let U=SZ(B,[iW,"$id","required","properties"]),I=yDF(F,Q);return cI(I,U)}function TDF(B){let Q=B.reduce((F,U)=>ri(U)?[...F,GI(U)]:F,[]);return AI(Q)}function B2B(B,Q){return wZ(B)?yb(zDF(B.allOf,Q)):y0(B)?AI(wDF(B.anyOf,Q)):EW(B)?MDF(B,Q,B.properties):cI({})}function IE(B,Q,F){let U=JW(Q)?TDF(Q):Q,I=jR(Q)?yC(Q):Q,G=UW(B),Z=UW(Q);return iG(B)?cCQ(B,I,F):lR(Q)?KCQ(B,Q,F):G&&Z?mG("Omit",[B,U],F):!G&&Z?mG("Omit",[B,U],F):G&&!Z?mG("Omit",[B,U],F):UQ({...B2B(B,I),...F})}function mDF(B,Q,F){return{[Q]:IE(B,[Q],nG(F))}}function ODF(B,Q,F){return Q.reduce((U,I)=>{return{...U,...mDF(B,I,F)}},{})}function cDF(B,Q,F){return ODF(B,Q.keys,F)}function KCQ(B,Q,F){let U=cDF(B,Q,F);return f0(U)}function KDF(B,Q,F){let U={};for(let I of globalThis.Object.getOwnPropertyNames(B))U[I]=GE(B[I],Q,nG(F));return U}function hDF(B,Q,F){return KDF(B.properties,Q,F)}function hCQ(B,Q,F){let U=hDF(B,Q,F);return f0(U)}function kDF(B,Q){return B.map((F)=>Q2B(F,Q))}function dDF(B,Q){return B.map((F)=>Q2B(F,Q))}function $DF(B,Q){let F={};for(let U of Q)if(U in B)F[U]=B[U];return F}function _DF(B,Q,F){let U=SZ(B,[iW,"$id","required","properties"]),I=$DF(F,Q);return cI(I,U)}function vDF(B){let Q=B.reduce((F,U)=>ri(U)?[...F,GI(U)]:F,[]);return AI(Q)}function Q2B(B,Q){return wZ(B)?yb(kDF(B.allOf,Q)):y0(B)?AI(dDF(B.anyOf,Q)):EW(B)?_DF(B,Q,B.properties):cI({})}function GE(B,Q,F){let U=JW(Q)?vDF(Q):Q,I=jR(Q)?yC(Q):Q,G=UW(B),Z=UW(Q);return iG(B)?hCQ(B,I,F):lR(Q)?kCQ(B,Q,F):G&&Z?mG("Pick",[B,U],F):!G&&Z?mG("Pick",[B,U],F):G&&!Z?mG("Pick",[B,U],F):UQ({...Q2B(B,I),...F})}function PDF(B,Q,F){return{[Q]:GE(B,[Q],nG(F))}}function fDF(B,Q,F){return Q.reduce((U,I)=>{return{...U,...PDF(B,I,F)}},{})}function lDF(B,Q,F){return fDF(B,Q.keys,F)}function kCQ(B,Q,F){let U=lDF(B,Q,F);return f0(U)}function uDF(B,Q){return mG("Partial",[mG(B,Q)])}function qDF(B){return mG("Partial",[QL(B)])}function jDF(B){let Q={};for(let F of globalThis.Object.getOwnPropertyNames(B))Q[F]=Sb(B[F]);return Q}function nDF(B,Q){let F=SZ(B,[iW,"$id","required","properties"]),U=jDF(Q);return cI(U,F)}function dCQ(B){return B.map((Q)=>$CQ(Q))}function $CQ(B){return XA(B)?uDF(B.target,B.parameters):UW(B)?qDF(B.$ref):wZ(B)?yb(dCQ(B.allOf)):y0(B)?AI(dCQ(B.anyOf)):EW(B)?nDF(B,B.properties):kz(B)?B:NJ(B)?B:NA(B)?B:fR(B)?B:th(B)?B:AA(B)?B:AJ(B)?B:eh(B)?B:Bk(B)?B:cI({})}function vT(B,Q){if(iG(B))return _CQ(B,Q);else return UQ({...$CQ(B),...Q})}function iDF(B,Q){let F={};for(let U of globalThis.Object.getOwnPropertyNames(B))F[U]=vT(B[U],nG(Q));return F}function pDF(B,Q){return iDF(B.properties,Q)}function _CQ(B,Q){let F=pDF(B,Q);return f0(F)}function aDF(B,Q){return mG("Required",[mG(B,Q)])}function oDF(B){return mG("Required",[QL(B)])}function rDF(B){let Q={};for(let F of globalThis.Object.getOwnPropertyNames(B))Q[F]=SZ(B[F],[hV]);return Q}function sDF(B,Q){let F=SZ(B,[iW,"$id","required","properties"]),U=rDF(Q);return cI(U,F)}function vCQ(B){return B.map((Q)=>PCQ(Q))}function PCQ(B){return XA(B)?aDF(B.target,B.parameters):UW(B)?oDF(B.$ref):wZ(B)?yb(vCQ(B.allOf)):y0(B)?AI(vCQ(B.anyOf)):EW(B)?sDF(B,B.properties):kz(B)?B:NJ(B)?B:NA(B)?B:fR(B)?B:th(B)?B:AA(B)?B:AJ(B)?B:eh(B)?B:Bk(B)?B:cI({})}function PT(B,Q){if(iG(B))return fCQ(B,Q);else return UQ({...PCQ(B),...Q})}function tDF(B,Q){let F={};for(let U of globalThis.Object.getOwnPropertyNames(B))F[U]=PT(B[U],Q);return F}function eDF(B,Q){return tDF(B.properties,Q)}function fCQ(B,Q){let F=eDF(B,Q);return f0(F)}function B3F(B,Q){return Q.map((F)=>{return UW(F)?F2B(B,F.$ref):nR(B,F)})}function F2B(B,Q){return Q in B?UW(B[Q])?F2B(B,B[Q].$ref):nR(B,B[Q]):M0()}function Q3F(B){return KT(B[0])}function F3F(B){return QE(B[0],B[1])}function U3F(B){return hT(B[0])}function I3F(B){return vT(B[0])}function G3F(B){return IE(B[0],B[1])}function Z3F(B){return GE(B[0],B[1])}function W3F(B){return PT(B[0])}function g3F(B,Q,F){let U=B3F(B,F);return Q==="Awaited"?Q3F(U):Q==="Index"?F3F(U):Q==="KeyOf"?U3F(U):Q==="Partial"?I3F(U):Q==="Omit"?G3F(U):Q==="Pick"?Z3F(U):Q==="Required"?W3F(U):M0()}function V3F(B,Q){return ST(nR(B,Q))}function b3F(B,Q){return yT(nR(B,Q))}function X3F(B,Q,F){return MT(bk(B,Q),nR(B,F))}function C3F(B,Q,F){return eY(bk(B,Q),nR(B,F))}function R3F(B,Q){return yb(bk(B,Q))}function N3F(B,Q){return cT(nR(B,Q))}function A3F(B,Q){return cI(globalThis.Object.keys(Q).reduce((F,U)=>{return{...F,[U]:nR(B,Q[U])}},{}))}function Y3F(B,Q){let[F,U]=[nR(B,Ap(Q)),Np(Q)],I=zT(Q);return I.patternProperties[U]=F,I}function L3F(B,Q){return UW(Q)?{...F2B(B,Q.$ref),[iW]:Q[iW]}:Q}function H3F(B,Q){return hN(bk(B,Q))}function J3F(B,Q){return AI(bk(B,Q))}function bk(B,Q){return Q.map((F)=>nR(B,F))}function nR(B,Q){return SC(Q)?UQ(nR(B,SZ(Q,[hV])),Q):wT(Q)?UQ(nR(B,SZ(Q,[VA])),Q):s9(Q)?UQ(L3F(B,Q),Q):bA(Q)?UQ(V3F(B,Q.items),Q):hz(Q)?UQ(b3F(B,Q.items),Q):XA(Q)?UQ(g3F(B,Q.target,Q.parameters)):CA(Q)?UQ(X3F(B,Q.parameters,Q.returns),Q):RA(Q)?UQ(C3F(B,Q.parameters,Q.returns),Q):wZ(Q)?UQ(R3F(B,Q.allOf),Q):dz(Q)?UQ(N3F(B,Q.items),Q):EW(Q)?UQ(A3F(B,Q.properties),Q):_z(Q)?UQ(Y3F(B,Q)):qR(Q)?UQ(H3F(B,Q.items||[]),Q):y0(Q)?UQ(J3F(B,Q.anyOf),Q):Q}function x3F(B,Q){return Q in B?nR(B,B[Q]):M0()}function lCQ(B){return globalThis.Object.getOwnPropertyNames(B).reduce((Q,F)=>{return{...Q,[F]:x3F(B,F)}},{})}class uCQ{constructor(B){let Q=lCQ(B),F=this.WithIdentifiers(Q);this.$defs=F}Import(B,Q){let F={...this.$defs,[B]:UQ(this.$defs[B],Q)};return UQ({[zQ]:"Import",$defs:F,$ref:B})}WithIdentifiers(B){return globalThis.Object.getOwnPropertyNames(B).reduce((Q,F)=>{return{...Q,[F]:{...B[F],$id:F}}},{})}}function qCQ(B){return new uCQ(B)}function jCQ(B,Q){return UQ({[zQ]:"Not",not:B},Q)}function nCQ(B,Q){return RA(B)?hN(B.parameters,Q):M0()}var E3F=0;function iCQ(B,Q={}){if(xW(Q.$id))Q.$id=`T${E3F++}`;let F=zT(B({[zQ]:"This",$ref:`${Q.$id}`}));return F.$id=Q.$id,UQ({[cN]:"Recursive",...F},Q)}function pCQ(B,Q){let F=IG(B)?new globalThis.RegExp(B):B;return UQ({[zQ]:"RegExp",type:"RegExp",source:F.source,flags:F.flags},Q)}function D3F(B){return wZ(B)?B.allOf:y0(B)?B.anyOf:qR(B)?B.items??[]:[]}function aCQ(B){return D3F(B)}function oCQ(B,Q){return RA(B)?UQ(B.returns,Q):M0(Q)}class rCQ{constructor(B){this.schema=B}Decode(B){return new sCQ(this.schema,B)}}class sCQ{constructor(B,Q){this.schema=B,this.decode=Q}EncodeTransform(B,Q){let I={Encode:(G)=>Q[iW].Encode(B(G)),Decode:(G)=>this.decode(Q[iW].Decode(G))};return{...Q,[iW]:I}}EncodeSchema(B,Q){let F={Decode:this.decode,Encode:B};return{...Q,[iW]:F}}Encode(B){return s9(this.schema)?this.EncodeTransform(B,this.schema):this.EncodeSchema(B,this.schema)}}function tCQ(B){return new rCQ(B)}function eCQ(B={}){return UQ({[zQ]:B[zQ]??"Unsafe"},B)}function BRQ(B){return UQ({[zQ]:"Void",type:"void"},B)}var U2B={};WU(U2B,{Void:()=>BRQ,Uppercase:()=>OCQ,Unsafe:()=>eCQ,Unknown:()=>FE,Union:()=>AI,Undefined:()=>Wp,Uncapitalize:()=>mCQ,Uint8Array:()=>gp,Tuple:()=>hN,Transform:()=>tCQ,TemplateLiteral:()=>Qp,Symbol:()=>Zp,String:()=>YA,ReturnType:()=>oCQ,Rest:()=>aCQ,Required:()=>PT,RegExp:()=>pCQ,Ref:()=>QL,Recursive:()=>iCQ,Record:()=>Rp,ReadonlyOptional:()=>Cp,Readonly:()=>MC,Promise:()=>Up,Pick:()=>GE,Partial:()=>vT,Parameters:()=>nCQ,Optional:()=>Sb,Omit:()=>IE,Object:()=>cI,Number:()=>KN,Null:()=>Gp,Not:()=>jCQ,Never:()=>M0,Module:()=>qCQ,Mapped:()=>iXQ,Lowercase:()=>TCQ,Literal:()=>GI,KeyOf:()=>hT,Iterator:()=>cT,Intersect:()=>yb,Integer:()=>zCQ,Instantiate:()=>DCQ,InstanceType:()=>xCQ,Index:()=>QE,Function:()=>eY,Extract:()=>_T,Extends:()=>dT,Exclude:()=>$T,Enum:()=>QCQ,Date:()=>Ip,ConstructorParameters:()=>BCQ,Constructor:()=>MT,Const:()=>eXQ,Composite:()=>tXQ,Capitalize:()=>MCQ,Boolean:()=>Bp,BigInt:()=>OT,Awaited:()=>KT,AsyncIterator:()=>yT,Array:()=>ST,Argument:()=>mXQ,Any:()=>BE});var DU=U2B;import*as Rm from"fs";import*as Xr from"path";var{S3Client:z3F}=globalThis.Bun;import*as Xk from"crypto";import*as yZ from"fs";import*as kV from"path";class I2B{cache=new Map;maxCapacity;iterator=null;sampleSize;constructor(B=50000,Q=50){this.maxCapacity=Math.max(0,B),this.sampleSize=Math.max(1,Q)}get(B){this.evictSample();let Q=this.cache.get(B);if(!Q)return;if(this.now()>Q.expiresAt){this.cache.delete(B);return}return this.cache.delete(B),this.cache.set(B,Q),Q.value}set(B,Q,F){if(this.maxCapacity<=0||F<=0||isNaN(F)){this.cache.delete(B);return}if(this.cache.has(B))this.cache.delete(B);else if(this.cache.size>=this.maxCapacity){let U=this.cache.keys().next().value;if(U!==void 0)this.cache.delete(U)}this.cache.set(B,{value:Q,expiresAt:this.now()+F})}delete(B){return this.cache.delete(B)}evictSample(){if(this.cache.size===0)return;if(!this.iterator)this.iterator=this.cache.keys();let B=this.now();for(let Q=0;Q<this.sampleSize;Q++){let F=this.iterator.next();if(F.done){this.iterator=this.cache.keys();break}let U=F.value,I=this.cache.get(U);if(I&&B>I.expiresAt)this.cache.delete(U)}}now(){return performance.now()}get size(){return this.cache.size}clear(){this.cache.clear(),this.iterator=null}}function w3F(B,Q){let F=process.env.BETTER_AUTH_SECRET||"shumai-local-storage-secret",U=Xk.createHmac("sha256",F);U.update(`${B}/${Q}`);let I=U.digest("hex");return`/api/upload/local?bucket=${encodeURIComponent(B)}&key=${encodeURIComponent(Q)}&Signature=${I}`}class FRQ{client;bucket;presignCache=new I2B(50000);constructor(B,Q,F,U,I,G="auto"){let Z=B;if(!Z.startsWith("http://")&&!Z.startsWith("https://"))Z=`${I?"https":"http"}://${B}`;this.client=new z3F({region:G,endpoint:Z,accessKeyId:Q,secretAccessKey:F,bucket:U}),this.bucket=U}async getObjectSize(B,Q){return await this.client.size(Q,{bucket:B})}async putObject(B,Q,F,U,I){await this.client.write(Q,F,{bucket:B,type:I})}async getObject(B,Q){let F=this.client.file(Q,{bucket:B}),U=await F.arrayBuffer();return{buffer:Buffer.from(U),contentType:F.type||"application/octet-stream"}}async copyObject(B,Q,F,U){let I=this.client.file(Q,{bucket:B});await this.client.write(U,I,{bucket:F})}async downloadToFile(B,Q,F){let U=this.client.file(Q,{bucket:B});await Bun.write(F,U)}async deleteObject(B,Q){try{if(!await this.client.exists(Q,{bucket:B}))return 0;return await this.client.delete(Q,{bucket:B}),1}catch{return 0}}async deletePrefix(B,Q){let F=await this.listObjects(B,Q);if(F.length>0)await Promise.all(F.map((U)=>this.deleteObject(B,U)));return F.length}async headObject(B,Q){let F=this.client.file(Q,{bucket:B});if(!await F.exists())throw Error("NoSuchKey: The specified key does not exist.");return{key:Q,size:await F.size,lastModified:new Date,contentType:F.type||"application/octet-stream",eTag:""}}async listObjects(B,Q){let F=[],U=!0,I=void 0;while(U){let G=await this.client.list({prefix:Q,continuationToken:I});if(G.contents){for(let Z of G.contents)if(Z.key)F.push(Z.key)}U=G.isTruncated||!1,I=G.nextContinuationToken}return F}async uploadFile(B,Q){let F=NG()+kV.extname(B);return await this.uploadFileToKey(B,F,Q),F}async uploadFileToKey(B,Q,F){await this.client.write(Q,Bun.file(B),{bucket:this.bucket,type:F})}async presign(B,Q,F,U){let I=parseInt(process.env.PRESIGNED_URL_EXPIRES_IN||"5",10),G=I*3600,W=Math.round(I*60*2/3)*60*1000,g=`${B}:${Q}:${U||""}`;if(F==="GET"){let X=this.presignCache.get(g);if(X)return X}let V={bucket:B,expiresIn:G,method:F};if(U)V.contentDisposition=`attachment; filename="${U}"`;let b=this.client.presign(Q,V);if(F==="GET")this.presignCache.set(g,b,W);return b}}class URQ{basePath;endpoint;constructor(B,Q="data"){if(this.endpoint=B.replace(/\/$/,""),this.basePath=kV.resolve(Q),!yZ.existsSync(this.basePath))yZ.mkdirSync(this.basePath,{recursive:!0})}getFilePath(B,Q){let F=kV.join(this.basePath,B,Q);if(!F.startsWith(this.basePath))throw Error("Invalid path: potential path traversal detected");return F}async getObjectSize(B,Q){let F=this.getFilePath(B,Q);try{return(await yZ.promises.stat(F)).size}catch(U){if(U instanceof Error&&U.code==="ENOENT")throw Error("NoSuchKey: The specified key does not exist.",{cause:U});throw U}}async putObject(B,Q,F,U,I){let G=this.getFilePath(B,Q),Z=kV.dirname(G);if(!yZ.existsSync(Z))yZ.mkdirSync(Z,{recursive:!0});await yZ.promises.writeFile(G,F)}async getObject(B,Q){let F=this.getFilePath(B,Q);try{return{buffer:await yZ.promises.readFile(F),contentType:Bun.file(F).type||"application/octet-stream"}}catch(U){if(U instanceof Error&&U.code==="ENOENT")throw Error("NoSuchKey: The specified key does not exist.",{cause:U});throw U}}async copyObject(B,Q,F,U){let I=this.getFilePath(B,Q),G=this.getFilePath(F,U),Z=kV.dirname(G);if(!yZ.existsSync(Z))yZ.mkdirSync(Z,{recursive:!0});await yZ.promises.copyFile(I,G)}async downloadToFile(B,Q,F){let U=this.getFilePath(B,Q);await yZ.promises.copyFile(U,F)}async deleteObject(B,Q){let F=this.getFilePath(B,Q);try{return await yZ.promises.unlink(F),1}catch(U){if(U instanceof Error&&U.code==="ENOENT")return 0;throw U}}async deletePrefix(B,Q){let F=await this.listObjects(B,Q);if(F.length===0)return 0;let U=this.getFilePath(B,Q);try{return await yZ.promises.rm(U,{recursive:!0,force:!0}),F.length}catch(I){if(I instanceof Error&&I.code==="ENOENT")return 0;throw I}}async headObject(B,Q){let F=this.getFilePath(B,Q);try{let U=await yZ.promises.stat(F),I=Xk.createHash("md5").update(F+U.mtimeMs).digest("hex");return{key:Q,size:U.size,lastModified:U.mtime,contentType:Bun.file(Q).type||"application/octet-stream",eTag:`"${I}"`}}catch(U){if(U instanceof Error&&U.code==="ENOENT")throw Error("NoSuchKey: The specified key does not exist.",{cause:U});throw U}}async listObjects(B,Q){let F=kV.join(this.basePath,B),U=[];if(!yZ.existsSync(F))return U;let I=async(G)=>{let Z=await yZ.promises.readdir(G);for(let W of Z){let g=kV.join(G,W);if((await yZ.promises.stat(g)).isDirectory())await I(g);else{let X=kV.relative(F,g).split(kV.sep).join("/");if(X.startsWith(Q))U.push(X)}}};return await I(F),U}async uploadFile(B,Q){let F=NG()+kV.extname(B);return await this.uploadFileToKey(B,F,Q),F}async uploadFileToKey(B,Q,F){let U=process.env.S3_BUCKET||"shumai",I=this.getFilePath(U,Q),G=kV.dirname(I);if(!yZ.existsSync(G))yZ.mkdirSync(G,{recursive:!0});await yZ.promises.copyFile(B,I)}async presign(B,Q,F,U){if(F!=="GET"&&F!=="PUT")throw Error(`Invalid method: ${F}`);if(F==="PUT")return`${this.endpoint}${w3F(B,Q)}`;let I=`${this.endpoint}/files/${B}/${Q}`;if(U)I+=`?filename=${encodeURIComponent(U)}`;return I}}var S3F=process.env.STORAGE_BACKEND||"local",y3F=process.env.SHUMAI_SERVER_PORT||"3000",QRQ=process.env.AWS_ENDPOINT_URL_S3||`http://localhost:${y3F}`,yF=S3F==="s3"?new FRQ(QRQ,process.env.S3_ACCESS_KEY_ID||"minioadmin",process.env.S3_SECRET_ACCESS_KEY||"minioadmin",process.env.S3_BUCKET||"shumai",process.env.S3_USE_SSL==="true",process.env.S3_REGION||"auto"):new URQ(QRQ);var _RQ=Pb(V2B(),1);import*as mC from"fs";import*as Rk from"path";function $RQ(B){if(!B)return B;let Q=B.match(/files\/[A-Z0-9]{26}/);return Q?Q[0]:B}class vRQ{prismaClient;constructor(B=VB){this.prismaClient=B}async getSkillContent(B){let Q=await this.prismaClient.skill.findUnique({where:{id:B}});if(!Q)throw Error(`Skill with ID ${B} not found.`);let F=Rk.join(process.cwd(),".pi","skills",Q.id),U=Rk.join(F,".hash"),I=!0;if(mC.existsSync(U)){if(mC.readFileSync(U,"utf8")===Q.hash)I=!1}if(I){if(mC.existsSync(F))mC.rmSync(F,{recursive:!0,force:!0});mC.mkdirSync(F,{recursive:!0});let Z=await this.prismaClient.asset.findUnique({where:{id:Q.assetId},include:{storageKey:!0}});if(!Z||!Z.storageKey?.key)throw Error("Skill asset not found or has no key");let{buffer:W}=await yF.getObject(process.env.S3_BUCKET||"shumai",Z.storageKey.key);new _RQ.default(W).extractAllTo(F,!0),mC.writeFileSync(U,Q.hash)}let G=Rk.join(F,"SKILL.md");if(!mC.existsSync(G))G=Rk.join(F,"skill.md");if(!mC.existsSync(G))throw Error(`Skill downloaded but SKILL.md not found in ${F}`);return mC.readFileSync(G,"utf8")}async getSkillEnvs(B){let Q=await this.prismaClient.skill.findUnique({where:{id:B}});if(!Q)return{};let F=Q.config,U={};if(F?.environmentVariables&&Array.isArray(F.environmentVariables))for(let I of F.environmentVariables){let G=I.default!==void 0&&I.default!==null&&I.default!==""?I.default:process.env[I.name];if(G!==void 0)U[I.name]=G}return U}async createAgent(B){let{teamId:Q,name:F,type:U,enabled:I,avatar:G,providerId:Z,modelId:W,thinkingLevel:g,systemPrompt:V,soul:b,skills:X}=B;if(U==="embedding"||U==="autofill"){if(await this.prismaClient.agent.findFirst({where:{type:U,teamId:Q}}))throw Error(`Agent of type ${U} already exists for this team`)}if(U==="chat"||U==="autofill"){if(!Z||!W)throw Error("providerId and modelId are required for chat/autofill agents");let C=await this.prismaClient.model.findUnique({where:{id:W}});if(!C)throw Error("model not found");if(C.providerId!==Z)throw Error("model does not belong to provider")}return this.prismaClient.$transaction(async(C)=>{if(!await C.team.findUnique({where:{id:Q}}))throw Error("team not found");let R={provider:Z||"",model:W||"",thinkingLevel:g,systemPrompt:V},A=await C.user.create({data:{name:F,email:`agent-${Date.now()}-${Math.random().toString(36).substring(7)}@shumai.ai`,type:"agent",image:$RQ(G)}}),Y=await C.agent.create({data:{id:A.id,teamId:Q,type:U,enabled:I??!0,providerId:Z||null,modelId:W||null,soul:b,config:R,skills:{create:X?.map((L)=>({skillId:L}))||[]}}});return await C.teamMember.create({data:{teamId:Q,userId:A.id,role:"reviewer"}}),C.agent.findUnique({where:{id:Y.id},include:{user:!0,skills:{include:{skill:!0}}}})})}async updateAgent(B){let{agentId:Q,name:F,type:U,enabled:I,avatar:G,providerId:Z,modelId:W,thinkingLevel:g,systemPrompt:V,soul:b,skills:X}=B,C=await this.prismaClient.agent.findUnique({where:{id:Q},include:{user:{include:{teamMembers:!0}}}});if(!C)throw Error("agent not found");if(U==="embedding"||U==="autofill"){if(await this.prismaClient.agent.findFirst({where:{type:U,id:{not:Q},teamId:C.teamId}}))throw Error(`Agent of type ${U} already exists for this team`)}if(U==="chat"||U==="autofill"){if(!Z||!W)throw Error("providerId and modelId are required for chat/autofill agents");let R=await this.prismaClient.model.findUnique({where:{id:W}});if(!R)throw Error("model not found");if(R.providerId!==Z)throw Error("model does not belong to provider")}let N={provider:Z||"",model:W||"",thinkingLevel:g,systemPrompt:V};return this.prismaClient.$transaction(async(R)=>{return await R.user.update({where:{id:Q},data:{name:F,image:$RQ(G)}}),await R.agentSkill.deleteMany({where:{agentId:Q}}),R.agent.update({where:{id:Q},data:{type:U,enabled:I??!0,providerId:Z||null,modelId:W||null,soul:b,config:N,skills:{create:X?.map((A)=>({skillId:A}))||[]}},include:{user:!0,skills:{include:{skill:!0}}}})})}async deleteAgent(B){let{agentId:Q}=B;if(!await this.prismaClient.agent.findUnique({where:{id:Q}}))throw Error("agent not found");await this.prismaClient.user.delete({where:{id:Q}})}async listAgents(B){return this.prismaClient.agent.findMany({where:{teamId:B.teamId},orderBy:{id:"desc"},include:{user:!0,provider:!0,modelRef:!0,skills:{include:{skill:!0}}}})}async getSessionEntries(B){return this.prismaClient.agentSessionEntry.findMany({where:{sessionId:B.sessionId},orderBy:{id:"asc"}})}}var uz=new vRQ;class qz{sessionId;constructor(B){this.sessionId=B}async getMetadata(){let B=await VB.agentSession.findUnique({where:{id:this.sessionId}});if(!B)throw Error(`Session ${this.sessionId} not found`);return{id:B.id,createdAt:B.createdAt.toISOString(),agentId:B.agentId,userId:B.userId||void 0,cwd:B.cwd,assetId:B.assetId||void 0,userCommentId:B.userCommentId||void 0}}async getLeafId(){return(await VB.agentSession.findUnique({where:{id:this.sessionId},select:{leafId:!0}}))?.leafId||null}async setLeafId(B){await VB.agentSession.update({where:{id:this.sessionId},data:{leafId:B}})}async createEntryId(){return NG()}async appendEntry(B){let Q=structuredClone(B);if(Q.type==="message"){let F=Q.message;if(F.role==="toolResult"){let U=F.details;if(Array.isArray(F.content)&&U?.sourceKeys){let I=U.sourceKeys,G=0;F.content.forEach((Z)=>{if(Z.type==="image"&&I[G])Z.data="__S3_DATA__",G++})}if(F.toolName==="read_skill"&&!F.isError){if(U?.skillId&&Array.isArray(F.content))F.content.forEach((I)=>{if(I.type==="text"&&I.text&&!I.text.startsWith("Skill with ID")&&!I.text.startsWith("Skill downloaded but")&&!I.text.startsWith("Error reading skill"))I.text="__SKILL_CONTENT__"})}}}await VB.agentSessionEntry.create({data:{id:B.id,sessionId:this.sessionId,entry:Q}}),await this.setLeafId(B.id)}async getEntry(B){let Q=await VB.agentSessionEntry.findUnique({where:{id:B}});if(!Q)return;let F=Q.entry;return await this.reinjectImageDataAsync(F),await this.reinjectSkillContentAsync(F),F}async findEntries(B){let F=(await VB.agentSessionEntry.findMany({where:{sessionId:this.sessionId,entry:{path:["type"],equals:B}},orderBy:{id:"asc"}})).map((U)=>U.entry);for(let U of F)await this.reinjectImageDataAsync(U),await this.reinjectSkillContentAsync(U);return F}async getLabel(B){return(await VB.agentSessionEntry.findFirst({where:{sessionId:this.sessionId,entry:{path:["id"],equals:B}}}))?.entry?.label}async getPathToRoot(B){if(!B)return[];let Q=await VB.agentSessionEntry.findMany({where:{sessionId:this.sessionId}}),F=new Map;for(let G of Q)F.set(G.id,G.entry);let U=[],I=B;while(I){let G=F.get(I);if(!G)break;U.unshift(G),I=G.parentId}for(let G of U)await this.reinjectImageDataAsync(G),await this.reinjectSkillContentAsync(G);return U}async getEntries(){let Q=(await VB.agentSessionEntry.findMany({where:{sessionId:this.sessionId},orderBy:{id:"asc"}})).map((F)=>F.entry);for(let F of Q)await this.reinjectImageDataAsync(F),await this.reinjectSkillContentAsync(F);return Q}async reinjectImageDataAsync(B){if(B.type==="message"){let Q=B.message;if(Q.role==="toolResult"){let F=Q.details;if(Array.isArray(Q.content)&&F?.sourceKeys){let U=F.sourceKeys,I=0;for(let G of Q.content)if(G.type==="image"&&G.data==="__S3_DATA__"&&U[I]){let Z=U[I];try{let{buffer:W}=await yF.getObject(process.env.S3_BUCKET||"shumai",Z);G.data=W.toString("base64")}catch(W){console.error(`Failed to re-inject image data for key ${Z}:`,W)}I++}}}}}async reinjectSkillContentAsync(B){if(B.type==="message"){let Q=B.message;if(Q.role==="toolResult"&&Q.toolName==="read_skill"){let F=Q.details;if(F?.skillId&&Array.isArray(Q.content)){for(let U of Q.content)if(U.type==="text"&&U.text==="__SKILL_CONTENT__")try{let I=await uz.getSkillContent(F.skillId);U.text=I}catch(I){console.error(`Failed to re-inject skill content for skill ${F.skillId}:`,I)}}}}}static async create(B){if(B.sessionId)return new qz(B.sessionId);else{let Q=await VB.agentSession.create({data:{agentId:B.agentId,userId:B.userId,cwd:B.cwd||process.cwd(),assetId:B.assetId||null,userCommentId:B.userCommentId||null}});return new qz(Q.id)}}}var e3F=DU.Object({});function PRQ(B,Q){return{name:"analyze_image",label:"Analyze Image",description:"Retrieves and views the image content. Call this tool if you need to analyze the image.",parameters:e3F,execute:async()=>{try{let F=await VB.asset.findUnique({where:{id:B},include:{storageKey:!0}});if(!F)return{content:[{type:"text",text:`Asset with ID ${B} not found.`}],details:{}};let U=F.storageKey?.key;if(F.media){let b=F.media;if(b.imageTranscodes&&b.imageTranscodes.length>0)U=b.imageTranscodes[0].key||U}if(!U)return{content:[{type:"text",text:"No media content found for this asset."}],details:{}};let I=null;if(Q){let b=await VB.assetComment.findUnique({where:{id:Q}});if(b?.annotation){let X=b.annotation;if(Array.isArray(X)&&X.length>0)I=X}}let G=U;if(I){let b=await VB.workflowTask.create({data:{assetId:B,projectId:F.projectId||"none",type:e0.transcode,status:$I.pending,payload:{projectId:F.projectId||"none",imageAnnotation:{annotations:I}}}}),C=(await oN.executeWait(b)).output;if(C?.key)G=C.key;else throw Error("Image annotation transcode workflow failed to output S3 key.")}let Z=process.env.S3_BUCKET||"shumai",{buffer:W,contentType:g}=await yF.getObject(Z,G);return{content:[{type:"image",data:W.toString("base64"),mimeType:g||"image/webp"}],details:{sourceKeys:[G]}}}catch(F){return{content:[{type:"text",text:`Error analyzing image: ${F instanceof Error?F.message:String(F)}`}],details:{}}}}}}var BzF=DU.Object({start:DU.Number({description:"Start time in seconds"}),end:DU.Number({description:"End time in seconds"}),count:DU.Number({description:"Number of screenshots to take"})});function fRQ(B,Q){return{name:"screenshot",label:"Take Video Screenshots",description:"Takes screenshots for a video at specified interval. It returns the images to the agent context.",parameters:BzF,execute:async(F,U)=>{try{let I=await VB.asset.findUnique({where:{id:B}});if(!I)return{content:[{type:"text",text:`Asset with ID ${B} not found.`}],details:{}};let G=null,Z=null;if(Q){let R=await VB.assetComment.findUnique({where:{id:Q}});if(R){if(G=R.second!==null?R.second:null,R.annotation){let A=R.annotation;if(Array.isArray(A)&&A.length>0)Z=A}}}let W=await VB.workflowTask.create({data:{assetId:B,projectId:I.projectId||"none",type:e0.transcode,status:$I.pending,payload:{projectId:I.projectId||"none",screenshot:{start:U.start,end:U.end,count:U.count,commentTimestamp:G,annotations:Z}}}}),b=(await oN.executeWait(W)).output?.screenshots;if(!b||b.length===0)return{content:[{type:"text",text:"No screenshots were generated."}],details:{}};let X=[],C=[],N=process.env.S3_BUCKET||"shumai";for(let R of b){let{buffer:A,contentType:Y}=await yF.getObject(N,R.key);X.push({type:"image",data:A.toString("base64"),mimeType:Y||"image/webp"}),C.push(R.key)}return{content:X,details:{sourceKeys:C}}}catch(I){return{content:[{type:"text",text:`Error taking screenshots: ${I instanceof Error?I.message:String(I)}`}],details:{}}}}}}async function WE(B){let Q=await VB.workflowTask.create({data:{type:e0.agent_tool_call,status:$I.pending,assetId:B.assetId,payload:{projectId:"none",agentToolCall:{toolName:B.toolName,args:B.args,userId:B.userId}}}}),F=await oN.executeWait(Q);if(F.status===$I.failed){let I=F.output?.error||"Workflow task failed";throw Error(I)}return F.output}import*as FL from"fs";import*as qT from"path";var b2B=[137,80,78,71,13,10,26,10];function Jp(B){if(lRQ(B,[255,216,255]))return B[3]===247?null:"image/jpeg";if(lRQ(B,b2B))return QzF(B)&&!FzF(B)?"image/png":null;if(jz(B,0,"GIF"))return"image/gif";if(jz(B,0,"RIFF")&&jz(B,8,"WEBP"))return"image/webp";if(jz(B,4,"ftyp"))return"video/mp4";return null}function QzF(B){return B.length>=16&&uRQ(B,b2B.length)===13&&jz(B,12,"IHDR")}function FzF(B){let Q=b2B.length;while(Q+8<=B.length){let F=uRQ(B,Q),U=Q+4;if(jz(B,U,"acTL"))return!0;if(jz(B,U,"IDAT"))return!1;let I=Q+8+F+4;if(I<=Q||I>B.length)return!1;Q=I}return!1}function uRQ(B,Q){return(B[Q]??0)*16777216+((B[Q+1]??0)<<16)+((B[Q+2]??0)<<8)+(B[Q+3]??0)}function lRQ(B,Q){if(B.length<Q.length)return!1;return Q.every((F,U)=>B[U]===F)}function jz(B,Q,F){if(B.length<Q+F.length)return!1;for(let U=0;U<F.length;U++)if(B[Q+U]!==F.charCodeAt(U))return!1;return!0}function UzF(B){try{let U=FL.openSync(B,"r");try{let I=Buffer.alloc(4100),G=FL.readSync(U,I,0,4100,0),Z=Jp(new Uint8Array(I.subarray(0,G)));if(Z)return Z}finally{FL.closeSync(U)}}catch{}let Q=qT.extname(B).toLowerCase();return{".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp",".svg":"image/svg+xml",".mp4":"video/mp4",".mov":"video/quicktime",".pdf":"application/pdf"}[Q]||"application/octet-stream"}var IzF=DU.Object({parent:DU.String({description:"The parent folder ID under which to create the file. This parameter is required."}),path:DU.String({description:"The absolute or relative local path to the file on disk. This parameter is required."})});function qRQ(B){return{name:"create_file",label:"Create File",description:"Create a new file in a specified parent folder from a local file path.",parameters:IzF,execute:async(Q,F)=>{try{let U=qT.resolve(process.cwd(),F.path);if(!FL.existsSync(U))throw Error(`Local file not found at path: ${F.path}`);let I=FL.statSync(U).size,G=UzF(U),Z=`files/${NG()}/raw`;await yF.uploadFileToKey(U,Z,G);let W=await WE({toolName:"create_file",args:{parent:F.parent,s3Key:Z,name:qT.basename(U),size:I,contentType:G},userId:B,assetId:F.parent});return{content:[{type:"text",text:JSON.stringify(W,null,2)}],details:W}}catch(U){return{content:[{type:"text",text:`Error creating file: ${U instanceof Error?U.message:String(U)}`}],details:{}}}}}}var GzF=DU.Object({parent:DU.String({description:"The parent folder ID under which to create the new folder. This parameter is required."}),name:DU.String({description:"The name of the new folder to create. This parameter is required."})});function jRQ(B){return{name:"create_folder",label:"Create Folder",description:"Create a new folder in a specified parent folder.",parameters:GzF,execute:async(Q,F)=>{try{let U=await WE({toolName:"create_folder",args:F,userId:B,assetId:F.parent});return{content:[{type:"text",text:JSON.stringify(U,null,2)}],details:U}}catch(U){return{content:[{type:"text",text:`Error creating folder: ${U instanceof Error?U.message:String(U)}`}],details:{}}}}}}import*as UL from"fs";import*as jT from"path";function ZzF(B){try{let U=UL.openSync(B,"r");try{let I=Buffer.alloc(4100),G=UL.readSync(U,I,0,4100,0),Z=Jp(new Uint8Array(I.subarray(0,G)));if(Z)return Z}finally{UL.closeSync(U)}}catch{}let Q=jT.extname(B).toLowerCase();return{".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp",".svg":"image/svg+xml",".mp4":"video/mp4",".mov":"video/quicktime",".pdf":"application/pdf"}[Q]||"application/octet-stream"}var WzF=DU.Object({parent:DU.String({description:"The parent file ID for which to create a new version. This parameter is required."}),path:DU.String({description:"The absolute or relative local path to the file on disk. This parameter is required."})});function nRQ(B){return{name:"create_version",label:"Create Version",description:"Create a new version of an existing file from a local file path.",parameters:WzF,execute:async(Q,F)=>{try{let U=jT.resolve(process.cwd(),F.path);if(!UL.existsSync(U))throw Error(`Local file not found at path: ${F.path}`);let I=UL.statSync(U).size,G=ZzF(U),Z=`files/${NG()}/raw`;await yF.uploadFileToKey(U,Z,G);let W=await WE({toolName:"create_version",args:{parent:F.parent,s3Key:Z,name:jT.basename(U),size:I,contentType:G},userId:B,assetId:F.parent});return{content:[{type:"text",text:JSON.stringify(W,null,2)}],details:W}}catch(U){return{content:[{type:"text",text:`Error creating file version: ${U instanceof Error?U.message:String(U)}`}],details:{}}}}}}var gzF=DU.Object({parent:DU.String({description:"The parent folder ID to list assets from. This parameter is required."}),page:DU.Optional(DU.Number({description:"The page number to retrieve, default is 1.",default:1})),pageSize:DU.Optional(DU.Number({description:"The number of assets per page, default is 20.",default:20})),type:DU.Optional(DU.String({description:"Filter assets by type: 'file', 'folder', or 'all'. Default is 'all'.",enum:["file","folder","all"],default:"all"}))});function iRQ(B){return{name:"list_assets",label:"List Assets",description:"List the assets (files and folders) inside a parent folder with pagination.",parameters:gzF,execute:async(Q,F)=>{try{let U=await WE({toolName:"list_assets",args:F,userId:B,assetId:F.parent});return{content:[{type:"text",text:JSON.stringify(U,null,2)}],details:U}}catch(U){return{content:[{type:"text",text:`Error listing assets: ${U instanceof Error?U.message:String(U)}`}],details:{}}}}}}var VzF=DU.Object({skillId:DU.String({description:"The ID of the skill to read"})}),pRQ=(B)=>({name:"read_skill",label:"Read Agent Skill",description:"Downloads and reads an agent skill to understand how to use it.",parameters:VzF,execute:async(Q,F)=>{try{if(!await VB.skill.findUnique({where:{id:F.skillId}}))return{content:[{type:"text",text:`Skill with ID ${F.skillId} not found.`}],details:{skillId:F.skillId}};let I=await uz.getSkillEnvs(F.skillId);return B(I),{content:[{type:"text",text:await uz.getSkillContent(F.skillId)}],details:{skillId:F.skillId}}}catch(U){return{content:[{type:"text",text:`Error reading skill ${F.skillId}: ${U instanceof Error?U.message:String(U)}`}],details:{skillId:F.skillId}}}}});import{spawn as bzF}from"child_process";var XzF=DU.Object({command:DU.String({description:"The bash command to execute."}),timeout:DU.Optional(DU.Number({description:"Maximum execution time in seconds."}))}),aRQ=(B,Q={},F)=>{return{name:"bash",description:"Execute a bash command in a sandboxed environment.",label:"Executing bash command",parameters:XzF,execute:async(U,{command:I,timeout:G},Z)=>{F?.clearBlockedHost?.();let W=await B4.wrapWithSandbox(I);return new Promise((g,V)=>{let b=bzF("bash",["-c",W],{cwd:B,detached:!0,stdio:["ignore","pipe","pipe"],env:{PATH:process.env.PATH||"",HOME:process.env.HOME||"",...Q}}),X="",C="",N=!1,R;if(G!==void 0&&G>0)R=setTimeout(()=>{if(N=!0,b.pid)try{process.kill(-b.pid,"SIGKILL")}catch{b.kill("SIGKILL")}},G*1000);b.stdout?.on("data",(Y)=>{X+=Y.toString()}),b.stderr?.on("data",(Y)=>{C+=Y.toString()});let A=()=>{if(b.pid)try{process.kill(-b.pid,"SIGKILL")}catch{b.kill("SIGKILL")}};Z?.addEventListener("abort",A,{once:!0}),b.on("error",(Y)=>{if(R)clearTimeout(R);Z?.removeEventListener("abort",A),qX.error({err:Y,command:I,stdout:X,stderr:C},"Sandboxed bash command encountered process error"),V(Y)}),b.on("close",(Y)=>{if(R)clearTimeout(R);Z?.removeEventListener("abort",A);let L=F?.getBlockedHost?.();if(Z?.aborted)qX.error({command:I,stdout:X,stderr:C},"Sandboxed bash command aborted"),V(Error("aborted"));else if(N)qX.error({timeout:G,command:I,stdout:X,stderr:C},"Sandboxed bash command timed out"),V(Error(`bash command timed out after ${G} seconds`));else if(L)V(Error(`Network request to ${L} is blocked, please ask admin to allow it in sandbox settings.`));else if(Y!==0&&Y!==null)qX.error({exitCode:Y,command:I,stdout:X,stderr:C},"Sandboxed bash command exited with failure code"),V(Error(`bash command exited with code ${Y}`));else{let H=X+C;g({content:[{type:"text",text:H||(Y===0?"Success":`Failed with exit code ${Y}`)}],details:{exitCode:Y,stdout:X,stderr:C}})}})})}}};import{ApplicationFailure as X2B}from"@temporalio/workflow";async function oRQ(B){let{updateTaskStatusActivity:Q,getEmbeddingContextActivity:F,generateImageEmbeddingActivity:U,generateVideoChunkEmbeddingActivity:I,saveAssetEmbeddingsActivity:G,updateTaskUsageActivity:Z,createCommentActivity:W,updateCommentActivity:g,getAgentWorkerQueueActivity:V,getTranscodeWorkerQueueActivity:b,downloadMediaToTmpActivity:X,cleanupTmpDirActivity:C,transcodeVideoChunkActivity:N,deleteS3ObjectActivity:R}=aN(),A,Y="",L="",H;try{Y=await QF(Fg,V),L=await QF(kL,b),await QF(Y,Q,{taskId:B.id,status:"processing"});let J=B.payload;if(A=(await QF(Y,W,{assetId:B.assetId,message:"__EMBEDDING__",sessionId:J?.agent?.sessionId||B.id,agentId:J?.agent?.agentId||"default"})).id,!B.teamId)throw X2B.create({message:"Task has no teamId",nonRetryable:!0});let M=await QF(Y,F,{teamId:B.teamId,assetId:B.assetId}),{asset:y,chunkDuration:m,chunkOverlap:c}=M,k=y.mediaType?.startsWith("image/"),d=y.mediaType?.startsWith("video/");if(!k&&!d)throw X2B.create({message:`unsupported media type for embeddings: ${y.mediaType}`,nonRetryable:!0});let $=y.storageKey?.key,FB=y.mediaType;if(y.media){let IB=y.media;if(d){if(IB.videoTranscodes&&IB.videoTranscodes.length>0){let t=IB.videoTranscodes.find((ZB)=>!ZB.isRaw)||IB.videoTranscodes[0];if(t?.key)$=t.key}}else if(k){if(IB.imageTranscodes&&IB.imageTranscodes.length>0){let t=IB.imageTranscodes.find((ZB)=>!ZB.isRaw)||IB.imageTranscodes[0];if(t?.key){if($=t.key,t.format)FB=`image/${t.format}`}}}}if(!$)throw X2B.create({message:"asset has no key",nonRetryable:!0});let bB=[],CB={model:"gemini-embedding-2",inputTokens:0,outputTokens:0};if(k){let IB=await QF(Y,U,{teamId:B.teamId,assetKey:$,mediaType:FB});if(bB.push({embedding:IB.embedding}),IB.usage)CB.inputTokens+=IB.usage.inputTokens||0,CB.outputTokens+=IB.usage.outputTokens||0}else if(d){let IB=await QF(L,X,{assetKey:$}),{filePath:t}=IB;H=IB.tmpDir;let ZB=y.media?.duration||0,LB=m||60,HQ=Math.max(1,LB-(c??5));for(let wQ=0;wQ<ZB;wQ+=HQ){let hQ=wQ+LB;if(hQ>=ZB)hQ=ZB;let jB=await QF(L,N,{assetId:y.id,filePath:t,startTime:wQ,endTime:hQ}),{chunkKey:lQ}=jB;try{let oF=await QF(Y,I,{teamId:B.teamId,chunkKey:lQ});if(bB.push({embedding:oF.embedding,startTime:wQ,endTime:hQ}),oF.usage)CB.inputTokens+=oF.usage.inputTokens||0,CB.outputTokens+=oF.usage.outputTokens||0}finally{await QF(L,R,{key:lQ})}if(hQ>=ZB)break}}if(bB.length>0)await QF(Y,G,{assetId:B.assetId,embeddings:bB});if(await QF(Y,Z,{taskId:B.id,inputTokens:CB.inputTokens,outputTokens:CB.outputTokens,model:CB.model}),A)await QF(Y,g,{commentId:A,message:"Embedding completed successfully."});await QF(Y,Q,{taskId:B.id,status:"completed"})}catch(J){if(console.error(`AgentEmbeddingMedia failed for task ${B.id}:`,J),A&&Y)try{await QF(Y,g,{commentId:A,message:`Embedding failed: ${J instanceof Error?J.message:String(J)}`})}catch(w){console.error("Failed to update error comment:",w)}if(Y)await QF(Y,Q,{taskId:B.id,status:"failed",output:{error:J instanceof Error?J.message:String(J)}});throw J}finally{if(H&&L)try{await QF(L,C,{tmpDir:H})}catch(J){console.error("Failed to cleanup transcode worker tmp dir:",J)}}}async function rRQ(B){let{generateTextEmbeddingActivity:Q,updateWorkflowTaskActivity:F,getAgentWorkerQueueActivity:U}=aN(),I="",Z=B.payload?.queryEmbeddingForSearch?.text;if(!Z)throw Error("Missing text in query_embedding_for_search task payload");try{I=await QF(Fg,U),await QF(I,F,{taskId:B.id,status:"processing",heartbeat:!0});let W=await QF(I,Q,{text:Z,teamId:B.teamId});await QF(I,F,{taskId:B.id,status:"completed",output:{embedding:W.embedding},inputTokens:W.usage.inputTokens,outputTokens:W.usage.outputTokens,model:W.usage.model})}catch(W){if(console.error(`queryEmbeddingForSearch failed for task ${B.id}:`,W),I)await QF(I,F,{taskId:B.id,status:"failed",output:{error:W instanceof Error?W.message:String(W)}});throw W}}import{ApplicationFailure as CzF}from"@temporalio/workflow";async function sRQ(B){let{updateTaskStatusActivity:Q,getAssetActivity:F,extractAiMetadataActivity:U,getProjectAutofillFieldsActivity:I,getAgentAutofillContextActivity:G,autofillAiActivity:Z,updateTaskUsageActivity:W,updateAssetMetadataActivity:g,createCommentActivity:V,updateCommentActivity:b,getTranscodeWorkerQueueActivity:X,getAgentWorkerQueueActivity:C,downloadMediaToTmpActivity:N,cleanupTmpDirActivity:R}=aN(),A,Y,L="",H="";try{H=await QF(Fg,C),L=await QF(kL,X),await QF(H,Q,{taskId:B.id,status:"processing"});let J=B.payload;A=(await QF(H,V,{assetId:B.assetId,message:"__AUTOFILL__",sessionId:J?.agent?.sessionId||B.id,agentId:J?.agent?.agentId||"default"})).id;let M=await QF(H,F,B.assetId),y=M?.storageKey?.key;if(!M||!M.project||!y)throw CzF.create({message:"Asset or project not found",nonRetryable:!0});let m=M.project.teamId,c=M.project.id,k=M.mediaType?.startsWith("image/")||!1,d=await QF(L,N,{assetKey:y}),{filePath:$}=d;Y=d.tmpDir;let FB=await QF(L,U,{assetKey:y,filePath:$,type:"autofill",isImage:k});if(FB.length===0){if(A)await QF(H,b,{commentId:A,message:"Autofill completed: No images could be extracted for analysis."});await QF(H,Q,{taskId:B.id,status:"completed"});return}let bB=await QF(H,I,c);if(bB.length===0){if(A)await QF(H,b,{commentId:A,message:"Autofill completed: No autofill fields defined in project."});await QF(H,Q,{taskId:B.id,status:"completed"});return}let CB=await QF(H,G,{teamId:m}),IB=await QF(H,Z,{teamId:m,images:FB,fields:bB.map((LB)=>({id:LB.key,config:LB.config,description:LB.description})),context:CB});if(IB.usage)await QF(H,W,{taskId:B.id,inputTokens:IB.usage.inputTokens,outputTokens:IB.usage.outputTokens,model:IB.usage.model});let t=JSON.parse(IB.text),ZB=Object.entries(t).map(([LB,NQ])=>({key:LB,value:NQ}));if(ZB.length>0)await QF(H,g,{assetId:M.id,metadata:ZB});if(A)await QF(H,b,{commentId:A,message:"Autofill completed successfully.",sessionId:IB.sessionId});await QF(H,Q,{taskId:B.id,status:"completed"})}catch(J){if(console.error(`AgentAutofillMedia failed for task ${B.id}:`,J),A&&H)try{await QF(H,b,{commentId:A,message:`Autofill failed: ${J instanceof Error?J.message:String(J)}`})}catch(w){console.error("Failed to update error comment:",w)}if(H)await QF(H,Q,{taskId:B.id,status:"failed",output:{error:J instanceof Error?J.message:String(J)}});throw J}finally{if(Y&&L)try{await QF(L,R,{tmpDir:Y})}catch(J){console.error("Failed to cleanup tmp dir:",J)}}}import{ApplicationFailure as Nk}from"@temporalio/workflow";function tRQ(B){if(!B)return"other";let Q=B.toLowerCase();if(Q.startsWith("image/")||Q==="application/x-photoshop"||Q==="image/vnd.adobe.photoshop")return"image";if(Q.startsWith("video/"))return"video";return"other"}class C2B{assetId;assetName;mediaType;videoDuration;commentTimestamp;pathContext;explicitMention=!1;constructor(B){this.assetId=B}withPathContext(B){return this.pathContext=B,this}withAssetDetails(B,Q,F){return this.assetName=B,this.mediaType=Q||void 0,this.videoDuration=F,this}withCommentTimestamp(B){if(B!==void 0&&B!==null)this.commentTimestamp=B;return this}withExplicitMention(B){return this.explicitMention=!!B,this}build(){let B=`The user is discussing an asset with ID: ${this.assetId}.`;if(this.assetName)B+=`
|
|
13373
13373
|
File Name: ${this.assetName}`;if(this.mediaType){let Q=tRQ(this.mediaType);if(B+=`
|
|
13374
13374
|
File Type: ${Q}`,Q==="video"&&this.videoDuration!==void 0)B+=`
|
|
13375
13375
|
Video Length: ${this.videoDuration.toFixed(2)} seconds`}if(this.commentTimestamp!==void 0)B+=`
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shumai-one/shumai-agent",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "AI worker agent for the shumai media workspace",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -26,12 +26,12 @@
|
|
|
26
26
|
"zod": "4.4.3"
|
|
27
27
|
},
|
|
28
28
|
"optionalDependencies": {
|
|
29
|
-
"@shumai-one/shumai-agent-darwin-arm64": "0.1.
|
|
30
|
-
"@shumai-one/shumai-agent-darwin-x64": "0.1.
|
|
31
|
-
"@shumai-one/shumai-agent-linux-arm64": "0.1.
|
|
32
|
-
"@shumai-one/shumai-agent-linux-x64": "0.1.
|
|
33
|
-
"@shumai-one/shumai-agent-win32-arm64": "0.1.
|
|
34
|
-
"@shumai-one/shumai-agent-win32-x64": "0.1.
|
|
29
|
+
"@shumai-one/shumai-agent-darwin-arm64": "0.1.2",
|
|
30
|
+
"@shumai-one/shumai-agent-darwin-x64": "0.1.2",
|
|
31
|
+
"@shumai-one/shumai-agent-linux-arm64": "0.1.2",
|
|
32
|
+
"@shumai-one/shumai-agent-linux-x64": "0.1.2",
|
|
33
|
+
"@shumai-one/shumai-agent-win32-arm64": "0.1.2",
|
|
34
|
+
"@shumai-one/shumai-agent-win32-x64": "0.1.2"
|
|
35
35
|
},
|
|
36
36
|
"repository": {
|
|
37
37
|
"type": "git",
|