@easbot/agent 0.2.28 → 0.2.32
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-EMYJGRAW.mjs +16 -0
- package/dist/chunks/adapter-loader-NJKRWATC.mjs +1 -0
- package/dist/chunks/{agent-DQAY44EW.mjs → agent-5RKJILIT.mjs} +1 -1
- package/dist/chunks/{agent-TMTKXGO5.mjs → agent-ZYCLULYQ.mjs} +1 -1
- package/dist/chunks/app-RUR3EKXE.mjs +1 -0
- package/dist/chunks/{auth-DHIUZUBT.mjs → auth-4K3ZL6IZ.mjs} +1 -1
- package/dist/chunks/bootstrap-HHX67JWH.mjs +1 -0
- package/dist/chunks/{build-program-NEPEF27C.mjs → build-program-FDMZOIRV.mjs} +1 -1
- package/dist/chunks/bus-ILD32DY6.mjs +1 -0
- package/dist/chunks/{chunk-JEUEJB5B.mjs → chunk-2A5IMRBR.mjs} +1 -1
- package/dist/chunks/{chunk-NQDXG75V.mjs → chunk-5HMIZBWX.mjs} +2 -2
- package/dist/chunks/{chunk-7SGBJ5NP.mjs → chunk-7QUCWKBW.mjs} +1 -1
- package/dist/chunks/{chunk-IXVWBJIE.mjs → chunk-CIWBRN5R.mjs} +1 -1
- package/dist/chunks/{chunk-WT6HKW7N.mjs → chunk-LGCBI3XO.mjs} +1 -1
- package/dist/chunks/{chunk-3VYIQTJ7.mjs → chunk-MNFXN5CQ.mjs} +3 -3
- package/dist/chunks/{chunk-U4BAW7XF.mjs → chunk-SF52HNJQ.mjs} +1 -1
- package/dist/chunks/{chunk-QMJ4R4AL.mjs → chunk-TGMBM3LH.mjs} +1 -1
- package/dist/chunks/{chunk-AP3ZZPEV.mjs → chunk-V47M5AIQ.mjs} +1 -1
- package/dist/chunks/{chunk-TQNXBACI.mjs → chunk-VCWACWRA.mjs} +1 -1
- package/dist/chunks/{chunk-KZLMEUTB.mjs → chunk-Z76342HO.mjs} +198 -204
- package/dist/chunks/{chunk-I3VIJLPG.mjs → chunk-ZRQN5OEL.mjs} +1 -1
- package/dist/chunks/{command-WLZAXIPJ.mjs → command-O22JUBKW.mjs} +1 -1
- package/dist/chunks/compaction-BBFXKQLT.mjs +1 -0
- package/dist/chunks/{config-WLSYCCYR.mjs → config-4BV4A44P.mjs} +1 -1
- package/dist/chunks/{confirm-dialog-XBLCGOEC.mjs → confirm-dialog-JSKEM3X2.mjs} +1 -1
- package/dist/chunks/{debug-J5RTJUKH.mjs → debug-IDSUSGE2.mjs} +3 -3
- package/dist/chunks/{export-I4GL3OUG.mjs → export-CLUTYBVZ.mjs} +1 -1
- package/dist/chunks/file-6KLFN3KH.mjs +1 -0
- package/dist/chunks/gateway-TD6PI5QI.mjs +16 -0
- package/dist/chunks/{generate-KTY277XK.mjs → generate-RLRBTIAB.mjs} +1 -1
- package/dist/chunks/{github-JLFW4AJU.mjs → github-VD3MTG4A.mjs} +1 -1
- package/dist/chunks/global-5VXYUQCD.mjs +1 -0
- package/dist/chunks/{import-E46ADPOS.mjs → import-PWETHHEM.mjs} +1 -1
- package/dist/chunks/installation-J3DOZYAO.mjs +1 -0
- package/dist/chunks/instance-WJN3WTMR.mjs +1 -0
- package/dist/chunks/loader-4NQWDIG5.mjs +1 -0
- package/dist/chunks/loader-7OJVB2VM.mjs +1 -0
- package/dist/chunks/lsp-VWPJRY6K.mjs +1 -0
- package/dist/chunks/{mcp-QLI6EI3R.mjs → mcp-2CRPI57O.mjs} +1 -1
- package/dist/chunks/mcp-AB6BM3HE.mjs +1 -0
- package/dist/chunks/models-476VQW2D.mjs +1 -0
- package/dist/chunks/{pr-FAF6WBPN.mjs → pr-536BX37K.mjs} +1 -1
- package/dist/chunks/preferences-7X5P7MJV.mjs +1 -0
- package/dist/chunks/project-7YILR444.mjs +1 -0
- package/dist/chunks/prompt-HUYC5Q7B.mjs +1 -0
- package/dist/chunks/provider-TM5PF6US.mjs +1 -0
- package/dist/chunks/registry-3T3TMX6L.mjs +1 -0
- package/dist/chunks/revert-OM52XV5I.mjs +1 -0
- package/dist/chunks/ripgrep-62V4DGAC.mjs +1 -0
- package/dist/chunks/{run-IO45RQPY.mjs → run-7XQNMJD2.mjs} +1 -1
- package/dist/chunks/scheduler-PH6VI2DT.mjs +1 -0
- package/dist/chunks/server-BTOAV625.mjs +1 -0
- package/dist/chunks/session-DM4VRA4R.mjs +1 -0
- package/dist/chunks/{session-C5EPZY5K.mjs → session-NRMPDP2T.mjs} +1 -1
- package/dist/chunks/session-WRNXT6MY.mjs +1 -0
- package/dist/chunks/{settings-panel-4GBMKF7S.mjs → settings-panel-SM37CCB4.mjs} +1 -1
- package/dist/chunks/share-TDA5RXVK.mjs +1 -0
- package/dist/chunks/snapshot-ROYL6CIJ.mjs +1 -0
- package/dist/chunks/{stats-KXJDFVQY.mjs → stats-FP5BZIOF.mjs} +1 -1
- package/dist/chunks/storage-HNIBWXUM.mjs +1 -0
- package/dist/chunks/{tui-Y3HZ4TPR.mjs → tui-ITRCFGRG.mjs} +1 -1
- package/dist/chunks/tui-PDUMZURP.mjs +1 -0
- package/dist/chunks/types-RK7YP347.mjs +1 -0
- package/dist/chunks/{update-TMILGQ45.mjs → update-KBNWYZYQ.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
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import {a as a$2}from'./chunk-LAHYVX5K.mjs';import {a as a$3}from'./chunk-V47M5AIQ.mjs';import'./chunk-VII7JKGB.mjs';import {g,e,d,k,i,b,h,c,a as a$4}from'./chunk-M3K32WJV.mjs';import {ob,Q,xa,Na}from'./chunk-Z76342HO.mjs';import'./chunk-7QUCWKBW.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-ZRQN5OEL.mjs';import'./chunk-VCWACWRA.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import {a as a$1}from'./chunk-5HMIZBWX.mjs';import'./chunk-LGCBI3XO.mjs';import'./chunk-2A5IMRBR.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-TGMBM3LH.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import'./chunk-SF52HNJQ.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-X6ISXWBN.mjs';import'commander';import L from'path';import {getProxyConfig}from'@easbot/utils';var n=a.create({service:"cli-command-acp"});async function O(s,e){let t=await ob.getACPServerConfig();n.debug("Merging ACP configuration",{baseConfig:{channel:t.channel,port:t.port,hostname:t.hostname,timeout:t.timeout},cliOptions:{channel:e.channel,port:e.port,hostname:e.hostname,timeout:e.timeout}});let r={};if(e.channel!==void 0){let i=e.channel.toLowerCase();Object.values(Q).includes(i)?(r.channel=i,n.debug("CLI override: channel",{value:r.channel})):n.warn("Invalid channel type from command line",{value:e.channel});}if(e.port!==void 0&&(e.port>0&&e.port<=65535?(r.port=e.port,n.debug("CLI override: port",{value:r.port})):n.warn("Invalid port from command line",{value:e.port})),e.hostname!==void 0&&(r.hostname=e.hostname,n.debug("CLI override: hostname",{value:r.hostname})),e.timeout!==void 0&&(e.timeout>0?(r.timeout=e.timeout,n.debug("CLI override: timeout",{value:r.timeout})):n.warn("Invalid timeout from command line",{value:e.timeout})),e.hostname!==void 0||e.port!==void 0){let i=e.hostname??t.hostname??"127.0.0.1",l=e.port??t.port??3e3;t.ws&&(r.ws={...t.ws,url:`ws://${i}:${l}`}),t.http&&(r.http={...t.http,baseUrl:`http://${i}:${l}`}),n.debug("CLI override: ws.url and http.baseUrl updated",{hostname:e.hostname,port:e.port,wsUrl:r.ws?.url,httpBaseUrl:r.http?.baseUrl});}e.timeout!==void 0&&(r.ws||r.http)&&(r.ws&&(r.ws.timeout=e.timeout),r.http&&(r.http.timeout=e.timeout),n.debug("CLI override: ws.timeout and http.timeout updated",{timeout:e.timeout}));let c={...t,...r};return n.debug("Merged ACP configuration",{channel:c.channel,port:c.port,hostname:c.hostname,timeout:c.timeout}),c}async function U(s,e,t){n.info("Starting ACP service",{channel:e.channel,port:e.port,hostname:e.hostname,debug:t.config.debug}),await xa.init({directory:s,printLogs:t.config.print_logs,logLevel:t.config.log_level,channel:e.channel});await xa.ensureACPService(e);console.log(""),console.log(d(a$1("acp.server.started"))),console.log(k(60)),console.log(i(a$1("acp.field.directory"),s,15)),console.log(i(a$1("acp.field.worktree"),Na.project.worktree||"N/A",15)),console.log(i(a$1("acp.field.channel"),e.channel,15));let c$1=b();switch(e.channel){case "websocket":{let l,m="/";if(e.ws?.url)try{let p=new URL(e.ws.url),d=p.port||"3000",_=p.hostname;m=p.pathname||"/",l=`ws://${_}:${d}${m==="/"?"":m}`;}catch{l=e.ws.url;}else l=`ws://${e.hostname}:${e.port}`;console.log(i(a$1("acp.field.ws_url"),l,15)),console.log(i(a$1("acp.field.ws_path"),m,15)),e.ws?(console.log(h(a$1("acp.websocket.config"))),console.log(i(a$1("acp.field.timeout"),`${e.ws.timeout??e.timeout}ms`,15)),console.log(i(a$1("acp.field.batch_size"),`${e.ws.batchSize??10}`,15)),console.log(i(a$1("acp.field.batch_interval"),`${e.ws.batchInterval??50}ms`,15)),console.log(i(a$1("acp.field.heartbeat"),`${e.ws.heartbeatInterval??3e4}ms`,15))):console.log(i(a$1("acp.field.timeout"),`${e.timeout}ms`,15));break}case "http":e.http?.baseUrl?console.log(i(a$1("acp.field.base_url"),e.http.baseUrl,15)):console.log(i(a$1("acp.field.host"),`${e.hostname}:${e.port}`,15)),e.http?.timeout?console.log(i(a$1("acp.field.timeout"),`${e.http.timeout}ms`,15)):console.log(i(a$1("acp.field.timeout"),`${e.timeout}ms`,15));break;case "stdio":console.log(i(a$1("acp.field.mode"),a$1("acp.mode.stdio"),15)),console.log(i(a$1("acp.field.timeout"),`${e.timeout}ms`,15));break;case "local":console.log(i(a$1("acp.field.mode"),a$1("acp.mode.local"),15)),console.log(i(a$1("acp.field.protocol"),a$1("acp.protocol"),15)),console.log(i(a$1("acp.field.timeout"),`${e.timeout}ms`,15));break;default:console.log(i(a$1("acp.field.host"),`${e.hostname}:${e.port}`,15)),console.log(i(a$1("acp.field.timeout"),`${e.timeout}ms`,15));}console.log(i(a$1("acp.field.debug"),t.config.debug?c(c$1,a$4.success,a$1("common.enabled")):c(c$1,a$4.muted,a$1("common.disabled")),15));let i$1=getProxyConfig();if(i$1.enabled){let l=i$1.https||i$1.http||"configured";console.log(i(a$1("acp.field.proxy"),l,15));}console.log(k(60)),console.log(""),n.info("ACPServer started successfully"),N();}function N(){let s=process.env.EASBOT_RUN_MODE==="ephemeral"||!process.stdin.isTTY&&process.env.EASBOT_RUN_MODE!=="persistent",e=async t=>{n.debug(`Received ${t}, shutting down...`),s||console.log(`
|
|
2
|
+
${a$1("acp.shutdown.received",{vars:{signal:t}})}`);try{await xa.destroy(),n.debug("EasbotAdapter state destroyed"),s||console.log(d(a$1("acp.shutdown.completed")));}catch(r){n.error("Error during shutdown",{error:r instanceof Error?r.message:String(r)});}s?process.kill(process.pid,"SIGKILL"):process.exit(0);};process.on("SIGINT",()=>{e("SIGINT").catch(console.error);}),process.on("SIGTERM",()=>{e("SIGTERM").catch(console.error);}),process.stdout.on("error",t=>{(t.code==="EPIPE"||t.code==="EIO")&&(n.info("stdout pipe broken, exiting"),e("stdout-broken").catch(()=>{s?process.kill(process.pid,"SIGKILL"):process.exit(0);}));});}async function M(s,e$1,t){n.debug("ACP command executed",{options:e$1});let r=t?.config?.debug??false,c=t?.config?.print_logs??false,i=t?.config?.log_level??"INFO";n.debug("Global options from context",{debug:t?.config?.debug,print_logs:t?.config?.print_logs,log_level:t?.config?.log_level,isDebug:r,printLogs:c,logLevel:i});try{let l=t.config.directory?L.resolve(t.config.directory):process.cwd();n.debug("Working directory resolved",{directory:l});let m=a$2(l);if(!m.valid)throw n.error("Working directory validation failed",{directory:l,error:m.error}),new Error(`Invalid working directory: ${m.error}`);let p=m.normalizedPath;n.debug("Working directory validated",{validatedDirectory:p}),console.log(g(a$1("acp.directory.resolved",{vars:{cwd:p}}))),await a$3(p,async()=>{let d=await O(p,e$1);if(n.debug("ACP server configuration",{channel:d.channel,port:d.port,hostname:d.hostname,timeout:d.timeout,enabled:d.enabled}),!d.enabled){n.warn("ACP server is disabled by configuration"),console.log(g(a$1("acp.disabled")));return}await U(p,d,t),n.info("ACP server started successfully");});}catch(l){n.error("Failed to start ACP server",{error:l instanceof Error?l.message:String(l)}),console.error(e(a$1("acp.error.start_failed",{vars:{error:l instanceof Error?l.message:String(l)}}))),process.exit(1);}}function ce(s,e){let t=s.command("acp").description(a$1("acp.command.description")).addHelpText("after",`
|
|
3
|
+
|
|
4
|
+
${a$1("acp.help.examples")}
|
|
5
|
+
$ agent acp # ${a$1("acp.help.example.default")}
|
|
6
|
+
$ agent acp --channel http # ${a$1("acp.help.example.http")}
|
|
7
|
+
$ agent acp --port 8080 # ${a$1("acp.help.example.port")}
|
|
8
|
+
$ agent acp --hostname 0.0.0.0 # ${a$1("acp.help.example.hostname")}
|
|
9
|
+
$ agent acp --channel ws --debug # ${a$1("acp.help.example.debug")}
|
|
10
|
+
|
|
11
|
+
${a$1("acp.help.env")}
|
|
12
|
+
ACP_CHANNEL ${a$1("acp.help.env.channel")}
|
|
13
|
+
ACP_PORT ${a$1("acp.help.env.port")}
|
|
14
|
+
ACP_HOSTNAME ${a$1("acp.help.env.hostname")}
|
|
15
|
+
ACP_TIMEOUT ${a$1("acp.help.env.timeout")}
|
|
16
|
+
ACP_ENABLED ${a$1("acp.help.env.enabled")}`);t.option("-c, --channel <type>",a$1("acp.option.channel")).option("-p, --port <number>",a$1("acp.option.port"),r=>parseInt(r,10)).option("-H, --hostname <address>",a$1("acp.option.hostname")).option("-t, --timeout <milliseconds>",a$1("acp.option.timeout"),r=>parseInt(r,10)),t.command("*",{isDefault:true}).action(async()=>{let r=t.opts();await M(t,r,e);});}export{ce as registerAcpCommand};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{U as getACPClientsConfig,T as getACPServerConfig,X as getAcpAgentName,V as getAcpAgentRuntimeConfig,W as getAcpModelConfig,S as loadACPConfig}from'./chunk-Z76342HO.mjs';import'./chunk-7QUCWKBW.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-ZRQN5OEL.mjs';import'./chunk-VCWACWRA.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import'./chunk-5HMIZBWX.mjs';import'./chunk-LGCBI3XO.mjs';import'./chunk-2A5IMRBR.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-TGMBM3LH.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-SF52HNJQ.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-X6ISXWBN.mjs';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import {e}from'./chunk-M3K32WJV.mjs';import {j,fa,k,La}from'./chunk-
|
|
1
|
+
import {e}from'./chunk-M3K32WJV.mjs';import {j,fa,k,La}from'./chunk-Z76342HO.mjs';import'./chunk-7QUCWKBW.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-ZRQN5OEL.mjs';import'./chunk-VCWACWRA.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import {a as a$1}from'./chunk-5HMIZBWX.mjs';import'./chunk-LGCBI3XO.mjs';import'./chunk-2A5IMRBR.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-TGMBM3LH.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import'./chunk-SF52HNJQ.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-X6ISXWBN.mjs';import {basename}from'path';import {iife,Identifier}from'@easbot/utils';var D=a.create({service:"debug.agent"});function z(r,o,e$1){(async()=>{D.debug("Getting agent info",{agentName:o});let t=(await r.sdk.agent.get({agentID:o})).data;t||(console.error(e(a$1("debug.agent.error.not_found",{vars:{agentName:o,command:basename(process.execPath)}}))),process.exit(1));let a=t,d=await C(a),i=await P(a,d);if(e$1.tool){let c=d.find(A=>A.id===e$1.tool);c||(console.error(e(a$1("debug.agent.tool.error.not_found",{vars:{toolID:e$1.tool,agentName:o}}))),process.exit(1)),i[e$1.tool]===false&&(console.error(e(a$1("debug.agent.tool.error.disabled",{vars:{toolID:e$1.tool,agentName:o}}))),process.exit(1));let g=T(e$1.params),b=await E(a,r);D.debug("Executing tool",{toolID:e$1.tool,params:g});let y=await c.execute(g,b);console.log(JSON.stringify({tool:e$1.tool,input:g,result:y},null,2));return}let m={...t,tools:i};console.log(JSON.stringify(m,null,2));})();}async function C(r){let o=r.model??await j.defaultModel();return o.providerID||(o={...o,providerID:"default-provider"}),fa.tools(o,r)}async function P(r,o){let e=k.disabled(o.map(t=>t.id),r.permission),s={};for(let t of o)s[t.id]=!e.has(t.id);return s}function T(r){if(!r)return {};let o=r.trim();if(o.length===0)return {};let e=iife(()=>{try{return JSON.parse(o)}catch(s){try{return new Function(`return (${o})`)()}catch(t){throw new Error(a$1("debug.agent.tool.params.parse_error",{vars:{jsonError:s,evalError:t}}))}}});if(!e||typeof e!="object"||Array.isArray(e))throw new Error(a$1("debug.agent.tool.params.must_be_object"));return e}async function E(r,o){let e=await La.create({title:`Debug tool run (${r.name})`}),s=Identifier.ascending("message"),t=r.model??await j.defaultModel();t.providerID||(t={...t,providerID:t.providerID||"default-provider"});let a=Date.now(),d={id:s,sessionID:e.id,role:"assistant",time:{created:a},parentID:s,modelID:t.modelID,providerID:t.providerID,mode:"debug",agent:r.name,path:{cwd:o.config.directory,root:o.config.worktree},cost:0,tokens:{input:0,output:0,reasoning:0,cache:{read:0,write:0}}};await La.updateMessage(d);let i=k.merge(r.permission,e.permission??[]);return {sessionID:e.id,messageID:s,callID:Identifier.ascending("part"),agent:r.name,abort:new AbortController().signal,messages:[],metadata:()=>{},async ask(m){for(let c of m.patterns)if(k.evaluate(m.permission,c,i).action==="deny")throw new k.DeniedError(i)}}}export{z as registerAgentCommand};
|
|
@@ -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-V47M5AIQ.mjs';import'./chunk-CQVEAYYW.mjs';import {l,d,e,h,i,b,c,a as a$5}from'./chunk-M3K32WJV.mjs';import'./chunk-Z76342HO.mjs';import'./chunk-7QUCWKBW.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-ZRQN5OEL.mjs';import'./chunk-VCWACWRA.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import {a as a$2}from'./chunk-5HMIZBWX.mjs';import'./chunk-LGCBI3XO.mjs';import'./chunk-2A5IMRBR.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-TGMBM3LH.mjs';import {a as a$1}from'./chunk-LFYBZHOI.mjs';import'./chunk-SF52HNJQ.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-X6ISXWBN.mjs';var a=a$1.create({service:"cli-command-agent"});function W(C,c$1){let y=C.command("agent").description(a$2("agent.command.description"));y.command("list").description(a$2("agent.command.list.description")).action(async()=>{await a$3(c$1.config.directory,async()=>{try{a.debug("Listing agents");let{data:o}=await c$1.sdk.app.agents({});if(!o||o.length===0){console.log(l(a$2("agent.list.empty")));return}let r=[...o].sort((n,t)=>{let g="native"in n&&n.native,d="native"in t&&t.native;return g!==d?g?-1:1:n.name.localeCompare(t.name)});console.log(d(a$2("agent.list.success",{vars:{count:o.length}}))),console.log(""),console.log(a$4({columns:[{key:"name",header:a$2("agent.table.header.name"),minWidth:15},{key:"mode",header:a$2("agent.table.header.mode"),minWidth:10},{key:"native",header:a$2("agent.table.header.native"),minWidth:8}],rows:r.map(n=>({name:n.name,mode:"mode"in n&&n.mode||"primary",native:"native"in n&&n.native?a$2("common.yes"):a$2("common.no")})),width:process.stdout.columns||80,border:"unicode"})),a.debug("Agent list displayed",{count:o.length});}catch(o){a.error("Failed to list agents",{error:o instanceof Error?o.message:String(o)}),console.error(e(a$2("agent.list.error"))),process.exit(1);}});}),y.command("info <agent-id>").description(a$2("agent.command.info.description")).action(async o=>{await a$3(c$1.config.directory,async()=>{try{a.debug("Getting agent info",{agentId:o});let{data:r}=await c$1.sdk.app.agents({}),n=r?.find(t=>t.name===o);if(n||(console.error(e(a$2("agent.get.not_found",{vars:{agentId:o}}))),process.exit(1)),console.log(d(a$2("agent.get.success"))),console.log(""),console.log(h(a$2("agent.info.heading"))),console.log(""),console.log(i(a$2("agent.info.field.name")+":",n.name)),console.log(i(a$2("agent.info.field.mode")+":","mode"in n&&n.mode||"primary")),console.log(i(a$2("agent.info.field.native")+":","native"in n&&n.native?a$2("common.yes"):a$2("common.no"))),"permission"in n&&n.permission){console.log(i(a$2("agent.info.field.permission")+":",""));let t=b();console.log(c(t,a$5.muted,JSON.stringify(n.permission,null,2)));}a.debug("Agent info displayed",{agentId:o});}catch(r){a.error("Failed to get agent info",{agentId:o,error:r instanceof Error?r.message:String(r)}),console.error(e(a$2("agent.get.error"))),process.exit(1);}});}),y.command("create").description(a$2("agent.command.create.description")).requiredOption("--name <name>",a$2("agent.command.create.option.name")).option("--mode <mode>",a$2("agent.command.create.option.mode"),"chat").option("--permission <json>",a$2("agent.command.create.option.permission")).action(async o=>{await a$3(c$1.config.directory,async()=>{try{a.debug("Creating agent",{name:o.name,mode:o.mode}),console.log(h(a$2("agent.create.begin")));let{validateAgentName:r,validateAgentMode:n,validateJsonString:t}=await import('./input-validation-FWKKVCYC.mjs');r(o.name)||(a.error("Invalid agent name",{name:o.name}),console.error(e(a$2("agent.create.validation.name"))),process.exit(1));let g=o.mode||"primary";n(g)||(a.error("Invalid agent mode",{mode:o.mode}),console.error(e(a$2("agent.create.validation.mode"))),process.exit(1));let d$1;if(o.permission){let l=t(o.permission,"permission");l||(a.error("Invalid permission JSON format",{permission:o.permission}),console.error(e(a$2("agent.create.error",{vars:{error:"Invalid permission JSON format"}}))),process.exit(1)),d$1=l;}let{data:m}=await c$1.sdk.agent.create({name:o.name,mode:g,permission:d$1});if(m||(console.error(e(a$2("agent.create.error",{vars:{error:"Agent creation failed"}}))),process.exit(1)),console.log(d(a$2("agent.create.success",{vars:{name:m.name}}))),console.log(""),console.log(h(a$2("agent.info.heading"))),console.log(""),console.log(i(a$2("agent.info.field.name")+":",m.name)),console.log(i(a$2("agent.info.field.mode")+":",m.mode??"all")),console.log(i(a$2("agent.info.field.native")+":",m.native?a$2("common.yes"):a$2("common.no"))),m.permission){console.log(i(a$2("agent.info.field.permission")+":",""));let l=b();console.log(c(l,a$5.muted,JSON.stringify(m.permission,null,2)));}a.debug("Agent created successfully",{name:m.name});}catch(r){a.error("Failed to create agent",{name:o.name,error:r instanceof Error?r.message:String(r)}),console.error(e(a$2("agent.create.error",{vars:{error:r instanceof Error?r.message:String(r)}}))),process.exit(1);}});});}export{W as registerAgentCommands};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{h as createTuiApp,g as getGlobalErrorHandler,e as registerGlobalErrorHandler,f as unregisterGlobalErrorHandler}from'./chunk-MNFXN5CQ.mjs';import'./chunk-CQVEAYYW.mjs';import'./chunk-Z76342HO.mjs';import'./chunk-7QUCWKBW.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-ZRQN5OEL.mjs';import'./chunk-VCWACWRA.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import'./chunk-5HMIZBWX.mjs';import'./chunk-LGCBI3XO.mjs';import'./chunk-2A5IMRBR.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-TGMBM3LH.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-SF52HNJQ.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-X6ISXWBN.mjs';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import {a as a$2}from'./chunk-TYD2M4SP.mjs';import'./chunk-FXOUIXIL.mjs';import'./chunk-CQVEAYYW.mjs';import {h,g,e,d}from'./chunk-M3K32WJV.mjs';import {a as a$1}from'./chunk-
|
|
1
|
+
import {a as a$2}from'./chunk-TYD2M4SP.mjs';import'./chunk-FXOUIXIL.mjs';import'./chunk-CQVEAYYW.mjs';import {h,g,e,d}from'./chunk-M3K32WJV.mjs';import {a as a$1}from'./chunk-5HMIZBWX.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import'./chunk-X6ISXWBN.mjs';var i=a.create({service:"cli-command-auth"});function E(n,o){let e=n.command("auth").description(a$1("auth.command.description"));e.command("list").description(a$1("auth.command.list.description")).aliases(["ls"]).action(async()=>{i.debug("Listing credentials"),await v(o);}),e.command("login [provider]").description(a$1("auth.command.login.description")).option("--key <key>",a$1("auth.option.key")).action(async(t,g)=>{t?(i.debug("Logging in to provider",{provider:t}),await f(o,t,g.key)):(i.debug("Interactive login"),await y(o));}),e.command("logout <provider>").description(a$1("auth.command.logout.description")).action(async t=>{i.debug("Logging out from provider",{provider:t}),await b(o,t);});}async function v(n){try{let{data:o}=await n.sdk.config.providers({}),e=o?.providers||[];if(console.log(h(a$1("auth.list.title"))),console.log(""),e.length===0){console.log(g(a$1("auth.list.empty")));return}console.log(a$2({columns:[{key:"provider",header:a$1("auth.table.header.provider"),minWidth:20},{key:"type",header:a$1("auth.table.header.type"),minWidth:15}],rows:e.map(t=>({provider:t.name||t.id,type:"configured"})),width:process.stdout.columns||80,border:"unicode"})),i.debug("Credentials listed",{count:e.length});}catch(o){i.error("Failed to list credentials",{error:o instanceof Error?o.message:String(o)}),console.error(e(a$1("auth.list.error",{vars:{error:o instanceof Error?o.message:String(o)}}))),process.exit(1);}}async function f(n,o,e$1){try{e$1||(console.error(e(a$1("auth.login.key_required"))),console.log(g(a$1("auth.login.key_hint"))),process.exit(1)),console.log(h(a$1("auth.login.logging_in",{vars:{provider:o}}))),await n.sdk.auth.set({providerID:o,info:{type:"api",key:e$1}}),console.log(d(a$1("auth.login.success",{vars:{provider:o}}))),i.debug("Login successful",{provider:o});}catch(t){i.error("Login failed",{provider:o,error:t instanceof Error?t.message:String(t)}),console.error(e(a$1("auth.login.error",{vars:{error:t instanceof Error?t.message:String(t)}}))),process.exit(1);}}async function y(n){try{console.log(h(a$1("auth.interactive.title")));let{data:o}=await n.sdk.config.providers({}),e$1=o?.providers||[],t={easbot:0,anthropic:1,openai:2,google:3},g$1=e$1.sort((s,l)=>(t[s.id]??99)-(t[l.id]??99)).map(s=>({value:s.id,label:s.name||s.id,hint:s.id==="easbot"?"recommended":void 0}));console.log(""),console.log(g(a$1("auth.interactive.select_provider"))),console.log(a$2({columns:[{key:"index",header:"#",minWidth:4},{key:"provider",header:a$1("auth.table.header.provider"),minWidth:25},{key:"hint",header:a$1("auth.table.header.hint"),flex:!0}],rows:g$1.map((s,l)=>({index:`${l+1}`,provider:s.label,hint:s.hint||""})),width:process.stdout.columns||80,border:"unicode"})),console.log(""),console.log(g(a$1("auth.interactive.enter_number")));let h$1=g$1[0]?.value;h$1||(console.error(e(a$1("auth.interactive.no_providers"))),process.exit(1)),await f(n,h$1);}catch(o){i.error("Interactive login failed",{error:o instanceof Error?o.message:String(o)}),console.error(e(a$1("auth.login.error",{vars:{error:o instanceof Error?o.message:String(o)}}))),process.exit(1);}}async function b(n,o){try{console.log(h(a$1("auth.logout.logging_out",{vars:{provider:o}}))),await n.sdk.auth.remove({providerID:o}),console.log(d(a$1("auth.logout.success",{vars:{provider:o}}))),i.debug("Logout successful",{provider:o});}catch(e$1){i.error("Logout failed",{provider:o,error:e$1 instanceof Error?e$1.message:String(e$1)}),console.error(e(a$1("auth.logout.error",{vars:{error:e$1 instanceof Error?e$1.message:String(e$1)}}))),process.exit(1);}}export{E as registerAuthCommand};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{a as bootstrap,b as bootstrapProgram}from'./chunk-V47M5AIQ.mjs';import'./chunk-Z76342HO.mjs';import'./chunk-7QUCWKBW.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-ZRQN5OEL.mjs';import'./chunk-VCWACWRA.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import'./chunk-5HMIZBWX.mjs';import'./chunk-LGCBI3XO.mjs';import'./chunk-2A5IMRBR.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-TGMBM3LH.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-SF52HNJQ.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-X6ISXWBN.mjs';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {b as b$1}from'./chunk-
|
|
1
|
+
import {b as b$1}from'./chunk-CIWBRN5R.mjs';import {a as a$1}from'./chunk-XPF2LJT2.mjs';import {Na,va}from'./chunk-Z76342HO.mjs';import'./chunk-7QUCWKBW.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-ZRQN5OEL.mjs';import'./chunk-VCWACWRA.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import {a as a$2}from'./chunk-5HMIZBWX.mjs';import'./chunk-LGCBI3XO.mjs';import {b as b$2}from'./chunk-2A5IMRBR.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-TGMBM3LH.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import'./chunk-SF52HNJQ.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-X6ISXWBN.mjs';import {Command}from'commander';import'path';import O from'fs/promises';import {parse}from'jsonc-parser';var y="easbot",h="EASBot - Multi-Agent Collaboration Ecosystem CLI Tool",P="build",x=["main","ops","explorer"];var b=a.create({service:"cli-config"});async function N(n){try{let o=await O.readFile(n,"utf-8");return parse(o)||{}}catch(o){if(o&&typeof o=="object"&&"code"in o){if(o.code==="ENOENT")return {};b.warn("Failed to read config file",{filePath:n,error:o.code});}else b.error("Failed to parse config file",{filePath:n,error:o instanceof Error?o.message:String(o)});return {}}}function T(...n){let o={};for(let t of n)for(let[e,i]of Object.entries(t))i!==void 0&&(typeof i=="object"&&!Array.isArray(i)&&i!==null?o[e]={...o[e],...i}:o[e]=i);return o}function k(){return {server:{port:3e3,hostname:"localhost"},agent:{},model:{},permission:{}}}async function w(n={}){let{cwd:o=process.cwd(),customConfigPath:t}=n,e=k();if(n.sdk)try{let{data:i}=await n.sdk.config.get({});i&&(e=i);}catch{}if(t){let i=await N(t);Object.keys(i).length>0&&(e=T(e,i));}return e.directory=o,e}async function A(n={}){let o=n.cwd||process.cwd(),t=n.root||Na.worktree,e=va({directory:o}),i=await w({cwd:o,root:t,sdk:e,customConfigPath:n.customConfigPath});return {programVersion:b$2.getVersion(),channelOptions:["local","web","api"],agentOptions:`${i.default_agent||P}|${x.join("|")}`,config:i,sdk:e}}var j=[{commands:[{name:"tui",description:"\u542F\u52A8 TUI \u754C\u9762",hasSubcommands:false}],register:async({program:n,ctx:o})=>{(await import('./tui-ITRCFGRG.mjs')).registerTuiCommand(n,o);}},{commands:[{name:"run",description:"\u8FD0\u884C\u5355\u6B21\u5BF9\u8BDD",hasSubcommands:false}],register:async({program:n,ctx:o})=>{(await import('./run-7XQNMJD2.mjs')).registerRunCommand(n,o);}},{commands:[{name:"generate",description:"\u751F\u6210 OpenAPI \u89C4\u8303",hasSubcommands:false}],register:async({program:n,ctx:o})=>{(await import('./generate-RLRBTIAB.mjs')).registerGenerateCommand(n,o);}},{commands:[{name:"agent",description:"Agent \u7BA1\u7406\u547D\u4EE4",hasSubcommands:true}],register:async({program:n,ctx:o})=>{(await import('./agent-ZYCLULYQ.mjs')).registerAgentCommands(n,o);}},{commands:[{name:"session",description:"\u4F1A\u8BDD\u7BA1\u7406\u547D\u4EE4",hasSubcommands:true}],register:async({program:n,ctx:o})=>{let{registerSessionCommands:t}=await import('./session-NRMPDP2T.mjs');t(n,o);}},{commands:[{name:"mcp",description:"MCP \u670D\u52A1\u5668\u7BA1\u7406",hasSubcommands:true}],register:async({program:n,ctx:o})=>{(await import('./mcp-2CRPI57O.mjs')).registerMcpCommands(n,o);}},{commands:[{name:"acp",description:"ACP Agent \u901A\u4FE1\u9002\u914D\u5668\u547D\u4EE4",hasSubcommands:true}],register:async({program:n,ctx:o})=>{(await import('./acp-EMYJGRAW.mjs')).registerAcpCommand(n,o);}},{commands:[{name:"debug",description:"\u8C03\u8BD5\u548C\u8BCA\u65AD\u5DE5\u5177",hasSubcommands:true}],register:async({program:n,ctx:o})=>{(await import('./debug-IDSUSGE2.mjs')).registerDebugCommands(n,o);}},{commands:[{name:"gateway",description:"Gateway \u670D\u52A1\u7BA1\u7406\u547D\u4EE4",hasSubcommands:true}],register:async({program:n,ctx:o})=>{(await import('./gateway-TD6PI5QI.mjs')).registerGatewayCommand(n,o);}},{commands:[{name:"auth",description:"Provider \u51ED\u636E\u7BA1\u7406",hasSubcommands:true}],register:async({program:n,ctx:o})=>{(await import('./auth-4K3ZL6IZ.mjs')).registerAuthCommand(n,o);}},{commands:[{name:"export",description:"\u5BFC\u51FA\u4F1A\u8BDD\u6570\u636E",hasSubcommands:false}],register:async({program:n,ctx:o})=>{(await import('./export-CLUTYBVZ.mjs')).registerExportCommand(n,o);}},{commands:[{name:"github",description:"GitHub Agent \u7BA1\u7406",hasSubcommands:true}],register:async({program:n,ctx:o})=>{(await import('./github-VD3MTG4A.mjs')).registerGithubCommand(n,o);}},{commands:[{name:"import",description:"\u5BFC\u5165\u4F1A\u8BDD\u6570\u636E",hasSubcommands:false}],register:async({program:n,ctx:o})=>{(await import('./import-PWETHHEM.mjs')).registerImportCommand(n,o);}},{commands:[{name:"pr",description:"PR \u68C0\u51FA\u548C\u4F1A\u8BDD\u5BFC\u5165",hasSubcommands:false}],register:async({program:n,ctx:o})=>{(await import('./pr-536BX37K.mjs')).registerPrCommand(n,o);}},{commands:[{name:"stats",description:"Token \u4F7F\u7528\u91CF\u548C\u6210\u672C\u7EDF\u8BA1",hasSubcommands:false}],register:async({program:n,ctx:o})=>{(await import('./stats-FP5BZIOF.mjs')).registerStatsCommand(n,o);}},{commands:[{name:"update",description:"\u66F4\u65B0 Easbot CLI",hasSubcommands:false}],register:async({program:n,ctx:o})=>{(await import('./update-KBNWYZYQ.mjs')).registerUpdateCommand(n,o);}}];async function B(n,o,t=process.argv){for(let e of j)await e.register({program:n,ctx:o,argv:t});}async function v(n,o,t=process.argv){await B(n,o,t);}function L(n,o){n.name(a$2("program.name")).description(a$2("program.description")),n.option("--cwd <directory>",a$2("program.option.cwd"),process.cwd()),n.option("--config <path>",a$2("program.option.config")),n.option("--print-logs",a$2("program.option.print_logs")),n.option("--log-level <level>",a$2("program.option.log_level"),"INFO"),n.option("--debug",a$2("program.option.debug")),n.helpOption("-h, --help",a$2("program.help.option")),n.helpCommand("help [command]",a$2("program.help.command")),n.configureHelp({sortSubcommands:true,sortOptions:true,optionTerm:t=>t.flags,subcommandTerm:t=>t.name()}),n.configureOutput({writeOut:t=>{process.stdout.write(E(t));},writeErr:t=>{process.stderr.write(E(t));},outputError:(t,e)=>{e(t);}}),n.addHelpText("afterAll",({command:t})=>t!==n?"":`
|
|
2
2
|
${a$2("program.help.examples")}:
|
|
3
3
|
easbot # ${a$2("help.example.tui")}
|
|
4
4
|
easbot tui --continue # ${a$2("help.example.tui_continue")}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{a as Bus}from'./chunk-Z76342HO.mjs';import'./chunk-7QUCWKBW.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-ZRQN5OEL.mjs';import'./chunk-VCWACWRA.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import'./chunk-5HMIZBWX.mjs';import'./chunk-LGCBI3XO.mjs';import'./chunk-2A5IMRBR.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-TGMBM3LH.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-SF52HNJQ.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-X6ISXWBN.mjs';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {a as a$1}from'./chunk-CJTCCLW4.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import {a as a$2}from'./chunk-
|
|
1
|
+
import {a as a$1}from'./chunk-CJTCCLW4.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import {a as a$2}from'./chunk-SF52HNJQ.mjs';import D from'path';import {NamedError,$,Fetch,iife}from'@easbot/utils';import _ from'zod';function o(A){let T=process.env[A]?.toLowerCase();return T==="true"||T==="1"}function w(A,T){let B=process.env[A];if(B===void 0)return T;let m=Number(B);return Number.isNaN(m)?T:m}var i;(e=>{e.EASBOT_CONFIG=process.env.EASBOT_CONFIG,e.EASBOT_CONFIG_CONTENT=process.env.EASBOT_CONFIG_CONTENT,e.EASBOT_AUTO_SHARE=o("EASBOT_AUTO_SHARE"),e.EASBOT_DISABLE_AUTOUPDATE=o("EASBOT_DISABLE_AUTOUPDATE"),e.EASBOT_DISABLE_PRUNE=o("EASBOT_DISABLE_PRUNE"),e.EASBOT_DISABLE_TERMINAL_TITLE=o("EASBOT_DISABLE_TERMINAL_TITLE"),e.EASBOT_DISABLE_DEFAULT_PLUGINS=o("EASBOT_DISABLE_DEFAULT_PLUGINS"),e.EASBOT_DISABLE_LSP_DOWNLOAD=o("EASBOT_DISABLE_LSP_DOWNLOAD"),e.EASBOT_DISABLE_AUTOCOMPACT=o("EASBOT_DISABLE_AUTOCOMPACT"),e.EASBOT_DISABLE_MODELS_FETCH=o("EASBOT_DISABLE_MODELS_FETCH"),e.EASBOT_DISABLE_FILETIME_CHECK=o("EASBOT_DISABLE_FILETIME_CHECK"),e.EASBOT_ENABLE_EXPERIMENTAL_MODELS=o("EASBOT_ENABLE_EXPERIMENTAL_MODELS"),e.EASBOT_ENABLE_QUESTION_TOOL=o("EASBOT_ENABLE_QUESTION_TOOL"),e.EASBOT_DISABLE_EXTERNAL_SKILLS=o("EASBOT_DISABLE_EXTERNAL_SKILLS"),e.EASBOT_GIT_BASH_PATH=process.env.EASBOT_GIT_BASH_PATH,e.EASBOT_MODELS_URL=process.env.EASBOT_MODELS_URL,e.EASBOT_MODELS_PATH=process.env.EASBOT_MODELS_PATH,e.EASBOT_PERMISSION=process.env.EASBOT_PERMISSION,e.EASBOT_SERVER_USERNAME=process.env.EASBOT_SERVER_USERNAME,e.EASBOT_SERVER_PASSWORD=process.env.EASBOT_SERVER_PASSWORD,e.EASBOT_FAKE_VCS=process.env.EASBOT_FAKE_VCS,e.EASBOT_FILEWATCHER=o("EASBOT_FILEWATCHER"),e.EASBOT_ICON_DISCOVERY=o("EASBOT_ICON_DISCOVERY"),e.EASBOT_ENABLE_EXA=o("EASBOT_ENABLE_EXA"),e.EASBOT_BASH_DEFAULT_TIMEOUT_MS=O("EASBOT_BASH_DEFAULT_TIMEOUT_MS"),e.EASBOT_OUTPUT_TOKEN_MAX=O("EASBOT_OUTPUT_TOKEN_MAX"),e.EASBOT_OXFMT=o("EASBOT_OXFMT"),e.EASBOT_LSP_TY=o("EASBOT_LSP_TY"),e.EASBOT_LSP_TOOL=o("EASBOT_LSP_TOOL"),e.EASBOT_LSP_INIT_TIMEOUT=w("EASBOT_LSP_INIT_TIMEOUT",3e5),e.EASBOT_LSP_DIAGNOSTICS_TIMEOUT=w("EASBOT_LSP_DIAGNOSTICS_TIMEOUT",6e4),e.EASBOT_PLAN_MODE=o("EASBOT_PLAN_MODE"),e.EASBOT_MARKDOWN=o("EASBOT_MARKDOWN"),e.EASBOT_DISABLE_COMPACT=o("EASBOT_DISABLE_COMPACT"),e.EASBOT_DISABLE_AUTO_COMPACT=o("EASBOT_DISABLE_AUTO_COMPACT"),e.EASBOT_AUTOCOMPACT_PCT_OVERRIDE=O("EASBOT_AUTOCOMPACT_PCT_OVERRIDE"),e.EASBOT_AUTO_COMPACT_WINDOW=O("EASBOT_AUTO_COMPACT_WINDOW"),e.EASBOT_BLOCKING_LIMIT_OVERRIDE=O("EASBOT_BLOCKING_LIMIT_OVERRIDE"),e.EASBOT_MAX_CONTEXT_TOKENS=O("EASBOT_MAX_CONTEXT_TOKENS"),e.EASBOT_MAX_TOOL_USE_CONCURRENCY=O("EASBOT_MAX_TOOL_USE_CONCURRENCY");function O(y){let C=process.env[y];if(!C)return;let d=Number(C);return Number.isInteger(d)&&d>0?d:void 0}})(i||(i={}));Object.defineProperty(i,"EASBOT_DISABLE_PROJECT_CONFIG",{get(){return o("EASBOT_DISABLE_PROJECT_CONFIG")},enumerable:true,configurable:false});Object.defineProperty(i,"EASBOT_CONFIG_DIR",{get(){return process.env.EASBOT_CONFIG_DIR},enumerable:true,configurable:false});Object.defineProperty(i,"EASBOT_CLIENT",{get(){return process.env.EASBOT_CLIENT??"cli"},enumerable:true,configurable:false});var M;(S=>{let A=a.create({service:"installation"});S.Event={Updated:a$1.define("installation.updated",_.object({version:_.string()})),UpdateAvailable:a$1.define("installation.update-available",_.object({version:_.string()}))},S.Info=_.object({version:_.string(),latest:_.string()}).meta({ref:"InstallationInfo"});async function m(){return {version:I(),latest:await N()}}S.info=m;function P(){return a$2.isPreview()}S.isPreview=P;function R(){return a$2.isLocal()}S.isLocal=R;async function l(){if(process.execPath.includes(D.join(".easbot","bin"))||process.execPath.includes(D.join(".local","bin")))return "curl";let a=process.execPath.toLowerCase(),r=[{name:"npm",command:()=>$`npm list -g --depth=0`.throws(false).quiet().text()},{name:"yarn",command:()=>$`yarn global list`.throws(false).quiet().text()},{name:"pnpm",command:()=>$`pnpm list -g --depth=0`.throws(false).quiet().text()},{name:"bun",command:()=>$`bun pm ls -g`.throws(false).quiet().text()},{name:"brew",command:()=>$`brew list --formula easbot`.throws(false).quiet().text()},{name:"scoop",command:()=>$`scoop list easbot`.throws(false).quiet().text()},{name:"choco",command:()=>$`choco list --limit-output easbot`.throws(false).quiet().text()}];r.sort((t,s)=>{let E=a.includes(t.name),c=a.includes(s.name);return E&&!c?-1:!E&&c?1:0});for(let t of r){let s=await t.command(),E=(t.name==="brew"||t.name==="choco"||t.name==="scoop","easbot");if(s.includes(E))return t.name}return "unknown"}S.method=l,S.UpgradeFailedError=NamedError.create("UpgradeFailedError",_.object({stderr:_.string()}));async function f(){return (await $`brew list --formula anomalyco/tap/easbot`.throws(false).quiet().text()).includes("easbot")?"anomalyco/tap/easbot":((await $`brew list --formula easbot`.throws(false).quiet().text()).includes("easbot"),"easbot")}async function U(a,r){let t;switch(a){case "curl":t=$`curl -fsSL https://easbot.cn/install | bash`.env({...process.env,VERSION:r});break;case "npm":t=$`npm install -g easbot@${r}`;break;case "pnpm":t=$`pnpm install -g easbot@${r}`;break;case "bun":t=$`bun install -g easbot@${r}`;break;case "brew":{let E=await f();if(E.includes("/")){t=$`brew tap anomalyco/tap && cd "$(brew --repo anomalyco/tap)" && git pull --ff-only && brew upgrade ${E}`.env({HOMEBREW_NO_AUTO_UPDATE:"1",...process.env});break}t=$`brew upgrade ${E}`.env({HOMEBREW_NO_AUTO_UPDATE:"1",...process.env});break}case "choco":t=$`echo Y | choco upgrade easbot --version=${r}`;break;case "scoop":t=$`scoop install easbot@${r}`;break;default:throw new Error(`Unknown method: ${a}`)}let s=await t.quiet().throws(false);if(s.exitCode!==0){let E=a==="choco"?"not running from an elevated command shell":s.stderr.toString("utf8");throw new S.UpgradeFailedError({stderr:E})}A.info("upgraded",{method:a,target:r,stdout:s.stdout.toString(),stderr:s.stderr.toString()}),await $`${process.execPath} --version`.nothrow().quiet().text();}S.upgrade=U;function I(){return a$2.getVersion()}S.getVersion=I;function L(){return a$2.getChannel()}S.getChannel=L;function v(){return `easbot/${L()}/${I()}/${i.EASBOT_CLIENT}`}S.getUserAgent=v;async function N(a){let r=a||await l();if(r==="brew"){let t=await f();if(t.includes("/")){let s=await $`brew info --json=v2 ${t}`.quiet().text(),c=JSON.parse(s).formulae?.[0]?.versions?.stable;if(!c)throw new Error(`Could not detect version for tap formula: ${t}`);return c}return Fetch.get("https://formulae.brew.sh/api/formula/easbot.json").then(s=>{if(!s.ok)throw new Error(s.statusText);return s.data?.versions?.stable??"unknown"})}if(r==="npm"||r==="bun"||r==="pnpm"){let t=await iife(async()=>{let c=(await $`npm config get registry`.quiet().nothrow().text()).trim()||"https://registry.npmjs.org";return c.endsWith("/")?c.slice(0,-1):c}),s=L();return Fetch.get(`${t}/easbot/${s}`).then(E=>{if(!E.ok)throw new Error(E.statusText);return E.data?.version??"unknown"})}return r==="choco"?Fetch.get("https://community.chocolatey.org/api/v2/Packages?$filter=Id%20eq%20%27easbot%27%20and%20IsLatestVersion&$select=Version",{headers:{Accept:"application/json;odata=verbose"}}).then(t=>{if(!t.ok)throw new Error(t.statusText);return t.data?.d?.results?.[0]?.Version??"unknown"}):r==="scoop"?Fetch.get("https://raw.githubusercontent.com/ScoopInstaller/Main/master/bucket/easbot.json",{headers:{Accept:"application/json"}}).then(t=>{if(!t.ok)throw new Error(t.statusText);return t.data?.version??"unknown"}):Fetch.get("https://api.github.com/repos/houjallen/easbot/releases/latest").then(t=>{if(!t.ok)throw new Error(t.statusText);return (t.data?.tag_name??"unknown").replace(/^v/,"")})}S.latest=N;})(M||(M={}));
|
|
2
2
|
export{i as a,M as b};
|
|
@@ -3,7 +3,7 @@ var f={languages:[{value:"zh-CN",name:"\u7B80\u4F53\u4E2D\u6587",example:"\u4F60
|
|
|
3
3
|
\u539F\u59CB\u9519\u8BEF:`,"error.unknown":`
|
|
4
4
|
\u672A\u77E5\u9519\u8BEF:`,"error.stack":`
|
|
5
5
|
\u5806\u6808\u8DDF\u8E2A:`,"error.code":`
|
|
6
|
-
\u9519\u8BEF [{{code}}]: {{message}}`,"tui.error.global.uncaughtException":"\u26A0\uFE0F \u672A\u6355\u83B7\u7684\u5F02\u5E38: {{error}}","tui.error.global.unhandledRejection":"\u26A0\uFE0F \u672A\u5904\u7406\u7684 Promise \u62D2\u7EDD: {{error}}","tui.shell.executing":"\u6B63\u5728\u6267\u884C Shell \u547D\u4EE4...","tui.shell.success":"Shell \u547D\u4EE4\u6267\u884C\u6210\u529F","tui.shell.error":"Shell \u547D\u4EE4\u6267\u884C\u5931\u8D25: {{error}}","tui.shell.empty":"Shell \u547D\u4EE4\u4E3A\u7A7A","tui.shell.prompt":"$ ","tui.shell.confirm.title":"\u662F\u5426\u5141\u8BB8\u5728\u6B64\u4F1A\u8BDD\u4E2D\u6267\u884C\u672C\u5730 shell \u547D\u4EE4\uFF1F","tui.shell.confirm.warning":"\u8FD9\u5C06\u5728\u60A8\u7684\u673A\u5668\u4E0A\u8FD0\u884C\u547D\u4EE4\uFF08\u800C\u975E\u7F51\u5173\uFF09\uFF0C\u53EF\u80FD\u4F1A\u5220\u9664\u6587\u4EF6\u6216\u6CC4\u9732\u673A\u5BC6\u3002","tui.shell.confirm.instruction":"\u9009\u62E9 \u662F/\u5426\uFF08\u65B9\u5411\u952E + Enter\uFF09\uFF0CEsc \u53D6\u6D88\u3002","tui.shell.confirm.yes":"\u662F","tui.shell.confirm.no":"\u5426","tui.shell.enabled":"\u672C\u5730 shell: \u5DF2\u4E3A\u6B64\u4F1A\u8BDD\u542F\u7528","tui.shell.disabled":"\u672C\u5730 shell: \u672A\u542F\u7528","tui.shell.cancelled":"\u672C\u5730 shell: \u5DF2\u53D6\u6D88","tui.shell.not_enabled":"\u672C\u5730 shell: \u672A\u4E3A\u6B64\u4F1A\u8BDD\u542F\u7528","tui.shell.command":"[\u672C\u5730] $ {{command}}","tui.shell.output":"[\u672C\u5730] {{output}}","tui.shell.exit":"[\u672C\u5730] \u9000\u51FA {{code}}{{signal}}","tui.shell.exit_signal":" (\u4FE1\u53F7 {{signal}})","tui.shell.permission.on":"\u672C\u5730 shell: \u5DF2\u542F\u7528","tui.shell.permission.off":"\u672C\u5730 shell: \u5DF2\u7981\u7528\u3002\u4F7F\u7528 /settings \u4FEE\u6539\u6743\u9650\u8BBE\u7F6E","tui.shell.permission.ask":"\u672C\u5730 shell: \u9700\u8981\u6388\u6743\u3002\u8F93\u5165 y \u542F\u7528\uFF0Cn \u7981\u7528","tui.shell.permission.prompt":"Shell \u6743\u9650 (y/n)> ","tui.shell.permission.invalid":"\u65E0\u6548\u8F93\u5165\u3002\u8BF7\u8F93\u5165 y \u6216 n","tui.shell.permission.updated":"\u672C\u5730 shell \u6743\u9650\u5DF2\u66F4\u65B0: {{permission}}","tui.handler.context_mode.set":"\u4E0A\u4E0B\u6587\u6A21\u5F0F\u5DF2\u66F4\u65B0: {{mode}}","tui.help.title":"Slash \u547D\u4EE4","tui.help.section.basic":"\u57FA\u7840\u547D\u4EE4","tui.help.command.help":"/help - \u663E\u793A\u6B64\u5E2E\u52A9","tui.help.command.status":"/status - \u663E\u793A\u7CFB\u7EDF\u72B6\u6001","tui.help.command.command":"/command - \u5217\u51FA\u6240\u6709\u53EF\u7528\u547D\u4EE4","tui.help.section.agent":"Agent \u7BA1\u7406","tui.help.command.agent":"/agent [id] - \u5207\u6362\u5230\u6307\u5B9A Agent \u6216\u6253\u5F00\u9009\u62E9\u5668","tui.help.section.session":"\u4F1A\u8BDD\u7BA1\u7406","tui.help.command.session":"/session [key] - \u5207\u6362\u5230\u6307\u5B9A\u4F1A\u8BDD\u6216\u6253\u5F00\u9009\u62E9\u5668","tui.help.command.new":"/new - \u521B\u5EFA\u5168\u65B0\u7A7A\u4F1A\u8BDD\uFF08\u4FDD\u7559\u504F\u597D\uFF09","tui.help.command.fork":"/fork - Fork \u5F53\u524D\u4F1A\u8BDD\uFF08\u590D\u5236\u5386\u53F2\uFF09","tui.help.command.reset":"/reset - \u91CD\u7F6E\u5F53\u524D\u4F1A\u8BDD","tui.help.section.model":"\u6A21\u578B\u7BA1\u7406","tui.help.command.model":"/model [provider/model] - \u8BBE\u7F6E\u6A21\u578B\u6216\u6253\u5F00\u9009\u62E9\u5668","tui.help.section.settings":"\u8BBE\u7F6E","tui.help.command.settings":"/settings - \u6253\u5F00\u8BBE\u7F6E\u9762\u677F","tui.help.command.verbose":"/verbose <on|off> - \u8BBE\u7F6E\u8BE6\u7EC6\u8F93\u51FA","tui.help.command.thinking":"/thinking <level> - \u8BBE\u7F6E\u601D\u8003\u6A21\u5F0F","tui.help.section.operations":"\u64CD\u4F5C","tui.help.command.abort":"/abort - \u4E2D\u6B62\u5F53\u524D\u8FD0\u884C","tui.help.command.clear":"/clear - \u6E05\u7A7A\u804A\u5929\u5386\u53F2","tui.help.command.compact":"/compact - \u538B\u7F29\u4E0A\u4E0B\u6587\uFF08\u51CF\u5C11 token \u4F7F\u7528\uFF09","tui.help.section.skill":"Skill \u548C MCP \u7BA1\u7406","tui.help.command.skill":"/skill [name] - \u52A0\u8F7D\u6307\u5B9A Skill \u6216\u6253\u5F00\u9009\u62E9\u5668","tui.help.command.mcp":"/mcp - \u663E\u793A MCP prompts \u5E76\u9009\u62E9\u6267\u884C","tui.help.section.exit":"\u9000\u51FA","tui.help.command.exit":"/exit (\u6216 /quit, /q) - \u9000\u51FA TUI","tui.help.section.local":"\u672C\u5730\u547D\u4EE4","tui.help.command.local":"!<command> - \u6267\u884C\u672C\u5730 shell \u547D\u4EE4\uFF08\u9700\u8981\u786E\u8BA4\uFF09","tui.help.section.shortcuts":"\u5FEB\u6377\u952E","tui.help.shortcut.ctrl_c":"Ctrl+C - \u6E05\u7A7A\u8F93\u5165\u6216\u9000\u51FA","tui.help.shortcut.ctrl_d":"Ctrl+D - \u9000\u51FA\uFF08\u7F16\u8F91\u5668\u4E3A\u7A7A\u65F6\uFF09","tui.help.shortcut.ctrl_l":"Ctrl+L - \u6253\u5F00\u6A21\u578B\u9009\u62E9\u5668","tui.help.shortcut.ctrl_p":"Ctrl+P - \u6253\u5F00\u4F1A\u8BDD\u9009\u62E9\u5668","tui.help.shortcut.ctrl_g":"Ctrl+G - \u6253\u5F00 Agent \u9009\u62E9\u5668","tui.help.shortcut.esc":"Esc - \u53D6\u6D88\u5F53\u524D\u64CD\u4F5C","tui.command.help.description":"\u663E\u793A\u547D\u4EE4\u5E2E\u52A9","tui.command.status.description":"\u663E\u793A\u7CFB\u7EDF\u72B6\u6001","tui.command.command.description":"\u5217\u51FA\u6240\u6709\u53EF\u7528\u547D\u4EE4","tui.command.commands.description":"\u663E\u793A\u5E2E\u52A9\u6587\u672C\uFF08\u5DF2\u5E9F\u5F03\uFF0C\u4F7F\u7528 /command\uFF09","tui.command.agent.description":"\u5207\u6362 Agent \u6216\u6253\u5F00\u9009\u62E9\u5668","tui.command.session.description":"\u5207\u6362\u4F1A\u8BDD\u6216\u6253\u5F00\u9009\u62E9\u5668","tui.command.new.description":"\u521B\u5EFA\u5168\u65B0\u7A7A\u4F1A\u8BDD\uFF08\u4FDD\u7559\u5F53\u524D\u504F\u597D\u8BBE\u7F6E\uFF09","tui.command.fork.description":"Fork \u5F53\u524D\u4F1A\u8BDD\uFF08\u590D\u5236\u5386\u53F2\u6D88\u606F\u5230\u65B0\u4F1A\u8BDD\uFF09","tui.command.reset.description":"\u91CD\u7F6E\u5F53\u524D\u4F1A\u8BDD","tui.command.model.description":"\u8BBE\u7F6E\u6A21\u578B\u6216\u6253\u5F00\u9009\u62E9\u5668","tui.command.settings.description":"\u6253\u5F00\u8BBE\u7F6E\u9762\u677F","tui.command.verbose.description":"\u8BBE\u7F6E\u8BE6\u7EC6\u8F93\u51FA (on/off)","tui.command.thinking.description":"\u8BBE\u7F6E\u601D\u8003\u6A21\u5F0F","tui.command.abort.description":"\u4E2D\u6B62\u5F53\u524D\u8FD0\u884C","tui.command.clear.description":"\u6E05\u7A7A\u804A\u5929\u5386\u53F2","tui.command.compact.description":"\u538B\u7F29\u4E0A\u4E0B\u6587\uFF08\u51CF\u5C11 token \u4F7F\u7528\uFF09","tui.command.skill.description":"\u6267\u884C Skill \u6216\u6253\u5F00\u9009\u62E9\u5668","tui.command.mcp.description":"\u6267\u884C MCP prompt \u6216\u6253\u5F00\u9009\u62E9\u5668","tui.command.exit.description":"\u9000\u51FA TUI (\u522B\u540D: quit, q)","tui.chatlog.user_prefix":"\u4F60","tui.chatlog.assistant_prefix":"\u52A9\u624B","tui.chatlog.system_prefix":"\u7CFB\u7EDF","tui.selector.model.title":"\u9009\u62E9\u6A21\u578B","tui.selector.model.placeholder":"\u641C\u7D22\u6A21\u578B...","tui.selector.session.title":"\u9009\u62E9\u4F1A\u8BDD","tui.selector.session.placeholder":"\u641C\u7D22\u4F1A\u8BDD...","tui.selector.agent.title":"\u9009\u62E9 Agent","tui.selector.agent.placeholder":"\u641C\u7D22 Agent...","tui.selector.skill.title":"\u9009\u62E9 Skill","tui.selector.skill.placeholder":"\u641C\u7D22 Skill...","tui.session.loading_agents":"\u52A0\u8F7D Agent \u5217\u8868...","tui.session.agents_loaded":"Agent \u5217\u8868\u52A0\u8F7D\u5B8C\u6210","tui.session.agents_failed":"\u2717 \u5237\u65B0 Agent \u5217\u8868\u5931\u8D25: {{error}}","tui.session.loading_info":"\u52A0\u8F7D\u4F1A\u8BDD\u4FE1\u606F...","tui.session.info_loaded":"\u4F1A\u8BDD\u4FE1\u606F\u52A0\u8F7D\u5B8C\u6210","tui.session.info_failed":"\u2717 \u5237\u65B0\u4F1A\u8BDD\u4FE1\u606F\u5931\u8D25: {{error}}","tui.session.loading_history":"\u52A0\u8F7D\u5386\u53F2\u6D88\u606F...","tui.session.history_loaded":"\u5386\u53F2\u6D88\u606F\u52A0\u8F7D\u5B8C\u6210","tui.session.history_failed":"\u2717 \u52A0\u8F7D\u5386\u53F2\u6D88\u606F\u5931\u8D25: {{error}}","tui.session.switched":"\u2713 \u5DF2\u5207\u6362\u5230\u4F1A\u8BDD: {{sessionId}}","tui.session.switch_failed":"\u2717 \u5207\u6362\u4F1A\u8BDD\u5931\u8D25: {{error}}","tui.session.aborting":"\u4E2D\u6B62\u8FD0\u884C...","tui.session.aborted":"\u2713 \u5DF2\u4E2D\u6B62\u5F53\u524D\u8FD0\u884C","tui.session.abort_failed":"\u2717 \u4E2D\u6B62\u8FD0\u884C\u5931\u8D25: {{error}}","tui.status.label":"\u72B6\u6001:","tui.status.idle":"\u7A7A\u95F2","tui.status.ready":"\u5C31\u7EEA","tui.status.error":"\u9519\u8BEF","tui.status.thinking":"\u601D\u8003\u4E2D...","tui.status.executing_tool":"\u6267\u884C\u5DE5\u5177: {{tool}}","tui.status.tool_completed":"\u5DE5\u5177\u6267\u884C\u5B8C\u6210","tui.status.tool_failed":"\u5DE5\u5177\u6267\u884C\u5931\u8D25","tui.status.receiving":"\u63A5\u6536\u6D88\u606F...","tui.status.running":"\u8FD0\u884C\u4E2D...","tui.status.waiting":"\u7B49\u5F85\u4E2D...","tui.status.executing_step":"\u6267\u884C\u6B65\u9AA4...","tui.status.step_completed":"\u6B65\u9AA4\u5B8C\u6210","tui.status.waiting_permission":"\u7B49\u5F85\u6743\u9650\u786E\u8BA4...","tui.status.waiting_answer":"\u7B49\u5F85\u56DE\u7B54...","tui.status.sending":"\u53D1\u9001\u4E2D...","tui.status.connection.local":"\u672C\u5730\u6A21\u5F0F","tui.status.connection.gateway_connected":"\u7F51\u5173\u5DF2\u8FDE\u63A5","tui.status.connection.gateway_disconnected":"\u7F51\u5173\u672A\u8FDE\u63A5","tui.hint.input_cleared":"\u5DF2\u6E05\u7A7A\u8F93\u5165\uFF0C\u518D\u6B21\u6309 Ctrl+C \u9000\u51FA","tui.hint.press_ctrlc_exit":"\u518D\u6B21\u6309 Ctrl+C \u9000\u51FA","tui.hint.show_thinking_on":"\u2713 \u5DF2\u5F00\u542F\u663E\u793A Thinking","tui.hint.show_thinking_off":"\u2713 \u5DF2\u5173\u95ED\u663E\u793A Thinking","tui.hint.tools_expanded":"\u5DE5\u5177\u8F93\u51FA\u5DF2\u5C55\u5F00","tui.hint.tools_collapsed":"\u5DE5\u5177\u8F93\u51FA\u5DF2\u6298\u53E0","tui.keyhints.model":"\u6A21\u578B","tui.keyhints.agent":"Agent","tui.keyhints.session":"\u4F1A\u8BDD","tui.keyhints.thinking":"\u601D\u8003","tui.keyhints.tools":"\u5DE5\u5177","tui.time.just_now":"\u521A\u521A","tui.time.minutes_ago":"{{minutes}} \u5206\u949F\u524D","tui.time.hours_ago":"{{hours}} \u5C0F\u65F6\u524D","tui.time.days_ago":"{{days}} \u5929\u524D","tui.system.welcome":"\u6B22\u8FCE\u4F7F\u7528 EASBot TUI\uFF01","tui.system.help_hint":"\u8F93\u5165 /help \u67E5\u770B\u53EF\u7528\u547D\u4EE4","tui.system.tool_executing":"\u2699 \u6267\u884C\u5DE5\u5177: {{tool}}","tui.system.tool_completed":"\u2713 \u5DE5\u5177\u5B8C\u6210: {{tool}}","tui.system.tool_failed":"\u2717 \u5DE5\u5177\u5931\u8D25: {{tool}}","tui.system.thinking":"\u{1F4AD} \u601D\u8003: {{text}}","tui.system.agent_updated":"Agent \u5DF2\u66F4\u65B0: {{agentId}}","tui.system.error":"\u2717 \u9519\u8BEF: {{message}}","tui.system.no_session":"\u6CA1\u6709\u6D3B\u52A8\u4F1A\u8BDD","tui.system.thinking_mode":"\u601D\u8003\u6A21\u5F0F: {{mode}}","tui.system.tools_output":"\u5DE5\u5177\u8F93\u51FA: {{mode}}","tui.system.on":"\u5F00\u542F","tui.system.off":"\u5173\u95ED","tui.system.expanded":"\u5C55\u5F00","tui.system.collapsed":"\u6298\u53E0","tui.selector.model.error":"\u6253\u5F00\u6A21\u578B\u9009\u62E9\u5668\u5931\u8D25: {{error}}","tui.selector.session.error":"\u6253\u5F00\u4F1A\u8BDD\u9009\u62E9\u5668\u5931\u8D25: {{error}}","tui.selector.agent.error":"\u6253\u5F00 Agent \u9009\u62E9\u5668\u5931\u8D25: {{error}}","tui.selector.skill.error":"\u6253\u5F00 Skill \u9009\u62E9\u5668\u5931\u8D25: {{error}}","tui.state.session.created":"\u4F1A\u8BDD\u5DF2\u521B\u5EFA: {{title}}","tui.state.session.deleted":"\u4F1A\u8BDD\u5DF2\u5220\u9664: {{title}}","tui.state.healed":"\u2713 TUI \u72B6\u6001\u5DF2\u81EA\u52A8\u4FEE\u590D","tui.state.heal_failed":"\u2717 TUI \u72B6\u6001\u81EA\u52A8\u4FEE\u590D\u5931\u8D25","tui.state.model_synced":"\u2713 \u6A21\u578B\u504F\u597D\u5DF2\u540C\u6B65\u5230\u540E\u53F0: {{model}}","tui.state.preferences_synced":"\u2713 \u504F\u597D\u8BBE\u7F6E\u5DF2\u540C\u6B65\u5230\u540E\u53F0: {{updates}}","tui.state.preferences_validated":"\u2713 \u672C\u5730\u504F\u597D\u8BBE\u7F6E\u5DF2\u9A8C\u8BC1: {{items}}","tui.state.model_not_found":"\u2717 \u6A21\u578B\u4E0D\u5B58\u5728\uFF0C\u8DF3\u8FC7\u540C\u6B65: {{model}}","tui.state.agent_not_found":"\u2717 Agent \u4E0D\u5B58\u5728\uFF0C\u8DF3\u8FC7\u540C\u6B65: {{agent}}","permission.request":"\u6743\u9650\u8BF7\u6C42","permission.target":"\u76EE\u6807","permission.select_action":"\u9009\u62E9\u64CD\u4F5C","permission.allow_once":"\u5141\u8BB8\u4E00\u6B21 (once)","permission.allow_always":"\u603B\u662F\u5141\u8BB8 (always)","permission.reject":"\u62D2\u7EDD (reject)","permission.input_prompt":"\u8BF7\u8F93\u5165 (y/a/n)","permission.allowed":"\u5DF2\u5141\u8BB8\u4E00\u6B21","permission.always_allowed":"\u5DF2\u603B\u662F\u5141\u8BB8","permission.rejected":"\u5DF2\u62D2\u7EDD","question.agent_asking":"Agent \u63D0\u95EE","question.question":"\u95EE\u9898","question.title":"\u6807\u9898","question.options":"\u53EF\u9009\u9879","question.custom_input":"\u81EA\u5B9A\u4E49\u8F93\u5165","question.answered":"\u5DF2\u56DE\u7B54","tui.question.header":"\u95EE\u9898 {{current}}/{{total}}","tui.question.options":"\u53EF\u9009\u9879:","tui.question.custom":"\u81EA\u5B9A\u4E49\u8F93\u5165","tui.question.prompt":"\u95EE\u9898 {{current}}/{{total}}> ","tui.question.invalid_input":"\u65E0\u6548\u8F93\u5165\uFF0C\u8BF7\u91CD\u65B0\u8F93\u5165","tui.question.completed":"\u2713 \u5DF2\u5B8C\u6210 {{count}} \u4E2A\u95EE\u9898\u7684\u56DE\u7B54","tui.question.error":"\u2717 \u95EE\u7B54\u8BF7\u6C42\u5931\u8D25","tui.question.cancelled":"\u95EE\u7B54\u5DF2\u53D6\u6D88","tui.question.hint.custom_enabled":"\u63D0\u793A: \u8F93\u5165\u9009\u9879\u7F16\u53F7\u6216\u8F93\u5165\u81EA\u5B9A\u4E49\u6587\u672C","tui.question.hint.custom_enabled_multiple":"\u63D0\u793A: \u8F93\u5165\u9009\u9879\u7F16\u53F7\uFF08\u591A\u9009\u7528\u9017\u53F7\u5206\u9694\uFF0C\u5982 1,3\uFF09\u6216\u8F93\u5165\u81EA\u5B9A\u4E49\u6587\u672C","tui.question.hint.custom_disabled":"\u63D0\u793A: \u53EA\u80FD\u8F93\u5165\u6709\u6548\u7684\u9009\u9879\u7F16\u53F7","tui.question.hint.custom_disabled_multiple":"\u63D0\u793A: \u53EA\u80FD\u8F93\u5165\u6709\u6548\u7684\u9009\u9879\u7F16\u53F7\uFF08\u591A\u9009\u7528\u9017\u53F7\u5206\u9694\uFF0C\u5982 1,3\uFF09","tui.permission.request_header":"\u6743\u9650\u8BF7\u6C42","tui.permission.type":"\u7C7B\u578B: {{type}}","tui.permission.targets":"\u76EE\u6807: {{targets}}","tui.permission.options":"\u9009\u62E9\u64CD\u4F5C:","tui.permission.once":"\u5141\u8BB8\u4E00\u6B21","tui.permission.always":"\u603B\u662F\u5141\u8BB8","tui.permission.reject":"\u62D2\u7EDD","tui.permission.prompt":"\u6743\u9650\u786E\u8BA4 (y/a/n)> ","tui.permission.invalid_input":"\u65E0\u6548\u8F93\u5165\uFF0C\u8BF7\u8F93\u5165 y/a/n","tui.permission.replied":"\u2713 \u6743\u9650\u8BF7\u6C42\u5DF2\u56DE\u590D: {{reply}}","tui.permission.error":"\u2717 \u6743\u9650\u8BF7\u6C42\u56DE\u590D\u5931\u8D25","tui.permission.cancelled":"\u6743\u9650\u8BF7\u6C42\u5DF2\u53D6\u6D88","tui.at_mention.file_not_found":"\u2717 \u627E\u4E0D\u5230\u6587\u4EF6: {{paths}}","debug.command.description":"\u8C03\u8BD5\u548C\u8BCA\u65AD\u5DE5\u5177","debug.config.command.describe":"\u663E\u793A\u89E3\u6790\u540E\u7684\u914D\u7F6E","debug.config.error.load_failed":"\u52A0\u8F7D\u914D\u7F6E\u5931\u8D25: {{error}}","debug.agent.command.describe":"\u663E\u793A Agent \u914D\u7F6E\u8BE6\u60C5","debug.agent.option.tool.description":"\u8981\u6267\u884C\u7684\u5DE5\u5177 ID","debug.agent.option.params.description":"\u5DE5\u5177\u53C2\u6570\uFF0CJSON \u6216 JS \u5BF9\u8C61\u683C\u5F0F","debug.agent.error.not_found":"\u672A\u627E\u5230 Agent {{agentName}}\uFF0C\u8FD0\u884C '{{command}} agent list' \u67E5\u770B Agent \u5217\u8868","debug.agent.tool.error.not_found":"Agent {{agentName}} \u4E2D\u672A\u627E\u5230\u5DE5\u5177 {{toolID}}","debug.agent.tool.error.disabled":"\u5DE5\u5177 {{toolID}} \u5728 Agent {{agentName}} \u4E2D\u5DF2\u7981\u7528","debug.agent.tool.params.parse_error":"\u89E3\u6790 --params \u5931\u8D25: JSON \u9519\u8BEF: {{jsonError}}, Eval \u9519\u8BEF: {{evalError}}","debug.agent.tool.params.must_be_object":"\u5DE5\u5177\u53C2\u6570\u5FC5\u987B\u662F\u5BF9\u8C61","debug.file.command.describe":"\u6587\u4EF6\u7CFB\u7EDF\u8C03\u8BD5\u5DE5\u5177","debug.file.search.command.describe":"\u6309\u67E5\u8BE2\u6761\u4EF6\u641C\u7D22\u6587\u4EF6","debug.file.search.positional.query.description":"\u641C\u7D22\u67E5\u8BE2","debug.file.search.error":"\u6587\u4EF6\u641C\u7D22\u5931\u8D25: {{error}}","debug.file.read.command.describe":"\u4EE5 JSON \u683C\u5F0F\u8BFB\u53D6\u6587\u4EF6\u5185\u5BB9","debug.file.read.positional.path.description":"\u8981\u8BFB\u53D6\u7684\u6587\u4EF6\u8DEF\u5F84","debug.file.read.error":"\u6587\u4EF6\u8BFB\u53D6\u5931\u8D25: {{error}}","debug.file.status.command.describe":"\u663E\u793A\u6587\u4EF6\u72B6\u6001\u4FE1\u606F","debug.file.status.error":"\u83B7\u53D6\u6587\u4EF6\u72B6\u6001\u5931\u8D25: {{error}}","debug.file.list.command.describe":"\u5217\u51FA\u76EE\u5F55\u4E2D\u7684\u6587\u4EF6","debug.file.list.positional.path.description":"\u8981\u5217\u51FA\u7684\u76EE\u5F55\u8DEF\u5F84","debug.file.list.error":"\u6587\u4EF6\u5217\u8868\u83B7\u53D6\u5931\u8D25: {{error}}","debug.file.tree.command.describe":"\u663E\u793A\u76EE\u5F55\u6811","debug.file.tree.positional.dir.description":"\u8981\u663E\u793A\u6811\u7684\u76EE\u5F55","debug.file.tree.option.limit.description":"\u9650\u5236\u7ED3\u679C\u6570\u91CF","debug.file.tree.error":"\u76EE\u5F55\u6811\u663E\u793A\u5931\u8D25: {{error}}","debug.lsp.command.describe":"LSP \u8C03\u8BD5\u5DE5\u5177","debug.lsp.diagnostics.command.describe":"\u83B7\u53D6\u6587\u4EF6\u7684\u8BCA\u65AD\u4FE1\u606F","debug.lsp.diagnostics.positional.file.description":"\u6587\u4EF6\u8DEF\u5F84","debug.lsp.diagnostics.error":"\u83B7\u53D6\u8BCA\u65AD\u4FE1\u606F\u5931\u8D25: {{error}}","debug.lsp.symbols.command.describe":"\u641C\u7D22\u5DE5\u4F5C\u533A\u7B26\u53F7","debug.lsp.symbols.positional.query.description":"\u641C\u7D22\u67E5\u8BE2","debug.lsp.symbols.error":"\u641C\u7D22\u7B26\u53F7\u5931\u8D25: {{error}}","debug.lsp.document_symbols.command.describe":"\u83B7\u53D6\u6587\u6863\u4E2D\u7684\u7B26\u53F7","debug.lsp.document_symbols.positional.uri.description":"\u6587\u6863 URI","debug.lsp.document_symbols.error":"\u83B7\u53D6\u6587\u6863\u7B26\u53F7\u5931\u8D25: {{error}}","debug.ripgrep.command.describe":"Ripgrep \u8C03\u8BD5\u5DE5\u5177","debug.ripgrep.tree.command.describe":"\u4F7F\u7528 ripgrep \u663E\u793A\u6587\u4EF6\u6811","debug.ripgrep.tree.option.limit.description":"\u9650\u5236\u7ED3\u679C\u6570\u91CF","debug.ripgrep.tree.error":"\u6587\u4EF6\u6811\u663E\u793A\u5931\u8D25: {{error}}","debug.ripgrep.files.command.describe":"\u4F7F\u7528 ripgrep \u5217\u51FA\u6587\u4EF6","debug.ripgrep.files.option.query.description":"\u6309\u67E5\u8BE2\u8FC7\u6EE4\u6587\u4EF6","debug.ripgrep.files.option.glob.description":"\u5339\u914D\u6587\u4EF6\u7684 glob \u6A21\u5F0F","debug.ripgrep.files.option.limit.description":"\u9650\u5236\u7ED3\u679C\u6570\u91CF","debug.ripgrep.files.error":"\u6587\u4EF6\u5217\u8868\u83B7\u53D6\u5931\u8D25: {{error}}","debug.ripgrep.search.command.describe":"\u641C\u7D22\u6587\u4EF6\u5185\u5BB9","debug.ripgrep.search.positional.pattern.description":"\u641C\u7D22\u6A21\u5F0F","debug.ripgrep.search.option.glob.description":"\u6587\u4EF6 glob \u6A21\u5F0F","debug.ripgrep.search.option.limit.description":"\u9650\u5236\u7ED3\u679C\u6570\u91CF","debug.ripgrep.search.error":"\u641C\u7D22\u5931\u8D25: {{error}}","debug.scrap.command.describe":"\u5217\u51FA\u6240\u6709\u5DF2\u77E5\u9879\u76EE","debug.skill.command.describe":"\u5217\u51FA\u6240\u6709\u53EF\u7528\u6280\u80FD","debug.skill.error.list_failed":"\u83B7\u53D6\u6280\u80FD\u5217\u8868\u5931\u8D25: {{error}}","debug.snapshot.command.describe":"\u5FEB\u7167\u8C03\u8BD5\u5DE5\u5177","debug.snapshot.track.command.describe":"\u8DDF\u8E2A\u5F53\u524D\u5FEB\u7167\u72B6\u6001","debug.snapshot.track.error":"\u5FEB\u7167\u8DDF\u8E2A\u5931\u8D25: {{error}}","debug.snapshot.patch.command.describe":"\u663E\u793A\u5FEB\u7167\u54C8\u5E0C\u7684\u8865\u4E01","debug.snapshot.patch.positional.hash.description":"\u5FEB\u7167\u54C8\u5E0C","debug.snapshot.patch.error":"\u83B7\u53D6\u5FEB\u7167\u8865\u4E01\u5931\u8D25: {{error}}","debug.snapshot.diff.command.describe":"\u663E\u793A\u5FEB\u7167\u54C8\u5E0C\u7684\u5DEE\u5F02","debug.snapshot.diff.positional.hash.description":"\u5FEB\u7167\u54C8\u5E0C","debug.snapshot.diff.error":"\u83B7\u53D6\u5FEB\u7167\u5DEE\u5F02\u5931\u8D25: {{error}}","debug.paths.command.describe":"\u663E\u793A\u5168\u5C40\u8DEF\u5F84","debug.wait.command.describe":"\u65E0\u9650\u7B49\u5F85\uFF08\u7528\u4E8E\u8C03\u8BD5\uFF09","acp.server.started":"ACP \u670D\u52A1\u542F\u52A8\u6210\u529F","acp.directory.resolved":"\u5DE5\u4F5C\u76EE\u5F55\u5DF2\u89E3\u6790: {{cwd}}","acp.error.start_failed":"ACP \u670D\u52A1\u542F\u52A8\u5931\u8D25: {{error}}","acp.field.directory":"\u76EE\u5F55","acp.field.worktree":"\u5DE5\u4F5C\u533A","acp.field.channel":"\u901A\u9053","acp.field.host":"\u4E3B\u673A","acp.field.ws_url":"WS URL","acp.field.ws_path":"WS \u8DEF\u5F84","acp.field.base_url":"Base URL","acp.field.timeout":"\u8D85\u65F6","acp.field.batch_size":"\u6279\u5927\u5C0F","acp.field.batch_interval":"\u6279\u95F4\u9694","acp.field.heartbeat":"\u5FC3\u8DF3","acp.field.debug":"\u8C03\u8BD5","acp.field.mode":"\u6A21\u5F0F","acp.field.protocol":"\u534F\u8BAE","acp.websocket.config":"WebSocket \u914D\u7F6E","acp.mode.stdio":"STDIO (JSON-RPC over stdin/stdout)","acp.mode.local":"LOCAL (Standard ACP via AgentSideConnection)","export.command.description":"\u5BFC\u51FA session \u6570\u636E\u4E3A JSON \u683C\u5F0F","export.exporting":"\u6B63\u5728\u5BFC\u51FA session: {{sessionId}}","export.error.no_sessions":"\u6CA1\u6709\u627E\u5230 session","export.error.failed":"\u5BFC\u51FA\u5931\u8D25: {{error}}","import.command.description":"\u4ECE JSON \u6587\u4EF6\u6216 URL \u5BFC\u5165 session \u6570\u636E","import.fetching_url":"\u6B63\u5728\u4ECE URL \u83B7\u53D6\u6570\u636E: {{url}}","import.reading_file":"\u6B63\u5728\u8BFB\u53D6\u6587\u4EF6: {{file}}","import.error.fetch_failed":"\u83B7\u53D6\u6570\u636E\u5931\u8D25: {{status}}","import.error.file_not_found":"\u6587\u4EF6\u672A\u627E\u5230: {{file}}","import.error.invalid_format":"\u65E0\u6548\u7684\u6570\u636E\u683C\u5F0F","import.success":"Session \u5BFC\u5165\u6210\u529F: {{sessionId}}","import.error.failed":"\u5BFC\u5165\u5931\u8D25: {{error}}","stats.command.description":"\u663E\u793A token \u4F7F\u7528\u91CF\u548C\u6210\u672C\u7EDF\u8BA1","stats.option.days":"\u663E\u793A\u6700\u8FD1 N \u5929\u7684\u7EDF\u8BA1","stats.option.tools":"\u663E\u793A\u7684\u5DE5\u5177\u6570\u91CF","stats.option.models":"\u663E\u793A\u6A21\u578B\u7EDF\u8BA1","stats.loading":"\u6B63\u5728\u52A0\u8F7D\u7EDF\u8BA1\u6570\u636E...","stats.display_ready":"\u7EDF\u8BA1\u6570\u636E\u5DF2\u52A0\u8F7D","stats.overview":"\u6982\u89C8","stats.cost_tokens":"\u6210\u672C\u4E0E Token","stats.tool_usage":"\u5DE5\u5177\u4F7F\u7528\u7EDF\u8BA1","stats.metric.sessions":"Sessions","stats.metric.messages":"\u6D88\u606F","stats.metric.total_cost":"\u603B\u6210\u672C","stats.metric.input":"\u8F93\u5165 Token","stats.metric.output":"\u8F93\u51FA Token","stats.metric.cache_read":"\u7F13\u5B58\u8BFB\u53D6","stats.metric.cache_write":"\u7F13\u5B58\u5199\u5165","stats.table.header.metric":"\u6307\u6807","stats.table.header.value":"\u503C","stats.table.header.tool":"\u5DE5\u5177","stats.table.header.count":"\u6B21\u6570","stats.table.header.percent":"\u5360\u6BD4","stats.error.failed":"\u83B7\u53D6\u7EDF\u8BA1\u6570\u636E\u5931\u8D25: {{error}}","update.command.description":"\u66F4\u65B0 easbot \u5230\u6700\u65B0\u6216\u6307\u5B9A\u7248\u672C","update.option.method":"\u5B89\u88C5\u65B9\u5F0F (npm/pnpm/bun)","update.starting":"\u6B63\u5728\u66F4\u65B0 easbot","update.current_version":"\u5F53\u524D\u7248\u672C: {{version}}","update.target_version":"\u76EE\u6807\u7248\u672C: {{version}}","update.already_latest":"\u5DF2\u7ECF\u662F\u6700\u65B0\u7248\u672C {{version}}","update.downloading":"\u6B63\u5728\u4E0B\u8F7D\u65B0\u7248\u672C...","update.success":"\u66F4\u65B0\u6210\u529F! \u7248\u672C: {{version}}","update.failed":"\u66F4\u65B0\u5931\u8D25: {{error}}","update.error":"\u66F4\u65B0\u5931\u8D25: {{error}}","update.latest_fetch_failed":"\u83B7\u53D6\u6700\u65B0\u7248\u672C\u5931\u8D25","update.invalid_version":"\u65E0\u6548\u7684\u7248\u672C\u53F7: {{version}}","update.downgrade_warning":"\u8B66\u544A: \u6B63\u5728\u4ECE {{from}} \u964D\u7EA7\u5230 {{to}}","auth.command.description":"\u7BA1\u7406\u51ED\u636E","auth.command.list.description":"\u5217\u51FA\u5DF2\u914D\u7F6E\u7684 Provider","auth.command.login.description":"\u767B\u5F55 Provider","auth.command.logout.description":"\u767B\u51FA Provider","auth.option.key":"API Key","auth.list.title":"\u5DF2\u914D\u7F6E\u7684\u51ED\u636E","auth.list.empty":"\u6CA1\u6709\u5DF2\u914D\u7F6E\u7684\u51ED\u636E","auth.list.error":"\u83B7\u53D6\u51ED\u636E\u5217\u8868\u5931\u8D25: {{error}}","auth.table.header.provider":"Provider","auth.table.header.type":"\u7C7B\u578B","auth.table.header.hint":"\u5907\u6CE8","auth.login.key_required":"\u9700\u8981\u63D0\u4F9B API Key","auth.login.key_hint":"\u4F7F\u7528 --key <key> \u63D0\u4F9B\u60A8\u7684 API Key","auth.login.logging_in":"\u6B63\u5728\u767B\u5F55 {{provider}}","auth.login.success":"\u767B\u5F55\u6210\u529F: {{provider}}","gateway.command.description":"\u7BA1\u7406 Gateway \u670D\u52A1","gateway.command.start":"\u542F\u52A8 Gateway \u670D\u52A1","gateway.command.stop":"\u505C\u6B62 Gateway \u670D\u52A1","gateway.command.restart":"\u91CD\u542F Gateway \u670D\u52A1","gateway.command.status":"\u67E5\u770B Gateway \u72B6\u6001","gateway.command.config":"\u7BA1\u7406 Gateway \u914D\u7F6E","gateway.command.config_show":"\u663E\u793A Gateway \u914D\u7F6E","gateway.option.directory":"\u5DE5\u4F5C\u76EE\u5F55","gateway.option.port":"\u670D\u52A1\u7AEF\u53E3","gateway.option.hostname":"\u4E3B\u673A\u5730\u5740","gateway.option.tls":"\u542F\u7528 TLS","gateway.option.tls_cert":"TLS \u8BC1\u4E66\u8DEF\u5F84","gateway.option.tls_key":"TLS \u5BC6\u94A5\u8DEF\u5F84","gateway.option.debug":"\u542F\u7528\u8C03\u8BD5\u6A21\u5F0F","gateway.help.option":"\u663E\u793A Gateway \u547D\u4EE4\u5E2E\u52A9\u4FE1\u606F","gateway.directory.resolved":"\u5DE5\u4F5C\u76EE\u5F55: {{cwd}}","gateway.disabled":"Gateway \u670D\u52A1\u5DF2\u7981\u7528","gateway.stopped":"Gateway \u670D\u52A1\u5DF2\u505C\u6B62","gateway.restarting":"\u6B63\u5728\u91CD\u542F Gateway \u670D\u52A1...","gateway.restarted":"Gateway \u670D\u52A1\u5DF2\u91CD\u542F","gateway.shutdown.received":"\u6536\u5230 {{signal}} \u4FE1\u53F7\uFF0C\u6B63\u5728\u5173\u95ED...","gateway.shutdown.completed":"Gateway \u670D\u52A1\u5DF2\u5173\u95ED","gateway.status.heading":"Gateway \u670D\u52A1\u72B6\u6001","gateway.status.already_stopped":"Gateway \u670D\u52A1\u5DF2\u505C\u6B62","gateway.server.started":"Gateway \u670D\u52A1\u5DF2\u542F\u52A8","gateway.field.directory":"\u76EE\u5F55","gateway.field.status":"\u72B6\u6001","gateway.field.ws_url":"WebSocket URL","gateway.field.ws_path":"WebSocket \u8DEF\u5F84","gateway.field.port":"\u7AEF\u53E3","gateway.field.hostname":"\u4E3B\u673A","gateway.field.tls":"TLS","gateway.field.debug":"\u8C03\u8BD5\u6A21\u5F0F","gateway.field.error":"\u9519\u8BEF","gateway.config.heading":"Gateway \u914D\u7F6E","gateway.config.server":"\u670D\u52A1\u914D\u7F6E","gateway.config.channels":"Channel \u914D\u7F6E","gateway.config.connection_pool":"\u8FDE\u63A5\u6C60\u914D\u7F6E","gateway.config.agent_registry":"Agent Registry \u914D\u7F6E","gateway.config.no_channels":"\u672A\u914D\u7F6E\u4EFB\u4F55 Channel","gateway.config.not_found":"\u672A\u627E\u5230 Gateway \u914D\u7F6E","gateway.error.start_failed":"\u542F\u52A8 Gateway \u670D\u52A1\u5931\u8D25: {{error}}","gateway.error.stop_failed":"\u505C\u6B62 Gateway \u670D\u52A1\u5931\u8D25: {{error}}","gateway.error.restart_failed":"\u91CD\u542F Gateway \u670D\u52A1\u5931\u8D25: {{error}}","gateway.error.config_failed":"\u83B7\u53D6 Gateway \u914D\u7F6E\u5931\u8D25: {{error}}","gateway.help.examples":"\u793A\u4F8B:","gateway.help.example.default":"\u4F7F\u7528\u9ED8\u8BA4\u914D\u7F6E\u542F\u52A8","gateway.help.example.port":"\u6307\u5B9A\u7AEF\u53E3\u542F\u52A8","gateway.help.example.hostname":"\u6307\u5B9A\u4E3B\u673A\u5730\u5740\u542F\u52A8","gateway.help.example.stop":"\u505C\u6B62\u670D\u52A1","gateway.help.example.restart":"\u91CD\u542F\u670D\u52A1","gateway.help.example.config":"\u67E5\u770B\u914D\u7F6E","gateway.help.env":"\u73AF\u5883\u53D8\u91CF:","gateway.help.env.port":"\u670D\u52A1\u7AEF\u53E3","gateway.help.env.hostname":"\u4E3B\u673A\u5730\u5740","gateway.help.env.tls":"\u542F\u7528 TLS","gateway.help.subcommand.start.after":`
|
|
6
|
+
\u9519\u8BEF [{{code}}]: {{message}}`,"tui.error.global.uncaughtException":"\u26A0\uFE0F \u672A\u6355\u83B7\u7684\u5F02\u5E38: {{error}}","tui.error.global.unhandledRejection":"\u26A0\uFE0F \u672A\u5904\u7406\u7684 Promise \u62D2\u7EDD: {{error}}","tui.shell.executing":"\u6B63\u5728\u6267\u884C Shell \u547D\u4EE4...","tui.shell.success":"Shell \u547D\u4EE4\u6267\u884C\u6210\u529F","tui.shell.error":"Shell \u547D\u4EE4\u6267\u884C\u5931\u8D25: {{error}}","tui.shell.empty":"Shell \u547D\u4EE4\u4E3A\u7A7A","tui.shell.prompt":"$ ","tui.shell.confirm.title":"\u662F\u5426\u5141\u8BB8\u5728\u6B64\u4F1A\u8BDD\u4E2D\u6267\u884C\u672C\u5730 shell \u547D\u4EE4\uFF1F","tui.shell.confirm.warning":"\u8FD9\u5C06\u5728\u60A8\u7684\u673A\u5668\u4E0A\u8FD0\u884C\u547D\u4EE4\uFF08\u800C\u975E\u7F51\u5173\uFF09\uFF0C\u53EF\u80FD\u4F1A\u5220\u9664\u6587\u4EF6\u6216\u6CC4\u9732\u673A\u5BC6\u3002","tui.shell.confirm.instruction":"\u9009\u62E9 \u662F/\u5426\uFF08\u65B9\u5411\u952E + Enter\uFF09\uFF0CEsc \u53D6\u6D88\u3002","tui.shell.confirm.yes":"\u662F","tui.shell.confirm.no":"\u5426","tui.shell.enabled":"\u672C\u5730 shell: \u5DF2\u4E3A\u6B64\u4F1A\u8BDD\u542F\u7528","tui.shell.disabled":"\u672C\u5730 shell: \u672A\u542F\u7528","tui.shell.cancelled":"\u672C\u5730 shell: \u5DF2\u53D6\u6D88","tui.shell.not_enabled":"\u672C\u5730 shell: \u672A\u4E3A\u6B64\u4F1A\u8BDD\u542F\u7528","tui.shell.command":"[\u672C\u5730] $ {{command}}","tui.shell.output":"[\u672C\u5730] {{output}}","tui.shell.exit":"[\u672C\u5730] \u9000\u51FA {{code}}{{signal}}","tui.shell.exit_signal":" (\u4FE1\u53F7 {{signal}})","tui.shell.permission.on":"\u672C\u5730 shell: \u5DF2\u542F\u7528","tui.shell.permission.off":"\u672C\u5730 shell: \u5DF2\u7981\u7528\u3002\u4F7F\u7528 /settings \u4FEE\u6539\u6743\u9650\u8BBE\u7F6E","tui.shell.permission.ask":"\u672C\u5730 shell: \u9700\u8981\u6388\u6743\u3002\u8F93\u5165 y \u542F\u7528\uFF0Cn \u7981\u7528","tui.shell.permission.prompt":"Shell \u6743\u9650 (y/n)> ","tui.shell.permission.invalid":"\u65E0\u6548\u8F93\u5165\u3002\u8BF7\u8F93\u5165 y \u6216 n","tui.shell.permission.updated":"\u672C\u5730 shell \u6743\u9650\u5DF2\u66F4\u65B0: {{permission}}","tui.handler.context_mode.set":"\u4E0A\u4E0B\u6587\u6A21\u5F0F\u5DF2\u66F4\u65B0: {{mode}}","tui.help.title":"Slash \u547D\u4EE4","tui.help.section.basic":"\u57FA\u7840\u547D\u4EE4","tui.help.command.help":"/help - \u663E\u793A\u6B64\u5E2E\u52A9","tui.help.command.status":"/status - \u663E\u793A\u7CFB\u7EDF\u72B6\u6001","tui.help.command.command":"/command - \u5217\u51FA\u6240\u6709\u53EF\u7528\u547D\u4EE4","tui.help.section.agent":"Agent \u7BA1\u7406","tui.help.command.agent":"/agent [id] - \u5207\u6362\u5230\u6307\u5B9A Agent \u6216\u6253\u5F00\u9009\u62E9\u5668","tui.help.section.session":"\u4F1A\u8BDD\u7BA1\u7406","tui.help.command.session":"/session [key] - \u5207\u6362\u5230\u6307\u5B9A\u4F1A\u8BDD\u6216\u6253\u5F00\u9009\u62E9\u5668","tui.help.command.new":"/new - \u521B\u5EFA\u5168\u65B0\u7A7A\u4F1A\u8BDD\uFF08\u4FDD\u7559\u504F\u597D\uFF09","tui.help.command.fork":"/fork - Fork \u5F53\u524D\u4F1A\u8BDD\uFF08\u590D\u5236\u5386\u53F2\uFF09","tui.help.command.reset":"/reset - \u91CD\u7F6E\u5F53\u524D\u4F1A\u8BDD","tui.help.section.model":"\u6A21\u578B\u7BA1\u7406","tui.help.command.model":"/model [provider/model] - \u8BBE\u7F6E\u6A21\u578B\u6216\u6253\u5F00\u9009\u62E9\u5668","tui.help.section.settings":"\u8BBE\u7F6E","tui.help.command.settings":"/settings - \u6253\u5F00\u8BBE\u7F6E\u9762\u677F","tui.help.command.verbose":"/verbose <on|off> - \u8BBE\u7F6E\u8BE6\u7EC6\u8F93\u51FA","tui.help.command.thinking":"/thinking <level> - \u8BBE\u7F6E\u601D\u8003\u6A21\u5F0F","tui.help.section.operations":"\u64CD\u4F5C","tui.help.command.abort":"/abort - \u4E2D\u6B62\u5F53\u524D\u8FD0\u884C","tui.help.command.clear":"/clear - \u6E05\u7A7A\u804A\u5929\u5386\u53F2","tui.help.command.compact":"/compact - \u538B\u7F29\u4E0A\u4E0B\u6587\uFF08\u51CF\u5C11 token \u4F7F\u7528\uFF09","tui.help.section.skill":"Skill \u548C MCP \u7BA1\u7406","tui.help.command.skill":"/skill [name] - \u52A0\u8F7D\u6307\u5B9A Skill \u6216\u6253\u5F00\u9009\u62E9\u5668","tui.help.command.mcp":"/mcp - \u663E\u793A MCP prompts \u5E76\u9009\u62E9\u6267\u884C","tui.help.section.exit":"\u9000\u51FA","tui.help.command.exit":"/exit (\u6216 /quit, /q) - \u9000\u51FA TUI","tui.help.section.local":"\u672C\u5730\u547D\u4EE4","tui.help.command.local":"!<command> - \u6267\u884C\u672C\u5730 shell \u547D\u4EE4\uFF08\u9700\u8981\u786E\u8BA4\uFF09","tui.help.section.shortcuts":"\u5FEB\u6377\u952E","tui.help.shortcut.ctrl_c":"Ctrl+C - \u6E05\u7A7A\u8F93\u5165\u6216\u9000\u51FA","tui.help.shortcut.ctrl_d":"Ctrl+D - \u9000\u51FA\uFF08\u7F16\u8F91\u5668\u4E3A\u7A7A\u65F6\uFF09","tui.help.shortcut.ctrl_l":"Ctrl+L - \u6253\u5F00\u6A21\u578B\u9009\u62E9\u5668","tui.help.shortcut.ctrl_p":"Ctrl+P - \u6253\u5F00\u4F1A\u8BDD\u9009\u62E9\u5668","tui.help.shortcut.ctrl_g":"Ctrl+G - \u6253\u5F00 Agent \u9009\u62E9\u5668","tui.help.shortcut.esc":"Esc - \u53D6\u6D88\u5F53\u524D\u64CD\u4F5C","tui.command.help.description":"\u663E\u793A\u547D\u4EE4\u5E2E\u52A9","tui.command.status.description":"\u663E\u793A\u7CFB\u7EDF\u72B6\u6001","tui.command.command.description":"\u5217\u51FA\u6240\u6709\u53EF\u7528\u547D\u4EE4","tui.command.commands.description":"\u663E\u793A\u5E2E\u52A9\u6587\u672C\uFF08\u5DF2\u5E9F\u5F03\uFF0C\u4F7F\u7528 /command\uFF09","tui.command.agent.description":"\u5207\u6362 Agent \u6216\u6253\u5F00\u9009\u62E9\u5668","tui.command.session.description":"\u5207\u6362\u4F1A\u8BDD\u6216\u6253\u5F00\u9009\u62E9\u5668","tui.command.new.description":"\u521B\u5EFA\u5168\u65B0\u7A7A\u4F1A\u8BDD\uFF08\u4FDD\u7559\u5F53\u524D\u504F\u597D\u8BBE\u7F6E\uFF09","tui.command.fork.description":"Fork \u5F53\u524D\u4F1A\u8BDD\uFF08\u590D\u5236\u5386\u53F2\u6D88\u606F\u5230\u65B0\u4F1A\u8BDD\uFF09","tui.command.reset.description":"\u91CD\u7F6E\u5F53\u524D\u4F1A\u8BDD","tui.command.model.description":"\u8BBE\u7F6E\u6A21\u578B\u6216\u6253\u5F00\u9009\u62E9\u5668","tui.command.settings.description":"\u6253\u5F00\u8BBE\u7F6E\u9762\u677F","tui.command.verbose.description":"\u8BBE\u7F6E\u8BE6\u7EC6\u8F93\u51FA (on/off)","tui.command.thinking.description":"\u8BBE\u7F6E\u601D\u8003\u6A21\u5F0F","tui.command.abort.description":"\u4E2D\u6B62\u5F53\u524D\u8FD0\u884C","tui.command.clear.description":"\u6E05\u7A7A\u804A\u5929\u5386\u53F2","tui.command.compact.description":"\u538B\u7F29\u4E0A\u4E0B\u6587\uFF08\u51CF\u5C11 token \u4F7F\u7528\uFF09","tui.command.skill.description":"\u6267\u884C Skill \u6216\u6253\u5F00\u9009\u62E9\u5668","tui.command.mcp.description":"\u6267\u884C MCP prompt \u6216\u6253\u5F00\u9009\u62E9\u5668","tui.command.exit.description":"\u9000\u51FA TUI (\u522B\u540D: quit, q)","tui.chatlog.user_prefix":"\u4F60","tui.chatlog.assistant_prefix":"\u52A9\u624B","tui.chatlog.system_prefix":"\u7CFB\u7EDF","tui.selector.model.title":"\u9009\u62E9\u6A21\u578B","tui.selector.model.placeholder":"\u641C\u7D22\u6A21\u578B...","tui.selector.session.title":"\u9009\u62E9\u4F1A\u8BDD","tui.selector.session.placeholder":"\u641C\u7D22\u4F1A\u8BDD...","tui.selector.agent.title":"\u9009\u62E9 Agent","tui.selector.agent.placeholder":"\u641C\u7D22 Agent...","tui.selector.skill.title":"\u9009\u62E9 Skill","tui.selector.skill.placeholder":"\u641C\u7D22 Skill...","tui.session.loading_agents":"\u52A0\u8F7D Agent \u5217\u8868...","tui.session.agents_loaded":"Agent \u5217\u8868\u52A0\u8F7D\u5B8C\u6210","tui.session.agents_failed":"\u2717 \u5237\u65B0 Agent \u5217\u8868\u5931\u8D25: {{error}}","tui.session.loading_info":"\u52A0\u8F7D\u4F1A\u8BDD\u4FE1\u606F...","tui.session.info_loaded":"\u4F1A\u8BDD\u4FE1\u606F\u52A0\u8F7D\u5B8C\u6210","tui.session.info_failed":"\u2717 \u5237\u65B0\u4F1A\u8BDD\u4FE1\u606F\u5931\u8D25: {{error}}","tui.session.loading_history":"\u52A0\u8F7D\u5386\u53F2\u6D88\u606F...","tui.session.history_loaded":"\u5386\u53F2\u6D88\u606F\u52A0\u8F7D\u5B8C\u6210","tui.session.history_failed":"\u2717 \u52A0\u8F7D\u5386\u53F2\u6D88\u606F\u5931\u8D25: {{error}}","tui.session.switched":"\u2713 \u5DF2\u5207\u6362\u5230\u4F1A\u8BDD: {{sessionId}}","tui.session.switch_failed":"\u2717 \u5207\u6362\u4F1A\u8BDD\u5931\u8D25: {{error}}","tui.session.aborting":"\u4E2D\u6B62\u8FD0\u884C...","tui.session.aborted":"\u2713 \u5DF2\u4E2D\u6B62\u5F53\u524D\u8FD0\u884C","tui.session.abort_failed":"\u2717 \u4E2D\u6B62\u8FD0\u884C\u5931\u8D25: {{error}}","tui.status.label":"\u72B6\u6001:","tui.status.idle":"\u7A7A\u95F2","tui.status.ready":"\u5C31\u7EEA","tui.status.error":"\u9519\u8BEF","tui.status.thinking":"\u601D\u8003\u4E2D...","tui.status.executing_tool":"\u6267\u884C\u5DE5\u5177: {{tool}}","tui.status.tool_completed":"\u5DE5\u5177\u6267\u884C\u5B8C\u6210","tui.status.tool_failed":"\u5DE5\u5177\u6267\u884C\u5931\u8D25","tui.status.receiving":"\u63A5\u6536\u6D88\u606F...","tui.status.running":"\u8FD0\u884C\u4E2D...","tui.status.waiting":"\u7B49\u5F85\u4E2D...","tui.status.executing_step":"\u6267\u884C\u6B65\u9AA4...","tui.status.step_completed":"\u6B65\u9AA4\u5B8C\u6210","tui.status.waiting_permission":"\u7B49\u5F85\u6743\u9650\u786E\u8BA4...","tui.status.waiting_answer":"\u7B49\u5F85\u56DE\u7B54...","tui.status.sending":"\u53D1\u9001\u4E2D...","tui.status.connection.local":"\u672C\u5730\u6A21\u5F0F","tui.status.connection.gateway_connected":"\u7F51\u5173\u5DF2\u8FDE\u63A5","tui.status.connection.gateway_disconnected":"\u7F51\u5173\u672A\u8FDE\u63A5","tui.hint.input_cleared":"\u5DF2\u6E05\u7A7A\u8F93\u5165\uFF0C\u518D\u6B21\u6309 Ctrl+C \u9000\u51FA","tui.hint.press_ctrlc_exit":"\u518D\u6B21\u6309 Ctrl+C \u9000\u51FA","tui.hint.show_thinking_on":"\u2713 \u5DF2\u5F00\u542F\u663E\u793A Thinking","tui.hint.show_thinking_off":"\u2713 \u5DF2\u5173\u95ED\u663E\u793A Thinking","tui.hint.tools_expanded":"\u5DE5\u5177\u8F93\u51FA\u5DF2\u5C55\u5F00","tui.hint.tools_collapsed":"\u5DE5\u5177\u8F93\u51FA\u5DF2\u6298\u53E0","tui.keyhints.model":"\u6A21\u578B","tui.keyhints.agent":"Agent","tui.keyhints.session":"\u4F1A\u8BDD","tui.keyhints.thinking":"\u601D\u8003","tui.keyhints.tools":"\u5DE5\u5177","tui.time.just_now":"\u521A\u521A","tui.time.minutes_ago":"{{minutes}} \u5206\u949F\u524D","tui.time.hours_ago":"{{hours}} \u5C0F\u65F6\u524D","tui.time.days_ago":"{{days}} \u5929\u524D","tui.system.welcome":"\u6B22\u8FCE\u4F7F\u7528 EASBot TUI\uFF01","tui.system.help_hint":"\u8F93\u5165 /help \u67E5\u770B\u53EF\u7528\u547D\u4EE4","tui.system.tool_executing":"\u2699 \u6267\u884C\u5DE5\u5177: {{tool}}","tui.system.tool_completed":"\u2713 \u5DE5\u5177\u5B8C\u6210: {{tool}}","tui.system.tool_failed":"\u2717 \u5DE5\u5177\u5931\u8D25: {{tool}}","tui.system.thinking":"\u{1F4AD} \u601D\u8003: {{text}}","tui.system.agent_updated":"Agent \u5DF2\u66F4\u65B0: {{agentId}}","tui.system.error":"\u2717 \u9519\u8BEF: {{message}}","tui.system.no_session":"\u6CA1\u6709\u6D3B\u52A8\u4F1A\u8BDD","tui.system.thinking_mode":"\u601D\u8003\u6A21\u5F0F: {{mode}}","tui.system.tools_output":"\u5DE5\u5177\u8F93\u51FA: {{mode}}","tui.system.on":"\u5F00\u542F","tui.system.off":"\u5173\u95ED","tui.system.expanded":"\u5C55\u5F00","tui.system.collapsed":"\u6298\u53E0","tui.selector.model.error":"\u6253\u5F00\u6A21\u578B\u9009\u62E9\u5668\u5931\u8D25: {{error}}","tui.selector.session.error":"\u6253\u5F00\u4F1A\u8BDD\u9009\u62E9\u5668\u5931\u8D25: {{error}}","tui.selector.agent.error":"\u6253\u5F00 Agent \u9009\u62E9\u5668\u5931\u8D25: {{error}}","tui.selector.skill.error":"\u6253\u5F00 Skill \u9009\u62E9\u5668\u5931\u8D25: {{error}}","tui.state.session.created":"\u4F1A\u8BDD\u5DF2\u521B\u5EFA: {{title}}","tui.state.session.deleted":"\u4F1A\u8BDD\u5DF2\u5220\u9664: {{title}}","tui.state.healed":"\u2713 TUI \u72B6\u6001\u5DF2\u81EA\u52A8\u4FEE\u590D","tui.state.heal_failed":"\u2717 TUI \u72B6\u6001\u81EA\u52A8\u4FEE\u590D\u5931\u8D25","tui.state.model_synced":"\u2713 \u6A21\u578B\u504F\u597D\u5DF2\u540C\u6B65\u5230\u540E\u53F0: {{model}}","tui.state.preferences_synced":"\u2713 \u504F\u597D\u8BBE\u7F6E\u5DF2\u540C\u6B65\u5230\u540E\u53F0: {{updates}}","tui.state.preferences_validated":"\u2713 \u672C\u5730\u504F\u597D\u8BBE\u7F6E\u5DF2\u9A8C\u8BC1: {{items}}","tui.state.model_not_found":"\u2717 \u6A21\u578B\u4E0D\u5B58\u5728\uFF0C\u8DF3\u8FC7\u540C\u6B65: {{model}}","tui.state.agent_not_found":"\u2717 Agent \u4E0D\u5B58\u5728\uFF0C\u8DF3\u8FC7\u540C\u6B65: {{agent}}","permission.request":"\u6743\u9650\u8BF7\u6C42","permission.target":"\u76EE\u6807","permission.select_action":"\u9009\u62E9\u64CD\u4F5C","permission.allow_once":"\u5141\u8BB8\u4E00\u6B21 (once)","permission.allow_always":"\u603B\u662F\u5141\u8BB8 (always)","permission.reject":"\u62D2\u7EDD (reject)","permission.input_prompt":"\u8BF7\u8F93\u5165 (y/a/n)","permission.allowed":"\u5DF2\u5141\u8BB8\u4E00\u6B21","permission.always_allowed":"\u5DF2\u603B\u662F\u5141\u8BB8","permission.rejected":"\u5DF2\u62D2\u7EDD","question.agent_asking":"Agent \u63D0\u95EE","question.question":"\u95EE\u9898","question.title":"\u6807\u9898","question.options":"\u53EF\u9009\u9879","question.custom_input":"\u81EA\u5B9A\u4E49\u8F93\u5165","question.answered":"\u5DF2\u56DE\u7B54","tui.question.header":"\u95EE\u9898 {{current}}/{{total}}","tui.question.options":"\u53EF\u9009\u9879:","tui.question.custom":"\u81EA\u5B9A\u4E49\u8F93\u5165","tui.question.prompt":"\u95EE\u9898 {{current}}/{{total}}> ","tui.question.invalid_input":"\u65E0\u6548\u8F93\u5165\uFF0C\u8BF7\u91CD\u65B0\u8F93\u5165","tui.question.completed":"\u2713 \u5DF2\u5B8C\u6210 {{count}} \u4E2A\u95EE\u9898\u7684\u56DE\u7B54","tui.question.error":"\u2717 \u95EE\u7B54\u8BF7\u6C42\u5931\u8D25","tui.question.cancelled":"\u95EE\u7B54\u5DF2\u53D6\u6D88","tui.question.hint.custom_enabled":"\u63D0\u793A: \u8F93\u5165\u9009\u9879\u7F16\u53F7\u6216\u8F93\u5165\u81EA\u5B9A\u4E49\u6587\u672C","tui.question.hint.custom_enabled_multiple":"\u63D0\u793A: \u8F93\u5165\u9009\u9879\u7F16\u53F7\uFF08\u591A\u9009\u7528\u9017\u53F7\u5206\u9694\uFF0C\u5982 1,3\uFF09\u6216\u8F93\u5165\u81EA\u5B9A\u4E49\u6587\u672C","tui.question.hint.custom_disabled":"\u63D0\u793A: \u53EA\u80FD\u8F93\u5165\u6709\u6548\u7684\u9009\u9879\u7F16\u53F7","tui.question.hint.custom_disabled_multiple":"\u63D0\u793A: \u53EA\u80FD\u8F93\u5165\u6709\u6548\u7684\u9009\u9879\u7F16\u53F7\uFF08\u591A\u9009\u7528\u9017\u53F7\u5206\u9694\uFF0C\u5982 1,3\uFF09","tui.permission.request_header":"\u6743\u9650\u8BF7\u6C42","tui.permission.type":"\u7C7B\u578B: {{type}}","tui.permission.targets":"\u76EE\u6807: {{targets}}","tui.permission.options":"\u9009\u62E9\u64CD\u4F5C:","tui.permission.once":"\u5141\u8BB8\u4E00\u6B21","tui.permission.always":"\u603B\u662F\u5141\u8BB8","tui.permission.reject":"\u62D2\u7EDD","tui.permission.prompt":"\u6743\u9650\u786E\u8BA4 (y/a/n)> ","tui.permission.invalid_input":"\u65E0\u6548\u8F93\u5165\uFF0C\u8BF7\u8F93\u5165 y/a/n","tui.permission.replied":"\u2713 \u6743\u9650\u8BF7\u6C42\u5DF2\u56DE\u590D: {{reply}}","tui.permission.error":"\u2717 \u6743\u9650\u8BF7\u6C42\u56DE\u590D\u5931\u8D25","tui.permission.cancelled":"\u6743\u9650\u8BF7\u6C42\u5DF2\u53D6\u6D88","tui.at_mention.file_not_found":"\u2717 \u627E\u4E0D\u5230\u6587\u4EF6: {{paths}}","debug.command.description":"\u8C03\u8BD5\u548C\u8BCA\u65AD\u5DE5\u5177","debug.config.command.describe":"\u663E\u793A\u89E3\u6790\u540E\u7684\u914D\u7F6E","debug.config.error.load_failed":"\u52A0\u8F7D\u914D\u7F6E\u5931\u8D25: {{error}}","debug.agent.command.describe":"\u663E\u793A Agent \u914D\u7F6E\u8BE6\u60C5","debug.agent.option.tool.description":"\u8981\u6267\u884C\u7684\u5DE5\u5177 ID","debug.agent.option.params.description":"\u5DE5\u5177\u53C2\u6570\uFF0CJSON \u6216 JS \u5BF9\u8C61\u683C\u5F0F","debug.agent.error.not_found":"\u672A\u627E\u5230 Agent {{agentName}}\uFF0C\u8FD0\u884C '{{command}} agent list' \u67E5\u770B Agent \u5217\u8868","debug.agent.tool.error.not_found":"Agent {{agentName}} \u4E2D\u672A\u627E\u5230\u5DE5\u5177 {{toolID}}","debug.agent.tool.error.disabled":"\u5DE5\u5177 {{toolID}} \u5728 Agent {{agentName}} \u4E2D\u5DF2\u7981\u7528","debug.agent.tool.params.parse_error":"\u89E3\u6790 --params \u5931\u8D25: JSON \u9519\u8BEF: {{jsonError}}, Eval \u9519\u8BEF: {{evalError}}","debug.agent.tool.params.must_be_object":"\u5DE5\u5177\u53C2\u6570\u5FC5\u987B\u662F\u5BF9\u8C61","debug.file.command.describe":"\u6587\u4EF6\u7CFB\u7EDF\u8C03\u8BD5\u5DE5\u5177","debug.file.search.command.describe":"\u6309\u67E5\u8BE2\u6761\u4EF6\u641C\u7D22\u6587\u4EF6","debug.file.search.positional.query.description":"\u641C\u7D22\u67E5\u8BE2","debug.file.search.error":"\u6587\u4EF6\u641C\u7D22\u5931\u8D25: {{error}}","debug.file.read.command.describe":"\u4EE5 JSON \u683C\u5F0F\u8BFB\u53D6\u6587\u4EF6\u5185\u5BB9","debug.file.read.positional.path.description":"\u8981\u8BFB\u53D6\u7684\u6587\u4EF6\u8DEF\u5F84","debug.file.read.error":"\u6587\u4EF6\u8BFB\u53D6\u5931\u8D25: {{error}}","debug.file.status.command.describe":"\u663E\u793A\u6587\u4EF6\u72B6\u6001\u4FE1\u606F","debug.file.status.error":"\u83B7\u53D6\u6587\u4EF6\u72B6\u6001\u5931\u8D25: {{error}}","debug.file.list.command.describe":"\u5217\u51FA\u76EE\u5F55\u4E2D\u7684\u6587\u4EF6","debug.file.list.positional.path.description":"\u8981\u5217\u51FA\u7684\u76EE\u5F55\u8DEF\u5F84","debug.file.list.error":"\u6587\u4EF6\u5217\u8868\u83B7\u53D6\u5931\u8D25: {{error}}","debug.file.tree.command.describe":"\u663E\u793A\u76EE\u5F55\u6811","debug.file.tree.positional.dir.description":"\u8981\u663E\u793A\u6811\u7684\u76EE\u5F55","debug.file.tree.option.limit.description":"\u9650\u5236\u7ED3\u679C\u6570\u91CF","debug.file.tree.error":"\u76EE\u5F55\u6811\u663E\u793A\u5931\u8D25: {{error}}","debug.lsp.command.describe":"LSP \u8C03\u8BD5\u5DE5\u5177","debug.lsp.diagnostics.command.describe":"\u83B7\u53D6\u6587\u4EF6\u7684\u8BCA\u65AD\u4FE1\u606F","debug.lsp.diagnostics.positional.file.description":"\u6587\u4EF6\u8DEF\u5F84","debug.lsp.diagnostics.error":"\u83B7\u53D6\u8BCA\u65AD\u4FE1\u606F\u5931\u8D25: {{error}}","debug.lsp.symbols.command.describe":"\u641C\u7D22\u5DE5\u4F5C\u533A\u7B26\u53F7","debug.lsp.symbols.positional.query.description":"\u641C\u7D22\u67E5\u8BE2","debug.lsp.symbols.error":"\u641C\u7D22\u7B26\u53F7\u5931\u8D25: {{error}}","debug.lsp.document_symbols.command.describe":"\u83B7\u53D6\u6587\u6863\u4E2D\u7684\u7B26\u53F7","debug.lsp.document_symbols.positional.uri.description":"\u6587\u6863 URI","debug.lsp.document_symbols.error":"\u83B7\u53D6\u6587\u6863\u7B26\u53F7\u5931\u8D25: {{error}}","debug.ripgrep.command.describe":"Ripgrep \u8C03\u8BD5\u5DE5\u5177","debug.ripgrep.tree.command.describe":"\u4F7F\u7528 ripgrep \u663E\u793A\u6587\u4EF6\u6811","debug.ripgrep.tree.option.limit.description":"\u9650\u5236\u7ED3\u679C\u6570\u91CF","debug.ripgrep.tree.error":"\u6587\u4EF6\u6811\u663E\u793A\u5931\u8D25: {{error}}","debug.ripgrep.files.command.describe":"\u4F7F\u7528 ripgrep \u5217\u51FA\u6587\u4EF6","debug.ripgrep.files.option.query.description":"\u6309\u67E5\u8BE2\u8FC7\u6EE4\u6587\u4EF6","debug.ripgrep.files.option.glob.description":"\u5339\u914D\u6587\u4EF6\u7684 glob \u6A21\u5F0F","debug.ripgrep.files.option.limit.description":"\u9650\u5236\u7ED3\u679C\u6570\u91CF","debug.ripgrep.files.error":"\u6587\u4EF6\u5217\u8868\u83B7\u53D6\u5931\u8D25: {{error}}","debug.ripgrep.search.command.describe":"\u641C\u7D22\u6587\u4EF6\u5185\u5BB9","debug.ripgrep.search.positional.pattern.description":"\u641C\u7D22\u6A21\u5F0F","debug.ripgrep.search.option.glob.description":"\u6587\u4EF6 glob \u6A21\u5F0F","debug.ripgrep.search.option.limit.description":"\u9650\u5236\u7ED3\u679C\u6570\u91CF","debug.ripgrep.search.error":"\u641C\u7D22\u5931\u8D25: {{error}}","debug.scrap.command.describe":"\u5217\u51FA\u6240\u6709\u5DF2\u77E5\u9879\u76EE","debug.skill.command.describe":"\u5217\u51FA\u6240\u6709\u53EF\u7528\u6280\u80FD","debug.skill.error.list_failed":"\u83B7\u53D6\u6280\u80FD\u5217\u8868\u5931\u8D25: {{error}}","debug.snapshot.command.describe":"\u5FEB\u7167\u8C03\u8BD5\u5DE5\u5177","debug.snapshot.track.command.describe":"\u8DDF\u8E2A\u5F53\u524D\u5FEB\u7167\u72B6\u6001","debug.snapshot.track.error":"\u5FEB\u7167\u8DDF\u8E2A\u5931\u8D25: {{error}}","debug.snapshot.patch.command.describe":"\u663E\u793A\u5FEB\u7167\u54C8\u5E0C\u7684\u8865\u4E01","debug.snapshot.patch.positional.hash.description":"\u5FEB\u7167\u54C8\u5E0C","debug.snapshot.patch.error":"\u83B7\u53D6\u5FEB\u7167\u8865\u4E01\u5931\u8D25: {{error}}","debug.snapshot.diff.command.describe":"\u663E\u793A\u5FEB\u7167\u54C8\u5E0C\u7684\u5DEE\u5F02","debug.snapshot.diff.positional.hash.description":"\u5FEB\u7167\u54C8\u5E0C","debug.snapshot.diff.error":"\u83B7\u53D6\u5FEB\u7167\u5DEE\u5F02\u5931\u8D25: {{error}}","debug.paths.command.describe":"\u663E\u793A\u5168\u5C40\u8DEF\u5F84","debug.wait.command.describe":"\u65E0\u9650\u7B49\u5F85\uFF08\u7528\u4E8E\u8C03\u8BD5\uFF09","acp.server.started":"ACP \u670D\u52A1\u542F\u52A8\u6210\u529F","acp.directory.resolved":"\u5DE5\u4F5C\u76EE\u5F55\u5DF2\u89E3\u6790: {{cwd}}","acp.error.start_failed":"ACP \u670D\u52A1\u542F\u52A8\u5931\u8D25: {{error}}","acp.field.directory":"\u76EE\u5F55","acp.field.worktree":"\u5DE5\u4F5C\u533A","acp.field.channel":"\u901A\u9053","acp.field.host":"\u4E3B\u673A","acp.field.ws_url":"WS URL","acp.field.ws_path":"WS \u8DEF\u5F84","acp.field.base_url":"Base URL","acp.field.timeout":"\u8D85\u65F6","acp.field.batch_size":"\u6279\u5927\u5C0F","acp.field.batch_interval":"\u6279\u95F4\u9694","acp.field.heartbeat":"\u5FC3\u8DF3","acp.field.debug":"\u8C03\u8BD5","acp.field.proxy":"\u4EE3\u7406","acp.field.mode":"\u6A21\u5F0F","acp.field.protocol":"\u534F\u8BAE","acp.websocket.config":"WebSocket \u914D\u7F6E","acp.mode.stdio":"STDIO (JSON-RPC over stdin/stdout)","acp.mode.local":"LOCAL (Standard ACP via AgentSideConnection)","export.command.description":"\u5BFC\u51FA session \u6570\u636E\u4E3A JSON \u683C\u5F0F","export.exporting":"\u6B63\u5728\u5BFC\u51FA session: {{sessionId}}","export.error.no_sessions":"\u6CA1\u6709\u627E\u5230 session","export.error.failed":"\u5BFC\u51FA\u5931\u8D25: {{error}}","import.command.description":"\u4ECE JSON \u6587\u4EF6\u6216 URL \u5BFC\u5165 session \u6570\u636E","import.fetching_url":"\u6B63\u5728\u4ECE URL \u83B7\u53D6\u6570\u636E: {{url}}","import.reading_file":"\u6B63\u5728\u8BFB\u53D6\u6587\u4EF6: {{file}}","import.error.fetch_failed":"\u83B7\u53D6\u6570\u636E\u5931\u8D25: {{status}}","import.error.file_not_found":"\u6587\u4EF6\u672A\u627E\u5230: {{file}}","import.error.invalid_format":"\u65E0\u6548\u7684\u6570\u636E\u683C\u5F0F","import.success":"Session \u5BFC\u5165\u6210\u529F: {{sessionId}}","import.error.failed":"\u5BFC\u5165\u5931\u8D25: {{error}}","stats.command.description":"\u663E\u793A token \u4F7F\u7528\u91CF\u548C\u6210\u672C\u7EDF\u8BA1","stats.option.days":"\u663E\u793A\u6700\u8FD1 N \u5929\u7684\u7EDF\u8BA1","stats.option.tools":"\u663E\u793A\u7684\u5DE5\u5177\u6570\u91CF","stats.option.models":"\u663E\u793A\u6A21\u578B\u7EDF\u8BA1","stats.loading":"\u6B63\u5728\u52A0\u8F7D\u7EDF\u8BA1\u6570\u636E...","stats.display_ready":"\u7EDF\u8BA1\u6570\u636E\u5DF2\u52A0\u8F7D","stats.overview":"\u6982\u89C8","stats.cost_tokens":"\u6210\u672C\u4E0E Token","stats.tool_usage":"\u5DE5\u5177\u4F7F\u7528\u7EDF\u8BA1","stats.metric.sessions":"Sessions","stats.metric.messages":"\u6D88\u606F","stats.metric.total_cost":"\u603B\u6210\u672C","stats.metric.input":"\u8F93\u5165 Token","stats.metric.output":"\u8F93\u51FA Token","stats.metric.cache_read":"\u7F13\u5B58\u8BFB\u53D6","stats.metric.cache_write":"\u7F13\u5B58\u5199\u5165","stats.table.header.metric":"\u6307\u6807","stats.table.header.value":"\u503C","stats.table.header.tool":"\u5DE5\u5177","stats.table.header.count":"\u6B21\u6570","stats.table.header.percent":"\u5360\u6BD4","stats.error.failed":"\u83B7\u53D6\u7EDF\u8BA1\u6570\u636E\u5931\u8D25: {{error}}","update.command.description":"\u66F4\u65B0 easbot \u5230\u6700\u65B0\u6216\u6307\u5B9A\u7248\u672C","update.option.method":"\u5B89\u88C5\u65B9\u5F0F (npm/pnpm/bun)","update.starting":"\u6B63\u5728\u66F4\u65B0 easbot","update.current_version":"\u5F53\u524D\u7248\u672C: {{version}}","update.target_version":"\u76EE\u6807\u7248\u672C: {{version}}","update.already_latest":"\u5DF2\u7ECF\u662F\u6700\u65B0\u7248\u672C {{version}}","update.downloading":"\u6B63\u5728\u4E0B\u8F7D\u65B0\u7248\u672C...","update.success":"\u66F4\u65B0\u6210\u529F! \u7248\u672C: {{version}}","update.failed":"\u66F4\u65B0\u5931\u8D25: {{error}}","update.error":"\u66F4\u65B0\u5931\u8D25: {{error}}","update.latest_fetch_failed":"\u83B7\u53D6\u6700\u65B0\u7248\u672C\u5931\u8D25","update.invalid_version":"\u65E0\u6548\u7684\u7248\u672C\u53F7: {{version}}","update.downgrade_warning":"\u8B66\u544A: \u6B63\u5728\u4ECE {{from}} \u964D\u7EA7\u5230 {{to}}","auth.command.description":"\u7BA1\u7406\u51ED\u636E","auth.command.list.description":"\u5217\u51FA\u5DF2\u914D\u7F6E\u7684 Provider","auth.command.login.description":"\u767B\u5F55 Provider","auth.command.logout.description":"\u767B\u51FA Provider","auth.option.key":"API Key","auth.list.title":"\u5DF2\u914D\u7F6E\u7684\u51ED\u636E","auth.list.empty":"\u6CA1\u6709\u5DF2\u914D\u7F6E\u7684\u51ED\u636E","auth.list.error":"\u83B7\u53D6\u51ED\u636E\u5217\u8868\u5931\u8D25: {{error}}","auth.table.header.provider":"Provider","auth.table.header.type":"\u7C7B\u578B","auth.table.header.hint":"\u5907\u6CE8","auth.login.key_required":"\u9700\u8981\u63D0\u4F9B API Key","auth.login.key_hint":"\u4F7F\u7528 --key <key> \u63D0\u4F9B\u60A8\u7684 API Key","auth.login.logging_in":"\u6B63\u5728\u767B\u5F55 {{provider}}","auth.login.success":"\u767B\u5F55\u6210\u529F: {{provider}}","gateway.command.description":"\u7BA1\u7406 Gateway \u670D\u52A1","gateway.command.start":"\u542F\u52A8 Gateway \u670D\u52A1","gateway.command.stop":"\u505C\u6B62 Gateway \u670D\u52A1","gateway.command.restart":"\u91CD\u542F Gateway \u670D\u52A1","gateway.command.status":"\u67E5\u770B Gateway \u72B6\u6001","gateway.command.config":"\u7BA1\u7406 Gateway \u914D\u7F6E","gateway.command.config_show":"\u663E\u793A Gateway \u914D\u7F6E","gateway.option.directory":"\u5DE5\u4F5C\u76EE\u5F55","gateway.option.port":"\u670D\u52A1\u7AEF\u53E3","gateway.option.hostname":"\u4E3B\u673A\u5730\u5740","gateway.option.tls":"\u542F\u7528 TLS","gateway.option.tls_cert":"TLS \u8BC1\u4E66\u8DEF\u5F84","gateway.option.tls_key":"TLS \u5BC6\u94A5\u8DEF\u5F84","gateway.option.debug":"\u542F\u7528\u8C03\u8BD5\u6A21\u5F0F","gateway.help.option":"\u663E\u793A Gateway \u547D\u4EE4\u5E2E\u52A9\u4FE1\u606F","gateway.directory.resolved":"\u5DE5\u4F5C\u76EE\u5F55: {{cwd}}","gateway.disabled":"Gateway \u670D\u52A1\u5DF2\u7981\u7528","gateway.stopped":"Gateway \u670D\u52A1\u5DF2\u505C\u6B62","gateway.restarting":"\u6B63\u5728\u91CD\u542F Gateway \u670D\u52A1...","gateway.restarted":"Gateway \u670D\u52A1\u5DF2\u91CD\u542F","gateway.shutdown.received":"\u6536\u5230 {{signal}} \u4FE1\u53F7\uFF0C\u6B63\u5728\u5173\u95ED...","gateway.shutdown.completed":"Gateway \u670D\u52A1\u5DF2\u5173\u95ED","gateway.status.heading":"Gateway \u670D\u52A1\u72B6\u6001","gateway.status.already_stopped":"Gateway \u670D\u52A1\u5DF2\u505C\u6B62","gateway.server.started":"Gateway \u670D\u52A1\u5DF2\u542F\u52A8","gateway.field.directory":"\u76EE\u5F55","gateway.field.status":"\u72B6\u6001","gateway.field.ws_url":"WebSocket URL","gateway.field.ws_path":"WebSocket \u8DEF\u5F84","gateway.field.port":"\u7AEF\u53E3","gateway.field.hostname":"\u4E3B\u673A","gateway.field.tls":"TLS","gateway.field.debug":"\u8C03\u8BD5\u6A21\u5F0F","gateway.field.proxy":"\u4EE3\u7406","gateway.field.error":"\u9519\u8BEF","gateway.config.heading":"Gateway \u914D\u7F6E","gateway.config.server":"\u670D\u52A1\u914D\u7F6E","gateway.config.channels":"Channel \u914D\u7F6E","gateway.config.connection_pool":"\u8FDE\u63A5\u6C60\u914D\u7F6E","gateway.config.agent_registry":"Agent Registry \u914D\u7F6E","gateway.config.no_channels":"\u672A\u914D\u7F6E\u4EFB\u4F55 Channel","gateway.config.not_found":"\u672A\u627E\u5230 Gateway \u914D\u7F6E","gateway.error.start_failed":"\u542F\u52A8 Gateway \u670D\u52A1\u5931\u8D25: {{error}}","gateway.error.stop_failed":"\u505C\u6B62 Gateway \u670D\u52A1\u5931\u8D25: {{error}}","gateway.error.restart_failed":"\u91CD\u542F Gateway \u670D\u52A1\u5931\u8D25: {{error}}","gateway.error.config_failed":"\u83B7\u53D6 Gateway \u914D\u7F6E\u5931\u8D25: {{error}}","gateway.help.examples":"\u793A\u4F8B:","gateway.help.example.default":"\u4F7F\u7528\u9ED8\u8BA4\u914D\u7F6E\u542F\u52A8","gateway.help.example.port":"\u6307\u5B9A\u7AEF\u53E3\u542F\u52A8","gateway.help.example.hostname":"\u6307\u5B9A\u4E3B\u673A\u5730\u5740\u542F\u52A8","gateway.help.example.stop":"\u505C\u6B62\u670D\u52A1","gateway.help.example.restart":"\u91CD\u542F\u670D\u52A1","gateway.help.example.config":"\u67E5\u770B\u914D\u7F6E","gateway.help.env":"\u73AF\u5883\u53D8\u91CF:","gateway.help.env.port":"\u670D\u52A1\u7AEF\u53E3","gateway.help.env.hostname":"\u4E3B\u673A\u5730\u5740","gateway.help.env.tls":"\u542F\u7528 TLS","gateway.help.subcommand.start.after":`
|
|
7
7
|
\u5176\u4ED6\u9009\u9879 (\u7EE7\u627F\u81EA gateway):
|
|
8
8
|
-D, --directory <path> \u5DE5\u4F5C\u76EE\u5F55
|
|
9
9
|
-p, --port <number> \u670D\u52A1\u7AEF\u53E3
|
|
@@ -16,7 +16,7 @@ Note: TUI functionality is under development, currently only displays configurat
|
|
|
16
16
|
Original error:`,"error.unknown":`
|
|
17
17
|
Unknown error:`,"error.stack":`
|
|
18
18
|
Stack trace:`,"error.code":`
|
|
19
|
-
Error [{{code}}]: {{message}}`,"tui.error.global.uncaughtException":"\u26A0\uFE0F Uncaught exception: {{error}}","tui.error.global.unhandledRejection":"\u26A0\uFE0F Unhandled Promise rejection: {{error}}","tui.shell.executing":"Executing Shell command...","tui.shell.success":"Shell command executed successfully","tui.shell.error":"Shell command execution failed: {{error}}","tui.shell.empty":"Shell command is empty","tui.shell.prompt":"$ ","tui.shell.confirm.title":"Allow local shell command execution in this session?","tui.shell.confirm.warning":"This will run commands on your machine (not gateway), which may delete files or leak secrets.","tui.shell.confirm.instruction":"Select Yes/No (arrow keys + Enter), Esc to cancel.","tui.shell.confirm.yes":"Yes","tui.shell.confirm.no":"No","tui.shell.enabled":"Local shell: Enabled for this session","tui.shell.disabled":"Local shell: Not enabled","tui.shell.cancelled":"Local shell: Cancelled","tui.shell.not_enabled":"Local shell: Not enabled for this session","tui.shell.command":"[Local] $ {{command}}","tui.shell.output":"[Local] {{output}}","tui.shell.exit":"[Local] Exit {{code}}{{signal}}","tui.shell.exit_signal":" (signal {{signal}})","tui.shell.permission.on":"Local shell: Enabled","tui.shell.permission.off":"Local shell: Disabled. Use /settings to modify permission settings","tui.shell.permission.ask":"Local shell: Authorization required. Enter y to enable, n to disable","tui.shell.permission.prompt":"Shell permission (y/n)> ","tui.shell.permission.invalid":"Invalid input. Please enter y or n","tui.shell.permission.updated":"Local shell permission updated: {{permission}}","tui.handler.context_mode.set":"Context mode updated: {{mode}}","tui.help.title":"Slash Commands","tui.help.section.basic":"Basic Commands","tui.help.command.help":"/help - Display this help","tui.help.command.status":"/status - Display system status","tui.help.command.command":"/command - List all available commands","tui.help.section.agent":"Agent Management","tui.help.command.agent":"/agent [id] - Switch to specified Agent or open selector","tui.help.section.session":"Session Management","tui.help.command.session":"/session [key] - Switch to specified session or open selector","tui.help.command.new":"/new - Create new empty session (preserves preferences)","tui.help.command.fork":"/fork - Fork current session (copies history)","tui.help.command.reset":"/reset - Reset current session","tui.help.section.model":"Model Management","tui.help.command.model":"/model [provider/model] - Set model or open selector","tui.help.section.settings":"Settings","tui.help.command.settings":"/settings - Open settings panel","tui.help.command.verbose":"/verbose <on|off> - Set verbose output","tui.help.command.thinking":"/thinking <level> - Set thinking mode","tui.help.section.operations":"Operations","tui.help.command.abort":"/abort - Abort current run","tui.help.command.clear":"/clear - Clear chat history","tui.help.command.compact":"/compact - Compact context (reduce token usage)","tui.help.section.skill":"Skill and MCP Management","tui.help.command.skill":"/skill [name] - Load specified Skill or open selector","tui.help.command.mcp":"/mcp - Display MCP prompts and select to execute","tui.help.section.exit":"Exit","tui.help.command.exit":"/exit (or /quit, /q) - Exit TUI","tui.help.section.local":"Local Commands","tui.help.command.local":"!<command> - Execute local shell command (requires confirmation)","tui.help.section.shortcuts":"Shortcuts","tui.help.shortcut.ctrl_c":"Ctrl+C - Clear input or exit","tui.help.shortcut.ctrl_d":"Ctrl+D - Exit (when editor is empty)","tui.help.shortcut.ctrl_l":"Ctrl+L - Open model selector","tui.help.shortcut.ctrl_p":"Ctrl+P - Open session selector","tui.help.shortcut.ctrl_g":"Ctrl+G - Open Agent selector","tui.help.shortcut.esc":"Esc - Cancel current operation","tui.command.help.description":"Display command help","tui.command.status.description":"Display system status","tui.command.command.description":"List all available commands","tui.command.commands.description":"Display help text (deprecated, use /command)","tui.command.agent.description":"Switch Agent or open selector","tui.command.session.description":"Switch session or open selector","tui.command.new.description":"Create new empty session (preserves current preferences)","tui.command.fork.description":"Fork current session (copies history to new session)","tui.command.reset.description":"Reset current session","tui.command.model.description":"Set model or open selector","tui.command.settings.description":"Open settings panel","tui.command.verbose.description":"Set verbose output (on/off)","tui.command.thinking.description":"Set thinking mode","tui.command.abort.description":"Abort current run","tui.command.clear.description":"Clear chat history","tui.command.compact.description":"Compact context (reduce token usage)","tui.command.skill.description":"Execute Skill or open selector","tui.command.mcp.description":"Execute MCP prompt or open selector","tui.command.exit.description":"Exit TUI (alias: quit, q)","tui.chatlog.user_prefix":"You","tui.chatlog.assistant_prefix":"Assistant","tui.chatlog.system_prefix":"System","tui.selector.model.title":"Select Model","tui.selector.model.placeholder":"Search models...","tui.selector.session.title":"Select Session","tui.selector.session.placeholder":"Search sessions...","tui.selector.agent.title":"Select Agent","tui.selector.agent.placeholder":"Search Agents...","tui.selector.skill.title":"Select Skill","tui.selector.skill.placeholder":"Search Skills...","tui.session.loading_agents":"Loading Agent list...","tui.session.agents_loaded":"Agent list loaded","tui.session.agents_failed":"\u2717 Failed to refresh Agent list: {{error}}","tui.session.loading_info":"Loading session information...","tui.session.info_loaded":"Session information loaded","tui.session.info_failed":"\u2717 Failed to refresh session information: {{error}}","tui.session.loading_history":"Loading history messages...","tui.session.history_loaded":"History messages loaded","tui.session.history_failed":"\u2717 Failed to load history messages: {{error}}","tui.session.switched":"\u2713 Switched to session: {{sessionId}}","tui.session.switch_failed":"\u2717 Failed to switch session: {{error}}","tui.session.aborting":"Aborting run...","tui.session.aborted":"\u2713 Current run aborted","tui.session.abort_failed":"\u2717 Failed to abort run: {{error}}","tui.status.label":"Status:","tui.status.idle":"Idle","tui.status.ready":"Ready","tui.status.error":"Error","tui.status.thinking":"Thinking...","tui.status.executing_tool":"Executing tool: {{tool}}","tui.status.tool_completed":"Tool execution completed","tui.status.tool_failed":"Tool execution failed","tui.status.receiving":"Receiving message...","tui.status.running":"Running...","tui.status.waiting":"Waiting...","tui.status.executing_step":"Executing step...","tui.status.step_completed":"Step completed","tui.status.waiting_permission":"Waiting for permission confirmation...","tui.status.waiting_answer":"Waiting for answer...","tui.status.sending":"Sending...","tui.status.connection.local":"Local Mode","tui.status.connection.gateway_connected":"Gateway Connected","tui.status.connection.gateway_disconnected":"Gateway Disconnected","tui.hint.input_cleared":"Input cleared, press Ctrl+C again to exit","tui.hint.press_ctrlc_exit":"Press Ctrl+C again to exit","tui.hint.show_thinking_on":"\u2713 Show Thinking turned on","tui.hint.show_thinking_off":"\u2713 Show Thinking turned off","tui.hint.tools_expanded":"Tool output expanded","tui.hint.tools_collapsed":"Tool output collapsed","tui.keyhints.model":"Model","tui.keyhints.agent":"Agent","tui.keyhints.session":"Session","tui.keyhints.thinking":"Thinking","tui.keyhints.tools":"Tools","tui.time.just_now":"Just now","tui.time.minutes_ago":"{{minutes}} minutes ago","tui.time.hours_ago":"{{hours}} hours ago","tui.time.days_ago":"{{days}} days ago","tui.system.welcome":"Welcome to EASBot TUI!","tui.system.help_hint":"Enter /help to view available commands","tui.system.tool_executing":"\u2699 Executing tool: {{tool}}","tui.system.tool_completed":"\u2713 Tool completed: {{tool}}","tui.system.tool_failed":"\u2717 Tool failed: {{tool}}","tui.system.thinking":"\u{1F4AD} Thinking: {{text}}","tui.system.agent_updated":"Agent updated: {{agentId}}","tui.system.error":"\u2717 Error: {{message}}","tui.system.no_session":"No active session","tui.system.thinking_mode":"Thinking mode: {{mode}}","tui.system.tools_output":"Tool output: {{mode}}","tui.system.on":"On","tui.system.off":"Off","tui.system.expanded":"Expanded","tui.system.collapsed":"Collapsed","tui.selector.model.error":"Failed to open model selector: {{error}}","tui.selector.session.error":"Failed to open session selector: {{error}}","tui.selector.agent.error":"Failed to open Agent selector: {{error}}","tui.selector.skill.error":"Failed to open Skill selector: {{error}}","tui.state.session.created":"Session created: {{title}}","tui.state.session.deleted":"Session deleted: {{title}}","tui.state.healed":"\u2713 TUI state automatically healed","tui.state.heal_failed":"\u2717 TUI state automatic healing failed","tui.state.model_synced":"\u2713 Model preference synced to backend: {{model}}","tui.state.preferences_synced":"\u2713 Preferences synced to backend: {{updates}}","tui.state.preferences_validated":"\u2713 Local preferences validated: {{items}}","tui.state.model_not_found":"\u2717 Model does not exist, skipping sync: {{model}}","tui.state.agent_not_found":"\u2717 Agent does not exist, skipping sync: {{agent}}","permission.request":"Permission Request","permission.target":"Target","permission.select_action":"Select Action","permission.allow_once":"Allow Once","permission.allow_always":"Always Allow","permission.reject":"Reject","permission.input_prompt":"Please enter (y/a/n)","permission.allowed":"Allowed once","permission.always_allowed":"Always allowed","permission.rejected":"Rejected","question.agent_asking":"Agent Asking","question.question":"Question","question.title":"Title","question.options":"Options","question.custom_input":"Custom Input","question.answered":"Answered","tui.question.header":"Question {{current}}/{{total}}","tui.question.options":"Options:","tui.question.custom":"Custom Input","tui.question.prompt":"Question {{current}}/{{total}}> ","tui.question.invalid_input":"Invalid input, please re-enter","tui.question.completed":"\u2713 Completed answering {{count}} questions","tui.question.error":"\u2717 Question request failed","tui.question.cancelled":"Question cancelled","tui.question.hint.custom_enabled":"Tip: Enter option number or input custom text","tui.question.hint.custom_enabled_multiple":"Tip: Enter option number (multiple separated by comma, e.g. 1,3) or input custom text","tui.question.hint.custom_disabled":"Tip: Only valid option numbers can be entered","tui.question.hint.custom_disabled_multiple":"Tip: Only valid option numbers can be entered (multiple separated by comma, e.g. 1,3)","tui.permission.request_header":"Permission Request","tui.permission.type":"Type: {{type}}","tui.permission.targets":"Targets: {{targets}}","tui.permission.options":"Select Action:","tui.permission.once":"Allow Once","tui.permission.always":"Always Allow","tui.permission.reject":"Reject","tui.permission.prompt":"Permission confirmation (y/a/n)> ","tui.permission.invalid_input":"Invalid input, please enter y/a/n","tui.permission.replied":"\u2713 Permission request replied: {{reply}}","tui.permission.error":"\u2717 Permission request reply failed","tui.permission.cancelled":"Permission request cancelled","tui.at_mention.file_not_found":"\u2717 File not found: {{paths}}","debug.command.description":"Debugging and troubleshooting tools","debug.config.command.describe":"Show resolved configuration","debug.config.error.load_failed":"Failed to load configuration: {{error}}","debug.agent.command.describe":"Show agent configuration details","debug.agent.option.tool.description":"Tool ID to execute","debug.agent.option.params.description":"Tool params as JSON or JS object","debug.agent.error.not_found":"Agent {{agentName}} not found, run '{{command}} agent list' to list agents","debug.agent.tool.error.not_found":"Tool {{toolID}} not found for agent {{agentName}}","debug.agent.tool.error.disabled":"Tool {{toolID}} is disabled for agent {{agentName}}","debug.agent.tool.params.parse_error":"Failed to parse --params: JSON error: {{jsonError}}, Eval error: {{evalError}}","debug.agent.tool.params.must_be_object":"Tool params must be an object","debug.file.command.describe":"File system debugging utilities","debug.file.search.command.describe":"Search files by query","debug.file.search.positional.query.description":"Search query","debug.file.search.error":"File search failed: {{error}}","debug.file.read.command.describe":"Read file contents as JSON","debug.file.read.positional.path.description":"File path to read","debug.file.read.error":"File read failed: {{error}}","debug.file.status.command.describe":"Show file status information","debug.file.status.error":"File status failed: {{error}}","debug.file.list.command.describe":"List files in a directory","debug.file.list.positional.path.description":"Directory path to list","debug.file.list.error":"File list failed: {{error}}","debug.file.tree.command.describe":"Show directory tree","debug.file.tree.positional.dir.description":"Directory to tree","debug.file.tree.option.limit.description":"Limit number of results","debug.file.tree.error":"File tree failed: {{error}}","debug.lsp.command.describe":"LSP debugging utilities","debug.lsp.diagnostics.command.describe":"Get diagnostics for a file","debug.lsp.diagnostics.positional.file.description":"File path","debug.lsp.diagnostics.error":"Failed to get diagnostics: {{error}}","debug.lsp.symbols.command.describe":"Search workspace symbols","debug.lsp.symbols.positional.query.description":"Search query","debug.lsp.symbols.error":"Failed to search symbols: {{error}}","debug.lsp.document_symbols.command.describe":"Get symbols from a document","debug.lsp.document_symbols.positional.uri.description":"Document URI","debug.lsp.document_symbols.error":"Failed to get document symbols: {{error}}","debug.ripgrep.command.describe":"Ripgrep debugging utilities","debug.ripgrep.tree.command.describe":"Show file tree using ripgrep","debug.ripgrep.tree.option.limit.description":"Limit number of results","debug.ripgrep.tree.error":"File tree failed: {{error}}","debug.ripgrep.files.command.describe":"List files using ripgrep","debug.ripgrep.files.option.query.description":"Filter files by query","debug.ripgrep.files.option.glob.description":"Glob pattern to match","debug.ripgrep.files.option.limit.description":"Limit number of results","debug.ripgrep.files.error":"File listing failed: {{error}}","debug.ripgrep.search.command.describe":"Search file contents","debug.ripgrep.search.positional.pattern.description":"Search pattern","debug.ripgrep.search.option.glob.description":"File glob patterns","debug.ripgrep.search.option.limit.description":"Limit number of results","debug.ripgrep.search.error":"Search failed: {{error}}","debug.scrap.command.describe":"List all known projects","debug.skill.command.describe":"List all available skills","debug.skill.error.list_failed":"Failed to list skills: {{error}}","debug.snapshot.command.describe":"Snapshot debugging utilities","debug.snapshot.track.command.describe":"Track current snapshot state","debug.snapshot.track.error":"Snapshot track failed: {{error}}","debug.snapshot.patch.command.describe":"Show patch for a snapshot hash","debug.snapshot.patch.positional.hash.description":"Snapshot hash","debug.snapshot.patch.error":"Snapshot patch failed: {{error}}","debug.snapshot.diff.command.describe":"Show diff for a snapshot hash","debug.snapshot.diff.positional.hash.description":"Snapshot hash","debug.snapshot.diff.error":"Snapshot diff failed: {{error}}","debug.paths.command.describe":"Show global paths","debug.wait.command.describe":"Wait indefinitely (for debugging)","acp.server.started":"ACP server started successfully","acp.directory.resolved":"Working directory resolved: {{cwd}}","acp.error.start_failed":"ACP server start failed: {{error}}","acp.field.directory":"Directory","acp.field.worktree":"Worktree","acp.field.channel":"Channel","acp.field.host":"Host","acp.field.ws_url":"WS URL","acp.field.ws_path":"WS Path","acp.field.base_url":"Base URL","acp.field.timeout":"Timeout","acp.field.batch_size":"Batch Size","acp.field.batch_interval":"Batch Interval","acp.field.heartbeat":"Heartbeat","acp.field.debug":"Debug","acp.field.mode":"Mode","acp.field.protocol":"Protocol","acp.websocket.config":"WebSocket Config","acp.mode.stdio":"STDIO (JSON-RPC over stdin/stdout)","acp.mode.local":"LOCAL (Standard ACP via AgentSideConnection)","export.command.description":"Export session data as JSON","export.exporting":"Exporting session: {{sessionId}}","export.error.no_sessions":"No sessions found","export.error.failed":"Export failed: {{error}}","import.command.description":"Import session data from JSON file or URL","import.fetching_url":"Fetching data from URL: {{url}}","import.reading_file":"Reading file: {{file}}","import.error.fetch_failed":"Failed to fetch data: {{status}}","import.error.file_not_found":"File not found: {{file}}","import.error.invalid_format":"Invalid data format","import.success":"Session imported successfully: {{sessionId}}","import.error.failed":"Import failed: {{error}}","stats.command.description":"Show token usage and cost statistics","stats.option.days":"Show stats for the last N days","stats.option.tools":"Number of tools to show","stats.option.models":"Show model statistics","stats.loading":"Loading statistics...","stats.display_ready":"Statistics loaded","stats.overview":"Overview","stats.cost_tokens":"Cost & Tokens","stats.tool_usage":"Tool Usage","stats.metric.sessions":"Sessions","stats.metric.messages":"Messages","stats.metric.total_cost":"Total Cost","stats.metric.input":"Input Tokens","stats.metric.output":"Output Tokens","stats.metric.cache_read":"Cache Read","stats.metric.cache_write":"Cache Write","stats.table.header.metric":"Metric","stats.table.header.value":"Value","stats.table.header.tool":"Tool","stats.table.header.count":"Count","stats.table.header.percent":"Percent","stats.error.failed":"Failed to get statistics: {{error}}","update.command.description":"Update easbot to the latest or specific version","update.option.method":"Installation method (npm/pnpm/bun)","update.starting":"Updating easbot","update.current_version":"Current version: {{version}}","update.target_version":"Target version: {{version}}","update.already_latest":"Already at the latest version {{version}}","update.downloading":"Downloading new version...","update.success":"Update successful! Version: {{version}}","update.failed":"Update failed: {{error}}","update.error":"Update failed: {{error}}","update.latest_fetch_failed":"Failed to fetch latest version","update.invalid_version":"Invalid version: {{version}}","update.downgrade_warning":"Warning: Downgrading from {{from}} to {{to}}","auth.command.description":"Manage credentials","auth.command.list.description":"List configured providers","auth.command.login.description":"Login to a provider","auth.command.logout.description":"Logout from a provider","auth.option.key":"API Key","auth.list.title":"Configured Credentials","auth.list.empty":"No credentials configured","auth.list.error":"Failed to list credentials: {{error}}","auth.table.header.provider":"Provider","auth.table.header.type":"Type","auth.table.header.hint":"Hint","auth.login.key_required":"API Key is required","auth.login.key_hint":"Use --key <key> to provide your API Key","auth.login.logging_in":"Logging in to {{provider}}","auth.login.success":"Login successful: {{provider}}","gateway.command.description":"Manage Gateway service","gateway.command.start":"Start Gateway service","gateway.command.stop":"Stop Gateway service","gateway.command.restart":"Restart Gateway service","gateway.command.status":"Show Gateway status","gateway.command.config":"Manage Gateway configuration","gateway.command.config_show":"Show Gateway configuration","gateway.option.directory":"Working directory","gateway.option.port":"Service port","gateway.option.hostname":"Hostname","gateway.option.tls":"Enable TLS","gateway.option.tls_cert":"TLS certificate path","gateway.option.tls_key":"TLS key path","gateway.option.debug":"Enable debug mode","gateway.help.option":"Display Gateway command help information","gateway.directory.resolved":"Working directory: {{cwd}}","gateway.disabled":"Gateway service is disabled","gateway.stopped":"Gateway service stopped","gateway.restarting":"Restarting Gateway service...","gateway.restarted":"Gateway service restarted","gateway.shutdown.received":"Received {{signal}}, shutting down...","gateway.shutdown.completed":"Gateway service shutdown complete","gateway.server.started":"Gateway service started","gateway.status.heading":"Gateway Service Status","gateway.status.already_stopped":"Gateway service is already stopped","gateway.field.status":"Status","gateway.field.ws_url":"WebSocket URL","gateway.field.ws_path":"WebSocket Path","gateway.field.port":"Port","gateway.field.hostname":"Hostname","gateway.field.tls":"TLS","gateway.field.debug":"Debug Mode","gateway.field.error":"Error","gateway.config.heading":"Gateway Configuration","gateway.config.server":"Server Configuration","gateway.config.channels":"Channel Configuration","gateway.config.connection_pool":"Connection Pool Configuration","gateway.config.agent_registry":"Agent Registry Configuration","gateway.config.no_channels":"No channels configured","gateway.config.not_found":"Gateway configuration not found","gateway.error.start_failed":"Failed to start Gateway service: {{error}}","gateway.error.stop_failed":"Failed to stop Gateway service: {{error}}","gateway.error.restart_failed":"Failed to restart Gateway service: {{error}}","gateway.error.config_failed":"Failed to get Gateway configuration: {{error}}","gateway.help.examples":"Examples:","gateway.help.example.default":"Start with default configuration","gateway.help.example.port":"Start with specific port","gateway.help.example.hostname":"Start with specific hostname","gateway.help.example.stop":"Stop service","gateway.help.example.restart":"Restart service","gateway.help.example.config":"Show configuration","gateway.help.env":"Environment variables:","gateway.help.env.port":"Service port","gateway.help.env.hostname":"Hostname","gateway.help.env.tls":"Enable TLS","gateway.help.subcommand.start.after":`
|
|
19
|
+
Error [{{code}}]: {{message}}`,"tui.error.global.uncaughtException":"\u26A0\uFE0F Uncaught exception: {{error}}","tui.error.global.unhandledRejection":"\u26A0\uFE0F Unhandled Promise rejection: {{error}}","tui.shell.executing":"Executing Shell command...","tui.shell.success":"Shell command executed successfully","tui.shell.error":"Shell command execution failed: {{error}}","tui.shell.empty":"Shell command is empty","tui.shell.prompt":"$ ","tui.shell.confirm.title":"Allow local shell command execution in this session?","tui.shell.confirm.warning":"This will run commands on your machine (not gateway), which may delete files or leak secrets.","tui.shell.confirm.instruction":"Select Yes/No (arrow keys + Enter), Esc to cancel.","tui.shell.confirm.yes":"Yes","tui.shell.confirm.no":"No","tui.shell.enabled":"Local shell: Enabled for this session","tui.shell.disabled":"Local shell: Not enabled","tui.shell.cancelled":"Local shell: Cancelled","tui.shell.not_enabled":"Local shell: Not enabled for this session","tui.shell.command":"[Local] $ {{command}}","tui.shell.output":"[Local] {{output}}","tui.shell.exit":"[Local] Exit {{code}}{{signal}}","tui.shell.exit_signal":" (signal {{signal}})","tui.shell.permission.on":"Local shell: Enabled","tui.shell.permission.off":"Local shell: Disabled. Use /settings to modify permission settings","tui.shell.permission.ask":"Local shell: Authorization required. Enter y to enable, n to disable","tui.shell.permission.prompt":"Shell permission (y/n)> ","tui.shell.permission.invalid":"Invalid input. Please enter y or n","tui.shell.permission.updated":"Local shell permission updated: {{permission}}","tui.handler.context_mode.set":"Context mode updated: {{mode}}","tui.help.title":"Slash Commands","tui.help.section.basic":"Basic Commands","tui.help.command.help":"/help - Display this help","tui.help.command.status":"/status - Display system status","tui.help.command.command":"/command - List all available commands","tui.help.section.agent":"Agent Management","tui.help.command.agent":"/agent [id] - Switch to specified Agent or open selector","tui.help.section.session":"Session Management","tui.help.command.session":"/session [key] - Switch to specified session or open selector","tui.help.command.new":"/new - Create new empty session (preserves preferences)","tui.help.command.fork":"/fork - Fork current session (copies history)","tui.help.command.reset":"/reset - Reset current session","tui.help.section.model":"Model Management","tui.help.command.model":"/model [provider/model] - Set model or open selector","tui.help.section.settings":"Settings","tui.help.command.settings":"/settings - Open settings panel","tui.help.command.verbose":"/verbose <on|off> - Set verbose output","tui.help.command.thinking":"/thinking <level> - Set thinking mode","tui.help.section.operations":"Operations","tui.help.command.abort":"/abort - Abort current run","tui.help.command.clear":"/clear - Clear chat history","tui.help.command.compact":"/compact - Compact context (reduce token usage)","tui.help.section.skill":"Skill and MCP Management","tui.help.command.skill":"/skill [name] - Load specified Skill or open selector","tui.help.command.mcp":"/mcp - Display MCP prompts and select to execute","tui.help.section.exit":"Exit","tui.help.command.exit":"/exit (or /quit, /q) - Exit TUI","tui.help.section.local":"Local Commands","tui.help.command.local":"!<command> - Execute local shell command (requires confirmation)","tui.help.section.shortcuts":"Shortcuts","tui.help.shortcut.ctrl_c":"Ctrl+C - Clear input or exit","tui.help.shortcut.ctrl_d":"Ctrl+D - Exit (when editor is empty)","tui.help.shortcut.ctrl_l":"Ctrl+L - Open model selector","tui.help.shortcut.ctrl_p":"Ctrl+P - Open session selector","tui.help.shortcut.ctrl_g":"Ctrl+G - Open Agent selector","tui.help.shortcut.esc":"Esc - Cancel current operation","tui.command.help.description":"Display command help","tui.command.status.description":"Display system status","tui.command.command.description":"List all available commands","tui.command.commands.description":"Display help text (deprecated, use /command)","tui.command.agent.description":"Switch Agent or open selector","tui.command.session.description":"Switch session or open selector","tui.command.new.description":"Create new empty session (preserves current preferences)","tui.command.fork.description":"Fork current session (copies history to new session)","tui.command.reset.description":"Reset current session","tui.command.model.description":"Set model or open selector","tui.command.settings.description":"Open settings panel","tui.command.verbose.description":"Set verbose output (on/off)","tui.command.thinking.description":"Set thinking mode","tui.command.abort.description":"Abort current run","tui.command.clear.description":"Clear chat history","tui.command.compact.description":"Compact context (reduce token usage)","tui.command.skill.description":"Execute Skill or open selector","tui.command.mcp.description":"Execute MCP prompt or open selector","tui.command.exit.description":"Exit TUI (alias: quit, q)","tui.chatlog.user_prefix":"You","tui.chatlog.assistant_prefix":"Assistant","tui.chatlog.system_prefix":"System","tui.selector.model.title":"Select Model","tui.selector.model.placeholder":"Search models...","tui.selector.session.title":"Select Session","tui.selector.session.placeholder":"Search sessions...","tui.selector.agent.title":"Select Agent","tui.selector.agent.placeholder":"Search Agents...","tui.selector.skill.title":"Select Skill","tui.selector.skill.placeholder":"Search Skills...","tui.session.loading_agents":"Loading Agent list...","tui.session.agents_loaded":"Agent list loaded","tui.session.agents_failed":"\u2717 Failed to refresh Agent list: {{error}}","tui.session.loading_info":"Loading session information...","tui.session.info_loaded":"Session information loaded","tui.session.info_failed":"\u2717 Failed to refresh session information: {{error}}","tui.session.loading_history":"Loading history messages...","tui.session.history_loaded":"History messages loaded","tui.session.history_failed":"\u2717 Failed to load history messages: {{error}}","tui.session.switched":"\u2713 Switched to session: {{sessionId}}","tui.session.switch_failed":"\u2717 Failed to switch session: {{error}}","tui.session.aborting":"Aborting run...","tui.session.aborted":"\u2713 Current run aborted","tui.session.abort_failed":"\u2717 Failed to abort run: {{error}}","tui.status.label":"Status:","tui.status.idle":"Idle","tui.status.ready":"Ready","tui.status.error":"Error","tui.status.thinking":"Thinking...","tui.status.executing_tool":"Executing tool: {{tool}}","tui.status.tool_completed":"Tool execution completed","tui.status.tool_failed":"Tool execution failed","tui.status.receiving":"Receiving message...","tui.status.running":"Running...","tui.status.waiting":"Waiting...","tui.status.executing_step":"Executing step...","tui.status.step_completed":"Step completed","tui.status.waiting_permission":"Waiting for permission confirmation...","tui.status.waiting_answer":"Waiting for answer...","tui.status.sending":"Sending...","tui.status.connection.local":"Local Mode","tui.status.connection.gateway_connected":"Gateway Connected","tui.status.connection.gateway_disconnected":"Gateway Disconnected","tui.hint.input_cleared":"Input cleared, press Ctrl+C again to exit","tui.hint.press_ctrlc_exit":"Press Ctrl+C again to exit","tui.hint.show_thinking_on":"\u2713 Show Thinking turned on","tui.hint.show_thinking_off":"\u2713 Show Thinking turned off","tui.hint.tools_expanded":"Tool output expanded","tui.hint.tools_collapsed":"Tool output collapsed","tui.keyhints.model":"Model","tui.keyhints.agent":"Agent","tui.keyhints.session":"Session","tui.keyhints.thinking":"Thinking","tui.keyhints.tools":"Tools","tui.time.just_now":"Just now","tui.time.minutes_ago":"{{minutes}} minutes ago","tui.time.hours_ago":"{{hours}} hours ago","tui.time.days_ago":"{{days}} days ago","tui.system.welcome":"Welcome to EASBot TUI!","tui.system.help_hint":"Enter /help to view available commands","tui.system.tool_executing":"\u2699 Executing tool: {{tool}}","tui.system.tool_completed":"\u2713 Tool completed: {{tool}}","tui.system.tool_failed":"\u2717 Tool failed: {{tool}}","tui.system.thinking":"\u{1F4AD} Thinking: {{text}}","tui.system.agent_updated":"Agent updated: {{agentId}}","tui.system.error":"\u2717 Error: {{message}}","tui.system.no_session":"No active session","tui.system.thinking_mode":"Thinking mode: {{mode}}","tui.system.tools_output":"Tool output: {{mode}}","tui.system.on":"On","tui.system.off":"Off","tui.system.expanded":"Expanded","tui.system.collapsed":"Collapsed","tui.selector.model.error":"Failed to open model selector: {{error}}","tui.selector.session.error":"Failed to open session selector: {{error}}","tui.selector.agent.error":"Failed to open Agent selector: {{error}}","tui.selector.skill.error":"Failed to open Skill selector: {{error}}","tui.state.session.created":"Session created: {{title}}","tui.state.session.deleted":"Session deleted: {{title}}","tui.state.healed":"\u2713 TUI state automatically healed","tui.state.heal_failed":"\u2717 TUI state automatic healing failed","tui.state.model_synced":"\u2713 Model preference synced to backend: {{model}}","tui.state.preferences_synced":"\u2713 Preferences synced to backend: {{updates}}","tui.state.preferences_validated":"\u2713 Local preferences validated: {{items}}","tui.state.model_not_found":"\u2717 Model does not exist, skipping sync: {{model}}","tui.state.agent_not_found":"\u2717 Agent does not exist, skipping sync: {{agent}}","permission.request":"Permission Request","permission.target":"Target","permission.select_action":"Select Action","permission.allow_once":"Allow Once","permission.allow_always":"Always Allow","permission.reject":"Reject","permission.input_prompt":"Please enter (y/a/n)","permission.allowed":"Allowed once","permission.always_allowed":"Always allowed","permission.rejected":"Rejected","question.agent_asking":"Agent Asking","question.question":"Question","question.title":"Title","question.options":"Options","question.custom_input":"Custom Input","question.answered":"Answered","tui.question.header":"Question {{current}}/{{total}}","tui.question.options":"Options:","tui.question.custom":"Custom Input","tui.question.prompt":"Question {{current}}/{{total}}> ","tui.question.invalid_input":"Invalid input, please re-enter","tui.question.completed":"\u2713 Completed answering {{count}} questions","tui.question.error":"\u2717 Question request failed","tui.question.cancelled":"Question cancelled","tui.question.hint.custom_enabled":"Tip: Enter option number or input custom text","tui.question.hint.custom_enabled_multiple":"Tip: Enter option number (multiple separated by comma, e.g. 1,3) or input custom text","tui.question.hint.custom_disabled":"Tip: Only valid option numbers can be entered","tui.question.hint.custom_disabled_multiple":"Tip: Only valid option numbers can be entered (multiple separated by comma, e.g. 1,3)","tui.permission.request_header":"Permission Request","tui.permission.type":"Type: {{type}}","tui.permission.targets":"Targets: {{targets}}","tui.permission.options":"Select Action:","tui.permission.once":"Allow Once","tui.permission.always":"Always Allow","tui.permission.reject":"Reject","tui.permission.prompt":"Permission confirmation (y/a/n)> ","tui.permission.invalid_input":"Invalid input, please enter y/a/n","tui.permission.replied":"\u2713 Permission request replied: {{reply}}","tui.permission.error":"\u2717 Permission request reply failed","tui.permission.cancelled":"Permission request cancelled","tui.at_mention.file_not_found":"\u2717 File not found: {{paths}}","debug.command.description":"Debugging and troubleshooting tools","debug.config.command.describe":"Show resolved configuration","debug.config.error.load_failed":"Failed to load configuration: {{error}}","debug.agent.command.describe":"Show agent configuration details","debug.agent.option.tool.description":"Tool ID to execute","debug.agent.option.params.description":"Tool params as JSON or JS object","debug.agent.error.not_found":"Agent {{agentName}} not found, run '{{command}} agent list' to list agents","debug.agent.tool.error.not_found":"Tool {{toolID}} not found for agent {{agentName}}","debug.agent.tool.error.disabled":"Tool {{toolID}} is disabled for agent {{agentName}}","debug.agent.tool.params.parse_error":"Failed to parse --params: JSON error: {{jsonError}}, Eval error: {{evalError}}","debug.agent.tool.params.must_be_object":"Tool params must be an object","debug.file.command.describe":"File system debugging utilities","debug.file.search.command.describe":"Search files by query","debug.file.search.positional.query.description":"Search query","debug.file.search.error":"File search failed: {{error}}","debug.file.read.command.describe":"Read file contents as JSON","debug.file.read.positional.path.description":"File path to read","debug.file.read.error":"File read failed: {{error}}","debug.file.status.command.describe":"Show file status information","debug.file.status.error":"File status failed: {{error}}","debug.file.list.command.describe":"List files in a directory","debug.file.list.positional.path.description":"Directory path to list","debug.file.list.error":"File list failed: {{error}}","debug.file.tree.command.describe":"Show directory tree","debug.file.tree.positional.dir.description":"Directory to tree","debug.file.tree.option.limit.description":"Limit number of results","debug.file.tree.error":"File tree failed: {{error}}","debug.lsp.command.describe":"LSP debugging utilities","debug.lsp.diagnostics.command.describe":"Get diagnostics for a file","debug.lsp.diagnostics.positional.file.description":"File path","debug.lsp.diagnostics.error":"Failed to get diagnostics: {{error}}","debug.lsp.symbols.command.describe":"Search workspace symbols","debug.lsp.symbols.positional.query.description":"Search query","debug.lsp.symbols.error":"Failed to search symbols: {{error}}","debug.lsp.document_symbols.command.describe":"Get symbols from a document","debug.lsp.document_symbols.positional.uri.description":"Document URI","debug.lsp.document_symbols.error":"Failed to get document symbols: {{error}}","debug.ripgrep.command.describe":"Ripgrep debugging utilities","debug.ripgrep.tree.command.describe":"Show file tree using ripgrep","debug.ripgrep.tree.option.limit.description":"Limit number of results","debug.ripgrep.tree.error":"File tree failed: {{error}}","debug.ripgrep.files.command.describe":"List files using ripgrep","debug.ripgrep.files.option.query.description":"Filter files by query","debug.ripgrep.files.option.glob.description":"Glob pattern to match","debug.ripgrep.files.option.limit.description":"Limit number of results","debug.ripgrep.files.error":"File listing failed: {{error}}","debug.ripgrep.search.command.describe":"Search file contents","debug.ripgrep.search.positional.pattern.description":"Search pattern","debug.ripgrep.search.option.glob.description":"File glob patterns","debug.ripgrep.search.option.limit.description":"Limit number of results","debug.ripgrep.search.error":"Search failed: {{error}}","debug.scrap.command.describe":"List all known projects","debug.skill.command.describe":"List all available skills","debug.skill.error.list_failed":"Failed to list skills: {{error}}","debug.snapshot.command.describe":"Snapshot debugging utilities","debug.snapshot.track.command.describe":"Track current snapshot state","debug.snapshot.track.error":"Snapshot track failed: {{error}}","debug.snapshot.patch.command.describe":"Show patch for a snapshot hash","debug.snapshot.patch.positional.hash.description":"Snapshot hash","debug.snapshot.patch.error":"Snapshot patch failed: {{error}}","debug.snapshot.diff.command.describe":"Show diff for a snapshot hash","debug.snapshot.diff.positional.hash.description":"Snapshot hash","debug.snapshot.diff.error":"Snapshot diff failed: {{error}}","debug.paths.command.describe":"Show global paths","debug.wait.command.describe":"Wait indefinitely (for debugging)","acp.server.started":"ACP server started successfully","acp.directory.resolved":"Working directory resolved: {{cwd}}","acp.error.start_failed":"ACP server start failed: {{error}}","acp.field.directory":"Directory","acp.field.worktree":"Worktree","acp.field.channel":"Channel","acp.field.host":"Host","acp.field.ws_url":"WS URL","acp.field.ws_path":"WS Path","acp.field.base_url":"Base URL","acp.field.timeout":"Timeout","acp.field.batch_size":"Batch Size","acp.field.batch_interval":"Batch Interval","acp.field.heartbeat":"Heartbeat","acp.field.debug":"Debug","acp.field.proxy":"Proxy","acp.field.mode":"Mode","acp.field.protocol":"Protocol","acp.websocket.config":"WebSocket Config","acp.mode.stdio":"STDIO (JSON-RPC over stdin/stdout)","acp.mode.local":"LOCAL (Standard ACP via AgentSideConnection)","export.command.description":"Export session data as JSON","export.exporting":"Exporting session: {{sessionId}}","export.error.no_sessions":"No sessions found","export.error.failed":"Export failed: {{error}}","import.command.description":"Import session data from JSON file or URL","import.fetching_url":"Fetching data from URL: {{url}}","import.reading_file":"Reading file: {{file}}","import.error.fetch_failed":"Failed to fetch data: {{status}}","import.error.file_not_found":"File not found: {{file}}","import.error.invalid_format":"Invalid data format","import.success":"Session imported successfully: {{sessionId}}","import.error.failed":"Import failed: {{error}}","stats.command.description":"Show token usage and cost statistics","stats.option.days":"Show stats for the last N days","stats.option.tools":"Number of tools to show","stats.option.models":"Show model statistics","stats.loading":"Loading statistics...","stats.display_ready":"Statistics loaded","stats.overview":"Overview","stats.cost_tokens":"Cost & Tokens","stats.tool_usage":"Tool Usage","stats.metric.sessions":"Sessions","stats.metric.messages":"Messages","stats.metric.total_cost":"Total Cost","stats.metric.input":"Input Tokens","stats.metric.output":"Output Tokens","stats.metric.cache_read":"Cache Read","stats.metric.cache_write":"Cache Write","stats.table.header.metric":"Metric","stats.table.header.value":"Value","stats.table.header.tool":"Tool","stats.table.header.count":"Count","stats.table.header.percent":"Percent","stats.error.failed":"Failed to get statistics: {{error}}","update.command.description":"Update easbot to the latest or specific version","update.option.method":"Installation method (npm/pnpm/bun)","update.starting":"Updating easbot","update.current_version":"Current version: {{version}}","update.target_version":"Target version: {{version}}","update.already_latest":"Already at the latest version {{version}}","update.downloading":"Downloading new version...","update.success":"Update successful! Version: {{version}}","update.failed":"Update failed: {{error}}","update.error":"Update failed: {{error}}","update.latest_fetch_failed":"Failed to fetch latest version","update.invalid_version":"Invalid version: {{version}}","update.downgrade_warning":"Warning: Downgrading from {{from}} to {{to}}","auth.command.description":"Manage credentials","auth.command.list.description":"List configured providers","auth.command.login.description":"Login to a provider","auth.command.logout.description":"Logout from a provider","auth.option.key":"API Key","auth.list.title":"Configured Credentials","auth.list.empty":"No credentials configured","auth.list.error":"Failed to list credentials: {{error}}","auth.table.header.provider":"Provider","auth.table.header.type":"Type","auth.table.header.hint":"Hint","auth.login.key_required":"API Key is required","auth.login.key_hint":"Use --key <key> to provide your API Key","auth.login.logging_in":"Logging in to {{provider}}","auth.login.success":"Login successful: {{provider}}","gateway.command.description":"Manage Gateway service","gateway.command.start":"Start Gateway service","gateway.command.stop":"Stop Gateway service","gateway.command.restart":"Restart Gateway service","gateway.command.status":"Show Gateway status","gateway.command.config":"Manage Gateway configuration","gateway.command.config_show":"Show Gateway configuration","gateway.option.directory":"Working directory","gateway.option.port":"Service port","gateway.option.hostname":"Hostname","gateway.option.tls":"Enable TLS","gateway.option.tls_cert":"TLS certificate path","gateway.option.tls_key":"TLS key path","gateway.option.debug":"Enable debug mode","gateway.help.option":"Display Gateway command help information","gateway.directory.resolved":"Working directory: {{cwd}}","gateway.disabled":"Gateway service is disabled","gateway.stopped":"Gateway service stopped","gateway.restarting":"Restarting Gateway service...","gateway.restarted":"Gateway service restarted","gateway.shutdown.received":"Received {{signal}}, shutting down...","gateway.shutdown.completed":"Gateway service shutdown complete","gateway.server.started":"Gateway service started","gateway.status.heading":"Gateway Service Status","gateway.status.already_stopped":"Gateway service is already stopped","gateway.field.status":"Status","gateway.field.ws_url":"WebSocket URL","gateway.field.ws_path":"WebSocket Path","gateway.field.port":"Port","gateway.field.hostname":"Hostname","gateway.field.tls":"TLS","gateway.field.debug":"Debug Mode","gateway.field.proxy":"Proxy","gateway.field.error":"Error","gateway.config.heading":"Gateway Configuration","gateway.config.server":"Server Configuration","gateway.config.channels":"Channel Configuration","gateway.config.connection_pool":"Connection Pool Configuration","gateway.config.agent_registry":"Agent Registry Configuration","gateway.config.no_channels":"No channels configured","gateway.config.not_found":"Gateway configuration not found","gateway.error.start_failed":"Failed to start Gateway service: {{error}}","gateway.error.stop_failed":"Failed to stop Gateway service: {{error}}","gateway.error.restart_failed":"Failed to restart Gateway service: {{error}}","gateway.error.config_failed":"Failed to get Gateway configuration: {{error}}","gateway.help.examples":"Examples:","gateway.help.example.default":"Start with default configuration","gateway.help.example.port":"Start with specific port","gateway.help.example.hostname":"Start with specific hostname","gateway.help.example.stop":"Stop service","gateway.help.example.restart":"Restart service","gateway.help.example.config":"Show configuration","gateway.help.env":"Environment variables:","gateway.help.env.port":"Service port","gateway.help.env.hostname":"Hostname","gateway.help.env.tls":"Enable TLS","gateway.help.subcommand.start.after":`
|
|
20
20
|
Other options (inherited from gateway):
|
|
21
21
|
-D, --directory <path> Working directory
|
|
22
22
|
-p, --port <number> Service port
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {a}from'./chunk-LFYBZHOI.mjs';import {a as a$1}from'./chunk-
|
|
1
|
+
import {a}from'./chunk-LFYBZHOI.mjs';import {a as a$1}from'./chunk-SF52HNJQ.mjs';import E from'path';import j from'fs/promises';import t from'zod';import {NamedError,lazy,PKG,Filesystem,Fetch,Shell}from'@easbot/utils';import {ZipReader,BlobReader,BlobWriter}from'@zip.js/zip.js';var P;(c=>{let $=a.create({service:"ripgrep"}),A=t.object({elapsed:t.object({secs:t.number(),nanos:t.number(),human:t.string()}),searches:t.number(),searches_with_match:t.number(),bytes_searched:t.number(),bytes_printed:t.number(),matched_lines:t.number(),matches:t.number()}),S=t.object({type:t.literal("begin"),data:t.object({path:t.object({text:t.string()})})});c.Match=t.object({type:t.literal("match"),data:t.object({path:t.object({text:t.string()}),lines:t.object({text:t.string()}),line_number:t.number(),absolute_offset:t.number(),submatches:t.array(t.object({match:t.object({text:t.string()}),start:t.number(),end:t.number()}))})});let M=t.object({type:t.literal("end"),data:t.object({path:t.object({text:t.string()}),binary_offset:t.number().nullable(),stats:A})}),D=t.object({type:t.literal("summary"),data:t.object({elapsed_total:t.object({human:t.string(),nanos:t.number(),secs:t.number()}),stats:A})}),O=t.union([S,c.Match,M,D]),W={"arm64-darwin":{platform:"aarch64-apple-darwin",extension:"tar.gz"},"arm64-linux":{platform:"aarch64-unknown-linux-gnu",extension:"tar.gz"},"x64-darwin":{platform:"x86_64-apple-darwin",extension:"tar.gz"},"x64-linux":{platform:"x86_64-unknown-linux-musl",extension:"tar.gz"},"x64-win32":{platform:"x86_64-pc-windows-msvc",extension:"zip"}};c.ExtractionFailedError=NamedError.create("RipgrepExtractionFailedError",t.object({filepath:t.string(),stderr:t.string()})),c.UnsupportedPlatformError=NamedError.create("RipgrepUnsupportedPlatformError",t.object({platform:t.string()})),c.DownloadFailedError=NamedError.create("RipgrepDownloadFailedError",t.object({url:t.string(),status:t.number()}));let L=lazy(async()=>{let e=await PKG.which("rg");if(e){if((await j.stat(e).catch(()=>{}))?.isFile())return {filepath:Filesystem.resolve(e)};$.warn("bun.which returned invalid rg path",{filepath:e});}let l=Filesystem.resolve(E.join(a$1.Path.bin,"rg"+(process.platform==="win32"?".exe":"")));if(!await PKG.file(l).exists()){let i=`${process.arch}-${process.platform}`,f=W[i];if(!f)throw new c.UnsupportedPlatformError({platform:i});let r="14.1.1",b=`ripgrep-${r}-${f.platform}.${f.extension}`,p=`https://github.com/BurntSushi/ripgrep/releases/download/${r}/${b}`,m=await Fetch.get(p,{responseType:"arrayBuffer"});if(!m.ok)throw new c.DownloadFailedError({url:p,status:m.status});let u=m.data,n=E.join(a$1.Path.bin,b);if(await PKG.write(n,new Uint8Array(u)),f.extension==="tar.gz"){let o=["tar","-xzf",n,"--strip-components=1"];i.endsWith("-darwin")&&o.push("--include=*/rg"),i.endsWith("-linux")&&o.push("--wildcards","*/rg");let a=await Shell.run(void 0,o.join(" "),{cwd:a$1.Path.bin});if(a.code!==0)throw new c.ExtractionFailedError({filepath:l,stderr:a.stderr})}if(f.extension==="zip"){let a=await PKG.file(n).arrayBuffer(),d=new ZipReader(new BlobReader(new Blob([a]))),g=await d.getEntries(),w;for(let v of g)if(v.filename.endsWith("rg.exe")){w=v;break}if(!w)throw new c.ExtractionFailedError({filepath:n,stderr:"rg.exe not found in zip archive"});let x=await w.getData(new BlobWriter);if(!x)throw new c.ExtractionFailedError({filepath:n,stderr:"Failed to extract rg.exe from zip archive"});let C=await x.arrayBuffer();await PKG.write(l,new Uint8Array(C)),await d.close();}await j.unlink(n),i.endsWith("-win32")||await j.chmod(l,493);}return {filepath:l}});async function N(){let{filepath:e}=await L();return e}c.filepath=N;async function*H(e){e.signal?.throwIfAborted();let l=await N(),s=["--files","--glob=!.git/*"];if(e.follow&&s.push("--follow"),e.hidden!==false&&s.push("--hidden"),e.maxDepth!==void 0&&s.push(`--max-depth=${e.maxDepth}`),e.glob)for(let r of e.glob)s.push(`--glob=${r}`);if(!(await j.stat(e.cwd).catch(()=>{}))?.isDirectory())throw Object.assign(new Error(`No such file or directory: '${e.cwd}'`),{code:"ENOENT",errno:-2,path:e.cwd});let f=(await PKG.run([l,...s],{cwd:e.cwd})).stdout.trim().split(/\r?\n/).filter(Boolean);for(let r of f)e.signal?.throwIfAborted(),r&&(yield r);}c.files=H;async function Q(e){$.info("tree",e);let l=await Array.fromAsync(c.files({cwd:e.cwd,signal:e.signal}));function s(n,o){let a=n.children.get(o);if(a)return a;let d={name:o,children:new Map};return n.children.set(o,d),d}let i={children:new Map};for(let n of l){if(n.includes(".easbot"))continue;let o=n.split(E.sep);if(o.length<2)continue;let a=i;for(let d of o.slice(0,-1))a=s(a,d);}function f(n){let o=0;for(let a of n.children.values())o+=1+f(a);return o}let r=f(i),b=e.limit??r,p=[],m=[];for(let n of Array.from(i.children.values()).sort((o,a)=>o.name.localeCompare(a.name)))m.push({node:n,path:n.name});let u=0;for(let n=0;n<m.length&&u<b;n++){let o=m[n];if(!o)continue;let{node:a,path:d}=o;p.push(d),u++;for(let g of Array.from(a.children.values()).sort((w,x)=>w.name.localeCompare(x.name)))m.push({node:g,path:`${d}/${g.name}`});}return r>u&&p.push(`[${r-u} truncated]`),p.join(`
|
|
2
2
|
`)}c.tree=Q;async function R(e){let l=await N(),s=["--json","--hidden","--glob=!.git/*"];if(e.follow&&s.push("--follow"),e.glob)for(let r of e.glob)s.push(`--glob=${r}`);e.limit&&s.push(`--max-count=${e.limit}`),s.push("--"),s.push(e.pattern);let i=await PKG.run([l,...s],{cwd:e.cwd});return i.code!==0?[]:i.stdout.trim().split(/\r?\n/).filter(Boolean).map(r=>JSON.parse(r)).map(r=>O.parse(r)).filter(r=>r.type==="match").map(r=>r.data)}c.search=R;})(P||(P={}));export{P as a};
|