@easbot/agent 0.2.40 → 0.2.41

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.
Files changed (89) hide show
  1. package/dist/chunks/{acp-SMAI7EJF.mjs → acp-D5UOHKRU.mjs} +2 -2
  2. package/dist/chunks/adapter-loader-SHO4LOSU.mjs +1 -0
  3. package/dist/chunks/{agent-SXVN3QRB.mjs → agent-CYRU65IN.mjs} +1 -1
  4. package/dist/chunks/{agent-BS6BU766.mjs → agent-JHX64CI6.mjs} +1 -1
  5. package/dist/chunks/app-S6QDTGNJ.mjs +1 -0
  6. package/dist/chunks/bootstrap-FHSG4M5N.mjs +1 -0
  7. package/dist/chunks/{build-program-U2HDARWA.mjs → build-program-YDOM5ROT.mjs} +1 -1
  8. package/dist/chunks/bus-7GPWVWOA.mjs +1 -0
  9. package/dist/chunks/{chunk-ZFGVQIO5.mjs → chunk-75IQNF4I.mjs} +1 -1
  10. package/dist/chunks/{chunk-XQXI2ZHB.mjs → chunk-D4GDS5UI.mjs} +1 -1
  11. package/dist/chunks/{chunk-VLDQ4LGX.mjs → chunk-EM2QJ5NQ.mjs} +2 -2
  12. package/dist/chunks/{chunk-YGFGAD5H.mjs → chunk-FWVB6X4X.mjs} +13 -13
  13. package/dist/chunks/{chunk-JII5HRIF.mjs → chunk-GRDTQW6K.mjs} +1 -1
  14. package/dist/chunks/{chunk-IXO5FAWI.mjs → chunk-IEQ4VD66.mjs} +1 -1
  15. package/dist/chunks/{chunk-O2JOXYKG.mjs → chunk-KTMZPMCI.mjs} +1 -1
  16. package/dist/chunks/{chunk-3Q4UCILK.mjs → chunk-R4BPTF6V.mjs} +1 -1
  17. package/dist/chunks/{chunk-DJYON7M6.mjs → chunk-SB4J2R54.mjs} +1 -1
  18. package/dist/chunks/{chunk-H45MZAM6.mjs → chunk-UBCLKZWP.mjs} +1 -1
  19. package/dist/chunks/{chunk-ZG2HQDXQ.mjs → chunk-X7KLQIAQ.mjs} +1 -1
  20. package/dist/chunks/{command-B7POR3LZ.mjs → command-CPT2YSIR.mjs} +1 -1
  21. package/dist/chunks/compaction-JR5FOLBX.mjs +1 -0
  22. package/dist/chunks/{config-JY4V5KGI.mjs → config-O5EE574O.mjs} +1 -1
  23. package/dist/chunks/{debug-LXNXB4VY.mjs → debug-BWJVMW7Q.mjs} +3 -3
  24. package/dist/chunks/file-Q52INNX3.mjs +1 -0
  25. package/dist/chunks/{gateway-HTBKKYKV.mjs → gateway-XSXBPTB7.mjs} +2 -2
  26. package/dist/chunks/{generate-JBIFOTPV.mjs → generate-4UO6UCUB.mjs} +1 -1
  27. package/dist/chunks/{github-XXJJ62IF.mjs → github-XIWTIRCK.mjs} +1 -1
  28. package/dist/chunks/global-XQYOBWZR.mjs +1 -0
  29. package/dist/chunks/{import-37R7O4NM.mjs → import-K45ZW3NR.mjs} +1 -1
  30. package/dist/chunks/installation-55Z2PXMV.mjs +1 -0
  31. package/dist/chunks/instance-S5GBRS3K.mjs +1 -0
  32. package/dist/chunks/loader-JAKTXQ6M.mjs +1 -0
  33. package/dist/chunks/loader-S2BSLSAZ.mjs +1 -0
  34. package/dist/chunks/lsp-4VYPJGAN.mjs +1 -0
  35. package/dist/chunks/{mcp-X4FA7X53.mjs → mcp-JBHKJN6X.mjs} +1 -1
  36. package/dist/chunks/mcp-ZGGTG6YT.mjs +1 -0
  37. package/dist/chunks/models-TI5SNTLO.mjs +1 -0
  38. package/dist/chunks/{pr-WCMJT7VY.mjs → pr-MCLQ6KQO.mjs} +1 -1
  39. package/dist/chunks/preferences-LWCCEUB3.mjs +1 -0
  40. package/dist/chunks/project-OEBG6JHE.mjs +1 -0
  41. package/dist/chunks/prompt-JSZCNKQD.mjs +1 -0
  42. package/dist/chunks/provider-TU4AF2GP.mjs +1 -0
  43. package/dist/chunks/registry-NITFPORZ.mjs +1 -0
  44. package/dist/chunks/revert-PDDRJVNK.mjs +1 -0
  45. package/dist/chunks/ripgrep-7VVA7THG.mjs +1 -0
  46. package/dist/chunks/{run-PN7YADL6.mjs → run-EGRUZXP2.mjs} +1 -1
  47. package/dist/chunks/scheduler-VUQ33E5B.mjs +1 -0
  48. package/dist/chunks/server-3RDX4X3L.mjs +1 -0
  49. package/dist/chunks/session-GQAYKB6Q.mjs +1 -0
  50. package/dist/chunks/session-TXC5Z4O2.mjs +1 -0
  51. package/dist/chunks/{session-FVNB4WZV.mjs → session-VCIKEQYZ.mjs} +1 -1
  52. package/dist/chunks/share-RUV4SIRB.mjs +1 -0
  53. package/dist/chunks/snapshot-PXRGQ6JR.mjs +1 -0
  54. package/dist/chunks/storage-3T5H5KBY.mjs +1 -0
  55. package/dist/chunks/tui-5BQORL3N.mjs +1 -0
  56. package/dist/chunks/{tui-ABXWVS6I.mjs → tui-ZMS6CJQ7.mjs} +1 -1
  57. package/dist/chunks/{types-BFRURHUE.mjs → types-RWQQETDC.mjs} +1 -1
  58. package/dist/chunks/{update-SO2ZPDG3.mjs → update-KDCCJIPI.mjs} +1 -1
  59. package/dist/cli.mjs +2 -2
  60. package/package.json +13 -13
  61. package/dist/chunks/adapter-loader-X3GZRT3I.mjs +0 -1
  62. package/dist/chunks/app-4GCI3HZT.mjs +0 -1
  63. package/dist/chunks/bootstrap-SVDRDCAU.mjs +0 -1
  64. package/dist/chunks/bus-SGXNL3LP.mjs +0 -1
  65. package/dist/chunks/compaction-4CV7NS2Z.mjs +0 -1
  66. package/dist/chunks/file-Q7BJ3BEC.mjs +0 -1
  67. package/dist/chunks/global-FDT3NNWD.mjs +0 -1
  68. package/dist/chunks/installation-WZEFRTPQ.mjs +0 -1
  69. package/dist/chunks/instance-AK3F7UK2.mjs +0 -1
  70. package/dist/chunks/loader-2FMNUQDJ.mjs +0 -1
  71. package/dist/chunks/loader-JWZHDUVM.mjs +0 -1
  72. package/dist/chunks/lsp-N672BWEP.mjs +0 -1
  73. package/dist/chunks/mcp-JIUYQ7QS.mjs +0 -1
  74. package/dist/chunks/models-OEA6XF6K.mjs +0 -1
  75. package/dist/chunks/preferences-EUHOPNM3.mjs +0 -1
  76. package/dist/chunks/project-WTLNG2LH.mjs +0 -1
  77. package/dist/chunks/prompt-6OETS3YU.mjs +0 -1
  78. package/dist/chunks/provider-DC7XQTFP.mjs +0 -1
  79. package/dist/chunks/registry-ZXV6XNKB.mjs +0 -1
  80. package/dist/chunks/revert-PEILY52K.mjs +0 -1
  81. package/dist/chunks/ripgrep-4XTDDATX.mjs +0 -1
  82. package/dist/chunks/scheduler-2U6D3A47.mjs +0 -1
  83. package/dist/chunks/server-23WY43I2.mjs +0 -1
  84. package/dist/chunks/session-2ZGF74EQ.mjs +0 -1
  85. package/dist/chunks/session-CQ3VGE4U.mjs +0 -1
  86. package/dist/chunks/share-V2US2NJE.mjs +0 -1
  87. package/dist/chunks/snapshot-3CGXXTES.mjs +0 -1
  88. package/dist/chunks/storage-GQ3NTV5N.mjs +0 -1
  89. package/dist/chunks/tui-Y47JRG6G.mjs +0 -1
@@ -1,2 +1,2 @@
1
- import {a}from'./chunk-LFYBZHOI.mjs';import {a as a$1}from'./chunk-DJYON7M6.mjs';import {c,d}from'./chunk-X6ISXWBN.mjs';import o from'path';import a$2 from'fs/promises';import {NamedError,lazy,Filesystem,PKG,$,Lock}from'@easbot/utils';import E from'zod';import {glob}from'glob';var I;(v=>{let f=a.create({service:"storage"});v.NotFoundError=NamedError.create("NotFoundError",E.object({message:E.string()}));let O=[async i=>{let r=o.resolve(i,"../project");if(await Filesystem.isDir(r))for await(let n of new PKG.Glob("*").scan({cwd:r})){f.info(`migrating project ${n}`);let t=n,s=o.join(r,n),e="/";if(t!=="global"){let g=await glob("storage/session/message/*/*.json",{cwd:o.join(r,n),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 $`git rev-list --max-parents=0 --all`.quiet().nothrow().cwd(e).text().then(c=>c.split(`
1
+ import {a}from'./chunk-LFYBZHOI.mjs';import {a as a$1}from'./chunk-SB4J2R54.mjs';import {c,d}from'./chunk-X6ISXWBN.mjs';import o from'path';import a$2 from'fs/promises';import {NamedError,lazy,Filesystem,PKG,$,Lock}from'@easbot/utils';import E from'zod';import {glob}from'glob';var I;(v=>{let f=a.create({service:"storage"});v.NotFoundError=NamedError.create("NotFoundError",E.object({message:E.string()}));let O=[async i=>{let r=o.resolve(i,"../project");if(await Filesystem.isDir(r))for await(let n of new PKG.Glob("*").scan({cwd:r})){f.info(`migrating project ${n}`);let t=n,s=o.join(r,n),e="/";if(t!=="global"){let g=await glob("storage/session/message/*/*.json",{cwd:o.join(r,n),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 $`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(o.join(i,"project",t+".json"),JSON.stringify({id:u,vcs:"git",worktree:e,time:{created:Date.now(),initialized:Date.now()}})),f.info(`migrating sessions for project ${t}`);for await(let c of new PKG.Glob("storage/session/info/*.json").scan({cwd:s,absolute:true})){let w=o.join(i,"session",t,o.basename(c));f.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)),f.info(`migrating messages for session ${m.id}`);for await(let p of new PKG.Glob(`storage/session/message/${m.id}/*.json`).scan({cwd:s,absolute:true})){let J=o.join(i,"message",m.id,o.basename(p));f.info("copying",{msgFile:p,dest:J});let h=await a$2.readFile(p,"utf-8").then(j=>JSON.parse(j));await a$2.writeFile(J,JSON.stringify(h)),f.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:s,absolute:true})){let S=o.join(i,"part",h.id,o.basename(j)),P=await PKG.file(j).json();f.info("copying",{partFile:j,dest:S}),await PKG.write(S,JSON.stringify(P));}}}}}},async i=>{for await(let r of new PKG.Glob("session/*/*.json").scan({cwd:i,absolute:true})){let n=await PKG.file(r).json();if(!n.providerId||!n.summary?.diffs)continue;let{diffs:t}=n.summary;await PKG.write(o.join(i,"session_diff",n.id+".json"),JSON.stringify(t)),await PKG.write(o.join(i,"session",n.providerId,n.id+".json"),JSON.stringify({...n,summary:{additions:t.reduce((s,e)=>s+e.additions,0),deletions:t.reduce((s,e)=>s+e.deletions,0)}}));}}],l=lazy(async()=>{let i=o.join(a$1.Path.data,"storage");await a$2.mkdir(i,{recursive:true});let r=o.join(i,"migration"),n=await a$2.readFile(r,"utf-8").then(t=>parseInt(t,10)).catch(()=>0);for(let t=n;t<O.length;t++){f.info("running migration",{index:t});let s=O[t];s&&(await s(i).catch(()=>f.error("failed to run migration",{index:t})),await a$2.writeFile(r,(t+1).toString(),"utf-8"));}return {dir:i}});async function M(i){let r=await l().then(t=>t.dir),n=o.join(r,...i)+".json";return y(async()=>{await a$2.unlink(n).catch(()=>{});})}v.remove=M;function R(i){return l().then(r=>o.join(r.dir,...i))}v.dir=R;async function A(i){return a$2.rmdir(i).catch(()=>{})}v.rmdir=A;async function B(i){let r=await l().then(t=>t.dir),n=o.join(r,...i)+".json";return y(async()=>{var e=[];try{let t=c(e,await Lock.read(n));let s=await a$2.readFile(n,"utf-8");return JSON.parse(s)}catch(g){var u=g,c$1=true;}finally{d(e,u,c$1);}})}v.read=B;async function q(i,r){let n=await l().then(s=>s.dir),t=o.join(n,...i)+".json";return y(async()=>{var g=[];try{let s=c(g,await Lock.write(t));let e=await a$2.readFile(t,"utf-8").then(m=>JSON.parse(m));r(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);}})}v.update=q;async function H(i,r){let n=await l().then(s=>s.dir),t=o.join(n,...i)+".json";return y(async()=>{var e=[];try{let s=c(e,await Lock.write(t));await a$2.mkdir(o.dirname(t),{recursive:!0});await a$2.writeFile(t,JSON.stringify(r,null,2),"utf-8");}catch(g){var u=g,c$1=true;}finally{d(e,u,c$1);}})}v.write=H;async function y(i){return i().catch(r=>{if(!(r instanceof Error))throw r;let n=r;throw n.code==="ENOENT"?new v.NotFoundError({message:`Resource not found: ${n.path}`}):r})}let D="**/*";async function K(i){let r=await l().then(n=>n.dir);try{let t=(await glob(D,{cwd:o.join(r,...i),nodir:!0})).map(s=>[...i,...s.slice(0,-5).split(o.sep)]);return t.sort(),t}catch{return []}}v.list=K;})(I||(I={}));export{I as a};
@@ -1 +1 @@
1
- import {Oa}from'./chunk-YGFGAD5H.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import {a as a$1}from'./chunk-DJYON7M6.mjs';import {b as b$1}from'./chunk-X6ISXWBN.mjs';import d from'fs';import u from'path';var P=a.create({service:"cli-plugin"});function S(t,e,r){return {context:t,logger:a,config:r,registerCli(n,o){try{t._pluginCliRegistrations||(t._pluginCliRegistrations=[]),t._pluginCliRegistrations.push({pluginId:e,register:n,commands:o?.commands||[]}),P.debug("Plugin CLI registered",{pluginId:e,commands:o?.commands});}catch(a){throw P.error("Plugin CLI registration failed",{pluginId:e,error:a}),a}},registerCommand(n){try{if(t._pluginCommands||(t._pluginCommands=[]),!n.name||!/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(n.name))throw new Error(`Invalid command name: ${n.name}`);let o=t._pluginCommands.find(s=>s.name.toLowerCase()===n.name.toLowerCase());if(o)throw new Error(`Command "${n.name}" is already registered by plugin "${o.pluginId}"`);let a=async s=>{try{return await n.handler(s)}catch(i){return P.error("Plugin command handler failed",{pluginId:e,commandName:n.name,error:i}),{text:`Command failed: ${i instanceof Error?i.message:String(i)}`}}};t._pluginCommands.push({...n,handler:a,pluginId:e}),P.debug("Plugin command registered",{pluginId:e,commandName:n.name});}catch(o){throw P.error("Plugin command registration failed",{pluginId:e,error:o}),o}}}}var g=a.create({service:"cli-plugin-discovery"});async function F(t){if(t.enabled===false)return g.debug("Plugin system is disabled"),[];let e=[],r=new Set;if(t.loadPaths)for(let s of t.loadPaths){let i=await I(s,"npm");for(let l of i)r.has(l.id)||(e.push(l),r.add(l.id));}let n=u.join(Oa.directory,".easbot","extensions");if(d.existsSync(n)){let s=await h(n,"workspace");for(let i of s)r.has(i.id)||(e.push(i),r.add(i.id));}let o=u.join(a$1.Path.config,"extensions");if(d.existsSync(o)){let s=await h(o,"global");for(let i of s)r.has(i.id)||(e.push(i),r.add(i.id));}let a=e.filter(s=>t.deny?.includes(s.id)?(g.debug("Plugin denied by blacklist",{pluginId:s.id}),false):t.allow&&t.allow.length>0&&!t.allow.includes(s.id)?(g.debug("Plugin not in whitelist",{pluginId:s.id}),false):true);return g.info("Discovered plugins",{count:a.length,plugins:a.map(s=>s.id)}),a}async function I(t,e){if(!d.existsSync(t))return g.debug("Plugin path does not exist",{pluginPath:t}),[];let r=d.statSync(t);return r.isFile()?A(t,e):r.isDirectory()?h(t,e):[]}async function A(t,e){let r=u.dirname(t),n=u.join(r,"easbot.plugin.json"),o;if(d.existsSync(n))try{o=JSON.parse(d.readFileSync(n,"utf-8"));}catch(s){return g.error("Failed to read plugin manifest",{manifestPath:n,error:s}),[]}let a=o?.id||u.basename(t,u.extname(t));return [{id:a,name:o?.name||a,version:o?.version||"0.0.0",description:o?.description,path:t,source:e,enabled:true,manifest:o}]}async function h(t,e){let r=[];try{let n=d.readdirSync(t,{withFileTypes:!0});for(let o of n){let a=u.join(t,o.name);if(o.isFile()&&(o.name.endsWith(".ts")||o.name.endsWith(".js"))){let s=await A(a,e);r.push(...s);}else if(o.isDirectory()){let s=u.join(a,"easbot.plugin.json");if(!d.existsSync(s)){g.debug("Plugin directory missing manifest",{entryPath:a});continue}let i;try{i=JSON.parse(d.readFileSync(s,"utf-8"));}catch(m){g.error("Failed to read plugin manifest",{manifestPath:s,error:m});continue}let l=i.main||"index.ts",f=u.join(a,l);if(d.existsSync(f))r.push({id:i.id,name:i.name||i.id,version:i.version||"0.0.0",description:i.description,path:f,source:e,enabled:!0,manifest:i});else {let m=["index.js","plugin.ts","plugin.js"],w=!1;for(let E of m){let C=u.join(a,E);if(d.existsSync(C)){r.push({id:i.id,name:i.name||i.id,version:i.version||"0.0.0",description:i.description,path:C,source:e,enabled:!0,manifest:i}),w=!0;break}}w||g.error("Plugin entry file not found",{entryPath:a,entryFile:l});}}}}catch(n){g.error("Failed to read plugin directory",{dirPath:t,error:n});}return r}var c=a.create({service:"cli-plugin-loader"}),b=class{constructor(e){b$1(this,"loadedPlugins",new Map);b$1(this,"context");this.context=e;}async loadAll(e){let r=await F(e),n=await Promise.allSettled(r.map(async i=>{let l=this.context.config.plugins,f=l&&typeof l=="object"&&"entries"in l&&l.entries&&typeof l.entries=="object"?l.entries[i.id]:void 0;if(f&&typeof f=="object"&&"enabled"in f&&f.enabled===false)return c.info("Plugin disabled in config",{pluginId:i.id}),{pluginId:i.id,status:"disabled"};try{return await this.loadPlugin(i),{pluginId:i.id,status:"loaded"}}catch(m){return c.error("Failed to load plugin",{pluginId:i.id,error:m}),{pluginId:i.id,status:"failed",error:m}}})),o=n.filter(i=>i.status==="fulfilled"&&i.value.status==="loaded").length,a=n.filter(i=>i.status==="fulfilled"&&i.value.status==="failed").length,s=n.filter(i=>i.status==="fulfilled"&&i.value.status==="disabled").length;c.info("All plugins processed",{total:r.length,loaded:o,failed:a,disabled:s});}async loadPlugin(e){if(this.loadedPlugins.has(e.id)){c.debug("Plugin already loaded",{pluginId:e.id});return}c.debug("Loading plugin",{pluginId:e.id,path:e.path});try{let r=await import(e.path),n=r.default||r.plugin;if(!n)throw new Error("Plugin module does not export a plugin definition");if(typeof n!="function"&&(typeof n!="object"||!n.register))throw new Error("Plugin must be a function or an object with a register method");this.loadedPlugins.set(e.id,n),await this.initializePlugin(e.id,n),c.info("Plugin loaded successfully",{pluginId:e.id,name:e.name});}catch(r){let n=r instanceof Error?r.message:String(r),o=r instanceof Error?r.stack:void 0;throw c.error("Failed to load plugin module",{pluginId:e.id,path:e.path,error:n,stack:o}),new Error(`Failed to load plugin "${e.id}" from ${e.path}: ${n}`)}}async initializePlugin(e,r){let n=this.context.config.plugins,o=n&&typeof n=="object"&&"entries"in n&&n.entries&&typeof n.entries=="object"?n.entries[e]:void 0,a=(o&&typeof o=="object"&&"config"in o?o.config:{})||{},s=S(this.context,e,a);try{if(typeof r=="function")await r(s);else {let i=r;i.id&&i.id!==e&&c.warn("Plugin ID mismatch",{expected:e,actual:i.id}),await i.register(s);}c.debug("Plugin initialized",{pluginId:e});}catch(i){throw c.error("Plugin initialization failed",{pluginId:e,error:i}),this.loadedPlugins.delete(e),new Error(`Plugin "${e}" initialization failed: ${i instanceof Error?i.message:String(i)}`)}}getPlugin(e){return this.loadedPlugins.get(e)}getLoadedPluginIds(){return Array.from(this.loadedPlugins.keys())}};function H(t){return new b(t)}export{b as a,H as b};
1
+ import {Oa}from'./chunk-FWVB6X4X.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import {a as a$1}from'./chunk-SB4J2R54.mjs';import {b as b$1}from'./chunk-X6ISXWBN.mjs';import d from'fs';import u from'path';var P=a.create({service:"cli-plugin"});function S(t,e,r){return {context:t,logger:a,config:r,registerCli(n,o){try{t._pluginCliRegistrations||(t._pluginCliRegistrations=[]),t._pluginCliRegistrations.push({pluginId:e,register:n,commands:o?.commands||[]}),P.debug("Plugin CLI registered",{pluginId:e,commands:o?.commands});}catch(a){throw P.error("Plugin CLI registration failed",{pluginId:e,error:a}),a}},registerCommand(n){try{if(t._pluginCommands||(t._pluginCommands=[]),!n.name||!/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(n.name))throw new Error(`Invalid command name: ${n.name}`);let o=t._pluginCommands.find(s=>s.name.toLowerCase()===n.name.toLowerCase());if(o)throw new Error(`Command "${n.name}" is already registered by plugin "${o.pluginId}"`);let a=async s=>{try{return await n.handler(s)}catch(i){return P.error("Plugin command handler failed",{pluginId:e,commandName:n.name,error:i}),{text:`Command failed: ${i instanceof Error?i.message:String(i)}`}}};t._pluginCommands.push({...n,handler:a,pluginId:e}),P.debug("Plugin command registered",{pluginId:e,commandName:n.name});}catch(o){throw P.error("Plugin command registration failed",{pluginId:e,error:o}),o}}}}var g=a.create({service:"cli-plugin-discovery"});async function F(t){if(t.enabled===false)return g.debug("Plugin system is disabled"),[];let e=[],r=new Set;if(t.loadPaths)for(let s of t.loadPaths){let i=await I(s,"npm");for(let l of i)r.has(l.id)||(e.push(l),r.add(l.id));}let n=u.join(Oa.directory,".easbot","extensions");if(d.existsSync(n)){let s=await h(n,"workspace");for(let i of s)r.has(i.id)||(e.push(i),r.add(i.id));}let o=u.join(a$1.Path.config,"extensions");if(d.existsSync(o)){let s=await h(o,"global");for(let i of s)r.has(i.id)||(e.push(i),r.add(i.id));}let a=e.filter(s=>t.deny?.includes(s.id)?(g.debug("Plugin denied by blacklist",{pluginId:s.id}),false):t.allow&&t.allow.length>0&&!t.allow.includes(s.id)?(g.debug("Plugin not in whitelist",{pluginId:s.id}),false):true);return g.info("Discovered plugins",{count:a.length,plugins:a.map(s=>s.id)}),a}async function I(t,e){if(!d.existsSync(t))return g.debug("Plugin path does not exist",{pluginPath:t}),[];let r=d.statSync(t);return r.isFile()?A(t,e):r.isDirectory()?h(t,e):[]}async function A(t,e){let r=u.dirname(t),n=u.join(r,"easbot.plugin.json"),o;if(d.existsSync(n))try{o=JSON.parse(d.readFileSync(n,"utf-8"));}catch(s){return g.error("Failed to read plugin manifest",{manifestPath:n,error:s}),[]}let a=o?.id||u.basename(t,u.extname(t));return [{id:a,name:o?.name||a,version:o?.version||"0.0.0",description:o?.description,path:t,source:e,enabled:true,manifest:o}]}async function h(t,e){let r=[];try{let n=d.readdirSync(t,{withFileTypes:!0});for(let o of n){let a=u.join(t,o.name);if(o.isFile()&&(o.name.endsWith(".ts")||o.name.endsWith(".js"))){let s=await A(a,e);r.push(...s);}else if(o.isDirectory()){let s=u.join(a,"easbot.plugin.json");if(!d.existsSync(s)){g.debug("Plugin directory missing manifest",{entryPath:a});continue}let i;try{i=JSON.parse(d.readFileSync(s,"utf-8"));}catch(m){g.error("Failed to read plugin manifest",{manifestPath:s,error:m});continue}let l=i.main||"index.ts",f=u.join(a,l);if(d.existsSync(f))r.push({id:i.id,name:i.name||i.id,version:i.version||"0.0.0",description:i.description,path:f,source:e,enabled:!0,manifest:i});else {let m=["index.js","plugin.ts","plugin.js"],w=!1;for(let E of m){let C=u.join(a,E);if(d.existsSync(C)){r.push({id:i.id,name:i.name||i.id,version:i.version||"0.0.0",description:i.description,path:C,source:e,enabled:!0,manifest:i}),w=!0;break}}w||g.error("Plugin entry file not found",{entryPath:a,entryFile:l});}}}}catch(n){g.error("Failed to read plugin directory",{dirPath:t,error:n});}return r}var c=a.create({service:"cli-plugin-loader"}),b=class{constructor(e){b$1(this,"loadedPlugins",new Map);b$1(this,"context");this.context=e;}async loadAll(e){let r=await F(e),n=await Promise.allSettled(r.map(async i=>{let l=this.context.config.plugins,f=l&&typeof l=="object"&&"entries"in l&&l.entries&&typeof l.entries=="object"?l.entries[i.id]:void 0;if(f&&typeof f=="object"&&"enabled"in f&&f.enabled===false)return c.info("Plugin disabled in config",{pluginId:i.id}),{pluginId:i.id,status:"disabled"};try{return await this.loadPlugin(i),{pluginId:i.id,status:"loaded"}}catch(m){return c.error("Failed to load plugin",{pluginId:i.id,error:m}),{pluginId:i.id,status:"failed",error:m}}})),o=n.filter(i=>i.status==="fulfilled"&&i.value.status==="loaded").length,a=n.filter(i=>i.status==="fulfilled"&&i.value.status==="failed").length,s=n.filter(i=>i.status==="fulfilled"&&i.value.status==="disabled").length;c.info("All plugins processed",{total:r.length,loaded:o,failed:a,disabled:s});}async loadPlugin(e){if(this.loadedPlugins.has(e.id)){c.debug("Plugin already loaded",{pluginId:e.id});return}c.debug("Loading plugin",{pluginId:e.id,path:e.path});try{let r=await import(e.path),n=r.default||r.plugin;if(!n)throw new Error("Plugin module does not export a plugin definition");if(typeof n!="function"&&(typeof n!="object"||!n.register))throw new Error("Plugin must be a function or an object with a register method");this.loadedPlugins.set(e.id,n),await this.initializePlugin(e.id,n),c.info("Plugin loaded successfully",{pluginId:e.id,name:e.name});}catch(r){let n=r instanceof Error?r.message:String(r),o=r instanceof Error?r.stack:void 0;throw c.error("Failed to load plugin module",{pluginId:e.id,path:e.path,error:n,stack:o}),new Error(`Failed to load plugin "${e.id}" from ${e.path}: ${n}`)}}async initializePlugin(e,r){let n=this.context.config.plugins,o=n&&typeof n=="object"&&"entries"in n&&n.entries&&typeof n.entries=="object"?n.entries[e]:void 0,a=(o&&typeof o=="object"&&"config"in o?o.config:{})||{},s=S(this.context,e,a);try{if(typeof r=="function")await r(s);else {let i=r;i.id&&i.id!==e&&c.warn("Plugin ID mismatch",{expected:e,actual:i.id}),await i.register(s);}c.debug("Plugin initialized",{pluginId:e});}catch(i){throw c.error("Plugin initialization failed",{pluginId:e,error:i}),this.loadedPlugins.delete(e),new Error(`Plugin "${e}" initialization failed: ${i instanceof Error?i.message:String(i)}`)}}getPlugin(e){return this.loadedPlugins.get(e)}getLoadedPluginIds(){return Array.from(this.loadedPlugins.keys())}};function H(t){return new b(t)}export{b as a,H as b};
@@ -1,2 +1,2 @@
1
- import {a as a$1}from'./chunk-CJTCCLW4.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import {a as a$2}from'./chunk-DJYON7M6.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={}));
1
+ import {a as a$1}from'./chunk-CJTCCLW4.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import {a as a$2}from'./chunk-SB4J2R54.mjs';import D from'path';import {NamedError,$,Fetch,iife}from'@easbot/utils';import _ from'zod';function o(A){let T=process.env[A]?.toLowerCase();return T==="true"||T==="1"}function w(A,T){let B=process.env[A];if(B===void 0)return T;let m=Number(B);return Number.isNaN(m)?T:m}var i;(e=>{e.EASBOT_CONFIG=process.env.EASBOT_CONFIG,e.EASBOT_CONFIG_CONTENT=process.env.EASBOT_CONFIG_CONTENT,e.EASBOT_AUTO_SHARE=o("EASBOT_AUTO_SHARE"),e.EASBOT_DISABLE_AUTOUPDATE=o("EASBOT_DISABLE_AUTOUPDATE"),e.EASBOT_DISABLE_PRUNE=o("EASBOT_DISABLE_PRUNE"),e.EASBOT_DISABLE_TERMINAL_TITLE=o("EASBOT_DISABLE_TERMINAL_TITLE"),e.EASBOT_DISABLE_DEFAULT_PLUGINS=o("EASBOT_DISABLE_DEFAULT_PLUGINS"),e.EASBOT_DISABLE_LSP_DOWNLOAD=o("EASBOT_DISABLE_LSP_DOWNLOAD"),e.EASBOT_DISABLE_AUTOCOMPACT=o("EASBOT_DISABLE_AUTOCOMPACT"),e.EASBOT_DISABLE_MODELS_FETCH=o("EASBOT_DISABLE_MODELS_FETCH"),e.EASBOT_DISABLE_FILETIME_CHECK=o("EASBOT_DISABLE_FILETIME_CHECK"),e.EASBOT_ENABLE_EXPERIMENTAL_MODELS=o("EASBOT_ENABLE_EXPERIMENTAL_MODELS"),e.EASBOT_ENABLE_QUESTION_TOOL=o("EASBOT_ENABLE_QUESTION_TOOL"),e.EASBOT_DISABLE_EXTERNAL_SKILLS=o("EASBOT_DISABLE_EXTERNAL_SKILLS"),e.EASBOT_GIT_BASH_PATH=process.env.EASBOT_GIT_BASH_PATH,e.EASBOT_MODELS_URL=process.env.EASBOT_MODELS_URL,e.EASBOT_MODELS_PATH=process.env.EASBOT_MODELS_PATH,e.EASBOT_PERMISSION=process.env.EASBOT_PERMISSION,e.EASBOT_SERVER_USERNAME=process.env.EASBOT_SERVER_USERNAME,e.EASBOT_SERVER_PASSWORD=process.env.EASBOT_SERVER_PASSWORD,e.EASBOT_FAKE_VCS=process.env.EASBOT_FAKE_VCS,e.EASBOT_FILEWATCHER=o("EASBOT_FILEWATCHER"),e.EASBOT_ICON_DISCOVERY=o("EASBOT_ICON_DISCOVERY"),e.EASBOT_ENABLE_EXA=o("EASBOT_ENABLE_EXA"),e.EASBOT_BASH_DEFAULT_TIMEOUT_MS=O("EASBOT_BASH_DEFAULT_TIMEOUT_MS"),e.EASBOT_OUTPUT_TOKEN_MAX=O("EASBOT_OUTPUT_TOKEN_MAX"),e.EASBOT_OXFMT=o("EASBOT_OXFMT"),e.EASBOT_LSP_TY=o("EASBOT_LSP_TY"),e.EASBOT_LSP_TOOL=o("EASBOT_LSP_TOOL"),e.EASBOT_LSP_INIT_TIMEOUT=w("EASBOT_LSP_INIT_TIMEOUT",3e5),e.EASBOT_LSP_DIAGNOSTICS_TIMEOUT=w("EASBOT_LSP_DIAGNOSTICS_TIMEOUT",6e4),e.EASBOT_PLAN_MODE=o("EASBOT_PLAN_MODE"),e.EASBOT_MARKDOWN=o("EASBOT_MARKDOWN"),e.EASBOT_DISABLE_COMPACT=o("EASBOT_DISABLE_COMPACT"),e.EASBOT_DISABLE_AUTO_COMPACT=o("EASBOT_DISABLE_AUTO_COMPACT"),e.EASBOT_AUTOCOMPACT_PCT_OVERRIDE=O("EASBOT_AUTOCOMPACT_PCT_OVERRIDE"),e.EASBOT_AUTO_COMPACT_WINDOW=O("EASBOT_AUTO_COMPACT_WINDOW"),e.EASBOT_BLOCKING_LIMIT_OVERRIDE=O("EASBOT_BLOCKING_LIMIT_OVERRIDE"),e.EASBOT_MAX_CONTEXT_TOKENS=O("EASBOT_MAX_CONTEXT_TOKENS"),e.EASBOT_MAX_TOOL_USE_CONCURRENCY=O("EASBOT_MAX_TOOL_USE_CONCURRENCY");function O(y){let C=process.env[y];if(!C)return;let d=Number(C);return Number.isInteger(d)&&d>0?d:void 0}})(i||(i={}));Object.defineProperty(i,"EASBOT_DISABLE_PROJECT_CONFIG",{get(){return o("EASBOT_DISABLE_PROJECT_CONFIG")},enumerable:true,configurable:false});Object.defineProperty(i,"EASBOT_CONFIG_DIR",{get(){return process.env.EASBOT_CONFIG_DIR},enumerable:true,configurable:false});Object.defineProperty(i,"EASBOT_CLIENT",{get(){return process.env.EASBOT_CLIENT??"cli"},enumerable:true,configurable:false});var M;(S=>{let A=a.create({service:"installation"});S.Event={Updated:a$1.define("installation.updated",_.object({version:_.string()})),UpdateAvailable:a$1.define("installation.update-available",_.object({version:_.string()}))},S.Info=_.object({version:_.string(),latest:_.string()}).meta({ref:"InstallationInfo"});async function m(){return {version:I(),latest:await N()}}S.info=m;function P(){return a$2.isPreview()}S.isPreview=P;function R(){return a$2.isLocal()}S.isLocal=R;async function l(){if(process.execPath.includes(D.join(".easbot","bin"))||process.execPath.includes(D.join(".local","bin")))return "curl";let a=process.execPath.toLowerCase(),r=[{name:"npm",command:()=>$`npm list -g --depth=0`.throws(false).quiet().text()},{name:"yarn",command:()=>$`yarn global list`.throws(false).quiet().text()},{name:"pnpm",command:()=>$`pnpm list -g --depth=0`.throws(false).quiet().text()},{name:"bun",command:()=>$`bun pm ls -g`.throws(false).quiet().text()},{name:"brew",command:()=>$`brew list --formula easbot`.throws(false).quiet().text()},{name:"scoop",command:()=>$`scoop list easbot`.throws(false).quiet().text()},{name:"choco",command:()=>$`choco list --limit-output easbot`.throws(false).quiet().text()}];r.sort((t,s)=>{let E=a.includes(t.name),c=a.includes(s.name);return E&&!c?-1:!E&&c?1:0});for(let t of r){let s=await t.command(),E=(t.name==="brew"||t.name==="choco"||t.name==="scoop","easbot");if(s.includes(E))return t.name}return "unknown"}S.method=l,S.UpgradeFailedError=NamedError.create("UpgradeFailedError",_.object({stderr:_.string()}));async function f(){return (await $`brew list --formula anomalyco/tap/easbot`.throws(false).quiet().text()).includes("easbot")?"anomalyco/tap/easbot":((await $`brew list --formula easbot`.throws(false).quiet().text()).includes("easbot"),"easbot")}async function U(a,r){let t;switch(a){case "curl":t=$`curl -fsSL https://easbot.cn/install | bash`.env({...process.env,VERSION:r});break;case "npm":t=$`npm install -g easbot@${r}`;break;case "pnpm":t=$`pnpm install -g easbot@${r}`;break;case "bun":t=$`bun install -g easbot@${r}`;break;case "brew":{let E=await f();if(E.includes("/")){t=$`brew tap anomalyco/tap && cd "$(brew --repo anomalyco/tap)" && git pull --ff-only && brew upgrade ${E}`.env({HOMEBREW_NO_AUTO_UPDATE:"1",...process.env});break}t=$`brew upgrade ${E}`.env({HOMEBREW_NO_AUTO_UPDATE:"1",...process.env});break}case "choco":t=$`echo Y | choco upgrade easbot --version=${r}`;break;case "scoop":t=$`scoop install easbot@${r}`;break;default:throw new Error(`Unknown method: ${a}`)}let s=await t.quiet().throws(false);if(s.exitCode!==0){let E=a==="choco"?"not running from an elevated command shell":s.stderr.toString("utf8");throw new S.UpgradeFailedError({stderr:E})}A.info("upgraded",{method:a,target:r,stdout:s.stdout.toString(),stderr:s.stderr.toString()}),await $`${process.execPath} --version`.nothrow().quiet().text();}S.upgrade=U;function I(){return a$2.getVersion()}S.getVersion=I;function L(){return a$2.getChannel()}S.getChannel=L;function v(){return `easbot/${L()}/${I()}/${i.EASBOT_CLIENT}`}S.getUserAgent=v;async function N(a){let r=a||await l();if(r==="brew"){let t=await f();if(t.includes("/")){let s=await $`brew info --json=v2 ${t}`.quiet().text(),c=JSON.parse(s).formulae?.[0]?.versions?.stable;if(!c)throw new Error(`Could not detect version for tap formula: ${t}`);return c}return Fetch.get("https://formulae.brew.sh/api/formula/easbot.json").then(s=>{if(!s.ok)throw new Error(s.statusText);return s.data?.versions?.stable??"unknown"})}if(r==="npm"||r==="bun"||r==="pnpm"){let t=await iife(async()=>{let c=(await $`npm config get registry`.quiet().nothrow().text()).trim()||"https://registry.npmjs.org";return c.endsWith("/")?c.slice(0,-1):c}),s=L();return Fetch.get(`${t}/easbot/${s}`).then(E=>{if(!E.ok)throw new Error(E.statusText);return E.data?.version??"unknown"})}return r==="choco"?Fetch.get("https://community.chocolatey.org/api/v2/Packages?$filter=Id%20eq%20%27easbot%27%20and%20IsLatestVersion&$select=Version",{headers:{Accept:"application/json;odata=verbose"}}).then(t=>{if(!t.ok)throw new Error(t.statusText);return t.data?.d?.results?.[0]?.Version??"unknown"}):r==="scoop"?Fetch.get("https://raw.githubusercontent.com/ScoopInstaller/Main/master/bucket/easbot.json",{headers:{Accept:"application/json"}}).then(t=>{if(!t.ok)throw new Error(t.statusText);return t.data?.version??"unknown"}):Fetch.get("https://api.github.com/repos/houjallen/easbot/releases/latest").then(t=>{if(!t.ok)throw new Error(t.statusText);return (t.data?.tag_name??"unknown").replace(/^v/,"")})}S.latest=N;})(M||(M={}));
2
2
  export{i as a,M as b};
@@ -1 +1 @@
1
- import {Oa,qb}from'./chunk-YGFGAD5H.mjs';import {a}from'./chunk-LFYBZHOI.mjs';var e=a.create({service:"cli-bootstrap"});async function f(o,i){let r=o||process.cwd();try{let{Global:t}=await import('./global-FDT3NNWD.mjs');await t.init();}catch(t){throw e.error("Failed to initialize Global",{error:t instanceof Error?t.message:String(t)}),new Error(`Global initialization failed: ${t instanceof Error?t.message:String(t)}`)}try{return await Oa.provide({directory:r,init:qb,fn:async()=>await i()})}catch(t){throw e.error("Failed to execute in Instance context",{directory:r,error:t instanceof Error?t.message:String(t)}),t}}async function g(o={}){let i=o.directory??process.cwd();try{let{Global:r}=await import('./global-FDT3NNWD.mjs');await r.init();}catch(r){throw e.error("Failed to initialize Global",{error:r instanceof Error?r.message:String(r)}),new Error(`Global initialization failed: ${r instanceof Error?r.message:String(r)}`)}try{return await Oa.provide({directory:i,init:qb,fn:async()=>{let{buildProgram:r}=await import('./build-program-U2HDARWA.mjs');return await r(o)}})}catch(r){throw e.error("Failed to build program in Instance context",{directory:i,error:r instanceof Error?r.message:String(r)}),r}}export{f as a,g as b};
1
+ import {Oa,qb}from'./chunk-FWVB6X4X.mjs';import {a}from'./chunk-LFYBZHOI.mjs';var e=a.create({service:"cli-bootstrap"});async function f(o,i){let r=o||process.cwd();try{let{Global:t}=await import('./global-XQYOBWZR.mjs');await t.init();}catch(t){throw e.error("Failed to initialize Global",{error:t instanceof Error?t.message:String(t)}),new Error(`Global initialization failed: ${t instanceof Error?t.message:String(t)}`)}try{return await Oa.provide({directory:r,init:qb,fn:async()=>await i()})}catch(t){throw e.error("Failed to execute in Instance context",{directory:r,error:t instanceof Error?t.message:String(t)}),t}}async function g(o={}){let i=o.directory??process.cwd();try{let{Global:r}=await import('./global-XQYOBWZR.mjs');await r.init();}catch(r){throw e.error("Failed to initialize Global",{error:r instanceof Error?r.message:String(r)}),new Error(`Global initialization failed: ${r instanceof Error?r.message:String(r)}`)}try{return await Oa.provide({directory:i,init:qb,fn:async()=>{let{buildProgram:r}=await import('./build-program-YDOM5ROT.mjs');return await r(o)}})}catch(r){throw e.error("Failed to build program in Instance context",{directory:i,error:r instanceof Error?r.message:String(r)}),r}}export{f as a,g as b};
@@ -1,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 S from'os';import {Filesystem}from'@easbot/utils';var l={name:"@easbot/agent",version:"0.2.40",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.25.0","@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/types":"workspace:*","@easbot/utils":"workspace:*","@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:*","@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 c="easbot",p=Filesystem.normalize(s.join(xdgData,c)),z=Filesystem.normalize(s.join(xdgCache,c)),N=Filesystem.normalize(s.join(xdgConfig,c)),B=Filesystem.normalize(s.join(xdgState,c)),v;(e=>{e.Path={get home(){return Filesystem.normalize(process.env.EASBOT_TEST_HOME||S.homedir())},data:p,bin:Filesystem.normalize(s.join(p,"bin")),log:Filesystem.normalize(s.join(p,"log")),cache:z,config:N,state:B};function C(){return (process.env.PATH||process.env.Path||"")+s.delimiter+e.Path.bin}e.getPathWithBin=C;let t=null,o=null;async function f(){if(t)return t;if(process.env.EASBOT_VERSION)return t=process.env.EASBOT_VERSION,t;try{t=l.version||"local";}catch{t="local";}return t||"local"}function k(){if(t)return t;if(process.env.EASBOT_VERSION)return t=process.env.EASBOT_VERSION,t;try{t=l.version||"local";}catch{t="local";}return t||"local"}e.getVersion=k;function d(){if(o)return o;if(process.env.EASBOT_CHANNEL)return o=process.env.EASBOT_CHANNEL,o;let i=k();return i==="local"||i.includes("dev")?o="local":i.includes("beta")||i.includes("alpha")?o="preview":o="latest",o||"local"}e.getChannel=d;function H(){return d()==="local"}e.isLocal=H;function V(){return d()==="preview"}e.isPreview=V;let u=false,n=null;async function I(){if(!u)return n||(n=(async()=>{await f(),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})]);let i=process.env.PATH||process.env.Path||"";process.env.PATH=i+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 h="1",m=s.join(e.Path.cache,"version");if(await readFile(m,"utf-8").catch(()=>"0")!==h){try{let g=await readdir(e.Path.cache);await Promise.all(g.map(w=>rm(s.join(e.Path.cache,w),{recursive:!0,force:!0})));}catch{}await writeFile(m,h);}u=true;})(),n)}e.init=I;})(v||(v={}));
1
+ import {mkdir,readFile,readdir,rm,writeFile}from'fs/promises';import s from'path';import {xdgData,xdgCache,xdgConfig,xdgState}from'xdg-basedir';import S from'os';import {Filesystem}from'@easbot/utils';var l={name:"@easbot/agent",version:"0.2.41",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.25.0","@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/types":"workspace:*","@easbot/utils":"workspace:*","@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:*","@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 c="easbot",p=Filesystem.normalize(s.join(xdgData,c)),z=Filesystem.normalize(s.join(xdgCache,c)),N=Filesystem.normalize(s.join(xdgConfig,c)),B=Filesystem.normalize(s.join(xdgState,c)),v;(e=>{e.Path={get home(){return Filesystem.normalize(process.env.EASBOT_TEST_HOME||S.homedir())},data:p,bin:Filesystem.normalize(s.join(p,"bin")),log:Filesystem.normalize(s.join(p,"log")),cache:z,config:N,state:B};function C(){return (process.env.PATH||process.env.Path||"")+s.delimiter+e.Path.bin}e.getPathWithBin=C;let t=null,o=null;async function f(){if(t)return t;if(process.env.EASBOT_VERSION)return t=process.env.EASBOT_VERSION,t;try{t=l.version||"local";}catch{t="local";}return t||"local"}function k(){if(t)return t;if(process.env.EASBOT_VERSION)return t=process.env.EASBOT_VERSION,t;try{t=l.version||"local";}catch{t="local";}return t||"local"}e.getVersion=k;function d(){if(o)return o;if(process.env.EASBOT_CHANNEL)return o=process.env.EASBOT_CHANNEL,o;let i=k();return i==="local"||i.includes("dev")?o="local":i.includes("beta")||i.includes("alpha")?o="preview":o="latest",o||"local"}e.getChannel=d;function H(){return d()==="local"}e.isLocal=H;function V(){return d()==="preview"}e.isPreview=V;let u=false,n=null;async function I(){if(!u)return n||(n=(async()=>{await f(),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})]);let i=process.env.PATH||process.env.Path||"";process.env.PATH=i+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 h="1",m=s.join(e.Path.cache,"version");if(await readFile(m,"utf-8").catch(()=>"0")!==h){try{let g=await readdir(e.Path.cache);await Promise.all(g.map(w=>rm(s.join(e.Path.cache,w),{recursive:!0,force:!0})));}catch{}await writeFile(m,h);}u=true;})(),n)}e.init=I;})(v||(v={}));
2
2
  export{v as a};
@@ -1 +1 @@
1
- import {a as a$1}from'./chunk-JII5HRIF.mjs';import {a}from'./chunk-LFYBZHOI.mjs';var n=a.create({service:"tui-state-storage"}),i={toolsExpanded:true,showThinking:true,verboseLevel:"off",thinkingLevel:"low",messageLimit:50,localShellPermission:"ask"};async function h(o){try{let e=await a$1.read(["tui",o]),t={toolsExpanded:typeof e.toolsExpanded=="boolean"?e.toolsExpanded:i.toolsExpanded,showThinking:typeof e.showThinking=="boolean"?e.showThinking:i.showThinking,verboseLevel:e.verboseLevel==="on"||e.verboseLevel==="off"?e.verboseLevel:i.verboseLevel,thinkingLevel:e.thinkingLevel==="off"||e.thinkingLevel==="low"||e.thinkingLevel==="medium"||e.thinkingLevel==="high"?e.thinkingLevel:i.thinkingLevel,messageLimit:e.messageLimit===25||e.messageLimit===50||e.messageLimit===100?e.messageLimit:i.messageLimit,localShellPermission:e.localShellPermission==="on"||e.localShellPermission==="off"||e.localShellPermission==="ask"?e.localShellPermission:i.localShellPermission,contextMode:e.contextMode==="general"||e.contextMode==="coder"?e.contextMode:void 0,model:e.model,agent:e.agent,sessionId:e.sessionId};return n.debug("TUI state loaded",{sessionId:o,state:t}),t}catch(e){return e instanceof a$1.NotFoundError?n.debug("TUI state not found, using defaults",{sessionId:o}):n.warn("Failed to load TUI state, using defaults",{sessionId:o,error:e}),{...i}}}async function r(o,e){try{await a$1.write(["tui",o],e),n.debug("TUI state saved",{sessionId:o,state:e});}catch(t){n.error("Failed to save TUI state",{sessionId:o,error:t});}}async function c(o){if(!o.currentSessionId){n.warn("Cannot save TUI state: no session ID");return}let e={toolsExpanded:o.toolsExpanded,showThinking:o.showThinking,thinkingLevel:o.thinkingLevel,verboseLevel:o.verboseLevel,messageLimit:o.messageLimit,localShellPermission:o.localShellPermission,contextMode:o.contextMode,model:o.sessionInfo.model,agent:o.agent||void 0,sessionId:o.currentSessionId};await r(o.currentSessionId,e);}export{h as a,c as b};
1
+ import {a as a$1}from'./chunk-GRDTQW6K.mjs';import {a}from'./chunk-LFYBZHOI.mjs';var n=a.create({service:"tui-state-storage"}),i={toolsExpanded:true,showThinking:true,verboseLevel:"off",thinkingLevel:"low",messageLimit:50,localShellPermission:"ask"};async function h(o){try{let e=await a$1.read(["tui",o]),t={toolsExpanded:typeof e.toolsExpanded=="boolean"?e.toolsExpanded:i.toolsExpanded,showThinking:typeof e.showThinking=="boolean"?e.showThinking:i.showThinking,verboseLevel:e.verboseLevel==="on"||e.verboseLevel==="off"?e.verboseLevel:i.verboseLevel,thinkingLevel:e.thinkingLevel==="off"||e.thinkingLevel==="low"||e.thinkingLevel==="medium"||e.thinkingLevel==="high"?e.thinkingLevel:i.thinkingLevel,messageLimit:e.messageLimit===25||e.messageLimit===50||e.messageLimit===100?e.messageLimit:i.messageLimit,localShellPermission:e.localShellPermission==="on"||e.localShellPermission==="off"||e.localShellPermission==="ask"?e.localShellPermission:i.localShellPermission,contextMode:e.contextMode==="general"||e.contextMode==="coder"?e.contextMode:void 0,model:e.model,agent:e.agent,sessionId:e.sessionId};return n.debug("TUI state loaded",{sessionId:o,state:t}),t}catch(e){return e instanceof a$1.NotFoundError?n.debug("TUI state not found, using defaults",{sessionId:o}):n.warn("Failed to load TUI state, using defaults",{sessionId:o,error:e}),{...i}}}async function r(o,e){try{await a$1.write(["tui",o],e),n.debug("TUI state saved",{sessionId:o,state:e});}catch(t){n.error("Failed to save TUI state",{sessionId:o,error:t});}}async function c(o){if(!o.currentSessionId){n.warn("Cannot save TUI state: no session ID");return}let e={toolsExpanded:o.toolsExpanded,showThinking:o.showThinking,thinkingLevel:o.thinkingLevel,verboseLevel:o.verboseLevel,messageLimit:o.messageLimit,localShellPermission:o.localShellPermission,contextMode:o.contextMode,model:o.sessionInfo.model,agent:o.agent||void 0,sessionId:o.currentSessionId};await r(o.currentSessionId,e);}export{h as a,c as b};
@@ -1,2 +1,2 @@
1
- import {a as a$2,b}from'./chunk-O2JOXYKG.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import {a as a$1}from'./chunk-DJYON7M6.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());}
1
+ import {a as a$2,b}from'./chunk-KTMZPMCI.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import {a as a$1}from'./chunk-SB4J2R54.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
2
  export{n as a,z as b};
@@ -1 +1 @@
1
- export{a as CommandMetadataSchema,c as createCommandFromMarkdown,f as define,b as loadCommandFromFile,e as replaceTemplateVars,d as scanCommands}from'./chunk-ZFGVQIO5.mjs';import'./chunk-X6ISXWBN.mjs';
1
+ export{a as CommandMetadataSchema,c as createCommandFromMarkdown,f as define,b as loadCommandFromFile,e as replaceTemplateVars,d as scanCommands}from'./chunk-75IQNF4I.mjs';import'./chunk-X6ISXWBN.mjs';
@@ -0,0 +1 @@
1
+ export{O as Compaction,o as CompactionCache,n as DEFAULT_CACHE_CONFIG,p as createCompactionCache,q as subscribeCacheEvents}from'./chunk-FWVB6X4X.mjs';import'./chunk-CCRIJZBK.mjs';import'./chunk-D4GDS5UI.mjs';import'./chunk-75IQNF4I.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-UBCLKZWP.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-AAJAKVQY.mjs';import'./chunk-UNBJ6Y7L.mjs';import'./chunk-X7KLQIAQ.mjs';import'./chunk-KTMZPMCI.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-GRDTQW6K.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-SB4J2R54.mjs';import'./chunk-X6ISXWBN.mjs';
@@ -1 +1 @@
1
- export{fb as Agent,db as Command,pb as Config,ob as ConfigDirectoryTypoError,lb as Info,v as InvalidError,u as JsonError,gb as Keybinds,jb as Layout,_a as Mcp,Xa as McpLocal,Ya as McpOAuth,Za as McpRemote,Wa as ModelId,cb as Permission,$a as PermissionAction,ab as PermissionObject,bb as PermissionRule,kb as Provider,ib as Server,eb as Skills,Sa as SubAgent,Ta as SubAgentConfigSchema,Ra as SubAgentModel,Pa as SubAgentRunMode,Qa as SubAgentTransportType,hb as TUI,D as deduplicatePlugins,H as directories,G as get,U as getACPClientsConfig,T as getACPServerConfig,X as getAcpAgentName,V as getAcpAgentRuntimeConfig,W as getAcpModelConfig,ga as getFileCacheConfig,J as getGlobal,C as getPluginName,Va as getSubAgentConfig,ha as getTokenEstimationConfig,I as global,t as installDependencies,L as isAutoCompactEnabled,N as isBackupEnabled,M as isPruneEnabled,x as load,S as loadACPConfig,z as loadAgent,ca as loadCodebase,A as loadCommand,ia as loadContextConfig,w as loadFile,ea as loadKnowledge,da as loadMemory,ba as loadNote,B as loadPlugin,Ua as loadSubAgentConfig,r as mergeConfigConcatArrays,s as needsInstall,y as parseConfig,E as state,mb as update,nb as updateGlobal,F as waitForDependencies}from'./chunk-YGFGAD5H.mjs';import'./chunk-CCRIJZBK.mjs';import'./chunk-XQXI2ZHB.mjs';import'./chunk-ZFGVQIO5.mjs';export{h as getAgentRegistryConfig,m as getAgentSyncConfig,k as getAuthConfig,d as getChannelConfig,e as getConnectionPoolConfig,l as getGatewayClusterConfig,c as getGatewayServerConfig,j as getHTTPSConfig,f as getMessageQueueConfig,i as getSessionConfig,b as loadGatewayConfig}from'./chunk-ZBRXNYEM.mjs';import'./chunk-H45MZAM6.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-AAJAKVQY.mjs';import'./chunk-UNBJ6Y7L.mjs';import'./chunk-ZG2HQDXQ.mjs';import'./chunk-O2JOXYKG.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-JII5HRIF.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-DJYON7M6.mjs';import'./chunk-X6ISXWBN.mjs';
1
+ export{fb as Agent,db as Command,pb as Config,ob as ConfigDirectoryTypoError,lb as Info,v as InvalidError,u as JsonError,gb as Keybinds,jb as Layout,_a as Mcp,Xa as McpLocal,Ya as McpOAuth,Za as McpRemote,Wa as ModelId,cb as Permission,$a as PermissionAction,ab as PermissionObject,bb as PermissionRule,kb as Provider,ib as Server,eb as Skills,Sa as SubAgent,Ta as SubAgentConfigSchema,Ra as SubAgentModel,Pa as SubAgentRunMode,Qa as SubAgentTransportType,hb as TUI,D as deduplicatePlugins,H as directories,G as get,U as getACPClientsConfig,T as getACPServerConfig,X as getAcpAgentName,V as getAcpAgentRuntimeConfig,W as getAcpModelConfig,ga as getFileCacheConfig,J as getGlobal,C as getPluginName,Va as getSubAgentConfig,ha as getTokenEstimationConfig,I as global,t as installDependencies,L as isAutoCompactEnabled,N as isBackupEnabled,M as isPruneEnabled,x as load,S as loadACPConfig,z as loadAgent,ca as loadCodebase,A as loadCommand,ia as loadContextConfig,w as loadFile,ea as loadKnowledge,da as loadMemory,ba as loadNote,B as loadPlugin,Ua as loadSubAgentConfig,r as mergeConfigConcatArrays,s as needsInstall,y as parseConfig,E as state,mb as update,nb as updateGlobal,F as waitForDependencies}from'./chunk-FWVB6X4X.mjs';import'./chunk-CCRIJZBK.mjs';import'./chunk-D4GDS5UI.mjs';import'./chunk-75IQNF4I.mjs';export{h as getAgentRegistryConfig,m as getAgentSyncConfig,k as getAuthConfig,d as getChannelConfig,e as getConnectionPoolConfig,l as getGatewayClusterConfig,c as getGatewayServerConfig,j as getHTTPSConfig,f as getMessageQueueConfig,i as getSessionConfig,b as loadGatewayConfig}from'./chunk-ZBRXNYEM.mjs';import'./chunk-UBCLKZWP.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-AAJAKVQY.mjs';import'./chunk-UNBJ6Y7L.mjs';import'./chunk-X7KLQIAQ.mjs';import'./chunk-KTMZPMCI.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-GRDTQW6K.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-SB4J2R54.mjs';import'./chunk-X6ISXWBN.mjs';
@@ -1,3 +1,3 @@
1
- import {a as a$1}from'./chunk-3Q4UCILK.mjs';import {e}from'./chunk-M3K32WJV.mjs';import'./chunk-YGFGAD5H.mjs';import'./chunk-CCRIJZBK.mjs';import'./chunk-XQXI2ZHB.mjs';import'./chunk-ZFGVQIO5.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-H45MZAM6.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-AAJAKVQY.mjs';import {i}from'./chunk-UNBJ6Y7L.mjs';import'./chunk-ZG2HQDXQ.mjs';import'./chunk-O2JOXYKG.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-JII5HRIF.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import'./chunk-DJYON7M6.mjs';import {c,d}from'./chunk-X6ISXWBN.mjs';import {PKG}from'@easbot/utils';var v=a.create({service:"debug.config"});function k(g,s){g.command("config").description(i("debug.config.command.describe")).action(async()=>{v.debug("Loading configuration");try{let r=await s.sdk.config.get();console.log(JSON.stringify(r.data,null,2));}catch(r){v.error("Failed to load configuration",{error:r instanceof Error?r.message:String(r)}),console.error(e(i("debug.config.error.load_failed",{vars:{error:r instanceof Error?r.message:String(r)}}))),process.exit(1);}});}var l=a.create({service:"debug.file"});function F(g,s){let n=g.command("file").description(i("debug.file.command.describe"));n.command("search <query>").description(i("debug.file.search.command.describe")).action(async r=>{await a$1(s.config.directory,async()=>{let{File:t}=await import('./file-Q7BJ3BEC.mjs');l.debug("Searching files",{query:r});try{let o=await t.search({query:r});console.log(o.join(`
2
- `));}catch(o){l.error("File search failed",{query:r,error:o instanceof Error?o.message:String(o)}),console.error(e(i("debug.file.search.error",{vars:{error:o instanceof Error?o.message:String(o)}}))),process.exit(1);}});}),n.command("read <path>").description(i("debug.file.read.command.describe")).action(async r=>{await a$1(s.config.directory,async()=>{let{File:t}=await import('./file-Q7BJ3BEC.mjs');l.debug("Reading file",{path:r});try{let o=await t.read(r);console.log(JSON.stringify(o,null,2));}catch(o){l.error("File read failed",{path:r,error:o instanceof Error?o.message:String(o)}),console.error(e(i("debug.file.read.error",{vars:{error:o instanceof Error?o.message:String(o)}}))),process.exit(1);}});}),n.command("status").description(i("debug.file.status.command.describe")).action(async()=>{await a$1(s.config.directory,async()=>{let{File:r}=await import('./file-Q7BJ3BEC.mjs');l.debug("Getting file status");try{let t=await r.status();console.log(JSON.stringify(t,null,2));}catch(t){l.error("File status failed",{error:t instanceof Error?t.message:String(t)}),console.error(e(i("debug.file.status.error",{vars:{error:t instanceof Error?t.message:String(t)}}))),process.exit(1);}});}),n.command("list <path>").description(i("debug.file.list.command.describe")).action(async r=>{await a$1(s.config.directory,async()=>{let{File:t}=await import('./file-Q7BJ3BEC.mjs');l.debug("Listing files",{path:r});try{let o=await t.list(r);console.log(JSON.stringify(o,null,2));}catch(o){l.error("File list failed",{path:r,error:o instanceof Error?o.message:String(o)}),console.error(e(i("debug.file.list.error",{vars:{error:o instanceof Error?o.message:String(o)}}))),process.exit(1);}});}),n.command("tree [dir]").description(i("debug.file.tree.command.describe")).option("--limit <number>",i("debug.file.tree.option.limit.description")).action(async(r,t)=>{await a$1(s.config.directory,async()=>{let{Ripgrep:o}=await import('./ripgrep-4XTDDATX.mjs'),{Instance:p}=await import('./instance-AK3F7UK2.mjs');l.debug("Showing file tree",{dir:r});try{let i=await o.tree({cwd:r||p.directory,limit:t?.limit||200});console.log(JSON.stringify(i,null,2));}catch(i$1){l.error("File tree failed",{dir:r,error:i$1 instanceof Error?i$1.message:String(i$1)}),console.error(e(i("debug.file.tree.error",{vars:{error:i$1 instanceof Error?i$1.message:String(i$1)}}))),process.exit(1);}});});}var u=a.create({service:"debug.lsp"});function x(g,s){let n=g.command("lsp").description(i("debug.lsp.command.describe"));n.command("diagnostics <file>").description(i("debug.lsp.diagnostics.command.describe")).action(async r=>{await a$1(s.config.directory,async()=>{let{LSP:t}=await import('./lsp-N672BWEP.mjs');u.debug("Getting diagnostics",{file:r});try{await t.touchFile(r,!0),await PKG.sleep(1e3);let o=await t.diagnostics();console.log(JSON.stringify(o,null,2));}catch(o){u.error("Failed to get diagnostics",{file:r,error:o instanceof Error?o.message:String(o)}),console.error(e(i("debug.lsp.diagnostics.error",{vars:{error:o instanceof Error?o.message:String(o)}}))),process.exit(1);}});}),n.command("symbols <query>").description(i("debug.lsp.symbols.command.describe")).action(async r=>{await a$1(s.config.directory,async()=>{let{LSP:t}=await import('./lsp-N672BWEP.mjs');u.debug("Searching workspace symbols",{query:r});try{var o=[];try{let d=c(o,a.Default.time("symbols"));let h=await t.workspaceSymbol(r);console.log(JSON.stringify(h,null,2));}catch(p){var i$1=p,S=!0;}finally{d(o,i$1,S);}}catch(d){u.error("Failed to search symbols",{query:r,error:d instanceof Error?d.message:String(d)}),console.error(e(i("debug.lsp.symbols.error",{vars:{error:d instanceof Error?d.message:String(d)}}))),process.exit(1);}});}),n.command("document-symbols <file>").description(i("debug.lsp.document_symbols.command.describe")).action(async r=>{await a$1(s.config.directory,async()=>{let{LSP:t}=await import('./lsp-N672BWEP.mjs');u.debug("Getting document symbols",{file:r});try{var o=[];try{let d=c(o,a.Default.time("document-symbols"));let h=await t.documentSymbol({file:r});console.log(JSON.stringify(h,null,2));}catch(p){var i$1=p,S=!0;}finally{d(o,i$1,S);}}catch(d){u.error("Failed to get document symbols",{file:r,error:d instanceof Error?d.message:String(d)}),console.error(e(i("debug.lsp.document_symbols.error",{vars:{error:d instanceof Error?d.message:String(d)}}))),process.exit(1);}});});}var y=a.create({service:"debug.ripgrep"});function L(g,s){let n=g.command("rg").description(i("debug.ripgrep.command.describe"));n.command("tree").description(i("debug.ripgrep.tree.command.describe")).option("--limit <number>",i("debug.ripgrep.tree.option.limit.description")).action(async(r,t)=>{await a$1(s.config.directory,async()=>{let{Ripgrep:o}=await import('./ripgrep-4XTDDATX.mjs'),{Instance:p}=await import('./instance-AK3F7UK2.mjs');y.debug("Showing file tree",{limit:t?.limit});try{let i=await o.tree({cwd:p.directory,limit:t?.limit});console.log(i);}catch(i$1){y.error("File tree failed",{error:i$1 instanceof Error?i$1.message:String(i$1)}),console.error(e(i("debug.ripgrep.tree.error",{vars:{error:i$1 instanceof Error?i$1.message:String(i$1)}}))),process.exit(1);}});}),n.command("files").description(i("debug.ripgrep.files.command.describe")).option("--query <string>",i("debug.ripgrep.files.option.query.description")).option("--glob <string>",i("debug.ripgrep.files.option.glob.description")).option("--limit <number>",i("debug.ripgrep.files.option.limit.description")).action(async(r,t)=>{await a$1(s.config.directory,async()=>{let{Ripgrep:o}=await import('./ripgrep-4XTDDATX.mjs'),{Instance:p}=await import('./instance-AK3F7UK2.mjs');y.debug("Listing files",{query:t?.query,glob:t?.glob,limit:t?.limit});try{let i=[];for await(let S of o.files({cwd:p.directory,glob:t?.glob?[t.glob]:void 0}))if(i.push(S),t?.limit&&i.length>=t.limit)break;console.log(i.join(`
3
- `));}catch(i$1){y.error("File listing failed",{error:i$1 instanceof Error?i$1.message:String(i$1)}),console.error(e(i("debug.ripgrep.files.error",{vars:{error:i$1 instanceof Error?i$1.message:String(i$1)}}))),process.exit(1);}});}),n.command("search <pattern>").description(i("debug.ripgrep.search.command.describe")).option("--glob <glob...>",i("debug.ripgrep.search.option.glob.description")).option("--limit <number>",i("debug.ripgrep.search.option.limit.description")).action(async(r,t)=>{await a$1(s.config.directory,async()=>{let{Ripgrep:o}=await import('./ripgrep-4XTDDATX.mjs'),{Instance:p}=await import('./instance-AK3F7UK2.mjs');y.debug("Searching files",{pattern:r,glob:t?.glob,limit:t?.limit});try{let i=await o.search({cwd:p.directory,pattern:r,glob:t?.glob,limit:t?.limit});console.log(JSON.stringify(i,null,2));}catch(i$1){y.error("Search failed",{pattern:r,error:i$1 instanceof Error?i$1.message:String(i$1)}),console.error(e(i("debug.ripgrep.search.error",{vars:{error:i$1 instanceof Error?i$1.message:String(i$1)}}))),process.exit(1);}});});}var G=a.create({service:"debug.scrap"});function P(g,s){g.command("scrap").description(i("debug.scrap.command.describe")).action(async()=>{G.debug("Listing projects");let r=await s.sdk.project.list();console.log(JSON.stringify(r.data,null,2));});}var O=a.create({service:"debug.skill"});function J(g,s){g.command("skill").description(i("debug.skill.command.describe")).action(async()=>{O.debug("Listing skills");try{let r=await s.sdk.app.skills();console.log(JSON.stringify(r.data,null,2));}catch(r){O.error("Failed to list skills",{error:r instanceof Error?r.message:String(r)}),console.error(e(i("debug.skill.error.list_failed",{vars:{error:r instanceof Error?r.message:String(r)}}))),process.exit(1);}});}var w=a.create({service:"debug.snapshot"});function N(g,s){let n=g.command("snapshot").description(i("debug.snapshot.command.describe"));n.command("track").description(i("debug.snapshot.track.command.describe")).action(async()=>{await a$1(s.config.directory,async()=>{let{Snapshot:r}=await import('./snapshot-3CGXXTES.mjs');w.debug("Tracking snapshot");try{let t=await r.track();console.log(t);}catch(t){w.error("Snapshot track failed",{error:t instanceof Error?t.message:String(t)}),console.error(e(i("debug.snapshot.track.error",{vars:{error:t instanceof Error?t.message:String(t)}}))),process.exit(1);}});}),n.command("patch <hash>").description(i("debug.snapshot.patch.command.describe")).action(async r=>{await a$1(s.config.directory,async()=>{let{Snapshot:t}=await import('./snapshot-3CGXXTES.mjs');w.debug("Getting snapshot patch",{hash:r});try{let o=await t.patch(r);console.log(o);}catch(o){w.error("Snapshot patch failed",{hash:r,error:o instanceof Error?o.message:String(o)}),console.error(e(i("debug.snapshot.patch.error",{vars:{error:o instanceof Error?o.message:String(o)}}))),process.exit(1);}});}),n.command("diff <hash>").description(i("debug.snapshot.diff.command.describe")).action(async r=>{await a$1(s.config.directory,async()=>{let{Snapshot:t}=await import('./snapshot-3CGXXTES.mjs');w.debug("Getting snapshot diff",{hash:r});try{let o=await t.diff(r);console.log(o);}catch(o){w.error("Snapshot diff failed",{hash:r,error:o instanceof Error?o.message:String(o)}),console.error(e(i("debug.snapshot.diff.error",{vars:{error:o instanceof Error?o.message:String(o)}}))),process.exit(1);}});});}a.create({service:"debug"});function Nr(g,s){let n=g.command("debug").description(i("debug.command.description"));k(n,s),F(n,s),x(n,s),L(n,s),P(n,s),J(n,s),N(n,s),n.command("agent <name>").description(i("debug.agent.command.describe")).option("--tool <tool-id>",i("debug.agent.option.tool.description")).option("--params <json>",i("debug.agent.option.params.description")).action(async(r,t)=>{let{registerAgentCommand:o}=await import('./agent-BS6BU766.mjs');o(s,r,t);}),n.command("paths").description(i("debug.paths.command.describe")).action(async()=>{let{Global:r}=await import('./global-FDT3NNWD.mjs');for(let[t,o]of Object.entries(r.Path))console.log(`${t.padEnd(10)}${o}`);}),n.command("wait").description(i("debug.wait.command.describe")).action(async()=>{await a$1(s.config.directory,async()=>{await new Promise(r=>setTimeout(r,1e3*60*60*24));});});}export{Nr as registerDebugCommands};
1
+ import {a as a$1}from'./chunk-R4BPTF6V.mjs';import {e}from'./chunk-M3K32WJV.mjs';import'./chunk-FWVB6X4X.mjs';import'./chunk-CCRIJZBK.mjs';import'./chunk-D4GDS5UI.mjs';import'./chunk-75IQNF4I.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-UBCLKZWP.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-AAJAKVQY.mjs';import {i}from'./chunk-UNBJ6Y7L.mjs';import'./chunk-X7KLQIAQ.mjs';import'./chunk-KTMZPMCI.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-GRDTQW6K.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import'./chunk-SB4J2R54.mjs';import {c,d}from'./chunk-X6ISXWBN.mjs';import {PKG}from'@easbot/utils';var v=a.create({service:"debug.config"});function k(g,s){g.command("config").description(i("debug.config.command.describe")).action(async()=>{v.debug("Loading configuration");try{let r=await s.sdk.config.get();console.log(JSON.stringify(r.data,null,2));}catch(r){v.error("Failed to load configuration",{error:r instanceof Error?r.message:String(r)}),console.error(e(i("debug.config.error.load_failed",{vars:{error:r instanceof Error?r.message:String(r)}}))),process.exit(1);}});}var l=a.create({service:"debug.file"});function F(g,s){let n=g.command("file").description(i("debug.file.command.describe"));n.command("search <query>").description(i("debug.file.search.command.describe")).action(async r=>{await a$1(s.config.directory,async()=>{let{File:t}=await import('./file-Q52INNX3.mjs');l.debug("Searching files",{query:r});try{let o=await t.search({query:r});console.log(o.join(`
2
+ `));}catch(o){l.error("File search failed",{query:r,error:o instanceof Error?o.message:String(o)}),console.error(e(i("debug.file.search.error",{vars:{error:o instanceof Error?o.message:String(o)}}))),process.exit(1);}});}),n.command("read <path>").description(i("debug.file.read.command.describe")).action(async r=>{await a$1(s.config.directory,async()=>{let{File:t}=await import('./file-Q52INNX3.mjs');l.debug("Reading file",{path:r});try{let o=await t.read(r);console.log(JSON.stringify(o,null,2));}catch(o){l.error("File read failed",{path:r,error:o instanceof Error?o.message:String(o)}),console.error(e(i("debug.file.read.error",{vars:{error:o instanceof Error?o.message:String(o)}}))),process.exit(1);}});}),n.command("status").description(i("debug.file.status.command.describe")).action(async()=>{await a$1(s.config.directory,async()=>{let{File:r}=await import('./file-Q52INNX3.mjs');l.debug("Getting file status");try{let t=await r.status();console.log(JSON.stringify(t,null,2));}catch(t){l.error("File status failed",{error:t instanceof Error?t.message:String(t)}),console.error(e(i("debug.file.status.error",{vars:{error:t instanceof Error?t.message:String(t)}}))),process.exit(1);}});}),n.command("list <path>").description(i("debug.file.list.command.describe")).action(async r=>{await a$1(s.config.directory,async()=>{let{File:t}=await import('./file-Q52INNX3.mjs');l.debug("Listing files",{path:r});try{let o=await t.list(r);console.log(JSON.stringify(o,null,2));}catch(o){l.error("File list failed",{path:r,error:o instanceof Error?o.message:String(o)}),console.error(e(i("debug.file.list.error",{vars:{error:o instanceof Error?o.message:String(o)}}))),process.exit(1);}});}),n.command("tree [dir]").description(i("debug.file.tree.command.describe")).option("--limit <number>",i("debug.file.tree.option.limit.description")).action(async(r,t)=>{await a$1(s.config.directory,async()=>{let{Ripgrep:o}=await import('./ripgrep-7VVA7THG.mjs'),{Instance:p}=await import('./instance-S5GBRS3K.mjs');l.debug("Showing file tree",{dir:r});try{let i=await o.tree({cwd:r||p.directory,limit:t?.limit||200});console.log(JSON.stringify(i,null,2));}catch(i$1){l.error("File tree failed",{dir:r,error:i$1 instanceof Error?i$1.message:String(i$1)}),console.error(e(i("debug.file.tree.error",{vars:{error:i$1 instanceof Error?i$1.message:String(i$1)}}))),process.exit(1);}});});}var u=a.create({service:"debug.lsp"});function x(g,s){let n=g.command("lsp").description(i("debug.lsp.command.describe"));n.command("diagnostics <file>").description(i("debug.lsp.diagnostics.command.describe")).action(async r=>{await a$1(s.config.directory,async()=>{let{LSP:t}=await import('./lsp-4VYPJGAN.mjs');u.debug("Getting diagnostics",{file:r});try{await t.touchFile(r,!0),await PKG.sleep(1e3);let o=await t.diagnostics();console.log(JSON.stringify(o,null,2));}catch(o){u.error("Failed to get diagnostics",{file:r,error:o instanceof Error?o.message:String(o)}),console.error(e(i("debug.lsp.diagnostics.error",{vars:{error:o instanceof Error?o.message:String(o)}}))),process.exit(1);}});}),n.command("symbols <query>").description(i("debug.lsp.symbols.command.describe")).action(async r=>{await a$1(s.config.directory,async()=>{let{LSP:t}=await import('./lsp-4VYPJGAN.mjs');u.debug("Searching workspace symbols",{query:r});try{var o=[];try{let d=c(o,a.Default.time("symbols"));let h=await t.workspaceSymbol(r);console.log(JSON.stringify(h,null,2));}catch(p){var i$1=p,S=!0;}finally{d(o,i$1,S);}}catch(d){u.error("Failed to search symbols",{query:r,error:d instanceof Error?d.message:String(d)}),console.error(e(i("debug.lsp.symbols.error",{vars:{error:d instanceof Error?d.message:String(d)}}))),process.exit(1);}});}),n.command("document-symbols <file>").description(i("debug.lsp.document_symbols.command.describe")).action(async r=>{await a$1(s.config.directory,async()=>{let{LSP:t}=await import('./lsp-4VYPJGAN.mjs');u.debug("Getting document symbols",{file:r});try{var o=[];try{let d=c(o,a.Default.time("document-symbols"));let h=await t.documentSymbol({file:r});console.log(JSON.stringify(h,null,2));}catch(p){var i$1=p,S=!0;}finally{d(o,i$1,S);}}catch(d){u.error("Failed to get document symbols",{file:r,error:d instanceof Error?d.message:String(d)}),console.error(e(i("debug.lsp.document_symbols.error",{vars:{error:d instanceof Error?d.message:String(d)}}))),process.exit(1);}});});}var y=a.create({service:"debug.ripgrep"});function L(g,s){let n=g.command("rg").description(i("debug.ripgrep.command.describe"));n.command("tree").description(i("debug.ripgrep.tree.command.describe")).option("--limit <number>",i("debug.ripgrep.tree.option.limit.description")).action(async(r,t)=>{await a$1(s.config.directory,async()=>{let{Ripgrep:o}=await import('./ripgrep-7VVA7THG.mjs'),{Instance:p}=await import('./instance-S5GBRS3K.mjs');y.debug("Showing file tree",{limit:t?.limit});try{let i=await o.tree({cwd:p.directory,limit:t?.limit});console.log(i);}catch(i$1){y.error("File tree failed",{error:i$1 instanceof Error?i$1.message:String(i$1)}),console.error(e(i("debug.ripgrep.tree.error",{vars:{error:i$1 instanceof Error?i$1.message:String(i$1)}}))),process.exit(1);}});}),n.command("files").description(i("debug.ripgrep.files.command.describe")).option("--query <string>",i("debug.ripgrep.files.option.query.description")).option("--glob <string>",i("debug.ripgrep.files.option.glob.description")).option("--limit <number>",i("debug.ripgrep.files.option.limit.description")).action(async(r,t)=>{await a$1(s.config.directory,async()=>{let{Ripgrep:o}=await import('./ripgrep-7VVA7THG.mjs'),{Instance:p}=await import('./instance-S5GBRS3K.mjs');y.debug("Listing files",{query:t?.query,glob:t?.glob,limit:t?.limit});try{let i=[];for await(let S of o.files({cwd:p.directory,glob:t?.glob?[t.glob]:void 0}))if(i.push(S),t?.limit&&i.length>=t.limit)break;console.log(i.join(`
3
+ `));}catch(i$1){y.error("File listing failed",{error:i$1 instanceof Error?i$1.message:String(i$1)}),console.error(e(i("debug.ripgrep.files.error",{vars:{error:i$1 instanceof Error?i$1.message:String(i$1)}}))),process.exit(1);}});}),n.command("search <pattern>").description(i("debug.ripgrep.search.command.describe")).option("--glob <glob...>",i("debug.ripgrep.search.option.glob.description")).option("--limit <number>",i("debug.ripgrep.search.option.limit.description")).action(async(r,t)=>{await a$1(s.config.directory,async()=>{let{Ripgrep:o}=await import('./ripgrep-7VVA7THG.mjs'),{Instance:p}=await import('./instance-S5GBRS3K.mjs');y.debug("Searching files",{pattern:r,glob:t?.glob,limit:t?.limit});try{let i=await o.search({cwd:p.directory,pattern:r,glob:t?.glob,limit:t?.limit});console.log(JSON.stringify(i,null,2));}catch(i$1){y.error("Search failed",{pattern:r,error:i$1 instanceof Error?i$1.message:String(i$1)}),console.error(e(i("debug.ripgrep.search.error",{vars:{error:i$1 instanceof Error?i$1.message:String(i$1)}}))),process.exit(1);}});});}var G=a.create({service:"debug.scrap"});function P(g,s){g.command("scrap").description(i("debug.scrap.command.describe")).action(async()=>{G.debug("Listing projects");let r=await s.sdk.project.list();console.log(JSON.stringify(r.data,null,2));});}var O=a.create({service:"debug.skill"});function J(g,s){g.command("skill").description(i("debug.skill.command.describe")).action(async()=>{O.debug("Listing skills");try{let r=await s.sdk.app.skills();console.log(JSON.stringify(r.data,null,2));}catch(r){O.error("Failed to list skills",{error:r instanceof Error?r.message:String(r)}),console.error(e(i("debug.skill.error.list_failed",{vars:{error:r instanceof Error?r.message:String(r)}}))),process.exit(1);}});}var w=a.create({service:"debug.snapshot"});function N(g,s){let n=g.command("snapshot").description(i("debug.snapshot.command.describe"));n.command("track").description(i("debug.snapshot.track.command.describe")).action(async()=>{await a$1(s.config.directory,async()=>{let{Snapshot:r}=await import('./snapshot-PXRGQ6JR.mjs');w.debug("Tracking snapshot");try{let t=await r.track();console.log(t);}catch(t){w.error("Snapshot track failed",{error:t instanceof Error?t.message:String(t)}),console.error(e(i("debug.snapshot.track.error",{vars:{error:t instanceof Error?t.message:String(t)}}))),process.exit(1);}});}),n.command("patch <hash>").description(i("debug.snapshot.patch.command.describe")).action(async r=>{await a$1(s.config.directory,async()=>{let{Snapshot:t}=await import('./snapshot-PXRGQ6JR.mjs');w.debug("Getting snapshot patch",{hash:r});try{let o=await t.patch(r);console.log(o);}catch(o){w.error("Snapshot patch failed",{hash:r,error:o instanceof Error?o.message:String(o)}),console.error(e(i("debug.snapshot.patch.error",{vars:{error:o instanceof Error?o.message:String(o)}}))),process.exit(1);}});}),n.command("diff <hash>").description(i("debug.snapshot.diff.command.describe")).action(async r=>{await a$1(s.config.directory,async()=>{let{Snapshot:t}=await import('./snapshot-PXRGQ6JR.mjs');w.debug("Getting snapshot diff",{hash:r});try{let o=await t.diff(r);console.log(o);}catch(o){w.error("Snapshot diff failed",{hash:r,error:o instanceof Error?o.message:String(o)}),console.error(e(i("debug.snapshot.diff.error",{vars:{error:o instanceof Error?o.message:String(o)}}))),process.exit(1);}});});}a.create({service:"debug"});function Nr(g,s){let n=g.command("debug").description(i("debug.command.description"));k(n,s),F(n,s),x(n,s),L(n,s),P(n,s),J(n,s),N(n,s),n.command("agent <name>").description(i("debug.agent.command.describe")).option("--tool <tool-id>",i("debug.agent.option.tool.description")).option("--params <json>",i("debug.agent.option.params.description")).action(async(r,t)=>{let{registerAgentCommand:o}=await import('./agent-JHX64CI6.mjs');o(s,r,t);}),n.command("paths").description(i("debug.paths.command.describe")).action(async()=>{let{Global:r}=await import('./global-XQYOBWZR.mjs');for(let[t,o]of Object.entries(r.Path))console.log(`${t.padEnd(10)}${o}`);}),n.command("wait").description(i("debug.wait.command.describe")).action(async()=>{await a$1(s.config.directory,async()=>{await new Promise(r=>setTimeout(r,1e3*60*60*24));});});}export{Nr as registerDebugCommands};
@@ -0,0 +1 @@
1
+ export{ka as File}from'./chunk-FWVB6X4X.mjs';import'./chunk-CCRIJZBK.mjs';import'./chunk-D4GDS5UI.mjs';import'./chunk-75IQNF4I.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-UBCLKZWP.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-AAJAKVQY.mjs';import'./chunk-UNBJ6Y7L.mjs';import'./chunk-X7KLQIAQ.mjs';import'./chunk-KTMZPMCI.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-GRDTQW6K.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-SB4J2R54.mjs';import'./chunk-X6ISXWBN.mjs';
@@ -1,5 +1,5 @@
1
- import {a as a$1}from'./chunk-LAHYVX5K.mjs';import {a as a$2}from'./chunk-3Q4UCILK.mjs';import'./chunk-VII7JKGB.mjs';import {g,f,e,d,h,k,a as a$3,c as c$1,b,i as i$1}from'./chunk-M3K32WJV.mjs';import {Aa,Oa,Ba,Y}from'./chunk-YGFGAD5H.mjs';import'./chunk-CCRIJZBK.mjs';import'./chunk-XQXI2ZHB.mjs';import'./chunk-ZFGVQIO5.mjs';import {c}from'./chunk-ZBRXNYEM.mjs';import'./chunk-H45MZAM6.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-AAJAKVQY.mjs';import {i}from'./chunk-UNBJ6Y7L.mjs';import'./chunk-ZG2HQDXQ.mjs';import'./chunk-O2JOXYKG.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-JII5HRIF.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import {a as a$4}from'./chunk-DJYON7M6.mjs';import'./chunk-X6ISXWBN.mjs';import'commander';import {Gateway}from'@easbot/gateway';import {Identifier,getProxyConfig}from'@easbot/utils';var P=a.create({service:"local-agent"}),_;(o=>{function d(r){return r.map(a=>a.type==="image"?{type:"file",mime:a.mime||"image/jpeg",url:typeof a.image=="string"?a.image:a.image.toString()}:a.type==="file"&&"data"in a&&!("url"in a)?{...a,url:typeof a.data=="string"?a.data:a.data.toString()}:a)}async function s(r){let{source:a,title:i,agent:l,parts:c,model:m,system:p,tools:A}=r;P.debug("LocalAgent.run started",{source:a,title:i,agent:l});let H=Identifier.ascending("message"),I=c.find(y=>y.type==="command");if(I){P.debug("LocalAgent.run: executing command",{command:I.command,arguments:I.arguments});let y=await Aa.command({sessionId:a,messageId:H,agent:l,model:m?`${m.providerId}/${m.modelId}`:void 0,arguments:I.arguments??"",command:I.command});return {title:i,output:y.output,metadata:{sessionId:a,source:a,agent:l,success:y.success,error:y.error,...y.metadata}}}let j=(await Aa.prompt({messageId:H,sessionId:a,system:p,tools:A,agent:l,model:m,parts:d(c)})).parts.findLast(y=>y.type==="text")?.text??"";return P.debug("LocalAgent.run completed",{source:a,title:i,agent:l,contentLength:j.length}),{title:i,output:j,metadata:{sessionId:a,source:a,agent:l}}}o.run=s;async function e(r,a){P.debug("LocalAgent.runAsync started",{title:r.title,agent:r.agent}),(async()=>{try{let i=await o.run(r);P.debug("LocalAgent.runAsync completed, triggering callback",{title:r.title,agent:r.agent,contentLength:i.output.length}),await a(i);}catch(i){P.error("LocalAgent.runAsync failed",{title:r.title,agent:r.agent,error:String(i)}),await a({title:r.title,output:`Error: ${i}`,metadata:{error:String(i)}});}})();}o.runAsync=e;})(_||(_={}));var n=a.create({service:"cli-command-gateway"});function O(d$1,s,e){let o=b();console.log(""),console.log(d(i("gateway.server.started"))),console.log(k(60)),e?.directory&&console.log(i$1(i("gateway.field.directory"),e.directory,15));let r={stopped:a$3.muted,starting:a$3.info,running:a$3.success,stopping:a$3.info,error:a$3.error},a=c$1(o,r[d$1]||a$3.muted,d$1.toUpperCase());if(console.log(i$1(i("gateway.field.status"),a,15)),d$1==="running"){let l=s.https?.enabled?"wss":"ws",c=s.path||"/",m=`${l}://${s.hostname}:${s.port}${c}`;console.log(i$1(i("gateway.field.ws_url"),m,15)),console.log(i$1(i("gateway.field.port"),String(s.port),15)),console.log(i$1(i("gateway.field.hostname"),s.hostname,15)),console.log(i$1(i("gateway.field.tls"),s.https?.enabled?i("common.enabled"):i("common.disabled"),15));}e?.debug!==void 0&&console.log(i$1(i("gateway.field.debug"),e.debug?c$1(o,a$3.success,i("common.enabled")):c$1(o,a$3.muted,i("common.disabled")),15));let i$2=getProxyConfig();if(i$2.enabled){let l=i$2.https||i$2.http||"configured";console.log(i$1(i("gateway.field.proxy"),l,15));}e?.error&&console.log(i$1(i("gateway.field.error"),e.error,15)),console.log(k(60)),console.log("");}function F(){let d$1=async s=>{n.debug(`Received ${s}, shutting down...`),console.log(`
2
- ${i("gateway.shutdown.received",{vars:{signal:s}})}`);try{await Gateway.stop(),n.debug("Gateway state destroyed"),console.log(d(i("gateway.shutdown.completed")));}catch(e){n.error("Error during shutdown",{error:e instanceof Error?e.message:String(e)});}process.exit(0);};process.on("SIGINT",()=>{d$1("SIGINT").catch(console.error);}),process.on("SIGTERM",()=>{d$1("SIGTERM").catch(console.error);});}async function z(d,s){n.debug("createAgentAdapter: starting",{directory:d}),n.debug("createAgentAdapter: calling Instance.provide");let e=await Oa.provide({directory:d,fn:async()=>{n.debug("createAgentAdapter: Instance.provide fn called");let{Project:l}=await import('./project-WTLNG2LH.mjs');n.debug("createAgentAdapter: Project imported, calling fromDirectory");let{project:c,sandbox:m}=await l.fromDirectory(d);n.debug("createAgentAdapter: fromDirectory completed",{projectId:c.id});let p={directory:d,worktree:m,project:c};return n.debug("createAgentAdapter: fn returning",{directory:d,projectId:c.id}),p}});n.debug("createAgentAdapter: Instance.provide completed",{directory:e.directory,projectId:e.project.id});let o={Path:{home:a$4.Path.home,data:a$4.Path.data,cache:a$4.Path.cache,config:a$4.Path.config,state:a$4.Path.state,log:a$4.Path.log,bin:a$4.Path.bin}};n.debug("global paths injected",{data:o.Path.data,log:o.Path.log,home:o.Path.home});let r={directory:e.directory,worktree:e.worktree};return await Y.state(),{subAgentRunner:{async run(l){try{let c={source:l.source||l.sessionId||"gateway",title:l.title||"Message from gateway",agent:l.agent||"gateway",parts:l.parts||[]},m=await Y.run(c);return {success:!0,output:m.output,metadata:m.metadata}}catch(c){return n.error("SubAgent.run failed",{error:c instanceof Error?c.message:String(c)}),{success:false,error:c instanceof Error?c.message:String(c)}}}},localAgentRunner:{async run(l){try{let c=!l.source&&s.sdk,m=l.source||void 0;if(c){let A=await s.sdk.session.create({directory:s.config.directory});A.data&&(m=A.data.id,n.debug("LocalAgent.run: created new session",{sessionId:m}));}if(!m)throw new Error("No session ID available");let p=await _.run({...l,source:m});return n.debug("LocalAgent.run completed",{title:p.title,sessionId:m}),p}catch(c){throw n.error("LocalAgent.run failed",{error:c instanceof Error?c.message:String(c)}),c}}},hookRegistry:Ba,global:o,instance:r,sdk:s.sdk}}async function B(d,s,e$1){n.debug("Gateway start command executed",{options:s});try{let o=e$1.config.directory;n.debug("Working directory resolved",{directory:o});let r=a$1(o);if(!r.valid)throw n.error("Working directory validation failed",{directory:o,error:r.error}),new Error(`Invalid working directory: ${r.error}`);let a=r.normalizedPath;n.debug("Working directory validated",{validatedDirectory:a}),console.log(g(i("gateway.directory.resolved",{vars:{cwd:a}}))),await a$2(a,async()=>{let{initLog:i$1,setAgentAdapter:l}=await import('@easbot/gateway');await i$1({logDir:process.env.EASBOT_LOG_PATH??process.cwd(),print:e$1.config.print_logs??!1,dev:e$1.config.debug??!1,level:e$1.config.log_level??"INFO"});let m=await z(a,e$1);n.debug("executeGatewayStart: createAgentAdapter completed"),l(m),n.debug("Agent adapter injected into Gateway");let p=await c();if(n.debug("Gateway server configuration",{port:p.port,hostname:p.hostname,path:p.path,tls:p.https?.enabled,enabled:p.enabled}),!p.enabled){n.warn("Gateway server is disabled by configuration"),console.log(f(i("gateway.disabled")));return}await Gateway.start(p),n.info("Gateway server started successfully"),O("running",p,{directory:a,debug:e$1.config.debug}),F(),await new Promise(()=>{});});}catch(o){n.error("Failed to start Gateway server",{error:o instanceof Error?o.message:String(o)}),console.error(e(i("gateway.error.start_failed",{vars:{error:o instanceof Error?o.message:String(o)}}))),process.exit(1);}}async function K(d$1,s){n.debug("Gateway stop command executed",{options:d$1});try{let e=s.config.directory;await a$2(e,async()=>{if(Gateway.getStatus()==="stopped"){console.log(g(i("gateway.status.already_stopped")));return}await Gateway.stop(),console.log(d(i("gateway.stopped")));let r=await c();O("stopped",r,{directory:e});});}catch(e$1){n.error("Failed to stop Gateway server",{error:e$1 instanceof Error?e$1.message:String(e$1)}),console.error(e(i("gateway.error.stop_failed",{vars:{error:e$1 instanceof Error?e$1.message:String(e$1)}}))),process.exit(1);}}async function q(d$1,s,e$1){n.debug("Gateway restart command executed",{options:s});try{let o=e$1.config.directory;await a$2(o,async()=>{let r=await c();if(!r.enabled){n.warn("Gateway server is disabled by configuration"),console.log(f(i("gateway.disabled")));return}console.log(g(i("gateway.restarting"))),await Gateway.restart(r),console.log(d(i("gateway.restarted"))),O("running",r,{directory:o,debug:e$1.config.debug}),F(),await new Promise(()=>{});});}catch(o){n.error("Failed to restart Gateway server",{error:o instanceof Error?o.message:String(o)}),console.error(e(i("gateway.error.restart_failed",{vars:{error:o instanceof Error?o.message:String(o)}}))),await a.close(),process.exit(1);}}async function J(d,s){n.debug("Gateway status command executed",{options:d});try{let e=s.config.directory;await a$2(e,async()=>{let o=Gateway.getStatus(),a=(await Gateway.get())?.getStatus(),i$2=await c();console.log(""),console.log(h(i("gateway.status.title"))),console.log(k(60));let l={stopped:a$3.muted,starting:a$3.info,running:a$3.success,stopping:a$3.info,error:a$3.error},c$2=c$1(b(),l[o]||a$3.muted,o.toUpperCase());if(console.log(i$1(i("gateway.field.status"),c$2,15)),a){console.log(i$1(i("gateway.field.port"),String(a.port),15)),console.log(i$1(i("gateway.field.hostname"),a.hostname||i$2.hostname,15)),console.log(i$1(i("gateway.field.path"),i$2.path||"/",15)),console.log(i$1(i("gateway.field.connections"),String(a.connections||0),15));let m=i$2.https?.enabled?"wss":"ws",p=i$2.path||"/",A=`${m}://${a.hostname||i$2.hostname}:${a.port}${p}`;console.log(i$1(i("gateway.field.ws_url"),A,15));}console.log(k(60)),console.log("");});}catch(e$1){n.error("Failed to get Gateway status",{error:e$1 instanceof Error?e$1.message:String(e$1)}),console.error(e(i("gateway.error.status_failed",{vars:{error:e$1 instanceof Error?e$1.message:String(e$1)}}))),process.exit(1);}}async function Q(d,s){n.debug("Gateway config show command executed",{options:d});try{let e=s.config.directory;await a$2(e,async()=>{let o=await Gateway.config();if(!o){console.log(f(i("gateway.config.not_found")));return}if(console.log(""),console.log(h(i("gateway.config.heading"))),console.log(k(60)),o.server&&(console.log(h(i("gateway.config.server"))),console.log(i$1(" enabled",String(o.server.enabled??!0),12)),console.log(i$1(" port",String(o.server.port??3001),12)),console.log(i$1(" hostname",o.server.hostname??"0.0.0.0",12)),console.log(i$1(" tls",String(o.server.https?.enabled??!1),12)),console.log(i$1(" cors",String(o.server.cors??!0),12))),o.channels){console.log(""),console.log(h(i("gateway.config.channels")));let r=Object.keys(o.channels);if(r.length===0)console.log(g(" "+i("gateway.config.no_channels")));else for(let a of r){let i$2=o.channels[a];i$2&&console.log(i$1(` ${a}`,i$2.enabled?i("common.enabled"):i("common.disabled"),12));}}o.connectionPool&&(console.log(""),console.log(h(i("gateway.config.connection_pool"))),console.log(i$1(" maxConnectionsPerChannel",String(o.connectionPool.maxConnectionsPerChannel??100),25)),console.log(i$1(" idleTimeout",`${o.connectionPool.idleTimeout??3e5}ms`,25)),console.log(i$1(" reuseStrategy",o.connectionPool.reuseStrategy??"lru",25))),o.agentRegistry&&(console.log(""),console.log(h(i("gateway.config.agent_registry"))),console.log(i$1(" heartbeatInterval",`${o.agentRegistry.heartbeatInterval??3e4}ms`,20)),console.log(i$1(" heartbeatTimeout",`${o.agentRegistry.heartbeatTimeout??9e4}ms`,20))),console.log(k(60)),console.log("");});}catch(e$1){n.error("Failed to show Gateway config",{error:e$1 instanceof Error?e$1.message:String(e$1)}),console.error(e(i("gateway.error.config_failed",{vars:{error:e$1 instanceof Error?e$1.message:String(e$1)}}))),process.exit(1);}}function Ae(d,s){let e=d.command("gateway").description(i("gateway.command.description")).helpOption("-h, --help",i("gateway.help.option")).addHelpText("after",`
1
+ import {a as a$1}from'./chunk-LAHYVX5K.mjs';import {a as a$2}from'./chunk-R4BPTF6V.mjs';import'./chunk-VII7JKGB.mjs';import {g,f,e,d,h,k,a as a$3,c as c$1,b,i as i$1}from'./chunk-M3K32WJV.mjs';import {Aa,Oa,Ba,Y}from'./chunk-FWVB6X4X.mjs';import'./chunk-CCRIJZBK.mjs';import'./chunk-D4GDS5UI.mjs';import'./chunk-75IQNF4I.mjs';import {c}from'./chunk-ZBRXNYEM.mjs';import'./chunk-UBCLKZWP.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-AAJAKVQY.mjs';import {i}from'./chunk-UNBJ6Y7L.mjs';import'./chunk-X7KLQIAQ.mjs';import'./chunk-KTMZPMCI.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-GRDTQW6K.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import {a as a$4}from'./chunk-SB4J2R54.mjs';import'./chunk-X6ISXWBN.mjs';import'commander';import {Gateway}from'@easbot/gateway';import {Identifier,getProxyConfig}from'@easbot/utils';var P=a.create({service:"local-agent"}),_;(o=>{function d(r){return r.map(a=>a.type==="image"?{type:"file",mime:a.mime||"image/jpeg",url:typeof a.image=="string"?a.image:a.image.toString()}:a.type==="file"&&"data"in a&&!("url"in a)?{...a,url:typeof a.data=="string"?a.data:a.data.toString()}:a)}async function s(r){let{source:a,title:i,agent:l,parts:c,model:m,system:p,tools:A}=r;P.debug("LocalAgent.run started",{source:a,title:i,agent:l});let H=Identifier.ascending("message"),I=c.find(y=>y.type==="command");if(I){P.debug("LocalAgent.run: executing command",{command:I.command,arguments:I.arguments});let y=await Aa.command({sessionId:a,messageId:H,agent:l,model:m?`${m.providerId}/${m.modelId}`:void 0,arguments:I.arguments??"",command:I.command});return {title:i,output:y.output,metadata:{sessionId:a,source:a,agent:l,success:y.success,error:y.error,...y.metadata}}}let j=(await Aa.prompt({messageId:H,sessionId:a,system:p,tools:A,agent:l,model:m,parts:d(c)})).parts.findLast(y=>y.type==="text")?.text??"";return P.debug("LocalAgent.run completed",{source:a,title:i,agent:l,contentLength:j.length}),{title:i,output:j,metadata:{sessionId:a,source:a,agent:l}}}o.run=s;async function e(r,a){P.debug("LocalAgent.runAsync started",{title:r.title,agent:r.agent}),(async()=>{try{let i=await o.run(r);P.debug("LocalAgent.runAsync completed, triggering callback",{title:r.title,agent:r.agent,contentLength:i.output.length}),await a(i);}catch(i){P.error("LocalAgent.runAsync failed",{title:r.title,agent:r.agent,error:String(i)}),await a({title:r.title,output:`Error: ${i}`,metadata:{error:String(i)}});}})();}o.runAsync=e;})(_||(_={}));var n=a.create({service:"cli-command-gateway"});function O(d$1,s,e){let o=b();console.log(""),console.log(d(i("gateway.server.started"))),console.log(k(60)),e?.directory&&console.log(i$1(i("gateway.field.directory"),e.directory,15));let r={stopped:a$3.muted,starting:a$3.info,running:a$3.success,stopping:a$3.info,error:a$3.error},a=c$1(o,r[d$1]||a$3.muted,d$1.toUpperCase());if(console.log(i$1(i("gateway.field.status"),a,15)),d$1==="running"){let l=s.https?.enabled?"wss":"ws",c=s.path||"/",m=`${l}://${s.hostname}:${s.port}${c}`;console.log(i$1(i("gateway.field.ws_url"),m,15)),console.log(i$1(i("gateway.field.port"),String(s.port),15)),console.log(i$1(i("gateway.field.hostname"),s.hostname,15)),console.log(i$1(i("gateway.field.tls"),s.https?.enabled?i("common.enabled"):i("common.disabled"),15));}e?.debug!==void 0&&console.log(i$1(i("gateway.field.debug"),e.debug?c$1(o,a$3.success,i("common.enabled")):c$1(o,a$3.muted,i("common.disabled")),15));let i$2=getProxyConfig();if(i$2.enabled){let l=i$2.https||i$2.http||"configured";console.log(i$1(i("gateway.field.proxy"),l,15));}e?.error&&console.log(i$1(i("gateway.field.error"),e.error,15)),console.log(k(60)),console.log("");}function F(){let d$1=async s=>{n.debug(`Received ${s}, shutting down...`),console.log(`
2
+ ${i("gateway.shutdown.received",{vars:{signal:s}})}`);try{await Gateway.stop(),n.debug("Gateway state destroyed"),console.log(d(i("gateway.shutdown.completed")));}catch(e){n.error("Error during shutdown",{error:e instanceof Error?e.message:String(e)});}process.exit(0);};process.on("SIGINT",()=>{d$1("SIGINT").catch(console.error);}),process.on("SIGTERM",()=>{d$1("SIGTERM").catch(console.error);});}async function z(d,s){n.debug("createAgentAdapter: starting",{directory:d}),n.debug("createAgentAdapter: calling Instance.provide");let e=await Oa.provide({directory:d,fn:async()=>{n.debug("createAgentAdapter: Instance.provide fn called");let{Project:l}=await import('./project-OEBG6JHE.mjs');n.debug("createAgentAdapter: Project imported, calling fromDirectory");let{project:c,sandbox:m}=await l.fromDirectory(d);n.debug("createAgentAdapter: fromDirectory completed",{projectId:c.id});let p={directory:d,worktree:m,project:c};return n.debug("createAgentAdapter: fn returning",{directory:d,projectId:c.id}),p}});n.debug("createAgentAdapter: Instance.provide completed",{directory:e.directory,projectId:e.project.id});let o={Path:{home:a$4.Path.home,data:a$4.Path.data,cache:a$4.Path.cache,config:a$4.Path.config,state:a$4.Path.state,log:a$4.Path.log,bin:a$4.Path.bin}};n.debug("global paths injected",{data:o.Path.data,log:o.Path.log,home:o.Path.home});let r={directory:e.directory,worktree:e.worktree};return await Y.state(),{subAgentRunner:{async run(l){try{let c={source:l.source||l.sessionId||"gateway",title:l.title||"Message from gateway",agent:l.agent||"gateway",parts:l.parts||[]},m=await Y.run(c);return {success:!0,output:m.output,metadata:m.metadata}}catch(c){return n.error("SubAgent.run failed",{error:c instanceof Error?c.message:String(c)}),{success:false,error:c instanceof Error?c.message:String(c)}}}},localAgentRunner:{async run(l){try{let c=!l.source&&s.sdk,m=l.source||void 0;if(c){let A=await s.sdk.session.create({directory:s.config.directory});A.data&&(m=A.data.id,n.debug("LocalAgent.run: created new session",{sessionId:m}));}if(!m)throw new Error("No session ID available");let p=await _.run({...l,source:m});return n.debug("LocalAgent.run completed",{title:p.title,sessionId:m}),p}catch(c){throw n.error("LocalAgent.run failed",{error:c instanceof Error?c.message:String(c)}),c}}},hookRegistry:Ba,global:o,instance:r,sdk:s.sdk}}async function B(d,s,e$1){n.debug("Gateway start command executed",{options:s});try{let o=e$1.config.directory;n.debug("Working directory resolved",{directory:o});let r=a$1(o);if(!r.valid)throw n.error("Working directory validation failed",{directory:o,error:r.error}),new Error(`Invalid working directory: ${r.error}`);let a=r.normalizedPath;n.debug("Working directory validated",{validatedDirectory:a}),console.log(g(i("gateway.directory.resolved",{vars:{cwd:a}}))),await a$2(a,async()=>{let{initLog:i$1,setAgentAdapter:l}=await import('@easbot/gateway');await i$1({logDir:process.env.EASBOT_LOG_PATH??process.cwd(),print:e$1.config.print_logs??!1,dev:e$1.config.debug??!1,level:e$1.config.log_level??"INFO"});let m=await z(a,e$1);n.debug("executeGatewayStart: createAgentAdapter completed"),l(m),n.debug("Agent adapter injected into Gateway");let p=await c();if(n.debug("Gateway server configuration",{port:p.port,hostname:p.hostname,path:p.path,tls:p.https?.enabled,enabled:p.enabled}),!p.enabled){n.warn("Gateway server is disabled by configuration"),console.log(f(i("gateway.disabled")));return}await Gateway.start(p),n.info("Gateway server started successfully"),O("running",p,{directory:a,debug:e$1.config.debug}),F(),await new Promise(()=>{});});}catch(o){n.error("Failed to start Gateway server",{error:o instanceof Error?o.message:String(o)}),console.error(e(i("gateway.error.start_failed",{vars:{error:o instanceof Error?o.message:String(o)}}))),process.exit(1);}}async function K(d$1,s){n.debug("Gateway stop command executed",{options:d$1});try{let e=s.config.directory;await a$2(e,async()=>{if(Gateway.getStatus()==="stopped"){console.log(g(i("gateway.status.already_stopped")));return}await Gateway.stop(),console.log(d(i("gateway.stopped")));let r=await c();O("stopped",r,{directory:e});});}catch(e$1){n.error("Failed to stop Gateway server",{error:e$1 instanceof Error?e$1.message:String(e$1)}),console.error(e(i("gateway.error.stop_failed",{vars:{error:e$1 instanceof Error?e$1.message:String(e$1)}}))),process.exit(1);}}async function q(d$1,s,e$1){n.debug("Gateway restart command executed",{options:s});try{let o=e$1.config.directory;await a$2(o,async()=>{let r=await c();if(!r.enabled){n.warn("Gateway server is disabled by configuration"),console.log(f(i("gateway.disabled")));return}console.log(g(i("gateway.restarting"))),await Gateway.restart(r),console.log(d(i("gateway.restarted"))),O("running",r,{directory:o,debug:e$1.config.debug}),F(),await new Promise(()=>{});});}catch(o){n.error("Failed to restart Gateway server",{error:o instanceof Error?o.message:String(o)}),console.error(e(i("gateway.error.restart_failed",{vars:{error:o instanceof Error?o.message:String(o)}}))),await a.close(),process.exit(1);}}async function J(d,s){n.debug("Gateway status command executed",{options:d});try{let e=s.config.directory;await a$2(e,async()=>{let o=Gateway.getStatus(),a=(await Gateway.get())?.getStatus(),i$2=await c();console.log(""),console.log(h(i("gateway.status.title"))),console.log(k(60));let l={stopped:a$3.muted,starting:a$3.info,running:a$3.success,stopping:a$3.info,error:a$3.error},c$2=c$1(b(),l[o]||a$3.muted,o.toUpperCase());if(console.log(i$1(i("gateway.field.status"),c$2,15)),a){console.log(i$1(i("gateway.field.port"),String(a.port),15)),console.log(i$1(i("gateway.field.hostname"),a.hostname||i$2.hostname,15)),console.log(i$1(i("gateway.field.path"),i$2.path||"/",15)),console.log(i$1(i("gateway.field.connections"),String(a.connections||0),15));let m=i$2.https?.enabled?"wss":"ws",p=i$2.path||"/",A=`${m}://${a.hostname||i$2.hostname}:${a.port}${p}`;console.log(i$1(i("gateway.field.ws_url"),A,15));}console.log(k(60)),console.log("");});}catch(e$1){n.error("Failed to get Gateway status",{error:e$1 instanceof Error?e$1.message:String(e$1)}),console.error(e(i("gateway.error.status_failed",{vars:{error:e$1 instanceof Error?e$1.message:String(e$1)}}))),process.exit(1);}}async function Q(d,s){n.debug("Gateway config show command executed",{options:d});try{let e=s.config.directory;await a$2(e,async()=>{let o=await Gateway.config();if(!o){console.log(f(i("gateway.config.not_found")));return}if(console.log(""),console.log(h(i("gateway.config.heading"))),console.log(k(60)),o.server&&(console.log(h(i("gateway.config.server"))),console.log(i$1(" enabled",String(o.server.enabled??!0),12)),console.log(i$1(" port",String(o.server.port??3001),12)),console.log(i$1(" hostname",o.server.hostname??"0.0.0.0",12)),console.log(i$1(" tls",String(o.server.https?.enabled??!1),12)),console.log(i$1(" cors",String(o.server.cors??!0),12))),o.channels){console.log(""),console.log(h(i("gateway.config.channels")));let r=Object.keys(o.channels);if(r.length===0)console.log(g(" "+i("gateway.config.no_channels")));else for(let a of r){let i$2=o.channels[a];i$2&&console.log(i$1(` ${a}`,i$2.enabled?i("common.enabled"):i("common.disabled"),12));}}o.connectionPool&&(console.log(""),console.log(h(i("gateway.config.connection_pool"))),console.log(i$1(" maxConnectionsPerChannel",String(o.connectionPool.maxConnectionsPerChannel??100),25)),console.log(i$1(" idleTimeout",`${o.connectionPool.idleTimeout??3e5}ms`,25)),console.log(i$1(" reuseStrategy",o.connectionPool.reuseStrategy??"lru",25))),o.agentRegistry&&(console.log(""),console.log(h(i("gateway.config.agent_registry"))),console.log(i$1(" heartbeatInterval",`${o.agentRegistry.heartbeatInterval??3e4}ms`,20)),console.log(i$1(" heartbeatTimeout",`${o.agentRegistry.heartbeatTimeout??9e4}ms`,20))),console.log(k(60)),console.log("");});}catch(e$1){n.error("Failed to show Gateway config",{error:e$1 instanceof Error?e$1.message:String(e$1)}),console.error(e(i("gateway.error.config_failed",{vars:{error:e$1 instanceof Error?e$1.message:String(e$1)}}))),process.exit(1);}}function Ae(d,s){let e=d.command("gateway").description(i("gateway.command.description")).helpOption("-h, --help",i("gateway.help.option")).addHelpText("after",`
3
3
 
4
4
  ${i("gateway.help.examples")}
5
5
  easbot gateway start # ${i("gateway.help.example.default")}
@@ -1,2 +1,2 @@
1
- import {e}from'./chunk-M3K32WJV.mjs';import {ya}from'./chunk-YGFGAD5H.mjs';import'./chunk-CCRIJZBK.mjs';import'./chunk-XQXI2ZHB.mjs';import'./chunk-ZFGVQIO5.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-H45MZAM6.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-AAJAKVQY.mjs';import {i}from'./chunk-UNBJ6Y7L.mjs';import'./chunk-ZG2HQDXQ.mjs';import'./chunk-O2JOXYKG.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-JII5HRIF.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-DJYON7M6.mjs';import'./chunk-X6ISXWBN.mjs';function g(o,a){o.command("generate").description(i("generate.command.description")).action(async()=>{await c();});}async function c(){try{let o=await ya();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(`
1
+ import {e}from'./chunk-M3K32WJV.mjs';import {ya}from'./chunk-FWVB6X4X.mjs';import'./chunk-CCRIJZBK.mjs';import'./chunk-D4GDS5UI.mjs';import'./chunk-75IQNF4I.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-UBCLKZWP.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-AAJAKVQY.mjs';import {i}from'./chunk-UNBJ6Y7L.mjs';import'./chunk-X7KLQIAQ.mjs';import'./chunk-KTMZPMCI.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-GRDTQW6K.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-SB4J2R54.mjs';import'./chunk-X6ISXWBN.mjs';function g(o,a){o.command("generate").description(i("generate.command.description")).action(async()=>{await c();});}async function c(){try{let o=await ya();for(let t of Object.values(o.paths??{}))for(let r of ["get","post","put","delete","patch"]){let e=t[r];e?.operationId&&(e["x-codeSamples"]=[{lang:"js",source:['import { createEasbotClient } from "@easbot/sdk"',"","const client = createEasbotClient()",`await client.${e.operationId}({`," ...","})"].join(`
2
2
  `)}]);}let a=JSON.stringify(o,null,2);await new Promise((t,r)=>{process.stdout.write(a,e=>{e?r(e):t();});});}catch(o){console.error(e(i("generate.error.failed",{vars:{error:o instanceof Error?o.message:String(o)}}))),process.exit(1);}}export{g as registerGenerateCommand};
@@ -1,4 +1,4 @@
1
- import {a as a$1}from'./chunk-TYD2M4SP.mjs';import'./chunk-FXOUIXIL.mjs';import'./chunk-CQVEAYYW.mjs';import {g,e,h,i as i$1,k,d}from'./chunk-M3K32WJV.mjs';import {Oa}from'./chunk-YGFGAD5H.mjs';import'./chunk-CCRIJZBK.mjs';import'./chunk-XQXI2ZHB.mjs';import'./chunk-ZFGVQIO5.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-H45MZAM6.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-AAJAKVQY.mjs';import {i}from'./chunk-UNBJ6Y7L.mjs';import'./chunk-ZG2HQDXQ.mjs';import'./chunk-O2JOXYKG.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-JII5HRIF.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import'./chunk-DJYON7M6.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(i("github.command.description"));r.command("install").description(i("github.command.install.description")).option("--provider <provider>",i("github.option.provider")).option("--model <model>",i("github.option.model")).action(async a=>{m.debug("Installing GitHub app"),await j(t,a);}),r.command("run").description(i("github.command.run.description")).option("--event <json>",i("github.option.event")).option("--token <token>",i("github.option.token")).action(async a=>{m.debug("Running GitHub agent",{options:a}),console.log(g(i("github.run.info")));});}async function j(e$1,t){try{Oa.project.vcs!=="git"&&(console.error(e(i("github.error.not_git_repo"))),process.exit(1)),console.log(h(i("github.install.starting")));let a=await W(),n=E(a);n||(console.error(e(i("github.error.parse_remote"))),process.exit(1)),console.log(i$1(i("github.field.owner"),n.owner)),console.log(i$1(i("github.field.repo"),n.repo)),console.log(k(60)),console.log(g(i("github.install.step1")));let i$2=`${S}?target=${n.owner}/${n.repo}`;console.log(g(i("github.install.open_url",{vars:{url:i$2}}))),await F(i$2),console.log(g(i("github.install.waiting")));let s=0,d$1=60;for(;s<d$1;){if(await H(n.owner,n.repo)){console.log(d(i("github.install.installed")));break}s++,await D(1e3);}s>=d$1&&(console.error(e(i("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(i("github.install.generating_workflow"))),await A(e$1,n.owner,n.repo,c,v),console.log(d(i("github.install.workflow_created",{vars:{file:R}}))),console.log(""),console.log(h(i("github.install.next_steps"))),console.log(g("1. "+i("github.install.step1_hint"))),console.log(g("2. "+i("github.install.step2_hint",{vars:{owner:n.owner,repo:n.repo}}))),console.log(g("3. "+i("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(i("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(i("github.install.select_provider"))),console.log(a$1({columns:[{key:"index",header:"#",minWidth:4},{key:"id",header:i("github.table.header.id"),minWidth:15},{key:"name",header:i("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$1=Object.entries(n.models);if(i$1.length===0)return "default";console.log(""),console.log(g(i("github.install.select_model")));for(let s=0;s<i$1.length;s++){let[d,c]=i$1[s];console.log(` ${s+1}. ${c.name||d}`);}return console.log(""),i$1[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
1
+ import {a as a$1}from'./chunk-TYD2M4SP.mjs';import'./chunk-FXOUIXIL.mjs';import'./chunk-CQVEAYYW.mjs';import {g,e,h,i as i$1,k,d}from'./chunk-M3K32WJV.mjs';import {Oa}from'./chunk-FWVB6X4X.mjs';import'./chunk-CCRIJZBK.mjs';import'./chunk-D4GDS5UI.mjs';import'./chunk-75IQNF4I.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-UBCLKZWP.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-AAJAKVQY.mjs';import {i}from'./chunk-UNBJ6Y7L.mjs';import'./chunk-X7KLQIAQ.mjs';import'./chunk-KTMZPMCI.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-GRDTQW6K.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import'./chunk-SB4J2R54.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(i("github.command.description"));r.command("install").description(i("github.command.install.description")).option("--provider <provider>",i("github.option.provider")).option("--model <model>",i("github.option.model")).action(async a=>{m.debug("Installing GitHub app"),await j(t,a);}),r.command("run").description(i("github.command.run.description")).option("--event <json>",i("github.option.event")).option("--token <token>",i("github.option.token")).action(async a=>{m.debug("Running GitHub agent",{options:a}),console.log(g(i("github.run.info")));});}async function j(e$1,t){try{Oa.project.vcs!=="git"&&(console.error(e(i("github.error.not_git_repo"))),process.exit(1)),console.log(h(i("github.install.starting")));let a=await W(),n=E(a);n||(console.error(e(i("github.error.parse_remote"))),process.exit(1)),console.log(i$1(i("github.field.owner"),n.owner)),console.log(i$1(i("github.field.repo"),n.repo)),console.log(k(60)),console.log(g(i("github.install.step1")));let i$2=`${S}?target=${n.owner}/${n.repo}`;console.log(g(i("github.install.open_url",{vars:{url:i$2}}))),await F(i$2),console.log(g(i("github.install.waiting")));let s=0,d$1=60;for(;s<d$1;){if(await H(n.owner,n.repo)){console.log(d(i("github.install.installed")));break}s++,await D(1e3);}s>=d$1&&(console.error(e(i("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(i("github.install.generating_workflow"))),await A(e$1,n.owner,n.repo,c,v),console.log(d(i("github.install.workflow_created",{vars:{file:R}}))),console.log(""),console.log(h(i("github.install.next_steps"))),console.log(g("1. "+i("github.install.step1_hint"))),console.log(g("2. "+i("github.install.step2_hint",{vars:{owner:n.owner,repo:n.repo}}))),console.log(g("3. "+i("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(i("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(i("github.install.select_provider"))),console.log(a$1({columns:[{key:"index",header:"#",minWidth:4},{key:"id",header:i("github.table.header.id"),minWidth:15},{key:"name",header:i("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$1=Object.entries(n.models);if(i$1.length===0)return "default";console.log(""),console.log(g(i("github.install.select_model")));for(let s=0;s<i$1.length;s++){let[d,c]=i$1[s];console.log(` ${s+1}. ${c.name||d}`);}return console.log(""),i$1[0]?.[0]||"default"}async function A(e,t,r,a,n){let{data:i}=await e.sdk.config.providers({}),c=(i?.providers||[]).find(p=>p.id===a)?.env||[],y=`name: opencode
2
2
 
3
3
  on:
4
4
  issue_comment:
@@ -0,0 +1 @@
1
+ export{a as Global}from'./chunk-SB4J2R54.mjs';import'./chunk-X6ISXWBN.mjs';
@@ -1,2 +1,2 @@
1
- import {h,e,d}from'./chunk-M3K32WJV.mjs';import {Oa}from'./chunk-YGFGAD5H.mjs';import'./chunk-CCRIJZBK.mjs';import'./chunk-XQXI2ZHB.mjs';import'./chunk-ZFGVQIO5.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-H45MZAM6.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-AAJAKVQY.mjs';import {i}from'./chunk-UNBJ6Y7L.mjs';import'./chunk-ZG2HQDXQ.mjs';import'./chunk-O2JOXYKG.mjs';import'./chunk-CJTCCLW4.mjs';import {a as a$1}from'./chunk-JII5HRIF.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import'./chunk-DJYON7M6.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(i("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(i("import.fetching_url",{vars:{url:t}})));let r=await fetch(t);r.ok||(console.error(e(i("import.error.fetch_failed",{vars:{status:r.statusText}}))),process.exit(1)),o=await r.json();}else {console.log(h(i("import.reading_file",{vars:{file:t}})));let r=await PKG.file(t).text();o=JSON.parse(r);}o?.info||(console.error(e(i("import.error.invalid_format"))),process.exit(1)),m.debug("Importing session data",{sessionId:o.info.id}),await a$1.write(["session",Oa.project.id,o.info.id],o.info);for(let r of o.messages){await a$1.write(["message",o.info.id,r.info.id],r.info);for(let c of r.parts)await a$1.write(["part",r.info.id,c.id],c);}console.log(d(i("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(i("import.error.failed",{vars:{error:s instanceof Error?s.message:String(s)}}))),process.exit(1);}});}
1
+ import {h,e,d}from'./chunk-M3K32WJV.mjs';import {Oa}from'./chunk-FWVB6X4X.mjs';import'./chunk-CCRIJZBK.mjs';import'./chunk-D4GDS5UI.mjs';import'./chunk-75IQNF4I.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-UBCLKZWP.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-AAJAKVQY.mjs';import {i}from'./chunk-UNBJ6Y7L.mjs';import'./chunk-X7KLQIAQ.mjs';import'./chunk-KTMZPMCI.mjs';import'./chunk-CJTCCLW4.mjs';import {a as a$1}from'./chunk-GRDTQW6K.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import'./chunk-SB4J2R54.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(i("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(i("import.fetching_url",{vars:{url:t}})));let r=await fetch(t);r.ok||(console.error(e(i("import.error.fetch_failed",{vars:{status:r.statusText}}))),process.exit(1)),o=await r.json();}else {console.log(h(i("import.reading_file",{vars:{file:t}})));let r=await PKG.file(t).text();o=JSON.parse(r);}o?.info||(console.error(e(i("import.error.invalid_format"))),process.exit(1)),m.debug("Importing session data",{sessionId:o.info.id}),await a$1.write(["session",Oa.project.id,o.info.id],o.info);for(let r of o.messages){await a$1.write(["message",o.info.id,r.info.id],r.info);for(let c of r.parts)await a$1.write(["part",r.info.id,c.id],c);}console.log(d(i("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(i("import.error.failed",{vars:{error:s instanceof Error?s.message:String(s)}}))),process.exit(1);}});}
2
2
  export{_ as registerImportCommand};
@@ -0,0 +1 @@
1
+ export{b as Installation}from'./chunk-KTMZPMCI.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-SB4J2R54.mjs';import'./chunk-X6ISXWBN.mjs';
@@ -0,0 +1 @@
1
+ export{Oa as Instance}from'./chunk-FWVB6X4X.mjs';import'./chunk-CCRIJZBK.mjs';import'./chunk-D4GDS5UI.mjs';import'./chunk-75IQNF4I.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-UBCLKZWP.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-AAJAKVQY.mjs';import'./chunk-UNBJ6Y7L.mjs';import'./chunk-X7KLQIAQ.mjs';import'./chunk-KTMZPMCI.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-GRDTQW6K.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-SB4J2R54.mjs';import'./chunk-X6ISXWBN.mjs';
@@ -0,0 +1 @@
1
+ export{H as directories,G as get,J as getGlobal,I as global,E as state,F as waitForDependencies}from'./chunk-FWVB6X4X.mjs';import'./chunk-CCRIJZBK.mjs';import'./chunk-D4GDS5UI.mjs';import'./chunk-75IQNF4I.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-UBCLKZWP.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-AAJAKVQY.mjs';import'./chunk-UNBJ6Y7L.mjs';import'./chunk-X7KLQIAQ.mjs';import'./chunk-KTMZPMCI.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-GRDTQW6K.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-SB4J2R54.mjs';import'./chunk-X6ISXWBN.mjs';
@@ -0,0 +1 @@
1
+ export{a as PluginLoader,b as createPluginLoader}from'./chunk-IEQ4VD66.mjs';import'./chunk-FWVB6X4X.mjs';import'./chunk-CCRIJZBK.mjs';import'./chunk-D4GDS5UI.mjs';import'./chunk-75IQNF4I.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-UBCLKZWP.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-AAJAKVQY.mjs';import'./chunk-UNBJ6Y7L.mjs';import'./chunk-X7KLQIAQ.mjs';import'./chunk-KTMZPMCI.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-GRDTQW6K.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-SB4J2R54.mjs';import'./chunk-X6ISXWBN.mjs';
@@ -0,0 +1 @@
1
+ export{b as LSP}from'./chunk-FWVB6X4X.mjs';import'./chunk-CCRIJZBK.mjs';import'./chunk-D4GDS5UI.mjs';import'./chunk-75IQNF4I.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-UBCLKZWP.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-AAJAKVQY.mjs';import'./chunk-UNBJ6Y7L.mjs';import'./chunk-X7KLQIAQ.mjs';import'./chunk-KTMZPMCI.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-GRDTQW6K.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-SB4J2R54.mjs';import'./chunk-X6ISXWBN.mjs';
@@ -1 +1 @@
1
- import {a as a$3}from'./chunk-TYD2M4SP.mjs';import'./chunk-FXOUIXIL.mjs';import {a as a$2}from'./chunk-3Q4UCILK.mjs';import'./chunk-CQVEAYYW.mjs';import {l,d,e,h,i as i$1,b,c,a as a$4}from'./chunk-M3K32WJV.mjs';import'./chunk-YGFGAD5H.mjs';import'./chunk-CCRIJZBK.mjs';import'./chunk-XQXI2ZHB.mjs';import'./chunk-ZFGVQIO5.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-H45MZAM6.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-AAJAKVQY.mjs';import {i}from'./chunk-UNBJ6Y7L.mjs';import'./chunk-ZG2HQDXQ.mjs';import'./chunk-O2JOXYKG.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-JII5HRIF.mjs';import {a as a$1}from'./chunk-LFYBZHOI.mjs';import'./chunk-DJYON7M6.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(i("mcp.command.description"));M.command("list").description(i("mcp.command.list.description")).action(async()=>{await a$2(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(i("mcp.list.empty")));return}console.log(d(i("mcp.list.success",{vars:{count:n.length}}))),console.log(""),console.log(a$3({columns:[{key:"name",header:i("mcp.table.header.name"),minWidth:20},{key:"command",header:i("mcp.table.header.command"),minWidth:30},{key:"disabled",header:i("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?i("common.yes"):i("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(i("mcp.list.error"))),process.exit(1);}});}),M.command("info <name>").description(i("mcp.command.info.description")).action(async o=>{await a$2(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(i("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(i("mcp.info.success"))),console.log(""),console.log(h(i("mcp.info.heading"))),console.log(""),console.log(i$1(i("mcp.info.field.name")+":",o)),console.log(i$1(i("mcp.info.field.type")+":",s)),s==="local"||!s){if(console.log(i$1(i("mcp.info.field.command")+":",m?.join(" ")||"")),console.log(i$1(i("mcp.info.field.enabled")+":",l!==!1?i("common.yes"):i("common.no"))),f&&Object.keys(f).length>0){console.log(i$1(i("mcp.info.field.environment")+":",""));let p=b();console.log(c(p,a$4.muted,JSON.stringify(f,null,2)));}}else if(s==="remote"&&(console.log(i$1(i("mcp.info.field.url")+":",d$1||"")),console.log(i$1(i("mcp.info.field.enabled")+":",l!==!1?i("common.yes"):i("common.no"))),g&&Object.keys(g).length>0)){console.log(i$1(i("mcp.info.field.headers")+":",""));let p=b();console.log(c(p,a$4.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(i("mcp.info.error",{vars:{error:String(r)}}))),process.exit(1);}});}),M.command("add").description(i("mcp.command.add.description")).requiredOption("--name <name>",i("mcp.command.add.option.name")).requiredOption("--command <command>",i("mcp.command.add.option.command")).option("--args <json>",i("mcp.command.add.option.args")).option("--env <json>",i("mcp.command.add.option.env")).action(async o=>{await a$2(c$1.config.directory,async()=>{try{a.debug("Adding MCP server",{name:o.name}),console.log(h(i("mcp.add.begin")));let r;if(o.args)try{r=JSON.parse(o.args),Array.isArray(r)||(console.error(e(i("mcp.add.error.args_invalid"))),process.exit(1));}catch{console.error(e(i("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(i("mcp.add.error.env_invalid"))),process.exit(1));}catch{console.error(e(i("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(i("mcp.add.success",{vars:{name:o.name}}))),console.log(""),console.log(h(i("mcp.info.heading"))),console.log(""),console.log(i$1(i("mcp.info.field.name")+":",o.name)),console.log(i$1(i("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$1(i("mcp.info.field.command")+":",f?.join(" ")||[o.command].join(" "))),g&&Object.keys(g).length>0){console.log(i$1(i("mcp.info.field.environment")+":",""));let S=b();console.log(c(S,a$4.muted,JSON.stringify(g,null,2)));}}else if(l==="remote"&&(console.log(i$1(i("mcp.info.field.url")+":",p||"")),P&&Object.keys(P).length>0)){console.log(i$1(i("mcp.info.field.headers")+":",""));let S=b();console.log(c(S,a$4.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(i("mcp.add.error",{vars:{error:r instanceof Error?r.message:String(r)}}))),process.exit(1);}});}),M.command("remove <name>").description(i("mcp.command.remove.description")).action(async o=>{await a$2(c$1.config.directory,async()=>{try{a.debug("Removing MCP server",{name:o}),console.log(h(i("mcp.remove.begin")));let{data:r}=await c$1.sdk.config.get({directory:c$1.config.directory});r?.mcp?.[o]||(console.error(e(i("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(i("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(i("mcp.remove.error",{vars:{error:r instanceof Error?r.message:String(r)}}))),process.exit(1);}});});}export{T as registerMcpCommands};
1
+ import {a as a$3}from'./chunk-TYD2M4SP.mjs';import'./chunk-FXOUIXIL.mjs';import {a as a$2}from'./chunk-R4BPTF6V.mjs';import'./chunk-CQVEAYYW.mjs';import {l,d,e,h,i as i$1,b,c,a as a$4}from'./chunk-M3K32WJV.mjs';import'./chunk-FWVB6X4X.mjs';import'./chunk-CCRIJZBK.mjs';import'./chunk-D4GDS5UI.mjs';import'./chunk-75IQNF4I.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-UBCLKZWP.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-AAJAKVQY.mjs';import {i}from'./chunk-UNBJ6Y7L.mjs';import'./chunk-X7KLQIAQ.mjs';import'./chunk-KTMZPMCI.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-GRDTQW6K.mjs';import {a as a$1}from'./chunk-LFYBZHOI.mjs';import'./chunk-SB4J2R54.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(i("mcp.command.description"));M.command("list").description(i("mcp.command.list.description")).action(async()=>{await a$2(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(i("mcp.list.empty")));return}console.log(d(i("mcp.list.success",{vars:{count:n.length}}))),console.log(""),console.log(a$3({columns:[{key:"name",header:i("mcp.table.header.name"),minWidth:20},{key:"command",header:i("mcp.table.header.command"),minWidth:30},{key:"disabled",header:i("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?i("common.yes"):i("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(i("mcp.list.error"))),process.exit(1);}});}),M.command("info <name>").description(i("mcp.command.info.description")).action(async o=>{await a$2(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(i("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(i("mcp.info.success"))),console.log(""),console.log(h(i("mcp.info.heading"))),console.log(""),console.log(i$1(i("mcp.info.field.name")+":",o)),console.log(i$1(i("mcp.info.field.type")+":",s)),s==="local"||!s){if(console.log(i$1(i("mcp.info.field.command")+":",m?.join(" ")||"")),console.log(i$1(i("mcp.info.field.enabled")+":",l!==!1?i("common.yes"):i("common.no"))),f&&Object.keys(f).length>0){console.log(i$1(i("mcp.info.field.environment")+":",""));let p=b();console.log(c(p,a$4.muted,JSON.stringify(f,null,2)));}}else if(s==="remote"&&(console.log(i$1(i("mcp.info.field.url")+":",d$1||"")),console.log(i$1(i("mcp.info.field.enabled")+":",l!==!1?i("common.yes"):i("common.no"))),g&&Object.keys(g).length>0)){console.log(i$1(i("mcp.info.field.headers")+":",""));let p=b();console.log(c(p,a$4.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(i("mcp.info.error",{vars:{error:String(r)}}))),process.exit(1);}});}),M.command("add").description(i("mcp.command.add.description")).requiredOption("--name <name>",i("mcp.command.add.option.name")).requiredOption("--command <command>",i("mcp.command.add.option.command")).option("--args <json>",i("mcp.command.add.option.args")).option("--env <json>",i("mcp.command.add.option.env")).action(async o=>{await a$2(c$1.config.directory,async()=>{try{a.debug("Adding MCP server",{name:o.name}),console.log(h(i("mcp.add.begin")));let r;if(o.args)try{r=JSON.parse(o.args),Array.isArray(r)||(console.error(e(i("mcp.add.error.args_invalid"))),process.exit(1));}catch{console.error(e(i("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(i("mcp.add.error.env_invalid"))),process.exit(1));}catch{console.error(e(i("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(i("mcp.add.success",{vars:{name:o.name}}))),console.log(""),console.log(h(i("mcp.info.heading"))),console.log(""),console.log(i$1(i("mcp.info.field.name")+":",o.name)),console.log(i$1(i("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$1(i("mcp.info.field.command")+":",f?.join(" ")||[o.command].join(" "))),g&&Object.keys(g).length>0){console.log(i$1(i("mcp.info.field.environment")+":",""));let S=b();console.log(c(S,a$4.muted,JSON.stringify(g,null,2)));}}else if(l==="remote"&&(console.log(i$1(i("mcp.info.field.url")+":",p||"")),P&&Object.keys(P).length>0)){console.log(i$1(i("mcp.info.field.headers")+":",""));let S=b();console.log(c(S,a$4.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(i("mcp.add.error",{vars:{error:r instanceof Error?r.message:String(r)}}))),process.exit(1);}});}),M.command("remove <name>").description(i("mcp.command.remove.description")).action(async o=>{await a$2(c$1.config.directory,async()=>{try{a.debug("Removing MCP server",{name:o}),console.log(h(i("mcp.remove.begin")));let{data:r}=await c$1.sdk.config.get({directory:c$1.config.directory});r?.mcp?.[o]||(console.error(e(i("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(i("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(i("mcp.remove.error",{vars:{error:r instanceof Error?r.message:String(r)}}))),process.exit(1);}});});}export{T as registerMcpCommands};
@@ -0,0 +1 @@
1
+ export{P as MCP}from'./chunk-FWVB6X4X.mjs';import'./chunk-CCRIJZBK.mjs';import'./chunk-D4GDS5UI.mjs';import'./chunk-75IQNF4I.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-UBCLKZWP.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-AAJAKVQY.mjs';import'./chunk-UNBJ6Y7L.mjs';import'./chunk-X7KLQIAQ.mjs';import'./chunk-KTMZPMCI.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-GRDTQW6K.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-SB4J2R54.mjs';import'./chunk-X6ISXWBN.mjs';
@@ -0,0 +1 @@
1
+ export{a as ModelsDev,b as initModelsRefresh}from'./chunk-X7KLQIAQ.mjs';import'./chunk-KTMZPMCI.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-SB4J2R54.mjs';import'./chunk-X6ISXWBN.mjs';
@@ -1,3 +1,3 @@
1
- import {e,h,g,d}from'./chunk-M3K32WJV.mjs';import {Oa}from'./chunk-YGFGAD5H.mjs';import'./chunk-CCRIJZBK.mjs';import'./chunk-XQXI2ZHB.mjs';import'./chunk-ZFGVQIO5.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-H45MZAM6.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-AAJAKVQY.mjs';import {i}from'./chunk-UNBJ6Y7L.mjs';import'./chunk-ZG2HQDXQ.mjs';import'./chunk-O2JOXYKG.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-JII5HRIF.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import'./chunk-DJYON7M6.mjs';import'./chunk-X6ISXWBN.mjs';import {Shell,PKG}from'@easbot/utils';var f=a.create({service:"cli-command-pr"});function F(N,v){N.command("pr <number>").description(i("pr.command.description")).action(async d$1=>{f.debug("Checking out PR",{prNumber:d$1});try{Oa.project.vcs!=="git"&&(console.error(e(i("pr.error.not_git_repo"))),process.exit(1));let r=parseInt(d$1,10);(Number.isNaN(r)||r<=0)&&(console.error(e(i("pr.error.invalid_number",{vars:{number:d$1}}))),process.exit(1)),console.log(h(i("pr.checking_out",{vars:{prNumber:String(r)}})));let c=process.platform==="win32"?"cmd":void 0,g$1=`pr/${r}`;await Shell.spawn(c,`gh pr checkout ${r} --branch ${g$1} --force`).exited!==0&&(console.error(e(i("pr.error.checkout_failed"))),console.error(g(i("pr.error.gh_not_installed"))),process.exit(1)),console.log(d(i("pr.checkout_success",{vars:{prNumber:String(r),branch:g$1}})));let w=Shell.spawn(c,`gh pr view ${r} --json headRepository,headRepositoryOwner,isCrossRepository,headRefName,body`),C=await w.exited,h$1;if(C===0){let y=await PKG.nodeReadableStreamToText(w.stdout);if(y.trim())try{let t=JSON.parse(y);if(t?.isCrossRepository&&t.headRepository&&t.headRepositoryOwner){let n=t.headRepositoryOwner.login,m=t.headRepository.name,s=n,u=Shell.spawn(c,"git remote"),R=await PKG.nodeReadableStreamToText(u.stdout);await u.exited,R.split(`
1
+ import {e,h,g,d}from'./chunk-M3K32WJV.mjs';import {Oa}from'./chunk-FWVB6X4X.mjs';import'./chunk-CCRIJZBK.mjs';import'./chunk-D4GDS5UI.mjs';import'./chunk-75IQNF4I.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-UBCLKZWP.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-AAJAKVQY.mjs';import {i}from'./chunk-UNBJ6Y7L.mjs';import'./chunk-X7KLQIAQ.mjs';import'./chunk-KTMZPMCI.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-GRDTQW6K.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import'./chunk-SB4J2R54.mjs';import'./chunk-X6ISXWBN.mjs';import {Shell,PKG}from'@easbot/utils';var f=a.create({service:"cli-command-pr"});function F(N,v){N.command("pr <number>").description(i("pr.command.description")).action(async d$1=>{f.debug("Checking out PR",{prNumber:d$1});try{Oa.project.vcs!=="git"&&(console.error(e(i("pr.error.not_git_repo"))),process.exit(1));let r=parseInt(d$1,10);(Number.isNaN(r)||r<=0)&&(console.error(e(i("pr.error.invalid_number",{vars:{number:d$1}}))),process.exit(1)),console.log(h(i("pr.checking_out",{vars:{prNumber:String(r)}})));let c=process.platform==="win32"?"cmd":void 0,g$1=`pr/${r}`;await Shell.spawn(c,`gh pr checkout ${r} --branch ${g$1} --force`).exited!==0&&(console.error(e(i("pr.error.checkout_failed"))),console.error(g(i("pr.error.gh_not_installed"))),process.exit(1)),console.log(d(i("pr.checkout_success",{vars:{prNumber:String(r),branch:g$1}})));let w=Shell.spawn(c,`gh pr view ${r} --json headRepository,headRepositoryOwner,isCrossRepository,headRefName,body`),C=await w.exited,h$1;if(C===0){let y=await PKG.nodeReadableStreamToText(w.stdout);if(y.trim())try{let t=JSON.parse(y);if(t?.isCrossRepository&&t.headRepository&&t.headRepositoryOwner){let n=t.headRepositoryOwner.login,m=t.headRepository.name,s=n,u=Shell.spawn(c,"git remote"),R=await PKG.nodeReadableStreamToText(u.stdout);await u.exited,R.split(`
2
2
  `).includes(s)||(await Shell.spawn(c,`git remote add ${s} https://github.com/${n}/${m}.git`).exited,console.log(g(i("pr.added_fork_remote",{vars:{remote:s}}))));}if(t?.body){let n=t.body.match(/https:\/\/opncd\.ai\/s\/([a-zA-Z0-9_-]+)/);if(n){let m=n[0];console.log(g(i("pr.found_session",{vars:{url:m}})));let s=Shell.spawn(c,`easbot import ${m}`);if(await s.exited===0){let x=(await PKG.nodeReadableStreamToText(s.stdout)).match(/Imported session: ([a-zA-Z0-9_-]+)/);x&&(h$1=x[1],console.log(d(i("pr.session_imported",{vars:{sessionId:h$1}}))));}}}}catch{f.debug("Failed to parse PR info JSON");}}console.log(""),console.log(d(i("pr.ready"))),console.log(g(i("pr.start_easbot",{vars:{branch:g$1}}))),f.debug("PR checkout complete",{prNumber:r,sessionId:h$1});}catch(e$1){f.error("Failed to checkout PR",{prNumber:d$1,error:e$1 instanceof Error?e$1.message:String(e$1)}),console.error(e(i("pr.error.failed",{vars:{error:e$1 instanceof Error?e$1.message:String(e$1)}}))),process.exit(1);}});}
3
3
  export{F as registerPrCommand};
@@ -0,0 +1 @@
1
+ export{a as loadTuiState,b as saveTuiStateToStorage}from'./chunk-UBCLKZWP.mjs';import'./chunk-GRDTQW6K.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-SB4J2R54.mjs';import'./chunk-X6ISXWBN.mjs';
@@ -0,0 +1 @@
1
+ export{Na as Project}from'./chunk-FWVB6X4X.mjs';import'./chunk-CCRIJZBK.mjs';import'./chunk-D4GDS5UI.mjs';import'./chunk-75IQNF4I.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-UBCLKZWP.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-AAJAKVQY.mjs';import'./chunk-UNBJ6Y7L.mjs';import'./chunk-X7KLQIAQ.mjs';import'./chunk-KTMZPMCI.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-GRDTQW6K.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-SB4J2R54.mjs';import'./chunk-X6ISXWBN.mjs';
@@ -0,0 +1 @@
1
+ export{Aa as SessionPrompt}from'./chunk-FWVB6X4X.mjs';import'./chunk-CCRIJZBK.mjs';import'./chunk-D4GDS5UI.mjs';import'./chunk-75IQNF4I.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-UBCLKZWP.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-AAJAKVQY.mjs';import'./chunk-UNBJ6Y7L.mjs';import'./chunk-X7KLQIAQ.mjs';import'./chunk-KTMZPMCI.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-GRDTQW6K.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-SB4J2R54.mjs';import'./chunk-X6ISXWBN.mjs';
@@ -0,0 +1 @@
1
+ export{j as Provider}from'./chunk-FWVB6X4X.mjs';import'./chunk-CCRIJZBK.mjs';import'./chunk-D4GDS5UI.mjs';import'./chunk-75IQNF4I.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-UBCLKZWP.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-AAJAKVQY.mjs';import'./chunk-UNBJ6Y7L.mjs';import'./chunk-X7KLQIAQ.mjs';import'./chunk-KTMZPMCI.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-GRDTQW6K.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-SB4J2R54.mjs';import'./chunk-X6ISXWBN.mjs';
@@ -0,0 +1 @@
1
+ export{na as ToolRegistry}from'./chunk-FWVB6X4X.mjs';import'./chunk-CCRIJZBK.mjs';import'./chunk-D4GDS5UI.mjs';import'./chunk-75IQNF4I.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-UBCLKZWP.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-AAJAKVQY.mjs';import'./chunk-UNBJ6Y7L.mjs';import'./chunk-X7KLQIAQ.mjs';import'./chunk-KTMZPMCI.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-GRDTQW6K.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-SB4J2R54.mjs';import'./chunk-X6ISXWBN.mjs';
@@ -0,0 +1 @@
1
+ export{l as SessionRevert}from'./chunk-FWVB6X4X.mjs';import'./chunk-CCRIJZBK.mjs';import'./chunk-D4GDS5UI.mjs';import'./chunk-75IQNF4I.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-UBCLKZWP.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-AAJAKVQY.mjs';import'./chunk-UNBJ6Y7L.mjs';import'./chunk-X7KLQIAQ.mjs';import'./chunk-KTMZPMCI.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-GRDTQW6K.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-SB4J2R54.mjs';import'./chunk-X6ISXWBN.mjs';
@@ -0,0 +1 @@
1
+ export{a as Ripgrep}from'./chunk-D4GDS5UI.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-SB4J2R54.mjs';import'./chunk-X6ISXWBN.mjs';