goatchain-cli 0.0.4-beta.34 → 0.0.4-beta.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/cli.mjs +3 -3
  2. package/package.json +1 -1
package/dist/cli.mjs CHANGED
@@ -784,7 +784,7 @@ When referencing specific functions or pieces of code include the pattern \`file
784
784
  user: Where are errors from the client handled?
785
785
  assistant: Clients are marked as failed in the \`connectToServer\` function in src/services/process.ts:712.
786
786
  </example>
787
- `;async function hA($){let U=O6("0.0.4-beta.34")??await sn($.cwd),_=await UH($.env),G=_.cache,J=G.settings??{},Q=O6(J.cwd),Y=Array.isArray(J.focusFiles)?J.focusFiles.map((K)=>String(K??"")).filter(Boolean):void 0,V=$.cwd||Q||".",X={GOATCHAIN_VERSION:U??"dev",...$.env.GOATCHAIN_MODEL?{GOATCHAIN_MODEL:$.env.GOATCHAIN_MODEL}:{},...$.env.GOATCHAIN_CONTEXT_WINDOW?{GOATCHAIN_CONTEXT_WINDOW:$.env.GOATCHAIN_CONTEXT_WINDOW}:{},...$.env.GOATCHAIN_TEMPERATURE?{GOATCHAIN_TEMPERATURE:$.env.GOATCHAIN_TEMPERATURE}:{},...$.env.GOATCHAIN_TOOL_APPROVALS?{GOATCHAIN_TOOL_APPROVALS:$.env.GOATCHAIN_TOOL_APPROVALS}:{},...$.env.GOATCHAIN_SKIP_APPROVAL?{GOATCHAIN_SKIP_APPROVAL:$.env.GOATCHAIN_SKIP_APPROVAL}:{},...$.env.GOATCHAIN_STARTUP_TOAST?{GOATCHAIN_STARTUP_TOAST:$.env.GOATCHAIN_STARTUP_TOAST}:{},...$.env.GOATCHAIN_STARTUP_UPGRADE_TOAST?{GOATCHAIN_STARTUP_UPGRADE_TOAST:$.env.GOATCHAIN_STARTUP_UPGRADE_TOAST}:{},...$.env.GOATCHAIN_OPENAI_BASE_URL?{GOATCHAIN_OPENAI_BASE_URL:$.env.GOATCHAIN_OPENAI_BASE_URL}:{},...$.env.OPENAI_BASE_URL?{OPENAI_BASE_URL:$.env.OPENAI_BASE_URL}:{},...$.env.OPENAI_API_KEY?{OPENAI_API_KEY:$.env.OPENAI_API_KEY}:{}};if(!X.GOATCHAIN_MODEL&&O6(J.model))X.GOATCHAIN_MODEL=String(J.model);if(!X.GOATCHAIN_CONTEXT_WINDOW&&sU(J.contextWindow)!=null)X.GOATCHAIN_CONTEXT_WINDOW=String(J.contextWindow);if(!X.GOATCHAIN_TEMPERATURE&&sU(J.temperature)!=null)X.GOATCHAIN_TEMPERATURE=String(J.temperature);if(!X.GOATCHAIN_TOOL_APPROVALS&&J.toolApprovals==="auto")X.GOATCHAIN_TOOL_APPROVALS="auto";if(!X.GOATCHAIN_TOOL_APPROVALS&&J.toolApprovals==="all")X.GOATCHAIN_TOOL_APPROVALS="all";if(!X.GOATCHAIN_TOOL_APPROVALS&&J.toolApprovals==="manual")X.GOATCHAIN_TOOL_APPROVALS="auto";if(!X.GOATCHAIN_OPENAI_BASE_URL&&O6(J.baseUrl))X.GOATCHAIN_OPENAI_BASE_URL=String(J.baseUrl);if(!X.OPENAI_API_KEY&&O6(J.apiKey))X.OPENAI_API_KEY=String(J.apiKey);return{context:{system:gA,cwd:V,env:X,...Y?.length?{focusFiles:Y}:{}},cacheDir:_.dir,cacheFile:_.filePath,cache:G}}async function sn($){try{let[{readFile:U},_]=await Promise.all([import("node:fs/promises"),import("node:path")]),G=await U(_.join($,"package.json"),"utf8"),J=JSON.parse(G),Q=typeof J?.version==="string"?J.version:null;return Q&&Q.trim()?Q.trim():null}catch{return null}}import{watch as l3}from"vue";function kJ($,U){let _=String($??"").replace(/\s+/g," ").trim();if(_.length<=U)return _;return`${_.slice(0,Math.max(0,U-1))}…`}function $p($){if(typeof $==="string")return $;if(Array.isArray($))return $.filter((_)=>_&&typeof _==="object"&&_.type==="text"&&typeof _.text==="string").map((_)=>_.text).join(" ");if($&&typeof $==="object"){let U=$.text;if(typeof U==="string")return U}return""}function TJ($){if(!$||typeof $!=="object")return"";let U=String($.role??"");if(U==="user")return $p($.content);if(U==="tool")return String($.result?.output??"");if(U==="assistant"){let _=Array.isArray($.parts)?$.parts:[],G=_.filter((Q)=>Q?.type==="markdown").map((Q)=>String(Q.markdown??"")).join(`
787
+ `;async function hA($){let U=O6("0.0.4-beta.35")??await sn($.cwd),_=await UH($.env),G=_.cache,J=G.settings??{},Q=O6(J.cwd),Y=Array.isArray(J.focusFiles)?J.focusFiles.map((K)=>String(K??"")).filter(Boolean):void 0,V=$.cwd||Q||".",X={GOATCHAIN_VERSION:U??"dev",...$.env.GOATCHAIN_MODEL?{GOATCHAIN_MODEL:$.env.GOATCHAIN_MODEL}:{},...$.env.GOATCHAIN_CONTEXT_WINDOW?{GOATCHAIN_CONTEXT_WINDOW:$.env.GOATCHAIN_CONTEXT_WINDOW}:{},...$.env.GOATCHAIN_TEMPERATURE?{GOATCHAIN_TEMPERATURE:$.env.GOATCHAIN_TEMPERATURE}:{},...$.env.GOATCHAIN_TOOL_APPROVALS?{GOATCHAIN_TOOL_APPROVALS:$.env.GOATCHAIN_TOOL_APPROVALS}:{},...$.env.GOATCHAIN_SKIP_APPROVAL?{GOATCHAIN_SKIP_APPROVAL:$.env.GOATCHAIN_SKIP_APPROVAL}:{},...$.env.GOATCHAIN_STARTUP_TOAST?{GOATCHAIN_STARTUP_TOAST:$.env.GOATCHAIN_STARTUP_TOAST}:{},...$.env.GOATCHAIN_STARTUP_UPGRADE_TOAST?{GOATCHAIN_STARTUP_UPGRADE_TOAST:$.env.GOATCHAIN_STARTUP_UPGRADE_TOAST}:{},...$.env.GOATCHAIN_OPENAI_BASE_URL?{GOATCHAIN_OPENAI_BASE_URL:$.env.GOATCHAIN_OPENAI_BASE_URL}:{},...$.env.OPENAI_BASE_URL?{OPENAI_BASE_URL:$.env.OPENAI_BASE_URL}:{},...$.env.OPENAI_API_KEY?{OPENAI_API_KEY:$.env.OPENAI_API_KEY}:{}};if(!X.GOATCHAIN_MODEL&&O6(J.model))X.GOATCHAIN_MODEL=String(J.model);if(!X.GOATCHAIN_CONTEXT_WINDOW&&sU(J.contextWindow)!=null)X.GOATCHAIN_CONTEXT_WINDOW=String(J.contextWindow);if(!X.GOATCHAIN_TEMPERATURE&&sU(J.temperature)!=null)X.GOATCHAIN_TEMPERATURE=String(J.temperature);if(!X.GOATCHAIN_TOOL_APPROVALS&&J.toolApprovals==="auto")X.GOATCHAIN_TOOL_APPROVALS="auto";if(!X.GOATCHAIN_TOOL_APPROVALS&&J.toolApprovals==="all")X.GOATCHAIN_TOOL_APPROVALS="all";if(!X.GOATCHAIN_TOOL_APPROVALS&&J.toolApprovals==="manual")X.GOATCHAIN_TOOL_APPROVALS="auto";if(!X.GOATCHAIN_OPENAI_BASE_URL&&O6(J.baseUrl))X.GOATCHAIN_OPENAI_BASE_URL=String(J.baseUrl);if(!X.OPENAI_API_KEY&&O6(J.apiKey))X.OPENAI_API_KEY=String(J.apiKey);return{context:{system:gA,cwd:V,env:X,...Y?.length?{focusFiles:Y}:{}},cacheDir:_.dir,cacheFile:_.filePath,cache:G}}async function sn($){try{let[{readFile:U},_]=await Promise.all([import("node:fs/promises"),import("node:path")]),G=await U(_.join($,"package.json"),"utf8"),J=JSON.parse(G),Q=typeof J?.version==="string"?J.version:null;return Q&&Q.trim()?Q.trim():null}catch{return null}}import{watch as l3}from"vue";function kJ($,U){let _=String($??"").replace(/\s+/g," ").trim();if(_.length<=U)return _;return`${_.slice(0,Math.max(0,U-1))}…`}function $p($){if(typeof $==="string")return $;if(Array.isArray($))return $.filter((_)=>_&&typeof _==="object"&&_.type==="text"&&typeof _.text==="string").map((_)=>_.text).join(" ");if($&&typeof $==="object"){let U=$.text;if(typeof U==="string")return U}return""}function TJ($){if(!$||typeof $!=="object")return"";let U=String($.role??"");if(U==="user")return $p($.content);if(U==="tool")return String($.result?.output??"");if(U==="assistant"){let _=Array.isArray($.parts)?$.parts:[],G=_.filter((Q)=>Q?.type==="markdown").map((Q)=>String(Q.markdown??"")).join(`
788
788
  `);if(G.trim())return G;let J=_.find((Q)=>Q?.type==="status");return J?String(J.text??""):""}return""}function mA($){let _=(Array.isArray($)?$:[]).find((J)=>J&&typeof J==="object"&&J.role==="user"&&kJ(TJ(J),999).length>0),G=_?TJ(_):"";return kJ(G||"New session",60)||"New session"}function cA($){let _=(Array.isArray($)?$:[]).find((J)=>J&&typeof J==="object"&&J.role==="user"&&kJ(TJ(J),999).length>0),G=_?TJ(_):"";return kJ(G||"New session",120)||"New session"}function dA($){let _=[...Array.isArray($)?$:[]].reverse().find((G)=>{if(!G||typeof G!=="object"||G.role!=="user")return!1;return kJ(TJ(G),999).length>0});return kJ(_?TJ(_):"",180)}function c3($){return`${$}_${Date.now()}_${Math.random().toString(36).slice(2,9)}`}function JH($){return $!=null&&typeof $==="object"&&!Array.isArray($)}function d3($){if($==null)return"";if(typeof $==="string")return $;if(Array.isArray($))return $.map(d3).join("");if(JH($)){if(typeof $.text==="string")return String($.text);if(String($.type??"")==="image")return"[image]";try{return JSON.stringify($)}catch{return String($)}}return String($)}function Up($){if(JH($))return $;if(typeof $==="string"){let U=$.trim();if(!U)return{};try{let _=JSON.parse(U);return JH(_)?_:{_raw:$}}catch{return{_raw:$}}}return{}}function lA($){let U=$?.context?.messages,_=Array.isArray(U)?U:[],G=[],J=new Map;for(let Q of _){let Y=String(Q?.role??"");if(Y==="user"){G.push({id:c3("m"),role:"user",content:d3(Q?.content)});continue}if(Y==="assistant"){let V=[],X=d3(Q?.content);if(X)V.push({type:"markdown",markdown:X});let K=Array.isArray(Q?.tool_calls)?Q.tool_calls:[];for(let Z of K){let W=String(Z?.id??"").trim(),N=String(Z?.function?.name??"tool"),H=Up(Z?.function?.arguments);if(!W)continue;let B={id:W,name:N,arguments:H};V.push({type:"tool_call",call:B}),J.set(W,G.length)}G.push({id:c3("m"),role:"assistant",parts:[{type:"status",text:""},...V]});continue}if(Y==="tool"){let V=String(Q?.tool_call_id??"").trim(),X=d3(Q?.content),K=Q?.isError?"error":"success",Z={id:V||c3("tool"),output:X,status:K};G.push({id:c3("m"),role:"tool",result:Z});let W=V?J.get(V):void 0;if(W==null)continue;let N=G[W];if(!N||N.role!=="assistant")continue;G[W]={...N,parts:[...N.parts,{type:"tool_result",result:Z}]};continue}}return G}function iA($){let U=[];for(let _ of $){if(_.role==="user"){U.push({role:"user",content:String(_.content??"")});continue}if(_.role==="assistant"){let G=_.parts.filter((Y)=>Y.type==="markdown").map((Y)=>String(Y.markdown??"")).join(""),J=_.parts.flatMap((Y)=>Y.type==="tool_call"?[Y.call]:[]),Q=J.length?J.map((Y)=>({id:Y.id,type:"function",function:{name:Y.name,arguments:Y.arguments}})):void 0;U.push({role:"assistant",content:G,...Q?{tool_calls:Q}:{}});continue}if(_.role==="tool")U.push({role:"tool",tool_call_id:String(_.result.id??""),content:String(_.result.output??""),..._.result.status==="error"?{isError:!0}:{}})}return U}function rA($){return String($?.id??"").trim()}function _p($){return Number($?.state?.updatedAt??$?.state?.lastActiveAt??0)||0}function nA($){let U=$?.context?.messages;return Array.isArray(U)?U:[]}function Jp($){let U=Number($?.context?.messageCount??0);if(Number.isFinite(U)&&U>=0)return U;return nA($).length}function Gp($){let U=$?.stats?.usage;return U&&typeof U==="object"?U:null}function pA($){let U=rA($);if(!U)return null;let _=_p($),G=nA($),J=O6($?.state?.title)??mA(G),Q=cA(G),Y=O6($?.context?.lastMessagePreview)??dA(G),V=Jp($);return{id:U,updatedAt:_,title:J,summary:Q,messageCount:V,lastMessage:Y}}function GG($,U){let _=rA(U);if(_)$.state.sessionId=_;let G=lA(U);$.state.messages.splice(0,$.state.messages.length,...G),$.state.revertedMessages.splice(0,$.state.revertedMessages.length),$.state.selectedToolCallId=null,$.state.runningToolCallId=null,$.state.paused=null,$.state.approval.active=null,$.state.approval.pendingAutoRun=null,$.state.approval.queue=[],$.state.approval.decisions={};let J=Gp(U);if(J){let Q=Number(J.promptTokens),Y=Number(J.completionTokens);if(Number.isFinite(Q))$.state.usage.prompt_tokens=Q;if(Number.isFinite(Y))$.state.usage.completion_tokens=Y;if(Number.isFinite(Q)&&Number.isFinite(Y))$.state.usage.total_tokens=Q+Y;else{let V=Number(J.totalTokens);if(Number.isFinite(V))$.state.usage.total_tokens=V}}}function oA($){let U=Array.isArray($)?$:[];return iA(U)}function aA($){let U=$.store,_=U?.state?.context?.env??{},G=O6(_.GOATCHAIN_OPENAI_BASE_URL||_.OPENAI_BASE_URL),J=O6(_.OPENAI_API_KEY);return{version:1,updatedAt:Date.now(),settings:{cwd:O6(U?.state?.context?.cwd),focusFiles:U?.state?.context?.focusFiles??void 0,model:O6(U?.state?.config?.model),contextWindow:sU(U?.state?.config?.context_window),temperature:sU(U?.state?.config?.temperature),baseUrl:G,apiKey:J,toolApprovals:U?.state?.approval?.mode==="all"?"all":"auto"},lastSessionId:O6(U?.state?.sessionId)||$.prev.lastSessionId}}function tA($,U){let _=null,G=!1,J=!1,Q=async()=>{if(G){J=!0;return}G=!0,J=!1;try{await $()}finally{if(G=!1,J)Y()}},Y=()=>{if(J=!0,_)clearTimeout(_);_=setTimeout(Q,Math.max(0,U||0))};return{schedule:Y}}function Qp($){return String($?.id??"").trim()}function eA($){let U=null,_=$.sessionsBackend??null;return{sessions:_?{async list(){return(await _.list()).map(pA).filter(Boolean)},async use(Q){let Y=String(Q??"").trim();if(!Y||!U)return;if(String(U.state.sessionId??"")===Y)return;let V=await _.get(Y);if(!V)return;GG(U,V)},async createNew(){if(!U)return;let Q=await _.create();if(!Q)return;GG(U,Q)},async delete(Q){let Y=String(Q??"").trim();if(!Y)return;if(await _.destroy(Y),U&&String(U.state.sessionId??"")===Y)U.state.sessionId=""},async fork(Q){if(!U)return;let Y=Array.isArray(Q?.messages)?Q.messages:[];if(typeof _.createWithMessages!=="function"){let X=await _.create();if(X)U.state.sessionId=Qp(X);U.state.messages.splice(0,U.state.messages.length,...Y),U.state.revertedMessages.splice(0,U.state.revertedMessages.length),U.state.selectedToolCallId=null,U.state.usage.prompt_tokens=0,U.state.usage.completion_tokens=0,U.state.usage.total_tokens=0;return}let V=await _.createWithMessages(oA(Y));if(!V)return;GG(U,V)}}:void 0,onStoreCreated:(Q)=>{if(U=Q,_){let V=String(Q.state.sessionId??"").trim();if(V)_.get(V).then((X)=>{if(X&&U)GG(U,X)}).catch(()=>{})}let Y=tA(async()=>{try{let V=aA({prev:$.cache,store:Q});await _H($.cacheFile,V)}catch(V){console.warn("[goatchain] Failed to persist cache:",V)}},300);l3(()=>Q.state.sessionId,Y.schedule),l3(()=>Q.state.config,Y.schedule,{deep:!0}),l3(()=>Q.state.context,Y.schedule,{deep:!0}),l3(()=>Q.state.approval.mode,Y.schedule),Y.schedule()}}}async function GH($){let U=$.sessionsBackend,_=O6($.envSessionId);if(U&&_){if(await U.get(_))return _}return _}function sA(){return async($)=>{let U=String($?.name??"tool");return{id:String($?.id??"tool"),status:"error",output:["Tool execution is handled by the GoatChain agent.",`This UI cannot run tool "${U}" locally.`].join(`
789
789
  `)}}}import*as $R from"node:path";function Yp($){return $R.join($,"state")}function Vp($){$.env.GOATCHAIN_STATE_DIR=$.stateDir,$.context.env.GOATCHAIN_STATE_DIR=$.stateDir}async function QH($){let{context:U,cacheDir:_,cacheFile:G,cache:J}=await hA({cwd:$.cwd,env:$.env}),Q=Yp(_);Vp({env:$.env,context:U,stateDir:Q});let Y=xA({context:U,processEnv:$.env,stateDir:Q}),V=Y?.__sessions??null,X=await GH({sessionsBackend:V,envSessionId:$.env.GOATCHAIN_SESSION_ID});$.env.GOATCHAIN_SESSION_ID=X??"",U.env.GOATCHAIN_SESSION_ID=X??"";let{sessions:K,onStoreCreated:Z}=eA({cacheFile:G,cache:J,sessionsBackend:V});return{toolRunner:sA(),context:U,agent:Y,onStoreCreated:Z,sessions:K}}import ba from"node:fs";import{nextTick as qQ}from"vue";var UR=($=0)=>(U)=>`\x1B[${U+$}m`,_R=($=0)=>(U)=>`\x1B[${38+$};5;${U}m`,JR=($=0)=>(U,_,G)=>`\x1B[${38+$};2;${U};${_};${G}m`,e4={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]}},UZ$=Object.keys(e4.modifier),Xp=Object.keys(e4.color),Kp=Object.keys(e4.bgColor),_Z$=[...Xp,...Kp];function Zp(){let $=new Map;for(let[U,_]of Object.entries(e4)){for(let[G,J]of Object.entries(_))e4[G]={open:`\x1B[${J[0]}m`,close:`\x1B[${J[1]}m`},_[G]=e4[G],$.set(J[0],J[1]);Object.defineProperty(e4,U,{value:_,enumerable:!1})}return Object.defineProperty(e4,"codes",{value:$,enumerable:!1}),e4.color.close="\x1B[39m",e4.bgColor.close="\x1B[49m",e4.color.ansi=UR(),e4.color.ansi256=_R(),e4.color.ansi16m=JR(),e4.bgColor.ansi=UR(10),e4.bgColor.ansi256=_R(10),e4.bgColor.ansi16m=JR(10),Object.defineProperties(e4,{rgbToAnsi256:{value(U,_,G){if(U===_&&_===G){if(U<8)return 16;if(U>248)return 231;return Math.round((U-8)/247*24)+232}return 16+36*Math.round(U/255*5)+6*Math.round(_/255*5)+Math.round(G/255*5)},enumerable:!1},hexToRgb:{value(U){let _=/[a-f\d]{6}|[a-f\d]{3}/i.exec(U.toString(16));if(!_)return[0,0,0];let[G]=_;if(G.length===3)G=[...G].map((Q)=>Q+Q).join("");let J=Number.parseInt(G,16);return[J>>16&255,J>>8&255,J&255]},enumerable:!1},hexToAnsi256:{value:(U)=>e4.rgbToAnsi256(...e4.hexToRgb(U)),enumerable:!1},ansi256ToAnsi:{value(U){if(U<8)return 30+U;if(U<16)return 90+(U-8);let _,G,J;if(U>=232)_=((U-232)*10+8)/255,G=_,J=_;else{U-=16;let V=U%36;_=Math.floor(U/36)/5,G=Math.floor(V/6)/5,J=V%6/5}let Q=Math.max(_,G,J)*2;if(Q===0)return 30;let Y=30+(Math.round(J)<<2|Math.round(G)<<1|Math.round(_));if(Q===2)Y+=60;return Y},enumerable:!1},rgbToAnsi:{value:(U,_,G)=>e4.ansi256ToAnsi(e4.rgbToAnsi256(U,_,G)),enumerable:!1},hexToAnsi:{value:(U)=>e4.ansi256ToAnsi(e4.hexToAnsi256(U)),enumerable:!1}}),e4}var Wp=Zp(),L6=Wp;function $U($){return $.replace(/\r\n/g,`
790
790
  `).replace(/\r/g,`
@@ -817,7 +817,7 @@ assistant: Clients are marked as failed in the \`connectToServer\` function in s
817
817
  `)}),B=mJ(()=>0);function q(O){if(O.preventDefault(),O.stopPropagation(),O.key==="Escape")U("close"),G.invalidate()}let E=T1(()=>({rect:W.value?{x:0,y:0,w:_.snapshot().cols,h:_.snapshot().rows}:{x:0,y:0,w:0,h:0},zIndex:Z.value,visible:W.value,focusable:!0,handlers:{click:(O)=>{O.preventDefault(),O.stopPropagation(),U("close"),G.invalidate()},keydown:q}})),P=T1(()=>({rect:W.value?N.value:{x:0,y:0,w:0,h:0},zIndex:Z.value+1,visible:W.value,focusable:!0,handlers:{click:(O)=>{O.preventDefault(),O.stopPropagation();let L=Q.value,T=P.id.value;if(L&&T)L.focus(T)},keydown:q}}));return Ea(()=>{if(!W.value)return;let O=Q.value,L=P.id.value||E.id.value;if(!O||!L)return;O.focus(L)}),S1(()=>({zIndex:$.zIndex,rect:W.value?{x:0,y:0,w:_.snapshot().cols,h:_.snapshot().rows}:{x:0,y:0,w:0,h:0},deps:[W.value,N.value,$.content,$.title,$.style,J.value],paint:()=>{if(!W.value)return;let O=_.snapshot(),L=$.style??J.value,T={...L,bg:"black",dim:!0};for(let j$=0;j$<O.rows;j$++)_.write(" ".repeat(O.cols),{x:0,y:j$,style:T});let D=N.value,j=L.fg??J.value.fg??"whiteBright",w=L.bg??J.value.bg??"black",f={...L,fg:"white"},k={...L,fg:j,bg:w},A={...L,dim:!0};_.put(D.x,D.y,G2.tl,f),_.put(D.x+D.w-1,D.y,G2.tr,f),_.put(D.x,D.y+D.h-1,G2.bl,f),_.put(D.x+D.w-1,D.y+D.h-1,G2.br,f);let R=Math.max(0,D.w-2),M=` ${b6($.title)} `,S=Math.min(M.length,R),I=D.x+1;_.write(M.slice(0,S),{x:I,y:D.y,style:f});let z=R-S;if(z>0)_.write(G2.h.repeat(z),{x:I+S,y:D.y,style:f});let C=" Press ESC to close ",b=Math.min(C.length,R),y=D.x+Math.floor((D.w-b)/2),g=y-D.x-1,n=R-g-b;if(g>0)_.write(G2.h.repeat(g),{x:D.x+1,y:D.y+D.h-1,style:f});if(_.write(C,{x:y,y:D.y+D.h-1,style:A}),n>0)_.write(G2.h.repeat(n),{x:y+b,y:D.y+D.h-1,style:f});for(let j$=1;j$<D.h-1;j$++)_.put(D.x,D.y+j$,G2.v,f),_.put(D.x+D.w-1,D.y+j$,G2.v,f);let $$=Math.max(0,D.h-2),B$=H.value,o$=B.value;for(let j$=0;j$<$$;j$++){let N$=o$+j$,m=B$[N$]??"",o=J6(m,R),d=o+" ".repeat(Math.max(0,R-o.length));_.write(d,{x:D.x+1,y:D.y+1+j$,style:k})}}})),()=>Da("span",X)}});import{computed as BG,defineComponent as Ma,h as Yz,inject as Pa,ref as ZQ,watch as fa,watchEffect as La}from"vue";function cJ($,U,_){return Math.max(U,Math.min(_,$))}function Vz($){return Boolean($.ctrlKey||$.metaKey)}var WQ=Ma({name:"TPathPicker",props:{x:{type:Number,required:!0},y:{type:Number,required:!0},w:{type:Number,required:!0},h:{type:Number,required:!0},zIndex:{type:Number,default:0},workspace:{type:String,required:!0},mode:{type:String,default:"any"},modelValue:{type:String,required:!0},placeholder:{type:String,default:""},style:{type:Object,default:void 0},autoFocus:{type:Boolean,default:!1},showHidden:{type:Boolean,default:!1},maxSuggestions:{type:Number,default:50},provider:{type:Object,default:void 0}},emits:["update:modelValue","select","invalid","keydown","focus","blur"],setup($,{emit:U}){let{terminal:_,scheduler:G,defaultStyle:J}=P4(),Q=s4(),{visible:Y,rootProps:V}=s6(),X=Pa(k1,BG(()=>0)),K=BG(()=>(X.value??0)+($.zIndex??0)),Z=BG(()=>$.provider??$_()),W=ZQ([]),N=ZQ(0),H=ZQ(0),B=ZQ(null),q=1,E=BG(()=>Math.max(0,Math.floor($.h)-1)),P=BG(()=>{let M={x:$.x,y:$.y+1,w:$.w,h:E.value},S=$1(M,Q.originX,Q.originY);if(!Q.clipRect)return S;return B1(S,Q.clipRect)??{x:0,y:0,w:0,h:0}});function O(){let M=Math.max(0,E.value);if(M<=0){H.value=0;return}let S=Math.max(0,W.value.length-M);if(H.value=cJ(H.value,0,S),N.value<H.value)H.value=N.value;else if(N.value>=H.value+M)H.value=cJ(N.value-(M-1),0,S)}fa([()=>N.value,()=>W.value.length,()=>E.value],()=>{O()});async function L(){let M=Math.max(0,Math.floor($.maxSuggestions)),S=await YG({workspaceAbs:$.workspace,input:$.modelValue,mode:$.mode,max:M,showHidden:$.showHidden,listDir:Z.value.listDir});W.value=S.suggestions,N.value=cJ(N.value,0,Math.max(0,W.value.length-1)),O(),G.invalidate()}let T=0;La(()=>{if(!Y.value)return;$.workspace,$.mode,$.showHidden,$.modelValue,E.value,B.value=null;let M=++T;L().catch((S)=>{if(M!==T)return;W.value=[],B.value=S instanceof Error?S.message:String(S),G.invalidate()})});function D(M){let S=M.replace(/\r/g,"").replace(/\n/g," ");U("update:modelValue",S)}function j(M){let S=W.value.length;if(S<=0)return;let I=cJ(N.value+M,0,S-1);if(I!==N.value)N.value=I,O(),G.invalidate()}function w(){let M=W.value[N.value];if(!M)return;D(M.completion)}async function f(M){let S=await Z.value.stat(M);if(!S.exists){B.value="Not found",U("invalid",{reason:"not_found",absPath:M}),G.invalidate();return}if($.mode==="file"&&S.kind==="directory"){let I=u1(M),z=u1($.workspace),C=I===z?"":I.startsWith(`${z}/`)?I.slice(z.length+1):I;D(C?`${C}/`:""),B.value=null,G.invalidate();return}if($.mode==="file"&&S.kind!=="file"){B.value="Not a file",U("invalid",{reason:"not_file",absPath:M}),G.invalidate();return}if($.mode==="directory"&&S.kind!=="directory"){B.value="Not a directory",U("invalid",{reason:"not_directory",absPath:M}),G.invalidate();return}U("select",NR(M))}async function k(){let M=_2($.workspace,$.modelValue),S=await Z.value.stat(M);if(S.exists){if($.mode==="file"&&S.kind==="directory"){let z=$.modelValue.replace(/\r/g,"").replace(/\\/g,"/"),C=z.endsWith("/")?z:`${z}/`;D(C),B.value=null,G.invalidate();return}await f(M);return}let I=W.value[N.value];if(I){if($.mode==="file"&&I.kind==="directory"){D(I.completion),B.value=null,G.invalidate();return}await f(I.absPath);return}B.value="Not found",U("invalid",{reason:"not_found",absPath:M}),G.invalidate()}function A(M){if(U("keydown",M),M.key==="Tab"){M.preventDefault(),w();return}if(M.key==="ArrowUp"){M.preventDefault(),j(-1);return}if(M.key==="ArrowDown"){M.preventDefault(),j(1);return}if(Vz(M)&&(M.key==="p"||M.key==="P")){M.preventDefault(),j(-1);return}if(Vz(M)&&(M.key==="n"||M.key==="N"))M.preventDefault(),j(1)}let R=Gz();return T1(()=>({rect:P.value,zIndex:K.value,visible:Y.value,focusable:!1,handlers:{click:(M)=>{let S=P.value,I=H.value+(M.cellY-S.y);if(I>=0&&I<W.value.length)N.value=I,O(),G.invalidate()},dblclick:async(M)=>{let S=P.value,I=H.value+(M.cellY-S.y),z=W.value[I];if(!z)return;if($.mode==="file"&&z.kind==="directory"){D(z.completion),B.value=null,G.invalidate();return}await f(z.absPath)},wheel:(M)=>{let S=M.deltaY??0;if(!S)return;let I=Math.max(0,E.value),z=Math.max(0,W.value.length-I),{nextTop:C,dir:b}=Qz(R,S,H.value,z);if(!b||C===H.value)return;H.value=C;let y=C,g=C+I-1;if(N.value<y||N.value>g){let n=b>0?g:y;N.value=cJ(n,0,Math.max(0,W.value.length-1))}G.invalidate()}}})),S1(()=>({zIndex:$.zIndex,rect:Y.value?P.value:{x:0,y:0,w:0,h:0},deps:[Y.value,P.value,$.w,E.value,$.style,J.value,W.value,N.value,H.value,B.value],paint:()=>{if(!Y.value)return;let M=P.value;if(M.w<=0||M.h<=0)return;let S=$.style??J.value,I=cJ(H.value,0,Math.max(0,W.value.length-M.h));for(let z=0;z<M.h;z++){let C=I+z,b=W.value[C],y=b?b6(b.display):"",g=I1(J6(y,M.w),M.w),n=C===N.value?{...S,inverse:!0}:S;_.write(g,{x:M.x,y:M.y+z,style:n})}if(W.value.length===0&&M.h>0){let z=B.value?`(${b6(B.value)})`:"(no matches)";_.write(I1(J6(z,M.w),M.w),{x:M.x,y:M.y,style:{...S,dim:!0}})}}})),()=>Yz("span",V,[Yz(R6,{x:$.x,y:$.y,w:$.w,h:1,zIndex:$.zIndex,modelValue:$.modelValue,"onUpdate:modelValue":(M)=>D(M),cursorToEndOnExternalUpdate:!0,placeholder:$.placeholder,style:$.style,autoFocus:$.autoFocus,onKeydown:(M)=>A(M),onChange:()=>void k(),onFocus:()=>U("focus"),onBlur:()=>U("blur")})])}});import{computed as IH,defineComponent as wa,h as Aa,inject as Ra,ref as Xz,watchEffect as Kz}from"vue";function Q2($,U,_){return Math.max(U,Math.min(_,$))}var O1=wa({name:"TSelect",props:{x:{type:Number,required:!0},y:{type:Number,required:!0},w:{type:Number,required:!0},h:{type:Number,required:!0},zIndex:{type:Number,default:0},options:{type:Array,required:!0},modelValue:{type:[Number,Array],default:0},multiple:{type:Boolean,default:!1},multipleEmit:{type:String,default:"value"},style:{type:Object,default:void 0},highlightStyle:{type:Object,default:void 0},autoFocus:{type:Boolean,default:!1},closeOnBlur:{type:Boolean,default:!1}},emits:["update:modelValue","change","confirm","close","focus","blur","keydown"],setup($,{emit:U}){let{terminal:_,scheduler:G,defaultStyle:J,events:Q}=P4(),Y=s4(),{visible:V,rootProps:X}=s6(),K=Ra(k1,IH(()=>0)),Z=IH(()=>(K.value??0)+($.zIndex??0)),W=Xz(!1),N=(()=>{let A=Math.max(0,$.options.length-1);if(!$.multiple){let S=typeof $.modelValue==="number"?$.modelValue:0;return Q2(S,0,A)}let M=(Array.isArray($.modelValue)?$.modelValue:[])[0]??0;return Q2(M,0,A)})(),H=Xz(N),B=IH(()=>{let A={x:$.x,y:$.y,w:$.w,h:$.h},R=$1(A,Y.originX,Y.originY);if(!Y.clipRect)return R;return B1(R,Y.clipRect)??{x:0,y:0,w:0,h:0}});Kz(()=>{let A=Math.max(0,$.options.length-1);if(!$.multiple){let R=typeof $.modelValue==="number"?$.modelValue:0;H.value=Q2(R,0,A);return}H.value=Q2(H.value,0,A)});function q(A){return typeof A==="string"?A:A.label}function E(A){return typeof A==="string"?void 0:A.detail}function P(A){let R=Q2(A,0,Math.max(0,$.options.length-1));H.value=R,U("update:modelValue",R);let M=$.options[R];U("change",M?q(M):null)}function O(){if(!$.multiple)return[];let A=Math.max(0,$.options.length-1),R=Array.isArray($.modelValue)?$.modelValue:[],M=new Set;for(let S of R){if(typeof S!=="number"||!Number.isFinite(S))continue;M.add(Q2(Math.trunc(S),0,A))}return[...M].sort((S,I)=>S-I)}function L(A){let R=A.map((M)=>$.options[M]).filter(Boolean).map((M)=>q(M));return{indices:A,values:R}}function T(A,R){let M=L(R);if($.multipleEmit==="index"){U(A,M.indices);return}if($.multipleEmit==="both"){U(A,M);return}U(A,M.values)}function D(A){let R=Q2(A,0,Math.max(0,$.options.length-1));H.value=R;let M=new Set(O());if(M.has(R))M.delete(R);else M.add(R);let S=[...M].sort((I,z)=>I-z);U("update:modelValue",S),T("change",S)}function j(){let A=O();T("confirm",A)}function w(A){if($.multiple)D(A);else P(A)}function f(A){if(U("keydown",A),A.defaultPrevented)return;if(A.key==="ArrowUp"){if(A.preventDefault(),H.value=Q2(H.value-1,0,Math.max(0,$.options.length-1)),!$.multiple)U("update:modelValue",H.value);G.invalidate();return}if(A.key==="ArrowDown"){if(A.preventDefault(),H.value=Q2(H.value+1,0,Math.max(0,$.options.length-1)),!$.multiple)U("update:modelValue",H.value);G.invalidate();return}if($.multiple&&(A.code==="Space"||A.key===" "||A.key==="Spacebar")){A.preventDefault(),D(H.value);return}if(A.key==="Enter"){if($.multiple){A.preventDefault(),j();return}w(H.value);return}if(A.key==="Escape")A.preventDefault(),U("close")}let{id:k}=T1(()=>({rect:B.value,zIndex:Z.value,visible:V.value,focusable:!0,handlers:{click:(A)=>{let R=B.value,M=A.cellY-R.y;if(M>=0&&M<$.options.length)w(M);else U("close")},focus:()=>{W.value=!0,U("focus"),G.invalidate()},blur:()=>{if(W.value=!1,U("blur"),$.closeOnBlur)U("close");G.invalidate()},keydown:f}}));return Kz(()=>{if(!$.autoFocus)return;if(!V.value)return;let A=Q.value,R=k.value;if(!A||!R)return;if(A.getFocused()===R)return;A.focus(R)}),S1(()=>({zIndex:$.zIndex,rect:V.value?B.value:{x:0,y:0,w:0,h:0},deps:[V.value,B.value,$.w,$.h,$.options,$.modelValue,$.multiple,$.multipleEmit,$.style,$.highlightStyle,W.value,H.value,J.value],paint:(A)=>{if(!V.value)return;let R=B.value;if(R.w<=0||R.h<=0)return;let M=$.style??J.value,S=$.highlightStyle??{...M,bg:"yellow",fg:"black"},I={...M,dim:!0},z={...S,dim:!0},C=$.multiple?new Set(O()):null,b=(y)=>{if(!A)return!0;let g=Math.floor(R.y+y);return A.includes(g)};for(let y=0;y<R.h;y++){if(!b(y))continue;let g=$.options[y];if(!g){_.write(" ".repeat(R.w),{x:R.x,y:R.y+y,style:M});continue}let n=y===H.value,$$=$.multiple?C.has(y):n,B$=$.multiple?W.value&&n:n,o$=$.multiple?$$?"[x] ":"[ ] ":"",j$=b6(q(g)),N$=E(g),m=N$?b6(N$):"",o=`${o$}${j$}`,d=y$(o),l=1,i=Math.max(0,R.w-d-l);if(m&&i>=4){let u=B$?S:M;_.write(o,{x:R.x,y:R.y+y,style:u});let J$=J6(m,i),Z$=y$(J$),E$=Math.max(0,R.w-d-Z$),H$=B$?S:M;_.write(" ".repeat(E$),{x:R.x+d,y:R.y+y,style:H$});let r$=B$?z:I;_.write(J$,{x:R.x+d+E$,y:R.y+y,style:r$})}else{let u=I1(J6(o,R.w),R.w),J$=B$?S:M;_.write(u,{x:R.x,y:R.y+y,style:J$})}}}})),()=>Aa("span",X)}});import{computed as za,inject as Zz}from"vue";var dJ=Symbol("TerminalRouter"),NQ=Symbol("TerminalRoute");function lJ(){let $=Zz(dJ,null);if(!$)throw Error("TerminalRouter is missing");return $}function FQ(){let $=Zz(NQ,null);if(!$)throw Error("TerminalRoute is missing");return za(()=>$.value)}import{ref as ka}from"vue";function Wz($,U){let _=typeof $==="string"?{name:$}:$,G=U.get(_.name);return{name:_.name,params:_.params,meta:G?.meta}}function HG($){return typeof $==="string"||typeof $==="object"&&$!=null&&"name"in $}function BQ($){let U=new Map($.routes.map((W)=>[W.name,W])),_=ka(Wz($.initialRoute,U)),G=[_.value],J=0,Q=[],Y=[],V=[];async function X(W,N,H){for(let B of W){let q=await B(N,H);if(q===!1)return!1;if(HG(q))return q}return!0}async function K(W,N){let H=_.value,B=Wz(W,U),q=U.get(H.name)??null,E=U.get(B.name)??null,P=await X(Q,B,H);if(P===!1)return;if(HG(P))return K(P,N);let O=await X(Y,B,H);if(O===!1)return;if(HG(O))return K(O,N);if(q?.onLeave)await q.onLeave(B,H);if(_.value=B,N==="replace")G[J]=B;else if(N==="push")G.splice(J+1),G.push(B),J=G.length-1;if(E?.onEnter)await E.onEnter(B,H);for(let L of V)L(B,H)}let Z={currentRoute:_,async push(W){await K(W,"push")},async replace(W){await K(W,"replace")},async back(){if(J<=0)return;let W=_.value,N=G[J-1],H=U.get(W.name)??null,B=U.get(N.name)??null,q=await X(Q,N,W);if(q===!1)return;if(HG(q))return K(q,"push");let E=await X(Y,N,W);if(E===!1)return;if(HG(E))return K(E,"push");if(H?.onLeave)await H.onLeave(N,W);if(J-=1,_.value=N,B?.onEnter)await B.onEnter(N,W);for(let P of V)P(N,W)},beforeEach(W){return Q.push(W),()=>{let N=Q.indexOf(W);if(N>=0)Q.splice(N,1)}},beforeResolve(W){return Y.push(W),()=>{let N=Y.indexOf(W);if(N>=0)Y.splice(N,1)}},afterEach(W){return V.push(W),()=>{let N=V.indexOf(W);if(N>=0)V.splice(N,1)}},install(W){W.provide(dJ,Z),W.provide(NQ,_)}};return Z}function Nz($,U){let _=$.currentRoute.value;return U.find((J)=>J.name===_.name)?.component??null}import{computed as Ta,defineComponent as Sa,h as Ia,inject as va,ref as Ca,watch as ya}from"vue";var HQ=Sa({name:"TRouterView",props:{routes:{type:Array,required:!0},forceRemount:{type:Boolean,default:!0}},setup($){let U=va(dJ,null);if(!U)throw Error("TerminalRouter is missing (did you forget to app.use(router)?)");let _=Ca(0);ya(()=>U.currentRoute.value,()=>{if($.forceRemount)_.value++},{deep:!0});let G=Ta(()=>Nz(U,$.routes));return()=>{let J=G.value;return J?Ia(J,{key:$.forceRemount?_.value:void 0}):null}}});var vH=null,OQ=null;function Fz($){vH=$}function Bz($){return OQ=$,()=>{if(OQ===$)OQ=null}}function OG(){let $=OQ;if($&&$.isBusy()){$.showConfirm();return}vH?.()}function Hz(){vH?.()}function CH(){return typeof performance<"u"?performance.now():Date.now()}async function yH($){await new Promise((U)=>setTimeout(U,$))}var Oz=null;function YU($){if(Oz?.GOATCHAIN_DEBUG==="1")try{let U=new Date().toISOString().split("T")[1].slice(0,-1);ba.appendFileSync("/tmp/goatchain-debug.log",`[${U}] [GHOSTTY-KEEPALIVE] ${$}
818
818
  `)}catch{}}function xa($){let U=EH({cols:$.cols,rows:$.rows,component:$.component,props:$.props,defaultStyle:$.defaultStyle});return $.install?.(U.app),U.mount(),{app:U.app,terminal:U.terminal,events:U.events,scheduler:U.scheduler,getImeAnchor:U.getImeAnchor,dispose:U.dispose}}async function ga($,U,_){let G=null;for(let J of _){let Q=typeof J?.time==="number"?J.time:null;if(Q!=null&&G!=null){let Y=Math.max(0,Q-G);await yH(Math.min(Y,5000))}if(Q!=null)G=Q;$.dispatch(J),await qQ(),U.flush()}}async function qz($){Oz=$.proc.env,YU("runTerminalUi() called");let U=xa({cols:$.cols,rows:$.rows,component:$.component,props:$.props,install:$.install,defaultStyle:$.defaultStyle}),_=GQ(U.terminal,{output:$.proc.stdout,altScreen:$.altScreen,palette:$.palette,trackResize:!$.sizeLocked,hideCursor:!0,defaultBg:$.defaultBg,getImeAnchor:U.getImeAnchor}),G=[],J=CH(),Q=(Z)=>{let W=Z.time==null?{...Z,time:CH()-J}:Z;return G.push(W),U.events.dispatch(W)};U.scheduler.flush();let Y=null,V="GHOSTTY_RESOURCES_DIR"in($.proc.env??{});YU(`BEFORE exit setup - Ghostty detection: ${V}`);let X=null;if(Fz(()=>{(async()=>{if(X)clearInterval(X),X=null;if(Y?.dispose(),_.dispose(),$.recordPath)await ZH($.recordPath,G);if($.snapshotPath)await p3($.snapshotPath,U.terminal.snapshot().lines);U.dispose(),$.proc.exit(0)})()}),$.proc.on("exit",()=>{if(X)clearInterval(X),X=null;Y?.dispose(),_.dispose(),U.dispose()}),$.proc.on("beforeExit",()=>{if(X)clearInterval(X),X=null;Y?.dispose(),_.dispose(),U.dispose()}),$.proc.on("SIGTSTP",()=>{if(X)clearInterval(X),X=null;Y?.dispose(),_.dispose(),$.proc.kill($.proc.pid,"SIGTSTP")}),$.proc.on("SIGCONT",()=>{if(!Y&&!$.replayPath){if(Y=n3({dispatch:Q,enableMouse:$.enableMouse,onExit:()=>OG()}),V&&!X){let Z=!1,W=U.scheduler.invalidate;U.scheduler.invalidate=()=>{Z=!0,W()},X=setInterval(()=>{if(Z)U.scheduler.flush(),Z=!1},100)}}U.scheduler.invalidate(),U.scheduler.flush()}),$.replayPath){await qQ(),await qQ(),U.scheduler.flush();let Z=await WH($.replayPath);if(await ga(U.events,U.scheduler,Z),await yH(800),await qQ(),U.scheduler.flush(),$.snapshotPath)await p3($.snapshotPath,U.terminal.snapshot().lines);_.dispose(),U.dispose();return}if(Y=n3({dispatch:Q,enableMouse:$.enableMouse,onExit:()=>OG()}),V){YU("Starting keep-alive interval (100ms)");let Z=!1,W=U.scheduler.invalidate;U.scheduler.invalidate=()=>{Z=!0,W()},X=setInterval(()=>{if(Z)YU("Keep-alive tick - has pending work, calling flush()"),U.scheduler.flush(),Z=!1,YU("Keep-alive tick - flush() returned")},100),YU("Keep-alive interval created successfully")}if($.proc.on("SIGINT",()=>OG()),$.proc.on("SIGTERM",()=>OG()),V)YU("Entering ghostty keep-alive loop (waiting forever)"),await new Promise(()=>{}),YU("Keep-alive loop exited (this should never happen)")}var SQ=L4(VT(),1);import{spawn as Ss}from"node:child_process";import{existsSync as Is,readFileSync as vs}from"node:fs";import tH from"node:path";import{fileURLToPath as Cs}from"node:url";var IQ="goatchain-cli",ys="upgrade-toast.json",bs="upgrade-check.log",KT=process.env.GOATCHAIN_DEBUG_LOG||"./goatchain-debug.log",xs=`https://registry.npmjs.org/${IQ}`,gs=5000;async function us(){try{let $=new AbortController,U=setTimeout(()=>$.abort(),gs),_=await fetch(xs,{signal:$.signal,headers:{Accept:"application/json"}});if(clearTimeout(U),!_.ok)throw Error(`npm registry returned ${_.status}`);let J=(await _.json())["dist-tags"]?.latest;if(!J||typeof J!=="string")throw Error("No latest version found in registry response");return J}catch($){if($ instanceof Error&&$.name==="AbortError")throw Error("npm registry request timed out");throw $}}async function ZT(){if(await J1("start",{disableAutoUpdate:process.env.GOATCHAIN_DISABLE_AUTOUPDATE==="1",autoUpdate:process.env.GOATCHAIN_AUTOUPDATE!=="0",cwd:ds(),argv:ls(),debugLogPath:KT}),process.env.GOATCHAIN_DISABLE_AUTOUPDATE==="1")return await J1("skip-disabled"),null;let $=is();if(!$?.version)return await J1("skip-missing-version"),null;let U=$.version,_=$.source==="injected";try{let G=await us();if(await J1("check-result",{current:U,latest:G,hasInjectedVersion:_}),!G)return await J1("error",{message:"Failed to fetch latest version"}),null;if(SQ.default.valid(U)&&SQ.default.valid(G)){if(SQ.default.gte(U,G))return await J1("no-update",{current:U,latest:G}),null;if(process.env.GOATCHAIN_AUTOUPDATE!=="0"&&_)return await J1("update-available",{current:U,latest:G,autoUpdate:!0}),hs(G),`Update available: ${IQ}@${G} (current: ${U}). Installing in background. Restart terminal after it finishes.`;return await J1("update-available",{current:U,latest:G,autoUpdate:!1}),`Update available: ${IQ}@${G} (current: ${U})`}if(U===G)return await J1("no-update",{current:U,latest:G}),null;return await J1("update-available",{current:U,latest:G,autoUpdate:!1}),`Update available: ${IQ}@${G} (current: ${U})`}catch(G){return await J1("error",{message:G instanceof Error?G.message:String(G)}),null}}function hs($){try{J1("autoupdate-start",{version:$});let U=Ss("npm",["install","-g",`goatchain-cli@${$}`],{stdio:"ignore",detached:!0});U.unref();let _=!1,G=(J)=>{if(_)return;_=!0,J1("autoupdate-finish",{version:$,message:J}),XT(J)};U.on("close",(J)=>{if(J===0)G(`Update installed: goatchain-cli@${$}. Restart terminal to use the new version.`);else G("Auto-update failed. Run: npm install -g goatchain-cli")}),U.on("error",()=>{J1("autoupdate-error",{version:$,reason:"process-error"}),G("Auto-update failed. Run: npm install -g goatchain-cli")})}catch{J1("autoupdate-error",{version:$,reason:"spawn-throw"}),XT("Auto-update failed. Run: npm install -g goatchain-cli")}}function XT($){let U=globalThis?.__GOATCHAIN_UPGRADE_TOAST__;if(typeof U==="function")try{U($);return}catch{}ms($)}async function ms($){try{let{getGoatChainUserDir:U}=await Promise.resolve().then(() => m3),[{mkdir:_,writeFile:G},J]=await Promise.all([import("node:fs/promises"),import("node:path")]),Q=await U(process.env);await _(Q,{recursive:!0});let Y=J.join(Q,ys),V=JSON.stringify({message:$,createdAt:Date.now()});await G(Y,V,"utf8")}catch{}}async function J1($,U){try{let{getGoatChainUserDir:_}=await Promise.resolve().then(() => m3),[{mkdir:G,appendFile:J},Q]=await Promise.all([import("node:fs/promises"),import("node:path")]),Y=await _(process.env);await G(Y,{recursive:!0});let V=Q.join(Y,bs),X={ts:new Date().toISOString(),event:$,...U};await J(V,`${JSON.stringify(X)}
819
819
  `,{encoding:"utf8",mode:384}),await cs(X)}catch{}}async function cs($){try{let{appendFile:U}=await import("node:fs/promises"),G=`[${String($.ts??new Date().toISOString())}] upgrade_check ${JSON.stringify($)}
820
- `;await U(KT,G,{encoding:"utf8"})}catch{}}function ds(){try{return process.cwd()}catch{return}}function ls(){try{return process.argv}catch{return}}function is(){let $="0.0.4-beta.34".trim();if($)return{version:$,source:"injected"};let U=rs();if(U)return{version:U,source:"package"};return null}function rs(){try{let $=tH.dirname(Cs(import.meta.url));for(let U=0;U<6;U++){let _=tH.join($,"package.json");if(Is(_)){let J=vs(_,"utf8"),Q=JSON.parse(J),Y=typeof Q?.version==="string"?Q.version.trim():"";if(Y)return Y}let G=tH.dirname($);if(G===$)break;$=G}}catch{}return null}import{computed as G1,defineComponent as Q4$,h as X_,inject as Y4$,nextTick as V4$,provide as X4$,ref as K2,watch as sJ}from"vue";var G_=Symbol("GoatChainBridge");var WT=["user","assistant","tool"];var NT=["status","thinking","markdown","tool_call","tool_output","tool_result","approve","todo","plan"];var rJ=[...WT,...NT];var vQ=["black","red","green","yellow","blue","magenta","cyan","white","blackBright","redBright","greenBright","yellowBright","blueBright","magentaBright","cyanBright","whiteBright"];function eH($,U){let _={};for(let G of rJ)_[G]={fg:$,bg:U};return _}var FT=Object.freeze({goatchain:{...eH("white","black"),user:{fg:"whiteBright",bg:"blackBright"},assistant:{fg:"white",bg:"black"},tool:{fg:"white",bg:"black"},markdown:{fg:"white",bg:"black"},status:{fg:"white",bg:"black"},thinking:{fg:"cyanBright",bg:"black"},tool_call:{fg:"white",bg:"black"},tool_output:{fg:"white",bg:"black"},tool_result:{fg:"white",bg:"black"},approve:{fg:"white",bg:"black"},todo:{fg:"whiteBright",bg:"black"},plan:{fg:"whiteBright",bg:"black"}},mono:{...eH("white","black"),user:{fg:"white",bg:"black"},assistant:{fg:"white",bg:"black"},tool:{fg:"white",bg:"black"},thinking:{fg:"white",bg:"black"}},contrast:{...eH("whiteBright","black"),user:{fg:"whiteBright",bg:"blackBright"},assistant:{fg:"whiteBright",bg:"black"},tool:{fg:"whiteBright",bg:"black"},thinking:{fg:"blueBright",bg:"black"},tool_call:{fg:"yellowBright",bg:"black"},tool_output:{fg:"cyanBright",bg:"black"},tool_result:{fg:"cyanBright",bg:"black"},todo:{fg:"greenBright",bg:"black"},plan:{fg:"magentaBright",bg:"black"}}});function R0($,U){let _=FT[$.preset]??FT.goatchain,G=_[U]??_.assistant??{fg:"white",bg:"black"},J=$.overrides?.[U]??{};return{...G,...J}}import sH from"node:fs";function ns($){let _="";for(let G=0;G<$.length;G++){if($[G]!=="\x1B"||$[G+1]!=="["){_+=$[G];continue}let J=G+2;while(J<$.length){let Q=$.charCodeAt(J);if(Q>=48&&Q<=57||Q===59){J++;continue}break}if(J<$.length&&$[J]==="m"){G=J;continue}_+=$[G]}return _}function BT($){$=ns($);let U="";for(let _ of $){let G=_.codePointAt(0);if(G<=31&&G!==10&&G!==9||G===127||G>=128&&G<=159)continue;U+=_}return U}function nJ($){let U=0;for(let _ of $)U+=z4(_);return U}function CQ($,U){if(U=Math.max(0,Math.floor(U)),U<=0)return{chunk:"",rest:$};let _=0,G=0;for(;G<$.length;){let J=$.codePointAt(G)??0,Q=String.fromCodePoint(J),Y=z4(Q);if(_+Y>U)break;if(_+=Y,G+=Q.length,_>=U)break}return{chunk:$.slice(0,G),rest:$.slice(G)}}function yQ($,U){return CQ($,U).chunk}function HT($,U){U=Math.max(0,Math.floor(U));let _=nJ($);if(_>=U)return yQ($,U);return`${$}${" ".repeat(U-_)}`}function OT($,U){if(U=Math.max(1,Math.floor(U)),!$)return[""];let _=[],G=$;while(!0){let{chunk:J,rest:Q}=CQ(G,U);if(_.push(J),!Q)break;G=Q}return _}var Q_=new Map,ps=100,os=60000;function as($,U){let _=0,G=`${$}|${U}`;for(let J=0;J<G.length;J++){let Q=G.charCodeAt(J);_=(_<<5)-_+Q,_=_&_}return _.toString(36)}function ts(){let $=Date.now();for(let[U,_]of Q_.entries())if($-_.timestamp>os)Q_.delete(U)}if(typeof setInterval<"u")setInterval(ts,1e4);function bQ($){let U=(X)=>{try{if(globalThis.process?.env?.GOATCHAIN_DEBUG==="1"){let Z=new Date().toISOString().split("T")[1].slice(0,-1);sH.appendFileSync("/tmp/goatchain-debug.log",`[${Z}] [PARSE-INLINE] ${X}
820
+ `;await U(KT,G,{encoding:"utf8"})}catch{}}function ds(){try{return process.cwd()}catch{return}}function ls(){try{return process.argv}catch{return}}function is(){let $="0.0.4-beta.35".trim();if($)return{version:$,source:"injected"};let U=rs();if(U)return{version:U,source:"package"};return null}function rs(){try{let $=tH.dirname(Cs(import.meta.url));for(let U=0;U<6;U++){let _=tH.join($,"package.json");if(Is(_)){let J=vs(_,"utf8"),Q=JSON.parse(J),Y=typeof Q?.version==="string"?Q.version.trim():"";if(Y)return Y}let G=tH.dirname($);if(G===$)break;$=G}}catch{}return null}import{computed as G1,defineComponent as Q4$,h as X_,inject as Y4$,nextTick as V4$,provide as X4$,ref as K2,watch as sJ}from"vue";var G_=Symbol("GoatChainBridge");var WT=["user","assistant","tool"];var NT=["status","thinking","markdown","tool_call","tool_output","tool_result","approve","todo","plan"];var rJ=[...WT,...NT];var vQ=["black","red","green","yellow","blue","magenta","cyan","white","blackBright","redBright","greenBright","yellowBright","blueBright","magentaBright","cyanBright","whiteBright"];function eH($,U){let _={};for(let G of rJ)_[G]={fg:$,bg:U};return _}var FT=Object.freeze({goatchain:{...eH("white","black"),user:{fg:"whiteBright",bg:"blackBright"},assistant:{fg:"white",bg:"black"},tool:{fg:"white",bg:"black"},markdown:{fg:"white",bg:"black"},status:{fg:"white",bg:"black"},thinking:{fg:"cyanBright",bg:"black"},tool_call:{fg:"white",bg:"black"},tool_output:{fg:"white",bg:"black"},tool_result:{fg:"white",bg:"black"},approve:{fg:"white",bg:"black"},todo:{fg:"whiteBright",bg:"black"},plan:{fg:"whiteBright",bg:"black"}},mono:{...eH("white","black"),user:{fg:"white",bg:"black"},assistant:{fg:"white",bg:"black"},tool:{fg:"white",bg:"black"},thinking:{fg:"white",bg:"black"}},contrast:{...eH("whiteBright","black"),user:{fg:"whiteBright",bg:"blackBright"},assistant:{fg:"whiteBright",bg:"black"},tool:{fg:"whiteBright",bg:"black"},thinking:{fg:"blueBright",bg:"black"},tool_call:{fg:"yellowBright",bg:"black"},tool_output:{fg:"cyanBright",bg:"black"},tool_result:{fg:"cyanBright",bg:"black"},todo:{fg:"greenBright",bg:"black"},plan:{fg:"magentaBright",bg:"black"}}});function R0($,U){let _=FT[$.preset]??FT.goatchain,G=_[U]??_.assistant??{fg:"white",bg:"black"},J=$.overrides?.[U]??{};return{...G,...J}}import sH from"node:fs";function ns($){let _="";for(let G=0;G<$.length;G++){if($[G]!=="\x1B"||$[G+1]!=="["){_+=$[G];continue}let J=G+2;while(J<$.length){let Q=$.charCodeAt(J);if(Q>=48&&Q<=57||Q===59){J++;continue}break}if(J<$.length&&$[J]==="m"){G=J;continue}_+=$[G]}return _}function BT($){$=ns($);let U="";for(let _ of $){let G=_.codePointAt(0);if(G<=31&&G!==10&&G!==9||G===127||G>=128&&G<=159)continue;U+=_}return U}function nJ($){let U=0;for(let _ of $)U+=z4(_);return U}function CQ($,U){if(U=Math.max(0,Math.floor(U)),U<=0)return{chunk:"",rest:$};let _=0,G=0;for(;G<$.length;){let J=$.codePointAt(G)??0,Q=String.fromCodePoint(J),Y=z4(Q);if(_+Y>U)break;if(_+=Y,G+=Q.length,_>=U)break}return{chunk:$.slice(0,G),rest:$.slice(G)}}function yQ($,U){return CQ($,U).chunk}function HT($,U){U=Math.max(0,Math.floor(U));let _=nJ($);if(_>=U)return yQ($,U);return`${$}${" ".repeat(U-_)}`}function OT($,U){if(U=Math.max(1,Math.floor(U)),!$)return[""];let _=[],G=$;while(!0){let{chunk:J,rest:Q}=CQ(G,U);if(_.push(J),!Q)break;G=Q}return _}var Q_=new Map,ps=100,os=60000;function as($,U){let _=0,G=`${$}|${U}`;for(let J=0;J<G.length;J++){let Q=G.charCodeAt(J);_=(_<<5)-_+Q,_=_&_}return _.toString(36)}function ts(){let $=Date.now();for(let[U,_]of Q_.entries())if($-_.timestamp>os)Q_.delete(U)}if(typeof setInterval<"u")setInterval(ts,1e4);function bQ($){let U=(X)=>{try{if(globalThis.process?.env?.GOATCHAIN_DEBUG==="1"){let Z=new Date().toISOString().split("T")[1].slice(0,-1);sH.appendFileSync("/tmp/goatchain-debug.log",`[${Z}] [PARSE-INLINE] ${X}
821
821
  `)}}catch{}},_=[],G="",J=0;U(`START: text length=${$.length}`);function Q(){if(!G)return;_.push({kind:"text",text:G}),G=""}let Y=0,V=$.length*10+1000;while(J<$.length){if(Y++,Y>V){U(`ERROR: Infinite loop detected! i=${J}, text.length=${$.length}, iterations=${Y}`);break}if(Y%100===0)U(` Progress: i=${J}/${$.length}, iterations=${Y}`);let X=$[J];if(X==="`"){let K=$.indexOf("`",J+1);if(K>J+1){Q(),_.push({kind:"code",text:$.slice(J+1,K)}),J=K+1;continue}}if(X==="*"&&$[J+1]==="*"){let K=$.indexOf("**",J+2);if(K>J+2){Q(),_.push({kind:"bold",text:$.slice(J+2,K)}),J=K+2;continue}}G+=X,J++}return Q(),U(`END: ${_.length} spans, iterations=${Y}`),_}function xQ($,U){let _=(W)=>{try{if(globalThis.process?.env?.GOATCHAIN_DEBUG==="1"){let H=new Date().toISOString().split("T")[1].slice(0,-1);sH.appendFileSync("/tmp/goatchain-debug.log",`[${H}] [WRAP-SPANS] ${W}
822
822
  `)}}catch{}};if(U<=0)return[[{kind:"text",text:""}]];_(`START: spans=${$.length}, width=${U}`);function G(W){let N=[],H=/\s+/g,B=0;for(let q=H.exec(W.text);q;q=H.exec(W.text)){if(q.index>B)N.push({kind:W.kind,text:W.text.slice(B,q.index)});N.push({kind:W.kind,text:q[0]}),B=q.index+q[0].length}if(B<W.text.length)N.push({kind:W.kind,text:W.text.slice(B)});return N}let J=[],Q=[],Y=0;function V(W){if(!W.text)return 0;if(/^\s+$/.test(W.text))return W.text.length;return nJ(W.text)}function X(W){let N=Q[Q.length-1];if(N&&N.kind===W.kind){N.text+=W.text;return}Q.push({...W})}function K(){J.push(Q),Q=[],Y=0}let Z=0;for(let W of $){Z++;let N=G(W),H=0;for(let B of N){if(H++,!B.text)continue;if(/^\s+$/.test(B.text)&&Y===0)continue;let q=V(B);if(q<=U-Y){X(B),Y+=q;continue}if(!/^\s+$/.test(B.text)&&Y>0&&q<=U){K(),X(B),Y+=q;continue}let E=B.text,P=0,O=B.text.length*10+100;while(E){if(P++,P>O){_(`ERROR: Infinite loop in chunking! span=${Z}, token=${H}, iterations=${P}, remaining="${E.slice(0,50)}", col=${Y}, width=${U}`);break}let L=U-Y;if(L<=0){K();continue}if(/^\s+$/.test(E)){K(),E="";continue}let T=CQ(E,L),D=T.chunk;if(E=T.rest,X({kind:B.kind,text:D}),Y+=nJ(D),Y>=U)K()}}}if(Q.length===0)return J.length?J:[[{kind:"text",text:""}]];return J.push(Q),_(`END: ${J.length} lines`),J}function qT($,U){let _=(L)=>{try{if(globalThis.process?.env?.GOATCHAIN_DEBUG==="1"){let D=new Date().toISOString().split("T")[1].slice(0,-1);sH.appendFileSync("/tmp/goatchain-debug.log",`[${D}] [MARKDOWN-PARSE] ${L}
823
823
  `)}}catch{}},G=Date.now();_(`START: markdown length=${$.length}, width=${U}`);let J=as($,U),Q=Q_.get(J);if(Q)return _(`CACHE HIT: returning ${Q.lines.length} cached lines`),Q.timestamp=Date.now(),Q.lines;_("CACHE MISS: parsing markdown");let Y=BT($).split(`
@@ -846,7 +846,7 @@ assistant: Clients are marked as failed in the \`connectToServer\` function in s
846
846
  `);if(q.push(k0(s,{x:0,y:E,w:W,h:w,value:A,style:{fg:"white",dim:!0,bg:"black"}})),W>0&&w>0){if(k>0)q.push(k0(s,{x:W-1,y:E,w:1,value:"↑",style:{fg:"whiteBright",dim:!0,bg:"black"}}));if(k+w<L.length)q.push(k0(s,{x:W-1,y:E+w-1,w:1,value:"↓",style:{fg:"whiteBright",dim:!0,bg:"black"}}))}E+=w}if(Z&&E<B){if(Z.description&&E<B){let P=Math.max(1,B-E),O=aJ(2,1,P);q.push(k0(s,{x:0,y:E,w:W,h:O,wrap:!0,value:`Description: ${G0(Z.description)}`,style:{fg:"white",dim:!0,bg:"blackBright"}})),E+=O}if(Z.command&&E<B){if(q.push(k0(s,{x:0,y:E,w:W,value:"Command:",style:{fg:"yellowBright",bg:"blackBright",bold:!0}})),E+=1,E<B){let P=Math.max(1,B-E),O=aJ(3,1,P);q.push(k0(s,{x:0,y:E,w:W,h:O,wrap:!0,value:G0(Z.command),style:{fg:"whiteBright",bg:"blackBright"}})),E+=O}}}return q})}}});import{computed as O$$,defineComponent as q$$,h as i1,ref as kG,watch as iT}from"vue";function mQ($,U,_){return Math.max(U,Math.min(_,$))}var rT=q$$({name:"GoatChainAskUserDialog",props:{modelValue:{type:Boolean,required:!0},toolCallId:{type:String,required:!0},questions:{type:Array,required:!0},w:{type:Number,required:!0},h:{type:Number,required:!0}},emits:{"update:modelValue":($)=>!0,submit:($)=>!0,cancel:()=>!0},setup($,{emit:U}){let _=kG(0),G=kG(0),J=kG({}),Q=kG({}),Y=kG({});iT(()=>[$.toolCallId,$.questions.length],()=>{_.value=0,G.value=0;let Z={},W={},N={};for(let H=0;H<$.questions.length;H++){let B=String(H);Z[B]=0,W[B]=[],N[B]=""}J.value=Z,Q.value=W,Y.value=N},{immediate:!0});let V=O$$(()=>{let Z={};for(let W=0;W<$.questions.length;W++){let N=String(W),H=$.questions[W],E=[...(H.options||[]).map((P)=>P.label),"Other"];if(H.multiSelect){let P=Q.value[N]??[],O=P.map((j)=>E[j]).filter((j)=>Boolean(j)&&j!=="Other"),L=Y.value[N]?.trim(),T=E.length-1;if(P.includes(T)&&L)O.push(L);Z[N]=O.length>0?O:[]}else{let P=J.value[N]??0,O=E[P]??"";if(O==="Other")Z[N]=Y.value[N]||"";else Z[N]=O}}return Z});function X(){U("submit",{...V.value}),U("update:modelValue",!1)}function K(){U("cancel"),U("update:modelValue",!1)}return iT(()=>$.modelValue,(Z,W)=>{if(!Z||W)return;G.value=1},{immediate:!0}),()=>{if(!$.modelValue)return null;let Z=Math.max(0,$.w-4),W=Math.max(0,$.h-5),N={fg:"whiteBright",bg:"black"},H={fg:"whiteBright",bold:!0},B={fg:"white",dim:!0},q=mQ(_.value,0,Math.max(0,$.questions.length-1)),E=$.questions[q],P=E?.multiSelect??!1,O=String(q);if(!E)return i1(m4,{modelValue:$.modelValue,"onUpdate:modelValue":(R)=>U("update:modelValue",R),w:$.w,h:$.h,title:"No Questions",placement:"center",padding:1,style:{fg:"cyanBright",bg:"black"},buttons:[{label:"Close",value:"close",kind:"primary",default:!0}],onConfirm:()=>K(),onClose:()=>K()},()=>[i1(s,{x:0,y:0,w:Z,value:"No questions to answer.",style:B})]);let L=E.options||[],T=L.map((R)=>({label:R.label,detail:R.description}));T.push({label:"Other",detail:"Provide a custom answer"});let j=[...L.map((R)=>R.label),"Other"],w=q>=$.questions.length-1,f=q<=0,k=[{label:"Prev",value:"prev"},w?{label:"Submit",value:"submit",kind:"primary",default:!0}:{label:"Next",value:"next",kind:"primary",default:!0},{label:"Cancel",value:"cancel"}],A=(R)=>{if(R==="submit")X();else if(R==="next")_.value=Math.min(_.value+1,$.questions.length-1);else if(R==="prev"){if(!f)_.value=Math.max(_.value-1,0)}else K()};return i1(m4,{modelValue:$.modelValue,"onUpdate:modelValue":(R)=>U("update:modelValue",R),onKeydownCapture:(R)=>{if(R?.key==="Escape")R.preventDefault?.(),R.stopPropagation?.(),K()},w:$.w,h:$.h,title:`Question ${q+1}/${$.questions.length}: ${E.header||"Question"}`,placement:"center",backdrop:!1,padding:1,style:{fg:"cyanBright",bg:"black"},buttons:k,closeOnConfirm:!1,onKeydown:(R)=>{if(R?.key==="Enter"&&R.defaultPrevented){R.preventDefault?.(),R.stopPropagation?.();let M=mQ(G.value,0,Math.max(0,k.length-1)),S=k[M];A(String(S?.value??""))}if((R?.key==="ArrowLeft"||R?.key==="ArrowRight")&&!R.defaultPrevented){let M=R.key==="ArrowLeft"?-1:1;G.value=mQ(G.value+M,0,Math.max(0,k.length-1))}},onConfirm:(R)=>{if(typeof R?.index==="number")G.value=mQ(R.index,0,Math.max(0,k.length-1));A(String(R?.value??""))},onClose:()=>K()},()=>{let R=0,M=[];if(M.push(i1(s,{x:0,y:R++,w:Z,wrap:!0,value:E.question||"",style:H})),R++,P){M.push(i1(s,{x:0,y:R++,w:Z,value:"[Multi-select] Space to toggle, Enter to confirm",style:{fg:"yellow"}})),R++;let S=Q.value[O]??[],I=j.length-1,z=S.includes(I),C=Math.min(j.length,Math.max(3,W-R-2));if(C>0&&R<W-2){if(M.push(i1(O1,{x:0,y:R,w:Z,h:C,multiple:!0,options:T,modelValue:S,"onUpdate:modelValue":(b)=>{if(!Array.isArray(b))return;Q.value={...Q.value,[O]:b}},autoFocus:!0,style:N,highlightStyle:{fg:"whiteBright",bg:"blueBright",bold:!0}})),R+=C+1,z&&R<W-1)M.push(i1(s,{x:0,y:R++,w:Z,value:"Custom answer:",style:B})),M.push(i1(R6,{x:0,y:R,w:Z,modelValue:Y.value[O]||"","onUpdate:modelValue":(b)=>{Y.value={...Y.value,[O]:b}},placeholder:"Type your answer...",style:{fg:"whiteBright",bg:"blackBright"}}))}}else{M.push(i1(s,{x:0,y:R++,w:Z,value:"[Single-select] Use arrows, Enter to confirm",style:{fg:"yellow"}})),R++;let S=J.value[O]??0,I=S===j.length-1,z=Math.min(j.length,Math.max(3,W-R-2));if(M.push(i1(O1,{x:0,y:R,w:Z,h:z,options:T,modelValue:S,"onUpdate:modelValue":(C)=>{J.value={...J.value,[O]:C}},autoFocus:!0,style:N,highlightStyle:{fg:"whiteBright",bg:"blueBright",bold:!0}})),R+=z+1,I&&R<W-1)M.push(i1(s,{x:0,y:R++,w:Z,value:"Custom answer:",style:B})),M.push(i1(R6,{x:0,y:R,w:Z,modelValue:Y.value[O]||"","onUpdate:modelValue":(C)=>{Y.value={...Y.value,[O]:C}},placeholder:"Type your answer...",style:{fg:"whiteBright",bg:"blackBright"}}))}return M})}}});function D$$($,U){let _=String(U??"").trim();if(!_)return null;for(let G of $.store.state.messages){if(G.role!=="assistant")continue;for(let J of G.parts)if(J.type==="tool_call"&&J.call.id===_)return J.call}return null}function pT($){return[$.showApproval.value&&$.activeApproval.value?nT(lT,{modelValue:$.showApproval.value,"onUpdate:modelValue":(U)=>$.showApproval.value=U,request:$.activeApproval.value,call:D$$($,$.activeApproval.value.toolCallId),w:$.approvalW.value,h:$.approvalH.value,onApprove:()=>void $.store.approve(),onAlwaysApprove:()=>{$.applyToolApprovals("all"),$.store.approve()},onDeny:()=>void $.store.deny()}):null,$.showAskUser.value&&$.activeAskUser.value?nT(rT,{modelValue:$.showAskUser.value,"onUpdate:modelValue":(U)=>$.showAskUser.value=U,toolCallId:String($.activeAskUser.value.toolCallId??""),questions:$.activeAskUser.value.questions??[],w:$.askUserW.value,h:$.askUserH.value,onSubmit:(U)=>void $.store.submitAskUserAnswers(U),onCancel:()=>$.store.cancelAskUser()}):null]}import{h as P$$}from"vue";import{computed as cQ,defineComponent as j$$,ref as E$$,watch as M$$}from"vue";function oT($,U){let _=$.toLowerCase(),G=U.toLowerCase().trim();if(!G)return 0;if(_===G)return 1e4;if(_.startsWith(G))return 5000-_.length;let J=_.indexOf(G);if(J>=0)return 2000-J;let Q=0,Y=0,V=0;for(let X=0;X<_.length&&Q<G.length;X++)if(_[X]===G[Q])Q++,V++,Y+=10+V*5;else V=0;if(Q<G.length)return null;return Y}function V2($,U,_){return Math.max(U,Math.min(_,$))}function aT($,U){let _=U.trim(),G=[];for(let J=0;J<$.length;J++){let Q=$[J],Y=(Q.keywords??[]).filter(Boolean).join(" "),V=`${Q.label} ${Q.detail??""} ${Y}`.trim(),X=oT(V,_);if(X==null)continue;G.push({idx:J,opt:Q,score:X})}return G.sort((J,Q)=>Q.score-J.score||J.idx-Q.idx),G}function tT($,U){let _=$.findIndex((G)=>G.idx===U);return _>=0?_:0}import{h as Q0}from"vue";function eT($){if(!$.modelValue)return null;let U=Math.max(0,Math.floor($.cols)),_=Math.max(0,Math.floor($.rows)),G=U<=0?0:V2(Math.floor(U*0.78),Math.min(44,U),U),J=_<=0?0:V2(12,10,Math.max(10,Math.min(18,_))),Q=Math.max(0,Math.floor(($.cols-G)/2)),Y=V2(Math.floor($.rows*0.25),1,Math.max(1,$.rows-J-1)),V=Math.max(0,G-2),X=Math.max(0,J-2),K=Math.max(0,V-2),Z=Math.max(0,X-2),W=$.filtered,N=1,H=2,B=Math.max(H,Z-1),q=Math.max(H,B-2),E=V2(W.length,1,Math.max(1,q-H)),P=Math.max(1,E),O=Math.max(0,W.length-P),L=V2($.selectedFilteredIndex-Math.floor(P/2),0,O),T=W.slice(L,L+P),D=W[$.selectedFilteredIndex]?.opt,j=D?.detail?String(D.detail):"",w=j?h1(j,Math.max(1,K)).slice(0,2):[],f=()=>{$.onUpdateModelValue(!1),$.onClose()},k=(R)=>{if(!W.length)return;let M=V2($.selectedFilteredIndex+R,0,W.length-1),S=W[M]?.idx;if(S!=null)$.onUpdateSelectedIndex(S)},A=()=>{let R=W[$.selectedFilteredIndex];$.onSelect(R?.opt?.label??null)};return Q0(c4,{x:0,y:0,w:$.cols,h:$.rows,zIndex:100,focusable:!0,onClick:f,onKeydownCapture:(R)=>{if(R?.key==="Escape")R?.preventDefault?.(),R?.stopPropagation?.(),f()}},()=>Q0(v1,{x:Q,y:Y,w:G,h:J,border:!0,title:$.title,padding:1,style:{fg:"blueBright",bg:"black"},zIndex:110},()=>[Q0(s,{x:0,y:0,w:K,h:Z,value:"",style:{bg:"black"}}),Q0(R6,{x:0,y:0,w:K,modelValue:$.query,"onUpdate:modelValue":(R)=>$.setQuery(R),placeholder:"Search…",placeholderWhenFocused:!0,autoFocus:!0,style:{fg:"whiteBright",bg:"blackBright"},onKeydown:(R)=>{if(R?.key==="ArrowDown")R.preventDefault?.(),k(1);else if(R?.key==="ArrowUp")R.preventDefault?.(),k(-1);else if(R?.key==="Enter")R.preventDefault?.(),A()}}),K>0?Q0(s,{x:0,y:N,w:K,value:"─".repeat(K),style:{fg:"white",dim:!0,bg:"black"}}):null,W.length?Q0(O1,{x:0,y:H,w:K,h:E,options:T.map((R)=>({label:R.opt.label})),modelValue:V2($.selectedFilteredIndex-L,0,Math.max(0,T.length-1)),"onUpdate:modelValue":(R)=>{let M=T[V2(R,0,Math.max(0,T.length-1))];if(M)$.onUpdateSelectedIndex(M.idx)},style:{fg:"whiteBright",bg:"blackBright"},highlightStyle:{fg:"black",bg:"blueBright",bold:!0},autoFocus:!1,closeOnBlur:!1,onChange:(R)=>$.onSelect(R),onClose:f}):Q0(s,{x:0,y:H,w:K,h:E,value:"No matches",style:{fg:"white",dim:!0,bg:"blackBright"}}),w.length?w.map((R,M)=>Q0(s,{key:`detail-${M}`,x:0,y:q+M,w:K,value:R,style:{fg:"white",dim:!0,bg:"black"}})):Q0(s,{x:0,y:q,w:K,h:2,value:"",style:{bg:"black"}}),Q0(s,{x:0,y:B,w:K,value:"Type to filter • Enter: open • Esc: close",style:{fg:"white",dim:!0,bg:"black"}}),K>0?Q0(s,{x:Math.max(0,K-1),y:B,w:1,value:" ",style:{bg:"black"}}):null]))}var dQ=j$$({name:"GoatChainCommandPalette",props:{modelValue:{type:Boolean,required:!0},title:{type:String,default:"Commands"},initialQuery:{type:String,default:""},options:{type:Array,required:!0},selectedIndex:{type:Number,required:!0}},emits:{"update:modelValue":($)=>!0,"update:selectedIndex":($)=>!0,select:($)=>!0,close:()=>!0},setup($,{emit:U}){let _=s4(),G=cQ(()=>_.clipRect?.w??0),J=cQ(()=>_.clipRect?.h??0),Q=E$$("");M$$(()=>[$.modelValue,$.initialQuery],([K])=>{if(K)Q.value=String($.initialQuery??"")});function Y(){U("close")}let V=cQ(()=>aT($.options,Q.value)),X=cQ(()=>tT(V.value,$.selectedIndex));return()=>{return eT({modelValue:$.modelValue,title:$.title,cols:G.value,rows:J.value,query:Q.value,setQuery:(K)=>Q.value=K,filtered:V.value,selectedFilteredIndex:X.value,onUpdateModelValue:(K)=>U("update:modelValue",K),onUpdateSelectedIndex:(K)=>U("update:selectedIndex",K),onSelect:(K)=>U("select",K),onClose:Y})}}});function sT($){return[P$$(dQ,{modelValue:$.showCommands.value,"onUpdate:modelValue":(U)=>$.showCommands.value=U,title:"Commands",options:$.commandOptions.value,selectedIndex:$.commandIndex.value,"onUpdate:selectedIndex":(U)=>$.commandIndex.value=U,onSelect:(U)=>$.onCommandSelect(U),onClose:$.closeCommandPalette})]}import{h as L$$}from"vue";import{defineComponent as f$$,h as WO}from"vue";var $S=f$$({name:"GoatChainExitSessionDialog",props:{modelValue:{type:Boolean,required:!0}},emits:{"update:modelValue":($)=>!0,exit:()=>!0},setup($,{emit:U}){return()=>{if(!$.modelValue)return null;return WO(m4,{modelValue:$.modelValue,"onUpdate:modelValue":(_)=>U("update:modelValue",_),onKeydownCapture:(_)=>{if(_?.key==="Escape"){_.preventDefault?.(),_.stopPropagation?.(),U("update:modelValue",!1);return}if(typeof _?.key==="string"&&_.key.length===1&&!_.ctrlKey&&!_.metaKey&&!_.altKey)_.preventDefault?.(),_.stopPropagation?.()},w:54,h:10,title:"Exit Session",placement:"center",backdrop:!1,padding:1,style:{fg:"yellowBright",bg:"black"},buttons:[{label:"Cancel",value:"cancel"},{label:"Exit",value:"exit",kind:"primary",default:!0}],onConfirm:(_)=>{if(_?.value==="exit")U("exit");U("update:modelValue",!1)},onClose:()=>U("update:modelValue",!1)},()=>[WO(s,{x:0,y:0,w:50,wrap:!0,value:"Exit the current session and return to Home?",style:{fg:"whiteBright",bg:"black"}}),WO(s,{x:0,y:2,w:50,wrap:!0,value:"Next message will start a new session.",style:{fg:"white",dim:!0,bg:"black"}})])}}});function US($){return[L$$($S,{modelValue:$.showExitConfirm.value,"onUpdate:modelValue":(U)=>$.showExitConfirm.value=U,onExit:async()=>{$.showExitConfirm.value=!1,await $.exitSessionToHome()}})]}import{h as Y_}from"vue";import{defineComponent as w$$,h as lQ}from"vue";var _S=w$$({name:"GoatChainMessageActionsDialog",props:{modelValue:{type:Boolean,required:!0},selectedIndex:{type:Number,required:!0}},emits:{"update:modelValue":($)=>!0,"update:selectedIndex":($)=>!0,action:($)=>!0},setup($,{emit:U}){let _=["Revert undo messages and file changes","Copy message text to clipboard","Fork create a new session"];function G(Y){return Y===0?"revert":Y===1?"copy":"fork"}function J(){U("update:modelValue",!1),U("update:selectedIndex",0)}function Q(Y){if(Y.defaultPrevented)return;if(Y.key==="ArrowUp")Y.preventDefault?.(),Y.stopPropagation?.(),U("update:selectedIndex",Math.max(0,$.selectedIndex-1));else if(Y.key==="ArrowDown")Y.preventDefault?.(),Y.stopPropagation?.(),U("update:selectedIndex",Math.min(2,$.selectedIndex+1));else if(Y.key==="Enter")Y.preventDefault?.(),Y.stopPropagation?.(),U("action",G($.selectedIndex));else if(Y.key==="Escape")Y.preventDefault?.(),Y.stopPropagation?.(),J()}return()=>{if(!$.modelValue)return null;return lQ(m4,{modelValue:$.modelValue,"onUpdate:modelValue":(Y)=>{if(U("update:modelValue",Y),!Y)U("update:selectedIndex",0)},onKeydownCapture:(Y)=>{if(typeof Y?.key==="string"&&Y.key.length===1&&!Y.ctrlKey&&!Y.metaKey&&!Y.altKey)Y.preventDefault?.(),Y.stopPropagation?.()},w:48,h:7,title:"Message Actions",placement:"center",backdrop:!1,padding:1,style:{fg:"blueBright",bg:"black"},onClose:J},()=>lQ(c4,{x:0,y:0,w:44,h:3,focusable:!0,autoFocus:!0,onKeydownCapture:Q},()=>_.flatMap((Y,V)=>{let X=$.selectedIndex===V,K=X?{fg:"white",bg:"black",bold:!0}:{fg:"whiteBright",dim:!0,bg:"black"},Z=X?"▸ ":" ";return[lQ(s,{key:`action-t-${V}`,x:0,y:V,w:44,value:`${Z}${Y}`,style:K}),lQ(c4,{key:`action-v-${V}`,x:0,y:V,w:44,h:1,onClick:(W)=>{W?.stopPropagation?.(),U("update:selectedIndex",V),U("action",G(V))}})]})))}}});import{defineComponent as A$$,h as JS}from"vue";var GS=A$$({name:"GoatChainRedoConfirmDialog",props:{modelValue:{type:Boolean,required:!0}},emits:{"update:modelValue":($)=>!0,confirm:()=>!0,cancel:()=>!0},setup($,{emit:U}){function _(){U("update:modelValue",!1),U("cancel")}return()=>{if(!$.modelValue)return null;return JS(m4,{modelValue:$.modelValue,"onUpdate:modelValue":(G)=>U("update:modelValue",G),onKeydownCapture:(G)=>{if(typeof G?.key==="string"&&G.key.length===1&&!G.ctrlKey&&!G.metaKey&&!G.altKey)G.preventDefault?.(),G.stopPropagation?.()},w:52,h:8,title:"Confirm Redo",placement:"center",backdrop:!1,padding:1,style:{fg:"whiteBright",bg:"black"},buttons:[{label:"Cancel",value:"cancel"},{label:"Confirm",value:"confirm",kind:"primary",default:!0}],onConfirm:(G)=>{if(G?.value==="confirm")U("confirm"),U("update:modelValue",!1);else _()},onClose:_},()=>[JS(s,{x:0,y:1,w:48,value:"Are you sure you want to restore the reverted messages?",style:{fg:"white"}})])}}});function QS($){let U=[];if($.store.hasRevertedMessages.value){let J=$.mainY+$.mainH.value,Q=Math.max(0,$.mainW.value-4),Y=Array.from({length:2},()=>"┃").join(`
847
847
  `),V=4,X=Math.max(0,Q-3);U.push(Y_(s,{key:"revert-banner-bg",x:2,y:J,w:Q,h:2,value:"",style:{bg:"black"},zIndex:50}),Y_(s,{key:"revert-banner-bar",x:2,y:J,w:1,h:2,value:Y,style:{fg:"blueBright",bg:"black"},zIndex:51}),Y_(s,{key:"revert-banner-text",x:4,y:J,w:X,value:`${$.store.revertedMessageCount.value} message${$.store.revertedMessageCount.value>1?"s":""} reverted`,style:{fg:"yellowBright",bg:"black"},zIndex:52}),Y_(s,{key:"revert-banner-hint",x:4,y:J+1,w:X,value:"click or ctrl+r or /redo to restore",style:{fg:"white",dim:!0,bg:"black",bold:!0},zIndex:52}),Y_(c4,{key:"revert-banner-hit",x:2,y:J,w:Q,h:2,zIndex:60,focusable:!0,onClick:()=>{$.confirmRestore(),$.focusBrowserTextarea()}}))}return U.push(Y_(_S,{modelValue:$.showMessageActions.value,"onUpdate:modelValue":(_)=>{if($.showMessageActions.value=_,!_)$.messageActionsTargetId.value=null,$.messageActionsIndex.value=0},selectedIndex:$.messageActionsIndex.value,"onUpdate:selectedIndex":(_)=>$.messageActionsIndex.value=_,onAction:(_)=>{if(_==="revert")$.handleRevertMessage();else if(_==="copy")$.handleCopyMessage();else $.handleForkSession()}}),Y_(GS,{modelValue:$.showRedoConfirm.value,"onUpdate:modelValue":(_)=>$.showRedoConfirm.value=_,onConfirm:$.confirmRestore,onCancel:$.cancelRestore})),U}import{h as k$$}from"vue";import{defineComponent as R$$,h as NO,watch as z$$}from"vue";var iQ=R$$({name:"GoatChainPathPickerDialog",props:{modelValue:{type:Boolean,required:!0},w:{type:Number,required:!0},h:{type:Number,required:!0},title:{type:String,required:!0},workspace:{type:String,required:!0},mode:{type:String,required:!0},query:{type:String,required:!0},placeholder:{type:String,required:!0}},emits:{"update:modelValue":($)=>!0,"update:query":($)=>!0,invalid:($)=>!0,select:($)=>!0,close:()=>!0},setup($,{emit:U}){let _=$_(),G=!1;function J(){G=!1}function Q(V){let X=V?.key;if(X==="ArrowUp"||X==="ArrowDown"){G=!0;return}if((V?.ctrlKey||V?.metaKey)&&!V?.altKey&&(X==="p"||X==="P"||X==="n"||X==="N"))G=!0}let Y={listDir:_.listDir,stat:async(V)=>{if(G){let X=_2($.workspace,$.query);if(V===X)return G=!1,{exists:!1,kind:"other"}}return _.stat(V)}};return z$$(()=>$.modelValue,(V)=>{if(!V)J()}),()=>{if(!$.modelValue)return null;let V=Math.max(0,$.w-2),X=Math.max(0,$.h-2);return NO(m4,{modelValue:$.modelValue,"onUpdate:modelValue":(K)=>U("update:modelValue",K),w:$.w,h:$.h,title:$.title,placement:"center",backdrop:!1,padding:1,style:{fg:"blueBright",bg:"black"},onClose:()=>{J(),U("update:modelValue",!1),U("close")}},()=>[NO(s,{x:0,y:0,w:V,value:"↑/↓ select • Tab complete • Enter confirm • Esc close",style:{fg:"white",dim:!0}}),NO(WQ,{x:0,y:2,w:V,h:Math.max(0,X-3),workspace:$.workspace,mode:$.mode,provider:Y,modelValue:$.query,"onUpdate:modelValue":(K)=>{J(),U("update:query",K)},placeholder:$.placeholder,autoFocus:!0,style:{fg:"whiteBright",bg:"blackBright"},onKeydown:(K)=>{if(Q(K),K?.key!=="Escape")return;K?.preventDefault?.(),J(),U("update:modelValue",!1),U("close")},onInvalid:(K)=>{J(),U("invalid",String(K?.reason??"invalid"))},onSelect:(K)=>{J(),U("select",K)}})])}}});function YS($){return[k$$(iQ,{modelValue:$.showPathPicker.value,"onUpdate:modelValue":(U)=>$.showPathPicker.value=U,w:$.pickerW.value,h:$.pickerH.value,title:$.pathPickerTitle.value,workspace:$.pickerWorkspace.value,mode:$.pathPickerMode.value,query:$.pathPickerQuery.value,"onUpdate:query":(U)=>$.pathPickerQuery.value=U,placeholder:$.pathPickerPlaceholder.value,onInvalid:(U)=>$.pathPickerError.value=U,onSelect:(U)=>{if($.pathPickerError.value=null,$.showPathPicker.value=!1,$.pathPickerQuery.value="",$.pathPickerMode.value==="directory")$.setContextCwd(U);else $.input.value=`${U} `},onClose:()=>{$.showPathPicker.value=!1,$.pathPickerQuery.value="",$.pathPickerError.value=null}})]}import{h as ZS}from"vue";import{defineComponent as S$$,ref as I$$,watch as v$$}from"vue";function X2($,U,_){return Math.max(U,Math.min(_,$))}function VS($){if(!Number.isFinite($))return"";try{let U=new Date($),_=(Z)=>String(Z).padStart(2,"0"),G=U.getFullYear(),J=_(U.getMonth()+1),Q=_(U.getDate()),Y=_(U.getHours()),V=_(U.getMinutes());return G!==new Date().getFullYear()?`${G}-${J}-${Q} ${Y}:${V}`:`${J}-${Q} ${Y}:${V}`}catch{return""}}function FO($,U){U=Math.max(0,Math.floor(U));let _=String($??"").replace(/\s+/g," ").trim();if(!_||U<=0)return"";if(y$(_)<=U)return _;if(U<=1)return J6(_,U);return`${J6(_,U-1)}…`}function T$$($){let U=String($??"").trim();if(!U)return"";let _=U.split("-").filter(Boolean).at(-1)??U;return _.length>10?_.slice(-10):_}function XS($){let U=Math.floor($.w??78),_=Math.floor($.h??20),G=Math.max(0,U-4),J=Math.max(0,_-4),Q=Math.max(0,J-1),Y=2,V=1,X=Array.isArray($.sessions)?$.sessions:[],K=X.length,Z=X2(K,1,Math.max(1,Q-2-1)),W=X2($.selectedIndex,0,Math.max(0,K-1)),N=Math.max(0,...X.map((S)=>y$(VS(S.updatedAt)))),H=1,B=Math.max(0,G-1-N),q=2,E=Math.min(10,Math.max(6,Math.floor(B*0.18))),P=10,O=Math.max(0,B-E-4-10),L=X2(Math.floor(B*0.34),14,Math.max(14,O)),T=Math.max(0,B-E-4-L),D=Math.max(1,Z),j=Math.max(0,K-D),w=X2(W-Math.floor(D/2),0,j),k=X.slice(w,w+D).map((S)=>{let I=I1(FO(T$$(S.id),E),E),z=S.summary||S.title||"New session",C=I1(FO(z,L),L),b=T>0?FO(S.lastMessage||"",T):"";return{label:b?`${I}${" ".repeat(2)}${C}${" ".repeat(2)}${b}`:`${I}${" ".repeat(2)}${C}`,detail:VS(S.updatedAt)}}),A=X2(W-w,0,Math.max(0,k.length-1)),R=`Sessions (${K})`,M=$.loading?"Loading…":$.deleteArmed?"Confirm delete: press Delete again":K?`${K} sessions • Arrow keys to navigate • Enter selects${K>D?` • Showing ${w+1}-${Math.min(K,w+D)}`:""}`:"No saved sessions yet";return{w:U,h:_,innerW:G,listY:2,listH:Z,offset:w,windowSize:D,totalSessions:K,selectedIndex:W,selectedOptionIndex:A,title:R,headerText:M,options:k}}import{h as BO}from"vue";function KS($){if(!$.modelValue)return null;return BO(m4,{modelValue:$.modelValue,"onUpdate:modelValue":(U)=>$.onUpdateModelValue(U),onKeydownCapture:(U)=>$.onKeydownCapture(U),w:$.vm.w,h:$.vm.h,title:$.vm.title,placement:"center",backdrop:!1,padding:1,style:{fg:"blueBright",bg:"black"},closeOnConfirm:!1,buttons:[{label:"Open",value:"open",kind:"primary",default:!$.deleteArmed},{label:"New",value:"new"},{label:$.deleteArmed?"Delete (confirm)":"Delete",value:"delete",kind:"danger",default:$.deleteArmed},{label:"Refresh",value:"refresh"},{label:"Close",value:"close"}],onConfirm:(U)=>$.onConfirm(U),onClose:()=>$.onClose()},()=>[BO(s,{x:0,y:0,w:$.vm.innerW,value:$.vm.headerText,style:{fg:"white",dim:!0,bg:"black"}}),BO(O1,{x:0,y:$.vm.listY,w:$.vm.innerW,h:$.vm.listH,options:$.vm.options,modelValue:$.vm.selectedOptionIndex,"onUpdate:modelValue":(U)=>{let _=X2($.vm.offset+U,0,Math.max(0,$.vm.totalSessions-1));$.onUpdateSelectedIndex(_)},onKeydownCapture:$.onKeydownCapture,onChange:(U)=>{if(!U)return;$.onOpen()},autoFocus:!0,style:{fg:"whiteBright",bg:"blackBright"},highlightStyle:{fg:"whiteBright",bg:"blueBright",bold:!0},zIndex:1002})])}var rQ=S$$({name:"GoatChainSessionsDialog",props:{modelValue:{type:Boolean,required:!0},loading:{type:Boolean,default:!1},deleteArmed:{type:Boolean,default:!1},sessions:{type:Array,required:!0},selectedIndex:{type:Number,required:!0}},emits:{"update:modelValue":($)=>!0,"update:selectedIndex":($)=>!0,open:()=>!0,new:()=>!0,delete:()=>!0,refresh:()=>!0},setup($,{emit:U}){let _=["open","new","delete","refresh","close"],G=I$$(0),J="__goatchainSessionsDialogHandled";function Q(){return $.deleteArmed?_.indexOf("delete"):_.indexOf("open")}function Y(K){let Z=_.length-1;G.value=X2(G.value+K,0,Z)}function V(){let K=_[G.value]??"open";if(K==="open")U("open");else if(K==="new")U("new");else if(K==="delete")U("delete");else if(K==="refresh")U("refresh");else U("update:modelValue",!1)}function X(K){if(!$.modelValue)return;if(!K||typeof K!=="object")return;if(K.__goatchainSessionsDialogHandled)return;if(K.key==="ArrowLeft"||K.key==="ArrowRight"){K.__goatchainSessionsDialogHandled=!0;let Z=K.key==="ArrowLeft"?-1:1;Y(Z);return}if(K.key==="Enter")K.__goatchainSessionsDialogHandled=!0,K.preventDefault?.(),K.stopPropagation?.(),V()}return v$$(()=>$.modelValue,(K,Z)=>{if(K&&!Z)G.value=Q()},{immediate:!0}),()=>{let K=XS({modelValue:$.modelValue,loading:$.loading,deleteArmed:$.deleteArmed,sessions:$.sessions,selectedIndex:$.selectedIndex});return KS({modelValue:$.modelValue,deleteArmed:$.deleteArmed,vm:K,onUpdateModelValue:(Z)=>U("update:modelValue",Z),onUpdateSelectedIndex:(Z)=>U("update:selectedIndex",Z),onOpen:()=>U("open"),onNew:()=>U("new"),onDelete:()=>U("delete"),onRefresh:()=>U("refresh"),onKeydownCapture:(Z)=>{if(Z?.key==="Escape"){Z.preventDefault?.(),Z.stopPropagation?.(),U("update:modelValue",!1);return}if(typeof Z?.key==="string"&&Z.key.length===1&&!Z.ctrlKey&&!Z.metaKey&&!Z.altKey)Z.preventDefault?.(),Z.stopPropagation?.();X(Z)},onConfirm:(Z)=>{let W=String(Z?.value??""),N=_.indexOf(W);if(N>=0)G.value=N;if(W==="open")U("open");else if(W==="new")U("new");else if(W==="delete")U("delete");else if(W==="refresh")U("refresh");else U("update:modelValue",!1)},onClose:()=>U("update:modelValue",!1)})}}});import{defineComponent as C$$,h as nQ}from"vue";var pQ=C$$({name:"GoatChainSwitchSessionDialog",props:{modelValue:{type:Boolean,required:!0},title:{type:String,default:"Switch Session"},targetLabel:{type:String,default:""},reason:{type:String,default:""}},emits:{"update:modelValue":($)=>!0,confirm:()=>!0},setup($,{emit:U}){return()=>{if(!$.modelValue)return null;let _=String($.targetLabel??"").trim(),G=String($.reason??"").trim();return nQ(m4,{modelValue:$.modelValue,"onUpdate:modelValue":(J)=>U("update:modelValue",J),onKeydownCapture:(J)=>{if(J?.key==="Escape"){J.preventDefault?.(),J.stopPropagation?.(),U("update:modelValue",!1);return}if(typeof J?.key==="string"&&J.key.length===1&&!J.ctrlKey&&!J.metaKey&&!J.altKey)J.preventDefault?.(),J.stopPropagation?.()},w:64,h:12,title:String($.title??"Switch Session"),placement:"center",backdrop:!1,padding:1,style:{fg:"yellowBright",bg:"black"},buttons:[{label:"Cancel",value:"cancel"},{label:"Switch & Interrupt",value:"confirm",kind:"primary",default:!0}],onConfirm:(J)=>{if(J?.value==="confirm")U("confirm");U("update:modelValue",!1)},onClose:()=>U("update:modelValue",!1)},()=>[nQ(s,{x:0,y:0,w:60,wrap:!0,value:_?`Switch to ${_}?`:"Switch sessions now?",style:{fg:"whiteBright",bg:"blackBright"}}),nQ(s,{x:0,y:2,w:60,wrap:!0,value:"This will interrupt the current response/flow in the active session.",style:{fg:"white",dim:!0,bg:"blackBright"}}),G?nQ(s,{x:0,y:4,w:60,wrap:!0,value:`Reason: ${G}`,style:{fg:"white",dim:!0,bg:"blackBright"}}):null])}}});function WS($){return[ZS(rQ,{modelValue:$.showSessions.value,"onUpdate:modelValue":(U)=>{if($.showSessions.value=U,!U)$.sessionsDeleteArmed.value=!1},loading:$.sessionsLoading.value,deleteArmed:$.sessionsDeleteArmed.value,sessions:$.sessionsList.value,selectedIndex:$.sessionsIndex.value,"onUpdate:selectedIndex":(U)=>{$.sessionsIndex.value=U,$.sessionsDeleteArmed.value=!1},onOpen:async()=>{await $.openSelectedSession()},onNew:async()=>{await $.createNewSession({after:async()=>$.router.push("home")})},onDelete:async()=>{let U=$.sessionsApi,_=$.sessionsList.value[$.sessionsIndex.value];if(!U||!_)return;let G=$.sessionsIndex.value;if(!$.sessionsDeleteArmed.value){$.sessionsDeleteArmed.value=!0,$.showCopyToast("Press Delete again to confirm.");return}$.sessionsDeleteArmed.value=!1,await U.delete(_.id),await $.refreshSessions({preferIndex:G})},onRefresh:async()=>{$.sessionsDeleteArmed.value=!1,await $.refreshSessions()}}),ZS(pQ,{modelValue:$.showSwitchConfirm.value,"onUpdate:modelValue":(U)=>{if($.showSwitchConfirm.value=U,!U)$.cancelSwitch()},title:$.switchConfirmTitle.value,targetLabel:$.switchConfirmTargetLabel.value,reason:$.switchConfirmReason.value,onConfirm:()=>void $.confirmSwitch()})]}import{h as qO}from"vue";import{defineComponent as b$$}from"vue";import{h as y1}from"vue";function y$$($,U,_){return Math.max(U,Math.min(_,$))}function NS($,U){if(!$.modelValue)return null;let _=Math.max(44,Math.floor($.w)),G=Math.max(18,Math.floor($.h)),J=Math.max(0,_-4),Q=Math.max(0,G-4),Y=Math.max(0,Q-1),V={fg:"white",dim:!0},X={fg:"white",bg:"black",dim:!0},K={fg:"whiteBright",bg:"blackBright"},Z=Y<=14,W=0,N=Z?3:4,H=Math.max(1,N-2),B=!Z,q=B?y1(s,{x:0,y:0,w:J,value:"Tab/Shift+Tab switch field • Enter Apply • Esc Cancel",style:V}):null,E=Z?1:2,P=y$$(Math.floor(J*0.28),16,Math.max(16,J-(16+E))),O=Math.max(0,J-P-E),L=B?1+W:0,T=L;L+=N+W;let D=L;L+=N+W;let j=L;L+=N+W;let w=1,k=Boolean($.apiKeyMasked)&&!Z&&L+w+N<=Y,A=L;if(k)L+=w;let R=L;return y1(m4,{modelValue:$.modelValue,"onUpdate:modelValue":(M)=>U.updateModelValue(M),onKeydownCapture:(M)=>{if(M?.key==="Escape"){M.preventDefault?.(),M.stopPropagation?.(),U.cancel(),U.updateModelValue(!1);return}if(M?.key==="Enter")M.preventDefault?.(),M.stopPropagation?.(),U.apply()},w:_,h:G,title:"Settings",placement:"center",backdrop:!1,padding:1,style:{fg:"blueBright",bg:"black"},buttons:[{label:"Apply",value:"apply",kind:"primary",default:!0},{label:"Cancel",value:"cancel"}],onConfirm:(M)=>{if(M?.value==="apply")U.apply();else U.cancel()},onClose:()=>U.cancel()},()=>[q,y1(v1,{x:0,y:T,w:J,h:N,border:!0,title:"Model",padding:0,style:X,clear:!0},()=>y1(R6,{x:0,y:0,w:Math.max(0,J-2),h:H,modelValue:$.modelId,"onUpdate:modelValue":(M)=>U.updateModelId(M),placeholder:"deepseek-v3.1",cursorToEndOnFirstFocus:!0,cursorToEndOnExternalUpdate:!0,style:K,zIndex:1002,autoFocus:!0})),y1(v1,{x:0,y:D,w:P,h:N,border:!0,title:"Context Window",padding:0,style:X,clear:!0},()=>y1(R6,{x:0,y:0,w:Math.max(0,P-2),h:H,modelValue:$.contextWindow,"onUpdate:modelValue":(M)=>U.updateContextWindow(M),placeholder:"128000",cursorToEndOnFirstFocus:!0,cursorToEndOnExternalUpdate:!0,style:K,zIndex:1002})),y1(v1,{x:P+E,y:D,w:O,h:N,border:!0,title:"Temperature",padding:0,style:X,clear:!0},()=>y1(R6,{x:0,y:0,w:Math.max(0,O-2),h:H,modelValue:$.temperature,"onUpdate:modelValue":(M)=>U.updateTemperature(M),placeholder:"0.7",cursorToEndOnFirstFocus:!0,cursorToEndOnExternalUpdate:!0,style:K,zIndex:1002})),y1(v1,{x:0,y:j,w:J,h:N,border:!0,title:"Base URL (OpenAI-compatible)",padding:0,style:X,clear:!0},()=>y1(R6,{x:0,y:0,w:Math.max(0,J-2),h:H,modelValue:$.baseUrl,"onUpdate:modelValue":(M)=>U.updateBaseUrl(M),placeholder:"https://api.openai.com/v1",cursorToEndOnFirstFocus:!0,cursorToEndOnExternalUpdate:!0,style:K,zIndex:1002})),k?y1(s,{x:0,y:A,w:J,value:$.apiKeyMasked?`Current: ${$.apiKeyMasked}`:"Current: (not set)",style:V}):null,y1(v1,{x:0,y:R,w:J,h:N,border:!0,title:"API Key",padding:0,style:X,clear:!0},()=>y1(R6,{x:0,y:0,w:Math.max(0,J-2),h:H,modelValue:$.apiKeyDraft,"onUpdate:modelValue":(M)=>U.updateApiKeyDraft(M),placeholder:"Paste a new key to update (leave empty to keep)",secret:!0,cursorToEndOnFirstFocus:!0,cursorToEndOnExternalUpdate:!0,style:K,zIndex:1002}))])}var oQ=b$$({name:"GoatChainConfigDialog",props:{modelValue:{type:Boolean,required:!0},w:{type:Number,default:74},h:{type:Number,default:24},modelId:{type:String,required:!0},contextWindow:{type:String,required:!0},temperature:{type:String,required:!0},baseUrl:{type:String,required:!0},apiKeyDraft:{type:String,required:!0},apiKeyMasked:{type:String,required:!0}},emits:{"update:modelValue":($)=>!0,"update:modelId":($)=>!0,"update:contextWindow":($)=>!0,"update:temperature":($)=>!0,"update:baseUrl":($)=>!0,"update:apiKeyDraft":($)=>!0,apply:()=>!0,cancel:()=>!0},setup($,{emit:U}){return()=>{return NS({modelValue:$.modelValue,w:$.w,h:$.h,modelId:$.modelId,contextWindow:$.contextWindow,temperature:$.temperature,baseUrl:$.baseUrl,apiKeyDraft:$.apiKeyDraft,apiKeyMasked:$.apiKeyMasked},{updateModelValue:(_)=>U("update:modelValue",_),updateModelId:(_)=>U("update:modelId",_),updateContextWindow:(_)=>U("update:contextWindow",_),updateTemperature:(_)=>U("update:temperature",_),updateBaseUrl:(_)=>U("update:baseUrl",_),updateApiKeyDraft:(_)=>U("update:apiKeyDraft",_),apply:()=>U("apply"),cancel:()=>U("cancel")})}}});import{computed as HO,defineComponent as x$$,h as r1,ref as OO,watch as g$$}from"vue";var aQ=["goatchain","mono","contrast"],FS=["inherit",...vQ];function BS($,U,_){return Math.max(U,Math.min(_,$))}function HS($){if(!$)return 0;let U=vQ.indexOf($);return U>=0?U+1:0}function tQ($){if($<=0)return;return vQ[$-1]}var OS=x$$({name:"GoatChainThemeDialog",props:{modelValue:{type:Boolean,required:!0},preset:{type:String,required:!0},overrides:{type:Object,required:!0}},emits:{"update:modelValue":($)=>!0,"update:preset":($)=>!0,setOverride:($,U)=>!0,resetOverrides:()=>!0},setup($,{emit:U}){let _=OO(0),G=OO(0),J=OO(0),Q=HO(()=>{return rJ[BS(_.value,0,rJ.length-1)]});g$$([()=>$.modelValue,Q,()=>$.overrides],()=>{if(!$.modelValue)return;let Z=$.overrides[Q.value];G.value=HS(Z?.fg),J.value=HS(Z?.bg)},{immediate:!0});function Y(Z){G.value=Z;let W=tQ(Z),N=tQ(J.value);U("setOverride",Q.value,!W&&!N?null:{fg:W,bg:N})}function V(Z){J.value=Z;let W=tQ(G.value),N=tQ(Z);U("setOverride",Q.value,!W&&!N?null:{fg:W,bg:N})}let X=HO(()=>{let Z={preset:$.preset,overrides:$.overrides};return R0(Z,Q.value)}),K=HO(()=>{let Z=aQ.indexOf($.preset);return Z>=0?Z:0});return()=>{if(!$.modelValue)return null;let Z={fg:"black",bg:"blueBright",bold:!0},W={fg:"whiteBright",bg:"blackBright"},N={fg:"whiteBright",bold:!0},H={fg:"white",dim:!0};return r1(m4,{modelValue:$.modelValue,"onUpdate:modelValue":(B)=>U("update:modelValue",B),onKeydownCapture:(B)=>{if(B?.key==="Escape"){B.preventDefault?.(),B.stopPropagation?.(),U("update:modelValue",!1);return}if(typeof B?.key==="string"&&B.key.length===1&&!B.ctrlKey&&!B.metaKey&&!B.altKey)B.preventDefault?.(),B.stopPropagation?.()},w:64,h:19,title:"Theme",placement:"center",backdrop:!1,padding:1,style:{fg:"blueBright",bg:"black"},buttons:[{label:"Reset Overrides",value:"reset"},{label:"Close",value:"close",kind:"primary",default:!0}],onConfirm:(B)=>{if(B?.value==="reset")U("resetOverrides");U("update:modelValue",!1)},onClose:()=>U("update:modelValue",!1)},()=>[r1(s,{x:0,y:0,w:60,value:"Preset",style:N}),r1(O1,{x:0,y:1,w:60,h:3,options:[...aQ],modelValue:K.value,"onUpdate:modelValue":(B)=>{let q=aQ[BS(B,0,aQ.length-1)]??"goatchain";U("update:preset",q)},autoFocus:!0,style:W,highlightStyle:Z}),r1(s,{x:0,y:5,w:24,value:"Message Type",style:N}),r1(O1,{x:0,y:6,w:24,h:4,options:[...rJ],modelValue:_.value,"onUpdate:modelValue":(B)=>_.value=B,style:W,highlightStyle:Z}),r1(s,{x:28,y:5,w:10,value:"fg",style:N}),r1(s,{x:46,y:5,w:10,value:"bg",style:N}),r1(O1,{x:28,y:6,w:16,h:4,options:[...FS],modelValue:G.value,"onUpdate:modelValue":(B)=>Y(B),style:W,highlightStyle:Z}),r1(O1,{x:46,y:6,w:16,h:4,options:[...FS],modelValue:J.value,"onUpdate:modelValue":(B)=>V(B),style:W,highlightStyle:Z}),r1(s,{x:0,y:11,w:60,value:"Preview",style:N}),r1(s,{x:0,y:12,w:60,value:` ${Q.value} `,style:{fg:X.value.fg??"whiteBright",bg:X.value.bg??"black"}}),r1(s,{x:0,y:14,w:60,value:'Tip: set fg/bg to "inherit" to use preset.',style:H})])}}});import{defineComponent as u$$,h as TG,ref as h$$,watch as m$$}from"vue";function c$$($,U){let G=Math.max(20,Math.floor(U/1));return Math.max(1,Math.ceil($.length/G))}var eQ=u$$({name:"GoatChainToolApprovalsDialog",props:{modelValue:{type:Boolean,required:!0},mode:{type:String,required:!0},w:{type:Number,required:!0},h:{type:Number,required:!0}},emits:{"update:modelValue":($)=>!0,select:($)=>!0},setup($,{emit:U}){function _(Q,Y,V){return Math.max(Y,Math.min(V,Q))}let G=h$$(0);function J(Q){return Q==="all"?1:0}return m$$([()=>$.modelValue,()=>$.mode],([Q])=>{if(!Q)return;G.value=J($.mode)},{immediate:!0}),()=>{if(!$.modelValue)return null;let Q=Math.max(0,$.w-4),Y={fg:"black",bg:"blueBright",bold:!0},V={fg:"whiteBright",dim:!0,bg:"black"},X={fg:"white",dim:!0,bg:"blackBright"},K=[{label:"Use Auto",value:"auto"},{label:"Use All",value:"all"},{label:"Close",value:"close"}],Z=_(G.value,0,K.length-1),W=K[Z]?.value??"auto",N=W==="auto"?"AUTO":W==="all"?"ALL":"CLOSE",H=W==="auto"?"Auto-approve low-risk tools. Prompt before high-risk tools (e.g. network/shell/write).":W==="all"?"Auto-approve everything. No approval prompts (fastest, least safe).":"Close this dialog without changing the current setting.",B=0,q=B+2,P=c$$(H,Q),O=q+1,L=2,T=O+P+1,D=T+L,j=Math.max($.h,D+4);return TG(m4,{modelValue:$.modelValue,"onUpdate:modelValue":(w)=>U("update:modelValue",w),onKeydownCapture:(w)=>{if(w?.key==="Escape"){w.preventDefault?.(),w.stopPropagation?.(),U("update:modelValue",!1);return}if(typeof w?.key==="string"&&w.key.length===1&&!w.ctrlKey&&!w.metaKey&&!w.altKey)w.preventDefault?.(),w.stopPropagation?.()},onKeydown:(w)=>{if(w?.key!=="ArrowLeft"&&w?.key!=="ArrowRight")return;let f=w.key==="ArrowLeft"?-1:1;G.value=_(G.value+f,0,K.length-1)},w:$.w,h:j,title:"Tool Approvals",placement:"center",backdrop:!1,padding:1,style:{fg:"blueBright",bg:"black"},buttons:[{label:"Use Auto",value:"auto",kind:$.mode==="auto"?"primary":void 0,default:$.mode==="auto"},{label:"Use All",value:"all",kind:$.mode==="all"?"primary":void 0,default:$.mode==="all"},{label:"Close",value:"close"}],onConfirm:(w)=>{if(w?.value==="auto")U("select","auto");else if(w?.value==="all")U("select","all");U("update:modelValue",!1)},onClose:()=>U("update:modelValue",!1)},()=>[TG(s,{x:0,y:B,w:Q,value:`Current: ${$.mode}`,style:{fg:"white",dim:!0,bg:"blackBright"}}),TG(s,{x:0,y:q,w:Q,value:N,style:Y}),TG(s,{x:0,y:O,w:Q,h:P,wrap:!0,value:H,style:X}),TG(s,{x:0,y:T,w:Q,h:2,wrap:!0,value:"Tip: use ←/→ to move between buttons, Enter to confirm, Esc to close.",style:V})])}}});function qS($){return[qO(OS,{modelValue:$.showTheme.value,"onUpdate:modelValue":(U)=>$.showTheme.value=U,preset:$.store.state.ui.theme.preset,"onUpdate:preset":(U)=>$.store.setThemePreset(U),overrides:$.store.state.ui.theme.overrides,onSetOverride:(U,_)=>$.store.setMessageTypeThemeOverride(U,_),onResetOverrides:()=>$.store.resetThemeOverrides()}),qO(oQ,{modelValue:$.showConfig.value,"onUpdate:modelValue":(U)=>$.showConfig.value=U,w:$.configW.value,h:$.configH.value,modelId:$.modelId.value,"onUpdate:modelId":(U)=>$.modelId.value=U,contextWindow:$.contextWindow.value,"onUpdate:contextWindow":(U)=>$.contextWindow.value=U,temperature:$.temperature.value,"onUpdate:temperature":(U)=>$.temperature.value=U,baseUrl:$.baseUrl.value,"onUpdate:baseUrl":(U)=>$.baseUrl.value=U,apiKeyDraft:$.apiKeyDraft.value,"onUpdate:apiKeyDraft":(U)=>$.apiKeyDraft.value=U,apiKeyMasked:$.apiKeyMasked.value,onApply:$.applyConfig,onCancel:$.closeConfig}),qO(eQ,{modelValue:$.showToolApprovals.value,"onUpdate:modelValue":(U)=>$.showToolApprovals.value=U,mode:String($.store.state.approval.mode??"auto"),w:$.toolApprovalsW.value,h:$.toolApprovalsH.value,onSelect:(U)=>{$.applyToolApprovals(U),$.showToolApprovals.value=!1}})]}import{h as sQ}from"vue";function $Y($){let U=[],_=$.notification;if(!_?.visible)return U;let G=String(_.message??"").trim();if(!G)return U;let J=G.startsWith("Update available")?"update":G.startsWith("Update installed")||G.startsWith("No updates")?"ok":G.startsWith("Auto-update failed")||G.startsWith("Update check failed")?"error":"info",Q=J==="update"?"[UPDATE]":J==="ok"?"[OK]":J==="error"?"[ERROR]":"[INFO]",Y=J==="update"?{bg:"blue",fg:"whiteBright",accentBg:"cyanBright"}:J==="ok"?{bg:"green",fg:"whiteBright",accentBg:"greenBright"}:J==="error"?{bg:"red",fg:"whiteBright",accentBg:"redBright"}:{bg:"blackBright",fg:"white",accentBg:"blueBright"},V=2,X=2,K=1,Z=`${Q} ${G}`,W=Math.max(0,Math.floor($.cols??0)),N=Math.max(30,W-4),H=Math.min(64,N),B=y$(Z)+V+X*2,q=Math.min(Math.max(B,H),N),E=Math.max(1,q-V-X*2),P=3,O=h1(Z,E);if(O.length>P){O=O.slice(0,P);let j=P-1;if(E>1)O[j]=`${J6(O[j],E-1)}…`;else O[j]="…"}let L=Math.max(1,O.length)+K*2,T=Math.max(2,W-q-2),D=1;return U.push(sQ(s,{key:"upgrade-toast-bg",x:T,y:D,w:q,h:L,value:" ".repeat(q),style:{bg:Y.bg},zIndex:200}),sQ(s,{key:"upgrade-toast-accent",x:T,y:D,w:V,h:L,value:" ".repeat(V),style:{bg:Y.accentBg},zIndex:201}),sQ(s,{key:"upgrade-toast-text",x:T+V+X,y:D+K,w:E,h:O.length,value:O.join(`
848
848
  `),style:{fg:Y.fg,bg:Y.bg,bold:!0},zIndex:202})),U.push(sQ(c4,{key:"upgrade-toast-hit",x:T,y:D,w:q,h:L,zIndex:210,focusable:!0,onClick:()=>{$.onDismiss?.(),$.onFocus?.()}})),U}function DS($){return $Y({notification:$.store.upgradeNotification.value,cols:$.cols.value,onDismiss:()=>{$.store.dismissUpgradeNotification(),$.focusBrowserTextarea()}})}var jS=d$$({name:"GoatChainChatOverlays",setup(){let $=l$$(d1);if(!$)throw Error("GoatChainChatOverlays missing ChatPageContext");let U=$;return()=>[...sT(U),...YS(U),...WS(U),...qS(U),...pT(U),...QS(U),...US(U),...DS(U)]}});import{computed as S6,ref as ES,watch as i$$}from"vue";function K4($,U,_){return Math.max(U,Math.min(_,$))}function DO($,U){if(U<=0)return 1;let _=0;for(let G of $.split(`
849
- `)){if(G.length===0){_+=1;continue}let J=0;for(let Q of G){let Y=z4(Q);if(J+Y>U)_+=1,J=Y;else J+=Y}_+=1}return Math.max(1,_)}function MS($){let U=S6(()=>Math.max(0,$.cols.value??0)),_=S6(()=>Math.max(0,$.rows.value??0)),G=S6(()=>Math.max(0,U.value)),J=3,Q=1,Y=4,V=1,X=2,K=4,Z=1,W=2,N=2,H=S6(()=>{return Math.max(1,Math.max(0,G.value-4)-4-2)}),B=S6(()=>DO($.input.value,H.value)),q=S6(()=>{return K4(B.value+1,2,4)}),E=S6(()=>B.value+1>4?1:0),P=S6(()=>$.hasRevertedMessages.value?3:1),O=S6(()=>q.value+E.value+1),L=S6(()=>O.value+2),T=S6(()=>Math.max(0,_.value-4-L.value-2-P.value)),D=4,j=S6(()=>4+T.value+P.value+1),w=S6(()=>Math.max(0,G.value-4)),f=S6(()=>2),k=S6(()=>f.value+1+1),A=S6(()=>Math.max(1,w.value-4-2));return{contentW:U,contentH:_,mainW:G,mainH:T,mainY:4,panelW:w,panelX:f,panelTopY:j,panelH:O,inputX:k,inputInnerW:A,inputLines:q,modelRowGap:E,inputWrapWidth:H,footerH:2,contentPadX:1}}function PS($){let U=ES(0),_=ES(!0),G=S6(()=>Math.max(0,$.lines.value.length-$.mainH.value));i$$([()=>$.lines.value.length,()=>$.mainH.value],()=>{if(_.value)U.value=G.value;else U.value=K4(U.value,0,G.value)},{immediate:!0});let J=S6(()=>{return $.lines.value.slice(U.value,U.value+$.mainH.value)}),Q="GHOSTTY_RESOURCES_DIR"in globalThis.process?.env||!1,Y=Q?4:4,V=Q?2:2.5,X=0,K=0,Z=0;function W(N){let H=N.deltaY??0;if(!H)return;let B=Date.now(),q=B-X,E=H>0?1:-1;if(Z!==0&&E!==Z)K=0;if(Z=E,K+=Math.abs(H),q<Y)return;X=B;let P=E,O=U.value<=0,L=U.value>=G.value;if(P<0&&O||P>0&&L){N.preventDefault?.(),K=0;return}let T=Math.max(1,Math.floor(K/V)),D=K4(U.value+P*T,0,G.value);if(D!==U.value){if(P<0&&_.value)_.value=!1;if(U.value=D,P>0&&D===G.value&&!_.value)_.value=!0}K=0}return{scrollTop:U,stickToBottom:_,maxScroll:G,visibleLines:J,onWheel:W}}import{computed as Y0,ref as eJ,watch as UY}from"vue";function jO($){let U=$.permission,_=String($.riskLevel??"").trim().toLowerCase();if(U==="require_action")return!0;if(!_)return!0;return _==="high"||_==="critical"}function tJ($,U){return $==="all"||$==="auto"&&!jO(U)}function fS($,U){if($==="all")return!0;return U==="require_action"}function LS($){let U=eJ(!1),_=eJ(0),G=eJ(!1),J=eJ(!1),Q=eJ(!1),Y=eJ(!1),V=Y0(()=>$.store.state.approval.active),X=Y0(()=>{let D=Math.min(86,Math.max(1,$.contentW.value)),j=Math.min(46,D),w=Math.floor($.contentW.value*0.5);return K4(w,j,D)}),K=Y0(()=>K4(11,9,Math.max(9,$.rows.value-6))),Z=Y0(()=>$.store.state.paused?.kind==="ask_user"?$.store.state.paused:null),W=Y0(()=>K4(Math.floor($.contentW.value*0.62),40,90)),N=Y0(()=>K4(18,14,Math.max(14,$.rows.value-4))),H=Y0(()=>K4(Math.floor($.contentW.value*0.78),56,84)),B=Y0(()=>K4(24,18,Math.max(18,$.rows.value-4))),q=Y0(()=>K4(Math.floor($.contentW.value*0.62),46,86)),E=Y0(()=>K4(14,11,Math.max(11,$.rows.value-6)));function P(D){if(String($.store.state.approval.mode??"auto")==="all")return!1;return jO(D)}UY(()=>V.value?.id??null,()=>{let D=V.value;if(D&&D.status==="pending"&&P(D))J.value=!0;else J.value=!1},{immediate:!0}),UY(()=>$.store.state.approval.mode,()=>{let D=V.value;if(!D||D.status!=="pending"||!P(D))J.value=!1}),UY(()=>Z.value?.toolCallId??null,(D)=>{Q.value=Boolean(D)});let O=Y0(()=>U.value||G.value||$.showSessions.value||$.showSwitchConfirm.value||$.showMessageActions.value||$.showRedoConfirm.value||$.showConfig.value||$.showToolApprovals.value||J.value||$.showPathPicker.value||Q.value||Y.value);UY(O,(D)=>{if(!D)$.focusMode.value="input"});function L(){U.value=!0,_.value=0}function T(){U.value=!1}return{showCommands:U,commandIndex:_,showTheme:G,showApproval:J,showAskUser:Q,showExitConfirm:Y,activeApproval:V,approvalW:X,approvalH:K,activeAskUser:Z,askUserW:W,askUserH:N,configW:H,configH:B,toolApprovalsW:q,toolApprovalsH:E,anyDialogOpen:O,openCommandPalette:L,closeCommandPalette:T}}function wS($){function U(X){let K=X?.currentTarget?.id;if(typeof K==="string"&&K)$.events.value?.focus?.(K)}function _(){return $.focusMode.value==="messages"||Boolean($.selectedToolCallId.value)}function G(X,K){let Z=Boolean(K?.allowAlt),W=Boolean((X.metaKey||X.ctrlKey)&&!X.altKey),N=Boolean(X.altKey&&!X.metaKey&&!X.ctrlKey);if(!(X.key==="c"||X.key==="C"))return!1;if(!$.hasMessageSelection.value)return!1;if(!W&&!(Z&&N))return!1;let q=$.getSelectedMessageText();if(!q)return!1;return X.stopPropagation?.(),X.preventDefault?.(),$.copyTextToClipboard(q),!0}function J(X){if($.anyDialogOpen.value)return;if(G(X,{allowAlt:!1}),X.key==="ArrowUp"){X.preventDefault?.(),$.moveToolSelection(-1),U(X);return}if(X.key==="ArrowDown"){X.preventDefault?.(),$.moveToolSelection(1),U(X);return}if(X.key==="Enter"){if(!$.selectedToolCallId.value)return;X.preventDefault?.(),$.runSelected().finally(()=>U(X))}}function Q(X){if($.showExitConfirm.value){if(X.key==="Escape"){X.preventDefault?.(),$.showExitConfirm.value=!1;return}if(X.key==="Enter"){X.preventDefault?.(),$.showExitConfirm.value=!1,$.exitSessionToHome();return}if(typeof X?.key==="string"&&X.key.length===1&&!X.ctrlKey&&!X.metaKey&&!X.altKey){X.preventDefault?.(),X.stopPropagation?.();return}}if($.showApproval.value&&X.key==="Enter"){X.preventDefault?.(),X.stopPropagation?.(),$.store.approve();return}if(X.defaultPrevented)return;if((X.ctrlKey||X.metaKey)&&(X.key==="p"||X.key==="P")){X.preventDefault?.(),$.openCommandPalette();return}if(X.key==="Tab"&&!X.metaKey&&!X.ctrlKey&&!X.altKey){X.preventDefault?.(),$.cycleUiMode(X.shiftKey?-1:1);return}if((X.ctrlKey||X.metaKey)&&(X.key==="k"||X.key==="K")){X.preventDefault?.(),$.openConfig();return}if(_()&&!$.anyDialogOpen.value){if(X.key==="ArrowUp"){X.preventDefault?.(),$.moveToolSelection(-1);return}if(X.key==="ArrowDown"){X.preventDefault?.(),$.moveToolSelection(1);return}if(X.key==="Enter"){if(!$.selectedToolCallId.value)return;X.preventDefault?.(),$.runSelected();return}}if(X.defaultPrevented)return;let K=DO($.input.value,$.inputWrapWidth.value);if(X.key==="ArrowUp"){if(K>1)return;if($.history.value.length===0)return;X.preventDefault?.(),$.historyIndex.value=K4($.historyIndex.value-1,0,$.history.value.length-1),$.input.value=$.history.value[$.historyIndex.value]??"";return}if(X.key==="ArrowDown"){if(K>1)return;if($.history.value.length===0)return;if(X.preventDefault?.(),$.historyIndex.value>=$.history.value.length-1){$.historyIndex.value=$.history.value.length,$.input.value="";return}$.historyIndex.value=K4($.historyIndex.value+1,0,$.history.value.length-1),$.input.value=$.history.value[$.historyIndex.value]??""}if(X.key==="Escape"&&!$.input.value){if(X.preventDefault?.(),$.isLoading.value){$.store.interrupt();return}$.showExitConfirm.value=!0}}function Y(X){if(G(X,{allowAlt:$.nodeLike}))return;if($.showApproval.value&&X.key==="Enter"){if(X?.__goatchainApprovalDialogHandled)return;if(X.defaultPrevented)return;X.stopPropagation?.(),X.preventDefault?.(),$.store.approve();return}if($.showExitConfirm.value&&X.key==="Enter"){X.stopPropagation?.(),X.preventDefault?.(),$.showExitConfirm.value=!1,$.exitSessionToHome();return}if(X.defaultPrevented)return;if(!$.anyDialogOpen.value){if((X.ctrlKey||X.metaKey)&&!X.altKey&&(X.key==="k"||X.key==="K")){X.stopPropagation?.(),X.preventDefault?.(),$.openConfig();return}if((X.ctrlKey||X.metaKey)&&!X.altKey&&(X.key==="p"||X.key==="P")){X.stopPropagation?.(),X.preventDefault?.(),$.openCommandPalette();return}if(X.key==="Tab"&&!X.metaKey&&!X.ctrlKey&&!X.altKey){X.stopPropagation?.(),X.preventDefault?.(),$.cycleUiMode(X.shiftKey?-1:1);return}}if((X.ctrlKey||X.metaKey)&&!X.altKey&&(X.key==="r"||X.key==="R")){if($.store.hasRevertedMessages.value){X.stopPropagation?.(),X.preventDefault?.(),$.showRedoConfirm.value=!0;return}}if(X.key!=="Escape")return;if(X.stopPropagation?.(),X.preventDefault?.(),$.showRedoConfirm.value)$.showRedoConfirm.value=!1;else if($.showCommands.value)$.closeCommandPalette();else if($.showTheme.value)$.showTheme.value=!1;else if($.showSessions.value)$.showSessions.value=!1;else if($.showMessageActions.value)$.showMessageActions.value=!1;else if($.showConfig.value)$.closeConfig();else if($.showToolApprovals.value)$.showToolApprovals.value=!1;else if($.showApproval.value)$.showApproval.value=!1;else if($.showAskUser.value)$.showAskUser.value=!1;else if($.showPathPicker.value)$.closePathPicker();else if($.showExitConfirm.value)$.showExitConfirm.value=!1;else if($.isLoading.value)$.store.interrupt();else if($.hasMessageSelection.value)$.clearMessageSelection();else $.showExitConfirm.value=!0}function V(X){if($.anyDialogOpen.value)return;if(X.key==="Tab"&&!X.metaKey&&!X.ctrlKey&&!X.altKey){X.stopPropagation?.(),X.preventDefault?.(),$.cycleUiMode(X.shiftKey?-1:1);return}if(!_())return;if(X.key==="ArrowUp"){X.stopPropagation?.(),X.preventDefault?.(),$.moveToolSelection(-1);return}if(X.key==="ArrowDown"){X.stopPropagation?.(),X.preventDefault?.(),$.moveToolSelection(1);return}if(X.key==="Enter"&&$.selectedToolCallId.value&&!$.input.value.trim())X.stopPropagation?.(),X.preventDefault?.(),$.runSelected()}return{onInputKeydown:Q,onSelectionKeydown:J,onGlobalKeydown:Y,onGlobalKeydownCapture:V}}function AS($){if($.role==="user")return String($.content??"");if($.role==="tool")return String($.result.output??"");return $.parts.map((U)=>{if(U.type==="markdown")return String(U.markdown??"");if(U.type==="thinking")return String(U.content??"");if(U.type==="status")return String(U.text??"");return""}).filter(Boolean).join(`
849
+ `)){if(G.length===0){_+=1;continue}let J=0;for(let Q of G){let Y=z4(Q);if(J+Y>U)_+=1,J=Y;else J+=Y}_+=1}return Math.max(1,_)}function MS($){let U=S6(()=>Math.max(0,$.cols.value??0)),_=S6(()=>Math.max(0,$.rows.value??0)),G=S6(()=>Math.max(0,U.value)),J=3,Q=1,Y=4,V=1,X=2,K=4,Z=1,W=2,N=2,H=S6(()=>{return Math.max(1,Math.max(0,G.value-4)-4-2)}),B=S6(()=>DO($.input.value,H.value)),q=S6(()=>{return K4(B.value+1,2,4)}),E=S6(()=>B.value+1>4?1:0),P=S6(()=>$.hasRevertedMessages.value?3:1),O=S6(()=>q.value+E.value+1),L=S6(()=>O.value+2),T=S6(()=>Math.max(0,_.value-4-L.value-2-P.value)),D=4,j=S6(()=>4+T.value+P.value+1),w=S6(()=>Math.max(0,G.value-4)),f=S6(()=>2),k=S6(()=>f.value+1+1),A=S6(()=>Math.max(1,w.value-4-2));return{contentW:U,contentH:_,mainW:G,mainH:T,mainY:4,panelW:w,panelX:f,panelTopY:j,panelH:O,inputX:k,inputInnerW:A,inputLines:q,modelRowGap:E,inputWrapWidth:H,footerH:2,contentPadX:1}}function PS($){let U=ES(0),_=ES(!0),G=S6(()=>Math.max(0,$.lines.value.length-$.mainH.value));i$$([()=>$.lines.value.length,()=>$.mainH.value],()=>{if(_.value)U.value=G.value;else U.value=K4(U.value,0,G.value)},{immediate:!0});let J=S6(()=>{return $.lines.value.slice(U.value,U.value+$.mainH.value)}),Q="GHOSTTY_RESOURCES_DIR"in globalThis.process?.env||!1,Y=Q?4:4,V=Q?2:2.5,X=0,K=0,Z=0;function W(N){let H=N.deltaY??0;if(!H)return;let B=Date.now(),q=B-X,E=H>0?1:-1;if(Z!==0&&E!==Z)K=0;if(Z=E,K+=Math.abs(H),q<Y)return;X=B;let P=E,O=U.value<=0,L=U.value>=G.value;if(P<0&&O||P>0&&L){N.preventDefault?.(),K=0;return}let T=Math.max(1,Math.floor(K/V)),D=K4(U.value+P*T,0,G.value);if(D!==U.value){if(P<0&&_.value)_.value=!1;if(U.value=D,P>0&&D===G.value&&!_.value)_.value=!0}K=0}return{scrollTop:U,stickToBottom:_,maxScroll:G,visibleLines:J,onWheel:W}}import{computed as Y0,ref as eJ,watch as UY}from"vue";function jO($){let U=$.permission,_=String($.riskLevel??"").trim().toLowerCase();if(U==="require_action")return!0;if(!_)return!0;return _==="high"||_==="critical"}function tJ($,U){return $==="all"||$==="auto"&&!jO(U)}function fS($,U){if($==="all")return!0;return U==="require_action"}function LS($){let U=eJ(!1),_=eJ(0),G=eJ(!1),J=eJ(!1),Q=eJ(!1),Y=eJ(!1),V=Y0(()=>$.store.state.approval.active),X=Y0(()=>{let D=Math.min(86,Math.max(1,$.contentW.value)),j=Math.min(46,D),w=Math.floor($.contentW.value*0.5);return K4(w,j,D)}),K=Y0(()=>K4(11,9,Math.max(9,$.rows.value-6))),Z=Y0(()=>$.store.state.paused?.kind==="ask_user"?$.store.state.paused:null),W=Y0(()=>K4(Math.floor($.contentW.value*0.62),40,90)),N=Y0(()=>K4(18,14,Math.max(14,$.rows.value-4))),H=Y0(()=>K4(Math.floor($.contentW.value*0.78),56,84)),B=Y0(()=>K4(24,18,Math.max(18,$.rows.value-4))),q=Y0(()=>K4(Math.floor($.contentW.value*0.62),46,86)),E=Y0(()=>K4(14,11,Math.max(11,$.rows.value-6)));function P(D){if(String($.store.state.approval.mode??"auto")==="all")return!1;return jO(D)}UY(()=>V.value?.id??null,()=>{let D=V.value;if(D&&D.status==="pending"&&P(D))J.value=!0;else J.value=!1},{immediate:!0}),UY(()=>$.store.state.approval.mode,()=>{let D=V.value;if(!D||D.status!=="pending"||!P(D))J.value=!1}),UY(()=>Z.value?.toolCallId??null,(D)=>{Q.value=Boolean(D)});let O=Y0(()=>U.value||G.value||$.showSessions.value||$.showSwitchConfirm.value||$.showMessageActions.value||$.showRedoConfirm.value||$.showConfig.value||$.showToolApprovals.value||J.value||$.showPathPicker.value||Q.value||Y.value);UY(O,(D)=>{if(!D)$.focusMode.value="input"});function L(){U.value=!0,_.value=0}function T(){U.value=!1}return{showCommands:U,commandIndex:_,showTheme:G,showApproval:J,showAskUser:Q,showExitConfirm:Y,activeApproval:V,approvalW:X,approvalH:K,activeAskUser:Z,askUserW:W,askUserH:N,configW:H,configH:B,toolApprovalsW:q,toolApprovalsH:E,anyDialogOpen:O,openCommandPalette:L,closeCommandPalette:T}}function wS($){function U(X){let K=X?.currentTarget?.id;if(typeof K==="string"&&K)$.events.value?.focus?.(K)}function _(){return $.focusMode.value==="messages"||Boolean($.selectedToolCallId.value)}function G(X,K){let Z=Boolean(K?.allowAlt),W=Boolean((X.metaKey||X.ctrlKey)&&!X.altKey),N=Boolean(X.altKey&&!X.metaKey&&!X.ctrlKey);if(!(X.key==="c"||X.key==="C"))return!1;if(!$.hasMessageSelection.value)return!1;if(!W&&!(Z&&N))return!1;let q=$.getSelectedMessageText();if(!q)return!1;return X.stopPropagation?.(),X.preventDefault?.(),$.copyTextToClipboard(q),!0}function J(X){if($.anyDialogOpen.value)return;if(G(X,{allowAlt:!1}),X.key==="ArrowUp"){X.preventDefault?.(),$.moveToolSelection(-1),U(X);return}if(X.key==="ArrowDown"){X.preventDefault?.(),$.moveToolSelection(1),U(X);return}if(X.key==="Enter"){if(!$.selectedToolCallId.value)return;X.preventDefault?.(),$.runSelected().finally(()=>U(X))}}function Q(X){if($.showExitConfirm.value){if(X.key==="Escape"){X.preventDefault?.(),$.showExitConfirm.value=!1;return}if(X.key==="Enter"){X.preventDefault?.(),$.showExitConfirm.value=!1,$.exitSessionToHome();return}if(typeof X?.key==="string"&&X.key.length===1&&!X.ctrlKey&&!X.metaKey&&!X.altKey){X.preventDefault?.(),X.stopPropagation?.();return}}if($.showApproval.value&&X.key==="Enter"){X.preventDefault?.(),X.stopPropagation?.(),$.store.approve();return}if(X.defaultPrevented)return;if((X.ctrlKey||X.metaKey)&&(X.key==="p"||X.key==="P")){X.preventDefault?.(),$.openCommandPalette();return}if(X.key==="Tab"&&!X.metaKey&&!X.ctrlKey&&!X.altKey){X.preventDefault?.(),$.cycleUiMode(X.shiftKey?-1:1);return}if((X.ctrlKey||X.metaKey)&&(X.key==="k"||X.key==="K")){X.preventDefault?.(),$.openConfig();return}if(_()&&!$.anyDialogOpen.value){if(X.key==="ArrowUp"){X.preventDefault?.(),$.moveToolSelection(-1);return}if(X.key==="ArrowDown"){X.preventDefault?.(),$.moveToolSelection(1);return}if(X.key==="Enter"){if(!$.selectedToolCallId.value)return;if($.input.value.trim())return;X.preventDefault?.(),$.runSelected();return}}if(X.defaultPrevented)return;let K=DO($.input.value,$.inputWrapWidth.value);if(X.key==="ArrowUp"){if(K>1)return;if($.history.value.length===0)return;X.preventDefault?.(),$.historyIndex.value=K4($.historyIndex.value-1,0,$.history.value.length-1),$.input.value=$.history.value[$.historyIndex.value]??"";return}if(X.key==="ArrowDown"){if(K>1)return;if($.history.value.length===0)return;if(X.preventDefault?.(),$.historyIndex.value>=$.history.value.length-1){$.historyIndex.value=$.history.value.length,$.input.value="";return}$.historyIndex.value=K4($.historyIndex.value+1,0,$.history.value.length-1),$.input.value=$.history.value[$.historyIndex.value]??""}if(X.key==="Escape"&&!$.input.value){if(X.preventDefault?.(),$.isLoading.value){$.store.interrupt();return}$.showExitConfirm.value=!0}}function Y(X){if(G(X,{allowAlt:$.nodeLike}))return;if($.showApproval.value&&X.key==="Enter"){if(X?.__goatchainApprovalDialogHandled)return;if(X.defaultPrevented)return;X.stopPropagation?.(),X.preventDefault?.(),$.store.approve();return}if($.showExitConfirm.value&&X.key==="Enter"){X.stopPropagation?.(),X.preventDefault?.(),$.showExitConfirm.value=!1,$.exitSessionToHome();return}if(X.defaultPrevented)return;if(!$.anyDialogOpen.value){if((X.ctrlKey||X.metaKey)&&!X.altKey&&(X.key==="k"||X.key==="K")){X.stopPropagation?.(),X.preventDefault?.(),$.openConfig();return}if((X.ctrlKey||X.metaKey)&&!X.altKey&&(X.key==="p"||X.key==="P")){X.stopPropagation?.(),X.preventDefault?.(),$.openCommandPalette();return}if(X.key==="Tab"&&!X.metaKey&&!X.ctrlKey&&!X.altKey){X.stopPropagation?.(),X.preventDefault?.(),$.cycleUiMode(X.shiftKey?-1:1);return}}if((X.ctrlKey||X.metaKey)&&!X.altKey&&(X.key==="r"||X.key==="R")){if($.store.hasRevertedMessages.value){X.stopPropagation?.(),X.preventDefault?.(),$.showRedoConfirm.value=!0;return}}if(X.key!=="Escape")return;if(X.stopPropagation?.(),X.preventDefault?.(),$.showRedoConfirm.value)$.showRedoConfirm.value=!1;else if($.showCommands.value)$.closeCommandPalette();else if($.showTheme.value)$.showTheme.value=!1;else if($.showSessions.value)$.showSessions.value=!1;else if($.showMessageActions.value)$.showMessageActions.value=!1;else if($.showConfig.value)$.closeConfig();else if($.showToolApprovals.value)$.showToolApprovals.value=!1;else if($.showApproval.value)$.showApproval.value=!1;else if($.showAskUser.value)$.showAskUser.value=!1;else if($.showPathPicker.value)$.closePathPicker();else if($.showExitConfirm.value)$.showExitConfirm.value=!1;else if($.isLoading.value)$.store.interrupt();else if($.hasMessageSelection.value)$.clearMessageSelection();else $.showExitConfirm.value=!0}function V(X){if($.anyDialogOpen.value)return;if(X.key==="Tab"&&!X.metaKey&&!X.ctrlKey&&!X.altKey){X.stopPropagation?.(),X.preventDefault?.(),$.cycleUiMode(X.shiftKey?-1:1);return}if(!_())return;if(X.key==="ArrowUp"){X.stopPropagation?.(),X.preventDefault?.(),$.moveToolSelection(-1);return}if(X.key==="ArrowDown"){X.stopPropagation?.(),X.preventDefault?.(),$.moveToolSelection(1);return}if(X.key==="Enter"&&$.selectedToolCallId.value&&!$.input.value.trim())X.stopPropagation?.(),X.preventDefault?.(),$.runSelected()}return{onInputKeydown:Q,onSelectionKeydown:J,onGlobalKeydown:Y,onGlobalKeydownCapture:V}}function AS($){if($.role==="user")return String($.content??"");if($.role==="tool")return String($.result.output??"");return $.parts.map((U)=>{if(U.type==="markdown")return String(U.markdown??"");if(U.type==="thinking")return String(U.content??"");if(U.type==="status")return String(U.text??"");return""}).filter(Boolean).join(`
850
850
  `)}function r$$($){if($.role!=="assistant")return $;let U=$.parts.filter((_)=>_.type!=="status"&&_.type!=="thinking"&&_.type!=="tool_output");return{...$,parts:U}}function RS($,U){let _=$.findIndex((G)=>G.id===U);if(_<0)return null;return $.slice(0,_).map(r$$)}async function zS($){let U=$.sessionsApi;if(U&&typeof U.fork==="function"){await U.fork({messages:$.seed});return}if($.sessionsApi){await $.sessionsApi.createNew(),$.store.state.messages.splice(0,$.store.state.messages.length,...$.seed),$.store.state.revertedMessages.splice(0,$.store.state.revertedMessages.length),$.store.state.selectedToolCallId=null;return}$.store.state.sessionId="",$.store.state.messages.splice(0,$.store.state.messages.length,...$.seed),$.store.state.revertedMessages.splice(0,$.store.state.revertedMessages.length),$.store.state.selectedToolCallId=null,$.store.state.usage.prompt_tokens=0,$.store.state.usage.completion_tokens=0,$.store.state.usage.total_tokens=0}import{computed as n$$,ref as EO}from"vue";function kS($){let U=EO(null),_=EO(null),G=EO(!1),J=n$$(()=>{let B=U.value,q=_.value;return Boolean(B&&q&&(B.row!==q.row||B.col!==q.col))});function Q(){return xT($.lines.value,U.value,_.value)}function Y(){let B=globalThis.getSelection?.();return typeof B?.toString==="function"?String(B.toString()):""}function V(){if($.nodeLike)return;try{globalThis.document?.querySelector?.("[data-vt-host] textarea")?.focus?.()}catch{}}function X(){U.value=null,_.value=null,G.value=!1}function K(B){if($.focusMode.value="messages",V(),!$.nodeLike&&!B?.altKey)return;let q=(B.cellY??0)-$.mainY,E=(B.cellX??0)-2,P=$.scrollTop.value+q;U.value={row:P,col:Math.max(0,E)},_.value={row:P,col:Math.max(0,E)},G.value=!0}function Z(B){if(!G.value)return;let q=(B.cellY??0)-$.mainY,E=(B.cellX??0)-2,P=$.scrollTop.value+q;_.value={row:P,col:Math.max(0,E)};let O=$.mainH.value,L=Math.max(0,$.lines.value.length-O);if(q>=O-1&&$.scrollTop.value<L)$.scrollTop.value=Math.min($.scrollTop.value+1,L);else if(q<0&&$.scrollTop.value>0)$.scrollTop.value=Math.max($.scrollTop.value-1,0)}function W(B){if(!G.value)return;G.value=!1;let q=U.value,E=_.value,P=q&&E&&(q.row!==E.row||Math.abs(q.col-E.col)>1);if(!$.nodeLike)return;if(P){let O=Q();if(O)$.copyTextToClipboard(O).then((L)=>{$.showCopyToast(L?"Copied":"Copy failed")});return}if(!P&&q){if(B.target&&B.currentTarget&&B.target!==B.currentTarget)return;let O=$.lines.value[q.row];if(!O?.messageId)return;if($.store.state.messages.find((T)=>T.id===O.messageId)?.role!=="user")return;$.messageActionsTargetId.value=O.messageId,$.showMessageActions.value=!0}}function N(B){if($.nodeLike)return;if(V(),$.focusMode.value="messages",Y().trim())return;if(!B?.shiftKey)return;if(B.target&&B.currentTarget&&B.target!==B.currentTarget)return;let q=(B.cellY??0)-$.mainY,E=$.scrollTop.value+q,P=$.lines.value[E];if(!P?.messageId)return;if($.store.state.messages.find((L)=>L.id===P.messageId)?.role!=="user")return;$.messageActionsTargetId.value=P.messageId,$.showMessageActions.value=!0}function H(B){if(Y().trim())return;B.preventDefault?.();let q=(B.cellY??0)-$.mainY,E=$.scrollTop.value+q,P=$.lines.value[E];if(!P?.messageId)return;if($.store.state.messages.find((L)=>L.id===P.messageId)?.role!=="user")return;$.messageActionsTargetId.value=P.messageId,$.showMessageActions.value=!0}return{messageSelectStart:U,messageSelectEnd:_,isSelecting:G,hasMessageSelection:J,focusBrowserTextarea:V,getSelectedMessageText:Q,getNativeSelectionText:Y,clearMessageSelection:X,onMessageClick:N,onMessagePointerDown:K,onMessagePointerMove:Z,onMessagePointerUp:W,onMessageContextMenu:H}}import{computed as V0,onBeforeUnmount as p$$,ref as o$$,watch as a$$}from"vue";function TS($){let U=V0(()=>{let L=$.store.state.messages.length,T=Math.max(0,Number($.store.state.usage.prompt_tokens)||0),D=Math.max(0,Number($.store.state.usage.completion_tokens)||0),j=T+D,w=`${L.toLocaleString()} msgs · ${j.toLocaleString()} tok`;return $.copyToastVisible.value&&$.copyToastText.value?`${w} ${$.copyToastText.value}`:w});function _(L){if(L>=88)return"●";if(L>=63)return"◕";if(L>=38)return"◑";if(L>=13)return"◔";return"○"}let G=V0(()=>{let L=Math.max(0,Number($.store.state.usage.prompt_tokens)||0),T=Math.max(0,Number($.store.state.usage.completion_tokens)||0),D=L+T,j=Math.max(1,Number($.store.state.config.context_window)||128000),w=K4(Math.round(D/j*100),0,100);return`${_(w)} ${w}%`}),J=V0(()=>{return{build:"■",label:String($.store.state.config.model??"model")}}),Q=V0(()=>$.uiMode.value),Y=-1,V="",X=V0(()=>{let L=$.store.state.messages.length;if(L===Y&&V!==void 0)return V;for(let T=$.store.state.messages.length-1;T>=0;T--){let D=$.store.state.messages[T];if(!D||D.role!=="assistant")continue;let j=D.parts.find((f)=>f.type==="status"),w=String(j?.text??"").trim();return Y=L,V=!w||w==="Done."?"":w,V}return Y=L,V="",""}),K=V0(()=>{return{fg:R0($.store.state.ui.theme,"status").fg??"white",bg:"blackBright",dim:!0}}),Z=V0(()=>Boolean($.store.state.runningToolCallId)||Boolean($.store.state.runningAgentRound)),W=o$$(0),N=10,H=3,B=null,q=V0(()=>{if(Z.value)return!0;return/^thinking\b/i.test(X.value)});a$$(q,(L)=>{if(L&&!B)B=setInterval(()=>{W.value=(W.value+1)%N},100);else if(!L&&B)clearInterval(B),B=null,W.value=0},{immediate:!0}),p$$(()=>{if(B)clearInterval(B);B=null});let E=V0(()=>{let L=X.value;if(!L)return"";return L}),P=V0(()=>{let L=[];for(let T=0;T<N;T++){let D=(T-W.value+N)%N;L.push(D>=N-H?"■":"·")}return L.join("")}),O=V0(()=>"Ctrl+K: config Tab: mode Ctrl+P: commands");return{headerStatsDisplay:U,ctxPctChip:G,modelInfo:J,modeLabel:Q,assistantStatusDisplay:E,assistantStatusStyle:K,isLoading:Z,loadingDots:P,footerRight:O}}function XU(){if(typeof globalThis.window<"u")return!1;let $=globalThis.process;return!!$&&typeof $?.versions?.node==="string"&&typeof $?.cwd==="function"}function SS(){try{let $=globalThis.process;return(typeof $?.cwd==="function"?String($.cwd()):"")||"/"}catch{return"/"}}async function _Y($){let U=String($??"");if(!U)return!1;let _=globalThis.navigator;if(_?.clipboard?.writeText)try{return await _.clipboard.writeText(U),!0}catch{}if(XU())try{let Q=globalThis.process,Y=String(Q?.platform||""),{spawn:V}=await import("node:child_process"),X=(K,Z)=>new Promise((W)=>{try{let N=V(K,Z,{stdio:["pipe","ignore","ignore"],windowsHide:!0});N.on("error",()=>W(!1)),N.on("close",(H)=>W(H===0)),N.stdin?.write(U,"utf8"),N.stdin?.end()}catch{W(!1)}});if(Y==="darwin"){if(await X("pbcopy",[]))return!0}else if(Y==="win32"){if(await X("cmd",["/c","clip"]))return!0}else{if(await X("wl-copy",[]))return!0;if(await X("xclip",["-selection","clipboard"]))return!0;if(await X("xsel",["--clipboard","--input"]))return!0}}catch{}let G=globalThis.process;if(G?.stdout?.write&&G?.stdout?.isTTY)try{let Q=XU()?(await import("node:buffer")).Buffer.from(U,"utf-8").toString("base64"):btoa(unescape(encodeURIComponent(U)));return G.stdout.write(`\x1B]52;c;${Q}\x07`),!0}catch{}let J=globalThis.document;if(!J?.createElement||!J?.body?.appendChild||typeof J.execCommand!=="function")return!1;try{let Q=J.activeElement,Y=J.createElement("textarea");Y.value=U,Y.setAttribute("readonly","true"),Y.setAttribute("aria-hidden","true"),Y.style.position="fixed",Y.style.left="-9999px",Y.style.top="-9999px",Y.style.opacity="0",J.body.appendChild(Y),Y.focus(),Y.select(),Y.setSelectionRange(0,Y.value.length);let V=Boolean(J.execCommand("copy"));Y.remove();try{Q?.focus?.({preventScroll:!0})}catch{Q?.focus?.()}return V}catch{return!1}}function JY($){let U=String($??"").trim();if(!U.startsWith("/"))return{kind:"none"};if(U==="/approvals"||U==="/approval")return{kind:"approvals"};if(U.startsWith("/approvals ")||U.startsWith("/approval "))return{kind:"approvals_invalid_args"};if(U==="/settings"||U==="/config")return{kind:"settings"};if(U==="/sessions")return{kind:"sessions"};if(U==="/new")return{kind:"new"};if(U==="/redo")return{kind:"redo"};return{kind:"none"}}function GY($){return[{label:"Sessions",detail:"Pick or create a session (/sessions)",run:$.openSessionsDialog},{label:"New Session",detail:"Start a new session (/new)",run:$.createNewSession},{label:"Settings",detail:"Model + API (/settings, Ctrl+K)",run:$.openConfig},{label:"Tool Approvals",detail:"Configure approvals (/approvals)",run:$.openToolApprovals}]}import{computed as SG,ref as QY}from"vue";function YY($){let U=QY(!1),_=QY("directory"),G=QY(""),J=QY(null),Q=SG(()=>{let N=String($.store.state.context?.cwd??".");if(!$.nodeLike)return N;return _2(SS(),N)}),Y=SG(()=>_.value==="directory"?"Select Workspace":"Select File"),V=SG(()=>_.value==="directory"?"Type a path (../ etc). Tab to complete. Enter selects a directory.":"Type a path (../ etc). Tab to complete. Enter selects a file."),X=SG(()=>K4(Math.min(72,Math.max(32,Math.floor($.cols.value*0.72))),32,Math.max(32,$.cols.value-4))),K=SG(()=>K4(Math.min(18,Math.max(8,Math.floor($.rows.value*0.55))),8,Math.max(8,$.rows.value-6)));function Z(N,H=""){if(!$.nodeLike){J.value="node-only";return}U.value=!0,_.value=N,G.value=String(H??""),J.value=null}function W(){U.value=!1,G.value="",J.value=null}return{showPathPicker:U,pathPickerMode:_,pathPickerQuery:G,pathPickerError:J,pickerWorkspace:Q,pickerW:X,pickerH:K,pathPickerTitle:Y,pathPickerPlaceholder:V,openPathPicker:Z,closePathPicker:W}}import{appendFileSync as t$$}from"node:fs";function e$$(){let $=globalThis.process;return Boolean($&&typeof $?.versions?.node==="string")}function s$$(){if(!e$$())return!1;let $=globalThis.process?.env??{},U=String($.GOATCHAIN_DEBUG??"").trim().toLowerCase();return U==="1"||U==="true"||U==="yes"||U==="on"}function $4$(){let $=globalThis.process?.env??{};return String($.GOATCHAIN_DEBUG_LOG??"").trim()||"./goatchain-debug.log"}function C4($,U){if(!s$$())return;let _=String($??"").trim()||"event",J=`[${new Date().toISOString()}] ${_}`;if(U!==void 0)try{J+=` ${JSON.stringify(U)}`}catch{}J+=`
851
851
  `;try{t$$($4$(),J)}catch{}}import{ref as T0,watch as U4$}from"vue";function VY($){let U=T0(!1),_=T0(!1),G=T0("Switch Session"),J=T0(""),Q=T0(""),Y=T0(!1),V=T0(!1),X=T0([]),K=T0(0),Z=T0(null);function W(){let D=$.store.state;if(D.runningAgentRound)return"Agent is still responding";if(D.paused?.kind==="ask_user")return"Awaiting AskUser answers";if(D.paused?.kind==="tool_approval")return"Awaiting tool approval";if(D.approval?.active?.status==="pending")return"Pending approval";return""}function N(){let D=$.store.state;if(D.runningAgentRound)return!0;if(D.paused)return!0;return Boolean(D.approval?.active&&D.approval.active.status==="pending")}async function H(D){if(!$.sessionsApi){$.showToast?.("Sessions are only available in Node/CLI mode."),C4("session_switch_unavailable",{title:D.title,target:D.targetLabel});return}if(!N()){C4("session_switch",{title:D.title,target:D.targetLabel,busy:!1}),await D.run(),_.value=!1,Z.value=null,G.value="Switch Session",J.value="",Q.value="",U.value=!1,V.value=!1;return}Z.value={run:D.run},G.value=D.title,J.value=D.targetLabel,Q.value=W(),_.value=!0,C4("session_switch_prompt",{title:D.title,target:D.targetLabel,reason:Q.value})}async function B(D={}){let j=$.sessionsApi;if(!j){X.value=[],K.value=0;return}Y.value=!0;try{let w=await j.list();X.value=w.slice().sort((A,R)=>Number(R?.updatedAt??0)-Number(A?.updatedAt??0));let f=Math.max(0,X.value.length-1),k=-1;if(D.preferId)k=X.value.findIndex((A)=>A.id===D.preferId);if(k<0&&typeof D.preferIndex==="number")k=K4(D.preferIndex,0,f);if(k<0){let A=String($.store.state.sessionId??"");k=X.value.findIndex((R)=>R.id===A)}K.value=k>=0?k:0}catch{X.value=[],K.value=0}finally{Y.value=!1}}async function q(){if(!$.sessionsApi){$.showToast?.("Sessions are only available in Node/CLI mode.");return}V.value=!1,U.value=!0,await B()}async function E(D){let j=$.sessionsApi,w=X.value[K.value];if(!j||!w)return;await H({title:"Switch Session",targetLabel:String(w.title||w.id),run:async()=>{let f=String($.store.state.sessionId??"");await j.use(w.id),C4("session_switch_run",{from:f,to:String(w.id),kind:"use"}),await D?.after?.()}})}async function P(D){let j=$.sessionsApi;if(!j){$.showToast?.("Sessions are only available in Node/CLI mode.");return}await H({title:"New Session",targetLabel:"a new session",run:async()=>{let w=String($.store.state.sessionId??"");await j.createNew(),C4("session_switch_run",{from:w,to:String($.store.state.sessionId??""),kind:"new"}),await D?.after?.()}})}async function O(){let D=Z.value;if(!D)return;_.value=!1,Z.value=null,$.store.interrupt(),C4("session_switch_confirm",{title:G.value,target:J.value,reason:Q.value}),await D.run(),U.value=!1,V.value=!1,G.value="Switch Session",J.value="",Q.value=""}function L(){_.value=!1,Z.value=null,C4("session_switch_cancel",{title:G.value,target:J.value,reason:Q.value}),G.value="Switch Session",J.value="",Q.value=""}return U4$([U,()=>String($.store.state.sessionId??"").trim()],([D,j])=>{if(!D)return;if(!$.sessionsApi||!j)return;B({preferId:j})}),{showSessions:U,showSwitchConfirm:_,switchConfirmTitle:G,switchConfirmTargetLabel:J,switchConfirmReason:Q,sessionsLoading:Y,sessionsDeleteArmed:V,sessionsList:X,sessionsIndex:K,refreshSessions:B,openSessionsDialog:q,openSelectedSession:E,createNewSession:P,confirmSwitch:O,cancelSwitch:L}}import{computed as _4$,ref as V_}from"vue";function IS($){let U=String($??"").trim();if(!U)return"";return`***${U.slice(-4)||"****"}`}function XY($){let U=V_(!1),_=V_(!1),G=V_(""),J=V_(""),Q=V_(""),Y=V_(""),V=V_(""),X=_4$(()=>{let q=$.store.state.context?.env??{};return IS(q.OPENAI_API_KEY)});function K(){return $.store.state.paused?.kind==="tool_approval"||$.store.state.approval.active?.status==="pending"}function Z(){G.value="",J.value="",Q.value="",Y.value="",V.value="",U.value=!0,queueMicrotask(()=>{G.value=String($.store.state.config.model??"").trim()||"deepseek-v3.1",J.value=String($.store.state.config.context_window??128000),Q.value=String($.store.state.config.temperature??"");let q=$.store.state.context?.env??{};Y.value=String(q.GOATCHAIN_OPENAI_BASE_URL||q.OPENAI_BASE_URL||""),V.value=""})}function W(){U.value=!1}function N(){if($.guardPendingApprovals!==!1&&K()){$.showToast("Resolve the pending approval before changing settings.");return}let q=G.value.trim();if(q)$.store.state.config.model=q;$.store.state.config.context_window=K4(Number.parseInt(J.value||"0",10)||$.store.state.config.context_window,1000,2000000);let E=Number.parseFloat(Q.value);$.store.state.config.temperature=Number.isFinite(E)?E:$.store.state.config.temperature,$.store.setEnvVar("GOATCHAIN_MODEL",$.store.state.config.model),$.store.setEnvVar("GOATCHAIN_CONTEXT_WINDOW",String($.store.state.config.context_window)),$.store.setEnvVar("GOATCHAIN_TEMPERATURE",String($.store.state.config.temperature??"")),$.store.setEnvVar("GOATCHAIN_OPENAI_BASE_URL",Y.value.trim()||void 0);let P=V.value.trim();if(P)$.store.setEnvVar("OPENAI_API_KEY",P);if($.nodeLike){let O=globalThis.process;if(O?.env){O.env.GOATCHAIN_MODEL=$.store.state.config.model,O.env.GOATCHAIN_CONTEXT_WINDOW=String($.store.state.config.context_window),O.env.GOATCHAIN_TEMPERATURE=String($.store.state.config.temperature??"");let L=Y.value.trim();if(L)O.env.GOATCHAIN_OPENAI_BASE_URL=L;else delete O.env.GOATCHAIN_OPENAI_BASE_URL;if(P)O.env.OPENAI_API_KEY=P}}V.value="",W()}function H(){if(K()){$.showToast("Resolve the pending approval before changing settings.");return}_.value=!0}function B(q){if($.store.state.approval.mode=q,$.store.setEnvVar("GOATCHAIN_TOOL_APPROVALS",q),$.nodeLike){let E=globalThis.process;if(E?.env)E.env.GOATCHAIN_TOOL_APPROVALS=q}$.showToast(`Tool approvals: ${q}`)}return{showConfig:U,showToolApprovals:_,modelId:G,contextWindow:J,temperature:Q,baseUrl:Y,apiKeyDraft:V,apiKeyMasked:X,openConfig:Z,closeConfig:W,applyConfig:N,openToolApprovals:H,applyToolApprovals:B}}function KY($){let U=$.store.state.context?.env??{},_=(Y)=>{if(typeof $.store.showUpgradeNotification==="function")$.store.showUpgradeNotification(Y);else $.showToast(Y)};if($.nodeLike)globalThis.__GOATCHAIN_UPGRADE_TOAST__=_;let G=String(U.GOATCHAIN_STARTUP_UPGRADE_TOAST??"").trim();if(G){if(_(G),$.store.setEnvVar("GOATCHAIN_STARTUP_UPGRADE_TOAST",void 0),$.nodeLike){let Y=globalThis.process;if(Y?.env)delete Y.env.GOATCHAIN_STARTUP_UPGRADE_TOAST}}if($.nodeLike)J4$(U,_);let J=String(U.GOATCHAIN_STARTUP_TOAST??"").trim();if(!J)return;if($.showToast(J),$.store.setEnvVar("GOATCHAIN_STARTUP_TOAST",void 0),!$.nodeLike)return;let Q=globalThis.process;if(Q?.env)delete Q.env.GOATCHAIN_STARTUP_TOAST}async function J4$($,U){try{let{getGoatChainUserDir:_}=await Promise.resolve().then(() => m3),[{readFile:G,unlink:J},Q]=await Promise.all([import("node:fs/promises"),import("node:path")]),Y=await _($),V=Q.join(Y,"upgrade-toast.json"),X=await G(V,"utf8"),K=JSON.parse(X),Z=String(K?.message??"").trim();if(await J(V),Z)U(Z)}catch{}}import{onBeforeUnmount as G4$,ref as vS}from"vue";function ZY($=1200){let U=vS(!1),_=vS(""),G=null,J=(Q)=>{if(_.value=String(Q??""),U.value=!0,G)clearTimeout(G);G=setTimeout(()=>{U.value=!1,G=null},Math.max(0,$))};return G4$(()=>{if(G)clearTimeout(G);G=null}),{visible:U,text:_,show:J}}var MO=Q4$({name:"GoatChainChatPage",setup(){let $=XU(),U=lJ(),_=FQ(),G=s4(),{events:J,scheduler:Q}=P4(),Y=Y4$(G_,null);if(!Y)throw Error("GoatChainBridge is missing (did you forget to wrap with <GoatChainProvider />?)");let{store:V,sessions:X}=Y,K=G1(()=>G.clipRect?.w??0),Z=G1(()=>G.clipRect?.h??0),W=K2(""),N=G1(()=>{let q$=[];for(let d$ of V.state.messages){if(!d$||d$.role!=="user")continue;let M4=String(d$.content??""),$6=$U(M4).trim();if(!$6)continue;q$.push($6)}return q$}),H=K2(N.value.length),B=K2([]),q=K2("input"),E=K2(V.getMode?.()??"agent");function P(q$=1){let d$=["plan","agent"],M4=E.value,k6=(d$.indexOf(M4)+q$+d$.length)%d$.length,m6=d$[k6]??"agent";E.value=m6,V.setMode?.(m6)}let O=MS({cols:K,rows:Z,input:W,hasRevertedMessages:V.hasRevertedMessages}),{contentW:L,mainW:T,mainH:D,mainY:j,panelW:w,panelX:f,panelTopY:k,panelH:A,inputX:R,inputInnerW:M,inputLines:S,modelRowGap:I,inputWrapWidth:z,footerH:C}=O,b=ZY(1200),y=b.visible,g=b.text,n=b.show,$$=TS({store:V,uiMode:E,copyToastVisible:y,copyToastText:g}),{headerStatsDisplay:B$,ctxPctChip:o$,modelInfo:j$,modeLabel:N$,assistantStatusDisplay:m,assistantStatusStyle:o,isLoading:d,loadingDots:l,footerRight:i}=$$,u=XY({store:V,nodeLike:$,showToast:n}),{showConfig:J$,showToolApprovals:Z$,modelId:E$,contextWindow:H$,temperature:r$,baseUrl:Z4,apiKeyDraft:l4,apiKeyMasked:F4,openConfig:y4,closeConfig:W4,applyConfig:K6,openToolApprovals:b4,applyToolApprovals:s$}=u,V4=VY({store:V,sessionsApi:X,showToast:n}),{showSessions:i4,showSwitchConfirm:z6,switchConfirmTitle:k4,switchConfirmTargetLabel:g6,switchConfirmReason:q1,openSelectedSession:n6,createNewSession:u6,confirmSwitch:p6,cancelSwitch:r4,sessionsLoading:x4,sessionsDeleteArmed:g4,sessionsList:u4,sessionsIndex:q4,refreshSessions:L$,openSessionsDialog:u$}=V4,a4=YY({store:V,cols:K,rows:Z,nodeLike:$}),{showPathPicker:Q$,pathPickerMode:D$,pathPickerQuery:f$,pathPickerError:z$,pickerWorkspace:C$,pickerW:i$,pickerH:v,pathPickerTitle:x,pathPickerPlaceholder:r,closePathPicker:U$}=a4;KY({store:V,nodeLike:$,showToast:n});let _$=[{value:"/new",detail:"Start a new session",onSelect:()=>{u6({after:async()=>U.push("home")}),W.value=""}},{value:"/sessions",detail:"List/pick sessions",onSelect:()=>{u$(),W.value=""}},{value:"/settings",detail:"Configure model + API",onSelect:()=>{y4(),W.value=""}},{value:"/approvals",detail:"Configure tool approvals (auto/all)",onSelect:()=>TO("/approvals")}],Y$=K2(!1),O$=K2(0),P$=K2(!1),k$=K2(null),l$=LS({store:V,rows:Z,contentW:L,focusMode:q,showSessions:i4,showSwitchConfirm:z6,showConfig:J$,showToolApprovals:Z$,showPathPicker:Q$,showMessageActions:Y$,showRedoConfirm:P$}),{showCommands:g$,commandIndex:$4,showTheme:A4,showApproval:m$,showAskUser:_4,showExitConfirm:T4,activeApproval:Z6,approvalW:B4,approvalH:v$,activeAskUser:c$,askUserW:a$,askUserH:h$,configW:Q4,configH:b$,toolApprovalsW:X4,toolApprovalsH:D4,anyDialogOpen:t4,openCommandPalette:G6,closeCommandPalette:n4}=l$;sJ(B,(q$)=>{V.setFocusFiles(q$)});let f4=G1(()=>String(V.state.sessionId??"").trim());sJ(f4,(q$)=>{if(!X||!q$)return;L$({preferId:q$})},{immediate:!0}),sJ(()=>[f4.value,N.value.length],([q$,d$],M4)=>{let[$6,k6]=M4??[void 0,0];if(q$!==$6){H.value=d$;return}if(d$!==k6&&H.value>=k6)H.value=d$;else if(H.value>d$)H.value=d$},{immediate:!0});let j4=G1(()=>{let q$=f4.value;if(!q$)return null;return u4.value.find((d$)=>d$.id===q$)??null}),q6=G1(()=>{return`# ${f4.value||"new"}`}),ZU=G1(()=>{let q$=String(j4.value?.summary??"").trim();if(q$)return q$;let d$=V.state.messages.find(($6)=>$6.role==="user");return String(d$?.content??"").trim()||"New session"}),Q1=G1(()=>[...GY({openSessionsDialog:()=>void u$(),createNewSession:()=>void u6(),openConfig:y4,openToolApprovals:b4}),{label:"Theme",detail:"Message colors",run:()=>A4.value=!0}]),X0=G1(()=>Q1.value.map((q$)=>({label:q$.label,detail:q$.detail})));function Z2(q$){if(n4(),!q$)return;Q1.value.find((M4)=>M4.label===q$)?.run()}let IG=TT(),OY=G1(()=>{let q$=Math.max(0,T.value-4);return IG({messages:V.state.messages,width:q$,selectedToolCallId:V.state.selectedToolCallId,expandedBashOutputs:V.state.expandedBashOutputs,theme:V.state.ui.theme})}),WU={get value(){return OY.value}},vG=-1,_8=new Map,qY=G1(()=>{let q$=V.state.messages.length;if(q$===vG&&_8.size>0)return _8;let d$=new Map;for(let M4 of V.state.messages){let $6=String(M4?.id??"").trim(),k6=String(M4?.role??"").trim();if(!$6)continue;if(k6==="user"||k6==="assistant"||k6==="tool")d$.set($6,k6)}return vG=q$,_8=d$,d$}),a=G1(()=>{let q$=Array.from(WU.value.toolLineById.entries());return q$.sort((d$,M4)=>d$[1]-M4[1]),q$.map(([d$])=>d$)}),N4=PS({lines:G1(()=>WU.value.lines),mainH:D}),{scrollTop:E4,stickToBottom:D6,maxScroll:I0,visibleLines:v0,onWheel:J8}=N4,C0=kS({nodeLike:$,store:V,mainY:j,mainH:D,scrollTop:E4,lines:G1(()=>WU.value.lines),focusMode:q,messageActionsTargetId:k$,showMessageActions:Y$,copyTextToClipboard:_Y,showCopyToast:n}),{messageSelectStart:NU,messageSelectEnd:y0,hasMessageSelection:W2,focusBrowserTextarea:h6,getSelectedMessageText:W6,clearMessageSelection:Z_,onMessageClick:CG,onMessagePointerDown:yG,onMessagePointerMove:bG,onMessagePointerUp:VI,onMessageContextMenu:XI}=C0;function KI(q$){if(!q$||q$.type==="none")return;if(h6(),q$.type==="selectToolCall"){q.value="messages",V.selectToolCall(V.state.selectedToolCallId===q$.callId?null:q$.callId);return}if(q$.type==="openApproval"){if(Z6.value)m$.value=!0;return}if(q$.type==="toggleItem"){V.toggleChecklist(q$.messageId,q$.part,q$.itemId);return}if(q$.type==="toggleCollapse"){V.toggleBlockCollapsed(q$.messageId,q$.part,q$.partIndex);return}if(q$.type==="toggleBashOutput"){V.toggleBashOutput(q$.toolCallId);return}if(q$.type==="showMessageActions")k$.value=q$.messageId,Y$.value=!0}function ZI(){let q$=k$.value;if(!q$)return;V.revertFromMessage(q$),Y$.value=!1,k$.value=null,D6.value=!0}function WI(){let q$=k$.value;if(!q$)return;let d$=V.state.messages.find(($6)=>$6.id===q$);if(!d$)return;let M4=AS(d$);if(M4)_Y(M4);Y$.value=!1,k$.value=null}function NI(){V.restoreRevertedMessages(),P$.value=!1,D6.value=!0}function FI(){P$.value=!1}async function BI(){let q$=k$.value;if(!q$)return;let d$=RS(V.state.messages,q$);if(!d$)return;Y$.value=!1,k$.value=null,O$.value=0;try{await zS({sessionsApi:X,store:V,seed:d$})}catch{n("Failed to fork session.")}D6.value=!0,W.value="",B.value=[]}let xG=G1(()=>V.state.selectedToolCallId);async function HI(){if(!xG.value||V.state.runningToolCallId)return;await V.runToolCall(xG.value)}function OI(q$){let d$=WU.value.toolLineById.get(q$);if(d$==null)return;let M4=Math.max(0,d$);if(M4<E4.value){E4.value=K4(M4,0,I0.value);return}let $6=E4.value+Math.max(1,D.value)-1;if(d$>$6)E4.value=K4(d$-Math.max(1,D.value)+1,0,I0.value)}function qI(q$){let d$=a.value;if(d$.length===0)return;let M4=xG.value,$6=M4?d$.indexOf(M4):-1,k6=(()=>{if($6<0)return d$.length-1;let W_=$6+q$;if(W_<0)return d$.length-1;if(W_>=d$.length)return 0;return W_})(),m6=d$[k6];if(!m6)return;V.selectToolCall(m6),OI(m6)}function TO(q$){let d$=Boolean(V.state.approval.pendingAutoRun)||Boolean(V.state.approval.active&&V.state.approval.active.status==="pending")||V.state.approval.queue.length>0;if(d.value&&!V.state.paused&&!d$){n("Please wait for the current response to complete, or press Esc to interrupt.");return}let M4=$U(q$),$6=M4.trimEnd(),k6=B.value;if(!$6&&k6.length===0)return;let m6=JY($6);if(m6.kind==="approvals"){b4(),W.value="";return}if(m6.kind==="approvals_invalid_args"){n("Use /approvals (no on/off)."),W.value="";return}if(m6.kind==="settings"){y4(),W.value="";return}if(m6.kind==="sessions"){u$(),W.value="";return}if(m6.kind==="new"){u6({after:async()=>U.push("home")}),W.value="";return}if(m6.kind==="redo"){if(V.hasRevertedMessages.value)P$.value=!0;W.value="";return}if(D6.value=!0,k6.length>0)M4=M4.replace(/^[\s\u200B]*\]+/u,""),V.sendUserInput({content:M4,focusFiles:k6});else V.send(M4);B.value=[],H.value=N.value.length,W.value=""}async function SO(){if(V.interrupt(),V.state.sessionId="",V.setEnvVar("GOATCHAIN_SESSION_ID",void 0),XU()){let q$=globalThis.process;if(q$?.env)delete q$.env.GOATCHAIN_SESSION_ID}V.state.messages.splice(0,V.state.messages.length),V.state.revertedMessages.splice(0,V.state.revertedMessages.length),V.state.selectedToolCallId=null,V.state.runningToolCallId=null,V.state.paused=null,V.state.approval.active=null,V.state.approval.pendingAutoRun=null,V.state.approval.queue=[],V.state.approval.decisions={},V.state.approval.approvedToolCalls={},V.state.usage.prompt_tokens=0,V.state.usage.completion_tokens=0,V.state.usage.total_tokens=0,await U.push("home")}sJ(()=>_.value.params,(q$)=>{if(q$?.open==="settings")y4(),U.replace("chat")},{immediate:!0});function DI(q$){V.setCwd(q$)}let jI=wS({nodeLike:$,store:V,events:J,input:W,inputWrapWidth:z,history:N,historyIndex:H,focusMode:q,toolCallIds:a,selectedToolCallId:xG,moveToolSelection:qI,runSelected:HI,anyDialogOpen:t4,showCommands:g$,showTheme:A4,showSessions:i4,showMessageActions:Y$,showRedoConfirm:P$,showConfig:J$,showToolApprovals:Z$,showApproval:m$,showAskUser:_4,showPathPicker:Q$,showExitConfirm:T4,openCommandPalette:G6,closeCommandPalette:n4,openConfig:y4,closeConfig:W4,closePathPicker:U$,cycleUiMode:P,isLoading:d,hasMessageSelection:W2,clearMessageSelection:Z_,getSelectedMessageText:W6,copyTextToClipboard:_Y,exitSessionToHome:SO}),{onInputKeydown:EI,onSelectionKeydown:MI,onGlobalKeydown:PI,onGlobalKeydownCapture:fI}=jI;function LI(){let q$=J.value;if(!q$||typeof q$.debugNodes!=="function"||typeof q$.focus!=="function")return;let d$=Math.floor(R.value),M4=Math.floor(k.value),$6=Math.floor(M.value),k6=Math.floor(S.value),m6=(q$.debugNodes?.()??[]).filter((b0)=>b0?.visible&&b0?.focusable),W_=m6.find((b0)=>{let c6=b0?.rect;return c6&&c6.x===d$&&c6.y===M4&&c6.w===$6&&c6.h===k6});if(W_?.id){q$.focus(W_.id);return}let vO=d$+Math.floor(Math.max(0,$6-1)/2),CO=M4+Math.floor(Math.max(0,k6-1)/2),yO=m6.filter((b0)=>{let c6=b0?.rect;return c6&&vO>=c6.x&&CO>=c6.y&&vO<c6.x+c6.w&&CO<c6.y+c6.h});yO.sort((b0,c6)=>{let xO=b0?.zIndex??0,gO=c6?.zIndex??0;if(gO!==xO)return gO-xO;let uO=b0?.rect??{w:0,h:0},hO=c6?.rect??{w:0,h:0};return uO.w*uO.h-hO.w*hO.h});let bO=yO[0];if(bO?.id)q$.focus(bO.id),Q.invalidate()}async function IO(){await V4$(),queueMicrotask(()=>{queueMicrotask(()=>{setTimeout(()=>{h6(),LI()},0)})})}return sJ(t4,(q$)=>{if(q$)return;IO()}),sJ(d,(q$,d$)=>{if(q$||!d$)return;if(t4.value||W2.value)return;q.value="input",IO()}),X4$(d1,{nodeLike:$,router:U,store:V,sessionsApi:X,cols:K,rows:Z,contentW:L,mainY:j,mainW:T,mainH:D,scrollTop:E4,visibleLines:v0,messageRoleById:qY,messageSelectStart:NU,messageSelectEnd:y0,focusMode:q,onWheel:J8,onSelectionKeydown:MI,onMessageClick:CG,onMessagePointerDown:yG,onMessagePointerMove:bG,onMessagePointerUp:VI,onMessageContextMenu:XI,onLineClick:KI,focusBrowserTextarea:h6,showCopyToast:n,sessionHeaderTitle:q6,sessionHeaderSummary:ZU,headerStatsDisplay:B$,panelW:w,panelX:f,panelTopY:k,panelH:A,inputX:R,inputInnerW:M,inputLines:S,modelRowGap:I,input:W,focusFiles:B,pickerWorkspace:C$,promptSuggestions:_$,showCommands:g$,showTheme:A4,showSessions:i4,showMessageActions:Y$,showRedoConfirm:P$,showConfig:J$,showToolApprovals:Z$,showApproval:m$,showPathPicker:Q$,pathPickerMode:D$,pathPickerQuery:f$,pathPickerError:z$,send:TO,onInputKeydown:EI,setContextCwd:DI,ctxPctChip:o$,modelInfo:j$,modeLabel:N$,assistantStatusDisplay:m,assistantStatusStyle:o,footerH:C,footerRight:i,isLoading:d,loadingDots:l,commandOptions:X0,commandIndex:$4,onCommandSelect:Z2,closeCommandPalette:n4,refreshSessions:L$,sessionsLoading:x4,sessionsDeleteArmed:g4,sessionsList:u4,sessionsIndex:q4,showSwitchConfirm:z6,switchConfirmTitle:k4,switchConfirmTargetLabel:g6,switchConfirmReason:q1,openSelectedSession:n6,createNewSession:u6,confirmSwitch:p6,cancelSwitch:r4,messageActionsIndex:O$,messageActionsTargetId:k$,handleRevertMessage:ZI,handleCopyMessage:WI,handleForkSession:BI,confirmRestore:NI,cancelRestore:FI,pickerW:i$,pickerH:v,pathPickerTitle:x,pathPickerPlaceholder:r,configW:Q4,configH:b$,modelId:E$,contextWindow:H$,temperature:r$,baseUrl:Z4,apiKeyDraft:l4,apiKeyMasked:F4,applyConfig:K6,closeConfig:W4,toolApprovalsW:X4,toolApprovalsH:D4,applyToolApprovals:s$,activeApproval:Z6,approvalW:B4,approvalH:v$,activeAskUser:c$,showAskUser:_4,askUserW:a$,askUserH:h$,showExitConfirm:T4,exitSessionToHome:SO}),()=>X_(c4,{x:0,y:0,w:K.value,h:Z.value,zIndex:0,focusable:!1,onKeydownCapture:fI,onKeydown:PI},()=>[X_(s,{key:"bg",x:0,y:0,w:K.value,h:Z.value,value:"",style:uQ,zIndex:-100}),X_(yT),X_(gT),X_(vT),X_(CT),X_(jS)])}});import{computed as t$,defineComponent as Z4$,h as d4,inject as W4$,ref as S0,watch as bS}from"vue";var CS=7,K4$=["________ ________ ________ _________ ________ ___ ___ ________ ___ ________","|\\ ____\\|\\ __ \\|\\ __ \\|\\___ ___\\ |\\ ____\\|\\ \\|\\ \\|\\ __ \\|\\ \\|\\ ___ \\","\\ \\ \\___|\\ \\ \\|\\ \\ \\ \\|\\ \\|___ \\ \\_| \\ \\ \\___|\\ \\ \\\\\\ \\ \\ \\|\\ \\ \\ \\ \\ \\\\ \\ \\"," \\ \\ \\ __\\ \\ \\\\\\ \\ \\ __ \\ \\ \\ \\ \\ \\ \\ \\ \\ __ \\ \\ __ \\ \\ \\ \\ \\\\ \\ \\"," \\ \\ \\|\\ \\ \\ \\\\\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\____\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\\\ \\ \\"," \\ \\_______\\ \\_______\\ \\__\\ \\__\\ \\ \\__\\ \\ \\_______\\ \\__\\ \\__\\ \\__\\ \\__\\ \\__\\ \\__\\\\ \\__\\"," \\|_______|\\|_______|\\|__|\\|__| \\|__| \\|_______|\\|__|\\|__|\\|__|\\|__|\\|__|\\|__| \\|__|"];function yS($,U=1){return K4$}var xS="";function N4$($){return`[... ${($.match(/\n/g)||[]).length+1} lines]`}function F4$($,U){if(!$)return"";let _="",G=0;for(let J=0;J<$.length;){if($[J]===xS){_+=U[G]??"",G++,J+=1;continue}let Y=$.codePointAt(J)??0,V=String.fromCodePoint(Y);_+=V,J+=V.length}return _}function B4$($,U){if(!$)return"";let _="",G=0;for(let J=0;J<$.length;){if($[J]===xS){let X=U[G]??"";_+=N4$(X),G++,J+=1;continue}let Y=$.codePointAt(J)??0,V=String.fromCodePoint(Y);_+=V,J+=V.length}return _}var PO=Z4$({name:"GoatChainHomePage",setup(){let $=lJ(),U=s4(),{events:_}=P4(),G=t$(()=>U.clipRect?.w??0),J=t$(()=>U.clipRect?.h??0),Q=W4$(G_,null);if(!Q)throw Error("GoatChainBridge is missing (did you forget to wrap with <GoatChainProvider />?)");let{store:Y,sessions:V}=Q,X=XU(),K=S0(""),Z=S0(!1),W=S0(!1),N=S0(0),H=S0([]),B=S0([]),q=S0(!1),E=S0(""),P=S0("Multiline Text"),O=S0(Y.getMode?.()??"agent");function L(a=1){let N4=["plan","agent"],E4=O.value,I0=(N4.indexOf(E4)+a+N4.length)%N4.length,v0=N4[I0]??"agent";O.value=v0,Y.setMode?.(v0)}function T(a){let N4=B.value[a];if(N4){E.value=N4;let E4=(N4.match(/\n/g)||[]).length+1;P.value=`Multiline Text (${E4} lines)`,q.value=!0}}function D(){q.value=!1}let j=ZY(1200),w=j.visible,f=j.text,k=j.show,A=XY({store:Y,nodeLike:X,showToast:k,guardPendingApprovals:!1}),{showConfig:R,showToolApprovals:M,modelId:S,contextWindow:I,temperature:z,baseUrl:C,apiKeyDraft:b,apiKeyMasked:y,openConfig:g,closeConfig:n,applyConfig:$$,openToolApprovals:B$,applyToolApprovals:o$}=A,j$=VY({store:Y,sessionsApi:V,showToast:k}),{showSessions:N$,showSwitchConfirm:m,switchConfirmTitle:o,switchConfirmTargetLabel:d,switchConfirmReason:l,confirmSwitch:i,cancelSwitch:u,sessionsLoading:J$,sessionsDeleteArmed:Z$,sessionsList:E$,sessionsIndex:H$,refreshSessions:r$,openSessionsDialog:Z4,openSelectedSession:l4,createNewSession:F4}=j$,y4=YY({store:Y,cols:G,rows:J,nodeLike:X}),{showPathPicker:W4,pathPickerMode:K6,pathPickerQuery:b4,pathPickerError:s$,pickerWorkspace:V4,pickerW:i4,pickerH:z6,pathPickerTitle:k4,pathPickerPlaceholder:g6,openPathPicker:q1,closePathPicker:n6}=y4;KY({store:Y,nodeLike:X,showToast:k});let u6=[{value:"/sessions",detail:"List/pick sessions",onSelect:()=>{Z4(),K.value="",B.value=[]}},{value:"/settings",detail:"Configure model + API",onSelect:()=>{g(),K.value="",B.value=[]}},{value:"/new",detail:"Start a new session",onSelect:()=>{F4(),K.value="",B.value=[]}},{value:"/approvals",detail:"Configure tool approvals (auto/all)",onSelect:()=>{K.value="/approvals",IG()}}];bS(H,(a)=>{Y.setFocusFiles(a)});let p6=t$(()=>{return[...GY({openSessionsDialog:()=>void Z4(),createNewSession:()=>void F4(),openConfig:g,openToolApprovals:B$})]}),r4=t$(()=>p6.value.map((a)=>({label:a.label,detail:a.detail}))),x4=t$(()=>({fg:"whiteBright",bg:"black"})),g4=t$(()=>({fg:"white",dim:!0,bg:"black"})),u4=t$(()=>({fg:"whiteBright",bg:"blackBright"})),q4=t$(()=>({fg:"whiteBright",bg:"blackBright"})),L$=t$(()=>({fg:"blueBright",bg:"blackBright"})),u$=t$(()=>G.value>=70&&J.value>=26),a4=t$(()=>u$.value?1:0),Q$=t$(()=>u$.value?2:1),D$=t$(()=>u$.value?yS("goat",a4.value):["goat"]),f$=t$(()=>u$.value?CS:1),z$=t$(()=>y$(D$.value[0]??"")),C$=t$(()=>z$.value+Q$.value),i$=t$(()=>Math.max(0,Math.floor((G.value-C$.value)/2))),v=t$(()=>{let a=Math.max(0,Math.floor(G.value));if(a<=0)return 0;let N4=Math.min(44,a),E4=Math.max(N4,a-8);return K4(Math.floor(a*0.72),N4,E4)}),x=t$(()=>Math.max(0,Math.floor((G.value-v.value)/2))),r=2,U$=t$(()=>x.value+1+r),_$=t$(()=>Math.max(0,v.value-1-r)),Y$=t$(()=>Math.max(1,_$.value)),O$=t$(()=>{if(!K.value)return 1;let a=Y$.value;if(a<=0)return 1;let N4=B4$(K.value,B.value);return Math.max(1,h1(N4,a).length)}),P$=t$(()=>K4(O$.value,1,7)),k$=1,l$=1,g$=t$(()=>k$+P$.value+l$+1+k$),$4=2,A4=t$(()=>{let a=Math.max(1,J.value-$4-f$.value-g$.value-3);return K4(Math.floor(J.value*0.32),1,a)}),m$=t$(()=>A4.value+f$.value+4),_4=t$(()=>m$.value+g$.value-1),T4=t$(()=>m$.value+k$),Z6=t$(()=>T4.value+P$.value+l$),B4=t$(()=>Array.from({length:Math.max(0,g$.value)},()=>"┃").join(`
852
852
  `)),v$=t$(()=>W.value||W4.value||N$.value||R.value||M.value||q.value);function c$(){if(X)return;try{globalThis.document?.querySelector?.("[data-vt-host] textarea")?.focus?.()}catch{}}function a$(){let a=_.value;if(!a||typeof a.debugNodes!=="function"||typeof a.focus!=="function")return;let N4=Math.floor(U$.value),E4=Math.floor(T4.value),D6=Math.floor(_$.value),I0=Math.floor(P$.value),v0=(a.debugNodes?.()??[]).filter((h6)=>h6?.visible&&h6?.focusable),J8=v0.find((h6)=>{let W6=h6?.rect;return W6&&W6.x===N4&&W6.y===E4&&W6.w===D6&&W6.h===I0});if(J8?.id){a.focus(J8.id);return}let C0=N4+Math.floor(Math.max(0,D6-1)/2),NU=E4+Math.floor(Math.max(0,I0-1)/2),y0=v0.filter((h6)=>{let W6=h6?.rect;return W6&&C0>=W6.x&&NU>=W6.y&&C0<W6.x+W6.w&&NU<W6.y+W6.h});y0.sort((h6,W6)=>{let Z_=h6?.zIndex??0,CG=W6?.zIndex??0;if(CG!==Z_)return CG-Z_;let yG=h6?.rect??{w:0,h:0},bG=W6?.rect??{w:0,h:0};return yG.w*yG.h-bG.w*bG.h});let W2=y0[0];if(W2?.id)a.focus(W2.id)}bS(v$,(a)=>{if(a)return;setTimeout(()=>{c$(),a$()},0)});let h$=t$(()=>{return{build:"■",label:String(Y.state.config.model??"model")}}),Q4=t$(()=>O.value),b$=" ",X4=t$(()=>"tab"),D4=t$(()=>"mode"),t4=t$(()=>"ctrl+p"),G6=t$(()=>"commands"),n4=t$(()=>{return y$(X4.value)+1+y$(D4.value)+y$(b$)+y$(t4.value)+1+y$(G6.value)}),f4=t$(()=>{let a=n4.value;if(a<=0)return 0;let N4=x.value+v.value-a,E4=Math.max(0,G.value-a);return K4(N4,0,E4)}),j4=t$(()=>_4.value+2),q6=t$(()=>j4.value>=0&&j4.value<=J.value-$4-1&&f4.value+n4.value<=G.value),ZU=t$(()=>{return V4.value}),Q1=t$(()=>{let a=Y.state.context?.env??{},N4=a.GOATCHAIN_VERSION||a.VUE_TERMINAL_VERSION,E4=N4?`v${N4}`:"";return w.value&&f.value?`${E4} ${f.value}`:E4});function X0(a){$.push(a)}function Z2(a){Y.setCwd(a)}async function IG(){let N4=F4$(K.value,B.value).trim(),E4=H.value;if(!N4&&E4.length===0)return;let D6=JY(N4);if(D6.kind==="approvals"){B$(),K.value="",B.value=[];return}if(D6.kind==="approvals_invalid_args"){k("Use /approvals (no on/off)."),K.value="",B.value=[];return}if(D6.kind==="settings"){g(),K.value="",B.value=[];return}if(D6.kind==="sessions"){await Z4(),K.value="",B.value=[];return}if(D6.kind==="new"){await F4(),K.value="",B.value=[];return}if(D6.kind==="redo"){k("Redo is only available in the chat view."),K.value="",B.value=[];return}if(K.value="",B.value=[],X0("chat"),E4.length>0)Y.sendUserInput({content:N4,focusFiles:E4});else Y.sendUser(N4);H.value=[]}function OY(){W.value=!0,N.value=0}function WU(){W.value=!1}function vG(a){if(v$.value)return;if(a?.key==="Tab"&&!a?.metaKey&&!a?.ctrlKey&&!a?.altKey)a?.stopPropagation?.(),a?.preventDefault?.(),L(a.shiftKey?-1:1)}function _8(a){if(a?.defaultPrevented)return;if((a?.ctrlKey||a?.metaKey)&&(a?.key==="p"||a?.key==="P")){a?.preventDefault?.(),OY();return}if((a?.ctrlKey||a?.metaKey)&&(a?.key==="k"||a?.key==="K")){a?.preventDefault?.(),g();return}if(a?.key==="Tab"&&!a?.metaKey&&!a?.ctrlKey&&!a?.altKey){a?.preventDefault?.(),L(a.shiftKey?-1:1);return}if(a?.key==="Escape")a?.preventDefault?.(),K.value="",B.value=[]}function qY(a){if(WU(),!a)return;p6.value.find((E4)=>E4.label===a)?.run()}return()=>d4(c4,{x:0,y:0,w:G.value,h:J.value,zIndex:0,focusable:!1,onKeydownCapture:vG},()=>[d4(s,{key:"bg",x:0,y:0,w:G.value,h:J.value,value:"",style:x4.value,zIndex:-100}),d4(s,{key:"logo-shadow-open",x:i$.value+1,y:A4.value+1,value:D$.value.join(`
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "goatchain-cli",
3
3
  "type": "module",
4
- "version": "0.0.4-beta.34",
4
+ "version": "0.0.4-beta.35",
5
5
  "description": "GoatChain CLI built on @simon_he/vue-tui",
6
6
  "exports": {
7
7
  ".": {