@easbot/agent 0.2.24 → 0.2.26
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-MXBWTEWQ.mjs} +2 -2
- package/dist/chunks/adapter-loader-3EN56P7R.mjs +1 -0
- package/dist/chunks/{agent-TM2AYB67.mjs → agent-OH7OBL37.mjs} +1 -1
- package/dist/chunks/{agent-R3VIV25Y.mjs → agent-OTRULLOV.mjs} +1 -1
- package/dist/chunks/app-4O5CFCEA.mjs +1 -0
- package/dist/chunks/{auth-2I7U24YF.mjs → auth-DHIUZUBT.mjs} +1 -1
- package/dist/chunks/bootstrap-2VLPO562.mjs +1 -0
- package/dist/chunks/{build-program-KUCF2N7D.mjs → build-program-6IX5ZB7E.mjs} +1 -1
- package/dist/chunks/bus-4LDPSAHL.mjs +1 -0
- package/dist/chunks/{chunk-LGMOIUYA.mjs → chunk-3SWLJTIF.mjs} +1 -1
- package/dist/chunks/chunk-5Z4ZZTNB.mjs +2 -0
- package/dist/chunks/{chunk-AD7K5VE2.mjs → chunk-77AU67VS.mjs} +1 -1
- package/dist/chunks/{chunk-MHY26EXB.mjs → chunk-JL7MUUWI.mjs} +8 -8
- package/dist/chunks/{chunk-TSX5PZSW.mjs → chunk-KCJQKAMU.mjs} +1 -1
- package/dist/chunks/chunk-KFKXAXPS.mjs +2 -0
- package/dist/chunks/{chunk-EEWP2VV6.mjs → chunk-NQDXG75V.mjs} +4 -4
- package/dist/chunks/{chunk-MMU3Z6V2.mjs → chunk-OWD2RLZG.mjs} +1 -1
- package/dist/chunks/{chunk-3AJJMHKA.mjs → chunk-PPTUNIYA.mjs} +1 -1
- package/dist/chunks/{chunk-PKBPWDSV.mjs → chunk-RWJKYXLR.mjs} +242 -224
- package/dist/chunks/chunk-UHGU3KUN.mjs +2 -0
- package/dist/chunks/{chunk-5QKMSVQL.mjs → chunk-Y63CDMY3.mjs} +1 -1
- package/dist/chunks/{command-5JVJ7SVL.mjs → command-SJGOCWCR.mjs} +1 -1
- package/dist/chunks/compaction-XRW2CSDJ.mjs +1 -0
- package/dist/chunks/config-UX7KSX2Y.mjs +1 -0
- package/dist/chunks/{confirm-dialog-AGHMTHWU.mjs → confirm-dialog-XBLCGOEC.mjs} +1 -1
- package/dist/chunks/{debug-MW53KD7T.mjs → debug-KPPALGWN.mjs} +3 -3
- package/dist/chunks/{export-BGH24SO2.mjs → export-I4GL3OUG.mjs} +1 -1
- package/dist/chunks/file-QLEZZKRK.mjs +1 -0
- package/dist/chunks/gateway-XPOSOE2L.mjs +16 -0
- package/dist/chunks/{generate-NXGIMILE.mjs → generate-SXE5ACCV.mjs} +1 -1
- package/dist/chunks/github-6I6QNGSD.mjs +33 -0
- package/dist/chunks/global-E7NJBJBC.mjs +1 -0
- package/dist/chunks/{import-JYLIHQCA.mjs → import-V5U5WAWX.mjs} +1 -1
- package/dist/chunks/installation-HXWUC3GX.mjs +1 -0
- package/dist/chunks/instance-SYMW2VFW.mjs +1 -0
- package/dist/chunks/loader-OIXMXUWE.mjs +1 -0
- package/dist/chunks/loader-ULZVW25Y.mjs +1 -0
- package/dist/chunks/lsp-TF3HQGNE.mjs +1 -0
- package/dist/chunks/{mcp-AHMVQDPC.mjs → mcp-6G3LUTNY.mjs} +1 -1
- package/dist/chunks/mcp-7RT2JOII.mjs +1 -0
- package/dist/chunks/models-OCEOQAFH.mjs +1 -0
- package/dist/chunks/{pr-4WGOFODT.mjs → pr-6A5VSN2G.mjs} +1 -1
- package/dist/chunks/preferences-F7U2O3MO.mjs +1 -0
- package/dist/chunks/project-45YWGAQQ.mjs +1 -0
- package/dist/chunks/prompt-4DIHVG7F.mjs +1 -0
- package/dist/chunks/provider-ZPPQNKD4.mjs +1 -0
- package/dist/chunks/registry-RFQPWEYD.mjs +1 -0
- package/dist/chunks/revert-OM7I67AX.mjs +1 -0
- package/dist/chunks/ripgrep-IAHE6PUP.mjs +1 -0
- package/dist/chunks/{run-HRRJXIVI.mjs → run-HRFFN5E7.mjs} +2 -2
- package/dist/chunks/scheduler-44WS6TIN.mjs +1 -0
- package/dist/chunks/server-W2DYO5CI.mjs +1 -0
- package/dist/chunks/{session-HO5727MY.mjs → session-2I5LMK3F.mjs} +1 -1
- package/dist/chunks/session-BVNXNVIE.mjs +1 -0
- package/dist/chunks/session-XS2QUVSO.mjs +1 -0
- package/dist/chunks/{settings-panel-BWCVKC4G.mjs → settings-panel-4GBMKF7S.mjs} +1 -1
- package/dist/chunks/share-WRGG4KM3.mjs +1 -0
- package/dist/chunks/snapshot-WLCB7V7M.mjs +1 -0
- package/dist/chunks/{stats-MILDLIZD.mjs → stats-KXJDFVQY.mjs} +1 -1
- package/dist/chunks/storage-DLKF23OL.mjs +1 -0
- package/dist/chunks/{tui-UTCI4ERG.mjs → tui-2YD6S76J.mjs} +1 -1
- package/dist/chunks/tui-XJTR3NKP.mjs +1 -0
- package/dist/chunks/types-6TN4BPE3.mjs +1 -0
- package/dist/chunks/update-KPY5MGY5.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,5 +1,5 @@
|
|
|
1
|
-
import {a as a$3}from'./chunk-LAHYVX5K.mjs';import {a as a$4}from'./chunk-
|
|
2
|
-
${a$2("acp.shutdown.received",{vars:{signal:t}})}`);try{await
|
|
1
|
+
import {a as a$3}from'./chunk-LAHYVX5K.mjs';import {a as a$4}from'./chunk-Y63CDMY3.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 {nb,Q,xa,Ma}from'./chunk-RWJKYXLR.mjs';import'./chunk-UHGU3KUN.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-PPTUNIYA.mjs';import'./chunk-KCJQKAMU.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import {a as a$2}from'./chunk-NQDXG75V.mjs';import'./chunk-5Z4ZZTNB.mjs';import'./chunk-KFKXAXPS.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-3SWLJTIF.mjs';import {a as a$1}from'./chunk-LFYBZHOI.mjs';import'./chunk-77AU67VS.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 nb.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(Q).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 xa.init({directory:i$1,printLogs:t.config.print_logs,logLevel:t.config.log_level,channel:e.channel});await xa.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"),Ma.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...`),i||console.log(`
|
|
2
|
+
${a$2("acp.shutdown.received",{vars:{signal:t}})}`);try{await xa.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")}
|
|
5
5
|
$ agent acp # ${a$2("acp.help.example.default")}
|
|
@@ -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-RWJKYXLR.mjs';import'./chunk-UHGU3KUN.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-PPTUNIYA.mjs';import'./chunk-KCJQKAMU.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import'./chunk-NQDXG75V.mjs';import'./chunk-5Z4ZZTNB.mjs';import'./chunk-KFKXAXPS.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-3SWLJTIF.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-77AU67VS.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-X6ISXWBN.mjs';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import {e}from'./chunk-M3K32WJV.mjs';import {j,
|
|
1
|
+
import {e}from'./chunk-M3K32WJV.mjs';import {j,fa,k,Ka}from'./chunk-RWJKYXLR.mjs';import'./chunk-UHGU3KUN.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-PPTUNIYA.mjs';import'./chunk-KCJQKAMU.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import {a as a$1}from'./chunk-NQDXG75V.mjs';import'./chunk-5Z4ZZTNB.mjs';import'./chunk-KFKXAXPS.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-3SWLJTIF.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import'./chunk-77AU67VS.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 Ka.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 Ka.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
|
|
1
|
+
import {a as a$4}from'./chunk-TYD2M4SP.mjs';import'./chunk-FXOUIXIL.mjs';import {a as a$3}from'./chunk-Y63CDMY3.mjs';import'./chunk-CQVEAYYW.mjs';import {l,d,e,h,i,b,c,a as a$5}from'./chunk-M3K32WJV.mjs';import'./chunk-RWJKYXLR.mjs';import'./chunk-UHGU3KUN.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-PPTUNIYA.mjs';import'./chunk-KCJQKAMU.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import {a as a$2}from'./chunk-NQDXG75V.mjs';import'./chunk-5Z4ZZTNB.mjs';import'./chunk-KFKXAXPS.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-3SWLJTIF.mjs';import {a as a$1}from'./chunk-LFYBZHOI.mjs';import'./chunk-77AU67VS.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-JL7MUUWI.mjs';import'./chunk-CQVEAYYW.mjs';import'./chunk-RWJKYXLR.mjs';import'./chunk-UHGU3KUN.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-PPTUNIYA.mjs';import'./chunk-KCJQKAMU.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import'./chunk-NQDXG75V.mjs';import'./chunk-5Z4ZZTNB.mjs';import'./chunk-KFKXAXPS.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-3SWLJTIF.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-77AU67VS.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-NQDXG75V.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-Y63CDMY3.mjs';import'./chunk-RWJKYXLR.mjs';import'./chunk-UHGU3KUN.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-PPTUNIYA.mjs';import'./chunk-KCJQKAMU.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import'./chunk-NQDXG75V.mjs';import'./chunk-5Z4ZZTNB.mjs';import'./chunk-KFKXAXPS.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-3SWLJTIF.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-77AU67VS.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-OWD2RLZG.mjs';import {a as a$1}from'./chunk-XPF2LJT2.mjs';import {Ma,va}from'./chunk-RWJKYXLR.mjs';import'./chunk-UHGU3KUN.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-PPTUNIYA.mjs';import'./chunk-KCJQKAMU.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import {a as a$2}from'./chunk-NQDXG75V.mjs';import'./chunk-5Z4ZZTNB.mjs';import {b as b$2}from'./chunk-KFKXAXPS.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-3SWLJTIF.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import'./chunk-77AU67VS.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||Ma.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-2YD6S76J.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-HRFFN5E7.mjs')).registerRunCommand(n,o);}},{commands:[{name:"generate",description:"\u751F\u6210 OpenAPI \u89C4\u8303",hasSubcommands:false}],register:async({program:n,ctx:o})=>{(await import('./generate-SXE5ACCV.mjs')).registerGenerateCommand(n,o);}},{commands:[{name:"agent",description:"Agent \u7BA1\u7406\u547D\u4EE4",hasSubcommands:true}],register:async({program:n,ctx:o})=>{(await import('./agent-OTRULLOV.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-2I5LMK3F.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-6G3LUTNY.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-MXBWTEWQ.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-KPPALGWN.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-XPOSOE2L.mjs')).registerGatewayCommand(n,o);}},{commands:[{name:"auth",description:"Provider \u51ED\u636E\u7BA1\u7406",hasSubcommands:true}],register:async({program:n,ctx:o})=>{(await import('./auth-DHIUZUBT.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-I4GL3OUG.mjs')).registerExportCommand(n,o);}},{commands:[{name:"github",description:"GitHub Agent \u7BA1\u7406",hasSubcommands:true}],register:async({program:n,ctx:o})=>{(await import('./github-6I6QNGSD.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-V5U5WAWX.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-6A5VSN2G.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-KXJDFVQY.mjs')).registerStatsCommand(n,o);}},{commands:[{name:"update",description:"\u66F4\u65B0 Easbot CLI",hasSubcommands:false}],register:async({program:n,ctx:o})=>{(await import('./update-KPY5MGY5.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-RWJKYXLR.mjs';import'./chunk-UHGU3KUN.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-PPTUNIYA.mjs';import'./chunk-KCJQKAMU.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import'./chunk-NQDXG75V.mjs';import'./chunk-5Z4ZZTNB.mjs';import'./chunk-KFKXAXPS.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-3SWLJTIF.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-77AU67VS.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-X6ISXWBN.mjs';
|
|
@@ -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-77AU67VS.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};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a as a$2,b}from'./chunk-KFKXAXPS.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import {a as a$1}from'./chunk-77AU67VS.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.26",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};
|