openbotgate 1.0.0

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 (425) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +293 -0
  3. package/bin/openbotgate.js +31 -0
  4. package/dist/config/config.d.ts +56 -0
  5. package/dist/config/config.d.ts.map +1 -0
  6. package/dist/config/config.js +136 -0
  7. package/dist/config/config.js.map +1 -0
  8. package/dist/debug.d.ts +2 -0
  9. package/dist/debug.d.ts.map +1 -0
  10. package/dist/debug.js +33 -0
  11. package/dist/debug.js.map +1 -0
  12. package/dist/gateway/bluebubbles.d.ts +12 -0
  13. package/dist/gateway/bluebubbles.d.ts.map +1 -0
  14. package/dist/gateway/bluebubbles.js +80 -0
  15. package/dist/gateway/bluebubbles.js.map +1 -0
  16. package/dist/gateway/catalog.d.ts +10 -0
  17. package/dist/gateway/catalog.d.ts.map +1 -0
  18. package/dist/gateway/catalog.js +28 -0
  19. package/dist/gateway/catalog.js.map +1 -0
  20. package/dist/gateway/discord.d.ts +12 -0
  21. package/dist/gateway/discord.d.ts.map +1 -0
  22. package/dist/gateway/discord.js +83 -0
  23. package/dist/gateway/discord.js.map +1 -0
  24. package/dist/gateway/feishu.d.ts +35 -0
  25. package/dist/gateway/feishu.d.ts.map +1 -0
  26. package/dist/gateway/feishu.js +290 -0
  27. package/dist/gateway/feishu.js.map +1 -0
  28. package/dist/gateway/googlechat.d.ts +11 -0
  29. package/dist/gateway/googlechat.d.ts.map +1 -0
  30. package/dist/gateway/googlechat.js +92 -0
  31. package/dist/gateway/googlechat.js.map +1 -0
  32. package/dist/gateway/imessage.d.ts +12 -0
  33. package/dist/gateway/imessage.d.ts.map +1 -0
  34. package/dist/gateway/imessage.js +84 -0
  35. package/dist/gateway/imessage.js.map +1 -0
  36. package/dist/gateway/index.d.ts +9 -0
  37. package/dist/gateway/index.d.ts.map +1 -0
  38. package/dist/gateway/index.js +27 -0
  39. package/dist/gateway/index.js.map +1 -0
  40. package/dist/gateway/line.d.ts +13 -0
  41. package/dist/gateway/line.d.ts.map +1 -0
  42. package/dist/gateway/line.js +80 -0
  43. package/dist/gateway/line.js.map +1 -0
  44. package/dist/gateway/matrix.d.ts +12 -0
  45. package/dist/gateway/matrix.d.ts.map +1 -0
  46. package/dist/gateway/matrix.js +105 -0
  47. package/dist/gateway/matrix.js.map +1 -0
  48. package/dist/gateway/mattermost.d.ts +14 -0
  49. package/dist/gateway/mattermost.d.ts.map +1 -0
  50. package/dist/gateway/mattermost.js +92 -0
  51. package/dist/gateway/mattermost.js.map +1 -0
  52. package/dist/gateway/msteams.d.ts +12 -0
  53. package/dist/gateway/msteams.d.ts.map +1 -0
  54. package/dist/gateway/msteams.js +119 -0
  55. package/dist/gateway/msteams.js.map +1 -0
  56. package/dist/gateway/nextcloud-talk.d.ts +11 -0
  57. package/dist/gateway/nextcloud-talk.d.ts.map +1 -0
  58. package/dist/gateway/nextcloud-talk.js +93 -0
  59. package/dist/gateway/nextcloud-talk.js.map +1 -0
  60. package/dist/gateway/nostr.d.ts +15 -0
  61. package/dist/gateway/nostr.d.ts.map +1 -0
  62. package/dist/gateway/nostr.js +95 -0
  63. package/dist/gateway/nostr.js.map +1 -0
  64. package/dist/gateway/qq-guild.d.ts +14 -0
  65. package/dist/gateway/qq-guild.d.ts.map +1 -0
  66. package/dist/gateway/qq-guild.js +121 -0
  67. package/dist/gateway/qq-guild.js.map +1 -0
  68. package/dist/gateway/qq.d.ts +14 -0
  69. package/dist/gateway/qq.d.ts.map +1 -0
  70. package/dist/gateway/qq.js +121 -0
  71. package/dist/gateway/qq.js.map +1 -0
  72. package/dist/gateway/registry.d.ts +4 -0
  73. package/dist/gateway/registry.d.ts.map +1 -0
  74. package/dist/gateway/registry.js +38 -0
  75. package/dist/gateway/registry.js.map +1 -0
  76. package/dist/gateway/signal.d.ts +12 -0
  77. package/dist/gateway/signal.d.ts.map +1 -0
  78. package/dist/gateway/signal.js +80 -0
  79. package/dist/gateway/signal.js.map +1 -0
  80. package/dist/gateway/slack.d.ts +12 -0
  81. package/dist/gateway/slack.d.ts.map +1 -0
  82. package/dist/gateway/slack.js +83 -0
  83. package/dist/gateway/slack.js.map +1 -0
  84. package/dist/gateway/stub.d.ts +7 -0
  85. package/dist/gateway/stub.d.ts.map +1 -0
  86. package/dist/gateway/stub.js +23 -0
  87. package/dist/gateway/stub.js.map +1 -0
  88. package/dist/gateway/telegram.d.ts +12 -0
  89. package/dist/gateway/telegram.d.ts.map +1 -0
  90. package/dist/gateway/telegram.js +61 -0
  91. package/dist/gateway/telegram.js.map +1 -0
  92. package/dist/gateway/tlon.d.ts +12 -0
  93. package/dist/gateway/tlon.d.ts.map +1 -0
  94. package/dist/gateway/tlon.js +105 -0
  95. package/dist/gateway/tlon.js.map +1 -0
  96. package/dist/gateway/types.d.ts +21 -0
  97. package/dist/gateway/types.d.ts.map +1 -0
  98. package/dist/gateway/types.js +3 -0
  99. package/dist/gateway/types.js.map +1 -0
  100. package/dist/gateway/whatsapp.d.ts +12 -0
  101. package/dist/gateway/whatsapp.d.ts.map +1 -0
  102. package/dist/gateway/whatsapp.js +81 -0
  103. package/dist/gateway/whatsapp.js.map +1 -0
  104. package/dist/gateway/zalo.d.ts +12 -0
  105. package/dist/gateway/zalo.d.ts.map +1 -0
  106. package/dist/gateway/zalo.js +77 -0
  107. package/dist/gateway/zalo.js.map +1 -0
  108. package/dist/gateway/zalouser.d.ts +12 -0
  109. package/dist/gateway/zalouser.d.ts.map +1 -0
  110. package/dist/gateway/zalouser.js +85 -0
  111. package/dist/gateway/zalouser.js.map +1 -0
  112. package/dist/handler/code/agent.d.ts +10 -0
  113. package/dist/handler/code/agent.d.ts.map +1 -0
  114. package/dist/handler/code/agent.js +63 -0
  115. package/dist/handler/code/agent.js.map +1 -0
  116. package/dist/handler/code/code.d.ts +15 -0
  117. package/dist/handler/code/code.d.ts.map +1 -0
  118. package/dist/handler/code/code.js +129 -0
  119. package/dist/handler/code/code.js.map +1 -0
  120. package/dist/handler/code/model.d.ts +10 -0
  121. package/dist/handler/code/model.d.ts.map +1 -0
  122. package/dist/handler/code/model.js +63 -0
  123. package/dist/handler/code/model.js.map +1 -0
  124. package/dist/handler/code/new.d.ts +7 -0
  125. package/dist/handler/code/new.d.ts.map +1 -0
  126. package/dist/handler/code/new.js +27 -0
  127. package/dist/handler/code/new.js.map +1 -0
  128. package/dist/handler/code/opencode.d.ts +12 -0
  129. package/dist/handler/code/opencode.d.ts.map +1 -0
  130. package/dist/handler/code/opencode.js +88 -0
  131. package/dist/handler/code/opencode.js.map +1 -0
  132. package/dist/handler/code/session.d.ts +9 -0
  133. package/dist/handler/code/session.d.ts.map +1 -0
  134. package/dist/handler/code/session.js +55 -0
  135. package/dist/handler/code/session.js.map +1 -0
  136. package/dist/handler/code/workspace.d.ts +10 -0
  137. package/dist/handler/code/workspace.d.ts.map +1 -0
  138. package/dist/handler/code/workspace.js +80 -0
  139. package/dist/handler/code/workspace.js.map +1 -0
  140. package/dist/handler/commands/agent.d.ts +10 -0
  141. package/dist/handler/commands/agent.d.ts.map +1 -0
  142. package/dist/handler/commands/agent.js +63 -0
  143. package/dist/handler/commands/agent.js.map +1 -0
  144. package/dist/handler/commands/async.d.ts +3 -0
  145. package/dist/handler/commands/async.d.ts.map +1 -0
  146. package/dist/handler/commands/async.js +30 -0
  147. package/dist/handler/commands/async.js.map +1 -0
  148. package/dist/handler/commands/claude.d.ts +3 -0
  149. package/dist/handler/commands/claude.d.ts.map +1 -0
  150. package/dist/handler/commands/claude.js +19 -0
  151. package/dist/handler/commands/claude.js.map +1 -0
  152. package/dist/handler/commands/code.d.ts +15 -0
  153. package/dist/handler/commands/code.d.ts.map +1 -0
  154. package/dist/handler/commands/code.js +133 -0
  155. package/dist/handler/commands/code.js.map +1 -0
  156. package/dist/handler/commands/git.d.ts +3 -0
  157. package/dist/handler/commands/git.d.ts.map +1 -0
  158. package/dist/handler/commands/git.js +25 -0
  159. package/dist/handler/commands/git.js.map +1 -0
  160. package/dist/handler/commands/help.d.ts +3 -0
  161. package/dist/handler/commands/help.d.ts.map +1 -0
  162. package/dist/handler/commands/help.js +49 -0
  163. package/dist/handler/commands/help.js.map +1 -0
  164. package/dist/handler/commands/index.d.ts +10 -0
  165. package/dist/handler/commands/index.d.ts.map +1 -0
  166. package/dist/handler/commands/index.js +43 -0
  167. package/dist/handler/commands/index.js.map +1 -0
  168. package/dist/handler/commands/model.d.ts +10 -0
  169. package/dist/handler/commands/model.d.ts.map +1 -0
  170. package/dist/handler/commands/model.js +63 -0
  171. package/dist/handler/commands/model.js.map +1 -0
  172. package/dist/handler/commands/new.d.ts +3 -0
  173. package/dist/handler/commands/new.d.ts.map +1 -0
  174. package/dist/handler/commands/new.js +25 -0
  175. package/dist/handler/commands/new.js.map +1 -0
  176. package/dist/handler/commands/opencode.d.ts +12 -0
  177. package/dist/handler/commands/opencode.d.ts.map +1 -0
  178. package/dist/handler/commands/opencode.js +131 -0
  179. package/dist/handler/commands/opencode.js.map +1 -0
  180. package/dist/handler/commands/session.d.ts +9 -0
  181. package/dist/handler/commands/session.d.ts.map +1 -0
  182. package/dist/handler/commands/session.js +55 -0
  183. package/dist/handler/commands/session.js.map +1 -0
  184. package/dist/handler/commands/shell.d.ts +11 -0
  185. package/dist/handler/commands/shell.d.ts.map +1 -0
  186. package/dist/handler/commands/shell.js +142 -0
  187. package/dist/handler/commands/shell.js.map +1 -0
  188. package/dist/handler/commands/status.d.ts +3 -0
  189. package/dist/handler/commands/status.d.ts.map +1 -0
  190. package/dist/handler/commands/status.js +21 -0
  191. package/dist/handler/commands/status.js.map +1 -0
  192. package/dist/handler/commands/sync.d.ts +3 -0
  193. package/dist/handler/commands/sync.d.ts.map +1 -0
  194. package/dist/handler/commands/sync.js +26 -0
  195. package/dist/handler/commands/sync.js.map +1 -0
  196. package/dist/handler/commands/tasks.d.ts +10 -0
  197. package/dist/handler/commands/tasks.d.ts.map +1 -0
  198. package/dist/handler/commands/tasks.js +58 -0
  199. package/dist/handler/commands/tasks.js.map +1 -0
  200. package/dist/handler/commands/utils.d.ts +10 -0
  201. package/dist/handler/commands/utils.d.ts.map +1 -0
  202. package/dist/handler/commands/utils.js +63 -0
  203. package/dist/handler/commands/utils.js.map +1 -0
  204. package/dist/handler/commands/workspace.d.ts +10 -0
  205. package/dist/handler/commands/workspace.d.ts.map +1 -0
  206. package/dist/handler/commands/workspace.js +80 -0
  207. package/dist/handler/commands/workspace.js.map +1 -0
  208. package/dist/handler/dedup.d.ts +3 -0
  209. package/dist/handler/dedup.d.ts.map +1 -0
  210. package/dist/handler/dedup.js +29 -0
  211. package/dist/handler/dedup.js.map +1 -0
  212. package/dist/handler/index.d.ts +21 -0
  213. package/dist/handler/index.d.ts.map +1 -0
  214. package/dist/handler/index.js +189 -0
  215. package/dist/handler/index.js.map +1 -0
  216. package/dist/handler/parse.d.ts +30 -0
  217. package/dist/handler/parse.d.ts.map +1 -0
  218. package/dist/handler/parse.js +57 -0
  219. package/dist/handler/parse.js.map +1 -0
  220. package/dist/handler/session/agent.d.ts +10 -0
  221. package/dist/handler/session/agent.d.ts.map +1 -0
  222. package/dist/handler/session/agent.js +63 -0
  223. package/dist/handler/session/agent.js.map +1 -0
  224. package/dist/handler/session/model.d.ts +10 -0
  225. package/dist/handler/session/model.d.ts.map +1 -0
  226. package/dist/handler/session/model.js +63 -0
  227. package/dist/handler/session/model.js.map +1 -0
  228. package/dist/handler/session/new.d.ts +3 -0
  229. package/dist/handler/session/new.d.ts.map +1 -0
  230. package/dist/handler/session/new.js +25 -0
  231. package/dist/handler/session/new.js.map +1 -0
  232. package/dist/handler/session/session.d.ts +9 -0
  233. package/dist/handler/session/session.d.ts.map +1 -0
  234. package/dist/handler/session/session.js +55 -0
  235. package/dist/handler/session/session.js.map +1 -0
  236. package/dist/handler/session/workspace.d.ts +10 -0
  237. package/dist/handler/session/workspace.d.ts.map +1 -0
  238. package/dist/handler/session/workspace.js +80 -0
  239. package/dist/handler/session/workspace.js.map +1 -0
  240. package/dist/handler/shell/git.d.ts +3 -0
  241. package/dist/handler/shell/git.d.ts.map +1 -0
  242. package/dist/handler/shell/git.js +25 -0
  243. package/dist/handler/shell/git.js.map +1 -0
  244. package/dist/handler/shell/runShell.d.ts +7 -0
  245. package/dist/handler/shell/runShell.d.ts.map +1 -0
  246. package/dist/handler/shell/runShell.js +42 -0
  247. package/dist/handler/shell/runShell.js.map +1 -0
  248. package/dist/handler/shell/utils.d.ts +10 -0
  249. package/dist/handler/shell/utils.d.ts.map +1 -0
  250. package/dist/handler/shell/utils.js +63 -0
  251. package/dist/handler/shell/utils.js.map +1 -0
  252. package/dist/handler/streamHandler.d.ts +9 -0
  253. package/dist/handler/streamHandler.d.ts.map +1 -0
  254. package/dist/handler/streamHandler.js +49 -0
  255. package/dist/handler/streamHandler.js.map +1 -0
  256. package/dist/handler/types.d.ts +36 -0
  257. package/dist/handler/types.d.ts.map +1 -0
  258. package/dist/handler/types.js +3 -0
  259. package/dist/handler/types.js.map +1 -0
  260. package/dist/handlers/messageHandler.d.ts +3 -0
  261. package/dist/handlers/messageHandler.d.ts.map +1 -0
  262. package/dist/handlers/messageHandler.js +249 -0
  263. package/dist/handlers/messageHandler.js.map +1 -0
  264. package/dist/handlers/messageHandlerOfficial.d.ts +2 -0
  265. package/dist/handlers/messageHandlerOfficial.d.ts.map +1 -0
  266. package/dist/handlers/messageHandlerOfficial.js +302 -0
  267. package/dist/handlers/messageHandlerOfficial.js.map +1 -0
  268. package/dist/handlers/messageHandlerV2.d.ts +2 -0
  269. package/dist/handlers/messageHandlerV2.d.ts.map +1 -0
  270. package/dist/handlers/messageHandlerV2.js +250 -0
  271. package/dist/handlers/messageHandlerV2.js.map +1 -0
  272. package/dist/helloWorld.d.ts +5 -0
  273. package/dist/helloWorld.d.ts.map +1 -0
  274. package/dist/helloWorld.js +19 -0
  275. package/dist/helloWorld.js.map +1 -0
  276. package/dist/index.d.ts +2 -0
  277. package/dist/index.d.ts.map +1 -0
  278. package/dist/index.js +25 -0
  279. package/dist/index.js.map +1 -0
  280. package/dist/indexOfficial.d.ts +4 -0
  281. package/dist/indexOfficial.d.ts.map +1 -0
  282. package/dist/indexOfficial.js +92 -0
  283. package/dist/indexOfficial.js.map +1 -0
  284. package/dist/indexV2.d.ts +4 -0
  285. package/dist/indexV2.d.ts.map +1 -0
  286. package/dist/indexV2.js +109 -0
  287. package/dist/indexV2.js.map +1 -0
  288. package/dist/runtime/cliTools.d.ts +17 -0
  289. package/dist/runtime/cliTools.d.ts.map +1 -0
  290. package/dist/runtime/cliTools.js +97 -0
  291. package/dist/runtime/cliTools.js.map +1 -0
  292. package/dist/runtime/executor.d.ts +27 -0
  293. package/dist/runtime/executor.d.ts.map +1 -0
  294. package/dist/runtime/executor.js +108 -0
  295. package/dist/runtime/executor.js.map +1 -0
  296. package/dist/runtime/sessionManager.d.ts +42 -0
  297. package/dist/runtime/sessionManager.d.ts.map +1 -0
  298. package/dist/runtime/sessionManager.js +161 -0
  299. package/dist/runtime/sessionManager.js.map +1 -0
  300. package/dist/runtime/streamHandler.d.ts +9 -0
  301. package/dist/runtime/streamHandler.d.ts.map +1 -0
  302. package/dist/runtime/streamHandler.js +49 -0
  303. package/dist/runtime/streamHandler.js.map +1 -0
  304. package/dist/runtime/taskManager.d.ts +26 -0
  305. package/dist/runtime/taskManager.d.ts.map +1 -0
  306. package/dist/runtime/taskManager.js +153 -0
  307. package/dist/runtime/taskManager.js.map +1 -0
  308. package/dist/runtime/tools/base.d.ts +81 -0
  309. package/dist/runtime/tools/base.d.ts.map +1 -0
  310. package/dist/runtime/tools/base.js +100 -0
  311. package/dist/runtime/tools/base.js.map +1 -0
  312. package/dist/runtime/tools/claudecode.d.ts +19 -0
  313. package/dist/runtime/tools/claudecode.d.ts.map +1 -0
  314. package/dist/runtime/tools/claudecode.js +59 -0
  315. package/dist/runtime/tools/claudecode.js.map +1 -0
  316. package/dist/runtime/tools/codex.d.ts +19 -0
  317. package/dist/runtime/tools/codex.d.ts.map +1 -0
  318. package/dist/runtime/tools/codex.js +68 -0
  319. package/dist/runtime/tools/codex.js.map +1 -0
  320. package/dist/runtime/tools/cursor.d.ts +15 -0
  321. package/dist/runtime/tools/cursor.d.ts.map +1 -0
  322. package/dist/runtime/tools/cursor.js +33 -0
  323. package/dist/runtime/tools/cursor.js.map +1 -0
  324. package/dist/runtime/tools/cursorcode.d.ts +20 -0
  325. package/dist/runtime/tools/cursorcode.d.ts.map +1 -0
  326. package/dist/runtime/tools/cursorcode.js +99 -0
  327. package/dist/runtime/tools/cursorcode.js.map +1 -0
  328. package/dist/runtime/tools/geminicode.d.ts +20 -0
  329. package/dist/runtime/tools/geminicode.d.ts.map +1 -0
  330. package/dist/runtime/tools/geminicode.js +65 -0
  331. package/dist/runtime/tools/geminicode.js.map +1 -0
  332. package/dist/runtime/tools/index.d.ts +11 -0
  333. package/dist/runtime/tools/index.d.ts.map +1 -0
  334. package/dist/runtime/tools/index.js +36 -0
  335. package/dist/runtime/tools/index.js.map +1 -0
  336. package/dist/runtime/tools/kimi.d.ts +16 -0
  337. package/dist/runtime/tools/kimi.d.ts.map +1 -0
  338. package/dist/runtime/tools/kimi.js +32 -0
  339. package/dist/runtime/tools/kimi.js.map +1 -0
  340. package/dist/runtime/tools/kimicode.d.ts +16 -0
  341. package/dist/runtime/tools/kimicode.d.ts.map +1 -0
  342. package/dist/runtime/tools/kimicode.js +43 -0
  343. package/dist/runtime/tools/kimicode.js.map +1 -0
  344. package/dist/runtime/tools/nanobot.d.ts +19 -0
  345. package/dist/runtime/tools/nanobot.d.ts.map +1 -0
  346. package/dist/runtime/tools/nanobot.js +94 -0
  347. package/dist/runtime/tools/nanobot.js.map +1 -0
  348. package/dist/runtime/tools/openaicodex.d.ts +17 -0
  349. package/dist/runtime/tools/openaicodex.d.ts.map +1 -0
  350. package/dist/runtime/tools/openaicodex.js +54 -0
  351. package/dist/runtime/tools/openaicodex.js.map +1 -0
  352. package/dist/runtime/tools/openclaw.d.ts +24 -0
  353. package/dist/runtime/tools/openclaw.d.ts.map +1 -0
  354. package/dist/runtime/tools/openclaw.js +88 -0
  355. package/dist/runtime/tools/openclaw.js.map +1 -0
  356. package/dist/runtime/tools/opencode.d.ts +23 -0
  357. package/dist/runtime/tools/opencode.d.ts.map +1 -0
  358. package/dist/runtime/tools/opencode.js +82 -0
  359. package/dist/runtime/tools/opencode.js.map +1 -0
  360. package/dist/runtime/tools/qwencode.d.ts +17 -0
  361. package/dist/runtime/tools/qwencode.d.ts.map +1 -0
  362. package/dist/runtime/tools/qwencode.js +49 -0
  363. package/dist/runtime/tools/qwencode.js.map +1 -0
  364. package/dist/runtime/tools/registerAll.d.ts +9 -0
  365. package/dist/runtime/tools/registerAll.d.ts.map +1 -0
  366. package/dist/runtime/tools/registerAll.js +29 -0
  367. package/dist/runtime/tools/registerAll.js.map +1 -0
  368. package/dist/runtime/tools/registry.d.ts +21 -0
  369. package/dist/runtime/tools/registry.d.ts.map +1 -0
  370. package/dist/runtime/tools/registry.js +41 -0
  371. package/dist/runtime/tools/registry.js.map +1 -0
  372. package/dist/runtime/tools/types.d.ts +67 -0
  373. package/dist/runtime/tools/types.d.ts.map +1 -0
  374. package/dist/runtime/tools/types.js +3 -0
  375. package/dist/runtime/tools/types.js.map +1 -0
  376. package/dist/services/cliTools.d.ts +32 -0
  377. package/dist/services/cliTools.d.ts.map +1 -0
  378. package/dist/services/cliTools.js +149 -0
  379. package/dist/services/cliTools.js.map +1 -0
  380. package/dist/services/commandExecutor.d.ts +29 -0
  381. package/dist/services/commandExecutor.d.ts.map +1 -0
  382. package/dist/services/commandExecutor.js +125 -0
  383. package/dist/services/commandExecutor.js.map +1 -0
  384. package/dist/services/commandExecutor.test.d.ts +2 -0
  385. package/dist/services/commandExecutor.test.d.ts.map +1 -0
  386. package/dist/services/commandExecutor.test.js +54 -0
  387. package/dist/services/commandExecutor.test.js.map +1 -0
  388. package/dist/services/feishuService.d.ts +14 -0
  389. package/dist/services/feishuService.d.ts.map +1 -0
  390. package/dist/services/feishuService.js +103 -0
  391. package/dist/services/feishuService.js.map +1 -0
  392. package/dist/services/feishuServiceOfficial.d.ts +15 -0
  393. package/dist/services/feishuServiceOfficial.d.ts.map +1 -0
  394. package/dist/services/feishuServiceOfficial.js +167 -0
  395. package/dist/services/feishuServiceOfficial.js.map +1 -0
  396. package/dist/services/feishuServiceV2.d.ts +20 -0
  397. package/dist/services/feishuServiceV2.d.ts.map +1 -0
  398. package/dist/services/feishuServiceV2.js +222 -0
  399. package/dist/services/feishuServiceV2.js.map +1 -0
  400. package/dist/services/taskManager.d.ts +25 -0
  401. package/dist/services/taskManager.d.ts.map +1 -0
  402. package/dist/services/taskManager.js +129 -0
  403. package/dist/services/taskManager.js.map +1 -0
  404. package/dist/services/taskManagerSimple.d.ts +25 -0
  405. package/dist/services/taskManagerSimple.d.ts.map +1 -0
  406. package/dist/services/taskManagerSimple.js +147 -0
  407. package/dist/services/taskManagerSimple.js.map +1 -0
  408. package/dist/testHelloWorld.d.ts +2 -0
  409. package/dist/testHelloWorld.d.ts.map +1 -0
  410. package/dist/testHelloWorld.js +18 -0
  411. package/dist/testHelloWorld.js.map +1 -0
  412. package/dist/utils/encoding.d.ts +3 -0
  413. package/dist/utils/encoding.d.ts.map +1 -0
  414. package/dist/utils/encoding.js +110 -0
  415. package/dist/utils/encoding.js.map +1 -0
  416. package/dist/utils/logger.d.ts +19 -0
  417. package/dist/utils/logger.d.ts.map +1 -0
  418. package/dist/utils/logger.js +192 -0
  419. package/dist/utils/logger.js.map +1 -0
  420. package/dist/utils/shellEncoding.d.ts +5 -0
  421. package/dist/utils/shellEncoding.d.ts.map +1 -0
  422. package/dist/utils/shellEncoding.js +117 -0
  423. package/dist/utils/shellEncoding.js.map +1 -0
  424. package/openbotgate.example.yml +60 -0
  425. package/package.json +81 -0
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.run = run;
7
+ const registry_1 = require("../../runtime/tools/registry");
8
+ const sessionManager_1 = require("../../runtime/sessionManager");
9
+ const logger_1 = __importDefault(require("../../utils/logger"));
10
+ /**
11
+ * /session command - list or switch session
12
+ *
13
+ * /session -> list sessions or show current
14
+ * /session <id> -> switch to specific session
15
+ */
16
+ async function run(ctx) {
17
+ const args = ctx.args.trim();
18
+ const session = sessionManager_1.sessionManager.getSession(ctx.senderId);
19
+ const adapter = registry_1.toolRegistry.get(session.tool);
20
+ if (!adapter) {
21
+ await ctx.reply(`Current tool "${session.tool}" is not available.`);
22
+ return;
23
+ }
24
+ // Switch session
25
+ if (args) {
26
+ if (!adapter.capabilities.session) {
27
+ await ctx.reply(`${adapter.displayName} does not support session management.`);
28
+ return;
29
+ }
30
+ sessionManager_1.sessionManager.updateSession(ctx.senderId, { sessionId: args });
31
+ logger_1.default.info(`🔄 Session set to: ${args}`);
32
+ await ctx.reply(`Session set to: ${args}`);
33
+ return;
34
+ }
35
+ // List sessions
36
+ const current = session.sessionId || 'none (new session)';
37
+ if (!adapter.capabilities.listSessions) {
38
+ await ctx.reply(`${adapter.displayName} current session: ${current}\n(This tool does not support listing sessions. Use /session <id> to set.)`);
39
+ return;
40
+ }
41
+ const sessions = await adapter.listSessions();
42
+ if (sessions.length === 0) {
43
+ await ctx.reply(`No sessions found for ${adapter.displayName}.\nCurrent: ${current}`);
44
+ return;
45
+ }
46
+ const lines = [
47
+ `${adapter.displayName} sessions (current: ${current}):`,
48
+ '',
49
+ ...sessions.map(s => ` ${s.id} ${s.title} ${s.updatedAt}`),
50
+ '',
51
+ 'Usage: /session <id>',
52
+ ];
53
+ await ctx.reply(lines.join('\n'));
54
+ }
55
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/handler/commands/session.ts"],"names":[],"mappings":";;;;;AAWA,kBA4CC;AAtDD,2DAA4D;AAC5D,iEAA8D;AAC9D,gEAAwC;AAExC;;;;;GAKG;AACI,KAAK,UAAU,GAAG,CAAC,GAAmB;IAC3C,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,+BAAc,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,uBAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,GAAG,CAAC,KAAK,CAAC,iBAAiB,OAAO,CAAC,IAAI,qBAAqB,CAAC,CAAC;QACpE,OAAO;IACT,CAAC;IAED,iBAAiB;IACjB,IAAI,IAAI,EAAE,CAAC;QACT,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YAClC,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,WAAW,uCAAuC,CAAC,CAAC;YAC/E,OAAO;QACT,CAAC;QACD,+BAAc,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChE,gBAAM,CAAC,IAAI,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;QAC1C,MAAM,GAAG,CAAC,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;QAC3C,OAAO;IACT,CAAC;IAED,gBAAgB;IAChB,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,IAAI,oBAAoB,CAAC;IAE1D,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;QACvC,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,WAAW,qBAAqB,OAAO,4EAA4E,CAAC,CAAC;QAChJ,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC;IAC9C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,GAAG,CAAC,KAAK,CAAC,yBAAyB,OAAO,CAAC,WAAW,eAAe,OAAO,EAAE,CAAC,CAAC;QACtF,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG;QACZ,GAAG,OAAO,CAAC,WAAW,uBAAuB,OAAO,IAAI;QACxD,EAAE;QACF,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC;QAC7D,EAAE;QACF,sBAAsB;KACvB,CAAC;IACF,MAAM,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACpC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { CommandContext } from '../types';
2
+ /**
3
+ * Split string into chunks at newline boundaries
4
+ */
5
+ export declare function splitString(str: string, maxLength: number): string[];
6
+ /**
7
+ * Returns a command handler that runs the given shell command name (e.g. 'git', 'ls').
8
+ * Used when getCommand finds the slash command in allowedShellCommands but not in the static commands map.
9
+ */
10
+ export declare function createShellHandler(commandName: string): (ctx: CommandContext) => Promise<void>;
11
+ //# sourceMappingURL=shell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../src/handler/commands/shell.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAM/C;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAoBpE;AAyFD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,IAC5C,KAAK,cAAc,mBAC5B"}
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.splitString = splitString;
37
+ exports.createShellHandler = createShellHandler;
38
+ const taskManager_1 = require("../../runtime/taskManager");
39
+ const config_1 = require("../../config/config");
40
+ const logger_1 = __importStar(require("../../utils/logger"));
41
+ /**
42
+ * Split string into chunks at newline boundaries
43
+ */
44
+ function splitString(str, maxLength) {
45
+ const chunks = [];
46
+ let remaining = str;
47
+ while (remaining.length > 0) {
48
+ if (remaining.length <= maxLength) {
49
+ chunks.push(remaining);
50
+ break;
51
+ }
52
+ let splitIndex = remaining.lastIndexOf('\n', maxLength);
53
+ if (splitIndex === -1) {
54
+ splitIndex = maxLength;
55
+ }
56
+ chunks.push(remaining.substring(0, splitIndex));
57
+ remaining = remaining.substring(splitIndex + 1);
58
+ }
59
+ return chunks;
60
+ }
61
+ /** 输出到控制台和当日日志文件(原样,无时间戳)。 */
62
+ function printOutput(result, command) {
63
+ const output = result.success ? result.output : result.error;
64
+ process.stdout.write(output + '\n');
65
+ logger_1.default.writeRawToFile(output + '\n');
66
+ }
67
+ /**
68
+ * Format and send execution result
69
+ */
70
+ async function sendResult(result, reply) {
71
+ const output = result.success ? result.output : result.error;
72
+ const debugMode = config_1.config.log.debugMode ?? false;
73
+ if (!output || output.trim() === '') {
74
+ if (debugMode) {
75
+ logger_1.default.debug(`No output from ${result.tool}.`);
76
+ return;
77
+ }
78
+ logger_1.default.info(`💬 Reply: No output from ${result.tool}.`);
79
+ await reply(`No output from ${result.tool}.`);
80
+ return;
81
+ }
82
+ const maxLength = 8000;
83
+ const chunks = splitString(output, maxLength);
84
+ for (let i = 0; i < chunks.length; i++) {
85
+ const prefix = i === 0
86
+ ? `📦 *${result.tool} Output* (${result.duration}ms)\n\n`
87
+ : '';
88
+ const messageContent = prefix + chunks[i];
89
+ if (debugMode) {
90
+ logger_1.default.debug(messageContent);
91
+ }
92
+ else {
93
+ try {
94
+ await reply(messageContent);
95
+ }
96
+ catch (err) {
97
+ logger_1.default.error(`Reply failed for ${result.tool} chunk ${i + 1}:`, err);
98
+ throw err;
99
+ }
100
+ }
101
+ if (i < chunks.length - 1) {
102
+ await new Promise((resolve) => setTimeout(resolve, 500));
103
+ }
104
+ }
105
+ }
106
+ /**
107
+ * Run a shell command (allowed by config.allowedShellCommands).
108
+ * Generic: always builds full command "name args" and uses tool 'shell'.
109
+ */
110
+ async function runShell(ctx, commandName) {
111
+ if (!config_1.config.allowedShellCommands.includes(commandName)) {
112
+ await ctx.reply(`Command "${commandName}" is not in allowed shell commands.`);
113
+ return;
114
+ }
115
+ const command = (commandName + ' ' + ctx.args.trim()).trim();
116
+ logger_1.default.info(`🚀 Running ${commandName}...`);
117
+ const task = await taskManager_1.taskManager.createTask(ctx.senderId, command, 'shell');
118
+ const result = await taskManager_1.taskManager.executeTask(task.id);
119
+ if (result) {
120
+ printOutput(result, command);
121
+ const duration = (0, logger_1.formatDuration)(result.duration);
122
+ if (result.success) {
123
+ logger_1.default.info(`✅ shell (${commandName}) 完成 (${duration})`);
124
+ }
125
+ else {
126
+ logger_1.default.info(`❌ shell (${commandName}) 失败 (${duration})`);
127
+ }
128
+ const outLen = result.output?.length ?? 0;
129
+ if (outLen > 0 && (config_1.config.log.debugMode ?? false)) {
130
+ logger_1.default.debug(`shell result.output length=${outLen}, preview: ${result.output.slice(0, 80).replace(/\n/g, ' ')}`);
131
+ }
132
+ await sendResult(result, ctx.reply);
133
+ }
134
+ }
135
+ /**
136
+ * Returns a command handler that runs the given shell command name (e.g. 'git', 'ls').
137
+ * Used when getCommand finds the slash command in allowedShellCommands but not in the static commands map.
138
+ */
139
+ function createShellHandler(commandName) {
140
+ return (ctx) => runShell(ctx, commandName);
141
+ }
142
+ //# sourceMappingURL=shell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../../src/handler/commands/shell.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { CommandContext } from '../types';
2
+ export declare function run(ctx: CommandContext): Promise<void>;
3
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/handler/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAa/C,wBAAsB,GAAG,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAG5D"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.run = run;
7
+ const logger_1 = __importDefault(require("../../utils/logger"));
8
+ const STATUS_TEXT = `
9
+ *AI Code Gateway - Status*
10
+
11
+ ✅ Gateway is running
12
+ ✅ Connected to Feishu
13
+ 🟡 Task queue: Active
14
+
15
+ Use /tasks to see your running tasks.
16
+ `;
17
+ async function run(ctx) {
18
+ logger_1.default.info('💬 Reply: System Status');
19
+ await ctx.send('System Status', STATUS_TEXT);
20
+ }
21
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/handler/commands/status.ts"],"names":[],"mappings":";;;;;AAaA,kBAGC;AAfD,gEAAwC;AAExC,MAAM,WAAW,GAAG;;;;;;;;CAQnB,CAAC;AAEK,KAAK,UAAU,GAAG,CAAC,GAAmB;IAC3C,gBAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACvC,MAAM,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { CommandContext } from '../types';
2
+ export declare function run(ctx: CommandContext): Promise<void>;
3
+ //# sourceMappingURL=sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../src/handler/commands/sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAK/C,wBAAsB,GAAG,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB5D"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.run = run;
7
+ const taskManager_1 = require("../../runtime/taskManager");
8
+ const utils_1 = require("./utils");
9
+ const logger_1 = __importDefault(require("../../utils/logger"));
10
+ async function run(ctx) {
11
+ const [tool, ...commandParts] = ctx.args.split(' ');
12
+ const command = commandParts.join(' ');
13
+ if (!tool || !command) {
14
+ logger_1.default.info('💬 Reply: Usage: /sync <tool> <command>');
15
+ await ctx.reply('Usage: /sync <tool> <command>\nExample: /sync opencode Hello');
16
+ return;
17
+ }
18
+ logger_1.default.info(`🚀 Executing ${tool} synchronously...`);
19
+ // await ctx.reply(`Executing ${tool} synchronously...`);
20
+ const task = await taskManager_1.taskManager.createTask(ctx.senderId, command, tool.toLowerCase());
21
+ const result = await taskManager_1.taskManager.executeTask(task.id);
22
+ if (result) {
23
+ await (0, utils_1.sendResult)(result, ctx.reply);
24
+ }
25
+ }
26
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/handler/commands/sync.ts"],"names":[],"mappings":";;;;;AAKA,kBAmBC;AAvBD,2DAAwD;AACxD,mCAAqC;AACrC,gEAAwC;AAEjC,KAAK,UAAU,GAAG,CAAC,GAAmB;IAC3C,MAAM,CAAC,IAAI,EAAE,GAAG,YAAY,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEvC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACtB,gBAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;QACvD,MAAM,GAAG,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAChF,OAAO;IACT,CAAC;IAED,gBAAM,CAAC,IAAI,CAAC,gBAAgB,IAAI,mBAAmB,CAAC,CAAC;IACrD,yDAAyD;IAEzD,MAAM,IAAI,GAAG,MAAM,yBAAW,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACrF,MAAM,MAAM,GAAG,MAAM,yBAAW,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEtD,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,IAAA,kBAAU,EAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;AACH,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { CommandContext } from '../types';
2
+ /**
3
+ * List user's tasks
4
+ */
5
+ export declare function run(ctx: CommandContext): Promise<void>;
6
+ /**
7
+ * Cancel a task
8
+ */
9
+ export declare function cancel(ctx: CommandContext): Promise<void>;
10
+ //# sourceMappingURL=tasks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../../src/handler/commands/tasks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAI/C;;GAEG;AACH,wBAAsB,GAAG,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB5D;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAgC/D"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.run = run;
7
+ exports.cancel = cancel;
8
+ const taskManager_1 = require("../../runtime/taskManager");
9
+ const logger_1 = __importDefault(require("../../utils/logger"));
10
+ /**
11
+ * List user's tasks
12
+ */
13
+ async function run(ctx) {
14
+ const tasks = taskManager_1.taskManager.getUserTasks(ctx.senderId);
15
+ if (tasks.length === 0) {
16
+ logger_1.default.info('💬 Reply: No running tasks.');
17
+ await ctx.reply('No running tasks.');
18
+ return;
19
+ }
20
+ const taskList = tasks
21
+ .filter((t) => t.status === 'running' || t.status === 'pending')
22
+ .map((t) => `• [${t.status.toUpperCase()}] ${t.tool}: ${t.command.substring(0, 50)}... (ID: ${t.id})`)
23
+ .join('\n');
24
+ logger_1.default.info(`💬 Reply: ${taskList || 'No active tasks.'}`);
25
+ await ctx.reply(taskList || 'No active tasks.');
26
+ }
27
+ /**
28
+ * Cancel a task
29
+ */
30
+ async function cancel(ctx) {
31
+ const taskId = ctx.args.trim();
32
+ if (!taskId) {
33
+ logger_1.default.info('💬 Reply: Usage: /cancel <task_id>');
34
+ await ctx.reply('Usage: /cancel <task_id>');
35
+ return;
36
+ }
37
+ const task = taskManager_1.taskManager.getTask(taskId);
38
+ if (!task) {
39
+ logger_1.default.info(`💬 Reply: Task ${taskId} not found.`);
40
+ await ctx.reply(`Task ${taskId} not found.`);
41
+ return;
42
+ }
43
+ if (task.userId !== ctx.senderId) {
44
+ logger_1.default.info('💬 Reply: You can only cancel your own tasks.');
45
+ await ctx.reply('You can only cancel your own tasks.');
46
+ return;
47
+ }
48
+ const success = taskManager_1.taskManager.cancelTask(taskId);
49
+ if (success) {
50
+ logger_1.default.info(`💬 Reply: Task ${taskId} has been cancelled.`);
51
+ await ctx.reply(`Task ${taskId} has been cancelled.`);
52
+ }
53
+ else {
54
+ logger_1.default.info(`💬 Reply: Failed to cancel task ${taskId}.`);
55
+ await ctx.reply(`Failed to cancel task ${taskId}.`);
56
+ }
57
+ }
58
+ //# sourceMappingURL=tasks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../../src/handler/commands/tasks.ts"],"names":[],"mappings":";;;;;AAOA,kBAmBC;AAKD,wBAgCC;AA9DD,2DAAwD;AACxD,gEAAwC;AAExC;;GAEG;AACI,KAAK,UAAU,GAAG,CAAC,GAAmB;IAC3C,MAAM,KAAK,GAAG,yBAAW,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAErD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,gBAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC3C,MAAM,GAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACrC,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK;SACnB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC;SAC/D,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CACJ,MAAM,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,GAAG,CAC5F;SACA,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,gBAAM,CAAC,IAAI,CAAC,aAAa,QAAQ,IAAI,kBAAkB,EAAE,CAAC,CAAC;IAC3D,MAAM,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,kBAAkB,CAAC,CAAC;AAClD,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,MAAM,CAAC,GAAmB;IAC9C,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAE/B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,gBAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QAClD,MAAM,GAAG,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC5C,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,yBAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAEzC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,gBAAM,CAAC,IAAI,CAAC,kBAAkB,MAAM,aAAa,CAAC,CAAC;QACnD,MAAM,GAAG,CAAC,KAAK,CAAC,QAAQ,MAAM,aAAa,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,CAAC,QAAQ,EAAE,CAAC;QACjC,gBAAM,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QAC7D,MAAM,GAAG,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACvD,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,yBAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAE/C,IAAI,OAAO,EAAE,CAAC;QACZ,gBAAM,CAAC,IAAI,CAAC,kBAAkB,MAAM,sBAAsB,CAAC,CAAC;QAC5D,MAAM,GAAG,CAAC,KAAK,CAAC,QAAQ,MAAM,sBAAsB,CAAC,CAAC;IACxD,CAAC;SAAM,CAAC;QACN,gBAAM,CAAC,IAAI,CAAC,mCAAmC,MAAM,GAAG,CAAC,CAAC;QAC1D,MAAM,GAAG,CAAC,KAAK,CAAC,yBAAyB,MAAM,GAAG,CAAC,CAAC;IACtD,CAAC;AACH,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { ToolResult } from '../../runtime/cliTools';
2
+ /**
3
+ * Format and send execution result
4
+ */
5
+ export declare function sendResult(result: ToolResult, reply: (text: string) => Promise<void>): Promise<void>;
6
+ /**
7
+ * Split string into chunks at newline boundaries
8
+ */
9
+ export declare function splitString(str: string, maxLength: number): string[];
10
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/handler/commands/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGzD;;GAEG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GACrC,OAAO,CAAC,IAAI,CAAC,CAmCf;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAoBpE"}
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.sendResult = sendResult;
7
+ exports.splitString = splitString;
8
+ const logger_1 = __importDefault(require("../../utils/logger"));
9
+ /**
10
+ * Format and send execution result
11
+ */
12
+ async function sendResult(result, reply) {
13
+ const output = result.success ? result.output : result.error;
14
+ if (!output || output.trim() === '') {
15
+ if (process.env.DEBUG === 'true') {
16
+ logger_1.default.debug(`No output from ${result.tool}.`);
17
+ return;
18
+ }
19
+ logger_1.default.info(`💬 Reply: No output from ${result.tool}.`);
20
+ await reply(`No output from ${result.tool}.`);
21
+ return;
22
+ }
23
+ const maxLength = 8000;
24
+ const chunks = splitString(output, maxLength);
25
+ for (let i = 0; i < chunks.length; i++) {
26
+ const prefix = i === 0
27
+ ? `📦 *${result.tool} Output* (${result.duration}ms)\n\n`
28
+ : '';
29
+ const messageContent = prefix + chunks[i];
30
+ if (process.env.DEBUG === 'true') {
31
+ logger_1.default.debug(messageContent);
32
+ }
33
+ else {
34
+ logger_1.default.info(`💬 Reply: ${result.tool} output chunk ${i + 1}/${chunks.length}`);
35
+ await reply(messageContent);
36
+ }
37
+ // Rate limiting
38
+ if (i < chunks.length - 1) {
39
+ await new Promise((resolve) => setTimeout(resolve, 500));
40
+ }
41
+ }
42
+ }
43
+ /**
44
+ * Split string into chunks at newline boundaries
45
+ */
46
+ function splitString(str, maxLength) {
47
+ const chunks = [];
48
+ let remaining = str;
49
+ while (remaining.length > 0) {
50
+ if (remaining.length <= maxLength) {
51
+ chunks.push(remaining);
52
+ break;
53
+ }
54
+ let splitIndex = remaining.lastIndexOf('\n', maxLength);
55
+ if (splitIndex === -1) {
56
+ splitIndex = maxLength;
57
+ }
58
+ chunks.push(remaining.substring(0, splitIndex));
59
+ remaining = remaining.substring(splitIndex + 1);
60
+ }
61
+ return chunks;
62
+ }
63
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/handler/commands/utils.ts"],"names":[],"mappings":";;;;;AAMA,gCAsCC;AAKD,kCAoBC;AApED,gEAAwC;AAExC;;GAEG;AACI,KAAK,UAAU,UAAU,CAC9B,MAAkB,EAClB,KAAsC;IAEtC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;IAE7D,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACpC,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;YACjC,gBAAM,CAAC,KAAK,CAAC,kBAAkB,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;YAC/C,OAAO;QACT,CAAC;QACD,gBAAM,CAAC,IAAI,CAAC,4BAA4B,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;QACxD,MAAM,KAAK,CAAC,kBAAkB,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;QAC9C,OAAO;IACT,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC;IACvB,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAE9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC;YACpB,CAAC,CAAC,OAAO,MAAM,CAAC,IAAI,aAAa,MAAM,CAAC,QAAQ,SAAS;YACzD,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAE1C,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;YACjC,gBAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,gBAAM,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YAC/E,MAAM,KAAK,CAAC,cAAc,CAAC,CAAC;QAC9B,CAAC;QAED,gBAAgB;QAChB,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW,CAAC,GAAW,EAAE,SAAiB;IACxD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,SAAS,GAAG,GAAG,CAAC;IAEpB,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,IAAI,SAAS,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;YAClC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACvB,MAAM;QACR,CAAC;QAED,IAAI,UAAU,GAAG,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACxD,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;YACtB,UAAU,GAAG,SAAS,CAAC;QACzB,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;QAChD,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { CommandContext } from '../types';
2
+ /**
3
+ * /workspace command - set or view working directory
4
+ *
5
+ * /workspace -> show current cwd
6
+ * /workspace <path> -> set cwd
7
+ * /workspace reset -> reset to default (process.cwd())
8
+ */
9
+ export declare function run(ctx: CommandContext): Promise<void>;
10
+ //# sourceMappingURL=workspace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../../src/handler/commands/workspace.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAI/C;;;;;;GAMG;AACH,wBAAsB,GAAG,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAkC5D"}
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.run = run;
40
+ const fs = __importStar(require("fs"));
41
+ const sessionManager_1 = require("../../runtime/sessionManager");
42
+ const logger_1 = __importDefault(require("../../utils/logger"));
43
+ /**
44
+ * /workspace command - set or view working directory
45
+ *
46
+ * /workspace -> show current cwd
47
+ * /workspace <path> -> set cwd
48
+ * /workspace reset -> reset to default (process.cwd())
49
+ */
50
+ async function run(ctx) {
51
+ const args = ctx.args.trim();
52
+ const session = sessionManager_1.sessionManager.getSession(ctx.senderId);
53
+ // Reset
54
+ if (args.toLowerCase() === 'reset') {
55
+ sessionManager_1.sessionManager.updateSession(ctx.senderId, { cwd: null });
56
+ await ctx.reply(`Workspace reset to default: ${process.cwd()}`);
57
+ return;
58
+ }
59
+ // Set workspace
60
+ if (args) {
61
+ // Validate path exists
62
+ if (!fs.existsSync(args)) {
63
+ await ctx.reply(`Path does not exist: ${args}`);
64
+ return;
65
+ }
66
+ const stat = fs.statSync(args);
67
+ if (!stat.isDirectory()) {
68
+ await ctx.reply(`Path is not a directory: ${args}`);
69
+ return;
70
+ }
71
+ sessionManager_1.sessionManager.updateSession(ctx.senderId, { cwd: args });
72
+ logger_1.default.info(`📂 Workspace set to: ${args}`);
73
+ await ctx.reply(`Workspace set to: ${args}`);
74
+ return;
75
+ }
76
+ // Show current
77
+ const cwd = session.cwd || process.cwd();
78
+ await ctx.reply(`Current workspace: ${cwd}${session.cwd ? '' : ' (default)'}`);
79
+ }
80
+ //# sourceMappingURL=workspace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../../src/handler/commands/workspace.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,kBAkCC;AA9CD,uCAAyB;AAEzB,iEAA8D;AAC9D,gEAAwC;AAExC;;;;;;GAMG;AACI,KAAK,UAAU,GAAG,CAAC,GAAmB;IAC3C,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,+BAAc,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAExD,QAAQ;IACR,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE,CAAC;QACnC,+BAAc,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,MAAM,GAAG,CAAC,KAAK,CAAC,+BAA+B,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAChE,OAAO;IACT,CAAC;IAED,gBAAgB;IAChB,IAAI,IAAI,EAAE,CAAC;QACT,uBAAuB;QACvB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,GAAG,CAAC,KAAK,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAC;YAChD,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,MAAM,GAAG,CAAC,KAAK,CAAC,4BAA4B,IAAI,EAAE,CAAC,CAAC;YACpD,OAAO;QACT,CAAC;QAED,+BAAc,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,gBAAM,CAAC,IAAI,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAC;QAC5C,MAAM,GAAG,CAAC,KAAK,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IAED,eAAe;IACf,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACzC,MAAM,GAAG,CAAC,KAAK,CAAC,sBAAsB,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;AACjF,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** Check if message was already processed (returns true if duplicate) */
2
+ export declare function isDuplicateMessage(messageId: string): boolean;
3
+ //# sourceMappingURL=dedup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dedup.d.ts","sourceRoot":"","sources":["../../src/handler/dedup.ts"],"names":[],"mappings":"AAeA,yEAAyE;AACzE,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAU7D"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.isDuplicateMessage = isDuplicateMessage;
7
+ const logger_1 = __importDefault(require("../utils/logger"));
8
+ const processedMessages = new Map();
9
+ const DEDUP_WINDOW_MS = 5 * 60 * 1000; // 5 minutes
10
+ /** Clean up old entries periodically */
11
+ function cleanupProcessedMessages() {
12
+ const now = Date.now();
13
+ for (const [id, timestamp] of processedMessages) {
14
+ if (now - timestamp > DEDUP_WINDOW_MS) {
15
+ processedMessages.delete(id);
16
+ }
17
+ }
18
+ }
19
+ /** Check if message was already processed (returns true if duplicate) */
20
+ function isDuplicateMessage(messageId) {
21
+ cleanupProcessedMessages();
22
+ if (processedMessages.has(messageId)) {
23
+ logger_1.default.debug(`🔄 Duplicate message ignored: ${messageId}`);
24
+ return true;
25
+ }
26
+ processedMessages.set(messageId, Date.now());
27
+ return false;
28
+ }
29
+ //# sourceMappingURL=dedup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dedup.js","sourceRoot":"","sources":["../../src/handler/dedup.ts"],"names":[],"mappings":";;;;;AAgBA,gDAUC;AA1BD,6DAAqC;AAErC,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAkB,CAAC;AACpD,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,YAAY;AAEnD,wCAAwC;AACxC,SAAS,wBAAwB;IAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,KAAK,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,iBAAiB,EAAE,CAAC;QAChD,IAAI,GAAG,GAAG,SAAS,GAAG,eAAe,EAAE,CAAC;YACtC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;AACH,CAAC;AAED,yEAAyE;AACzE,SAAgB,kBAAkB,CAAC,SAAiB;IAClD,wBAAwB,EAAE,CAAC;IAE3B,IAAI,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QACrC,gBAAM,CAAC,KAAK,CAAC,iCAAiC,SAAS,EAAE,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,iBAAiB,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7C,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { IGateway } from '../gateway/types';
2
+ import type { CommandContext, ParsedEvent } from './types';
3
+ /**
4
+ * Main message event handler - gateway-agnostic router.
5
+ * Dispatches by gateway.id (feishu: parse Feishu payload and run commands).
6
+ *
7
+ * IMPORTANT: Feishu WebSocket requires event handling to complete within 3 seconds,
8
+ * otherwise it triggers a timeout re-push mechanism. To avoid duplicate messages,
9
+ * we use two strategies:
10
+ * 1. Message deduplication based on message_id (first line of defense)
11
+ * 2. Async processing: return quickly to acknowledge, execute commands in background
12
+ */
13
+ export declare function handleMessageEvent(gateway: IGateway, data: unknown): Promise<void>;
14
+ /** Build ctx from ParsedEvent and run processCommand (shared by all gateways). */
15
+ export declare function buildContextAndProcess(gateway: IGateway, event: ParsedEvent): Promise<void>;
16
+ /**
17
+ * Process command asynchronously (runs in background).
18
+ * Exported for tests.
19
+ */
20
+ export declare function processCommand(ctx: CommandContext, text: string): Promise<void>;
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/handler/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3D;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BxF;AAED,kFAAkF;AAClF,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAkCjG;AAkHD;;;GAGG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2BrF"}