@easbot/agent 0.2.27 → 0.2.28

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 (91) hide show
  1. package/dist/assets/txt/tool/{gateway-channel.txt → gateway.txt} +17 -17
  2. package/dist/chunks/{acp-7YXFQ45K.mjs → acp-NOH5UGDP.mjs} +1 -1
  3. package/dist/chunks/adapter-loader-U27XVFCP.mjs +1 -0
  4. package/dist/chunks/{agent-DIUQQQYM.mjs → agent-DQAY44EW.mjs} +1 -1
  5. package/dist/chunks/{agent-52URJRBC.mjs → agent-TMTKXGO5.mjs} +1 -1
  6. package/dist/chunks/app-LKNWY3XR.mjs +1 -0
  7. package/dist/chunks/bootstrap-PNCIQQPA.mjs +1 -0
  8. package/dist/chunks/{build-program-WP5P33JQ.mjs → build-program-NEPEF27C.mjs} +1 -1
  9. package/dist/chunks/bus-FZCZO73P.mjs +1 -0
  10. package/dist/chunks/{chunk-VCVFFLHV.mjs → chunk-3VYIQTJ7.mjs} +2 -2
  11. package/dist/chunks/{chunk-ROHSYOEJ.mjs → chunk-7SGBJ5NP.mjs} +1 -1
  12. package/dist/chunks/{chunk-YCYECTVW.mjs → chunk-AP3ZZPEV.mjs} +1 -1
  13. package/dist/chunks/{chunk-TMAVGPNZ.mjs → chunk-I3VIJLPG.mjs} +1 -1
  14. package/dist/chunks/{chunk-6JRVLYTU.mjs → chunk-IXVWBJIE.mjs} +1 -1
  15. package/dist/chunks/{chunk-3P7JMESZ.mjs → chunk-JEUEJB5B.mjs} +1 -1
  16. package/dist/chunks/{chunk-MMN3J3YS.mjs → chunk-KZLMEUTB.mjs} +164 -164
  17. package/dist/chunks/{chunk-RRQRZ6MW.mjs → chunk-QMJ4R4AL.mjs} +1 -1
  18. package/dist/chunks/{chunk-JCC3ZOI6.mjs → chunk-TQNXBACI.mjs} +1 -1
  19. package/dist/chunks/{chunk-6M4SMEZK.mjs → chunk-U4BAW7XF.mjs} +1 -1
  20. package/dist/chunks/{chunk-47PBZEYM.mjs → chunk-WT6HKW7N.mjs} +1 -1
  21. package/dist/chunks/{command-5C6WIRH5.mjs → command-WLZAXIPJ.mjs} +1 -1
  22. package/dist/chunks/compaction-4RM7SP7O.mjs +1 -0
  23. package/dist/chunks/{config-JVIING4F.mjs → config-WLSYCCYR.mjs} +1 -1
  24. package/dist/chunks/{debug-UKX4WQ3F.mjs → debug-J5RTJUKH.mjs} +3 -3
  25. package/dist/chunks/file-YIYCOEN2.mjs +1 -0
  26. package/dist/chunks/{gateway-WMMPUO46.mjs → gateway-H7SBUORZ.mjs} +2 -2
  27. package/dist/chunks/{generate-ATBLMTBG.mjs → generate-KTY277XK.mjs} +1 -1
  28. package/dist/chunks/{github-VDDFKDCK.mjs → github-JLFW4AJU.mjs} +1 -1
  29. package/dist/chunks/global-V7QPWK55.mjs +1 -0
  30. package/dist/chunks/{import-JXNBDWIF.mjs → import-E46ADPOS.mjs} +1 -1
  31. package/dist/chunks/installation-267NAZFC.mjs +1 -0
  32. package/dist/chunks/instance-QFPEWLLX.mjs +1 -0
  33. package/dist/chunks/loader-HMK7CNAK.mjs +1 -0
  34. package/dist/chunks/loader-I5FNCXH5.mjs +1 -0
  35. package/dist/chunks/lsp-E6FAZ6N3.mjs +1 -0
  36. package/dist/chunks/{mcp-WVQBQVTR.mjs → mcp-QLI6EI3R.mjs} +1 -1
  37. package/dist/chunks/mcp-R47GH2RJ.mjs +1 -0
  38. package/dist/chunks/models-IEIC4WVB.mjs +1 -0
  39. package/dist/chunks/{pr-NLGAGRR2.mjs → pr-FAF6WBPN.mjs} +1 -1
  40. package/dist/chunks/preferences-SIWFQFGI.mjs +1 -0
  41. package/dist/chunks/project-LUWDCN2Y.mjs +1 -0
  42. package/dist/chunks/prompt-AB5CWZPX.mjs +1 -0
  43. package/dist/chunks/provider-EYMJXLXQ.mjs +1 -0
  44. package/dist/chunks/registry-DOT4QLWX.mjs +1 -0
  45. package/dist/chunks/revert-2T3C7NKR.mjs +1 -0
  46. package/dist/chunks/ripgrep-OK5E6NNN.mjs +1 -0
  47. package/dist/chunks/{run-3YPI6XKG.mjs → run-IO45RQPY.mjs} +1 -1
  48. package/dist/chunks/scheduler-5CZ7GLSE.mjs +1 -0
  49. package/dist/chunks/server-5LRBAHRI.mjs +1 -0
  50. package/dist/chunks/{session-4MTNN2T4.mjs → session-C5EPZY5K.mjs} +1 -1
  51. package/dist/chunks/session-SI5SDDKY.mjs +1 -0
  52. package/dist/chunks/session-UI6NLBHC.mjs +1 -0
  53. package/dist/chunks/share-42YY7MEP.mjs +1 -0
  54. package/dist/chunks/snapshot-WL44FNUR.mjs +1 -0
  55. package/dist/chunks/storage-ZQQ3MTYY.mjs +1 -0
  56. package/dist/chunks/{tui-YDIPDB2Q.mjs → tui-Y3HZ4TPR.mjs} +1 -1
  57. package/dist/chunks/tui-YE2OOUN3.mjs +1 -0
  58. package/dist/chunks/{types-TQH77CIP.mjs → types-YH67KBGI.mjs} +1 -1
  59. package/dist/chunks/{update-K6SAKANZ.mjs → update-TMILGQ45.mjs} +1 -1
  60. package/dist/cli.mjs +2 -2
  61. package/package.json +13 -13
  62. package/dist/chunks/adapter-loader-3676SVTM.mjs +0 -1
  63. package/dist/chunks/app-TR66U2CP.mjs +0 -1
  64. package/dist/chunks/bootstrap-AD7IUF7M.mjs +0 -1
  65. package/dist/chunks/bus-CBFYNJXU.mjs +0 -1
  66. package/dist/chunks/compaction-LD7EJA6I.mjs +0 -1
  67. package/dist/chunks/file-X44TUOLQ.mjs +0 -1
  68. package/dist/chunks/global-EVUKT3AP.mjs +0 -1
  69. package/dist/chunks/installation-PL26SKTI.mjs +0 -1
  70. package/dist/chunks/instance-6NPZLEWW.mjs +0 -1
  71. package/dist/chunks/loader-E7GJBAIA.mjs +0 -1
  72. package/dist/chunks/loader-PDYDFUCE.mjs +0 -1
  73. package/dist/chunks/lsp-TAHMSZIF.mjs +0 -1
  74. package/dist/chunks/mcp-JBQOYJSH.mjs +0 -1
  75. package/dist/chunks/models-AHPQPXDG.mjs +0 -1
  76. package/dist/chunks/preferences-H2TY25O6.mjs +0 -1
  77. package/dist/chunks/project-RYTIRGTX.mjs +0 -1
  78. package/dist/chunks/prompt-5QAKRVXS.mjs +0 -1
  79. package/dist/chunks/provider-VPOZDMMP.mjs +0 -1
  80. package/dist/chunks/registry-SYGK57RE.mjs +0 -1
  81. package/dist/chunks/revert-QWJ7WVG5.mjs +0 -1
  82. package/dist/chunks/ripgrep-OHTQKKDR.mjs +0 -1
  83. package/dist/chunks/scheduler-ZEHS5N2M.mjs +0 -1
  84. package/dist/chunks/server-LZVS7PBL.mjs +0 -1
  85. package/dist/chunks/session-DVMBXQNW.mjs +0 -1
  86. package/dist/chunks/session-SD2Y7TSF.mjs +0 -1
  87. package/dist/chunks/share-NAAYDAC3.mjs +0 -1
  88. package/dist/chunks/snapshot-QYVGLPZG.mjs +0 -1
  89. package/dist/chunks/storage-R2S2HFGM.mjs +0 -1
  90. package/dist/chunks/tui-MDEMUHXR.mjs +0 -1
  91. /package/dist/assets/txt/tool/{agent-client-chat.txt → agent-client.txt} +0 -0
@@ -27,13 +27,13 @@ Returns system status, connections, sessions, subscriptions, and uptime.
27
27
  ### Private Chat
28
28
  Use contactUid to send direct messages:
29
29
  ```
30
- gateway_channel(operation="send" contactUid="telegram:123456789" content="Hello!")
30
+ gateway(operation="send" contactUid="telegram:123456789" content="Hello!")
31
31
  ```
32
32
 
33
33
  ### Group Chat
34
34
  Use sessionId to send to groups:
35
35
  ```
36
- gateway_channel(operation="send" sessionId="telegram_telegram-main_-100123456_123456" content="Hello group!")
36
+ gateway(operation="send" sessionId="telegram_telegram-main_-100123456_123456" content="Hello group!")
37
37
  ```
38
38
 
39
39
  ## Session Filtering
@@ -41,13 +41,13 @@ gateway_channel(operation="send" sessionId="telegram_telegram-main_-100123456_12
41
41
  Sessions include chat type (private/group) and title:
42
42
  ```
43
43
  # List private chats only
44
- gateway_channel(operation="sessions" type="private")
44
+ gateway(operation="sessions" type="private")
45
45
 
46
46
  # List groups only
47
- gateway_channel(operation="sessions" type="group")
47
+ gateway(operation="sessions" type="group")
48
48
 
49
49
  # List all
50
- gateway_channel(operation="sessions" type="all")
50
+ gateway(operation="sessions" type="all")
51
51
  ```
52
52
 
53
53
  ## Quick Reference
@@ -69,30 +69,30 @@ gateway_channel(operation="sessions" type="all")
69
69
 
70
70
  ```
71
71
  # Status
72
- gateway_channel(operation="status")
72
+ gateway(operation="status")
73
73
 
74
74
  # Channels
75
- gateway_channel(operation="channels")
75
+ gateway(operation="channels")
76
76
 
77
77
  # Sessions (all)
78
- gateway_channel(operation="sessions")
78
+ gateway(operation="sessions")
79
79
 
80
80
  # Sessions - filter by type
81
- gateway_channel(operation="sessions" type="private")
82
- gateway_channel(operation="sessions" type="group")
81
+ gateway(operation="sessions" type="private")
82
+ gateway(operation="sessions" type="group")
83
83
 
84
84
  # Contacts
85
- gateway_channel(operation="contacts" platform="telegram")
85
+ gateway(operation="contacts" platform="telegram")
86
86
 
87
87
  # Send - contactUid (private chat)
88
- gateway_channel(operation="send" contactUid="telegram:123456789" content="Hello!")
89
- gateway_channel(operation="send" contactUid="telegram:123456789" content="https://example.com/photo.jpg" messageType="image")
90
- gateway_channel(operation="send" contactUid="telegram:123456789" content="file:///path/to/document.pdf" messageType="file")
88
+ gateway(operation="send" contactUid="telegram:123456789" content="Hello!")
89
+ gateway(operation="send" contactUid="telegram:123456789" content="https://example.com/photo.jpg" messageType="image")
90
+ gateway(operation="send" contactUid="telegram:123456789" content="file:///path/to/document.pdf" messageType="file")
91
91
 
92
92
  # Send - sessionId (group chat)
93
- gateway_channel(operation="send" sessionId="telegram_telegram-main_-100123456_123456" content="Hello group!")
94
- gateway_channel(operation="send" sessionId="telegram_telegram-main_-100123456_123456" content="https://example.com/file.pdf" messageType="file")
95
- gateway_channel(operation="send" sessionId="telegram_telegram-main_-100123456_123456" content="file:///path/to/photo.jpg" messageType="image")
93
+ gateway(operation="send" sessionId="telegram_telegram-main_-100123456_123456" content="Hello group!")
94
+ gateway(operation="send" sessionId="telegram_telegram-main_-100123456_123456" content="https://example.com/file.pdf" messageType="file")
95
+ gateway(operation="send" sessionId="telegram_telegram-main_-100123456_123456" content="file:///path/to/photo.jpg" messageType="image")
96
96
  ```
97
97
 
98
98
  ## Error Handling
@@ -1,4 +1,4 @@
1
- import {a as a$3}from'./chunk-LAHYVX5K.mjs';import {a as a$4}from'./chunk-YCYECTVW.mjs';import'./chunk-VII7JKGB.mjs';import {g,e,d,k as k$1,i,b,h,c,a as a$5}from'./chunk-M3K32WJV.mjs';import {ob,Q,xa,Na}from'./chunk-MMN3J3YS.mjs';import'./chunk-ROHSYOEJ.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-TMAVGPNZ.mjs';import'./chunk-JCC3ZOI6.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import {a as a$2}from'./chunk-NQDXG75V.mjs';import'./chunk-47PBZEYM.mjs';import'./chunk-3P7JMESZ.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-RRQRZ6MW.mjs';import {a as a$1}from'./chunk-LFYBZHOI.mjs';import'./chunk-6M4SMEZK.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-X6ISXWBN.mjs';import'commander';import T from'path';var a=a$1.create({service:"cli-command-acp"});async function k(i,e){let t=await ob.getACPServerConfig();a.debug("Merging ACP configuration",{baseConfig:{channel:t.channel,port:t.port,hostname:t.hostname,timeout:t.timeout},cliOptions:{channel:e.channel,port:e.port,hostname:e.hostname,timeout:e.timeout}});let r={};if(e.channel!==void 0){let s=e.channel.toLowerCase();Object.values(Q).includes(s)?(r.channel=s,a.debug("CLI override: channel",{value:r.channel})):a.warn("Invalid channel type from command line",{value:e.channel});}if(e.port!==void 0&&(e.port>0&&e.port<=65535?(r.port=e.port,a.debug("CLI override: port",{value:r.port})):a.warn("Invalid port from command line",{value:e.port})),e.hostname!==void 0&&(r.hostname=e.hostname,a.debug("CLI override: hostname",{value:r.hostname})),e.timeout!==void 0&&(e.timeout>0?(r.timeout=e.timeout,a.debug("CLI override: timeout",{value:r.timeout})):a.warn("Invalid timeout from command line",{value:e.timeout})),e.hostname!==void 0||e.port!==void 0){let s=e.hostname??t.hostname??"127.0.0.1",l=e.port??t.port??3e3;t.ws&&(r.ws={...t.ws,url:`ws://${s}:${l}`}),t.http&&(r.http={...t.http,baseUrl:`http://${s}:${l}`}),a.debug("CLI override: ws.url and http.baseUrl updated",{hostname:e.hostname,port:e.port,wsUrl:r.ws?.url,httpBaseUrl:r.http?.baseUrl});}e.timeout!==void 0&&(r.ws||r.http)&&(r.ws&&(r.ws.timeout=e.timeout),r.http&&(r.http.timeout=e.timeout),a.debug("CLI override: ws.timeout and http.timeout updated",{timeout:e.timeout}));let c={...t,...r};return a.debug("Merged ACP configuration",{channel:c.channel,port:c.port,hostname:c.hostname,timeout:c.timeout}),c}async function O(i$1,e,t){a.info("Starting ACP service",{channel:e.channel,port:e.port,hostname:e.hostname,debug:t.config.debug}),await xa.init({directory:i$1,printLogs:t.config.print_logs,logLevel:t.config.log_level,channel:e.channel});await xa.ensureACPService(e);console.log(""),console.log(d(a$2("acp.server.started"))),console.log(k$1(60)),console.log(i(a$2("acp.field.directory"),i$1,15)),console.log(i(a$2("acp.field.worktree"),Na.project.worktree||"N/A",15)),console.log(i(a$2("acp.field.channel"),e.channel,15));let c$1=b();switch(e.channel){case "websocket":{let s,l="/";if(e.ws?.url)try{let p=new URL(e.ws.url),d=p.port||"3000",m=p.hostname;l=p.pathname||"/",s=`ws://${m}:${d}${l==="/"?"":l}`;}catch{s=e.ws.url;}else s=`ws://${e.hostname}:${e.port}`;console.log(i(a$2("acp.field.ws_url"),s,15)),console.log(i(a$2("acp.field.ws_path"),l,15)),e.ws?(console.log(h(a$2("acp.websocket.config"))),console.log(i(a$2("acp.field.timeout"),`${e.ws.timeout??e.timeout}ms`,15)),console.log(i(a$2("acp.field.batch_size"),`${e.ws.batchSize??10}`,15)),console.log(i(a$2("acp.field.batch_interval"),`${e.ws.batchInterval??50}ms`,15)),console.log(i(a$2("acp.field.heartbeat"),`${e.ws.heartbeatInterval??3e4}ms`,15))):console.log(i(a$2("acp.field.timeout"),`${e.timeout}ms`,15));break}case "http":e.http?.baseUrl?console.log(i(a$2("acp.field.base_url"),e.http.baseUrl,15)):console.log(i(a$2("acp.field.host"),`${e.hostname}:${e.port}`,15)),e.http?.timeout?console.log(i(a$2("acp.field.timeout"),`${e.http.timeout}ms`,15)):console.log(i(a$2("acp.field.timeout"),`${e.timeout}ms`,15));break;case "stdio":console.log(i(a$2("acp.field.mode"),a$2("acp.mode.stdio"),15)),console.log(i(a$2("acp.field.timeout"),`${e.timeout}ms`,15));break;case "local":console.log(i(a$2("acp.field.mode"),a$2("acp.mode.local"),15)),console.log(i(a$2("acp.field.protocol"),a$2("acp.protocol"),15)),console.log(i(a$2("acp.field.timeout"),`${e.timeout}ms`,15));break;default:console.log(i(a$2("acp.field.host"),`${e.hostname}:${e.port}`,15)),console.log(i(a$2("acp.field.timeout"),`${e.timeout}ms`,15));}console.log(i(a$2("acp.field.debug"),t.config.debug?c(c$1,a$5.success,a$2("common.enabled")):c(c$1,a$5.muted,a$2("common.disabled")),15)),console.log(k$1(60)),console.log(""),a.info("ACPServer started successfully"),x();}function x(){let i=process.env.EASBOT_RUN_MODE==="ephemeral"||!process.stdin.isTTY&&process.env.EASBOT_RUN_MODE!=="persistent",e=async t=>{a.debug(`Received ${t}, shutting down...`),i||console.log(`
1
+ import {a as a$3}from'./chunk-LAHYVX5K.mjs';import {a as a$4}from'./chunk-AP3ZZPEV.mjs';import'./chunk-VII7JKGB.mjs';import {g,e,d,k as k$1,i,b,h,c,a as a$5}from'./chunk-M3K32WJV.mjs';import {ob,Q,xa,Na}from'./chunk-KZLMEUTB.mjs';import'./chunk-7SGBJ5NP.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-I3VIJLPG.mjs';import'./chunk-TQNXBACI.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import {a as a$2}from'./chunk-NQDXG75V.mjs';import'./chunk-WT6HKW7N.mjs';import'./chunk-JEUEJB5B.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-QMJ4R4AL.mjs';import {a as a$1}from'./chunk-LFYBZHOI.mjs';import'./chunk-U4BAW7XF.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-X6ISXWBN.mjs';import'commander';import T from'path';var a=a$1.create({service:"cli-command-acp"});async function k(i,e){let t=await ob.getACPServerConfig();a.debug("Merging ACP configuration",{baseConfig:{channel:t.channel,port:t.port,hostname:t.hostname,timeout:t.timeout},cliOptions:{channel:e.channel,port:e.port,hostname:e.hostname,timeout:e.timeout}});let r={};if(e.channel!==void 0){let s=e.channel.toLowerCase();Object.values(Q).includes(s)?(r.channel=s,a.debug("CLI override: channel",{value:r.channel})):a.warn("Invalid channel type from command line",{value:e.channel});}if(e.port!==void 0&&(e.port>0&&e.port<=65535?(r.port=e.port,a.debug("CLI override: port",{value:r.port})):a.warn("Invalid port from command line",{value:e.port})),e.hostname!==void 0&&(r.hostname=e.hostname,a.debug("CLI override: hostname",{value:r.hostname})),e.timeout!==void 0&&(e.timeout>0?(r.timeout=e.timeout,a.debug("CLI override: timeout",{value:r.timeout})):a.warn("Invalid timeout from command line",{value:e.timeout})),e.hostname!==void 0||e.port!==void 0){let s=e.hostname??t.hostname??"127.0.0.1",l=e.port??t.port??3e3;t.ws&&(r.ws={...t.ws,url:`ws://${s}:${l}`}),t.http&&(r.http={...t.http,baseUrl:`http://${s}:${l}`}),a.debug("CLI override: ws.url and http.baseUrl updated",{hostname:e.hostname,port:e.port,wsUrl:r.ws?.url,httpBaseUrl:r.http?.baseUrl});}e.timeout!==void 0&&(r.ws||r.http)&&(r.ws&&(r.ws.timeout=e.timeout),r.http&&(r.http.timeout=e.timeout),a.debug("CLI override: ws.timeout and http.timeout updated",{timeout:e.timeout}));let c={...t,...r};return a.debug("Merged ACP configuration",{channel:c.channel,port:c.port,hostname:c.hostname,timeout:c.timeout}),c}async function O(i$1,e,t){a.info("Starting ACP service",{channel:e.channel,port:e.port,hostname:e.hostname,debug:t.config.debug}),await xa.init({directory:i$1,printLogs:t.config.print_logs,logLevel:t.config.log_level,channel:e.channel});await xa.ensureACPService(e);console.log(""),console.log(d(a$2("acp.server.started"))),console.log(k$1(60)),console.log(i(a$2("acp.field.directory"),i$1,15)),console.log(i(a$2("acp.field.worktree"),Na.project.worktree||"N/A",15)),console.log(i(a$2("acp.field.channel"),e.channel,15));let c$1=b();switch(e.channel){case "websocket":{let s,l="/";if(e.ws?.url)try{let p=new URL(e.ws.url),d=p.port||"3000",m=p.hostname;l=p.pathname||"/",s=`ws://${m}:${d}${l==="/"?"":l}`;}catch{s=e.ws.url;}else s=`ws://${e.hostname}:${e.port}`;console.log(i(a$2("acp.field.ws_url"),s,15)),console.log(i(a$2("acp.field.ws_path"),l,15)),e.ws?(console.log(h(a$2("acp.websocket.config"))),console.log(i(a$2("acp.field.timeout"),`${e.ws.timeout??e.timeout}ms`,15)),console.log(i(a$2("acp.field.batch_size"),`${e.ws.batchSize??10}`,15)),console.log(i(a$2("acp.field.batch_interval"),`${e.ws.batchInterval??50}ms`,15)),console.log(i(a$2("acp.field.heartbeat"),`${e.ws.heartbeatInterval??3e4}ms`,15))):console.log(i(a$2("acp.field.timeout"),`${e.timeout}ms`,15));break}case "http":e.http?.baseUrl?console.log(i(a$2("acp.field.base_url"),e.http.baseUrl,15)):console.log(i(a$2("acp.field.host"),`${e.hostname}:${e.port}`,15)),e.http?.timeout?console.log(i(a$2("acp.field.timeout"),`${e.http.timeout}ms`,15)):console.log(i(a$2("acp.field.timeout"),`${e.timeout}ms`,15));break;case "stdio":console.log(i(a$2("acp.field.mode"),a$2("acp.mode.stdio"),15)),console.log(i(a$2("acp.field.timeout"),`${e.timeout}ms`,15));break;case "local":console.log(i(a$2("acp.field.mode"),a$2("acp.mode.local"),15)),console.log(i(a$2("acp.field.protocol"),a$2("acp.protocol"),15)),console.log(i(a$2("acp.field.timeout"),`${e.timeout}ms`,15));break;default:console.log(i(a$2("acp.field.host"),`${e.hostname}:${e.port}`,15)),console.log(i(a$2("acp.field.timeout"),`${e.timeout}ms`,15));}console.log(i(a$2("acp.field.debug"),t.config.debug?c(c$1,a$5.success,a$2("common.enabled")):c(c$1,a$5.muted,a$2("common.disabled")),15)),console.log(k$1(60)),console.log(""),a.info("ACPServer started successfully"),x();}function x(){let i=process.env.EASBOT_RUN_MODE==="ephemeral"||!process.stdin.isTTY&&process.env.EASBOT_RUN_MODE!=="persistent",e=async t=>{a.debug(`Received ${t}, shutting down...`),i||console.log(`
2
2
  ${a$2("acp.shutdown.received",{vars:{signal:t}})}`);try{await xa.destroy(),a.debug("EasbotAdapter state destroyed"),i||console.log(d(a$2("acp.shutdown.completed")));}catch(r){a.error("Error during shutdown",{error:r instanceof Error?r.message:String(r)});}i?process.kill(process.pid,"SIGKILL"):process.exit(0);};process.on("SIGINT",()=>{e("SIGINT").catch(console.error);}),process.on("SIGTERM",()=>{e("SIGTERM").catch(console.error);}),process.stdout.on("error",t=>{(t.code==="EPIPE"||t.code==="EIO")&&(a.info("stdout pipe broken, exiting"),e("stdout-broken").catch(()=>{i?process.kill(process.pid,"SIGKILL"):process.exit(0);}));});}async function U(i,e$1,t){a.debug("ACP command executed",{options:e$1});let r=t?.config?.debug??false,c=t?.config?.print_logs??false,s=t?.config?.log_level??"INFO";a.debug("Global options from context",{debug:t?.config?.debug,print_logs:t?.config?.print_logs,log_level:t?.config?.log_level,isDebug:r,printLogs:c,logLevel:s});try{let l=t.config.directory?T.resolve(t.config.directory):process.cwd();a.debug("Working directory resolved",{directory:l});let p=a$3(l);if(!p.valid)throw a.error("Working directory validation failed",{directory:l,error:p.error}),new Error(`Invalid working directory: ${p.error}`);let d=p.normalizedPath;a.debug("Working directory validated",{validatedDirectory:d}),console.log(g(a$2("acp.directory.resolved",{vars:{cwd:d}}))),await a$4(d,async()=>{let m=await k(d,e$1);if(a.debug("ACP server configuration",{channel:m.channel,port:m.port,hostname:m.hostname,timeout:m.timeout,enabled:m.enabled}),!m.enabled){a.warn("ACP server is disabled by configuration"),console.log(g(a$2("acp.disabled")));return}await O(d,m,t),a.info("ACP server started successfully");});}catch(l){a.error("Failed to start ACP server",{error:l instanceof Error?l.message:String(l)}),console.error(e(a$2("acp.error.start_failed",{vars:{error:l instanceof Error?l.message:String(l)}}))),process.exit(1);}}function le(i,e){let t=i.command("acp").description(a$2("acp.command.description")).addHelpText("after",`
3
3
 
4
4
  ${a$2("acp.help.examples")}
@@ -0,0 +1 @@
1
+ export{U as getACPClientsConfig,T as getACPServerConfig,X as getAcpAgentName,V as getAcpAgentRuntimeConfig,W as getAcpModelConfig,S as loadACPConfig}from'./chunk-KZLMEUTB.mjs';import'./chunk-7SGBJ5NP.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-I3VIJLPG.mjs';import'./chunk-TQNXBACI.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import'./chunk-NQDXG75V.mjs';import'./chunk-WT6HKW7N.mjs';import'./chunk-JEUEJB5B.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-QMJ4R4AL.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-U4BAW7XF.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-X6ISXWBN.mjs';
@@ -1 +1 @@
1
- import {e}from'./chunk-M3K32WJV.mjs';import {j,fa,k,La}from'./chunk-MMN3J3YS.mjs';import'./chunk-ROHSYOEJ.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-TMAVGPNZ.mjs';import'./chunk-JCC3ZOI6.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import {a as a$1}from'./chunk-NQDXG75V.mjs';import'./chunk-47PBZEYM.mjs';import'./chunk-3P7JMESZ.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-RRQRZ6MW.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import'./chunk-6M4SMEZK.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-X6ISXWBN.mjs';import {basename}from'path';import {iife,Identifier}from'@easbot/utils';var D=a.create({service:"debug.agent"});function z(r,o,e$1){(async()=>{D.debug("Getting agent info",{agentName:o});let t=(await r.sdk.agent.get({agentID:o})).data;t||(console.error(e(a$1("debug.agent.error.not_found",{vars:{agentName:o,command:basename(process.execPath)}}))),process.exit(1));let a=t,d=await C(a),i=await P(a,d);if(e$1.tool){let c=d.find(A=>A.id===e$1.tool);c||(console.error(e(a$1("debug.agent.tool.error.not_found",{vars:{toolID:e$1.tool,agentName:o}}))),process.exit(1)),i[e$1.tool]===false&&(console.error(e(a$1("debug.agent.tool.error.disabled",{vars:{toolID:e$1.tool,agentName:o}}))),process.exit(1));let g=T(e$1.params),b=await E(a,r);D.debug("Executing tool",{toolID:e$1.tool,params:g});let y=await c.execute(g,b);console.log(JSON.stringify({tool:e$1.tool,input:g,result:y},null,2));return}let m={...t,tools:i};console.log(JSON.stringify(m,null,2));})();}async function C(r){let o=r.model??await j.defaultModel();return o.providerID||(o={...o,providerID:"default-provider"}),fa.tools(o,r)}async function P(r,o){let e=k.disabled(o.map(t=>t.id),r.permission),s={};for(let t of o)s[t.id]=!e.has(t.id);return s}function T(r){if(!r)return {};let o=r.trim();if(o.length===0)return {};let e=iife(()=>{try{return JSON.parse(o)}catch(s){try{return new Function(`return (${o})`)()}catch(t){throw new Error(a$1("debug.agent.tool.params.parse_error",{vars:{jsonError:s,evalError:t}}))}}});if(!e||typeof e!="object"||Array.isArray(e))throw new Error(a$1("debug.agent.tool.params.must_be_object"));return e}async function E(r,o){let e=await La.create({title:`Debug tool run (${r.name})`}),s=Identifier.ascending("message"),t=r.model??await j.defaultModel();t.providerID||(t={...t,providerID:t.providerID||"default-provider"});let a=Date.now(),d={id:s,sessionID:e.id,role:"assistant",time:{created:a},parentID:s,modelID:t.modelID,providerID:t.providerID,mode:"debug",agent:r.name,path:{cwd:o.config.directory,root:o.config.worktree},cost:0,tokens:{input:0,output:0,reasoning:0,cache:{read:0,write:0}}};await La.updateMessage(d);let i=k.merge(r.permission,e.permission??[]);return {sessionID:e.id,messageID:s,callID:Identifier.ascending("part"),agent:r.name,abort:new AbortController().signal,messages:[],metadata:()=>{},async ask(m){for(let c of m.patterns)if(k.evaluate(m.permission,c,i).action==="deny")throw new k.DeniedError(i)}}}export{z as registerAgentCommand};
1
+ import {e}from'./chunk-M3K32WJV.mjs';import {j,fa,k,La}from'./chunk-KZLMEUTB.mjs';import'./chunk-7SGBJ5NP.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-I3VIJLPG.mjs';import'./chunk-TQNXBACI.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import {a as a$1}from'./chunk-NQDXG75V.mjs';import'./chunk-WT6HKW7N.mjs';import'./chunk-JEUEJB5B.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-QMJ4R4AL.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import'./chunk-U4BAW7XF.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-X6ISXWBN.mjs';import {basename}from'path';import {iife,Identifier}from'@easbot/utils';var D=a.create({service:"debug.agent"});function z(r,o,e$1){(async()=>{D.debug("Getting agent info",{agentName:o});let t=(await r.sdk.agent.get({agentID:o})).data;t||(console.error(e(a$1("debug.agent.error.not_found",{vars:{agentName:o,command:basename(process.execPath)}}))),process.exit(1));let a=t,d=await C(a),i=await P(a,d);if(e$1.tool){let c=d.find(A=>A.id===e$1.tool);c||(console.error(e(a$1("debug.agent.tool.error.not_found",{vars:{toolID:e$1.tool,agentName:o}}))),process.exit(1)),i[e$1.tool]===false&&(console.error(e(a$1("debug.agent.tool.error.disabled",{vars:{toolID:e$1.tool,agentName:o}}))),process.exit(1));let g=T(e$1.params),b=await E(a,r);D.debug("Executing tool",{toolID:e$1.tool,params:g});let y=await c.execute(g,b);console.log(JSON.stringify({tool:e$1.tool,input:g,result:y},null,2));return}let m={...t,tools:i};console.log(JSON.stringify(m,null,2));})();}async function C(r){let o=r.model??await j.defaultModel();return o.providerID||(o={...o,providerID:"default-provider"}),fa.tools(o,r)}async function P(r,o){let e=k.disabled(o.map(t=>t.id),r.permission),s={};for(let t of o)s[t.id]=!e.has(t.id);return s}function T(r){if(!r)return {};let o=r.trim();if(o.length===0)return {};let e=iife(()=>{try{return JSON.parse(o)}catch(s){try{return new Function(`return (${o})`)()}catch(t){throw new Error(a$1("debug.agent.tool.params.parse_error",{vars:{jsonError:s,evalError:t}}))}}});if(!e||typeof e!="object"||Array.isArray(e))throw new Error(a$1("debug.agent.tool.params.must_be_object"));return e}async function E(r,o){let e=await La.create({title:`Debug tool run (${r.name})`}),s=Identifier.ascending("message"),t=r.model??await j.defaultModel();t.providerID||(t={...t,providerID:t.providerID||"default-provider"});let a=Date.now(),d={id:s,sessionID:e.id,role:"assistant",time:{created:a},parentID:s,modelID:t.modelID,providerID:t.providerID,mode:"debug",agent:r.name,path:{cwd:o.config.directory,root:o.config.worktree},cost:0,tokens:{input:0,output:0,reasoning:0,cache:{read:0,write:0}}};await La.updateMessage(d);let i=k.merge(r.permission,e.permission??[]);return {sessionID:e.id,messageID:s,callID:Identifier.ascending("part"),agent:r.name,abort:new AbortController().signal,messages:[],metadata:()=>{},async ask(m){for(let c of m.patterns)if(k.evaluate(m.permission,c,i).action==="deny")throw new k.DeniedError(i)}}}export{z as registerAgentCommand};
@@ -1 +1 @@
1
- import {a as a$4}from'./chunk-TYD2M4SP.mjs';import'./chunk-FXOUIXIL.mjs';import {a as a$3}from'./chunk-YCYECTVW.mjs';import'./chunk-CQVEAYYW.mjs';import {l,d,e,h,i,b,c,a as a$5}from'./chunk-M3K32WJV.mjs';import'./chunk-MMN3J3YS.mjs';import'./chunk-ROHSYOEJ.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-TMAVGPNZ.mjs';import'./chunk-JCC3ZOI6.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import {a as a$2}from'./chunk-NQDXG75V.mjs';import'./chunk-47PBZEYM.mjs';import'./chunk-3P7JMESZ.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-RRQRZ6MW.mjs';import {a as a$1}from'./chunk-LFYBZHOI.mjs';import'./chunk-6M4SMEZK.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-X6ISXWBN.mjs';var a=a$1.create({service:"cli-command-agent"});function W(C,c$1){let y=C.command("agent").description(a$2("agent.command.description"));y.command("list").description(a$2("agent.command.list.description")).action(async()=>{await a$3(c$1.config.directory,async()=>{try{a.debug("Listing agents");let{data:o}=await c$1.sdk.app.agents({});if(!o||o.length===0){console.log(l(a$2("agent.list.empty")));return}let r=[...o].sort((n,t)=>{let g="native"in n&&n.native,d="native"in t&&t.native;return g!==d?g?-1:1:n.name.localeCompare(t.name)});console.log(d(a$2("agent.list.success",{vars:{count:o.length}}))),console.log(""),console.log(a$4({columns:[{key:"name",header:a$2("agent.table.header.name"),minWidth:15},{key:"mode",header:a$2("agent.table.header.mode"),minWidth:10},{key:"native",header:a$2("agent.table.header.native"),minWidth:8}],rows:r.map(n=>({name:n.name,mode:"mode"in n&&n.mode||"primary",native:"native"in n&&n.native?a$2("common.yes"):a$2("common.no")})),width:process.stdout.columns||80,border:"unicode"})),a.debug("Agent list displayed",{count:o.length});}catch(o){a.error("Failed to list agents",{error:o instanceof Error?o.message:String(o)}),console.error(e(a$2("agent.list.error"))),process.exit(1);}});}),y.command("info <agent-id>").description(a$2("agent.command.info.description")).action(async o=>{await a$3(c$1.config.directory,async()=>{try{a.debug("Getting agent info",{agentId:o});let{data:r}=await c$1.sdk.app.agents({}),n=r?.find(t=>t.name===o);if(n||(console.error(e(a$2("agent.get.not_found",{vars:{agentId:o}}))),process.exit(1)),console.log(d(a$2("agent.get.success"))),console.log(""),console.log(h(a$2("agent.info.heading"))),console.log(""),console.log(i(a$2("agent.info.field.name")+":",n.name)),console.log(i(a$2("agent.info.field.mode")+":","mode"in n&&n.mode||"primary")),console.log(i(a$2("agent.info.field.native")+":","native"in n&&n.native?a$2("common.yes"):a$2("common.no"))),"permission"in n&&n.permission){console.log(i(a$2("agent.info.field.permission")+":",""));let t=b();console.log(c(t,a$5.muted,JSON.stringify(n.permission,null,2)));}a.debug("Agent info displayed",{agentId:o});}catch(r){a.error("Failed to get agent info",{agentId:o,error:r instanceof Error?r.message:String(r)}),console.error(e(a$2("agent.get.error"))),process.exit(1);}});}),y.command("create").description(a$2("agent.command.create.description")).requiredOption("--name <name>",a$2("agent.command.create.option.name")).option("--mode <mode>",a$2("agent.command.create.option.mode"),"chat").option("--permission <json>",a$2("agent.command.create.option.permission")).action(async o=>{await a$3(c$1.config.directory,async()=>{try{a.debug("Creating agent",{name:o.name,mode:o.mode}),console.log(h(a$2("agent.create.begin")));let{validateAgentName:r,validateAgentMode:n,validateJsonString:t}=await import('./input-validation-FWKKVCYC.mjs');r(o.name)||(a.error("Invalid agent name",{name:o.name}),console.error(e(a$2("agent.create.validation.name"))),process.exit(1));let g=o.mode||"primary";n(g)||(a.error("Invalid agent mode",{mode:o.mode}),console.error(e(a$2("agent.create.validation.mode"))),process.exit(1));let d$1;if(o.permission){let l=t(o.permission,"permission");l||(a.error("Invalid permission JSON format",{permission:o.permission}),console.error(e(a$2("agent.create.error",{vars:{error:"Invalid permission JSON format"}}))),process.exit(1)),d$1=l;}let{data:m}=await c$1.sdk.agent.create({name:o.name,mode:g,permission:d$1});if(m||(console.error(e(a$2("agent.create.error",{vars:{error:"Agent creation failed"}}))),process.exit(1)),console.log(d(a$2("agent.create.success",{vars:{name:m.name}}))),console.log(""),console.log(h(a$2("agent.info.heading"))),console.log(""),console.log(i(a$2("agent.info.field.name")+":",m.name)),console.log(i(a$2("agent.info.field.mode")+":",m.mode??"all")),console.log(i(a$2("agent.info.field.native")+":",m.native?a$2("common.yes"):a$2("common.no"))),m.permission){console.log(i(a$2("agent.info.field.permission")+":",""));let l=b();console.log(c(l,a$5.muted,JSON.stringify(m.permission,null,2)));}a.debug("Agent created successfully",{name:m.name});}catch(r){a.error("Failed to create agent",{name:o.name,error:r instanceof Error?r.message:String(r)}),console.error(e(a$2("agent.create.error",{vars:{error:r instanceof Error?r.message:String(r)}}))),process.exit(1);}});});}export{W as registerAgentCommands};
1
+ import {a as a$4}from'./chunk-TYD2M4SP.mjs';import'./chunk-FXOUIXIL.mjs';import {a as a$3}from'./chunk-AP3ZZPEV.mjs';import'./chunk-CQVEAYYW.mjs';import {l,d,e,h,i,b,c,a as a$5}from'./chunk-M3K32WJV.mjs';import'./chunk-KZLMEUTB.mjs';import'./chunk-7SGBJ5NP.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-I3VIJLPG.mjs';import'./chunk-TQNXBACI.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import {a as a$2}from'./chunk-NQDXG75V.mjs';import'./chunk-WT6HKW7N.mjs';import'./chunk-JEUEJB5B.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-QMJ4R4AL.mjs';import {a as a$1}from'./chunk-LFYBZHOI.mjs';import'./chunk-U4BAW7XF.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-X6ISXWBN.mjs';var a=a$1.create({service:"cli-command-agent"});function W(C,c$1){let y=C.command("agent").description(a$2("agent.command.description"));y.command("list").description(a$2("agent.command.list.description")).action(async()=>{await a$3(c$1.config.directory,async()=>{try{a.debug("Listing agents");let{data:o}=await c$1.sdk.app.agents({});if(!o||o.length===0){console.log(l(a$2("agent.list.empty")));return}let r=[...o].sort((n,t)=>{let g="native"in n&&n.native,d="native"in t&&t.native;return g!==d?g?-1:1:n.name.localeCompare(t.name)});console.log(d(a$2("agent.list.success",{vars:{count:o.length}}))),console.log(""),console.log(a$4({columns:[{key:"name",header:a$2("agent.table.header.name"),minWidth:15},{key:"mode",header:a$2("agent.table.header.mode"),minWidth:10},{key:"native",header:a$2("agent.table.header.native"),minWidth:8}],rows:r.map(n=>({name:n.name,mode:"mode"in n&&n.mode||"primary",native:"native"in n&&n.native?a$2("common.yes"):a$2("common.no")})),width:process.stdout.columns||80,border:"unicode"})),a.debug("Agent list displayed",{count:o.length});}catch(o){a.error("Failed to list agents",{error:o instanceof Error?o.message:String(o)}),console.error(e(a$2("agent.list.error"))),process.exit(1);}});}),y.command("info <agent-id>").description(a$2("agent.command.info.description")).action(async o=>{await a$3(c$1.config.directory,async()=>{try{a.debug("Getting agent info",{agentId:o});let{data:r}=await c$1.sdk.app.agents({}),n=r?.find(t=>t.name===o);if(n||(console.error(e(a$2("agent.get.not_found",{vars:{agentId:o}}))),process.exit(1)),console.log(d(a$2("agent.get.success"))),console.log(""),console.log(h(a$2("agent.info.heading"))),console.log(""),console.log(i(a$2("agent.info.field.name")+":",n.name)),console.log(i(a$2("agent.info.field.mode")+":","mode"in n&&n.mode||"primary")),console.log(i(a$2("agent.info.field.native")+":","native"in n&&n.native?a$2("common.yes"):a$2("common.no"))),"permission"in n&&n.permission){console.log(i(a$2("agent.info.field.permission")+":",""));let t=b();console.log(c(t,a$5.muted,JSON.stringify(n.permission,null,2)));}a.debug("Agent info displayed",{agentId:o});}catch(r){a.error("Failed to get agent info",{agentId:o,error:r instanceof Error?r.message:String(r)}),console.error(e(a$2("agent.get.error"))),process.exit(1);}});}),y.command("create").description(a$2("agent.command.create.description")).requiredOption("--name <name>",a$2("agent.command.create.option.name")).option("--mode <mode>",a$2("agent.command.create.option.mode"),"chat").option("--permission <json>",a$2("agent.command.create.option.permission")).action(async o=>{await a$3(c$1.config.directory,async()=>{try{a.debug("Creating agent",{name:o.name,mode:o.mode}),console.log(h(a$2("agent.create.begin")));let{validateAgentName:r,validateAgentMode:n,validateJsonString:t}=await import('./input-validation-FWKKVCYC.mjs');r(o.name)||(a.error("Invalid agent name",{name:o.name}),console.error(e(a$2("agent.create.validation.name"))),process.exit(1));let g=o.mode||"primary";n(g)||(a.error("Invalid agent mode",{mode:o.mode}),console.error(e(a$2("agent.create.validation.mode"))),process.exit(1));let d$1;if(o.permission){let l=t(o.permission,"permission");l||(a.error("Invalid permission JSON format",{permission:o.permission}),console.error(e(a$2("agent.create.error",{vars:{error:"Invalid permission JSON format"}}))),process.exit(1)),d$1=l;}let{data:m}=await c$1.sdk.agent.create({name:o.name,mode:g,permission:d$1});if(m||(console.error(e(a$2("agent.create.error",{vars:{error:"Agent creation failed"}}))),process.exit(1)),console.log(d(a$2("agent.create.success",{vars:{name:m.name}}))),console.log(""),console.log(h(a$2("agent.info.heading"))),console.log(""),console.log(i(a$2("agent.info.field.name")+":",m.name)),console.log(i(a$2("agent.info.field.mode")+":",m.mode??"all")),console.log(i(a$2("agent.info.field.native")+":",m.native?a$2("common.yes"):a$2("common.no"))),m.permission){console.log(i(a$2("agent.info.field.permission")+":",""));let l=b();console.log(c(l,a$5.muted,JSON.stringify(m.permission,null,2)));}a.debug("Agent created successfully",{name:m.name});}catch(r){a.error("Failed to create agent",{name:o.name,error:r instanceof Error?r.message:String(r)}),console.error(e(a$2("agent.create.error",{vars:{error:r instanceof Error?r.message:String(r)}}))),process.exit(1);}});});}export{W as registerAgentCommands};
@@ -0,0 +1 @@
1
+ export{h as createTuiApp,g as getGlobalErrorHandler,e as registerGlobalErrorHandler,f as unregisterGlobalErrorHandler}from'./chunk-3VYIQTJ7.mjs';import'./chunk-CQVEAYYW.mjs';import'./chunk-KZLMEUTB.mjs';import'./chunk-7SGBJ5NP.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-I3VIJLPG.mjs';import'./chunk-TQNXBACI.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import'./chunk-NQDXG75V.mjs';import'./chunk-WT6HKW7N.mjs';import'./chunk-JEUEJB5B.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-QMJ4R4AL.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-U4BAW7XF.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-X6ISXWBN.mjs';
@@ -0,0 +1 @@
1
+ export{a as bootstrap,b as bootstrapProgram}from'./chunk-AP3ZZPEV.mjs';import'./chunk-KZLMEUTB.mjs';import'./chunk-7SGBJ5NP.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-I3VIJLPG.mjs';import'./chunk-TQNXBACI.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import'./chunk-NQDXG75V.mjs';import'./chunk-WT6HKW7N.mjs';import'./chunk-JEUEJB5B.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-QMJ4R4AL.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-U4BAW7XF.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-X6ISXWBN.mjs';
@@ -1,4 +1,4 @@
1
- import {b as b$1}from'./chunk-6JRVLYTU.mjs';import {a as a$1}from'./chunk-XPF2LJT2.mjs';import {Na,va}from'./chunk-MMN3J3YS.mjs';import'./chunk-ROHSYOEJ.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-TMAVGPNZ.mjs';import'./chunk-JCC3ZOI6.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import {a as a$2}from'./chunk-NQDXG75V.mjs';import'./chunk-47PBZEYM.mjs';import {b as b$2}from'./chunk-3P7JMESZ.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-RRQRZ6MW.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import'./chunk-6M4SMEZK.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-X6ISXWBN.mjs';import {Command}from'commander';import'path';import O from'fs/promises';import {parse}from'jsonc-parser';var y="easbot",h="EASBot - Multi-Agent Collaboration Ecosystem CLI Tool",P="build",x=["main","ops","explorer"];var b=a.create({service:"cli-config"});async function N(n){try{let o=await O.readFile(n,"utf-8");return parse(o)||{}}catch(o){if(o&&typeof o=="object"&&"code"in o){if(o.code==="ENOENT")return {};b.warn("Failed to read config file",{filePath:n,error:o.code});}else b.error("Failed to parse config file",{filePath:n,error:o instanceof Error?o.message:String(o)});return {}}}function T(...n){let o={};for(let t of n)for(let[e,i]of Object.entries(t))i!==void 0&&(typeof i=="object"&&!Array.isArray(i)&&i!==null?o[e]={...o[e],...i}:o[e]=i);return o}function k(){return {server:{port:3e3,hostname:"localhost"},agent:{},model:{},permission:{}}}async function w(n={}){let{cwd:o=process.cwd(),customConfigPath:t}=n,e=k();if(n.sdk)try{let{data:i}=await n.sdk.config.get({});i&&(e=i);}catch{}if(t){let i=await N(t);Object.keys(i).length>0&&(e=T(e,i));}return e.directory=o,e}async function A(n={}){let o=n.cwd||process.cwd(),t=n.root||Na.worktree,e=va({directory:o}),i=await w({cwd:o,root:t,sdk:e,customConfigPath:n.customConfigPath});return {programVersion:b$2.getVersion(),channelOptions:["local","web","api"],agentOptions:`${i.default_agent||P}|${x.join("|")}`,config:i,sdk:e}}var j=[{commands:[{name:"tui",description:"\u542F\u52A8 TUI \u754C\u9762",hasSubcommands:false}],register:async({program:n,ctx:o})=>{(await import('./tui-YDIPDB2Q.mjs')).registerTuiCommand(n,o);}},{commands:[{name:"run",description:"\u8FD0\u884C\u5355\u6B21\u5BF9\u8BDD",hasSubcommands:false}],register:async({program:n,ctx:o})=>{(await import('./run-3YPI6XKG.mjs')).registerRunCommand(n,o);}},{commands:[{name:"generate",description:"\u751F\u6210 OpenAPI \u89C4\u8303",hasSubcommands:false}],register:async({program:n,ctx:o})=>{(await import('./generate-ATBLMTBG.mjs')).registerGenerateCommand(n,o);}},{commands:[{name:"agent",description:"Agent \u7BA1\u7406\u547D\u4EE4",hasSubcommands:true}],register:async({program:n,ctx:o})=>{(await import('./agent-52URJRBC.mjs')).registerAgentCommands(n,o);}},{commands:[{name:"session",description:"\u4F1A\u8BDD\u7BA1\u7406\u547D\u4EE4",hasSubcommands:true}],register:async({program:n,ctx:o})=>{let{registerSessionCommands:t}=await import('./session-4MTNN2T4.mjs');t(n,o);}},{commands:[{name:"mcp",description:"MCP \u670D\u52A1\u5668\u7BA1\u7406",hasSubcommands:true}],register:async({program:n,ctx:o})=>{(await import('./mcp-WVQBQVTR.mjs')).registerMcpCommands(n,o);}},{commands:[{name:"acp",description:"ACP Agent \u901A\u4FE1\u9002\u914D\u5668\u547D\u4EE4",hasSubcommands:true}],register:async({program:n,ctx:o})=>{(await import('./acp-7YXFQ45K.mjs')).registerAcpCommand(n,o);}},{commands:[{name:"debug",description:"\u8C03\u8BD5\u548C\u8BCA\u65AD\u5DE5\u5177",hasSubcommands:true}],register:async({program:n,ctx:o})=>{(await import('./debug-UKX4WQ3F.mjs')).registerDebugCommands(n,o);}},{commands:[{name:"gateway",description:"Gateway \u670D\u52A1\u7BA1\u7406\u547D\u4EE4",hasSubcommands:true}],register:async({program:n,ctx:o})=>{(await import('./gateway-WMMPUO46.mjs')).registerGatewayCommand(n,o);}},{commands:[{name:"auth",description:"Provider \u51ED\u636E\u7BA1\u7406",hasSubcommands:true}],register:async({program:n,ctx:o})=>{(await import('./auth-DHIUZUBT.mjs')).registerAuthCommand(n,o);}},{commands:[{name:"export",description:"\u5BFC\u51FA\u4F1A\u8BDD\u6570\u636E",hasSubcommands:false}],register:async({program:n,ctx:o})=>{(await import('./export-I4GL3OUG.mjs')).registerExportCommand(n,o);}},{commands:[{name:"github",description:"GitHub Agent \u7BA1\u7406",hasSubcommands:true}],register:async({program:n,ctx:o})=>{(await import('./github-VDDFKDCK.mjs')).registerGithubCommand(n,o);}},{commands:[{name:"import",description:"\u5BFC\u5165\u4F1A\u8BDD\u6570\u636E",hasSubcommands:false}],register:async({program:n,ctx:o})=>{(await import('./import-JXNBDWIF.mjs')).registerImportCommand(n,o);}},{commands:[{name:"pr",description:"PR \u68C0\u51FA\u548C\u4F1A\u8BDD\u5BFC\u5165",hasSubcommands:false}],register:async({program:n,ctx:o})=>{(await import('./pr-NLGAGRR2.mjs')).registerPrCommand(n,o);}},{commands:[{name:"stats",description:"Token \u4F7F\u7528\u91CF\u548C\u6210\u672C\u7EDF\u8BA1",hasSubcommands:false}],register:async({program:n,ctx:o})=>{(await import('./stats-KXJDFVQY.mjs')).registerStatsCommand(n,o);}},{commands:[{name:"update",description:"\u66F4\u65B0 Easbot CLI",hasSubcommands:false}],register:async({program:n,ctx:o})=>{(await import('./update-K6SAKANZ.mjs')).registerUpdateCommand(n,o);}}];async function B(n,o,t=process.argv){for(let e of j)await e.register({program:n,ctx:o,argv:t});}async function v(n,o,t=process.argv){await B(n,o,t);}function L(n,o){n.name(a$2("program.name")).description(a$2("program.description")),n.option("--cwd <directory>",a$2("program.option.cwd"),process.cwd()),n.option("--config <path>",a$2("program.option.config")),n.option("--print-logs",a$2("program.option.print_logs")),n.option("--log-level <level>",a$2("program.option.log_level"),"INFO"),n.option("--debug",a$2("program.option.debug")),n.helpOption("-h, --help",a$2("program.help.option")),n.helpCommand("help [command]",a$2("program.help.command")),n.configureHelp({sortSubcommands:true,sortOptions:true,optionTerm:t=>t.flags,subcommandTerm:t=>t.name()}),n.configureOutput({writeOut:t=>{process.stdout.write(E(t));},writeErr:t=>{process.stderr.write(E(t));},outputError:(t,e)=>{e(t);}}),n.addHelpText("afterAll",({command:t})=>t!==n?"":`
1
+ import {b as b$1}from'./chunk-IXVWBJIE.mjs';import {a as a$1}from'./chunk-XPF2LJT2.mjs';import {Na,va}from'./chunk-KZLMEUTB.mjs';import'./chunk-7SGBJ5NP.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-I3VIJLPG.mjs';import'./chunk-TQNXBACI.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import {a as a$2}from'./chunk-NQDXG75V.mjs';import'./chunk-WT6HKW7N.mjs';import {b as b$2}from'./chunk-JEUEJB5B.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-QMJ4R4AL.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import'./chunk-U4BAW7XF.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-X6ISXWBN.mjs';import {Command}from'commander';import'path';import O from'fs/promises';import {parse}from'jsonc-parser';var y="easbot",h="EASBot - Multi-Agent Collaboration Ecosystem CLI Tool",P="build",x=["main","ops","explorer"];var b=a.create({service:"cli-config"});async function N(n){try{let o=await O.readFile(n,"utf-8");return parse(o)||{}}catch(o){if(o&&typeof o=="object"&&"code"in o){if(o.code==="ENOENT")return {};b.warn("Failed to read config file",{filePath:n,error:o.code});}else b.error("Failed to parse config file",{filePath:n,error:o instanceof Error?o.message:String(o)});return {}}}function T(...n){let o={};for(let t of n)for(let[e,i]of Object.entries(t))i!==void 0&&(typeof i=="object"&&!Array.isArray(i)&&i!==null?o[e]={...o[e],...i}:o[e]=i);return o}function k(){return {server:{port:3e3,hostname:"localhost"},agent:{},model:{},permission:{}}}async function w(n={}){let{cwd:o=process.cwd(),customConfigPath:t}=n,e=k();if(n.sdk)try{let{data:i}=await n.sdk.config.get({});i&&(e=i);}catch{}if(t){let i=await N(t);Object.keys(i).length>0&&(e=T(e,i));}return e.directory=o,e}async function A(n={}){let o=n.cwd||process.cwd(),t=n.root||Na.worktree,e=va({directory:o}),i=await w({cwd:o,root:t,sdk:e,customConfigPath:n.customConfigPath});return {programVersion:b$2.getVersion(),channelOptions:["local","web","api"],agentOptions:`${i.default_agent||P}|${x.join("|")}`,config:i,sdk:e}}var j=[{commands:[{name:"tui",description:"\u542F\u52A8 TUI \u754C\u9762",hasSubcommands:false}],register:async({program:n,ctx:o})=>{(await import('./tui-Y3HZ4TPR.mjs')).registerTuiCommand(n,o);}},{commands:[{name:"run",description:"\u8FD0\u884C\u5355\u6B21\u5BF9\u8BDD",hasSubcommands:false}],register:async({program:n,ctx:o})=>{(await import('./run-IO45RQPY.mjs')).registerRunCommand(n,o);}},{commands:[{name:"generate",description:"\u751F\u6210 OpenAPI \u89C4\u8303",hasSubcommands:false}],register:async({program:n,ctx:o})=>{(await import('./generate-KTY277XK.mjs')).registerGenerateCommand(n,o);}},{commands:[{name:"agent",description:"Agent \u7BA1\u7406\u547D\u4EE4",hasSubcommands:true}],register:async({program:n,ctx:o})=>{(await import('./agent-TMTKXGO5.mjs')).registerAgentCommands(n,o);}},{commands:[{name:"session",description:"\u4F1A\u8BDD\u7BA1\u7406\u547D\u4EE4",hasSubcommands:true}],register:async({program:n,ctx:o})=>{let{registerSessionCommands:t}=await import('./session-C5EPZY5K.mjs');t(n,o);}},{commands:[{name:"mcp",description:"MCP \u670D\u52A1\u5668\u7BA1\u7406",hasSubcommands:true}],register:async({program:n,ctx:o})=>{(await import('./mcp-QLI6EI3R.mjs')).registerMcpCommands(n,o);}},{commands:[{name:"acp",description:"ACP Agent \u901A\u4FE1\u9002\u914D\u5668\u547D\u4EE4",hasSubcommands:true}],register:async({program:n,ctx:o})=>{(await import('./acp-NOH5UGDP.mjs')).registerAcpCommand(n,o);}},{commands:[{name:"debug",description:"\u8C03\u8BD5\u548C\u8BCA\u65AD\u5DE5\u5177",hasSubcommands:true}],register:async({program:n,ctx:o})=>{(await import('./debug-J5RTJUKH.mjs')).registerDebugCommands(n,o);}},{commands:[{name:"gateway",description:"Gateway \u670D\u52A1\u7BA1\u7406\u547D\u4EE4",hasSubcommands:true}],register:async({program:n,ctx:o})=>{(await import('./gateway-H7SBUORZ.mjs')).registerGatewayCommand(n,o);}},{commands:[{name:"auth",description:"Provider \u51ED\u636E\u7BA1\u7406",hasSubcommands:true}],register:async({program:n,ctx:o})=>{(await import('./auth-DHIUZUBT.mjs')).registerAuthCommand(n,o);}},{commands:[{name:"export",description:"\u5BFC\u51FA\u4F1A\u8BDD\u6570\u636E",hasSubcommands:false}],register:async({program:n,ctx:o})=>{(await import('./export-I4GL3OUG.mjs')).registerExportCommand(n,o);}},{commands:[{name:"github",description:"GitHub Agent \u7BA1\u7406",hasSubcommands:true}],register:async({program:n,ctx:o})=>{(await import('./github-JLFW4AJU.mjs')).registerGithubCommand(n,o);}},{commands:[{name:"import",description:"\u5BFC\u5165\u4F1A\u8BDD\u6570\u636E",hasSubcommands:false}],register:async({program:n,ctx:o})=>{(await import('./import-E46ADPOS.mjs')).registerImportCommand(n,o);}},{commands:[{name:"pr",description:"PR \u68C0\u51FA\u548C\u4F1A\u8BDD\u5BFC\u5165",hasSubcommands:false}],register:async({program:n,ctx:o})=>{(await import('./pr-FAF6WBPN.mjs')).registerPrCommand(n,o);}},{commands:[{name:"stats",description:"Token \u4F7F\u7528\u91CF\u548C\u6210\u672C\u7EDF\u8BA1",hasSubcommands:false}],register:async({program:n,ctx:o})=>{(await import('./stats-KXJDFVQY.mjs')).registerStatsCommand(n,o);}},{commands:[{name:"update",description:"\u66F4\u65B0 Easbot CLI",hasSubcommands:false}],register:async({program:n,ctx:o})=>{(await import('./update-TMILGQ45.mjs')).registerUpdateCommand(n,o);}}];async function B(n,o,t=process.argv){for(let e of j)await e.register({program:n,ctx:o,argv:t});}async function v(n,o,t=process.argv){await B(n,o,t);}function L(n,o){n.name(a$2("program.name")).description(a$2("program.description")),n.option("--cwd <directory>",a$2("program.option.cwd"),process.cwd()),n.option("--config <path>",a$2("program.option.config")),n.option("--print-logs",a$2("program.option.print_logs")),n.option("--log-level <level>",a$2("program.option.log_level"),"INFO"),n.option("--debug",a$2("program.option.debug")),n.helpOption("-h, --help",a$2("program.help.option")),n.helpCommand("help [command]",a$2("program.help.command")),n.configureHelp({sortSubcommands:true,sortOptions:true,optionTerm:t=>t.flags,subcommandTerm:t=>t.name()}),n.configureOutput({writeOut:t=>{process.stdout.write(E(t));},writeErr:t=>{process.stderr.write(E(t));},outputError:(t,e)=>{e(t);}}),n.addHelpText("afterAll",({command:t})=>t!==n?"":`
2
2
  ${a$2("program.help.examples")}:
3
3
  easbot # ${a$2("help.example.tui")}
4
4
  easbot tui --continue # ${a$2("help.example.tui_continue")}
@@ -0,0 +1 @@
1
+ export{a as Bus}from'./chunk-KZLMEUTB.mjs';import'./chunk-7SGBJ5NP.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-I3VIJLPG.mjs';import'./chunk-TQNXBACI.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import'./chunk-NQDXG75V.mjs';import'./chunk-WT6HKW7N.mjs';import'./chunk-JEUEJB5B.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-QMJ4R4AL.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-U4BAW7XF.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-X6ISXWBN.mjs';
@@ -1,4 +1,4 @@
1
- import {a as a$2,b as b$1}from'./chunk-CQVEAYYW.mjs';import {ma,ra,ta,sa,oa,pa,qa,Ja,na,ga}from'./chunk-MMN3J3YS.mjs';import {c as c$1}from'./chunk-ZBRXNYEM.mjs';import {b as b$2}from'./chunk-JCC3ZOI6.mjs';import {c}from'./chunk-DEZT7DOH.mjs';import {a as a$1}from'./chunk-NQDXG75V.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import {a as a$3}from'./chunk-6M4SMEZK.mjs';import {b}from'./chunk-X6ISXWBN.mjs';import {Input,truncateToWidth,isKeyRelease,getKeybindings,Editor,matchesKey,Key,Container,Text,Markdown}from'@easbot/tui';import {loadTextFile,Shell,parseModelId,Fetch,Filesystem}from'@easbot/utils';import {randomUUID}from'crypto';import {readdirSync,existsSync}from'fs';import zt from'path';import {pathToFileURL}from'url';import {GatewayClient}from'@easbot/gateway';var _e=class extends Editor{constructor(t,n){super(t,n);b(this,"onEscape");b(this,"onCtrlC");b(this,"onCtrlD");b(this,"onCtrlG");b(this,"onCtrlL");b(this,"onCtrlO");b(this,"onCtrlP");b(this,"onCtrlT");b(this,"inputHandlerManager");}setInputHandlerManager(t){this.inputHandlerManager=t;}addToHistory(t){this.inputHandlerManager?.isHistoryBrowsing()||super.addToHistory(t);}handleInput(t){t.includes("\x1B")||t.includes("\r")||t.includes(`
1
+ import {a as a$2,b as b$1}from'./chunk-CQVEAYYW.mjs';import {ma,ra,ta,sa,oa,pa,qa,Ja,na,ga}from'./chunk-KZLMEUTB.mjs';import {c as c$1}from'./chunk-ZBRXNYEM.mjs';import {b as b$2}from'./chunk-TQNXBACI.mjs';import {c}from'./chunk-DEZT7DOH.mjs';import {a as a$1}from'./chunk-NQDXG75V.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import {a as a$3}from'./chunk-U4BAW7XF.mjs';import {b}from'./chunk-X6ISXWBN.mjs';import {Input,truncateToWidth,isKeyRelease,getKeybindings,Editor,matchesKey,Key,Container,Text,Markdown}from'@easbot/tui';import {loadTextFile,Shell,parseModelId,Fetch,Filesystem}from'@easbot/utils';import {randomUUID}from'crypto';import {readdirSync,existsSync}from'fs';import zt from'path';import {pathToFileURL}from'url';import {GatewayClient}from'@easbot/gateway';var _e=class extends Editor{constructor(t,n){super(t,n);b(this,"onEscape");b(this,"onCtrlC");b(this,"onCtrlD");b(this,"onCtrlG");b(this,"onCtrlL");b(this,"onCtrlO");b(this,"onCtrlP");b(this,"onCtrlT");b(this,"inputHandlerManager");}setInputHandlerManager(t){this.inputHandlerManager=t;}addToHistory(t){this.inputHandlerManager?.isHistoryBrowsing()||super.addToHistory(t);}handleInput(t){t.includes("\x1B")||t.includes("\r")||t.includes(`
2
2
  `);let n=matchesKey(t,Key.up)||matchesKey(t,Key.down);if(n&&this.inputHandlerManager?this.inputHandlerManager.setHistoryBrowsing(true):this.inputHandlerManager&&!n&&(matchesKey(t,Key.ctrl("l"))||matchesKey(t,Key.ctrl("o"))||matchesKey(t,Key.ctrl("p"))||matchesKey(t,Key.ctrl("g"))||matchesKey(t,Key.ctrl("t"))||matchesKey(t,Key.escape)||matchesKey(t,Key.ctrl("c"))||matchesKey(t,Key.ctrl("d"))||this.inputHandlerManager.setHistoryBrowsing(false)),matchesKey(t,Key.ctrl("l"))&&this.onCtrlL){this.onCtrlL();return}if(matchesKey(t,Key.ctrl("o"))&&this.onCtrlO){this.onCtrlO();return}if(matchesKey(t,Key.ctrl("p"))&&this.onCtrlP){this.onCtrlP();return}if(matchesKey(t,Key.ctrl("g"))&&this.onCtrlG){this.onCtrlG();return}if(matchesKey(t,Key.ctrl("t"))&&this.onCtrlT){this.onCtrlT();return}if(matchesKey(t,Key.escape)){if(this.isShowingAutocomplete()){super.handleInput(t);return}if(this.onEscape){this.onEscape();return}}if(matchesKey(t,Key.ctrl("c"))&&this.onCtrlC){this.onCtrlC();return}if(matchesKey(t,Key.ctrl("d"))){this.getText().length===0&&this.onCtrlD&&this.onCtrlD();return}super.handleInput(t);}};var x={text:"#E8E3D5",dim:"#7B7F87",accent:"#F6C453",accentSoft:"#F2A65A",border:"#3C414B",userBg:"#2B2F36",userText:"#5A9F7A",userLabel:"#5A9F7A",systemText:"#9BA3B2",systemLabel:"#7B7F87",assistantLabel:"#B85C5C",subagentLabel:"#9B72CF",subagentBg:"#2A2535",toolPendingBg:"#1F2A2F",toolSuccessBg:"#1E2D23",toolErrorBg:"#2F1F1F",toolTitle:"#F6C453",toolOutput:"#E1DACB",quote:"#8CC8FF",quoteBorder:"#3B4D6B",code:"#F0C987",codeBorder:"#343A45",link:"#7DD3A5",error:"#F97066",success:"#7DD3A5"},I=s=>e=>`\x1B[38;2;${Lt(s)}m${e}\x1B[0m`,Ce=s=>e=>`\x1B[48;2;${Lt(s)}m${e}\x1B[0m`,ve=s=>`\x1B[1m${s}\x1B[0m`,rt=s=>`\x1B[3m${s}\x1B[0m`;function Lt(s){let e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(s);if(!e)return "255;255;255";let t=Number.parseInt(e[1]||"0",16),n=Number.parseInt(e[2]||"0",16),r=Number.parseInt(e[3]||"0",16);return `${t};${n};${r}`}var ts={selectedPrefix:s=>I(x.accent)(s),selectedText:s=>ve(I(x.accent)(s)),description:s=>I(x.dim)(s),scrollInfo:s=>I(x.dim)(s),noMatch:s=>I(x.dim)(s)},ee={fg:I(x.text),assistantText:s=>s,dim:I(x.dim),accent:I(x.accent),accentSoft:I(x.accentSoft),success:I(x.success),error:I(x.error),header:s=>ve(I(x.accent)(s)),system:I(x.systemText),userBg:Ce(x.userBg),userText:I(x.userText),userLabel:s=>I(x.userLabel)(s),systemLabel:s=>I(x.systemLabel)(s),assistantLabel:s=>I(x.assistantLabel)(s),subagentLabel:s=>I(x.subagentLabel)(s),subagentBg:Ce(x.subagentBg),subagent:s=>I(x.subagentLabel)(s),toolTitle:I(x.toolTitle),toolOutput:I(x.toolOutput),toolPendingBg:Ce(x.toolPendingBg),toolSuccessBg:Ce(x.toolSuccessBg),toolErrorBg:Ce(x.toolErrorBg),border:I(x.border),bold:ve,italic:rt,user:s=>I(x.userText)(s),assistant:s=>I(x.text)(s),code:I(x.code),quote:I(x.quote),link:I(x.link),tool:I(x.toolTitle),thinking:s=>rt(I(x.dim)(s)),warning:I(x.accentSoft),muted:I(x.dim),highlight:s=>ve(I(x.accent)(s))},ss=ts;function ns(s,e){let t=s.split(`
3
3
  `);if(!e)return t.map(a=>I(x.code)(a));let n={keyword:I("#C586C0"),string:I("#CE9178"),comment:I("#6A9955"),number:I("#B5CEA8"),function:I("#DCDCAA"),type:I("#4EC9B0"),operator:I("#D4D4D4"),default:I(x.code)},r=e.toLowerCase();return r==="typescript"||r==="ts"||r==="javascript"||r==="js"?t.map(a=>is(a,n)):r==="python"||r==="py"?t.map(a=>rs(a,n)):r==="bash"||r==="sh"||r==="shell"?t.map(a=>os(a,n)):r==="json"?t.map(a=>as(a,n)):t.map(a=>n.default(a))}function is(s,e){if(s.trim().startsWith("//"))return e.comment?.(s)??s;let t=/\b(const|let|var|function|async|await|return|if|else|for|while|class|interface|type|import|export|from|default|new|this|super|extends|implements)\b/g,n=s.replace(t,r=>e.keyword?.(r)??r);return n=n.replace(/(['"`])(?:(?=(\\?))\2.)*?\1/g,r=>e.string?.(r)??r),n=n.replace(/\b\d+(\.\d+)?\b/g,r=>e.number?.(r)??r),n}function rs(s,e){if(s.trim().startsWith("#"))return e.comment?.(s)??s;let t=/\b(def|class|if|elif|else|for|while|return|import|from|as|try|except|finally|with|async|await|lambda|yield|pass|break|continue|None|True|False)\b/g,n=s.replace(t,r=>e.keyword?.(r)??r);return n=n.replace(/(['"])(?:(?=(\\?))\2.)*?\1/g,r=>e.string?.(r)??r),n=n.replace(/\b\d+(\.\d+)?\b/g,r=>e.number?.(r)??r),n}function os(s,e){if(s.trim().startsWith("#"))return e.comment?.(s)??s;let t=/\b(if|then|else|elif|fi|for|while|do|done|case|esac|function|return|exit|export|source|alias)\b/g,n=s.replace(t,r=>e.keyword?.(r)??r);return n=n.replace(/(['"])(?:(?=(\\?))\2.)*?\1/g,r=>e.string?.(r)??r),n=n.replace(/\$\{?[\w_]+\}?/g,r=>e.type?.(r)??r),n}function as(s,e){let t=s;return t=t.replace(/"([^"]+)":/g,(n,r)=>`${e.type?.(`"${r}"`)??`"${r}"`}: `),t=t.replace(/:\s*"([^"]+)"/g,(n,r)=>`: ${e.string?.(`"${r}"`)??`"${r}"`}`),t=t.replace(/:\s*(\d+(\.\d+)?)/g,(n,r)=>`: ${e.number?.(r)??r}`),t=t.replace(/:\s*(true|false|null)/g,(n,r)=>`: ${e.keyword?.(r)??r}`),t}var xe={heading:s=>ve(I(x.accent)(s)),link:s=>I(x.link)(s),linkUrl:s=>I(x.dim)(s),code:s=>I(x.code)(s),codeBlock:s=>I(x.code)(s),codeBlockBorder:s=>I(x.codeBorder)(s),quote:s=>I(x.quote)(s),quoteBorder:s=>I(x.quoteBorder)(s),hr:s=>I(x.border)(s),listBullet:s=>I(x.accentSoft)(s),bold:ve,italic:rt,strikethrough:s=>`\x1B[9m${s}\x1B[0m`,underline:s=>`\x1B[4m${s}\x1B[0m`,highlightCode:ns,codeBlockIndent:" "},Mt={borderColor:s=>I(x.border)(s),selectList:ss};var z=a.create({service:"cli-tui-chatlog"}),ot=null;function ds(){if(ot)return ot;let s=a$1("tui.system.tool_executing",{vars:{tool:""}}).split(":")[0]?.trim()||"",e=a$1("tui.system.tool_completed",{vars:{tool:""}}).split(":")[0]?.trim()||"",t=a$1("tui.system.tool_failed",{vars:{tool:""}}).split(":")[0]?.trim()||"",n=[],r=a=>a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return s&&s!=="tui.system.tool_executing"&&n.push(new RegExp(r(s),"i")),e&&e!=="tui.system.tool_completed"&&n.push(new RegExp(r(e),"i")),t&&t!=="tui.system.tool_failed"&&n.push(new RegExp(r(t),"i")),n.push(/[⚙🔧]\s*(执行工具|Executing tool)/iu,/[✓✅]\s*(工具完成|工具执行完成|Tool completed|Tool execution completed)/iu,/[✗❌]\s*(工具失败|工具执行失败|Tool failed|Tool execution failed)/iu),ot=n,n}var $e=class extends Container{constructor(){super();b(this,"messages",[]);b(this,"maxMessages",1e3);b(this,"containerWidth",80);b(this,"getState");b(this,"cachedProtocolMetadata",null);b(this,"_cachedPrimaryAgents",null);}setStateGetter(t){this.getState=t,this.loadProtocolMetadata();}async loadProtocolMetadata(){let t=this.getState?.();if(t?.sdk)try{let n=await t.sdk.app.context({});n.data?.protocolMetadata&&(this.cachedProtocolMetadata=n.data.protocolMetadata);}catch(n){z.debug("Failed to load protocol metadata",{error:n});}}setWidth(t){this.containerWidth=t;}addUser(t,n,r){this.addMessage("user",t,n,r);}addAssistant(t,n,r){this.addMessage("assistant",t,n,r);}addSystem(t,n,r){this.addMessage("system",t,n,r);}addMessage(t,n,r,a){if(z.debug("addMessage called",{type:t,content:n.substring(0,100),id:r,currentMessagesCount:this.messages.length}),r&&this.messages.findIndex(l=>l.id===r)!==-1){z.debug("Message with same ID already exists, skipping",{id:r});return}this.messages.push({type:t,content:n,timestamp:Date.now(),id:r,metadata:a}),z.debug("After push, messages count",{count:this.messages.length}),this.messages.length>this.maxMessages&&(this.messages=this.messages.slice(-this.maxMessages)),z.debug("Calling updateChildren"),this.updateChildren(),z.debug("updateChildren completed");}clear(){this.messages=[],this.updateChildren();}updateChildren(){let t=this.getState?.(),n=t?.toolsExpanded??false,r=t?.showThinking??false,a=t?.verboseLevel??"off",o=t?.messageLimit??50;z.debug("updateChildren called",{messagesCount:this.messages.length,childrenBeforeClear:this.children.length,toolsExpanded:n,showThinking:r,verboseLevel:a,messageLimit:o}),this.children=[],z.debug("Children cleared",{childrenAfterClear:this.children.length});let l=new Set,d=0,u=this.messages.slice(-o);z.debug("Applied message limit",{originalCount:this.messages.length,limitedCount:u.length,messageLimit:o});for(let c of u){if(c.id&&l.has(c.id)){z.debug("Skipping duplicate ID",{id:c.id});continue}if(!n&&this.shouldFilterToolMessage(c)){z.debug("Filtering tool message (tools collapsed)",{content:c.content.substring(0,50),metadata:c.metadata});continue}if(c.id&&!r&&this.shouldFilterThinkingMessage(c)){z.debug("Filtering thinking message (thinking mode off)",{content:c.content.substring(0,50),metadata:c.metadata});continue}if(c.id&&a==="off"&&this.shouldFilterBackgroundAgentMessage(c)){z.debug("Filtering background agent message (verbose off)",{content:c.content.substring(0,50),agent:c.metadata?.agent});continue}if(c.type==="assistant"&&this.shouldFilterAssistantMessage(c.content)){z.debug("Filtering assistant metadata",{content:c.content.substring(0,50)});continue}c.id&&l.add(c.id),z.debug("Rendering message",{type:c.type,content:c.content.substring(0,50),id:c.id,hasId:!!c.id,metadata:c.metadata}),this.renderMessage(c),d++;}z.debug("updateChildren completed",{childrenAfterRender:this.children.length,renderedCount:d}),this.invalidate();}shouldFilterSystemMessage(t){return ds().some(r=>r.test(t))}shouldFilterToolMessage(t){return t.metadata?.isTool===true?true:t.type==="system"?this.shouldFilterSystemMessage(t.content):false}shouldFilterThinkingMessage(t){return t.metadata?.isThinking===true}shouldFilterBackgroundAgentMessage(t){let n=t.metadata?.agent;if(!n)return false;let r=this.getState?.();if(!r?.sdk)return false;let a=async()=>{try{return ((await r.sdk.app.agents({})).data||[]).filter(d=>d.mode==="primary"&&d.hidden!==!0).map(d=>d.name)}catch{return []}};return this._cachedPrimaryAgents?!this._cachedPrimaryAgents.includes(n):(a().then(o=>{this._cachedPrimaryAgents=o,this.updateChildren();}),false)}shouldFilterAssistantMessage(t){return /^>\s+[\w-]+(\s+·\s+[\w-]+)?$/.test(t.trim())}renderMessage(t){let n=new Date(t.timestamp).toLocaleTimeString();switch(t.type){case "user":{if(t.metadata?.isSubagentResult){let l=t.metadata.agent||"SubAgent",d=ee.subagentLabel(`[${n}] ${l}: `),u=new Text(d,1,0);this.addChild(u);let p=new Markdown(t.content,0,0,xe).render(this.containerWidth-2);for(let _ of p){let $=new Text(_,1,0);this.addChild($);}break}let r=ee.userLabel(`[${n}] ${a$1("tui.chatlog.user_prefix")}: `),a=new Text(r,1,0);if(this.addChild(a),t.content.trim().startsWith("/")){let l=ee.accent(t.content),d=new Text(l,1,0);this.addChild(d);}else {let l=ee.userText(t.content),u=new Markdown(l,0,0,xe).render(this.containerWidth-2);for(let c of u){let p=new Text(c,1,0);this.addChild(p);}}break}case "assistant":{let r=a$1("tui.chatlog.assistant_prefix");this.cachedProtocolMetadata?.name?r=this.cachedProtocolMetadata.name:t.metadata?.agent&&(r=t.metadata.agent);let a=ee.assistantLabel(`[${n}] ${r}: `),o=new Text(a,1,0);this.addChild(o);let d=new Markdown(t.content,0,0,xe).render(this.containerWidth-2);for(let u of d){let c=new Text(u,1,0);this.addChild(c);}break}case "system":{let r=ee.systemLabel(`[${n}] ${a$1("tui.chatlog.system_prefix")}: `),a=new Text(r,1,0);this.addChild(a);let o=ee.system(t.content),d=new Markdown(o,0,0,xe).render(this.containerWidth-2);for(let u of d){let c=new Text(u,1,0);this.addChild(c);}break}}}};var cs={q:"exit",quit:"exit",h:"help",s:"status",a:"agent",m:"model",sess:"session",skills:"skill",commands:"command",mcps:"mcp",models:"model",agents:"agent",sessions:"session",btw:"command"},us=new Set(["btw","sync","abort","compact"]);function Dt(s){let e=s.replace(/^\//,"").trim();if(!e)return {name:"",args:""};let[t="",...n]=e.split(/\s+/),r=t.toLowerCase();return us.has(r)?{name:"command",args:e}:{name:cs[r]??r,args:n.join(" ").trim()}}var at=[{name:"help",description:a$1("tui.command.help.description")},{name:"status",description:a$1("tui.command.status.description")},{name:"command",description:a$1("tui.command.command.description")},{name:"agent",description:a$1("tui.command.agent.description")},{name:"session",description:a$1("tui.command.session.description")},{name:"new",description:a$1("tui.command.new.description")},{name:"fork",description:a$1("tui.command.fork.description")},{name:"reset",description:a$1("tui.command.reset.description")},{name:"model",description:a$1("tui.command.model.description")},{name:"settings",description:a$1("tui.command.settings.description")},{name:"verbose",description:a$1("tui.command.verbose.description")},{name:"thinking",description:a$1("tui.command.thinking.description")},{name:"abort",description:a$1("tui.command.abort.description")},{name:"clear",description:a$1("tui.command.clear.description")},{name:"compact",description:a$1("tui.command.compact.description")},{name:"skill",description:a$1("tui.command.skill.description")},{name:"mcp",description:a$1("tui.command.mcp.description")},{name:"exit",description:a$1("tui.command.exit.description")}];async function _t(s,e){let t=[...at];if(s)try{let r=(await s.command.list({contextMode:e})).data||[],a=new Set(at.map(o=>o.name));for(let o of r)a.has(o.name)||t.push({name:o.name,description:o.description||""});}catch(n){console.error("Failed to fetch dynamic commands:",n);}return t}function Rt(){return at}function $t(){let s=[];return s.push("# "+a$1("tui.help.title")),s.push(""),s.push("## "+a$1("tui.help.section.basic")),s.push("- `"+a$1("tui.help.command.help")+"`"),s.push("- `"+a$1("tui.help.command.status")+"`"),s.push("- `"+a$1("tui.help.command.command")+"`"),s.push(""),s.push("## "+a$1("tui.help.section.agent")),s.push("- `"+a$1("tui.help.command.agent")+"`"),s.push(""),s.push("## "+a$1("tui.help.section.session")),s.push("- `"+a$1("tui.help.command.session")+"`"),s.push("- `"+a$1("tui.help.command.new")+"`"),s.push("- `"+a$1("tui.help.command.fork")+"`"),s.push("- `"+a$1("tui.help.command.reset")+"`"),s.push(""),s.push("## "+a$1("tui.help.section.model")),s.push("- `"+a$1("tui.help.command.model")+"`"),s.push(""),s.push("## "+a$1("tui.help.section.settings")),s.push("- `"+a$1("tui.help.command.settings")+"`"),s.push("- `"+a$1("tui.help.command.verbose")+"`"),s.push("- `"+a$1("tui.help.command.thinking")+"`"),s.push(""),s.push("## "+a$1("tui.help.section.operations")),s.push("- `"+a$1("tui.help.command.abort")+"`"),s.push("- `"+a$1("tui.help.command.clear")+"`"),s.push("- `"+a$1("tui.help.command.compact")+"`"),s.push(""),s.push("## "+a$1("tui.help.section.skill")),s.push("- `"+a$1("tui.help.command.skill")+"`"),s.push("- `"+a$1("tui.help.command.mcp")+"`"),s.push(""),s.push("## "+a$1("tui.help.section.exit")),s.push("- `"+a$1("tui.help.command.exit")+"`"),s.push(""),s.push("## "+a$1("tui.help.section.local")),s.push("- `"+a$1("tui.help.command.local")+"`"),s.push(""),s.push("## "+a$1("tui.help.section.shortcuts")),s.push("- `"+a$1("tui.help.shortcut.ctrl_c")+"`"),s.push("- `"+a$1("tui.help.shortcut.ctrl_d")+"`"),s.push("- `"+a$1("tui.help.shortcut.ctrl_l")+"`"),s.push("- `"+a$1("tui.help.shortcut.ctrl_p")+"`"),s.push("- `"+a$1("tui.help.shortcut.ctrl_g")+"`"),s.push("- `"+a$1("tui.help.shortcut.esc")+"`"),s.join(`
4
4
  `)}var ms=/[\s\-_./:#@]/;function Ht(s,e){return e===0||ms.test(s[e-1]??"")}function Ft(s,e){if(!e)return null;let t=s.toLowerCase(),n=e.toLowerCase(),r=t.length-n.length;if(r<0)return null;for(let a=0;a<=r;a++)if(t.startsWith(n,a)&&Ht(t,a))return a;return null}function gs(s,e){if(s.length===0)return 0;if(s.length>e.length)return null;let t=0,n=0,r=-1,a=0;for(let o=0;o<e.length&&t<s.length;o++)if(e[o]===s[t]){let l=Ht(e,o);r===o-1?(a++,n-=a*5):(a=0,r>=0&&(n+=(o-r-1)*2)),l&&(n-=10),n+=o*.1,r=o,t++;}return t<s.length?null:n}function qt(s,e){let t=e.trim();if(!t)return s;let n=t.split(/\s+/).filter(a=>a.length>0);if(n.length===0)return s;let r=[];for(let a of s){let o=a.searchTextLower??"",l=0,d=true;for(let u of n){let c=gs(u,o);if(c!==null)l+=c;else {d=false;break}}d&&r.push({item:a,score:l});}return r.sort((a,o)=>a.score-o.score),r.map(a=>a.item)}var ys="\x1B",Bt=new RegExp(`${ys}\\[[0-9;]*m`,"g"),se=class se{constructor(e,t,n){b(this,"items");b(this,"filteredItems");b(this,"selectedIndex",0);b(this,"maxVisible");b(this,"theme");b(this,"searchInput");b(this,"regexCache",new Map);b(this,"onSelect");b(this,"onCancel");b(this,"onSelectionChange");b(this,"compareByScore",(e,t)=>e.tier!==t.tier?e.tier-t.tier:e.score!==t.score?e.score-t.score:this.getItemLabel(e.item).localeCompare(this.getItemLabel(t.item)));this.items=e,this.filteredItems=e,this.maxVisible=t,this.theme=n,this.searchInput=new Input;}getCachedRegex(e){let t=this.regexCache.get(e);return t||(t=new RegExp(this.escapeRegex(e),"gi"),this.regexCache.set(e,t)),t}updateFilter(){let e=this.searchInput.getValue().trim();e?this.filteredItems=this.smartFilter(e):this.filteredItems=this.items,this.selectedIndex=0,this.notifySelectionChange();}smartFilter(e){let t=e.toLowerCase(),n=[],r=[];for(let o of this.items){let l=this.getItemLabel(o),d=o.description??"",u=a$2(l).toLowerCase(),c=a$2(d).toLowerCase(),p=u.indexOf(t);if(p!==-1){n.push({item:o,tier:0,score:p});continue}let _=Ft(u,t);if(_!==null){n.push({item:o,tier:1,score:_});continue}let $=c.indexOf(t);if($!==-1){n.push({item:o,tier:2,score:$});continue}let ne=o.searchText??"";r.push({item:o,searchTextLower:[l,d,ne].map(A=>a$2(A)).filter(Boolean).join(" ").toLowerCase()});}n.sort(this.compareByScore);let a=qt(r,t);return [...n.map(o=>o.item),...a.map(o=>o.item)]}escapeRegex(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}getItemLabel(e){return e.label||e.value}splitAnsiParts(e){let t=[];Bt.lastIndex=0;let n=0,r;for(;(r=Bt.exec(e))!==null;)r.index>n&&t.push({text:e.slice(n,r.index),isAnsi:false}),t.push({text:r[0],isAnsi:true}),n=r.index+r[0].length;return n<e.length&&t.push({text:e.slice(n),isAnsi:false}),t}highlightMatch(e,t){let n=t.trim().split(/\s+/).map(o=>o.toLowerCase()).filter(o=>o.length>0);if(n.length===0)return e;let r=Array.from(new Set(n)).toSorted((o,l)=>l.length-o.length),a=this.splitAnsiParts(e);for(let o of r){let l=this.getCachedRegex(o),d=[];for(let u of a){if(u.isAnsi){d.push(u);continue}l.lastIndex=0;let c=u.text.replace(l,p=>this.theme.matchHighlight(p));if(c===u.text){d.push(u);continue}d.push(...this.splitAnsiParts(c));}a=d;}return a.map(o=>o.text).join("")}setSelectedIndex(e){this.selectedIndex=Math.max(0,Math.min(e,this.filteredItems.length-1));}invalidate(){this.searchInput.invalidate();}render(e){let t=[],r=this.theme.searchPrompt("search: "),a=Math.max(1,e-b$1(r)),l=this.searchInput.render(a)[0]??"";t.push(`${r}${this.theme.searchInput(l)}`),t.push("");let d=this.searchInput.getValue().trim();if(this.filteredItems.length===0)return t.push(this.theme.noMatch(" No matches")),t;let u=Math.max(0,Math.min(this.selectedIndex-Math.floor(this.maxVisible/2),this.filteredItems.length-this.maxVisible)),c=Math.min(u+this.maxVisible,this.filteredItems.length);for(let p=u;p<c;p++){let _=this.filteredItems[p];if(!_)continue;let $=p===this.selectedIndex;t.push(this.renderItemLine(_,$,e,d));}if(this.filteredItems.length>this.maxVisible){let p=`${this.selectedIndex+1}/${this.filteredItems.length}`;t.push(this.theme.scrollInfo(` ${p}`));}return t}renderItemLine(e,t,n,r){let a=t?"\u2192 ":" ",o=a.length,l=this.getItemLabel(e),d=e.description;if(d){let $=this.getDescriptionLayout(n,o);if($){let ne=truncateToWidth(l,$.maxValueWidth,""),A=this.highlightMatch(ne,r),M=b$1(A),h=$.availableWidth-M-$.spacingWidth;if(h>=se.DESCRIPTION_MIN_WIDTH){let re=" ".repeat($.spacingWidth),H=truncateToWidth(d,h,""),w=this.highlightMatch(H,r),f=t?w:this.theme.description(w),g=`${a}${A}${re}${f}`;return t?this.theme.selectedText(g):g}}}let u=n-o-2,c=truncateToWidth(l,u,""),p=this.highlightMatch(c,r),_=`${a}${p}`;return t?this.theme.selectedText(_):_}getDescriptionLayout(e,t){if(e<=se.DESCRIPTION_LAYOUT_MIN_WIDTH)return null;let n=Math.max(1,e-t-se.RIGHT_MARGIN_WIDTH),r=n-se.DESCRIPTION_MIN_WIDTH-se.DESCRIPTION_SPACING_WIDTH;return r<1?null:{availableWidth:n,maxValueWidth:r,spacingWidth:se.DESCRIPTION_SPACING_WIDTH}}handleInput(e){if(isKeyRelease(e))return;let t=getKeybindings(),n=!this.searchInput.getValue().trim();if(t.matches(e,"tui.select.up")||t.matches(e,"tui.editor.cursorUp")||n&&e==="k"){this.selectedIndex=Math.max(0,this.selectedIndex-1),this.notifySelectionChange();return}if(t.matches(e,"tui.select.down")||t.matches(e,"tui.editor.cursorDown")||n&&e==="j"){this.selectedIndex=Math.min(this.filteredItems.length-1,this.selectedIndex+1),this.notifySelectionChange();return}if(t.matches(e,"tui.select.confirm")){let o=this.filteredItems[this.selectedIndex];o&&this.onSelect&&this.onSelect(o);return}if(t.matches(e,"tui.select.cancel")){this.onCancel&&this.onCancel();return}let r=this.searchInput.getValue();this.searchInput.handleInput(e);let a=this.searchInput.getValue();r!==a&&this.updateFilter();}notifySelectionChange(){let e=this.filteredItems[this.selectedIndex];e&&this.onSelectionChange&&this.onSelectionChange(e);}getSelectedItem(){return this.filteredItems[this.selectedIndex]??null}};b(se,"DESCRIPTION_LAYOUT_MIN_WIDTH",40),b(se,"DESCRIPTION_MIN_WIDTH",12),b(se,"DESCRIPTION_SPACING_WIDTH",2),b(se,"RIGHT_MARGIN_WIDTH",2);var He=se;var ge=a.create({service:"cli-tui-selectors"}),Ss={selectedPrefix:s=>`\x1B[36m${s}\x1B[0m`,selectedText:s=>`\x1B[1;36m${s}\x1B[0m`,description:s=>`\x1B[90m${s}\x1B[0m`,scrollInfo:s=>`\x1B[90m${s}\x1B[0m`,noMatch:s=>`\x1B[90m${s}\x1B[0m`,searchPrompt:s=>`\x1B[36m${s}\x1B[0m`,searchInput:s=>s,matchHighlight:s=>`\x1B[1;33m${s}\x1B[0m`};function pe(s,e){ge.debug("Creating searchable select list",{itemsCount:s.length,title:e.title});let t=e.maxVisible??10,n=new He(s,t,Ss);return e.onSelect&&(n.onSelect=e.onSelect),e.onCancel&&(n.onCancel=e.onCancel),n}function Fe(s,e){ge.info("Creating model selector with data");let t=[];for(let[n,r]of Object.entries(s))if(r?.models)for(let[a,o]of Object.entries(r.models))t.push({label:`${r.name} - ${o.name}`,value:`${n}/${a}`,description:o.family||""});return ge.debug("Model list loaded",{count:t.length}),pe(t,{title:e.title||a$1("tui.selector.model.title"),placeholder:e.placeholder||a$1("tui.selector.model.placeholder"),onSelect:e.onSelect,onCancel:e.onCancel})}function qe(s,e){ge.info("Creating session selector with data",{count:s.length});let t=s.map(n=>({label:n.title||n.id,value:n.id,description:`\u66F4\u65B0\u65F6\u95F4: ${n.time?.updated?new Date(n.time.updated).toLocaleString():"\u672A\u77E5"}`}));return ge.debug("Session list loaded",{count:t.length}),pe(t,{title:e.title||a$1("tui.selector.session.title"),placeholder:e.placeholder||a$1("tui.selector.session.placeholder"),onSelect:e.onSelect,onCancel:e.onCancel})}function Be(s,e){ge.info("Creating agent selector with data",{count:s.length});let t=s.map(n=>({label:n.name,value:n.name,description:n.description||(n.mode?`\u6A21\u5F0F: ${n.mode}`:"")}));return ge.debug("Agent list loaded",{count:t.length}),pe(t,{title:e.title||a$1("tui.selector.agent.title"),placeholder:e.placeholder||a$1("tui.selector.agent.placeholder"),onSelect:e.onSelect,onCancel:e.onCancel})}var T=a.create({service:"cli-tui-command-handlers"});async function vs(s,e){let t=[];t.push("## "+a$1("tui.handler.status.title")),t.push(""),t.push("### "+a$1("tui.handler.status.system_info")),t.push("- **"+a$1("tui.handler.status.system")+"**: "+a$1("tui.handler.status.ok")),t.push("- **"+a$1("tui.handler.status.directory")+"**: `"+e+"`"),t.push(""),t.push("### "+a$1("tui.handler.status.global_paths")),t.push("- **home**: `"+a$3.Path.home+"`"),t.push("- **data**: `"+a$3.Path.data+"`"),t.push("- **bin**: `"+a$3.Path.bin+"`"),t.push("- **log**: `"+a$3.Path.log+"`"),t.push("- **cache**: `"+a$3.Path.cache+"`"),t.push("- **config**: `"+a$3.Path.config+"`"),t.push("- **state**: `"+a$3.Path.state+"`"),t.push(""),t.push("### "+a$1("tui.handler.status.session_info")),t.push("- **"+a$1("tui.handler.status.agent_label")+"**: "+(s.agent||a$1("tui.handler.status.not_set"))),t.push("- **"+a$1("tui.handler.status.session_label")+"**: "+(s.currentSessionKey||a$1("tui.handler.status.not_set"))),t.push("- **"+a$1("tui.handler.status.model_label")+"**: "+(s.sessionInfo.model||a$1("tui.handler.status.not_set"))),t.push("");try{let r=(await s.sdk.command.list({})).data||[],a=r.filter(d=>d.source==="skill"),o=r.filter(d=>d.source==="mcp"),l=r.filter(d=>d.source==="command");if(t.push("### "+a$1("tui.handler.status.skills")+" ("+a.length+")"),a.length>0){let d=a.map(u=>u.name).join(", ");t.push(d);}t.push("");try{let u=(await s.sdk.mcp.status({})).data||{},p=(await s.sdk.mcp.tools({})).data||{},_=Object.entries(u).filter(([,$])=>$.status==="connected");if(t.push("### "+a$1("tui.handler.status.mcp")+" ("+_.length+")"),_.length>0)for(let[$]of _){let ne=p[$]||[];ne.length>0?t.push("- **"+$+"** ("+ne.length+"): "+ne.join(", ")):t.push("- **"+$+"**");}t.push("");}catch(d){T.error("Failed to get MCP status",{error:d}),t.push("### "+a$1("tui.handler.status.mcp")+" (0)"),t.push("");}if(t.push("### "+a$1("tui.handler.status.commands")+" ("+l.length+")"),l.length>0){let d=l.map(u=>u.name).join(", ");t.push(d);}t.push(""),t.push("### "+a$1("tui.handler.status.services"));try{if(!s.sdk?.lsp)T.warn("SDK or LSP API is not initialized"),t.push("- **LSP**: "+a$1("tui.handler.status.error_loading_lsp"));else {let d=await s.sdk.lsp.status({});if(!d||typeof d!="object")T.warn("LSP status response is not a valid object",{response:d,responseType:typeof d}),t.push("- **LSP**: "+a$1("tui.handler.status.error_loading_lsp"));else {let u=Array.isArray(d.data)?d.data:[];if(t.push("- **LSP ("+u.length+")**: "),u.length>0){let c=u.filter(p=>p&&typeof p=="object").map(p=>p?.name||"unknown").join(", ");t.push(" "+c);}else t.push(" "+a$1("tui.handler.status.no_lsp"));}}}catch(d){T.error("Failed to get LSP status",{error:d}),t.push("- **LSP**: "+a$1("tui.handler.status.error_loading_lsp"));}}catch(n){T.error("Failed to get command list for status",{error:n}),t.push(""),t.push("_"+a$1("tui.handler.status.error_loading")+"_");}return t.join(`
@@ -33,7 +33,7 @@ ${E}`),k(a$1("tui.status.error")),T.error("Failed to execute command",{type:H,na
33
33
  `;}L.debug("displayQuestion - final message",{messageLength:l.length,messagePreview:l.substring(0,100)}),s.chatLog.addSystem(l);}var K=a.create({service:"cli-tui-session-actions"});async function Nt(s){K.info("Refreshing agent list");try{s.setActivityStatus(a$1("tui.session.loading_agents"));let n=((await s.sdk.app.agents({})).data||[]).map(r=>r.name);return K.info("Agent list loaded",{count:n.length}),s.setActivityStatus(a$1("tui.status.ready")),n}catch(e){return K.error("Failed to refresh agent list",{error:e}),s.chatLog.addSystem(a$1("tui.session.agents_failed",{vars:{error:String(e)}})),s.setActivityStatus(a$1("tui.status.error")),[]}}async function dt(s,e){K.info("Refreshing session info",{sessionId:e});try{s.setActivityStatus(a$1("tui.session.loading_info"));let n=(await s.sdk.session.get({sessionID:e})).data;return K.info("Session info loaded",{sessionId:e}),s.setActivityStatus(a$1("tui.status.ready")),n??null}catch(t){return K.error("Failed to refresh session info",{sessionId:e,error:t}),s.chatLog.addSystem(a$1("tui.session.info_failed",{vars:{error:String(t)}})),s.setActivityStatus(a$1("tui.status.error")),null}}async function Ue(s,e,t){K.info("Loading history",{sessionId:e,limit:t});try{s.setActivityStatus(a$1("tui.session.loading_history"));let r=(await s.sdk.session.messages({sessionID:e,limit:t})).data||[];K.info("History loaded",{sessionId:e,count:r.length});for(let a=0;a<r.length;a++){let o=r[a],l=o?.info?.role;if(l==="user"){let u=(o?.parts?.filter(p=>p.type==="text")||[]).map(p=>("text"in p?p.text:"")||"").join(`
34
34
  `),c=o?.parts?.filter(p=>p.type==="subtask-result")||[];K.debug("loadHistory processing user message",{messageId:o?.info?.id,partCount:o?.parts?.length||0,subtaskPartCount:c.length});for(let p of c)if("agent"in p&&"taskId"in p){K.debug("loadHistory adding subtask-result",{messageId:o?.info?.id,agent:p.agent,taskId:p.taskId});let _=Ja.formatSubtaskResultPart(p);s.chatLog.addUser(_,o?.info?.id,{agent:p.agent||"SubAgent",isSubagentResult:!0,subtaskResultPart:{taskId:p.taskId,source:p.source,agent:p.agent,status:p.status,result:p.result,error:p.error,duration:p.duration,rounds:p.rounds,time:p.time,metadata:p.metadata}});}u&&s.chatLog.addUser(u,o?.info?.id,{agent:o?.info?.agent});}else if(l==="assistant"){let u=(o?.parts?.filter(c=>c.type==="text")||[]).map(c=>("text"in c?c.text:"")||"").join(`
35
35
  `);u&&s.chatLog.addAssistant(u,o?.info?.id,{agent:o?.info?.agent});}else if(l==="system"){let u=(o?.parts?.filter(c=>c.type==="text")||[]).map(c=>("text"in c?c.text:"")||"").join(`
36
- `);s.chatLog.addSystem(u,o?.info?.id,{agent:o?.info?.agent});}}return s.setActivityStatus(a$1("tui.status.ready")),r}catch(n){return K.error("Failed to load history",{sessionId:e,error:n}),s.chatLog.addSystem(a$1("tui.session.history_failed",{vars:{error:String(n)}})),s.setActivityStatus(a$1("tui.status.error")),[]}}async function Qt(s,e,t){K.info("Switching session",{sessionId:e});try{t.currentSessionId=e,t.currentSessionKey=e,t.historyLoaded=!1;let n=await dt(s,e);n&&(t.currentSessionKey=n.title||e,t.sessionInfo.model=n.model,t.sessionInfo.modelProvider=n.modelProvider);let{loadTuiState:r,saveTuiStateToStorage:a}=await import('./preferences-H2TY25O6.mjs'),o=await r(e);t.toolsExpanded=o.toolsExpanded,t.showThinking=o.showThinking,t.thinkingLevel=o.thinkingLevel,t.verboseLevel=o.verboseLevel,t.messageLimit=o.messageLimit,t.localShellPermission=o.localShellPermission,o.model&&(t.sessionInfo.model=o.model),o.agent&&(t.agent=o.agent),K.debug("Session preferences loaded",{sessionId:e,model:t.sessionInfo.model,agent:t.agent,thinkingLevel:t.thinkingLevel}),await a(t),await Ue(s,e,t.messageLimit),t.historyLoaded=!0,s.chatLog.addSystem(a$1("tui.session.switched",{vars:{sessionId:e}}));}catch(n){K.error("Failed to switch session",{sessionId:e,error:n}),s.chatLog.addSystem(a$1("tui.session.switch_failed",{vars:{error:String(n)}})),s.setActivityStatus(a$1("tui.status.error"));}}async function Gt(s,e){K.info("Aborting current run",{sessionId:e});try{s.setActivityStatus(a$1("tui.session.aborting"));let t=s.sdk.session.abort({sessionID:e}),n=new Promise((r,a)=>{setTimeout(()=>a(new Error(a$1("tui.abort.timeout"))),5e3);});await Promise.race([t,n]),s.chatLog.addSystem(a$1("tui.session.aborted")),s.setActivityStatus(a$1("tui.status.ready"));}catch(t){K.error("Failed to abort",{sessionId:e,error:t}),s.chatLog.addSystem(a$1("tui.session.abort_failed",{vars:{error:String(t)}})),s.setActivityStatus(a$1("tui.status.error"));}}function jt(s,e){return {openOverlay:r=>{s.showOverlay(r);},closeOverlay:()=>{s.hasOverlay()&&s.hideOverlay(),s.setFocus(e);}}}var Oe=a.create({service:"tui-autocomplete"});function Kt(s){return new ct(s)}var ct=class{constructor(e){b(this,"basePath");b(this,"commands");b(this,"getAgents");this.basePath=e.basePath,this.commands=e.slashCommands,this.getAgents=e.getAgents;}updateCommands(e){this.commands=e;}setGetAgents(e){this.getAgents=e;}async getSuggestions(e,t,n,r){let o=(e[t]||"").slice(0,n),l=this.extractHashPrefix(o);if(l)return this.getFileSuggestions(l);let d=this.extractAtPrefix(o);return d?await this.getAgentSuggestions(d):o.startsWith("/")?this.getCommandSuggestions(o):null}applyCompletion(e,t,n,r,a){let o=e[t]||"",l=o.slice(0,n-a.length),d=o.slice(n);if(a.startsWith("#")){let u=r.label.endsWith("/"),c=u?r.value.replace(/\/$/,""):r.value,p=u?"":" ";return {lines:[...e.slice(0,t),l+c+p+d,...e.slice(t+1)],cursorLine:t,cursorCol:l.length+c.length+p.length}}if(a.startsWith("@"))return {lines:[...e.slice(0,t),l+r.value+" "+d,...e.slice(t+1)],cursorLine:t,cursorCol:l.length+r.value.length+1};if(a.startsWith("/")){let u="/"+r.value+" ";return {lines:[...e.slice(0,t),l+u+d,...e.slice(t+1)],cursorLine:t,cursorCol:l.length+u.length}}return {lines:[...e.slice(0,t),l+r.value+" "+d,...e.slice(t+1)],cursorLine:t,cursorCol:l.length+r.value.length+1}}async getCommandSuggestions(e){let t=e.indexOf(" ");if(t===-1){let d=e.slice(1),u=this.commands.filter(c=>c.name.toLowerCase().includes(d.toLowerCase())).map(c=>({value:c.name,label:c.name,description:c.description}));return u.length===0?null:{items:u.slice(0,50),prefix:e}}let n=e.slice(1,t),r=e.slice(t+1),a=this.commands.find(d=>d.name===n);if(!a?.getArgumentCompletions)return null;let o=a.getArgumentCompletions(r),l=o instanceof Promise?await o:o;return !l||l.length===0?null:{items:l.slice(0,50),prefix:r}}getFileSuggestions(e){let t=e.startsWith('#"')?e.slice(2):e.slice(1),n=e.startsWith('#"'),r=t.replace(/\\/g,"/");if(this.isDrivePath(r))return Oe.debug("Drive path, skip autocomplete",{normalizedPath:r}),null;let{targetPath:a,searchQuery:o}=this.parsePath(r),l=this.resolveBaseDir(a);try{let d;try{d=readdirSync(l,{withFileTypes:!0});}catch{return Oe.debug("Directory not found",{baseDir:l}),null}let u=[];for(let c of d){if(o&&!c.name.toLowerCase().includes(o.toLowerCase()))continue;let p=c.isDirectory(),_=a?`${a}${c.name}`:c.name;if(u.push({value:n?`#"${_}${p?"/":""}"`:`#${_}${p?"/":""}`,label:p?`${c.name}/`:c.name,description:_}),u.length>=50)break}return u.sort((c,p)=>{let _=c.label.endsWith("/"),$=p.label.endsWith("/");return _&&!$?-1:!_&&$?1:c.label.localeCompare(p.label)}),u.length===0?null:{items:u,prefix:e}}catch(d){return Oe.debug("File search failed",{error:d,targetPath:a}),null}}async getAgentSuggestions(e){if(!this.getAgents)return null;let t=e.slice(1);try{let r=(await this.getAgents()).filter(a=>a.hidden!==!0).filter(a=>a.name.toLowerCase().includes(t.toLowerCase())).map(a=>({value:`@${a.name}`,label:a.name,description:a.description}));return r.length===0?null:{items:r.slice(0,50),prefix:e}}catch(n){return Oe.debug("Agent search failed",{error:n,prefix:e}),null}}extractAtPrefix(e){let t=new Set([" "," ",'"',"'","="]);for(let n=e.length-1;n>=0;n--)if(t.has(e[n]??"")){let r=n+1;return e[r]==="@"?e.slice(r):null}return e.startsWith("@")?e:null}extractHashPrefix(e){let t=new Set([" "," ",'"',"'","="]);for(let n=e.length-1;n>=0;n--)if(t.has(e[n]??"")){let r=n+1;return e[r]==="#"?e.slice(r):null}return e.startsWith("#")?e:null}isDrivePath(e){return /^[A-Za-z]:[/\\]?$/.test(e)}parsePath(e){let t=Math.max(e.lastIndexOf("/"),e.lastIndexOf("\\"));return t===-1?{targetPath:"",searchQuery:e}:{targetPath:e.slice(0,t+1),searchQuery:e.slice(t+1)}}resolveBaseDir(e){return e?zt.join(this.basePath,e):this.basePath}};function ut(s,e){let t=[],n=/(?<![\w`])#(\S+)/g,r;for(;(r=n.exec(s))!==null;){let a=r[1];if(!a)continue;let o=a.replace(/\\/g,"/"),l=js(o,e);existsSync(l)&&t.push({path:a,url:pathToFileURL(l).href,exists:true});}return {attachments:t,invalidPaths:[]}}function js(s,e){if(/^[A-Za-z]:[/\\]/.test(s))return s;let t=s.replace(/^[/\\]+/,"");return zt.join(e,t)}var U=a.create({service:"cli-tui-input-handlers"}),We=class{constructor(){b(this,"handlers",[]);b(this,"isBrowsingHistory",false);}register(e){this.handlers.push(e),U.debug("Register input handler",{name:e.name,total:this.handlers.length});}setHistoryBrowsing(e){this.isBrowsingHistory=e;}isHistoryBrowsing(){return this.isBrowsingHistory}async handle(e,t){let n=e.trim();if(n){this.isBrowsingHistory;for(let r of this.handlers)if(r.canHandle(n,t.state)){U.debug("Handle input with handler",{handler:r.name,input:n.substring(0,50)}),await r.handle(n,t);return}U.warn("No handler can process input",{input:n.substring(0,50)});}}getPrompt(e){for(let t of this.handlers)if(t.getPrompt&&t.canHandle("",e)){let n=t.getPrompt(e);if(n)return n}return "> "}},Ne=class{constructor(){b(this,"name","permission");}canHandle(e,t){return t.pendingPermission!==null}async handle(e,t){let{state:n,chatLog:r,tui:a}=t,o=n.pendingPermission;if(!o)return;let l=e.toLowerCase().trim(),d;if(l==="y"||l==="yes")d="once";else if(l==="a"||l==="always")d="always";else if(l==="n"||l==="no"||l==="reject")d="reject";else {r.addSystem(a$1("tui.permission.invalid_input"));return}try{await pa(n,{requestID:o.id,reply:d}),n.pendingPermission=null;let u=d==="once"?a$1("tui.permission.once"):d==="always"?a$1("tui.permission.always"):a$1("tui.permission.reject");r.addSystem(a$1("tui.permission.replied",{vars:{reply:u}})),U.info("Permission request replied",{requestID:o.id,reply:d});}catch(u){U.error("Failed to reply permission request",{error:u}),r.addSystem(a$1("tui.permission.error")),n.pendingPermission=null;}}getPrompt(e){return e.pendingPermission?a$1("tui.permission.prompt"):"> "}},Qe=class{constructor(){b(this,"name","question");}canHandle(e,t){return !(t.pendingQuestion===null||e.startsWith("/"))}async handle(e,t){let{state:n,chatLog:r,tui:a}=t,o=n.pendingQuestion;if(!o){U.warn("QuestionInputHandler.handle - no pending question");return}U.debug("QuestionInputHandler.handle - processing input",{input:e.substring(0,50),currentIndex:o.currentQuestionIndex,totalQuestions:o.questions.length,requestID:o.id});let l=o.currentQuestionIndex,d=o.questions[l];if(!d){U.error("Current question does not exist",{currentIndex:l,totalQuestions:o.questions.length}),n.pendingQuestion=null;return}let u=this.parseAnswer(e,d);if(!u){U.debug("QuestionInputHandler.handle - invalid input",{input:e}),r.addSystem(a$1("tui.question.invalid_input"));return}if(U.debug("QuestionInputHandler.handle - answer parsed",{answer:u,answerLength:u.length}),o.collectedAnswers.push(u),o.currentQuestionIndex++,o.currentQuestionIndex<o.questions.length){U.debug("QuestionInputHandler.handle - showing next question",{nextIndex:o.currentQuestionIndex,totalQuestions:o.questions.length});let c=o.questions[o.currentQuestionIndex];c&&this.displayQuestion(c,o.currentQuestionIndex,o.questions.length,r);}else {U.info("QuestionInputHandler.handle - all questions answered, calling API",{requestID:o.id,answerCount:o.collectedAnswers.length,answers:o.collectedAnswers});try{await qa(n,{requestID:o.id,answers:o.collectedAnswers}),n.pendingQuestion=null,r.addSystem(a$1("tui.question.completed",{vars:{count:o.collectedAnswers.length}})),U.info("Question request completed",{requestID:o.id});}catch(c){U.error("Failed to reply question request",{error:c instanceof Error?c.message:String(c),stack:c instanceof Error?c.stack:void 0,requestID:o.id,answers:o.collectedAnswers,errorType:c instanceof Error?c.constructor.name:typeof c});let p=c instanceof Error?c.message:String(c);r.addSystem(`${a$1("tui.question.error")}: ${p}`),n.pendingQuestion=null;}}}parseAnswer(e,t){let n=e.trim();if(!t.options||t.options.length===0)return [n];let r=n.match(/^(\d+(?:,\s*\d+)*)$/);if(r?.[1]){let o=r[1].split(",").map(l=>Number.parseInt(l.trim(),10)).filter(l=>l>0&&l<=t.options.length);if(o.length===0)return null;if(!t.multiple&&o.length>1){let l=o[0];if(l!==void 0){let d=t.options[l-1];if(d)return [d.label]}return null}return o.map(l=>{let d=t.options[l-1];return d?d.label:""}).filter(l=>l!=="")}return t.custom===false?null:[n]}displayQuestion(e,t,n,r){let a=`
36
+ `);s.chatLog.addSystem(u,o?.info?.id,{agent:o?.info?.agent});}}return s.setActivityStatus(a$1("tui.status.ready")),r}catch(n){return K.error("Failed to load history",{sessionId:e,error:n}),s.chatLog.addSystem(a$1("tui.session.history_failed",{vars:{error:String(n)}})),s.setActivityStatus(a$1("tui.status.error")),[]}}async function Qt(s,e,t){K.info("Switching session",{sessionId:e});try{t.currentSessionId=e,t.currentSessionKey=e,t.historyLoaded=!1;let n=await dt(s,e);n&&(t.currentSessionKey=n.title||e,t.sessionInfo.model=n.model,t.sessionInfo.modelProvider=n.modelProvider);let{loadTuiState:r,saveTuiStateToStorage:a}=await import('./preferences-SIWFQFGI.mjs'),o=await r(e);t.toolsExpanded=o.toolsExpanded,t.showThinking=o.showThinking,t.thinkingLevel=o.thinkingLevel,t.verboseLevel=o.verboseLevel,t.messageLimit=o.messageLimit,t.localShellPermission=o.localShellPermission,o.model&&(t.sessionInfo.model=o.model),o.agent&&(t.agent=o.agent),K.debug("Session preferences loaded",{sessionId:e,model:t.sessionInfo.model,agent:t.agent,thinkingLevel:t.thinkingLevel}),await a(t),await Ue(s,e,t.messageLimit),t.historyLoaded=!0,s.chatLog.addSystem(a$1("tui.session.switched",{vars:{sessionId:e}}));}catch(n){K.error("Failed to switch session",{sessionId:e,error:n}),s.chatLog.addSystem(a$1("tui.session.switch_failed",{vars:{error:String(n)}})),s.setActivityStatus(a$1("tui.status.error"));}}async function Gt(s,e){K.info("Aborting current run",{sessionId:e});try{s.setActivityStatus(a$1("tui.session.aborting"));let t=s.sdk.session.abort({sessionID:e}),n=new Promise((r,a)=>{setTimeout(()=>a(new Error(a$1("tui.abort.timeout"))),5e3);});await Promise.race([t,n]),s.chatLog.addSystem(a$1("tui.session.aborted")),s.setActivityStatus(a$1("tui.status.ready"));}catch(t){K.error("Failed to abort",{sessionId:e,error:t}),s.chatLog.addSystem(a$1("tui.session.abort_failed",{vars:{error:String(t)}})),s.setActivityStatus(a$1("tui.status.error"));}}function jt(s,e){return {openOverlay:r=>{s.showOverlay(r);},closeOverlay:()=>{s.hasOverlay()&&s.hideOverlay(),s.setFocus(e);}}}var Oe=a.create({service:"tui-autocomplete"});function Kt(s){return new ct(s)}var ct=class{constructor(e){b(this,"basePath");b(this,"commands");b(this,"getAgents");this.basePath=e.basePath,this.commands=e.slashCommands,this.getAgents=e.getAgents;}updateCommands(e){this.commands=e;}setGetAgents(e){this.getAgents=e;}async getSuggestions(e,t,n,r){let o=(e[t]||"").slice(0,n),l=this.extractHashPrefix(o);if(l)return this.getFileSuggestions(l);let d=this.extractAtPrefix(o);return d?await this.getAgentSuggestions(d):o.startsWith("/")?this.getCommandSuggestions(o):null}applyCompletion(e,t,n,r,a){let o=e[t]||"",l=o.slice(0,n-a.length),d=o.slice(n);if(a.startsWith("#")){let u=r.label.endsWith("/"),c=u?r.value.replace(/\/$/,""):r.value,p=u?"":" ";return {lines:[...e.slice(0,t),l+c+p+d,...e.slice(t+1)],cursorLine:t,cursorCol:l.length+c.length+p.length}}if(a.startsWith("@"))return {lines:[...e.slice(0,t),l+r.value+" "+d,...e.slice(t+1)],cursorLine:t,cursorCol:l.length+r.value.length+1};if(a.startsWith("/")){let u="/"+r.value+" ";return {lines:[...e.slice(0,t),l+u+d,...e.slice(t+1)],cursorLine:t,cursorCol:l.length+u.length}}return {lines:[...e.slice(0,t),l+r.value+" "+d,...e.slice(t+1)],cursorLine:t,cursorCol:l.length+r.value.length+1}}async getCommandSuggestions(e){let t=e.indexOf(" ");if(t===-1){let d=e.slice(1),u=this.commands.filter(c=>c.name.toLowerCase().includes(d.toLowerCase())).map(c=>({value:c.name,label:c.name,description:c.description}));return u.length===0?null:{items:u.slice(0,50),prefix:e}}let n=e.slice(1,t),r=e.slice(t+1),a=this.commands.find(d=>d.name===n);if(!a?.getArgumentCompletions)return null;let o=a.getArgumentCompletions(r),l=o instanceof Promise?await o:o;return !l||l.length===0?null:{items:l.slice(0,50),prefix:r}}getFileSuggestions(e){let t=e.startsWith('#"')?e.slice(2):e.slice(1),n=e.startsWith('#"'),r=t.replace(/\\/g,"/");if(this.isDrivePath(r))return Oe.debug("Drive path, skip autocomplete",{normalizedPath:r}),null;let{targetPath:a,searchQuery:o}=this.parsePath(r),l=this.resolveBaseDir(a);try{let d;try{d=readdirSync(l,{withFileTypes:!0});}catch{return Oe.debug("Directory not found",{baseDir:l}),null}let u=[];for(let c of d){if(o&&!c.name.toLowerCase().includes(o.toLowerCase()))continue;let p=c.isDirectory(),_=a?`${a}${c.name}`:c.name;if(u.push({value:n?`#"${_}${p?"/":""}"`:`#${_}${p?"/":""}`,label:p?`${c.name}/`:c.name,description:_}),u.length>=50)break}return u.sort((c,p)=>{let _=c.label.endsWith("/"),$=p.label.endsWith("/");return _&&!$?-1:!_&&$?1:c.label.localeCompare(p.label)}),u.length===0?null:{items:u,prefix:e}}catch(d){return Oe.debug("File search failed",{error:d,targetPath:a}),null}}async getAgentSuggestions(e){if(!this.getAgents)return null;let t=e.slice(1);try{let r=(await this.getAgents()).filter(a=>a.hidden!==!0).filter(a=>a.name.toLowerCase().includes(t.toLowerCase())).map(a=>({value:`@${a.name}`,label:a.name,description:a.description}));return r.length===0?null:{items:r.slice(0,50),prefix:e}}catch(n){return Oe.debug("Agent search failed",{error:n,prefix:e}),null}}extractAtPrefix(e){let t=new Set([" "," ",'"',"'","="]);for(let n=e.length-1;n>=0;n--)if(t.has(e[n]??"")){let r=n+1;return e[r]==="@"?e.slice(r):null}return e.startsWith("@")?e:null}extractHashPrefix(e){let t=new Set([" "," ",'"',"'","="]);for(let n=e.length-1;n>=0;n--)if(t.has(e[n]??"")){let r=n+1;return e[r]==="#"?e.slice(r):null}return e.startsWith("#")?e:null}isDrivePath(e){return /^[A-Za-z]:[/\\]?$/.test(e)}parsePath(e){let t=Math.max(e.lastIndexOf("/"),e.lastIndexOf("\\"));return t===-1?{targetPath:"",searchQuery:e}:{targetPath:e.slice(0,t+1),searchQuery:e.slice(t+1)}}resolveBaseDir(e){return e?zt.join(this.basePath,e):this.basePath}};function ut(s,e){let t=[],n=/(?<![\w`])#(\S+)/g,r;for(;(r=n.exec(s))!==null;){let a=r[1];if(!a)continue;let o=a.replace(/\\/g,"/"),l=js(o,e);existsSync(l)&&t.push({path:a,url:pathToFileURL(l).href,exists:true});}return {attachments:t,invalidPaths:[]}}function js(s,e){if(/^[A-Za-z]:[/\\]/.test(s))return s;let t=s.replace(/^[/\\]+/,"");return zt.join(e,t)}var U=a.create({service:"cli-tui-input-handlers"}),We=class{constructor(){b(this,"handlers",[]);b(this,"isBrowsingHistory",false);}register(e){this.handlers.push(e),U.debug("Register input handler",{name:e.name,total:this.handlers.length});}setHistoryBrowsing(e){this.isBrowsingHistory=e;}isHistoryBrowsing(){return this.isBrowsingHistory}async handle(e,t){let n=e.trim();if(n){this.isBrowsingHistory;for(let r of this.handlers)if(r.canHandle(n,t.state)){U.debug("Handle input with handler",{handler:r.name,input:n.substring(0,50)}),await r.handle(n,t);return}U.warn("No handler can process input",{input:n.substring(0,50)});}}getPrompt(e){for(let t of this.handlers)if(t.getPrompt&&t.canHandle("",e)){let n=t.getPrompt(e);if(n)return n}return "> "}},Ne=class{constructor(){b(this,"name","permission");}canHandle(e,t){return t.pendingPermission!==null}async handle(e,t){let{state:n,chatLog:r,tui:a}=t,o=n.pendingPermission;if(!o)return;let l=e.toLowerCase().trim(),d;if(l==="y"||l==="yes")d="once";else if(l==="a"||l==="always")d="always";else if(l==="n"||l==="no"||l==="reject")d="reject";else {r.addSystem(a$1("tui.permission.invalid_input"));return}try{await pa(n,{requestID:o.id,reply:d}),n.pendingPermission=null;let u=d==="once"?a$1("tui.permission.once"):d==="always"?a$1("tui.permission.always"):a$1("tui.permission.reject");r.addSystem(a$1("tui.permission.replied",{vars:{reply:u}})),U.info("Permission request replied",{requestID:o.id,reply:d});}catch(u){U.error("Failed to reply permission request",{error:u}),r.addSystem(a$1("tui.permission.error")),n.pendingPermission=null;}}getPrompt(e){return e.pendingPermission?a$1("tui.permission.prompt"):"> "}},Qe=class{constructor(){b(this,"name","question");}canHandle(e,t){return !(t.pendingQuestion===null||e.startsWith("/"))}async handle(e,t){let{state:n,chatLog:r,tui:a}=t,o=n.pendingQuestion;if(!o){U.warn("QuestionInputHandler.handle - no pending question");return}U.debug("QuestionInputHandler.handle - processing input",{input:e.substring(0,50),currentIndex:o.currentQuestionIndex,totalQuestions:o.questions.length,requestID:o.id});let l=o.currentQuestionIndex,d=o.questions[l];if(!d){U.error("Current question does not exist",{currentIndex:l,totalQuestions:o.questions.length}),n.pendingQuestion=null;return}let u=this.parseAnswer(e,d);if(!u){U.debug("QuestionInputHandler.handle - invalid input",{input:e}),r.addSystem(a$1("tui.question.invalid_input"));return}if(U.debug("QuestionInputHandler.handle - answer parsed",{answer:u,answerLength:u.length}),o.collectedAnswers.push(u),o.currentQuestionIndex++,o.currentQuestionIndex<o.questions.length){U.debug("QuestionInputHandler.handle - showing next question",{nextIndex:o.currentQuestionIndex,totalQuestions:o.questions.length});let c=o.questions[o.currentQuestionIndex];c&&this.displayQuestion(c,o.currentQuestionIndex,o.questions.length,r);}else {U.info("QuestionInputHandler.handle - all questions answered, calling API",{requestID:o.id,answerCount:o.collectedAnswers.length,answers:o.collectedAnswers});try{await qa(n,{requestID:o.id,answers:o.collectedAnswers}),n.pendingQuestion=null,r.addSystem(a$1("tui.question.completed",{vars:{count:o.collectedAnswers.length}})),U.info("Question request completed",{requestID:o.id});}catch(c){U.error("Failed to reply question request",{error:c instanceof Error?c.message:String(c),stack:c instanceof Error?c.stack:void 0,requestID:o.id,answers:o.collectedAnswers,errorType:c instanceof Error?c.constructor.name:typeof c});let p=c instanceof Error?c.message:String(c);r.addSystem(`${a$1("tui.question.error")}: ${p}`),n.pendingQuestion=null;}}}parseAnswer(e,t){let n=e.trim();if(!t.options||t.options.length===0)return [n];let r=n.match(/^(\d+(?:,\s*\d+)*)$/);if(r?.[1]){let o=r[1].split(",").map(l=>Number.parseInt(l.trim(),10)).filter(l=>l>0&&l<=t.options.length);if(o.length===0)return null;if(!t.multiple&&o.length>1){let l=o[0];if(l!==void 0){let d=t.options[l-1];if(d)return [d.label]}return null}return o.map(l=>{let d=t.options[l-1];return d?d.label:""}).filter(l=>l!=="")}return t.custom===false?null:[n]}displayQuestion(e,t,n,r){let a=`
37
37
  ${a$1("tui.question.header",{vars:{current:t+1,total:n}})}
38
38
  `;if(a+=`${e.header}
39
39
  `,a+=`${e.question}
@@ -1,2 +1,2 @@
1
- import {a}from'./chunk-LFYBZHOI.mjs';import {a as a$1}from'./chunk-6M4SMEZK.mjs';import E from'path';import j from'fs/promises';import t from'zod';import {NamedError,lazy,PKG,Filesystem,Fetch,Shell}from'@easbot/utils';import {ZipReader,BlobReader,BlobWriter}from'@zip.js/zip.js';var P;(c=>{let $=a.create({service:"ripgrep"}),A=t.object({elapsed:t.object({secs:t.number(),nanos:t.number(),human:t.string()}),searches:t.number(),searches_with_match:t.number(),bytes_searched:t.number(),bytes_printed:t.number(),matched_lines:t.number(),matches:t.number()}),S=t.object({type:t.literal("begin"),data:t.object({path:t.object({text:t.string()})})});c.Match=t.object({type:t.literal("match"),data:t.object({path:t.object({text:t.string()}),lines:t.object({text:t.string()}),line_number:t.number(),absolute_offset:t.number(),submatches:t.array(t.object({match:t.object({text:t.string()}),start:t.number(),end:t.number()}))})});let M=t.object({type:t.literal("end"),data:t.object({path:t.object({text:t.string()}),binary_offset:t.number().nullable(),stats:A})}),D=t.object({type:t.literal("summary"),data:t.object({elapsed_total:t.object({human:t.string(),nanos:t.number(),secs:t.number()}),stats:A})}),O=t.union([S,c.Match,M,D]),W={"arm64-darwin":{platform:"aarch64-apple-darwin",extension:"tar.gz"},"arm64-linux":{platform:"aarch64-unknown-linux-gnu",extension:"tar.gz"},"x64-darwin":{platform:"x86_64-apple-darwin",extension:"tar.gz"},"x64-linux":{platform:"x86_64-unknown-linux-musl",extension:"tar.gz"},"x64-win32":{platform:"x86_64-pc-windows-msvc",extension:"zip"}};c.ExtractionFailedError=NamedError.create("RipgrepExtractionFailedError",t.object({filepath:t.string(),stderr:t.string()})),c.UnsupportedPlatformError=NamedError.create("RipgrepUnsupportedPlatformError",t.object({platform:t.string()})),c.DownloadFailedError=NamedError.create("RipgrepDownloadFailedError",t.object({url:t.string(),status:t.number()}));let L=lazy(async()=>{let e=await PKG.which("rg");if(e){if((await j.stat(e).catch(()=>{}))?.isFile())return {filepath:Filesystem.resolve(e)};$.warn("bun.which returned invalid rg path",{filepath:e});}let l=Filesystem.resolve(E.join(a$1.Path.bin,"rg"+(process.platform==="win32"?".exe":"")));if(!await PKG.file(l).exists()){let i=`${process.arch}-${process.platform}`,f=W[i];if(!f)throw new c.UnsupportedPlatformError({platform:i});let r="14.1.1",b=`ripgrep-${r}-${f.platform}.${f.extension}`,p=`https://github.com/BurntSushi/ripgrep/releases/download/${r}/${b}`,m=await Fetch.get(p,{responseType:"arrayBuffer"});if(!m.ok)throw new c.DownloadFailedError({url:p,status:m.status});let u=m.data,n=E.join(a$1.Path.bin,b);if(await PKG.write(n,new Uint8Array(u)),f.extension==="tar.gz"){let o=["tar","-xzf",n,"--strip-components=1"];i.endsWith("-darwin")&&o.push("--include=*/rg"),i.endsWith("-linux")&&o.push("--wildcards","*/rg");let a=await Shell.run(void 0,o.join(" "),{cwd:a$1.Path.bin});if(a.code!==0)throw new c.ExtractionFailedError({filepath:l,stderr:a.stderr})}if(f.extension==="zip"){let a=await PKG.file(n).arrayBuffer(),d=new ZipReader(new BlobReader(new Blob([a]))),g=await d.getEntries(),w;for(let v of g)if(v.filename.endsWith("rg.exe")){w=v;break}if(!w)throw new c.ExtractionFailedError({filepath:n,stderr:"rg.exe not found in zip archive"});let x=await w.getData(new BlobWriter);if(!x)throw new c.ExtractionFailedError({filepath:n,stderr:"Failed to extract rg.exe from zip archive"});let C=await x.arrayBuffer();await PKG.write(l,new Uint8Array(C)),await d.close();}await j.unlink(n),i.endsWith("-win32")||await j.chmod(l,493);}return {filepath:l}});async function N(){let{filepath:e}=await L();return e}c.filepath=N;async function*H(e){e.signal?.throwIfAborted();let l=await N(),s=["--files","--glob=!.git/*"];if(e.follow&&s.push("--follow"),e.hidden!==false&&s.push("--hidden"),e.maxDepth!==void 0&&s.push(`--max-depth=${e.maxDepth}`),e.glob)for(let r of e.glob)s.push(`--glob=${r}`);if(!(await j.stat(e.cwd).catch(()=>{}))?.isDirectory())throw Object.assign(new Error(`No such file or directory: '${e.cwd}'`),{code:"ENOENT",errno:-2,path:e.cwd});let f=(await PKG.run([l,...s],{cwd:e.cwd})).stdout.trim().split(/\r?\n/).filter(Boolean);for(let r of f)e.signal?.throwIfAborted(),r&&(yield r);}c.files=H;async function Q(e){$.info("tree",e);let l=await Array.fromAsync(c.files({cwd:e.cwd,signal:e.signal}));function s(n,o){let a=n.children.get(o);if(a)return a;let d={name:o,children:new Map};return n.children.set(o,d),d}let i={children:new Map};for(let n of l){if(n.includes(".easbot"))continue;let o=n.split(E.sep);if(o.length<2)continue;let a=i;for(let d of o.slice(0,-1))a=s(a,d);}function f(n){let o=0;for(let a of n.children.values())o+=1+f(a);return o}let r=f(i),b=e.limit??r,p=[],m=[];for(let n of Array.from(i.children.values()).sort((o,a)=>o.name.localeCompare(a.name)))m.push({node:n,path:n.name});let u=0;for(let n=0;n<m.length&&u<b;n++){let o=m[n];if(!o)continue;let{node:a,path:d}=o;p.push(d),u++;for(let g of Array.from(a.children.values()).sort((w,x)=>w.name.localeCompare(x.name)))m.push({node:g,path:`${d}/${g.name}`});}return r>u&&p.push(`[${r-u} truncated]`),p.join(`
1
+ import {a}from'./chunk-LFYBZHOI.mjs';import {a as a$1}from'./chunk-U4BAW7XF.mjs';import E from'path';import j from'fs/promises';import t from'zod';import {NamedError,lazy,PKG,Filesystem,Fetch,Shell}from'@easbot/utils';import {ZipReader,BlobReader,BlobWriter}from'@zip.js/zip.js';var P;(c=>{let $=a.create({service:"ripgrep"}),A=t.object({elapsed:t.object({secs:t.number(),nanos:t.number(),human:t.string()}),searches:t.number(),searches_with_match:t.number(),bytes_searched:t.number(),bytes_printed:t.number(),matched_lines:t.number(),matches:t.number()}),S=t.object({type:t.literal("begin"),data:t.object({path:t.object({text:t.string()})})});c.Match=t.object({type:t.literal("match"),data:t.object({path:t.object({text:t.string()}),lines:t.object({text:t.string()}),line_number:t.number(),absolute_offset:t.number(),submatches:t.array(t.object({match:t.object({text:t.string()}),start:t.number(),end:t.number()}))})});let M=t.object({type:t.literal("end"),data:t.object({path:t.object({text:t.string()}),binary_offset:t.number().nullable(),stats:A})}),D=t.object({type:t.literal("summary"),data:t.object({elapsed_total:t.object({human:t.string(),nanos:t.number(),secs:t.number()}),stats:A})}),O=t.union([S,c.Match,M,D]),W={"arm64-darwin":{platform:"aarch64-apple-darwin",extension:"tar.gz"},"arm64-linux":{platform:"aarch64-unknown-linux-gnu",extension:"tar.gz"},"x64-darwin":{platform:"x86_64-apple-darwin",extension:"tar.gz"},"x64-linux":{platform:"x86_64-unknown-linux-musl",extension:"tar.gz"},"x64-win32":{platform:"x86_64-pc-windows-msvc",extension:"zip"}};c.ExtractionFailedError=NamedError.create("RipgrepExtractionFailedError",t.object({filepath:t.string(),stderr:t.string()})),c.UnsupportedPlatformError=NamedError.create("RipgrepUnsupportedPlatformError",t.object({platform:t.string()})),c.DownloadFailedError=NamedError.create("RipgrepDownloadFailedError",t.object({url:t.string(),status:t.number()}));let L=lazy(async()=>{let e=await PKG.which("rg");if(e){if((await j.stat(e).catch(()=>{}))?.isFile())return {filepath:Filesystem.resolve(e)};$.warn("bun.which returned invalid rg path",{filepath:e});}let l=Filesystem.resolve(E.join(a$1.Path.bin,"rg"+(process.platform==="win32"?".exe":"")));if(!await PKG.file(l).exists()){let i=`${process.arch}-${process.platform}`,f=W[i];if(!f)throw new c.UnsupportedPlatformError({platform:i});let r="14.1.1",b=`ripgrep-${r}-${f.platform}.${f.extension}`,p=`https://github.com/BurntSushi/ripgrep/releases/download/${r}/${b}`,m=await Fetch.get(p,{responseType:"arrayBuffer"});if(!m.ok)throw new c.DownloadFailedError({url:p,status:m.status});let u=m.data,n=E.join(a$1.Path.bin,b);if(await PKG.write(n,new Uint8Array(u)),f.extension==="tar.gz"){let o=["tar","-xzf",n,"--strip-components=1"];i.endsWith("-darwin")&&o.push("--include=*/rg"),i.endsWith("-linux")&&o.push("--wildcards","*/rg");let a=await Shell.run(void 0,o.join(" "),{cwd:a$1.Path.bin});if(a.code!==0)throw new c.ExtractionFailedError({filepath:l,stderr:a.stderr})}if(f.extension==="zip"){let a=await PKG.file(n).arrayBuffer(),d=new ZipReader(new BlobReader(new Blob([a]))),g=await d.getEntries(),w;for(let v of g)if(v.filename.endsWith("rg.exe")){w=v;break}if(!w)throw new c.ExtractionFailedError({filepath:n,stderr:"rg.exe not found in zip archive"});let x=await w.getData(new BlobWriter);if(!x)throw new c.ExtractionFailedError({filepath:n,stderr:"Failed to extract rg.exe from zip archive"});let C=await x.arrayBuffer();await PKG.write(l,new Uint8Array(C)),await d.close();}await j.unlink(n),i.endsWith("-win32")||await j.chmod(l,493);}return {filepath:l}});async function N(){let{filepath:e}=await L();return e}c.filepath=N;async function*H(e){e.signal?.throwIfAborted();let l=await N(),s=["--files","--glob=!.git/*"];if(e.follow&&s.push("--follow"),e.hidden!==false&&s.push("--hidden"),e.maxDepth!==void 0&&s.push(`--max-depth=${e.maxDepth}`),e.glob)for(let r of e.glob)s.push(`--glob=${r}`);if(!(await j.stat(e.cwd).catch(()=>{}))?.isDirectory())throw Object.assign(new Error(`No such file or directory: '${e.cwd}'`),{code:"ENOENT",errno:-2,path:e.cwd});let f=(await PKG.run([l,...s],{cwd:e.cwd})).stdout.trim().split(/\r?\n/).filter(Boolean);for(let r of f)e.signal?.throwIfAborted(),r&&(yield r);}c.files=H;async function Q(e){$.info("tree",e);let l=await Array.fromAsync(c.files({cwd:e.cwd,signal:e.signal}));function s(n,o){let a=n.children.get(o);if(a)return a;let d={name:o,children:new Map};return n.children.set(o,d),d}let i={children:new Map};for(let n of l){if(n.includes(".easbot"))continue;let o=n.split(E.sep);if(o.length<2)continue;let a=i;for(let d of o.slice(0,-1))a=s(a,d);}function f(n){let o=0;for(let a of n.children.values())o+=1+f(a);return o}let r=f(i),b=e.limit??r,p=[],m=[];for(let n of Array.from(i.children.values()).sort((o,a)=>o.name.localeCompare(a.name)))m.push({node:n,path:n.name});let u=0;for(let n=0;n<m.length&&u<b;n++){let o=m[n];if(!o)continue;let{node:a,path:d}=o;p.push(d),u++;for(let g of Array.from(a.children.values()).sort((w,x)=>w.name.localeCompare(x.name)))m.push({node:g,path:`${d}/${g.name}`});}return r>u&&p.push(`[${r-u} truncated]`),p.join(`
2
2
  `)}c.tree=Q;async function R(e){let l=await N(),s=["--json","--hidden","--glob=!.git/*"];if(e.follow&&s.push("--follow"),e.glob)for(let r of e.glob)s.push(`--glob=${r}`);e.limit&&s.push(`--max-count=${e.limit}`),s.push("--"),s.push(e.pattern);let i=await PKG.run([l,...s],{cwd:e.cwd});return i.code!==0?[]:i.stdout.trim().split(/\r?\n/).filter(Boolean).map(r=>JSON.parse(r)).map(r=>O.parse(r)).filter(r=>r.type==="match").map(r=>r.data)}c.search=R;})(P||(P={}));export{P as a};
@@ -1 +1 @@
1
- import {Na,pb}from'./chunk-MMN3J3YS.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-EVUKT3AP.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 Na.provide({directory:r,init:pb,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-EVUKT3AP.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 Na.provide({directory:i,init:pb,fn:async()=>{let{buildProgram:r}=await import('./build-program-WP5P33JQ.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 {Na,pb}from'./chunk-KZLMEUTB.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-V7QPWK55.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 Na.provide({directory:r,init:pb,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-V7QPWK55.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 Na.provide({directory:i,init:pb,fn:async()=>{let{buildProgram:r}=await import('./build-program-NEPEF27C.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 +1 @@
1
- import {formatLocalISOCompact}from'@easbot/utils';import {CommandMetadataSchema}from'@easbot/plugin';export{CommandMetadataSchema as a}from'@easbot/plugin';async function h(n){let{ConfigMarkdown:t}=await import('./markdown-Z6UXVBNP.mjs'),e=await t.parse(n);return {metadata:CommandMetadataSchema.parse(e.data),content:e.content}}function x(n,t,e="command"){return {name:n.name,description:n.description,agent:n.agent,model:n.model,source:e,scope:n.scope,commandType:n.commandType??"prompt",hints:n.hints??[],hidden:n.hidden??false,execute:async(o,i)=>{let m=w(t,o);return {title:n.name,metadata:{sessionID:i.sessionID},output:m,success:true,parts:[{type:"text",text:m}]}}}}async function D(n,t="command"){let{glob:e}=await import('glob'),{Filesystem:o}=await import('@easbot/utils');if(!await o.isDir(n))return [];let i=await e("*.md",{cwd:n,absolute:true,nodir:true,follow:false,dot:false}),m=[];for(let r of i){let{ConfigMarkdown:d}=await import('./markdown-Z6UXVBNP.mjs'),{Bus:u}=await import('./bus-CBFYNJXU.mjs'),{Session:p}=await import('./session-SD2Y7TSF.mjs'),{NamedError:C}=await import('@easbot/utils');await d.parse(r).then(a=>{let s=CommandMetadataSchema.parse(a.data),f=x(s,a.content,t);m.push(f);}).catch(a=>{let s=a instanceof Error?a.message:`Failed to load command ${r}`;u.publish(p.Event.Error,{error:new C.Unknown({message:s}).toObject()});});}return m}function g(n){return n instanceof Date?formatLocalISOCompact(n):Array.isArray(n)||n!==null&&typeof n=="object"&&n.constructor===Object?JSON.stringify(n,null,2):String(n)}function w(n,t){return typeof t=="string"?n.replace(/\{\{ARGUMENTS\}\}/gi,t):n.replace(/\{\{(\w+)\}\}/gi,(e,o)=>{let i=o.toUpperCase();if(i==="ARGUMENTS")return JSON.stringify(t);let m=t[o]??t[i];return m===void 0?`{{${o}}}`:g(m)})}function I(n,t){let{init:e,isEnabled:o,...i}=t;return {...i,name:n,isEnabled:o,init:e?async m=>({isEnabled:(await e(m)).isEnabled??(typeof o=="function"?await o():o)}):void 0}}export{h as b,x as c,D as d,w as e,I as f};
1
+ import {formatLocalISOCompact}from'@easbot/utils';import {CommandMetadataSchema}from'@easbot/plugin';export{CommandMetadataSchema as a}from'@easbot/plugin';async function h(n){let{ConfigMarkdown:t}=await import('./markdown-Z6UXVBNP.mjs'),e=await t.parse(n);return {metadata:CommandMetadataSchema.parse(e.data),content:e.content}}function x(n,t,e="command"){return {name:n.name,description:n.description,agent:n.agent,model:n.model,source:e,scope:n.scope,commandType:n.commandType??"prompt",hints:n.hints??[],hidden:n.hidden??false,execute:async(o,i)=>{let m=w(t,o);return {title:n.name,metadata:{sessionID:i.sessionID},output:m,success:true,parts:[{type:"text",text:m}]}}}}async function D(n,t="command"){let{glob:e}=await import('glob'),{Filesystem:o}=await import('@easbot/utils');if(!await o.isDir(n))return [];let i=await e("*.md",{cwd:n,absolute:true,nodir:true,follow:false,dot:false}),m=[];for(let r of i){let{ConfigMarkdown:d}=await import('./markdown-Z6UXVBNP.mjs'),{Bus:u}=await import('./bus-FZCZO73P.mjs'),{Session:p}=await import('./session-UI6NLBHC.mjs'),{NamedError:C}=await import('@easbot/utils');await d.parse(r).then(a=>{let s=CommandMetadataSchema.parse(a.data),f=x(s,a.content,t);m.push(f);}).catch(a=>{let s=a instanceof Error?a.message:`Failed to load command ${r}`;u.publish(p.Event.Error,{error:new C.Unknown({message:s}).toObject()});});}return m}function g(n){return n instanceof Date?formatLocalISOCompact(n):Array.isArray(n)||n!==null&&typeof n=="object"&&n.constructor===Object?JSON.stringify(n,null,2):String(n)}function w(n,t){return typeof t=="string"?n.replace(/\{\{ARGUMENTS\}\}/gi,t):n.replace(/\{\{(\w+)\}\}/gi,(e,o)=>{let i=o.toUpperCase();if(i==="ARGUMENTS")return JSON.stringify(t);let m=t[o]??t[i];return m===void 0?`{{${o}}}`:g(m)})}function I(n,t){let{init:e,isEnabled:o,...i}=t;return {...i,name:n,isEnabled:o,init:e?async m=>({isEnabled:(await e(m)).isEnabled??(typeof o=="function"?await o():o)}):void 0}}export{h as b,x as c,D as d,w as e,I as f};
@@ -1 +1 @@
1
- import {Na}from'./chunk-MMN3J3YS.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import {a as a$1}from'./chunk-6M4SMEZK.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(Na.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 {Na}from'./chunk-KZLMEUTB.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import {a as a$1}from'./chunk-U4BAW7XF.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(Na.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-6M4SMEZK.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-U4BAW7XF.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};