goatchain-cli 0.0.5-beta.5 → 0.0.5-beta.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.mjs +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.
|
|
877
|
+
`;Q2();async function xA($){let J=V6("0.0.5-beta.6")??await Nt($.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 Nt($){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 Ft($){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 Ft($.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 Ht($){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 qt($){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 q=String(W?.id??"").trim(),H=String(W?.function?.name??"tool"),D=qt(W?.function?.arguments);if(!q)continue;let j={id:q,name:H,arguments:D};Z.push({type:"tool_call",call:j}),_.set(q,Q.length),G.set(q,H)}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,q=(K&&typeof N==="string"?Ht(N):null)??i5(N),H=V?.isError?"error":"success",D={id:Z||xG("tool"),output:q,status:H};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 Bt($){return Number($?.state?.updatedAt??$?.state?.lastActiveAt??0)||0}function iA($){let J=$?.context?.messages;return Array.isArray(J)?J:[]}function Ot($){let J=Number($?.context?.messageCount??0);if(Number.isFinite(J)&&J>=0)return J;return iA($).length}function jt($){let J=$?.stats?.usage;return J&&typeof J==="object"?J:null}function rA($){let J=lA($);if(!J)return null;let U=Bt($),Q=V6($?.metadata?.cwd),_=iA($),G=V6($?.state?.title)??hA(_),V=uA(_),Y=V6($?.context?.lastMessagePreview)??mA(_),Z=Ot($);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 _=jt(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 Dt($){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=Dt(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 Et($){return sA.join($,"state")}function Mt($){$.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=Et(U);Mt({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 D$$ 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]}},pH$=Object.keys(a4.modifier),Pt=Object.keys(a4.color),Lt=Object.keys(a4.bgColor),aH$=[...Pt,...Lt];function ft(){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 zt=ft(),$6=zt;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
|
`)}),H=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 _$$(()=>{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$=q.value,Z$=H.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})}}})),()=>J$$("span",Z)}});import{computed as G7,defineComponent as Q$$,h as jS,inject as G$$,ref as HV,watch as V$$,watchEffect as Y$$}from"vue";function qU($,J,U){return Math.max(J,Math.min(U,$))}function DS($){return Boolean($.ctrlKey||$.metaKey)}var qV=Q$$({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=G$$(S0,G7(()=>0)),X=G7(()=>(Z.value??0)+($.zIndex??0)),K=G7(()=>$.provider??_J()),N=HV([]),W=HV(0),q=HV(0),H=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){q.value=0;return}let T=Math.max(0,N.value.length-z);if(q.value=qU(q.value,0,T),W.value<q.value)q.value=W.value;else if(W.value>=q.value+z)q.value=qU(W.value-(z-1),0,T)}V$$([()=>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;Y$$(()=>{if(!V.value)return;$.workspace,$.mode,$.showHidden,$.modelValue,j.value,H.value=null;let z=++A;k().catch((T)=>{if(z!==A)return;N.value=[],H.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){H.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}/`:""),H.value=null,Q.invalidate();return}if($.mode==="file"&&T.kind!=="file"){H.value="Not a file",J("invalid",{reason:"not_file",absPath:z}),Q.invalidate();return}if($.mode==="directory"&&T.kind!=="directory"){H.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),H.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),H.value=null,Q.invalidate();return}await f(I.absPath);return}H.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=q.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=q.value+(z.cellY-T.y),R=N.value[I];if(!R)return;if($.mode==="file"&&R.kind==="directory"){M(R.completion),H.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,q.value,R);if(!C||v===q.value)return;q.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,q.value,H.value],paint:()=>{if(!V.value)return;let z=B.value;if(z.w<=0||z.h<=0)return;let T=$.style??_.value,I=qU(q.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=H.value?`(${R6(H.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 X$$,h as Z$$,inject as K$$,ref as ES,watchEffect as MS}from"vue";function Z2($,J,U){return Math.max(J,Math.min(U,$))}var B0=X$$({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=K$$(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)})(),q=ES(W),H=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;q.value=Z2(w,0,P);return}q.value=Z2(q.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));q.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));q.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(),q.value=Z2(q.value-1,0,Math.max(0,$.options.length-1)),!$.multiple)J("update:modelValue",q.value);Q.invalidate();return}if(P.key==="ArrowDown"){if(P.preventDefault(),q.value=Z2(q.value+1,0,Math.max(0,$.options.length-1)),!$.multiple)J("update:modelValue",q.value);Q.invalidate();return}if($.multiple&&(P.code==="Space"||P.key===" "||P.key==="Spacebar")){P.preventDefault(),M(q.value);return}if(P.key==="Enter"){if($.multiple){P.preventDefault(),E();return}L(q.value);return}if(P.key==="Escape")P.preventDefault(),J("close")}let{id:S}=F0(()=>({rect:H.value,zIndex:K.value,visible:Y.value,focusable:!0,handlers:{click:(P)=>{let w=H.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?H.value:{x:0,y:0,w:0,h:0},deps:[Y.value,H.value,$.w,$.h,$.options,$.modelValue,$.multiple,$.multipleEmit,$.style,$.highlightStyle,N.value,q.value,_.value],paint:(P)=>{if(!Y.value)return;let w=H.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$===q.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$)}}})),()=>Z$$("span",Z)}});import{computed as W$$,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 W$$(()=>$.value)}import{ref as N$$}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=N$$(LS($.initialRoute,J)),Q=[U.value],_=0,G=[],V=[],Y=[];async function Z(N,W,q){for(let H of N){let D=await H(W,q);if(D===!1)return!1;if(V7(D))return D}return!0}async function X(N,W){let q=U.value,H=LS(N,J),D=J.get(q.name)??null,j=J.get(H.name)??null,B=await Z(G,H,q);if(B===!1)return;if(V7(B))return X(B,W);let O=await Z(V,H,q);if(O===!1)return;if(V7(O))return X(O,W);if(D?.onLeave)await D.onLeave(H,q);if(U.value=H,W==="replace")Q[_]=H;else if(W==="push")Q.splice(_+1),Q.push(H),_=Q.length-1;if(j?.onEnter)await j.onEnter(H,q);for(let k of Y)k(H,q)}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],q=J.get(N.name)??null,H=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(q?.onLeave)await q.onLeave(W,N);if(_-=1,U.value=W,H?.onEnter)await H.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 F$$,defineComponent as H$$,h as q$$,inject as B$$,ref as O$$,watch as j$$}from"vue";var DV=H$$({name:"TRouterView",props:{routes:{type:Array,required:!0},forceRemount:{type:Boolean,default:!0}},setup($){let J=B$$(BU,null);if(!J)throw Error("TerminalRouter is missing (did you forget to app.use(router)?)");let U=O$$(0);j$$(()=>J.currentRoute.value,()=>{if($.forceRemount)U.value++},{deep:!0});let Q=F$$(()=>fS(J,$.routes));return()=>{let _=Q.value;return _?q$$(_,{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);D$$.appendFileSync("/tmp/goatchain-debug.log",`[${J}] [GHOSTTY-KEEPALIVE] ${$}
|
|
910
910
|
`)}catch{}}function E$$($){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 M$$($,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=E$$({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,q=()=>{if(X)clearInterval(X),X=null},H=()=>{if(N)return;N=!0;let L=J.scheduler.invalidate;J.scheduler.invalidate=()=>{W=!0,L()}},D=()=>{if(!Z||X)return;H(),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(q(),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 M$$(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=_4(BT(),1);import{spawn as H0$}from"node:child_process";import{existsSync as q0$,readFileSync as B0$}from"node:fs";import kO from"node:path";import{fileURLToPath as O0$}from"node:url";var K2="goatchain-cli",j0$="upgrade-toast.json",D0$="upgrade-check.log",jT=process.env.GOATCHAIN_DEBUG_LOG||"./goatchain-debug.log",E0$=`https://registry.npmjs.org/${K2}`,M0$=5000;async function P0$(){try{let $=new AbortController,J=setTimeout(()=>$.abort(),M0$),U=await fetch(E0$,{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:R0$(),argv:w0$(),debugLogPath:jT}),process.env.GOATCHAIN_DISABLE_AUTOUPDATE==="1")return await s6("skip-disabled"),null;let $=A0$();if(!$?.version)return await s6("skip-missing-version"),null;let J=$.version,U=$.source==="injected";try{let Q=await P0$();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}),L0$(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 L0$($){try{s6("autoupdate-start",{version:$});let J=H0$("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{}f0$($)}async function f0$($){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,j0$),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,D0$),Z={ts:new Date().toISOString(),event:$,...J};await _(Y,`${JSON.stringify(Z)}
|
|
911
911
|
`,{encoding:"utf8",mode:384}),await z0$(Z)}catch{}}async function z0$($){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 R0$(){try{return process.cwd()}catch{return}}function w0$(){try{return process.argv}catch{return}}function A0$(){let $="0.0.5-beta.
|
|
912
|
+
`;await J(jT,Q,{encoding:"utf8"})}catch{}}function R0$(){try{return process.cwd()}catch{return}}function w0$(){try{return process.argv}catch{return}}function A0$(){let $="0.0.5-beta.6".trim();if($)return{version:$,source:"injected"};let J=k0$();if(J)return{version:J,source:"package"};return null}function k0$(){try{let $=kO.dirname(O0$(import.meta.url));for(let J=0;J<6;J++){let U=kO.join($,"package.json");if(q0$(U)){let _=B0$(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 y2$,h as L8,inject as g2$,nextTick as x2$,onBeforeUnmount as h2$,provide as u2$,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 S0$($){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($){$=S0$($);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,I0$=100,T0$=60000;function v0$($,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 C0$(){let $=Date.now();for(let[J,U]of j8.entries())if($-U.timestamp>T0$)j8.delete(J)}if(typeof setInterval<"u")setInterval(C0$,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 q=new Date().toISOString().split("T")[1].slice(0,-1);IO.appendFileSync("/tmp/goatchain-debug.log",`[${q}] [WRAP-SPANS] ${N}
|
|
914
914
|
`)}}catch{}};if(J<=0)return[[{kind:"text",text:""}]];U(`START: spans=${$.length}, width=${J}`);function Q(N){let W=[],q=/\s+/g,H=0;for(let D=q.exec(N.text);D;D=q.exec(N.text)){if(D.index>H)W.push({kind:N.kind,text:N.text.slice(H,D.index)});W.push({kind:N.kind,text:D[0]}),H=D.index+D[0].length}if(H<N.text.length)W.push({kind:N.kind,text:N.text.slice(H)});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),q=0;for(let H of W){if(q++,!H.text)continue;if(/^\s+$/.test(H.text)&&V===0)continue;let D=Y(H);if(D<=J-V){Z(H),V+=D;continue}if(!/^\s+$/.test(H.text)&&V>0&&D<=J){X(),Z(H),V+=D;continue}let j=H.text,B=0,O=H.text.length*10+100;while(j){if(B++,B>O){U(`ERROR: Infinite loop in chunking! span=${K}, token=${q}, 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:H.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 _=v0$($,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(`
|