goatchain-cli 0.0.5-beta.1 → 0.0.5-beta.3

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 +2 -2
  2. package/package.json +1 -1
package/dist/cli.mjs CHANGED
@@ -874,7 +874,7 @@ When referencing specific functions or pieces of code include the pattern \`file
874
874
  user: Where are errors from the client handled?
875
875
  assistant: Clients are marked as failed in the \`connectToServer\` function in src/services/process.ts:712.
876
876
  </example>
877
- `;Q2();async function xA($){let J=V6("0.0.5-beta.1")??await Ft($.cwd),U=await DB($.env),Q=U.cache,_=Q.settings??{},G=V6(_.cwd),V=Array.isArray(_.focusFiles)?_.focusFiles.map((X)=>String(X??"")).filter(Boolean):void 0,Y=$.cwd||G||".",Z={GOATCHAIN_VERSION:J??"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(!Z.GOATCHAIN_MODEL&&V6(_.model))Z.GOATCHAIN_MODEL=String(_.model);if(!Z.GOATCHAIN_CONTEXT_WINDOW&&N8(_.contextWindow)!=null)Z.GOATCHAIN_CONTEXT_WINDOW=String(_.contextWindow);if(!Z.GOATCHAIN_TEMPERATURE&&N8(_.temperature)!=null)Z.GOATCHAIN_TEMPERATURE=String(_.temperature);if(!Z.GOATCHAIN_TOOL_APPROVALS&&_.toolApprovals==="auto")Z.GOATCHAIN_TOOL_APPROVALS="auto";if(!Z.GOATCHAIN_TOOL_APPROVALS&&_.toolApprovals==="all")Z.GOATCHAIN_TOOL_APPROVALS="all";if(!Z.GOATCHAIN_TOOL_APPROVALS&&_.toolApprovals==="manual")Z.GOATCHAIN_TOOL_APPROVALS="auto";if(!Z.GOATCHAIN_OPENAI_BASE_URL&&V6(_.baseUrl))Z.GOATCHAIN_OPENAI_BASE_URL=String(_.baseUrl);if(!Z.OPENAI_API_KEY&&V6(_.apiKey))Z.OPENAI_API_KEY=String(_.apiKey);return{context:{system:yA,cwd:Y,env:Z,...V?.length?{focusFiles:V}:{}},cacheDir:U.dir,cacheFile:U.filePath,cache:Q}}async function Ft($){try{let[{readFile:J},U]=await Promise.all([import("node:fs/promises"),import("node:path")]),Q=await J(U.join($,"package.json"),"utf8"),_=JSON.parse(Q),G=typeof _?.version==="string"?_.version:null;return G&&G.trim()?G.trim():null}catch{return null}}import{watch as hG}from"vue";function a9($,J){let U=String($??"").replace(/\s+/g," ").trim();if(U.length<=J)return U;return`${U.slice(0,Math.max(0,J-1))}…`}function Ht($){if(typeof $==="string")return $;if(Array.isArray($))return $.filter((U)=>U&&typeof U==="object"&&U.type==="text"&&typeof U.text==="string").map((U)=>U.text).join(" ");if($&&typeof $==="object"){let J=$.text;if(typeof J==="string")return J}return""}function o9($){if(!$||typeof $!=="object")return"";let J=String($.role??"");if(J==="user")return Ht($.content);if(J==="tool")return String($.result?.output??"");if(J==="assistant"){let U=Array.isArray($.parts)?$.parts:[],Q=U.filter((G)=>G?.type==="markdown").map((G)=>String(G.markdown??"")).join(`
877
+ `;Q2();async function xA($){let J=V6("0.0.5-beta.3")??await Ft($.cwd),U=await DB($.env),Q=U.cache,_=Q.settings??{},G=V6(_.cwd),V=Array.isArray(_.focusFiles)?_.focusFiles.map((X)=>String(X??"")).filter(Boolean):void 0,Y=$.cwd||G||".",Z={GOATCHAIN_VERSION:J??"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(!Z.GOATCHAIN_MODEL&&V6(_.model))Z.GOATCHAIN_MODEL=String(_.model);if(!Z.GOATCHAIN_CONTEXT_WINDOW&&N8(_.contextWindow)!=null)Z.GOATCHAIN_CONTEXT_WINDOW=String(_.contextWindow);if(!Z.GOATCHAIN_TEMPERATURE&&N8(_.temperature)!=null)Z.GOATCHAIN_TEMPERATURE=String(_.temperature);if(!Z.GOATCHAIN_TOOL_APPROVALS&&_.toolApprovals==="auto")Z.GOATCHAIN_TOOL_APPROVALS="auto";if(!Z.GOATCHAIN_TOOL_APPROVALS&&_.toolApprovals==="all")Z.GOATCHAIN_TOOL_APPROVALS="all";if(!Z.GOATCHAIN_TOOL_APPROVALS&&_.toolApprovals==="manual")Z.GOATCHAIN_TOOL_APPROVALS="auto";if(!Z.GOATCHAIN_OPENAI_BASE_URL&&V6(_.baseUrl))Z.GOATCHAIN_OPENAI_BASE_URL=String(_.baseUrl);if(!Z.OPENAI_API_KEY&&V6(_.apiKey))Z.OPENAI_API_KEY=String(_.apiKey);return{context:{system:yA,cwd:Y,env:Z,...V?.length?{focusFiles:V}:{}},cacheDir:U.dir,cacheFile:U.filePath,cache:Q}}async function Ft($){try{let[{readFile:J},U]=await Promise.all([import("node:fs/promises"),import("node:path")]),Q=await J(U.join($,"package.json"),"utf8"),_=JSON.parse(Q),G=typeof _?.version==="string"?_.version:null;return G&&G.trim()?G.trim():null}catch{return null}}import{watch as hG}from"vue";function a9($,J){let U=String($??"").replace(/\s+/g," ").trim();if(U.length<=J)return U;return`${U.slice(0,Math.max(0,J-1))}…`}function Ht($){if(typeof $==="string")return $;if(Array.isArray($))return $.filter((U)=>U&&typeof U==="object"&&U.type==="text"&&typeof U.text==="string").map((U)=>U.text).join(" ");if($&&typeof $==="object"){let J=$.text;if(typeof J==="string")return J}return""}function o9($){if(!$||typeof $!=="object")return"";let J=String($.role??"");if(J==="user")return Ht($.content);if(J==="tool")return String($.result?.output??"");if(J==="assistant"){let U=Array.isArray($.parts)?$.parts:[],Q=U.filter((G)=>G?.type==="markdown").map((G)=>String(G.markdown??"")).join(`
878
878
  `);if(Q.trim())return Q;let _=U.find((G)=>G?.type==="status");return _?String(_.text??""):""}return""}function hA($){let U=(Array.isArray($)?$:[]).find((_)=>_&&typeof _==="object"&&_.role==="user"&&a9(o9(_),999).length>0),Q=U?o9(U):"";return a9(Q||"New session",60)||"New session"}function uA($){let U=(Array.isArray($)?$:[]).find((_)=>_&&typeof _==="object"&&_.role==="user"&&a9(o9(_),999).length>0),Q=U?o9(U):"";return a9(Q||"New session",120)||"New session"}function mA($){let U=[...Array.isArray($)?$:[]].reverse().find((Q)=>{if(!Q||typeof Q!=="object"||Q.role!=="user")return!1;return a9(o9(Q),999).length>0});return a9(U?o9(U):"",180)}function xG($){return`${$}_${Date.now()}_${Math.random().toString(36).slice(2,9)}`}function MB($){return $!=null&&typeof $==="object"&&!Array.isArray($)}function qt($){let J=String($??"").trim();if(!J)return null;if(!(J.startsWith("[")||J.startsWith("{")))return null;try{let U=JSON.parse(J),Q=Array.isArray(U)?U:[U],_=[];for(let G of Q)if(G&&typeof G==="object"&&G.type==="text"){let V=String(G.text??"").replace(/\r/g,"");if(V)_.push(V)}if(_.length===0)return null;return _.join(`
879
879
  `)}catch{return null}}function i5($){if($==null)return"";if(typeof $==="string")return $;if(Array.isArray($))return $.map(i5).join("");if(MB($)){if(typeof $.text==="string")return String($.text);if(String($.type??"")==="image")return"[image]";try{return JSON.stringify($)}catch{return String($)}}return String($)}function Bt($){if(MB($))return $;if(typeof $==="string"){let J=$.trim();if(!J)return{};try{let U=JSON.parse(J);return MB(U)?U:{_raw:$}}catch{return{_raw:$}}}return{}}function cA($){let J=$?.context?.messages,U=Array.isArray(J)?J:[],Q=[],_=new Map,G=new Map;for(let V of U){let Y=String(V?.role??"");if(Y==="user"){Q.push({id:xG("m"),role:"user",content:i5(V?.content)});continue}if(Y==="assistant"){let Z=[],X=i5(V?.reasoning_content).replace(/\r/g,"").trim();if(X)Z.push({type:"thinking",title:"Thinking",collapsed:!0,content:X});let K=i5(V?.content);if(K)Z.push({type:"markdown",markdown:K});let N=Array.isArray(V?.tool_calls)?V.tool_calls:[];for(let W of N){let H=String(W?.id??"").trim(),q=String(W?.function?.name??"tool"),D=Bt(W?.function?.arguments);if(!H)continue;let j={id:H,name:q,arguments:D};Z.push({type:"tool_call",call:j}),_.set(H,Q.length),G.set(H,q)}Q.push({id:xG("m"),role:"assistant",parts:[{type:"status",text:""},...Z]});continue}if(Y==="tool"){let Z=String(V?.tool_call_id??"").trim(),X=Z?G.get(Z):void 0,K=X!=null&&X.toLowerCase().includes("read"),N=V?.content,H=(K&&typeof N==="string"?qt(N):null)??i5(N),q=V?.isError?"error":"success",D={id:Z||xG("tool"),output:H,status:q};Q.push({id:xG("m"),role:"tool",result:D});let j=Z?_.get(Z):void 0;if(j==null)continue;let B=Q[j];if(!B||B.role!=="assistant")continue;Q[j]={...B,parts:[...B.parts,{type:"tool_result",result:D}]};continue}}return Q}function dA($){let J=[];for(let U of $){if(U.role==="user"){J.push({role:"user",content:String(U.content??"")});continue}if(U.role==="assistant"){let Q=U.parts.filter((Y)=>Y.type==="thinking").map((Y)=>String(Y.content??"")).join(""),_=U.parts.filter((Y)=>Y.type==="markdown").map((Y)=>String(Y.markdown??"")).join(""),G=U.parts.flatMap((Y)=>Y.type==="tool_call"?[Y.call]:[]),V=G.length?G.map((Y)=>({id:Y.id,type:"function",function:{name:Y.name,arguments:Y.arguments}})):void 0;J.push({role:"assistant",content:_,...Q.trim()?{reasoning_content:Q}:{},...V?{tool_calls:V}:{}});continue}if(U.role==="tool")J.push({role:"tool",tool_call_id:String(U.result.id??""),content:String(U.result.output??""),...U.result.status==="error"?{isError:!0}:{}})}return J}Q2();function lA($){return String($?.id??"").trim()}function Ot($){return Number($?.state?.updatedAt??$?.state?.lastActiveAt??0)||0}function iA($){let J=$?.context?.messages;return Array.isArray(J)?J:[]}function jt($){let J=Number($?.context?.messageCount??0);if(Number.isFinite(J)&&J>=0)return J;return iA($).length}function Dt($){let J=$?.stats?.usage;return J&&typeof J==="object"?J:null}function rA($){let J=lA($);if(!J)return null;let U=Ot($),Q=V6($?.metadata?.cwd),_=iA($),G=V6($?.state?.title)??hA(_),V=uA(_),Y=V6($?.context?.lastMessagePreview)??mA(_),Z=jt($);return{id:J,updatedAt:U,cwd:Q??void 0,title:G,summary:V,messageCount:Z,lastMessage:Y}}function r5($,J){let U=lA(J);if(U)$.state.sessionId=U;let Q=cA(J);$.state.messages.splice(0,$.state.messages.length,...Q),$.state.revertedMessages.splice(0,$.state.revertedMessages.length),$.state.selectedToolCallId=null,$.state.runningToolCallId=null,$.state.expandedBashOutputs=new Set,$.state.paused=null,$.state.approval.active=null,$.state.approval.pendingAutoRun=null,$.state.approval.queue=[],$.state.approval.decisions={};for(let G of $.state.messages){if(!G||G.role!=="assistant"||!Array.isArray(G.parts))continue;for(let V of G.parts)if(V?.type==="tool_result"&&V.result&&typeof $.scheduleToolResultHighlight==="function")$.scheduleToolResultHighlight(String(G.id??""),V.result)}let _=Dt(J);if(_){let G=Number(_.promptTokens),V=Number(_.completionTokens);if(Number.isFinite(G))$.state.usage.prompt_tokens=G;if(Number.isFinite(V))$.state.usage.completion_tokens=V;if(Number.isFinite(G)&&Number.isFinite(V))$.state.usage.total_tokens=G+V;else{let Y=Number(_.totalTokens);if(Number.isFinite(Y))$.state.usage.total_tokens=Y}}}function nA($){let J=Array.isArray($)?$:[];return dA(J)}Q2();function pA($){let J=$.store,U=J?.state?.context?.env??{},Q=V6(U.GOATCHAIN_OPENAI_BASE_URL||U.OPENAI_BASE_URL),_=V6(U.OPENAI_API_KEY);return{version:1,updatedAt:Date.now(),settings:{cwd:V6(J?.state?.context?.cwd),focusFiles:J?.state?.context?.focusFiles??void 0,model:V6(J?.state?.config?.model),contextWindow:N8(J?.state?.config?.context_window),temperature:N8(J?.state?.config?.temperature),baseUrl:Q,apiKey:_,toolApprovals:J?.state?.approval?.mode==="all"?"all":"auto"},lastSessionId:V6(J?.state?.sessionId)||$.prev.lastSessionId}}Q2();function aA($,J){let U=null,Q=!1,_=!1,G=async()=>{if(Q){_=!0;return}Q=!0,_=!1;try{await $()}finally{if(Q=!1,_)V()}},V=()=>{if(_=!0,U)clearTimeout(U);U=setTimeout(G,Math.max(0,J||0))};return{schedule:V}}function Et($){return String($?.id??"").trim()}function oA($){let J=null,U=$.sessionsBackend??null;return{sessions:U?{async list(){return(await U.list()).map(rA).filter(Boolean)},async use(G){let V=String(G??"").trim();if(!V||!J)return;if(String(J.state.sessionId??"")===V)return;let Y=await U.get(V);if(!Y)return;r5(J,Y)},async createNew(){if(!J)return;let G=await U.create();if(!G)return;r5(J,G)},async delete(G){let V=String(G??"").trim();if(!V)return;if(await U.destroy(V),J&&String(J.state.sessionId??"")===V)J.state.sessionId=""},async fork(G){if(!J)return;let V=Array.isArray(G?.messages)?G.messages:[];if(typeof U.createWithMessages!=="function"){let Z=await U.create();if(Z)J.state.sessionId=Et(Z);J.state.messages.splice(0,J.state.messages.length,...V),J.state.revertedMessages.splice(0,J.state.revertedMessages.length),J.state.selectedToolCallId=null,J.state.usage.prompt_tokens=0,J.state.usage.completion_tokens=0,J.state.usage.total_tokens=0;return}let Y=await U.createWithMessages(nA(V));if(!Y)return;r5(J,Y)}}:void 0,onStoreCreated:(G)=>{if(J=G,U){let Y=String(G.state.sessionId??"").trim();if(Y)U.get(Y).then((Z)=>{if(Z&&J)r5(J,Z)}).catch(()=>{})}let V=aA(async()=>{try{let Y=pA({prev:$.cache,store:G});await EB($.cacheFile,Y)}catch(Y){console.warn("[goatchain] Failed to persist cache:",Y)}},300);hG(()=>G.state.sessionId,V.schedule),hG(()=>G.state.config,V.schedule,{deep:!0}),hG(()=>G.state.context,V.schedule,{deep:!0}),hG(()=>G.state.approval.mode,V.schedule),V.schedule()}}}Q2();async function PB($){let J=$.sessionsBackend,U=V6($.envSessionId);if(J&&U){if(await J.get(U))return U}return U}function tA(){return async($)=>{let J=String($?.name??"tool");return{id:String($?.id??"tool"),status:"error",output:["Tool execution is handled by the GoatChain agent.",`This UI cannot run tool "${J}" locally.`].join(`
880
880
  `)}}}function Mt($){return sA.join($,"state")}function Pt($){$.env.GOATCHAIN_STATE_DIR=$.stateDir,$.context.env.GOATCHAIN_STATE_DIR=$.stateDir}async function LB($){let{context:J,cacheDir:U,cacheFile:Q,cache:_}=await xA({cwd:$.cwd,env:$.env}),G=Mt(U);Pt({env:$.env,context:J,stateDir:G});let V=bA({context:J,processEnv:$.env,stateDir:G}),Y=V?.__sessions??null,Z=await PB({sessionsBackend:Y,envSessionId:$.env.GOATCHAIN_SESSION_ID});$.env.GOATCHAIN_SESSION_ID=Z??"",J.env.GOATCHAIN_SESSION_ID=Z??"";let{sessions:X,onStoreCreated:K}=oA({cacheFile:Q,cache:_,sessionsBackend:Y});return{toolRunner:tA(),context:J,agent:V,onStoreCreated:K,sessions:X}}var fB=null,uG=null;function eA($){fB=$}function $k($){return uG=$,()=>{if(uG===$)uG=null}}function n5(){let $=uG;if($&&$.isBusy()){$.showConfirm();return}fB?.()}function mG(){fB?.()}import E$$ from"node:fs";import{nextTick as EV}from"vue";var Jk=($=0)=>(J)=>`\x1B[${J+$}m`,Uk=($=0)=>(J)=>`\x1B[${38+$};5;${J}m`,_k=($=0)=>(J,U,Q)=>`\x1B[${38+$};2;${J};${U};${Q}m`,a4={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]}},oH$=Object.keys(a4.modifier),Lt=Object.keys(a4.color),ft=Object.keys(a4.bgColor),tH$=[...Lt,...ft];function zt(){let $=new Map;for(let[J,U]of Object.entries(a4)){for(let[Q,_]of Object.entries(U))a4[Q]={open:`\x1B[${_[0]}m`,close:`\x1B[${_[1]}m`},U[Q]=a4[Q],$.set(_[0],_[1]);Object.defineProperty(a4,J,{value:U,enumerable:!1})}return Object.defineProperty(a4,"codes",{value:$,enumerable:!1}),a4.color.close="\x1B[39m",a4.bgColor.close="\x1B[49m",a4.color.ansi=Jk(),a4.color.ansi256=Uk(),a4.color.ansi16m=_k(),a4.bgColor.ansi=Jk(10),a4.bgColor.ansi256=Uk(10),a4.bgColor.ansi16m=_k(10),Object.defineProperties(a4,{rgbToAnsi256:{value(J,U,Q){if(J===U&&U===Q){if(J<8)return 16;if(J>248)return 231;return Math.round((J-8)/247*24)+232}return 16+36*Math.round(J/255*5)+6*Math.round(U/255*5)+Math.round(Q/255*5)},enumerable:!1},hexToRgb:{value(J){let U=/[a-f\d]{6}|[a-f\d]{3}/i.exec(J.toString(16));if(!U)return[0,0,0];let[Q]=U;if(Q.length===3)Q=[...Q].map((G)=>G+G).join("");let _=Number.parseInt(Q,16);return[_>>16&255,_>>8&255,_&255]},enumerable:!1},hexToAnsi256:{value:(J)=>a4.rgbToAnsi256(...a4.hexToRgb(J)),enumerable:!1},ansi256ToAnsi:{value(J){if(J<8)return 30+J;if(J<16)return 90+(J-8);let U,Q,_;if(J>=232)U=((J-232)*10+8)/255,Q=U,_=U;else{J-=16;let Y=J%36;U=Math.floor(J/36)/5,Q=Math.floor(Y/6)/5,_=Y%6/5}let G=Math.max(U,Q,_)*2;if(G===0)return 30;let V=30+(Math.round(_)<<2|Math.round(Q)<<1|Math.round(U));if(G===2)V+=60;return V},enumerable:!1},rgbToAnsi:{value:(J,U,Q)=>a4.ansi256ToAnsi(a4.rgbToAnsi256(J,U,Q)),enumerable:!1},hexToAnsi:{value:(J)=>a4.ansi256ToAnsi(a4.hexToAnsi256(J)),enumerable:!1}}),a4}var Rt=zt(),$6=Rt;function UJ($){return $.replace(/\r\n/g,`
@@ -909,7 +909,7 @@ assistant: Clients are marked as failed in the \`connectToServer\` function in s
909
909
  `)}),q=HU(()=>0);function D(O){if(O.preventDefault(),O.stopPropagation(),O.key==="Escape")J("close"),Q.invalidate()}let j=F0(()=>({rect:N.value?{x:0,y:0,w:U.snapshot().cols,h:U.snapshot().rows}:{x:0,y:0,w:0,h:0},zIndex:K.value,visible:N.value,focusable:!0,handlers:{click:(O)=>{O.preventDefault(),O.stopPropagation(),J("close"),Q.invalidate()},keydown:D}})),B=F0(()=>({rect:N.value?W.value:{x:0,y:0,w:0,h:0},zIndex:K.value+1,visible:N.value,focusable:!0,handlers:{click:(O)=>{O.preventDefault(),O.stopPropagation();let k=G.value,A=B.id.value;if(k&&A)k.focus(A)},keydown:D}}));return Q$$(()=>{if(!N.value)return;let O=G.value,k=B.id.value||j.id.value;if(!O||!k)return;O.focus(k)}),p6(()=>({zIndex:$.zIndex,rect:N.value?{x:0,y:0,w:U.snapshot().cols,h:U.snapshot().rows}:{x:0,y:0,w:0,h:0},deps:[N.value,W.value,$.content,$.title,$.style,_.value],paint:()=>{if(!N.value)return;let O=U.snapshot(),k=$.style??_.value,A={...k,bg:"black",dim:!0},M=C4(O.cols);for(let V$=0;V$<O.rows;V$++)U.write(M,{x:0,y:V$,style:A});let E=W.value,L=k.fg??_.value.fg??"whiteBright",f=k.bg??_.value.bg??"black",S={...k,fg:"white"},P={...k,fg:L,bg:f},w={...k,dim:!0};U.put(E.x,E.y,X2.tl,S),U.put(E.x+E.w-1,E.y,X2.tr,S),U.put(E.x,E.y+E.h-1,X2.bl,S),U.put(E.x+E.w-1,E.y+E.h-1,X2.br,S);let z=Math.max(0,E.w-2),T=` ${R6($.title)} `,I=Math.min(T.length,z),R=E.x+1;U.write(T.slice(0,I),{x:R,y:E.y,style:S});let v=z-I;if(v>0)U.write(X2.h.repeat(v),{x:R+I,y:E.y,style:S});let C=" Press ESC to close ",b=Math.min(C.length,z),g=E.x+Math.floor((E.w-b)/2),x=g-E.x-1,d=z-x-b;if(x>0)U.write(X2.h.repeat(x),{x:E.x+1,y:E.y+E.h-1,style:S});if(U.write(C,{x:g,y:E.y+E.h-1,style:w}),d>0)U.write(X2.h.repeat(d),{x:g+b,y:E.y+E.h-1,style:S});for(let V$=1;V$<E.h-1;V$++)U.put(E.x,E.y+V$,X2.v,S),U.put(E.x+E.w-1,E.y+V$,X2.v,S);let U$=Math.max(0,E.h-2),H$=H.value,Z$=q.value;for(let V$=0;V$<U$;V$++){let X$=Z$+V$,y$=H$[X$]??"",e=r4(y$,z),r=v6(e,z);U.write(r,{x:E.x+1,y:E.y+1+V$,style:P})}}})),()=>U$$("span",Z)}});import{computed as G7,defineComponent as G$$,h as jS,inject as V$$,ref as HV,watch as Y$$,watchEffect as X$$}from"vue";function qU($,J,U){return Math.max(J,Math.min(U,$))}function DS($){return Boolean($.ctrlKey||$.metaKey)}var qV=G$$({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:J}){let{terminal:U,scheduler:Q,defaultStyle:_}=L4(),G=o4(),{visible:V,rootProps:Y}=r6(),Z=V$$(S0,G7(()=>0)),X=G7(()=>(Z.value??0)+($.zIndex??0)),K=G7(()=>$.provider??_J()),N=HV([]),W=HV(0),H=HV(0),q=HV(null),D=1,j=G7(()=>Math.max(0,Math.floor($.h)-1)),B=G7(()=>{let z={x:$.x,y:$.y+1,w:$.w,h:j.value},T=n6(z,G.originX,G.originY);if(!G.clipRect)return T;return H0(T,G.clipRect)??{x:0,y:0,w:0,h:0}});function O(){let z=Math.max(0,j.value);if(z<=0){H.value=0;return}let T=Math.max(0,N.value.length-z);if(H.value=qU(H.value,0,T),W.value<H.value)H.value=W.value;else if(W.value>=H.value+z)H.value=qU(W.value-(z-1),0,T)}Y$$([()=>W.value,()=>N.value.length,()=>j.value],()=>{O()});async function k(){let z=Math.max(0,Math.floor($.maxSuggestions)),T=await a5({workspaceAbs:$.workspace,input:$.modelValue,mode:$.mode,max:z,showHidden:$.showHidden,listDir:K.value.listDir});N.value=T.suggestions,W.value=qU(W.value,0,Math.max(0,N.value.length-1)),O(),Q.invalidate()}let A=0;X$$(()=>{if(!V.value)return;$.workspace,$.mode,$.showHidden,$.modelValue,j.value,q.value=null;let z=++A;k().catch((T)=>{if(z!==A)return;N.value=[],q.value=T instanceof Error?T.message:String(T),Q.invalidate()})});function M(z){let T=z.replace(/\r/g,"").replace(/\n/g," ");J("update:modelValue",T)}function E(z){let T=N.value.length;if(T<=0)return;let I=qU(W.value+z,0,T-1);if(I!==W.value)W.value=I,O(),Q.invalidate()}function L(){let z=N.value[W.value];if(!z)return;M(z.completion)}async function f(z){let T=await K.value.stat(z);if(!T.exists){q.value="Not found",J("invalid",{reason:"not_found",absPath:z}),Q.invalidate();return}if($.mode==="file"&&T.kind==="directory"){let I=h0(z),R=h0($.workspace),v=I===R?"":I.startsWith(`${R}/`)?I.slice(R.length+1):I;M(v?`${v}/`:""),q.value=null,Q.invalidate();return}if($.mode==="file"&&T.kind!=="file"){q.value="Not a file",J("invalid",{reason:"not_file",absPath:z}),Q.invalidate();return}if($.mode==="directory"&&T.kind!=="directory"){q.value="Not a directory",J("invalid",{reason:"not_directory",absPath:z}),Q.invalidate();return}J("select",Nk(z))}async function S(){let z=Q1($.workspace,$.modelValue),T=await K.value.stat(z);if(T.exists){if($.mode==="file"&&T.kind==="directory"){let R=$.modelValue.replace(/\r/g,"").replace(/\\/g,"/"),v=R.endsWith("/")?R:`${R}/`;M(v),q.value=null,Q.invalidate();return}await f(z);return}let I=N.value[W.value];if(I){if($.mode==="file"&&I.kind==="directory"){M(I.completion),q.value=null,Q.invalidate();return}await f(I.absPath);return}q.value="Not found",J("invalid",{reason:"not_found",absPath:z}),Q.invalidate()}function P(z){if(J("keydown",z),z.key==="Tab"){z.preventDefault(),L();return}if(z.key==="ArrowUp"){z.preventDefault(),E(-1);return}if(z.key==="ArrowDown"){z.preventDefault(),E(1);return}if(DS(z)&&(z.key==="p"||z.key==="P")){z.preventDefault(),E(-1);return}if(DS(z)&&(z.key==="n"||z.key==="N"))z.preventDefault(),E(1)}let w=BS();return F0(()=>({rect:B.value,zIndex:X.value,visible:V.value,focusable:!1,handlers:{click:(z)=>{let T=B.value,I=H.value+(z.cellY-T.y);if(I>=0&&I<N.value.length)W.value=I,O(),Q.invalidate()},dblclick:async(z)=>{let T=B.value,I=H.value+(z.cellY-T.y),R=N.value[I];if(!R)return;if($.mode==="file"&&R.kind==="directory"){M(R.completion),q.value=null,Q.invalidate();return}await f(R.absPath)},wheel:(z)=>{let T=z.deltaY??0;if(!T)return;let I=Math.max(0,j.value),R=Math.max(0,N.value.length-I),{nextTop:v,dir:C}=OS(w,T,H.value,R);if(!C||v===H.value)return;H.value=v;let b=v,g=v+I-1;if(W.value<b||W.value>g){let x=C>0?g:b;W.value=qU(x,0,Math.max(0,N.value.length-1))}Q.invalidate()}}})),p6(()=>({zIndex:$.zIndex,rect:V.value?B.value:{x:0,y:0,w:0,h:0},deps:[V.value,B.value,$.w,j.value,$.style,_.value,N.value,W.value,H.value,q.value],paint:()=>{if(!V.value)return;let z=B.value;if(z.w<=0||z.h<=0)return;let T=$.style??_.value,I=qU(H.value,0,Math.max(0,N.value.length-z.h));for(let R=0;R<z.h;R++){let v=I+R,C=N.value[v],b=C?R6(C.display):"",g=v6(r4(b,z.w),z.w),x=v===W.value?{...T,inverse:!0}:T;U.write(g,{x:z.x,y:z.y+R,style:x})}if(N.value.length===0&&z.h>0){let R=q.value?`(${R6(q.value)})`:"(no matches)";U.write(v6(r4(R,z.w),z.w),{x:z.x,y:z.y,style:{...T,dim:!0}})}}})),()=>jS("span",Y,[jS(F6,{x:$.x,y:$.y,w:$.w,h:1,zIndex:$.zIndex,modelValue:$.modelValue,"onUpdate:modelValue":(z)=>M(z),cursorToEndOnExternalUpdate:!0,placeholder:$.placeholder,style:$.style,autoFocus:$.autoFocus,onKeydown:(z)=>P(z),onChange:()=>void S(),onFocus:()=>J("focus"),onBlur:()=>J("blur")})])}});import{computed as WO,defineComponent as Z$$,h as K$$,inject as W$$,ref as ES,watchEffect as MS}from"vue";function Z2($,J,U){return Math.max(J,Math.min(U,$))}var B0=Z$$({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:J}){let{terminal:U,scheduler:Q,defaultStyle:_,events:G}=L4(),V=o4(),{visible:Y,rootProps:Z}=r6(),X=W$$(S0,WO(()=>0)),K=WO(()=>(X.value??0)+($.zIndex??0)),N=ES(!1),W=(()=>{let P=Math.max(0,$.options.length-1);if(!$.multiple){let T=typeof $.modelValue==="number"?$.modelValue:0;return Z2(T,0,P)}let z=(Array.isArray($.modelValue)?$.modelValue:[])[0]??0;return Z2(z,0,P)})(),H=ES(W),q=WO(()=>{let P={x:$.x,y:$.y,w:$.w,h:$.h},w=n6(P,V.originX,V.originY);if(!V.clipRect)return w;return H0(w,V.clipRect)??{x:0,y:0,w:0,h:0}});MS(()=>{let P=Math.max(0,$.options.length-1);if(!$.multiple){let w=typeof $.modelValue==="number"?$.modelValue:0;H.value=Z2(w,0,P);return}H.value=Z2(H.value,0,P)});function D(P){return typeof P==="string"?P:P.label}function j(P){return typeof P==="string"?void 0:P.detail}function B(P){let w=Z2(P,0,Math.max(0,$.options.length-1));H.value=w,J("update:modelValue",w);let z=$.options[w];J("change",z?D(z):null)}function O(){if(!$.multiple)return[];let P=Math.max(0,$.options.length-1),w=Array.isArray($.modelValue)?$.modelValue:[],z=new Set;for(let T of w){if(typeof T!=="number"||!Number.isFinite(T))continue;z.add(Z2(Math.trunc(T),0,P))}return[...z].sort((T,I)=>T-I)}function k(P){let w=P.map((z)=>$.options[z]).filter(Boolean).map((z)=>D(z));return{indices:P,values:w}}function A(P,w){let z=k(w);if($.multipleEmit==="index"){J(P,z.indices);return}if($.multipleEmit==="both"){J(P,z);return}J(P,z.values)}function M(P){let w=Z2(P,0,Math.max(0,$.options.length-1));H.value=w;let z=new Set(O());if(z.has(w))z.delete(w);else z.add(w);let T=[...z].sort((I,R)=>I-R);J("update:modelValue",T),A("change",T)}function E(){let P=O();A("confirm",P)}function L(P){if($.multiple)M(P);else B(P)}function f(P){if(J("keydown",P),P.defaultPrevented)return;if(P.key==="ArrowUp"){if(P.preventDefault(),H.value=Z2(H.value-1,0,Math.max(0,$.options.length-1)),!$.multiple)J("update:modelValue",H.value);Q.invalidate();return}if(P.key==="ArrowDown"){if(P.preventDefault(),H.value=Z2(H.value+1,0,Math.max(0,$.options.length-1)),!$.multiple)J("update:modelValue",H.value);Q.invalidate();return}if($.multiple&&(P.code==="Space"||P.key===" "||P.key==="Spacebar")){P.preventDefault(),M(H.value);return}if(P.key==="Enter"){if($.multiple){P.preventDefault(),E();return}L(H.value);return}if(P.key==="Escape")P.preventDefault(),J("close")}let{id:S}=F0(()=>({rect:q.value,zIndex:K.value,visible:Y.value,focusable:!0,handlers:{click:(P)=>{let w=q.value,z=P.cellY-w.y;if(z>=0&&z<$.options.length)L(z);else J("close")},focus:()=>{N.value=!0,J("focus"),Q.invalidate()},blur:()=>{if(N.value=!1,J("blur"),$.closeOnBlur)J("close");Q.invalidate()},keydown:f}}));return MS(()=>{if(!$.autoFocus)return;if(!Y.value)return;let P=G.value,w=S.value;if(!P||!w)return;if(P.getFocused()===w)return;P.focus(w)}),p6(()=>({zIndex:$.zIndex,rect:Y.value?q.value:{x:0,y:0,w:0,h:0},deps:[Y.value,q.value,$.w,$.h,$.options,$.modelValue,$.multiple,$.multipleEmit,$.style,$.highlightStyle,N.value,H.value,_.value],paint:(P)=>{if(!Y.value)return;let w=q.value;if(w.w<=0||w.h<=0)return;let z=$.style??_.value,T=$.highlightStyle??{...z,bg:"yellow",fg:"black"},I={...z,dim:!0},R={...T,dim:!0},v=$.multiple?new Set(O()):null,C=(U$)=>{let H$=$.options[U$];if(!H$){U.write(C4(w.w),{x:w.x,y:w.y+U$,style:z});return}let Z$=U$===H.value,V$=$.multiple?v.has(U$):Z$,X$=$.multiple?N.value&&Z$:Z$,y$=$.multiple?V$?"[x] ":"[ ] ":"",e=R6(D(H$)),r=j(H$),n=r?R6(r):"",c=`${y$}${e}`,Q$=M$(c),P$=1,D$=Math.max(0,w.w-Q$-P$);if(n&&D$>=4){let w$=X$?T:z;U.write(c,{x:w.x,y:w.y+U$,style:w$});let t$=r4(n,D$),m4=M$(t$),H6=Math.max(0,w.w-Q$-m4),c4=X$?T:z;U.write(C4(H6),{x:w.x+Q$,y:w.y+U$,style:c4});let L6=X$?R:I;U.write(t$,{x:w.x+Q$+H6,y:w.y+U$,style:L6})}else{let w$=v6(r4(c,w.w),w.w),t$=X$?T:z;U.write(w$,{x:w.x,y:w.y+U$,style:t$})}};if(!P){for(let U$=0;U$<w.h;U$++)C(U$);return}let b=Math.floor(w.y),g=b+Math.max(0,Math.floor(w.h));if(g<=b)return;let x=0,d=P.length;while(x<d){let U$=x+d>>1;if((P[U$]??0)<b)x=U$+1;else d=U$}for(let U$=x;U$<P.length;U$++){let H$=Math.floor(P[U$]??-1);if(H$<b)continue;if(H$>=g)break;let Z$=H$-b;if(Z$>=0&&Z$<w.h)C(Z$)}}})),()=>K$$("span",Z)}});import{computed as N$$,inject as PS}from"vue";var BU=Symbol("TerminalRouter"),BV=Symbol("TerminalRoute");function OU(){let $=PS(BU,null);if(!$)throw Error("TerminalRouter is missing");return $}function OV(){let $=PS(BV,null);if(!$)throw Error("TerminalRoute is missing");return N$$(()=>$.value)}import{ref as F$$}from"vue";function LS($,J){let U=typeof $==="string"?{name:$}:$,Q=J.get(U.name);return{name:U.name,params:U.params,meta:Q?.meta}}function V7($){return typeof $==="string"||typeof $==="object"&&$!=null&&"name"in $}function jV($){let J=new Map($.routes.map((N)=>[N.name,N])),U=F$$(LS($.initialRoute,J)),Q=[U.value],_=0,G=[],V=[],Y=[];async function Z(N,W,H){for(let q of N){let D=await q(W,H);if(D===!1)return!1;if(V7(D))return D}return!0}async function X(N,W){let H=U.value,q=LS(N,J),D=J.get(H.name)??null,j=J.get(q.name)??null,B=await Z(G,q,H);if(B===!1)return;if(V7(B))return X(B,W);let O=await Z(V,q,H);if(O===!1)return;if(V7(O))return X(O,W);if(D?.onLeave)await D.onLeave(q,H);if(U.value=q,W==="replace")Q[_]=q;else if(W==="push")Q.splice(_+1),Q.push(q),_=Q.length-1;if(j?.onEnter)await j.onEnter(q,H);for(let k of Y)k(q,H)}let K={currentRoute:U,async push(N){await X(N,"push")},async replace(N){await X(N,"replace")},async back(){if(_<=0)return;let N=U.value,W=Q[_-1],H=J.get(N.name)??null,q=J.get(W.name)??null,D=await Z(G,W,N);if(D===!1)return;if(V7(D))return X(D,"push");let j=await Z(V,W,N);if(j===!1)return;if(V7(j))return X(j,"push");if(H?.onLeave)await H.onLeave(W,N);if(_-=1,U.value=W,q?.onEnter)await q.onEnter(W,N);for(let B of Y)B(W,N)},beforeEach(N){return G.push(N),()=>{let W=G.indexOf(N);if(W>=0)G.splice(W,1)}},beforeResolve(N){return V.push(N),()=>{let W=V.indexOf(N);if(W>=0)V.splice(W,1)}},afterEach(N){return Y.push(N),()=>{let W=Y.indexOf(N);if(W>=0)Y.splice(W,1)}},install(N){N.provide(BU,K),N.provide(BV,U)}};return K}function fS($,J){let U=$.currentRoute.value;return J.find((_)=>_.name===U.name)?.component??null}import{computed as H$$,defineComponent as q$$,h as B$$,inject as O$$,ref as j$$,watch as D$$}from"vue";var DV=q$$({name:"TRouterView",props:{routes:{type:Array,required:!0},forceRemount:{type:Boolean,default:!0}},setup($){let J=O$$(BU,null);if(!J)throw Error("TerminalRouter is missing (did you forget to app.use(router)?)");let U=j$$(0);D$$(()=>J.currentRoute.value,()=>{if($.forceRemount)U.value++},{deep:!0});let Q=H$$(()=>fS(J,$.routes));return()=>{let _=Q.value;return _?B$$(_,{key:$.forceRemount?U.value:void 0}):null}}});function NO(){return typeof performance<"u"?performance.now():Date.now()}async function FO($){await new Promise((J)=>setTimeout(J,$))}var zS=null;function jU($){if(zS?.GOATCHAIN_DEBUG==="1")try{let J=new Date().toISOString().split("T")[1].slice(0,-1);E$$.appendFileSync("/tmp/goatchain-debug.log",`[${J}] [GHOSTTY-KEEPALIVE] ${$}
910
910
  `)}catch{}}function M$$($){let J=lB({cols:$.cols,rows:$.rows,component:$.component,props:$.props,defaultStyle:$.defaultStyle});return $.install?.(J.app),J.mount(),{app:J.app,terminal:J.terminal,events:J.events,scheduler:J.scheduler,getImeAnchor:J.getImeAnchor,dispose:J.dispose}}async function P$$($,J,U){let Q=null;for(let _ of U){let G=typeof _?.time==="number"?_.time:null;if(G!=null&&Q!=null){let V=Math.max(0,G-Q);await FO(Math.min(V,5000))}if(G!=null)Q=G;$.dispatch(_),await EV(),J.flush()}}async function RS($){zS=$.proc.env,jU("runTerminalUi() called");let J=M$$({cols:$.cols,rows:$.rows,component:$.component,props:$.props,install:$.install,defaultStyle:$.defaultStyle}),U=()=>QV(J.terminal,{output:$.proc.stdout,altScreen:$.altScreen,palette:$.palette,trackResize:!$.sizeLocked,hideCursor:!0,defaultBg:$.defaultBg,getImeAnchor:J.getImeAnchor}),Q=U(),_=[],G=NO(),V=(L)=>{let f=L.time==null?{...L,time:NO()-G}:L;return _.push(f),J.events.dispatch(f)};J.scheduler.flush();let Y=null,Z="GHOSTTY_RESOURCES_DIR"in($.proc.env??{});jU(`BEFORE exit setup - Ghostty detection: ${Z}`);let X=null,K=null,N=!1,W=!1,H=()=>{if(X)clearInterval(X),X=null},q=()=>{if(N)return;N=!0;let L=J.scheduler.invalidate;J.scheduler.invalidate=()=>{W=!0,L()}},D=()=>{if(!Z||X)return;q(),X=setInterval(()=>{if(W)J.scheduler.flush(),W=!1},100)},j=()=>{if(K)return;let L=typeof $.proc.exitCode==="number"?$.proc.exitCode:0;K=setTimeout(()=>{try{$.proc.exit(L)}catch{}},1500),K.unref?.()},B=()=>{if(H(),Y)Y.dispose(),Y=null;if(Q)Q.dispose(),Q=null},O=!1,k=()=>{if(B(),!O)J.dispose(),O=!0};eA(()=>{(async()=>{if($.proc.exitCode==null)$.proc.exitCode=0;let L=$.snapshotPath?J.terminal.snapshot().lines:null;if(k(),$.recordPath)await kB($.recordPath,_);if($.snapshotPath&&L)await iG($.snapshotPath,L);j()})()}),$.proc.on("exit",()=>{k()}),$.proc.on("beforeExit",()=>{k()});let M=()=>{B();try{$.proc.removeListener("SIGTSTP",M)}catch{}try{$.proc.kill($.proc.pid,"SIGTSTP")}catch{}},E=()=>{try{let L=typeof $.proc.listeners==="function"?$.proc.listeners("SIGTSTP"):[];if(Array.isArray(L)&&L.includes(M))return}catch{}$.proc.on("SIGTSTP",M)};if(E(),$.proc.on("SIGCONT",()=>{if(E(),!Q)Q=U();if(!Y&&!$.replayPath)Y=lG({stdin:$.proc.stdin,stdout:$.proc.stdout,dispatch:V,enableMouse:$.enableMouse,onExit:()=>n5()}),D();J.scheduler.invalidate(),J.scheduler.flush()}),$.replayPath){await EV(),await EV(),J.scheduler.flush();let L=await SB($.replayPath);if(await P$$(J.events,J.scheduler,L),await FO(800),await EV(),J.scheduler.flush(),$.snapshotPath)await iG($.snapshotPath,J.terminal.snapshot().lines);k();return}if(Y=lG({stdin:$.proc.stdin,stdout:$.proc.stdout,dispatch:V,enableMouse:$.enableMouse,onExit:()=>n5()}),Z)jU("Starting keep-alive interval (100ms)"),D(),jU("Keep-alive interval created successfully");if($.proc.on("SIGINT",()=>n5()),$.proc.on("SIGTERM",()=>n5()),Z)jU("Entering ghostty keep-alive loop (waiting forever)"),await new Promise(()=>{}),jU("Keep-alive loop exited (this should never happen)")}var CV=V4(BT(),1);import{spawn as q0$}from"node:child_process";import{existsSync as B0$,readFileSync as O0$}from"node:fs";import kO from"node:path";import{fileURLToPath as j0$}from"node:url";var K2="goatchain-cli",D0$="upgrade-toast.json",E0$="upgrade-check.log",jT=process.env.GOATCHAIN_DEBUG_LOG||"./goatchain-debug.log",M0$=`https://registry.npmjs.org/${K2}`,P0$=5000;async function L0$(){try{let $=new AbortController,J=setTimeout(()=>$.abort(),P0$),U=await fetch(M0$,{signal:$.signal,headers:{Accept:"application/json"}});if(clearTimeout(J),!U.ok)throw Error(`npm registry returned ${U.status}`);let _=(await U.json())["dist-tags"]?.latest;if(!_||typeof _!=="string")throw Error("No latest version found in registry response");return _}catch($){if($ instanceof Error&&$.name==="AbortError")throw Error("npm registry request timed out");throw $}}async function DT(){if(await s6("start",{disableAutoUpdate:process.env.GOATCHAIN_DISABLE_AUTOUPDATE==="1",autoUpdate:process.env.GOATCHAIN_AUTOUPDATE!=="0",cwd:w0$(),argv:A0$(),debugLogPath:jT}),process.env.GOATCHAIN_DISABLE_AUTOUPDATE==="1")return await s6("skip-disabled"),null;let $=k0$();if(!$?.version)return await s6("skip-missing-version"),null;let J=$.version,U=$.source==="injected";try{let Q=await L0$();if(await s6("check-result",{current:J,latest:Q,hasInjectedVersion:U}),!Q)return await s6("error",{message:"Failed to fetch latest version"}),null;if(CV.default.valid(J)&&CV.default.valid(Q)){if(CV.default.gte(J,Q))return await s6("no-update",{current:J,latest:Q}),null;if(process.env.GOATCHAIN_AUTOUPDATE!=="0"&&U)return await s6("update-available",{current:J,latest:Q,autoUpdate:!0}),f0$(Q),`Update available: ${K2}@${Q} (current: ${J}). Installing in background. Restart terminal after it finishes.`;return await s6("update-available",{current:J,latest:Q,autoUpdate:!1}),`Update available: ${K2}@${Q} (current: ${J})`}if(J===Q)return await s6("no-update",{current:J,latest:Q}),null;return await s6("update-available",{current:J,latest:Q,autoUpdate:!1}),`Update available: ${K2}@${Q} (current: ${J})`}catch(Q){return await s6("error",{message:Q instanceof Error?Q.message:String(Q)}),null}}function f0$($){try{s6("autoupdate-start",{version:$});let J=q0$("npm",["install","-g",`${K2}@${$}`],{stdio:"ignore",detached:!0});J.unref();let U=!1,Q=(_)=>{if(U)return;U=!0,s6("autoupdate-finish",{version:$,message:_}),OT(_)};J.on("close",(_)=>{if(_===0)Q(`Update installed: ${K2}@${$}. Restart terminal to use the new version.`);else Q(`Auto-update failed. Run: npm install -g ${K2}`)}),J.on("error",()=>{s6("autoupdate-error",{version:$,reason:"process-error"}),Q(`Auto-update failed. Run: npm install -g ${K2}`)})}catch{s6("autoupdate-error",{version:$,reason:"spawn-throw"}),OT(`Auto-update failed. Run: npm install -g ${K2}`)}}function OT($){let J=globalThis?.__GOATCHAIN_UPGRADE_TOAST__;if(typeof J==="function")try{J($);return}catch{}z0$($)}async function z0$($){try{let{getGoatChainUserDir:J}=await Promise.resolve().then(() => (Q2(),gG)),[{mkdir:U,writeFile:Q},_]=await Promise.all([import("node:fs/promises"),import("node:path")]),G=await J(process.env);await U(G,{recursive:!0});let V=_.join(G,D0$),Y=JSON.stringify({message:$,createdAt:Date.now()});await Q(V,Y,"utf8")}catch{}}async function s6($,J){try{let{getGoatChainUserDir:U}=await Promise.resolve().then(() => (Q2(),gG)),[{mkdir:Q,appendFile:_},G]=await Promise.all([import("node:fs/promises"),import("node:path")]),V=await U(process.env);await Q(V,{recursive:!0});let Y=G.join(V,E0$),Z={ts:new Date().toISOString(),event:$,...J};await _(Y,`${JSON.stringify(Z)}
911
911
  `,{encoding:"utf8",mode:384}),await R0$(Z)}catch{}}async function R0$($){try{let{appendFile:J}=await import("node:fs/promises"),Q=`[${String($.ts??new Date().toISOString())}] upgrade_check ${JSON.stringify($)}
912
- `;await J(jT,Q,{encoding:"utf8"})}catch{}}function w0$(){try{return process.cwd()}catch{return}}function A0$(){try{return process.argv}catch{return}}function k0$(){let $="0.0.5-beta.1".trim();if($)return{version:$,source:"injected"};let J=S0$();if(J)return{version:J,source:"package"};return null}function S0$(){try{let $=kO.dirname(j0$(import.meta.url));for(let J=0;J<6;J++){let U=kO.join($,"package.json");if(B0$(U)){let _=O0$(U,"utf8"),G=JSON.parse(_),V=typeof G?.version==="string"?G.version.trim():"";if(V)return V}let Q=kO.dirname($);if(Q===$)break;$=Q}}catch{}return null}import{computed as J0,defineComponent as g2$,h as L8,inject as x2$,nextTick as h2$,onBeforeUnmount as u2$,provide as m2$,ref as N1,watch as SU}from"vue";var O8=Symbol("GoatChainBridge");var ET=["user","assistant","tool"];var MT=["status","thinking","markdown","tool_call","tool_output","tool_result","approve","todo","plan"];var EU=[...ET,...MT];var bV=["black","red","green","yellow","blue","magenta","cyan","white","blackBright","redBright","greenBright","yellowBright","blueBright","magentaBright","cyanBright","whiteBright"];function SO($,J){let U={};for(let Q of EU)U[Q]={fg:$,bg:J};return U}var PT=Object.freeze({goatchain:{...SO("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:"blueBright",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:{...SO("white","black"),user:{fg:"white",bg:"black"},assistant:{fg:"white",bg:"black"},tool:{fg:"white",bg:"black"},thinking:{fg:"white",bg:"black"}},contrast:{...SO("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 T1($,J){let U=PT[$.preset]??PT.goatchain,Q=U[J]??U.assistant??{fg:"white",bg:"black"},_=$.overrides?.[J]??{};return{...Q,..._}}import IO from"node:fs";function I0$($){let U="";for(let Q=0;Q<$.length;Q++){if($[Q]!=="\x1B"||$[Q+1]!=="["){U+=$[Q];continue}let _=Q+2;while(_<$.length){let G=$.charCodeAt(_);if(G>=48&&G<=57||G===59){_++;continue}break}if(_<$.length&&$[_]==="m"){Q=_;continue}U+=$[Q]}return U}function LT($){$=I0$($);let J="";for(let U of $){let Q=U.codePointAt(0);if(Q<=31&&Q!==10&&Q!==9||Q===127||Q>=128&&Q<=159)continue;J+=U}return J}function MU($){let J=0;for(let U of $)J+=k4(U);return J}function yV($,J){if(J=Math.max(0,Math.floor(J)),J<=0)return{chunk:"",rest:$};let U=0,Q=0;for(;Q<$.length;){let _=$.codePointAt(Q)??0,G=String.fromCodePoint(_),V=k4(G);if(U+V>J)break;if(U+=V,Q+=G.length,U>=J)break}return{chunk:$.slice(0,Q),rest:$.slice(Q)}}function q7($,J){return yV($,J).chunk}function fT($,J){J=Math.max(0,Math.floor(J));let U=MU($);if(U>=J)return q7($,J);return`${$}${" ".repeat(J-U)}`}function zT($,J){if(J=Math.max(1,Math.floor(J)),!$)return[""];let U=[],Q=$;while(!0){let{chunk:_,rest:G}=yV(Q,J);if(U.push(_),!G)break;Q=G}return U}var j8=new Map,T0$=100,v0$=60000;function C0$($,J){let U=0,Q=`${$}|${J}`;for(let _=0;_<Q.length;_++){let G=Q.charCodeAt(_);U=(U<<5)-U+G,U=U&U}return U.toString(36)}function b0$(){let $=Date.now();for(let[J,U]of j8.entries())if($-U.timestamp>v0$)j8.delete(J)}if(typeof setInterval<"u")setInterval(b0$,1e4);function gV($){let J=(Z)=>{try{if(globalThis.process?.env?.GOATCHAIN_DEBUG==="1"){let K=new Date().toISOString().split("T")[1].slice(0,-1);IO.appendFileSync("/tmp/goatchain-debug.log",`[${K}] [PARSE-INLINE] ${Z}
912
+ `;await J(jT,Q,{encoding:"utf8"})}catch{}}function w0$(){try{return process.cwd()}catch{return}}function A0$(){try{return process.argv}catch{return}}function k0$(){let $="0.0.5-beta.3".trim();if($)return{version:$,source:"injected"};let J=S0$();if(J)return{version:J,source:"package"};return null}function S0$(){try{let $=kO.dirname(j0$(import.meta.url));for(let J=0;J<6;J++){let U=kO.join($,"package.json");if(B0$(U)){let _=O0$(U,"utf8"),G=JSON.parse(_),V=typeof G?.version==="string"?G.version.trim():"";if(V)return V}let Q=kO.dirname($);if(Q===$)break;$=Q}}catch{}return null}import{computed as J0,defineComponent as g2$,h as L8,inject as x2$,nextTick as h2$,onBeforeUnmount as u2$,provide as m2$,ref as N1,watch as SU}from"vue";var O8=Symbol("GoatChainBridge");var ET=["user","assistant","tool"];var MT=["status","thinking","markdown","tool_call","tool_output","tool_result","approve","todo","plan"];var EU=[...ET,...MT];var bV=["black","red","green","yellow","blue","magenta","cyan","white","blackBright","redBright","greenBright","yellowBright","blueBright","magentaBright","cyanBright","whiteBright"];function SO($,J){let U={};for(let Q of EU)U[Q]={fg:$,bg:J};return U}var PT=Object.freeze({goatchain:{...SO("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:"blueBright",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:{...SO("white","black"),user:{fg:"white",bg:"black"},assistant:{fg:"white",bg:"black"},tool:{fg:"white",bg:"black"},thinking:{fg:"white",bg:"black"}},contrast:{...SO("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 T1($,J){let U=PT[$.preset]??PT.goatchain,Q=U[J]??U.assistant??{fg:"white",bg:"black"},_=$.overrides?.[J]??{};return{...Q,..._}}import IO from"node:fs";function I0$($){let U="";for(let Q=0;Q<$.length;Q++){if($[Q]!=="\x1B"||$[Q+1]!=="["){U+=$[Q];continue}let _=Q+2;while(_<$.length){let G=$.charCodeAt(_);if(G>=48&&G<=57||G===59){_++;continue}break}if(_<$.length&&$[_]==="m"){Q=_;continue}U+=$[Q]}return U}function LT($){$=I0$($);let J="";for(let U of $){let Q=U.codePointAt(0);if(Q<=31&&Q!==10&&Q!==9||Q===127||Q>=128&&Q<=159)continue;J+=U}return J}function MU($){let J=0;for(let U of $)J+=k4(U);return J}function yV($,J){if(J=Math.max(0,Math.floor(J)),J<=0)return{chunk:"",rest:$};let U=0,Q=0;for(;Q<$.length;){let _=$.codePointAt(Q)??0,G=String.fromCodePoint(_),V=k4(G);if(U+V>J)break;if(U+=V,Q+=G.length,U>=J)break}return{chunk:$.slice(0,Q),rest:$.slice(Q)}}function q7($,J){return yV($,J).chunk}function fT($,J){J=Math.max(0,Math.floor(J));let U=MU($);if(U>=J)return q7($,J);return`${$}${" ".repeat(J-U)}`}function zT($,J){if(J=Math.max(1,Math.floor(J)),!$)return[""];let U=[],Q=$;while(!0){let{chunk:_,rest:G}=yV(Q,J);if(U.push(_),!G)break;Q=G}return U}var j8=new Map,T0$=100,v0$=60000;function C0$($,J){let U=0,Q=`${$}|${J}`;for(let _=0;_<Q.length;_++){let G=Q.charCodeAt(_);U=(U<<5)-U+G,U=U&U}return U.toString(36)}function b0$(){let $=Date.now();for(let[J,U]of j8.entries())if($-U.timestamp>v0$)j8.delete(J)}if(typeof setInterval<"u")setInterval(b0$,1e4);function gV($){let J=(Z)=>{try{if(globalThis.process?.env?.GOATCHAIN_DEBUG==="1"){let K=new Date().toISOString().split("T")[1].slice(0,-1);IO.appendFileSync("/tmp/goatchain-debug.log",`[${K}] [PARSE-INLINE] ${Z}
913
913
  `)}}catch{}},U=[],Q="",_=0;J(`START: text length=${$.length}`);function G(){if(!Q)return;U.push({kind:"text",text:Q}),Q=""}let V=0,Y=$.length*10+1000;while(_<$.length){if(V++,V>Y){J(`ERROR: Infinite loop detected! i=${_}, text.length=${$.length}, iterations=${V}`);break}if(V%100===0)J(` Progress: i=${_}/${$.length}, iterations=${V}`);let Z=$[_];if(Z==="`"){let X=$.indexOf("`",_+1);if(X>_+1){G(),U.push({kind:"code",text:$.slice(_+1,X)}),_=X+1;continue}}if(Z==="*"&&$[_+1]==="*"){let X=$.indexOf("**",_+2);if(X>_+2){G(),U.push({kind:"bold",text:$.slice(_+2,X)}),_=X+2;continue}}Q+=Z,_++}return G(),J(`END: ${U.length} spans, iterations=${V}`),U}function xV($,J){let U=(N)=>{try{if(globalThis.process?.env?.GOATCHAIN_DEBUG==="1"){let H=new Date().toISOString().split("T")[1].slice(0,-1);IO.appendFileSync("/tmp/goatchain-debug.log",`[${H}] [WRAP-SPANS] ${N}
914
914
  `)}}catch{}};if(J<=0)return[[{kind:"text",text:""}]];U(`START: spans=${$.length}, width=${J}`);function Q(N){let W=[],H=/\s+/g,q=0;for(let D=H.exec(N.text);D;D=H.exec(N.text)){if(D.index>q)W.push({kind:N.kind,text:N.text.slice(q,D.index)});W.push({kind:N.kind,text:D[0]}),q=D.index+D[0].length}if(q<N.text.length)W.push({kind:N.kind,text:N.text.slice(q)});return W}let _=[],G=[],V=0;function Y(N){if(!N.text)return 0;if(/^\s+$/.test(N.text))return N.text.length;return MU(N.text)}function Z(N){let W=G[G.length-1];if(W&&W.kind===N.kind){W.text+=N.text;return}G.push({...N})}function X(){_.push(G),G=[],V=0}let K=0;for(let N of $){K++;let W=Q(N),H=0;for(let q of W){if(H++,!q.text)continue;if(/^\s+$/.test(q.text)&&V===0)continue;let D=Y(q);if(D<=J-V){Z(q),V+=D;continue}if(!/^\s+$/.test(q.text)&&V>0&&D<=J){X(),Z(q),V+=D;continue}let j=q.text,B=0,O=q.text.length*10+100;while(j){if(B++,B>O){U(`ERROR: Infinite loop in chunking! span=${K}, token=${H}, iterations=${B}, remaining="${j.slice(0,50)}", col=${V}, width=${J}`);break}let k=J-V;if(k<=0){X();continue}if(/^\s+$/.test(j)){X(),j="";continue}let A=yV(j,k),M=A.chunk;if(j=A.rest,Z({kind:q.kind,text:M}),V+=MU(M),V>=J)X()}}}if(G.length===0)return _.length?_:[[{kind:"text",text:""}]];return _.push(G),U(`END: ${_.length} lines`),_}function RT($,J){let U=(E)=>{try{if(globalThis.process?.env?.GOATCHAIN_DEBUG==="1"){let f=new Date().toISOString().split("T")[1].slice(0,-1);IO.appendFileSync("/tmp/goatchain-debug.log",`[${f}] [MARKDOWN-PARSE] ${E}
915
915
  `)}}catch{}},Q=Date.now();U(`START: markdown length=${$.length}, width=${J}`);let _=C0$($,J),G=j8.get(_);if(G)return U(`CACHE HIT: returning ${G.lines.length} cached lines`),G.timestamp=Date.now(),G.lines;U("CACHE MISS: parsing markdown");let V=LT($).split(`
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "goatchain-cli",
3
3
  "type": "module",
4
- "version": "0.0.5-beta.1",
4
+ "version": "0.0.5-beta.3",
5
5
  "description": "GoatChain CLI built on @simon_he/vue-tui",
6
6
  "exports": {
7
7
  ".": {