agent-messenger 1.13.1 → 1.15.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.
- package/.claude-plugin/README.md +23 -2
- package/.claude-plugin/plugin.json +6 -3
- package/.env.template +10 -0
- package/CONTRIBUTING.md +25 -0
- package/README.md +15 -12
- package/dist/package.json +3 -1
- package/dist/src/cli.d.ts.map +1 -1
- package/dist/src/cli.js +6 -0
- package/dist/src/cli.js.map +1 -1
- package/dist/src/platforms/channeltalk/cli.d.ts +5 -0
- package/dist/src/platforms/channeltalk/cli.d.ts.map +1 -0
- package/dist/src/platforms/channeltalk/cli.js +36 -0
- package/dist/src/platforms/channeltalk/cli.js.map +1 -0
- package/dist/src/platforms/channeltalk/client.d.ts +66 -0
- package/dist/src/platforms/channeltalk/client.d.ts.map +1 -0
- package/dist/src/platforms/channeltalk/client.js +200 -0
- package/dist/src/platforms/channeltalk/client.js.map +1 -0
- package/dist/src/platforms/channeltalk/commands/auth.d.ts +55 -0
- package/dist/src/platforms/channeltalk/commands/auth.d.ts.map +1 -0
- package/dist/src/platforms/channeltalk/commands/auth.js +212 -0
- package/dist/src/platforms/channeltalk/commands/auth.js.map +1 -0
- package/dist/src/platforms/channeltalk/commands/bot.d.ts +22 -0
- package/dist/src/platforms/channeltalk/commands/bot.d.ts.map +1 -0
- package/dist/src/platforms/channeltalk/commands/bot.js +47 -0
- package/dist/src/platforms/channeltalk/commands/bot.js.map +1 -0
- package/dist/src/platforms/channeltalk/commands/chat.d.ts +33 -0
- package/dist/src/platforms/channeltalk/commands/chat.d.ts.map +1 -0
- package/dist/src/platforms/channeltalk/commands/chat.js +79 -0
- package/dist/src/platforms/channeltalk/commands/chat.js.map +1 -0
- package/dist/src/platforms/channeltalk/commands/group.d.ts +48 -0
- package/dist/src/platforms/channeltalk/commands/group.d.ts.map +1 -0
- package/dist/src/platforms/channeltalk/commands/group.js +116 -0
- package/dist/src/platforms/channeltalk/commands/group.js.map +1 -0
- package/dist/src/platforms/channeltalk/commands/index.d.ts +8 -0
- package/dist/src/platforms/channeltalk/commands/index.d.ts.map +1 -0
- package/dist/src/platforms/channeltalk/commands/index.js +8 -0
- package/dist/src/platforms/channeltalk/commands/index.js.map +1 -0
- package/dist/src/platforms/channeltalk/commands/manager.d.ts +26 -0
- package/dist/src/platforms/channeltalk/commands/manager.d.ts.map +1 -0
- package/dist/src/platforms/channeltalk/commands/manager.js +51 -0
- package/dist/src/platforms/channeltalk/commands/manager.js.map +1 -0
- package/dist/src/platforms/channeltalk/commands/message.d.ts +61 -0
- package/dist/src/platforms/channeltalk/commands/message.d.ts.map +1 -0
- package/dist/src/platforms/channeltalk/commands/message.js +193 -0
- package/dist/src/platforms/channeltalk/commands/message.js.map +1 -0
- package/dist/src/platforms/channeltalk/commands/shared.d.ts +10 -0
- package/dist/src/platforms/channeltalk/commands/shared.d.ts.map +1 -0
- package/dist/src/platforms/channeltalk/commands/shared.js +19 -0
- package/dist/src/platforms/channeltalk/commands/shared.js.map +1 -0
- package/dist/src/platforms/channeltalk/commands/snapshot.d.ts +53 -0
- package/dist/src/platforms/channeltalk/commands/snapshot.d.ts.map +1 -0
- package/dist/src/platforms/channeltalk/commands/snapshot.js +121 -0
- package/dist/src/platforms/channeltalk/commands/snapshot.js.map +1 -0
- package/dist/src/platforms/channeltalk/credential-manager.d.ts +17 -0
- package/dist/src/platforms/channeltalk/credential-manager.d.ts.map +1 -0
- package/dist/src/platforms/channeltalk/credential-manager.js +131 -0
- package/dist/src/platforms/channeltalk/credential-manager.js.map +1 -0
- package/dist/src/platforms/channeltalk/ensure-auth.d.ts +17 -0
- package/dist/src/platforms/channeltalk/ensure-auth.d.ts.map +1 -0
- package/dist/src/platforms/channeltalk/ensure-auth.js +73 -0
- package/dist/src/platforms/channeltalk/ensure-auth.js.map +1 -0
- package/dist/src/platforms/channeltalk/index.d.ts +5 -0
- package/dist/src/platforms/channeltalk/index.d.ts.map +1 -0
- package/dist/src/platforms/channeltalk/index.js +5 -0
- package/dist/src/platforms/channeltalk/index.js.map +1 -0
- package/dist/src/platforms/channeltalk/token-extractor.d.ts +8 -0
- package/dist/src/platforms/channeltalk/token-extractor.d.ts.map +1 -0
- package/dist/src/platforms/channeltalk/token-extractor.js +71 -0
- package/dist/src/platforms/channeltalk/token-extractor.js.map +1 -0
- package/dist/src/platforms/channeltalk/types.d.ts +1328 -0
- package/dist/src/platforms/channeltalk/types.d.ts.map +1 -0
- package/dist/src/platforms/channeltalk/types.js +160 -0
- package/dist/src/platforms/channeltalk/types.js.map +1 -0
- package/dist/src/platforms/channeltalkbot/cli.d.ts +5 -0
- package/dist/src/platforms/channeltalkbot/cli.d.ts.map +1 -0
- package/dist/src/platforms/channeltalkbot/cli.js +22 -0
- package/dist/src/platforms/channeltalkbot/cli.js.map +1 -0
- package/dist/src/platforms/channeltalkbot/client.d.ts +71 -0
- package/dist/src/platforms/channeltalkbot/client.d.ts.map +1 -0
- package/dist/src/platforms/channeltalkbot/client.js +200 -0
- package/dist/src/platforms/channeltalkbot/client.js.map +1 -0
- package/dist/src/platforms/channeltalkbot/commands/auth.d.ts +30 -0
- package/dist/src/platforms/channeltalkbot/commands/auth.d.ts.map +1 -0
- package/dist/src/platforms/channeltalkbot/commands/auth.js +183 -0
- package/dist/src/platforms/channeltalkbot/commands/auth.js.map +1 -0
- package/dist/src/platforms/channeltalkbot/commands/bot.d.ts +32 -0
- package/dist/src/platforms/channeltalkbot/commands/bot.d.ts.map +1 -0
- package/dist/src/platforms/channeltalkbot/commands/bot.js +92 -0
- package/dist/src/platforms/channeltalkbot/commands/bot.js.map +1 -0
- package/dist/src/platforms/channeltalkbot/commands/chat.d.ts +39 -0
- package/dist/src/platforms/channeltalkbot/commands/chat.d.ts.map +1 -0
- package/dist/src/platforms/channeltalkbot/commands/chat.js +123 -0
- package/dist/src/platforms/channeltalkbot/commands/chat.js.map +1 -0
- package/dist/src/platforms/channeltalkbot/commands/group.d.ts +32 -0
- package/dist/src/platforms/channeltalkbot/commands/group.d.ts.map +1 -0
- package/dist/src/platforms/channeltalkbot/commands/group.js +100 -0
- package/dist/src/platforms/channeltalkbot/commands/group.js.map +1 -0
- package/dist/src/platforms/channeltalkbot/commands/index.d.ts +8 -0
- package/dist/src/platforms/channeltalkbot/commands/index.d.ts.map +1 -0
- package/dist/src/platforms/channeltalkbot/commands/index.js +8 -0
- package/dist/src/platforms/channeltalkbot/commands/index.js.map +1 -0
- package/dist/src/platforms/channeltalkbot/commands/manager.d.ts +26 -0
- package/dist/src/platforms/channeltalkbot/commands/manager.d.ts.map +1 -0
- package/dist/src/platforms/channeltalkbot/commands/manager.js +67 -0
- package/dist/src/platforms/channeltalkbot/commands/manager.js.map +1 -0
- package/dist/src/platforms/channeltalkbot/commands/message.d.ts +38 -0
- package/dist/src/platforms/channeltalkbot/commands/message.d.ts.map +1 -0
- package/dist/src/platforms/channeltalkbot/commands/message.js +145 -0
- package/dist/src/platforms/channeltalkbot/commands/message.js.map +1 -0
- package/dist/src/platforms/channeltalkbot/commands/shared.d.ts +12 -0
- package/dist/src/platforms/channeltalkbot/commands/shared.d.ts.map +1 -0
- package/dist/src/platforms/channeltalkbot/commands/shared.js +31 -0
- package/dist/src/platforms/channeltalkbot/commands/shared.js.map +1 -0
- package/dist/src/platforms/channeltalkbot/commands/snapshot.d.ts +54 -0
- package/dist/src/platforms/channeltalkbot/commands/snapshot.d.ts.map +1 -0
- package/dist/src/platforms/channeltalkbot/commands/snapshot.js +139 -0
- package/dist/src/platforms/channeltalkbot/commands/snapshot.js.map +1 -0
- package/dist/src/platforms/channeltalkbot/credential-manager.d.ts +19 -0
- package/dist/src/platforms/channeltalkbot/credential-manager.d.ts.map +1 -0
- package/dist/src/platforms/channeltalkbot/credential-manager.js +149 -0
- package/dist/src/platforms/channeltalkbot/credential-manager.js.map +1 -0
- package/dist/src/platforms/channeltalkbot/index.d.ts +4 -0
- package/dist/src/platforms/channeltalkbot/index.d.ts.map +1 -0
- package/dist/src/platforms/channeltalkbot/index.js +4 -0
- package/dist/src/platforms/channeltalkbot/index.js.map +1 -0
- package/dist/src/platforms/channeltalkbot/message-utils.d.ts +3 -0
- package/dist/src/platforms/channeltalkbot/message-utils.d.ts.map +1 -0
- package/dist/src/platforms/channeltalkbot/message-utils.js +4 -0
- package/dist/src/platforms/channeltalkbot/message-utils.js.map +1 -0
- package/dist/src/platforms/channeltalkbot/types.d.ts +337 -0
- package/dist/src/platforms/channeltalkbot/types.d.ts.map +1 -0
- package/dist/src/platforms/channeltalkbot/types.js +88 -0
- package/dist/src/platforms/channeltalkbot/types.js.map +1 -0
- package/dist/src/platforms/discord/types.d.ts +36 -36
- package/dist/src/platforms/discordbot/types.d.ts +12 -12
- package/dist/src/platforms/slack/client.d.ts +4 -0
- package/dist/src/platforms/slack/client.d.ts.map +1 -1
- package/dist/src/platforms/slack/client.js +10 -0
- package/dist/src/platforms/slack/client.js.map +1 -1
- package/dist/src/platforms/slack/commands/channel.d.ts.map +1 -1
- package/dist/src/platforms/slack/commands/channel.js +21 -0
- package/dist/src/platforms/slack/commands/channel.js.map +1 -1
- package/dist/src/platforms/slack/ensure-auth.d.ts.map +1 -1
- package/dist/src/platforms/slack/ensure-auth.js +1 -0
- package/dist/src/platforms/slack/ensure-auth.js.map +1 -1
- package/dist/src/platforms/slack/token-extractor.d.ts.map +1 -1
- package/dist/src/platforms/slack/token-extractor.js +9 -1
- package/dist/src/platforms/slack/token-extractor.js.map +1 -1
- package/dist/src/platforms/slack/types.d.ts +34 -34
- package/dist/src/platforms/slackbot/types.d.ts +31 -31
- package/dist/src/platforms/teams/types.d.ts +4 -4
- package/docs/content/docs/agent-skills.mdx +1 -1
- package/docs/content/docs/index.mdx +9 -7
- package/docs/content/docs/integrations/channeltalk.mdx +260 -0
- package/docs/content/docs/integrations/channeltalkbot.mdx +261 -0
- package/docs/content/docs/integrations/meta.json +1 -1
- package/docs/content/docs/quick-start.mdx +8 -1
- package/e2e/channeltalk.e2e.test.ts +200 -0
- package/e2e/channeltalkbot.e2e.test.ts +202 -0
- package/e2e/config.ts +84 -0
- package/e2e/helpers.ts +2 -0
- package/package.json +3 -1
- package/scripts/postbuild.ts +2 -0
- package/skills/agent-channeltalk/SKILL.md +428 -0
- package/skills/agent-channeltalk/references/authentication.md +297 -0
- package/skills/agent-channeltalk/references/common-patterns.md +341 -0
- package/skills/agent-channeltalk/templates/monitor-chat.sh +96 -0
- package/skills/agent-channeltalk/templates/post-message.sh +127 -0
- package/skills/agent-channeltalk/templates/workspace-summary.sh +122 -0
- package/skills/agent-channeltalkbot/SKILL.md +421 -0
- package/skills/agent-channeltalkbot/references/authentication.md +185 -0
- package/skills/agent-channeltalkbot/references/common-patterns.md +264 -0
- package/skills/agent-channeltalkbot/templates/monitor-chat.sh +94 -0
- package/skills/agent-channeltalkbot/templates/post-message.sh +112 -0
- package/skills/agent-channeltalkbot/templates/workspace-summary.sh +119 -0
- package/skills/agent-discord/SKILL.md +1 -1
- package/skills/agent-discordbot/SKILL.md +1 -1
- package/skills/agent-slack/SKILL.md +8 -1
- package/skills/agent-slackbot/SKILL.md +1 -1
- package/skills/agent-teams/SKILL.md +1 -1
- package/src/cli.ts +8 -0
- package/src/platforms/channeltalk/cli.ts +51 -0
- package/src/platforms/channeltalk/client.test.ts +385 -0
- package/src/platforms/channeltalk/client.ts +355 -0
- package/src/platforms/channeltalk/commands/auth.test.ts +360 -0
- package/src/platforms/channeltalk/commands/auth.ts +296 -0
- package/src/platforms/channeltalk/commands/bot.test.ts +51 -0
- package/src/platforms/channeltalk/commands/bot.ts +74 -0
- package/src/platforms/channeltalk/commands/chat.test.ts +94 -0
- package/src/platforms/channeltalk/commands/chat.ts +121 -0
- package/src/platforms/channeltalk/commands/group.test.ts +157 -0
- package/src/platforms/channeltalk/commands/group.ts +174 -0
- package/src/platforms/channeltalk/commands/index.ts +7 -0
- package/src/platforms/channeltalk/commands/manager.test.ts +63 -0
- package/src/platforms/channeltalk/commands/manager.ts +82 -0
- package/src/platforms/channeltalk/commands/message.test.ts +546 -0
- package/src/platforms/channeltalk/commands/message.ts +309 -0
- package/src/platforms/channeltalk/commands/shared.ts +29 -0
- package/src/platforms/channeltalk/commands/snapshot.test.ts +193 -0
- package/src/platforms/channeltalk/commands/snapshot.ts +188 -0
- package/src/platforms/channeltalk/credential-manager.test.ts +207 -0
- package/src/platforms/channeltalk/credential-manager.ts +158 -0
- package/src/platforms/channeltalk/ensure-auth.test.ts +155 -0
- package/src/platforms/channeltalk/ensure-auth.ts +96 -0
- package/src/platforms/channeltalk/index.ts +34 -0
- package/src/platforms/channeltalk/token-extractor.test.ts +131 -0
- package/src/platforms/channeltalk/token-extractor.ts +91 -0
- package/src/platforms/channeltalk/types.test.ts +142 -0
- package/src/platforms/channeltalk/types.ts +345 -0
- package/src/platforms/channeltalkbot/cli.ts +36 -0
- package/src/platforms/channeltalkbot/client.test.ts +197 -0
- package/src/platforms/channeltalkbot/client.ts +300 -0
- package/src/platforms/channeltalkbot/commands/auth.test.ts +253 -0
- package/src/platforms/channeltalkbot/commands/auth.ts +229 -0
- package/src/platforms/channeltalkbot/commands/bot.test.ts +114 -0
- package/src/platforms/channeltalkbot/commands/bot.ts +132 -0
- package/src/platforms/channeltalkbot/commands/chat.test.ts +168 -0
- package/src/platforms/channeltalkbot/commands/chat.ts +174 -0
- package/src/platforms/channeltalkbot/commands/group.test.ts +136 -0
- package/src/platforms/channeltalkbot/commands/group.ts +136 -0
- package/src/platforms/channeltalkbot/commands/index.ts +7 -0
- package/src/platforms/channeltalkbot/commands/manager.test.ts +72 -0
- package/src/platforms/channeltalkbot/commands/manager.ts +98 -0
- package/src/platforms/channeltalkbot/commands/message.test.ts +194 -0
- package/src/platforms/channeltalkbot/commands/message.ts +189 -0
- package/src/platforms/channeltalkbot/commands/shared.ts +45 -0
- package/src/platforms/channeltalkbot/commands/snapshot.test.ts +113 -0
- package/src/platforms/channeltalkbot/commands/snapshot.ts +200 -0
- package/src/platforms/channeltalkbot/credential-manager.test.ts +308 -0
- package/src/platforms/channeltalkbot/credential-manager.ts +176 -0
- package/src/platforms/channeltalkbot/index.ts +27 -0
- package/src/platforms/channeltalkbot/message-utils.test.ts +20 -0
- package/src/platforms/channeltalkbot/message-utils.ts +5 -0
- package/src/platforms/channeltalkbot/types.test.ts +384 -0
- package/src/platforms/channeltalkbot/types.ts +185 -0
- package/src/platforms/slack/client.ts +12 -0
- package/src/platforms/slack/commands/channel.test.ts +47 -1
- package/src/platforms/slack/commands/channel.ts +26 -0
- package/src/platforms/slack/ensure-auth.test.ts +30 -0
- package/src/platforms/slack/ensure-auth.ts +1 -0
- package/src/platforms/slack/token-extractor.test.ts +25 -0
- package/src/platforms/slack/token-extractor.ts +10 -1
package/.claude-plugin/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Agent Messenger - Claude Code Plugin
|
|
2
2
|
|
|
3
|
-
Messaging platform interaction skills for AI agents and Claude Code. Supports Slack, Discord, and
|
|
3
|
+
Messaging platform interaction skills for AI agents and Claude Code. Supports Slack, Discord, Microsoft Teams, and Channel Talk (beta).
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
@@ -61,6 +61,22 @@ Enables AI agents to interact with messaging platforms through CLI interfaces:
|
|
|
61
61
|
- **Multi-bot management** with easy switching
|
|
62
62
|
- Designed for **server-side and CI/CD** use cases
|
|
63
63
|
|
|
64
|
+
### Channel Talk (`agent-channeltalk`) — Beta
|
|
65
|
+
- **Send messages** to groups, user chats, and direct chats
|
|
66
|
+
- **Read chats** and message history
|
|
67
|
+
- **List groups**, managers, and bots
|
|
68
|
+
- **Workspace snapshots** for quick overview
|
|
69
|
+
- **Multi-workspace support** with easy switching
|
|
70
|
+
- **Zero-config** — auto-extracts cookies from desktop app
|
|
71
|
+
|
|
72
|
+
### Channel Talk Bot (`agent-channeltalkbot`) — Beta
|
|
73
|
+
- **Send messages** using API credentials (Access Key + Secret)
|
|
74
|
+
- **Read chats** and message history
|
|
75
|
+
- **Close and delete** user chats
|
|
76
|
+
- **Create and manage** bots
|
|
77
|
+
- **Group @name references** for easy targeting
|
|
78
|
+
- Designed for **server-side and CI/CD** use cases
|
|
79
|
+
|
|
64
80
|
## Key Features
|
|
65
81
|
|
|
66
82
|
### Zero-Config Authentication
|
|
@@ -76,6 +92,9 @@ agent-discord auth extract
|
|
|
76
92
|
|
|
77
93
|
# Teams
|
|
78
94
|
agent-teams auth extract
|
|
95
|
+
|
|
96
|
+
# Channel Talk (auto-extracted from desktop app)
|
|
97
|
+
agent-channeltalk auth extract
|
|
79
98
|
```
|
|
80
99
|
|
|
81
100
|
### AI-Friendly References (Slack)
|
|
@@ -92,7 +111,7 @@ All commands output JSON by default for easy AI consumption. Use `--pretty` for
|
|
|
92
111
|
|
|
93
112
|
## Requirements
|
|
94
113
|
|
|
95
|
-
- Desktop app installed and logged in for the platform(s) you want to use (Slack, Discord, and/or
|
|
114
|
+
- Desktop app installed and logged in for the platform(s) you want to use (Slack, Discord, Teams, and/or Channel Talk)
|
|
96
115
|
- Node.js 18+ or Bun runtime
|
|
97
116
|
|
|
98
117
|
## Quick Start
|
|
@@ -175,3 +194,5 @@ agent-discord file upload <channel-id> ./report.pdf
|
|
|
175
194
|
- [Discord Skill Documentation](https://github.com/devxoul/agent-messenger/blob/main/skills/agent-discord/SKILL.md)
|
|
176
195
|
- [Discord Bot Skill Documentation](https://github.com/devxoul/agent-messenger/blob/main/skills/agent-discordbot/SKILL.md)
|
|
177
196
|
- [Teams Skill Documentation](https://github.com/devxoul/agent-messenger/blob/main/skills/agent-teams/SKILL.md)
|
|
197
|
+
- [Channel Talk Skill Documentation](https://github.com/devxoul/agent-messenger/blob/main/skills/agent-channeltalk/SKILL.md)
|
|
198
|
+
- [Channel Talk Bot Skill Documentation](https://github.com/devxoul/agent-messenger/blob/main/skills/agent-channeltalkbot/SKILL.md)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agent-messenger",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "Messaging platform interaction skills for AI agents. Interact with Slack, Discord,
|
|
3
|
+
"version": "1.15.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/CONTRIBUTING.md
CHANGED
|
@@ -136,6 +136,31 @@ src/
|
|
|
136
136
|
team.ts
|
|
137
137
|
message.ts
|
|
138
138
|
...
|
|
139
|
+
channeltalk/ # Channel Talk platform (beta)
|
|
140
|
+
cli.ts # Channel Talk CLI entry
|
|
141
|
+
client.ts # Channel Talk API client
|
|
142
|
+
credential-manager.ts # Credential storage
|
|
143
|
+
cookie-extractor.ts # Auto cookie extraction
|
|
144
|
+
ensure-auth.ts # Auto-auth on first command
|
|
145
|
+
types.ts # TypeScript types
|
|
146
|
+
commands/ # Command handlers
|
|
147
|
+
auth.ts
|
|
148
|
+
chat.ts
|
|
149
|
+
group.ts
|
|
150
|
+
message.ts
|
|
151
|
+
...
|
|
152
|
+
channeltalkbot/ # Channel Talk Bot platform (beta)
|
|
153
|
+
cli.ts # Channel Talk Bot CLI entry
|
|
154
|
+
client.ts # Channel Talk Bot API client
|
|
155
|
+
credential-manager.ts # Credential storage
|
|
156
|
+
types.ts # TypeScript types
|
|
157
|
+
commands/ # Command handlers
|
|
158
|
+
auth.ts
|
|
159
|
+
chat.ts
|
|
160
|
+
group.ts
|
|
161
|
+
message.ts
|
|
162
|
+
bot.ts
|
|
163
|
+
...
|
|
139
164
|
shared/
|
|
140
165
|
utils/ # Shared utilities
|
|
141
166
|
```
|
package/README.md
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# Agent Messenger
|
|
2
2
|
|
|
3
|
-
[](https://www.npmjs.com/package/agent-messenger) [](https://skillpad.dev/install/devxoul/agent-messenger/agent-slack) [](https://skillpad.dev/install/devxoul/agent-messenger/agent-slackbot) [](https://skillpad.dev/install/devxoul/agent-messenger/agent-discord) [](https://skillpad.dev/install/devxoul/agent-messenger/agent-discordbot) [](https://skillpad.dev/install/devxoul/agent-messenger/agent-teams) [](https://www.npmjs.com/package/agent-messenger) [](https://skillpad.dev/install/devxoul/agent-messenger/agent-slack) [](https://skillpad.dev/install/devxoul/agent-messenger/agent-slackbot) [](https://skillpad.dev/install/devxoul/agent-messenger/agent-discord) [](https://skillpad.dev/install/devxoul/agent-messenger/agent-discordbot) [](https://skillpad.dev/install/devxoul/agent-messenger/agent-teams) [](https://skillpad.dev/install/devxoul/agent-messenger/agent-channeltalk) [](https://skillpad.dev/install/devxoul/agent-messenger/agent-channeltalkbot)
|
|
4
4
|
|
|
5
5
|

|
|
6
6
|
|
|
7
|
-
**Give your AI agent the power to read and send messages across Slack, Discord, Teams and more**
|
|
7
|
+
**Give your AI agent the power to read and send messages across Slack, Discord, Teams, Channel Talk (beta) and more**
|
|
8
8
|
|
|
9
9
|
A unified, agent-friendly CLI for messaging platforms. Zero-config credential extraction from your desktop apps—no OAuth flows, no API keys, no admin approval needed. Works out of the box.
|
|
10
10
|
|
|
@@ -37,7 +37,7 @@ Messaging platforms only offer Bot tokens for API access—your AI agent can nev
|
|
|
37
37
|
- **Act as yourself, not a bot** — Extracted user tokens let your agent operate on your behalf
|
|
38
38
|
- **No API keys needed** — Automatically extracts credentials from your installed desktop apps
|
|
39
39
|
- **Zero setup** — Credentials are auto-extracted on first command. No manual auth step required
|
|
40
|
-
- **One interface, multiple platforms** — Learn once, use everywhere (Slack, Discord, Teams)
|
|
40
|
+
- **One interface, multiple platforms** — Learn once, use everywhere (Slack, Discord, Teams, Channel Talk)
|
|
41
41
|
- **AI-agent friendly** — JSON output by default, perfect for LLM tool use
|
|
42
42
|
- **Agent memory** — Remembers workspace IDs, channel names, and preferences across sessions
|
|
43
43
|
- **Human friendly too** — Add `--pretty` for readable output
|
|
@@ -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-
|
|
61
|
+
- `agent-channeltalk` — Channel Talk CLI (beta, zero-config, extracted cookies)
|
|
62
|
+
- `agent-channeltalkbot` — Channel Talk Bot CLI (beta, 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.
|
|
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-
|
|
73
|
+
- **`agent-channeltalk`** — Channel Talk (beta, zero-config, extracted cookies)
|
|
74
|
+
- **`agent-channeltalkbot`** — Channel Talk Bot (beta, 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
|
-
[](https://skillpad.dev/install/devxoul/agent-messenger/agent-slack) [](https://skillpad.dev/install/devxoul/agent-messenger/agent-slackbot) [](https://skillpad.dev/install/devxoul/agent-messenger/agent-discord) [](https://skillpad.dev/install/devxoul/agent-messenger/agent-discordbot) [](https://skillpad.dev/install/devxoul/agent-messenger/agent-teams) [](https://skillpad.dev/install/devxoul/agent-messenger/agent-slack) [](https://skillpad.dev/install/devxoul/agent-messenger/agent-slackbot) [](https://skillpad.dev/install/devxoul/agent-messenger/agent-discord) [](https://skillpad.dev/install/devxoul/agent-messenger/agent-discordbot) [](https://skillpad.dev/install/devxoul/agent-messenger/agent-teams) [](https://skillpad.dev/install/devxoul/agent-messenger/agent-channeltalk) [](https://skillpad.dev/install/devxoul/agent-messenger/agent-channeltalkbot)
|
|
79
81
|
|
|
80
82
|
### Skills CLI
|
|
81
83
|
|
|
@@ -125,11 +127,11 @@ That's it. Credentials are extracted automatically from your Slack desktop app o
|
|
|
125
127
|
|
|
126
128
|
## Supported Platforms
|
|
127
129
|
|
|
128
|
-
| Feature | Slack | Discord | Teams | Channel Talk |
|
|
130
|
+
| Feature | Slack | Discord | Teams | Channel Talk (beta) |
|
|
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
|
|
158
|
+
- **[Channel Talk Guide](https://agent-messenger.dev/docs/integrations/channeltalk)** — Full command reference for Channel Talk (beta, zero-config)
|
|
159
|
+
- **[Channel Talk Bot Guide](https://agent-messenger.dev/docs/integrations/channeltalkbot)** — Bot API integration for Channel Talk (beta)
|
|
157
160
|
|
|
158
161
|
## Use Cases
|
|
159
162
|
|
|
@@ -201,7 +204,7 @@ Wire messaging into your CI, scripts, or agent workflows.
|
|
|
201
204
|
|
|
202
205
|
### ...and More
|
|
203
206
|
|
|
204
|
-
These are just starting points. Your agent has full read/write access to Slack, Discord, and
|
|
207
|
+
These are just starting points. Your agent has full read/write access to Slack, Discord, Teams, and Channel Talk — anything you'd do manually in a chat app, it can handle for you. If you build something cool with Agent Messenger, [let me know](https://x.com/devxoul)!
|
|
205
208
|
|
|
206
209
|
## Philosophy
|
|
207
210
|
|
package/dist/package.json
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agent-messenger",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.15.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
|
},
|
package/dist/src/cli.d.ts.map
CHANGED
|
@@ -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;
|
|
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
|
package/dist/src/cli.js.map
CHANGED
|
@@ -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 @@
|
|
|
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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"}
|