@stackory/arena 0.9.0 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/dist/cli.local.mjs +2 -2
- package/dist/cli.mjs +2 -2
- package/dist/cli.production.mjs +3 -3
- package/package.json +1 -1
package/dist/cli.production.mjs
CHANGED
|
@@ -804,7 +804,7 @@ Command exited with code ${c}`);return{content:[{type:"text",text:A}],details:{e
|
|
|
804
804
|
`).split(`
|
|
805
805
|
`).map(i=>` ${i}`).join(`
|
|
806
806
|
`)}function c4e(e){let t=[Prr(e.view,e.events??[])];if(!e.needUnit){let r=e.view.activation?.hasAttacked===!0?"basic attack already used":"basic attack still available";t.push("",`Active unit: ${e.unitId} AP remaining: ${e.apLeft} \xB7 ${r}`)}if(e.done.length>0&&t.push("","Already executed during this activation:",...e.done.map(r=>`\xB7 ${m7n(r)}`)),e.setback)if(t.push(""),e.setback.kind==="rejected"){let r=e.setback.action;t.push("Your previous step was rejected and did NOT happen:",` Attempted : ${r?g7n(r):"Begin activation"}`,` Reason : ${h7n(e.setback.reason)}`,"The board did not change; the action itself was invalid. Pick a different action from the list below."),r?.type==="move"&&t.push("For a move, moveToQ/moveToR must be the hex you are moving TO, not the hex you are standing on.")}else t.push(`Your plan was cut short: ${e.setback.note}.`,"Any step already executed is listed above; plan the remaining AP against the board as it stands now.");if(e.needUnit){let r=e.view.units.filter(n=>n.relation==="own"&&n.own&&!n.own.activated);t.push("","Units that have not acted this cycle:");for(let n of r)t.push("",Mrr(e.view,n.id,e.previews?.[n.id]??[]));t.push("","Choose one of these units and plan its actions for this activation. It will have 2 AP.")}else e.unitId?(t.push("","Currently available actions:",Mrr(e.view,e.unitId,e.legal)),t.push("","Choose what it should do next.")):(t.push("","Currently available actions:",zrr(e.legal)),t.push("","Choose what it should do next."));return t.push('This is an activation decision: set kind="activation" and picks=null.'),t.join(`
|
|
807
|
-
`)}var f7n={WRONG_PHASE:"that action does not belong to the current phase",NOT_YOUR_TURN:"it is not your turn to act",ALREADY_PICKED:"your roster was already submitted",INVALID_ROSTER:"a roster must name exactly three classes",NO_ACTIVE_UNIT:"no unit is currently activated",ACTIVATION_IN_PROGRESS:"another unit is already mid-activation",UNIT_NOT_FOUND:"no unit with that id exists",NOT_YOUR_UNIT:"that unit is not yours to control (it may belong to an ally or an opponent)",UNIT_ALREADY_ACTIVATED:"that unit has already acted this cycle",NOT_ENOUGH_AP:"not enough AP left for that action",ALREADY_ATTACKED:"this unit has already made its one basic attack this activation",SKILL_ON_COOLDOWN:"that skill is still on cooldown",WRONG_CLASS:"this unit class does not have that skill",TARGET_NOT_VISIBLE:"that target is not inside your vision",TARGET_NOT_ENEMY:"that target is not an enemy",TARGET_NOT_ALLY:"that target is not a friendly unit",OUT_OF_RANGE:"the target is beyond this action's range",TOO_CLOSE:"the target is adjacent, and Piercing Shot cannot hit adjacent enemies",CELL_OFF_MAP:"that hex is outside the map",CELL_OCCUPIED:"that hex is taken, and the hex you are already standing on counts as taken too",UNREACHABLE:"that hex is farther than this unit can move in one activation",LANDING_NOT_ADJACENT:"the landing hex is not adjacent to the charge target"};function h7n(e){return e?`${e} \u2014 ${f7n[e]}`:"unknown reason"}function g7n(e){switch(e.type){case"chooseRoster":return"Submit roster";case"forfeit":return"Forfeit";case"beginActivation":return`Activate ${e.unitId}`;case"endActivation":return"End activation";case"move":return`Move to ${Wq(e.to)}`;case"attack":return`Basic attack ${e.targetId}`;case"charge":return`Charge ${e.targetId}, landing at ${Wq(e.landing)}`;case"piercingShot":return`Piercing Shot ${e.targetId}`;case"firstAid":return`First Aid ${e.targetId}`}}var lme={type:"object",additionalProperties:!1,required:["kind","reasoning","picks","unitId","steps"],properties:{kind:{type:"string",enum:["roster","activation"],description:"The current decision type."},reasoning:{type:"string",description:"Explain the intent of this decision in one sentence."},picks:{type:["array","null"],minItems:3,maxItems:3,items:{type:"string",enum:["warrior","archer","medic"]},description:"The three classes for a roster decision; null for an activation decision."},unitId:{type:["string","null"],description:"The unit to activate when a unit choice is required; otherwise null."},steps:{type:["array","null"],maxItems:2,description:"Actions for an activation decision; null for a roster decision; an empty list skips the unit.",items:{type:"object",additionalProperties:!1,required:["type","moveToQ","moveToR","targetId","landingQ","landingR"],properties:{type:{type:"string",enum:["move","attack","charge","piercingShot","firstAid"]},moveToQ:{type:["number","null"],description:"For move: q of the hex to move TO, never the current hex. Otherwise null."},moveToR:{type:["number","null"],description:"For move: r of the hex to move TO, never the current hex. Otherwise null."},targetId:{type:["string","null"],description:"Target unit for attack, charge, piercingShot, or firstAid; otherwise null."},landingQ:{type:["number","null"],description:"Landing q for charge; otherwise null."},landingR:{type:["number","null"],description:"Landing r for charge; otherwise null."}}}}}};function Drr(e,t){return e.needUnit?(t?e.previews?.[t]:void 0)??[]:e.legal}async function l4e(e){return e.backend==="custom-api"?A7n(e):y7n(e)}async function y7n(e){let t=await NCe(),r=a4e(e.battleStrategy),n,o=e.backend??"tiny-agent";try{n=await t.agent({backend:o,session:{model:e.model,...e.effort?{effort:e.effort}:{},cwd:e.cwd??process.cwd(),systemPrompt:r,...o==="claude"?{outputSchema:lme}:{}},...o==="codex"?{permission:{sandbox:"read-only",approval:"never"}}:o==="claude"?{permission:{approval:"never"}}:{}})}catch(a){throw await t.close(),a}let i=async a=>{e.onDebug?.({type:"input",systemPrompt:r,prompt:a});let u=await n.prompt(a,o==="claude"?void 0:{outputSchema:lme}),c=u.structured;if(e.onDebug?.({type:"output",text:u.text,...c!==void 0?{structured:c}:{}}),c&&typeof c=="object")return c;try{return JSON.parse(u.text)}catch{return{}}},s=!1;return{name:e.name,async decideRoster(a){let u=await i(u4e(a));return{kind:"roster",picks:Age(u.picks)??["warrior","archer","medic"],...u.reasoning?{reasoning:u.reasoning}:{}}},async decideActivation(a){let u=await i(c4e(a)),c=[];for(let d of u.steps??[]){let m=yge(d,Drr(a,u.unitId));m&&c.push(m)}return{kind:"activation",...u.unitId?{unitId:u.unitId}:{},steps:c,...u.reasoning?{reasoning:u.reasoning}:{}}},async close(){if(!s){s=!0;try{await n.close()}finally{await t.close()}}}}}async function A7n(e){let t=e.apiFormat,r=a4e(e.battleStrategy),n=`hexfront-custom-api-${t}`,o="hexfront-model",i=k3.open({databasePath:":memory:",inMemory:!0,models:[{id:o,spec:{provider:n,model:e.model,api:t,baseUrl:e.baseUrl,cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},thinkingLevels:["off"],defaultThinkingLevel:"off"}],apiKeys:{[n]:e.apiKey}}),s;try{s=await i.create({cwd:e.cwd??process.cwd(),modelId:o,reasoning:"off",systemPrompt:r})}catch(c){throw await i.close(),c}let a=async c=>{e.onDebug?.({type:"input",systemPrompt:r,prompt:c});for await(let d of s.prompt({prompt:c,outputSchema:lme,structuredRetryBudget:1})){if(d.type==="turn.completed"){if(e.onDebug?.({type:"output",text:d.finalText,...d.structured!==void 0?{structured:d.structured}:{}}),d.structured&&typeof d.structured=="object")return d.structured;throw new Error(`Custom API model (${t}) returned no structured output`)}if(d.type==="turn.failed")throw new Error(`Custom API turn failed (${t}, ${d.error.code}): ${d.error.message}`)}throw new Error(`Custom API turn (${t}) ended without a terminal event`)},u=!1;return{name:e.name,async decideRoster(c){let d=await a(u4e(c));return{kind:"roster",picks:Age(d.picks)??["warrior","archer","medic"],...d.reasoning?{reasoning:d.reasoning}:{}}},async decideActivation(c){let d=await a(c4e(c)),m=[];for(let f of d.steps??[]){let g=yge(f,Drr(c,d.unitId));g&&m.push(g)}return{kind:"activation",...d.unitId?{unitId:d.unitId}:{},steps:m,...d.reasoning?{reasoning:d.reasoning}:{}}},async close(){if(!u){u=!0;try{await s.close()}finally{await i.close()}}}}}function Lrr(e){let t=new Set,r=new Set,n=[],o=[],i=()=>{if(e.readyState===1)for(;o.length>0;)e.send(o.shift())},s=()=>{if(t.size!==0)for(;n.length>0;){let a=n.shift();for(let u of[...t])u(a)}};return e.addEventListener("open",()=>i()),e.addEventListener("message",a=>{n.push(typeof a.data=="string"?a.data:String(a.data)),s()}),e.addEventListener("close",()=>{for(let a of[...r])a()}),e.readyState===1&&i(),{send(a){o.push(a),i()},onMessage(a){return t.add(a),s(),()=>t.delete(a)},onClose(a){return r.add(a),()=>r.delete(a)},close(){e.close()}}}function Urr(e,t){let r=new Map,n=new Set,o=1;e.onMessage(m=>{let f;try{f=JSON.parse(m)}catch{return}if(f.t==="event"){for(let A of[...n])A.push(f.event);return}if(f.id===null)return;let g=r.get(f.id);g&&(r.delete(f.id),f.t==="error"?g.reject(new Error(f.message)):g.resolve(f))}),e.onClose(()=>{for(let m of r.values())m.reject(new Error("CHANNEL_CLOSED"));r.clear()});let i=m=>{let f=o++,g={...m,id:f};return new Promise((A,S)=>{r.set(f,{resolve:A,reject:S}),e.send(JSON.stringify(g))})},s=async m=>{let f=await i({t:"send",action:m});if(f.t!=="sent")throw new Error(`\u610F\u5916\u54CD\u5E94\uFF1A${f.t}`);return f.result},a=async()=>{let m=await i({t:"view"});if(m.t!=="view")throw new Error(`\u610F\u5916\u54CD\u5E94\uFF1A${m.t}`);return m.view},u=async()=>{let m=await i({t:"legal"});if(m.t!=="legal")throw new Error(`\u610F\u5916\u54CD\u5E94\uFF1A${m.t}`);return[...m.actions]},c=()=>({[Symbol.asyncIterator]:()=>d()});function d(){let m=[],f=null,g=!1,A={push(b){if(f){let k=f;f=null,k({value:b,done:!1})}else m.push(b)}};n.add(A),n.size===1&&e.send(JSON.stringify({t:"sub"}));let S=()=>{if(!g&&(g=!0,n.delete(A),n.size===0&&e.send(JSON.stringify({t:"unsub"})),f)){let b=f;f=null,b({value:void 0,done:!0})}return{value:void 0,done:!0}};return{next(){let b=m.shift();return b!==void 0?Promise.resolve({value:b,done:!1}):g?Promise.resolve({value:void 0,done:!0}):new Promise(k=>{f=k})},return(){return Promise.resolve(S())}}}return{playerId:t,send:s,view:a,legalActions:u,stream:c}}function _7n(e,t){return new Promise((r,n)=>{let o=e.onMessage(i=>{let s;try{s=JSON.parse(i)}catch{return}if(s.t==="queued"){t.onQueued?.({ticketId:s.ticketId,preference:s.preference,fallbackAt:s.fallbackAt});return}if(s.t==="downgraded"){t.onDowngraded?.({ticketId:s.ticketId});return}s.t==="joined"&&(o(),r({playerId:s.playerId,matchId:s.matchId,mode:s.mode,sideId:s.sideId,teamSeat:s.teamSeat}))});e.onClose(()=>n(new Error("CHANNEL_CLOSED"))),e.send(JSON.stringify({t:"join",agent:t.agent,preference:t.preference}))})}async function $rr(e,t){let r=e("/matchmake"),n=await _7n(r,t),{playerId:o,matchId:i}=n;r.close();let s=e(`/match/${i}?seat=${o}`);return{...n,transport:Urr(s,o),channel:s}}var pme=class{name;channel;constructor(t,r){this.name=t,this.channel=r}thinking(t,r,n){console.log(`[${this.name}] LLM decision ${(n/1e3).toFixed(1)}s`),r&&console.log(`[${this.name}] reasoning: ${r}`),this.report({kind:"thinking",...r?{text:r}:{},elapsedMs:n})}rejected(t,r,n){console.warn(`[${this.name}] Action rejected ${r.type}: ${n}`),this.report({kind:"rejected",action:r,reason:n})}interrupted(t,r){console.log(`[${this.name}] Plan interrupted; reconsidering: ${r}`),this.report({kind:"interrupted",text:r})}forced(t,r){this.report({kind:"forced",action:r})}report(t){this.channel?.send(JSON.stringify({t:"trace",entry:t}))}};import{randomBytes as dao}from"node:crypto";import{Stream as Eno}from"node:stream";import hW from"node:process";var Bje=vn(is(),1);import mW from"node:process";function Xrr(e,t,{signal:r,edges:n}={}){let o,i=null,s=n!=null&&n.includes("leading"),a=n==null||n.includes("trailing"),u=()=>{i!==null&&(e.apply(o,i),o=void 0,i=null)},c=()=>{a&&u(),g()},d=null,m=()=>{d!=null&&clearTimeout(d),d=setTimeout(()=>{d=null,c()},t)},f=()=>{d!==null&&(clearTimeout(d),d=null)},g=()=>{f(),o=void 0,i=null},A=()=>{u()},S=function(...b){if(r?.aborted)return;o=this,i=b;let k=d==null;m(),s&&k&&u()};return S.schedule=m,S.cancel=g,S.flush=A,r?.addEventListener("abort",g,{once:!0}),S}function Zrr(e,t=0,r={}){typeof r!="object"&&(r={});let{leading:n=!1,trailing:o=!0,maxWait:i}=r,s=Array(2);n&&(s[0]="leading"),o&&(s[1]="trailing");let a,u=null,c=Xrr(function(...f){a=e.apply(this,f),u=null},t,{edges:s}),d=function(...f){return i!=null&&(u===null&&(u=Date.now()),Date.now()-u>=i)?(a=e.apply(this,f),u=Date.now(),c.cancel(),c.schedule(),a):(c.apply(this,f),a)},m=()=>(c.flush(),a);return d.cancel=c.cancel,d.flush=m,d}function fme(e,t=0,r={}){let{leading:n=!0,trailing:o=!0}=r;return Zrr(e,t,{leading:n,maxWait:t,trailing:o})}var ou={};vo(ou,{ConEmu:()=>anr,beep:()=>pZn,beginSynchronizedOutput:()=>onr,clearScreen:()=>oZn,clearTerminal:()=>aZn,clearViewport:()=>iZn,cursorBackward:()=>Q7n,cursorDown:()=>q7n,cursorForward:()=>F7n,cursorGetPosition:()=>V7n,cursorHide:()=>K7n,cursorLeft:()=>rnr,cursorMove:()=>B7n,cursorNextLine:()=>H7n,cursorPrevLine:()=>J7n,cursorRestorePosition:()=>j7n,cursorSavePosition:()=>G7n,cursorShow:()=>W7n,cursorTo:()=>$7n,cursorUp:()=>tnr,endSynchronizedOutput:()=>inr,enterAlternativeScreen:()=>uZn,eraseDown:()=>eZn,eraseEndLine:()=>X7n,eraseLine:()=>nnr,eraseLines:()=>Y7n,eraseScreen:()=>hme,eraseStartLine:()=>Z7n,eraseUp:()=>tZn,exitAlternativeScreen:()=>cZn,iTerm:()=>snr,image:()=>mZn,link:()=>dZn,scrollDown:()=>nZn,scrollUp:()=>rZn,setCwd:()=>fZn,synchronizedOutput:()=>lZn});import eF from"node:process";import D7n from"node:os";var Zq=globalThis.window?.document!==void 0,upu=globalThis.process?.versions?.node!==void 0,cpu=globalThis.process?.versions?.bun!==void 0,lpu=globalThis.Deno?.version?.deno!==void 0,ppu=globalThis.process?.versions?.electron!==void 0,dpu=globalThis.navigator?.userAgent?.includes("jsdom")===!0,mpu=typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope,fpu=typeof DedicatedWorkerGlobalScope<"u"&&globalThis instanceof DedicatedWorkerGlobalScope,hpu=typeof SharedWorkerGlobalScope<"u"&&globalThis instanceof SharedWorkerGlobalScope,gpu=typeof ServiceWorkerGlobalScope<"u"&&globalThis instanceof ServiceWorkerGlobalScope,O3=globalThis.navigator?.userAgentData?.platform,ypu=O3==="macOS"||globalThis.navigator?.platform==="MacIntel"||globalThis.navigator?.userAgent?.includes(" Mac ")===!0||globalThis.process?.platform==="darwin",Apu=O3==="Windows"||globalThis.navigator?.platform==="Win32"||globalThis.process?.platform==="win32",_pu=O3==="Linux"||globalThis.navigator?.platform?.startsWith("Linux")===!0||globalThis.navigator?.userAgent?.includes(" Linux ")===!0||globalThis.process?.platform==="linux",Epu=O3==="iOS"||globalThis.navigator?.platform==="MacIntel"&&globalThis.navigator?.maxTouchPoints>1||/iPad|iPhone|iPod/.test(globalThis.navigator?.platform),Spu=O3==="Android"||globalThis.navigator?.platform==="Android"||globalThis.navigator?.userAgent?.includes(" Android ")===!0||globalThis.process?.platform==="android";var Qs="\x1B[",tF="\x1B]",BP="\x07",N3=";",enr=!Zq&&eF.env.TERM_PROGRAM==="Apple_Terminal",L7n=!Zq&&eF.platform==="win32",U7n=!Zq&&(eF.env.TERM?.startsWith("screen")||eF.env.TERM?.startsWith("tmux")||eF.env.TMUX!==void 0),_4e=Zq?()=>{throw new Error("`process.cwd()` only works in Node.js, not the browser.")}:eF.cwd,rF=e=>U7n?"\x1BPtmux;"+e.replaceAll("\x1B","\x1B\x1B")+"\x1B\\":e,$7n=(e,t)=>{if(typeof e!="number")throw new TypeError("The `x` argument is required");return typeof t!="number"?Qs+(e+1)+"G":Qs+(t+1)+N3+(e+1)+"H"},B7n=(e,t)=>{if(typeof e!="number")throw new TypeError("The `x` argument is required");let r="";return e<0?r+=Qs+-e+"D":e>0&&(r+=Qs+e+"C"),t<0?r+=Qs+-t+"A":t>0&&(r+=Qs+t+"B"),r},tnr=(e=1)=>Qs+e+"A",q7n=(e=1)=>Qs+e+"B",F7n=(e=1)=>Qs+e+"C",Q7n=(e=1)=>Qs+e+"D",rnr=Qs+"G",G7n=enr?"\x1B7":Qs+"s",j7n=enr?"\x1B8":Qs+"u",V7n=Qs+"6n",H7n=Qs+"E",J7n=Qs+"F",K7n=Qs+"?25l",W7n=Qs+"?25h",Y7n=e=>{let t="";for(let r=0;r<e;r++)t+=nnr+(r<e-1?tnr():"");return e&&(t+=rnr),t},X7n=Qs+"K",Z7n=Qs+"1K",nnr=Qs+"2K",eZn=Qs+"J",tZn=Qs+"1J",hme=Qs+"2J",rZn=Qs+"S",nZn=Qs+"T",oZn="\x1Bc",iZn=`${hme}${Qs}H`,sZn=()=>{if(Zq||!L7n)return!1;let e=D7n.release().split("."),t=Number(e[0]),r=Number(e[2]??0);return t<10||t===10&&r<10586},aZn=sZn()?`${hme}${Qs}0f`:`${hme}${Qs}3J${Qs}H`,uZn=Qs+"?1049h",cZn=Qs+"?1049l",onr=Qs+"?2026h",inr=Qs+"?2026l",lZn=e=>onr+e+inr,pZn=BP,dZn=(e,t)=>{let r=rF(`${tF}8${N3}${N3}${t}${BP}`),n=rF(`${tF}8${N3}${N3}${BP}`);return r+e+n},mZn=(e,t={})=>{let r=`${tF}1337;File=inline=1`;t.width&&(r+=`;width=${t.width}`),t.height&&(r+=`;height=${t.height}`),t.preserveAspectRatio===!1&&(r+=";preserveAspectRatio=0");let n=Buffer.from(e);return rF(r+`;size=${n.byteLength}:`+n.toString("base64")+BP)},snr={setCwd:(e=_4e())=>rF(`${tF}50;CurrentDir=${e}${BP}`),annotation(e,t={}){let r=`${tF}1337;`,n=t.x!==void 0,o=t.y!==void 0;if((n||o)&&!(n&&o&&t.length!==void 0))throw new Error("`x`, `y` and `length` must be defined when `x` or `y` is defined");return e=e.replaceAll("|",""),r+=t.isHidden?"AddHiddenAnnotation=":"AddAnnotation=",t.length>0?r+=(n?[e,t.length,t.x,t.y]:[t.length,e]).join("|"):r+=e,rF(r+BP)}},anr={setCwd:(e=_4e())=>rF(`${tF}9;9;${e}${BP}`)},fZn=(e=_4e())=>snr.setCwd(e)+anr.setCwd(e);import{env as E4e}from"node:process";var unr=e=>e in E4e&&E4e[e]!=="0"&&E4e[e]!=="false",hZn=unr("CI")||unr("CONTINUOUS_INTEGRATION"),gme=hZn;var gZn=e=>{let t=new Set;do for(let r of Reflect.ownKeys(e))t.add([e,r]);while((e=Reflect.getPrototypeOf(e))&&e!==Object.prototype);return t};function S4e(e,{include:t,exclude:r}={}){let n=o=>{let i=s=>typeof s=="string"?o===s:s.test(o);return t?t.some(i):r?!r.some(i):!0};for(let[o,i]of gZn(e.constructor.prototype)){if(i==="constructor"||!n(i))continue;let s=Reflect.getOwnPropertyDescriptor(o,i);s&&typeof s.value=="function"&&(e[i]=e[i].bind(e))}return e}var Tsr=vn(I4e(),1);import{PassThrough as fnr}from"node:stream";var hnr=["assert","count","countReset","debug","dir","dirxml","error","group","groupCollapsed","groupEnd","info","log","table","time","timeEnd","timeLog","trace","warn"],T4e={},yZn=e=>{let t=new fnr,r=new fnr;t.write=o=>{e("stdout",o)},r.write=o=>{e("stderr",o)};let n=new console.Console(t,r);for(let o of hnr)T4e[o]=console[o],console[o]=n[o];return()=>{for(let o of hnr)console[o]=T4e[o];T4e={}}},gnr=yZn;var cfe=vn(Sme(),1);var AZn=(()=>{var e=import.meta.url;return(function(t){t=t||{};var r;r||(r=typeof t<"u"?t:{});var n,o;r.ready=new Promise(function(he,Se){n=he,o=Se});var i=Object.assign({},r),s="";typeof document<"u"&&document.currentScript&&(s=document.currentScript.src),e&&(s=e),s.indexOf("blob:")!==0?s=s.substr(0,s.replace(/[?#].*/,"").lastIndexOf("/")+1):s="";var a=r.print||console.log.bind(console),u=r.printErr||console.warn.bind(console);Object.assign(r,i),i=null;var c;r.wasmBinary&&(c=r.wasmBinary);var d=r.noExitRuntime||!0;typeof WebAssembly!="object"&&nr("no native wasm support detected");var m,f=!1;function g(he,Se,Ge){Ge=Se+Ge;for(var ot="";!(Se>=Ge);){var ft=he[Se++];if(!ft)break;if(ft&128){var Wt=he[Se++]&63;if((ft&224)==192)ot+=String.fromCharCode((ft&31)<<6|Wt);else{var lr=he[Se++]&63;ft=(ft&240)==224?(ft&15)<<12|Wt<<6|lr:(ft&7)<<18|Wt<<12|lr<<6|he[Se++]&63,65536>ft?ot+=String.fromCharCode(ft):(ft-=65536,ot+=String.fromCharCode(55296|ft>>10,56320|ft&1023))}}else ot+=String.fromCharCode(ft)}return ot}var A,S,b,k,R,N,K,ne,ee;function Te(){var he=m.buffer;A=he,r.HEAP8=S=new Int8Array(he),r.HEAP16=k=new Int16Array(he),r.HEAP32=N=new Int32Array(he),r.HEAPU8=b=new Uint8Array(he),r.HEAPU16=R=new Uint16Array(he),r.HEAPU32=K=new Uint32Array(he),r.HEAPF32=ne=new Float32Array(he),r.HEAPF64=ee=new Float64Array(he)}var Ee,xe=[],We=[],Ot=[];function Qe(){var he=r.preRun.shift();xe.unshift(he)}var pt=0,er=null,vt=null;function nr(he){throw r.onAbort&&r.onAbort(he),he="Aborted("+he+")",u(he),f=!0,he=new WebAssembly.RuntimeError(he+". Build with -sASSERTIONS for more info."),o(he),he}function gr(he){return he.startsWith("data:application/octet-stream;base64,")}var or;if(or="data:application/octet-stream;base64,AGFzbQEAAAABugM3YAF/AGACf38AYAF/AX9gA39/fwBgAn98AGACf38Bf2ADf39/AX9gBH9/f30BfWADf398AGAAAGAEf39/fwBgAX8BfGACf38BfGAFf39/f38Bf2AAAX9gA39/fwF9YAZ/f31/fX8AYAV/f39/fwBgAn9/AX1gBX9/f319AX1gAX8BfWADf35/AX5gB39/f39/f38AYAZ/f39/f38AYAR/f39/AX9gBn9/f319fQF9YAR/f31/AGADf399AX1gBn98f39/fwF/YAR/fHx/AGACf30AYAh/f39/f39/fwBgDX9/f39/f39/f39/f38AYAp/f39/f39/f39/AGAFf39/f38BfGAEfHx/fwF9YA1/fX1/f399fX9/f39/AX9gB39/f319f38AYAJ+fwF/YAN/fX0BfWABfAF8YAN/fHwAYAR/f319AGAHf39/fX19fQF9YA1/fX99f31/fX19fX1/AX9gC39/f39/f399fX19AX9gCH9/f39/f319AGAEf39+fgBgB39/f39/f38Bf2ACfH8BfGAFf398fH8AYAN/f38BfGAEf39/fABgA39/fQBgBn9/fX99fwF/ArUBHgFhAWEAHwFhAWIAAwFhAWMACQFhAWQAFgFhAWUAEQFhAWYAIAFhAWcAAAFhAWgAIQFhAWkAAwFhAWoAAAFhAWsAFwFhAWwACgFhAW0ABQFhAW4AAwFhAW8AAQFhAXAAFwFhAXEABgFhAXIAAAFhAXMAIgFhAXQACgFhAXUADQFhAXYAFgFhAXcAAgFhAXgAAwFhAXkAGAFhAXoAAgFhAUEAAQFhAUIAEQFhAUMAAQFhAUQAAAOiAqACAgMSBwcACRkDAAoRBgYKEwAPDxMBBiMTCgcHGgMUASQFJRQHAwMKCgMmAQYYDxobFAAKBw8KBwMDAgkCAAAFGwACBwIHBgIDAQMIDAABKAkHBQURACkZASoAAAIrLAIALQcHBy4HLwkFCgMCMA0xAgMJAgACAQYKAQIBBQEACQIFAQEABQAODQ0GFQIBHBUGAgkCEAAAAAUyDzMMBQYINAUCAwUODg41AgMCAgIDBgICNgIBDAwMAQsLCwsLCx0CAAIAAAABABABBQICAQMCEgMMCwEBAQEBAQsLAQICAwICAgICAgIDAgIICAEICAgEBAQEBAQEBAQABAQABAQEBAAE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GiABQQA2AvADIAFCADcC6AMgAigC7AMiAyACKALoAyIERwRAIAMgBGsiBEEASA0FIAEgBBAeIgM2AuwDIAEgAzYC6AMgASADIARqNgLwAyACKALoAyIEIAIoAuwDIghHBEADQCADIAQoAgA2AgAgA0EEaiEDIARBBGoiBCAIRw0ACwsgASADNgLsAwsgASACKQL0AzcC9AMgASACKAKEBDYChAQgASACKQL8AzcC/AMgAUEANgLkAwsgBSABNgIAIAEgADYC5AMLIAZBAWohBiAFQQRqIgUgB0cNAAsLDwsQAgALUAACQAJAAkACQAJAIAIOBAQAAQIDCyAAIAEgAUEwahBDDwsgACABIAFBMGogAxBEDwsgACABIAFBMGoQQg8LECQACyAAIAEgAUEwaiADEEULcAIBfwF9IwBBEGsiBCQAIARBCGogACABQQJ0QdwlaigCACACEDZDAADAfyEFAkACQAJAIAQtAAxBAWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAACAFIAVbGwt5AgF/AX0jAEEQayIDJAAgA0EIaiAAIAFBAnRB7CVqKAIAIAIQU0MAAMB/IQQCQAJAAkAgAy0ADEEBaw4CAAECCyADKgIIIQQMAQsgAyoCCEMAAAAAlEMK1yM8lCEECyADQRBqJAAgBEMAAAAAl0MAAAAAIAQgBFsbC1QAAkACQAJAAkACQCACDgQEAAECAwsgACABIAFBwgBqEEMPCyAAIAEgAUHCAGogAxBEDwsgACABIAFBwgBqEEIPCxAkAAsgACABIAFBwgBqIAMQRQsvACAAIAJFQQF0IgIgASADEGAgACACIAEQS5IgACACIAEgAxB/IAAgAiABEFKSkgvOAQIDfwJ9IwBBEGsiAyQAQQEhBCADQQhqIABB/ABqIgUgACABQQF0akH2AGoiAS8BABAfAkACQCADKgIIIgcgAioCACIGXARAIAcgB1sEQCACLQAEIQIMAgsgBiAGXCEECyACLQAEIQIgBEUNACADLQAMIAJB/wFxRg0BCyAFIAEgBiACEDkDQCAALQAAIgFBBHENASAAIAFBBHI6AAAgACgCECIBBEAgACABEQAACyAAQYCAgP4HNgKcASAAKALkAyIADQALCyADQRBqJAALzgECA38CfSMAQRBrIgMk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AWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAACAFIAVbGwscACAAIAFBCCACpyACQiCIpyADpyADQiCIpxAVCwUAEFgACzkAIABFBEBBAA8LAn8gAUGAf3FBgL8DRiABQf8ATXJFBEBB/DtBGTYCAEF/DAELIAAgAToAAEEBCwvEAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABQQlrDhIACgsMCgsCAwQFDAsMDAoLBwgJCyACIAIoAgAiAUEEajYCACAAIAEoAgA2AgAPCwALIAIgAigCACIBQQRqNgIAIAAgATIBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATMBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATAAADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATEAADcDAA8LAAsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKwMAOQMADwsgACACIAMRAQALDwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMAC84BAgN/An0jAEEQayIDJABBASEEIANBCGogAEH8AGoiBSAAIAFBAXRqQegAaiIBLwEAEB8CQAJAIAMqAggiByACKgIAIgZcBEAgByAHWwRAIAItAAQhAgwCCyAGIAZcIQQLIAItAAQhAiAERQ0AIAMtAAwgAkH/AXFGDQELIAUgASAGIAIQOQNAIAAtAAAiAUEEcQ0BIAAgAUEEcjoAACAAKAIQIgEEQCAAIAERAAALIABBgICA/gc2ApwBIAAoAuQDIgANAAsLIANBEGokAAtdAQR/IAAoAgAhAgNAIAIsAAAiAxBXBEBBfyEEIAAgAkEBaiICNgIAIAFBzJmz5gBNBH9BfyADQTBrIgMgAUEKbCIEaiADIARB/////wdzShsFIAQLIQEMAQsLIAELrhQCEn8BfiMAQdAAayIIJAAgCCABNgJMIAhBN2ohFyAIQThqIRQCQAJAAkACQANAIAEhDSAHIA5B/////wdzSg0BIAcgDmohDgJAAkACQCANIgctAAAiCQRAA0ACQAJAIAlB/wFxIgFFBEAgByEBDAELIAFBJUcNASAH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IQEgAEIANwIEIAAgATYCACABIAA2AgQgAkEQaiQAIAALGwEBfyAABEAgACgCACIBBEAgARAjCyAAECMLC0kBAn9BBBAeIQFBIBAeIgBBADYCHCAAQoCAgICAgIDAPzcCFCAAQgA3AgwgAEEAOgAIIABBAzYCBCAAQQA2AgAgASAANgIAIAELIAAgAkEFR0EAIAIbRQRAQbgwIAMgBBBJDwsgAyAEEHALIgEBfiABIAKtIAOtQiCGhCAEIAARFQAiBUIgiKckASAFpwuoAQEFfyAAKAJUIgMoAgAhBSADKAIEIgQgACgCFCAAKAIcIgdrIgYgBCAGSRsiBgRAIAUgByAGECsaIAMgAygCACAGaiIFNgIAIAMgAygCBCAGayIENgIECyAEIAIgAiAESxsiBARAIAUgASAEECsaIAMgAygCACAEaiIFNgIAIAMgAygCBCAEazYCBAsgBUEAOgAAIAAgACgCLCIBNgIcIAAgATYCFCACCwQAQgALBABBAAuKBQIGfgJ/IAEgASgCAEEHakF4cSIBQRBqNgIAIAAhCSABKQMAIQMgASkDCCEGIwBBIGsiCCQAAkAgBkL///////////8AgyIEQoCAgICAgMCAPH0gBEKAgICAgIDA/8MAfVQEQCAGQgSGIANCPIiEIQQgA0L//////////w+DIgNCgYCAgICAgIAIWgRAIARCgYCAgICAgIDAAHwhAgwCCyAEQoCAgICAgICAQH0hAiADQoCAgICAgICACFINASACIARCAYN8IQIMAQsgA1AgBEKAgICAgIDA//8AVCAEQoCAgICAgMD//wBRG0UEQCAGQgSGIANCPIiEQv////////8Dg0KAgICAgICA/P8AhCECDAELQoCAgICAgID4/wAhAiAEQv///////7//wwBWDQBCACECIARCMIinIgBBkfcASQ0AIAMhAiAGQv///////z+DQoCAgICAgMAAhCIFIQcCQCAAQYH3AGsiAUHAAHEEQCACIAFBQGqthiEHQgAhAgwBCyABRQ0AIAcgAa0iBIYgAkHAACABa62IhCEHIAIgBIYhAgsgCCACNwMQIAggBzcDGAJAQYH4ACAAayIAQcAAcQRAIAUgAEFAaq2IIQNCACEFDAELIABFDQAgBUHAACAAa62GIAMgAK0iAoiEIQMgBSACiCEFCyAIIAM3AwAgCCAF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ASAAKAIAIQAgASACQQFxBH8gASgCACAAaigCAAUgAAsRCwALYQECfyMAQRBrIgIkACABIAAoAgQiA0EBdWohASAAKAIAIQAgAiABIANBAXEEfyABKAIAIABqKAIABSAACxEBAEEQEB4iACACKQMINwMIIAAgAikDADcDACACQRBqJAAgAAtjAQJ/IwBBEGsiAyQAIAEgACgCBCIEQQF1aiEBIAAoAgAhACADIAEgAiAEQQFxBH8gASgCACAAaigCAAUgAAsRAwBBEBAeIgAgAykDCDcDCCAAIAMpAwA3AwAgA0EQaiQAIAALNwEBfyABIAAoAgQiA0EBdWohASAAKAIAIQAgASACIANBAXEEfyABKAIAIABqKAIABSAACxEEAAs5AQF/IAEgACgCBCIEQQF1aiEBIAAoAgAhACABIAIgAyAEQQFxBH8gASgCACAAaigCAAUgAAsRCAALCQAgASAAEQIACwUAQcM7Cw8AIAEgACgCAGogAjYCAAsNACABIAAoAgBqKAIACxgBAX9BEBAeIgBCADcDCCAAQQA2AgAgAAsYAQF/QRAQHiIAQgA3AwAgAEIANwMIIAALDABBMBAeQQBBMBAqCzcBAX8gASAAKAIEIgNBAXVqIQEgACgCACEAIAEgAiADQQFxBH8gASgCACAAaigCAAUgAAsRHgALBQBBvjsLIQAgACABKAIAIAEgASwAC0EASBtBuzsgAigCABAQNgIACyoBAX9BDBAeIgFBADoABCABIAAoAgA2AgggAEEANgIAIAFB2Cc2AgAgAQsFAEG7OwsFAEG4OwshACAAIAEoAgAgASABLAALQQBIG0GkOyACKAIAEBA2AgAL2AEBBH8jAEEgayIDJAAgASgCACIEQfD///8HSQRAAkACQCAEQQtPBEAgBEEPckEBaiIFEB4hBiADIAVBgICAgHhyNgIQIAMgBjYCCCADIAQ2AgwgBCAGaiEFDAELIAMgBDoAEyADQQhqIgYgBGohBSAERQ0BCyAGIAFBBGogBBArGgsgBUEAOgAAIAMgAjYCACADQRhqIANBCGogAyAAEQMAIAMoAhgQHSADKAIYIgAQBiADKAIAEAYgAywAE0EASARAIAMoAggQIwsgA0EgaiQAIAAPCxACAAsqAQF/QQwQHiIBQQA6AAQgASAAKAIANgIIIABBADYCACABQeAmNgIA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AkEIaiAIIAYQHyACIAcgAC8AABAfQQEhAyACKgIIIgogAioCACILXAR/IAogClsNAyALIAtcBSADC0UNAiACLQAMIAItAARHDQILIABBAmohAEEBIQMgBCEGQQEhBCAGRQ0ACyABLwB6IgBBB3FFBEAgBS0AekEHcUUNAgsgCCAAECAiCiAHIAUvAHoQICILWw0BIAogClsNACALIAtcDQELIAFBFGogBUEUakHoABArGiABQfwAaiAFQfwAahCgAQNAIAEtAAAiAEEEcQ0BIAEgAEEEcjoAACABKAIQIgAEQCABIAARAAALIAFBgICA/gc2ApwBIAEoAuQDIgENAAsLIAJBEGokAAvGAwEEfyMAQaAEayICJAAgACgCBCEBIABBADYCBCABBEAgASABKAIAKAIEEQAACyAAKAIIIQEgAEEANgIIIAEEQCABIAEoAgAoAgQRAAALAkAgACgCACIAKALoAyAAKALsA0YEQCAAKALkAw0BIAAgAkEYaiAAKAL0AxBcIgEpAgA3AgAgACABKAIQNgIQIAAgASkCCDcCCCAAQRRqIAFBFGpB6AAQKxogACABKQKMATcCjAEgACABKQKEATcChAEgACABKQJ8NwJ8IAEoApQBIQQgAUEANgKUASAAKAKUASEDIAAgBDYClAEgAwRAIAMQWwsgAEGYAWogAUGYAWpB0AIQKxogACgC6AMiAwRAIAAgAzYC7AMgAxAjCyAAIAEoAugDNgLoAyAAIAEoAuwDNgLsAyAAIAEoAvADNgLwAyABQQA2AvADIAFCADcC6AMgACABKQL8AzcC/AMgACABKQL0AzcC9AMgACABKAKEBDYChAQgASgClAEhACABQQA2ApQBIAAEQCAAEFsLIAJBoARqJAAPCyACQfAcNgIQIABBBUHYJSACQRBqECwQJAALIAJB5hE2AgAgAEEFQdglIAIQLBAkAAsLAEEMEB4gABCiAQsLAEEMEB5BABCiAQsNACAAKAIALQAIQQFxCwoAIAAoAgAoAhQLGQAgAUH/AXEEQBACAAsgACgCACgCEEEBcQsYACAAKAIAIgAgAC0ACEH+AXEgAXI6AAgLJgAgASAAKAIAIgAoAhRHBEAgACABNgIUIAAgACgCDEEBajYCDAsLkgEBAn8jAEEQayICJAAgACgCACEAIAFDAAAAAGAEQCABIAAqAhhcBEAgACABOAIYIAAgACgCDEEBajYCDAsgAkEQaiQADwsgAkGIFDYCACMAQRBrIgMkACADIAI2AgwCQCAARQRAQbgwQdglIAIQSRoMAQsgAEEAQQVB2CUgAiAAKAIEEQ0AGgsgA0EQaiQAECQACz8AIAFB/wFxRQRAIAIgACgCACIAKAIQIgFBAXFHBEAgACABQX5xIAJyNgIQIAAgACgCDEEBajYCDAsPCxACAAsL4CYjAEGACAuBHk9ubHkgbGVhZiBub2RlcyB3aXRoIGN1c3RvbSBtZWFzdXJlIGZ1bmN0aW9ucyBzaG91bGQgbWFudWFsbHkgbWFyayB0aGVtc2VsdmVzIGFzIGRpcnR5AGlzRGlydHkAbWFya0RpcnR5AGRlc3Ryb3kAc2V0RGlzcGxheQBnZXREaXNwbGF5AHNldEZsZXgALSsgICAwWDB4AC0wWCswWCAwWC0weCsweCAweABzZXRGbGV4R3JvdwBnZXRGbGV4R3JvdwBzZXRPdmVyZmxvdwBnZXRPdmVyZmxvdwBoYXNOZXdMYXlvdXQAY2FsY3VsYXRlTGF5b3V0AGdldENvbXB1dGVkTGF5b3V0AHVuc2lnbmVkIHNob3J0AGdldENoaWxkQ291bnQAdW5zaWduZWQgaW50AHNldEp1c3RpZnlDb250ZW50AGdldEp1c3RpZnlDb250ZW50AGF2YWlsYWJsZUhlaWdodCBpcyBpbmRlZmluaXRlIHNvIGhlaWdodFNpemluZ01vZGUgbXVzdCBiZSBTaXppbmdNb2RlOjpNYXhDb250ZW50AGF2YWlsYWJsZVdpZHRoIGlzIGluZGVmaW5pdGUgc28gd2lkdGhTaXppbmdNb2RlIG11c3QgYmUgU2l6aW5nTW9kZTo6TWF4Q29udGVudABzZXRBbGlnbkNvbnRlbnQAZ2V0QWxpZ25Db250ZW50AGdldFBhcmVudABpbXBsZW1lbnQAc2V0TWF4SGVpZ2h0UGVyY2VudABzZXRIZWlnaHRQZXJjZW50AHNldE1pbkhlaWdodFBlcmNlbnQAc2V0RmxleEJhc2lzUGVyY2VudABzZXRHYXBQZXJjZW50AHNldFBvc2l0aW9uUGVyY2VudABzZXRNYXJnaW5QZXJjZW50AHNldE1heFdpZHRoUGVyY2VudABzZXRXaWR0aFBlcmNlbnQAc2V0TWluV2lkdGhQZXJjZW50AHNldFBhZGRpbmdQZXJjZW50AGhhbmRsZS50eXBlKCkgPT0gU3R5bGVWYWx1ZUhhbmRsZTo6VHlwZTo6UG9pbnQgfHwgaGFuZGxlLnR5cGUoKSA9PSBTdHlsZVZhbHVlSGFuZGxlOjpUeXBlOjpQZXJjZW50AGNyZWF0ZURlZmF1bHQAdW5pdAByaWdodABoZWlnaHQAc2V0TWF4SGVpZ2h0AGdldE1heEhlaWdodABzZXRIZWlnaHQAZ2V0SGVpZ2h0AHNldE1pbkhlaWdodABnZXRNaW5IZWlnaHQAZ2V0Q29tcHV0ZWRIZWlnaHQAZ2V0Q29tcHV0ZWRSaWdodABsZWZ0AGdldENvbXB1dGVkTGVmdAByZXNldABfX2Rlc3RydWN0AGZsb2F0AHVpbnQ2NF90AHVzZVdlYkRlZmF1bHRzAHNldFVzZVdlYkRlZmF1bHRzAHNldEFsaWduSXRlbXMAZ2V0QWxpZ25JdGVtcwBzZXRGbGV4QmFzaXMAZ2V0RmxleEJhc2lzAENhbm5vdCBnZXQgbGF5b3V0IHByb3BlcnRpZXMgb2YgbXVsdGktZWRnZSBzaG9ydGhhbmRzAHNldFBvaW50U2NhbGVGYWN0b3IATWVhc3VyZUNhbGxiYWNrV3JhcHBlcgBEaXJ0aWVkQ2FsbGJhY2tXcmFwcGVyAENhbm5vdCByZXNldCBhIG5vZGUgc3RpbGwgYXR0YWNoZWQgdG8gYSBvd25lcgBzZXRCb3JkZXIAZ2V0Qm9yZGVyAGdldENvbXB1dGVkQm9yZGVyAGdldE51bWJlcgBoYW5kbGUudHlwZSgpID09IFN0eWxlVmFsdWVIYW5kbGU6OlR5cGU6Ok51bWJlcgB1bnNpZ25lZCBjaGFyAHRvcABnZXRDb21wdXRlZFRvcABzZXRGbGV4V3JhcABnZXRGbGV4V3JhcABzZXRHYXAAZ2V0R2FwACVwAHNldEhlaWdodEF1dG8Ac2V0RmxleEJhc2lzQXV0bwBzZXRQb3NpdGlvbkF1dG8Ac2V0TWFyZ2luQXV0bwBzZXRXaWR0aEF1dG8AU2NhbGUgZmFjdG9yIHNob3VsZCBub3QgYmUgbGVzcyB0aGFuIHplcm8Ac2V0QXNwZWN0UmF0aW8AZ2V0QXNwZWN0UmF0aW8Ac2V0UG9zaXRpb24AZ2V0UG9zaXRpb24Abm90aWZ5T25EZXN0cnVjdGlvbgBzZXRGbGV4RGlyZWN0aW9uAGdldEZsZXhEaXJlY3Rpb24Ac2V0RGlyZWN0aW9uAGdldERpcmVjdGlvbgBzZXRNYXJnaW4AZ2V0TWFyZ2luAGdldENvbXB1dGVkTWFyZ2luAG1hcmtMYXlvdXRTZWVuAG5hbgBib3R0b20AZ2V0Q29tcHV0ZWRCb3R0b20AYm9vbABlbXNjcmlwdGVuOjp2YWwAc2V0RmxleFNocmluawBnZXRGbGV4U2hyaW5rAHNldEFsd2F5c0Zvcm1zQ29udGFpbmluZ0Jsb2NrAE1lYXN1cmVDYWxsYmFjawBEaXJ0aWVkQ2FsbGJhY2sAZ2V0TGVuZ3RoAHdpZHRoAHNldE1heFdpZHRoAGdldE1heFdpZHRoAHNldFdpZHRoAGdldFdpZHRoAHNldE1pbldpZHRoAGdldE1pbldpZHRoAGdldENvbXB1dGVkV2lkdGgAcHVzaAAvaG9tZS9ydW5uZXIvd29yay95b2dhL3lvZ2EvamF2YXNjcmlwdC8uLi95b2dhL3N0eWxlL1NtYWxsVmFsdWVCdWZmZXIuaAAvaG9tZS9ydW5uZXIvd29yay95b2dhL3lvZ2EvamF2YXNjcmlwdC8uLi95b2dhL3N0eWxlL1N0eWxlVmFsdWVQb29sLmgAdW5zaWduZWQgbG9uZwBzZXRCb3hTaXppbmcAZ2V0Qm94U2l6aW5nAHN0ZDo6d3N0cmluZwBzdGQ6OnN0cmluZwBzdGQ6OnUxNnN0cmluZwBzdGQ6OnUzMnN0cmluZwBzZXRQYWRkaW5nAGdldFBhZGRpbmcAZ2V0Q29tcHV0ZWRQYWRkaW5nAFRyaWVkIHRvIGNvbnN0cnVjdCBZR05vZGUgd2l0aCBudWxsIGNvbmZpZwBBdHRlbXB0aW5nIHRvIGNvbnN0cnVjdCBOb2RlIHdpdGggbnVsbCBjb25maWcAY3JlYXRlV2l0aENvbmZpZwBpbmYAc2V0QWxpZ25TZWxmAGdldEFsaWduU2VsZgBTaXplAHZhbHVlAFZhbHVlAGNyZWF0ZQBtZWFzdXJlAHNldFBvc2l0aW9uVHlwZQBnZXRQb3NpdGlvblR5cGUAaXNSZWZlcmVuY2VCYXNlbGluZQBzZXRJc1JlZmVyZW5jZUJhc2VsaW5lAGNvcHlTdHlsZQBkb3VibGUATm9kZQBleHRlbmQAaW5zZXJ0Q2hpbGQAZ2V0Q2hpbGQAcmVtb3ZlQ2hpbGQAdm9pZABzZXRFeHBlcmltZW50YWxGZWF0dXJlRW5hYmxlZABpc0V4cGVyaW1lbnRhbEZlYXR1cmVFbmFibGVkAGRpcnRpZWQAQ2Fubm90IHJlc2V0IGEgbm9kZSB3aGljaCBzdGlsbCBoYXMgY2hpbGRyZW4gYXR0YWNoZWQAdW5zZXRNZWFzdXJlRnVuYwB1bnNldERpcnRpZWRGdW5jAHNldEVycmF0YQBnZXRFcnJhdGEATWVhc3VyZSBmdW5jdGlvbiByZXR1cm5lZCBhbiBpbnZhbGlkIGRpbWVuc2lvbiB0byBZb2dhOiBbd2lkdGg9JWYsIGhlaWdodD0lZl0ARXhwZWN0IGN1c3RvbSBiYXNlbGluZSBmdW5jdGlvbiB0byBub3QgcmV0dXJuIE5hTgBOQU4ASU5GAGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGZsb2F0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8Y2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgY2hhcj4Ac3RkOjpiYXNpY19zdHJpbmc8dW5zaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2lnbmVk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",!gr(or)){var pr=or;or=r.locateFile?r.locateFile(pr,s):s+pr}function Cn(){var he=or;try{if(he==or&&c)return new Uint8Array(c);if(gr(he))try{var Se=im(he.slice(37)),Ge=new Uint8Array(Se.length);for(he=0;he<Se.length;++he)Ge[he]=Se.charCodeAt(he);var ot=Ge}catch{throw Error("Converting base64 string to bytes failed.")}else ot=void 0;var ft=ot;if(ft)return ft;throw"both async and sync fetching of the wasm failed"}catch(Wt){nr(Wt)}}function Qt(){return c||typeof fetch!="function"?Promise.resolve().then(function(){return Cn()}):fetch(or,{credentials:"same-origin"}).then(function(he){if(!he.ok)throw"failed to load wasm binary file at '"+or+"'";return he.arrayBuffer()}).catch(function(){return Cn()})}function Ur(he){for(;0<he.length;)he.shift()(r)}function Ht(he){if(he===void 0)return"_unknown";he=he.replace(/[^a-zA-Z0-9_]/g,"$");var Se=he.charCodeAt(0);return 48<=Se&&57>=Se?"_"+he:he}function Nn(he,Se){return he=Ht(he),function(){return Se.apply(this,arguments)}}var ao=[{},{value:void 0},{value:null},{value:!0},{value:!1}],Ps=[];function Mn(he){var Se=Error,Ge=Nn(he,function(ot){this.name=he,this.message=ot,ot=Error(ot).stack,ot!==void 0&&(this.stack=this.toString()+`
|
|
807
|
+
`)}var f7n={WRONG_PHASE:"that action does not belong to the current phase",NOT_YOUR_TURN:"it is not your turn to act",ALREADY_PICKED:"your roster was already submitted",INVALID_ROSTER:"a roster must name exactly three classes",NO_ACTIVE_UNIT:"no unit is currently activated",ACTIVATION_IN_PROGRESS:"another unit is already mid-activation",UNIT_NOT_FOUND:"no unit with that id exists",NOT_YOUR_UNIT:"that unit is not yours to control (it may belong to an ally or an opponent)",UNIT_ALREADY_ACTIVATED:"that unit has already acted this cycle",NOT_ENOUGH_AP:"not enough AP left for that action",ALREADY_ATTACKED:"this unit has already made its one basic attack this activation",SKILL_ON_COOLDOWN:"that skill is still on cooldown",WRONG_CLASS:"this unit class does not have that skill",TARGET_NOT_VISIBLE:"that target is not inside your vision",TARGET_NOT_ENEMY:"that target is not an enemy",TARGET_NOT_ALLY:"that target is not a friendly unit",OUT_OF_RANGE:"the target is beyond this action's range",TOO_CLOSE:"the target is adjacent, and Piercing Shot cannot hit adjacent enemies",CELL_OFF_MAP:"that hex is outside the map",CELL_OCCUPIED:"that hex is taken, and the hex you are already standing on counts as taken too",UNREACHABLE:"that hex is farther than this unit can move in one activation",LANDING_NOT_ADJACENT:"the landing hex is not adjacent to the charge target"};function h7n(e){return e?`${e} \u2014 ${f7n[e]}`:"unknown reason"}function g7n(e){switch(e.type){case"chooseRoster":return"Submit roster";case"forfeit":return"Forfeit";case"beginActivation":return`Activate ${e.unitId}`;case"endActivation":return"End activation";case"move":return`Move to ${Wq(e.to)}`;case"attack":return`Basic attack ${e.targetId}`;case"charge":return`Charge ${e.targetId}, landing at ${Wq(e.landing)}`;case"piercingShot":return`Piercing Shot ${e.targetId}`;case"firstAid":return`First Aid ${e.targetId}`}}var lme={type:"object",additionalProperties:!1,required:["kind","reasoning","picks","unitId","steps"],properties:{kind:{type:"string",enum:["roster","activation"],description:"The current decision type."},reasoning:{type:"string",description:"Explain the intent of this decision in one sentence."},picks:{type:["array","null"],minItems:3,maxItems:3,items:{type:"string",enum:["warrior","archer","medic"]},description:"The three classes for a roster decision; null for an activation decision."},unitId:{type:["string","null"],description:"The unit to activate when a unit choice is required; otherwise null."},steps:{type:["array","null"],maxItems:2,description:"Actions for an activation decision; null for a roster decision; an empty list skips the unit.",items:{type:"object",additionalProperties:!1,required:["type","moveToQ","moveToR","targetId","landingQ","landingR"],properties:{type:{type:"string",enum:["move","attack","charge","piercingShot","firstAid"]},moveToQ:{type:["number","null"],description:"For move: q of the hex to move TO, never the current hex. Otherwise null."},moveToR:{type:["number","null"],description:"For move: r of the hex to move TO, never the current hex. Otherwise null."},targetId:{type:["string","null"],description:"Target unit for attack, charge, piercingShot, or firstAid; otherwise null."},landingQ:{type:["number","null"],description:"Landing q for charge; otherwise null."},landingR:{type:["number","null"],description:"Landing r for charge; otherwise null."}}}}}};function Drr(e,t){return e.needUnit?(t?e.previews?.[t]:void 0)??[]:e.legal}async function l4e(e){return e.backend==="custom-api"?A7n(e):y7n(e)}async function y7n(e){let t=await NCe(),r=a4e(e.battleStrategy),n,o=e.backend??"tiny-agent";try{n=await t.agent({backend:o,session:{model:e.model,...e.effort?{effort:e.effort}:{},cwd:e.cwd??process.cwd(),systemPrompt:r,...o==="claude"?{outputSchema:lme}:{}},...o==="codex"?{permission:{sandbox:"read-only",approval:"never"}}:o==="claude"?{permission:{approval:"never"}}:{}})}catch(a){throw await t.close(),a}let i=async a=>{e.onDebug?.({type:"input",systemPrompt:r,prompt:a});let u=await n.prompt(a,o==="claude"?void 0:{outputSchema:lme}),c=u.structured;if(e.onDebug?.({type:"output",text:u.text,...c!==void 0?{structured:c}:{}}),c&&typeof c=="object")return c;try{return JSON.parse(u.text)}catch{return{}}},s=!1;return{name:e.name,async decideRoster(a){let u=await i(u4e(a));return{kind:"roster",picks:Age(u.picks)??["warrior","archer","medic"],...u.reasoning?{reasoning:u.reasoning}:{}}},async decideActivation(a){let u=await i(c4e(a)),c=[];for(let d of u.steps??[]){let m=yge(d,Drr(a,u.unitId));m&&c.push(m)}return{kind:"activation",...u.unitId?{unitId:u.unitId}:{},steps:c,...u.reasoning?{reasoning:u.reasoning}:{}}},async close(){if(!s){s=!0;try{await n.close()}finally{await t.close()}}}}}async function A7n(e){let t=e.apiFormat,r=a4e(e.battleStrategy),n=`arena-custom-api-${t}`,o="arena-model",i=k3.open({databasePath:":memory:",inMemory:!0,models:[{id:o,spec:{provider:n,model:e.model,api:t,baseUrl:e.baseUrl,cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},thinkingLevels:["off"],defaultThinkingLevel:"off"}],apiKeys:{[n]:e.apiKey}}),s;try{s=await i.create({cwd:e.cwd??process.cwd(),modelId:o,reasoning:"off",systemPrompt:r})}catch(c){throw await i.close(),c}let a=async c=>{e.onDebug?.({type:"input",systemPrompt:r,prompt:c});for await(let d of s.prompt({prompt:c,outputSchema:lme,structuredRetryBudget:1})){if(d.type==="turn.completed"){if(e.onDebug?.({type:"output",text:d.finalText,...d.structured!==void 0?{structured:d.structured}:{}}),d.structured&&typeof d.structured=="object")return d.structured;throw new Error(`Custom API model (${t}) returned no structured output`)}if(d.type==="turn.failed")throw new Error(`Custom API turn failed (${t}, ${d.error.code}): ${d.error.message}`)}throw new Error(`Custom API turn (${t}) ended without a terminal event`)},u=!1;return{name:e.name,async decideRoster(c){let d=await a(u4e(c));return{kind:"roster",picks:Age(d.picks)??["warrior","archer","medic"],...d.reasoning?{reasoning:d.reasoning}:{}}},async decideActivation(c){let d=await a(c4e(c)),m=[];for(let f of d.steps??[]){let g=yge(f,Drr(c,d.unitId));g&&m.push(g)}return{kind:"activation",...d.unitId?{unitId:d.unitId}:{},steps:m,...d.reasoning?{reasoning:d.reasoning}:{}}},async close(){if(!u){u=!0;try{await s.close()}finally{await i.close()}}}}}function Lrr(e){let t=new Set,r=new Set,n=[],o=[],i=()=>{if(e.readyState===1)for(;o.length>0;)e.send(o.shift())},s=()=>{if(t.size!==0)for(;n.length>0;){let a=n.shift();for(let u of[...t])u(a)}};return e.addEventListener("open",()=>i()),e.addEventListener("message",a=>{n.push(typeof a.data=="string"?a.data:String(a.data)),s()}),e.addEventListener("close",()=>{for(let a of[...r])a()}),e.readyState===1&&i(),{send(a){o.push(a),i()},onMessage(a){return t.add(a),s(),()=>t.delete(a)},onClose(a){return r.add(a),()=>r.delete(a)},close(){e.close()}}}function Urr(e,t){let r=new Map,n=new Set,o=1;e.onMessage(m=>{let f;try{f=JSON.parse(m)}catch{return}if(f.t==="event"){for(let A of[...n])A.push(f.event);return}if(f.id===null)return;let g=r.get(f.id);g&&(r.delete(f.id),f.t==="error"?g.reject(new Error(f.message)):g.resolve(f))}),e.onClose(()=>{for(let m of r.values())m.reject(new Error("CHANNEL_CLOSED"));r.clear()});let i=m=>{let f=o++,g={...m,id:f};return new Promise((A,S)=>{r.set(f,{resolve:A,reject:S}),e.send(JSON.stringify(g))})},s=async m=>{let f=await i({t:"send",action:m});if(f.t!=="sent")throw new Error(`\u610F\u5916\u54CD\u5E94\uFF1A${f.t}`);return f.result},a=async()=>{let m=await i({t:"view"});if(m.t!=="view")throw new Error(`\u610F\u5916\u54CD\u5E94\uFF1A${m.t}`);return m.view},u=async()=>{let m=await i({t:"legal"});if(m.t!=="legal")throw new Error(`\u610F\u5916\u54CD\u5E94\uFF1A${m.t}`);return[...m.actions]},c=()=>({[Symbol.asyncIterator]:()=>d()});function d(){let m=[],f=null,g=!1,A={push(b){if(f){let k=f;f=null,k({value:b,done:!1})}else m.push(b)}};n.add(A),n.size===1&&e.send(JSON.stringify({t:"sub"}));let S=()=>{if(!g&&(g=!0,n.delete(A),n.size===0&&e.send(JSON.stringify({t:"unsub"})),f)){let b=f;f=null,b({value:void 0,done:!0})}return{value:void 0,done:!0}};return{next(){let b=m.shift();return b!==void 0?Promise.resolve({value:b,done:!1}):g?Promise.resolve({value:void 0,done:!0}):new Promise(k=>{f=k})},return(){return Promise.resolve(S())}}}return{playerId:t,send:s,view:a,legalActions:u,stream:c}}function _7n(e,t){return new Promise((r,n)=>{let o=e.onMessage(i=>{let s;try{s=JSON.parse(i)}catch{return}if(s.t==="queued"){t.onQueued?.({ticketId:s.ticketId,preference:s.preference,fallbackAt:s.fallbackAt});return}if(s.t==="downgraded"){t.onDowngraded?.({ticketId:s.ticketId});return}s.t==="joined"&&(o(),r({playerId:s.playerId,matchId:s.matchId,mode:s.mode,sideId:s.sideId,teamSeat:s.teamSeat}))});e.onClose(()=>n(new Error("CHANNEL_CLOSED"))),e.send(JSON.stringify({t:"join",agent:t.agent,preference:t.preference}))})}async function $rr(e,t){let r=e("/matchmake"),n=await _7n(r,t),{playerId:o,matchId:i}=n;r.close();let s=e(`/match/${i}?seat=${o}`);return{...n,transport:Urr(s,o),channel:s}}var pme=class{name;channel;constructor(t,r){this.name=t,this.channel=r}thinking(t,r,n){console.log(`[${this.name}] LLM decision ${(n/1e3).toFixed(1)}s`),r&&console.log(`[${this.name}] reasoning: ${r}`),this.report({kind:"thinking",...r?{text:r}:{},elapsedMs:n})}rejected(t,r,n){console.warn(`[${this.name}] Action rejected ${r.type}: ${n}`),this.report({kind:"rejected",action:r,reason:n})}interrupted(t,r){console.log(`[${this.name}] Plan interrupted; reconsidering: ${r}`),this.report({kind:"interrupted",text:r})}forced(t,r){this.report({kind:"forced",action:r})}report(t){this.channel?.send(JSON.stringify({t:"trace",entry:t}))}};import{randomBytes as dao}from"node:crypto";import{Stream as Eno}from"node:stream";import hW from"node:process";var Bje=vn(is(),1);import mW from"node:process";function Xrr(e,t,{signal:r,edges:n}={}){let o,i=null,s=n!=null&&n.includes("leading"),a=n==null||n.includes("trailing"),u=()=>{i!==null&&(e.apply(o,i),o=void 0,i=null)},c=()=>{a&&u(),g()},d=null,m=()=>{d!=null&&clearTimeout(d),d=setTimeout(()=>{d=null,c()},t)},f=()=>{d!==null&&(clearTimeout(d),d=null)},g=()=>{f(),o=void 0,i=null},A=()=>{u()},S=function(...b){if(r?.aborted)return;o=this,i=b;let k=d==null;m(),s&&k&&u()};return S.schedule=m,S.cancel=g,S.flush=A,r?.addEventListener("abort",g,{once:!0}),S}function Zrr(e,t=0,r={}){typeof r!="object"&&(r={});let{leading:n=!1,trailing:o=!0,maxWait:i}=r,s=Array(2);n&&(s[0]="leading"),o&&(s[1]="trailing");let a,u=null,c=Xrr(function(...f){a=e.apply(this,f),u=null},t,{edges:s}),d=function(...f){return i!=null&&(u===null&&(u=Date.now()),Date.now()-u>=i)?(a=e.apply(this,f),u=Date.now(),c.cancel(),c.schedule(),a):(c.apply(this,f),a)},m=()=>(c.flush(),a);return d.cancel=c.cancel,d.flush=m,d}function fme(e,t=0,r={}){let{leading:n=!0,trailing:o=!0}=r;return Zrr(e,t,{leading:n,maxWait:t,trailing:o})}var ou={};vo(ou,{ConEmu:()=>anr,beep:()=>pZn,beginSynchronizedOutput:()=>onr,clearScreen:()=>oZn,clearTerminal:()=>aZn,clearViewport:()=>iZn,cursorBackward:()=>Q7n,cursorDown:()=>q7n,cursorForward:()=>F7n,cursorGetPosition:()=>V7n,cursorHide:()=>K7n,cursorLeft:()=>rnr,cursorMove:()=>B7n,cursorNextLine:()=>H7n,cursorPrevLine:()=>J7n,cursorRestorePosition:()=>j7n,cursorSavePosition:()=>G7n,cursorShow:()=>W7n,cursorTo:()=>$7n,cursorUp:()=>tnr,endSynchronizedOutput:()=>inr,enterAlternativeScreen:()=>uZn,eraseDown:()=>eZn,eraseEndLine:()=>X7n,eraseLine:()=>nnr,eraseLines:()=>Y7n,eraseScreen:()=>hme,eraseStartLine:()=>Z7n,eraseUp:()=>tZn,exitAlternativeScreen:()=>cZn,iTerm:()=>snr,image:()=>mZn,link:()=>dZn,scrollDown:()=>nZn,scrollUp:()=>rZn,setCwd:()=>fZn,synchronizedOutput:()=>lZn});import eF from"node:process";import D7n from"node:os";var Zq=globalThis.window?.document!==void 0,upu=globalThis.process?.versions?.node!==void 0,cpu=globalThis.process?.versions?.bun!==void 0,lpu=globalThis.Deno?.version?.deno!==void 0,ppu=globalThis.process?.versions?.electron!==void 0,dpu=globalThis.navigator?.userAgent?.includes("jsdom")===!0,mpu=typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope,fpu=typeof DedicatedWorkerGlobalScope<"u"&&globalThis instanceof DedicatedWorkerGlobalScope,hpu=typeof SharedWorkerGlobalScope<"u"&&globalThis instanceof SharedWorkerGlobalScope,gpu=typeof ServiceWorkerGlobalScope<"u"&&globalThis instanceof ServiceWorkerGlobalScope,O3=globalThis.navigator?.userAgentData?.platform,ypu=O3==="macOS"||globalThis.navigator?.platform==="MacIntel"||globalThis.navigator?.userAgent?.includes(" Mac ")===!0||globalThis.process?.platform==="darwin",Apu=O3==="Windows"||globalThis.navigator?.platform==="Win32"||globalThis.process?.platform==="win32",_pu=O3==="Linux"||globalThis.navigator?.platform?.startsWith("Linux")===!0||globalThis.navigator?.userAgent?.includes(" Linux ")===!0||globalThis.process?.platform==="linux",Epu=O3==="iOS"||globalThis.navigator?.platform==="MacIntel"&&globalThis.navigator?.maxTouchPoints>1||/iPad|iPhone|iPod/.test(globalThis.navigator?.platform),Spu=O3==="Android"||globalThis.navigator?.platform==="Android"||globalThis.navigator?.userAgent?.includes(" Android ")===!0||globalThis.process?.platform==="android";var Qs="\x1B[",tF="\x1B]",BP="\x07",N3=";",enr=!Zq&&eF.env.TERM_PROGRAM==="Apple_Terminal",L7n=!Zq&&eF.platform==="win32",U7n=!Zq&&(eF.env.TERM?.startsWith("screen")||eF.env.TERM?.startsWith("tmux")||eF.env.TMUX!==void 0),_4e=Zq?()=>{throw new Error("`process.cwd()` only works in Node.js, not the browser.")}:eF.cwd,rF=e=>U7n?"\x1BPtmux;"+e.replaceAll("\x1B","\x1B\x1B")+"\x1B\\":e,$7n=(e,t)=>{if(typeof e!="number")throw new TypeError("The `x` argument is required");return typeof t!="number"?Qs+(e+1)+"G":Qs+(t+1)+N3+(e+1)+"H"},B7n=(e,t)=>{if(typeof e!="number")throw new TypeError("The `x` argument is required");let r="";return e<0?r+=Qs+-e+"D":e>0&&(r+=Qs+e+"C"),t<0?r+=Qs+-t+"A":t>0&&(r+=Qs+t+"B"),r},tnr=(e=1)=>Qs+e+"A",q7n=(e=1)=>Qs+e+"B",F7n=(e=1)=>Qs+e+"C",Q7n=(e=1)=>Qs+e+"D",rnr=Qs+"G",G7n=enr?"\x1B7":Qs+"s",j7n=enr?"\x1B8":Qs+"u",V7n=Qs+"6n",H7n=Qs+"E",J7n=Qs+"F",K7n=Qs+"?25l",W7n=Qs+"?25h",Y7n=e=>{let t="";for(let r=0;r<e;r++)t+=nnr+(r<e-1?tnr():"");return e&&(t+=rnr),t},X7n=Qs+"K",Z7n=Qs+"1K",nnr=Qs+"2K",eZn=Qs+"J",tZn=Qs+"1J",hme=Qs+"2J",rZn=Qs+"S",nZn=Qs+"T",oZn="\x1Bc",iZn=`${hme}${Qs}H`,sZn=()=>{if(Zq||!L7n)return!1;let e=D7n.release().split("."),t=Number(e[0]),r=Number(e[2]??0);return t<10||t===10&&r<10586},aZn=sZn()?`${hme}${Qs}0f`:`${hme}${Qs}3J${Qs}H`,uZn=Qs+"?1049h",cZn=Qs+"?1049l",onr=Qs+"?2026h",inr=Qs+"?2026l",lZn=e=>onr+e+inr,pZn=BP,dZn=(e,t)=>{let r=rF(`${tF}8${N3}${N3}${t}${BP}`),n=rF(`${tF}8${N3}${N3}${BP}`);return r+e+n},mZn=(e,t={})=>{let r=`${tF}1337;File=inline=1`;t.width&&(r+=`;width=${t.width}`),t.height&&(r+=`;height=${t.height}`),t.preserveAspectRatio===!1&&(r+=";preserveAspectRatio=0");let n=Buffer.from(e);return rF(r+`;size=${n.byteLength}:`+n.toString("base64")+BP)},snr={setCwd:(e=_4e())=>rF(`${tF}50;CurrentDir=${e}${BP}`),annotation(e,t={}){let r=`${tF}1337;`,n=t.x!==void 0,o=t.y!==void 0;if((n||o)&&!(n&&o&&t.length!==void 0))throw new Error("`x`, `y` and `length` must be defined when `x` or `y` is defined");return e=e.replaceAll("|",""),r+=t.isHidden?"AddHiddenAnnotation=":"AddAnnotation=",t.length>0?r+=(n?[e,t.length,t.x,t.y]:[t.length,e]).join("|"):r+=e,rF(r+BP)}},anr={setCwd:(e=_4e())=>rF(`${tF}9;9;${e}${BP}`)},fZn=(e=_4e())=>snr.setCwd(e)+anr.setCwd(e);import{env as E4e}from"node:process";var unr=e=>e in E4e&&E4e[e]!=="0"&&E4e[e]!=="false",hZn=unr("CI")||unr("CONTINUOUS_INTEGRATION"),gme=hZn;var gZn=e=>{let t=new Set;do for(let r of Reflect.ownKeys(e))t.add([e,r]);while((e=Reflect.getPrototypeOf(e))&&e!==Object.prototype);return t};function S4e(e,{include:t,exclude:r}={}){let n=o=>{let i=s=>typeof s=="string"?o===s:s.test(o);return t?t.some(i):r?!r.some(i):!0};for(let[o,i]of gZn(e.constructor.prototype)){if(i==="constructor"||!n(i))continue;let s=Reflect.getOwnPropertyDescriptor(o,i);s&&typeof s.value=="function"&&(e[i]=e[i].bind(e))}return e}var Tsr=vn(I4e(),1);import{PassThrough as fnr}from"node:stream";var hnr=["assert","count","countReset","debug","dir","dirxml","error","group","groupCollapsed","groupEnd","info","log","table","time","timeEnd","timeLog","trace","warn"],T4e={},yZn=e=>{let t=new fnr,r=new fnr;t.write=o=>{e("stdout",o)},r.write=o=>{e("stderr",o)};let n=new console.Console(t,r);for(let o of hnr)T4e[o]=console[o],console[o]=n[o];return()=>{for(let o of hnr)console[o]=T4e[o];T4e={}}},gnr=yZn;var cfe=vn(Sme(),1);var AZn=(()=>{var e=import.meta.url;return(function(t){t=t||{};var r;r||(r=typeof t<"u"?t:{});var n,o;r.ready=new Promise(function(he,Se){n=he,o=Se});var i=Object.assign({},r),s="";typeof document<"u"&&document.currentScript&&(s=document.currentScript.src),e&&(s=e),s.indexOf("blob:")!==0?s=s.substr(0,s.replace(/[?#].*/,"").lastIndexOf("/")+1):s="";var a=r.print||console.log.bind(console),u=r.printErr||console.warn.bind(console);Object.assign(r,i),i=null;var c;r.wasmBinary&&(c=r.wasmBinary);var d=r.noExitRuntime||!0;typeof WebAssembly!="object"&&nr("no native wasm support detected");var m,f=!1;function g(he,Se,Ge){Ge=Se+Ge;for(var ot="";!(Se>=Ge);){var ft=he[Se++];if(!ft)break;if(ft&128){var Wt=he[Se++]&63;if((ft&224)==192)ot+=String.fromCharCode((ft&31)<<6|Wt);else{var lr=he[Se++]&63;ft=(ft&240)==224?(ft&15)<<12|Wt<<6|lr:(ft&7)<<18|Wt<<12|lr<<6|he[Se++]&63,65536>ft?ot+=String.fromCharCode(ft):(ft-=65536,ot+=String.fromCharCode(55296|ft>>10,56320|ft&1023))}}else ot+=String.fromCharCode(ft)}return ot}var A,S,b,k,R,N,K,ne,ee;function Te(){var he=m.buffer;A=he,r.HEAP8=S=new Int8Array(he),r.HEAP16=k=new Int16Array(he),r.HEAP32=N=new Int32Array(he),r.HEAPU8=b=new Uint8Array(he),r.HEAPU16=R=new Uint16Array(he),r.HEAPU32=K=new Uint32Array(he),r.HEAPF32=ne=new Float32Array(he),r.HEAPF64=ee=new Float64Array(he)}var Ee,xe=[],We=[],Ot=[];function Qe(){var he=r.preRun.shift();xe.unshift(he)}var pt=0,er=null,vt=null;function nr(he){throw r.onAbort&&r.onAbort(he),he="Aborted("+he+")",u(he),f=!0,he=new WebAssembly.RuntimeError(he+". Build with -sASSERTIONS for more info."),o(he),he}function gr(he){return he.startsWith("data:application/octet-stream;base64,")}var or;if(or="data:application/octet-stream;base64,AGFzbQEAAAABugM3YAF/AGACf38AYAF/AX9gA39/fwBgAn98AGACf38Bf2ADf39/AX9gBH9/f30BfWADf398AGAAAGAEf39/fwBgAX8BfGACf38BfGAFf39/f38Bf2AAAX9gA39/fwF9YAZ/f31/fX8AYAV/f39/fwBgAn9/AX1gBX9/f319AX1gAX8BfWADf35/AX5gB39/f39/f38AYAZ/f39/f38AYAR/f39/AX9gBn9/f319fQF9YAR/f31/AGADf399AX1gBn98f39/fwF/YAR/fHx/AGACf30AYAh/f39/f39/fwBgDX9/f39/f39/f39/f38AYAp/f39/f39/f39/AGAFf39/f38BfGAEfHx/fwF9YA1/fX1/f399fX9/f39/AX9gB39/f319f38AYAJ+fwF/YAN/fX0BfWABfAF8YAN/fHwAYAR/f319AGAHf39/fX19fQF9YA1/fX99f31/fX19fX1/AX9gC39/f39/f399fX19AX9gCH9/f39/f319AGAEf39+fgBgB39/f39/f38Bf2ACfH8BfGAFf398fH8AYAN/f38BfGAEf39/fABgA39/fQBgBn9/fX99fwF/ArUBHgFhAWEAHwFhAWIAAwFhAWMACQFhAWQAFgFhAWUAEQFhAWYAIAFhAWcAAAFhAWgAIQFhAWkAAwFhAWoAAAFhAWsAFwFhAWwACgFhAW0ABQFhAW4AAwFhAW8AAQFhAXAAFwFhAXEABgFhAXIAAAFhAXMAIgFhAXQACgFhAXUADQFhAXYAFgFhAXcAAgFhAXgAAwFhAXkAGAFhAXoAAgFhAUEAAQFhAUIAEQFhAUMAAQFhAUQAAAOiAqACAgMSBwcACRkDAAoRBgYKEwAPDxMBBiMTCgcHGgMUASQFJRQHAwMKCgMmAQYYDxobFAAKBw8KBwMDAgkCAAAFGwACBwIHBgIDAQMIDAABKAkHBQURACkZASoAAAIrLAIALQcHBy4HLwkFCgMCMA0xAgMJAgACAQYKAQIBBQEACQIFAQEABQAODQ0GFQIBHBUGAgkCEAAAAAUyDzMMBQYINAUCAwUODg41AgMCAgIDBgICNgIBDAwMAQsLCwsLCx0CAAIAAAABABABBQICAQMCEgMMCwEBAQEBAQsLAQICAwICAgICAgIDAgIICAEICAgEBAQEBAQEBAQABAQABAQEBAAE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GiABQQA2AvADIAFCADcC6AMgAigC7AMiAyACKALoAyIERwRAIAMgBGsiBEEASA0FIAEgBBAeIgM2AuwDIAEgAzYC6AMgASADIARqNgLwAyACKALoAyIEIAIoAuwDIghHBEADQCADIAQoAgA2AgAgA0EEaiEDIARBBGoiBCAIRw0ACwsgASADNgLsAwsgASACKQL0AzcC9AMgASACKAKEBDYChAQgASACKQL8AzcC/AMgAUEANgLkAwsgBSABNgIAIAEgADYC5AMLIAZBAWohBiAFQQRqIgUgB0cNAAsLDwsQAgALUAACQAJAAkACQAJAIAIOBAQAAQIDCyAAIAEgAUEwahBDDwsgACABIAFBMGogAxBEDwsgACABIAFBMGoQQg8LECQACyAAIAEgAUEwaiADEEULcAIBfwF9IwBBEGsiBCQAIARBCGogACABQQJ0QdwlaigCACACEDZDAADAfyEFAkACQAJAIAQtAAxBAWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAACAFIAVbGwt5AgF/AX0jAEEQayIDJAAgA0EIaiAAIAFBAnRB7CVqKAIAIAIQU0MAAMB/IQQCQAJAAkAgAy0ADEEBaw4CAAECCyADKgIIIQQMAQsgAyoCCEMAAAAAlEMK1yM8lCEECyADQRBqJAAgBEMAAAAAl0MAAAAAIAQgBFsbC1QAAkACQAJAAkACQCACDgQEAAECAwsgACABIAFBwgBqEEMPCyAAIAEgAUHCAGogAxBEDwsgACABIAFBwgBqEEIPCxAkAAsgACABIAFBwgBqIAMQRQsvACAAIAJFQQF0IgIgASADEGAgACACIAEQS5IgACACIAEgAxB/IAAgAiABEFKSkgvOAQIDfwJ9IwBBEGsiAyQAQQEhBCADQQhqIABB/ABqIgUgACABQQF0akH2AGoiAS8BABAfAkACQCADKgIIIgcgAioCACIGXARAIAcgB1sEQCACLQAEIQIMAgsgBiAGXCEECyACLQAEIQIgBEUNACADLQAMIAJB/wFxRg0BCyAFIAEgBiACEDkDQCAALQAAIgFBBHENASAAIAFBBHI6AAAgACgCECIBBEAgACABEQAACyAAQYCAgP4HNgKcASAAKALkAyIADQALCyADQRBqJAALzgECA38CfSMAQRBrIgMk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AWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAACAFIAVbGwscACAAIAFBCCACpyACQiCIpyADpyADQiCIpxAVCwUAEFgACzkAIABFBEBBAA8LAn8gAUGAf3FBgL8DRiABQf8ATXJFBEBB/DtBGTYCAEF/DAELIAAgAToAAEEBCwvEAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABQQlrDhIACgsMCgsCAwQFDAsMDAoLBwgJCyACIAIoAgAiAUEEajYCACAAIAEoAgA2AgAPCwALIAIgAigCACIBQQRqNgIAIAAgATIBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATMBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATAAADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATEAADcDAA8LAAsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKwMAOQMADwsgACACIAMRAQALDwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMAC84BAgN/An0jAEEQayIDJABBASEEIANBCGogAEH8AGoiBSAAIAFBAXRqQegAaiIBLwEAEB8CQAJAIAMqAggiByACKgIAIgZcBEAgByAHWwRAIAItAAQhAgwCCyAGIAZcIQQLIAItAAQhAiAERQ0AIAMtAAwgAkH/AXFGDQELIAUgASAGIAIQOQNAIAAtAAAiAUEEcQ0BIAAgAUEEcjoAACAAKAIQIgEEQCAAIAERAAALIABBgICA/gc2ApwBIAAoAuQDIgANAAsLIANBEGokAAtdAQR/IAAoAgAhAgNAIAIsAAAiAxBXBEBBfyEEIAAgAkEBaiICNgIAIAFBzJmz5gBNBH9BfyADQTBrIgMgAUEKbCIEaiADIARB/////wdzShsFIAQLIQEMAQsLIAELrhQCEn8BfiMAQdAAayIIJAAgCCABNgJMIAhBN2ohFyAIQThqIRQCQAJAAkACQANAIAEhDSAHIA5B/////wdzSg0BIAcgDmohDgJAAkACQCANIgctAAAiCQRAA0ACQAJAIAlB/wFxIgFFBEAgByEBDAELIAFBJUcNASAH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IQEgAEIANwIEIAAgATYCACABIAA2AgQgAkEQaiQAIAALGwEBfyAABEAgACgCACIBBEAgARAjCyAAECMLC0kBAn9BBBAeIQFBIBAeIgBBADYCHCAAQoCAgICAgIDAPzcCFCAAQgA3AgwgAEEAOgAIIABBAzYCBCAAQQA2AgAgASAANgIAIAELIAAgAkEFR0EAIAIbRQRAQbgwIAMgBBBJDwsgAyAEEHALIgEBfiABIAKtIAOtQiCGhCAEIAARFQAiBUIgiKckASAFpwuoAQEFfyAAKAJUIgMoAgAhBSADKAIEIgQgACgCFCAAKAIcIgdrIgYgBCAGSRsiBgRAIAUgByAGECsaIAMgAygCACAGaiIFNgIAIAMgAygCBCAGayIENgIECyAEIAIgAiAESxsiBARAIAUgASAEECsaIAMgAygCACAEaiIFNgIAIAMgAygCBCAEazYCBAsgBUEAOgAAIAAgACgCLCIBNgIcIAAgATYCFCACCwQAQgALBABBAAuKBQIGfgJ/IAEgASgCAEEHakF4cSIBQRBqNgIAIAAhCSABKQMAIQMgASkDCCEGIwBBIGsiCCQAAkAgBkL///////////8AgyIEQoCAgICAgMCAPH0gBEKAgICAgIDA/8MAfVQEQCAGQgSGIANCPIiEIQQgA0L//////////w+DIgNCgYCAgICAgIAIWgRAIARCgYCAgICAgIDAAHwhAgwCCyAEQoCAgICAgICAQH0hAiADQoCAgICAgICACFINASACIARCAYN8IQIMAQsgA1AgBEKAgICAgIDA//8AVCAEQoCAgICAgMD//wBRG0UEQCAGQgSGIANCPIiEQv////////8Dg0KAgICAgICA/P8AhCECDAELQoCAgICAgID4/wAhAiAEQv///////7//wwBWDQBCACECIARCMIinIgBBkfcASQ0AIAMhAiAGQv///////z+DQoCAgICAgMAAhCIFIQcCQCAAQYH3AGsiAUHAAHEEQCACIAFBQGqthiEHQgAhAgwBCyABRQ0AIAcgAa0iBIYgAkHAACABa62IhCEHIAIgBIYhAgsgCCACNwMQIAggBzcDGAJAQYH4ACAAayIAQcAAcQRAIAUgAEFAaq2IIQNCACEFDAELIABFDQAgBUHAACAAa62GIAMgAK0iAoiEIQMgBSACiCEFCyAIIAM3AwAgCCAF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ASAAKAIAIQAgASACQQFxBH8gASgCACAAaigCAAUgAAsRCwALYQECfyMAQRBrIgIkACABIAAoAgQiA0EBdWohASAAKAIAIQAgAiABIANBAXEEfyABKAIAIABqKAIABSAACxEBAEEQEB4iACACKQMINwMIIAAgAikDADcDACACQRBqJAAgAAtjAQJ/IwBBEGsiAyQAIAEgACgCBCIEQQF1aiEBIAAoAgAhACADIAEgAiAEQQFxBH8gASgCACAAaigCAAUgAAsRAwBBEBAeIgAgAykDCDcDCCAAIAMpAwA3AwAgA0EQaiQAIAALNwEBfyABIAAoAgQiA0EBdWohASAAKAIAIQAgASACIANBAXEEfyABKAIAIABqKAIABSAACxEEAAs5AQF/IAEgACgCBCIEQQF1aiEBIAAoAgAhACABIAIgAyAEQQFxBH8gASgCACAAaigCAAUgAAsRCAALCQAgASAAEQIACwUAQcM7Cw8AIAEgACgCAGogAjYCAAsNACABIAAoAgBqKAIACxgBAX9BEBAeIgBCADcDCCAAQQA2AgAgAAsYAQF/QRAQHiIAQgA3AwAgAEIANwMIIAALDABBMBAeQQBBMBAqCzcBAX8gASAAKAIEIgNBAXVqIQEgACgCACEAIAEgAiADQQFxBH8gASgCACAAaigCAAUgAAsRHgALBQBBvjsLIQAgACABKAIAIAEgASwAC0EASBtBuzsgAigCABAQNgIACyoBAX9BDBAeIgFBADoABCABIAAoAgA2AgggAEEANgIAIAFB2Cc2AgAgAQsFAEG7OwsFAEG4OwshACAAIAEoAgAgASABLAALQQBIG0GkOyACKAIAEBA2AgAL2AEBBH8jAEEgayIDJAAgASgCACIEQfD///8HSQRAAkACQCAEQQtPBEAgBEEPckEBaiIFEB4hBiADIAVBgICAgHhyNgIQIAMgBjYCCCADIAQ2AgwgBCAGaiEFDAELIAMgBDoAEyADQQhqIgYgBGohBSAERQ0BCyAGIAFBBGogBBArGgsgBUEAOgAAIAMgAjYCACADQRhqIANBCGogAyAAEQMAIAMoAhgQHSADKAIYIgAQBiADKAIAEAYgAywAE0EASARAIAMoAggQIwsgA0EgaiQAIAAPCxACAAsqAQF/QQwQHiIBQQA6AAQgASAAKAIANgIIIABBADYCACABQeAmNgIA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AkEIaiAIIAYQHyACIAcgAC8AABAfQQEhAyACKgIIIgogAioCACILXAR/IAogClsNAyALIAtcBSADC0UNAiACLQAMIAItAARHDQILIABBAmohAEEBIQMgBCEGQQEhBCAGRQ0ACyABLwB6IgBBB3FFBEAgBS0AekEHcUUNAgsgCCAAECAiCiAHIAUvAHoQICILWw0BIAogClsNACALIAtcDQELIAFBFGogBUEUakHoABArGiABQfwAaiAFQfwAahCgAQNAIAEtAAAiAEEEcQ0BIAEgAEEEcjoAACABKAIQIgAEQCABIAARAAALIAFBgICA/gc2ApwBIAEoAuQDIgENAAsLIAJBEGokAAvGAwEEfyMAQaAEayICJAAgACgCBCEBIABBADYCBCABBEAgASABKAIAKAIEEQAACyAAKAIIIQEgAEEANgIIIAEEQCABIAEoAgAoAgQRAAALAkAgACgCACIAKALoAyAAKALsA0YEQCAAKALkAw0BIAAgAkEYaiAAKAL0AxBcIgEpAgA3AgAgACABKAIQNgIQIAAgASkCCDcCCCAAQRRqIAFBFGpB6AAQKxogACABKQKMATcCjAEgACABKQKEATcChAEgACABKQJ8NwJ8IAEoApQBIQQgAUEANgKUASAAKAKUASEDIAAgBDYClAEgAwRAIAMQWwsgAEGYAWogAUGYAWpB0AIQKxogACgC6AMiAwRAIAAgAzYC7AMgAxAjCyAAIAEoAugDNgLoAyAAIAEoAuwDNgLsAyAAIAEoAvADNgLwAyABQQA2AvADIAFCADcC6AMgACABKQL8AzcC/AMgACABKQL0AzcC9AMgACABKAKEBDYChAQgASgClAEhACABQQA2ApQBIAAEQCAAEFsLIAJBoARqJAAPCyACQfAcNgIQIABBBUHYJSACQRBqECwQJAALIAJB5hE2AgAgAEEFQdglIAIQLBAkAAsLAEEMEB4gABCiAQsLAEEMEB5BABCiAQsNACAAKAIALQAIQQFxCwoAIAAoAgAoAhQLGQAgAUH/AXEEQBACAAsgACgCACgCEEEBcQsYACAAKAIAIgAgAC0ACEH+AXEgAXI6AAgLJgAgASAAKAIAIgAoAhRHBEAgACABNgIUIAAgACgCDEEBajYCDAsLkgEBAn8jAEEQayICJAAgACgCACEAIAFDAAAAAGAEQCABIAAqAhhcBEAgACABOAIYIAAgACgCDEEBajYCDAsgAkEQaiQADwsgAkGIFDYCACMAQRBrIgMkACADIAI2AgwCQCAARQRAQbgwQdglIAIQSRoMAQsgAEEAQQVB2CUgAiAAKAIEEQ0AGgsgA0EQaiQAECQACz8AIAFB/wFxRQRAIAIgACgCACIAKAIQIgFBAXFHBEAgACABQX5xIAJyNgIQIAAgACgCDEEBajYCDAsPCxACAAsL4CYjAEGACAuBHk9ubHkgbGVhZiBub2RlcyB3aXRoIGN1c3RvbSBtZWFzdXJlIGZ1bmN0aW9ucyBzaG91bGQgbWFudWFsbHkgbWFyayB0aGVtc2VsdmVzIGFzIGRpcnR5AGlzRGlydHkAbWFya0RpcnR5AGRlc3Ryb3kAc2V0RGlzcGxheQBnZXREaXNwbGF5AHNldEZsZXgALSsgICAwWDB4AC0wWCswWCAwWC0weCsweCAweABzZXRGbGV4R3JvdwBnZXRGbGV4R3JvdwBzZXRPdmVyZmxvdwBnZXRPdmVyZmxvdwBoYXNOZXdMYXlvdXQAY2FsY3VsYXRlTGF5b3V0AGdldENvbXB1dGVkTGF5b3V0AHVuc2lnbmVkIHNob3J0AGdldENoaWxkQ291bnQAdW5zaWduZWQgaW50AHNldEp1c3RpZnlDb250ZW50AGdldEp1c3RpZnlDb250ZW50AGF2YWlsYWJsZUhlaWdodCBpcyBpbmRlZmluaXRlIHNvIGhlaWdodFNpemluZ01vZGUgbXVzdCBiZSBTaXppbmdNb2RlOjpNYXhDb250ZW50AGF2YWlsYWJsZVdpZHRoIGlzIGluZGVmaW5pdGUgc28gd2lkdGhTaXppbmdNb2RlIG11c3QgYmUgU2l6aW5nTW9kZTo6TWF4Q29udGVudABzZXRBbGlnbkNvbnRlbnQAZ2V0QWxpZ25Db250ZW50AGdldFBhcmVudABpbXBsZW1lbnQAc2V0TWF4SGVpZ2h0UGVyY2VudABzZXRIZWlnaHRQZXJjZW50AHNldE1pbkhlaWdodFBlcmNlbnQAc2V0RmxleEJhc2lzUGVyY2VudABzZXRHYXBQZXJjZW50AHNldFBvc2l0aW9uUGVyY2VudABzZXRNYXJnaW5QZXJjZW50AHNldE1heFdpZHRoUGVyY2VudABzZXRXaWR0aFBlcmNlbnQAc2V0TWluV2lkdGhQZXJjZW50AHNldFBhZGRpbmdQZXJjZW50AGhhbmRsZS50eXBlKCkgPT0gU3R5bGVWYWx1ZUhhbmRsZTo6VHlwZTo6UG9pbnQgfHwgaGFuZGxlLnR5cGUoKSA9PSBTdHlsZVZhbHVlSGFuZGxlOjpUeXBlOjpQZXJjZW50AGNyZWF0ZURlZmF1bHQAdW5pdAByaWdodABoZWlnaHQAc2V0TWF4SGVpZ2h0AGdldE1heEhlaWdodABzZXRIZWlnaHQAZ2V0SGVpZ2h0AHNldE1pbkhlaWdodABnZXRNaW5IZWlnaHQAZ2V0Q29tcHV0ZWRIZWlnaHQAZ2V0Q29tcHV0ZWRSaWdodABsZWZ0AGdldENvbXB1dGVkTGVmdAByZXNldABfX2Rlc3RydWN0AGZsb2F0AHVpbnQ2NF90AHVzZVdlYkRlZmF1bHRzAHNldFVzZVdlYkRlZmF1bHRzAHNldEFsaWduSXRlbXMAZ2V0QWxpZ25JdGVtcwBzZXRGbGV4QmFzaXMAZ2V0RmxleEJhc2lzAENhbm5vdCBnZXQgbGF5b3V0IHByb3BlcnRpZXMgb2YgbXVsdGktZWRnZSBzaG9ydGhhbmRzAHNldFBvaW50U2NhbGVGYWN0b3IATWVhc3VyZUNhbGxiYWNrV3JhcHBlcgBEaXJ0aWVkQ2FsbGJhY2tXcmFwcGVyAENhbm5vdCByZXNldCBhIG5vZGUgc3RpbGwgYXR0YWNoZWQgdG8gYSBvd25lcgBzZXRCb3JkZXIAZ2V0Qm9yZGVyAGdldENvbXB1dGVkQm9yZGVyAGdldE51bWJlcgBoYW5kbGUudHlwZSgpID09IFN0eWxlVmFsdWVIYW5kbGU6OlR5cGU6Ok51bWJlcgB1bnNpZ25lZCBjaGFyAHRvcABnZXRDb21wdXRlZFRvcABzZXRGbGV4V3JhcABnZXRGbGV4V3JhcABzZXRHYXAAZ2V0R2FwACVwAHNldEhlaWdodEF1dG8Ac2V0RmxleEJhc2lzQXV0bwBzZXRQb3NpdGlvbkF1dG8Ac2V0TWFyZ2luQXV0bwBzZXRXaWR0aEF1dG8AU2NhbGUgZmFjdG9yIHNob3VsZCBub3QgYmUgbGVzcyB0aGFuIHplcm8Ac2V0QXNwZWN0UmF0aW8AZ2V0QXNwZWN0UmF0aW8Ac2V0UG9zaXRpb24AZ2V0UG9zaXRpb24Abm90aWZ5T25EZXN0cnVjdGlvbgBzZXRGbGV4RGlyZWN0aW9uAGdldEZsZXhEaXJlY3Rpb24Ac2V0RGlyZWN0aW9uAGdldERpcmVjdGlvbgBzZXRNYXJnaW4AZ2V0TWFyZ2luAGdldENvbXB1dGVkTWFyZ2luAG1hcmtMYXlvdXRTZWVuAG5hbgBib3R0b20AZ2V0Q29tcHV0ZWRCb3R0b20AYm9vbABlbXNjcmlwdGVuOjp2YWwAc2V0RmxleFNocmluawBnZXRGbGV4U2hyaW5rAHNldEFsd2F5c0Zvcm1zQ29udGFpbmluZ0Jsb2NrAE1lYXN1cmVDYWxsYmFjawBEaXJ0aWVkQ2FsbGJhY2sAZ2V0TGVuZ3RoAHdpZHRoAHNldE1heFdpZHRoAGdldE1heFdpZHRoAHNldFdpZHRoAGdldFdpZHRoAHNldE1pbldpZHRoAGdldE1pbldpZHRoAGdldENvbXB1dGVkV2lkdGgAcHVzaAAvaG9tZS9ydW5uZXIvd29yay95b2dhL3lvZ2EvamF2YXNjcmlwdC8uLi95b2dhL3N0eWxlL1NtYWxsVmFsdWVCdWZmZXIuaAAvaG9tZS9ydW5uZXIvd29yay95b2dhL3lvZ2EvamF2YXNjcmlwdC8uLi95b2dhL3N0eWxlL1N0eWxlVmFsdWVQb29sLmgAdW5zaWduZWQgbG9uZwBzZXRCb3hTaXppbmcAZ2V0Qm94U2l6aW5nAHN0ZDo6d3N0cmluZwBzdGQ6OnN0cmluZwBzdGQ6OnUxNnN0cmluZwBzdGQ6OnUzMnN0cmluZwBzZXRQYWRkaW5nAGdldFBhZGRpbmcAZ2V0Q29tcHV0ZWRQYWRkaW5nAFRyaWVkIHRvIGNvbnN0cnVjdCBZR05vZGUgd2l0aCBudWxsIGNvbmZpZwBBdHRlbXB0aW5nIHRvIGNvbnN0cnVjdCBOb2RlIHdpdGggbnVsbCBjb25maWcAY3JlYXRlV2l0aENvbmZpZwBpbmYAc2V0QWxpZ25TZWxmAGdldEFsaWduU2VsZgBTaXplAHZhbHVlAFZhbHVlAGNyZWF0ZQBtZWFzdXJlAHNldFBvc2l0aW9uVHlwZQBnZXRQb3NpdGlvblR5cGUAaXNSZWZlcmVuY2VCYXNlbGluZQBzZXRJc1JlZmVyZW5jZUJhc2VsaW5lAGNvcHlTdHlsZQBkb3VibGUATm9kZQBleHRlbmQAaW5zZXJ0Q2hpbGQAZ2V0Q2hpbGQAcmVtb3ZlQ2hpbGQAdm9pZABzZXRFeHBlcmltZW50YWxGZWF0dXJlRW5hYmxlZABpc0V4cGVyaW1lbnRhbEZlYXR1cmVFbmFibGVkAGRpcnRpZWQAQ2Fubm90IHJlc2V0IGEgbm9kZSB3aGljaCBzdGlsbCBoYXMgY2hpbGRyZW4gYXR0YWNoZWQAdW5zZXRNZWFzdXJlRnVuYwB1bnNldERpcnRpZWRGdW5jAHNldEVycmF0YQBnZXRFcnJhdGEATWVhc3VyZSBmdW5jdGlvbiByZXR1cm5lZCBhbiBpbnZhbGlkIGRpbWVuc2lvbiB0byBZb2dhOiBbd2lkdGg9JWYsIGhlaWdodD0lZl0ARXhwZWN0IGN1c3RvbSBiYXNlbGluZSBmdW5jdGlvbiB0byBub3QgcmV0dXJuIE5hTgBOQU4ASU5GAGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGZsb2F0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8Y2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgY2hhcj4Ac3RkOjpiYXNpY19zdHJpbmc8dW5zaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2lnbmVk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",!gr(or)){var pr=or;or=r.locateFile?r.locateFile(pr,s):s+pr}function Cn(){var he=or;try{if(he==or&&c)return new Uint8Array(c);if(gr(he))try{var Se=im(he.slice(37)),Ge=new Uint8Array(Se.length);for(he=0;he<Se.length;++he)Ge[he]=Se.charCodeAt(he);var ot=Ge}catch{throw Error("Converting base64 string to bytes failed.")}else ot=void 0;var ft=ot;if(ft)return ft;throw"both async and sync fetching of the wasm failed"}catch(Wt){nr(Wt)}}function Qt(){return c||typeof fetch!="function"?Promise.resolve().then(function(){return Cn()}):fetch(or,{credentials:"same-origin"}).then(function(he){if(!he.ok)throw"failed to load wasm binary file at '"+or+"'";return he.arrayBuffer()}).catch(function(){return Cn()})}function Ur(he){for(;0<he.length;)he.shift()(r)}function Ht(he){if(he===void 0)return"_unknown";he=he.replace(/[^a-zA-Z0-9_]/g,"$");var Se=he.charCodeAt(0);return 48<=Se&&57>=Se?"_"+he:he}function Nn(he,Se){return he=Ht(he),function(){return Se.apply(this,arguments)}}var ao=[{},{value:void 0},{value:null},{value:!0},{value:!1}],Ps=[];function Mn(he){var Se=Error,Ge=Nn(he,function(ot){this.name=he,this.message=ot,ot=Error(ot).stack,ot!==void 0&&(this.stack=this.toString()+`
|
|
808
808
|
`+ot.replace(/^Error(:[^\n]*)?\n/,""))});return Ge.prototype=Object.create(Se.prototype),Ge.prototype.constructor=Ge,Ge.prototype.toString=function(){return this.message===void 0?this.name:this.name+": "+this.message},Ge}var Fn=void 0;function Ie(he){throw new Fn(he)}var Ce=he=>(he||Ie("Cannot use deleted val. handle = "+he),ao[he].value),ke=he=>{switch(he){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var Se=Ps.length?Ps.pop():ao.length;return ao[Se]={ga:1,value:he},Se}},Je=void 0,ut=void 0;function je(he){for(var Se="";b[he];)Se+=ut[b[he++]];return Se}var At=[];function He(){for(;At.length;){var he=At.pop();he.M.$=!1,he.delete()}}var dt=void 0,it={};function xt(he,Se){for(Se===void 0&&Ie("ptr should not be undefined");he.R;)Se=he.ba(Se),he=he.R;return Se}var Kt={};function wr(he){he=sm(he);var Se=je(he);return Tu(he),Se}function Or(he,Se){var Ge=Kt[he];return Ge===void 0&&Ie(Se+" has unknown type "+wr(he)),Ge}function mo(){}var Fi=!1;function ss(he){--he.count.value,he.count.value===0&&(he.T?he.U.W(he.T):he.P.N.W(he.O))}function fo(he,Se,Ge){return Se===Ge?he:Ge.R===void 0?null:(he=fo(he,Se,Ge.R),he===null?null:Ge.na(he))}var Vo={};function Di(he,Se){return Se=xt(he,Se),it[Se]}var xu=void 0;function tc(he){throw new xu(he)}function kr(he,Se){return Se.P&&Se.O||tc("makeClassHandle requires ptr and ptrType"),!!Se.U!=!!Se.T&&tc("Both smartPtrType and smartPtr must be specified"),Se.count={value:1},pn(Object.create(he,{M:{value:Se}}))}function pn(he){return typeof FinalizationRegistry>"u"?(pn=Se=>Se,he):(Fi=new FinalizationRegistry(Se=>{ss(Se.M)}),pn=Se=>{var Ge=Se.M;return Ge.T&&Fi.register(Se,{M:Ge},Se),Se},mo=Se=>{Fi.unregister(Se)},pn(he))}var Kr={};function to(he){for(;he.length;){var Se=he.pop();he.pop()(Se)}}function Qo(he){return this.fromWireType(N[he>>2])}var de={},yt={};function Xt(he,Se,Ge){function ot(Zt){Zt=Ge(Zt),Zt.length!==he.length&&tc("Mismatched type converter count");for(var xr=0;xr<he.length;++xr)Xr(he[xr],Zt[xr])}he.forEach(function(Zt){yt[Zt]=Se});var ft=Array(Se.length),Wt=[],lr=0;Se.forEach((Zt,xr)=>{Kt.hasOwnProperty(Zt)?ft[xr]=Kt[Zt]:(Wt.push(Zt),de.hasOwnProperty(Zt)||(de[Zt]=[]),de[Zt].push(()=>{ft[xr]=Kt[Zt],++lr,lr===Wt.length&&ot(ft)}))}),Wt.length===0&&ot(ft)}function Ar(he){switch(he){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+he)}}function Xr(he,Se,Ge={}){if(!("argPackAdvance"in Se))throw new TypeError("registerType registeredInstance requires argPackAdvance");var ot=Se.name;if(he||Ie('type "'+ot+'" must have a positive integer typeid pointer'),Kt.hasOwnProperty(he)){if(Ge.ua)return;Ie("Cannot register type '"+ot+"' twice")}Kt[he]=Se,delete yt[he],de.hasOwnProperty(he)&&(Se=de[he],delete de[he],Se.forEach(ft=>ft()))}function oo(he){Ie(he.M.P.N.name+" instance already deleted")}function Jn(){}function di(he,Se,Ge){if(he[Se].S===void 0){var ot=he[Se];he[Se]=function(){return he[Se].S.hasOwnProperty(arguments.length)||Ie("Function '"+Ge+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+he[Se].S+")!"),he[Se].S[arguments.length].apply(this,arguments)},he[Se].S=[],he[Se].S[ot.Z]=ot}}function No(he,Se){r.hasOwnProperty(he)?(Ie("Cannot register public name '"+he+"' twice"),di(r,he,he),r.hasOwnProperty(void 0)&&Ie("Cannot register multiple overloads of a function with the same number of arguments (undefined)!"),r[he].S[void 0]=Se):r[he]=Se}function Iu(he,Se,Ge,ot,ft,Wt,lr,Zt){this.name=he,this.constructor=Se,this.X=Ge,this.W=ot,this.R=ft,this.pa=Wt,this.ba=lr,this.na=Zt,this.ja=[]}function da(he,Se,Ge){for(;Se!==Ge;)Se.ba||Ie("Expected null or instance of "+Ge.name+", got an instance of "+Se.name),he=Se.ba(he),Se=Se.R;return he}function ug(he,Se){return Se===null?(this.ea&&Ie("null is not a valid "+this.name),0):(Se.M||Ie('Cannot pass "'+Yl(Se)+'" as a '+this.name),Se.M.O||Ie("Cannot pass deleted object as a pointer of type "+this.name),da(Se.M.O,Se.M.P.N,this.N))}function Ym(he,Se){if(Se===null){if(this.ea&&Ie("null is not a valid "+this.name),this.da){var Ge=this.fa();return he!==null&&he.push(this.W,Ge),Ge}return 0}if(Se.M||Ie('Cannot pass "'+Yl(Se)+'" as a '+this.name),Se.M.O||Ie("Cannot pass deleted object as a pointer of type "+this.name),!this.ca&&Se.M.P.ca&&Ie("Cannot convert argument of type "+(Se.M.U?Se.M.U.name:Se.M.P.name)+" to parameter type "+this.name),Ge=da(Se.M.O,Se.M.P.N,this.N),this.da)switch(Se.M.T===void 0&&Ie("Passing raw pointer to smart pointer is illegal"),this.Ba){case 0:Se.M.U===this?Ge=Se.M.T:Ie("Cannot convert argument of type "+(Se.M.U?Se.M.U.name:Se.M.P.name)+" to parameter type "+this.name);break;case 1:Ge=Se.M.T;break;case 2:if(Se.M.U===this)Ge=Se.M.T;else{var ot=Se.clone();Ge=this.xa(Ge,ke(function(){ot.delete()})),he!==null&&he.push(this.W,Ge)}break;default:Ie("Unsupporting sharing policy")}return Ge}function Al(he,Se){return Se===null?(this.ea&&Ie("null is not a valid "+this.name),0):(Se.M||Ie('Cannot pass "'+Yl(Se)+'" as a '+this.name),Se.M.O||Ie("Cannot pass deleted object as a pointer of type "+this.name),Se.M.P.ca&&Ie("Cannot convert argument of type "+Se.M.P.name+" to parameter type "+this.name),da(Se.M.O,Se.M.P.N,this.N))}function rc(he,Se,Ge,ot){this.name=he,this.N=Se,this.ea=Ge,this.ca=ot,this.da=!1,this.W=this.xa=this.fa=this.ka=this.Ba=this.wa=void 0,Se.R!==void 0?this.toWireType=Ym:(this.toWireType=ot?ug:Al,this.V=null)}function Xm(he,Se){r.hasOwnProperty(he)||tc("Replacing nonexistant public symbol"),r[he]=Se,r[he].Z=void 0}function Ex(he,Se){var Ge=[];return function(){if(Ge.length=0,Object.assign(Ge,arguments),he.includes("j")){var ot=r["dynCall_"+he];ot=Ge&&Ge.length?ot.apply(null,[Se].concat(Ge)):ot.call(null,Se)}else ot=Ee.get(Se).apply(null,Ge);return ot}}function Qi(he,Se){he=je(he);var Ge=he.includes("j")?Ex(he,Se):Ee.get(Se);return typeof Ge!="function"&&Ie("unknown function pointer with signature "+he+": "+Se),Ge}var gd=void 0;function Tp(he,Se){function Ge(Wt){ft[Wt]||Kt[Wt]||(yt[Wt]?yt[Wt].forEach(Ge):(ot.push(Wt),ft[Wt]=!0))}var ot=[],ft={};throw Se.forEach(Ge),new gd(he+": "+ot.map(wr).join([", "]))}function rm(he,Se,Ge,ot,ft){var Wt=Se.length;2>Wt&&Ie("argTypes array size mismatch! Must at least get return value and 'this' types!");var lr=Se[1]!==null&&Ge!==null,Zt=!1;for(Ge=1;Ge<Se.length;++Ge)if(Se[Ge]!==null&&Se[Ge].V===void 0){Zt=!0;break}var xr=Se[0].name!=="void",fr=Wt-2,Vr=Array(fr),wn=[],si=[];return function(){if(arguments.length!==fr&&Ie("function "+he+" called with "+arguments.length+" arguments, expected "+fr+" args!"),si.length=0,wn.length=lr?2:1,wn[0]=ft,lr){var as=Se[1].toWireType(si,this);wn[1]=as}for(var us=0;us<fr;++us)Vr[us]=Se[us+2].toWireType(si,arguments[us]),wn.push(Vr[us]);if(us=ot.apply(null,wn),Zt)to(si);else for(var Ea=lr?1:2;Ea<Se.length;Ea++){var Ec=Ea===1?as:Vr[Ea-2];Se[Ea].V!==null&&Se[Ea].V(Ec)}return as=xr?Se[0].fromWireType(us):void 0,as}}function _l(he,Se){for(var Ge=[],ot=0;ot<he;ot++)Ge.push(K[Se+4*ot>>2]);return Ge}function nc(he){4<he&&--ao[he].ga===0&&(ao[he]=void 0,Ps.push(he))}function Yl(he){if(he===null)return"null";var Se=typeof he;return Se==="object"||Se==="array"||Se==="function"?he.toString():""+he}function Zm(he,Se){switch(Se){case 2:return function(Ge){return this.fromWireType(ne[Ge>>2])};case 3:return function(Ge){return this.fromWireType(ee[Ge>>3])};default:throw new TypeError("Unknown float type: "+he)}}function su(he,Se,Ge){switch(Se){case 0:return Ge?function(ot){return S[ot]}:function(ot){return b[ot]};case 1:return Ge?function(ot){return k[ot>>1]}:function(ot){return R[ot>>1]};case 2:return Ge?function(ot){return N[ot>>2]}:function(ot){return K[ot>>2]};default:throw new TypeError("Unknown integer type: "+he)}}function yd(he,Se){for(var Ge="",ot=0;!(ot>=Se/2);++ot){var ft=k[he+2*ot>>1];if(ft==0)break;Ge+=String.fromCharCode(ft)}return Ge}function cg(he,Se,Ge){if(Ge===void 0&&(Ge=2147483647),2>Ge)return 0;Ge-=2;var ot=Se;Ge=Ge<2*he.length?Ge/2:he.length;for(var ft=0;ft<Ge;++ft)k[Se>>1]=he.charCodeAt(ft),Se+=2;return k[Se>>1]=0,Se-ot}function oS(he){return 2*he.length}function ef(he,Se){for(var Ge=0,ot="";!(Ge>=Se/4);){var ft=N[he+4*Ge>>2];if(ft==0)break;++Ge,65536<=ft?(ft-=65536,ot+=String.fromCharCode(55296|ft>>10,56320|ft&1023)):ot+=String.fromCharCode(ft)}return ot}function Vf(he,Se,Ge){if(Ge===void 0&&(Ge=2147483647),4>Ge)return 0;var ot=Se;Ge=ot+Ge-4;for(var ft=0;ft<he.length;++ft){var Wt=he.charCodeAt(ft);if(55296<=Wt&&57343>=Wt){var lr=he.charCodeAt(++ft);Wt=65536+((Wt&1023)<<10)|lr&1023}if(N[Se>>2]=Wt,Se+=4,Se+4>Ge)break}return N[Se>>2]=0,Se-ot}function iS(he){for(var Se=0,Ge=0;Ge<he.length;++Ge){var ot=he.charCodeAt(Ge);55296<=ot&&57343>=ot&&++Ge,Se+=4}return Se}var Sx={};function dn(he){var Se=Sx[he];return Se===void 0?je(he):Se}var tf=[];function Ad(he){var Se=tf.length;return tf.push(he),Se}function _d(he,Se){for(var Ge=Array(he),ot=0;ot<he;++ot)Ge[ot]=Or(K[Se+4*ot>>2],"parameter "+ot);return Ge}var lg=[],nm=[null,[],[]];Fn=r.BindingError=Mn("BindingError"),r.count_emval_handles=function(){for(var he=0,Se=5;Se<ao.length;++Se)ao[Se]!==void 0&&++he;return he},r.get_first_emval=function(){for(var he=5;he<ao.length;++he)if(ao[he]!==void 0)return ao[he];return null},Je=r.PureVirtualError=Mn("PureVirtualError");for(var om=Array(256),oc=0;256>oc;++oc)om[oc]=String.fromCharCode(oc);ut=om,r.getInheritedInstanceCount=function(){return Object.keys(it).length},r.getLiveInheritedInstances=function(){var he=[],Se;for(Se in it)it.hasOwnProperty(Se)&&he.push(it[Se]);return he},r.flushPendingDeletes=He,r.setDelayFunction=function(he){dt=he,At.length&&dt&&dt(He)},xu=r.InternalError=Mn("InternalError"),Jn.prototype.isAliasOf=function(he){if(!(this instanceof Jn&&he instanceof Jn))return!1;var Se=this.M.P.N,Ge=this.M.O,ot=he.M.P.N;for(he=he.M.O;Se.R;)Ge=Se.ba(Ge),Se=Se.R;for(;ot.R;)he=ot.ba(he),ot=ot.R;return Se===ot&&Ge===he},Jn.prototype.clone=function(){if(this.M.O||oo(this),this.M.aa)return this.M.count.value+=1,this;var he=pn,Se=Object,Ge=Se.create,ot=Object.getPrototypeOf(this),ft=this.M;return he=he(Ge.call(Se,ot,{M:{value:{count:ft.count,$:ft.$,aa:ft.aa,O:ft.O,P:ft.P,T:ft.T,U:ft.U}}})),he.M.count.value+=1,he.M.$=!1,he},Jn.prototype.delete=function(){this.M.O||oo(this),this.M.$&&!this.M.aa&&Ie("Object already scheduled for deletion"),mo(this),ss(this.M),this.M.aa||(this.M.T=void 0,this.M.O=void 0)},Jn.prototype.isDeleted=function(){return!this.M.O},Jn.prototype.deleteLater=function(){return this.M.O||oo(this),this.M.$&&!this.M.aa&&Ie("Object already scheduled for deletion"),At.push(this),At.length===1&&dt&&dt(He),this.M.$=!0,this},rc.prototype.qa=function(he){return this.ka&&(he=this.ka(he)),he},rc.prototype.ha=function(he){this.W&&this.W(he)},rc.prototype.argPackAdvance=8,rc.prototype.readValueFromPointer=Qo,rc.prototype.deleteObject=function(he){he!==null&&he.delete()},rc.prototype.fromWireType=function(he){function Se(){return this.da?kr(this.N.X,{P:this.wa,O:Ge,U:this,T:he}):kr(this.N.X,{P:this,O:he})}var Ge=this.qa(he);if(!Ge)return this.ha(he),null;var ot=Di(this.N,Ge);if(ot!==void 0)return ot.M.count.value===0?(ot.M.O=Ge,ot.M.T=he,ot.clone()):(ot=ot.clone(),this.ha(he),ot);if(ot=this.N.pa(Ge),ot=Vo[ot],!ot)return Se.call(this);ot=this.ca?ot.la:ot.pointerType;var ft=fo(Ge,this.N,ot.N);return ft===null?Se.call(this):this.da?kr(ot.N.X,{P:ot,O:ft,U:this,T:he}):kr(ot.N.X,{P:ot,O:ft})},gd=r.UnboundTypeError=Mn("UnboundTypeError");var im=typeof atob=="function"?atob:function(he){var Se="",Ge=0;he=he.replace(/[^A-Za-z0-9\+\/=]/g,"");do{var ot="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(he.charAt(Ge++)),ft="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(he.charAt(Ge++)),Wt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(he.charAt(Ge++)),lr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(he.charAt(Ge++));ot=ot<<2|ft>>4,ft=(ft&15)<<4|Wt>>2;var Zt=(Wt&3)<<6|lr;Se+=String.fromCharCode(ot),Wt!==64&&(Se+=String.fromCharCode(ft)),lr!==64&&(Se+=String.fromCharCode(Zt))}while(Ge<he.length);return Se},zs={l:function(he,Se,Ge,ot){nr("Assertion failed: "+(he?g(b,he):"")+", at: "+[Se?Se?g(b,Se):"":"unknown filename",Ge,ot?ot?g(b,ot):"":"unknown function"])},q:function(he,Se,Ge){he=je(he),Se=Or(Se,"wrapper"),Ge=Ce(Ge);var ot=[].slice,ft=Se.N,Wt=ft.X,lr=ft.R.X,Zt=ft.R.constructor;he=Nn(he,function(){ft.R.ja.forEach(function(fr){if(this[fr]===lr[fr])throw new Je("Pure virtual function "+fr+" must be implemented in JavaScript")}.bind(this)),Object.defineProperty(this,"__parent",{value:Wt}),this.__construct.apply(this,ot.call(arguments))}),Wt.__construct=function(){this===Wt&&Ie("Pass correct 'this' to __construct");var fr=Zt.implement.apply(void 0,[this].concat(ot.call(arguments)));mo(fr);var Vr=fr.M;fr.notifyOnDestruction(),Vr.aa=!0,Object.defineProperties(this,{M:{value:Vr}}),pn(this),fr=Vr.O,fr=xt(ft,fr),it.hasOwnProperty(fr)?Ie("Tried to register registered instance: "+fr):it[fr]=this},Wt.__destruct=function(){this===Wt&&Ie("Pass correct 'this' to __destruct"),mo(this);var fr=this.M.O;fr=xt(ft,fr),it.hasOwnProperty(fr)?delete it[fr]:Ie("Tried to unregister unregistered instance: "+fr)},he.prototype=Object.create(Wt);for(var xr in Ge)he.prototype[xr]=Ge[xr];return ke(he)},j:function(he){var Se=Kr[he];delete Kr[he];var Ge=Se.fa,ot=Se.W,ft=Se.ia,Wt=ft.map(lr=>lr.ta).concat(ft.map(lr=>lr.za));Xt([he],Wt,lr=>{var Zt={};return ft.forEach((xr,fr)=>{var Vr=lr[fr],wn=xr.ra,si=xr.sa,as=lr[fr+ft.length],us=xr.ya,Ea=xr.Aa;Zt[xr.oa]={read:Ec=>Vr.fromWireType(wn(si,Ec)),write:(Ec,vp)=>{var Ua=[];us(Ea,Ec,as.toWireType(Ua,vp)),to(Ua)}}}),[{name:Se.name,fromWireType:function(xr){var fr={},Vr;for(Vr in Zt)fr[Vr]=Zt[Vr].read(xr);return ot(xr),fr},toWireType:function(xr,fr){for(var Vr in Zt)if(!(Vr in fr))throw new TypeError('Missing field: "'+Vr+'"');var wn=Ge();for(Vr in Zt)Zt[Vr].write(wn,fr[Vr]);return xr!==null&&xr.push(ot,wn),wn},argPackAdvance:8,readValueFromPointer:Qo,V:ot}]})},v:function(){},B:function(he,Se,Ge,ot,ft){var Wt=Ar(Ge);Se=je(Se),Xr(he,{name:Se,fromWireType:function(lr){return!!lr},toWireType:function(lr,Zt){return Zt?ot:ft},argPackAdvance:8,readValueFromPointer:function(lr){if(Ge===1)var Zt=S;else if(Ge===2)Zt=k;else if(Ge===4)Zt=N;else throw new TypeError("Unknown boolean type size: "+Se);return this.fromWireType(Zt[lr>>Wt])},V:null})},f:function(he,Se,Ge,ot,ft,Wt,lr,Zt,xr,fr,Vr,wn,si){Vr=je(Vr),Wt=Qi(ft,Wt),Zt&&(Zt=Qi(lr,Zt)),fr&&(fr=Qi(xr,fr)),si=Qi(wn,si);var as=Ht(Vr);No(as,function(){Tp("Cannot construct "+Vr+" due to unbound types",[ot])}),Xt([he,Se,Ge],ot?[ot]:[],function(us){if(us=us[0],ot)var Ea=us.N,Ec=Ea.X;else Ec=Jn.prototype;us=Nn(as,function(){if(Object.getPrototypeOf(this)!==vp)throw new Fn("Use 'new' to construct "+Vr);if(Ua.Y===void 0)throw new Fn(Vr+" has no accessible constructor");var Sc=Ua.Y[arguments.length];if(Sc===void 0)throw new Fn("Tried to invoke ctor of "+Vr+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(Ua.Y).toString()+") parameters instead!");return Sc.apply(this,arguments)});var vp=Object.create(Ec,{constructor:{value:us}});us.prototype=vp;var Ua=new Iu(Vr,us,vp,si,Ea,Wt,Zt,fr);Ea=new rc(Vr,Ua,!0,!1),Ec=new rc(Vr+"*",Ua,!1,!1);var Sa=new rc(Vr+" const*",Ua,!1,!0);return Vo[he]={pointerType:Ec,la:Sa},Xm(as,us),[Ea,Ec,Sa]})},d:function(he,Se,Ge,ot,ft,Wt,lr){var Zt=_l(Ge,ot);Se=je(Se),Wt=Qi(ft,Wt),Xt([],[he],function(xr){function fr(){Tp("Cannot call "+Vr+" due to unbound types",Zt)}xr=xr[0];var Vr=xr.name+"."+Se;Se.startsWith("@@")&&(Se=Symbol[Se.substring(2)]);var wn=xr.N.constructor;return wn[Se]===void 0?(fr.Z=Ge-1,wn[Se]=fr):(di(wn,Se,Vr),wn[Se].S[Ge-1]=fr),Xt([],Zt,function(si){return si=rm(Vr,[si[0],null].concat(si.slice(1)),null,Wt,lr),wn[Se].S===void 0?(si.Z=Ge-1,wn[Se]=si):wn[Se].S[Ge-1]=si,[]}),[]})},p:function(he,Se,Ge,ot,ft,Wt){0<Se||nr();var lr=_l(Se,Ge);ft=Qi(ot,ft),Xt([],[he],function(Zt){Zt=Zt[0];var xr="constructor "+Zt.name;if(Zt.N.Y===void 0&&(Zt.N.Y=[]),Zt.N.Y[Se-1]!==void 0)throw new Fn("Cannot register multiple constructors with identical number of parameters ("+(Se-1)+") for class '"+Zt.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return Zt.N.Y[Se-1]=()=>{Tp("Cannot construct "+Zt.name+" due to unbound types",lr)},Xt([],lr,function(fr){return fr.splice(1,0,null),Zt.N.Y[Se-1]=rm(xr,fr,null,ft,Wt),[]}),[]})},a:function(he,Se,Ge,ot,ft,Wt,lr,Zt){var xr=_l(Ge,ot);Se=je(Se),Wt=Qi(ft,Wt),Xt([],[he],function(fr){function Vr(){Tp("Cannot call "+wn+" due to unbound types",xr)}fr=fr[0];var wn=fr.name+"."+Se;Se.startsWith("@@")&&(Se=Symbol[Se.substring(2)]),Zt&&fr.N.ja.push(Se);var si=fr.N.X,as=si[Se];return as===void 0||as.S===void 0&&as.className!==fr.name&&as.Z===Ge-2?(Vr.Z=Ge-2,Vr.className=fr.name,si[Se]=Vr):(di(si,Se,wn),si[Se].S[Ge-2]=Vr),Xt([],xr,function(us){return us=rm(wn,us,fr,Wt,lr),si[Se].S===void 0?(us.Z=Ge-2,si[Se]=us):si[Se].S[Ge-2]=us,[]}),[]})},A:function(he,Se){Se=je(Se),Xr(he,{name:Se,fromWireType:function(Ge){var ot=Ce(Ge);return nc(Ge),ot},toWireType:function(Ge,ot){return ke(ot)},argPackAdvance:8,readValueFromPointer:Qo,V:null})},n:function(he,Se,Ge){Ge=Ar(Ge),Se=je(Se),Xr(he,{name:Se,fromWireType:function(ot){return ot},toWireType:function(ot,ft){return ft},argPackAdvance:8,readValueFromPointer:Zm(Se,Ge),V:null})},e:function(he,Se,Ge,ot,ft){Se=je(Se),ft===-1&&(ft=4294967295),ft=Ar(Ge);var Wt=Zt=>Zt;if(ot===0){var lr=32-8*Ge;Wt=Zt=>Zt<<lr>>>lr}Ge=Se.includes("unsigned")?function(Zt,xr){return xr>>>0}:function(Zt,xr){return xr},Xr(he,{name:Se,fromWireType:Wt,toWireType:Ge,argPackAdvance:8,readValueFromPointer:su(Se,ft,ot!==0),V:null})},b:function(he,Se,Ge){function ot(Wt){Wt>>=2;var lr=K;return new ft(A,lr[Wt+1],lr[Wt])}var ft=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][Se];Ge=je(Ge),Xr(he,{name:Ge,fromWireType:ot,argPackAdvance:8,readValueFromPointer:ot},{ua:!0})},o:function(he,Se){Se=je(Se);var Ge=Se==="std::string";Xr(he,{name:Se,fromWireType:function(ot){var ft=K[ot>>2],Wt=ot+4;if(Ge)for(var lr=Wt,Zt=0;Zt<=ft;++Zt){var xr=Wt+Zt;if(Zt==ft||b[xr]==0){if(lr=lr?g(b,lr,xr-lr):"",fr===void 0)var fr=lr;else fr+="\0",fr+=lr;lr=xr+1}}else{for(fr=Array(ft),Zt=0;Zt<ft;++Zt)fr[Zt]=String.fromCharCode(b[Wt+Zt]);fr=fr.join("")}return Tu(ot),fr},toWireType:function(ot,ft){ft instanceof ArrayBuffer&&(ft=new Uint8Array(ft));var Wt,lr=typeof ft=="string";if(lr||ft instanceof Uint8Array||ft instanceof Uint8ClampedArray||ft instanceof Int8Array||Ie("Cannot pass non-string to std::string"),Ge&&lr){var Zt=0;for(Wt=0;Wt<ft.length;++Wt){var xr=ft.charCodeAt(Wt);127>=xr?Zt++:2047>=xr?Zt+=2:55296<=xr&&57343>=xr?(Zt+=4,++Wt):Zt+=3}Wt=Zt}else Wt=ft.length;if(Zt=am(4+Wt+1),xr=Zt+4,K[Zt>>2]=Wt,Ge&&lr){if(lr=xr,xr=Wt+1,Wt=b,0<xr){xr=lr+xr-1;for(var fr=0;fr<ft.length;++fr){var Vr=ft.charCodeAt(fr);if(55296<=Vr&&57343>=Vr){var wn=ft.charCodeAt(++fr);Vr=65536+((Vr&1023)<<10)|wn&1023}if(127>=Vr){if(lr>=xr)break;Wt[lr++]=Vr}else{if(2047>=Vr){if(lr+1>=xr)break;Wt[lr++]=192|Vr>>6}else{if(65535>=Vr){if(lr+2>=xr)break;Wt[lr++]=224|Vr>>12}else{if(lr+3>=xr)break;Wt[lr++]=240|Vr>>18,Wt[lr++]=128|Vr>>12&63}Wt[lr++]=128|Vr>>6&63}Wt[lr++]=128|Vr&63}}Wt[lr]=0}}else if(lr)for(lr=0;lr<Wt;++lr)fr=ft.charCodeAt(lr),255<fr&&(Tu(xr),Ie("String has UTF-16 code units that do not fit in 8 bits")),b[xr+lr]=fr;else for(lr=0;lr<Wt;++lr)b[xr+lr]=ft[lr];return ot!==null&&ot.push(Tu,Zt),Zt},argPackAdvance:8,readValueFromPointer:Qo,V:function(ot){Tu(ot)}})},i:function(he,Se,Ge){if(Ge=je(Ge),Se===2)var ot=yd,ft=cg,Wt=oS,lr=()=>R,Zt=1;else Se===4&&(ot=ef,ft=Vf,Wt=iS,lr=()=>K,Zt=2);Xr(he,{name:Ge,fromWireType:function(xr){for(var fr=K[xr>>2],Vr=lr(),wn,si=xr+4,as=0;as<=fr;++as){var us=xr+4+as*Se;(as==fr||Vr[us>>Zt]==0)&&(si=ot(si,us-si),wn===void 0?wn=si:(wn+="\0",wn+=si),si=us+Se)}return Tu(xr),wn},toWireType:function(xr,fr){typeof fr!="string"&&Ie("Cannot pass non-string to C++ string type "+Ge);var Vr=Wt(fr),wn=am(4+Vr+Se);return K[wn>>2]=Vr>>Zt,ft(fr,wn+4,Vr+Se),xr!==null&&xr.push(Tu,wn),wn},argPackAdvance:8,readValueFromPointer:Qo,V:function(xr){Tu(xr)}})},k:function(he,Se,Ge,ot,ft,Wt){Kr[he]={name:je(Se),fa:Qi(Ge,ot),W:Qi(ft,Wt),ia:[]}},h:function(he,Se,Ge,ot,ft,Wt,lr,Zt,xr,fr){Kr[he].ia.push({oa:je(Se),ta:Ge,ra:Qi(ot,ft),sa:Wt,za:lr,ya:Qi(Zt,xr),Aa:fr})},C:function(he,Se){Se=je(Se),Xr(he,{va:!0,name:Se,argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},s:function(he,Se,Ge,ot,ft){he=tf[he],Se=Ce(Se),Ge=dn(Ge);var Wt=[];return K[ot>>2]=ke(Wt),he(Se,Ge,Wt,ft)},t:function(he,Se,Ge,ot){he=tf[he],Se=Ce(Se),Ge=dn(Ge),he(Se,Ge,null,ot)},g:nc,m:function(he,Se){var Ge=_d(he,Se),ot=Ge[0];Se=ot.name+"_$"+Ge.slice(1).map(function(lr){return lr.name}).join("_")+"$";var ft=lg[Se];if(ft!==void 0)return ft;var Wt=Array(he-1);return ft=Ad((lr,Zt,xr,fr)=>{for(var Vr=0,wn=0;wn<he-1;++wn)Wt[wn]=Ge[wn+1].readValueFromPointer(fr+Vr),Vr+=Ge[wn+1].argPackAdvance;for(lr=lr[Zt].apply(lr,Wt),wn=0;wn<he-1;++wn)Ge[wn+1].ma&&Ge[wn+1].ma(Wt[wn]);if(!ot.va)return ot.toWireType(xr,lr)}),lg[Se]=ft},D:function(he){4<he&&(ao[he].ga+=1)},r:function(he){var Se=Ce(he);to(Se),nc(he)},c:function(){nr("")},x:function(he,Se,Ge){b.copyWithin(he,Se,Se+Ge)},w:function(he){var Se=b.length;if(he>>>=0,2147483648<he)return!1;for(var Ge=1;4>=Ge;Ge*=2){var ot=Se*(1+.2/Ge);ot=Math.min(ot,he+100663296);var ft=Math;ot=Math.max(he,ot),ft=ft.min.call(ft,2147483648,ot+(65536-ot%65536)%65536);e:{try{m.grow(ft-A.byteLength+65535>>>16),Te();var Wt=1;break e}catch{}Wt=void 0}if(Wt)return!0}return!1},z:function(){return 52},u:function(){return 70},y:function(he,Se,Ge,ot){for(var ft=0,Wt=0;Wt<Ge;Wt++){var lr=K[Se>>2],Zt=K[Se+4>>2];Se+=8;for(var xr=0;xr<Zt;xr++){var fr=b[lr+xr],Vr=nm[he];fr===0||fr===10?((he===1?a:u)(g(Vr,0)),Vr.length=0):Vr.push(fr)}ft+=Zt}return K[ot>>2]=ft,0}};(function(){function he(ft){r.asm=ft.exports,m=r.asm.E,Te(),Ee=r.asm.J,We.unshift(r.asm.F),pt--,r.monitorRunDependencies&&r.monitorRunDependencies(pt),pt==0&&(er!==null&&(clearInterval(er),er=null),vt&&(ft=vt,vt=null,ft()))}function Se(ft){he(ft.instance)}function Ge(ft){return Qt().then(function(Wt){return WebAssembly.instantiate(Wt,ot)}).then(function(Wt){return Wt}).then(ft,function(Wt){u("failed to asynchronously prepare wasm: "+Wt),nr(Wt)})}var ot={a:zs};if(pt++,r.monitorRunDependencies&&r.monitorRunDependencies(pt),r.instantiateWasm)try{return r.instantiateWasm(ot,he)}catch(ft){u("Module.instantiateWasm callback failed with error: "+ft),o(ft)}return(function(){return c||typeof WebAssembly.instantiateStreaming!="function"||gr(or)||typeof fetch!="function"?Ge(Se):fetch(or,{credentials:"same-origin"}).then(function(ft){return WebAssembly.instantiateStreaming(ft,ot).then(Se,function(Wt){return u("wasm streaming compile failed: "+Wt),u("falling back to ArrayBuffer instantiation"),Ge(Se)})})})().catch(o),{}})(),r.___wasm_call_ctors=function(){return(r.___wasm_call_ctors=r.asm.F).apply(null,arguments)};var sm=r.___getTypeName=function(){return(sm=r.___getTypeName=r.asm.G).apply(null,arguments)};r.__embind_initialize_bindings=function(){return(r.__embind_initialize_bindings=r.asm.H).apply(null,arguments)};var am=r._malloc=function(){return(am=r._malloc=r.asm.I).apply(null,arguments)},Tu=r._free=function(){return(Tu=r._free=r.asm.K).apply(null,arguments)};r.dynCall_jiji=function(){return(r.dynCall_jiji=r.asm.L).apply(null,arguments)};var um;vt=function he(){um||_c(),um||(vt=he)};function _c(){function he(){if(!um&&(um=!0,r.calledRun=!0,!f)){if(Ur(We),n(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),r.postRun)for(typeof r.postRun=="function"&&(r.postRun=[r.postRun]);r.postRun.length;){var Se=r.postRun.shift();Ot.unshift(Se)}Ur(Ot)}}if(!(0<pt)){if(r.preRun)for(typeof r.preRun=="function"&&(r.preRun=[r.preRun]);r.preRun.length;)Qe();Ur(xe),0<pt||(r.setStatus?(r.setStatus("Running..."),setTimeout(function(){setTimeout(function(){r.setStatus("")},1),he()},1)):he())}}if(r.preInit)for(typeof r.preInit=="function"&&(r.preInit=[r.preInit]);0<r.preInit.length;)r.preInit.pop()();return _c(),t.ready})})(),_nr=AZn;var Av=(function(e){return e[e.Auto=0]="Auto",e[e.FlexStart=1]="FlexStart",e[e.Center=2]="Center",e[e.FlexEnd=3]="FlexEnd",e[e.Stretch=4]="Stretch",e[e.Baseline=5]="Baseline",e[e.SpaceBetween=6]="SpaceBetween",e[e.SpaceAround=7]="SpaceAround",e[e.SpaceEvenly=8]="SpaceEvenly",e})({}),Enr=(function(e){return e[e.BorderBox=0]="BorderBox",e[e.ContentBox=1]="ContentBox",e})({}),Snr=(function(e){return e[e.Width=0]="Width",e[e.Height=1]="Height",e})({}),P3=(function(e){return e[e.Inherit=0]="Inherit",e[e.LTR=1]="LTR",e[e.RTL=2]="RTL",e})({}),C4e=(function(e){return e[e.Flex=0]="Flex",e[e.None=1]="None",e[e.Contents=2]="Contents",e})({}),_v=(function(e){return e[e.Left=0]="Left",e[e.Top=1]="Top",e[e.Right=2]="Right",e[e.Bottom=3]="Bottom",e[e.Start=4]="Start",e[e.End=5]="End",e[e.Horizontal=6]="Horizontal",e[e.Vertical=7]="Vertical",e[e.All=8]="All",e})({}),sF=(function(e){return e[e.None=0]="None",e[e.StretchFlexBasis=1]="StretchFlexBasis",e[e.AbsolutePositionWithoutInsetsExcludesPadding=2]="AbsolutePositionWithoutInsetsExcludesPadding",e[e.AbsolutePercentAgainstInnerSize=4]="AbsolutePercentAgainstInnerSize",e[e.All=2147483647]="All",e[e.Classic=2147483646]="Classic",e})({}),_Zn=(function(e){return e[e.WebFlexBasis=0]="WebFlexBasis",e})({}),bme=(function(e){return e[e.Column=0]="Column",e[e.ColumnReverse=1]="ColumnReverse",e[e.Row=2]="Row",e[e.RowReverse=3]="RowReverse",e})({}),w4e=(function(e){return e[e.Column=0]="Column",e[e.Row=1]="Row",e[e.All=2]="All",e})({}),aF=(function(e){return e[e.FlexStart=0]="FlexStart",e[e.Center=1]="Center",e[e.FlexEnd=2]="FlexEnd",e[e.SpaceBetween=3]="SpaceBetween",e[e.SpaceAround=4]="SpaceAround",e[e.SpaceEvenly=5]="SpaceEvenly",e})({}),uF=(function(e){return e[e.Error=0]="Error",e[e.Warn=1]="Warn",e[e.Info=2]="Info",e[e.Debug=3]="Debug",e[e.Verbose=4]="Verbose",e[e.Fatal=5]="Fatal",e})({}),R4e=(function(e){return e[e.Undefined=0]="Undefined",e[e.Exactly=1]="Exactly",e[e.AtMost=2]="AtMost",e})({}),bnr=(function(e){return e[e.Default=0]="Default",e[e.Text=1]="Text",e})({}),k4e=(function(e){return e[e.Visible=0]="Visible",e[e.Hidden=1]="Hidden",e[e.Scroll=2]="Scroll",e})({}),O4e=(function(e){return e[e.Static=0]="Static",e[e.Relative=1]="Relative",e[e.Absolute=2]="Absolute",e})({}),YE=(function(e){return e[e.Undefined=0]="Undefined",e[e.Point=1]="Point",e[e.Percent=2]="Percent",e[e.Auto=3]="Auto",e})({}),N4e=(function(e){return e[e.NoWrap=0]="NoWrap",e[e.Wrap=1]="Wrap",e[e.WrapReverse=2]="WrapReverse",e})({}),EZn={ALIGN_AUTO:Av.Auto,ALIGN_FLEX_START:Av.FlexStart,ALIGN_CENTER:Av.Center,ALIGN_FLEX_END:Av.FlexEnd,ALIGN_STRETCH:Av.Stretch,ALIGN_BASELINE:Av.Baseline,ALIGN_SPACE_BETWEEN:Av.SpaceBetween,ALIGN_SPACE_AROUND:Av.SpaceAround,ALIGN_SPACE_EVENLY:Av.SpaceEvenly,BOX_SIZING_BORDER_BOX:Enr.BorderBox,BOX_SIZING_CONTENT_BOX:Enr.ContentBox,DIMENSION_WIDTH:Snr.Width,DIMENSION_HEIGHT:Snr.Height,DIRECTION_INHERIT:P3.Inherit,DIRECTION_LTR:P3.LTR,DIRECTION_RTL:P3.RTL,DISPLAY_FLEX:C4e.Flex,DISPLAY_NONE:C4e.None,DISPLAY_CONTENTS:C4e.Contents,EDGE_LEFT:_v.Left,EDGE_TOP:_v.Top,EDGE_RIGHT:_v.Right,EDGE_BOTTOM:_v.Bottom,EDGE_START:_v.Start,EDGE_END:_v.End,EDGE_HORIZONTAL:_v.Horizontal,EDGE_VERTICAL:_v.Vertical,EDGE_ALL:_v.All,ERRATA_NONE:sF.None,ERRATA_STRETCH_FLEX_BASIS:sF.StretchFlexBasis,ERRATA_ABSOLUTE_POSITION_WITHOUT_INSETS_EXCLUDES_PADDING:sF.AbsolutePositionWithoutInsetsExcludesPadding,ERRATA_ABSOLUTE_PERCENT_AGAINST_INNER_SIZE:sF.AbsolutePercentAgainstInnerSize,ERRATA_ALL:sF.All,ERRATA_CLASSIC:sF.Classic,EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS:_Zn.WebFlexBasis,FLEX_DIRECTION_COLUMN:bme.Column,FLEX_DIRECTION_COLUMN_REVERSE:bme.ColumnReverse,FLEX_DIRECTION_ROW:bme.Row,FLEX_DIRECTION_ROW_REVERSE:bme.RowReverse,GUTTER_COLUMN:w4e.Column,GUTTER_ROW:w4e.Row,GUTTER_ALL:w4e.All,JUSTIFY_FLEX_START:aF.FlexStart,JUSTIFY_CENTER:aF.Center,JUSTIFY_FLEX_END:aF.FlexEnd,JUSTIFY_SPACE_BETWEEN:aF.SpaceBetween,JUSTIFY_SPACE_AROUND:aF.SpaceAround,JUSTIFY_SPACE_EVENLY:aF.SpaceEvenly,LOG_LEVEL_ERROR:uF.Error,LOG_LEVEL_WARN:uF.Warn,LOG_LEVEL_INFO:uF.Info,LOG_LEVEL_DEBUG:uF.Debug,LOG_LEVEL_VERBOSE:uF.Verbose,LOG_LEVEL_FATAL:uF.Fatal,MEASURE_MODE_UNDEFINED:R4e.Undefined,MEASURE_MODE_EXACTLY:R4e.Exactly,MEASURE_MODE_AT_MOST:R4e.AtMost,NODE_TYPE_DEFAULT:bnr.Default,NODE_TYPE_TEXT:bnr.Text,OVERFLOW_VISIBLE:k4e.Visible,OVERFLOW_HIDDEN:k4e.Hidden,OVERFLOW_SCROLL:k4e.Scroll,POSITION_TYPE_STATIC:O4e.Static,POSITION_TYPE_RELATIVE:O4e.Relative,POSITION_TYPE_ABSOLUTE:O4e.Absolute,UNIT_UNDEFINED:YE.Undefined,UNIT_POINT:YE.Point,UNIT_PERCENT:YE.Percent,UNIT_AUTO:YE.Auto,WRAP_NO_WRAP:N4e.NoWrap,WRAP_WRAP:N4e.Wrap,WRAP_WRAP_REVERSE:N4e.WrapReverse},xnr=EZn;function M4e(e){function t(o,i,s){let a=o[i];o[i]=function(){for(var u=arguments.length,c=new Array(u),d=0;d<u;d++)c[d]=arguments[d];return s.call(this,a,...c)}}for(let o of["setPosition","setMargin","setFlexBasis","setWidth","setHeight","setMinWidth","setMinHeight","setMaxWidth","setMaxHeight","setPadding","setGap"]){let i={[YE.Point]:e.Node.prototype[o],[YE.Percent]:e.Node.prototype[`${o}Percent`],[YE.Auto]:e.Node.prototype[`${o}Auto`]};t(e.Node.prototype,o,function(s){for(var a=arguments.length,u=new Array(a>1?a-1:0),c=1;c<a;c++)u[c-1]=arguments[c];let d=u.pop(),m,f;if(d==="auto")m=YE.Auto,f=void 0;else if(typeof d=="object")m=d.unit,f=d.valueOf();else if(m=typeof d=="string"&&d.endsWith("%")?YE.Percent:YE.Point,f=parseFloat(d),d!==void 0&&!Number.isNaN(d)&&Number.isNaN(f))throw new Error(`Invalid value ${d} for ${o}`);if(!i[m])throw new Error(`Failed to execute "${o}": Unsupported unit '${d}'`);return f!==void 0?i[m].call(this,...u,f):i[m].call(this,...u)})}function r(o){return e.MeasureCallback.implement({measure:function(){let{width:i,height:s}=o(...arguments);return{width:i??NaN,height:s??NaN}}})}t(e.Node.prototype,"setMeasureFunc",function(o,i){return i?o.call(this,r(i)):this.unsetMeasureFunc()});function n(o){return e.DirtiedCallback.implement({dirtied:o})}return t(e.Node.prototype,"setDirtiedFunc",function(o,i){o.call(this,n(i))}),t(e.Config.prototype,"free",function(){e.Config.destroy(this)}),t(e.Node,"create",(o,i)=>i?e.Node.createWithConfig(i):e.Node.createDefault()),t(e.Node.prototype,"free",function(){e.Node.destroy(this)}),t(e.Node.prototype,"freeRecursive",function(){for(let o=0,i=this.getChildCount();o<i;++o)this.getChild(0).freeRecursive();this.free()}),t(e.Node.prototype,"calculateLayout",function(o){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:NaN,s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:NaN,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:P3.LTR;return o.call(this,i,s,a)}),{Config:e.Config,Node:e.Node,...xnr}}var SZn=M4e(await _nr()),Qr=SZn;function P4e({onlyFirst:e=!1}={}){let o="(?:\\u001B\\][\\s\\S]*?(?:\\u0007|\\u001B\\u005C|\\u009C))|[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]";return new RegExp(o,e?void 0:"g")}var bZn=P4e();function z3(e){if(typeof e!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof e}\``);return!e.includes("\x1B")&&!e.includes("\x9B")?e:e.replace(bZn,"")}var Inr=[161,161,164,164,167,168,170,170,173,174,176,180,182,186,188,191,198,198,208,208,215,216,222,225,230,230,232,234,236,237,240,240,242,243,247,250,252,252,254,254,257,257,273,273,275,275,283,283,294,295,299,299,305,307,312,312,319,322,324,324,328,331,333,333,338,339,358,359,363,363,462,462,464,464,466,466,468,468,470,470,472,472,474,474,476,476,593,593,609,609,708,708,711,711,713,715,717,717,720,720,728,731,733,733,735,735,768,879,913,929,931,937,945,961,963,969,1025,1025,1040,1103,1105,1105,8208,8208,8211,8214,8216,8217,8220,8221,8224,8226,8228,8231,8240,8240,8242,8243,8245,8245,8251,8251,8254,8254,8308,8308,8319,8319,8321,8324,8364,8364,8451,8451,8453,8453,8457,8457,8467,8467,8470,8470,8481,8482,8486,8486,8491,8491,8531,8532,8539,8542,8544,8555,8560,8569,8585,8585,8592,8601,8632,8633,8658,8658,8660,8660,8679,8679,8704,8704,8706,8707,8711,8712,8715,8715,8719,8719,8721,8721,8725,8725,8730,8730,8733,8736,8739,8739,8741,8741,8743,8748,8750,8750,8756,8759,8764,8765,8776,8776,8780,8780,8786,8786,8800,8801,8804,8807,8810,8811,8814,8815,8834,8835,8838,8839,8853,8853,8857,8857,8869,8869,8895,8895,8978,8978,9312,9449,9451,9547,9552,9587,9600,9615,9618,9621,9632,9633,9635,9641,9650,9651,9654,9655,9660,9661,9664,9665,9670,9672,9675,9675,9678,9681,9698,9701,9711,9711,9733,9734,9737,9737,9742,9743,9756,9756,9758,9758,9792,9792,9794,9794,9824,9825,9827,9829,9831,9834,9836,9837,9839,9839,9886,9887,9919,9919,9926,9933,9935,9939,9941,9953,9955,9955,9960,9961,9963,9969,9972,9972,9974,9977,9979,9980,9982,9983,10045,10045,10102,10111,11094,11097,12872,12879,57344,63743,65024,65039,65533,65533,127232,127242,127248,127277,127280,127337,127344,127373,127375,127376,127387,127404,917760,917999,983040,1048573,1048576,1114109],Tnr=12288,vnr=65510,Cnr=[12288,12288,65281,65376,65504,65510];var wnr=4352,Rnr=262141,z4e=[4352,4447,8986,8987,9001,9002,9193,9196,9200,9200,9203,9203,9725,9726,9748,9749,9776,9783,9800,9811,9855,9855,9866,9871,9875,9875,9889,9889,9898,9899,9917,9918,9924,9925,9934,9934,9940,9940,9962,9962,9970,9971,9973,9973,9978,9978,9981,9981,9989,9989,9994,9995,10024,10024,10060,10060,10062,10062,10067,10069,10071,10071,10133,10135,10160,10160,10175,10175,11035,11036,11088,11088,11093,11093,11904,11929,11931,12019,12032,12245,12272,12287,12289,12350,12353,12438,12441,12543,12549,12591,12593,12686,12688,12773,12783,12830,12832,12871,12880,42124,42128,42182,43360,43388,44032,55203,63744,64255,65040,65049,65072,65106,65108,65126,65128,65131,94176,94180,94192,94198,94208,101589,101631,101662,101760,101874,110576,110579,110581,110587,110589,110590,110592,110882,110898,110898,110928,110930,110933,110933,110948,110951,110960,111355,119552,119638,119648,119670,126980,126980,127183,127183,127374,127374,127377,127386,127488,127490,127504,127547,127552,127560,127568,127569,127584,127589,127744,127776,127789,127797,127799,127868,127870,127891,127904,127946,127951,127955,127968,127984,127988,127988,127992,128062,128064,128064,128066,128252,128255,128317,128331,128334,128336,128359,128378,128378,128405,128406,128420,128420,128507,128591,128640,128709,128716,128716,128720,128722,128725,128728,128732,128735,128747,128748,128756,128764,128992,129003,129008,129008,129292,129338,129340,129349,129351,129535,129648,129660,129664,129674,129678,129734,129736,129736,129741,129756,129759,129770,129775,129784,131072,196605,196608,262141];var xme=(e,t)=>{let r=0,n=Math.floor(e.length/2)-1;for(;r<=n;){let o=Math.floor((r+n)/2),i=o*2;if(t<e[i])n=o-1;else if(t>e[i+1])r=o+1;else return!0}return!1};var knr=19968,[TZn,vZn]=CZn(z4e);function CZn(e){let t=e[0],r=e[1];for(let n=0;n<e.length;n+=2){let o=e[n],i=e[n+1];if(knr>=o&&knr<=i)return[o,i];i-o>r-t&&(t=o,r=i)}return[t,r]}var Onr=e=>e<161||e>1114109?!1:xme(Inr,e),D3=e=>e<Tnr||e>vnr?!1:xme(Cnr,e);var L3=e=>e>=TZn&&e<=vZn?!0:e<wnr||e>Rnr?!1:xme(z4e,e);function wZn(e){if(!Number.isSafeInteger(e))throw new TypeError(`Expected a code point, got \`${typeof e}\`.`)}function U3(e,{ambiguousAsWide:t=!1}={}){return wZn(e),D3(e)||L3(e)||t&&Onr(e)?2:1}var RZn=new Intl.Segmenter,Nnr=new RegExp("^(?:\\p{Default_Ignorable_Code_Point}|\\p{Control}|\\p{Format}|\\p{Nonspacing_Mark}|\\p{Enclosing_Mark}|\\p{Surrogate})+$","v"),kZn=new RegExp("^[\\p{Default_Ignorable_Code_Point}\\p{Control}\\p{Format}\\p{Nonspacing_Mark}\\p{Enclosing_Mark}\\p{Surrogate}]+","v"),OZn=new RegExp("\\p{Spacing_Mark}","v"),NZn=new RegExp("^\\p{RGI_Emoji}$","v"),MZn=/^[\d#*]\u20E3$/,PZn=new RegExp("\\p{Extended_Pictographic}","gu");function zZn(e){if(e.length>50)return!1;if(MZn.test(e))return!0;if(e.includes("\u200D")){let t=e.match(PZn);return t!==null&&t.length>=2}return!1}function DZn(e){return e.replace(kZn,"")}function LZn(e){return Nnr.test(e)}function Mnr(e){return e>=4352&&e<=4447||e>=43360&&e<=43388}function Pnr(e){return e>=4448&&e<=4519||e>=55216&&e<=55238}function znr(e){return e>=4520&&e<=4607||e>=55243&&e<=55291}function UZn(e){return Mnr(e)||Pnr(e)||znr(e)}function $Zn(e,t){let r=[];for(let o of e)Nnr.test(o)||r.push(o.codePointAt(0));if(r.length===0)return;let n=0;for(let o=0;o<r.length;o++){let i=r[o];if(!UZn(i)){if(n===0)return;for(let s=o;s<r.length;s++)n+=U3(r[s],t);return n}if(Mnr(i)&&Pnr(r[o+1])){n+=2,o+=znr(r[o+2])?2:1;continue}n+=U3(i,t)}return n}function BZn(e,t){let r=0,n=!0;for(let o of e){if(n){n=!1;continue}(OZn.test(o)||o>="\uFF00"&&o<="\uFFEF")&&(r+=U3(o.codePointAt(0),t))}return r}function Jl(e,t={}){if(typeof e!="string"||e.length===0)return 0;let{ambiguousIsNarrow:r=!0,countAnsiEscapeCodes:n=!1}=t,o=e;if(!n&&(o.includes("\x1B")||o.includes("\x9B"))&&(o=z3(o)),o.length===0)return 0;if(/^[\u0020-\u007E]*$/.test(o))return o.length;let i=0,s={ambiguousAsWide:!r};for(let{segment:a}of RZn.segment(o)){if(LZn(a))continue;if(NZn.test(a)||zZn(a)){i+=2;continue}let u=DZn(a),c=$Zn(u,s);if(c!==void 0){i+=c;continue}let d=u.codePointAt(0);i+=U3(d,s),i+=BZn(u,s)}return i}var Dnr=(e=0)=>t=>`\x1B[${t+e}m`,Lnr=(e=0)=>t=>`\x1B[${38+e};5;${t}m`,Unr=(e=0)=>(t,r,n)=>`\x1B[${38+e};2;${t};${r};${n}m`,Ku={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},fdu=Object.keys(Ku.modifier),qZn=Object.keys(Ku.color),FZn=Object.keys(Ku.bgColor),hdu=[...qZn,...FZn];function QZn(){let e=new Map;for(let[t,r]of Object.entries(Ku)){for(let[n,o]of Object.entries(r))Ku[n]={open:`\x1B[${o[0]}m`,close:`\x1B[${o[1]}m`},r[n]=Ku[n],e.set(o[0],o[1]);Object.defineProperty(Ku,t,{value:r,enumerable:!1})}return Object.defineProperty(Ku,"codes",{value:e,enumerable:!1}),Ku.color.close="\x1B[39m",Ku.bgColor.close="\x1B[49m",Ku.color.ansi=Dnr(),Ku.color.ansi256=Lnr(),Ku.color.ansi16m=Unr(),Ku.bgColor.ansi=Dnr(10),Ku.bgColor.ansi256=Lnr(10),Ku.bgColor.ansi16m=Unr(10),Object.defineProperties(Ku,{rgbToAnsi256:{value(t,r,n){return t===r&&r===n?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(r/255*5)+Math.round(n/255*5)},enumerable:!1},hexToRgb:{value(t){let r=/[a-f\d]{6}|[a-f\d]{3}/i.exec(t.toString(16));if(!r)return[0,0,0];let[n]=r;n.length===3&&(n=[...n].map(i=>i+i).join(""));let o=Number.parseInt(n,16);return[o>>16&255,o>>8&255,o&255]},enumerable:!1},hexToAnsi256:{value:t=>Ku.rgbToAnsi256(...Ku.hexToRgb(t)),enumerable:!1},ansi256ToAnsi:{value(t){if(t<8)return 30+t;if(t<16)return 90+(t-8);let r,n,o;if(t>=232)r=((t-232)*10+8)/255,n=r,o=r;else{t-=16;let a=t%36;r=Math.floor(t/36)/5,n=Math.floor(a/6)/5,o=a%6/5}let i=Math.max(r,n,o)*2;if(i===0)return 30;let s=30+(Math.round(o)<<2|Math.round(n)<<1|Math.round(r));return i===2&&(s+=60),s},enumerable:!1},rgbToAnsi:{value:(t,r,n)=>Ku.ansi256ToAnsi(Ku.rgbToAnsi256(t,r,n)),enumerable:!1},hexToAnsi:{value:t=>Ku.ansi256ToAnsi(Ku.hexToAnsi256(t)),enumerable:!1}}),Ku}var GZn=QZn(),iu=GZn;var QP="\x1B",L4e="\x9B",jZn=new Set([QP,L4e]),Gnr="\x07",jnr="[",VZn="]",vme="m",Cme=0,Vnr=39,Hnr=49,Jnr=59,Knr=38,Wnr=48,Ynr=58,HZn=5,JZn=2,Tme=`${VZn}8;;`,Xnr=new RegExp(`^\\u001B(?:\\${jnr}(?<sgr>[0-9;]*)${vme}|${Tme}(?<uri>[^\\u0007\\u001B]*)(?:\\u0007|\\u001B\\\\))`),Znr=new RegExp(`^\\u009B(?<sgr>[0-9;]*)${vme}`),eor=new Set(iu.codes.values());eor.delete(Cme);var KZn=new Intl.Segmenter,tor=e=>Array.from(KZn.segment(e),({segment:t})=>t),$nr=8,ror=e=>`${QP}${jnr}${e}${vme}`,Bnr=e=>`${QP}${Tme}${e}${Gnr}`,nor=e=>{let t=e.split(";").map(n=>n===""?Cme:Number.parseInt(n,10)),r=[];for(let n=0;n<t.length;n++){let o=t[n];if(Number.isFinite(o)){if(o===Knr||o===Wnr||o===Ynr){if(n+1>=t.length)break;let i=t[n+1];if(i===HZn&&Number.isFinite(t[n+2])){r.push([o,i,t[n+2]]),n+=2;continue}let s=t[n+2],a=t[n+3],u=t[n+4];if(i===JZn&&Number.isFinite(s)&&Number.isFinite(a)&&Number.isFinite(u)){r.push([o,i,s,a,u]),n+=4;continue}break}r.push([o])}}return r},Ime=(e,t)=>{let r=e.findIndex(n=>n.family===t);r!==-1&&e.splice(r,1)},qnr=(e,t)=>{Ime(e,t.family),e.push(t)},WZn=(e,t)=>{for(let r=e.length-1;r>=0;r--){let n=e[r];n.family.startsWith("modifier-")&&n.close===t&&e.splice(r,1)}},YZn=(e,t)=>{if(e>=30&&e<=37||e>=90&&e<=97||e===Knr&&t.length>1)return{family:"foreground",open:t.join(";"),close:Vnr};if(e>=40&&e<=47||e>=100&&e<=107||e===Wnr&&t.length>1)return{family:"background",open:t.join(";"),close:Hnr};if(e===Ynr&&t.length>1)return{family:"underlineColor",open:t.join(";"),close:Jnr}},oor=(e,t)=>e===Cme?(t.length=0,!0):e===Vnr?(Ime(t,"foreground"),!0):e===Hnr?(Ime(t,"background"),!0):e===Jnr?(Ime(t,"underlineColor"),!0):eor.has(e)?(WZn(t,e),!0):!1,XZn=(e,t)=>{let[r]=e;if(oor(r,t))return;let n=YZn(r,e);if(n){qnr(t,n);return}let o=iu.codes.get(r);o!==void 0&&o!==Cme&&qnr(t,{family:`modifier-${r}`,open:e.join(";"),close:o})},Fnr=(e,t)=>{for(let r of nor(e))XZn(r,t)},Qnr=(e,t)=>{for(let r of nor(e)){let[n]=r;oor(n,t)}},ZZn=(e,t)=>{let r=e;for(;r.length>0;){if(r.startsWith(QP)&&r[1]!=="\\"){let n=Xnr.exec(r);if(!n)break;n.groups.sgr!==void 0&&Qnr(n.groups.sgr,t),r=r.slice(n[0].length);continue}if(r.startsWith(L4e)){let n=Znr.exec(r);if(!n||n.groups.sgr===void 0)break;Qnr(n.groups.sgr,t),r=r.slice(n[0].length);continue}break}},eeo=e=>[...e].reverse().map(t=>ror(t.close)).join(""),teo=e=>e.map(t=>ror(t.open)).join(""),reo=e=>e.split(" ").map(t=>Jl(t)),D4e=(e,t,r)=>{let n=tor(t),o=!1,i=!1,s=Jl(z3(e.at(-1)));for(let[a,u]of n.entries()){let c=Jl(u);if(s+c<=r?e[e.length-1]+=u:(e.push(u),s=0),jZn.has(u)&&!(i&&u===QP&&n[a+1]==="\\")&&(o=!0,i=n.slice(a+1,a+1+Tme.length).join("")===Tme),o){i?(u===Gnr||u==="\\"&&a>0&&n[a-1]===QP)&&(o=!1,i=!1):u===vme&&(o=!1);continue}s+=c,s===r&&a<n.length-1&&(e.push(""),s=0)}!s&&e.at(-1).length>0&&e.length>1&&(e[e.length-2]+=e.pop())},neo=e=>{let t=e.split(" "),r=t.length;for(;r>0&&!(Jl(t[r-1])>0);)r--;return r===t.length?e:t.slice(0,r).join(" ")+t.slice(r).join("")},oeo=e=>{if(!e.includes(" "))return e;let t=e.split(" "),r=0,n="";for(let[o,i]of t.entries())if(n+=i,r+=Jl(i),o<t.length-1){let s=$nr-r%$nr;n+=" ".repeat(s),r+=s}return n},ieo=(e,t,r={})=>{if(r.trim!==!1&&e.trim()==="")return"";let n="",o,i=[],s=reo(e),a=[""];for(let[m,f]of e.split(" ").entries()){r.trim!==!1&&(a[a.length-1]=a.at(-1).trimStart());let g=Jl(a.at(-1));if(m!==0&&(g>=t&&(r.wordWrap===!1||r.trim===!1)&&(a.push(""),g=0),(g>0||r.trim===!1)&&(a[a.length-1]+=" ",g++)),r.hard&&r.wordWrap!==!1&&s[m]>t){let A=t-g,S=1+Math.floor((s[m]-A-1)/t);Math.floor((s[m]-1)/t)<S&&a.push(""),D4e(a,f,t);continue}if(g+s[m]>t&&g>0&&s[m]>0){if(r.wordWrap===!1&&g<t){D4e(a,f,t);continue}a.push("")}if(g+s[m]>t&&r.wordWrap===!1){D4e(a,f,t);continue}a[a.length-1]+=f}r.trim!==!1&&(a=a.map(m=>neo(m)));let u=a.join(`
|
|
809
809
|
`),c=tor(u),d=0;for(let[m,f]of c.entries()){if(n+=f,f===QP&&c[m+1]!=="\\"){let{groups:g}=Xnr.exec(u.slice(d))||{groups:{}};g.sgr!==void 0?Fnr(g.sgr,i):g.uri!==void 0&&(o=g.uri.length===0?void 0:g.uri)}else if(f===L4e){let{groups:g}=Znr.exec(u.slice(d))||{groups:{}};g.sgr!==void 0&&Fnr(g.sgr,i)}if(c[m+1]===`
|
|
810
810
|
`)o&&(n+=Bnr("")),n+=eeo(i);else if(f===`
|
|
@@ -922,7 +922,7 @@ order by ${n[s-1]})`;return _e`case when ${t} is null then null else ${i} end`},
|
|
|
922
922
|
last_used_at TEXT NOT NULL,
|
|
923
923
|
ended_at TEXT
|
|
924
924
|
)
|
|
925
|
-
`),e.exec("CREATE UNIQUE INDEX IF NOT EXISTS idx_scope_request_id ON sessions (scope_key, create_request_id)"),e.exec("CREATE UNIQUE INDEX IF NOT EXISTS idx_backend_native_session ON sessions (backend, native_session_id)")},x5e=(e,t,r)=>{e.exec("BEGIN");try{r(),e.exec(`PRAGMA user_version=${t}`),e.exec("COMMIT")}catch(n){throw e.exec("ROLLBACK"),n}},Cso=e=>e.prepare("PRAGMA user_version").get()?.user_version??0,Wur=e=>({...e,ref:e.ref?{...e.ref,externalState:e.ref.externalState?{...e.ref.externalState}:void 0}:null}),wso=e=>({sessionId:e.sessionId,runtimeId:e.runtimeId,provider:e.provider,backend:e.backend,nativeSessionId:e.nativeSessionId??e.ref?.externalSessionId??null,model:e.spec.model,effort:e.spec.effort??null,systemPrompt:e.spec.systemPrompt??null,cwd:e.spec.cwd,providerOptionsJson:e.spec.providerOptions?JSON.stringify(e.spec.providerOptions):null,scopeKey:e.scopeKey,createRequestId:e.createRequestId,status:e.status,dirty:e.dirty??!1,externalStateJson:e.ref?.externalState?JSON.stringify(e.ref.externalState):null,refJson:e.ref?JSON.stringify(e.ref):null,createdAt:e.createdAt,lastUsedAt:e.lastUsedAt,endedAt:e.endedAt??null}),Rso=e=>{let t=kso(e.externalStateJson);if(!e.refJson&&!e.nativeSessionId)return null;if(!e.refJson)return{provider:e.provider,backend:e.backend,externalSessionId:e.nativeSessionId,cwd:e.cwd,externalState:t};let r=JSON.parse(e.refJson),n=r.externalState?{...r.externalState}:void 0;return{...r,externalSessionId:e.nativeSessionId??r.externalSessionId,externalState:t??n}},kso=e=>{if(!e)return;let t=JSON.parse(e);if(!(typeof t!="object"||t===null||Array.isArray(t))){for(let r of Object.values(t))if(typeof r!="string")return;return t}},Oso=e=>{if(!e)return;let t=JSON.parse(e);if(!(typeof t!="object"||t===null||Array.isArray(t)))return t};var zW=class{backendRegistry;catalogCache;store;sessionIdFactory;now;logger;sessions=new Map;inFlight=new Map;constructor(t){this.backendRegistry=t.backendRegistry,this.catalogCache=t.catalogCache,this.store=t.store??T5e({path:t.sessionDbPath}),this.sessionIdFactory=t.sessionIdFactory??Pso,this.now=t.now,this.logger=(t.logger??co).child({component:"session_mgr"});for(let r of this.store.load())this.sessions.set(r.sessionId,BF(r));this.logger.info({count:this.sessions.size},"loaded persisted sessions")}createSession=async t=>{let r=`create::${t.scopeKey}::${t.createRequestId}`,n=this.inFlight.get(r);if(n){let i=await n;if(!Wfe(i.spec,t.spec))throw new ln("create_request_conflict","Create request ID reused with a different session spec",{createRequestId:t.createRequestId});return i}let o=this.performCreate(t);this.inFlight.set(r,o);try{return await o}finally{this.inFlight.delete(r)}};importSession=async t=>{let r=`import::${t.scopeKey}::${t.createRequestId}`,n=this.inFlight.get(r);if(n){let i=await n;if(!Wfe(i.spec,t.spec)||i.nativeSessionId!==t.nativeSessionId)throw new ln("create_request_conflict","Import request ID reused with different session input",{createRequestId:t.createRequestId});return i}let o=this.performImport(t);this.inFlight.set(r,o);try{return await o}finally{this.inFlight.delete(r)}};performCreate=async t=>{let r=this.findByCreateRequestId(t.createRequestId,t.scopeKey);if(r){if(r.status!=="active")throw new ln("create_request_conflict","Create request ID already used by an ended session",{createRequestId:t.createRequestId});if(!Wfe(r.spec,t.spec))throw this.logger.warn({createRequestId:t.createRequestId,existingBackend:r.backend,requestedBackend:t.spec.backend},"create request id conflict: different spec"),new ln("create_request_conflict","Create request ID reused with a different session spec",{createRequestId:t.createRequestId});return this.logger.debug({sessionId:r.sessionId,createRequestId:t.createRequestId},"idempotent session create: returning existing session"),Ok(r)}let n=await this.validateSessionSpec(t.spec),o=this.nextSessionId(),i=this.now(),s={sessionId:o,runtimeId:Xur(o),provider:n.provider,backend:t.spec.backend,spec:Yfe(t.spec),scopeKey:t.scopeKey,createRequestId:t.createRequestId,status:"active",dirty:!1,nativeSessionId:void 0,ref:null,createdAt:i,lastUsedAt:i};return this.persistOrThrow(s),this.sessions.set(o,s),this.logger.info({sessionId:o,backend:t.spec.backend,scopeKey:t.scopeKey},"session created"),Ok(s)};performImport=async t=>{let r=this.findByCreateRequestId(t.createRequestId,t.scopeKey);if(r){if(r.status!=="active")throw new ln("create_request_conflict","Import request ID already used by an ended session",{createRequestId:t.createRequestId});if(!Wfe(r.spec,t.spec)||r.nativeSessionId!==t.nativeSessionId)throw new ln("create_request_conflict","Import request ID reused with different session input",{createRequestId:t.createRequestId});return Ok(r)}let n=this.findByNativeSessionId(t.spec.backend,t.nativeSessionId);if(n)throw new ln("create_request_conflict","Native session ID is already imported",{backend:t.spec.backend,nativeSessionId:t.nativeSessionId,existingSessionId:n.sessionId});let o=await this.validateSessionSpec(t.spec),i=this.nextSessionId(),s=this.now(),a={provider:o.provider,backend:t.spec.backend,externalSessionId:t.nativeSessionId,cwd:t.spec.cwd,externalState:t.externalState?{...t.externalState}:void 0},u={sessionId:i,runtimeId:Xur(i),provider:o.provider,backend:t.spec.backend,nativeSessionId:t.nativeSessionId,spec:Yfe(t.spec),scopeKey:t.scopeKey,createRequestId:t.createRequestId,status:"active",dirty:!1,ref:a,createdAt:s,lastUsedAt:s};return this.persistOrThrow(u),this.sessions.set(i,u),this.logger.info({sessionId:i,backend:t.spec.backend,nativeSessionId:t.nativeSessionId,scopeKey:t.scopeKey},"session imported"),Ok(u)};beginTurn=t=>{let r=this.getActiveStored(t.sessionId);if(this.assertScope(t.sessionId,t.scopeKey,r.scopeKey),r.dirty)throw new ln("session_not_found","Session cannot be resumed after an interrupted provider turn",{sessionId:r.sessionId});return this.logger.debug({sessionId:r.sessionId,backend:r.backend},"existing session for turn"),{sessionId:r.sessionId,runtimeId:r.runtimeId,backend:r.backend,session:r.ref?v5e(r.ref):null,isNew:!1}};refreshRuntimeId=(t,r)=>{let n=this.sessions.get(t);if(!n||n.runtimeId===r)return;let o=BF(n);o.runtimeId=r,this.persistOrThrow(o),this.sessions.set(t,o)};getSession=(t,r)=>{let n=this.getActiveStored(t);return this.assertScope(t,r,n.scopeKey),Ok(n)};getSessionRecord=t=>{let r=this.sessions.get(t);if(!(!r||r.status==="ended"))return r};listSessions=t=>[...this.sessions.values()].filter(r=>!(r.scopeKey!==t.scopeKey||t.backend&&r.backend!==t.backend||t.status&&r.status!==t.status)).map(Ok);deleteSession=(t,r)=>{let n=this.getActiveStored(t);this.assertScope(t,r,n.scopeKey);let o=this.now();return n.status="ended",n.endedAt=o,n.lastUsedAt=o,this.store.delete(t,o),Ok(n)};recordSessionRef=(t,r)=>{let n=this.getActiveStored(t);if(r.backend!==n.backend)throw new ln("backend_mismatch","Runtime session ref backend does not match daemon session backend",{sessionId:t,expectedBackend:n.backend,actualBackend:r.backend});let o=this.findByNativeSessionId(r.backend,r.externalSessionId,t);if(o)throw new ln("create_request_conflict","Runtime session ref is already attached to another daemon session",{sessionId:t,existingSessionId:o.sessionId,backend:r.backend,nativeSessionId:r.externalSessionId});let i=BF(n);return i.ref=v5e(r),i.nativeSessionId=r.externalSessionId,i.provider=r.provider,i.lastUsedAt=this.now(),i.dirty=!1,this.persistOrThrow(i),this.sessions.set(t,i),Ok(i)};markDirty=t=>{let r=this.sessions.get(t);if(!r||r.status==="ended")return;let n=BF(r);n.dirty=!0,this.store.upsert(BF(n)),this.sessions.set(t,n)};close=()=>{this.store.close?.()};findByCreateRequestId=(t,r)=>{for(let n of this.sessions.values())if(n.createRequestId===t&&n.scopeKey===r)return n};findByNativeSessionId=(t,r,n)=>{for(let o of this.sessions.values())if(o.sessionId!==n&&o.backend===t&&o.nativeSessionId===r)return o};validateSessionSpec=async t=>{let r;try{r=this.backendRegistry.describe(t.backend)}catch(i){throw i instanceof CI?new ln("backend_unsupported",i.message,{backend:i.backend}):i}Dso(t.cwd,t.backend),this.validateProviderOptions(t.backend,t.providerOptions);let n;try{n=await this.catalogCache.get(t.backend,t.cwd)}catch(i){throw i instanceof ia?new ln(Lso(i.code),i.message,{backend:i.backend??t.backend,cwd:t.cwd}):i}if(!WQ(t.model,n))throw new ln("invalid_model",`Model "${t.model}" is not supported by backend "${t.backend}"`,{backend:t.backend,model:t.model});return r};validateProviderOptions=(t,r)=>{if(!r)return;if(typeof r!="object"||r===null||Array.isArray(r))throw this.logger.warn({backend:t},"invalid providerOptions type rejected"),new ln("invalid_params","providerOptions must be a plain object",{backend:t,path:"providerOptions"});let n=r.opencode;if(n===void 0)return;if(typeof n!="object"||n===null||Array.isArray(n))throw this.logger.warn({backend:t},"invalid providerOptions.opencode type rejected"),new ln("invalid_params","providerOptions.opencode must be a plain object",{backend:t,path:"providerOptions.opencode"});let i=n.approvalMode;if(i!==void 0&&i!=="never"&&i!=="manual"&&i!=="auto")throw this.logger.warn({backend:t,mode:i},"invalid providerOptions.opencode.approvalMode rejected"),new ln("invalid_params","providerOptions.opencode.approvalMode must be one of: never, manual, auto",{backend:t,path:"providerOptions.opencode.approvalMode",value:typeof i=="string"?i:typeof i})};assertScope=(t,r,n)=>{if(r!==n)throw this.logger.warn({sessionId:t,requestScope:r,recordScope:n},"scope mismatch"),new ln("session_not_found","Session not found",{sessionId:t})};persistOrThrow=t=>{this.store.upsert(BF(t)),t.dirty=!1};getActiveStored=t=>{let r=this.sessions.get(t);if(!r||r.status==="ended")throw new ln("session_not_found","Session not found",{sessionId:t});return r};nextSessionId=()=>{let t=this.sessionIdFactory();for(;this.sessions.has(t);)t=this.sessionIdFactory();return t}},Pso=()=>`session_${Nso()}`,Xur=e=>`session:${e}`,Ok=e=>({sessionId:e.sessionId,runtimeId:e.runtimeId,provider:e.provider,backend:e.backend,nativeSessionId:e.nativeSessionId,spec:Yfe(e.spec),scopeKey:e.scopeKey,createRequestId:e.createRequestId,status:e.status,dirty:e.dirty,createdAt:e.createdAt,lastUsedAt:e.lastUsedAt,endedAt:e.endedAt}),BF=e=>({...e,spec:Yfe(e.spec),ref:e.ref?v5e(e.ref):null}),v5e=e=>({...e,externalState:e.externalState?{...e.externalState}:void 0}),Wfe=(e,t)=>e.backend===t.backend&&e.model===t.model&&e.effort===t.effort&&e.systemPrompt===t.systemPrompt&&e.cwd===t.cwd&&zso(e.providerOptions,t.providerOptions),zso=(e,t)=>{if(e===void 0&&t===void 0)return!0;if(e===void 0||t===void 0)return!1;try{return JSON.stringify(DW(e))===JSON.stringify(DW(t))}catch{return!1}},DW=e=>{if(e===null)return null;if(Array.isArray(e))return e.map(DW);if(typeof e=="object"){let t=Object.getPrototypeOf(e);if(t!==Object.prototype&&t!==null)throw new ln("invalid_params",`Non-plain object is not JSON-safe: ${t?.constructor?.name??typeof e}`);let r={};for(let n of Object.keys(e).sort())r[n]=DW(e[n]);return r}if(typeof e=="string"||typeof e=="boolean")return e;if(typeof e=="number"){if(!Number.isFinite(e))throw new ln("invalid_params",`Number is not JSON-safe: ${e}`);return e}throw new ln("invalid_params",`Unsupported JSON value type: ${typeof e}`)},Yfe=e=>({backend:e.backend,model:e.model,effort:e.effort,systemPrompt:e.systemPrompt,cwd:e.cwd,providerOptions:e.providerOptions?DW(e.providerOptions):void 0}),Dso=(e,t)=>{let r;try{r=Mso(e)}catch{throw new ln("invalid_params",`CWD does not exist: ${e}`,{backend:t,cwd:e})}if(!r.isDirectory())throw new ln("invalid_params",`CWD is not a directory: ${e}`,{backend:t,cwd:e})},Lso=e=>e==="cwd_required"?"invalid_params":e==="invalid_model"?"invalid_model":"backend_unsupported";var Xfe=class{daemonTurnId;capacity;now;events=[];nextSeqValue=1;constructor(t){this.daemonTurnId=t.daemonTurnId,this.capacity=t.capacity,this.now=t.now}get oldestSeq(){return this.events[0]?.seq??this.nextSeqValue}get nextSeq(){return this.nextSeqValue}append=t=>{let r={daemonTurnId:this.daemonTurnId,seq:this.nextSeqValue,event:t,createdAt:this.now()};for(this.nextSeqValue+=1,this.events.push(r);this.events.length>this.capacity;)this.events.shift();return r};replay=(t=this.oldestSeq)=>{if(t<this.oldestSeq)throw new ln("event_gap","Requested events are no longer available",{daemonTurnId:this.daemonTurnId,oldestSeq:this.oldestSeq,requestedSeq:t});return this.events.filter(r=>r.seq>=t)};snapshot=()=>({daemonTurnId:this.daemonTurnId,capacity:this.capacity,oldestSeq:this.oldestSeq,nextSeq:this.nextSeq,events:[...this.events]})};import{resolve as Uso}from"node:path";var C5e=(e,t)=>{if(e===null||typeof e=="boolean"||typeof e=="string")return e;if(typeof e=="number"){if(!Number.isFinite(e))throw new Error(`Non-finite number in providerOptions: ${Zur(e)}`);return e}if(Array.isArray(e)){if(t.has(e))throw new Error("Circular reference in providerOptions");return t.add(e),e.map(o=>C5e(o,t))}let r=e;if(t.has(r))throw new Error("Circular reference in providerOptions");t.add(r);let n={};for(let o of Object.keys(r).sort()){let i=r[o];if(i===void 0||typeof i=="function"||typeof i=="symbol"||typeof i=="bigint")throw new Error(`Non-JSON-safe value in providerOptions at key "${o}": ${typeof i} ${Zur(i)}`);n[o]=C5e(i,t)}return n},Zur=e=>{try{return JSON.stringify(e)}catch{return String(e)}},ecr=e=>{let t=Uso(e.cwd),n=e.providerOptions&&Object.keys(e.providerOptions).length>0?C5e(e.providerOptions,new WeakSet):null;return JSON.stringify([e.backend,t,n])};var tcr=e=>{let{raw:t,...r}=e;return r};var Zfe=class{source;runtime;getTurnRef;config;startedAt;timeoutKindValue;constructor(t){this.source=t.source,this.runtime=t.runtime,this.getTurnRef=t.getTurnRef,this.config=t.config,this.startedAt=t.startedAt,this.timeoutKindValue=void 0}get timeoutKind(){return this.timeoutKindValue}set timeoutKind(t){this.timeoutKindValue=t}[Symbol.asyncIterator](){let t=this.source[Symbol.asyncIterator]();return new w5e(t,this)}},w5e=class{sourceIterator;stream;lastEventAt;sawTurnStarted;pendingToolCalls;terminated;timerHandle;constructor(t,r){this.sourceIterator=t,this.stream=r,this.lastEventAt=r.startedAt,this.sawTurnStarted=!1,this.pendingToolCalls=0,this.terminated=!1,this.timerHandle=void 0}next=async()=>{if(this.terminated)return{done:!0,value:void 0};let t=Date.now(),r=t-this.stream.startedAt,n=this.pendingToolCalls>0?0:t-this.lastEventAt,o=this.stream.config;if(o.maxRuntimeMs>0&&r>=o.maxRuntimeMs)return this.handleTimeout("max_timeout");if(!this.sawTurnStarted&&o.startTimeoutMs>0&&r>=o.startTimeoutMs)return this.handleTimeout("start_timeout");if(this.sawTurnStarted&&o.idleTimeoutMs>0&&n>=o.idleTimeoutMs)return this.handleTimeout("idle_timeout");let i,s;if(o.maxRuntimeMs>0&&(i=o.maxRuntimeMs-r,s="max_timeout"),!this.sawTurnStarted&&o.startTimeoutMs>0){let d=o.startTimeoutMs-r;(i===void 0||d<i)&&(i=d,s="start_timeout")}if(this.sawTurnStarted&&o.idleTimeoutMs>0&&this.pendingToolCalls===0){let d=o.idleTimeoutMs-n;(i===void 0||d<i)&&(i=d,s="idle_timeout")}let a=this.sourceIterator.next();a.catch(()=>{});let u;if(i!==void 0&&i>0){let d=new Promise(f=>{this.timerHandle=setTimeout(f,i,"timeout")}),m=await Promise.race([a,d]);if(this.timerHandle&&(clearTimeout(this.timerHandle),this.timerHandle=void 0),m==="timeout")return this.handleTimeout(s??this.pickTimeoutKind());u=m}else{if(i!==void 0&&i<=0)return this.handleTimeout(s??this.pickTimeoutKind());u=await a}if(u.done)return{done:!0,value:void 0};let c=u.value;return c.type==="turn.started"&&(this.sawTurnStarted=!0),c.type==="tool.started"&&this.pendingToolCalls++,c.type==="tool.completed"&&(this.pendingToolCalls=Math.max(0,this.pendingToolCalls-1)),this.lastEventAt=Date.now(),{done:!1,value:c}};return=async()=>this.terminated?{done:!0,value:void 0}:(this.terminated=!0,await this.sourceIterator.return?.(),{done:!0,value:void 0});throw=async t=>this.terminated?{done:!0,value:void 0}:(this.terminated=!0,await this.sourceIterator.throw?.(t),{done:!0,value:void 0});handleTimeout=t=>{if(this.terminated)return{done:!0,value:void 0};this.terminated=!0,this.stream.timeoutKind=t;let r=this.stream.getTurnRef();return r&&this.stream.runtime.cancelTurn&&Promise.resolve(this.stream.runtime.cancelTurn(r)).catch(()=>{}),this.sourceIterator.return?.().catch(()=>{}),{done:!0,value:void 0}};pickTimeoutKind=()=>{let t=Date.now(),r=t-this.stream.startedAt,n=this.pendingToolCalls>0?0:t-this.lastEventAt,o=this.stream.config;return o.maxRuntimeMs>0&&r>=o.maxRuntimeMs?"max_timeout":!this.sawTurnStarted&&o.startTimeoutMs>0&&r>=o.startTimeoutMs?"start_timeout":(this.sawTurnStarted&&o.idleTimeoutMs>0&&n>=o.idleTimeoutMs,"idle_timeout")}};var $so=new Set(["completed","failed","cancelled","timed_out"]),Bso={startTimeoutMs:6e4,idleTimeoutMs:3e5,maxRuntimeMs:18e5},ehe=class{runtimeManager;sessionManager;idFactory;now;eventStoreCapacity;logger;timeoutConfig;turns=new Map;nextSubscriptionSeq=1;constructor(t){this.runtimeManager=t.runtimeManager,this.sessionManager=t.sessionManager,this.idFactory=t.idFactory,this.now=t.now,this.eventStoreCapacity=t.eventStoreCapacity,this.logger=(t.logger??co).child({component:"turn_mgr"}),this.timeoutConfig={...Bso,...t.timeoutConfig}}startTurn=async t=>{if(this.activeTurnIdsForSession(t.sessionId).length>0)throw this.logger.warn({sessionId:t.sessionId},"turn rejected: session has active turn"),new ln("session_busy","Session has an active turn",{sessionId:t.sessionId});t.input.content!==void 0&&RI(t.input.content);let r=await this.resolveTurnInput(t);if(t.input.content!==void 0&&this.runtimeManager.getRuntime(r.runtimeId).capabilities.inputContent===!1)throw this.logger.warn({sessionId:r.sessionId,backend:r.backend},"turn rejected: backend does not accept content input"),new Zr(An({code:"unsupported_capability",message:"Backend does not accept structured content input",source:"caller",backend:r.backend,phase:"preflight",execution:"not_sent",recoverability:"persistent",recoveryAction:"change_input",runtimeState:"reusable",details:{sessionId:r.sessionId,backend:r.backend}}));if(this.logger.debug({sessionId:r.sessionId,backend:r.backend},"turn input resolved"),r.runtimeInput.session&&this.runtimeManager.getRuntime(r.runtimeId).capabilities.resume===!1)throw this.logger.warn({sessionId:r.sessionId,backend:r.backend},"turn rejected: resume unsupported"),new ln("resume_unsupported","Backend does not support session resume",{sessionId:r.sessionId,backend:r.backend});let n=this.idFactory(),o=new Xfe({daemonTurnId:n,capacity:this.eventStoreCapacity,now:this.now}),s={entry:{daemonTurnId:n,sessionId:r.sessionId,runtimeId:r.runtimeId,status:"starting",input:qso(t.input),session:r.runtimeInput.session,startedAt:this.now(),oldestSeq:o.oldestSeq,nextSeq:o.nextSeq},store:o,subscribers:new Set,events:[],finalText:"",terminal:!1};if(this.activeTurnIdsForSession(r.sessionId).length>0)throw new ln("session_busy","Session has an active turn",{sessionId:r.sessionId});let a=this.runtimeManager.getEntry(r.runtimeId);if(a.activeTurnIds.length>0){if(a.capabilities.concurrentTurns===!1)throw new ln("runtime_busy","Runtime has an active turn",{runtimeId:r.runtimeId,activeTurnIds:a.activeTurnIds});this.logger.info({runtimeId:r.runtimeId,activeTurnIds:a.activeTurnIds},"allowing different-session concurrent turn")}return this.turns.set(n,s),this.runtimeManager.markRunning(r.runtimeId,n),this.logger.info({daemonTurnId:n,sessionId:r.sessionId,backend:r.backend},"turn started"),this.runTurnPump(s,r).catch(u=>{this.failTurn(s,this.daemonFailure(s,u))}),this.cloneEntry(s.entry)};getTurn=t=>this.cloneEntry(this.get(t).entry);listTurns=(t={})=>[...this.turns.values()].filter(r=>!(t.runtimeId&&r.entry.runtimeId!==t.runtimeId||t.status&&r.entry.status!==t.status)).map(r=>this.cloneEntry(r.entry));subscribeTurn=(t,r={})=>{let n=this.get(t),o=n.store.replay(r.fromSeq),i=new Ha;n.subscribers.add(i);let s=n.terminal,a=`sub_${this.nextSubscriptionSeq}`;this.nextSubscriptionSeq+=1;let u=!1,c=async()=>{u||(u=!0,n.subscribers.delete(i),i.close())};return{subscriptionId:a,events:this.subscription(i,o,s,c),close:c}};cancelTurn=async t=>{let r=this.get(t);if(this.isTerminal(r.entry.status))throw new ln("turn_not_running","Turn is not running",{daemonTurnId:t});if(!r.entry.turnRef)throw new ln("turn_not_ready","Turn is not ready",{daemonTurnId:t});let n=this.runtimeManager.getRuntime(r.entry.runtimeId);if(!n.cancelTurn)throw new ln("backend_unsupported","Cancel is unsupported",{daemonTurnId:t});await n.cancelTurn(r.entry.turnRef),this.logger.info({daemonTurnId:t},"turn cancelled")};steerTurn=async(t,r)=>{let n=this.get(t);if(this.isTerminal(n.entry.status))throw new ln("turn_not_running","Turn is not running",{daemonTurnId:t});if(!n.entry.turnRef)throw new ln("turn_not_ready","Turn is not ready",{daemonTurnId:t});let o=this.runtimeManager.getRuntime(n.entry.runtimeId);if(!o.steerTurn)throw new ln("backend_unsupported","Steer is unsupported",{daemonTurnId:t});await o.steerTurn(n.entry.turnRef,r)};resolveApproval=async(t,r,n)=>{let o=this.get(t);if(this.isTerminal(o.entry.status))throw new ln("turn_not_running","Turn is not running",{daemonTurnId:t});let i=this.runtimeManager.getRuntime(o.entry.runtimeId);if(!i.resolveApproval)throw new ln("backend_unsupported","Approvals are unsupported",{daemonTurnId:t});await i.resolveApproval(r,n)};activeTurnIdsForRuntime=t=>[...this.turns.values()].filter(r=>r.entry.runtimeId===t&&!this.isTerminal(r.entry.status)).map(r=>r.entry.daemonTurnId);activeTurnIdsForSession=t=>[...this.turns.values()].filter(r=>r.entry.sessionId===t&&!this.isTerminal(r.entry.status)).map(r=>r.entry.daemonTurnId);reclaimTerminal=({nowMs:t,policy:r})=>{let n=[];for(let[,s]of this.turns){if(!s.terminal)continue;let a=s.entry.completedAt;a&&n.push({id:s.entry.daemonTurnId,eligibleSinceMs:Date.parse(a)})}let o=r(n,t),i=[];for(let s of o){let a=this.turns.get(s);if(a){for(let u of a.subscribers)u.close();this.turns.delete(s),i.push(s),this.logger.info({daemonTurnId:s},"turn reclaimed")}}return i};forceTerminal=(t,r)=>{let n=this.get(t);this.isTerminal(n.entry.status)||(this.append(n,{type:"turn.failed",failure:r}),this.finalize(n,r.code==="cancelled"?"cancelled":"failed",{failure:r}))};timeoutTurn=async(t,r)=>{if(t.terminal)return;let{daemonTurnId:n}=t.entry,o=this.logger.child({daemonTurnId:n,terminalReason:r});o.warn("turn supervisor timeout finalizing");let i=t.entry.session?.backend??this.runtimeManager.getEntry(t.entry.runtimeId).backend,s=An({code:"timeout",message:`Turn timed out: ${r}`,source:"runtime",provider:this.runtimeManager.providerFor(i),backend:i,phase:"execution",execution:"unknown",recoverability:"unknown",recoveryAction:"unknown",runtimeState:"unknown"});this.append(t,{type:"turn.failed",failure:s}),this.finalize(t,"timed_out",{failure:s}),o.info({status:"timed_out",kind:r},"turn timed out")};failRuntimeTurns=(t,r)=>{let n=this.activeTurnIdsForRuntime(t);for(let o of n){let i=this.turns.get(o);if(!i||i.terminal)continue;let s=this.transportFailure(i,r);this.logger.warn({daemonTurnId:o,runtimeId:t,terminalReason:"transport_close",failureCode:s.code,runtimeState:s.runtimeState},"transport close fail runtime turns"),this.append(i,{type:"turn.failed",failure:s}),this.finalize(i,"failed",{failure:s})}};async*subscription(t,r,n,o){try{for(let i of r)yield i;if(n)return;for await(let i of t)yield i}finally{await o()}}runTurnPump=async(t,r)=>{let n=this.runtimeManager.getRuntime(t.entry.runtimeId),o=t.entry.daemonTurnId,i=this.logger.child({daemonTurnId:o});i.debug("turn pump started");try{t.entry.status="running";let s=r.runtimeInput,a=Date.now();if(s.session){let c=await n.resumeSession(s.session);this.recordSession(t,c),s={...s,session:c}}let u=new Zfe({source:n.streamTurn(s),runtime:n,getTurnRef:()=>t.entry.turnRef,config:this.timeoutConfig,startedAt:a});for await(let c of u){if(this.recordEventState(t,c),t.terminal)return;if(this.append(t,c),c.type==="turn.completed"){this.finalize(t,"completed",{result:this.resultFor(t,c.result)}),i.info({status:"completed",finalTextLength:t.finalText.length},"turn completed");return}if(c.type==="turn.failed"){let d=c.failure.code==="cancelled"?"cancelled":"failed";this.finalize(t,d,{failure:c.failure}),i.info({status:d,failureCode:c.failure.code,failureSource:c.failure.source,failurePhase:c.failure.phase,runtimeState:c.failure.runtimeState},"turn ended"),c.failure.runtimeState==="invalid"&&this.runtimeManager.markFailed(t.entry.runtimeId,c.failure);return}}if(u.timeoutKind){await this.timeoutTurn(t,u.timeoutKind);return}this.failTurn(t,this.streamContractFailure(t))}catch(s){this.failTurn(t,this.daemonFailure(t,s)),i.error({cause:s},"turn pump crashed")}};recordEventState=(t,r)=>{t.events.push(r),r.type==="session.started"&&this.recordSession(t,r.session),r.type==="turn.started"&&(this.recordSession(t,r.session),r.turnId&&(t.entry.turnRef={session:r.session,externalTurnId:r.turnId})),r.type==="message.completed"&&(t.finalText=r.text),r.type==="turn.completed"&&(t.finalText=r.result?.finalText??t.finalText,t.usage=r.result?.usage??t.usage,r.result?.session&&this.recordSession(t,r.result.session))};recordSession=(t,r)=>{this.sessionManager.recordSessionRef(t.entry.sessionId,r),t.entry.session=r};append=(t,r)=>{let n=t.store.append(tcr(r));t.entry.oldestSeq=t.store.oldestSeq,t.entry.nextSeq=t.store.nextSeq;for(let o of t.subscribers)o.push(n);return n};finalize=(t,r,n)=>{if(!t.terminal){t.entry.status=r,t.entry.completedAt=this.now(),n.result&&(t.entry.result=n.result),n.failure&&(t.entry.failure=n.failure),t.terminal=!0,this.runtimeManager.markTurnTerminal(t.entry.runtimeId,t.entry.daemonTurnId);for(let o of t.subscribers)o.close()}};failTurn=(t,r)=>{this.isTerminal(t.entry.status)||(this.append(t,{type:"turn.failed",failure:r}),this.finalize(t,r.code==="cancelled"?"cancelled":"failed",{failure:r}))};resultFor=(t,r)=>{let n=r?.session??t.entry.session;if(n)return{session:n,finalText:r?.finalText??t.finalText,usage:r?.usage??t.usage,events:r?.events??[...t.events]}};daemonFailure=(t,r)=>{if(r instanceof Zr)return r.failure;let n=t.entry.session?.backend??this.runtimeManager.getEntry(t.entry.runtimeId).backend;return An({code:"internal",message:r instanceof Error?r.message:String(r),source:"runtime",provider:this.runtimeManager.providerFor(n),backend:n,phase:"stream",execution:"unknown",recoverability:"unknown",recoveryAction:"unknown",runtimeState:"unknown"})};streamContractFailure=t=>{let r=t.entry.session?.backend??this.runtimeManager.getEntry(t.entry.runtimeId).backend;return An({code:"protocol_failed",message:"Runtime stream ended before terminal event",source:"runtime",provider:this.runtimeManager.providerFor(r),backend:r,phase:"stream",execution:"unknown",recoverability:"unknown",recoveryAction:"unknown",runtimeState:"unknown"})};transportFailure=(t,r)=>{let n=t.entry.session?.backend??this.runtimeManager.getEntry(t.entry.runtimeId).backend;return An({code:"transport_failed",message:r instanceof Error?r.message:String(r),source:"transport",provider:this.runtimeManager.providerFor(n),backend:n,phase:"stream",execution:"unknown",recoverability:"unknown",recoveryAction:"unknown",runtimeState:"invalid"})};get=t=>{let r=this.turns.get(t);if(!r)throw new ln("turn_not_found","Turn not found",{daemonTurnId:t});return r};cloneEntry=t=>({...t});isTerminal=t=>$so.has(t);resolveTurnInput=async t=>{let r=this.sessionManager.beginTurn({sessionId:t.sessionId,scopeKey:t.scopeKey});this.runtimeManager.ensureBackend(r.backend);let n=this.sessionManager.getSessionRecord(r.sessionId);if(!n)throw new ln("session_not_found","Session not found",{sessionId:r.sessionId});let o=ecr({backend:r.backend,cwd:n.spec.cwd,providerOptions:n.spec.providerOptions}),i=`session:${r.sessionId}`;this.logger.debug({sessionId:r.sessionId,backend:r.backend,candidateRuntimeId:o,fallbackRuntimeId:i},"derived pool key for turn");let s=await this.runtimeManager.resolveForTurn({backend:r.backend,candidateRuntimeId:o,fallbackRuntimeId:i});this.sessionManager.refreshRuntimeId(r.sessionId,s.runtimeId),this.sessionManager.markDirty(r.sessionId);let u={...t.input.content!==void 0?{content:t.input.content}:{prompt:Od(t.input)},session:r.session,systemPrompt:r.session?void 0:n.spec.systemPrompt,model:n.spec.model,effort:n.spec.effort,cwd:n.spec.cwd,approvalMode:t.input.approvalMode,mode:t.input.mode,outputSchema:t.input.outputSchema,limits:t.input.limits,metadata:t.input.metadata,providerOptions:n.spec.providerOptions};return{sessionId:r.sessionId,runtimeId:s.runtimeId,backend:r.backend,runtimeInput:u}}},qso=e=>{if(e.content===void 0)return{kind:"prompt",prompt:Od(e)};let t=0;for(let r of e.content.messages)t+=r.parts.length;return{kind:"content",schemaVersion:e.content.schemaVersion,messageCount:e.content.messages.length,partCount:t,attachments:e.content.attachments.map(r=>({id:r.id,kind:r.kind,mimeType:r.mimeType,sizeBytes:r.sizeBytes,sha256:r.sha256,...r.widthPx!==void 0&&{widthPx:r.widthPx},...r.heightPx!==void 0&&{heightPx:r.heightPx},...r.durationMs!==void 0&&{durationMs:r.durationMs}}))}};var Fso=1e3,Qso=2e3,Gso={runtimeIdleTtlMs:6e5,turnRetentionMs:6e5,sweepIntervalMs:6e4,closeTimeoutMs:5e3},LW=class{startedAt;forceStopTimeoutMs;now;runtimeManager;sessionManager;turnManager;catalogCache;inputCapabilityCache;logger;reclamationConfig;runtimeReclaimPolicy;turnReclaimPolicy;constructor(t){let r=t.now??(()=>new Date().toISOString()),n=(t.logger??co).child({component:"host"});this.logger=n,this.now=r,this.startedAt=r(),this.forceStopTimeoutMs=t.forceStopTimeoutMs??Qso;let o={...Gso,...t.reclamationConfig};this.reclamationConfig=o,this.runtimeReclaimPolicy=Hje(o.runtimeIdleTtlMs),this.turnReclaimPolicy=Hje(o.turnRetentionMs),this.runtimeManager=new hfe({backendRegistry:t.backendRegistry,defaultBackend:t.defaultBackend,now:r,logger:n,closeTimeoutMs:o.closeTimeoutMs});let i=async({backend:s,cwd:a})=>{let u=this.runtimeManager.describeBackend(s);if(!u.getConfigOptions)throw new ia("backend_unsupported",`Backend "${s}" does not provide config options`,s);return await u.getConfigOptions({backend:s,cwd:a,logger:this.logger})};this.catalogCache=new mfe({fetch:i,ttlMs:t.catalogCacheTtlMs,maxSize:t.catalogCacheMaxSize}),this.inputCapabilityCache=new ffe({fetch:async({backend:s,model:a,cwd:u})=>KQ(this.runtimeManager.describeBackend(s),{backend:s,model:a,cwd:u,logger:this.logger}),ttlMs:t.catalogCacheTtlMs,maxSize:t.catalogCacheMaxSize}),this.sessionManager=new zW({backendRegistry:t.backendRegistry,catalogCache:this.catalogCache,store:t.sessionStore,sessionDbPath:t.sessionDbPath,sessionIdFactory:t.sessionIdFactory,now:r,logger:n}),this.turnManager=new ehe({runtimeManager:this.runtimeManager,sessionManager:this.sessionManager,idFactory:t.idFactory??jso(),now:r,eventStoreCapacity:t.eventStoreCapacity??Fso,logger:n,timeoutConfig:t.turnTimeoutConfig}),this.runtimeManager.registerOnRuntimeFailed((s,a)=>{this.turnManager.failRuntimeTurns(s,a)})}status=()=>({protocolVersion:OI,startedAt:this.startedAt,runtimes:this.runtimeManager.list()});listRuntimes=()=>this.runtimeManager.list();startRuntime=(t={})=>this.runtimeManager.start(t);getRuntime=t=>this.runtimeManager.getEntry(t);createSession=async t=>this.sessionManager.createSession(t);importSession=async t=>this.sessionManager.importSession(t);getSession=t=>this.sessionManager.getSession(t.sessionId,t.scopeKey);listSessions=t=>this.sessionManager.listSessions(t);deleteSession=async t=>{let r=this.turnManager.activeTurnIdsForSession(t.sessionId);if(r.length>0)throw new ln("session_busy","Session has active turns",{sessionId:t.sessionId,activeTurnIds:r});return this.sessionManager.deleteSession(t.sessionId,t.scopeKey),{ok:!0}};getModelEfforts=async t=>{let r=this.runtimeManager.describeBackend(t.backend);if(!r.getModelEfforts)return{efforts:[]};try{return await r.getModelEfforts({backend:t.backend,cwd:t.cwd??""},t.model)}catch(n){throw n instanceof gh?n:n instanceof ia?new ln(n.code==="cwd_required"?"invalid_params":"backend_unsupported",n.message,{backend:n.backend??t.backend}):n}};getBackendInputCapabilities=async t=>{try{return await this.inputCapabilityCache.get({backend:t.backend,model:t.model,cwd:t.cwd??""})}catch(r){throw r instanceof gh?r:r instanceof ia?new ln(r.code==="cwd_required"?"invalid_params":r.code==="invalid_model"?"invalid_model":"backend_unsupported",r.message,{backend:r.backend??t.backend}):r}};getBackendConfigOptions=async t=>{try{return await this.catalogCache.get(t.backend,t.cwd??"")}catch(r){throw r instanceof gh?r:r instanceof ia?new ln(r.code==="cwd_required"?"invalid_params":r.code==="invalid_model"?"invalid_model":"backend_unsupported",r.message,{backend:r.backend??t.backend}):r}};authenticateBackend=async(t,r)=>{let n=this.runtimeManager.describeBackend(t.backend);if(!n.auth)throw new ln("backend_unsupported",`Backend "${t.backend}" does not support authentication`,{backend:t.backend});try{return await n.auth.authenticate({context:{backend:t.backend,cwd:t.cwd,logger:this.logger},methodId:t.methodId,vars:t.vars,signal:r}),{ok:!0}}catch(o){throw o instanceof ia?new ln(o.code==="cwd_required"?"invalid_params":"backend_unsupported",o.message,{backend:o.backend??t.backend}):o}};stopRuntime=async t=>{let r=this.runtimeManager.getEntry(t.runtimeId);if(r.activeTurnIds.length>0&&!t.force)throw new ln("runtime_busy","Runtime has active turns",{runtimeId:t.runtimeId,activeTurnIds:r.activeTurnIds});return this.runtimeManager.markStopping(t.runtimeId),r.activeTurnIds.length>0&&(await this.cancelActiveTurns(t.runtimeId),await this.waitForNoActiveTurns(t.runtimeId)),await this.runtimeManager.markStopped(t.runtimeId),{ok:!0}};reap=async()=>{let t=Date.parse(this.now()),r=await this.runtimeManager.reclaimIdle({nowMs:t,policy:this.runtimeReclaimPolicy}),n=this.turnManager.reclaimTerminal({nowMs:t,policy:this.turnReclaimPolicy});return this.logger.info({runtimeReclaimed:r.length,turnsReclaimed:n.length,runtimesRemaining:this.runtimeManager.list().length},"reap cycle completed"),{runtimes:r.length,turns:n.length}};startTurn=t=>this.turnManager.startTurn(t);subscribeTurn=t=>this.turnManager.subscribeTurn(t.daemonTurnId,{fromSeq:t.fromSeq});getTurn=t=>this.turnManager.getTurn(t.daemonTurnId);listTurns=(t={})=>this.turnManager.listTurns(t);cancelTurn=async t=>(await this.turnManager.cancelTurn(t.daemonTurnId),{ok:!0});failRuntimeTurns=(t,r)=>{this.turnManager.failRuntimeTurns(t,r)};steerTurn=async t=>(await this.turnManager.steerTurn(t.daemonTurnId,t.message),{ok:!0});resolveApproval=async t=>(await this.turnManager.resolveApproval(t.daemonTurnId,t.requestId,t.decision),{ok:!0});close=async()=>{for(let t of this.runtimeManager.list())await this.stopRuntime({runtimeId:t.runtimeId,force:!0});this.sessionManager.close()};cancelActiveTurns=async t=>{let r=this.turnManager.activeTurnIdsForRuntime(t);for(let n of r)try{await this.turnManager.cancelTurn(n)}catch(o){if(o instanceof ln&&(o.code==="turn_not_ready"||o.code==="turn_not_running"||o.code==="backend_unsupported"))continue;throw o}};waitForNoActiveTurns=async t=>{let r=Date.now()+this.forceStopTimeoutMs;for(;this.turnManager.activeTurnIdsForRuntime(t).length>0;){if(Date.now()>=r){for(let n of this.turnManager.activeTurnIdsForRuntime(t))this.turnManager.forceTerminal(n,An({code:"cancelled",message:"Daemon force stopped runtime",source:"runtime",phase:"teardown",execution:"accepted",recoverability:"persistent",recoveryAction:"none",runtimeState:"unknown"}));return}await Vso(5)}}};var jso=()=>{let e=1;return()=>{let t=`turn_${e}`;return e+=1,t}},Vso=e=>new Promise(t=>setTimeout(t,e));var R5e=e=>{let t=!1,r=!1,n=setInterval(()=>{t||r||(r=!0,e.host.reap().catch(o=>{e.logger?.warn?.({err:o instanceof Error?o.message:String(o)},"sweeper tick failed")}).finally(()=>{r=!1}))},e.intervalMs);return n.unref?.(),()=>{t=!0,clearInterval(n)}};var rcr=(e,t)=>t instanceof ln?Sf(e,$_({code:t.code,message:t.message,details:t.details})):t instanceof Zr?Sf(e,LO(t.failure)):Sf(e,LO(An({code:"internal",message:t instanceof Error?t.message:String(t),source:"runtime",phase:"dispatch",execution:"unknown",recoverability:"unknown",recoveryAction:"unknown",runtimeState:"unknown"})));var the=class{active=new Map;subscribe=(t,r,n,o)=>{let i=this.pipe(t,r,n,o).then(()=>{this.active.delete(n)},()=>{this.active.delete(n)});return this.active.set(n,{connection:t,task:i,close:o}),i};closeSubscription=async(t,r)=>{let n=this.active.get(r);!n||n.connection!==t||(await n.close(),await n.task)};closeConnection=async t=>{let r=[...this.active.values()].filter(n=>n.connection===t);await Promise.all(r.map(n=>n.close())),await Promise.all(r.map(n=>n.task))};close=async()=>{let t=[...this.active.values()];await Promise.all(t.map(async r=>{await r.close()})),await Promise.all(t.map(r=>r.task))};pipe=async(t,r,n,o)=>{try{for await(let i of r)await t.send(YQ(i,n))}finally{await o()}}};var tm=(e,t)=>{if(!Nu(e))throw new ln("invalid_params","Invalid params",{method:t});return e},ncr=(e,t)=>e===void 0?{}:tm(e,t),ocr=(e,t)=>{let r=ncr(e,t);return{runtimeId:Nk(r,"runtimeId"),backend:xcr(r)}},k5e=(e,t)=>{let r=tm(e,t);return{runtimeId:bu(r,"runtimeId",t)}},icr=(e,t)=>{let r=tm(e,t),n=bu(r,"runtimeId",t),o=r.force;if(o!==void 0&&typeof o!="boolean")throw new ln("invalid_params","Invalid force",{method:t});return{runtimeId:n,force:o}},scr=(e,t)=>{let r=tm(e,t),n=r.input;if(!Nu(n))throw new ln("invalid_params","Invalid turn input",{method:t});return{sessionId:bu(r,"sessionId",t),scopeKey:bu(r,"scopeKey",t),input:Hso(n,t)}},acr=(e,t)=>{let r=tm(e,t);return{spec:Scr(r.spec,t),scopeKey:bu(r,"scopeKey",t),createRequestId:bu(r,"createRequestId",t)}},ucr=(e,t)=>{let r=tm(e,t);return{spec:Scr(r.spec,t),scopeKey:bu(r,"scopeKey",t),createRequestId:bu(r,"createRequestId",t),nativeSessionId:bu(r,"nativeSessionId",t),externalState:bcr(r,"externalState",t)}},O5e=(e,t)=>{let r=tm(e,t);return{sessionId:bu(r,"sessionId",t),scopeKey:bu(r,"scopeKey",t)}},ccr=(e,t)=>{let r=tm(e,t),n=r.status;if(n!==void 0&&n!=="active"&&n!=="ended")throw new ln("invalid_params","Invalid session status",{method:t});return{scopeKey:bu(r,"scopeKey",t),backend:xcr(r),status:n}},lcr=(e,t)=>O5e(e,t),pcr=(e,t)=>{let r=tm(e,t);return{backend:UW(r,t),cwd:Nk(r,"cwd")}},dcr=(e,t)=>{let r=tm(e,t),n=UW(r,t),o=bu(r,"model",t);return{backend:n,model:o,cwd:Nk(r,"cwd")}},mcr=(e,t)=>{let r=tm(e,t),n=UW(r,t),o=bu(r,"model",t);return{backend:n,model:o,cwd:Nk(r,"cwd")}},fcr=(e,t)=>{let r=tm(e,t),n=UW(r,t),o=bu(r,"methodId",t);return{backend:n,methodId:o,cwd:Nk(r,"cwd"),vars:bcr(r,"vars",t)}},hcr=(e,t)=>{let r=tm(e,t),n=bu(r,"daemonTurnId",t),o=r.fromSeq;if(o!==void 0&&typeof o!="number")throw new ln("invalid_params","Invalid fromSeq",{method:t});return{daemonTurnId:n,fromSeq:o}},gcr=(e,t)=>{let r=tm(e,t);return{subscriptionId:bu(r,"subscriptionId",t)}},N5e=(e,t)=>{let r=tm(e,t);return{daemonTurnId:bu(r,"daemonTurnId",t)}},ycr=(e,t)=>{let r=ncr(e,t),n=r.status;if(n!==void 0&&n!=="queued"&&n!=="starting"&&n!=="running"&&n!=="completed"&&n!=="failed"&&n!=="cancelled")throw new ln("invalid_params","Invalid turn status",{method:t});return{runtimeId:Nk(r,"runtimeId"),status:n}},Acr=(e,t)=>N5e(e,t),_cr=(e,t)=>{let r=tm(e,t);return{daemonTurnId:bu(r,"daemonTurnId",t),message:bu(r,"message",t)}},Ecr=(e,t)=>{let r=tm(e,t),n=Icr(r,"decision",["allow","deny"]);if(!n)throw new ln("invalid_params","Invalid decision",{method:t});return{daemonTurnId:bu(r,"daemonTurnId",t),requestId:bu(r,"requestId",t),decision:n}},Hso=(e,t)=>({...Jso(e,t),approvalMode:Icr(e,"approvalMode",["manual","auto","never"]),outputSchema:e.outputSchema,limits:Nu(e.limits)?e.limits:void 0,metadata:Wso(e.metadata)?e.metadata:void 0}),Jso=(e,t)=>{let r=e.prompt!==void 0,n=e.content!==void 0;if(r&&n)throw new ln("invalid_params","Turn input must carry either prompt or content, not both",{method:t});if(n){if(!Nu(e.content))throw new ln("invalid_params","Invalid turn content",{method:t});return{content:e.content}}return{prompt:bu(e,"prompt",t)}},Scr=(e,t)=>{if(!Nu(e))throw new ln("invalid_params","Invalid session spec",{method:t});return{backend:UW(e,t),model:bu(e,"model",t),effort:Nk(e,"effort"),systemPrompt:Nk(e,"systemPrompt"),cwd:bu(e,"cwd",t),providerOptions:Kso(e,t)}},Kso=(e,t)=>{let r=e.providerOptions;if(r!=null){if(!Nu(r))throw new ln("invalid_params","providerOptions must be a plain object",{method:t,path:"spec.providerOptions"});return r}},bu=(e,t,r)=>{let n=e[t];if(typeof n!="string"||n.length===0)throw new ln("invalid_params",`Invalid ${t}`,{method:r});return n},Nk=(e,t)=>{let r=e[t];return typeof r=="string"?r:void 0},bcr=(e,t,r)=>{let n=e[t];if(n===void 0)return;if(!Nu(n))throw new ln("invalid_params",`Invalid ${t}`,{method:r});let o={};for(let[i,s]of Object.entries(n)){if(typeof s!="string")throw new ln("invalid_params",`Invalid ${t}.${i}`,{method:r});o[i]=s}return o},xcr=e=>{let t=e.backend;return typeof t=="string"?t:void 0},UW=(e,t)=>{let r=e.backend;if(typeof r!="string"||r.length===0)throw new ln("invalid_params","Invalid backend",{method:t});return r},Icr=(e,t,r)=>{let n=e[t];return r.includes(n)?n:void 0},Wso=e=>Nu(e)?Object.values(e).every(t=>typeof t=="string"):!1;var $W=class{host;subscriptions;logger;authAborts=new Map;constructor(t){this.host=t.host,this.subscriptions=t.subscriptions??new the,this.logger=(t.logger??co).child({component:"dispatcher"})}dispatch=async(t,r)=>{if(!Vy(r)){this.logger.warn({},"invalid request"),await t.send(Sf(null,$_({code:"invalid_request",message:"Invalid request"})));return}if(!Yso(r.method)){this.logger.warn({method:r.method},"unknown method"),await t.send(Sf(r.id,$_({code:"method_not_found",message:"Method not found",details:{method:r.method}})));return}try{this.logger.debug({method:r.method,id:r.id},"dispatch method"),await this.dispatchKnown(t,r)}catch(n){this.logger.error({method:r.method,id:r.id},"method failed"),await t.send(rcr(r.id,n))}};close=async()=>{await this.subscriptions.close()};closeConnection=async t=>{let r=this.authAborts.get(t);if(r){for(let n of r)n.abort();this.authAborts.delete(t)}await this.subscriptions.closeConnection(t)};dispatchKnown=async(t,r)=>{if(r.method==="turn/subscribe"){let o=hcr(r.params,r.method),i=this.host.getTurn({daemonTurnId:o.daemonTurnId}),{subscriptionId:s,events:a,close:u}=this.host.subscribeTurn(o);try{await t.send(B_(r.id,{daemonTurnId:i.daemonTurnId,subscriptionId:s,oldestSeq:i.oldestSeq,nextSeq:i.nextSeq}))}catch(c){throw await u(),c}this.subscriptions.subscribe(t,a,s,u);return}if(r.method==="backend/authenticate"){let o=fcr(r.params,r.method),i=new AbortController;this.trackAuth(t,i);try{let s=await this.host.authenticateBackend(o,i.signal);await t.send(B_(r.id,s))}finally{this.untrackAuth(t,i)}return}if(r.method==="turn/unsubscribe"){let o=gcr(r.params,r.method);await this.subscriptions.closeSubscription(t,o.subscriptionId),await t.send(B_(r.id,{ok:!0}));return}let n=await this.handle(r);await t.send(B_(r.id,n))};handle=async t=>{switch(t.method){case"backend/config-options":return this.host.getBackendConfigOptions(pcr(t.params,t.method));case"backend/model-efforts":return this.host.getModelEfforts(dcr(t.params,t.method));case"backend/input-capabilities":return this.host.getBackendInputCapabilities(mcr(t.params,t.method));case"backend/authenticate":throw new Error("backend/authenticate is handled before generic dispatch");case"daemon/status":return this.host.status();case"daemon/shutdown":return await this.host.close(),{ok:!0};case"runtime/list":return{runtimes:this.host.listRuntimes()};case"runtime/start":return this.host.startRuntime(ocr(t.params,t.method));case"runtime/get":{let r=k5e(t.params,t.method);return this.host.getRuntime(r.runtimeId)}case"runtime/stop":return this.host.stopRuntime(icr(t.params,t.method));case"runtime/capabilities":{let r=k5e(t.params,t.method);return this.host.getRuntime(r.runtimeId).capabilities}case"session/create":return this.host.createSession(acr(t.params,t.method));case"session/import":return this.host.importSession(ucr(t.params,t.method));case"session/get":return this.host.getSession(O5e(t.params,t.method));case"session/list":return{sessions:this.host.listSessions(ccr(t.params,t.method))};case"session/delete":return this.host.deleteSession(lcr(t.params,t.method));case"turn/start":return this.host.startTurn(scr(t.params,t.method));case"turn/subscribe":throw new Error("turn/subscribe is handled before generic dispatch");case"turn/unsubscribe":throw new Error("turn/unsubscribe is handled before generic dispatch");case"turn/get":return this.host.getTurn(N5e(t.params,t.method));case"turn/list":return{turns:this.host.listTurns(ycr(t.params,t.method))};case"turn/cancel":return this.host.cancelTurn(Acr(t.params,t.method));case"turn/steer":return this.host.steerTurn(_cr(t.params,t.method));case"turn/resolveApproval":return this.host.resolveApproval(Ecr(t.params,t.method))}};trackAuth=(t,r)=>{let n=this.authAborts.get(t);n||(n=new Set,this.authAborts.set(t,n)),n.add(r)};untrackAuth=(t,r)=>{let n=this.authAborts.get(t);n&&(n.delete(r),n.size===0&&this.authAborts.delete(t))}};var Yso=e=>XQ.includes(e);function Tcr(e,t,r){if(!e)return;let n=Object.entries(t).map(([s,a])=>({name:s,command:a.command,args:a.args})),o=n.map(i0),i=[...e.list(),...o];return r?.info({agents:n.map(s=>({name:s.name,command:s.command}))},"acp agents registered from config"),wI(i)}function vcr(e){if(!e.backendRegistry)throw new Error("DaemonService requires either a `host` or a `backendRegistry`");if(!e.defaultBackend)throw new Error("DaemonService requires `defaultBackend` when `backendRegistry` is provided");if(!e.backendRegistry.has(e.defaultBackend))throw new Error(`DaemonService defaultBackend "${e.defaultBackend}" is not registered in the backendRegistry`);return new LW({...e.hostOptions,backendRegistry:e.backendRegistry,defaultBackend:e.defaultBackend})}function Xso(e){return e?.sessionStore||e?.sessionDbPath?e:{...e,sessionStore:I5e()}}function M5e(e={}){let t=(e.logger??co).child({service:"daemon-memory"}),r=e.acpAgents?Tcr(e.backendRegistry,e.acpAgents,t):void 0,n=e.host??vcr({backendRegistry:r??e.backendRegistry,defaultBackend:e.defaultBackend,hostOptions:{...Xso(e.hostOptions),logger:t}}),o=new $W({host:n,logger:t}),{client:i,server:s}=rG(),a=R5e({host:n,intervalMs:n.reclamationConfig.sweepIntervalMs,logger:t}),u=!1;s.listen(async m=>{try{for await(let f of m.messages())if(await o.dispatch(m,f),Vy(f)&&f.method==="daemon/shutdown"){t.info({},"shutdown requested via in-memory transport"),u=!0,a(),await n.close(),await o.close();return}}finally{await o.closeConnection(m)}}).catch(()=>{});let c=new MI({transport:i});return{controller:$O({client:c}),status:()=>n.status(),close:async()=>{u||(u=!0,a(),await c.close(),await s.close(),await o.close(),await n.close())}}}var Zso=[Hj,Gj,o5],Ccr=wI(Zso),eao=[{id:"codex",runtimeId:"codex-app-server",label:"Codex"},{id:"claude",runtimeId:"claude-stream",label:"Claude"},{id:"opencode",runtimeId:"opencode",label:"OpenCode"}];async function wcr(){let e=await Ccr.probeAll();return eao.map(t=>{let r=e.get(t.runtimeId)??{status:"unknown"};return{...t,...r}})}var rhe=class{service=M5e({backendRegistry:Ccr,defaultBackend:"codex-app-server"});async configuration(t,r){return{models:(await this.service.controller.getBackendConfigOptions({backend:t.runtimeId,cwd:r})).models}}async efforts(t,r,n){return this.service.controller.getModelEfforts({backend:t.runtimeId,model:r,cwd:n})}close(){return this.service.close()}};var BW={apiUrl:"wss://game-match-worker.wu38607.workers.dev",webUrl:"https://game-match-client.wu38607.workers.dev"};var nhe=["openai-completions","openai-responses","anthropic-messages"];function Rcr(e,t){let r=iao(e),n=e.includes("--random"),o=yy(e,"backend")??t.GAME_AGENT_BACKEND??"tiny-agent",i=o==="openai-compatible"?"custom-api":o,s={name:yy(e,"name")??r[0]??(n?"random":"agent"),random:n,seed:aao(yy(e,"seed")??t.GAME_AGENT_RANDOM_SEED??"1","--seed"),model:yy(e,"model")??t.GAME_AGENT_MODEL??"opencode-go/deepseek-v4-flash",effort:yy(e,"effort")??t.GAME_AGENT_EFFORT??"low",backend:i,apiFormat:nao(o==="openai-compatible"?"openai-completions":yy(e,"api-format")??t.GAME_AGENT_API_FORMAT??"openai-completions"),apiKey:yy(e,"api-key")??t.GAME_AGENT_API_KEY,baseUrl:yy(e,"base-url")??t.GAME_AGENT_BASE_URL,debug:e.includes("--debug")||uao(t.GAME_AGENT_DEBUG),url:yy(e,"url")??t.URL??BW.apiUrl,webUrl:yy(e,"web-url")??t.GAME_WEB_URL??BW.webUrl,openBrowser:!e.includes("--no-open"),decisionTimeoutMs:sao(yy(e,"decision-timeout-ms")??t.GAME_AGENT_DECISION_TIMEOUT_MS??"180000","--decision-timeout-ms"),matchPreference:oao(yy(e,"match")??t.GAME_MATCH_PREFERENCE??"1v1"),battleStrategy:cao(yy(e,"battle-strategy")??t.GAME_AGENT_BATTLE_STRATEGY),help:e.includes("--help")||e.includes("-h")};return rao(s),s}function kcr(e){return e.every(t=>t==="--debug"||t==="--no-open")}var tao=new Set(["--model","--backend","--api-format","--api-key","--base-url","--effort","--decision-timeout-ms","--url","--web-url","--name","--seed","--match","--battle-strategy"]);function rao(e){if(!(e.help||e.random||e.backend!=="custom-api")){if(!e.baseUrl?.trim())throw new Error("--base-url or GAME_AGENT_BASE_URL is required for the custom-api backend");if(!e.apiKey?.trim())throw new Error("--api-key or GAME_AGENT_API_KEY is required for the custom-api backend")}}function nao(e){if(nhe.includes(e))return e;throw new Error(`--api-format must be one of ${nhe.join(", ")}; received: ${e}`)}function oao(e){if(e==="1v1"||e==="1v1-only")return"1v1-only";if(e==="2v2"||e==="2v2-preferred")return"2v2-preferred";throw new Error(`--match must be 1v1 or 2v2; received: ${e}`)}function iao(e){let t=[];for(let r=0;r<e.length;r++){let n=e[r];if(tao.has(n)){r++;continue}n.startsWith("-")||t.push(n)}return t}function yy(e,t){let r=`--${t}=`,n=e.find(i=>i.startsWith(r));if(n)return n.slice(r.length);let o=e.indexOf(`--${t}`);return o>=0?e[o+1]:void 0}function sao(e,t){let r=Number(e);if(!Number.isFinite(r)||r<0)throw new Error(`${t} must be a non-negative number; received: ${e}`);return r}function aao(e,t){let r=Number(e);if(!Number.isSafeInteger(r)||r<0)throw new Error(`${t} must be a non-negative safe integer; received: ${e}`);return r}function uao(e){return e==="1"||e?.toLowerCase()==="true"}function cao(e){let t=e?.trim();return t||void 0}var Ocr=`
|
|
925
|
+
`),e.exec("CREATE UNIQUE INDEX IF NOT EXISTS idx_scope_request_id ON sessions (scope_key, create_request_id)"),e.exec("CREATE UNIQUE INDEX IF NOT EXISTS idx_backend_native_session ON sessions (backend, native_session_id)")},x5e=(e,t,r)=>{e.exec("BEGIN");try{r(),e.exec(`PRAGMA user_version=${t}`),e.exec("COMMIT")}catch(n){throw e.exec("ROLLBACK"),n}},Cso=e=>e.prepare("PRAGMA user_version").get()?.user_version??0,Wur=e=>({...e,ref:e.ref?{...e.ref,externalState:e.ref.externalState?{...e.ref.externalState}:void 0}:null}),wso=e=>({sessionId:e.sessionId,runtimeId:e.runtimeId,provider:e.provider,backend:e.backend,nativeSessionId:e.nativeSessionId??e.ref?.externalSessionId??null,model:e.spec.model,effort:e.spec.effort??null,systemPrompt:e.spec.systemPrompt??null,cwd:e.spec.cwd,providerOptionsJson:e.spec.providerOptions?JSON.stringify(e.spec.providerOptions):null,scopeKey:e.scopeKey,createRequestId:e.createRequestId,status:e.status,dirty:e.dirty??!1,externalStateJson:e.ref?.externalState?JSON.stringify(e.ref.externalState):null,refJson:e.ref?JSON.stringify(e.ref):null,createdAt:e.createdAt,lastUsedAt:e.lastUsedAt,endedAt:e.endedAt??null}),Rso=e=>{let t=kso(e.externalStateJson);if(!e.refJson&&!e.nativeSessionId)return null;if(!e.refJson)return{provider:e.provider,backend:e.backend,externalSessionId:e.nativeSessionId,cwd:e.cwd,externalState:t};let r=JSON.parse(e.refJson),n=r.externalState?{...r.externalState}:void 0;return{...r,externalSessionId:e.nativeSessionId??r.externalSessionId,externalState:t??n}},kso=e=>{if(!e)return;let t=JSON.parse(e);if(!(typeof t!="object"||t===null||Array.isArray(t))){for(let r of Object.values(t))if(typeof r!="string")return;return t}},Oso=e=>{if(!e)return;let t=JSON.parse(e);if(!(typeof t!="object"||t===null||Array.isArray(t)))return t};var zW=class{backendRegistry;catalogCache;store;sessionIdFactory;now;logger;sessions=new Map;inFlight=new Map;constructor(t){this.backendRegistry=t.backendRegistry,this.catalogCache=t.catalogCache,this.store=t.store??T5e({path:t.sessionDbPath}),this.sessionIdFactory=t.sessionIdFactory??Pso,this.now=t.now,this.logger=(t.logger??co).child({component:"session_mgr"});for(let r of this.store.load())this.sessions.set(r.sessionId,BF(r));this.logger.info({count:this.sessions.size},"loaded persisted sessions")}createSession=async t=>{let r=`create::${t.scopeKey}::${t.createRequestId}`,n=this.inFlight.get(r);if(n){let i=await n;if(!Wfe(i.spec,t.spec))throw new ln("create_request_conflict","Create request ID reused with a different session spec",{createRequestId:t.createRequestId});return i}let o=this.performCreate(t);this.inFlight.set(r,o);try{return await o}finally{this.inFlight.delete(r)}};importSession=async t=>{let r=`import::${t.scopeKey}::${t.createRequestId}`,n=this.inFlight.get(r);if(n){let i=await n;if(!Wfe(i.spec,t.spec)||i.nativeSessionId!==t.nativeSessionId)throw new ln("create_request_conflict","Import request ID reused with different session input",{createRequestId:t.createRequestId});return i}let o=this.performImport(t);this.inFlight.set(r,o);try{return await o}finally{this.inFlight.delete(r)}};performCreate=async t=>{let r=this.findByCreateRequestId(t.createRequestId,t.scopeKey);if(r){if(r.status!=="active")throw new ln("create_request_conflict","Create request ID already used by an ended session",{createRequestId:t.createRequestId});if(!Wfe(r.spec,t.spec))throw this.logger.warn({createRequestId:t.createRequestId,existingBackend:r.backend,requestedBackend:t.spec.backend},"create request id conflict: different spec"),new ln("create_request_conflict","Create request ID reused with a different session spec",{createRequestId:t.createRequestId});return this.logger.debug({sessionId:r.sessionId,createRequestId:t.createRequestId},"idempotent session create: returning existing session"),Ok(r)}let n=await this.validateSessionSpec(t.spec),o=this.nextSessionId(),i=this.now(),s={sessionId:o,runtimeId:Xur(o),provider:n.provider,backend:t.spec.backend,spec:Yfe(t.spec),scopeKey:t.scopeKey,createRequestId:t.createRequestId,status:"active",dirty:!1,nativeSessionId:void 0,ref:null,createdAt:i,lastUsedAt:i};return this.persistOrThrow(s),this.sessions.set(o,s),this.logger.info({sessionId:o,backend:t.spec.backend,scopeKey:t.scopeKey},"session created"),Ok(s)};performImport=async t=>{let r=this.findByCreateRequestId(t.createRequestId,t.scopeKey);if(r){if(r.status!=="active")throw new ln("create_request_conflict","Import request ID already used by an ended session",{createRequestId:t.createRequestId});if(!Wfe(r.spec,t.spec)||r.nativeSessionId!==t.nativeSessionId)throw new ln("create_request_conflict","Import request ID reused with different session input",{createRequestId:t.createRequestId});return Ok(r)}let n=this.findByNativeSessionId(t.spec.backend,t.nativeSessionId);if(n)throw new ln("create_request_conflict","Native session ID is already imported",{backend:t.spec.backend,nativeSessionId:t.nativeSessionId,existingSessionId:n.sessionId});let o=await this.validateSessionSpec(t.spec),i=this.nextSessionId(),s=this.now(),a={provider:o.provider,backend:t.spec.backend,externalSessionId:t.nativeSessionId,cwd:t.spec.cwd,externalState:t.externalState?{...t.externalState}:void 0},u={sessionId:i,runtimeId:Xur(i),provider:o.provider,backend:t.spec.backend,nativeSessionId:t.nativeSessionId,spec:Yfe(t.spec),scopeKey:t.scopeKey,createRequestId:t.createRequestId,status:"active",dirty:!1,ref:a,createdAt:s,lastUsedAt:s};return this.persistOrThrow(u),this.sessions.set(i,u),this.logger.info({sessionId:i,backend:t.spec.backend,nativeSessionId:t.nativeSessionId,scopeKey:t.scopeKey},"session imported"),Ok(u)};beginTurn=t=>{let r=this.getActiveStored(t.sessionId);if(this.assertScope(t.sessionId,t.scopeKey,r.scopeKey),r.dirty)throw new ln("session_not_found","Session cannot be resumed after an interrupted provider turn",{sessionId:r.sessionId});return this.logger.debug({sessionId:r.sessionId,backend:r.backend},"existing session for turn"),{sessionId:r.sessionId,runtimeId:r.runtimeId,backend:r.backend,session:r.ref?v5e(r.ref):null,isNew:!1}};refreshRuntimeId=(t,r)=>{let n=this.sessions.get(t);if(!n||n.runtimeId===r)return;let o=BF(n);o.runtimeId=r,this.persistOrThrow(o),this.sessions.set(t,o)};getSession=(t,r)=>{let n=this.getActiveStored(t);return this.assertScope(t,r,n.scopeKey),Ok(n)};getSessionRecord=t=>{let r=this.sessions.get(t);if(!(!r||r.status==="ended"))return r};listSessions=t=>[...this.sessions.values()].filter(r=>!(r.scopeKey!==t.scopeKey||t.backend&&r.backend!==t.backend||t.status&&r.status!==t.status)).map(Ok);deleteSession=(t,r)=>{let n=this.getActiveStored(t);this.assertScope(t,r,n.scopeKey);let o=this.now();return n.status="ended",n.endedAt=o,n.lastUsedAt=o,this.store.delete(t,o),Ok(n)};recordSessionRef=(t,r)=>{let n=this.getActiveStored(t);if(r.backend!==n.backend)throw new ln("backend_mismatch","Runtime session ref backend does not match daemon session backend",{sessionId:t,expectedBackend:n.backend,actualBackend:r.backend});let o=this.findByNativeSessionId(r.backend,r.externalSessionId,t);if(o)throw new ln("create_request_conflict","Runtime session ref is already attached to another daemon session",{sessionId:t,existingSessionId:o.sessionId,backend:r.backend,nativeSessionId:r.externalSessionId});let i=BF(n);return i.ref=v5e(r),i.nativeSessionId=r.externalSessionId,i.provider=r.provider,i.lastUsedAt=this.now(),i.dirty=!1,this.persistOrThrow(i),this.sessions.set(t,i),Ok(i)};markDirty=t=>{let r=this.sessions.get(t);if(!r||r.status==="ended")return;let n=BF(r);n.dirty=!0,this.store.upsert(BF(n)),this.sessions.set(t,n)};close=()=>{this.store.close?.()};findByCreateRequestId=(t,r)=>{for(let n of this.sessions.values())if(n.createRequestId===t&&n.scopeKey===r)return n};findByNativeSessionId=(t,r,n)=>{for(let o of this.sessions.values())if(o.sessionId!==n&&o.backend===t&&o.nativeSessionId===r)return o};validateSessionSpec=async t=>{let r;try{r=this.backendRegistry.describe(t.backend)}catch(i){throw i instanceof CI?new ln("backend_unsupported",i.message,{backend:i.backend}):i}Dso(t.cwd,t.backend),this.validateProviderOptions(t.backend,t.providerOptions);let n;try{n=await this.catalogCache.get(t.backend,t.cwd)}catch(i){throw i instanceof ia?new ln(Lso(i.code),i.message,{backend:i.backend??t.backend,cwd:t.cwd}):i}if(!WQ(t.model,n))throw new ln("invalid_model",`Model "${t.model}" is not supported by backend "${t.backend}"`,{backend:t.backend,model:t.model});return r};validateProviderOptions=(t,r)=>{if(!r)return;if(typeof r!="object"||r===null||Array.isArray(r))throw this.logger.warn({backend:t},"invalid providerOptions type rejected"),new ln("invalid_params","providerOptions must be a plain object",{backend:t,path:"providerOptions"});let n=r.opencode;if(n===void 0)return;if(typeof n!="object"||n===null||Array.isArray(n))throw this.logger.warn({backend:t},"invalid providerOptions.opencode type rejected"),new ln("invalid_params","providerOptions.opencode must be a plain object",{backend:t,path:"providerOptions.opencode"});let i=n.approvalMode;if(i!==void 0&&i!=="never"&&i!=="manual"&&i!=="auto")throw this.logger.warn({backend:t,mode:i},"invalid providerOptions.opencode.approvalMode rejected"),new ln("invalid_params","providerOptions.opencode.approvalMode must be one of: never, manual, auto",{backend:t,path:"providerOptions.opencode.approvalMode",value:typeof i=="string"?i:typeof i})};assertScope=(t,r,n)=>{if(r!==n)throw this.logger.warn({sessionId:t,requestScope:r,recordScope:n},"scope mismatch"),new ln("session_not_found","Session not found",{sessionId:t})};persistOrThrow=t=>{this.store.upsert(BF(t)),t.dirty=!1};getActiveStored=t=>{let r=this.sessions.get(t);if(!r||r.status==="ended")throw new ln("session_not_found","Session not found",{sessionId:t});return r};nextSessionId=()=>{let t=this.sessionIdFactory();for(;this.sessions.has(t);)t=this.sessionIdFactory();return t}},Pso=()=>`session_${Nso()}`,Xur=e=>`session:${e}`,Ok=e=>({sessionId:e.sessionId,runtimeId:e.runtimeId,provider:e.provider,backend:e.backend,nativeSessionId:e.nativeSessionId,spec:Yfe(e.spec),scopeKey:e.scopeKey,createRequestId:e.createRequestId,status:e.status,dirty:e.dirty,createdAt:e.createdAt,lastUsedAt:e.lastUsedAt,endedAt:e.endedAt}),BF=e=>({...e,spec:Yfe(e.spec),ref:e.ref?v5e(e.ref):null}),v5e=e=>({...e,externalState:e.externalState?{...e.externalState}:void 0}),Wfe=(e,t)=>e.backend===t.backend&&e.model===t.model&&e.effort===t.effort&&e.systemPrompt===t.systemPrompt&&e.cwd===t.cwd&&zso(e.providerOptions,t.providerOptions),zso=(e,t)=>{if(e===void 0&&t===void 0)return!0;if(e===void 0||t===void 0)return!1;try{return JSON.stringify(DW(e))===JSON.stringify(DW(t))}catch{return!1}},DW=e=>{if(e===null)return null;if(Array.isArray(e))return e.map(DW);if(typeof e=="object"){let t=Object.getPrototypeOf(e);if(t!==Object.prototype&&t!==null)throw new ln("invalid_params",`Non-plain object is not JSON-safe: ${t?.constructor?.name??typeof e}`);let r={};for(let n of Object.keys(e).sort())r[n]=DW(e[n]);return r}if(typeof e=="string"||typeof e=="boolean")return e;if(typeof e=="number"){if(!Number.isFinite(e))throw new ln("invalid_params",`Number is not JSON-safe: ${e}`);return e}throw new ln("invalid_params",`Unsupported JSON value type: ${typeof e}`)},Yfe=e=>({backend:e.backend,model:e.model,effort:e.effort,systemPrompt:e.systemPrompt,cwd:e.cwd,providerOptions:e.providerOptions?DW(e.providerOptions):void 0}),Dso=(e,t)=>{let r;try{r=Mso(e)}catch{throw new ln("invalid_params",`CWD does not exist: ${e}`,{backend:t,cwd:e})}if(!r.isDirectory())throw new ln("invalid_params",`CWD is not a directory: ${e}`,{backend:t,cwd:e})},Lso=e=>e==="cwd_required"?"invalid_params":e==="invalid_model"?"invalid_model":"backend_unsupported";var Xfe=class{daemonTurnId;capacity;now;events=[];nextSeqValue=1;constructor(t){this.daemonTurnId=t.daemonTurnId,this.capacity=t.capacity,this.now=t.now}get oldestSeq(){return this.events[0]?.seq??this.nextSeqValue}get nextSeq(){return this.nextSeqValue}append=t=>{let r={daemonTurnId:this.daemonTurnId,seq:this.nextSeqValue,event:t,createdAt:this.now()};for(this.nextSeqValue+=1,this.events.push(r);this.events.length>this.capacity;)this.events.shift();return r};replay=(t=this.oldestSeq)=>{if(t<this.oldestSeq)throw new ln("event_gap","Requested events are no longer available",{daemonTurnId:this.daemonTurnId,oldestSeq:this.oldestSeq,requestedSeq:t});return this.events.filter(r=>r.seq>=t)};snapshot=()=>({daemonTurnId:this.daemonTurnId,capacity:this.capacity,oldestSeq:this.oldestSeq,nextSeq:this.nextSeq,events:[...this.events]})};import{resolve as Uso}from"node:path";var C5e=(e,t)=>{if(e===null||typeof e=="boolean"||typeof e=="string")return e;if(typeof e=="number"){if(!Number.isFinite(e))throw new Error(`Non-finite number in providerOptions: ${Zur(e)}`);return e}if(Array.isArray(e)){if(t.has(e))throw new Error("Circular reference in providerOptions");return t.add(e),e.map(o=>C5e(o,t))}let r=e;if(t.has(r))throw new Error("Circular reference in providerOptions");t.add(r);let n={};for(let o of Object.keys(r).sort()){let i=r[o];if(i===void 0||typeof i=="function"||typeof i=="symbol"||typeof i=="bigint")throw new Error(`Non-JSON-safe value in providerOptions at key "${o}": ${typeof i} ${Zur(i)}`);n[o]=C5e(i,t)}return n},Zur=e=>{try{return JSON.stringify(e)}catch{return String(e)}},ecr=e=>{let t=Uso(e.cwd),n=e.providerOptions&&Object.keys(e.providerOptions).length>0?C5e(e.providerOptions,new WeakSet):null;return JSON.stringify([e.backend,t,n])};var tcr=e=>{let{raw:t,...r}=e;return r};var Zfe=class{source;runtime;getTurnRef;config;startedAt;timeoutKindValue;constructor(t){this.source=t.source,this.runtime=t.runtime,this.getTurnRef=t.getTurnRef,this.config=t.config,this.startedAt=t.startedAt,this.timeoutKindValue=void 0}get timeoutKind(){return this.timeoutKindValue}set timeoutKind(t){this.timeoutKindValue=t}[Symbol.asyncIterator](){let t=this.source[Symbol.asyncIterator]();return new w5e(t,this)}},w5e=class{sourceIterator;stream;lastEventAt;sawTurnStarted;pendingToolCalls;terminated;timerHandle;constructor(t,r){this.sourceIterator=t,this.stream=r,this.lastEventAt=r.startedAt,this.sawTurnStarted=!1,this.pendingToolCalls=0,this.terminated=!1,this.timerHandle=void 0}next=async()=>{if(this.terminated)return{done:!0,value:void 0};let t=Date.now(),r=t-this.stream.startedAt,n=this.pendingToolCalls>0?0:t-this.lastEventAt,o=this.stream.config;if(o.maxRuntimeMs>0&&r>=o.maxRuntimeMs)return this.handleTimeout("max_timeout");if(!this.sawTurnStarted&&o.startTimeoutMs>0&&r>=o.startTimeoutMs)return this.handleTimeout("start_timeout");if(this.sawTurnStarted&&o.idleTimeoutMs>0&&n>=o.idleTimeoutMs)return this.handleTimeout("idle_timeout");let i,s;if(o.maxRuntimeMs>0&&(i=o.maxRuntimeMs-r,s="max_timeout"),!this.sawTurnStarted&&o.startTimeoutMs>0){let d=o.startTimeoutMs-r;(i===void 0||d<i)&&(i=d,s="start_timeout")}if(this.sawTurnStarted&&o.idleTimeoutMs>0&&this.pendingToolCalls===0){let d=o.idleTimeoutMs-n;(i===void 0||d<i)&&(i=d,s="idle_timeout")}let a=this.sourceIterator.next();a.catch(()=>{});let u;if(i!==void 0&&i>0){let d=new Promise(f=>{this.timerHandle=setTimeout(f,i,"timeout")}),m=await Promise.race([a,d]);if(this.timerHandle&&(clearTimeout(this.timerHandle),this.timerHandle=void 0),m==="timeout")return this.handleTimeout(s??this.pickTimeoutKind());u=m}else{if(i!==void 0&&i<=0)return this.handleTimeout(s??this.pickTimeoutKind());u=await a}if(u.done)return{done:!0,value:void 0};let c=u.value;return c.type==="turn.started"&&(this.sawTurnStarted=!0),c.type==="tool.started"&&this.pendingToolCalls++,c.type==="tool.completed"&&(this.pendingToolCalls=Math.max(0,this.pendingToolCalls-1)),this.lastEventAt=Date.now(),{done:!1,value:c}};return=async()=>this.terminated?{done:!0,value:void 0}:(this.terminated=!0,await this.sourceIterator.return?.(),{done:!0,value:void 0});throw=async t=>this.terminated?{done:!0,value:void 0}:(this.terminated=!0,await this.sourceIterator.throw?.(t),{done:!0,value:void 0});handleTimeout=t=>{if(this.terminated)return{done:!0,value:void 0};this.terminated=!0,this.stream.timeoutKind=t;let r=this.stream.getTurnRef();return r&&this.stream.runtime.cancelTurn&&Promise.resolve(this.stream.runtime.cancelTurn(r)).catch(()=>{}),this.sourceIterator.return?.().catch(()=>{}),{done:!0,value:void 0}};pickTimeoutKind=()=>{let t=Date.now(),r=t-this.stream.startedAt,n=this.pendingToolCalls>0?0:t-this.lastEventAt,o=this.stream.config;return o.maxRuntimeMs>0&&r>=o.maxRuntimeMs?"max_timeout":!this.sawTurnStarted&&o.startTimeoutMs>0&&r>=o.startTimeoutMs?"start_timeout":(this.sawTurnStarted&&o.idleTimeoutMs>0&&n>=o.idleTimeoutMs,"idle_timeout")}};var $so=new Set(["completed","failed","cancelled","timed_out"]),Bso={startTimeoutMs:6e4,idleTimeoutMs:3e5,maxRuntimeMs:18e5},ehe=class{runtimeManager;sessionManager;idFactory;now;eventStoreCapacity;logger;timeoutConfig;turns=new Map;nextSubscriptionSeq=1;constructor(t){this.runtimeManager=t.runtimeManager,this.sessionManager=t.sessionManager,this.idFactory=t.idFactory,this.now=t.now,this.eventStoreCapacity=t.eventStoreCapacity,this.logger=(t.logger??co).child({component:"turn_mgr"}),this.timeoutConfig={...Bso,...t.timeoutConfig}}startTurn=async t=>{if(this.activeTurnIdsForSession(t.sessionId).length>0)throw this.logger.warn({sessionId:t.sessionId},"turn rejected: session has active turn"),new ln("session_busy","Session has an active turn",{sessionId:t.sessionId});t.input.content!==void 0&&RI(t.input.content);let r=await this.resolveTurnInput(t);if(t.input.content!==void 0&&this.runtimeManager.getRuntime(r.runtimeId).capabilities.inputContent===!1)throw this.logger.warn({sessionId:r.sessionId,backend:r.backend},"turn rejected: backend does not accept content input"),new Zr(An({code:"unsupported_capability",message:"Backend does not accept structured content input",source:"caller",backend:r.backend,phase:"preflight",execution:"not_sent",recoverability:"persistent",recoveryAction:"change_input",runtimeState:"reusable",details:{sessionId:r.sessionId,backend:r.backend}}));if(this.logger.debug({sessionId:r.sessionId,backend:r.backend},"turn input resolved"),r.runtimeInput.session&&this.runtimeManager.getRuntime(r.runtimeId).capabilities.resume===!1)throw this.logger.warn({sessionId:r.sessionId,backend:r.backend},"turn rejected: resume unsupported"),new ln("resume_unsupported","Backend does not support session resume",{sessionId:r.sessionId,backend:r.backend});let n=this.idFactory(),o=new Xfe({daemonTurnId:n,capacity:this.eventStoreCapacity,now:this.now}),s={entry:{daemonTurnId:n,sessionId:r.sessionId,runtimeId:r.runtimeId,status:"starting",input:qso(t.input),session:r.runtimeInput.session,startedAt:this.now(),oldestSeq:o.oldestSeq,nextSeq:o.nextSeq},store:o,subscribers:new Set,events:[],finalText:"",terminal:!1};if(this.activeTurnIdsForSession(r.sessionId).length>0)throw new ln("session_busy","Session has an active turn",{sessionId:r.sessionId});let a=this.runtimeManager.getEntry(r.runtimeId);if(a.activeTurnIds.length>0){if(a.capabilities.concurrentTurns===!1)throw new ln("runtime_busy","Runtime has an active turn",{runtimeId:r.runtimeId,activeTurnIds:a.activeTurnIds});this.logger.info({runtimeId:r.runtimeId,activeTurnIds:a.activeTurnIds},"allowing different-session concurrent turn")}return this.turns.set(n,s),this.runtimeManager.markRunning(r.runtimeId,n),this.logger.info({daemonTurnId:n,sessionId:r.sessionId,backend:r.backend},"turn started"),this.runTurnPump(s,r).catch(u=>{this.failTurn(s,this.daemonFailure(s,u))}),this.cloneEntry(s.entry)};getTurn=t=>this.cloneEntry(this.get(t).entry);listTurns=(t={})=>[...this.turns.values()].filter(r=>!(t.runtimeId&&r.entry.runtimeId!==t.runtimeId||t.status&&r.entry.status!==t.status)).map(r=>this.cloneEntry(r.entry));subscribeTurn=(t,r={})=>{let n=this.get(t),o=n.store.replay(r.fromSeq),i=new Ha;n.subscribers.add(i);let s=n.terminal,a=`sub_${this.nextSubscriptionSeq}`;this.nextSubscriptionSeq+=1;let u=!1,c=async()=>{u||(u=!0,n.subscribers.delete(i),i.close())};return{subscriptionId:a,events:this.subscription(i,o,s,c),close:c}};cancelTurn=async t=>{let r=this.get(t);if(this.isTerminal(r.entry.status))throw new ln("turn_not_running","Turn is not running",{daemonTurnId:t});if(!r.entry.turnRef)throw new ln("turn_not_ready","Turn is not ready",{daemonTurnId:t});let n=this.runtimeManager.getRuntime(r.entry.runtimeId);if(!n.cancelTurn)throw new ln("backend_unsupported","Cancel is unsupported",{daemonTurnId:t});await n.cancelTurn(r.entry.turnRef),this.logger.info({daemonTurnId:t},"turn cancelled")};steerTurn=async(t,r)=>{let n=this.get(t);if(this.isTerminal(n.entry.status))throw new ln("turn_not_running","Turn is not running",{daemonTurnId:t});if(!n.entry.turnRef)throw new ln("turn_not_ready","Turn is not ready",{daemonTurnId:t});let o=this.runtimeManager.getRuntime(n.entry.runtimeId);if(!o.steerTurn)throw new ln("backend_unsupported","Steer is unsupported",{daemonTurnId:t});await o.steerTurn(n.entry.turnRef,r)};resolveApproval=async(t,r,n)=>{let o=this.get(t);if(this.isTerminal(o.entry.status))throw new ln("turn_not_running","Turn is not running",{daemonTurnId:t});let i=this.runtimeManager.getRuntime(o.entry.runtimeId);if(!i.resolveApproval)throw new ln("backend_unsupported","Approvals are unsupported",{daemonTurnId:t});await i.resolveApproval(r,n)};activeTurnIdsForRuntime=t=>[...this.turns.values()].filter(r=>r.entry.runtimeId===t&&!this.isTerminal(r.entry.status)).map(r=>r.entry.daemonTurnId);activeTurnIdsForSession=t=>[...this.turns.values()].filter(r=>r.entry.sessionId===t&&!this.isTerminal(r.entry.status)).map(r=>r.entry.daemonTurnId);reclaimTerminal=({nowMs:t,policy:r})=>{let n=[];for(let[,s]of this.turns){if(!s.terminal)continue;let a=s.entry.completedAt;a&&n.push({id:s.entry.daemonTurnId,eligibleSinceMs:Date.parse(a)})}let o=r(n,t),i=[];for(let s of o){let a=this.turns.get(s);if(a){for(let u of a.subscribers)u.close();this.turns.delete(s),i.push(s),this.logger.info({daemonTurnId:s},"turn reclaimed")}}return i};forceTerminal=(t,r)=>{let n=this.get(t);this.isTerminal(n.entry.status)||(this.append(n,{type:"turn.failed",failure:r}),this.finalize(n,r.code==="cancelled"?"cancelled":"failed",{failure:r}))};timeoutTurn=async(t,r)=>{if(t.terminal)return;let{daemonTurnId:n}=t.entry,o=this.logger.child({daemonTurnId:n,terminalReason:r});o.warn("turn supervisor timeout finalizing");let i=t.entry.session?.backend??this.runtimeManager.getEntry(t.entry.runtimeId).backend,s=An({code:"timeout",message:`Turn timed out: ${r}`,source:"runtime",provider:this.runtimeManager.providerFor(i),backend:i,phase:"execution",execution:"unknown",recoverability:"unknown",recoveryAction:"unknown",runtimeState:"unknown"});this.append(t,{type:"turn.failed",failure:s}),this.finalize(t,"timed_out",{failure:s}),o.info({status:"timed_out",kind:r},"turn timed out")};failRuntimeTurns=(t,r)=>{let n=this.activeTurnIdsForRuntime(t);for(let o of n){let i=this.turns.get(o);if(!i||i.terminal)continue;let s=this.transportFailure(i,r);this.logger.warn({daemonTurnId:o,runtimeId:t,terminalReason:"transport_close",failureCode:s.code,runtimeState:s.runtimeState},"transport close fail runtime turns"),this.append(i,{type:"turn.failed",failure:s}),this.finalize(i,"failed",{failure:s})}};async*subscription(t,r,n,o){try{for(let i of r)yield i;if(n)return;for await(let i of t)yield i}finally{await o()}}runTurnPump=async(t,r)=>{let n=this.runtimeManager.getRuntime(t.entry.runtimeId),o=t.entry.daemonTurnId,i=this.logger.child({daemonTurnId:o});i.debug("turn pump started");try{t.entry.status="running";let s=r.runtimeInput,a=Date.now();if(s.session){let c=await n.resumeSession(s.session);this.recordSession(t,c),s={...s,session:c}}let u=new Zfe({source:n.streamTurn(s),runtime:n,getTurnRef:()=>t.entry.turnRef,config:this.timeoutConfig,startedAt:a});for await(let c of u){if(this.recordEventState(t,c),t.terminal)return;if(this.append(t,c),c.type==="turn.completed"){this.finalize(t,"completed",{result:this.resultFor(t,c.result)}),i.info({status:"completed",finalTextLength:t.finalText.length},"turn completed");return}if(c.type==="turn.failed"){let d=c.failure.code==="cancelled"?"cancelled":"failed";this.finalize(t,d,{failure:c.failure}),i.info({status:d,failureCode:c.failure.code,failureSource:c.failure.source,failurePhase:c.failure.phase,runtimeState:c.failure.runtimeState},"turn ended"),c.failure.runtimeState==="invalid"&&this.runtimeManager.markFailed(t.entry.runtimeId,c.failure);return}}if(u.timeoutKind){await this.timeoutTurn(t,u.timeoutKind);return}this.failTurn(t,this.streamContractFailure(t))}catch(s){this.failTurn(t,this.daemonFailure(t,s)),i.error({cause:s},"turn pump crashed")}};recordEventState=(t,r)=>{t.events.push(r),r.type==="session.started"&&this.recordSession(t,r.session),r.type==="turn.started"&&(this.recordSession(t,r.session),r.turnId&&(t.entry.turnRef={session:r.session,externalTurnId:r.turnId})),r.type==="message.completed"&&(t.finalText=r.text),r.type==="turn.completed"&&(t.finalText=r.result?.finalText??t.finalText,t.usage=r.result?.usage??t.usage,r.result?.session&&this.recordSession(t,r.result.session))};recordSession=(t,r)=>{this.sessionManager.recordSessionRef(t.entry.sessionId,r),t.entry.session=r};append=(t,r)=>{let n=t.store.append(tcr(r));t.entry.oldestSeq=t.store.oldestSeq,t.entry.nextSeq=t.store.nextSeq;for(let o of t.subscribers)o.push(n);return n};finalize=(t,r,n)=>{if(!t.terminal){t.entry.status=r,t.entry.completedAt=this.now(),n.result&&(t.entry.result=n.result),n.failure&&(t.entry.failure=n.failure),t.terminal=!0,this.runtimeManager.markTurnTerminal(t.entry.runtimeId,t.entry.daemonTurnId);for(let o of t.subscribers)o.close()}};failTurn=(t,r)=>{this.isTerminal(t.entry.status)||(this.append(t,{type:"turn.failed",failure:r}),this.finalize(t,r.code==="cancelled"?"cancelled":"failed",{failure:r}))};resultFor=(t,r)=>{let n=r?.session??t.entry.session;if(n)return{session:n,finalText:r?.finalText??t.finalText,usage:r?.usage??t.usage,events:r?.events??[...t.events]}};daemonFailure=(t,r)=>{if(r instanceof Zr)return r.failure;let n=t.entry.session?.backend??this.runtimeManager.getEntry(t.entry.runtimeId).backend;return An({code:"internal",message:r instanceof Error?r.message:String(r),source:"runtime",provider:this.runtimeManager.providerFor(n),backend:n,phase:"stream",execution:"unknown",recoverability:"unknown",recoveryAction:"unknown",runtimeState:"unknown"})};streamContractFailure=t=>{let r=t.entry.session?.backend??this.runtimeManager.getEntry(t.entry.runtimeId).backend;return An({code:"protocol_failed",message:"Runtime stream ended before terminal event",source:"runtime",provider:this.runtimeManager.providerFor(r),backend:r,phase:"stream",execution:"unknown",recoverability:"unknown",recoveryAction:"unknown",runtimeState:"unknown"})};transportFailure=(t,r)=>{let n=t.entry.session?.backend??this.runtimeManager.getEntry(t.entry.runtimeId).backend;return An({code:"transport_failed",message:r instanceof Error?r.message:String(r),source:"transport",provider:this.runtimeManager.providerFor(n),backend:n,phase:"stream",execution:"unknown",recoverability:"unknown",recoveryAction:"unknown",runtimeState:"invalid"})};get=t=>{let r=this.turns.get(t);if(!r)throw new ln("turn_not_found","Turn not found",{daemonTurnId:t});return r};cloneEntry=t=>({...t});isTerminal=t=>$so.has(t);resolveTurnInput=async t=>{let r=this.sessionManager.beginTurn({sessionId:t.sessionId,scopeKey:t.scopeKey});this.runtimeManager.ensureBackend(r.backend);let n=this.sessionManager.getSessionRecord(r.sessionId);if(!n)throw new ln("session_not_found","Session not found",{sessionId:r.sessionId});let o=ecr({backend:r.backend,cwd:n.spec.cwd,providerOptions:n.spec.providerOptions}),i=`session:${r.sessionId}`;this.logger.debug({sessionId:r.sessionId,backend:r.backend,candidateRuntimeId:o,fallbackRuntimeId:i},"derived pool key for turn");let s=await this.runtimeManager.resolveForTurn({backend:r.backend,candidateRuntimeId:o,fallbackRuntimeId:i});this.sessionManager.refreshRuntimeId(r.sessionId,s.runtimeId),this.sessionManager.markDirty(r.sessionId);let u={...t.input.content!==void 0?{content:t.input.content}:{prompt:Od(t.input)},session:r.session,systemPrompt:r.session?void 0:n.spec.systemPrompt,model:n.spec.model,effort:n.spec.effort,cwd:n.spec.cwd,approvalMode:t.input.approvalMode,mode:t.input.mode,outputSchema:t.input.outputSchema,limits:t.input.limits,metadata:t.input.metadata,providerOptions:n.spec.providerOptions};return{sessionId:r.sessionId,runtimeId:s.runtimeId,backend:r.backend,runtimeInput:u}}},qso=e=>{if(e.content===void 0)return{kind:"prompt",prompt:Od(e)};let t=0;for(let r of e.content.messages)t+=r.parts.length;return{kind:"content",schemaVersion:e.content.schemaVersion,messageCount:e.content.messages.length,partCount:t,attachments:e.content.attachments.map(r=>({id:r.id,kind:r.kind,mimeType:r.mimeType,sizeBytes:r.sizeBytes,sha256:r.sha256,...r.widthPx!==void 0&&{widthPx:r.widthPx},...r.heightPx!==void 0&&{heightPx:r.heightPx},...r.durationMs!==void 0&&{durationMs:r.durationMs}}))}};var Fso=1e3,Qso=2e3,Gso={runtimeIdleTtlMs:6e5,turnRetentionMs:6e5,sweepIntervalMs:6e4,closeTimeoutMs:5e3},LW=class{startedAt;forceStopTimeoutMs;now;runtimeManager;sessionManager;turnManager;catalogCache;inputCapabilityCache;logger;reclamationConfig;runtimeReclaimPolicy;turnReclaimPolicy;constructor(t){let r=t.now??(()=>new Date().toISOString()),n=(t.logger??co).child({component:"host"});this.logger=n,this.now=r,this.startedAt=r(),this.forceStopTimeoutMs=t.forceStopTimeoutMs??Qso;let o={...Gso,...t.reclamationConfig};this.reclamationConfig=o,this.runtimeReclaimPolicy=Hje(o.runtimeIdleTtlMs),this.turnReclaimPolicy=Hje(o.turnRetentionMs),this.runtimeManager=new hfe({backendRegistry:t.backendRegistry,defaultBackend:t.defaultBackend,now:r,logger:n,closeTimeoutMs:o.closeTimeoutMs});let i=async({backend:s,cwd:a})=>{let u=this.runtimeManager.describeBackend(s);if(!u.getConfigOptions)throw new ia("backend_unsupported",`Backend "${s}" does not provide config options`,s);return await u.getConfigOptions({backend:s,cwd:a,logger:this.logger})};this.catalogCache=new mfe({fetch:i,ttlMs:t.catalogCacheTtlMs,maxSize:t.catalogCacheMaxSize}),this.inputCapabilityCache=new ffe({fetch:async({backend:s,model:a,cwd:u})=>KQ(this.runtimeManager.describeBackend(s),{backend:s,model:a,cwd:u,logger:this.logger}),ttlMs:t.catalogCacheTtlMs,maxSize:t.catalogCacheMaxSize}),this.sessionManager=new zW({backendRegistry:t.backendRegistry,catalogCache:this.catalogCache,store:t.sessionStore,sessionDbPath:t.sessionDbPath,sessionIdFactory:t.sessionIdFactory,now:r,logger:n}),this.turnManager=new ehe({runtimeManager:this.runtimeManager,sessionManager:this.sessionManager,idFactory:t.idFactory??jso(),now:r,eventStoreCapacity:t.eventStoreCapacity??Fso,logger:n,timeoutConfig:t.turnTimeoutConfig}),this.runtimeManager.registerOnRuntimeFailed((s,a)=>{this.turnManager.failRuntimeTurns(s,a)})}status=()=>({protocolVersion:OI,startedAt:this.startedAt,runtimes:this.runtimeManager.list()});listRuntimes=()=>this.runtimeManager.list();startRuntime=(t={})=>this.runtimeManager.start(t);getRuntime=t=>this.runtimeManager.getEntry(t);createSession=async t=>this.sessionManager.createSession(t);importSession=async t=>this.sessionManager.importSession(t);getSession=t=>this.sessionManager.getSession(t.sessionId,t.scopeKey);listSessions=t=>this.sessionManager.listSessions(t);deleteSession=async t=>{let r=this.turnManager.activeTurnIdsForSession(t.sessionId);if(r.length>0)throw new ln("session_busy","Session has active turns",{sessionId:t.sessionId,activeTurnIds:r});return this.sessionManager.deleteSession(t.sessionId,t.scopeKey),{ok:!0}};getModelEfforts=async t=>{let r=this.runtimeManager.describeBackend(t.backend);if(!r.getModelEfforts)return{efforts:[]};try{return await r.getModelEfforts({backend:t.backend,cwd:t.cwd??""},t.model)}catch(n){throw n instanceof gh?n:n instanceof ia?new ln(n.code==="cwd_required"?"invalid_params":"backend_unsupported",n.message,{backend:n.backend??t.backend}):n}};getBackendInputCapabilities=async t=>{try{return await this.inputCapabilityCache.get({backend:t.backend,model:t.model,cwd:t.cwd??""})}catch(r){throw r instanceof gh?r:r instanceof ia?new ln(r.code==="cwd_required"?"invalid_params":r.code==="invalid_model"?"invalid_model":"backend_unsupported",r.message,{backend:r.backend??t.backend}):r}};getBackendConfigOptions=async t=>{try{return await this.catalogCache.get(t.backend,t.cwd??"")}catch(r){throw r instanceof gh?r:r instanceof ia?new ln(r.code==="cwd_required"?"invalid_params":r.code==="invalid_model"?"invalid_model":"backend_unsupported",r.message,{backend:r.backend??t.backend}):r}};authenticateBackend=async(t,r)=>{let n=this.runtimeManager.describeBackend(t.backend);if(!n.auth)throw new ln("backend_unsupported",`Backend "${t.backend}" does not support authentication`,{backend:t.backend});try{return await n.auth.authenticate({context:{backend:t.backend,cwd:t.cwd,logger:this.logger},methodId:t.methodId,vars:t.vars,signal:r}),{ok:!0}}catch(o){throw o instanceof ia?new ln(o.code==="cwd_required"?"invalid_params":"backend_unsupported",o.message,{backend:o.backend??t.backend}):o}};stopRuntime=async t=>{let r=this.runtimeManager.getEntry(t.runtimeId);if(r.activeTurnIds.length>0&&!t.force)throw new ln("runtime_busy","Runtime has active turns",{runtimeId:t.runtimeId,activeTurnIds:r.activeTurnIds});return this.runtimeManager.markStopping(t.runtimeId),r.activeTurnIds.length>0&&(await this.cancelActiveTurns(t.runtimeId),await this.waitForNoActiveTurns(t.runtimeId)),await this.runtimeManager.markStopped(t.runtimeId),{ok:!0}};reap=async()=>{let t=Date.parse(this.now()),r=await this.runtimeManager.reclaimIdle({nowMs:t,policy:this.runtimeReclaimPolicy}),n=this.turnManager.reclaimTerminal({nowMs:t,policy:this.turnReclaimPolicy});return this.logger.info({runtimeReclaimed:r.length,turnsReclaimed:n.length,runtimesRemaining:this.runtimeManager.list().length},"reap cycle completed"),{runtimes:r.length,turns:n.length}};startTurn=t=>this.turnManager.startTurn(t);subscribeTurn=t=>this.turnManager.subscribeTurn(t.daemonTurnId,{fromSeq:t.fromSeq});getTurn=t=>this.turnManager.getTurn(t.daemonTurnId);listTurns=(t={})=>this.turnManager.listTurns(t);cancelTurn=async t=>(await this.turnManager.cancelTurn(t.daemonTurnId),{ok:!0});failRuntimeTurns=(t,r)=>{this.turnManager.failRuntimeTurns(t,r)};steerTurn=async t=>(await this.turnManager.steerTurn(t.daemonTurnId,t.message),{ok:!0});resolveApproval=async t=>(await this.turnManager.resolveApproval(t.daemonTurnId,t.requestId,t.decision),{ok:!0});close=async()=>{for(let t of this.runtimeManager.list())await this.stopRuntime({runtimeId:t.runtimeId,force:!0});this.sessionManager.close()};cancelActiveTurns=async t=>{let r=this.turnManager.activeTurnIdsForRuntime(t);for(let n of r)try{await this.turnManager.cancelTurn(n)}catch(o){if(o instanceof ln&&(o.code==="turn_not_ready"||o.code==="turn_not_running"||o.code==="backend_unsupported"))continue;throw o}};waitForNoActiveTurns=async t=>{let r=Date.now()+this.forceStopTimeoutMs;for(;this.turnManager.activeTurnIdsForRuntime(t).length>0;){if(Date.now()>=r){for(let n of this.turnManager.activeTurnIdsForRuntime(t))this.turnManager.forceTerminal(n,An({code:"cancelled",message:"Daemon force stopped runtime",source:"runtime",phase:"teardown",execution:"accepted",recoverability:"persistent",recoveryAction:"none",runtimeState:"unknown"}));return}await Vso(5)}}};var jso=()=>{let e=1;return()=>{let t=`turn_${e}`;return e+=1,t}},Vso=e=>new Promise(t=>setTimeout(t,e));var R5e=e=>{let t=!1,r=!1,n=setInterval(()=>{t||r||(r=!0,e.host.reap().catch(o=>{e.logger?.warn?.({err:o instanceof Error?o.message:String(o)},"sweeper tick failed")}).finally(()=>{r=!1}))},e.intervalMs);return n.unref?.(),()=>{t=!0,clearInterval(n)}};var rcr=(e,t)=>t instanceof ln?Sf(e,$_({code:t.code,message:t.message,details:t.details})):t instanceof Zr?Sf(e,LO(t.failure)):Sf(e,LO(An({code:"internal",message:t instanceof Error?t.message:String(t),source:"runtime",phase:"dispatch",execution:"unknown",recoverability:"unknown",recoveryAction:"unknown",runtimeState:"unknown"})));var the=class{active=new Map;subscribe=(t,r,n,o)=>{let i=this.pipe(t,r,n,o).then(()=>{this.active.delete(n)},()=>{this.active.delete(n)});return this.active.set(n,{connection:t,task:i,close:o}),i};closeSubscription=async(t,r)=>{let n=this.active.get(r);!n||n.connection!==t||(await n.close(),await n.task)};closeConnection=async t=>{let r=[...this.active.values()].filter(n=>n.connection===t);await Promise.all(r.map(n=>n.close())),await Promise.all(r.map(n=>n.task))};close=async()=>{let t=[...this.active.values()];await Promise.all(t.map(async r=>{await r.close()})),await Promise.all(t.map(r=>r.task))};pipe=async(t,r,n,o)=>{try{for await(let i of r)await t.send(YQ(i,n))}finally{await o()}}};var tm=(e,t)=>{if(!Nu(e))throw new ln("invalid_params","Invalid params",{method:t});return e},ncr=(e,t)=>e===void 0?{}:tm(e,t),ocr=(e,t)=>{let r=ncr(e,t);return{runtimeId:Nk(r,"runtimeId"),backend:xcr(r)}},k5e=(e,t)=>{let r=tm(e,t);return{runtimeId:bu(r,"runtimeId",t)}},icr=(e,t)=>{let r=tm(e,t),n=bu(r,"runtimeId",t),o=r.force;if(o!==void 0&&typeof o!="boolean")throw new ln("invalid_params","Invalid force",{method:t});return{runtimeId:n,force:o}},scr=(e,t)=>{let r=tm(e,t),n=r.input;if(!Nu(n))throw new ln("invalid_params","Invalid turn input",{method:t});return{sessionId:bu(r,"sessionId",t),scopeKey:bu(r,"scopeKey",t),input:Hso(n,t)}},acr=(e,t)=>{let r=tm(e,t);return{spec:Scr(r.spec,t),scopeKey:bu(r,"scopeKey",t),createRequestId:bu(r,"createRequestId",t)}},ucr=(e,t)=>{let r=tm(e,t);return{spec:Scr(r.spec,t),scopeKey:bu(r,"scopeKey",t),createRequestId:bu(r,"createRequestId",t),nativeSessionId:bu(r,"nativeSessionId",t),externalState:bcr(r,"externalState",t)}},O5e=(e,t)=>{let r=tm(e,t);return{sessionId:bu(r,"sessionId",t),scopeKey:bu(r,"scopeKey",t)}},ccr=(e,t)=>{let r=tm(e,t),n=r.status;if(n!==void 0&&n!=="active"&&n!=="ended")throw new ln("invalid_params","Invalid session status",{method:t});return{scopeKey:bu(r,"scopeKey",t),backend:xcr(r),status:n}},lcr=(e,t)=>O5e(e,t),pcr=(e,t)=>{let r=tm(e,t);return{backend:UW(r,t),cwd:Nk(r,"cwd")}},dcr=(e,t)=>{let r=tm(e,t),n=UW(r,t),o=bu(r,"model",t);return{backend:n,model:o,cwd:Nk(r,"cwd")}},mcr=(e,t)=>{let r=tm(e,t),n=UW(r,t),o=bu(r,"model",t);return{backend:n,model:o,cwd:Nk(r,"cwd")}},fcr=(e,t)=>{let r=tm(e,t),n=UW(r,t),o=bu(r,"methodId",t);return{backend:n,methodId:o,cwd:Nk(r,"cwd"),vars:bcr(r,"vars",t)}},hcr=(e,t)=>{let r=tm(e,t),n=bu(r,"daemonTurnId",t),o=r.fromSeq;if(o!==void 0&&typeof o!="number")throw new ln("invalid_params","Invalid fromSeq",{method:t});return{daemonTurnId:n,fromSeq:o}},gcr=(e,t)=>{let r=tm(e,t);return{subscriptionId:bu(r,"subscriptionId",t)}},N5e=(e,t)=>{let r=tm(e,t);return{daemonTurnId:bu(r,"daemonTurnId",t)}},ycr=(e,t)=>{let r=ncr(e,t),n=r.status;if(n!==void 0&&n!=="queued"&&n!=="starting"&&n!=="running"&&n!=="completed"&&n!=="failed"&&n!=="cancelled")throw new ln("invalid_params","Invalid turn status",{method:t});return{runtimeId:Nk(r,"runtimeId"),status:n}},Acr=(e,t)=>N5e(e,t),_cr=(e,t)=>{let r=tm(e,t);return{daemonTurnId:bu(r,"daemonTurnId",t),message:bu(r,"message",t)}},Ecr=(e,t)=>{let r=tm(e,t),n=Icr(r,"decision",["allow","deny"]);if(!n)throw new ln("invalid_params","Invalid decision",{method:t});return{daemonTurnId:bu(r,"daemonTurnId",t),requestId:bu(r,"requestId",t),decision:n}},Hso=(e,t)=>({...Jso(e,t),approvalMode:Icr(e,"approvalMode",["manual","auto","never"]),outputSchema:e.outputSchema,limits:Nu(e.limits)?e.limits:void 0,metadata:Wso(e.metadata)?e.metadata:void 0}),Jso=(e,t)=>{let r=e.prompt!==void 0,n=e.content!==void 0;if(r&&n)throw new ln("invalid_params","Turn input must carry either prompt or content, not both",{method:t});if(n){if(!Nu(e.content))throw new ln("invalid_params","Invalid turn content",{method:t});return{content:e.content}}return{prompt:bu(e,"prompt",t)}},Scr=(e,t)=>{if(!Nu(e))throw new ln("invalid_params","Invalid session spec",{method:t});return{backend:UW(e,t),model:bu(e,"model",t),effort:Nk(e,"effort"),systemPrompt:Nk(e,"systemPrompt"),cwd:bu(e,"cwd",t),providerOptions:Kso(e,t)}},Kso=(e,t)=>{let r=e.providerOptions;if(r!=null){if(!Nu(r))throw new ln("invalid_params","providerOptions must be a plain object",{method:t,path:"spec.providerOptions"});return r}},bu=(e,t,r)=>{let n=e[t];if(typeof n!="string"||n.length===0)throw new ln("invalid_params",`Invalid ${t}`,{method:r});return n},Nk=(e,t)=>{let r=e[t];return typeof r=="string"?r:void 0},bcr=(e,t,r)=>{let n=e[t];if(n===void 0)return;if(!Nu(n))throw new ln("invalid_params",`Invalid ${t}`,{method:r});let o={};for(let[i,s]of Object.entries(n)){if(typeof s!="string")throw new ln("invalid_params",`Invalid ${t}.${i}`,{method:r});o[i]=s}return o},xcr=e=>{let t=e.backend;return typeof t=="string"?t:void 0},UW=(e,t)=>{let r=e.backend;if(typeof r!="string"||r.length===0)throw new ln("invalid_params","Invalid backend",{method:t});return r},Icr=(e,t,r)=>{let n=e[t];return r.includes(n)?n:void 0},Wso=e=>Nu(e)?Object.values(e).every(t=>typeof t=="string"):!1;var $W=class{host;subscriptions;logger;authAborts=new Map;constructor(t){this.host=t.host,this.subscriptions=t.subscriptions??new the,this.logger=(t.logger??co).child({component:"dispatcher"})}dispatch=async(t,r)=>{if(!Vy(r)){this.logger.warn({},"invalid request"),await t.send(Sf(null,$_({code:"invalid_request",message:"Invalid request"})));return}if(!Yso(r.method)){this.logger.warn({method:r.method},"unknown method"),await t.send(Sf(r.id,$_({code:"method_not_found",message:"Method not found",details:{method:r.method}})));return}try{this.logger.debug({method:r.method,id:r.id},"dispatch method"),await this.dispatchKnown(t,r)}catch(n){this.logger.error({method:r.method,id:r.id},"method failed"),await t.send(rcr(r.id,n))}};close=async()=>{await this.subscriptions.close()};closeConnection=async t=>{let r=this.authAborts.get(t);if(r){for(let n of r)n.abort();this.authAborts.delete(t)}await this.subscriptions.closeConnection(t)};dispatchKnown=async(t,r)=>{if(r.method==="turn/subscribe"){let o=hcr(r.params,r.method),i=this.host.getTurn({daemonTurnId:o.daemonTurnId}),{subscriptionId:s,events:a,close:u}=this.host.subscribeTurn(o);try{await t.send(B_(r.id,{daemonTurnId:i.daemonTurnId,subscriptionId:s,oldestSeq:i.oldestSeq,nextSeq:i.nextSeq}))}catch(c){throw await u(),c}this.subscriptions.subscribe(t,a,s,u);return}if(r.method==="backend/authenticate"){let o=fcr(r.params,r.method),i=new AbortController;this.trackAuth(t,i);try{let s=await this.host.authenticateBackend(o,i.signal);await t.send(B_(r.id,s))}finally{this.untrackAuth(t,i)}return}if(r.method==="turn/unsubscribe"){let o=gcr(r.params,r.method);await this.subscriptions.closeSubscription(t,o.subscriptionId),await t.send(B_(r.id,{ok:!0}));return}let n=await this.handle(r);await t.send(B_(r.id,n))};handle=async t=>{switch(t.method){case"backend/config-options":return this.host.getBackendConfigOptions(pcr(t.params,t.method));case"backend/model-efforts":return this.host.getModelEfforts(dcr(t.params,t.method));case"backend/input-capabilities":return this.host.getBackendInputCapabilities(mcr(t.params,t.method));case"backend/authenticate":throw new Error("backend/authenticate is handled before generic dispatch");case"daemon/status":return this.host.status();case"daemon/shutdown":return await this.host.close(),{ok:!0};case"runtime/list":return{runtimes:this.host.listRuntimes()};case"runtime/start":return this.host.startRuntime(ocr(t.params,t.method));case"runtime/get":{let r=k5e(t.params,t.method);return this.host.getRuntime(r.runtimeId)}case"runtime/stop":return this.host.stopRuntime(icr(t.params,t.method));case"runtime/capabilities":{let r=k5e(t.params,t.method);return this.host.getRuntime(r.runtimeId).capabilities}case"session/create":return this.host.createSession(acr(t.params,t.method));case"session/import":return this.host.importSession(ucr(t.params,t.method));case"session/get":return this.host.getSession(O5e(t.params,t.method));case"session/list":return{sessions:this.host.listSessions(ccr(t.params,t.method))};case"session/delete":return this.host.deleteSession(lcr(t.params,t.method));case"turn/start":return this.host.startTurn(scr(t.params,t.method));case"turn/subscribe":throw new Error("turn/subscribe is handled before generic dispatch");case"turn/unsubscribe":throw new Error("turn/unsubscribe is handled before generic dispatch");case"turn/get":return this.host.getTurn(N5e(t.params,t.method));case"turn/list":return{turns:this.host.listTurns(ycr(t.params,t.method))};case"turn/cancel":return this.host.cancelTurn(Acr(t.params,t.method));case"turn/steer":return this.host.steerTurn(_cr(t.params,t.method));case"turn/resolveApproval":return this.host.resolveApproval(Ecr(t.params,t.method))}};trackAuth=(t,r)=>{let n=this.authAborts.get(t);n||(n=new Set,this.authAborts.set(t,n)),n.add(r)};untrackAuth=(t,r)=>{let n=this.authAborts.get(t);n&&(n.delete(r),n.size===0&&this.authAborts.delete(t))}};var Yso=e=>XQ.includes(e);function Tcr(e,t,r){if(!e)return;let n=Object.entries(t).map(([s,a])=>({name:s,command:a.command,args:a.args})),o=n.map(i0),i=[...e.list(),...o];return r?.info({agents:n.map(s=>({name:s.name,command:s.command}))},"acp agents registered from config"),wI(i)}function vcr(e){if(!e.backendRegistry)throw new Error("DaemonService requires either a `host` or a `backendRegistry`");if(!e.defaultBackend)throw new Error("DaemonService requires `defaultBackend` when `backendRegistry` is provided");if(!e.backendRegistry.has(e.defaultBackend))throw new Error(`DaemonService defaultBackend "${e.defaultBackend}" is not registered in the backendRegistry`);return new LW({...e.hostOptions,backendRegistry:e.backendRegistry,defaultBackend:e.defaultBackend})}function Xso(e){return e?.sessionStore||e?.sessionDbPath?e:{...e,sessionStore:I5e()}}function M5e(e={}){let t=(e.logger??co).child({service:"daemon-memory"}),r=e.acpAgents?Tcr(e.backendRegistry,e.acpAgents,t):void 0,n=e.host??vcr({backendRegistry:r??e.backendRegistry,defaultBackend:e.defaultBackend,hostOptions:{...Xso(e.hostOptions),logger:t}}),o=new $W({host:n,logger:t}),{client:i,server:s}=rG(),a=R5e({host:n,intervalMs:n.reclamationConfig.sweepIntervalMs,logger:t}),u=!1;s.listen(async m=>{try{for await(let f of m.messages())if(await o.dispatch(m,f),Vy(f)&&f.method==="daemon/shutdown"){t.info({},"shutdown requested via in-memory transport"),u=!0,a(),await n.close(),await o.close();return}}finally{await o.closeConnection(m)}}).catch(()=>{});let c=new MI({transport:i});return{controller:$O({client:c}),status:()=>n.status(),close:async()=>{u||(u=!0,a(),await c.close(),await s.close(),await o.close(),await n.close())}}}var Zso=[Hj,Gj,o5],Ccr=wI(Zso),eao=[{id:"codex",runtimeId:"codex-app-server",label:"Codex"},{id:"claude",runtimeId:"claude-stream",label:"Claude"},{id:"opencode",runtimeId:"opencode",label:"OpenCode"}];async function wcr(){let e=await Ccr.probeAll();return eao.map(t=>{let r=e.get(t.runtimeId)??{status:"unknown"};return{...t,...r}})}var rhe=class{service=M5e({backendRegistry:Ccr,defaultBackend:"codex-app-server"});async configuration(t,r){return{models:(await this.service.controller.getBackendConfigOptions({backend:t.runtimeId,cwd:r})).models}}async efforts(t,r,n){return this.service.controller.getModelEfforts({backend:t.runtimeId,model:r,cwd:n})}close(){return this.service.close()}};var BW={apiUrl:"wss://game-match-worker.wu38607.workers.dev",webUrl:"https://arena.turbo4.org"};var nhe=["openai-completions","openai-responses","anthropic-messages"];function Rcr(e,t){let r=iao(e),n=e.includes("--random"),o=yy(e,"backend")??t.GAME_AGENT_BACKEND??"tiny-agent",i=o==="openai-compatible"?"custom-api":o,s={name:yy(e,"name")??r[0]??(n?"random":"agent"),random:n,seed:aao(yy(e,"seed")??t.GAME_AGENT_RANDOM_SEED??"1","--seed"),model:yy(e,"model")??t.GAME_AGENT_MODEL??"opencode-go/deepseek-v4-flash",effort:yy(e,"effort")??t.GAME_AGENT_EFFORT??"low",backend:i,apiFormat:nao(o==="openai-compatible"?"openai-completions":yy(e,"api-format")??t.GAME_AGENT_API_FORMAT??"openai-completions"),apiKey:yy(e,"api-key")??t.GAME_AGENT_API_KEY,baseUrl:yy(e,"base-url")??t.GAME_AGENT_BASE_URL,debug:e.includes("--debug")||uao(t.GAME_AGENT_DEBUG),url:yy(e,"url")??t.URL??BW.apiUrl,webUrl:yy(e,"web-url")??t.GAME_WEB_URL??BW.webUrl,openBrowser:!e.includes("--no-open"),decisionTimeoutMs:sao(yy(e,"decision-timeout-ms")??t.GAME_AGENT_DECISION_TIMEOUT_MS??"180000","--decision-timeout-ms"),matchPreference:oao(yy(e,"match")??t.GAME_MATCH_PREFERENCE??"1v1"),battleStrategy:cao(yy(e,"battle-strategy")??t.GAME_AGENT_BATTLE_STRATEGY),help:e.includes("--help")||e.includes("-h")};return rao(s),s}function kcr(e){return e.every(t=>t==="--debug"||t==="--no-open")}var tao=new Set(["--model","--backend","--api-format","--api-key","--base-url","--effort","--decision-timeout-ms","--url","--web-url","--name","--seed","--match","--battle-strategy"]);function rao(e){if(!(e.help||e.random||e.backend!=="custom-api")){if(!e.baseUrl?.trim())throw new Error("--base-url or GAME_AGENT_BASE_URL is required for the custom-api backend");if(!e.apiKey?.trim())throw new Error("--api-key or GAME_AGENT_API_KEY is required for the custom-api backend")}}function nao(e){if(nhe.includes(e))return e;throw new Error(`--api-format must be one of ${nhe.join(", ")}; received: ${e}`)}function oao(e){if(e==="1v1"||e==="1v1-only")return"1v1-only";if(e==="2v2"||e==="2v2-preferred")return"2v2-preferred";throw new Error(`--match must be 1v1 or 2v2; received: ${e}`)}function iao(e){let t=[];for(let r=0;r<e.length;r++){let n=e[r];if(tao.has(n)){r++;continue}n.startsWith("-")||t.push(n)}return t}function yy(e,t){let r=`--${t}=`,n=e.find(i=>i.startsWith(r));if(n)return n.slice(r.length);let o=e.indexOf(`--${t}`);return o>=0?e[o+1]:void 0}function sao(e,t){let r=Number(e);if(!Number.isFinite(r)||r<0)throw new Error(`${t} must be a non-negative number; received: ${e}`);return r}function aao(e,t){let r=Number(e);if(!Number.isSafeInteger(r)||r<0)throw new Error(`${t} must be a non-negative safe integer; received: ${e}`);return r}function uao(e){return e==="1"||e?.toLowerCase()==="true"}function cao(e){let t=e?.trim();return t||void 0}var Ocr=`
|
|
926
926
|
Usage:
|
|
927
927
|
pnpm agent [name] [LLM options]
|
|
928
928
|
pnpm agent [name] --random [--seed=<n>]
|
|
@@ -951,7 +951,7 @@ GAME_AGENT_API_FORMAT / GAME_AGENT_EFFORT / GAME_AGENT_DEBUG /
|
|
|
951
951
|
GAME_AGENT_DECISION_TIMEOUT_MS / GAME_AGENT_BATTLE_STRATEGY.
|
|
952
952
|
Match preference can also be provided through GAME_MATCH_PREFERENCE.
|
|
953
953
|
The random seed can also be provided through GAME_AGENT_RANDOM_SEED.
|
|
954
|
-
`.trim();var gn=vn(z5e(),1),mao=()=>`agent-${dao(2).toString("hex")}`,zcr={id:"custom-api",runtimeId:"custom-api",label:"Custom API",status:"available"},qW=[{id:"openai-completions",label:"OpenAI Chat Completions"},{id:"openai-responses",label:"OpenAI Responses"},{id:"anthropic-messages",label:"Anthropic Messages"}];async function Lcr(){let e=null,t=new rhe;return await qje((0,gn.jsx)(fao,{catalog:t,onDone:n=>{e=n}})).waitUntilExit(),await t.close(),e}function fao({catalog:e,onDone:t}){let{exit:r}=jje(),n=(0,ec.useMemo)(mao,[]),[o,i]=(0,ec.useState)("probing"),[s,a]=(0,ec.useState)([]),[u,c]=(0,ec.useState)(0),[d,m]=(0,ec.useState)(null),[f,g]=(0,ec.useState)(null),[A,S]=(0,ec.useState)(""),b=process.env.GAME_AGENT_API_FORMAT,[k,R]=(0,ec.useState)(()=>{let Ce=nhe.indexOf(b);return Math.max(0,Ce)}),[N,K]=(0,ec.useState)(process.env.GAME_AGENT_BASE_URL??""),[ne,ee]=(0,ec.useState)(process.env.GAME_AGENT_API_KEY??""),[Te,Ee]=(0,ec.useState)(process.env.GAME_AGENT_MODEL??""),[xe,We]=(0,ec.useState)(0),[Ot,Qe]=(0,ec.useState)([]),[pt,er]=(0,ec.useState)(0),[vt,nr]=(0,ec.useState)(0),[gr,or]=(0,ec.useState)(process.env.GAME_AGENT_BATTLE_STRATEGY??""),[pr,Cn]=(0,ec.useState)(null),[Qt,Ur]=(0,ec.useState)("backend"),Ht=(0,ec.useRef)(0);(0,ec.useEffect)(()=>{wcr().then(Ce=>{let ke=[...Ce,zcr];a(ke);let Je=ke.findIndex(ut=>ut.status==="available");c(Math.max(0,Je)),i("backend")}).catch(Ce=>{a([zcr]),Cn(Ce instanceof Error?Ce.message:String(Ce)),i("backend")})},[]);let Nn=s.filter(Ce=>Ce.status==="available"),ao=qW[k],Ps=d?.id==="custom-api"?Te.trim():f?.models[xe]?.value??"",Mn=Ot[pt],Fn=vt===0?"2v2-preferred":"1v1-only";Gje((Ce,ke)=>{if(ke.ctrl&&Ce==="c"){r();return}if(o!=="probing"){if(o==="catalog"){ke.escape&&(Ht.current++,Cn(null),i(Qt));return}if(ke.escape){Cn(null),o==="backend"?r():o==="api-format"?(m(null),i("backend")):o==="base-url"?i("api-format"):o==="api-key"?i("base-url"):o==="name"?i(d?.id==="custom-api"?"api-key":"backend"):o==="model"||o==="custom-model"?i("name"):o==="effort"?i("model"):o==="matchmaking"?i(d?.id==="custom-api"?"custom-model":Ot.length>0?"effort":"model"):o==="strategy"?i("matchmaking"):o==="confirm"&&i("strategy");return}if(o==="backend"){if(ke.upArrow&&c(Je=>Eao(s,Je)),ke.downArrow&&c(Je=>_ao(s,Je)),ke.return){let Je=s[u];if(!Je||Je.status!=="available")return;if(m(Je),Cn(null),Je.id==="custom-api"){i("api-format");return}g(null),Qe([]),Ur("backend"),i("catalog");let ut=++Ht.current;e.configuration(Je,process.cwd()).then(je=>{if(Ht.current!==ut)return;g(je);let At=je.models.findIndex(He=>He.isDefault);We(Math.max(0,At)),i("name")}).catch(je=>{Ht.current===ut&&(Cn(je instanceof Error?je.message:String(je)),i("backend"))})}return}if(o==="api-format"){ke.upArrow&&R(Je=>(Je-1+qW.length)%qW.length),ke.downArrow&&R(Je=>(Je+1)%qW.length),ke.return&&i("base-url");return}if(o==="base-url"){ke.return&&N.trim()?i("api-key"):ke.backspace||ke.delete?K(Je=>Je.slice(0,-1)):Ce&&!ke.ctrl&&!ke.meta&&N.length<2048&&K(Je=>Je+Ce.replace(/[\r\n]/g,""));return}if(o==="api-key"){ke.return&&ne.trim()?i("name"):ke.backspace||ke.delete?ee(Je=>Je.slice(0,-1)):Ce&&!ke.ctrl&&!ke.meta&&ne.length<1024&&ee(Je=>Je+Ce.replace(/[\r\n]/g,""));return}if(o==="name"){ke.return?i(d?.id==="custom-api"?"custom-model":"model"):ke.backspace||ke.delete?S(Je=>Je.slice(0,-1)):Ce&&!ke.ctrl&&!ke.meta&&A.length<32&&S(Je=>Je+Ce.replace(/[\r\n]/g,""));return}if(o==="custom-model"){ke.return&&Te.trim()?i("matchmaking"):ke.backspace||ke.delete?Ee(Je=>Je.slice(0,-1)):Ce&&!ke.ctrl&&!ke.meta&&Te.length<256&&Ee(Je=>Je+Ce.replace(/[\r\n]/g,""));return}if(o==="model"){let Je=f?.models.length??0;if(ke.upArrow&&Je&&We(ut=>(ut-1+Je)%Je),ke.downArrow&&Je&&We(ut=>(ut+1)%Je),ke.return&&d&&d.id!=="custom-api"&&Ps){Ur("model"),i("catalog");let ut=++Ht.current;e.efforts(d,Ps,process.cwd()).then(je=>{if(Ht.current!==ut)return;Qe(je.efforts);let At=je.defaultEffort?je.efforts.indexOf(je.defaultEffort):0;er(Math.max(0,At)),i(je.efforts.length>0?"effort":"matchmaking")}).catch(je=>{Ht.current===ut&&(Cn(je instanceof Error?je.message:String(je)),i("model"))})}return}if(o==="effort"){ke.upArrow&&er(Je=>(Je-1+Ot.length)%Ot.length),ke.downArrow&&er(Je=>(Je+1)%Ot.length),ke.return&&i("matchmaking");return}if(o==="matchmaking"){(ke.upArrow||ke.downArrow)&&nr(Je=>Je===0?1:0),ke.return&&i("strategy");return}if(o==="strategy"){ke.return?i("confirm"):ke.backspace||ke.delete?or(Je=>Je.slice(0,-1)):Ce&&!ke.ctrl&&!ke.meta&&gr.length<2e3&&or(Je=>Je+Ce.replace(/[\r\n]+/g," ").slice(0,2e3-Je.length));return}o==="confirm"&&ke.return&&d&&Ps&&(t({name:A.trim()||n,backend:d.id,model:Ps,...d.id==="custom-api"?{apiFormat:ao.id,apiKey:ne.trim(),baseUrl:N.trim()}:Mn?{effort:Mn}:{},matchPreference:Fn,...gr.trim()?{battleStrategy:gr.trim()}:{}}),r())}});let Ie=gao(o,d,Qt);return(0,gn.jsxs)(ig,{flexDirection:"column",paddingX:1,paddingY:1,children:[(0,gn.jsx)(so,{bold:!0,color:"cyan",children:"HEXFRONT"}),(0,gn.jsx)(so,{dimColor:!0,children:Ie.kind==="review"?"Agent Setup \xB7 Review":`Agent Setup \xB7 Step ${Ie.current}/${Ie.total} \u2014 ${Ie.label}`}),(0,gn.jsx)(hao,{backend:d,name:A.trim()||void 0,placeholder:n,baseUrl:N.trim()||void 0,apiKeyConfigured:!!ne.trim(),apiFormat:ao.label,model:Ps||void 0,effort:Mn,matchPreference:Fn,battleStrategyConfigured:!!gr.trim()}),(0,gn.jsx)(so,{children:" "}),o==="probing"&&(0,gn.jsx)(so,{color:"cyan",children:"Detecting available backends\u2026"}),o==="catalog"&&(0,gn.jsx)(so,{color:"cyan",children:Qt==="backend"?`Loading ${d?.label??"backend"} models\u2026`:`Loading effort levels for ${Ps}\u2026`}),o==="backend"&&(0,gn.jsxs)(gn.Fragment,{children:[(0,gn.jsx)(so,{bold:!0,children:"Choose an agent backend"}),s.map((Ce,ke)=>(0,gn.jsxs)(so,{...Ce.status!=="available"?{color:"gray"}:ke===u?{color:"cyan",bold:!0}:{},children:[ke===u?"\u276F":" "," ",Ce.label," ",Ce.id==="custom-api"?"\u2014 Configure an API endpoint and key":Ce.status==="available"?`\u2014 Ready${Ce.version?` \xB7 ${Ce.version}`:""}`:`\u2014 ${Ce.reason??Sao(Ce.status)}`]},Ce.id)),Nn.length===0&&(0,gn.jsx)(so,{color:"red",children:"No available agents detected"})]}),o==="api-format"&&(0,gn.jsx)(she,{title:"Choose an API format",items:qW.map(Ce=>Ce.label),selected:k}),o==="base-url"&&(0,gn.jsxs)(gn.Fragment,{children:[(0,gn.jsx)(so,{bold:!0,children:"API base URL"}),(0,gn.jsxs)(so,{color:"green",children:["\u203A ",N]}),!N&&(0,gn.jsx)(so,{dimColor:!0,children:Aao(ao.id)})]}),o==="api-key"&&(0,gn.jsxs)(gn.Fragment,{children:[(0,gn.jsx)(so,{bold:!0,children:"API key"}),(0,gn.jsxs)(so,{color:"green",children:["\u203A ","\u2022".repeat(Math.min(ne.length,48))]})]}),o==="name"&&(0,gn.jsxs)(gn.Fragment,{children:[(0,gn.jsx)(so,{bold:!0,children:"Agent name"}),(0,gn.jsxs)(so,{color:"green",children:["\u203A ",A||(0,gn.jsx)(so,{dimColor:!0,children:n})]}),!A&&(0,gn.jsx)(so,{dimColor:!0,children:"Press Enter to use the generated name"})]}),o==="custom-model"&&(0,gn.jsxs)(gn.Fragment,{children:[(0,gn.jsx)(so,{bold:!0,children:"Model ID"}),(0,gn.jsxs)(so,{color:"green",children:["\u203A ",Te]})]}),o==="model"&&f&&(0,gn.jsxs)(gn.Fragment,{children:[(0,gn.jsx)(she,{title:"Select a model (\u2191/\u2193, Enter)",items:f.models.map(Ce=>Ce.displayName??Ce.value),selected:xe}),d?.id==="opencode"&&(0,gn.jsx)(Dcr,{})]}),o==="effort"&&(0,gn.jsx)(she,{title:"Select an effort level (\u2191/\u2193, Enter)",items:Ot,selected:pt}),o==="matchmaking"&&(0,gn.jsx)(she,{title:"Choose matchmaking preference (\u2191/\u2193, Enter)",items:["Prefer 2v2 \u2014 automatically fall back to 1v1 after 45 seconds","1v1 only"],selected:vt}),o==="strategy"&&(0,gn.jsxs)(gn.Fragment,{children:[(0,gn.jsx)(so,{bold:!0,children:"Optional battle strategy"}),(0,gn.jsxs)(so,{color:"green",children:["\u203A ",gr]}),!gr&&(0,gn.jsx)(so,{dimColor:!0,children:"Press Enter to skip, or describe a strategy to add to the LLM system prompt"})]}),o==="confirm"&&d&&(0,gn.jsxs)(gn.Fragment,{children:[(0,gn.jsx)(so,{bold:!0,children:"Confirm configuration"}),(0,gn.jsxs)(so,{children:["Agent\u3000 ",A.trim()||n]}),(0,gn.jsxs)(so,{children:["Backend ",d.label]}),d.id==="custom-api"&&(0,gn.jsxs)(so,{children:["Format\u3000 ",ao.label]}),d.id==="custom-api"&&(0,gn.jsxs)(so,{children:["Base URL ",N.trim()]}),d.id==="custom-api"&&(0,gn.jsx)(so,{children:"API Key\u3000configured"}),(0,gn.jsxs)(so,{children:["Model\u3000 ",Ps]}),d.id!=="custom-api"&&(0,gn.jsxs)(so,{children:["Effort\u3000 ",Mn??"default"]}),(0,gn.jsxs)(so,{children:["Match\u3000 ",Fn==="2v2-preferred"?"Prefer 2v2, then 1v1 fallback":"1v1 only"]}),(0,gn.jsxs)(so,{children:["Strategy ",gr.trim()?D5e(gr.trim(),72):"none"]}),d.id==="opencode"&&(0,gn.jsx)(Dcr,{}),(0,gn.jsx)(so,{color:"green",children:"Press Enter to start matchmaking"})]}),pr&&(0,gn.jsx)(so,{color:"red",children:pr}),(0,gn.jsx)(so,{children:" "}),(0,gn.jsx)(so,{dimColor:!0,children:yao(o)})]})}function hao({backend:e,name:t,placeholder:r,baseUrl:n,apiKeyConfigured:o,apiFormat:i,model:s,effort:a,matchPreference:u,battleStrategyConfigured:c}){if(!e)return null;let d=[e.label,t??r,...e.id==="custom-api"?[i]:[],...e.id==="custom-api"&&n?[D5e(n)]:[],...e.id==="custom-api"&&o?["API key configured"]:[],...s?[D5e(s)]:[],...e.id!=="custom-api"&&a?[a]:[],u==="2v2-preferred"?"prefer 2v2":"1v1 only",...c?["strategy configured"]:[]];return(0,gn.jsx)(so,{color:"gray",children:d.join(" \xB7 ")})}function Dcr(){return(0,gn.jsx)(so,{color:"yellow",children:"Note: Some models may not support the structured output Hexfront requires."})}function she({title:e,items:t,selected:r}){let n=Math.max(0,Math.min(r-4,t.length-9));return(0,gn.jsxs)(gn.Fragment,{children:[(0,gn.jsx)(so,{bold:!0,children:e}),t.slice(n,n+9).map((o,i)=>{let s=n+i;return(0,gn.jsxs)(so,{...s===r?{color:"cyan",bold:!0}:{},children:[s===r?"\u276F":" "," ",o]},`${o}-${s}`)}),t.length>9&&(0,gn.jsxs)(so,{dimColor:!0,children:[r+1," / ",t.length]})]})}function gao(e,t,r){return e==="confirm"?{kind:"review"}:!t||e==="backend"||e==="probing"?{kind:"step",current:1,total:6,label:"Backend"}:t.id==="custom-api"?e==="api-format"?{kind:"step",current:2,total:8,label:"API Format"}:e==="base-url"?{kind:"step",current:3,total:8,label:"Endpoint"}:e==="api-key"?{kind:"step",current:4,total:8,label:"Credentials"}:e==="name"?{kind:"step",current:5,total:8,label:"Agent"}:e==="matchmaking"?{kind:"step",current:7,total:8,label:"Matchmaking"}:e==="strategy"?{kind:"step",current:8,total:8,label:"Strategy"}:{kind:"step",current:6,total:8,label:"Model"}:e==="catalog"?r==="backend"?{kind:"step",current:1,total:6,label:"Backend"}:{kind:"step",current:4,total:6,label:"Effort"}:e==="name"?{kind:"step",current:2,total:6,label:"Agent"}:e==="model"?{kind:"step",current:3,total:6,label:"Model"}:e==="matchmaking"?{kind:"step",current:5,total:6,label:"Matchmaking"}:e==="strategy"?{kind:"step",current:6,total:6,label:"Strategy"}:{kind:"step",current:4,total:6,label:"Effort"}}function yao(e){return e==="probing"?"Ctrl+C Exit":e==="catalog"?"Esc Back \xB7 Ctrl+C Exit":e==="backend"?"\u2191/\u2193 Navigate \xB7 Enter Select \xB7 Esc Exit":e==="model"||e==="effort"||e==="api-format"||e==="matchmaking"?"\u2191/\u2193 Navigate \xB7 Enter Select \xB7 Esc Back \xB7 Ctrl+C Exit":e==="confirm"?"Enter Start \xB7 Esc Back \xB7 Ctrl+C Exit":"Enter Continue \xB7 Esc Back \xB7 Ctrl+C Exit"}function D5e(e,t=48){return e.length<=t?e:`${e.slice(0,t-1)}\u2026`}function Aao(e){return e==="anthropic-messages"?"Example: https://api.anthropic.com":"Example: https://api.openai.com/v1"}function _ao(e,t){for(let r=1;r<=e.length;r++){let n=(t+r)%e.length;if(e[n]?.status==="available")return n}return t}function Eao(e,t){for(let r=1;r<=e.length;r++){let n=(t-r+e.length)%e.length;if(e[n]?.status==="available")return n}return t}function Sao(e){return e==="not_installed"?"Not installed":e==="version_mismatch"?"Incompatible version":"Unknown status"}import{existsSync as Ucr}from"node:fs";import{spawn as bao}from"node:child_process";function $cr(e){if(process.env.CI||process.env.SSH_CONNECTION||Ucr("/.dockerenv")||Ucr("/run/.containerenv"))return!1;let t=process.platform==="darwin"?{file:"open",args:[e]}:process.platform==="win32"?{file:"cmd",args:["/c","start","",e]}:{file:"xdg-open",args:[e]};try{return bao(t.file,t.args,{detached:!0,stdio:"ignore"}).unref(),!0}catch{return!1}}var Qcr=process.argv.slice(2),L5e=Rcr(Qcr,process.env),Gcr=kcr(Qcr),nS=Gcr?await Lcr():null;Gcr&&nS===null&&process.exit(130);var eo=nS?{...L5e,name:nS.name,backend:nS.backend,model:nS.model,apiFormat:nS.apiFormat??L5e.apiFormat,effort:nS.effort,apiKey:nS.apiKey,baseUrl:nS.baseUrl,matchPreference:nS.matchPreference,battleStrategy:nS.battleStrategy}:L5e;eo.help&&(console.log(Ocr),process.exit(0));eo.random?console.log(`[${eo.name}] Starting random agent: seed=${eo.seed}`):(console.log(`[${eo.name}] Starting LLM agent: backend=${eo.backend}${eo.backend==="custom-api"?` api=${eo.apiFormat}`:""} model=${eo.model} effort=${eo.backend==="custom-api"?"off":eo.effort??"default"}`),eo.backend==="opencode"&&console.warn(`[${eo.name}] Some models may not support the structured output Hexfront requires.`));var ahe=eo.debug?e=>Cao(eo.name,e):void 0,U5e=await(eo.random?tJe({name:eo.name,seed:eo.seed}):eo.backend==="custom-api"?l4e({name:eo.name,model:eo.model,backend:"custom-api",apiFormat:eo.apiFormat,apiKey:Fcr(eo.apiKey,"Custom API key"),baseUrl:Fcr(eo.baseUrl,"Custom API base URL"),...eo.battleStrategy?{battleStrategy:eo.battleStrategy}:{},...ahe?{onDebug:ahe}:{}}):l4e({name:eo.name,model:eo.model,...eo.effort?{effort:eo.effort}:{},backend:eo.backend,...eo.battleStrategy?{battleStrategy:eo.battleStrategy}:{},...ahe?{onDebug:ahe}:{}})),xao=eo.random?{name:eo.name,backend:"random",model:`seed-${eo.seed}`}:{name:eo.name,backend:eo.backend,model:eo.model,...eo.backend!=="custom-api"&&eo.effort?{effort:eo.effort}:{}},Iao=e=>Lrr(new WebSocket(eo.url+e)),Bcr=null,Tao=e=>{if(Bcr===e)return;Bcr=e;let t=`${eo.webUrl.replace(/\/$/,"")}/match/${encodeURIComponent(e)}`;console.log(`[${eo.name}] Room ${e}`),console.log(`[${eo.name}] Watch URL: ${t}`),eo.openBrowser&&console.log($cr(t)?`[${eo.name}] Opened browser`:`[${eo.name}] Unable to open a browser in this environment; copy the URL above`)},uhe=await $rr(Iao,{agent:{...xao},preference:eo.matchPreference,onQueued:({fallbackAt:e})=>{console.log(e===null?`[${eo.name}] Queued for 1v1...`:`[${eo.name}] Queued for 2v2; fallback to 1v1 in ${Math.max(0,Math.ceil((e-Date.now())/1e3))}s...`)},onDowngraded:()=>{console.log(`[${eo.name}] 2v2 wait expired; now matching 1v1.`)}}).catch(async e=>{throw await U5e.close?.(),e}),{transport:vao,matchId:jcr,playerId:Vcr,channel:qcr}=uhe;Tao(jcr);console.log(`[${eo.name}] Matched ${uhe.mode} in ${jcr} as ${Vcr} (${uhe.sideId} side, team seat ${uhe.teamSeat+1})`);try{await ZHe(vao,U5e,{maxRetries:3,decisionTimeoutMs:eo.decisionTimeoutMs,trace:new pme(eo.name,qcr)}),console.log(`[${eo.name}] Match ended (seat ${Vcr})`)}finally{qcr.close(),await U5e.close?.()}function Fcr(e,t){let r=e?.trim();if(!r)throw new Error(`${t} is required`);return r}function Cao(e,t){if(t.type==="input"){console.log(`[${e}] DEBUG agent input
|
|
954
|
+
`.trim();var gn=vn(z5e(),1),mao=()=>`agent-${dao(2).toString("hex")}`,zcr={id:"custom-api",runtimeId:"custom-api",label:"Custom API",status:"available"},qW=[{id:"openai-completions",label:"OpenAI Chat Completions"},{id:"openai-responses",label:"OpenAI Responses"},{id:"anthropic-messages",label:"Anthropic Messages"}];async function Lcr(){let e=null,t=new rhe;return await qje((0,gn.jsx)(fao,{catalog:t,onDone:n=>{e=n}})).waitUntilExit(),await t.close(),e}function fao({catalog:e,onDone:t}){let{exit:r}=jje(),n=(0,ec.useMemo)(mao,[]),[o,i]=(0,ec.useState)("probing"),[s,a]=(0,ec.useState)([]),[u,c]=(0,ec.useState)(0),[d,m]=(0,ec.useState)(null),[f,g]=(0,ec.useState)(null),[A,S]=(0,ec.useState)(""),b=process.env.GAME_AGENT_API_FORMAT,[k,R]=(0,ec.useState)(()=>{let Ce=nhe.indexOf(b);return Math.max(0,Ce)}),[N,K]=(0,ec.useState)(process.env.GAME_AGENT_BASE_URL??""),[ne,ee]=(0,ec.useState)(process.env.GAME_AGENT_API_KEY??""),[Te,Ee]=(0,ec.useState)(process.env.GAME_AGENT_MODEL??""),[xe,We]=(0,ec.useState)(0),[Ot,Qe]=(0,ec.useState)([]),[pt,er]=(0,ec.useState)(0),[vt,nr]=(0,ec.useState)(0),[gr,or]=(0,ec.useState)(process.env.GAME_AGENT_BATTLE_STRATEGY??""),[pr,Cn]=(0,ec.useState)(null),[Qt,Ur]=(0,ec.useState)("backend"),Ht=(0,ec.useRef)(0);(0,ec.useEffect)(()=>{wcr().then(Ce=>{let ke=[...Ce,zcr];a(ke);let Je=ke.findIndex(ut=>ut.status==="available");c(Math.max(0,Je)),i("backend")}).catch(Ce=>{a([zcr]),Cn(Ce instanceof Error?Ce.message:String(Ce)),i("backend")})},[]);let Nn=s.filter(Ce=>Ce.status==="available"),ao=qW[k],Ps=d?.id==="custom-api"?Te.trim():f?.models[xe]?.value??"",Mn=Ot[pt],Fn=vt===0?"2v2-preferred":"1v1-only";Gje((Ce,ke)=>{if(ke.ctrl&&Ce==="c"){r();return}if(o!=="probing"){if(o==="catalog"){ke.escape&&(Ht.current++,Cn(null),i(Qt));return}if(ke.escape){Cn(null),o==="backend"?r():o==="api-format"?(m(null),i("backend")):o==="base-url"?i("api-format"):o==="api-key"?i("base-url"):o==="name"?i(d?.id==="custom-api"?"api-key":"backend"):o==="model"||o==="custom-model"?i("name"):o==="effort"?i("model"):o==="matchmaking"?i(d?.id==="custom-api"?"custom-model":Ot.length>0?"effort":"model"):o==="strategy"?i("matchmaking"):o==="confirm"&&i("strategy");return}if(o==="backend"){if(ke.upArrow&&c(Je=>Eao(s,Je)),ke.downArrow&&c(Je=>_ao(s,Je)),ke.return){let Je=s[u];if(!Je||Je.status!=="available")return;if(m(Je),Cn(null),Je.id==="custom-api"){i("api-format");return}g(null),Qe([]),Ur("backend"),i("catalog");let ut=++Ht.current;e.configuration(Je,process.cwd()).then(je=>{if(Ht.current!==ut)return;g(je);let At=je.models.findIndex(He=>He.isDefault);We(Math.max(0,At)),i("name")}).catch(je=>{Ht.current===ut&&(Cn(je instanceof Error?je.message:String(je)),i("backend"))})}return}if(o==="api-format"){ke.upArrow&&R(Je=>(Je-1+qW.length)%qW.length),ke.downArrow&&R(Je=>(Je+1)%qW.length),ke.return&&i("base-url");return}if(o==="base-url"){ke.return&&N.trim()?i("api-key"):ke.backspace||ke.delete?K(Je=>Je.slice(0,-1)):Ce&&!ke.ctrl&&!ke.meta&&N.length<2048&&K(Je=>Je+Ce.replace(/[\r\n]/g,""));return}if(o==="api-key"){ke.return&&ne.trim()?i("name"):ke.backspace||ke.delete?ee(Je=>Je.slice(0,-1)):Ce&&!ke.ctrl&&!ke.meta&&ne.length<1024&&ee(Je=>Je+Ce.replace(/[\r\n]/g,""));return}if(o==="name"){ke.return?i(d?.id==="custom-api"?"custom-model":"model"):ke.backspace||ke.delete?S(Je=>Je.slice(0,-1)):Ce&&!ke.ctrl&&!ke.meta&&A.length<32&&S(Je=>Je+Ce.replace(/[\r\n]/g,""));return}if(o==="custom-model"){ke.return&&Te.trim()?i("matchmaking"):ke.backspace||ke.delete?Ee(Je=>Je.slice(0,-1)):Ce&&!ke.ctrl&&!ke.meta&&Te.length<256&&Ee(Je=>Je+Ce.replace(/[\r\n]/g,""));return}if(o==="model"){let Je=f?.models.length??0;if(ke.upArrow&&Je&&We(ut=>(ut-1+Je)%Je),ke.downArrow&&Je&&We(ut=>(ut+1)%Je),ke.return&&d&&d.id!=="custom-api"&&Ps){Ur("model"),i("catalog");let ut=++Ht.current;e.efforts(d,Ps,process.cwd()).then(je=>{if(Ht.current!==ut)return;Qe(je.efforts);let At=je.defaultEffort?je.efforts.indexOf(je.defaultEffort):0;er(Math.max(0,At)),i(je.efforts.length>0?"effort":"matchmaking")}).catch(je=>{Ht.current===ut&&(Cn(je instanceof Error?je.message:String(je)),i("model"))})}return}if(o==="effort"){ke.upArrow&&er(Je=>(Je-1+Ot.length)%Ot.length),ke.downArrow&&er(Je=>(Je+1)%Ot.length),ke.return&&i("matchmaking");return}if(o==="matchmaking"){(ke.upArrow||ke.downArrow)&&nr(Je=>Je===0?1:0),ke.return&&i("strategy");return}if(o==="strategy"){ke.return?i("confirm"):ke.backspace||ke.delete?or(Je=>Je.slice(0,-1)):Ce&&!ke.ctrl&&!ke.meta&&gr.length<2e3&&or(Je=>Je+Ce.replace(/[\r\n]+/g," ").slice(0,2e3-Je.length));return}o==="confirm"&&ke.return&&d&&Ps&&(t({name:A.trim()||n,backend:d.id,model:Ps,...d.id==="custom-api"?{apiFormat:ao.id,apiKey:ne.trim(),baseUrl:N.trim()}:Mn?{effort:Mn}:{},matchPreference:Fn,...gr.trim()?{battleStrategy:gr.trim()}:{}}),r())}});let Ie=gao(o,d,Qt);return(0,gn.jsxs)(ig,{flexDirection:"column",paddingX:1,paddingY:1,children:[(0,gn.jsx)(so,{bold:!0,color:"cyan",children:"Arena"}),(0,gn.jsx)(so,{dimColor:!0,children:Ie.kind==="review"?"Agent Setup \xB7 Review":`Agent Setup \xB7 Step ${Ie.current}/${Ie.total} \u2014 ${Ie.label}`}),(0,gn.jsx)(hao,{backend:d,name:A.trim()||void 0,placeholder:n,baseUrl:N.trim()||void 0,apiKeyConfigured:!!ne.trim(),apiFormat:ao.label,model:Ps||void 0,effort:Mn,matchPreference:Fn,battleStrategyConfigured:!!gr.trim()}),(0,gn.jsx)(so,{children:" "}),o==="probing"&&(0,gn.jsx)(so,{color:"cyan",children:"Detecting available backends\u2026"}),o==="catalog"&&(0,gn.jsx)(so,{color:"cyan",children:Qt==="backend"?`Loading ${d?.label??"backend"} models\u2026`:`Loading effort levels for ${Ps}\u2026`}),o==="backend"&&(0,gn.jsxs)(gn.Fragment,{children:[(0,gn.jsx)(so,{bold:!0,children:"Choose an agent backend"}),s.map((Ce,ke)=>(0,gn.jsxs)(so,{...Ce.status!=="available"?{color:"gray"}:ke===u?{color:"cyan",bold:!0}:{},children:[ke===u?"\u276F":" "," ",Ce.label," ",Ce.id==="custom-api"?"\u2014 Configure an API endpoint and key":Ce.status==="available"?`\u2014 Ready${Ce.version?` \xB7 ${Ce.version}`:""}`:`\u2014 ${Ce.reason??Sao(Ce.status)}`]},Ce.id)),Nn.length===0&&(0,gn.jsx)(so,{color:"red",children:"No available agents detected"})]}),o==="api-format"&&(0,gn.jsx)(she,{title:"Choose an API format",items:qW.map(Ce=>Ce.label),selected:k}),o==="base-url"&&(0,gn.jsxs)(gn.Fragment,{children:[(0,gn.jsx)(so,{bold:!0,children:"API base URL"}),(0,gn.jsxs)(so,{color:"green",children:["\u203A ",N]}),!N&&(0,gn.jsx)(so,{dimColor:!0,children:Aao(ao.id)})]}),o==="api-key"&&(0,gn.jsxs)(gn.Fragment,{children:[(0,gn.jsx)(so,{bold:!0,children:"API key"}),(0,gn.jsxs)(so,{color:"green",children:["\u203A ","\u2022".repeat(Math.min(ne.length,48))]})]}),o==="name"&&(0,gn.jsxs)(gn.Fragment,{children:[(0,gn.jsx)(so,{bold:!0,children:"Agent name"}),(0,gn.jsxs)(so,{color:"green",children:["\u203A ",A||(0,gn.jsx)(so,{dimColor:!0,children:n})]}),!A&&(0,gn.jsx)(so,{dimColor:!0,children:"Press Enter to use the generated name"})]}),o==="custom-model"&&(0,gn.jsxs)(gn.Fragment,{children:[(0,gn.jsx)(so,{bold:!0,children:"Model ID"}),(0,gn.jsxs)(so,{color:"green",children:["\u203A ",Te]})]}),o==="model"&&f&&(0,gn.jsxs)(gn.Fragment,{children:[(0,gn.jsx)(she,{title:"Select a model (\u2191/\u2193, Enter)",items:f.models.map(Ce=>Ce.displayName??Ce.value),selected:xe}),d?.id==="opencode"&&(0,gn.jsx)(Dcr,{})]}),o==="effort"&&(0,gn.jsx)(she,{title:"Select an effort level (\u2191/\u2193, Enter)",items:Ot,selected:pt}),o==="matchmaking"&&(0,gn.jsx)(she,{title:"Choose matchmaking preference (\u2191/\u2193, Enter)",items:["Prefer 2v2 \u2014 automatically fall back to 1v1 after 45 seconds","1v1 only"],selected:vt}),o==="strategy"&&(0,gn.jsxs)(gn.Fragment,{children:[(0,gn.jsx)(so,{bold:!0,children:"Optional battle strategy"}),(0,gn.jsxs)(so,{color:"green",children:["\u203A ",gr]}),!gr&&(0,gn.jsx)(so,{dimColor:!0,children:"Press Enter to skip, or describe a strategy to add to the LLM system prompt"})]}),o==="confirm"&&d&&(0,gn.jsxs)(gn.Fragment,{children:[(0,gn.jsx)(so,{bold:!0,children:"Confirm configuration"}),(0,gn.jsxs)(so,{children:["Agent\u3000 ",A.trim()||n]}),(0,gn.jsxs)(so,{children:["Backend ",d.label]}),d.id==="custom-api"&&(0,gn.jsxs)(so,{children:["Format\u3000 ",ao.label]}),d.id==="custom-api"&&(0,gn.jsxs)(so,{children:["Base URL ",N.trim()]}),d.id==="custom-api"&&(0,gn.jsx)(so,{children:"API Key\u3000configured"}),(0,gn.jsxs)(so,{children:["Model\u3000 ",Ps]}),d.id!=="custom-api"&&(0,gn.jsxs)(so,{children:["Effort\u3000 ",Mn??"default"]}),(0,gn.jsxs)(so,{children:["Match\u3000 ",Fn==="2v2-preferred"?"Prefer 2v2, then 1v1 fallback":"1v1 only"]}),(0,gn.jsxs)(so,{children:["Strategy ",gr.trim()?D5e(gr.trim(),72):"none"]}),d.id==="opencode"&&(0,gn.jsx)(Dcr,{}),(0,gn.jsx)(so,{color:"green",children:"Press Enter to start matchmaking"})]}),pr&&(0,gn.jsx)(so,{color:"red",children:pr}),(0,gn.jsx)(so,{children:" "}),(0,gn.jsx)(so,{dimColor:!0,children:yao(o)})]})}function hao({backend:e,name:t,placeholder:r,baseUrl:n,apiKeyConfigured:o,apiFormat:i,model:s,effort:a,matchPreference:u,battleStrategyConfigured:c}){if(!e)return null;let d=[e.label,t??r,...e.id==="custom-api"?[i]:[],...e.id==="custom-api"&&n?[D5e(n)]:[],...e.id==="custom-api"&&o?["API key configured"]:[],...s?[D5e(s)]:[],...e.id!=="custom-api"&&a?[a]:[],u==="2v2-preferred"?"prefer 2v2":"1v1 only",...c?["strategy configured"]:[]];return(0,gn.jsx)(so,{color:"gray",children:d.join(" \xB7 ")})}function Dcr(){return(0,gn.jsx)(so,{color:"yellow",children:"Note: Some models may not support the structured output Arena requires."})}function she({title:e,items:t,selected:r}){let n=Math.max(0,Math.min(r-4,t.length-9));return(0,gn.jsxs)(gn.Fragment,{children:[(0,gn.jsx)(so,{bold:!0,children:e}),t.slice(n,n+9).map((o,i)=>{let s=n+i;return(0,gn.jsxs)(so,{...s===r?{color:"cyan",bold:!0}:{},children:[s===r?"\u276F":" "," ",o]},`${o}-${s}`)}),t.length>9&&(0,gn.jsxs)(so,{dimColor:!0,children:[r+1," / ",t.length]})]})}function gao(e,t,r){return e==="confirm"?{kind:"review"}:!t||e==="backend"||e==="probing"?{kind:"step",current:1,total:6,label:"Backend"}:t.id==="custom-api"?e==="api-format"?{kind:"step",current:2,total:8,label:"API Format"}:e==="base-url"?{kind:"step",current:3,total:8,label:"Endpoint"}:e==="api-key"?{kind:"step",current:4,total:8,label:"Credentials"}:e==="name"?{kind:"step",current:5,total:8,label:"Agent"}:e==="matchmaking"?{kind:"step",current:7,total:8,label:"Matchmaking"}:e==="strategy"?{kind:"step",current:8,total:8,label:"Strategy"}:{kind:"step",current:6,total:8,label:"Model"}:e==="catalog"?r==="backend"?{kind:"step",current:1,total:6,label:"Backend"}:{kind:"step",current:4,total:6,label:"Effort"}:e==="name"?{kind:"step",current:2,total:6,label:"Agent"}:e==="model"?{kind:"step",current:3,total:6,label:"Model"}:e==="matchmaking"?{kind:"step",current:5,total:6,label:"Matchmaking"}:e==="strategy"?{kind:"step",current:6,total:6,label:"Strategy"}:{kind:"step",current:4,total:6,label:"Effort"}}function yao(e){return e==="probing"?"Ctrl+C Exit":e==="catalog"?"Esc Back \xB7 Ctrl+C Exit":e==="backend"?"\u2191/\u2193 Navigate \xB7 Enter Select \xB7 Esc Exit":e==="model"||e==="effort"||e==="api-format"||e==="matchmaking"?"\u2191/\u2193 Navigate \xB7 Enter Select \xB7 Esc Back \xB7 Ctrl+C Exit":e==="confirm"?"Enter Start \xB7 Esc Back \xB7 Ctrl+C Exit":"Enter Continue \xB7 Esc Back \xB7 Ctrl+C Exit"}function D5e(e,t=48){return e.length<=t?e:`${e.slice(0,t-1)}\u2026`}function Aao(e){return e==="anthropic-messages"?"Example: https://api.anthropic.com":"Example: https://api.openai.com/v1"}function _ao(e,t){for(let r=1;r<=e.length;r++){let n=(t+r)%e.length;if(e[n]?.status==="available")return n}return t}function Eao(e,t){for(let r=1;r<=e.length;r++){let n=(t-r+e.length)%e.length;if(e[n]?.status==="available")return n}return t}function Sao(e){return e==="not_installed"?"Not installed":e==="version_mismatch"?"Incompatible version":"Unknown status"}import{existsSync as Ucr}from"node:fs";import{spawn as bao}from"node:child_process";function $cr(e){if(process.env.CI||process.env.SSH_CONNECTION||Ucr("/.dockerenv")||Ucr("/run/.containerenv"))return!1;let t=process.platform==="darwin"?{file:"open",args:[e]}:process.platform==="win32"?{file:"cmd",args:["/c","start","",e]}:{file:"xdg-open",args:[e]};try{return bao(t.file,t.args,{detached:!0,stdio:"ignore"}).unref(),!0}catch{return!1}}var Qcr=process.argv.slice(2),L5e=Rcr(Qcr,process.env),Gcr=kcr(Qcr),nS=Gcr?await Lcr():null;Gcr&&nS===null&&process.exit(130);var eo=nS?{...L5e,name:nS.name,backend:nS.backend,model:nS.model,apiFormat:nS.apiFormat??L5e.apiFormat,effort:nS.effort,apiKey:nS.apiKey,baseUrl:nS.baseUrl,matchPreference:nS.matchPreference,battleStrategy:nS.battleStrategy}:L5e;eo.help&&(console.log(Ocr),process.exit(0));eo.random?console.log(`[${eo.name}] Starting random agent: seed=${eo.seed}`):(console.log(`[${eo.name}] Starting LLM agent: backend=${eo.backend}${eo.backend==="custom-api"?` api=${eo.apiFormat}`:""} model=${eo.model} effort=${eo.backend==="custom-api"?"off":eo.effort??"default"}`),eo.backend==="opencode"&&console.warn(`[${eo.name}] Some models may not support the structured output Arena requires.`));var ahe=eo.debug?e=>Cao(eo.name,e):void 0,U5e=await(eo.random?tJe({name:eo.name,seed:eo.seed}):eo.backend==="custom-api"?l4e({name:eo.name,model:eo.model,backend:"custom-api",apiFormat:eo.apiFormat,apiKey:Fcr(eo.apiKey,"Custom API key"),baseUrl:Fcr(eo.baseUrl,"Custom API base URL"),...eo.battleStrategy?{battleStrategy:eo.battleStrategy}:{},...ahe?{onDebug:ahe}:{}}):l4e({name:eo.name,model:eo.model,...eo.effort?{effort:eo.effort}:{},backend:eo.backend,...eo.battleStrategy?{battleStrategy:eo.battleStrategy}:{},...ahe?{onDebug:ahe}:{}})),xao=eo.random?{name:eo.name,backend:"random",model:`seed-${eo.seed}`}:{name:eo.name,backend:eo.backend,model:eo.model,...eo.backend!=="custom-api"&&eo.effort?{effort:eo.effort}:{}},Iao=e=>Lrr(new WebSocket(eo.url+e)),Bcr=null,Tao=e=>{if(Bcr===e)return;Bcr=e;let t=`${eo.webUrl.replace(/\/$/,"")}/match/${encodeURIComponent(e)}`;console.log(`[${eo.name}] Room ${e}`),console.log(`[${eo.name}] Watch URL: ${t}`),eo.openBrowser&&console.log($cr(t)?`[${eo.name}] Opened browser`:`[${eo.name}] Unable to open a browser in this environment; copy the URL above`)},uhe=await $rr(Iao,{agent:{...xao},preference:eo.matchPreference,onQueued:({fallbackAt:e})=>{console.log(e===null?`[${eo.name}] Queued for 1v1...`:`[${eo.name}] Queued for 2v2; fallback to 1v1 in ${Math.max(0,Math.ceil((e-Date.now())/1e3))}s...`)},onDowngraded:()=>{console.log(`[${eo.name}] 2v2 wait expired; now matching 1v1.`)}}).catch(async e=>{throw await U5e.close?.(),e}),{transport:vao,matchId:jcr,playerId:Vcr,channel:qcr}=uhe;Tao(jcr);console.log(`[${eo.name}] Matched ${uhe.mode} in ${jcr} as ${Vcr} (${uhe.sideId} side, team seat ${uhe.teamSeat+1})`);try{await ZHe(vao,U5e,{maxRetries:3,decisionTimeoutMs:eo.decisionTimeoutMs,trace:new pme(eo.name,qcr)}),console.log(`[${eo.name}] Match ended (seat ${Vcr})`)}finally{qcr.close(),await U5e.close?.()}function Fcr(e,t){let r=e?.trim();if(!r)throw new Error(`${t} is required`);return r}function Cao(e,t){if(t.type==="input"){console.log(`[${e}] DEBUG agent input
|
|
955
955
|
--- system prompt ---
|
|
956
956
|
${t.systemPrompt}
|
|
957
957
|
--- user prompt ---
|