@easbot/agent 0.2.24 → 0.2.25
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-D5I5IUMI.mjs → acp-STZJ75XV.mjs} +1 -1
- package/dist/chunks/adapter-loader-BLTYHARQ.mjs +1 -0
- package/dist/chunks/{agent-TM2AYB67.mjs → agent-4EMYYWV6.mjs} +1 -1
- package/dist/chunks/{agent-R3VIV25Y.mjs → agent-FF52NW42.mjs} +1 -1
- package/dist/chunks/app-CGZZFC54.mjs +1 -0
- package/dist/chunks/bootstrap-GVMMOFUK.mjs +1 -0
- package/dist/chunks/{build-program-KUCF2N7D.mjs → build-program-43NDEGM2.mjs} +1 -1
- package/dist/chunks/bus-PFFRRCH3.mjs +1 -0
- package/dist/chunks/chunk-ARCMKYQI.mjs +2 -0
- package/dist/chunks/{chunk-3AJJMHKA.mjs → chunk-CVTJJBGW.mjs} +1 -1
- package/dist/chunks/chunk-GMEJX6PC.mjs +2 -0
- package/dist/chunks/{chunk-AD7K5VE2.mjs → chunk-I6MBTO75.mjs} +1 -1
- package/dist/chunks/{chunk-LGMOIUYA.mjs → chunk-I7A5JGO5.mjs} +1 -1
- package/dist/chunks/{chunk-TSX5PZSW.mjs → chunk-IHHFG47N.mjs} +1 -1
- package/dist/chunks/chunk-KLJ7PPSA.mjs +2 -0
- package/dist/chunks/{chunk-PKBPWDSV.mjs → chunk-KY3H2HGJ.mjs} +292 -274
- package/dist/chunks/{chunk-MMU3Z6V2.mjs → chunk-LFNGHYRC.mjs} +1 -1
- package/dist/chunks/{chunk-5QKMSVQL.mjs → chunk-QJ6QTASU.mjs} +1 -1
- package/dist/chunks/{chunk-MHY26EXB.mjs → chunk-WN2HAJBB.mjs} +7 -7
- package/dist/chunks/{command-5JVJ7SVL.mjs → command-H77IO5J2.mjs} +1 -1
- package/dist/chunks/compaction-LQXOGRP7.mjs +1 -0
- package/dist/chunks/config-J54DTNPX.mjs +1 -0
- package/dist/chunks/{debug-MW53KD7T.mjs → debug-55VJ74IW.mjs} +3 -3
- package/dist/chunks/file-KEMX6XWX.mjs +1 -0
- package/dist/chunks/gateway-45LKZAQS.mjs +16 -0
- package/dist/chunks/{generate-NXGIMILE.mjs → generate-QMA5OAOD.mjs} +1 -1
- package/dist/chunks/github-EJCNXJ6F.mjs +33 -0
- package/dist/chunks/global-KAF6JHVQ.mjs +1 -0
- package/dist/chunks/{import-JYLIHQCA.mjs → import-4TX5SVFQ.mjs} +1 -1
- package/dist/chunks/installation-CGMLIGLA.mjs +1 -0
- package/dist/chunks/instance-YUOFE3Q3.mjs +1 -0
- package/dist/chunks/loader-YOPK5OTL.mjs +1 -0
- package/dist/chunks/loader-ZTWTX2GS.mjs +1 -0
- package/dist/chunks/lsp-YNF5BCPV.mjs +1 -0
- package/dist/chunks/{mcp-AHMVQDPC.mjs → mcp-BGU4XS34.mjs} +1 -1
- package/dist/chunks/models-TN65RCBA.mjs +1 -0
- package/dist/chunks/{pr-4WGOFODT.mjs → pr-XD7C7PDJ.mjs} +1 -1
- package/dist/chunks/preferences-3HCTNG2J.mjs +1 -0
- package/dist/chunks/project-HH3IL3QQ.mjs +1 -0
- package/dist/chunks/prompt-W7772MHB.mjs +1 -0
- package/dist/chunks/provider-ULN4YD2M.mjs +1 -0
- package/dist/chunks/registry-TL5F5F7C.mjs +1 -0
- package/dist/chunks/revert-TZSK52JS.mjs +1 -0
- package/dist/chunks/ripgrep-E3GWWA2V.mjs +1 -0
- package/dist/chunks/{run-HRRJXIVI.mjs → run-KL5CA5M6.mjs} +2 -2
- package/dist/chunks/scheduler-SCM4SRS2.mjs +1 -0
- package/dist/chunks/server-Z6BORWAL.mjs +1 -0
- package/dist/chunks/session-BHXYW2JD.mjs +1 -0
- package/dist/chunks/session-PMZOQPFQ.mjs +1 -0
- package/dist/chunks/{session-HO5727MY.mjs → session-REKMEA3V.mjs} +1 -1
- package/dist/chunks/share-JFZ3O2BX.mjs +1 -0
- package/dist/chunks/snapshot-V23GRQBM.mjs +1 -0
- package/dist/chunks/storage-DKQ7S6QX.mjs +1 -0
- package/dist/chunks/{tui-UTCI4ERG.mjs → tui-HU55FGHV.mjs} +1 -1
- package/dist/chunks/tui-YGASP4NS.mjs +1 -0
- package/dist/chunks/types-WN4LZEB5.mjs +1 -0
- package/dist/chunks/update-IOQCRELU.mjs +2 -0
- package/dist/cli.mjs +5 -5
- package/package.json +13 -13
- package/dist/chunks/adapter-loader-OQIF5F24.mjs +0 -1
- package/dist/chunks/app-BQOCNLYW.mjs +0 -1
- package/dist/chunks/bootstrap-FETK53UT.mjs +0 -1
- package/dist/chunks/bus-CWP3DYEO.mjs +0 -1
- package/dist/chunks/chunk-E6P3STWN.mjs +0 -2
- package/dist/chunks/chunk-NCHKGEE3.mjs +0 -2
- package/dist/chunks/chunk-SLZ3HAH6.mjs +0 -2
- package/dist/chunks/compaction-BD7Q4GQO.mjs +0 -1
- package/dist/chunks/config-OZOLTE2Y.mjs +0 -1
- package/dist/chunks/file-N5R4HKSU.mjs +0 -1
- package/dist/chunks/gateway-3QKRAMO2.mjs +0 -16
- package/dist/chunks/github-L3XIDEEQ.mjs +0 -33
- package/dist/chunks/global-QYCQXNCR.mjs +0 -1
- package/dist/chunks/installation-HRFNXAKB.mjs +0 -1
- package/dist/chunks/instance-6RDAH4IX.mjs +0 -1
- package/dist/chunks/loader-7UB7WQFK.mjs +0 -1
- package/dist/chunks/loader-DRTQXYLN.mjs +0 -1
- package/dist/chunks/lsp-U7VGUPLT.mjs +0 -1
- package/dist/chunks/models-G2QBJX43.mjs +0 -1
- package/dist/chunks/preferences-354RYR2J.mjs +0 -1
- package/dist/chunks/project-NIXIQTRB.mjs +0 -1
- package/dist/chunks/prompt-F3Z2QBDR.mjs +0 -1
- package/dist/chunks/provider-LO2XXG33.mjs +0 -1
- package/dist/chunks/registry-MDPD3RHV.mjs +0 -1
- package/dist/chunks/revert-GE5BMDGN.mjs +0 -1
- package/dist/chunks/ripgrep-G73RIQ5F.mjs +0 -1
- package/dist/chunks/scheduler-2CD7LGEJ.mjs +0 -1
- package/dist/chunks/server-CHTYZF5W.mjs +0 -1
- package/dist/chunks/session-2W7DKSRJ.mjs +0 -1
- package/dist/chunks/session-V4RGFQKO.mjs +0 -1
- package/dist/chunks/share-OCIAAEUC.mjs +0 -1
- package/dist/chunks/snapshot-V556Q4I5.mjs +0 -1
- package/dist/chunks/storage-P6DUW44Y.mjs +0 -1
- package/dist/chunks/tui-2FSZJGP2.mjs +0 -1
- package/dist/chunks/types-KIFC2C2M.mjs +0 -1
- package/dist/chunks/update-IEZVD4U7.mjs +0 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {a as a$3}from'./chunk-LAHYVX5K.mjs';import {a as a$4}from'./chunk-
|
|
1
|
+
import {a as a$3}from'./chunk-LAHYVX5K.mjs';import {a as a$4}from'./chunk-QJ6QTASU.mjs';import'./chunk-VII7JKGB.mjs';import {g,e,d,k as k$1,i,b,h,c,a as a$5}from'./chunk-M3K32WJV.mjs';import {mb,P,wa,La}from'./chunk-KY3H2HGJ.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-CVTJJBGW.mjs';import'./chunk-IHHFG47N.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import'./chunk-ARCMKYQI.mjs';import {a as a$2}from'./chunk-EEWP2VV6.mjs';import'./chunk-GMEJX6PC.mjs';import'./chunk-KLJ7PPSA.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-I7A5JGO5.mjs';import {a as a$1}from'./chunk-LFYBZHOI.mjs';import'./chunk-I6MBTO75.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-X6ISXWBN.mjs';import'commander';import T from'path';var a=a$1.create({service:"cli-command-acp"});async function k(i,e){let t=await mb.getACPServerConfig();a.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 s=e.channel.toLowerCase();Object.values(P).includes(s)?(r.channel=s,a.debug("CLI override: channel",{value:r.channel})):a.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,a.debug("CLI override: port",{value:r.port})):a.warn("Invalid port from command line",{value:e.port})),e.hostname!==void 0&&(r.hostname=e.hostname,a.debug("CLI override: hostname",{value:r.hostname})),e.timeout!==void 0&&(e.timeout>0?(r.timeout=e.timeout,a.debug("CLI override: timeout",{value:r.timeout})):a.warn("Invalid timeout from command line",{value:e.timeout})),e.hostname!==void 0||e.port!==void 0){let s=e.hostname??t.hostname??"127.0.0.1",l=e.port??t.port??3e3;t.ws&&(r.ws={...t.ws,url:`ws://${s}:${l}`}),t.http&&(r.http={...t.http,baseUrl:`http://${s}:${l}`}),a.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),a.debug("CLI override: ws.timeout and http.timeout updated",{timeout:e.timeout}));let c={...t,...r};return a.debug("Merged ACP configuration",{channel:c.channel,port:c.port,hostname:c.hostname,timeout:c.timeout}),c}async function O(i$1,e,t){a.info("Starting ACP service",{channel:e.channel,port:e.port,hostname:e.hostname,debug:t.config.debug}),await wa.init({directory:i$1,printLogs:t.config.print_logs,logLevel:t.config.log_level,channel:e.channel});await wa.ensureACPService(e);console.log(""),console.log(d(a$2("acp.server.started"))),console.log(k$1(60)),console.log(i(a$2("acp.field.directory"),i$1,15)),console.log(i(a$2("acp.field.worktree"),La.project.worktree||"N/A",15)),console.log(i(a$2("acp.field.channel"),e.channel,15));let c$1=b();switch(e.channel){case "websocket":{let s,l="/";if(e.ws?.url)try{let p=new URL(e.ws.url),d=p.port||"3000",m=p.hostname;l=p.pathname||"/",s=`ws://${m}:${d}${l==="/"?"":l}`;}catch{s=e.ws.url;}else s=`ws://${e.hostname}:${e.port}`;console.log(i(a$2("acp.field.ws_url"),s,15)),console.log(i(a$2("acp.field.ws_path"),l,15)),e.ws?(console.log(h(a$2("acp.websocket.config"))),console.log(i(a$2("acp.field.timeout"),`${e.ws.timeout??e.timeout}ms`,15)),console.log(i(a$2("acp.field.batch_size"),`${e.ws.batchSize??10}`,15)),console.log(i(a$2("acp.field.batch_interval"),`${e.ws.batchInterval??50}ms`,15)),console.log(i(a$2("acp.field.heartbeat"),`${e.ws.heartbeatInterval??3e4}ms`,15))):console.log(i(a$2("acp.field.timeout"),`${e.timeout}ms`,15));break}case "http":e.http?.baseUrl?console.log(i(a$2("acp.field.base_url"),e.http.baseUrl,15)):console.log(i(a$2("acp.field.host"),`${e.hostname}:${e.port}`,15)),e.http?.timeout?console.log(i(a$2("acp.field.timeout"),`${e.http.timeout}ms`,15)):console.log(i(a$2("acp.field.timeout"),`${e.timeout}ms`,15));break;case "stdio":console.log(i(a$2("acp.field.mode"),a$2("acp.mode.stdio"),15)),console.log(i(a$2("acp.field.timeout"),`${e.timeout}ms`,15));break;case "local":console.log(i(a$2("acp.field.mode"),a$2("acp.mode.local"),15)),console.log(i(a$2("acp.field.protocol"),a$2("acp.protocol"),15)),console.log(i(a$2("acp.field.timeout"),`${e.timeout}ms`,15));break;default:console.log(i(a$2("acp.field.host"),`${e.hostname}:${e.port}`,15)),console.log(i(a$2("acp.field.timeout"),`${e.timeout}ms`,15));}console.log(i(a$2("acp.field.debug"),t.config.debug?c(c$1,a$5.success,a$2("common.enabled")):c(c$1,a$5.muted,a$2("common.disabled")),15)),console.log(k$1(60)),console.log(""),a.info("ACPServer started successfully"),x();}function x(){let i=process.env.EASBOT_RUN_MODE==="ephemeral"||!process.stdin.isTTY&&process.env.EASBOT_RUN_MODE!=="persistent",e=async t=>{a.debug(`Received ${t}, shutting down gracefully...`),i||console.log(`
|
|
2
2
|
${a$2("acp.shutdown.received",{vars:{signal:t}})}`);try{await wa.destroy(),a.debug("EasbotAdapter state destroyed"),i||console.log(d(a$2("acp.shutdown.completed")));}catch(r){a.error("Error during shutdown",{error:r instanceof Error?r.message:String(r)});}i?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")&&(a.info("stdout pipe broken, exiting"),e("stdout-broken").catch(()=>{i?process.kill(process.pid,"SIGKILL"):process.exit(0);}));});}async function U(i,e$1,t){a.debug("ACP command executed",{options:e$1});let r=t?.config?.debug??false,c=t?.config?.print_logs??false,s=t?.config?.log_level??"INFO";a.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:s});try{let l=t.config.directory?T.resolve(t.config.directory):process.cwd();a.debug("Working directory resolved",{directory:l});let p=a$3(l);if(!p.valid)throw a.error("Working directory validation failed",{directory:l,error:p.error}),new Error(`Invalid working directory: ${p.error}`);let d=p.normalizedPath;a.debug("Working directory validated",{validatedDirectory:d}),console.log(g(a$2("acp.directory.resolved",{vars:{cwd:d}}))),await a$4(d,async()=>{let m=await k(d,e$1);if(a.debug("ACP server configuration",{channel:m.channel,port:m.port,hostname:m.hostname,timeout:m.timeout,enabled:m.enabled}),!m.enabled){a.warn("ACP server is disabled by configuration"),console.log(g(a$2("acp.disabled")));return}await O(d,m,t),a.info("ACP server started successfully");});}catch(l){a.error("Failed to start ACP server",{error:l instanceof Error?l.message:String(l)}),console.error(e(a$2("acp.error.start_failed",{vars:{error:l instanceof Error?l.message:String(l)}}))),process.exit(1);}}function le(i,e){let t=i.command("acp").description(a$2("acp.command.description")).addHelpText("after",`
|
|
3
3
|
|
|
4
4
|
${a$2("acp.help.examples")}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{T as getACPClientsConfig,S as getACPServerConfig,W as getAcpAgentName,U as getAcpAgentRuntimeConfig,V as getAcpModelConfig,R as loadACPConfig}from'./chunk-KY3H2HGJ.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-CVTJJBGW.mjs';import'./chunk-IHHFG47N.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import'./chunk-ARCMKYQI.mjs';import'./chunk-EEWP2VV6.mjs';import'./chunk-GMEJX6PC.mjs';import'./chunk-KLJ7PPSA.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-I7A5JGO5.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-I6MBTO75.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-X6ISXWBN.mjs';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import {e}from'./chunk-M3K32WJV.mjs';import {j,ea,k,
|
|
1
|
+
import {e}from'./chunk-M3K32WJV.mjs';import {j,ea,k,Ja}from'./chunk-KY3H2HGJ.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-CVTJJBGW.mjs';import'./chunk-IHHFG47N.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import'./chunk-ARCMKYQI.mjs';import {a as a$1}from'./chunk-EEWP2VV6.mjs';import'./chunk-GMEJX6PC.mjs';import'./chunk-KLJ7PPSA.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-I7A5JGO5.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import'./chunk-I6MBTO75.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"}),ea.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 Ja.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 Ja.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'./chunk-CQVEAYYW.mjs';import {a as a$3}from'./chunk-
|
|
1
|
+
import {a as a$4}from'./chunk-TYD2M4SP.mjs';import'./chunk-FXOUIXIL.mjs';import'./chunk-CQVEAYYW.mjs';import {a as a$3}from'./chunk-QJ6QTASU.mjs';import {l,d,e,h,i,b,c,a as a$5}from'./chunk-M3K32WJV.mjs';import'./chunk-KY3H2HGJ.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-CVTJJBGW.mjs';import'./chunk-IHHFG47N.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import'./chunk-ARCMKYQI.mjs';import {a as a$2}from'./chunk-EEWP2VV6.mjs';import'./chunk-GMEJX6PC.mjs';import'./chunk-KLJ7PPSA.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-I7A5JGO5.mjs';import {a as a$1}from'./chunk-LFYBZHOI.mjs';import'./chunk-I6MBTO75.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-WN2HAJBB.mjs';import'./chunk-CQVEAYYW.mjs';import'./chunk-KY3H2HGJ.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-CVTJJBGW.mjs';import'./chunk-IHHFG47N.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import'./chunk-ARCMKYQI.mjs';import'./chunk-EEWP2VV6.mjs';import'./chunk-GMEJX6PC.mjs';import'./chunk-KLJ7PPSA.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-I7A5JGO5.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-I6MBTO75.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-X6ISXWBN.mjs';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{a as bootstrap,b as bootstrapProgram}from'./chunk-QJ6QTASU.mjs';import'./chunk-KY3H2HGJ.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-CVTJJBGW.mjs';import'./chunk-IHHFG47N.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import'./chunk-ARCMKYQI.mjs';import'./chunk-EEWP2VV6.mjs';import'./chunk-GMEJX6PC.mjs';import'./chunk-KLJ7PPSA.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-I7A5JGO5.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-I6MBTO75.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-LFNGHYRC.mjs';import {a as a$1}from'./chunk-XPF2LJT2.mjs';import {La,ua}from'./chunk-KY3H2HGJ.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-CVTJJBGW.mjs';import'./chunk-IHHFG47N.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import'./chunk-ARCMKYQI.mjs';import {a as a$2}from'./chunk-EEWP2VV6.mjs';import'./chunk-GMEJX6PC.mjs';import {b as b$2}from'./chunk-KLJ7PPSA.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-I7A5JGO5.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import'./chunk-I6MBTO75.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||La.worktree,e=ua({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-HU55FGHV.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-KL5CA5M6.mjs')).registerRunCommand(n,o);}},{commands:[{name:"generate",description:"\u751F\u6210 OpenAPI \u89C4\u8303",hasSubcommands:false}],register:async({program:n,ctx:o})=>{(await import('./generate-QMA5OAOD.mjs')).registerGenerateCommand(n,o);}},{commands:[{name:"agent",description:"Agent \u7BA1\u7406\u547D\u4EE4",hasSubcommands:true}],register:async({program:n,ctx:o})=>{(await import('./agent-FF52NW42.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-REKMEA3V.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-BGU4XS34.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-STZJ75XV.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-55VJ74IW.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-45LKZAQS.mjs')).registerGatewayCommand(n,o);}},{commands:[{name:"auth",description:"Provider \u51ED\u636E\u7BA1\u7406",hasSubcommands:true}],register:async({program:n,ctx:o})=>{(await import('./auth-2I7U24YF.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-BGH24SO2.mjs')).registerExportCommand(n,o);}},{commands:[{name:"github",description:"GitHub Agent \u7BA1\u7406",hasSubcommands:true}],register:async({program:n,ctx:o})=>{(await import('./github-EJCNXJ6F.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-4TX5SVFQ.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-XD7C7PDJ.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-MILDLIZD.mjs')).registerStatsCommand(n,o);}},{commands:[{name:"update",description:"\u66F4\u65B0 Easbot CLI",hasSubcommands:false}],register:async({program:n,ctx:o})=>{(await import('./update-IOQCRELU.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-KY3H2HGJ.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-CVTJJBGW.mjs';import'./chunk-IHHFG47N.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import'./chunk-ARCMKYQI.mjs';import'./chunk-EEWP2VV6.mjs';import'./chunk-GMEJX6PC.mjs';import'./chunk-KLJ7PPSA.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-I7A5JGO5.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-I6MBTO75.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-X6ISXWBN.mjs';
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a}from'./chunk-LFYBZHOI.mjs';import {a as a$1}from'./chunk-I6MBTO75.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
|
+
`)}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};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import {formatLocalISOCompact}from'@easbot/utils';import {CommandMetadataSchema}from'@easbot/plugin';export{CommandMetadataSchema as a}from'@easbot/plugin';async function h(n){let{ConfigMarkdown:t}=await import('./markdown-Z6UXVBNP.mjs'),e=await t.parse(n);return {metadata:CommandMetadataSchema.parse(e.data),content:e.content}}function x(n,t,e="command"){return {name:n.name,description:n.description,agent:n.agent,model:n.model,source:e,scope:n.scope,commandType:n.commandType??"prompt",hints:n.hints??[],hidden:n.hidden??false,execute:async(o,i)=>{let m=w(t,o);return {title:n.name,metadata:{sessionID:i.sessionID},output:m,success:true,parts:[{type:"text",text:m}]}}}}async function D(n,t="command"){let{glob:e}=await import('glob'),{Filesystem:o}=await import('@easbot/utils');if(!await o.isDir(n))return [];let i=await e("*.md",{cwd:n,absolute:true,nodir:true,follow:false,dot:false}),m=[];for(let r of i){let{ConfigMarkdown:d}=await import('./markdown-Z6UXVBNP.mjs'),{Bus:u}=await import('./bus-
|
|
1
|
+
import {formatLocalISOCompact}from'@easbot/utils';import {CommandMetadataSchema}from'@easbot/plugin';export{CommandMetadataSchema as a}from'@easbot/plugin';async function h(n){let{ConfigMarkdown:t}=await import('./markdown-Z6UXVBNP.mjs'),e=await t.parse(n);return {metadata:CommandMetadataSchema.parse(e.data),content:e.content}}function x(n,t,e="command"){return {name:n.name,description:n.description,agent:n.agent,model:n.model,source:e,scope:n.scope,commandType:n.commandType??"prompt",hints:n.hints??[],hidden:n.hidden??false,execute:async(o,i)=>{let m=w(t,o);return {title:n.name,metadata:{sessionID:i.sessionID},output:m,success:true,parts:[{type:"text",text:m}]}}}}async function D(n,t="command"){let{glob:e}=await import('glob'),{Filesystem:o}=await import('@easbot/utils');if(!await o.isDir(n))return [];let i=await e("*.md",{cwd:n,absolute:true,nodir:true,follow:false,dot:false}),m=[];for(let r of i){let{ConfigMarkdown:d}=await import('./markdown-Z6UXVBNP.mjs'),{Bus:u}=await import('./bus-PFFRRCH3.mjs'),{Session:p}=await import('./session-BHXYW2JD.mjs'),{NamedError:C}=await import('@easbot/utils');await d.parse(r).then(a=>{let s=CommandMetadataSchema.parse(a.data),f=x(s,a.content,t);m.push(f);}).catch(a=>{let s=a instanceof Error?a.message:`Failed to load command ${r}`;u.publish(p.Event.Error,{error:new C.Unknown({message:s}).toObject()});});}return m}function g(n){return n instanceof Date?formatLocalISOCompact(n):Array.isArray(n)||n!==null&&typeof n=="object"&&n.constructor===Object?JSON.stringify(n,null,2):String(n)}function w(n,t){return typeof t=="string"?n.replace(/\{\{ARGUMENTS\}\}/gi,t):n.replace(/\{\{(\w+)\}\}/gi,(e,o)=>{let i=o.toUpperCase();if(i==="ARGUMENTS")return JSON.stringify(t);let m=t[o]??t[i];return m===void 0?`{{${o}}}`:g(m)})}function I(n,t){let{init:e,isEnabled:o,...i}=t;return {...i,name:n,isEnabled:o,init:e?async m=>({isEnabled:(await e(m)).isEnabled??(typeof o=="function"?await o():o)}):void 0}}export{h as b,x as c,D as d,w as e,I as f};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a as a$2,b}from'./chunk-KLJ7PPSA.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import {a as a$1}from'./chunk-I6MBTO75.mjs';import _ from'path';import d from'fs/promises';import t from'zod';import {lazy,Fetch}from'@easbot/utils';var n;(r=>{let g=a.create({service:"models.dev"}),s=_.join(a$1.Path.cache,"models.json");r.Model=t.object({id:t.string(),name:t.string(),family:t.string().optional(),release_date:t.string(),attachment:t.boolean(),reasoning:t.boolean(),temperature:t.boolean(),tool_call:t.boolean(),interleaved:t.union([t.literal(true),t.object({field:t.enum(["reasoning_content","reasoning_details"])}).strict()]).optional(),cost:t.object({input:t.number(),output:t.number(),cache_read:t.number().optional(),cache_write:t.number().optional(),context_over_200k:t.object({input:t.number(),output:t.number(),cache_read:t.number().optional(),cache_write:t.number().optional()}).optional()}).optional(),limit:t.object({context:t.number(),input:t.number().optional(),output:t.number()}),modalities:t.object({input:t.array(t.enum(["text","audio","image","video","pdf"])),output:t.array(t.enum(["text","audio","image","video","pdf"]))}).optional(),experimental:t.boolean().optional(),status:t.enum(["alpha","beta","deprecated"]).optional(),options:t.record(t.string(),t.any()),headers:t.record(t.string(),t.string()).optional(),provider:t.object({npm:t.string()}).optional(),variants:t.record(t.string(),t.record(t.string(),t.any())).optional()}),r.Provider=t.object({api:t.string().optional(),name:t.string(),env:t.array(t.string()),id:t.string(),npm:t.string().optional(),models:t.record(t.string(),r.Model)});function a$3(){return a$2.EASBOT_MODELS_URL||"https://models.dev"}r.Data=lazy(async()=>{let e=a$2.EASBOT_MODELS_PATH??s,p=await d.readFile(e,"utf-8").then(i=>JSON.parse(i)).catch(()=>{});if(p)return p;let c=await import('./models-snapshot-XTWYGG3T.mjs').then(i=>i.snapshot).catch(()=>{});return c||(a$2.EASBOT_DISABLE_MODELS_FETCH?{}:(await Fetch.get(a$3())).data)});async function E(){return await(0, r.Data)()}r.get=E;async function v(){try{let e=await Fetch.get(a$3(),{headers:{"User-Agent":`EasBot/${b.getVersion()}`},responseType:"text"});e.ok&&(await d.writeFile(s,e.data),r.Data.reset());}catch(e){g.warn("Failed to refresh models from models.dev, using cached or snapshot data",{error:e instanceof Error?e.message:String(e),url:a$3()});}}r.refresh=v;})(n||(n={}));function z(){a$2.EASBOT_DISABLE_MODELS_FETCH||(n.refresh(),setInterval(async()=>{await n.refresh();},60*1e3*60).unref());}
|
|
2
|
+
export{n as a,z as b};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {mkdir,readFile,readdir,rm,writeFile}from'fs/promises';import s from'path';import {xdgData,xdgCache,xdgConfig,xdgState}from'xdg-basedir';import O from'os';import {Filesystem}from'@easbot/utils';var p={name:"@easbot/agent",version:"0.2.
|
|
1
|
+
import {mkdir,readFile,readdir,rm,writeFile}from'fs/promises';import s from'path';import {xdgData,xdgCache,xdgConfig,xdgState}from'xdg-basedir';import O from'os';import {Filesystem}from'@easbot/utils';var p={name:"@easbot/agent",version:"0.2.25",description:"Core Agent for the easbot monorepo ecosystem",type:"module",bin:{easbot:"./dist/cli.mjs"},scripts:{dev:"cross-env NODE_ENV=development tsx src/cli.ts -- tui",start:"cross-env NODE_ENV=production node dist/cli.mjs tui --new",build:"tsup --env.NODE_ENV production",test:"vitest","test:run":"vitest run","test:ui":"vitest --ui","test:watch":"vitest --watch","test:coverage":"vitest run --coverage","test:unit":"vitest run --config ./vitest.unit.config.ts","test:unit:watch":"vitest --config ./vitest.unit.config.ts","test:integration":"vitest run --config ./vitest.integration.config.ts","test:integration:watch":"vitest --config ./vitest.integration.config.ts","test:e2e":"vitest run --config ./vitest.e2e.config.ts","test:e2e:watch":"vitest --config ./vitest.e2e.config.ts",lint:"biome check .","lint:fix":"biome check --write .","lint:fix:unsafe":"biome check --write --unsafe ./src","lint:report":"biome check --reporter=summary .",format:"biome format .","format:fix":"biome format --write .","type-check":"tsc --noEmit",clean:"npx rimraf dist node_modules",prepare:"echo 'agent: Environment ready for CLI usage'","publish:npm":"bash scripts/publish.sh","publish:npm:win":"powershell -ExecutionPolicy Bypass -File scripts/publish.ps1"},keywords:["ai","agent","eas","bot","automation"],author:"houjallen",license:"MIT",publishConfig:{access:"public"},repository:{type:"git",url:"https://github.com/houjallen/easbot.git",directory:"packages/agent"},homepage:"https://github.com/houjallen/easbot/tree/main/packages/agent#readme",bugs:{url:"https://github.com/houjallen/easbot/issues"},files:["dist","README.md","README.en.md","LICENSE"],dependencies:{"@agentclientprotocol/sdk":"^0.21.1","@ai-sdk/alibaba":"^1.0.23","@ai-sdk/amazon-bedrock":"^4.0.105","@ai-sdk/anthropic":"^3.0.77","@ai-sdk/azure":"^3.0.64","@ai-sdk/cerebras":"^2.0.51","@ai-sdk/cohere":"3.0.35","@ai-sdk/deepinfra":"^2.0.51","@ai-sdk/deepseek":"^2.0.35","@ai-sdk/gateway":"^3.0.114","@ai-sdk/google":"^3.0.73","@ai-sdk/google-vertex":"^4.0.128","@ai-sdk/groq":"^3.0.39","@ai-sdk/mistral":"^3.0.37","@ai-sdk/openai":"^3.0.63","@ai-sdk/openai-compatible":"^2.0.47","@ai-sdk/perplexity":"^3.0.33","@ai-sdk/provider":"^3.0.10","@ai-sdk/provider-utils":"^4.0.27","@ai-sdk/togetherai":"^2.0.51","@ai-sdk/vercel":"^2.0.49","@ai-sdk/xai":"^3.0.90","@aws-sdk/credential-providers":"^3.1047.0","@clack/prompts":"^1.4.0","@easbot/codebase":"workspace:*","@easbot/gateway":"workspace:*","@easbot/local-model-sdk":"workspace:*","@easbot/memory":"workspace:*","@easbot/mcp":"workspace:*","@easbot/note":"workspace:*","@easbot/ollama-sdk":"workspace:*","@easbot/plugin":"workspace:*","@easbot/sdk":"workspace:*","@easbot/tui":"workspace:*","@easbot/types":"workspace:*","@easbot/utils":"workspace:*","@hono/node-server":"^2.0.2","@hono/node-ws":"^1.3.1","@hono/standard-validator":"^0.2.2","@hono/zod-validator":"^0.7.6","@modelcontextprotocol/sdk":"^1.29.0","@openrouter/ai-sdk-provider":"^2.9.0","@parcel/watcher":"^2.5.6","@standard-schema/spec":"^1.1.0","@wasmer/wasi":"^1.2.2","@zip.js/zip.js":"^2.8.26",ai:"^6.0.182","ai-gateway-provider":"^3.1.3",ajv:"^8.20.0",axios:"^1.16.1","bash-parser":"^0.5.0","bonjour-service":"^1.4.0",chalk:"^5.6.2",clipboardy:"^5.3.1",commander:"^14.0.3","decimal.js":"^10.6.0",dotenv:"^17.4.2",diff:"^9.0.0","drizzle-orm":"^0.45.2","fast-check":"^4.8.0",fuzzysort:"^3.1.0","gitlab-ai-provider":"^6.6.0",glob:"^13.0.6","google-auth-library":"^10.6.2","gray-matter":"^4.0.3",hono:"^4.12.18","hono-openapi":"^1.3.0",ignore:"^7.0.5","jieba-wasm":"^2.4.0",jiti:"^2.7.0","jsonc-parser":"^3.3.1","lru-cache":"^11.3.6",minimatch:"^10.2.5","node-gyp":"^12.3.0","node-html-parser":"^7.1.0","node-pty":"^1.1.0",open:"^11.0.0",remeda:"^2.34.1","tree-sitter-bash":"^0.25.1",turndown:"^7.2.4",ulid:"^3.0.2",undici:"^8.3.0","vscode-jsonrpc":"^8.2.1","vscode-languageserver-types":"^3.17.5",which:"^6.0.1","why-is-node-running":"^3.2.2",ws:"^8.20.1","xdg-basedir":"5.1.0",zod:"^4.4.3","zod-to-json-schema":"^3.25.2"},devDependencies:{"@actions/core":"^3.0.1","@actions/github":"^9.1.1","@octokit/graphql":"^9.0.3","@octokit/rest":"^22.0.1","@octokit/webhooks-types":"^7.6.1","@types/node":"^25.8.0","@types/turndown":"^5.0.6","@types/which":"^3.0.4","@types/ws":"^8.18.1","@vitest/coverage-v8":"^4.1.6",esbuild:"^0.28.0","esbuild-plugin-alias":"^0.2.1",tsup:"^8.5.1",tsx:"^4.22.0",typescript:"^6.0.3",vitest:"^4.1.6"}};var l="easbot",d=Filesystem.normalize(s.join(xdgData,l)),S=Filesystem.normalize(s.join(xdgCache,l)),z=Filesystem.normalize(s.join(xdgConfig,l)),N=Filesystem.normalize(s.join(xdgState,l)),g;(e=>{e.Path={get home(){return Filesystem.normalize(process.env.EASBOT_TEST_HOME||O.homedir())},data:d,bin:Filesystem.normalize(s.join(d,"bin")),log:Filesystem.normalize(s.join(d,"log")),cache:S,config:z,state:N};function B(){return (process.env.PATH||process.env.Path||"")+s.delimiter+e.Path.bin}e.getPathWithBin=B;let t=null,o=null;async function b(){if(t)return t;if(process.env.EASBOT_VERSION)return t=process.env.EASBOT_VERSION,t;try{t=p.version||"local";}catch{t="local";}return t||"local"}function f(){if(t)return t;if(process.env.EASBOT_VERSION)return t=process.env.EASBOT_VERSION,t;try{t=p.version||"local";}catch{t="local";}return t||"local"}e.getVersion=f;function u(){if(o)return o;if(process.env.EASBOT_CHANNEL)return o=process.env.EASBOT_CHANNEL,o;let i=f();return i==="local"||i.includes("dev")?o="local":i.includes("beta")||i.includes("alpha")?o="preview":o="latest",o||"local"}e.getChannel=u;function C(){return u()==="local"}e.isLocal=C;function H(){return u()==="preview"}e.isPreview=H;let h=false,n=null;async function V(){if(!h)return n||(n=(async()=>{await b(),await Promise.all([mkdir(e.Path.data,{recursive:true}),mkdir(e.Path.config,{recursive:true}),mkdir(e.Path.state,{recursive:true}),mkdir(e.Path.log,{recursive:true}),mkdir(e.Path.bin,{recursive:true}),mkdir(e.Path.cache,{recursive:true})]).then(()=>{let c=process.env.PATH||process.env.Path||"";process.env.PATH=c+s.delimiter+e.Path.bin,process.env.EASBOT_DATA_PATH=e.Path.data,process.env.EASBOT_CONFIG_PATH=e.Path.config,process.env.EASBOT_STATE_PATH=e.Path.state,process.env.EASBOT_LOG_PATH=e.Path.log,process.env.EASBOT_BIN_PATH=e.Path.bin,process.env.EASBOT_CACHE_PATH=e.Path.cache;});let i="1",m=s.join(e.Path.cache,"version");if(await readFile(m,"utf-8").catch(()=>"0")!==i){try{let c=await readdir(e.Path.cache);await Promise.all(c.map(k=>rm(s.join(e.Path.cache,k),{recursive:!0,force:!0})));}catch{}await writeFile(m,i);}h=true;})(),n)}e.init=V;})(g||(g={}));
|
|
2
2
|
export{g as a};
|
|
@@ -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-I6MBTO75.mjs';import {c,d}from'./chunk-X6ISXWBN.mjs';import s from'path';import a$2 from'fs/promises';import {NamedError,lazy,Filesystem,PKG,$ as $$1,Lock}from'@easbot/utils';import E from'zod';import {glob}from'glob';var $;(J=>{let d$1=a.create({service:"storage"});J.NotFoundError=NamedError.create("NotFoundError",E.object({message:E.string()}));let O=[async n=>{let o=s.resolve(n,"../project");if(await Filesystem.isDir(o))for await(let i of new PKG.Glob("*").scan({cwd:o})){d$1.info(`migrating project ${i}`);let t=i,r=s.join(o,i),e="/";if(t!=="global"){let g=await glob("storage/session/message/*/*.json",{cwd:s.join(o,i),absolute:true});for(let c of g)if(e=(await a$2.readFile(c,"utf-8").then(m=>JSON.parse(m))).path?.root??"",e)break;if(!e||!await Filesystem.isDir(e))continue;let[u]=await $$1`git rev-list --max-parents=0 --all`.quiet().nothrow().cwd(e).text().then(c=>c.split(`
|
|
2
2
|
`).filter(Boolean).map(w=>w.trim()).toSorted());if(!u)continue;t=u,await PKG.write(s.join(n,"project",t+".json"),JSON.stringify({id:u,vcs:"git",worktree:e,time:{created:Date.now(),initialized:Date.now()}})),d$1.info(`migrating sessions for project ${t}`);for await(let c of new PKG.Glob("storage/session/info/*.json").scan({cwd:r,absolute:true})){let w=s.join(n,"session",t,s.basename(c));d$1.info("copying",{sessionFile:c,dest:w});let m=await a$2.readFile(c,"utf-8").then(p=>JSON.parse(p));await a$2.writeFile(w,JSON.stringify(m)),d$1.info(`migrating messages for session ${m.id}`);for await(let p of new PKG.Glob(`storage/session/message/${m.id}/*.json`).scan({cwd:r,absolute:true})){let S=s.join(n,"message",m.id,s.basename(p));d$1.info("copying",{msgFile:p,dest:S});let h=await a$2.readFile(p,"utf-8").then(j=>JSON.parse(j));await a$2.writeFile(S,JSON.stringify(h)),d$1.info(`migrating parts for message ${h.id}`);for await(let j of new PKG.Glob(`storage/session/part/${m.id}/${h.id}/*.json`).scan({cwd:r,absolute:true})){let T=s.join(n,"part",h.id,s.basename(j)),P=await PKG.file(j).json();d$1.info("copying",{partFile:j,dest:T}),await PKG.write(T,JSON.stringify(P));}}}}}},async n=>{for await(let o of new PKG.Glob("session/*/*.json").scan({cwd:n,absolute:true})){let i=await PKG.file(o).json();if(!i.projectID||!i.summary?.diffs)continue;let{diffs:t}=i.summary;await PKG.write(s.join(n,"session_diff",i.id+".json"),JSON.stringify(t)),await PKG.write(s.join(n,"session",i.projectID,i.id+".json"),JSON.stringify({...i,summary:{additions:t.reduce((r,e)=>r+e.additions,0),deletions:t.reduce((r,e)=>r+e.deletions,0)}}));}}],l=lazy(async()=>{let n=s.join(a$1.Path.data,"storage");await a$2.mkdir(n,{recursive:true});let o=s.join(n,"migration"),i=await a$2.readFile(o,"utf-8").then(t=>parseInt(t,10)).catch(()=>0);for(let t=i;t<O.length;t++){d$1.info("running migration",{index:t});let r=O[t];r&&(await r(n).catch(()=>d$1.error("failed to run migration",{index:t})),await a$2.writeFile(o,(t+1).toString(),"utf-8"));}return {dir:n}});async function M(n){let o=await l().then(t=>t.dir),i=s.join(o,...n)+".json";return y(async()=>{await a$2.unlink(i).catch(()=>{});})}J.remove=M;async function R(n){let o=await l().then(t=>t.dir),i=s.join(o,...n)+".json";return y(async()=>{var e=[];try{let t=c(e,await Lock.read(i));let r=await a$2.readFile(i,"utf-8");return JSON.parse(r)}catch(g){var u=g,c$1=true;}finally{d(e,u,c$1);}})}J.read=R;async function A(n,o){let i=await l().then(r=>r.dir),t=s.join(i,...n)+".json";return y(async()=>{var g=[];try{let r=c(g,await Lock.write(t));let e=await a$2.readFile(t,"utf-8").then(m=>JSON.parse(m));o(e);await a$2.writeFile(t,JSON.stringify(e,null,2),"utf-8");return e}catch(u){var c$1=u,w=true;}finally{d(g,c$1,w);}})}J.update=A;async function B(n,o){let i=await l().then(r=>r.dir),t=s.join(i,...n)+".json";return y(async()=>{var e=[];try{let r=c(e,await Lock.write(t));await a$2.mkdir(s.dirname(t),{recursive:!0});await a$2.writeFile(t,JSON.stringify(o,null,2),"utf-8");}catch(g){var u=g,c$1=true;}finally{d(e,u,c$1);}})}J.write=B;async function y(n){return n().catch(o=>{if(!(o instanceof Error))throw o;let i=o;throw i.code==="ENOENT"?new J.NotFoundError({message:`Resource not found: ${i.path}`}):o})}let k="**/*";async function q(n){let o=await l().then(i=>i.dir);try{let t=(await glob(k,{cwd:s.join(o,...n),nodir:!0})).map(r=>[...n,...r.slice(0,-5).split(s.sep)]);return t.sort(),t}catch{return []}}J.list=q;})($||($={}));export{$ as a};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import {a as a$1}from'./chunk-
|
|
1
|
+
import {a as a$1}from'./chunk-I7A5JGO5.mjs';import {a}from'./chunk-LFYBZHOI.mjs';var n=a.create({service:"tui-state-storage"}),i={toolsExpanded:true,showThinking:true,verboseLevel:"off",thinkingLevel:"low",messageLimit:50,localShellPermission:"ask"};async function h(o){try{let e=await a$1.read(["tui",o]),t={toolsExpanded:typeof e.toolsExpanded=="boolean"?e.toolsExpanded:i.toolsExpanded,showThinking:typeof e.showThinking=="boolean"?e.showThinking:i.showThinking,verboseLevel:e.verboseLevel==="on"||e.verboseLevel==="off"?e.verboseLevel:i.verboseLevel,thinkingLevel:e.thinkingLevel==="off"||e.thinkingLevel==="low"||e.thinkingLevel==="medium"||e.thinkingLevel==="high"?e.thinkingLevel:i.thinkingLevel,messageLimit:e.messageLimit===25||e.messageLimit===50||e.messageLimit===100?e.messageLimit:i.messageLimit,localShellPermission:e.localShellPermission==="on"||e.localShellPermission==="off"||e.localShellPermission==="ask"?e.localShellPermission:i.localShellPermission,contextMode:e.contextMode==="general"||e.contextMode==="coder"?e.contextMode:void 0,model:e.model,agent:e.agent,sessionId:e.sessionId};return n.debug("TUI state loaded",{sessionId:o,state:t}),t}catch(e){return e instanceof a$1.NotFoundError?n.debug("TUI state not found, using defaults",{sessionId:o}):n.warn("Failed to load TUI state, using defaults",{sessionId:o,error:e}),{...i}}}async function r(o,e){try{await a$1.write(["tui",o],e),n.debug("TUI state saved",{sessionId:o,state:e});}catch(t){n.error("Failed to save TUI state",{sessionId:o,error:t});}}async function c(o){if(!o.currentSessionId){n.warn("Cannot save TUI state: no session ID");return}let e={toolsExpanded:o.toolsExpanded,showThinking:o.showThinking,thinkingLevel:o.thinkingLevel,verboseLevel:o.verboseLevel,messageLimit:o.messageLimit,localShellPermission:o.localShellPermission,contextMode:o.contextMode,model:o.sessionInfo.model,agent:o.agent||void 0,sessionId:o.currentSessionId};await r(o.currentSessionId,e);}export{h as a,c as b};
|
|
@@ -0,0 +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-I6MBTO75.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
|
+
export{i as a,M as b};
|