@easbot/agent 0.2.23 → 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/assets/txt/tool/gateway-channel.txt +51 -12
- package/dist/chunks/acp-STZJ75XV.mjs +16 -0
- package/dist/chunks/adapter-loader-BLTYHARQ.mjs +1 -0
- package/dist/chunks/agent-4EMYYWV6.mjs +1 -0
- package/dist/chunks/agent-FF52NW42.mjs +1 -0
- package/dist/chunks/app-CGZZFC54.mjs +1 -0
- package/dist/chunks/auth-2I7U24YF.mjs +1 -0
- package/dist/chunks/bootstrap-GVMMOFUK.mjs +1 -0
- package/dist/chunks/build-program-43NDEGM2.mjs +11 -0
- package/dist/chunks/bus-PFFRRCH3.mjs +1 -0
- package/dist/chunks/chunk-2RSIOAZV.mjs +1 -0
- package/dist/chunks/chunk-AAJAKVQY.mjs +3 -0
- package/dist/chunks/chunk-ARCMKYQI.mjs +2 -0
- package/dist/chunks/chunk-CJTCCLW4.mjs +1 -0
- package/dist/chunks/chunk-CQVEAYYW.mjs +1 -0
- package/dist/chunks/chunk-CVTJJBGW.mjs +1 -0
- package/dist/chunks/chunk-DEZT7DOH.mjs +1 -0
- package/dist/chunks/chunk-EEWP2VV6.mjs +27 -0
- package/dist/chunks/chunk-FXOUIXIL.mjs +1 -0
- package/dist/chunks/chunk-GMEJX6PC.mjs +2 -0
- package/dist/chunks/chunk-I6MBTO75.mjs +2 -0
- package/dist/chunks/chunk-I7A5JGO5.mjs +2 -0
- package/dist/chunks/chunk-IHHFG47N.mjs +1 -0
- package/dist/chunks/chunk-KLJ7PPSA.mjs +2 -0
- package/dist/chunks/chunk-KY3H2HGJ.mjs +1056 -0
- package/dist/chunks/chunk-LAHYVX5K.mjs +1 -0
- package/dist/chunks/chunk-LFNGHYRC.mjs +1 -0
- package/dist/chunks/chunk-LFYBZHOI.mjs +2 -0
- package/dist/chunks/chunk-M3K32WJV.mjs +1 -0
- package/dist/chunks/chunk-QJ6QTASU.mjs +1 -0
- package/dist/chunks/chunk-TYD2M4SP.mjs +7 -0
- package/dist/chunks/chunk-VII7JKGB.mjs +1 -0
- package/dist/chunks/chunk-WN2HAJBB.mjs +59 -0
- package/dist/chunks/chunk-X6ISXWBN.mjs +1 -0
- package/dist/chunks/chunk-XPF2LJT2.mjs +1 -0
- package/dist/chunks/chunk-ZBRXNYEM.mjs +1 -0
- package/dist/chunks/command-H77IO5J2.mjs +1 -0
- package/dist/chunks/compaction-LQXOGRP7.mjs +1 -0
- package/dist/chunks/config-J54DTNPX.mjs +1 -0
- package/dist/chunks/confirm-dialog-AGHMTHWU.mjs +1 -0
- package/dist/chunks/copilot-I52DJYYX.mjs +2 -0
- package/dist/chunks/debug-55VJ74IW.mjs +3 -0
- package/dist/chunks/event-A4SSIBOT.mjs +1 -0
- package/dist/chunks/export-BGH24SO2.mjs +1 -0
- package/dist/chunks/file-KEMX6XWX.mjs +1 -0
- package/dist/chunks/gateway-45LKZAQS.mjs +16 -0
- package/dist/chunks/gateway-loader-6P6BTWQP.mjs +1 -0
- package/dist/chunks/generate-QMA5OAOD.mjs +2 -0
- package/dist/chunks/github-EJCNXJ6F.mjs +33 -0
- package/dist/chunks/global-KAF6JHVQ.mjs +1 -0
- package/dist/chunks/import-4TX5SVFQ.mjs +2 -0
- package/dist/chunks/input-validation-FWKKVCYC.mjs +1 -0
- package/dist/chunks/installation-CGMLIGLA.mjs +1 -0
- package/dist/chunks/instance-YUOFE3Q3.mjs +1 -0
- package/dist/chunks/is-tui-mode-TFK352KK.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/markdown-Z6UXVBNP.mjs +1 -0
- package/dist/chunks/mcp-BGU4XS34.mjs +1 -0
- package/dist/chunks/models-TN65RCBA.mjs +1 -0
- package/dist/chunks/models-snapshot-XTWYGG3T.mjs +2 -0
- package/dist/chunks/pr-XD7C7PDJ.mjs +3 -0
- 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-KL5CA5M6.mjs +22 -0
- 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-REKMEA3V.mjs +1 -0
- package/dist/chunks/settings-panel-BWCVKC4G.mjs +1 -0
- package/dist/chunks/share-JFZ3O2BX.mjs +1 -0
- package/dist/chunks/snapshot-V23GRQBM.mjs +1 -0
- package/dist/chunks/stats-MILDLIZD.mjs +1 -0
- package/dist/chunks/storage-DKQ7S6QX.mjs +1 -0
- package/dist/chunks/tui-HU55FGHV.mjs +1 -0
- package/dist/chunks/tui-YGASP4NS.mjs +1 -0
- package/dist/chunks/types-GCXI5X7B.mjs +1 -0
- package/dist/chunks/types-WN4LZEB5.mjs +1 -0
- package/dist/chunks/update-IOQCRELU.mjs +2 -0
- package/dist/cli.mjs +9 -1235
- package/package.json +14 -24
- package/dist/cli.cjs +0 -1236
- package/dist/cli.d.cts +0 -1
- package/dist/index.cjs +0 -1345
- package/dist/index.d.cts +0 -34569
- package/dist/index.d.ts +0 -34569
- package/dist/index.mjs +0 -1345
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{Y as File}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,16 @@
|
|
|
1
|
+
import {a as a$2}from'./chunk-LAHYVX5K.mjs';import {a as a$3}from'./chunk-QJ6QTASU.mjs';import'./chunk-VII7JKGB.mjs';import {g,f,e,d,h,k as k$1,a as a$4,c as c$1,b,i}from'./chunk-M3K32WJV.mjs';import {La,xa}from'./chunk-KY3H2HGJ.mjs';import {c}from'./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 {a as a$5}from'./chunk-I6MBTO75.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-X6ISXWBN.mjs';import'commander';import {Gateway}from'@easbot/gateway';var n=a.create({service:"cli-command-gateway"});function k(g,r,t){let o=b();console.log(""),console.log(d(a$1("gateway.server.started"))),console.log(k$1(60)),t?.directory&&console.log(i(a$1("gateway.field.directory"),t.directory,15));let a={stopped:a$4.muted,starting:a$4.info,running:a$4.success,stopping:a$4.info,error:a$4.error},s=c$1(o,a[g]||a$4.muted,g.toUpperCase());if(console.log(i(a$1("gateway.field.status"),s,15)),g==="running"){let m=r.https?.enabled?"wss":"ws",w=r.path||"/",c=`${m}://${r.hostname}:${r.port}${w}`;console.log(i(a$1("gateway.field.ws_url"),c,15)),console.log(i(a$1("gateway.field.port"),String(r.port),15)),console.log(i(a$1("gateway.field.hostname"),r.hostname,15)),console.log(i(a$1("gateway.field.tls"),r.https?.enabled?a$1("common.enabled"):a$1("common.disabled"),15));}t?.debug!==void 0&&console.log(i(a$1("gateway.field.debug"),t.debug?c$1(o,a$4.success,a$1("common.enabled")):c$1(o,a$4.muted,a$1("common.disabled")),15)),t?.error&&console.log(i(a$1("gateway.field.error"),t.error,15)),console.log(k$1(60)),console.log("");}function R(){let g=async r=>{n.debug(`Received ${r}, shutting down gracefully...`),console.log(`
|
|
2
|
+
${a$1("gateway.shutdown.received",{vars:{signal:r}})}`);try{await Gateway.stop(),n.debug("Gateway state destroyed"),console.log(d(a$1("gateway.shutdown.completed")));}catch(t){n.error("Error during shutdown",{error:t instanceof Error?t.message:String(t)});}process.exit(0);};process.on("SIGINT",()=>{g("SIGINT").catch(console.error);}),process.on("SIGTERM",()=>{g("SIGTERM").catch(console.error);});}async function T(g){n.debug("createAgentAdapter: starting",{directory:g}),n.debug("createAgentAdapter: calling Instance.provide");let r=await La.provide({directory:g,fn:async()=>{n.debug("createAgentAdapter: Instance.provide fn called");let{Project:c}=await import('./project-HH3IL3QQ.mjs');n.debug("createAgentAdapter: Project imported, calling fromDirectory");let{project:l,sandbox:d}=await c.fromDirectory(g);n.debug("createAgentAdapter: fromDirectory completed",{projectId:l.id});let _={directory:g,worktree:d,project:l};return n.debug("createAgentAdapter: fn returning",{directory:g,projectId:l.id}),_}});n.debug("createAgentAdapter: Instance.provide completed",{directory:r.directory,projectId:r.project.id});let t={Path:{home:a$5.Path.home,data:a$5.Path.data,cache:a$5.Path.cache,config:a$5.Path.config,state:a$5.Path.state,log:a$5.Path.log,bin:a$5.Path.bin}},o={directory:r.directory,worktree:r.worktree},a=new Map,s={on(c,l){a.has(c)||a.set(c,new Set),a.get(c).add(l);},off(c,l){a.get(c)?.delete(l);},async emit(c){let l=a.get(c.name);if(l)for(let d of l)await d(c);}};await xa.state();let m={async run(c){try{let l={source:c.source||c.sessionId||"gateway",title:c.title||"Message from gateway",agent:c.agent||"gateway",parts:c.parts||[]},d=await xa.run(l);return {success:!0,output:d.output,metadata:d.metadata}}catch(l){return n.error("SubAgent.run failed",{error:l instanceof Error?l.message:String(l)}),{success:false,error:l instanceof Error?l.message:String(l)}}}};return {subAgentRunner:m,hookRegistry:s,global:t,instance:o,setMessageStorage(c){}}}async function O(g$1,r,t){n.debug("Gateway start command executed",{options:r});try{let o=t.config.directory;n.debug("Working directory resolved",{directory:o});let a=a$2(o);if(!a.valid)throw n.error("Working directory validation failed",{directory:o,error:a.error}),new Error(`Invalid working directory: ${a.error}`);let s=a.normalizedPath;n.debug("Working directory validated",{validatedDirectory:s}),console.log(g(a$1("gateway.directory.resolved",{vars:{cwd:s}}))),await a$3(s,async()=>{let{initLog:m,setAgentAdapter:w}=await import('@easbot/gateway');await m({logDir:process.env.EASBOT_LOG_PATH??process.cwd(),print:t.config.print_logs??!1,dev:t.config.debug??!1,level:t.config.log_level??"INFO"});let l=await T(s);n.debug("executeGatewayStart: createAgentAdapter completed"),w(l),n.debug("Agent adapter injected into Gateway");let d=await c();if(n.debug("Gateway server configuration",{port:d.port,hostname:d.hostname,path:d.path,tls:d.https?.enabled,enabled:d.enabled}),!d.enabled){n.warn("Gateway server is disabled by configuration"),console.log(f(a$1("gateway.disabled")));return}await Gateway.start(d),n.info("Gateway server started successfully"),k("running",d,{directory:s,debug:t.config.debug}),R(),await new Promise(()=>{});});}catch(o){n.error("Failed to start Gateway server",{error:o instanceof Error?o.message:String(o)}),console.error(e(a$1("gateway.error.start_failed",{vars:{error:o instanceof Error?o.message:String(o)}}))),process.exit(1);}}async function D(g$1,r){n.debug("Gateway stop command executed",{options:g$1});try{let t=r.config.directory;await a$3(t,async()=>{if(Gateway.getStatus()==="stopped"){console.log(g(a$1("gateway.status.already_stopped")));return}await Gateway.stop(),console.log(d(a$1("gateway.stopped")));let a=await c();k("stopped",a,{directory:t});});}catch(t){n.error("Failed to stop Gateway server",{error:t instanceof Error?t.message:String(t)}),console.error(e(a$1("gateway.error.stop_failed",{vars:{error:t instanceof Error?t.message:String(t)}}))),process.exit(1);}}async function j(g$1,r,t){n.debug("Gateway restart command executed",{options:r});try{let o=t.config.directory;await a$3(o,async()=>{let a=await c();if(!a.enabled){n.warn("Gateway server is disabled by configuration"),console.log(f(a$1("gateway.disabled")));return}console.log(g(a$1("gateway.restarting"))),await Gateway.restart(a),console.log(d(a$1("gateway.restarted"))),k("running",a,{directory:o,debug:t.config.debug}),R(),await new Promise(()=>{});});}catch(o){n.error("Failed to restart Gateway server",{error:o instanceof Error?o.message:String(o)}),console.error(e(a$1("gateway.error.restart_failed",{vars:{error:o instanceof Error?o.message:String(o)}}))),process.exit(1);}}async function W(g,r){n.debug("Gateway status command executed",{options:g});try{let t=r.config.directory;await a$3(t,async()=>{let o=Gateway.getStatus(),s=(await Gateway.get())?.getStatus(),m=await c();console.log(""),console.log(h(a$1("gateway.status.title"))),console.log(k$1(60));let w={stopped:a$4.muted,starting:a$4.info,running:a$4.success,stopping:a$4.info,error:a$4.error},c$2=c$1(b(),w[o]||a$4.muted,o.toUpperCase());if(console.log(i(a$1("gateway.field.status"),c$2,15)),s){console.log(i(a$1("gateway.field.port"),String(s.port),15)),console.log(i(a$1("gateway.field.hostname"),s.hostname||m.hostname,15)),console.log(i(a$1("gateway.field.connections"),String(s.connections||0),15));let d=`${m.https?.enabled?"wss":"ws"}://${s.hostname||m.hostname}:${s.port}`;console.log(i(a$1("gateway.field.ws_url"),d,15));}console.log(k$1(60)),console.log("");});}catch(t){n.error("Failed to get Gateway status",{error:t instanceof Error?t.message:String(t)}),console.error(e(a$1("gateway.error.status_failed",{vars:{error:t instanceof Error?t.message:String(t)}}))),process.exit(1);}}async function M(g$1,r){n.debug("Gateway config show command executed",{options:g$1});try{let t=r.config.directory;await a$3(t,async()=>{let o=await Gateway.config();if(!o){console.log(f(a$1("gateway.config.not_found")));return}if(console.log(""),console.log(h(a$1("gateway.config.heading"))),console.log(k$1(60)),o.server&&(console.log(h(a$1("gateway.config.server"))),console.log(i(" enabled",String(o.server.enabled??!0),12)),console.log(i(" port",String(o.server.port??3001),12)),console.log(i(" hostname",o.server.hostname??"0.0.0.0",12)),console.log(i(" tls",String(o.server.https?.enabled??!1),12)),console.log(i(" cors",String(o.server.cors??!0),12))),o.channels){console.log(""),console.log(h(a$1("gateway.config.channels")));let a=Object.keys(o.channels);if(a.length===0)console.log(g(" "+a$1("gateway.config.no_channels")));else for(let s of a){let m=o.channels[s];m&&console.log(i(` ${s}`,m.enabled?a$1("common.enabled"):a$1("common.disabled"),12));}}o.connectionPool&&(console.log(""),console.log(h(a$1("gateway.config.connection_pool"))),console.log(i(" maxConnectionsPerChannel",String(o.connectionPool.maxConnectionsPerChannel??100),25)),console.log(i(" idleTimeout",`${o.connectionPool.idleTimeout??3e5}ms`,25)),console.log(i(" reuseStrategy",o.connectionPool.reuseStrategy??"lru",25))),o.agentRegistry&&(console.log(""),console.log(h(a$1("gateway.config.agent_registry"))),console.log(i(" heartbeatInterval",`${o.agentRegistry.heartbeatInterval??3e4}ms`,20)),console.log(i(" heartbeatTimeout",`${o.agentRegistry.heartbeatTimeout??9e4}ms`,20))),console.log(k$1(60)),console.log("");});}catch(t){n.error("Failed to show Gateway config",{error:t instanceof Error?t.message:String(t)}),console.error(e(a$1("gateway.error.config_failed",{vars:{error:t instanceof Error?t.message:String(t)}}))),process.exit(1);}}function te(g,r){let t=g.command("gateway").description(a$1("gateway.command.description")).helpOption("-h, --help",a$1("gateway.help.option")).addHelpText("after",`
|
|
3
|
+
|
|
4
|
+
${a$1("gateway.help.examples")}
|
|
5
|
+
easbot gateway start # ${a$1("gateway.help.example.default")}
|
|
6
|
+
easbot gateway start --port 8080 # ${a$1("gateway.help.example.port")}
|
|
7
|
+
easbot gateway start --hostname 127.0.0.1 # ${a$1("gateway.help.example.hostname")}
|
|
8
|
+
easbot gateway stop # ${a$1("gateway.help.example.stop")}
|
|
9
|
+
easbot gateway restart # ${a$1("gateway.help.example.restart")}
|
|
10
|
+
easbot gateway config show # ${a$1("gateway.help.example.config")}
|
|
11
|
+
|
|
12
|
+
${a$1("gateway.help.env")}
|
|
13
|
+
GATEWAY_PORT ${a$1("gateway.help.env.port")}
|
|
14
|
+
GATEWAY_HOSTNAME ${a$1("gateway.help.env.hostname")}
|
|
15
|
+
GATEWAY_TLS ${a$1("gateway.help.env.tls")}
|
|
16
|
+
`);t.option("-D, --directory <path>",a$1("gateway.option.directory")).option("-p, --port <number>",a$1("gateway.option.port"),a=>parseInt(a,10)).option("-H, --hostname <address>",a$1("gateway.option.hostname")).option("--tls",a$1("gateway.option.tls")).option("--tls-cert <path>",a$1("gateway.option.tls_cert")).option("--tls-key <path>",a$1("gateway.option.tls_key")).option("-d, --debug",a$1("gateway.option.debug"),false),t.command("start").description(a$1("gateway.command.start")).addHelpText("after",a$1("gateway.help.subcommand.start.after")).action(async()=>{if(process.argv.includes("--help")||process.argv.includes("-h")){t.commands.find(s=>s.name()==="start")?.outputHelp(),process.exit(0);return}let a=t.opts();await O(t,a,r);}),t.command("stop").description(a$1("gateway.command.stop")).action(async()=>{if(process.argv.includes("--help")||process.argv.includes("-h")){t.commands.find(s=>s.name()==="stop")?.outputHelp(),process.exit(0);return}let a=t.opts();await D(a,r);}),t.command("restart").description(a$1("gateway.command.restart")).action(async()=>{if(process.argv.includes("--help")||process.argv.includes("-h")){t.commands.find(s=>s.name()==="restart")?.outputHelp(),process.exit(0);return}let a=t.opts();await j(t,a,r);}),t.command("status").description(a$1("gateway.command.status")).action(async()=>{if(process.argv.includes("--help")||process.argv.includes("-h")){t.commands.find(s=>s.name()==="status")?.outputHelp(),process.exit(0);return}let a=t.opts();await W(a,r);});let o=t.command("config").description(a$1("gateway.command.config"));o.command("show").description(a$1("gateway.command.config_show")).action(async()=>{if(process.argv.includes("--help")||process.argv.includes("-h")){o.commands.find(s=>s.name()==="show")?.outputHelp(),process.exit(0);return}let a=t.opts();await M(a,r);});}export{te as registerGatewayCommand};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{a as GatewayConfigSchema,h as getAgentRegistryConfig,m as getAgentSyncConfig,k as getAuthConfig,d as getChannelConfig,g as getCircuitBreakerConfig,e as getConnectionPoolConfig,n as getDefaultAgentId,l as getGatewayClusterConfig,c as getGatewayServerConfig,j as getHTTPSConfig,f as getMessageQueueConfig,i as getSessionConfig,b as loadGatewayConfig}from'./chunk-ZBRXNYEM.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-X6ISXWBN.mjs';
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {e}from'./chunk-M3K32WJV.mjs';import {va}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}from'./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';function g(o,a$1){o.command("generate").description(a("generate.command.description")).action(async()=>{await c();});}async function c(){try{let o=await va();for(let t of Object.values(o.paths??{}))for(let r of ["get","post","put","delete","patch"]){let e=t[r];e?.operationId&&(e["x-codeSamples"]=[{lang:"js",source:['import { createEasbotClient } from "@easbot/sdk"',"","const client = createEasbotClient()",`await client.${e.operationId}({`," ...","})"].join(`
|
|
2
|
+
`)}]);}let a=JSON.stringify(o,null,2);await new Promise((t,r)=>{process.stdout.write(a,e=>{e?r(e):t();});});}catch(o){console.error(e(a("generate.error.failed",{vars:{error:o instanceof Error?o.message:String(o)}}))),process.exit(1);}}export{g as registerGenerateCommand};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import {a as a$2}from'./chunk-TYD2M4SP.mjs';import'./chunk-FXOUIXIL.mjs';import'./chunk-CQVEAYYW.mjs';import {g,e,h,i,k,d}from'./chunk-M3K32WJV.mjs';import {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$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 {Shell,PKG,Fetch}from'@easbot/utils';var m=a.create({service:"cli-command-github"}),R=".github/workflows/opencode.yml",S="https://github.com/apps/opencode-agent";function z(e,t){let r=e.command("github").description(a$1("github.command.description"));r.command("install").description(a$1("github.command.install.description")).option("--provider <provider>",a$1("github.option.provider")).option("--model <model>",a$1("github.option.model")).action(async a=>{m.debug("Installing GitHub app"),await j(t,a);}),r.command("run").description(a$1("github.command.run.description")).option("--event <json>",a$1("github.option.event")).option("--token <token>",a$1("github.option.token")).action(async a=>{m.debug("Running GitHub agent",{options:a}),console.log(g(a$1("github.run.info")));});}async function j(e$1,t){try{La.project.vcs!=="git"&&(console.error(e(a$1("github.error.not_git_repo"))),process.exit(1)),console.log(h(a$1("github.install.starting")));let a=await W(),n=E(a);n||(console.error(e(a$1("github.error.parse_remote"))),process.exit(1)),console.log(i(a$1("github.field.owner"),n.owner)),console.log(i(a$1("github.field.repo"),n.repo)),console.log(k(60)),console.log(g(a$1("github.install.step1")));let i$1=`${S}?target=${n.owner}/${n.repo}`;console.log(g(a$1("github.install.open_url",{vars:{url:i$1}}))),await F(i$1),console.log(g(a$1("github.install.waiting")));let s=0,d$1=60;for(;s<d$1;){if(await H(n.owner,n.repo)){console.log(d(a$1("github.install.installed")));break}s++,await D(1e3);}s>=d$1&&(console.error(e(a$1("github.install.timeout"))),process.exit(1));let c=t.provider||await L(e$1),v=t.model||await T(e$1,c);console.log(k(60)),console.log(g(a$1("github.install.generating_workflow"))),await A(e$1,n.owner,n.repo,c,v),console.log(d(a$1("github.install.workflow_created",{vars:{file:R}}))),console.log(""),console.log(h(a$1("github.install.next_steps"))),console.log(g("1. "+a$1("github.install.step1_hint"))),console.log(g("2. "+a$1("github.install.step2_hint",{vars:{owner:n.owner,repo:n.repo}}))),console.log(g("3. "+a$1("github.install.step3_hint"))),m.debug("GitHub app installation complete",{owner:n.owner,repo:n.repo});}catch(r){m.error("Failed to install GitHub app",{error:r instanceof Error?r.message:String(r)}),console.error(e(a$1("github.install.error",{vars:{error:r instanceof Error?r.message:String(r)}}))),process.exit(1);}}async function W(){let e=process.platform==="win32"?"cmd":void 0,t=Shell.spawn(e,"git remote get-url origin");if(await t.exited!==0)throw new Error("Failed to get git remote");return await PKG.nodeReadableStreamToText(t.stdout)}function E(e){let t=e.match(/^(?:(?:https?|ssh):\/\/)?(?:git@)?github\.com[:/]([^/]+)\/([^/]+?)(?:\.git)?$/);return t?{owner:t[1],repo:t[2]}:null}async function F(e){let t=process.platform==="darwin"?`open ${e}`:process.platform==="win32"?`start ${e}`:`xdg-open ${e}`;try{let r=process.platform==="win32"?"cmd":void 0;await Shell.spawn(r,t).exited;}catch{m.debug("Could not open browser automatically");}}async function H(e,t){try{return !!(await Fetch.get(`https://api.opencode.ai/get_github_app_installation?owner=${e}&repo=${t}`)).data?.installation}catch{return false}}async function L(e){let{data:t}=await e.sdk.config.providers({}),r=t?.providers||[],a={easbot:0,anthropic:1,openai:2,google:3},n=r.sort((i,s)=>(a[i.id]??99)-(a[s.id]??99));return console.log(""),console.log(g(a$1("github.install.select_provider"))),console.log(a$2({columns:[{key:"index",header:"#",minWidth:4},{key:"id",header:a$1("github.table.header.id"),minWidth:15},{key:"name",header:a$1("github.table.header.name"),flex:true},{key:"hint",header:"",minWidth:15}],rows:n.map((i,s)=>({index:`${s+1}`,id:i.id,name:i.name||i.id,hint:i.id==="easbot"?"recommended":""})),width:process.stdout.columns||80,border:"unicode"})),console.log(""),n[0]?.id||"easbot"}async function T(e,t){let{data:r}=await e.sdk.config.providers({}),n=(r?.providers||[]).find(s=>s.id===t);if(!n?.models)return "default";let i=Object.entries(n.models);if(i.length===0)return "default";console.log(""),console.log(g(a$1("github.install.select_model")));for(let s=0;s<i.length;s++){let[d,c]=i[s];console.log(` ${s+1}. ${c.name||d}`);}return console.log(""),i[0]?.[0]||"default"}async function A(e,t,r,a,n){let{data:i}=await e.sdk.config.providers({}),c=(i?.providers||[]).find(p=>p.id===a)?.env||[],y=`name: opencode
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
issue_comment:
|
|
5
|
+
types: [created]
|
|
6
|
+
pull_request_review_comment:
|
|
7
|
+
types: [created]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
opencode:
|
|
11
|
+
if: |
|
|
12
|
+
contains(github.event.comment.body, ' /oc') ||
|
|
13
|
+
startsWith(github.event.comment.body, '/oc') ||
|
|
14
|
+
contains(github.event.comment.body, ' /opencode') ||
|
|
15
|
+
startsWith(github.event.comment.body, '/opencode')
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
permissions:
|
|
18
|
+
id-token: write
|
|
19
|
+
contents: read
|
|
20
|
+
pull-requests: read
|
|
21
|
+
issues: read
|
|
22
|
+
steps:
|
|
23
|
+
- name: Checkout repository
|
|
24
|
+
uses: actions/checkout@v6
|
|
25
|
+
with:
|
|
26
|
+
persist-credentials: false
|
|
27
|
+
|
|
28
|
+
- name: Run opencode
|
|
29
|
+
uses: anomalyco/opencode/github@latest${c.length>0?c.map(p=>`
|
|
30
|
+
${p}: \${{ secrets.${p} }}`).join(""):""}
|
|
31
|
+
with:
|
|
32
|
+
model: ${a}/${n}
|
|
33
|
+
`,k=await import('fs/promises'),P=await import('path'),_=P.join(La.worktree,R);await k.mkdir(P.dirname(_),{recursive:true}),await k.writeFile(_,y,"utf-8");}function D(e){return new Promise(t=>setTimeout(t,e))}export{z as registerGithubCommand};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{a as Global}from'./chunk-I6MBTO75.mjs';import'./chunk-X6ISXWBN.mjs';
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {h,e,d}from'./chunk-M3K32WJV.mjs';import {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$1}from'./chunk-EEWP2VV6.mjs';import'./chunk-GMEJX6PC.mjs';import'./chunk-KLJ7PPSA.mjs';import'./chunk-CJTCCLW4.mjs';import {a as a$2}from'./chunk-I7A5JGO5.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import'./chunk-I6MBTO75.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-X6ISXWBN.mjs';import {PKG}from'@easbot/utils';var m=a.create({service:"cli-command-import"});function _(g,u){g.command("import <file>").description(a$1("import.command.description")).action(async t=>{m.debug("Importing session",{file:t});try{let s=t.startsWith("http://")||t.startsWith("https://"),o;if(s){console.log(h(a$1("import.fetching_url",{vars:{url:t}})));let r=await fetch(t);r.ok||(console.error(e(a$1("import.error.fetch_failed",{vars:{status:r.statusText}}))),process.exit(1)),o=await r.json();}else {console.log(h(a$1("import.reading_file",{vars:{file:t}})));let r=await PKG.file(t).text();o=JSON.parse(r);}o?.info||(console.error(e(a$1("import.error.invalid_format"))),process.exit(1)),m.debug("Importing session data",{sessionId:o.info.id}),await a$2.write(["session",La.project.id,o.info.id],o.info);for(let r of o.messages){await a$2.write(["message",o.info.id,r.info.id],r.info);for(let c of r.parts)await a$2.write(["part",r.info.id,c.id],c);}console.log(d(a$1("import.success",{vars:{sessionId:o.info.id}})));}catch(s){m.error("Failed to import session",{file:t,error:s instanceof Error?s.message:String(s)}),console.error(e(a$1("import.error.failed",{vars:{error:s instanceof Error?s.message:String(s)}}))),process.exit(1);}});}
|
|
2
|
+
export{_ as registerImportCommand};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{f as sanitizeInput,a as validateAgentId,j as validateAgentMode,i as validateAgentName,e as validateHostname,k as validateJsonString,c as validateModelName,d as validatePort,h as validatePrompt,b as validateSessionId,g as validateStringLength}from'./chunk-VII7JKGB.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-X6ISXWBN.mjs';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{b as Installation}from'./chunk-KLJ7PPSA.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-I6MBTO75.mjs';import'./chunk-X6ISXWBN.mjs';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{La as Instance}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 @@
|
|
|
1
|
+
import'./chunk-X6ISXWBN.mjs';function n(){return process.env.EASBOT_TUI_MODE==="1"}export{n as isTuiMode};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{H as directories,G as get,J as getGlobal,I as global,E as state,F as waitForDependencies}from'./chunk-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 PluginLoader,b as createPluginLoader}from'./chunk-LFNGHYRC.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{b as LSP}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 @@
|
|
|
1
|
+
export{a as ConfigMarkdown}from'./chunk-AAJAKVQY.mjs';import'./chunk-X6ISXWBN.mjs';
|
|
@@ -0,0 +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-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-mcp"});function T(w,c$1){let M=w.command("mcp").description(a$2("mcp.command.description"));M.command("list").description(a$2("mcp.command.list.description")).action(async()=>{await a$3(c$1.config.directory,async()=>{try{a.info("Listing MCP servers");let{data:o}=await c$1.sdk.config.get({directory:c$1.config.directory}),r=o?.mcp||{},n=Object.entries(r).map(([s,m])=>({name:s,type:m.type||"local",command:m.command,url:m.url,enabled:m.enabled,environment:m.environment,headers:m.headers}));if(n.length===0){console.log(l(a$2("mcp.list.empty")));return}console.log(d(a$2("mcp.list.success",{vars:{count:n.length}}))),console.log(""),console.log(a$4({columns:[{key:"name",header:a$2("mcp.table.header.name"),minWidth:20},{key:"command",header:a$2("mcp.table.header.command"),minWidth:30},{key:"disabled",header:a$2("mcp.table.header.disabled"),minWidth:10}],rows:n.map(s=>({name:s.name,command:s.type==="local"?s.command?.join(" ")||"":s.url||"",disabled:s.enabled===!1?a$2("common.yes"):a$2("common.no")})),width:process.stdout.columns||80,border:"unicode"})),a.debug("MCP server list displayed",{count:n.length});}catch(o){a.error("Failed to list MCP servers",{error:o instanceof Error?o.message:String(o)}),console.error(e(a$2("mcp.list.error"))),process.exit(1);}});}),M.command("info <name>").description(a$2("mcp.command.info.description")).action(async o=>{await a$3(c$1.config.directory,async()=>{try{a.debug("Getting MCP server info",{name:o});let{data:r}=await c$1.sdk.config.get({directory:c$1.config.directory}),n=r?.mcp?.[o];n||(console.error(e(a$2("mcp.info.notfound",{vars:{name:o}}))),process.exit(1));let s=n.type||"local",m=n.command,d$1=n.url,l=n.enabled,f=n.environment,g=n.headers;if(console.log(d(a$2("mcp.info.success"))),console.log(""),console.log(h(a$2("mcp.info.heading"))),console.log(""),console.log(i(a$2("mcp.info.field.name")+":",o)),console.log(i(a$2("mcp.info.field.type")+":",s)),s==="local"||!s){if(console.log(i(a$2("mcp.info.field.command")+":",m?.join(" ")||"")),console.log(i(a$2("mcp.info.field.enabled")+":",l!==!1?a$2("common.yes"):a$2("common.no"))),f&&Object.keys(f).length>0){console.log(i(a$2("mcp.info.field.environment")+":",""));let p=b();console.log(c(p,a$5.muted,JSON.stringify(f,null,2)));}}else if(s==="remote"&&(console.log(i(a$2("mcp.info.field.url")+":",d$1||"")),console.log(i(a$2("mcp.info.field.enabled")+":",l!==!1?a$2("common.yes"):a$2("common.no"))),g&&Object.keys(g).length>0)){console.log(i(a$2("mcp.info.field.headers")+":",""));let p=b();console.log(c(p,a$5.muted,JSON.stringify(g,null,2)));}a.debug("MCP server info displayed",{name:o});}catch(r){a.error("Failed to get MCP server info",{name:o,error:r instanceof Error?r.message:String(r)}),console.error(e(a$2("mcp.info.error",{vars:{error:String(r)}}))),process.exit(1);}});}),M.command("add").description(a$2("mcp.command.add.description")).requiredOption("--name <name>",a$2("mcp.command.add.option.name")).requiredOption("--command <command>",a$2("mcp.command.add.option.command")).option("--args <json>",a$2("mcp.command.add.option.args")).option("--env <json>",a$2("mcp.command.add.option.env")).action(async o=>{await a$3(c$1.config.directory,async()=>{try{a.debug("Adding MCP server",{name:o.name}),console.log(h(a$2("mcp.add.begin")));let r;if(o.args)try{r=JSON.parse(o.args),Array.isArray(r)||(console.error(e(a$2("mcp.add.error.args_invalid"))),process.exit(1));}catch{console.error(e(a$2("mcp.add.error.args_invalid"))),process.exit(1);}let n;if(o.env)try{n=JSON.parse(o.env),(typeof n!="object"||Array.isArray(n))&&(console.error(e(a$2("mcp.add.error.env_invalid"))),process.exit(1));}catch{console.error(e(a$2("mcp.add.error.env_invalid"))),process.exit(1);}let s={type:"local",command:[o.command,...r||[]]};n&&(s.environment=n),await c$1.sdk.config.update({directory:c$1.config.directory,config:{mcp:{[o.name]:s}}});let{data:m}=await c$1.sdk.config.get({directory:c$1.config.directory}),d$1=m?.mcp?.[o.name],l=d$1.type;console.log(d(a$2("mcp.add.success",{vars:{name:o.name}}))),console.log(""),console.log(h(a$2("mcp.info.heading"))),console.log(""),console.log(i(a$2("mcp.info.field.name")+":",o.name)),console.log(i(a$2("mcp.info.field.type")+":",l||"local"));let f=d$1.command,g=d$1.environment,p=d$1.url,P=d$1.headers;if(l==="local"||!l){if(console.log(i(a$2("mcp.info.field.command")+":",f?.join(" ")||[o.command].join(" "))),g&&Object.keys(g).length>0){console.log(i(a$2("mcp.info.field.environment")+":",""));let S=b();console.log(c(S,a$5.muted,JSON.stringify(g,null,2)));}}else if(l==="remote"&&(console.log(i(a$2("mcp.info.field.url")+":",p||"")),P&&Object.keys(P).length>0)){console.log(i(a$2("mcp.info.field.headers")+":",""));let S=b();console.log(c(S,a$5.muted,JSON.stringify(P,null,2)));}a.debug("MCP server added successfully",{name:o.name});}catch(r){a.error("Failed to add MCP server",{name:o.name,error:r instanceof Error?r.message:String(r)}),console.error(e(a$2("mcp.add.error",{vars:{error:r instanceof Error?r.message:String(r)}}))),process.exit(1);}});}),M.command("remove <name>").description(a$2("mcp.command.remove.description")).action(async o=>{await a$3(c$1.config.directory,async()=>{try{a.debug("Removing MCP server",{name:o}),console.log(h(a$2("mcp.remove.begin")));let{data:r}=await c$1.sdk.config.get({directory:c$1.config.directory});r?.mcp?.[o]||(console.error(e(a$2("mcp.remove.not_found",{vars:{name:o}}))),process.exit(1)),await c$1.sdk.config.update({directory:c$1.config.directory,config:{mcp:{[o]:null}}}),console.log(d(a$2("mcp.remove.success",{vars:{name:o}}))),a.debug("MCP server removed successfully",{name:o});}catch(r){a.error("Failed to remove MCP server",{name:o,error:r instanceof Error?r.message:String(r)}),console.error(e(a$2("mcp.remove.error",{vars:{error:r instanceof Error?r.message:String(r)}}))),process.exit(1);}});});}export{T as registerMcpCommands};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{a as ModelsDev,b as initModelsRefresh}from'./chunk-GMEJX6PC.mjs';import'./chunk-KLJ7PPSA.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-I6MBTO75.mjs';import'./chunk-X6ISXWBN.mjs';
|