agent-messenger 2.29.1 → 2.31.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 (300) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/README.md +15 -0
  3. package/bun.lock +42 -2
  4. package/dist/package.json +2 -2
  5. package/dist/src/cli.d.ts.map +1 -1
  6. package/dist/src/cli.js.map +1 -1
  7. package/dist/src/platforms/channeltalk/cli.d.ts.map +1 -1
  8. package/dist/src/platforms/channeltalk/client.d.ts.map +1 -1
  9. package/dist/src/platforms/channeltalk/commands/auth.js.map +1 -1
  10. package/dist/src/platforms/channeltalk/commands/bot.js.map +1 -1
  11. package/dist/src/platforms/channeltalk/commands/chat.js.map +1 -1
  12. package/dist/src/platforms/channeltalk/commands/group.js.map +1 -1
  13. package/dist/src/platforms/channeltalk/commands/manager.js.map +1 -1
  14. package/dist/src/platforms/channeltalk/commands/message.js.map +1 -1
  15. package/dist/src/platforms/channeltalk/commands/shared.js.map +1 -1
  16. package/dist/src/platforms/channeltalk/commands/snapshot.js.map +1 -1
  17. package/dist/src/platforms/channeltalk/commands/whoami.js.map +1 -1
  18. package/dist/src/platforms/channeltalk/credential-manager.d.ts.map +1 -1
  19. package/dist/src/platforms/channeltalk/ensure-auth.d.ts.map +1 -1
  20. package/dist/src/platforms/channeltalk/token-extractor.d.ts.map +1 -1
  21. package/dist/src/platforms/channeltalk/token-extractor.js.map +1 -1
  22. package/dist/src/platforms/channeltalk/types.d.ts.map +1 -1
  23. package/dist/src/platforms/channeltalkbot/cli.d.ts.map +1 -1
  24. package/dist/src/platforms/channeltalkbot/client.d.ts.map +1 -1
  25. package/dist/src/platforms/channeltalkbot/client.js.map +1 -1
  26. package/dist/src/platforms/channeltalkbot/credential-manager.d.ts.map +1 -1
  27. package/dist/src/platforms/channeltalkbot/types.d.ts +1 -1
  28. package/dist/src/platforms/channeltalkbot/types.d.ts.map +1 -1
  29. package/dist/src/platforms/discord/cli.d.ts.map +1 -1
  30. package/dist/src/platforms/discord/client.d.ts +1 -0
  31. package/dist/src/platforms/discord/client.d.ts.map +1 -1
  32. package/dist/src/platforms/discord/client.js +39 -17
  33. package/dist/src/platforms/discord/client.js.map +1 -1
  34. package/dist/src/platforms/discord/commands/message.d.ts +3 -0
  35. package/dist/src/platforms/discord/commands/message.d.ts.map +1 -1
  36. package/dist/src/platforms/discord/commands/message.js +30 -0
  37. package/dist/src/platforms/discord/commands/message.js.map +1 -1
  38. package/dist/src/platforms/discord/credential-manager.d.ts.map +1 -1
  39. package/dist/src/platforms/discord/listener.d.ts.map +1 -1
  40. package/dist/src/platforms/discord/listener.js.map +1 -1
  41. package/dist/src/platforms/discord/remote-auth.js.map +1 -1
  42. package/dist/src/platforms/discord/super-properties.js.map +1 -1
  43. package/dist/src/platforms/discord/token-extractor.d.ts.map +1 -1
  44. package/dist/src/platforms/discord/token-extractor.js.map +1 -1
  45. package/dist/src/platforms/discord/types.d.ts +13 -0
  46. package/dist/src/platforms/discord/types.d.ts.map +1 -1
  47. package/dist/src/platforms/discord/types.js +6 -0
  48. package/dist/src/platforms/discord/types.js.map +1 -1
  49. package/dist/src/platforms/discordbot/cli.d.ts.map +1 -1
  50. package/dist/src/platforms/discordbot/client.d.ts.map +1 -1
  51. package/dist/src/platforms/discordbot/client.js.map +1 -1
  52. package/dist/src/platforms/discordbot/commands/message.d.ts +1 -1
  53. package/dist/src/platforms/discordbot/commands/message.d.ts.map +1 -1
  54. package/dist/src/platforms/discordbot/commands/message.js +4 -4
  55. package/dist/src/platforms/discordbot/commands/message.js.map +1 -1
  56. package/dist/src/platforms/discordbot/credential-manager.d.ts.map +1 -1
  57. package/dist/src/platforms/discordbot/listener.d.ts.map +1 -1
  58. package/dist/src/platforms/discordbot/listener.js.map +1 -1
  59. package/dist/src/platforms/discordbot/types.d.ts.map +1 -1
  60. package/dist/src/platforms/imessage/cli.d.ts.map +1 -1
  61. package/dist/src/platforms/imessage/client.d.ts.map +1 -1
  62. package/dist/src/platforms/imessage/client.js.map +1 -1
  63. package/dist/src/platforms/imessage/credential-manager.d.ts.map +1 -1
  64. package/dist/src/platforms/imessage/errors.js.map +1 -1
  65. package/dist/src/platforms/imessage/rpc.d.ts.map +1 -1
  66. package/dist/src/platforms/imessage/rpc.js.map +1 -1
  67. package/dist/src/platforms/imessage/types.d.ts.map +1 -1
  68. package/dist/src/platforms/imessage/types.js.map +1 -1
  69. package/dist/src/platforms/instagram/cli.d.ts.map +1 -1
  70. package/dist/src/platforms/instagram/client.d.ts.map +1 -1
  71. package/dist/src/platforms/instagram/client.js.map +1 -1
  72. package/dist/src/platforms/instagram/credential-manager.d.ts.map +1 -1
  73. package/dist/src/platforms/instagram/hybrid-listener.d.ts.map +1 -1
  74. package/dist/src/platforms/instagram/hybrid-listener.js.map +1 -1
  75. package/dist/src/platforms/instagram/listener.d.ts.map +1 -1
  76. package/dist/src/platforms/instagram/mqtt/thrift.d.ts.map +1 -1
  77. package/dist/src/platforms/instagram/mqtt/transport.d.ts.map +1 -1
  78. package/dist/src/platforms/instagram/mqtt/transport.js.map +1 -1
  79. package/dist/src/platforms/instagram/realtime-listener.d.ts.map +1 -1
  80. package/dist/src/platforms/instagram/realtime-listener.js.map +1 -1
  81. package/dist/src/platforms/instagram/token-extractor.d.ts.map +1 -1
  82. package/dist/src/platforms/instagram/types.d.ts.map +1 -1
  83. package/dist/src/platforms/instagram/types.js.map +1 -1
  84. package/dist/src/platforms/kakaotalk/cli.d.ts.map +1 -1
  85. package/dist/src/platforms/kakaotalk/client.d.ts +5 -1
  86. package/dist/src/platforms/kakaotalk/client.d.ts.map +1 -1
  87. package/dist/src/platforms/kakaotalk/client.js +55 -0
  88. package/dist/src/platforms/kakaotalk/client.js.map +1 -1
  89. package/dist/src/platforms/kakaotalk/commands/chat.d.ts.map +1 -1
  90. package/dist/src/platforms/kakaotalk/commands/chat.js +16 -1
  91. package/dist/src/platforms/kakaotalk/commands/chat.js.map +1 -1
  92. package/dist/src/platforms/kakaotalk/credential-manager.d.ts.map +1 -1
  93. package/dist/src/platforms/kakaotalk/index.d.ts +2 -2
  94. package/dist/src/platforms/kakaotalk/index.d.ts.map +1 -1
  95. package/dist/src/platforms/kakaotalk/index.js +1 -1
  96. package/dist/src/platforms/kakaotalk/index.js.map +1 -1
  97. package/dist/src/platforms/kakaotalk/listener.d.ts.map +1 -1
  98. package/dist/src/platforms/kakaotalk/listener.js.map +1 -1
  99. package/dist/src/platforms/kakaotalk/protocol/connection.d.ts.map +1 -1
  100. package/dist/src/platforms/kakaotalk/protocol/connection.js.map +1 -1
  101. package/dist/src/platforms/kakaotalk/protocol/crypto.d.ts.map +1 -1
  102. package/dist/src/platforms/kakaotalk/protocol/session.d.ts +23 -0
  103. package/dist/src/platforms/kakaotalk/protocol/session.d.ts.map +1 -1
  104. package/dist/src/platforms/kakaotalk/protocol/session.js +50 -0
  105. package/dist/src/platforms/kakaotalk/protocol/session.js.map +1 -1
  106. package/dist/src/platforms/kakaotalk/token-extractor.d.ts.map +1 -1
  107. package/dist/src/platforms/kakaotalk/types.d.ts +30 -10
  108. package/dist/src/platforms/kakaotalk/types.d.ts.map +1 -1
  109. package/dist/src/platforms/kakaotalk/types.js +10 -0
  110. package/dist/src/platforms/kakaotalk/types.js.map +1 -1
  111. package/dist/src/platforms/line/cli.d.ts.map +1 -1
  112. package/dist/src/platforms/line/client.d.ts.map +1 -1
  113. package/dist/src/platforms/line/credential-manager.d.ts.map +1 -1
  114. package/dist/src/platforms/line/listener.d.ts.map +1 -1
  115. package/dist/src/platforms/line/types.d.ts +6 -6
  116. package/dist/src/platforms/line/types.d.ts.map +1 -1
  117. package/dist/src/platforms/slack/cli.d.ts.map +1 -1
  118. package/dist/src/platforms/slack/client.d.ts.map +1 -1
  119. package/dist/src/platforms/slack/client.js.map +1 -1
  120. package/dist/src/platforms/slack/commands/message.js +4 -4
  121. package/dist/src/platforms/slack/commands/message.js.map +1 -1
  122. package/dist/src/platforms/slack/credential-manager.d.ts.map +1 -1
  123. package/dist/src/platforms/slack/ensure-auth.js.map +1 -1
  124. package/dist/src/platforms/slack/listener.d.ts.map +1 -1
  125. package/dist/src/platforms/slack/qr-http-login.js.map +1 -1
  126. package/dist/src/platforms/slack/token-extractor.d.ts.map +1 -1
  127. package/dist/src/platforms/slack/token-extractor.js.map +1 -1
  128. package/dist/src/platforms/slackbot/cli.d.ts.map +1 -1
  129. package/dist/src/platforms/slackbot/client.d.ts.map +1 -1
  130. package/dist/src/platforms/slackbot/commands/message.js +4 -4
  131. package/dist/src/platforms/slackbot/commands/message.js.map +1 -1
  132. package/dist/src/platforms/slackbot/credential-manager.d.ts.map +1 -1
  133. package/dist/src/platforms/slackbot/listener.d.ts.map +1 -1
  134. package/dist/src/platforms/slackbot/listener.js.map +1 -1
  135. package/dist/src/platforms/slackbot/types.d.ts.map +1 -1
  136. package/dist/src/platforms/teams/app-config.js.map +1 -1
  137. package/dist/src/platforms/teams/cli.d.ts.map +1 -1
  138. package/dist/src/platforms/teams/client.d.ts +1 -0
  139. package/dist/src/platforms/teams/client.d.ts.map +1 -1
  140. package/dist/src/platforms/teams/client.js +19 -0
  141. package/dist/src/platforms/teams/client.js.map +1 -1
  142. package/dist/src/platforms/teams/commands/chat.d.ts +3 -0
  143. package/dist/src/platforms/teams/commands/chat.d.ts.map +1 -1
  144. package/dist/src/platforms/teams/commands/chat.js +34 -1
  145. package/dist/src/platforms/teams/commands/chat.js.map +1 -1
  146. package/dist/src/platforms/teams/credential-manager.d.ts.map +1 -1
  147. package/dist/src/platforms/teams/device-code.js.map +1 -1
  148. package/dist/src/platforms/teams/device-login.d.ts.map +1 -1
  149. package/dist/src/platforms/teams/device-login.js.map +1 -1
  150. package/dist/src/platforms/teams/listener.d.ts.map +1 -1
  151. package/dist/src/platforms/teams/token-extractor.d.ts.map +1 -1
  152. package/dist/src/platforms/teams/token-extractor.js.map +1 -1
  153. package/dist/src/platforms/teams/token-provider.d.ts.map +1 -1
  154. package/dist/src/platforms/teams/token-provider.js.map +1 -1
  155. package/dist/src/platforms/teams/types.d.ts +14 -14
  156. package/dist/src/platforms/teams/types.d.ts.map +1 -1
  157. package/dist/src/platforms/telegram/cli.d.ts.map +1 -1
  158. package/dist/src/platforms/telegram/client.d.ts +1 -0
  159. package/dist/src/platforms/telegram/client.d.ts.map +1 -1
  160. package/dist/src/platforms/telegram/client.js +21 -0
  161. package/dist/src/platforms/telegram/client.js.map +1 -1
  162. package/dist/src/platforms/telegram/commands/message.d.ts.map +1 -1
  163. package/dist/src/platforms/telegram/commands/message.js +25 -1
  164. package/dist/src/platforms/telegram/commands/message.js.map +1 -1
  165. package/dist/src/platforms/telegram/commands/shared.js.map +1 -1
  166. package/dist/src/platforms/telegram/credential-manager.d.ts.map +1 -1
  167. package/dist/src/platforms/telegram/tdlib.d.ts.map +1 -1
  168. package/dist/src/platforms/telegram/types.d.ts.map +1 -1
  169. package/dist/src/platforms/telegram/types.js.map +1 -1
  170. package/dist/src/platforms/telegrambot/cli.d.ts.map +1 -1
  171. package/dist/src/platforms/telegrambot/client.d.ts.map +1 -1
  172. package/dist/src/platforms/telegrambot/commands/message.d.ts +1 -1
  173. package/dist/src/platforms/telegrambot/commands/message.d.ts.map +1 -1
  174. package/dist/src/platforms/telegrambot/commands/message.js +3 -3
  175. package/dist/src/platforms/telegrambot/commands/message.js.map +1 -1
  176. package/dist/src/platforms/telegrambot/credential-manager.d.ts.map +1 -1
  177. package/dist/src/platforms/telegrambot/listener.d.ts.map +1 -1
  178. package/dist/src/platforms/telegrambot/types.d.ts.map +1 -1
  179. package/dist/src/platforms/webex/cli.d.ts.map +1 -1
  180. package/dist/src/platforms/webex/client.d.ts.map +1 -1
  181. package/dist/src/platforms/webex/client.js.map +1 -1
  182. package/dist/src/platforms/webex/credential-manager.d.ts.map +1 -1
  183. package/dist/src/platforms/webex/encryption.d.ts.map +1 -1
  184. package/dist/src/platforms/webex/kms-key-provider.d.ts.map +1 -1
  185. package/dist/src/platforms/webex/listener.d.ts.map +1 -1
  186. package/dist/src/platforms/webex/listener.js.map +1 -1
  187. package/dist/src/platforms/webex/token-extractor.d.ts.map +1 -1
  188. package/dist/src/platforms/webex/types.d.ts +4 -4
  189. package/dist/src/platforms/webex/types.d.ts.map +1 -1
  190. package/dist/src/platforms/webexbot/cli.d.ts.map +1 -1
  191. package/dist/src/platforms/webexbot/client.d.ts.map +1 -1
  192. package/dist/src/platforms/webexbot/credential-manager.d.ts.map +1 -1
  193. package/dist/src/platforms/webexbot/listener.d.ts.map +1 -1
  194. package/dist/src/platforms/webexbot/types.d.ts.map +1 -1
  195. package/dist/src/platforms/wechatbot/cli.d.ts.map +1 -1
  196. package/dist/src/platforms/wechatbot/client.d.ts.map +1 -1
  197. package/dist/src/platforms/wechatbot/credential-manager.d.ts.map +1 -1
  198. package/dist/src/platforms/wechatbot/types.d.ts.map +1 -1
  199. package/dist/src/platforms/whatsapp/cli.d.ts.map +1 -1
  200. package/dist/src/platforms/whatsapp/client.d.ts +3 -1
  201. package/dist/src/platforms/whatsapp/client.d.ts.map +1 -1
  202. package/dist/src/platforms/whatsapp/client.js +19 -3
  203. package/dist/src/platforms/whatsapp/client.js.map +1 -1
  204. package/dist/src/platforms/whatsapp/commands/message.d.ts.map +1 -1
  205. package/dist/src/platforms/whatsapp/commands/message.js +18 -0
  206. package/dist/src/platforms/whatsapp/commands/message.js.map +1 -1
  207. package/dist/src/platforms/whatsapp/credential-manager.d.ts.map +1 -1
  208. package/dist/src/platforms/whatsapp/types.d.ts.map +1 -1
  209. package/dist/src/platforms/whatsapp/types.js.map +1 -1
  210. package/dist/src/platforms/whatsappbot/cli.d.ts.map +1 -1
  211. package/dist/src/platforms/whatsappbot/client.d.ts.map +1 -1
  212. package/dist/src/platforms/whatsappbot/credential-manager.d.ts.map +1 -1
  213. package/dist/src/platforms/whatsappbot/types.d.ts.map +1 -1
  214. package/dist/src/shared/chromium/browsers.js.map +1 -1
  215. package/dist/src/shared/chromium/cli-options.js.map +1 -1
  216. package/dist/src/shared/chromium/cookie-reader.d.ts.map +1 -1
  217. package/dist/src/shared/chromium/decryptor.d.ts.map +1 -1
  218. package/dist/src/shared/sqlite.js.map +1 -1
  219. package/dist/src/shared/utils/derived-key-cache.d.ts.map +1 -1
  220. package/dist/src/tui/adapters/channeltalk-adapter.d.ts.map +1 -1
  221. package/dist/src/tui/adapters/discord-adapter.d.ts.map +1 -1
  222. package/dist/src/tui/adapters/imessage-adapter.d.ts.map +1 -1
  223. package/dist/src/tui/adapters/instagram-adapter.d.ts.map +1 -1
  224. package/dist/src/tui/adapters/kakaotalk-adapter.d.ts.map +1 -1
  225. package/dist/src/tui/adapters/line-adapter.d.ts.map +1 -1
  226. package/dist/src/tui/adapters/slack-adapter.d.ts.map +1 -1
  227. package/dist/src/tui/adapters/teams-adapter.d.ts.map +1 -1
  228. package/dist/src/tui/adapters/telegram-adapter.d.ts.map +1 -1
  229. package/dist/src/tui/adapters/telegram-adapter.js.map +1 -1
  230. package/dist/src/tui/adapters/webex-adapter.d.ts.map +1 -1
  231. package/dist/src/tui/adapters/whatsapp-adapter.d.ts.map +1 -1
  232. package/dist/src/tui/app.js.map +1 -1
  233. package/dist/src/tui/views/channel-picker.d.ts.map +1 -1
  234. package/dist/src/tui/views/workspace-picker.d.ts.map +1 -1
  235. package/docs/content/docs/cli/discordbot.mdx +2 -2
  236. package/docs/content/docs/cli/kakaotalk.mdx +16 -1
  237. package/docs/content/docs/cli/slack.mdx +2 -2
  238. package/docs/content/docs/cli/slackbot.mdx +2 -2
  239. package/docs/content/docs/cli/telegrambot.mdx +1 -1
  240. package/docs/content/docs/sdk/kakaotalk.mdx +39 -0
  241. package/e2e/README.md +3 -3
  242. package/e2e/discordbot.e2e.test.ts +2 -2
  243. package/e2e/slack.e2e.test.ts +2 -2
  244. package/e2e/slackbot.e2e.test.ts +2 -2
  245. package/e2e/telegrambot.e2e.test.ts +2 -2
  246. package/package.json +2 -2
  247. package/skills/agent-channeltalk/SKILL.md +1 -1
  248. package/skills/agent-channeltalkbot/SKILL.md +1 -1
  249. package/skills/agent-discord/SKILL.md +5 -1
  250. package/skills/agent-discordbot/SKILL.md +3 -3
  251. package/skills/agent-discordbot/references/common-patterns.md +2 -2
  252. package/skills/agent-imessage/SKILL.md +1 -1
  253. package/skills/agent-instagram/SKILL.md +1 -1
  254. package/skills/agent-kakaotalk/SKILL.md +19 -2
  255. package/skills/agent-line/SKILL.md +1 -1
  256. package/skills/agent-slack/SKILL.md +3 -3
  257. package/skills/agent-slack/references/common-patterns.md +2 -2
  258. package/skills/agent-slackbot/SKILL.md +3 -3
  259. package/skills/agent-slackbot/references/common-patterns.md +4 -4
  260. package/skills/agent-teams/SKILL.md +6 -1
  261. package/skills/agent-telegram/SKILL.md +4 -1
  262. package/skills/agent-telegrambot/SKILL.md +2 -2
  263. package/skills/agent-webex/SKILL.md +1 -1
  264. package/skills/agent-webexbot/SKILL.md +1 -1
  265. package/skills/agent-wechatbot/SKILL.md +1 -1
  266. package/skills/agent-whatsapp/SKILL.md +25 -1
  267. package/skills/agent-whatsappbot/SKILL.md +1 -1
  268. package/src/platforms/discord/client.test.ts +143 -0
  269. package/src/platforms/discord/client.ts +49 -22
  270. package/src/platforms/discord/commands/message.test.ts +26 -1
  271. package/src/platforms/discord/commands/message.ts +41 -0
  272. package/src/platforms/discord/types.ts +16 -0
  273. package/src/platforms/discordbot/commands/message.test.ts +6 -6
  274. package/src/platforms/discordbot/commands/message.ts +4 -4
  275. package/src/platforms/kakaotalk/client.test.ts +194 -1
  276. package/src/platforms/kakaotalk/client.ts +58 -0
  277. package/src/platforms/kakaotalk/commands/chat.test.ts +24 -0
  278. package/src/platforms/kakaotalk/commands/chat.ts +23 -0
  279. package/src/platforms/kakaotalk/index.test.ts +10 -0
  280. package/src/platforms/kakaotalk/index.ts +4 -0
  281. package/src/platforms/kakaotalk/protocol/session.test.ts +113 -0
  282. package/src/platforms/kakaotalk/protocol/session.ts +56 -0
  283. package/src/platforms/kakaotalk/types.ts +24 -0
  284. package/src/platforms/slack/commands/message.test.ts +4 -4
  285. package/src/platforms/slack/commands/message.ts +4 -4
  286. package/src/platforms/slackbot/commands/message.ts +4 -4
  287. package/src/platforms/teams/client.test.ts +24 -0
  288. package/src/platforms/teams/client.ts +28 -0
  289. package/src/platforms/teams/commands/chat.test.ts +23 -1
  290. package/src/platforms/teams/commands/chat.ts +44 -0
  291. package/src/platforms/telegram/client.test.ts +60 -0
  292. package/src/platforms/telegram/client.ts +24 -0
  293. package/src/platforms/telegram/commands/message.test.ts +38 -0
  294. package/src/platforms/telegram/commands/message.ts +39 -0
  295. package/src/platforms/telegrambot/commands/message.ts +3 -3
  296. package/src/platforms/whatsapp/client.test.ts +58 -0
  297. package/src/platforms/whatsapp/client.ts +23 -3
  298. package/src/platforms/whatsapp/commands/message.test.ts +43 -0
  299. package/src/platforms/whatsapp/commands/message.ts +25 -0
  300. package/tsconfig.json +8 -8
@@ -126,6 +126,43 @@ await client.sendAttachment('9876543210', [
126
126
 
127
127
  The typed helpers `sendPhoto`, `sendVideo`, `sendAudio`, `sendFile`, and `sendMultiPhoto` remain available when you want to bypass MIME sniffing and dispatch to a specific message_type explicitly.
128
128
 
129
+ ### Leave Chat
130
+
131
+ ```typescript
132
+ const result = await client.leaveChat('9876543210')
133
+ // → { success: true, status_code: 0, chat_id: '9876543210' }
134
+ ```
135
+
136
+ Leaves a chat room by its chat ID. Works on 1:1, group, open, and PlusChat rooms. Returns `success: true` on a successful leave. The departed chat is immediately evicted from the client's cached chat list — a subsequent `getChats()` call will not include it.
137
+
138
+ ### Typing Indicator
139
+
140
+ ```typescript
141
+ // Fire a single typing pulse — the recipient sees the animated "…" dots
142
+ const result = await client.sendTyping('9876543210')
143
+ // → KakaoTypingResult { success: true, status_code: 0, chat_id: '9876543210' }
144
+
145
+ // For OpenChat rooms, pass the linkId
146
+ await client.sendTyping('9876543210', { linkId: '77777' })
147
+ ```
148
+
149
+ The KakaoTalk client-side lifetime is ~5s per pulse — to keep the indicator visible while generating a long reply, re-fire faster than that (e.g. every 3s):
150
+
151
+ ```typescript
152
+ const interval = setInterval(() => {
153
+ client.sendTyping('9876543210').catch(() => {}) // ignore transient errors
154
+ }, 3000)
155
+
156
+ try {
157
+ const reply = await generateReply()
158
+ await client.sendMessage('9876543210', reply)
159
+ } finally {
160
+ clearInterval(interval)
161
+ }
162
+ ```
163
+
164
+ Errors follow the same shape as `markRead`: transport-level failures (non-zero `statusCode`, including the synthetic `-1` LocoConnection emits on disconnect) throw `KakaoTalkError('send_typing_failed')` so `executeWithReconnect` can retry on a fresh session. Non-numeric `chatId` / `linkId` throw `invalid_chat_id` / `invalid_link_id`.
165
+
129
166
  ### Cleanup
130
167
 
131
168
  ```typescript
@@ -239,6 +276,7 @@ import type {
239
276
  KakaoMember,
240
277
  KakaoMessage,
241
278
  KakaoSendResult,
279
+ KakaoTypingResult,
242
280
  KakaoAccountCredentials,
243
281
  KakaoConfig,
244
282
  KakaoDeviceType,
@@ -256,6 +294,7 @@ import {
256
294
  KakaoMemberSchema,
257
295
  KakaoMessageSchema,
258
296
  KakaoSendResultSchema,
297
+ KakaoTypingResultSchema,
259
298
  KakaoAccountCredentialsSchema,
260
299
  KakaoConfigSchema,
261
300
  } from 'agent-messenger/kakaotalk'
package/e2e/README.md CHANGED
@@ -171,7 +171,7 @@ When triggering manually, you can select which platform to test:
171
171
  | ------------- | -------------------------------------------------------------- |
172
172
  | `auth` | status |
173
173
  | `workspace` | list, current |
174
- | `message` | send, list, get, update, delete, thread reply, replies, search |
174
+ | `message` | send, list, get, edit, delete, thread reply, replies, search |
175
175
  | `channel` | list, list --type, info, history |
176
176
  | `user` | list, me, info |
177
177
  | `reaction` | add, list, remove |
@@ -188,7 +188,7 @@ When triggering manually, you can select which platform to test:
188
188
  | Command Group | Tests |
189
189
  | ------------- | ------------------------------------------------------ |
190
190
  | `auth` | status |
191
- | `message` | send, list, get, update, delete, thread reply, replies |
191
+ | `message` | send, list, get, edit, delete, thread reply, replies |
192
192
  | `channel` | list, info |
193
193
  | `user` | list, info |
194
194
  | `reaction` | add, remove |
@@ -228,7 +228,7 @@ When triggering manually, you can select which platform to test:
228
228
  | Command Group | Tests |
229
229
  | ------------- | ------------------------------------------------ |
230
230
  | `auth` | status |
231
- | `message` | send, list, get, update, delete, thread, replies |
231
+ | `message` | send, list, get, edit, delete, thread, replies |
232
232
  | `channel` | list, info |
233
233
  | `user` | list, info |
234
234
  | `reaction` | add, remove |
@@ -114,7 +114,7 @@ describe('DiscordBot E2E Tests', () => {
114
114
  expect(data?.id).toBe(sent!.id)
115
115
  })
116
116
 
117
- it('message update modifies message', async () => {
117
+ it('message edit modifies message', async () => {
118
118
  const testId = generateTestId()
119
119
  const sendResult = await runCLI('discordbot', [
120
120
  'message',
@@ -130,7 +130,7 @@ describe('DiscordBot E2E Tests', () => {
130
130
 
131
131
  const result = await runCLI('discordbot', [
132
132
  'message',
133
- 'update',
133
+ 'edit',
134
134
  DISCORDBOT_TEST_CHANNEL_ID,
135
135
  sent!.id,
136
136
  `Updated ${testId}`,
@@ -95,14 +95,14 @@ describe('Slack E2E Tests', () => {
95
95
  expect(data?.text).toContain(testId)
96
96
  })
97
97
 
98
- it('message update modifies message', async () => {
98
+ it('message edit modifies message', async () => {
99
99
  const testId = generateTestId()
100
100
  const { id: ts } = await createTestMessage('slack', SLACK_TEST_CHANNEL_ID, `Original ${testId}`)
101
101
  testMessages.push(ts)
102
102
 
103
103
  await waitForRateLimit()
104
104
 
105
- const result = await runCLI('slack', ['message', 'update', SLACK_TEST_CHANNEL_ID, ts, `Updated ${testId}`])
105
+ const result = await runCLI('slack', ['message', 'edit', SLACK_TEST_CHANNEL_ID, ts, `Updated ${testId}`])
106
106
  expect(result.exitCode).toBe(0)
107
107
 
108
108
  await waitForRateLimit()
@@ -104,7 +104,7 @@ describe('SlackBot E2E Tests', () => {
104
104
  expect(data?.ts).toBe(sent!.ts)
105
105
  })
106
106
 
107
- it('message update modifies message', async () => {
107
+ it('message edit modifies message', async () => {
108
108
  const testId = generateTestId()
109
109
  const sendResult = await runCLI('slackbot', ['message', 'send', SLACKBOT_TEST_CHANNEL_ID, `Original ${testId}`])
110
110
  const sent = parseJSON<{ ts: string }>(sendResult.stdout)
@@ -115,7 +115,7 @@ describe('SlackBot E2E Tests', () => {
115
115
 
116
116
  const result = await runCLI('slackbot', [
117
117
  'message',
118
- 'update',
118
+ 'edit',
119
119
  SLACKBOT_TEST_CHANNEL_ID,
120
120
  sent!.ts,
121
121
  `Updated ${testId}`,
@@ -93,7 +93,7 @@ describe('Telegram Bot E2E Tests', () => {
93
93
  if (data?.message?.message_id) trackedMessageIds.push(data.message.message_id)
94
94
  })
95
95
 
96
- it('message update edits previously sent message', async () => {
96
+ it('message edit edits previously sent message', async () => {
97
97
  if (!telegramBotAvailable) return
98
98
 
99
99
  const testId = generateTestId()
@@ -111,7 +111,7 @@ describe('Telegram Bot E2E Tests', () => {
111
111
 
112
112
  const updateResult = await runCLI('telegrambot', [
113
113
  'message',
114
- 'update',
114
+ 'edit',
115
115
  TELEGRAMBOT_TEST_CHAT_ID,
116
116
  String(sent!.message.message_id),
117
117
  `Edited ${testId}`,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-messenger",
3
- "version": "2.29.1",
3
+ "version": "2.31.0",
4
4
  "description": "Multi-platform messaging CLI for AI agents (Slack, Discord, Teams, Webex, Telegram, Telegram Bot, WhatsApp, LINE, iMessage, Instagram, KakaoTalk, Channel Talk)",
5
5
  "repository": {
6
6
  "type": "git",
@@ -211,7 +211,7 @@
211
211
  "oxlint": "^1.51.0",
212
212
  "tsc-alias": "^1.8.16",
213
213
  "tsx": "^4.21.0",
214
- "typescript": "^5.9.3"
214
+ "typescript": "^7.0.2"
215
215
  },
216
216
  "optionalDependencies": {
217
217
  "koffi": "^2.15.2",
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-channeltalk
3
3
  description: Interact with Channel Talk using extracted desktop app or browser credentials - read chats, send messages, search messages, manage groups
4
- version: 2.29.1
4
+ version: 2.31.0
5
5
  allowed-tools: Bash(agent-channeltalk:*)
6
6
  metadata:
7
7
  openclaw:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-channeltalkbot
3
3
  description: Interact with Channel Talk workspaces using API credentials - send messages, read chats, manage groups and bots
4
- version: 2.29.1
4
+ version: 2.31.0
5
5
  allowed-tools: Bash(agent-channeltalkbot:*)
6
6
  metadata:
7
7
  openclaw:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-discord
3
3
  description: Interact with Discord servers - send messages, read channels, manage reactions
4
- version: 2.29.1
4
+ version: 2.31.0
5
5
  allowed-tools: Bash(agent-discord:*)
6
6
  metadata:
7
7
  openclaw:
@@ -193,6 +193,10 @@ agent-discord message list 1234567890123456789 --limit 50
193
193
  agent-discord message get <channel-id> <message-id>
194
194
  agent-discord message get 1234567890123456789 9876543210987654321
195
195
 
196
+ # Edit a message
197
+ agent-discord message edit <channel-id> <message-id> <content>
198
+ agent-discord message edit 1234567890123456789 9876543210987654321 "Updated text"
199
+
196
200
  # Delete a message
197
201
  agent-discord message delete <channel-id> <message-id> --force
198
202
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-discordbot
3
3
  description: Interact with Discord servers using bot tokens - send messages, read channels, manage reactions
4
- version: 2.29.1
4
+ version: 2.31.0
5
5
  allowed-tools: Bash(agent-discordbot:*)
6
6
  metadata:
7
7
  openclaw:
@@ -220,8 +220,8 @@ agent-discordbot message get <channel-id> <message-id>
220
220
  agent-discordbot message replies <channel-id> <message-id>
221
221
  agent-discordbot message replies 1234567890123456789 9876543210987654321 --limit 50
222
222
 
223
- # Update a message (bot's own messages only)
224
- agent-discordbot message update <channel-id> <message-id> <new-content>
223
+ # Edit a message (bot's own messages only)
224
+ agent-discordbot message edit <channel-id> <message-id> <new-content>
225
225
 
226
226
  # Delete a message (bot's own messages only)
227
227
  agent-discordbot message delete <channel-id> <message-id> --force
@@ -107,8 +107,8 @@ sleep 5
107
107
  agent-discordbot reaction remove "$CHANNEL" "$MSG_ID" hourglass
108
108
  agent-discordbot reaction add "$CHANNEL" "$MSG_ID" white_check_mark
109
109
 
110
- # Update message with result
111
- agent-discordbot message update "$CHANNEL" "$MSG_ID" "Request processed successfully!"
110
+ # Edit message with result
111
+ agent-discordbot message edit "$CHANNEL" "$MSG_ID" "Request processed successfully!"
112
112
  ```
113
113
 
114
114
  **When to use**: Visual status tracking, acknowledgments, workflow states.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-imessage
3
3
  description: Interact with iMessage on a Mac via the imsg tool - send messages, read chats, watch for new messages
4
- version: 2.29.1
4
+ version: 2.31.0
5
5
  allowed-tools: Bash(agent-imessage:*)
6
6
  metadata:
7
7
  openclaw:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-instagram
3
3
  description: Interact with Instagram DMs - send messages, read conversations, manage accounts
4
- version: 2.29.1
4
+ version: 2.31.0
5
5
  allowed-tools: Bash(agent-instagram:*)
6
6
  metadata:
7
7
  openclaw:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-kakaotalk
3
3
  description: Interact with KakaoTalk - send messages, read chats, manage conversations
4
- version: 2.29.1
4
+ version: 2.31.0
5
5
  allowed-tools: Bash(agent-kakaotalk:*)
6
6
  metadata:
7
7
  openclaw:
@@ -303,6 +303,23 @@ Output includes:
303
303
  - `unread_count` — unread message count
304
304
  - `last_message` — most recent message preview, including `author_name` when the sender's nickname is known from the chat list (otherwise `null`)
305
305
 
306
+ ### Chat Leave
307
+
308
+ ```bash
309
+ # Leave a chat room (works on 1:1, group, open, and PlusChat rooms)
310
+ agent-kakaotalk chat leave <chat-id>
311
+ agent-kakaotalk chat leave <chat-id> --pretty
312
+ agent-kakaotalk chat leave <chat-id> --account <account-id>
313
+ ```
314
+
315
+ Output (JSON by default; `--pretty` pretty-prints the same JSON):
316
+
317
+ ```json
318
+ { "success": true, "status_code": 0, "chat_id": "9876543210" }
319
+ ```
320
+
321
+ The process exits non-zero when `success` is `false`.
322
+
306
323
  ### Member Commands
307
324
 
308
325
  ```bash
@@ -623,7 +640,7 @@ See the [KakaoTalk SDK documentation](https://agent-messenger.dev/docs/sdk/kakao
623
640
  ## Limitations
624
641
 
625
642
  - Auto-extraction of email/password from the desktop app is **macOS and Windows only** (KakaoTalk desktop is not available on Linux). Linux users must pass `--email` and `--password` (or `--password-file`) explicitly — the LOCO protocol, login flow, and all messaging features work on Linux.
626
- - No channel/chat room creation or management
643
+ - No chat room creation
627
644
  - No friend list management
628
645
  - No reactions or emoji
629
646
  - No message editing or deletion
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-line
3
3
  description: Interact with LINE - send messages, read chats, manage conversations
4
- version: 2.29.1
4
+ version: 2.31.0
5
5
  allowed-tools: Bash(agent-line:*)
6
6
  metadata:
7
7
  openclaw:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-slack
3
3
  description: Interact with Slack workspaces - send messages, read channels, manage reactions
4
- version: 2.29.1
4
+ version: 2.31.0
5
5
  allowed-tools: Bash(agent-slack:*)
6
6
  metadata:
7
7
  openclaw:
@@ -217,8 +217,8 @@ agent-slack message replies general 1234567890.123456 --limit 50
217
217
  agent-slack message replies general 1234567890.123456 --oldest 1234567890.000000
218
218
  agent-slack message replies general 1234567890.123456 --cursor <next_cursor>
219
219
 
220
- # Update a message
221
- agent-slack message update <channel> <ts> <new-text>
220
+ # Edit a message
221
+ agent-slack message edit <channel> <ts> <new-text>
222
222
 
223
223
  # Delete a message
224
224
  agent-slack message delete <channel> <ts> --force
@@ -287,8 +287,8 @@ sleep 5
287
287
  agent-slack reaction remove "$CHANNEL" "$MSG_TS" hourglass_flowing_sand
288
288
  agent-slack reaction add "$CHANNEL" "$MSG_TS" white_check_mark
289
289
 
290
- # Update message
291
- agent-slack message update "$CHANNEL" "$MSG_TS" "✅ Deployed v2.1.0 to production successfully!"
290
+ # Edit message
291
+ agent-slack message edit "$CHANNEL" "$MSG_TS" "✅ Deployed v2.1.0 to production successfully!"
292
292
  ```
293
293
 
294
294
  **When to use**: Visual status tracking, workflow states, quick acknowledgments.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-slackbot
3
3
  description: Interact with Slack workspaces using bot tokens - send messages, read channels, manage reactions
4
- version: 2.29.1
4
+ version: 2.31.0
5
5
  allowed-tools: Bash(agent-slackbot:*)
6
6
  metadata:
7
7
  openclaw:
@@ -206,8 +206,8 @@ agent-slackbot message get <channel> <ts>
206
206
  agent-slackbot message replies <channel> <thread_ts>
207
207
  agent-slackbot message replies C0ACZKTDDC0 1234567890.123456 --limit 50
208
208
 
209
- # Update a message (bot's own messages only)
210
- agent-slackbot message update <channel> <ts> <new-text>
209
+ # Edit a message (bot's own messages only)
210
+ agent-slackbot message edit <channel> <ts> <new-text>
211
211
 
212
212
  # Delete a message (bot's own messages only)
213
213
  agent-slackbot message delete <channel> <ts> --force
@@ -47,8 +47,8 @@ sleep 2
47
47
  agent-slackbot message send "$CHANNEL" "Deploying to production..." --thread "$THREAD_TS"
48
48
  sleep 2
49
49
 
50
- # Update parent with final status
51
- agent-slackbot message update "$CHANNEL" "$THREAD_TS" "Deployment complete!"
50
+ # Edit parent with final status
51
+ agent-slackbot message edit "$CHANNEL" "$THREAD_TS" "Deployment complete!"
52
52
 
53
53
  # Add reaction
54
54
  agent-slackbot reaction add "$CHANNEL" "$THREAD_TS" white_check_mark
@@ -110,8 +110,8 @@ sleep 5
110
110
  agent-slackbot reaction remove "$CHANNEL" "$MSG_TS" hourglass_flowing_sand
111
111
  agent-slackbot reaction add "$CHANNEL" "$MSG_TS" white_check_mark
112
112
 
113
- # Update message with result
114
- agent-slackbot message update "$CHANNEL" "$MSG_TS" "Request processed successfully!"
113
+ # Edit message with result
114
+ agent-slackbot message edit "$CHANNEL" "$MSG_TS" "Request processed successfully!"
115
115
  ```
116
116
 
117
117
  **When to use**: Visual status tracking, acknowledgments, workflow states.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-teams
3
3
  description: Interact with Microsoft Teams - send messages, read channels, manage reactions
4
- version: 2.29.1
4
+ version: 2.31.0
5
5
  allowed-tools: Bash(agent-teams:*)
6
6
  metadata:
7
7
  openclaw:
@@ -249,10 +249,15 @@ agent-teams chat history <chat-id> --limit 100
249
249
 
250
250
  # Send a message to a chat
251
251
  agent-teams chat send <chat-id> "Hello"
252
+
253
+ # Edit one of your own chat messages
254
+ agent-teams chat edit <chat-id> <message-id> "Updated text"
252
255
  ```
253
256
 
254
257
  Chat IDs look like `19:guid1_guid2@unq.gbl.spaces` (1:1) or `19:guid@thread.tacv2` (group). Get them from `chat list`. The `48:notes` chat (`type: self`) is your personal "to me" notes thread.
255
258
 
259
+ `chat edit` only works on your own messages, and only for chats — Teams channel messages are not editable through this API.
260
+
256
261
  ### Team Commands
257
262
 
258
263
  ```bash
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-telegram
3
3
  description: Interact with Telegram through TDLib - authenticate, inspect chats, and send messages
4
- version: 2.29.1
4
+ version: 2.31.0
5
5
  allowed-tools: Bash(agent-telegram:*)
6
6
  ---
7
7
 
@@ -117,6 +117,9 @@ agent-telegram chat get @durov
117
117
  # List recent messages
118
118
  agent-telegram message list @durov --limit 10
119
119
 
120
+ # Edit one of your own messages (within 48h)
121
+ agent-telegram message edit @durov <message-id> "Updated text"
122
+
120
123
  # Logout
121
124
  agent-telegram auth logout
122
125
  ```
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-telegrambot
3
3
  description: Interact with Telegram using bot tokens - send messages, read chats, manage reactions
4
- version: 2.29.1
4
+ version: 2.31.0
5
5
  allowed-tools: Bash(agent-telegrambot:*)
6
6
  metadata:
7
7
  openclaw:
@@ -172,7 +172,7 @@ agent-telegrambot message send @username "Silent message" --silent
172
172
  agent-telegrambot message send <chat> "Topic message" --thread-id 5
173
173
 
174
174
  # Edit a message (bot's own messages only)
175
- agent-telegrambot message update <chat> <message-id> <new-text>
175
+ agent-telegrambot message edit <chat> <message-id> <new-text>
176
176
 
177
177
  # Delete a message
178
178
  agent-telegrambot message delete <chat> <message-id> --force
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-webex
3
3
  description: Interact with Cisco Webex - send messages, read spaces, manage memberships
4
- version: 2.29.1
4
+ version: 2.31.0
5
5
  allowed-tools: Bash(agent-webex:*)
6
6
  metadata:
7
7
  openclaw:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-webexbot
3
3
  description: Interact with Cisco Webex using bot tokens - send messages, reply in threads, upload and download files, look up people, read spaces, manage memberships, stream real-time events
4
- version: 2.29.1
4
+ version: 2.31.0
5
5
  allowed-tools: Bash(agent-webexbot:*)
6
6
  metadata:
7
7
  openclaw:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-wechatbot
3
3
  description: Interact with WeChat Official Account using API credentials - send messages, manage templates, list followers
4
- version: 2.29.1
4
+ version: 2.31.0
5
5
  allowed-tools: Bash(agent-wechatbot:*)
6
6
  metadata:
7
7
  openclaw:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-whatsapp
3
3
  description: Interact with WhatsApp - send messages, read chats, manage conversations
4
- version: 2.29.1
4
+ version: 2.31.0
5
5
  allowed-tools: Bash(agent-whatsapp:*)
6
6
  metadata:
7
7
  openclaw:
@@ -251,6 +251,10 @@ agent-whatsapp message send +1234567890 "Hello!"
251
251
  agent-whatsapp message send 123456789-123345@g.us "Hello team!"
252
252
  agent-whatsapp message send +1234567890 "Hello!" --account <id>
253
253
 
254
+ # Edit one of your own messages (within ~15 minutes)
255
+ agent-whatsapp message edit <chat> <message-id> <text>
256
+ agent-whatsapp message edit +1234567890 ABC123DEF456 "Updated text"
257
+
254
258
  # React to a message
255
259
  agent-whatsapp message react <chat> <message-id> <emoji>
256
260
  agent-whatsapp message react +1234567890 ABC123DEF456 "👍"
@@ -342,6 +346,26 @@ agent-whatsapp message list +1234567890 --limit 1
342
346
  agent-whatsapp message react +1234567890 <message-id> "👍"
343
347
  ```
344
348
 
349
+ ### Edit one of your own messages
350
+
351
+ ```bash
352
+ # Get the message ID of a message you sent
353
+ agent-whatsapp message list +1234567890 --limit 5
354
+
355
+ # Edit it (only your own messages, within ~15 minutes)
356
+ agent-whatsapp message edit +1234567890 <message-id> "Updated text"
357
+ ```
358
+
359
+ The SDK exposes the same capability via `WhatsAppClient.editMessage`:
360
+
361
+ ```typescript
362
+ import { WhatsAppClient } from 'agent-messenger/whatsapp'
363
+
364
+ const client = await new WhatsAppClient().login()
365
+ const sent = await client.sendMessage('+1234567890', 'Deploying…')
366
+ await client.editMessage('+1234567890', sent.id, 'Deployed ✅')
367
+ ```
368
+
345
369
  ## Error Handling
346
370
 
347
371
  All commands return consistent error format:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-whatsappbot
3
3
  description: Interact with WhatsApp using Cloud API credentials - send messages, manage templates
4
- version: 2.29.1
4
+ version: 2.31.0
5
5
  allowed-tools: Bash(agent-whatsappbot:*)
6
6
  metadata:
7
7
  openclaw: