@easbot/agent 0.2.28 → 0.2.30
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/chunks/acp-SPVCZX63.mjs +16 -0
- package/dist/chunks/adapter-loader-SXX45I3Z.mjs +1 -0
- package/dist/chunks/{agent-TMTKXGO5.mjs → agent-MZLOGOQI.mjs} +1 -1
- package/dist/chunks/{agent-DQAY44EW.mjs → agent-NGOXDVCS.mjs} +1 -1
- package/dist/chunks/app-O5NQHNXV.mjs +1 -0
- package/dist/chunks/{auth-DHIUZUBT.mjs → auth-4K3ZL6IZ.mjs} +1 -1
- package/dist/chunks/bootstrap-DR4J35PX.mjs +1 -0
- package/dist/chunks/{build-program-NEPEF27C.mjs → build-program-P7RW5T4M.mjs} +1 -1
- package/dist/chunks/bus-KR322KXZ.mjs +1 -0
- package/dist/chunks/{chunk-IXVWBJIE.mjs → chunk-4HF47RUG.mjs} +1 -1
- package/dist/chunks/{chunk-NQDXG75V.mjs → chunk-5HMIZBWX.mjs} +2 -2
- package/dist/chunks/{chunk-QMJ4R4AL.mjs → chunk-7GBBUT6F.mjs} +1 -1
- package/dist/chunks/{chunk-JEUEJB5B.mjs → chunk-7P4KNLBL.mjs} +1 -1
- package/dist/chunks/{chunk-WT6HKW7N.mjs → chunk-AJ67PJXE.mjs} +1 -1
- package/dist/chunks/{chunk-U4BAW7XF.mjs → chunk-BS7N6B5S.mjs} +1 -1
- package/dist/chunks/{chunk-I3VIJLPG.mjs → chunk-CTNROYWQ.mjs} +1 -1
- package/dist/chunks/{chunk-7SGBJ5NP.mjs → chunk-LK3TQ5IO.mjs} +1 -1
- package/dist/chunks/{chunk-KZLMEUTB.mjs → chunk-OMJJOGWG.mjs} +147 -147
- package/dist/chunks/{chunk-3VYIQTJ7.mjs → chunk-Q4GRHLDQ.mjs} +3 -3
- package/dist/chunks/{chunk-TQNXBACI.mjs → chunk-TM2XNUSK.mjs} +1 -1
- package/dist/chunks/{chunk-AP3ZZPEV.mjs → chunk-Z7TE4DF3.mjs} +1 -1
- package/dist/chunks/{command-WLZAXIPJ.mjs → command-O3GFGULS.mjs} +1 -1
- package/dist/chunks/compaction-3MYHNS44.mjs +1 -0
- package/dist/chunks/{config-WLSYCCYR.mjs → config-LDSDIKTW.mjs} +1 -1
- package/dist/chunks/{confirm-dialog-XBLCGOEC.mjs → confirm-dialog-JSKEM3X2.mjs} +1 -1
- package/dist/chunks/{debug-J5RTJUKH.mjs → debug-RSDPOIUJ.mjs} +3 -3
- package/dist/chunks/{export-I4GL3OUG.mjs → export-CLUTYBVZ.mjs} +1 -1
- package/dist/chunks/file-ZOJ6S2UR.mjs +1 -0
- package/dist/chunks/gateway-YVMVF6XX.mjs +16 -0
- package/dist/chunks/{generate-KTY277XK.mjs → generate-5ZEWLM3X.mjs} +1 -1
- package/dist/chunks/{github-JLFW4AJU.mjs → github-GY4WY3V6.mjs} +1 -1
- package/dist/chunks/global-5ORB5ZJI.mjs +1 -0
- package/dist/chunks/{import-E46ADPOS.mjs → import-NJ27YSF4.mjs} +1 -1
- package/dist/chunks/installation-Z2BKBIKH.mjs +1 -0
- package/dist/chunks/instance-J5JTNYNN.mjs +1 -0
- package/dist/chunks/loader-LIGT5CRC.mjs +1 -0
- package/dist/chunks/loader-TZZM2FQ7.mjs +1 -0
- package/dist/chunks/lsp-W37T7EBX.mjs +1 -0
- package/dist/chunks/{mcp-QLI6EI3R.mjs → mcp-LU6TQSHT.mjs} +1 -1
- package/dist/chunks/mcp-UXTV2MD5.mjs +1 -0
- package/dist/chunks/models-TNJAQQV6.mjs +1 -0
- package/dist/chunks/{pr-FAF6WBPN.mjs → pr-NWXGDNAA.mjs} +1 -1
- package/dist/chunks/preferences-IPQIZ4PF.mjs +1 -0
- package/dist/chunks/project-XTL74VR6.mjs +1 -0
- package/dist/chunks/prompt-EGX2NAWC.mjs +1 -0
- package/dist/chunks/provider-YEOVG4GT.mjs +1 -0
- package/dist/chunks/registry-5OGN2DD4.mjs +1 -0
- package/dist/chunks/revert-UEWEVDZW.mjs +1 -0
- package/dist/chunks/ripgrep-Z3UZ5FOB.mjs +1 -0
- package/dist/chunks/{run-IO45RQPY.mjs → run-TJFYT5A2.mjs} +1 -1
- package/dist/chunks/scheduler-GNEGF2HE.mjs +1 -0
- package/dist/chunks/server-K7LUKQBB.mjs +1 -0
- package/dist/chunks/session-DVY2QAPP.mjs +1 -0
- package/dist/chunks/session-HARVTO2S.mjs +1 -0
- package/dist/chunks/{session-C5EPZY5K.mjs → session-YY3OP5DZ.mjs} +1 -1
- package/dist/chunks/{settings-panel-4GBMKF7S.mjs → settings-panel-SM37CCB4.mjs} +1 -1
- package/dist/chunks/share-VULKGSBV.mjs +1 -0
- package/dist/chunks/snapshot-IN2OXNN4.mjs +1 -0
- package/dist/chunks/{stats-KXJDFVQY.mjs → stats-FP5BZIOF.mjs} +1 -1
- package/dist/chunks/storage-OTAVCTZ6.mjs +1 -0
- package/dist/chunks/{tui-Y3HZ4TPR.mjs → tui-IZJVGM2K.mjs} +1 -1
- package/dist/chunks/tui-XXGYOYB4.mjs +1 -0
- package/dist/chunks/types-NRDHCKIO.mjs +1 -0
- package/dist/chunks/{update-TMILGQ45.mjs → update-6CXRBZ6A.mjs} +1 -1
- package/dist/cli.mjs +2 -2
- package/package.json +13 -13
- package/dist/chunks/acp-NOH5UGDP.mjs +0 -16
- package/dist/chunks/adapter-loader-U27XVFCP.mjs +0 -1
- package/dist/chunks/app-LKNWY3XR.mjs +0 -1
- package/dist/chunks/bootstrap-PNCIQQPA.mjs +0 -1
- package/dist/chunks/bus-FZCZO73P.mjs +0 -1
- package/dist/chunks/compaction-4RM7SP7O.mjs +0 -1
- package/dist/chunks/file-YIYCOEN2.mjs +0 -1
- package/dist/chunks/gateway-H7SBUORZ.mjs +0 -16
- package/dist/chunks/global-V7QPWK55.mjs +0 -1
- package/dist/chunks/installation-267NAZFC.mjs +0 -1
- package/dist/chunks/instance-QFPEWLLX.mjs +0 -1
- package/dist/chunks/loader-HMK7CNAK.mjs +0 -1
- package/dist/chunks/loader-I5FNCXH5.mjs +0 -1
- package/dist/chunks/lsp-E6FAZ6N3.mjs +0 -1
- package/dist/chunks/mcp-R47GH2RJ.mjs +0 -1
- package/dist/chunks/models-IEIC4WVB.mjs +0 -1
- package/dist/chunks/preferences-SIWFQFGI.mjs +0 -1
- package/dist/chunks/project-LUWDCN2Y.mjs +0 -1
- package/dist/chunks/prompt-AB5CWZPX.mjs +0 -1
- package/dist/chunks/provider-EYMJXLXQ.mjs +0 -1
- package/dist/chunks/registry-DOT4QLWX.mjs +0 -1
- package/dist/chunks/revert-2T3C7NKR.mjs +0 -1
- package/dist/chunks/ripgrep-OK5E6NNN.mjs +0 -1
- package/dist/chunks/scheduler-5CZ7GLSE.mjs +0 -1
- package/dist/chunks/server-5LRBAHRI.mjs +0 -1
- package/dist/chunks/session-SI5SDDKY.mjs +0 -1
- package/dist/chunks/session-UI6NLBHC.mjs +0 -1
- package/dist/chunks/share-42YY7MEP.mjs +0 -1
- package/dist/chunks/snapshot-WL44FNUR.mjs +0 -1
- package/dist/chunks/storage-ZQQ3MTYY.mjs +0 -1
- package/dist/chunks/tui-YE2OOUN3.mjs +0 -1
- package/dist/chunks/types-YH67KBGI.mjs +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {a as a$2,b as b$1}from'./chunk-CQVEAYYW.mjs';import {ma,ra,ta,sa,oa,pa,qa,Ja,na,ga}from'./chunk-
|
|
1
|
+
import {a as a$2,b as b$1}from'./chunk-CQVEAYYW.mjs';import {ma,ra,ta,sa,oa,pa,qa,Ja,na,ga}from'./chunk-OMJJOGWG.mjs';import {c as c$1}from'./chunk-ZBRXNYEM.mjs';import {b as b$2}from'./chunk-TM2XNUSK.mjs';import {c}from'./chunk-DEZT7DOH.mjs';import {a as a$1}from'./chunk-5HMIZBWX.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import {a as a$3}from'./chunk-BS7N6B5S.mjs';import {b}from'./chunk-X6ISXWBN.mjs';import {Input,truncateToWidth,isKeyRelease,getKeybindings,Editor,matchesKey,Key,Container,Text,Markdown}from'@easbot/tui';import {loadTextFile,Shell,parseModelId,Fetch,Filesystem}from'@easbot/utils';import {randomUUID}from'crypto';import {readdirSync,existsSync}from'fs';import zt from'path';import {pathToFileURL}from'url';import {GatewayClient}from'@easbot/gateway';var _e=class extends Editor{constructor(t,n){super(t,n);b(this,"onEscape");b(this,"onCtrlC");b(this,"onCtrlD");b(this,"onCtrlG");b(this,"onCtrlL");b(this,"onCtrlO");b(this,"onCtrlP");b(this,"onCtrlT");b(this,"inputHandlerManager");}setInputHandlerManager(t){this.inputHandlerManager=t;}addToHistory(t){this.inputHandlerManager?.isHistoryBrowsing()||super.addToHistory(t);}handleInput(t){t.includes("\x1B")||t.includes("\r")||t.includes(`
|
|
2
2
|
`);let n=matchesKey(t,Key.up)||matchesKey(t,Key.down);if(n&&this.inputHandlerManager?this.inputHandlerManager.setHistoryBrowsing(true):this.inputHandlerManager&&!n&&(matchesKey(t,Key.ctrl("l"))||matchesKey(t,Key.ctrl("o"))||matchesKey(t,Key.ctrl("p"))||matchesKey(t,Key.ctrl("g"))||matchesKey(t,Key.ctrl("t"))||matchesKey(t,Key.escape)||matchesKey(t,Key.ctrl("c"))||matchesKey(t,Key.ctrl("d"))||this.inputHandlerManager.setHistoryBrowsing(false)),matchesKey(t,Key.ctrl("l"))&&this.onCtrlL){this.onCtrlL();return}if(matchesKey(t,Key.ctrl("o"))&&this.onCtrlO){this.onCtrlO();return}if(matchesKey(t,Key.ctrl("p"))&&this.onCtrlP){this.onCtrlP();return}if(matchesKey(t,Key.ctrl("g"))&&this.onCtrlG){this.onCtrlG();return}if(matchesKey(t,Key.ctrl("t"))&&this.onCtrlT){this.onCtrlT();return}if(matchesKey(t,Key.escape)){if(this.isShowingAutocomplete()){super.handleInput(t);return}if(this.onEscape){this.onEscape();return}}if(matchesKey(t,Key.ctrl("c"))&&this.onCtrlC){this.onCtrlC();return}if(matchesKey(t,Key.ctrl("d"))){this.getText().length===0&&this.onCtrlD&&this.onCtrlD();return}super.handleInput(t);}};var x={text:"#E8E3D5",dim:"#7B7F87",accent:"#F6C453",accentSoft:"#F2A65A",border:"#3C414B",userBg:"#2B2F36",userText:"#5A9F7A",userLabel:"#5A9F7A",systemText:"#9BA3B2",systemLabel:"#7B7F87",assistantLabel:"#B85C5C",subagentLabel:"#9B72CF",subagentBg:"#2A2535",toolPendingBg:"#1F2A2F",toolSuccessBg:"#1E2D23",toolErrorBg:"#2F1F1F",toolTitle:"#F6C453",toolOutput:"#E1DACB",quote:"#8CC8FF",quoteBorder:"#3B4D6B",code:"#F0C987",codeBorder:"#343A45",link:"#7DD3A5",error:"#F97066",success:"#7DD3A5"},I=s=>e=>`\x1B[38;2;${Lt(s)}m${e}\x1B[0m`,Ce=s=>e=>`\x1B[48;2;${Lt(s)}m${e}\x1B[0m`,ve=s=>`\x1B[1m${s}\x1B[0m`,rt=s=>`\x1B[3m${s}\x1B[0m`;function Lt(s){let e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(s);if(!e)return "255;255;255";let t=Number.parseInt(e[1]||"0",16),n=Number.parseInt(e[2]||"0",16),r=Number.parseInt(e[3]||"0",16);return `${t};${n};${r}`}var ts={selectedPrefix:s=>I(x.accent)(s),selectedText:s=>ve(I(x.accent)(s)),description:s=>I(x.dim)(s),scrollInfo:s=>I(x.dim)(s),noMatch:s=>I(x.dim)(s)},ee={fg:I(x.text),assistantText:s=>s,dim:I(x.dim),accent:I(x.accent),accentSoft:I(x.accentSoft),success:I(x.success),error:I(x.error),header:s=>ve(I(x.accent)(s)),system:I(x.systemText),userBg:Ce(x.userBg),userText:I(x.userText),userLabel:s=>I(x.userLabel)(s),systemLabel:s=>I(x.systemLabel)(s),assistantLabel:s=>I(x.assistantLabel)(s),subagentLabel:s=>I(x.subagentLabel)(s),subagentBg:Ce(x.subagentBg),subagent:s=>I(x.subagentLabel)(s),toolTitle:I(x.toolTitle),toolOutput:I(x.toolOutput),toolPendingBg:Ce(x.toolPendingBg),toolSuccessBg:Ce(x.toolSuccessBg),toolErrorBg:Ce(x.toolErrorBg),border:I(x.border),bold:ve,italic:rt,user:s=>I(x.userText)(s),assistant:s=>I(x.text)(s),code:I(x.code),quote:I(x.quote),link:I(x.link),tool:I(x.toolTitle),thinking:s=>rt(I(x.dim)(s)),warning:I(x.accentSoft),muted:I(x.dim),highlight:s=>ve(I(x.accent)(s))},ss=ts;function ns(s,e){let t=s.split(`
|
|
3
3
|
`);if(!e)return t.map(a=>I(x.code)(a));let n={keyword:I("#C586C0"),string:I("#CE9178"),comment:I("#6A9955"),number:I("#B5CEA8"),function:I("#DCDCAA"),type:I("#4EC9B0"),operator:I("#D4D4D4"),default:I(x.code)},r=e.toLowerCase();return r==="typescript"||r==="ts"||r==="javascript"||r==="js"?t.map(a=>is(a,n)):r==="python"||r==="py"?t.map(a=>rs(a,n)):r==="bash"||r==="sh"||r==="shell"?t.map(a=>os(a,n)):r==="json"?t.map(a=>as(a,n)):t.map(a=>n.default(a))}function is(s,e){if(s.trim().startsWith("//"))return e.comment?.(s)??s;let t=/\b(const|let|var|function|async|await|return|if|else|for|while|class|interface|type|import|export|from|default|new|this|super|extends|implements)\b/g,n=s.replace(t,r=>e.keyword?.(r)??r);return n=n.replace(/(['"`])(?:(?=(\\?))\2.)*?\1/g,r=>e.string?.(r)??r),n=n.replace(/\b\d+(\.\d+)?\b/g,r=>e.number?.(r)??r),n}function rs(s,e){if(s.trim().startsWith("#"))return e.comment?.(s)??s;let t=/\b(def|class|if|elif|else|for|while|return|import|from|as|try|except|finally|with|async|await|lambda|yield|pass|break|continue|None|True|False)\b/g,n=s.replace(t,r=>e.keyword?.(r)??r);return n=n.replace(/(['"])(?:(?=(\\?))\2.)*?\1/g,r=>e.string?.(r)??r),n=n.replace(/\b\d+(\.\d+)?\b/g,r=>e.number?.(r)??r),n}function os(s,e){if(s.trim().startsWith("#"))return e.comment?.(s)??s;let t=/\b(if|then|else|elif|fi|for|while|do|done|case|esac|function|return|exit|export|source|alias)\b/g,n=s.replace(t,r=>e.keyword?.(r)??r);return n=n.replace(/(['"])(?:(?=(\\?))\2.)*?\1/g,r=>e.string?.(r)??r),n=n.replace(/\$\{?[\w_]+\}?/g,r=>e.type?.(r)??r),n}function as(s,e){let t=s;return t=t.replace(/"([^"]+)":/g,(n,r)=>`${e.type?.(`"${r}"`)??`"${r}"`}: `),t=t.replace(/:\s*"([^"]+)"/g,(n,r)=>`: ${e.string?.(`"${r}"`)??`"${r}"`}`),t=t.replace(/:\s*(\d+(\.\d+)?)/g,(n,r)=>`: ${e.number?.(r)??r}`),t=t.replace(/:\s*(true|false|null)/g,(n,r)=>`: ${e.keyword?.(r)??r}`),t}var xe={heading:s=>ve(I(x.accent)(s)),link:s=>I(x.link)(s),linkUrl:s=>I(x.dim)(s),code:s=>I(x.code)(s),codeBlock:s=>I(x.code)(s),codeBlockBorder:s=>I(x.codeBorder)(s),quote:s=>I(x.quote)(s),quoteBorder:s=>I(x.quoteBorder)(s),hr:s=>I(x.border)(s),listBullet:s=>I(x.accentSoft)(s),bold:ve,italic:rt,strikethrough:s=>`\x1B[9m${s}\x1B[0m`,underline:s=>`\x1B[4m${s}\x1B[0m`,highlightCode:ns,codeBlockIndent:" "},Mt={borderColor:s=>I(x.border)(s),selectList:ss};var z=a.create({service:"cli-tui-chatlog"}),ot=null;function ds(){if(ot)return ot;let s=a$1("tui.system.tool_executing",{vars:{tool:""}}).split(":")[0]?.trim()||"",e=a$1("tui.system.tool_completed",{vars:{tool:""}}).split(":")[0]?.trim()||"",t=a$1("tui.system.tool_failed",{vars:{tool:""}}).split(":")[0]?.trim()||"",n=[],r=a=>a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return s&&s!=="tui.system.tool_executing"&&n.push(new RegExp(r(s),"i")),e&&e!=="tui.system.tool_completed"&&n.push(new RegExp(r(e),"i")),t&&t!=="tui.system.tool_failed"&&n.push(new RegExp(r(t),"i")),n.push(/[⚙🔧]\s*(执行工具|Executing tool)/iu,/[✓✅]\s*(工具完成|工具执行完成|Tool completed|Tool execution completed)/iu,/[✗❌]\s*(工具失败|工具执行失败|Tool failed|Tool execution failed)/iu),ot=n,n}var $e=class extends Container{constructor(){super();b(this,"messages",[]);b(this,"maxMessages",1e3);b(this,"containerWidth",80);b(this,"getState");b(this,"cachedProtocolMetadata",null);b(this,"_cachedPrimaryAgents",null);}setStateGetter(t){this.getState=t,this.loadProtocolMetadata();}async loadProtocolMetadata(){let t=this.getState?.();if(t?.sdk)try{let n=await t.sdk.app.context({});n.data?.protocolMetadata&&(this.cachedProtocolMetadata=n.data.protocolMetadata);}catch(n){z.debug("Failed to load protocol metadata",{error:n});}}setWidth(t){this.containerWidth=t;}addUser(t,n,r){this.addMessage("user",t,n,r);}addAssistant(t,n,r){this.addMessage("assistant",t,n,r);}addSystem(t,n,r){this.addMessage("system",t,n,r);}addMessage(t,n,r,a){if(z.debug("addMessage called",{type:t,content:n.substring(0,100),id:r,currentMessagesCount:this.messages.length}),r&&this.messages.findIndex(l=>l.id===r)!==-1){z.debug("Message with same ID already exists, skipping",{id:r});return}this.messages.push({type:t,content:n,timestamp:Date.now(),id:r,metadata:a}),z.debug("After push, messages count",{count:this.messages.length}),this.messages.length>this.maxMessages&&(this.messages=this.messages.slice(-this.maxMessages)),z.debug("Calling updateChildren"),this.updateChildren(),z.debug("updateChildren completed");}clear(){this.messages=[],this.updateChildren();}updateChildren(){let t=this.getState?.(),n=t?.toolsExpanded??false,r=t?.showThinking??false,a=t?.verboseLevel??"off",o=t?.messageLimit??50;z.debug("updateChildren called",{messagesCount:this.messages.length,childrenBeforeClear:this.children.length,toolsExpanded:n,showThinking:r,verboseLevel:a,messageLimit:o}),this.children=[],z.debug("Children cleared",{childrenAfterClear:this.children.length});let l=new Set,d=0,u=this.messages.slice(-o);z.debug("Applied message limit",{originalCount:this.messages.length,limitedCount:u.length,messageLimit:o});for(let c of u){if(c.id&&l.has(c.id)){z.debug("Skipping duplicate ID",{id:c.id});continue}if(!n&&this.shouldFilterToolMessage(c)){z.debug("Filtering tool message (tools collapsed)",{content:c.content.substring(0,50),metadata:c.metadata});continue}if(c.id&&!r&&this.shouldFilterThinkingMessage(c)){z.debug("Filtering thinking message (thinking mode off)",{content:c.content.substring(0,50),metadata:c.metadata});continue}if(c.id&&a==="off"&&this.shouldFilterBackgroundAgentMessage(c)){z.debug("Filtering background agent message (verbose off)",{content:c.content.substring(0,50),agent:c.metadata?.agent});continue}if(c.type==="assistant"&&this.shouldFilterAssistantMessage(c.content)){z.debug("Filtering assistant metadata",{content:c.content.substring(0,50)});continue}c.id&&l.add(c.id),z.debug("Rendering message",{type:c.type,content:c.content.substring(0,50),id:c.id,hasId:!!c.id,metadata:c.metadata}),this.renderMessage(c),d++;}z.debug("updateChildren completed",{childrenAfterRender:this.children.length,renderedCount:d}),this.invalidate();}shouldFilterSystemMessage(t){return ds().some(r=>r.test(t))}shouldFilterToolMessage(t){return t.metadata?.isTool===true?true:t.type==="system"?this.shouldFilterSystemMessage(t.content):false}shouldFilterThinkingMessage(t){return t.metadata?.isThinking===true}shouldFilterBackgroundAgentMessage(t){let n=t.metadata?.agent;if(!n)return false;let r=this.getState?.();if(!r?.sdk)return false;let a=async()=>{try{return ((await r.sdk.app.agents({})).data||[]).filter(d=>d.mode==="primary"&&d.hidden!==!0).map(d=>d.name)}catch{return []}};return this._cachedPrimaryAgents?!this._cachedPrimaryAgents.includes(n):(a().then(o=>{this._cachedPrimaryAgents=o,this.updateChildren();}),false)}shouldFilterAssistantMessage(t){return /^>\s+[\w-]+(\s+·\s+[\w-]+)?$/.test(t.trim())}renderMessage(t){let n=new Date(t.timestamp).toLocaleTimeString();switch(t.type){case "user":{if(t.metadata?.isSubagentResult){let l=t.metadata.agent||"SubAgent",d=ee.subagentLabel(`[${n}] ${l}: `),u=new Text(d,1,0);this.addChild(u);let p=new Markdown(t.content,0,0,xe).render(this.containerWidth-2);for(let _ of p){let $=new Text(_,1,0);this.addChild($);}break}let r=ee.userLabel(`[${n}] ${a$1("tui.chatlog.user_prefix")}: `),a=new Text(r,1,0);if(this.addChild(a),t.content.trim().startsWith("/")){let l=ee.accent(t.content),d=new Text(l,1,0);this.addChild(d);}else {let l=ee.userText(t.content),u=new Markdown(l,0,0,xe).render(this.containerWidth-2);for(let c of u){let p=new Text(c,1,0);this.addChild(p);}}break}case "assistant":{let r=a$1("tui.chatlog.assistant_prefix");this.cachedProtocolMetadata?.name?r=this.cachedProtocolMetadata.name:t.metadata?.agent&&(r=t.metadata.agent);let a=ee.assistantLabel(`[${n}] ${r}: `),o=new Text(a,1,0);this.addChild(o);let d=new Markdown(t.content,0,0,xe).render(this.containerWidth-2);for(let u of d){let c=new Text(u,1,0);this.addChild(c);}break}case "system":{let r=ee.systemLabel(`[${n}] ${a$1("tui.chatlog.system_prefix")}: `),a=new Text(r,1,0);this.addChild(a);let o=ee.system(t.content),d=new Markdown(o,0,0,xe).render(this.containerWidth-2);for(let u of d){let c=new Text(u,1,0);this.addChild(c);}break}}}};var cs={q:"exit",quit:"exit",h:"help",s:"status",a:"agent",m:"model",sess:"session",skills:"skill",commands:"command",mcps:"mcp",models:"model",agents:"agent",sessions:"session",btw:"command"},us=new Set(["btw","sync","abort","compact"]);function Dt(s){let e=s.replace(/^\//,"").trim();if(!e)return {name:"",args:""};let[t="",...n]=e.split(/\s+/),r=t.toLowerCase();return us.has(r)?{name:"command",args:e}:{name:cs[r]??r,args:n.join(" ").trim()}}var at=[{name:"help",description:a$1("tui.command.help.description")},{name:"status",description:a$1("tui.command.status.description")},{name:"command",description:a$1("tui.command.command.description")},{name:"agent",description:a$1("tui.command.agent.description")},{name:"session",description:a$1("tui.command.session.description")},{name:"new",description:a$1("tui.command.new.description")},{name:"fork",description:a$1("tui.command.fork.description")},{name:"reset",description:a$1("tui.command.reset.description")},{name:"model",description:a$1("tui.command.model.description")},{name:"settings",description:a$1("tui.command.settings.description")},{name:"verbose",description:a$1("tui.command.verbose.description")},{name:"thinking",description:a$1("tui.command.thinking.description")},{name:"abort",description:a$1("tui.command.abort.description")},{name:"clear",description:a$1("tui.command.clear.description")},{name:"compact",description:a$1("tui.command.compact.description")},{name:"skill",description:a$1("tui.command.skill.description")},{name:"mcp",description:a$1("tui.command.mcp.description")},{name:"exit",description:a$1("tui.command.exit.description")}];async function _t(s,e){let t=[...at];if(s)try{let r=(await s.command.list({contextMode:e})).data||[],a=new Set(at.map(o=>o.name));for(let o of r)a.has(o.name)||t.push({name:o.name,description:o.description||""});}catch(n){console.error("Failed to fetch dynamic commands:",n);}return t}function Rt(){return at}function $t(){let s=[];return s.push("# "+a$1("tui.help.title")),s.push(""),s.push("## "+a$1("tui.help.section.basic")),s.push("- `"+a$1("tui.help.command.help")+"`"),s.push("- `"+a$1("tui.help.command.status")+"`"),s.push("- `"+a$1("tui.help.command.command")+"`"),s.push(""),s.push("## "+a$1("tui.help.section.agent")),s.push("- `"+a$1("tui.help.command.agent")+"`"),s.push(""),s.push("## "+a$1("tui.help.section.session")),s.push("- `"+a$1("tui.help.command.session")+"`"),s.push("- `"+a$1("tui.help.command.new")+"`"),s.push("- `"+a$1("tui.help.command.fork")+"`"),s.push("- `"+a$1("tui.help.command.reset")+"`"),s.push(""),s.push("## "+a$1("tui.help.section.model")),s.push("- `"+a$1("tui.help.command.model")+"`"),s.push(""),s.push("## "+a$1("tui.help.section.settings")),s.push("- `"+a$1("tui.help.command.settings")+"`"),s.push("- `"+a$1("tui.help.command.verbose")+"`"),s.push("- `"+a$1("tui.help.command.thinking")+"`"),s.push(""),s.push("## "+a$1("tui.help.section.operations")),s.push("- `"+a$1("tui.help.command.abort")+"`"),s.push("- `"+a$1("tui.help.command.clear")+"`"),s.push("- `"+a$1("tui.help.command.compact")+"`"),s.push(""),s.push("## "+a$1("tui.help.section.skill")),s.push("- `"+a$1("tui.help.command.skill")+"`"),s.push("- `"+a$1("tui.help.command.mcp")+"`"),s.push(""),s.push("## "+a$1("tui.help.section.exit")),s.push("- `"+a$1("tui.help.command.exit")+"`"),s.push(""),s.push("## "+a$1("tui.help.section.local")),s.push("- `"+a$1("tui.help.command.local")+"`"),s.push(""),s.push("## "+a$1("tui.help.section.shortcuts")),s.push("- `"+a$1("tui.help.shortcut.ctrl_c")+"`"),s.push("- `"+a$1("tui.help.shortcut.ctrl_d")+"`"),s.push("- `"+a$1("tui.help.shortcut.ctrl_l")+"`"),s.push("- `"+a$1("tui.help.shortcut.ctrl_p")+"`"),s.push("- `"+a$1("tui.help.shortcut.ctrl_g")+"`"),s.push("- `"+a$1("tui.help.shortcut.esc")+"`"),s.join(`
|
|
4
4
|
`)}var ms=/[\s\-_./:#@]/;function Ht(s,e){return e===0||ms.test(s[e-1]??"")}function Ft(s,e){if(!e)return null;let t=s.toLowerCase(),n=e.toLowerCase(),r=t.length-n.length;if(r<0)return null;for(let a=0;a<=r;a++)if(t.startsWith(n,a)&&Ht(t,a))return a;return null}function gs(s,e){if(s.length===0)return 0;if(s.length>e.length)return null;let t=0,n=0,r=-1,a=0;for(let o=0;o<e.length&&t<s.length;o++)if(e[o]===s[t]){let l=Ht(e,o);r===o-1?(a++,n-=a*5):(a=0,r>=0&&(n+=(o-r-1)*2)),l&&(n-=10),n+=o*.1,r=o,t++;}return t<s.length?null:n}function qt(s,e){let t=e.trim();if(!t)return s;let n=t.split(/\s+/).filter(a=>a.length>0);if(n.length===0)return s;let r=[];for(let a of s){let o=a.searchTextLower??"",l=0,d=true;for(let u of n){let c=gs(u,o);if(c!==null)l+=c;else {d=false;break}}d&&r.push({item:a,score:l});}return r.sort((a,o)=>a.score-o.score),r.map(a=>a.item)}var ys="\x1B",Bt=new RegExp(`${ys}\\[[0-9;]*m`,"g"),se=class se{constructor(e,t,n){b(this,"items");b(this,"filteredItems");b(this,"selectedIndex",0);b(this,"maxVisible");b(this,"theme");b(this,"searchInput");b(this,"regexCache",new Map);b(this,"onSelect");b(this,"onCancel");b(this,"onSelectionChange");b(this,"compareByScore",(e,t)=>e.tier!==t.tier?e.tier-t.tier:e.score!==t.score?e.score-t.score:this.getItemLabel(e.item).localeCompare(this.getItemLabel(t.item)));this.items=e,this.filteredItems=e,this.maxVisible=t,this.theme=n,this.searchInput=new Input;}getCachedRegex(e){let t=this.regexCache.get(e);return t||(t=new RegExp(this.escapeRegex(e),"gi"),this.regexCache.set(e,t)),t}updateFilter(){let e=this.searchInput.getValue().trim();e?this.filteredItems=this.smartFilter(e):this.filteredItems=this.items,this.selectedIndex=0,this.notifySelectionChange();}smartFilter(e){let t=e.toLowerCase(),n=[],r=[];for(let o of this.items){let l=this.getItemLabel(o),d=o.description??"",u=a$2(l).toLowerCase(),c=a$2(d).toLowerCase(),p=u.indexOf(t);if(p!==-1){n.push({item:o,tier:0,score:p});continue}let _=Ft(u,t);if(_!==null){n.push({item:o,tier:1,score:_});continue}let $=c.indexOf(t);if($!==-1){n.push({item:o,tier:2,score:$});continue}let ne=o.searchText??"";r.push({item:o,searchTextLower:[l,d,ne].map(A=>a$2(A)).filter(Boolean).join(" ").toLowerCase()});}n.sort(this.compareByScore);let a=qt(r,t);return [...n.map(o=>o.item),...a.map(o=>o.item)]}escapeRegex(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}getItemLabel(e){return e.label||e.value}splitAnsiParts(e){let t=[];Bt.lastIndex=0;let n=0,r;for(;(r=Bt.exec(e))!==null;)r.index>n&&t.push({text:e.slice(n,r.index),isAnsi:false}),t.push({text:r[0],isAnsi:true}),n=r.index+r[0].length;return n<e.length&&t.push({text:e.slice(n),isAnsi:false}),t}highlightMatch(e,t){let n=t.trim().split(/\s+/).map(o=>o.toLowerCase()).filter(o=>o.length>0);if(n.length===0)return e;let r=Array.from(new Set(n)).toSorted((o,l)=>l.length-o.length),a=this.splitAnsiParts(e);for(let o of r){let l=this.getCachedRegex(o),d=[];for(let u of a){if(u.isAnsi){d.push(u);continue}l.lastIndex=0;let c=u.text.replace(l,p=>this.theme.matchHighlight(p));if(c===u.text){d.push(u);continue}d.push(...this.splitAnsiParts(c));}a=d;}return a.map(o=>o.text).join("")}setSelectedIndex(e){this.selectedIndex=Math.max(0,Math.min(e,this.filteredItems.length-1));}invalidate(){this.searchInput.invalidate();}render(e){let t=[],r=this.theme.searchPrompt("search: "),a=Math.max(1,e-b$1(r)),l=this.searchInput.render(a)[0]??"";t.push(`${r}${this.theme.searchInput(l)}`),t.push("");let d=this.searchInput.getValue().trim();if(this.filteredItems.length===0)return t.push(this.theme.noMatch(" No matches")),t;let u=Math.max(0,Math.min(this.selectedIndex-Math.floor(this.maxVisible/2),this.filteredItems.length-this.maxVisible)),c=Math.min(u+this.maxVisible,this.filteredItems.length);for(let p=u;p<c;p++){let _=this.filteredItems[p];if(!_)continue;let $=p===this.selectedIndex;t.push(this.renderItemLine(_,$,e,d));}if(this.filteredItems.length>this.maxVisible){let p=`${this.selectedIndex+1}/${this.filteredItems.length}`;t.push(this.theme.scrollInfo(` ${p}`));}return t}renderItemLine(e,t,n,r){let a=t?"\u2192 ":" ",o=a.length,l=this.getItemLabel(e),d=e.description;if(d){let $=this.getDescriptionLayout(n,o);if($){let ne=truncateToWidth(l,$.maxValueWidth,""),A=this.highlightMatch(ne,r),M=b$1(A),h=$.availableWidth-M-$.spacingWidth;if(h>=se.DESCRIPTION_MIN_WIDTH){let re=" ".repeat($.spacingWidth),H=truncateToWidth(d,h,""),w=this.highlightMatch(H,r),f=t?w:this.theme.description(w),g=`${a}${A}${re}${f}`;return t?this.theme.selectedText(g):g}}}let u=n-o-2,c=truncateToWidth(l,u,""),p=this.highlightMatch(c,r),_=`${a}${p}`;return t?this.theme.selectedText(_):_}getDescriptionLayout(e,t){if(e<=se.DESCRIPTION_LAYOUT_MIN_WIDTH)return null;let n=Math.max(1,e-t-se.RIGHT_MARGIN_WIDTH),r=n-se.DESCRIPTION_MIN_WIDTH-se.DESCRIPTION_SPACING_WIDTH;return r<1?null:{availableWidth:n,maxValueWidth:r,spacingWidth:se.DESCRIPTION_SPACING_WIDTH}}handleInput(e){if(isKeyRelease(e))return;let t=getKeybindings(),n=!this.searchInput.getValue().trim();if(t.matches(e,"tui.select.up")||t.matches(e,"tui.editor.cursorUp")||n&&e==="k"){this.selectedIndex=Math.max(0,this.selectedIndex-1),this.notifySelectionChange();return}if(t.matches(e,"tui.select.down")||t.matches(e,"tui.editor.cursorDown")||n&&e==="j"){this.selectedIndex=Math.min(this.filteredItems.length-1,this.selectedIndex+1),this.notifySelectionChange();return}if(t.matches(e,"tui.select.confirm")){let o=this.filteredItems[this.selectedIndex];o&&this.onSelect&&this.onSelect(o);return}if(t.matches(e,"tui.select.cancel")){this.onCancel&&this.onCancel();return}let r=this.searchInput.getValue();this.searchInput.handleInput(e);let a=this.searchInput.getValue();r!==a&&this.updateFilter();}notifySelectionChange(){let e=this.filteredItems[this.selectedIndex];e&&this.onSelectionChange&&this.onSelectionChange(e);}getSelectedItem(){return this.filteredItems[this.selectedIndex]??null}};b(se,"DESCRIPTION_LAYOUT_MIN_WIDTH",40),b(se,"DESCRIPTION_MIN_WIDTH",12),b(se,"DESCRIPTION_SPACING_WIDTH",2),b(se,"RIGHT_MARGIN_WIDTH",2);var He=se;var ge=a.create({service:"cli-tui-selectors"}),Ss={selectedPrefix:s=>`\x1B[36m${s}\x1B[0m`,selectedText:s=>`\x1B[1;36m${s}\x1B[0m`,description:s=>`\x1B[90m${s}\x1B[0m`,scrollInfo:s=>`\x1B[90m${s}\x1B[0m`,noMatch:s=>`\x1B[90m${s}\x1B[0m`,searchPrompt:s=>`\x1B[36m${s}\x1B[0m`,searchInput:s=>s,matchHighlight:s=>`\x1B[1;33m${s}\x1B[0m`};function pe(s,e){ge.debug("Creating searchable select list",{itemsCount:s.length,title:e.title});let t=e.maxVisible??10,n=new He(s,t,Ss);return e.onSelect&&(n.onSelect=e.onSelect),e.onCancel&&(n.onCancel=e.onCancel),n}function Fe(s,e){ge.info("Creating model selector with data");let t=[];for(let[n,r]of Object.entries(s))if(r?.models)for(let[a,o]of Object.entries(r.models))t.push({label:`${r.name} - ${o.name}`,value:`${n}/${a}`,description:o.family||""});return ge.debug("Model list loaded",{count:t.length}),pe(t,{title:e.title||a$1("tui.selector.model.title"),placeholder:e.placeholder||a$1("tui.selector.model.placeholder"),onSelect:e.onSelect,onCancel:e.onCancel})}function qe(s,e){ge.info("Creating session selector with data",{count:s.length});let t=s.map(n=>({label:n.title||n.id,value:n.id,description:`\u66F4\u65B0\u65F6\u95F4: ${n.time?.updated?new Date(n.time.updated).toLocaleString():"\u672A\u77E5"}`}));return ge.debug("Session list loaded",{count:t.length}),pe(t,{title:e.title||a$1("tui.selector.session.title"),placeholder:e.placeholder||a$1("tui.selector.session.placeholder"),onSelect:e.onSelect,onCancel:e.onCancel})}function Be(s,e){ge.info("Creating agent selector with data",{count:s.length});let t=s.map(n=>({label:n.name,value:n.name,description:n.description||(n.mode?`\u6A21\u5F0F: ${n.mode}`:"")}));return ge.debug("Agent list loaded",{count:t.length}),pe(t,{title:e.title||a$1("tui.selector.agent.title"),placeholder:e.placeholder||a$1("tui.selector.agent.placeholder"),onSelect:e.onSelect,onCancel:e.onCancel})}var T=a.create({service:"cli-tui-command-handlers"});async function vs(s,e){let t=[];t.push("## "+a$1("tui.handler.status.title")),t.push(""),t.push("### "+a$1("tui.handler.status.system_info")),t.push("- **"+a$1("tui.handler.status.system")+"**: "+a$1("tui.handler.status.ok")),t.push("- **"+a$1("tui.handler.status.directory")+"**: `"+e+"`"),t.push(""),t.push("### "+a$1("tui.handler.status.global_paths")),t.push("- **home**: `"+a$3.Path.home+"`"),t.push("- **data**: `"+a$3.Path.data+"`"),t.push("- **bin**: `"+a$3.Path.bin+"`"),t.push("- **log**: `"+a$3.Path.log+"`"),t.push("- **cache**: `"+a$3.Path.cache+"`"),t.push("- **config**: `"+a$3.Path.config+"`"),t.push("- **state**: `"+a$3.Path.state+"`"),t.push(""),t.push("### "+a$1("tui.handler.status.session_info")),t.push("- **"+a$1("tui.handler.status.agent_label")+"**: "+(s.agent||a$1("tui.handler.status.not_set"))),t.push("- **"+a$1("tui.handler.status.session_label")+"**: "+(s.currentSessionKey||a$1("tui.handler.status.not_set"))),t.push("- **"+a$1("tui.handler.status.model_label")+"**: "+(s.sessionInfo.model||a$1("tui.handler.status.not_set"))),t.push("");try{let r=(await s.sdk.command.list({})).data||[],a=r.filter(d=>d.source==="skill"),o=r.filter(d=>d.source==="mcp"),l=r.filter(d=>d.source==="command");if(t.push("### "+a$1("tui.handler.status.skills")+" ("+a.length+")"),a.length>0){let d=a.map(u=>u.name).join(", ");t.push(d);}t.push("");try{let u=(await s.sdk.mcp.status({})).data||{},p=(await s.sdk.mcp.tools({})).data||{},_=Object.entries(u).filter(([,$])=>$.status==="connected");if(t.push("### "+a$1("tui.handler.status.mcp")+" ("+_.length+")"),_.length>0)for(let[$]of _){let ne=p[$]||[];ne.length>0?t.push("- **"+$+"** ("+ne.length+"): "+ne.join(", ")):t.push("- **"+$+"**");}t.push("");}catch(d){T.error("Failed to get MCP status",{error:d}),t.push("### "+a$1("tui.handler.status.mcp")+" (0)"),t.push("");}if(t.push("### "+a$1("tui.handler.status.commands")+" ("+l.length+")"),l.length>0){let d=l.map(u=>u.name).join(", ");t.push(d);}t.push(""),t.push("### "+a$1("tui.handler.status.services"));try{if(!s.sdk?.lsp)T.warn("SDK or LSP API is not initialized"),t.push("- **LSP**: "+a$1("tui.handler.status.error_loading_lsp"));else {let d=await s.sdk.lsp.status({});if(!d||typeof d!="object")T.warn("LSP status response is not a valid object",{response:d,responseType:typeof d}),t.push("- **LSP**: "+a$1("tui.handler.status.error_loading_lsp"));else {let u=Array.isArray(d.data)?d.data:[];if(t.push("- **LSP ("+u.length+")**: "),u.length>0){let c=u.filter(p=>p&&typeof p=="object").map(p=>p?.name||"unknown").join(", ");t.push(" "+c);}else t.push(" "+a$1("tui.handler.status.no_lsp"));}}}catch(d){T.error("Failed to get LSP status",{error:d}),t.push("- **LSP**: "+a$1("tui.handler.status.error_loading_lsp"));}}catch(n){T.error("Failed to get command list for status",{error:n}),t.push(""),t.push("_"+a$1("tui.handler.status.error_loading")+"_");}return t.join(`
|
|
5
|
-
`)}function Ut(s,e){let{chatLog:t,tui:n,directory:r,openOverlay:a,closeOverlay:o,requestExit:l,setActivityStatus:d,updateFooter:u,refreshSessionInfo:c$1,loadHistory:p,setSession:_,refreshAgents:$,abortActive:ne}=s,A=()=>{o();},M=async(H,w,f,g)=>{try{if(!w){T.warn("Cannot publish command event: no session ID",{name:H});return}await na(e,ga.Event.Executed,{name:H,sessionID:w,arguments:f,messageID:g}),T.debug("Command event published",{name:H,sessionId:w,messageId:g});}catch(k){T.error("Failed to publish command event",{name:H,sessionId:w,messageId:g,error:k instanceof Error?k.message:String(k),stack:k instanceof Error?k.stack:void 0});}},he=async H=>{T.debug("Handle command called",{raw:H});let{name:w,args:f}=Dt(H);if(T.debug("Parsed command",{name:w,args:f}),!w){T.debug("No command name, returning");return}try{switch(w){case "help":T.debug("Executing help command"),t.addSystem($t()),T.debug("Help text added to chatLog"),await M("help",e.currentSessionId||"",f||"",randomUUID());break;case "commands":case "command":case "cmds":case "cmd":{try{let b=((await e.sdk.command.list({})).data||[]).filter(y=>y.source==="command");if(b.length===0){t.addSystem(a$1("tui.handler.command.empty")),await M(w,e.currentSessionId||"",f||"",randomUUID());break}if(f){let y=f.split(/\s+/),G=y[0],te=y.slice(1).join(" ");b.some(ae=>ae.name===G)?await re("command",G,e,t,d,te||void 0):t.addSystem(a$1("tui.handler.command.not_found",{vars:{name:G}})),await M(w,e.currentSessionId||"",f,randomUUID());break}T.info("Opening command selector");let S=b.map(y=>({label:y.name,description:y.description||"",value:y.name})),E=pe(S,{onSelect:async y=>{A(),s.setInputText?s.setInputText(`/command ${y.value} `):await re("command",y.value,e,t,d);},onCancel:A});a(E),await M(w,e.currentSessionId||"","",randomUUID());}catch(g){T.error("Failed to handle command",{error:g}),t.addSystem(a$1("tui.handler.command.error",{vars:{error:String(g)}})),await M(w,e.currentSessionId||"",f||"",randomUUID());}break}case "status":t.addSystem(await vs(e,r)),await M("status",e.currentSessionId||"",f||"",randomUUID());break;case "agents":case "agent":if(f)e.agent=f,t.addSystem(a$1("tui.handler.agent.switched",{vars:{agentId:f}})),u(),await b$2(e),await M(w,e.currentSessionId||"",f,randomUUID());else {T.info("Opening agent selector");let k=(await ra(e)).filter(S=>S.mode==="primary"&&S.hidden!==!0),b=Be(k,{onSelect:async S=>{e.agent=S.value,t.addSystem(a$1("tui.handler.agent.switched",{vars:{agentId:S.value}})),u(),A(),await b$2(e);},onCancel:A});a(b),await M(w,e.currentSessionId||"","",randomUUID());}break;case "sessions":case "session":if(f&&_)await _(f),u(),await M(w,e.currentSessionId||"",f,randomUUID());else {T.info("Opening session selector");let g=await sa(e),k=qe(g,{onSelect:async b=>{_&&await _(b.value),u(),A();},onCancel:A});a(k),await M(w,e.currentSessionId||"","",randomUUID());}break;case "models":case "model":if(f)e.sessionInfo.model=f,t.addSystem(a$1("tui.handler.model.set",{vars:{model:f}})),u(),await b$2(e),await M(w,e.currentSessionId||"",f,randomUUID());else {T.info("Opening model selector");let g=await ta(e),k=Fe(g,{onSelect:async b=>{e.sessionInfo.model=b.value,t.addSystem(a$1("tui.handler.model.set",{vars:{model:b.value}})),u(),A(),await b$2(e);},onCancel:A});a(k),await M(w,e.currentSessionId||"","",randomUUID());}break;case "fork":{try{d(a$1("tui.handler.fork.begin"));let g=e.currentSessionId;if(g&&e.activeChatRunId)try{await e.sdk.session.abort({sessionID:g}),e.activeChatRunId=null,T.info("Aborted running agent before forking session",{sessionId:g});}catch(k){T.warn("Failed to abort agent before forking, continuing anyway",{error:k});}if(t.clear(),g){let b=(await e.sdk.session.fork({sessionID:g})).data;b&&(e.currentSessionId=b.id,e.currentSessionKey=b.title||b.slug||b.id,e.sessionInfo={model:e.sessionInfo.model},await b$2(e));}p&&await p(),u(),d(a$1("tui.status.ready"));}catch(g){T.error("Failed to fork session",{error:g}),t.addSystem(a$1("tui.handler.fork.error",{vars:{error:String(g)}})),d(a$1("tui.status.error"));}await M("fork",e.currentSessionId||"",f||"",randomUUID());break}case "new":{try{d(a$1("tui.handler.new.begin"));let g=e.currentSessionId;if(g&&e.activeChatRunId)try{await e.sdk.session.abort({sessionID:g}),e.activeChatRunId=null,T.info("Aborted running agent before creating new session",{sessionId:g});}catch(E){T.warn("Failed to abort agent before creating new session, continuing anyway",{error:E});}t.clear();let k=e.instanceContext.directory,S=(await e.sdk.session.create({directory:k})).data;S&&(e.currentSessionId=S.id,e.currentSessionKey=S.title||S.slug||S.id,e.sessionInfo={model:e.sessionInfo.model},await b$2(e)),u(),d(a$1("tui.status.ready"));}catch(g){T.error("Failed to create new session",{error:g}),t.addSystem(a$1("tui.handler.new.error",{vars:{error:String(g)}})),d(a$1("tui.status.error"));}await M("new",e.currentSessionId||"",f||"",randomUUID());break}case "reset":{try{let g=e.currentSessionId;if(g&&e.activeChatRunId)try{await e.sdk.session.abort({sessionID:g}),e.activeChatRunId=null,T.info("Aborted running agent before reset",{sessionId:g});}catch(k){T.warn("Failed to abort agent before reset, continuing anyway",{error:k});}t.clear(),t.addSystem(a$1("tui.handler.session.reset")),p&&await p();}catch(g){T.error("Failed to reset session",{error:g}),t.addSystem(a$1("tui.handler.session.reset_error",{vars:{error:String(g)}}));}await M("reset",e.currentSessionId||"",f||"",randomUUID());break}case "settings":{T.info("Opening settings panel");let{createSettingsPanel:g}=await import('./settings-panel-4GBMKF7S.mjs'),k=g({currentSettings:{thinkingLevel:e.thinkingLevel,showThinking:e.showThinking,verboseLevel:e.verboseLevel,messageLimit:e.messageLimit,toolsExpanded:e.toolsExpanded,localShellPermission:e.localShellPermission,contextMode:e.contextMode},onChange:(b,S)=>{switch(b){case "thinkingLevel":e.thinkingLevel=S,t.addSystem(a$1("tui.handler.thinking_level.set",{vars:{level:S}}));break;case "showThinking":e.showThinking=S==="true",T.info("showThinking changed",{newValue:S,showThinking:e.showThinking}),t.addSystem(e.showThinking?a$1("tui.hint.show_thinking_on"):a$1("tui.hint.show_thinking_off"));break;case "verboseLevel":e.verboseLevel=S,t.addSystem(a$1("tui.handler.verbose_level.set",{vars:{level:S}}));break;case "messageLimit":e.messageLimit=Number.parseInt(S,10),t.addSystem(a$1("tui.handler.message_limit.set",{vars:{limit:S}}));break;case "toolsExpanded":e.toolsExpanded=S==="true",T.info("toolsExpanded changed",{newValue:S,toolsExpanded:e.toolsExpanded}),t.addSystem(e.toolsExpanded?a$1("tui.hint.tools_expanded"):a$1("tui.hint.tools_collapsed"));break;case "localShellPermission":e.localShellPermission=S,T.info("localShellPermission changed",{newValue:S,localShellPermission:e.localShellPermission}),t.addSystem(a$1("tui.shell.permission.updated",{vars:{permission:S}}));break;case "contextMode":{let E=S;e.contextMode=E,T.info("contextMode changed",{newValue:S,contextMode:E}),t.addSystem(a$1("tui.handler.context_mode.set",{vars:{mode:E}})),e.currentSessionId&&e.sdk.session.contextMode.set({sessionID:e.currentSessionId,mode:E}).catch(y=>{T.error("Failed to update session contextMode",{error:y,sessionId:e.currentSessionId});});break}}b$2(e).then(async()=>{try{T.info("Publishing HeaderRefresh event",{id:b,newValue:S}),await na(e,c.StatusBarRefresh,{reason:`settings changed: ${b}`});}catch(E){T.error("Failed to publish HeaderRefresh event",{error:E});}}).catch(E=>{T.error("Failed to save TUI state after settings change",{error:E,id:b});});},onCancel:A});a(k),await M("settings",e.currentSessionId||"",f||"",randomUUID());break}case "verbose":if(!f){t.addSystem(a$1("tui.handler.verbose.usage")),await M(w,e.currentSessionId||"","",randomUUID());break}if(f!=="on"&&f!=="off"){t.addSystem(a$1("tui.handler.verbose.invalid",{vars:{value:f}})),await M(w,e.currentSessionId||"",f,randomUUID());break}e.verboseLevel=f,t.addSystem(a$1("tui.handler.verbose.set",{vars:{level:f}})),await b$2(e),await M(w,e.currentSessionId||"",f,randomUUID());break;case "thinking":if(!f){t.addSystem(a$1("tui.handler.thinking.usage"));break}e.thinkingLevel=f,t.addSystem(a$1("tui.handler.thinking.set",{vars:{level:f}})),await b$2(e),await M("thinking",e.currentSessionId||"",f||"",randomUUID());break;case "clear":{T.info("Opening clear confirmation dialog");let{createConfirmDialog:g}=await import('./confirm-dialog-XBLCGOEC.mjs'),k=g({message:a$1("tui.dialog.clear.message"),onConfirm:async()=>{try{d(a$1("tui.handler.clear.begin")),A();let b=e.currentSessionId;if(b&&e.activeChatRunId)try{await e.sdk.session.abort({sessionID:b}),e.activeChatRunId=null,T.info("Aborted running agent before clearing session",{sessionId:b});}catch(y){T.warn("Failed to abort agent before clearing, continuing anyway",{error:y});}t.clear(),b&&await e.sdk.session.delete({sessionID:b});let E=(await e.sdk.session.create({directory:e.instanceContext.directory})).data;E&&(e.currentSessionId=E.id,e.currentSessionKey=E.title||E.slug||E.id,e.sessionInfo={model:e.sessionInfo.model},await b$2(e)),u(),t.addSystem(a$1("tui.handler.clear.success")),d(a$1("tui.status.ready")),await M("clear",e.currentSessionId||"",f||"",randomUUID());}catch(b){T.error("Failed to clear chat history",{error:b}),t.addSystem(a$1("tui.handler.clear.error",{vars:{error:String(b)}})),d(a$1("tui.status.error")),await M("clear",e.currentSessionId||"",f||"",randomUUID());}},onCancel:()=>{t.addSystem(a$1("tui.clear.cancel")),A();}});a(k);break}case "skills":case "skill":{try{let b=((await e.sdk.command.list({})).data||[]).filter(y=>y.source==="skill");if(b.length===0){t.addSystem(a$1("tui.handler.skill.empty")),await M(w,e.currentSessionId||"",f||"",randomUUID());break}if(f){let y=f.split(/\s+/),G=y[0],te=y.slice(1).join(" ");b.some(ae=>ae.name===G)?await re("skill",G,e,t,d,te||void 0):t.addSystem(a$1("tui.handler.skill.not_found",{vars:{name:G}})),await M(w,e.currentSessionId||"",f,randomUUID());break}T.info("Opening skill selector");let S=b.map(y=>({label:y.name,description:y.description||"",value:y.name})),E=pe(S,{onSelect:async y=>{A(),s.setInputText?s.setInputText(`/skill ${y.value} `):await re("skill",y.value,e,t,d);},onCancel:A});a(E),await M(w,e.currentSessionId||"","",randomUUID());}catch(g){T.error("Failed to handle skill",{error:g}),t.addSystem(a$1("tui.handler.skill.error",{vars:{error:String(g)}})),await M(w,e.currentSessionId||"",f||"",randomUUID());}break}case "mcps":case "mcp":{try{let b=((await e.sdk.command.list({})).data||[]).filter(y=>y.source==="mcp");if(b.length===0){t.addSystem(a$1("tui.handler.mcp.empty")),await M(w,e.currentSessionId||"",f||"",randomUUID());break}if(f){let y=f.split(/\s+/),G=y[0],te=y.slice(1).join(" ");b.some(ae=>ae.name===G)?await re("mcp",G,e,t,d,te||void 0):t.addSystem(a$1("tui.handler.mcp.not_found",{vars:{name:G}})),await M(w,e.currentSessionId||"",f,randomUUID());break}T.info("Opening MCP prompt selector");let S=b.map(y=>({label:y.name,description:y.description||"",value:y.name})),E=pe(S,{onSelect:async y=>{A(),s.setInputText?s.setInputText(`/mcp ${y.value} `):await re("mcp",y.value,e,t,d);},onCancel:A});a(E),await M(w,e.currentSessionId||"","",randomUUID());}catch(g){T.error("Failed to handle MCP prompt",{error:g}),t.addSystem(a$1("tui.handler.mcp.error",{vars:{error:String(g)}})),await M(w,e.currentSessionId||"",f||"",randomUUID());}break}case "exit":case "quit":await M(w,e.currentSessionId||"",f||"",randomUUID()),l();break;default:T.debug("Unknown command, sending as message"),await h(H);break}}catch(g){let k=g instanceof Error?g.message:String(g);T.error("Command execution failed",{command:w,args:f,error:k,stack:g instanceof Error?g.stack:void 0}),t.addSystem(a$1("tui.handler.command.error",{vars:{command:w,error:k}}));}T.debug("handleCommand completed");},h=async(H,w,f)=>{try{let g=randomUUID();if(e.activeChatRunId=g,d(a$1("tui.handler.send.sending")),!e.currentSessionId)throw new Error("No active session");let k;if(e.sessionInfo.model){let{provider:E,model:y}=parseModelId(e.sessionInfo.model);E&&y&&(k={providerID:E,modelID:y});}let b=[{type:"text",text:H}];if(w&&w.length>0)for(let E of w)b.push({type:"file",url:E.url,filename:E.filename,mime:E.mime});f&&b.push({type:"agent",name:f});let S=await e.sdk.session.prompt({sessionID:e.currentSessionId,parts:b,agent:e.agent||void 0,model:k,variant:e.thinkingLevel,contextMode:e.contextMode});if(S.data&&e.currentSessionId&&await M("message",e.currentSessionId,H,S.data.info?.id||randomUUID()),S.data){let E=S.data.parts?.filter(y=>y.type==="text")||[];for(let y of E)"text"in y&&y.text&&t.addAssistant(y.text,S.data.info?.id);}e.activeChatRunId=null,d("");}catch(g){e.activeChatRunId=null;let k=g instanceof Error?g.message:String(g),b=g instanceof Error?g.name:"Error";t.addSystem(a$1("tui.handler.send.error",{vars:{error:k}})),d(a$1("tui.handler.send.error_status")),T.error("Failed to send message",{error:k,errorName:b,sessionId:e.currentSessionId,hasModel:!!e.sessionInfo.model,stack:g instanceof Error?g.stack:void 0});}},re=async(H,w,f,g,k,b)=>{try{let S=H==="skill"?a$1("tui.handler.skill.executing"):H==="command"?a$1("tui.handler.command.executing"):a$1("tui.handler.mcp.executing");if(g.addSystem(S+`: ${w}`),k(a$1("tui.handler.executing",{vars:{command:w}})),!f.currentSessionId)throw new Error("No active session");let E;f.sessionInfo.model&&(E=f.sessionInfo.model);let y=b?[{type:"text",text:b}]:void 0,te=(await f.sdk.session.command({sessionID:f.currentSessionId,command:w,arguments:b??"",agent:f.agent||void 0,model:E,variant:f.thinkingLevel,contextMode:f.contextMode,parts:y})).data,ae=te?.metadata?.commandType;if(te?.success)ae==="local"&&g.addSystem(a$1("tui.handler.local.completed")+`: ${w}
|
|
5
|
+
`)}function Ut(s,e){let{chatLog:t,tui:n,directory:r,openOverlay:a,closeOverlay:o,requestExit:l,setActivityStatus:d,updateFooter:u,refreshSessionInfo:c$1,loadHistory:p,setSession:_,refreshAgents:$,abortActive:ne}=s,A=()=>{o();},M=async(H,w,f,g)=>{try{if(!w){T.warn("Cannot publish command event: no session ID",{name:H});return}await na(e,ga.Event.Executed,{name:H,sessionID:w,arguments:f,messageID:g}),T.debug("Command event published",{name:H,sessionId:w,messageId:g});}catch(k){T.error("Failed to publish command event",{name:H,sessionId:w,messageId:g,error:k instanceof Error?k.message:String(k),stack:k instanceof Error?k.stack:void 0});}},he=async H=>{T.debug("Handle command called",{raw:H});let{name:w,args:f}=Dt(H);if(T.debug("Parsed command",{name:w,args:f}),!w){T.debug("No command name, returning");return}try{switch(w){case "help":T.debug("Executing help command"),t.addSystem($t()),T.debug("Help text added to chatLog"),await M("help",e.currentSessionId||"",f||"",randomUUID());break;case "commands":case "command":case "cmds":case "cmd":{try{let b=((await e.sdk.command.list({})).data||[]).filter(y=>y.source==="command");if(b.length===0){t.addSystem(a$1("tui.handler.command.empty")),await M(w,e.currentSessionId||"",f||"",randomUUID());break}if(f){let y=f.split(/\s+/),G=y[0],te=y.slice(1).join(" ");b.some(ae=>ae.name===G)?await re("command",G,e,t,d,te||void 0):t.addSystem(a$1("tui.handler.command.not_found",{vars:{name:G}})),await M(w,e.currentSessionId||"",f,randomUUID());break}T.info("Opening command selector");let S=b.map(y=>({label:y.name,description:y.description||"",value:y.name})),E=pe(S,{onSelect:async y=>{A(),s.setInputText?s.setInputText(`/command ${y.value} `):await re("command",y.value,e,t,d);},onCancel:A});a(E),await M(w,e.currentSessionId||"","",randomUUID());}catch(g){T.error("Failed to handle command",{error:g}),t.addSystem(a$1("tui.handler.command.error",{vars:{error:String(g)}})),await M(w,e.currentSessionId||"",f||"",randomUUID());}break}case "status":t.addSystem(await vs(e,r)),await M("status",e.currentSessionId||"",f||"",randomUUID());break;case "agents":case "agent":if(f)e.agent=f,t.addSystem(a$1("tui.handler.agent.switched",{vars:{agentId:f}})),u(),await b$2(e),await M(w,e.currentSessionId||"",f,randomUUID());else {T.info("Opening agent selector");let k=(await ra(e)).filter(S=>S.mode==="primary"&&S.hidden!==!0),b=Be(k,{onSelect:async S=>{e.agent=S.value,t.addSystem(a$1("tui.handler.agent.switched",{vars:{agentId:S.value}})),u(),A(),await b$2(e);},onCancel:A});a(b),await M(w,e.currentSessionId||"","",randomUUID());}break;case "sessions":case "session":if(f&&_)await _(f),u(),await M(w,e.currentSessionId||"",f,randomUUID());else {T.info("Opening session selector");let g=await sa(e),k=qe(g,{onSelect:async b=>{_&&await _(b.value),u(),A();},onCancel:A});a(k),await M(w,e.currentSessionId||"","",randomUUID());}break;case "models":case "model":if(f)e.sessionInfo.model=f,t.addSystem(a$1("tui.handler.model.set",{vars:{model:f}})),u(),await b$2(e),await M(w,e.currentSessionId||"",f,randomUUID());else {T.info("Opening model selector");let g=await ta(e),k=Fe(g,{onSelect:async b=>{e.sessionInfo.model=b.value,t.addSystem(a$1("tui.handler.model.set",{vars:{model:b.value}})),u(),A(),await b$2(e);},onCancel:A});a(k),await M(w,e.currentSessionId||"","",randomUUID());}break;case "fork":{try{d(a$1("tui.handler.fork.begin"));let g=e.currentSessionId;if(g&&e.activeChatRunId)try{await e.sdk.session.abort({sessionID:g}),e.activeChatRunId=null,T.info("Aborted running agent before forking session",{sessionId:g});}catch(k){T.warn("Failed to abort agent before forking, continuing anyway",{error:k});}if(t.clear(),g){let b=(await e.sdk.session.fork({sessionID:g})).data;b&&(e.currentSessionId=b.id,e.currentSessionKey=b.title||b.slug||b.id,e.sessionInfo={model:e.sessionInfo.model},await b$2(e));}p&&await p(),u(),d(a$1("tui.status.ready"));}catch(g){T.error("Failed to fork session",{error:g}),t.addSystem(a$1("tui.handler.fork.error",{vars:{error:String(g)}})),d(a$1("tui.status.error"));}await M("fork",e.currentSessionId||"",f||"",randomUUID());break}case "new":{try{d(a$1("tui.handler.new.begin"));let g=e.currentSessionId;if(g&&e.activeChatRunId)try{await e.sdk.session.abort({sessionID:g}),e.activeChatRunId=null,T.info("Aborted running agent before creating new session",{sessionId:g});}catch(E){T.warn("Failed to abort agent before creating new session, continuing anyway",{error:E});}t.clear();let k=e.instanceContext.directory,S=(await e.sdk.session.create({directory:k})).data;S&&(e.currentSessionId=S.id,e.currentSessionKey=S.title||S.slug||S.id,e.sessionInfo={model:e.sessionInfo.model},await b$2(e)),u(),d(a$1("tui.status.ready"));}catch(g){T.error("Failed to create new session",{error:g}),t.addSystem(a$1("tui.handler.new.error",{vars:{error:String(g)}})),d(a$1("tui.status.error"));}await M("new",e.currentSessionId||"",f||"",randomUUID());break}case "reset":{try{let g=e.currentSessionId;if(g&&e.activeChatRunId)try{await e.sdk.session.abort({sessionID:g}),e.activeChatRunId=null,T.info("Aborted running agent before reset",{sessionId:g});}catch(k){T.warn("Failed to abort agent before reset, continuing anyway",{error:k});}t.clear(),t.addSystem(a$1("tui.handler.session.reset")),p&&await p();}catch(g){T.error("Failed to reset session",{error:g}),t.addSystem(a$1("tui.handler.session.reset_error",{vars:{error:String(g)}}));}await M("reset",e.currentSessionId||"",f||"",randomUUID());break}case "settings":{T.info("Opening settings panel");let{createSettingsPanel:g}=await import('./settings-panel-SM37CCB4.mjs'),k=g({currentSettings:{thinkingLevel:e.thinkingLevel,showThinking:e.showThinking,verboseLevel:e.verboseLevel,messageLimit:e.messageLimit,toolsExpanded:e.toolsExpanded,localShellPermission:e.localShellPermission,contextMode:e.contextMode},onChange:(b,S)=>{switch(b){case "thinkingLevel":e.thinkingLevel=S,t.addSystem(a$1("tui.handler.thinking_level.set",{vars:{level:S}}));break;case "showThinking":e.showThinking=S==="true",T.info("showThinking changed",{newValue:S,showThinking:e.showThinking}),t.addSystem(e.showThinking?a$1("tui.hint.show_thinking_on"):a$1("tui.hint.show_thinking_off"));break;case "verboseLevel":e.verboseLevel=S,t.addSystem(a$1("tui.handler.verbose_level.set",{vars:{level:S}}));break;case "messageLimit":e.messageLimit=Number.parseInt(S,10),t.addSystem(a$1("tui.handler.message_limit.set",{vars:{limit:S}}));break;case "toolsExpanded":e.toolsExpanded=S==="true",T.info("toolsExpanded changed",{newValue:S,toolsExpanded:e.toolsExpanded}),t.addSystem(e.toolsExpanded?a$1("tui.hint.tools_expanded"):a$1("tui.hint.tools_collapsed"));break;case "localShellPermission":e.localShellPermission=S,T.info("localShellPermission changed",{newValue:S,localShellPermission:e.localShellPermission}),t.addSystem(a$1("tui.shell.permission.updated",{vars:{permission:S}}));break;case "contextMode":{let E=S;e.contextMode=E,T.info("contextMode changed",{newValue:S,contextMode:E}),t.addSystem(a$1("tui.handler.context_mode.set",{vars:{mode:E}})),e.currentSessionId&&e.sdk.session.contextMode.set({sessionID:e.currentSessionId,mode:E}).catch(y=>{T.error("Failed to update session contextMode",{error:y,sessionId:e.currentSessionId});});break}}b$2(e).then(async()=>{try{T.info("Publishing HeaderRefresh event",{id:b,newValue:S}),await na(e,c.StatusBarRefresh,{reason:`settings changed: ${b}`});}catch(E){T.error("Failed to publish HeaderRefresh event",{error:E});}}).catch(E=>{T.error("Failed to save TUI state after settings change",{error:E,id:b});});},onCancel:A});a(k),await M("settings",e.currentSessionId||"",f||"",randomUUID());break}case "verbose":if(!f){t.addSystem(a$1("tui.handler.verbose.usage")),await M(w,e.currentSessionId||"","",randomUUID());break}if(f!=="on"&&f!=="off"){t.addSystem(a$1("tui.handler.verbose.invalid",{vars:{value:f}})),await M(w,e.currentSessionId||"",f,randomUUID());break}e.verboseLevel=f,t.addSystem(a$1("tui.handler.verbose.set",{vars:{level:f}})),await b$2(e),await M(w,e.currentSessionId||"",f,randomUUID());break;case "thinking":if(!f){t.addSystem(a$1("tui.handler.thinking.usage"));break}e.thinkingLevel=f,t.addSystem(a$1("tui.handler.thinking.set",{vars:{level:f}})),await b$2(e),await M("thinking",e.currentSessionId||"",f||"",randomUUID());break;case "clear":{T.info("Opening clear confirmation dialog");let{createConfirmDialog:g}=await import('./confirm-dialog-JSKEM3X2.mjs'),k=g({message:a$1("tui.dialog.clear.message"),onConfirm:async()=>{try{d(a$1("tui.handler.clear.begin")),A();let b=e.currentSessionId;if(b&&e.activeChatRunId)try{await e.sdk.session.abort({sessionID:b}),e.activeChatRunId=null,T.info("Aborted running agent before clearing session",{sessionId:b});}catch(y){T.warn("Failed to abort agent before clearing, continuing anyway",{error:y});}t.clear(),b&&await e.sdk.session.delete({sessionID:b});let E=(await e.sdk.session.create({directory:e.instanceContext.directory})).data;E&&(e.currentSessionId=E.id,e.currentSessionKey=E.title||E.slug||E.id,e.sessionInfo={model:e.sessionInfo.model},await b$2(e)),u(),t.addSystem(a$1("tui.handler.clear.success")),d(a$1("tui.status.ready")),await M("clear",e.currentSessionId||"",f||"",randomUUID());}catch(b){T.error("Failed to clear chat history",{error:b}),t.addSystem(a$1("tui.handler.clear.error",{vars:{error:String(b)}})),d(a$1("tui.status.error")),await M("clear",e.currentSessionId||"",f||"",randomUUID());}},onCancel:()=>{t.addSystem(a$1("tui.clear.cancel")),A();}});a(k);break}case "skills":case "skill":{try{let b=((await e.sdk.command.list({})).data||[]).filter(y=>y.source==="skill");if(b.length===0){t.addSystem(a$1("tui.handler.skill.empty")),await M(w,e.currentSessionId||"",f||"",randomUUID());break}if(f){let y=f.split(/\s+/),G=y[0],te=y.slice(1).join(" ");b.some(ae=>ae.name===G)?await re("skill",G,e,t,d,te||void 0):t.addSystem(a$1("tui.handler.skill.not_found",{vars:{name:G}})),await M(w,e.currentSessionId||"",f,randomUUID());break}T.info("Opening skill selector");let S=b.map(y=>({label:y.name,description:y.description||"",value:y.name})),E=pe(S,{onSelect:async y=>{A(),s.setInputText?s.setInputText(`/skill ${y.value} `):await re("skill",y.value,e,t,d);},onCancel:A});a(E),await M(w,e.currentSessionId||"","",randomUUID());}catch(g){T.error("Failed to handle skill",{error:g}),t.addSystem(a$1("tui.handler.skill.error",{vars:{error:String(g)}})),await M(w,e.currentSessionId||"",f||"",randomUUID());}break}case "mcps":case "mcp":{try{let b=((await e.sdk.command.list({})).data||[]).filter(y=>y.source==="mcp");if(b.length===0){t.addSystem(a$1("tui.handler.mcp.empty")),await M(w,e.currentSessionId||"",f||"",randomUUID());break}if(f){let y=f.split(/\s+/),G=y[0],te=y.slice(1).join(" ");b.some(ae=>ae.name===G)?await re("mcp",G,e,t,d,te||void 0):t.addSystem(a$1("tui.handler.mcp.not_found",{vars:{name:G}})),await M(w,e.currentSessionId||"",f,randomUUID());break}T.info("Opening MCP prompt selector");let S=b.map(y=>({label:y.name,description:y.description||"",value:y.name})),E=pe(S,{onSelect:async y=>{A(),s.setInputText?s.setInputText(`/mcp ${y.value} `):await re("mcp",y.value,e,t,d);},onCancel:A});a(E),await M(w,e.currentSessionId||"","",randomUUID());}catch(g){T.error("Failed to handle MCP prompt",{error:g}),t.addSystem(a$1("tui.handler.mcp.error",{vars:{error:String(g)}})),await M(w,e.currentSessionId||"",f||"",randomUUID());}break}case "exit":case "quit":await M(w,e.currentSessionId||"",f||"",randomUUID()),l();break;default:T.debug("Unknown command, sending as message"),await h(H);break}}catch(g){let k=g instanceof Error?g.message:String(g);T.error("Command execution failed",{command:w,args:f,error:k,stack:g instanceof Error?g.stack:void 0}),t.addSystem(a$1("tui.handler.command.error",{vars:{command:w,error:k}}));}T.debug("handleCommand completed");},h=async(H,w,f)=>{try{let g=randomUUID();if(e.activeChatRunId=g,d(a$1("tui.handler.send.sending")),!e.currentSessionId)throw new Error("No active session");let k;if(e.sessionInfo.model){let{provider:E,model:y}=parseModelId(e.sessionInfo.model);E&&y&&(k={providerID:E,modelID:y});}let b=[{type:"text",text:H}];if(w&&w.length>0)for(let E of w)b.push({type:"file",url:E.url,filename:E.filename,mime:E.mime});f&&b.push({type:"agent",name:f});let S=await e.sdk.session.prompt({sessionID:e.currentSessionId,parts:b,agent:e.agent||void 0,model:k,variant:e.thinkingLevel,contextMode:e.contextMode});if(S.data&&e.currentSessionId&&await M("message",e.currentSessionId,H,S.data.info?.id||randomUUID()),S.data){let E=S.data.parts?.filter(y=>y.type==="text")||[];for(let y of E)"text"in y&&y.text&&t.addAssistant(y.text,S.data.info?.id);}e.activeChatRunId=null,d("");}catch(g){e.activeChatRunId=null;let k=g instanceof Error?g.message:String(g),b=g instanceof Error?g.name:"Error";t.addSystem(a$1("tui.handler.send.error",{vars:{error:k}})),d(a$1("tui.handler.send.error_status")),T.error("Failed to send message",{error:k,errorName:b,sessionId:e.currentSessionId,hasModel:!!e.sessionInfo.model,stack:g instanceof Error?g.stack:void 0});}},re=async(H,w,f,g,k,b)=>{try{let S=H==="skill"?a$1("tui.handler.skill.executing"):H==="command"?a$1("tui.handler.command.executing"):a$1("tui.handler.mcp.executing");if(g.addSystem(S+`: ${w}`),k(a$1("tui.handler.executing",{vars:{command:w}})),!f.currentSessionId)throw new Error("No active session");let E;f.sessionInfo.model&&(E=f.sessionInfo.model);let y=b?[{type:"text",text:b}]:void 0,te=(await f.sdk.session.command({sessionID:f.currentSessionId,command:w,arguments:b??"",agent:f.agent||void 0,model:E,variant:f.thinkingLevel,contextMode:f.contextMode,parts:y})).data,ae=te?.metadata?.commandType;if(te?.success)ae==="local"&&g.addSystem(a$1("tui.handler.local.completed")+`: ${w}
|
|
6
6
|
`+a$1("tui.handler.local.output")+`:
|
|
7
7
|
`+te.output);else {let Je=te?.error??"Command execution failed",ke=H==="skill"?"tui.handler.skill.error":H==="command"?"tui.handler.command.error":"tui.handler.mcp.error";g.addSystem(a$1(ke,{vars:{command:w,error:Je}}));}k("");}catch(S){let E=S instanceof Error?S.message:String(S),y=S instanceof Error?S.name:"Error",G=H==="skill"?a$1("tui.handler.skill.error"):H==="command"?a$1("tui.handler.command.error"):a$1("tui.handler.mcp.error");g.addSystem(G+`: ${w}
|
|
8
8
|
${E}`),k(a$1("tui.status.error")),T.error("Failed to execute command",{type:H,name:w,error:E,errorName:y,sessionId:f.currentSessionId,stack:S instanceof Error?S.stack:void 0});}};return {handleCommand:he,sendMessage:h}}var L=a.create({service:"cli-tui-events"});function Ot(s){return e=>{try{if(e.type==="message.updated"){xs(s,e);return}if(e.type==="message.part.updated"){ws(s,e);return}if(e.type==="session.status"){Fs(s,e);return}if(e.type==="session.error"){qs(s,e);return}if(e.type==="agent.updated"){Bs(s,e);return}if(e.type==="session.updated"){Us(s,e);return}if(e.type==="permission.asked"){Os(s,e);return}if(e.type==="question.asked"){Ws(s,e);return}}catch(t){L.error("Event handling failed",{eventType:e.type,error:t instanceof Error?t.message:String(t)});}}}function xs(s,e){if(e.type!=="message.updated")return;let{properties:t}=e,{info:n}=t,r=s.state?.currentSessionId||s.sessionId;if(!(r&&n.sessionID!==r)&&(L.debug("Message updated",{role:n.role,agent:n.agent,sessionID:n.sessionID,messageId:n.id}),n.role,s.state&&"model"in n&&n.model)){let a=`${n.model.providerID}/${n.model.modelID}`;s.state.sessionInfo.model=a,L.debug("Model info updated",{model:a}),s.updateFooter&&s.updateFooter();}}function ws(s,e){if(e.type!=="message.part.updated")return;let{properties:t}=e,{part:n}=t;if(!n){L.warn("Message part is undefined",{event:e,properties:t,propertiesType:typeof t,propertiesKeys:t?Object.keys(t):[]});return}let r=s.state?.currentSessionId||s.sessionId;r&&n.sessionID!==r||(Ts(n),ks(s,n));}function Ts(s){L.debug("handleMessagePartUpdated",{type:s.type,status:"state"in s?s.state?.status:void 0,hasTimeEnd:"time"in s&&s.time&&"end"in s.time?!!s.time.end:false,timeEnd:"time"in s&&s.time&&"end"in s.time?s.time.end:void 0,hasText:"text"in s,textLength:"text"in s&&s.text?.length||0,textPreview:"text"in s?s.text?.substring(0,100):void 0,sessionID:s.sessionID});}function ks(s,e){if(e.type==="tool"){Rs(s,e);return}if(e.type==="text"){if("time"in e&&e.time&&"end"in e.time&&e.time.end){L.info("Calling handleTextPart",{hasText:"text"in e&&!!e.text,textLength:"text"in e&&e.text?.length||0}),$s(s,e);return}if(!("time"in e)){L.info("Calling handleUserTextPart for user message",{hasText:!!e.text,textLength:e.text?.length||0}),Ps(s,e);return}}if(e.type==="reasoning"&&"time"in e&&e.time&&"end"in e.time&&e.time.end){Hs(s,e);return}if(e.type==="step-start"){As(s);return}if(e.type==="step-finish"){Es(s,e);return}if(e.type==="subtask-result"){Ls(s,e);return}}function Ps(s,e){let t=e.text?.trim();t&&(L.debug("User text output",{length:t.length,messageId:e.messageID}),s.chatLog.addUser(t,e.messageID),s.tui.requestRender());}function As(s){s.setActivityStatus(a$1("tui.status.executing_step"));}function Es(s,e){s.setActivityStatus(a$1("tui.status.step_completed")),s.state&&e.tokens&&Ds(s,e.tokens);}function Ls(s,e){L.debug("handleSubagentResultPart called",{taskId:e.taskId,agent:e.agent,status:e.status});let t=Ja.formatSubtaskResultPart(e);L.debug("formattedContent",{content:t}),s.chatLog.addUser(t,e.id,{agent:e.agent,isSubagentResult:true,subtaskResultPart:{taskId:e.taskId,source:e.source,agent:e.agent,status:e.status,result:e.result,error:e.error,duration:e.duration,rounds:e.rounds,time:e.time,metadata:e.metadata}}),s.tui.requestRender();}async function Ms(s){let e=s.sessionInfo.model;if(!e)return null;let{provider:t,model:n}=parseModelId(e);if(!t||!n)return null;try{return ((await s.sdk.config.providers({})).data?.providers??[]).find(d=>d.id===t)?.models?.[n]?.limit?.context??null}catch(r){return L.warn("Failed to get context limit from model config",{error:r,providerID:t,modelID:n}),null}}function Ds(s,e){let t=e.input+e.output+e.reasoning+e.cache.read+e.cache.write;s.state.sessionInfo.totalTokens=t,s.state.sessionInfo.contextTokens||Ms(s.state).then(n=>{s.state.sessionInfo.contextTokens=n??2e5,L.debug("Context limit updated",{contextLimit:s.state.sessionInfo.contextTokens}),s.updateFooter&&s.updateFooter();}),L.debug("Token usage updated",{total:t,input:e.input,output:e.output,reasoning:e.reasoning,cacheRead:e.cache.read,cacheWrite:e.cache.write});}function _s(s){let e=s.state?.status==="running"||s.state?.status==="completed"?s.state.input:void 0;if(!e)return;let t=e.filePath??e.filepath??e.path,n=e.title;return t?n=Filesystem.normalize(t):e.url&&(n=e.url),n}function Rs(s,e){if(!e.state){L.warn("Tool part missing state",{tool:e.tool,partType:e.type});return}let t=_s(e),n=t?`${e.tool} ${t}`:e.tool;if(e.state.status==="running"&&(s.setActivityStatus(a$1("tui.status.executing_tool",{vars:{tool:e.tool}})),s.chatLog.addSystem(a$1("tui.system.tool_executing",{vars:{tool:n}}),e.id,{isTool:true,toolName:e.tool,toolCallId:e.callID,toolStatus:"executing",title:t}),s.updateChatLog&&s.updateChatLog()),e.state.status==="completed"){if(s.setActivityStatus(a$1("tui.status.tool_completed")),s.chatLog.addSystem(a$1("tui.system.tool_completed",{vars:{tool:n}}),e.id,{isTool:true,toolName:e.tool,toolCallId:e.callID,toolStatus:"completed",result:e.state.output,title:t}),s.state?.toolsExpanded&&s.state?.verboseLevel==="on"&&e.state.output){let a=(typeof e.state.output=="string"?e.state.output:JSON.stringify(e.state.output,null,2)).trim();a&&s.chatLog.addSystem(`Tool output:
|
|
@@ -33,7 +33,7 @@ ${E}`),k(a$1("tui.status.error")),T.error("Failed to execute command",{type:H,na
|
|
|
33
33
|
`;}L.debug("displayQuestion - final message",{messageLength:l.length,messagePreview:l.substring(0,100)}),s.chatLog.addSystem(l);}var K=a.create({service:"cli-tui-session-actions"});async function Nt(s){K.info("Refreshing agent list");try{s.setActivityStatus(a$1("tui.session.loading_agents"));let n=((await s.sdk.app.agents({})).data||[]).map(r=>r.name);return K.info("Agent list loaded",{count:n.length}),s.setActivityStatus(a$1("tui.status.ready")),n}catch(e){return K.error("Failed to refresh agent list",{error:e}),s.chatLog.addSystem(a$1("tui.session.agents_failed",{vars:{error:String(e)}})),s.setActivityStatus(a$1("tui.status.error")),[]}}async function dt(s,e){K.info("Refreshing session info",{sessionId:e});try{s.setActivityStatus(a$1("tui.session.loading_info"));let n=(await s.sdk.session.get({sessionID:e})).data;return K.info("Session info loaded",{sessionId:e}),s.setActivityStatus(a$1("tui.status.ready")),n??null}catch(t){return K.error("Failed to refresh session info",{sessionId:e,error:t}),s.chatLog.addSystem(a$1("tui.session.info_failed",{vars:{error:String(t)}})),s.setActivityStatus(a$1("tui.status.error")),null}}async function Ue(s,e,t){K.info("Loading history",{sessionId:e,limit:t});try{s.setActivityStatus(a$1("tui.session.loading_history"));let r=(await s.sdk.session.messages({sessionID:e,limit:t})).data||[];K.info("History loaded",{sessionId:e,count:r.length});for(let a=0;a<r.length;a++){let o=r[a],l=o?.info?.role;if(l==="user"){let u=(o?.parts?.filter(p=>p.type==="text")||[]).map(p=>("text"in p?p.text:"")||"").join(`
|
|
34
34
|
`),c=o?.parts?.filter(p=>p.type==="subtask-result")||[];K.debug("loadHistory processing user message",{messageId:o?.info?.id,partCount:o?.parts?.length||0,subtaskPartCount:c.length});for(let p of c)if("agent"in p&&"taskId"in p){K.debug("loadHistory adding subtask-result",{messageId:o?.info?.id,agent:p.agent,taskId:p.taskId});let _=Ja.formatSubtaskResultPart(p);s.chatLog.addUser(_,o?.info?.id,{agent:p.agent||"SubAgent",isSubagentResult:!0,subtaskResultPart:{taskId:p.taskId,source:p.source,agent:p.agent,status:p.status,result:p.result,error:p.error,duration:p.duration,rounds:p.rounds,time:p.time,metadata:p.metadata}});}u&&s.chatLog.addUser(u,o?.info?.id,{agent:o?.info?.agent});}else if(l==="assistant"){let u=(o?.parts?.filter(c=>c.type==="text")||[]).map(c=>("text"in c?c.text:"")||"").join(`
|
|
35
35
|
`);u&&s.chatLog.addAssistant(u,o?.info?.id,{agent:o?.info?.agent});}else if(l==="system"){let u=(o?.parts?.filter(c=>c.type==="text")||[]).map(c=>("text"in c?c.text:"")||"").join(`
|
|
36
|
-
`);s.chatLog.addSystem(u,o?.info?.id,{agent:o?.info?.agent});}}return s.setActivityStatus(a$1("tui.status.ready")),r}catch(n){return K.error("Failed to load history",{sessionId:e,error:n}),s.chatLog.addSystem(a$1("tui.session.history_failed",{vars:{error:String(n)}})),s.setActivityStatus(a$1("tui.status.error")),[]}}async function Qt(s,e,t){K.info("Switching session",{sessionId:e});try{t.currentSessionId=e,t.currentSessionKey=e,t.historyLoaded=!1;let n=await dt(s,e);n&&(t.currentSessionKey=n.title||e,t.sessionInfo.model=n.model,t.sessionInfo.modelProvider=n.modelProvider);let{loadTuiState:r,saveTuiStateToStorage:a}=await import('./preferences-SIWFQFGI.mjs'),o=await r(e);t.toolsExpanded=o.toolsExpanded,t.showThinking=o.showThinking,t.thinkingLevel=o.thinkingLevel,t.verboseLevel=o.verboseLevel,t.messageLimit=o.messageLimit,t.localShellPermission=o.localShellPermission,o.model&&(t.sessionInfo.model=o.model),o.agent&&(t.agent=o.agent),K.debug("Session preferences loaded",{sessionId:e,model:t.sessionInfo.model,agent:t.agent,thinkingLevel:t.thinkingLevel}),await a(t),await Ue(s,e,t.messageLimit),t.historyLoaded=!0,s.chatLog.addSystem(a$1("tui.session.switched",{vars:{sessionId:e}}));}catch(n){K.error("Failed to switch session",{sessionId:e,error:n}),s.chatLog.addSystem(a$1("tui.session.switch_failed",{vars:{error:String(n)}})),s.setActivityStatus(a$1("tui.status.error"));}}async function Gt(s,e){K.info("Aborting current run",{sessionId:e});try{s.setActivityStatus(a$1("tui.session.aborting"));let t=s.sdk.session.abort({sessionID:e}),n=new Promise((r,a)=>{setTimeout(()=>a(new Error(a$1("tui.abort.timeout"))),5e3);});await Promise.race([t,n]),s.chatLog.addSystem(a$1("tui.session.aborted")),s.setActivityStatus(a$1("tui.status.ready"));}catch(t){K.error("Failed to abort",{sessionId:e,error:t}),s.chatLog.addSystem(a$1("tui.session.abort_failed",{vars:{error:String(t)}})),s.setActivityStatus(a$1("tui.status.error"));}}function jt(s,e){return {openOverlay:r=>{s.showOverlay(r);},closeOverlay:()=>{s.hasOverlay()&&s.hideOverlay(),s.setFocus(e);}}}var Oe=a.create({service:"tui-autocomplete"});function Kt(s){return new ct(s)}var ct=class{constructor(e){b(this,"basePath");b(this,"commands");b(this,"getAgents");this.basePath=e.basePath,this.commands=e.slashCommands,this.getAgents=e.getAgents;}updateCommands(e){this.commands=e;}setGetAgents(e){this.getAgents=e;}async getSuggestions(e,t,n,r){let o=(e[t]||"").slice(0,n),l=this.extractHashPrefix(o);if(l)return this.getFileSuggestions(l);let d=this.extractAtPrefix(o);return d?await this.getAgentSuggestions(d):o.startsWith("/")?this.getCommandSuggestions(o):null}applyCompletion(e,t,n,r,a){let o=e[t]||"",l=o.slice(0,n-a.length),d=o.slice(n);if(a.startsWith("#")){let u=r.label.endsWith("/"),c=u?r.value.replace(/\/$/,""):r.value,p=u?"":" ";return {lines:[...e.slice(0,t),l+c+p+d,...e.slice(t+1)],cursorLine:t,cursorCol:l.length+c.length+p.length}}if(a.startsWith("@"))return {lines:[...e.slice(0,t),l+r.value+" "+d,...e.slice(t+1)],cursorLine:t,cursorCol:l.length+r.value.length+1};if(a.startsWith("/")){let u="/"+r.value+" ";return {lines:[...e.slice(0,t),l+u+d,...e.slice(t+1)],cursorLine:t,cursorCol:l.length+u.length}}return {lines:[...e.slice(0,t),l+r.value+" "+d,...e.slice(t+1)],cursorLine:t,cursorCol:l.length+r.value.length+1}}async getCommandSuggestions(e){let t=e.indexOf(" ");if(t===-1){let d=e.slice(1),u=this.commands.filter(c=>c.name.toLowerCase().includes(d.toLowerCase())).map(c=>({value:c.name,label:c.name,description:c.description}));return u.length===0?null:{items:u.slice(0,50),prefix:e}}let n=e.slice(1,t),r=e.slice(t+1),a=this.commands.find(d=>d.name===n);if(!a?.getArgumentCompletions)return null;let o=a.getArgumentCompletions(r),l=o instanceof Promise?await o:o;return !l||l.length===0?null:{items:l.slice(0,50),prefix:r}}getFileSuggestions(e){let t=e.startsWith('#"')?e.slice(2):e.slice(1),n=e.startsWith('#"'),r=t.replace(/\\/g,"/");if(this.isDrivePath(r))return Oe.debug("Drive path, skip autocomplete",{normalizedPath:r}),null;let{targetPath:a,searchQuery:o}=this.parsePath(r),l=this.resolveBaseDir(a);try{let d;try{d=readdirSync(l,{withFileTypes:!0});}catch{return Oe.debug("Directory not found",{baseDir:l}),null}let u=[];for(let c of d){if(o&&!c.name.toLowerCase().includes(o.toLowerCase()))continue;let p=c.isDirectory(),_=a?`${a}${c.name}`:c.name;if(u.push({value:n?`#"${_}${p?"/":""}"`:`#${_}${p?"/":""}`,label:p?`${c.name}/`:c.name,description:_}),u.length>=50)break}return u.sort((c,p)=>{let _=c.label.endsWith("/"),$=p.label.endsWith("/");return _&&!$?-1:!_&&$?1:c.label.localeCompare(p.label)}),u.length===0?null:{items:u,prefix:e}}catch(d){return Oe.debug("File search failed",{error:d,targetPath:a}),null}}async getAgentSuggestions(e){if(!this.getAgents)return null;let t=e.slice(1);try{let r=(await this.getAgents()).filter(a=>a.hidden!==!0).filter(a=>a.name.toLowerCase().includes(t.toLowerCase())).map(a=>({value:`@${a.name}`,label:a.name,description:a.description}));return r.length===0?null:{items:r.slice(0,50),prefix:e}}catch(n){return Oe.debug("Agent search failed",{error:n,prefix:e}),null}}extractAtPrefix(e){let t=new Set([" "," ",'"',"'","="]);for(let n=e.length-1;n>=0;n--)if(t.has(e[n]??"")){let r=n+1;return e[r]==="@"?e.slice(r):null}return e.startsWith("@")?e:null}extractHashPrefix(e){let t=new Set([" "," ",'"',"'","="]);for(let n=e.length-1;n>=0;n--)if(t.has(e[n]??"")){let r=n+1;return e[r]==="#"?e.slice(r):null}return e.startsWith("#")?e:null}isDrivePath(e){return /^[A-Za-z]:[/\\]?$/.test(e)}parsePath(e){let t=Math.max(e.lastIndexOf("/"),e.lastIndexOf("\\"));return t===-1?{targetPath:"",searchQuery:e}:{targetPath:e.slice(0,t+1),searchQuery:e.slice(t+1)}}resolveBaseDir(e){return e?zt.join(this.basePath,e):this.basePath}};function ut(s,e){let t=[],n=/(?<![\w`])#(\S+)/g,r;for(;(r=n.exec(s))!==null;){let a=r[1];if(!a)continue;let o=a.replace(/\\/g,"/"),l=js(o,e);existsSync(l)&&t.push({path:a,url:pathToFileURL(l).href,exists:true});}return {attachments:t,invalidPaths:[]}}function js(s,e){if(/^[A-Za-z]:[/\\]/.test(s))return s;let t=s.replace(/^[/\\]+/,"");return zt.join(e,t)}var U=a.create({service:"cli-tui-input-handlers"}),We=class{constructor(){b(this,"handlers",[]);b(this,"isBrowsingHistory",false);}register(e){this.handlers.push(e),U.debug("Register input handler",{name:e.name,total:this.handlers.length});}setHistoryBrowsing(e){this.isBrowsingHistory=e;}isHistoryBrowsing(){return this.isBrowsingHistory}async handle(e,t){let n=e.trim();if(n){this.isBrowsingHistory;for(let r of this.handlers)if(r.canHandle(n,t.state)){U.debug("Handle input with handler",{handler:r.name,input:n.substring(0,50)}),await r.handle(n,t);return}U.warn("No handler can process input",{input:n.substring(0,50)});}}getPrompt(e){for(let t of this.handlers)if(t.getPrompt&&t.canHandle("",e)){let n=t.getPrompt(e);if(n)return n}return "> "}},Ne=class{constructor(){b(this,"name","permission");}canHandle(e,t){return t.pendingPermission!==null}async handle(e,t){let{state:n,chatLog:r,tui:a}=t,o=n.pendingPermission;if(!o)return;let l=e.toLowerCase().trim(),d;if(l==="y"||l==="yes")d="once";else if(l==="a"||l==="always")d="always";else if(l==="n"||l==="no"||l==="reject")d="reject";else {r.addSystem(a$1("tui.permission.invalid_input"));return}try{await pa(n,{requestID:o.id,reply:d}),n.pendingPermission=null;let u=d==="once"?a$1("tui.permission.once"):d==="always"?a$1("tui.permission.always"):a$1("tui.permission.reject");r.addSystem(a$1("tui.permission.replied",{vars:{reply:u}})),U.info("Permission request replied",{requestID:o.id,reply:d});}catch(u){U.error("Failed to reply permission request",{error:u}),r.addSystem(a$1("tui.permission.error")),n.pendingPermission=null;}}getPrompt(e){return e.pendingPermission?a$1("tui.permission.prompt"):"> "}},Qe=class{constructor(){b(this,"name","question");}canHandle(e,t){return !(t.pendingQuestion===null||e.startsWith("/"))}async handle(e,t){let{state:n,chatLog:r,tui:a}=t,o=n.pendingQuestion;if(!o){U.warn("QuestionInputHandler.handle - no pending question");return}U.debug("QuestionInputHandler.handle - processing input",{input:e.substring(0,50),currentIndex:o.currentQuestionIndex,totalQuestions:o.questions.length,requestID:o.id});let l=o.currentQuestionIndex,d=o.questions[l];if(!d){U.error("Current question does not exist",{currentIndex:l,totalQuestions:o.questions.length}),n.pendingQuestion=null;return}let u=this.parseAnswer(e,d);if(!u){U.debug("QuestionInputHandler.handle - invalid input",{input:e}),r.addSystem(a$1("tui.question.invalid_input"));return}if(U.debug("QuestionInputHandler.handle - answer parsed",{answer:u,answerLength:u.length}),o.collectedAnswers.push(u),o.currentQuestionIndex++,o.currentQuestionIndex<o.questions.length){U.debug("QuestionInputHandler.handle - showing next question",{nextIndex:o.currentQuestionIndex,totalQuestions:o.questions.length});let c=o.questions[o.currentQuestionIndex];c&&this.displayQuestion(c,o.currentQuestionIndex,o.questions.length,r);}else {U.info("QuestionInputHandler.handle - all questions answered, calling API",{requestID:o.id,answerCount:o.collectedAnswers.length,answers:o.collectedAnswers});try{await qa(n,{requestID:o.id,answers:o.collectedAnswers}),n.pendingQuestion=null,r.addSystem(a$1("tui.question.completed",{vars:{count:o.collectedAnswers.length}})),U.info("Question request completed",{requestID:o.id});}catch(c){U.error("Failed to reply question request",{error:c instanceof Error?c.message:String(c),stack:c instanceof Error?c.stack:void 0,requestID:o.id,answers:o.collectedAnswers,errorType:c instanceof Error?c.constructor.name:typeof c});let p=c instanceof Error?c.message:String(c);r.addSystem(`${a$1("tui.question.error")}: ${p}`),n.pendingQuestion=null;}}}parseAnswer(e,t){let n=e.trim();if(!t.options||t.options.length===0)return [n];let r=n.match(/^(\d+(?:,\s*\d+)*)$/);if(r?.[1]){let o=r[1].split(",").map(l=>Number.parseInt(l.trim(),10)).filter(l=>l>0&&l<=t.options.length);if(o.length===0)return null;if(!t.multiple&&o.length>1){let l=o[0];if(l!==void 0){let d=t.options[l-1];if(d)return [d.label]}return null}return o.map(l=>{let d=t.options[l-1];return d?d.label:""}).filter(l=>l!=="")}return t.custom===false?null:[n]}displayQuestion(e,t,n,r){let a=`
|
|
36
|
+
`);s.chatLog.addSystem(u,o?.info?.id,{agent:o?.info?.agent});}}return s.setActivityStatus(a$1("tui.status.ready")),r}catch(n){return K.error("Failed to load history",{sessionId:e,error:n}),s.chatLog.addSystem(a$1("tui.session.history_failed",{vars:{error:String(n)}})),s.setActivityStatus(a$1("tui.status.error")),[]}}async function Qt(s,e,t){K.info("Switching session",{sessionId:e});try{t.currentSessionId=e,t.currentSessionKey=e,t.historyLoaded=!1;let n=await dt(s,e);n&&(t.currentSessionKey=n.title||e,t.sessionInfo.model=n.model,t.sessionInfo.modelProvider=n.modelProvider);let{loadTuiState:r,saveTuiStateToStorage:a}=await import('./preferences-IPQIZ4PF.mjs'),o=await r(e);t.toolsExpanded=o.toolsExpanded,t.showThinking=o.showThinking,t.thinkingLevel=o.thinkingLevel,t.verboseLevel=o.verboseLevel,t.messageLimit=o.messageLimit,t.localShellPermission=o.localShellPermission,o.model&&(t.sessionInfo.model=o.model),o.agent&&(t.agent=o.agent),K.debug("Session preferences loaded",{sessionId:e,model:t.sessionInfo.model,agent:t.agent,thinkingLevel:t.thinkingLevel}),await a(t),await Ue(s,e,t.messageLimit),t.historyLoaded=!0,s.chatLog.addSystem(a$1("tui.session.switched",{vars:{sessionId:e}}));}catch(n){K.error("Failed to switch session",{sessionId:e,error:n}),s.chatLog.addSystem(a$1("tui.session.switch_failed",{vars:{error:String(n)}})),s.setActivityStatus(a$1("tui.status.error"));}}async function Gt(s,e){K.info("Aborting current run",{sessionId:e});try{s.setActivityStatus(a$1("tui.session.aborting"));let t=s.sdk.session.abort({sessionID:e}),n=new Promise((r,a)=>{setTimeout(()=>a(new Error(a$1("tui.abort.timeout"))),5e3);});await Promise.race([t,n]),s.chatLog.addSystem(a$1("tui.session.aborted")),s.setActivityStatus(a$1("tui.status.ready"));}catch(t){K.error("Failed to abort",{sessionId:e,error:t}),s.chatLog.addSystem(a$1("tui.session.abort_failed",{vars:{error:String(t)}})),s.setActivityStatus(a$1("tui.status.error"));}}function jt(s,e){return {openOverlay:r=>{s.showOverlay(r);},closeOverlay:()=>{s.hasOverlay()&&s.hideOverlay(),s.setFocus(e);}}}var Oe=a.create({service:"tui-autocomplete"});function Kt(s){return new ct(s)}var ct=class{constructor(e){b(this,"basePath");b(this,"commands");b(this,"getAgents");this.basePath=e.basePath,this.commands=e.slashCommands,this.getAgents=e.getAgents;}updateCommands(e){this.commands=e;}setGetAgents(e){this.getAgents=e;}async getSuggestions(e,t,n,r){let o=(e[t]||"").slice(0,n),l=this.extractHashPrefix(o);if(l)return this.getFileSuggestions(l);let d=this.extractAtPrefix(o);return d?await this.getAgentSuggestions(d):o.startsWith("/")?this.getCommandSuggestions(o):null}applyCompletion(e,t,n,r,a){let o=e[t]||"",l=o.slice(0,n-a.length),d=o.slice(n);if(a.startsWith("#")){let u=r.label.endsWith("/"),c=u?r.value.replace(/\/$/,""):r.value,p=u?"":" ";return {lines:[...e.slice(0,t),l+c+p+d,...e.slice(t+1)],cursorLine:t,cursorCol:l.length+c.length+p.length}}if(a.startsWith("@"))return {lines:[...e.slice(0,t),l+r.value+" "+d,...e.slice(t+1)],cursorLine:t,cursorCol:l.length+r.value.length+1};if(a.startsWith("/")){let u="/"+r.value+" ";return {lines:[...e.slice(0,t),l+u+d,...e.slice(t+1)],cursorLine:t,cursorCol:l.length+u.length}}return {lines:[...e.slice(0,t),l+r.value+" "+d,...e.slice(t+1)],cursorLine:t,cursorCol:l.length+r.value.length+1}}async getCommandSuggestions(e){let t=e.indexOf(" ");if(t===-1){let d=e.slice(1),u=this.commands.filter(c=>c.name.toLowerCase().includes(d.toLowerCase())).map(c=>({value:c.name,label:c.name,description:c.description}));return u.length===0?null:{items:u.slice(0,50),prefix:e}}let n=e.slice(1,t),r=e.slice(t+1),a=this.commands.find(d=>d.name===n);if(!a?.getArgumentCompletions)return null;let o=a.getArgumentCompletions(r),l=o instanceof Promise?await o:o;return !l||l.length===0?null:{items:l.slice(0,50),prefix:r}}getFileSuggestions(e){let t=e.startsWith('#"')?e.slice(2):e.slice(1),n=e.startsWith('#"'),r=t.replace(/\\/g,"/");if(this.isDrivePath(r))return Oe.debug("Drive path, skip autocomplete",{normalizedPath:r}),null;let{targetPath:a,searchQuery:o}=this.parsePath(r),l=this.resolveBaseDir(a);try{let d;try{d=readdirSync(l,{withFileTypes:!0});}catch{return Oe.debug("Directory not found",{baseDir:l}),null}let u=[];for(let c of d){if(o&&!c.name.toLowerCase().includes(o.toLowerCase()))continue;let p=c.isDirectory(),_=a?`${a}${c.name}`:c.name;if(u.push({value:n?`#"${_}${p?"/":""}"`:`#${_}${p?"/":""}`,label:p?`${c.name}/`:c.name,description:_}),u.length>=50)break}return u.sort((c,p)=>{let _=c.label.endsWith("/"),$=p.label.endsWith("/");return _&&!$?-1:!_&&$?1:c.label.localeCompare(p.label)}),u.length===0?null:{items:u,prefix:e}}catch(d){return Oe.debug("File search failed",{error:d,targetPath:a}),null}}async getAgentSuggestions(e){if(!this.getAgents)return null;let t=e.slice(1);try{let r=(await this.getAgents()).filter(a=>a.hidden!==!0).filter(a=>a.name.toLowerCase().includes(t.toLowerCase())).map(a=>({value:`@${a.name}`,label:a.name,description:a.description}));return r.length===0?null:{items:r.slice(0,50),prefix:e}}catch(n){return Oe.debug("Agent search failed",{error:n,prefix:e}),null}}extractAtPrefix(e){let t=new Set([" "," ",'"',"'","="]);for(let n=e.length-1;n>=0;n--)if(t.has(e[n]??"")){let r=n+1;return e[r]==="@"?e.slice(r):null}return e.startsWith("@")?e:null}extractHashPrefix(e){let t=new Set([" "," ",'"',"'","="]);for(let n=e.length-1;n>=0;n--)if(t.has(e[n]??"")){let r=n+1;return e[r]==="#"?e.slice(r):null}return e.startsWith("#")?e:null}isDrivePath(e){return /^[A-Za-z]:[/\\]?$/.test(e)}parsePath(e){let t=Math.max(e.lastIndexOf("/"),e.lastIndexOf("\\"));return t===-1?{targetPath:"",searchQuery:e}:{targetPath:e.slice(0,t+1),searchQuery:e.slice(t+1)}}resolveBaseDir(e){return e?zt.join(this.basePath,e):this.basePath}};function ut(s,e){let t=[],n=/(?<![\w`])#(\S+)/g,r;for(;(r=n.exec(s))!==null;){let a=r[1];if(!a)continue;let o=a.replace(/\\/g,"/"),l=js(o,e);existsSync(l)&&t.push({path:a,url:pathToFileURL(l).href,exists:true});}return {attachments:t,invalidPaths:[]}}function js(s,e){if(/^[A-Za-z]:[/\\]/.test(s))return s;let t=s.replace(/^[/\\]+/,"");return zt.join(e,t)}var U=a.create({service:"cli-tui-input-handlers"}),We=class{constructor(){b(this,"handlers",[]);b(this,"isBrowsingHistory",false);}register(e){this.handlers.push(e),U.debug("Register input handler",{name:e.name,total:this.handlers.length});}setHistoryBrowsing(e){this.isBrowsingHistory=e;}isHistoryBrowsing(){return this.isBrowsingHistory}async handle(e,t){let n=e.trim();if(n){this.isBrowsingHistory;for(let r of this.handlers)if(r.canHandle(n,t.state)){U.debug("Handle input with handler",{handler:r.name,input:n.substring(0,50)}),await r.handle(n,t);return}U.warn("No handler can process input",{input:n.substring(0,50)});}}getPrompt(e){for(let t of this.handlers)if(t.getPrompt&&t.canHandle("",e)){let n=t.getPrompt(e);if(n)return n}return "> "}},Ne=class{constructor(){b(this,"name","permission");}canHandle(e,t){return t.pendingPermission!==null}async handle(e,t){let{state:n,chatLog:r,tui:a}=t,o=n.pendingPermission;if(!o)return;let l=e.toLowerCase().trim(),d;if(l==="y"||l==="yes")d="once";else if(l==="a"||l==="always")d="always";else if(l==="n"||l==="no"||l==="reject")d="reject";else {r.addSystem(a$1("tui.permission.invalid_input"));return}try{await pa(n,{requestID:o.id,reply:d}),n.pendingPermission=null;let u=d==="once"?a$1("tui.permission.once"):d==="always"?a$1("tui.permission.always"):a$1("tui.permission.reject");r.addSystem(a$1("tui.permission.replied",{vars:{reply:u}})),U.info("Permission request replied",{requestID:o.id,reply:d});}catch(u){U.error("Failed to reply permission request",{error:u}),r.addSystem(a$1("tui.permission.error")),n.pendingPermission=null;}}getPrompt(e){return e.pendingPermission?a$1("tui.permission.prompt"):"> "}},Qe=class{constructor(){b(this,"name","question");}canHandle(e,t){return !(t.pendingQuestion===null||e.startsWith("/"))}async handle(e,t){let{state:n,chatLog:r,tui:a}=t,o=n.pendingQuestion;if(!o){U.warn("QuestionInputHandler.handle - no pending question");return}U.debug("QuestionInputHandler.handle - processing input",{input:e.substring(0,50),currentIndex:o.currentQuestionIndex,totalQuestions:o.questions.length,requestID:o.id});let l=o.currentQuestionIndex,d=o.questions[l];if(!d){U.error("Current question does not exist",{currentIndex:l,totalQuestions:o.questions.length}),n.pendingQuestion=null;return}let u=this.parseAnswer(e,d);if(!u){U.debug("QuestionInputHandler.handle - invalid input",{input:e}),r.addSystem(a$1("tui.question.invalid_input"));return}if(U.debug("QuestionInputHandler.handle - answer parsed",{answer:u,answerLength:u.length}),o.collectedAnswers.push(u),o.currentQuestionIndex++,o.currentQuestionIndex<o.questions.length){U.debug("QuestionInputHandler.handle - showing next question",{nextIndex:o.currentQuestionIndex,totalQuestions:o.questions.length});let c=o.questions[o.currentQuestionIndex];c&&this.displayQuestion(c,o.currentQuestionIndex,o.questions.length,r);}else {U.info("QuestionInputHandler.handle - all questions answered, calling API",{requestID:o.id,answerCount:o.collectedAnswers.length,answers:o.collectedAnswers});try{await qa(n,{requestID:o.id,answers:o.collectedAnswers}),n.pendingQuestion=null,r.addSystem(a$1("tui.question.completed",{vars:{count:o.collectedAnswers.length}})),U.info("Question request completed",{requestID:o.id});}catch(c){U.error("Failed to reply question request",{error:c instanceof Error?c.message:String(c),stack:c instanceof Error?c.stack:void 0,requestID:o.id,answers:o.collectedAnswers,errorType:c instanceof Error?c.constructor.name:typeof c});let p=c instanceof Error?c.message:String(c);r.addSystem(`${a$1("tui.question.error")}: ${p}`),n.pendingQuestion=null;}}}parseAnswer(e,t){let n=e.trim();if(!t.options||t.options.length===0)return [n];let r=n.match(/^(\d+(?:,\s*\d+)*)$/);if(r?.[1]){let o=r[1].split(",").map(l=>Number.parseInt(l.trim(),10)).filter(l=>l>0&&l<=t.options.length);if(o.length===0)return null;if(!t.multiple&&o.length>1){let l=o[0];if(l!==void 0){let d=t.options[l-1];if(d)return [d.label]}return null}return o.map(l=>{let d=t.options[l-1];return d?d.label:""}).filter(l=>l!=="")}return t.custom===false?null:[n]}displayQuestion(e,t,n,r){let a=`
|
|
37
37
|
${a$1("tui.question.header",{vars:{current:t+1,total:n}})}
|
|
38
38
|
`;if(a+=`${e.header}
|
|
39
39
|
`,a+=`${e.question}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import {a as a$1}from'./chunk-
|
|
1
|
+
import {a as a$1}from'./chunk-7GBBUT6F.mjs';import {a}from'./chunk-LFYBZHOI.mjs';var n=a.create({service:"tui-state-storage"}),i={toolsExpanded:true,showThinking:true,verboseLevel:"off",thinkingLevel:"low",messageLimit:50,localShellPermission:"ask"};async function h(o){try{let e=await a$1.read(["tui",o]),t={toolsExpanded:typeof e.toolsExpanded=="boolean"?e.toolsExpanded:i.toolsExpanded,showThinking:typeof e.showThinking=="boolean"?e.showThinking:i.showThinking,verboseLevel:e.verboseLevel==="on"||e.verboseLevel==="off"?e.verboseLevel:i.verboseLevel,thinkingLevel:e.thinkingLevel==="off"||e.thinkingLevel==="low"||e.thinkingLevel==="medium"||e.thinkingLevel==="high"?e.thinkingLevel:i.thinkingLevel,messageLimit:e.messageLimit===25||e.messageLimit===50||e.messageLimit===100?e.messageLimit:i.messageLimit,localShellPermission:e.localShellPermission==="on"||e.localShellPermission==="off"||e.localShellPermission==="ask"?e.localShellPermission:i.localShellPermission,contextMode:e.contextMode==="general"||e.contextMode==="coder"?e.contextMode:void 0,model:e.model,agent:e.agent,sessionId:e.sessionId};return n.debug("TUI state loaded",{sessionId:o,state:t}),t}catch(e){return e instanceof a$1.NotFoundError?n.debug("TUI state not found, using defaults",{sessionId:o}):n.warn("Failed to load TUI state, using defaults",{sessionId:o,error:e}),{...i}}}async function r(o,e){try{await a$1.write(["tui",o],e),n.debug("TUI state saved",{sessionId:o,state:e});}catch(t){n.error("Failed to save TUI state",{sessionId:o,error:t});}}async function c(o){if(!o.currentSessionId){n.warn("Cannot save TUI state: no session ID");return}let e={toolsExpanded:o.toolsExpanded,showThinking:o.showThinking,thinkingLevel:o.thinkingLevel,verboseLevel:o.verboseLevel,messageLimit:o.messageLimit,localShellPermission:o.localShellPermission,contextMode:o.contextMode,model:o.sessionInfo.model,agent:o.agent||void 0,sessionId:o.currentSessionId};await r(o.currentSessionId,e);}export{h as a,c as b};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import {Na,pb}from'./chunk-
|
|
1
|
+
import {Na,pb}from'./chunk-OMJJOGWG.mjs';import {a}from'./chunk-LFYBZHOI.mjs';var e=a.create({service:"cli-bootstrap"});async function f(o,i){let r=o||process.cwd();try{let{Global:t}=await import('./global-5ORB5ZJI.mjs');await t.init();}catch(t){throw e.error("Failed to initialize Global",{error:t instanceof Error?t.message:String(t)}),new Error(`Global initialization failed: ${t instanceof Error?t.message:String(t)}`)}try{return await Na.provide({directory:r,init:pb,fn:async()=>await i()})}catch(t){throw e.error("Failed to execute in Instance context",{directory:r,error:t instanceof Error?t.message:String(t)}),t}}async function g(o={}){let i=o.directory??process.cwd();try{let{Global:r}=await import('./global-5ORB5ZJI.mjs');await r.init();}catch(r){throw e.error("Failed to initialize Global",{error:r instanceof Error?r.message:String(r)}),new Error(`Global initialization failed: ${r instanceof Error?r.message:String(r)}`)}try{return await Na.provide({directory:i,init:pb,fn:async()=>{let{buildProgram:r}=await import('./build-program-P7RW5T4M.mjs');return await r(o)}})}catch(r){throw e.error("Failed to build program in Instance context",{directory:i,error:r instanceof Error?r.message:String(r)}),r}}export{f as a,g as b};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{a as CommandMetadataSchema,c as createCommandFromMarkdown,f as define,b as loadCommandFromFile,e as replaceTemplateVars,d as scanCommands}from'./chunk-
|
|
1
|
+
export{a as CommandMetadataSchema,c as createCommandFromMarkdown,f as define,b as loadCommandFromFile,e as replaceTemplateVars,d as scanCommands}from'./chunk-CTNROYWQ.mjs';import'./chunk-X6ISXWBN.mjs';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{O as Compaction,o as CompactionCache,n as DEFAULT_CACHE_CONFIG,p as createCompactionCache,q as subscribeCacheEvents}from'./chunk-OMJJOGWG.mjs';import'./chunk-LK3TQ5IO.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-CTNROYWQ.mjs';import'./chunk-TM2XNUSK.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import'./chunk-5HMIZBWX.mjs';import'./chunk-AJ67PJXE.mjs';import'./chunk-7P4KNLBL.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-7GBBUT6F.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-BS7N6B5S.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-X6ISXWBN.mjs';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{eb as Agent,cb as Command,ob as Config,nb as ConfigDirectoryTypoError,kb as Info,v as InvalidError,u as JsonError,fb as Keybinds,ib as Layout,Za as Mcp,Wa as McpLocal,Xa as McpOAuth,Ya as McpRemote,Va as ModelId,bb as Permission,_a as PermissionAction,$a as PermissionObject,ab as PermissionRule,jb as Provider,hb as Server,db as Skills,Ra as SubAgent,Sa as SubAgentConfigSchema,Qa as SubAgentModel,Oa as SubAgentRunMode,Pa as SubAgentTransportType,gb as TUI,D as deduplicatePlugins,H as directories,G as get,U as getACPClientsConfig,T as getACPServerConfig,X as getAcpAgentName,V as getAcpAgentRuntimeConfig,W as getAcpModelConfig,ja as getFileCacheConfig,J as getGlobal,C as getPluginName,Ua as getSubAgentConfig,ka as getTokenEstimationConfig,I as global,t as installDependencies,L as isAutoCompactEnabled,N as isBackupEnabled,M as isPruneEnabled,x as load,S as loadACPConfig,z as loadAgent,ca as loadCodebase,A as loadCommand,la as loadContextConfig,w as loadFile,ea as loadKnowledge,da as loadMemory,ba as loadNote,B as loadPlugin,Ta as loadSubAgentConfig,r as mergeConfigConcatArrays,s as needsInstall,y as parseConfig,E as state,lb as update,mb as updateGlobal,F as waitForDependencies}from'./chunk-
|
|
1
|
+
export{eb as Agent,cb as Command,ob as Config,nb as ConfigDirectoryTypoError,kb as Info,v as InvalidError,u as JsonError,fb as Keybinds,ib as Layout,Za as Mcp,Wa as McpLocal,Xa as McpOAuth,Ya as McpRemote,Va as ModelId,bb as Permission,_a as PermissionAction,$a as PermissionObject,ab as PermissionRule,jb as Provider,hb as Server,db as Skills,Ra as SubAgent,Sa as SubAgentConfigSchema,Qa as SubAgentModel,Oa as SubAgentRunMode,Pa as SubAgentTransportType,gb as TUI,D as deduplicatePlugins,H as directories,G as get,U as getACPClientsConfig,T as getACPServerConfig,X as getAcpAgentName,V as getAcpAgentRuntimeConfig,W as getAcpModelConfig,ja as getFileCacheConfig,J as getGlobal,C as getPluginName,Ua as getSubAgentConfig,ka as getTokenEstimationConfig,I as global,t as installDependencies,L as isAutoCompactEnabled,N as isBackupEnabled,M as isPruneEnabled,x as load,S as loadACPConfig,z as loadAgent,ca as loadCodebase,A as loadCommand,la as loadContextConfig,w as loadFile,ea as loadKnowledge,da as loadMemory,ba as loadNote,B as loadPlugin,Ta as loadSubAgentConfig,r as mergeConfigConcatArrays,s as needsInstall,y as parseConfig,E as state,lb as update,mb as updateGlobal,F as waitForDependencies}from'./chunk-OMJJOGWG.mjs';import'./chunk-LK3TQ5IO.mjs';export{h as getAgentRegistryConfig,m as getAgentSyncConfig,k as getAuthConfig,d as getChannelConfig,e as getConnectionPoolConfig,l as getGatewayClusterConfig,c as getGatewayServerConfig,j as getHTTPSConfig,f as getMessageQueueConfig,i as getSessionConfig,b as loadGatewayConfig}from'./chunk-ZBRXNYEM.mjs';import'./chunk-CTNROYWQ.mjs';import'./chunk-TM2XNUSK.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import'./chunk-5HMIZBWX.mjs';import'./chunk-AJ67PJXE.mjs';import'./chunk-7P4KNLBL.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-7GBBUT6F.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-BS7N6B5S.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-X6ISXWBN.mjs';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import {a}from'./chunk-
|
|
1
|
+
import {a}from'./chunk-5HMIZBWX.mjs';import'./chunk-X6ISXWBN.mjs';import {SelectList}from'@easbot/tui';var x={selectedPrefix:e=>`\x1B[36m${e}\x1B[0m`,selectedText:e=>`\x1B[1;36m${e}\x1B[0m`,description:e=>`\x1B[90m${e}\x1B[0m`,scrollInfo:e=>`\x1B[90m${e}\x1B[0m`,noMatch:e=>`\x1B[90m${e}\x1B[0m`};function C(e){let{message:o,confirmText:c,cancelText:r,onConfirm:s,onCancel:i}=e,l=[{label:c||a("tui.dialog.confirm"),value:"confirm",description:o},{label:r||a("tui.dialog.cancel"),value:"cancel",description:""}],t=new SelectList(l,2,x);return t.onSelect=m=>{m.value==="confirm"?s():i();},t.onCancel=i,t}export{C as createConfirmDialog};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {a as a$2}from'./chunk-
|
|
2
|
-
`));}catch(o){l.error("File search failed",{query:r,error:o instanceof Error?o.message:String(o)}),console.error(e(a$1("debug.file.search.error",{vars:{error:o instanceof Error?o.message:String(o)}}))),process.exit(1);}});}),n.command("read <path>").description(a$1("debug.file.read.command.describe")).action(async r=>{await a$2(s.config.directory,async()=>{let{File:t}=await import('./file-
|
|
3
|
-
`));}catch(i){y.error("File listing failed",{error:i instanceof Error?i.message:String(i)}),console.error(e(a$1("debug.ripgrep.files.error",{vars:{error:i instanceof Error?i.message:String(i)}}))),process.exit(1);}});}),n.command("search <pattern>").description(a$1("debug.ripgrep.search.command.describe")).option("--glob <glob...>",a$1("debug.ripgrep.search.option.glob.description")).option("--limit <number>",a$1("debug.ripgrep.search.option.limit.description")).action(async(r,t)=>{await a$2(s.config.directory,async()=>{let{Ripgrep:o}=await import('./ripgrep-
|
|
1
|
+
import {a as a$2}from'./chunk-Z7TE4DF3.mjs';import {e}from'./chunk-M3K32WJV.mjs';import'./chunk-OMJJOGWG.mjs';import'./chunk-LK3TQ5IO.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-CTNROYWQ.mjs';import'./chunk-TM2XNUSK.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import {a as a$1}from'./chunk-5HMIZBWX.mjs';import'./chunk-AJ67PJXE.mjs';import'./chunk-7P4KNLBL.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-7GBBUT6F.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import'./chunk-BS7N6B5S.mjs';import'./chunk-2RSIOAZV.mjs';import {c,d}from'./chunk-X6ISXWBN.mjs';import {PKG}from'@easbot/utils';var v=a.create({service:"debug.config"});function k(g,s){g.command("config").description(a$1("debug.config.command.describe")).action(async()=>{v.debug("Loading configuration");try{let r=await s.sdk.config.get();console.log(JSON.stringify(r.data,null,2));}catch(r){v.error("Failed to load configuration",{error:r instanceof Error?r.message:String(r)}),console.error(e(a$1("debug.config.error.load_failed",{vars:{error:r instanceof Error?r.message:String(r)}}))),process.exit(1);}});}var l=a.create({service:"debug.file"});function F(g,s){let n=g.command("file").description(a$1("debug.file.command.describe"));n.command("search <query>").description(a$1("debug.file.search.command.describe")).action(async r=>{await a$2(s.config.directory,async()=>{let{File:t}=await import('./file-ZOJ6S2UR.mjs');l.debug("Searching files",{query:r});try{let o=await t.search({query:r});console.log(o.join(`
|
|
2
|
+
`));}catch(o){l.error("File search failed",{query:r,error:o instanceof Error?o.message:String(o)}),console.error(e(a$1("debug.file.search.error",{vars:{error:o instanceof Error?o.message:String(o)}}))),process.exit(1);}});}),n.command("read <path>").description(a$1("debug.file.read.command.describe")).action(async r=>{await a$2(s.config.directory,async()=>{let{File:t}=await import('./file-ZOJ6S2UR.mjs');l.debug("Reading file",{path:r});try{let o=await t.read(r);console.log(JSON.stringify(o,null,2));}catch(o){l.error("File read failed",{path:r,error:o instanceof Error?o.message:String(o)}),console.error(e(a$1("debug.file.read.error",{vars:{error:o instanceof Error?o.message:String(o)}}))),process.exit(1);}});}),n.command("status").description(a$1("debug.file.status.command.describe")).action(async()=>{await a$2(s.config.directory,async()=>{let{File:r}=await import('./file-ZOJ6S2UR.mjs');l.debug("Getting file status");try{let t=await r.status();console.log(JSON.stringify(t,null,2));}catch(t){l.error("File status failed",{error:t instanceof Error?t.message:String(t)}),console.error(e(a$1("debug.file.status.error",{vars:{error:t instanceof Error?t.message:String(t)}}))),process.exit(1);}});}),n.command("list <path>").description(a$1("debug.file.list.command.describe")).action(async r=>{await a$2(s.config.directory,async()=>{let{File:t}=await import('./file-ZOJ6S2UR.mjs');l.debug("Listing files",{path:r});try{let o=await t.list(r);console.log(JSON.stringify(o,null,2));}catch(o){l.error("File list failed",{path:r,error:o instanceof Error?o.message:String(o)}),console.error(e(a$1("debug.file.list.error",{vars:{error:o instanceof Error?o.message:String(o)}}))),process.exit(1);}});}),n.command("tree [dir]").description(a$1("debug.file.tree.command.describe")).option("--limit <number>",a$1("debug.file.tree.option.limit.description")).action(async(r,t)=>{await a$2(s.config.directory,async()=>{let{Ripgrep:o}=await import('./ripgrep-Z3UZ5FOB.mjs'),{Instance:p}=await import('./instance-J5JTNYNN.mjs');l.debug("Showing file tree",{dir:r});try{let i=await o.tree({cwd:r||p.directory,limit:t?.limit||200});console.log(JSON.stringify(i,null,2));}catch(i){l.error("File tree failed",{dir:r,error:i instanceof Error?i.message:String(i)}),console.error(e(a$1("debug.file.tree.error",{vars:{error:i instanceof Error?i.message:String(i)}}))),process.exit(1);}});});}var u=a.create({service:"debug.lsp"});function x(g,s){let n=g.command("lsp").description(a$1("debug.lsp.command.describe"));n.command("diagnostics <file>").description(a$1("debug.lsp.diagnostics.command.describe")).action(async r=>{await a$2(s.config.directory,async()=>{let{LSP:t}=await import('./lsp-W37T7EBX.mjs');u.debug("Getting diagnostics",{file:r});try{await t.touchFile(r,!0),await PKG.sleep(1e3);let o=await t.diagnostics();console.log(JSON.stringify(o,null,2));}catch(o){u.error("Failed to get diagnostics",{file:r,error:o instanceof Error?o.message:String(o)}),console.error(e(a$1("debug.lsp.diagnostics.error",{vars:{error:o instanceof Error?o.message:String(o)}}))),process.exit(1);}});}),n.command("symbols <query>").description(a$1("debug.lsp.symbols.command.describe")).action(async r=>{await a$2(s.config.directory,async()=>{let{LSP:t}=await import('./lsp-W37T7EBX.mjs');u.debug("Searching workspace symbols",{query:r});try{var o=[];try{let d=c(o,a.Default.time("symbols"));let h=await t.workspaceSymbol(r);console.log(JSON.stringify(h,null,2));}catch(p){var i=p,S=!0;}finally{d(o,i,S);}}catch(d){u.error("Failed to search symbols",{query:r,error:d instanceof Error?d.message:String(d)}),console.error(e(a$1("debug.lsp.symbols.error",{vars:{error:d instanceof Error?d.message:String(d)}}))),process.exit(1);}});}),n.command("document-symbols <file>").description(a$1("debug.lsp.document_symbols.command.describe")).action(async r=>{await a$2(s.config.directory,async()=>{let{LSP:t}=await import('./lsp-W37T7EBX.mjs');u.debug("Getting document symbols",{file:r});try{var o=[];try{let d=c(o,a.Default.time("document-symbols"));let h=await t.documentSymbol({file:r});console.log(JSON.stringify(h,null,2));}catch(p){var i=p,S=!0;}finally{d(o,i,S);}}catch(d){u.error("Failed to get document symbols",{file:r,error:d instanceof Error?d.message:String(d)}),console.error(e(a$1("debug.lsp.document_symbols.error",{vars:{error:d instanceof Error?d.message:String(d)}}))),process.exit(1);}});});}var y=a.create({service:"debug.ripgrep"});function L(g,s){let n=g.command("rg").description(a$1("debug.ripgrep.command.describe"));n.command("tree").description(a$1("debug.ripgrep.tree.command.describe")).option("--limit <number>",a$1("debug.ripgrep.tree.option.limit.description")).action(async(r,t)=>{await a$2(s.config.directory,async()=>{let{Ripgrep:o}=await import('./ripgrep-Z3UZ5FOB.mjs'),{Instance:p}=await import('./instance-J5JTNYNN.mjs');y.debug("Showing file tree",{limit:t?.limit});try{let i=await o.tree({cwd:p.directory,limit:t?.limit});console.log(i);}catch(i){y.error("File tree failed",{error:i instanceof Error?i.message:String(i)}),console.error(e(a$1("debug.ripgrep.tree.error",{vars:{error:i instanceof Error?i.message:String(i)}}))),process.exit(1);}});}),n.command("files").description(a$1("debug.ripgrep.files.command.describe")).option("--query <string>",a$1("debug.ripgrep.files.option.query.description")).option("--glob <string>",a$1("debug.ripgrep.files.option.glob.description")).option("--limit <number>",a$1("debug.ripgrep.files.option.limit.description")).action(async(r,t)=>{await a$2(s.config.directory,async()=>{let{Ripgrep:o}=await import('./ripgrep-Z3UZ5FOB.mjs'),{Instance:p}=await import('./instance-J5JTNYNN.mjs');y.debug("Listing files",{query:t?.query,glob:t?.glob,limit:t?.limit});try{let i=[];for await(let S of o.files({cwd:p.directory,glob:t?.glob?[t.glob]:void 0}))if(i.push(S),t?.limit&&i.length>=t.limit)break;console.log(i.join(`
|
|
3
|
+
`));}catch(i){y.error("File listing failed",{error:i instanceof Error?i.message:String(i)}),console.error(e(a$1("debug.ripgrep.files.error",{vars:{error:i instanceof Error?i.message:String(i)}}))),process.exit(1);}});}),n.command("search <pattern>").description(a$1("debug.ripgrep.search.command.describe")).option("--glob <glob...>",a$1("debug.ripgrep.search.option.glob.description")).option("--limit <number>",a$1("debug.ripgrep.search.option.limit.description")).action(async(r,t)=>{await a$2(s.config.directory,async()=>{let{Ripgrep:o}=await import('./ripgrep-Z3UZ5FOB.mjs'),{Instance:p}=await import('./instance-J5JTNYNN.mjs');y.debug("Searching files",{pattern:r,glob:t?.glob,limit:t?.limit});try{let i=await o.search({cwd:p.directory,pattern:r,glob:t?.glob,limit:t?.limit});console.log(JSON.stringify(i,null,2));}catch(i){y.error("Search failed",{pattern:r,error:i instanceof Error?i.message:String(i)}),console.error(e(a$1("debug.ripgrep.search.error",{vars:{error:i instanceof Error?i.message:String(i)}}))),process.exit(1);}});});}var G=a.create({service:"debug.scrap"});function P(g,s){g.command("scrap").description(a$1("debug.scrap.command.describe")).action(async()=>{G.debug("Listing projects");let r=await s.sdk.project.list();console.log(JSON.stringify(r.data,null,2));});}var O=a.create({service:"debug.skill"});function J(g,s){g.command("skill").description(a$1("debug.skill.command.describe")).action(async()=>{O.debug("Listing skills");try{let r=await s.sdk.app.skills();console.log(JSON.stringify(r.data,null,2));}catch(r){O.error("Failed to list skills",{error:r instanceof Error?r.message:String(r)}),console.error(e(a$1("debug.skill.error.list_failed",{vars:{error:r instanceof Error?r.message:String(r)}}))),process.exit(1);}});}var w=a.create({service:"debug.snapshot"});function N(g,s){let n=g.command("snapshot").description(a$1("debug.snapshot.command.describe"));n.command("track").description(a$1("debug.snapshot.track.command.describe")).action(async()=>{await a$2(s.config.directory,async()=>{let{Snapshot:r}=await import('./snapshot-IN2OXNN4.mjs');w.debug("Tracking snapshot");try{let t=await r.track();console.log(t);}catch(t){w.error("Snapshot track failed",{error:t instanceof Error?t.message:String(t)}),console.error(e(a$1("debug.snapshot.track.error",{vars:{error:t instanceof Error?t.message:String(t)}}))),process.exit(1);}});}),n.command("patch <hash>").description(a$1("debug.snapshot.patch.command.describe")).action(async r=>{await a$2(s.config.directory,async()=>{let{Snapshot:t}=await import('./snapshot-IN2OXNN4.mjs');w.debug("Getting snapshot patch",{hash:r});try{let o=await t.patch(r);console.log(o);}catch(o){w.error("Snapshot patch failed",{hash:r,error:o instanceof Error?o.message:String(o)}),console.error(e(a$1("debug.snapshot.patch.error",{vars:{error:o instanceof Error?o.message:String(o)}}))),process.exit(1);}});}),n.command("diff <hash>").description(a$1("debug.snapshot.diff.command.describe")).action(async r=>{await a$2(s.config.directory,async()=>{let{Snapshot:t}=await import('./snapshot-IN2OXNN4.mjs');w.debug("Getting snapshot diff",{hash:r});try{let o=await t.diff(r);console.log(o);}catch(o){w.error("Snapshot diff failed",{hash:r,error:o instanceof Error?o.message:String(o)}),console.error(e(a$1("debug.snapshot.diff.error",{vars:{error:o instanceof Error?o.message:String(o)}}))),process.exit(1);}});});}a.create({service:"debug"});function Nr(g,s){let n=g.command("debug").description(a$1("debug.command.description"));k(n,s),F(n,s),x(n,s),L(n,s),P(n,s),J(n,s),N(n,s),n.command("agent <name>").description(a$1("debug.agent.command.describe")).option("--tool <tool-id>",a$1("debug.agent.option.tool.description")).option("--params <json>",a$1("debug.agent.option.params.description")).action(async(r,t)=>{let{registerAgentCommand:o}=await import('./agent-NGOXDVCS.mjs');o(s,r,t);}),n.command("paths").description(a$1("debug.paths.command.describe")).action(async()=>{let{Global:r}=await import('./global-5ORB5ZJI.mjs');for(let[t,o]of Object.entries(r.Path))console.log(`${t.padEnd(10)}${o}`);}),n.command("wait").description(a$1("debug.wait.command.describe")).action(async()=>{await a$2(s.config.directory,async()=>{await new Promise(r=>setTimeout(r,1e3*60*60*24));});});}export{Nr as registerDebugCommands};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import {e,h}from'./chunk-M3K32WJV.mjs';import {a as a$1}from'./chunk-
|
|
1
|
+
import {e,h}from'./chunk-M3K32WJV.mjs';import {a as a$1}from'./chunk-5HMIZBWX.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import'./chunk-X6ISXWBN.mjs';var n=a.create({service:"cli-command-export"});function S(p,i){p.command("export [sessionID]").description(a$1("export.command.description")).action(async o=>{n.debug("Exporting session",{sessionId:o});try{if(!o){let{data:e$1}=await i.sdk.session.list({});(!e$1||e$1.length===0)&&(console.error(e(a$1("export.error.no_sessions"))),process.exit(1));let a=[...e$1].sort((f,l)=>l.time.updated-f.time.updated)[0];a||(console.error(e(a$1("export.error.no_sessions"))),process.exit(1)),o=a.id,n.debug("Using latest session",{sessionId:o});}console.log(h(a$1("export.exporting",{vars:{sessionId:o}})));let{data:r}=await i.sdk.session.get({sessionID:o}),{data:c}=await i.sdk.session.messages({sessionID:o}),g={info:r,messages:(c??[]).map(e=>({info:e.info,parts:e.parts}))};console.log(JSON.stringify(g,null,2)),n.debug("Session exported successfully",{sessionId:o});}catch(r){n.error("Failed to export session",{sessionId:o,error:r instanceof Error?r.message:String(r)}),console.error(e(a$1("export.error.failed",{vars:{error:r instanceof Error?r.message:String(r)}}))),process.exit(1);}});}export{S as registerExportCommand};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{Z as File}from'./chunk-OMJJOGWG.mjs';import'./chunk-LK3TQ5IO.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-CTNROYWQ.mjs';import'./chunk-TM2XNUSK.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import'./chunk-5HMIZBWX.mjs';import'./chunk-AJ67PJXE.mjs';import'./chunk-7P4KNLBL.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-7GBBUT6F.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-BS7N6B5S.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-X6ISXWBN.mjs';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import {a as a$2}from'./chunk-LAHYVX5K.mjs';import {a as a$3}from'./chunk-Z7TE4DF3.mjs';import'./chunk-VII7JKGB.mjs';import {g,f,e,d,h,k as k$1,a as a$4,c as c$1,b,i}from'./chunk-M3K32WJV.mjs';import {Na,Aa,ya}from'./chunk-OMJJOGWG.mjs';import'./chunk-LK3TQ5IO.mjs';import {c}from'./chunk-ZBRXNYEM.mjs';import'./chunk-CTNROYWQ.mjs';import'./chunk-TM2XNUSK.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import {a as a$1}from'./chunk-5HMIZBWX.mjs';import'./chunk-AJ67PJXE.mjs';import'./chunk-7P4KNLBL.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-7GBBUT6F.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import {a as a$5}from'./chunk-BS7N6B5S.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-X6ISXWBN.mjs';import'commander';import {Gateway}from'@easbot/gateway';import {getProxyConfig}from'@easbot/utils';var n=a.create({service:"cli-command-gateway"});function E(g,r,t){let o=b();console.log(""),console.log(d(a$1("gateway.server.started"))),console.log(k$1(60)),t?.directory&&console.log(i(a$1("gateway.field.directory"),t.directory,15));let s={stopped:a$4.muted,starting:a$4.info,running:a$4.success,stopping:a$4.info,error:a$4.error},a=c$1(o,s[g]||a$4.muted,g.toUpperCase());if(console.log(i(a$1("gateway.field.status"),a,15)),g==="running"){let d=r.https?.enabled?"wss":"ws",f=r.path||"/",v=`${d}://${r.hostname}:${r.port}${f}`;console.log(i(a$1("gateway.field.ws_url"),v,15)),console.log(i(a$1("gateway.field.port"),String(r.port),15)),console.log(i(a$1("gateway.field.hostname"),r.hostname,15)),console.log(i(a$1("gateway.field.tls"),r.https?.enabled?a$1("common.enabled"):a$1("common.disabled"),15));}t?.debug!==void 0&&console.log(i(a$1("gateway.field.debug"),t.debug?c$1(o,a$4.success,a$1("common.enabled")):c$1(o,a$4.muted,a$1("common.disabled")),15));let i$1=getProxyConfig();if(i$1.enabled){let d=i$1.https||i$1.http||"configured";console.log(i(a$1("gateway.field.proxy"),d,15));}t?.error&&console.log(i(a$1("gateway.field.error"),t.error,15)),console.log(k$1(60)),console.log("");}function k(){let g=async r=>{n.debug(`Received ${r}, shutting down...`),console.log(`
|
|
2
|
+
${a$1("gateway.shutdown.received",{vars:{signal:r}})}`);try{await Gateway.stop(),n.debug("Gateway state destroyed"),console.log(d(a$1("gateway.shutdown.completed")));}catch(t){n.error("Error during shutdown",{error:t instanceof Error?t.message:String(t)});}process.exit(0);};process.on("SIGINT",()=>{g("SIGINT").catch(console.error);}),process.on("SIGTERM",()=>{g("SIGTERM").catch(console.error);});}async function j(g){n.debug("createAgentAdapter: starting",{directory:g}),n.debug("createAgentAdapter: calling Instance.provide");let r=await Na.provide({directory:g,fn:async()=>{n.debug("createAgentAdapter: Instance.provide fn called");let{Project:a}=await import('./project-XTL74VR6.mjs');n.debug("createAgentAdapter: Project imported, calling fromDirectory");let{project:i,sandbox:d}=await a.fromDirectory(g);n.debug("createAgentAdapter: fromDirectory completed",{projectId:i.id});let f={directory:g,worktree:d,project:i};return n.debug("createAgentAdapter: fn returning",{directory:g,projectId:i.id}),f}});n.debug("createAgentAdapter: Instance.provide completed",{directory:r.directory,projectId:r.project.id});let t={Path:{home:a$5.Path.home,data:a$5.Path.data,cache:a$5.Path.cache,config:a$5.Path.config,state:a$5.Path.state,log:a$5.Path.log,bin:a$5.Path.bin}};n.debug("global paths injected",{data:t.Path.data,log:t.Path.log,home:t.Path.home});let o={directory:r.directory,worktree:r.worktree};return await ya.state(),{subAgentRunner:{async run(a){try{let i={source:a.source||a.sessionId||"gateway",title:a.title||"Message from gateway",agent:a.agent||"gateway",parts:a.parts||[]},d=await ya.run(i);return {success:!0,output:d.output,metadata:d.metadata}}catch(i){return n.error("SubAgent.run failed",{error:i instanceof Error?i.message:String(i)}),{success:false,error:i instanceof Error?i.message:String(i)}}}},hookRegistry:Aa,global:t,instance:o}}async function D(g$1,r,t){n.debug("Gateway start command executed",{options:r});try{let o=t.config.directory;n.debug("Working directory resolved",{directory:o});let s=a$2(o);if(!s.valid)throw n.error("Working directory validation failed",{directory:o,error:s.error}),new Error(`Invalid working directory: ${s.error}`);let a=s.normalizedPath;n.debug("Working directory validated",{validatedDirectory:a}),console.log(g(a$1("gateway.directory.resolved",{vars:{cwd:a}}))),await a$3(a,async()=>{let{initLog:i,setAgentAdapter:d}=await import('@easbot/gateway');await i({logDir:process.env.EASBOT_LOG_PATH??process.cwd(),print:t.config.print_logs??!1,dev:t.config.debug??!1,level:t.config.log_level??"INFO"});let v=await j(a);n.debug("executeGatewayStart: createAgentAdapter completed"),d(v),n.debug("Agent adapter injected into Gateway");let p=await c();if(n.debug("Gateway server configuration",{port:p.port,hostname:p.hostname,path:p.path,tls:p.https?.enabled,enabled:p.enabled}),!p.enabled){n.warn("Gateway server is disabled by configuration"),console.log(f(a$1("gateway.disabled")));return}await Gateway.start(p),n.info("Gateway server started successfully"),E("running",p,{directory:a,debug:t.config.debug}),k(),await new Promise(()=>{});});}catch(o){n.error("Failed to start Gateway server",{error:o instanceof Error?o.message:String(o)}),console.error(e(a$1("gateway.error.start_failed",{vars:{error:o instanceof Error?o.message:String(o)}}))),process.exit(1);}}async function W(g$1,r){n.debug("Gateway stop command executed",{options:g$1});try{let t=r.config.directory;await a$3(t,async()=>{if(Gateway.getStatus()==="stopped"){console.log(g(a$1("gateway.status.already_stopped")));return}await Gateway.stop(),console.log(d(a$1("gateway.stopped")));let s=await c();E("stopped",s,{directory:t});});}catch(t){n.error("Failed to stop Gateway server",{error:t instanceof Error?t.message:String(t)}),console.error(e(a$1("gateway.error.stop_failed",{vars:{error:t instanceof Error?t.message:String(t)}}))),process.exit(1);}}async function F(g$1,r,t){n.debug("Gateway restart command executed",{options:r});try{let o=t.config.directory;await a$3(o,async()=>{let s=await c();if(!s.enabled){n.warn("Gateway server is disabled by configuration"),console.log(f(a$1("gateway.disabled")));return}console.log(g(a$1("gateway.restarting"))),await Gateway.restart(s),console.log(d(a$1("gateway.restarted"))),E("running",s,{directory:o,debug:t.config.debug}),k(),await new Promise(()=>{});});}catch(o){n.error("Failed to restart Gateway server",{error:o instanceof Error?o.message:String(o)}),console.error(e(a$1("gateway.error.restart_failed",{vars:{error:o instanceof Error?o.message:String(o)}}))),await a.close(),process.exit(1);}}async function N(g,r){n.debug("Gateway status command executed",{options:g});try{let t=r.config.directory;await a$3(t,async()=>{let o=Gateway.getStatus(),a=(await Gateway.get())?.getStatus(),i$1=await c();console.log(""),console.log(h(a$1("gateway.status.title"))),console.log(k$1(60));let d={stopped:a$4.muted,starting:a$4.info,running:a$4.success,stopping:a$4.info,error:a$4.error},f=c$1(b(),d[o]||a$4.muted,o.toUpperCase());if(console.log(i(a$1("gateway.field.status"),f,15)),a){console.log(i(a$1("gateway.field.port"),String(a.port),15)),console.log(i(a$1("gateway.field.hostname"),a.hostname||i$1.hostname,15)),console.log(i(a$1("gateway.field.path"),i$1.path||"/",15)),console.log(i(a$1("gateway.field.connections"),String(a.connections||0),15));let v=i$1.https?.enabled?"wss":"ws",p=i$1.path||"/",O=`${v}://${a.hostname||i$1.hostname}:${a.port}${p}`;console.log(i(a$1("gateway.field.ws_url"),O,15));}console.log(k$1(60)),console.log("");});}catch(t){n.error("Failed to get Gateway status",{error:t instanceof Error?t.message:String(t)}),console.error(e(a$1("gateway.error.status_failed",{vars:{error:t instanceof Error?t.message:String(t)}}))),process.exit(1);}}async function L(g$1,r){n.debug("Gateway config show command executed",{options:g$1});try{let t=r.config.directory;await a$3(t,async()=>{let o=await Gateway.config();if(!o){console.log(f(a$1("gateway.config.not_found")));return}if(console.log(""),console.log(h(a$1("gateway.config.heading"))),console.log(k$1(60)),o.server&&(console.log(h(a$1("gateway.config.server"))),console.log(i(" enabled",String(o.server.enabled??!0),12)),console.log(i(" port",String(o.server.port??3001),12)),console.log(i(" hostname",o.server.hostname??"0.0.0.0",12)),console.log(i(" tls",String(o.server.https?.enabled??!1),12)),console.log(i(" cors",String(o.server.cors??!0),12))),o.channels){console.log(""),console.log(h(a$1("gateway.config.channels")));let s=Object.keys(o.channels);if(s.length===0)console.log(g(" "+a$1("gateway.config.no_channels")));else for(let a of s){let i$1=o.channels[a];i$1&&console.log(i(` ${a}`,i$1.enabled?a$1("common.enabled"):a$1("common.disabled"),12));}}o.connectionPool&&(console.log(""),console.log(h(a$1("gateway.config.connection_pool"))),console.log(i(" maxConnectionsPerChannel",String(o.connectionPool.maxConnectionsPerChannel??100),25)),console.log(i(" idleTimeout",`${o.connectionPool.idleTimeout??3e5}ms`,25)),console.log(i(" reuseStrategy",o.connectionPool.reuseStrategy??"lru",25))),o.agentRegistry&&(console.log(""),console.log(h(a$1("gateway.config.agent_registry"))),console.log(i(" heartbeatInterval",`${o.agentRegistry.heartbeatInterval??3e4}ms`,20)),console.log(i(" heartbeatTimeout",`${o.agentRegistry.heartbeatTimeout??9e4}ms`,20))),console.log(k$1(60)),console.log("");});}catch(t){n.error("Failed to show Gateway config",{error:t instanceof Error?t.message:String(t)}),console.error(e(a$1("gateway.error.config_failed",{vars:{error:t instanceof Error?t.message:String(t)}}))),process.exit(1);}}function se(g,r){let t=g.command("gateway").description(a$1("gateway.command.description")).helpOption("-h, --help",a$1("gateway.help.option")).addHelpText("after",`
|
|
3
|
+
|
|
4
|
+
${a$1("gateway.help.examples")}
|
|
5
|
+
easbot gateway start # ${a$1("gateway.help.example.default")}
|
|
6
|
+
easbot gateway start --port 8080 # ${a$1("gateway.help.example.port")}
|
|
7
|
+
easbot gateway start --hostname 127.0.0.1 # ${a$1("gateway.help.example.hostname")}
|
|
8
|
+
easbot gateway stop # ${a$1("gateway.help.example.stop")}
|
|
9
|
+
easbot gateway restart # ${a$1("gateway.help.example.restart")}
|
|
10
|
+
easbot gateway config show # ${a$1("gateway.help.example.config")}
|
|
11
|
+
|
|
12
|
+
${a$1("gateway.help.env")}
|
|
13
|
+
GATEWAY_PORT ${a$1("gateway.help.env.port")}
|
|
14
|
+
GATEWAY_HOSTNAME ${a$1("gateway.help.env.hostname")}
|
|
15
|
+
GATEWAY_TLS ${a$1("gateway.help.env.tls")}
|
|
16
|
+
`);t.option("-D, --directory <path>",a$1("gateway.option.directory")).option("-p, --port <number>",a$1("gateway.option.port"),s=>parseInt(s,10)).option("-H, --hostname <address>",a$1("gateway.option.hostname")).option("--tls",a$1("gateway.option.tls")).option("--tls-cert <path>",a$1("gateway.option.tls_cert")).option("--tls-key <path>",a$1("gateway.option.tls_key")).option("-d, --debug",a$1("gateway.option.debug"),false),t.command("start").description(a$1("gateway.command.start")).addHelpText("after",a$1("gateway.help.subcommand.start.after")).action(async()=>{if(process.argv.includes("--help")||process.argv.includes("-h")){t.commands.find(a=>a.name()==="start")?.outputHelp(),process.exit(0);return}let s=t.opts();await D(t,s,r);}),t.command("stop").description(a$1("gateway.command.stop")).action(async()=>{if(process.argv.includes("--help")||process.argv.includes("-h")){t.commands.find(a=>a.name()==="stop")?.outputHelp(),process.exit(0);return}let s=t.opts();await W(s,r);}),t.command("restart").description(a$1("gateway.command.restart")).action(async()=>{if(process.argv.includes("--help")||process.argv.includes("-h")){t.commands.find(a=>a.name()==="restart")?.outputHelp(),process.exit(0);return}let s=t.opts();await F(t,s,r);}),t.command("status").description(a$1("gateway.command.status")).action(async()=>{if(process.argv.includes("--help")||process.argv.includes("-h")){t.commands.find(a=>a.name()==="status")?.outputHelp(),process.exit(0);return}let s=t.opts();await N(s,r);});let o=t.command("config").description(a$1("gateway.command.config"));o.command("show").description(a$1("gateway.command.config_show")).action(async()=>{if(process.argv.includes("--help")||process.argv.includes("-h")){o.commands.find(a=>a.name()==="show")?.outputHelp(),process.exit(0);return}let s=t.opts();await L(s,r);});}export{se as registerGatewayCommand};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {e}from'./chunk-M3K32WJV.mjs';import {wa}from'./chunk-
|
|
1
|
+
import {e}from'./chunk-M3K32WJV.mjs';import {wa}from'./chunk-OMJJOGWG.mjs';import'./chunk-LK3TQ5IO.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-CTNROYWQ.mjs';import'./chunk-TM2XNUSK.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import {a}from'./chunk-5HMIZBWX.mjs';import'./chunk-AJ67PJXE.mjs';import'./chunk-7P4KNLBL.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-7GBBUT6F.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-BS7N6B5S.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-X6ISXWBN.mjs';function g(o,a$1){o.command("generate").description(a("generate.command.description")).action(async()=>{await c();});}async function c(){try{let o=await wa();for(let t of Object.values(o.paths??{}))for(let r of ["get","post","put","delete","patch"]){let e=t[r];e?.operationId&&(e["x-codeSamples"]=[{lang:"js",source:['import { createEasbotClient } from "@easbot/sdk"',"","const client = createEasbotClient()",`await client.${e.operationId}({`," ...","})"].join(`
|
|
2
2
|
`)}]);}let a=JSON.stringify(o,null,2);await new Promise((t,r)=>{process.stdout.write(a,e=>{e?r(e):t();});});}catch(o){console.error(e(a("generate.error.failed",{vars:{error:o instanceof Error?o.message:String(o)}}))),process.exit(1);}}export{g as registerGenerateCommand};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {a as a$2}from'./chunk-TYD2M4SP.mjs';import'./chunk-FXOUIXIL.mjs';import'./chunk-CQVEAYYW.mjs';import {g,e,h,i,k,d}from'./chunk-M3K32WJV.mjs';import {Na}from'./chunk-
|
|
1
|
+
import {a as a$2}from'./chunk-TYD2M4SP.mjs';import'./chunk-FXOUIXIL.mjs';import'./chunk-CQVEAYYW.mjs';import {g,e,h,i,k,d}from'./chunk-M3K32WJV.mjs';import {Na}from'./chunk-OMJJOGWG.mjs';import'./chunk-LK3TQ5IO.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-CTNROYWQ.mjs';import'./chunk-TM2XNUSK.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import {a as a$1}from'./chunk-5HMIZBWX.mjs';import'./chunk-AJ67PJXE.mjs';import'./chunk-7P4KNLBL.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-7GBBUT6F.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import'./chunk-BS7N6B5S.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-X6ISXWBN.mjs';import {Shell,PKG,Fetch}from'@easbot/utils';var m=a.create({service:"cli-command-github"}),R=".github/workflows/opencode.yml",S="https://github.com/apps/opencode-agent";function z(e,t){let r=e.command("github").description(a$1("github.command.description"));r.command("install").description(a$1("github.command.install.description")).option("--provider <provider>",a$1("github.option.provider")).option("--model <model>",a$1("github.option.model")).action(async a=>{m.debug("Installing GitHub app"),await j(t,a);}),r.command("run").description(a$1("github.command.run.description")).option("--event <json>",a$1("github.option.event")).option("--token <token>",a$1("github.option.token")).action(async a=>{m.debug("Running GitHub agent",{options:a}),console.log(g(a$1("github.run.info")));});}async function j(e$1,t){try{Na.project.vcs!=="git"&&(console.error(e(a$1("github.error.not_git_repo"))),process.exit(1)),console.log(h(a$1("github.install.starting")));let a=await W(),n=E(a);n||(console.error(e(a$1("github.error.parse_remote"))),process.exit(1)),console.log(i(a$1("github.field.owner"),n.owner)),console.log(i(a$1("github.field.repo"),n.repo)),console.log(k(60)),console.log(g(a$1("github.install.step1")));let i$1=`${S}?target=${n.owner}/${n.repo}`;console.log(g(a$1("github.install.open_url",{vars:{url:i$1}}))),await F(i$1),console.log(g(a$1("github.install.waiting")));let s=0,d$1=60;for(;s<d$1;){if(await H(n.owner,n.repo)){console.log(d(a$1("github.install.installed")));break}s++,await D(1e3);}s>=d$1&&(console.error(e(a$1("github.install.timeout"))),process.exit(1));let c=t.provider||await L(e$1),v=t.model||await T(e$1,c);console.log(k(60)),console.log(g(a$1("github.install.generating_workflow"))),await A(e$1,n.owner,n.repo,c,v),console.log(d(a$1("github.install.workflow_created",{vars:{file:R}}))),console.log(""),console.log(h(a$1("github.install.next_steps"))),console.log(g("1. "+a$1("github.install.step1_hint"))),console.log(g("2. "+a$1("github.install.step2_hint",{vars:{owner:n.owner,repo:n.repo}}))),console.log(g("3. "+a$1("github.install.step3_hint"))),m.debug("GitHub app installation complete",{owner:n.owner,repo:n.repo});}catch(r){m.error("Failed to install GitHub app",{error:r instanceof Error?r.message:String(r)}),console.error(e(a$1("github.install.error",{vars:{error:r instanceof Error?r.message:String(r)}}))),process.exit(1);}}async function W(){let e=process.platform==="win32"?"cmd":void 0,t=Shell.spawn(e,"git remote get-url origin");if(await t.exited!==0)throw new Error("Failed to get git remote");return await PKG.nodeReadableStreamToText(t.stdout)}function E(e){let t=e.match(/^(?:(?:https?|ssh):\/\/)?(?:git@)?github\.com[:/]([^/]+)\/([^/]+?)(?:\.git)?$/);return t?{owner:t[1],repo:t[2]}:null}async function F(e){let t=process.platform==="darwin"?`open ${e}`:process.platform==="win32"?`start ${e}`:`xdg-open ${e}`;try{let r=process.platform==="win32"?"cmd":void 0;await Shell.spawn(r,t).exited;}catch{m.debug("Could not open browser automatically");}}async function H(e,t){try{return !!(await Fetch.get(`https://api.opencode.ai/get_github_app_installation?owner=${e}&repo=${t}`)).data?.installation}catch{return false}}async function L(e){let{data:t}=await e.sdk.config.providers({}),r=t?.providers||[],a={easbot:0,anthropic:1,openai:2,google:3},n=r.sort((i,s)=>(a[i.id]??99)-(a[s.id]??99));return console.log(""),console.log(g(a$1("github.install.select_provider"))),console.log(a$2({columns:[{key:"index",header:"#",minWidth:4},{key:"id",header:a$1("github.table.header.id"),minWidth:15},{key:"name",header:a$1("github.table.header.name"),flex:true},{key:"hint",header:"",minWidth:15}],rows:n.map((i,s)=>({index:`${s+1}`,id:i.id,name:i.name||i.id,hint:i.id==="easbot"?"recommended":""})),width:process.stdout.columns||80,border:"unicode"})),console.log(""),n[0]?.id||"easbot"}async function T(e,t){let{data:r}=await e.sdk.config.providers({}),n=(r?.providers||[]).find(s=>s.id===t);if(!n?.models)return "default";let i=Object.entries(n.models);if(i.length===0)return "default";console.log(""),console.log(g(a$1("github.install.select_model")));for(let s=0;s<i.length;s++){let[d,c]=i[s];console.log(` ${s+1}. ${c.name||d}`);}return console.log(""),i[0]?.[0]||"default"}async function A(e,t,r,a,n){let{data:i}=await e.sdk.config.providers({}),c=(i?.providers||[]).find(p=>p.id===a)?.env||[],y=`name: opencode
|
|
2
2
|
|
|
3
3
|
on:
|
|
4
4
|
issue_comment:
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{a as Global}from'./chunk-BS7N6B5S.mjs';import'./chunk-X6ISXWBN.mjs';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {h,e,d}from'./chunk-M3K32WJV.mjs';import {Na}from'./chunk-
|
|
1
|
+
import {h,e,d}from'./chunk-M3K32WJV.mjs';import {Na}from'./chunk-OMJJOGWG.mjs';import'./chunk-LK3TQ5IO.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-CTNROYWQ.mjs';import'./chunk-TM2XNUSK.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import {a as a$1}from'./chunk-5HMIZBWX.mjs';import'./chunk-AJ67PJXE.mjs';import'./chunk-7P4KNLBL.mjs';import'./chunk-CJTCCLW4.mjs';import {a as a$2}from'./chunk-7GBBUT6F.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import'./chunk-BS7N6B5S.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-X6ISXWBN.mjs';import {PKG}from'@easbot/utils';var m=a.create({service:"cli-command-import"});function _(g,u){g.command("import <file>").description(a$1("import.command.description")).action(async t=>{m.debug("Importing session",{file:t});try{let s=t.startsWith("http://")||t.startsWith("https://"),o;if(s){console.log(h(a$1("import.fetching_url",{vars:{url:t}})));let r=await fetch(t);r.ok||(console.error(e(a$1("import.error.fetch_failed",{vars:{status:r.statusText}}))),process.exit(1)),o=await r.json();}else {console.log(h(a$1("import.reading_file",{vars:{file:t}})));let r=await PKG.file(t).text();o=JSON.parse(r);}o?.info||(console.error(e(a$1("import.error.invalid_format"))),process.exit(1)),m.debug("Importing session data",{sessionId:o.info.id}),await a$2.write(["session",Na.project.id,o.info.id],o.info);for(let r of o.messages){await a$2.write(["message",o.info.id,r.info.id],r.info);for(let c of r.parts)await a$2.write(["part",r.info.id,c.id],c);}console.log(d(a$1("import.success",{vars:{sessionId:o.info.id}})));}catch(s){m.error("Failed to import session",{file:t,error:s instanceof Error?s.message:String(s)}),console.error(e(a$1("import.error.failed",{vars:{error:s instanceof Error?s.message:String(s)}}))),process.exit(1);}});}
|
|
2
2
|
export{_ as registerImportCommand};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{b as Installation}from'./chunk-7P4KNLBL.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-BS7N6B5S.mjs';import'./chunk-X6ISXWBN.mjs';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{Na as Instance}from'./chunk-OMJJOGWG.mjs';import'./chunk-LK3TQ5IO.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-CTNROYWQ.mjs';import'./chunk-TM2XNUSK.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import'./chunk-5HMIZBWX.mjs';import'./chunk-AJ67PJXE.mjs';import'./chunk-7P4KNLBL.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-7GBBUT6F.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-BS7N6B5S.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-X6ISXWBN.mjs';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{H as directories,G as get,J as getGlobal,I as global,E as state,F as waitForDependencies}from'./chunk-OMJJOGWG.mjs';import'./chunk-LK3TQ5IO.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-CTNROYWQ.mjs';import'./chunk-TM2XNUSK.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import'./chunk-5HMIZBWX.mjs';import'./chunk-AJ67PJXE.mjs';import'./chunk-7P4KNLBL.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-7GBBUT6F.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-BS7N6B5S.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-X6ISXWBN.mjs';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{a as PluginLoader,b as createPluginLoader}from'./chunk-4HF47RUG.mjs';import'./chunk-OMJJOGWG.mjs';import'./chunk-LK3TQ5IO.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-CTNROYWQ.mjs';import'./chunk-TM2XNUSK.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import'./chunk-5HMIZBWX.mjs';import'./chunk-AJ67PJXE.mjs';import'./chunk-7P4KNLBL.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-7GBBUT6F.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-BS7N6B5S.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-X6ISXWBN.mjs';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{b as LSP}from'./chunk-OMJJOGWG.mjs';import'./chunk-LK3TQ5IO.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-CTNROYWQ.mjs';import'./chunk-TM2XNUSK.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import'./chunk-5HMIZBWX.mjs';import'./chunk-AJ67PJXE.mjs';import'./chunk-7P4KNLBL.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-7GBBUT6F.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-BS7N6B5S.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-X6ISXWBN.mjs';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import {a as a$4}from'./chunk-TYD2M4SP.mjs';import'./chunk-FXOUIXIL.mjs';import {a as a$3}from'./chunk-
|
|
1
|
+
import {a as a$4}from'./chunk-TYD2M4SP.mjs';import'./chunk-FXOUIXIL.mjs';import {a as a$3}from'./chunk-Z7TE4DF3.mjs';import'./chunk-CQVEAYYW.mjs';import {l,d,e,h,i,b,c,a as a$5}from'./chunk-M3K32WJV.mjs';import'./chunk-OMJJOGWG.mjs';import'./chunk-LK3TQ5IO.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-CTNROYWQ.mjs';import'./chunk-TM2XNUSK.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import {a as a$2}from'./chunk-5HMIZBWX.mjs';import'./chunk-AJ67PJXE.mjs';import'./chunk-7P4KNLBL.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-7GBBUT6F.mjs';import {a as a$1}from'./chunk-LFYBZHOI.mjs';import'./chunk-BS7N6B5S.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-X6ISXWBN.mjs';var a=a$1.create({service:"cli-command-mcp"});function T(w,c$1){let M=w.command("mcp").description(a$2("mcp.command.description"));M.command("list").description(a$2("mcp.command.list.description")).action(async()=>{await a$3(c$1.config.directory,async()=>{try{a.info("Listing MCP servers");let{data:o}=await c$1.sdk.config.get({directory:c$1.config.directory}),r=o?.mcp||{},n=Object.entries(r).map(([s,m])=>({name:s,type:m.type||"local",command:m.command,url:m.url,enabled:m.enabled,environment:m.environment,headers:m.headers}));if(n.length===0){console.log(l(a$2("mcp.list.empty")));return}console.log(d(a$2("mcp.list.success",{vars:{count:n.length}}))),console.log(""),console.log(a$4({columns:[{key:"name",header:a$2("mcp.table.header.name"),minWidth:20},{key:"command",header:a$2("mcp.table.header.command"),minWidth:30},{key:"disabled",header:a$2("mcp.table.header.disabled"),minWidth:10}],rows:n.map(s=>({name:s.name,command:s.type==="local"?s.command?.join(" ")||"":s.url||"",disabled:s.enabled===!1?a$2("common.yes"):a$2("common.no")})),width:process.stdout.columns||80,border:"unicode"})),a.debug("MCP server list displayed",{count:n.length});}catch(o){a.error("Failed to list MCP servers",{error:o instanceof Error?o.message:String(o)}),console.error(e(a$2("mcp.list.error"))),process.exit(1);}});}),M.command("info <name>").description(a$2("mcp.command.info.description")).action(async o=>{await a$3(c$1.config.directory,async()=>{try{a.debug("Getting MCP server info",{name:o});let{data:r}=await c$1.sdk.config.get({directory:c$1.config.directory}),n=r?.mcp?.[o];n||(console.error(e(a$2("mcp.info.notfound",{vars:{name:o}}))),process.exit(1));let s=n.type||"local",m=n.command,d$1=n.url,l=n.enabled,f=n.environment,g=n.headers;if(console.log(d(a$2("mcp.info.success"))),console.log(""),console.log(h(a$2("mcp.info.heading"))),console.log(""),console.log(i(a$2("mcp.info.field.name")+":",o)),console.log(i(a$2("mcp.info.field.type")+":",s)),s==="local"||!s){if(console.log(i(a$2("mcp.info.field.command")+":",m?.join(" ")||"")),console.log(i(a$2("mcp.info.field.enabled")+":",l!==!1?a$2("common.yes"):a$2("common.no"))),f&&Object.keys(f).length>0){console.log(i(a$2("mcp.info.field.environment")+":",""));let p=b();console.log(c(p,a$5.muted,JSON.stringify(f,null,2)));}}else if(s==="remote"&&(console.log(i(a$2("mcp.info.field.url")+":",d$1||"")),console.log(i(a$2("mcp.info.field.enabled")+":",l!==!1?a$2("common.yes"):a$2("common.no"))),g&&Object.keys(g).length>0)){console.log(i(a$2("mcp.info.field.headers")+":",""));let p=b();console.log(c(p,a$5.muted,JSON.stringify(g,null,2)));}a.debug("MCP server info displayed",{name:o});}catch(r){a.error("Failed to get MCP server info",{name:o,error:r instanceof Error?r.message:String(r)}),console.error(e(a$2("mcp.info.error",{vars:{error:String(r)}}))),process.exit(1);}});}),M.command("add").description(a$2("mcp.command.add.description")).requiredOption("--name <name>",a$2("mcp.command.add.option.name")).requiredOption("--command <command>",a$2("mcp.command.add.option.command")).option("--args <json>",a$2("mcp.command.add.option.args")).option("--env <json>",a$2("mcp.command.add.option.env")).action(async o=>{await a$3(c$1.config.directory,async()=>{try{a.debug("Adding MCP server",{name:o.name}),console.log(h(a$2("mcp.add.begin")));let r;if(o.args)try{r=JSON.parse(o.args),Array.isArray(r)||(console.error(e(a$2("mcp.add.error.args_invalid"))),process.exit(1));}catch{console.error(e(a$2("mcp.add.error.args_invalid"))),process.exit(1);}let n;if(o.env)try{n=JSON.parse(o.env),(typeof n!="object"||Array.isArray(n))&&(console.error(e(a$2("mcp.add.error.env_invalid"))),process.exit(1));}catch{console.error(e(a$2("mcp.add.error.env_invalid"))),process.exit(1);}let s={type:"local",command:[o.command,...r||[]]};n&&(s.environment=n),await c$1.sdk.config.update({directory:c$1.config.directory,config:{mcp:{[o.name]:s}}});let{data:m}=await c$1.sdk.config.get({directory:c$1.config.directory}),d$1=m?.mcp?.[o.name],l=d$1.type;console.log(d(a$2("mcp.add.success",{vars:{name:o.name}}))),console.log(""),console.log(h(a$2("mcp.info.heading"))),console.log(""),console.log(i(a$2("mcp.info.field.name")+":",o.name)),console.log(i(a$2("mcp.info.field.type")+":",l||"local"));let f=d$1.command,g=d$1.environment,p=d$1.url,P=d$1.headers;if(l==="local"||!l){if(console.log(i(a$2("mcp.info.field.command")+":",f?.join(" ")||[o.command].join(" "))),g&&Object.keys(g).length>0){console.log(i(a$2("mcp.info.field.environment")+":",""));let S=b();console.log(c(S,a$5.muted,JSON.stringify(g,null,2)));}}else if(l==="remote"&&(console.log(i(a$2("mcp.info.field.url")+":",p||"")),P&&Object.keys(P).length>0)){console.log(i(a$2("mcp.info.field.headers")+":",""));let S=b();console.log(c(S,a$5.muted,JSON.stringify(P,null,2)));}a.debug("MCP server added successfully",{name:o.name});}catch(r){a.error("Failed to add MCP server",{name:o.name,error:r instanceof Error?r.message:String(r)}),console.error(e(a$2("mcp.add.error",{vars:{error:r instanceof Error?r.message:String(r)}}))),process.exit(1);}});}),M.command("remove <name>").description(a$2("mcp.command.remove.description")).action(async o=>{await a$3(c$1.config.directory,async()=>{try{a.debug("Removing MCP server",{name:o}),console.log(h(a$2("mcp.remove.begin")));let{data:r}=await c$1.sdk.config.get({directory:c$1.config.directory});r?.mcp?.[o]||(console.error(e(a$2("mcp.remove.not_found",{vars:{name:o}}))),process.exit(1)),await c$1.sdk.config.update({directory:c$1.config.directory,config:{mcp:{[o]:null}}}),console.log(d(a$2("mcp.remove.success",{vars:{name:o}}))),a.debug("MCP server removed successfully",{name:o});}catch(r){a.error("Failed to remove MCP server",{name:o,error:r instanceof Error?r.message:String(r)}),console.error(e(a$2("mcp.remove.error",{vars:{error:r instanceof Error?r.message:String(r)}}))),process.exit(1);}});});}export{T as registerMcpCommands};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{P as MCP}from'./chunk-OMJJOGWG.mjs';import'./chunk-LK3TQ5IO.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-CTNROYWQ.mjs';import'./chunk-TM2XNUSK.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import'./chunk-5HMIZBWX.mjs';import'./chunk-AJ67PJXE.mjs';import'./chunk-7P4KNLBL.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-7GBBUT6F.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-BS7N6B5S.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-X6ISXWBN.mjs';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{a as ModelsDev,b as initModelsRefresh}from'./chunk-AJ67PJXE.mjs';import'./chunk-7P4KNLBL.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-BS7N6B5S.mjs';import'./chunk-X6ISXWBN.mjs';
|