agent-messenger 1.13.0 → 1.14.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 (224) hide show
  1. package/.claude-plugin/plugin.json +6 -3
  2. package/.env.template +10 -0
  3. package/README.md +11 -8
  4. package/dist/package.json +3 -1
  5. package/dist/src/cli.d.ts.map +1 -1
  6. package/dist/src/cli.js +6 -0
  7. package/dist/src/cli.js.map +1 -1
  8. package/dist/src/platforms/channeltalk/cli.d.ts +5 -0
  9. package/dist/src/platforms/channeltalk/cli.d.ts.map +1 -0
  10. package/dist/src/platforms/channeltalk/cli.js +36 -0
  11. package/dist/src/platforms/channeltalk/cli.js.map +1 -0
  12. package/dist/src/platforms/channeltalk/client.d.ts +66 -0
  13. package/dist/src/platforms/channeltalk/client.d.ts.map +1 -0
  14. package/dist/src/platforms/channeltalk/client.js +200 -0
  15. package/dist/src/platforms/channeltalk/client.js.map +1 -0
  16. package/dist/src/platforms/channeltalk/commands/auth.d.ts +55 -0
  17. package/dist/src/platforms/channeltalk/commands/auth.d.ts.map +1 -0
  18. package/dist/src/platforms/channeltalk/commands/auth.js +212 -0
  19. package/dist/src/platforms/channeltalk/commands/auth.js.map +1 -0
  20. package/dist/src/platforms/channeltalk/commands/bot.d.ts +22 -0
  21. package/dist/src/platforms/channeltalk/commands/bot.d.ts.map +1 -0
  22. package/dist/src/platforms/channeltalk/commands/bot.js +47 -0
  23. package/dist/src/platforms/channeltalk/commands/bot.js.map +1 -0
  24. package/dist/src/platforms/channeltalk/commands/chat.d.ts +33 -0
  25. package/dist/src/platforms/channeltalk/commands/chat.d.ts.map +1 -0
  26. package/dist/src/platforms/channeltalk/commands/chat.js +79 -0
  27. package/dist/src/platforms/channeltalk/commands/chat.js.map +1 -0
  28. package/dist/src/platforms/channeltalk/commands/group.d.ts +48 -0
  29. package/dist/src/platforms/channeltalk/commands/group.d.ts.map +1 -0
  30. package/dist/src/platforms/channeltalk/commands/group.js +116 -0
  31. package/dist/src/platforms/channeltalk/commands/group.js.map +1 -0
  32. package/dist/src/platforms/channeltalk/commands/index.d.ts +8 -0
  33. package/dist/src/platforms/channeltalk/commands/index.d.ts.map +1 -0
  34. package/dist/src/platforms/channeltalk/commands/index.js +8 -0
  35. package/dist/src/platforms/channeltalk/commands/index.js.map +1 -0
  36. package/dist/src/platforms/channeltalk/commands/manager.d.ts +26 -0
  37. package/dist/src/platforms/channeltalk/commands/manager.d.ts.map +1 -0
  38. package/dist/src/platforms/channeltalk/commands/manager.js +51 -0
  39. package/dist/src/platforms/channeltalk/commands/manager.js.map +1 -0
  40. package/dist/src/platforms/channeltalk/commands/message.d.ts +61 -0
  41. package/dist/src/platforms/channeltalk/commands/message.d.ts.map +1 -0
  42. package/dist/src/platforms/channeltalk/commands/message.js +193 -0
  43. package/dist/src/platforms/channeltalk/commands/message.js.map +1 -0
  44. package/dist/src/platforms/channeltalk/commands/shared.d.ts +10 -0
  45. package/dist/src/platforms/channeltalk/commands/shared.d.ts.map +1 -0
  46. package/dist/src/platforms/channeltalk/commands/shared.js +19 -0
  47. package/dist/src/platforms/channeltalk/commands/shared.js.map +1 -0
  48. package/dist/src/platforms/channeltalk/commands/snapshot.d.ts +53 -0
  49. package/dist/src/platforms/channeltalk/commands/snapshot.d.ts.map +1 -0
  50. package/dist/src/platforms/channeltalk/commands/snapshot.js +121 -0
  51. package/dist/src/platforms/channeltalk/commands/snapshot.js.map +1 -0
  52. package/dist/src/platforms/channeltalk/credential-manager.d.ts +17 -0
  53. package/dist/src/platforms/channeltalk/credential-manager.d.ts.map +1 -0
  54. package/dist/src/platforms/channeltalk/credential-manager.js +131 -0
  55. package/dist/src/platforms/channeltalk/credential-manager.js.map +1 -0
  56. package/dist/src/platforms/channeltalk/ensure-auth.d.ts +17 -0
  57. package/dist/src/platforms/channeltalk/ensure-auth.d.ts.map +1 -0
  58. package/dist/src/platforms/channeltalk/ensure-auth.js +73 -0
  59. package/dist/src/platforms/channeltalk/ensure-auth.js.map +1 -0
  60. package/dist/src/platforms/channeltalk/index.d.ts +5 -0
  61. package/dist/src/platforms/channeltalk/index.d.ts.map +1 -0
  62. package/dist/src/platforms/channeltalk/index.js +5 -0
  63. package/dist/src/platforms/channeltalk/index.js.map +1 -0
  64. package/dist/src/platforms/channeltalk/token-extractor.d.ts +8 -0
  65. package/dist/src/platforms/channeltalk/token-extractor.d.ts.map +1 -0
  66. package/dist/src/platforms/channeltalk/token-extractor.js +71 -0
  67. package/dist/src/platforms/channeltalk/token-extractor.js.map +1 -0
  68. package/dist/src/platforms/channeltalk/types.d.ts +1328 -0
  69. package/dist/src/platforms/channeltalk/types.d.ts.map +1 -0
  70. package/dist/src/platforms/channeltalk/types.js +160 -0
  71. package/dist/src/platforms/channeltalk/types.js.map +1 -0
  72. package/dist/src/platforms/channeltalkbot/cli.d.ts +5 -0
  73. package/dist/src/platforms/channeltalkbot/cli.d.ts.map +1 -0
  74. package/dist/src/platforms/channeltalkbot/cli.js +22 -0
  75. package/dist/src/platforms/channeltalkbot/cli.js.map +1 -0
  76. package/dist/src/platforms/channeltalkbot/client.d.ts +71 -0
  77. package/dist/src/platforms/channeltalkbot/client.d.ts.map +1 -0
  78. package/dist/src/platforms/channeltalkbot/client.js +200 -0
  79. package/dist/src/platforms/channeltalkbot/client.js.map +1 -0
  80. package/dist/src/platforms/channeltalkbot/commands/auth.d.ts +30 -0
  81. package/dist/src/platforms/channeltalkbot/commands/auth.d.ts.map +1 -0
  82. package/dist/src/platforms/channeltalkbot/commands/auth.js +183 -0
  83. package/dist/src/platforms/channeltalkbot/commands/auth.js.map +1 -0
  84. package/dist/src/platforms/channeltalkbot/commands/bot.d.ts +32 -0
  85. package/dist/src/platforms/channeltalkbot/commands/bot.d.ts.map +1 -0
  86. package/dist/src/platforms/channeltalkbot/commands/bot.js +92 -0
  87. package/dist/src/platforms/channeltalkbot/commands/bot.js.map +1 -0
  88. package/dist/src/platforms/channeltalkbot/commands/chat.d.ts +39 -0
  89. package/dist/src/platforms/channeltalkbot/commands/chat.d.ts.map +1 -0
  90. package/dist/src/platforms/channeltalkbot/commands/chat.js +123 -0
  91. package/dist/src/platforms/channeltalkbot/commands/chat.js.map +1 -0
  92. package/dist/src/platforms/channeltalkbot/commands/group.d.ts +32 -0
  93. package/dist/src/platforms/channeltalkbot/commands/group.d.ts.map +1 -0
  94. package/dist/src/platforms/channeltalkbot/commands/group.js +100 -0
  95. package/dist/src/platforms/channeltalkbot/commands/group.js.map +1 -0
  96. package/dist/src/platforms/channeltalkbot/commands/index.d.ts +8 -0
  97. package/dist/src/platforms/channeltalkbot/commands/index.d.ts.map +1 -0
  98. package/dist/src/platforms/channeltalkbot/commands/index.js +8 -0
  99. package/dist/src/platforms/channeltalkbot/commands/index.js.map +1 -0
  100. package/dist/src/platforms/channeltalkbot/commands/manager.d.ts +26 -0
  101. package/dist/src/platforms/channeltalkbot/commands/manager.d.ts.map +1 -0
  102. package/dist/src/platforms/channeltalkbot/commands/manager.js +67 -0
  103. package/dist/src/platforms/channeltalkbot/commands/manager.js.map +1 -0
  104. package/dist/src/platforms/channeltalkbot/commands/message.d.ts +38 -0
  105. package/dist/src/platforms/channeltalkbot/commands/message.d.ts.map +1 -0
  106. package/dist/src/platforms/channeltalkbot/commands/message.js +145 -0
  107. package/dist/src/platforms/channeltalkbot/commands/message.js.map +1 -0
  108. package/dist/src/platforms/channeltalkbot/commands/shared.d.ts +12 -0
  109. package/dist/src/platforms/channeltalkbot/commands/shared.d.ts.map +1 -0
  110. package/dist/src/platforms/channeltalkbot/commands/shared.js +31 -0
  111. package/dist/src/platforms/channeltalkbot/commands/shared.js.map +1 -0
  112. package/dist/src/platforms/channeltalkbot/commands/snapshot.d.ts +54 -0
  113. package/dist/src/platforms/channeltalkbot/commands/snapshot.d.ts.map +1 -0
  114. package/dist/src/platforms/channeltalkbot/commands/snapshot.js +139 -0
  115. package/dist/src/platforms/channeltalkbot/commands/snapshot.js.map +1 -0
  116. package/dist/src/platforms/channeltalkbot/credential-manager.d.ts +19 -0
  117. package/dist/src/platforms/channeltalkbot/credential-manager.d.ts.map +1 -0
  118. package/dist/src/platforms/channeltalkbot/credential-manager.js +149 -0
  119. package/dist/src/platforms/channeltalkbot/credential-manager.js.map +1 -0
  120. package/dist/src/platforms/channeltalkbot/index.d.ts +4 -0
  121. package/dist/src/platforms/channeltalkbot/index.d.ts.map +1 -0
  122. package/dist/src/platforms/channeltalkbot/index.js +4 -0
  123. package/dist/src/platforms/channeltalkbot/index.js.map +1 -0
  124. package/dist/src/platforms/channeltalkbot/message-utils.d.ts +3 -0
  125. package/dist/src/platforms/channeltalkbot/message-utils.d.ts.map +1 -0
  126. package/dist/src/platforms/channeltalkbot/message-utils.js +4 -0
  127. package/dist/src/platforms/channeltalkbot/message-utils.js.map +1 -0
  128. package/dist/src/platforms/channeltalkbot/types.d.ts +337 -0
  129. package/dist/src/platforms/channeltalkbot/types.d.ts.map +1 -0
  130. package/dist/src/platforms/channeltalkbot/types.js +88 -0
  131. package/dist/src/platforms/channeltalkbot/types.js.map +1 -0
  132. package/dist/src/platforms/discord/types.d.ts +36 -36
  133. package/dist/src/platforms/discordbot/types.d.ts +12 -12
  134. package/dist/src/platforms/slack/ensure-auth.d.ts.map +1 -1
  135. package/dist/src/platforms/slack/ensure-auth.js +1 -0
  136. package/dist/src/platforms/slack/ensure-auth.js.map +1 -1
  137. package/dist/src/platforms/slack/token-extractor.d.ts.map +1 -1
  138. package/dist/src/platforms/slack/token-extractor.js +9 -1
  139. package/dist/src/platforms/slack/token-extractor.js.map +1 -1
  140. package/dist/src/platforms/slack/types.d.ts +34 -34
  141. package/dist/src/platforms/slackbot/types.d.ts +31 -31
  142. package/dist/src/platforms/teams/types.d.ts +4 -4
  143. package/e2e/channeltalk.e2e.test.ts +200 -0
  144. package/e2e/channeltalkbot.e2e.test.ts +202 -0
  145. package/e2e/config.ts +84 -0
  146. package/e2e/helpers.ts +2 -0
  147. package/package.json +3 -1
  148. package/scripts/postbuild.ts +2 -0
  149. package/skills/agent-channeltalk/SKILL.md +428 -0
  150. package/skills/agent-channeltalk/references/authentication.md +297 -0
  151. package/skills/agent-channeltalk/references/common-patterns.md +341 -0
  152. package/skills/agent-channeltalk/templates/monitor-chat.sh +96 -0
  153. package/skills/agent-channeltalk/templates/post-message.sh +127 -0
  154. package/skills/agent-channeltalk/templates/workspace-summary.sh +122 -0
  155. package/skills/agent-channeltalkbot/SKILL.md +421 -0
  156. package/skills/agent-channeltalkbot/references/authentication.md +185 -0
  157. package/skills/agent-channeltalkbot/references/common-patterns.md +264 -0
  158. package/skills/agent-channeltalkbot/templates/monitor-chat.sh +94 -0
  159. package/skills/agent-channeltalkbot/templates/post-message.sh +112 -0
  160. package/skills/agent-channeltalkbot/templates/workspace-summary.sh +119 -0
  161. package/skills/agent-discord/SKILL.md +3 -3
  162. package/skills/agent-discordbot/SKILL.md +3 -3
  163. package/skills/agent-slack/SKILL.md +13 -3
  164. package/skills/agent-slackbot/SKILL.md +3 -3
  165. package/skills/agent-teams/SKILL.md +3 -3
  166. package/src/cli.ts +8 -0
  167. package/src/platforms/channeltalk/cli.ts +51 -0
  168. package/src/platforms/channeltalk/client.test.ts +385 -0
  169. package/src/platforms/channeltalk/client.ts +355 -0
  170. package/src/platforms/channeltalk/commands/auth.test.ts +360 -0
  171. package/src/platforms/channeltalk/commands/auth.ts +296 -0
  172. package/src/platforms/channeltalk/commands/bot.test.ts +51 -0
  173. package/src/platforms/channeltalk/commands/bot.ts +74 -0
  174. package/src/platforms/channeltalk/commands/chat.test.ts +94 -0
  175. package/src/platforms/channeltalk/commands/chat.ts +121 -0
  176. package/src/platforms/channeltalk/commands/group.test.ts +157 -0
  177. package/src/platforms/channeltalk/commands/group.ts +174 -0
  178. package/src/platforms/channeltalk/commands/index.ts +7 -0
  179. package/src/platforms/channeltalk/commands/manager.test.ts +63 -0
  180. package/src/platforms/channeltalk/commands/manager.ts +82 -0
  181. package/src/platforms/channeltalk/commands/message.test.ts +546 -0
  182. package/src/platforms/channeltalk/commands/message.ts +309 -0
  183. package/src/platforms/channeltalk/commands/shared.ts +29 -0
  184. package/src/platforms/channeltalk/commands/snapshot.test.ts +193 -0
  185. package/src/platforms/channeltalk/commands/snapshot.ts +188 -0
  186. package/src/platforms/channeltalk/credential-manager.test.ts +207 -0
  187. package/src/platforms/channeltalk/credential-manager.ts +158 -0
  188. package/src/platforms/channeltalk/ensure-auth.test.ts +155 -0
  189. package/src/platforms/channeltalk/ensure-auth.ts +96 -0
  190. package/src/platforms/channeltalk/index.ts +34 -0
  191. package/src/platforms/channeltalk/token-extractor.test.ts +131 -0
  192. package/src/platforms/channeltalk/token-extractor.ts +91 -0
  193. package/src/platforms/channeltalk/types.test.ts +142 -0
  194. package/src/platforms/channeltalk/types.ts +345 -0
  195. package/src/platforms/channeltalkbot/cli.ts +36 -0
  196. package/src/platforms/channeltalkbot/client.test.ts +197 -0
  197. package/src/platforms/channeltalkbot/client.ts +300 -0
  198. package/src/platforms/channeltalkbot/commands/auth.test.ts +253 -0
  199. package/src/platforms/channeltalkbot/commands/auth.ts +229 -0
  200. package/src/platforms/channeltalkbot/commands/bot.test.ts +114 -0
  201. package/src/platforms/channeltalkbot/commands/bot.ts +132 -0
  202. package/src/platforms/channeltalkbot/commands/chat.test.ts +168 -0
  203. package/src/platforms/channeltalkbot/commands/chat.ts +174 -0
  204. package/src/platforms/channeltalkbot/commands/group.test.ts +136 -0
  205. package/src/platforms/channeltalkbot/commands/group.ts +136 -0
  206. package/src/platforms/channeltalkbot/commands/index.ts +7 -0
  207. package/src/platforms/channeltalkbot/commands/manager.test.ts +72 -0
  208. package/src/platforms/channeltalkbot/commands/manager.ts +98 -0
  209. package/src/platforms/channeltalkbot/commands/message.test.ts +194 -0
  210. package/src/platforms/channeltalkbot/commands/message.ts +189 -0
  211. package/src/platforms/channeltalkbot/commands/shared.ts +45 -0
  212. package/src/platforms/channeltalkbot/commands/snapshot.test.ts +113 -0
  213. package/src/platforms/channeltalkbot/commands/snapshot.ts +200 -0
  214. package/src/platforms/channeltalkbot/credential-manager.test.ts +308 -0
  215. package/src/platforms/channeltalkbot/credential-manager.ts +176 -0
  216. package/src/platforms/channeltalkbot/index.ts +27 -0
  217. package/src/platforms/channeltalkbot/message-utils.test.ts +20 -0
  218. package/src/platforms/channeltalkbot/message-utils.ts +5 -0
  219. package/src/platforms/channeltalkbot/types.test.ts +384 -0
  220. package/src/platforms/channeltalkbot/types.ts +185 -0
  221. package/src/platforms/slack/ensure-auth.test.ts +30 -0
  222. package/src/platforms/slack/ensure-auth.ts +1 -0
  223. package/src/platforms/slack/token-extractor.test.ts +25 -0
  224. package/src/platforms/slack/token-extractor.ts +10 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "agent-messenger",
3
- "version": "1.13.0",
4
- "description": "Messaging platform interaction skills for AI agents. Interact with Slack, Discord, and Microsoft Teams - send messages, read channels, manage reactions, upload files, and more through simple CLI interfaces.",
3
+ "version": "1.14.0",
4
+ "description": "Messaging platform interaction skills for AI agents. Interact with Slack, Discord, Microsoft Teams, and Channel Talk - send messages, read channels, manage reactions, upload files, and more through simple CLI interfaces.",
5
5
  "author": {
6
6
  "name": "devxoul",
7
7
  "url": "https://github.com/devxoul"
@@ -11,6 +11,7 @@
11
11
  "slack",
12
12
  "discord",
13
13
  "teams",
14
+ "channel-talk",
14
15
  "messaging",
15
16
  "workspace",
16
17
  "guild",
@@ -22,10 +23,12 @@
22
23
  "homepage": "https://github.com/devxoul/agent-messenger",
23
24
  "repository": "https://github.com/devxoul/agent-messenger",
24
25
  "skills": [
26
+ "./skills/agent-channeltalk",
25
27
  "./skills/agent-slack",
26
28
  "./skills/agent-slackbot",
27
29
  "./skills/agent-discord",
28
30
  "./skills/agent-discordbot",
29
- "./skills/agent-teams"
31
+ "./skills/agent-teams",
32
+ "./skills/agent-channeltalkbot"
30
33
  ]
31
34
  }
package/.env.template CHANGED
@@ -22,3 +22,13 @@ E2E_DISCORDBOT_SERVER_NAME=Agent Messenger
22
22
  E2E_TEAMS_TEAM_ID=
23
23
  E2E_TEAMS_TEAM_NAME=Agent Messenger
24
24
  E2E_TEAMS_CHANNEL_ID=
25
+
26
+ # ChannelBot (API key + secret — use a dedicated test workspace, NOT a production workspace)
27
+ # Group named "E2E" is auto-discovered from the workspace's group list.
28
+ E2E_CHANNELBOT_WORKSPACE_ID=
29
+ E2E_CHANNELBOT_WORKSPACE_NAME=
30
+
31
+ # Channel (user token from desktop app — use a dedicated test workspace, NOT a production workspace)
32
+ # Group named "E2E" is auto-discovered from the workspace's group list.
33
+ E2E_CHANNEL_WORKSPACE_ID=
34
+ E2E_CHANNEL_WORKSPACE_NAME=
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Agent Messenger
2
2
 
3
- [![npm version](https://img.shields.io/npm/v/agent-messenger)](https://www.npmjs.com/package/agent-messenger) [![SkillPad - agent-slack](https://img.shields.io/badge/SkillPad-agent--slack-1a1a1a)](https://skillpad.dev/install/devxoul/agent-messenger/agent-slack) [![SkillPad - agent-slackbot](https://img.shields.io/badge/SkillPad-agent--slackbot-1a1a1a)](https://skillpad.dev/install/devxoul/agent-messenger/agent-slackbot) [![SkillPad - agent-discord](https://img.shields.io/badge/SkillPad-agent--discord-1a1a1a)](https://skillpad.dev/install/devxoul/agent-messenger/agent-discord) [![SkillPad - agent-discordbot](https://img.shields.io/badge/SkillPad-agent--discordbot-1a1a1a)](https://skillpad.dev/install/devxoul/agent-messenger/agent-discordbot) [![SkillPad - agent-teams](https://img.shields.io/badge/SkillPad-agent--teams-1a1a1a)](https://skillpad.dev/install/devxoul/agent-messenger/agent-teams) [![SkillPad - agent-channelbot](https://img.shields.io/badge/SkillPad-agent--channelbot-1a1a1a)](https://skillpad.dev/install/devxoul/agent-messenger/agent-channelbot)
3
+ [![npm version](https://img.shields.io/npm/v/agent-messenger)](https://www.npmjs.com/package/agent-messenger) [![SkillPad - agent-slack](https://img.shields.io/badge/SkillPad-agent--slack-1a1a1a)](https://skillpad.dev/install/devxoul/agent-messenger/agent-slack) [![SkillPad - agent-slackbot](https://img.shields.io/badge/SkillPad-agent--slackbot-1a1a1a)](https://skillpad.dev/install/devxoul/agent-messenger/agent-slackbot) [![SkillPad - agent-discord](https://img.shields.io/badge/SkillPad-agent--discord-1a1a1a)](https://skillpad.dev/install/devxoul/agent-messenger/agent-discord) [![SkillPad - agent-discordbot](https://img.shields.io/badge/SkillPad-agent--discordbot-1a1a1a)](https://skillpad.dev/install/devxoul/agent-messenger/agent-discordbot) [![SkillPad - agent-teams](https://img.shields.io/badge/SkillPad-agent--teams-1a1a1a)](https://skillpad.dev/install/devxoul/agent-messenger/agent-teams) [![SkillPad - agent-channeltalk](https://img.shields.io/badge/SkillPad-agent--channeltalk-1a1a1a)](https://skillpad.dev/install/devxoul/agent-messenger/agent-channeltalk) [![SkillPad - agent-channeltalkbot](https://img.shields.io/badge/SkillPad-agent--channeltalkbot-1a1a1a)](https://skillpad.dev/install/devxoul/agent-messenger/agent-channeltalkbot)
4
4
 
5
5
  ![Agent Messenger](./docs/public/cover.png)
6
6
 
@@ -58,24 +58,26 @@ This installs:
58
58
  - `agent-discord` — Discord CLI
59
59
  - `agent-discordbot` — Discord Bot CLI (bot token, for server-side/CI/CD)
60
60
  - `agent-teams` — Microsoft Teams CLI
61
- - `agent-channelbot` — Channel Talk Bot CLI (API credentials, for server-side/CI/CD)
61
+ - `agent-channeltalk` — Channel Talk CLI (zero-config, extracted cookies)
62
+ - `agent-channeltalkbot` — Channel Talk Bot CLI (API credentials, for server-side/CI/CD)
62
63
 
63
64
  ## Agent Skills
64
65
 
65
- Agent Messenger includes [Agent Skills](https://agentskills.io/) that teach your AI agent how to use these CLIs effectively. Six skills are available:
66
+ Agent Messenger includes [Agent Skills](https://agentskills.io/) that teach your AI agent how to use these CLIs effectively. Seven skills are available:
66
67
 
67
68
  - **`agent-slack`** — Slack (user token, zero-config)
68
69
  - **`agent-slackbot`** — Slack Bot (bot token, for server-side/CI/CD)
69
70
  - **`agent-discord`** — Discord
70
71
  - **`agent-discordbot`** — Discord Bot (bot token, for server-side/CI/CD)
71
72
  - **`agent-teams`** — Microsoft Teams
72
- - **`agent-channelbot`** — Channel Talk Bot (API credentials, for server-side/CI/CD)
73
+ - **`agent-channeltalk`** — Channel Talk (zero-config, extracted cookies)
74
+ - **`agent-channeltalkbot`** — Channel Talk Bot (API credentials, for server-side/CI/CD)
73
75
 
74
76
  ### SkillPad
75
77
 
76
78
  SkillPad is a GUI app for Agent Skills. See [skillpad.dev](https://skillpad.dev/) for more details.
77
79
 
78
- [![Available on SkillPad](https://badge.skillpad.dev/agent-slack/dark.svg)](https://skillpad.dev/install/devxoul/agent-messenger/agent-slack) [![Available on SkillPad](https://badge.skillpad.dev/agent-slackbot/dark.svg)](https://skillpad.dev/install/devxoul/agent-messenger/agent-slackbot) [![Available on SkillPad](https://badge.skillpad.dev/agent-discord/dark.svg)](https://skillpad.dev/install/devxoul/agent-messenger/agent-discord) [![Available on SkillPad](https://badge.skillpad.dev/agent-discordbot/dark.svg)](https://skillpad.dev/install/devxoul/agent-messenger/agent-discordbot) [![Available on SkillPad](https://badge.skillpad.dev/agent-teams/dark.svg)](https://skillpad.dev/install/devxoul/agent-messenger/agent-teams) [![Available on SkillPad](https://badge.skillpad.dev/agent-channelbot/dark.svg)](https://skillpad.dev/install/devxoul/agent-messenger/agent-channelbot)
80
+ [![Available on SkillPad](https://badge.skillpad.dev/agent-slack/dark.svg)](https://skillpad.dev/install/devxoul/agent-messenger/agent-slack) [![Available on SkillPad](https://badge.skillpad.dev/agent-slackbot/dark.svg)](https://skillpad.dev/install/devxoul/agent-messenger/agent-slackbot) [![Available on SkillPad](https://badge.skillpad.dev/agent-discord/dark.svg)](https://skillpad.dev/install/devxoul/agent-messenger/agent-discord) [![Available on SkillPad](https://badge.skillpad.dev/agent-discordbot/dark.svg)](https://skillpad.dev/install/devxoul/agent-messenger/agent-discordbot) [![Available on SkillPad](https://badge.skillpad.dev/agent-teams/dark.svg)](https://skillpad.dev/install/devxoul/agent-messenger/agent-teams) [![Available on SkillPad](https://badge.skillpad.dev/agent-channeltalk/dark.svg)](https://skillpad.dev/install/devxoul/agent-messenger/agent-channeltalk) [![Available on SkillPad](https://badge.skillpad.dev/agent-channeltalkbot/dark.svg)](https://skillpad.dev/install/devxoul/agent-messenger/agent-channeltalkbot)
79
81
 
80
82
  ### Skills CLI
81
83
 
@@ -127,9 +129,9 @@ That's it. Credentials are extracted automatically from your Slack desktop app o
127
129
 
128
130
  | Feature | Slack | Discord | Teams | Channel Talk |
129
131
  | -------------------------- | :---: | :-----: | :---: | :----------: |
130
- | Auto credential extraction | ✅ | ✅ | ✅ | |
132
+ | Auto credential extraction | ✅ | ✅ | ✅ | |
131
133
  | Send & list messages | ✅ | ✅ | ✅ | ✅ |
132
- | Search messages | ✅ | ✅ | — | |
134
+ | Search messages | ✅ | ✅ | — | |
133
135
  | Threads | ✅ | ✅ | — | — |
134
136
  | Channels & Users | ✅ | ✅ | ✅ | ✅ |
135
137
  | Reactions | ✅ | ✅ | ✅ | — |
@@ -153,7 +155,8 @@ That's it. Credentials are extracted automatically from your Slack desktop app o
153
155
  - **[Discord Guide](https://agent-messenger.dev/docs/integrations/discord)** — Full command reference for Discord
154
156
  - **[Discord Bot Guide](https://agent-messenger.dev/docs/integrations/discordbot)** — Bot token integration for server-side and CI/CD
155
157
  - **[Teams Guide](https://agent-messenger.dev/docs/integrations/teams)** — Full command reference for Microsoft Teams
156
- - **[Channel Talk Bot Guide](https://agent-messenger.dev/docs/integrations/channelbot)** — Bot API integration for Channel Talk customer support
158
+ - **[Channel Talk Guide](https://agent-messenger.dev/docs/integrations/channeltalk)** — Full command reference for Channel Talk (zero-config)
159
+ - **[Channel Talk Bot Guide](https://agent-messenger.dev/docs/integrations/channeltalkbot)** — Bot API integration for Channel Talk customer support
157
160
 
158
161
  ## Use Cases
159
162
 
package/dist/package.json CHANGED
@@ -1,17 +1,19 @@
1
1
  {
2
2
  "name": "agent-messenger",
3
- "version": "1.13.0",
3
+ "version": "1.14.0",
4
4
  "description": "Multi-platform messaging CLI for AI agents (Slack, Discord, Teams)",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/devxoul/agent-messenger"
8
8
  },
9
9
  "bin": {
10
+ "agent-channeltalk": "./src/platforms/channeltalk/cli.ts",
10
11
  "agent-discord": "./src/platforms/discord/cli.ts",
11
12
  "agent-discordbot": "./src/platforms/discordbot/cli.ts",
12
13
  "agent-messenger": "./src/cli.ts",
13
14
  "agent-slack": "./src/platforms/slack/cli.ts",
14
15
  "agent-slackbot": "./src/platforms/slackbot/cli.ts",
16
+ "agent-channeltalkbot": "./src/platforms/channeltalkbot/cli.ts",
15
17
  "agent-teams": "./src/platforms/teams/cli.ts",
16
18
  "amsg": "./src/cli.ts"
17
19
  },
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAQnC,QAAA,MAAM,OAAO,SAAgB,CAAA;AA2B7B,eAAe,OAAO,CAAA"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAQnC,QAAA,MAAM,OAAO,SAAgB,CAAA;AAmC7B,eAAe,OAAO,CAAA"}
package/dist/src/cli.js CHANGED
@@ -24,6 +24,12 @@ program.command('slackbot', 'Interact with Slack using bot tokens', {
24
24
  program.command('discordbot', 'Interact with Discord using bot tokens', {
25
25
  executableFile: join(__dirname, 'platforms', 'discordbot', `cli${ext}`),
26
26
  });
27
+ program.command('channeltalkbot', 'Interact with Channel Talk using API credentials', {
28
+ executableFile: join(__dirname, 'platforms', 'channeltalkbot', `cli${ext}`),
29
+ });
30
+ program.command('channeltalk', 'Interact with Channel Talk', {
31
+ executableFile: join(__dirname, 'platforms', 'channeltalk', `cli${ext}`),
32
+ });
27
33
  program.parse(process.argv);
28
34
  export default program;
29
35
  //# sourceMappingURL=cli.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,GAAG,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AAEvD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACjD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;AACrC,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAA;AAEtD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;AAE7B,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC,4CAA4C,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;AAE9G,0CAA0C;AAC1C,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,gCAAgC,EAAE;IACzD,cAAc,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;CACnE,CAAC,CAAA;AAEF,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,8BAA8B,EAAE;IACzD,cAAc,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,GAAG,EAAE,CAAC;CACrE,CAAC,CAAA;AAEF,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,+BAA+B,EAAE;IACxD,cAAc,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;CACnE,CAAC,CAAA;AAEF,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,sCAAsC,EAAE;IAClE,cAAc,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,GAAG,EAAE,CAAC;CACtE,CAAC,CAAA;AAEF,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,wCAAwC,EAAE;IACtE,cAAc,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,GAAG,EAAE,CAAC;CACxE,CAAC,CAAA;AAEF,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AAE3B,eAAe,OAAO,CAAA"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,GAAG,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AAEvD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACjD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;AACrC,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAA;AAEtD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;AAE7B,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC,4CAA4C,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;AAE9G,0CAA0C;AAC1C,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,gCAAgC,EAAE;IACzD,cAAc,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;CACnE,CAAC,CAAA;AAEF,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,8BAA8B,EAAE;IACzD,cAAc,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,GAAG,EAAE,CAAC;CACrE,CAAC,CAAA;AAEF,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,+BAA+B,EAAE;IACxD,cAAc,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;CACnE,CAAC,CAAA;AAEF,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,sCAAsC,EAAE;IAClE,cAAc,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,GAAG,EAAE,CAAC;CACtE,CAAC,CAAA;AAEF,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,wCAAwC,EAAE;IACtE,cAAc,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,GAAG,EAAE,CAAC;CACxE,CAAC,CAAA;AAEF,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE,kDAAkD,EAAE;IACpF,cAAc,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,GAAG,EAAE,CAAC;CAC5E,CAAC,CAAA;AAEF,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,4BAA4B,EAAE;IAC3D,cAAc,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,GAAG,EAAE,CAAC;CACzE,CAAC,CAAA;AAEF,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AAE3B,eAAe,OAAO,CAAA"}
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env bun
2
+ import type { Command as CommandType } from 'commander';
3
+ declare const program: CommandType;
4
+ export default program;
5
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../../../src/platforms/channeltalk/cli.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,WAAW,CAAA;AAwBvD,QAAA,MAAM,OAAO,aAAgB,CAAA;AAwB7B,eAAe,OAAO,CAAA"}
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from 'commander';
3
+ import pkg from '../../../package.json' with { type: 'json' };
4
+ import { createAuthCommand, createBotCommand, createChatCommand, createGroupCommand, createManagerCommand, createMessageCommand, createSnapshotCommand, } from './commands/index.js';
5
+ import { ensureChannelAuth } from './ensure-auth.js';
6
+ function isAuthCommand(command) {
7
+ let cmd = command;
8
+ while (cmd) {
9
+ if (cmd.name() === 'auth')
10
+ return true;
11
+ cmd = cmd.parent;
12
+ }
13
+ return false;
14
+ }
15
+ const program = new Command();
16
+ program
17
+ .name('agent-channeltalk')
18
+ .description('CLI tool for Channel Talk using extracted desktop app credentials')
19
+ .version(pkg.version)
20
+ .option('--pretty', 'Pretty-print JSON output')
21
+ .option('--workspace <id>', 'Workspace ID to use');
22
+ program.hook('preAction', async (_thisCommand, actionCommand) => {
23
+ if (isAuthCommand(actionCommand))
24
+ return;
25
+ await ensureChannelAuth();
26
+ });
27
+ program.addCommand(createAuthCommand());
28
+ program.addCommand(createMessageCommand());
29
+ program.addCommand(createChatCommand());
30
+ program.addCommand(createGroupCommand());
31
+ program.addCommand(createManagerCommand());
32
+ program.addCommand(createBotCommand());
33
+ program.addCommand(createSnapshotCommand());
34
+ program.parseAsync(process.argv);
35
+ export default program;
36
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../../src/platforms/channeltalk/cli.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,GAAG,MAAM,uBAAuB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AAC7D,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAEjD,SAAS,aAAa,CAAC,OAAoB;IACzC,IAAI,GAAG,GAAuB,OAAO,CAAA;IACrC,OAAO,GAAG,EAAE,CAAC;QACX,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,MAAM;YAAE,OAAO,IAAI,CAAA;QACtC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAA;IAClB,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;AAE7B,OAAO;KACJ,IAAI,CAAC,mBAAmB,CAAC;KACzB,WAAW,CAAC,mEAAmE,CAAC;KAChF,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;KACpB,MAAM,CAAC,UAAU,EAAE,0BAA0B,CAAC;KAC9C,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,CAAA;AAEpD,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,EAAE;IAC9D,IAAI,aAAa,CAAC,aAAa,CAAC;QAAE,OAAM;IACxC,MAAM,iBAAiB,EAAE,CAAA;AAC3B,CAAC,CAAC,CAAA;AAEF,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAA;AACvC,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAA;AAC1C,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAA;AACvC,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAA;AACxC,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAA;AAC1C,OAAO,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAA;AACtC,OAAO,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAA;AAE3C,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AAEhC,eAAe,OAAO,CAAA"}
@@ -0,0 +1,66 @@
1
+ import type { Channel, ChannelAccount, ChannelBot, ChannelDirectChat, ChannelGroup, ChannelManager, ChannelMessage, ChannelSearchResponse, ChannelUserChat, MessageBlock } from './types.js';
2
+ export declare class ChannelClient {
3
+ private accountCookie;
4
+ private sessionCookie;
5
+ private rateLimitRemaining;
6
+ private rateLimitResetAt;
7
+ constructor(accountCookie: string, sessionCookie?: string);
8
+ static wrapTextInBlocks(text: string): MessageBlock[];
9
+ static extractText(message: ChannelMessage): string;
10
+ getAccount(): Promise<ChannelAccount>;
11
+ listChannels(params?: {
12
+ limit?: number;
13
+ }): Promise<Channel[]>;
14
+ getChannel(channelId: string): Promise<Channel>;
15
+ listManagers(channelId: string, params?: {
16
+ limit?: number;
17
+ }): Promise<ChannelManager[]>;
18
+ getManagerRole(channelId: string): Promise<{
19
+ permissions: unknown[];
20
+ }>;
21
+ listGroups(channelId: string, params?: {
22
+ limit?: number;
23
+ }): Promise<ChannelGroup[]>;
24
+ getGroup(channelId: string, groupId: string): Promise<ChannelGroup>;
25
+ getGroupMessages(channelId: string, groupId: string, params?: {
26
+ sortOrder?: string;
27
+ limit?: number;
28
+ since?: string;
29
+ }): Promise<ChannelMessage[]>;
30
+ sendGroupMessage(channelId: string, groupId: string, blocks: MessageBlock[], requestId?: string): Promise<ChannelMessage>;
31
+ listDirectChats(channelId: string, params?: {
32
+ limit?: number;
33
+ }): Promise<ChannelDirectChat[]>;
34
+ getDirectChatMessages(channelId: string, chatId: string, params?: {
35
+ sortOrder?: string;
36
+ limit?: number;
37
+ }): Promise<ChannelMessage[]>;
38
+ sendDirectChatMessage(channelId: string, chatId: string, blocks: MessageBlock[], requestId?: string): Promise<ChannelMessage>;
39
+ listUserChats(channelId: string, params?: {
40
+ state?: string;
41
+ limit?: number;
42
+ }): Promise<ChannelUserChat[]>;
43
+ getUserChat(channelId: string, chatId: string): Promise<ChannelUserChat>;
44
+ getUserChatMessages(channelId: string, chatId: string, params?: {
45
+ sortOrder?: string;
46
+ limit?: number;
47
+ }): Promise<ChannelMessage[]>;
48
+ sendUserChatMessage(channelId: string, chatId: string, blocks: MessageBlock[], requestId?: string): Promise<ChannelMessage>;
49
+ listBots(channelId: string, params?: {
50
+ limit?: number;
51
+ }): Promise<ChannelBot[]>;
52
+ searchTeamChatMessages(channelId: string, query: string, params?: {
53
+ limit?: number;
54
+ }): Promise<ChannelSearchResponse>;
55
+ searchUserChatMessages(channelId: string, query: string, params?: {
56
+ limit?: number;
57
+ }): Promise<ChannelSearchResponse>;
58
+ private getHeaders;
59
+ private waitForRateLimit;
60
+ private updateRateLimit;
61
+ private request;
62
+ private createHttpError;
63
+ private buildPath;
64
+ private sleep;
65
+ }
66
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../src/platforms/channeltalk/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,200 @@
1
+ import { ChannelError } from './types.js';
2
+ const BASE_URL = 'https://desk-api.channel.io';
3
+ const MAX_RETRIES = 3;
4
+ const BASE_BACKOFF_MS = 100;
5
+ export class ChannelClient {
6
+ accountCookie;
7
+ sessionCookie;
8
+ rateLimitRemaining = null;
9
+ rateLimitResetAt = 0;
10
+ constructor(accountCookie, sessionCookie) {
11
+ if (!accountCookie) {
12
+ throw new ChannelError('Account cookie is required', 'missing_account_cookie');
13
+ }
14
+ this.accountCookie = accountCookie;
15
+ this.sessionCookie = sessionCookie;
16
+ }
17
+ static wrapTextInBlocks(text) {
18
+ return [{ type: 'text', value: text }];
19
+ }
20
+ static extractText(message) {
21
+ const parts = [];
22
+ for (const block of message.blocks ?? []) {
23
+ if (block.value) {
24
+ parts.push(block.value);
25
+ }
26
+ }
27
+ if (message.plainText) {
28
+ parts.push(message.plainText);
29
+ }
30
+ return parts.join('\n');
31
+ }
32
+ async getAccount() {
33
+ return this.request('GET', '/desk/account', undefined, 'account');
34
+ }
35
+ async listChannels(params) {
36
+ return this.request('GET', this.buildPath('/desk/channels', params), undefined, 'channels');
37
+ }
38
+ async getChannel(channelId) {
39
+ return this.request('GET', `/desk/channels/${channelId}`, undefined, 'channel');
40
+ }
41
+ async listManagers(channelId, params) {
42
+ return this.request('GET', this.buildPath(`/desk/channels/${channelId}/managers`, params), undefined, 'managers');
43
+ }
44
+ async getManagerRole(channelId) {
45
+ return this.request('GET', `/desk/channels/${channelId}/managers/me/role`, undefined, 'role');
46
+ }
47
+ async listGroups(channelId, params) {
48
+ return this.request('GET', this.buildPath(`/desk/channels/${channelId}/groups`, params), undefined, 'groups');
49
+ }
50
+ async getGroup(channelId, groupId) {
51
+ return this.request('GET', `/desk/channels/${channelId}/groups/${groupId}`, undefined, 'group');
52
+ }
53
+ async getGroupMessages(channelId, groupId, params) {
54
+ return this.request('GET', this.buildPath(`/desk/channels/${channelId}/groups/${groupId}/messages`, params), undefined, 'messages');
55
+ }
56
+ async sendGroupMessage(channelId, groupId, blocks, requestId) {
57
+ return this.request('POST', `/desk/channels/${channelId}/groups/${groupId}/messages`, { blocks, requestId: requestId ?? crypto.randomUUID() }, 'message');
58
+ }
59
+ async listDirectChats(channelId, params) {
60
+ return this.request('GET', this.buildPath(`/desk/channels/${channelId}/direct-chats`, params), undefined, 'directChats');
61
+ }
62
+ async getDirectChatMessages(channelId, chatId, params) {
63
+ return this.request('GET', this.buildPath(`/desk/channels/${channelId}/direct-chats/${chatId}/messages`, params), undefined, 'messages');
64
+ }
65
+ async sendDirectChatMessage(channelId, chatId, blocks, requestId) {
66
+ return this.request('POST', `/desk/channels/${channelId}/direct-chats/${chatId}/messages`, { blocks, requestId: requestId ?? crypto.randomUUID() }, 'message');
67
+ }
68
+ async listUserChats(channelId, params) {
69
+ return this.request('GET', this.buildPath(`/desk/channels/${channelId}/user-chats/assigned/me`, params), undefined, 'userChats');
70
+ }
71
+ async getUserChat(channelId, chatId) {
72
+ return this.request('GET', `/desk/channels/${channelId}/user-chats/${chatId}`, undefined, 'userChat');
73
+ }
74
+ async getUserChatMessages(channelId, chatId, params) {
75
+ return this.request('GET', this.buildPath(`/desk/channels/${channelId}/user-chats/${chatId}/messages`, params), undefined, 'messages');
76
+ }
77
+ async sendUserChatMessage(channelId, chatId, blocks, requestId) {
78
+ return this.request('POST', `/desk/channels/${channelId}/user-chats/${chatId}/messages`, { blocks, requestId: requestId ?? crypto.randomUUID() }, 'message');
79
+ }
80
+ async listBots(channelId, params) {
81
+ return this.request('GET', this.buildPath(`/desk/channels/${channelId}/bots`, params), undefined, 'bots');
82
+ }
83
+ async searchTeamChatMessages(channelId, query, params) {
84
+ return this.request('GET', this.buildPath(`/desk/channels/${channelId}/team-chat/message/search`, { query, ...params }));
85
+ }
86
+ async searchUserChatMessages(channelId, query, params) {
87
+ return this.request('GET', this.buildPath(`/desk/channels/${channelId}/user-chat/message/search`, { query, ...params }));
88
+ }
89
+ getHeaders() {
90
+ return {
91
+ Cookie: this.sessionCookie
92
+ ? `x-account=${this.accountCookie}; ch-session-1=${this.sessionCookie}`
93
+ : `x-account=${this.accountCookie}`,
94
+ 'Content-Type': 'application/json',
95
+ };
96
+ }
97
+ async waitForRateLimit() {
98
+ const now = Date.now();
99
+ if (this.rateLimitRemaining === 0 && this.rateLimitResetAt > now) {
100
+ await this.sleep(this.rateLimitResetAt - now);
101
+ }
102
+ }
103
+ updateRateLimit(response) {
104
+ const remainingHeader = response.headers.get('x-ratelimit-remaining');
105
+ const resetHeader = response.headers.get('x-ratelimit-reset');
106
+ if (remainingHeader !== null) {
107
+ const remaining = Number.parseInt(remainingHeader, 10);
108
+ if (!Number.isNaN(remaining)) {
109
+ this.rateLimitRemaining = remaining;
110
+ }
111
+ }
112
+ if (resetHeader !== null) {
113
+ const reset = Number.parseFloat(resetHeader);
114
+ if (!Number.isNaN(reset)) {
115
+ this.rateLimitResetAt = reset > 1_000_000_000_000 ? reset : reset * 1000;
116
+ }
117
+ }
118
+ }
119
+ async request(method, path, body, unwrapKey) {
120
+ const url = `${BASE_URL}${path}`;
121
+ let lastError;
122
+ for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {
123
+ await this.waitForRateLimit();
124
+ const options = {
125
+ method,
126
+ headers: this.getHeaders(),
127
+ };
128
+ if (body !== undefined) {
129
+ options.body = JSON.stringify(body);
130
+ }
131
+ let response;
132
+ try {
133
+ response = await fetch(url, options);
134
+ }
135
+ catch (error) {
136
+ lastError = error instanceof Error ? error : new Error(String(error));
137
+ if (attempt < MAX_RETRIES && method === 'GET') {
138
+ await this.sleep(BASE_BACKOFF_MS * 2 ** attempt);
139
+ continue;
140
+ }
141
+ throw new ChannelError(`Network error: ${lastError.message}`, 'network_error');
142
+ }
143
+ this.updateRateLimit(response);
144
+ if (response.status === 429) {
145
+ if (attempt < MAX_RETRIES) {
146
+ const retryAfter = Number.parseFloat(response.headers.get('Retry-After') || '1');
147
+ const retryAfterMs = (Number.isNaN(retryAfter) ? 1 : retryAfter) * 1000;
148
+ await this.sleep(retryAfterMs);
149
+ continue;
150
+ }
151
+ throw new ChannelError('Rate limited', 'rate_limited');
152
+ }
153
+ if (response.status >= 500 && response.status <= 599) {
154
+ if (attempt < MAX_RETRIES && method === 'GET') {
155
+ await this.sleep(BASE_BACKOFF_MS * 2 ** attempt);
156
+ continue;
157
+ }
158
+ throw await this.createHttpError(response);
159
+ }
160
+ if (!response.ok) {
161
+ throw await this.createHttpError(response);
162
+ }
163
+ if (response.status === 204) {
164
+ return undefined;
165
+ }
166
+ const data = await response.json();
167
+ if (unwrapKey && data != null && typeof data === 'object' && unwrapKey in data) {
168
+ return data[unwrapKey];
169
+ }
170
+ return data;
171
+ }
172
+ throw lastError || new ChannelError('Request failed after retries', 'max_retries');
173
+ }
174
+ async createHttpError(response) {
175
+ const errorBody = await response.json().catch(() => ({}));
176
+ const message = errorBody.errors?.[0]?.message || `HTTP ${response.status}`;
177
+ const code = errorBody.type || `http_${response.status}`;
178
+ return new ChannelError(message, code);
179
+ }
180
+ buildPath(path, params) {
181
+ if (!params) {
182
+ return path;
183
+ }
184
+ const searchParams = new URLSearchParams();
185
+ for (const [key, value] of Object.entries(params)) {
186
+ if (value !== undefined) {
187
+ searchParams.set(key, String(value));
188
+ }
189
+ }
190
+ const query = searchParams.toString();
191
+ if (!query) {
192
+ return path;
193
+ }
194
+ return `${path}?${query}`;
195
+ }
196
+ sleep(ms) {
197
+ return new Promise((resolve) => setTimeout(resolve, ms));
198
+ }
199
+ }
200
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/platforms/channeltalk/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import { Command } from 'commander';
2
+ import { ChannelClient } from '../client.js';
3
+ import { ChannelCredentialManager } from '../credential-manager.js';
4
+ import { ChannelTokenExtractor } from '../token-extractor.js';
5
+ interface ActionOptions {
6
+ workspace?: string;
7
+ pretty?: boolean;
8
+ _credManager?: ChannelCredentialManager;
9
+ }
10
+ interface WorkspaceSummary {
11
+ workspace_id: string;
12
+ workspace_name: string;
13
+ is_current?: boolean;
14
+ }
15
+ interface ExtractResult {
16
+ success: true;
17
+ workspaces: Array<{
18
+ workspace_id: string;
19
+ workspace_name: string;
20
+ }>;
21
+ current_workspace_id: string;
22
+ }
23
+ interface StatusResult {
24
+ valid: boolean;
25
+ workspace_id?: string;
26
+ workspace_name?: string;
27
+ account_name?: string;
28
+ error?: string;
29
+ }
30
+ interface SuccessResult {
31
+ success: true;
32
+ workspace_id?: string;
33
+ }
34
+ interface ErrorResult {
35
+ error: string;
36
+ }
37
+ type ChannelClientLike = Pick<ChannelClient, 'getAccount' | 'listChannels'>;
38
+ type ChannelCredentialManagerLike = Pick<ChannelCredentialManager, 'getCredentials' | 'setCredentials' | 'listAll' | 'clearCredentials' | 'setCurrent' | 'removeWorkspace'>;
39
+ type ChannelTokenExtractorLike = Pick<ChannelTokenExtractor, 'extract'>;
40
+ export declare function setChannelAuthCommandDependenciesForTesting(dependencies: {
41
+ createChannelClient?: (accountCookie: string, sessionCookie?: string) => ChannelClientLike;
42
+ createCredentialManager?: () => ChannelCredentialManagerLike;
43
+ createTokenExtractor?: () => ChannelTokenExtractorLike;
44
+ }): void;
45
+ export declare function resetChannelAuthCommandDependenciesForTesting(): void;
46
+ export declare function extractAction(options?: ActionOptions): Promise<ExtractResult | ErrorResult>;
47
+ export declare function statusAction(options?: ActionOptions): Promise<StatusResult>;
48
+ export declare function clearAction(options?: ActionOptions): Promise<SuccessResult | ErrorResult>;
49
+ export declare function listAction(options?: ActionOptions): Promise<WorkspaceSummary[] | ErrorResult>;
50
+ export declare function useAction(workspaceId: string, options?: ActionOptions): Promise<SuccessResult | ErrorResult>;
51
+ export declare function removeAction(workspaceId: string, options?: ActionOptions): Promise<SuccessResult | ErrorResult>;
52
+ export declare function createAuthCommand(): Command;
53
+ export declare const authCommand: Command;
54
+ export {};
55
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../../src/platforms/channeltalk/commands/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAInC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAE1D,UAAU,aAAa;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,YAAY,CAAC,EAAE,wBAAwB,CAAA;CACxC;AAED,UAAU,gBAAgB;IACxB,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,UAAU,aAAa;IACrB,OAAO,EAAE,IAAI,CAAA;IACb,UAAU,EAAE,KAAK,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACnE,oBAAoB,EAAE,MAAM,CAAA;CAC7B;AAED,UAAU,YAAY;IACpB,KAAK,EAAE,OAAO,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,UAAU,aAAa;IACrB,OAAO,EAAE,IAAI,CAAA;IACb,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,UAAU,WAAW;IACnB,KAAK,EAAE,MAAM,CAAA;CACd;AAID,KAAK,iBAAiB,GAAG,IAAI,CAAC,aAAa,EAAE,YAAY,GAAG,cAAc,CAAC,CAAA;AAC3E,KAAK,4BAA4B,GAAG,IAAI,CACtC,wBAAwB,EACxB,gBAAgB,GAAG,gBAAgB,GAAG,SAAS,GAAG,kBAAkB,GAAG,YAAY,GAAG,iBAAiB,CACxG,CAAA;AACD,KAAK,yBAAyB,GAAG,IAAI,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAAA;AASvE,wBAAgB,2CAA2C,CAAC,YAAY,EAAE;IACxE,mBAAmB,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,KAAK,iBAAiB,CAAA;IAC1F,uBAAuB,CAAC,EAAE,MAAM,4BAA4B,CAAA;IAC5D,oBAAoB,CAAC,EAAE,MAAM,yBAAyB,CAAA;CACvD,GAAG,IAAI,CAIP;AAED,wBAAgB,6CAA6C,IAAI,IAAI,CAKpE;AAED,wBAAsB,aAAa,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,aAAa,GAAG,WAAW,CAAC,CAgDrG;AAED,wBAAsB,YAAY,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAsCrF;AAED,wBAAsB,WAAW,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,aAAa,GAAG,WAAW,CAAC,CAQnG;AAED,wBAAsB,UAAU,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,gBAAgB,EAAE,GAAG,WAAW,CAAC,CAavG;AAED,wBAAsB,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,aAAa,GAAG,WAAW,CAAC,CAgBtH;AAED,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,aAAa,GAAG,WAAW,CAAC,CAgBzH;AAUD,wBAAgB,iBAAiB,IAAI,OAAO,CA0D3C;AAED,eAAO,MAAM,WAAW,SAAsB,CAAA"}