agent-messenger 2.0.0 → 2.1.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 (119) hide show
  1. package/.claude-plugin/marketplace.json +14 -1
  2. package/.claude-plugin/plugin.json +4 -2
  3. package/README.md +33 -29
  4. package/dist/package.json +10 -2
  5. package/dist/src/cli.d.ts.map +1 -1
  6. package/dist/src/cli.js +3 -0
  7. package/dist/src/cli.js.map +1 -1
  8. package/dist/src/platforms/webex/app-config.d.ts +7 -0
  9. package/dist/src/platforms/webex/app-config.d.ts.map +1 -0
  10. package/dist/src/platforms/webex/app-config.js +20 -0
  11. package/dist/src/platforms/webex/app-config.js.map +1 -0
  12. package/dist/src/platforms/webex/cli.d.ts +5 -0
  13. package/dist/src/platforms/webex/cli.d.ts.map +1 -0
  14. package/dist/src/platforms/webex/cli.js +32 -0
  15. package/dist/src/platforms/webex/cli.js.map +1 -0
  16. package/dist/src/platforms/webex/client.d.ts +45 -0
  17. package/dist/src/platforms/webex/client.d.ts.map +1 -0
  18. package/dist/src/platforms/webex/client.js +175 -0
  19. package/dist/src/platforms/webex/client.js.map +1 -0
  20. package/dist/src/platforms/webex/commands/auth.d.ts +15 -0
  21. package/dist/src/platforms/webex/commands/auth.d.ts.map +1 -0
  22. package/dist/src/platforms/webex/commands/auth.js +124 -0
  23. package/dist/src/platforms/webex/commands/auth.js.map +1 -0
  24. package/dist/src/platforms/webex/commands/index.d.ts +6 -0
  25. package/dist/src/platforms/webex/commands/index.d.ts.map +1 -0
  26. package/dist/src/platforms/webex/commands/index.js +6 -0
  27. package/dist/src/platforms/webex/commands/index.js.map +1 -0
  28. package/dist/src/platforms/webex/commands/member.d.ts +7 -0
  29. package/dist/src/platforms/webex/commands/member.d.ts.map +1 -0
  30. package/dist/src/platforms/webex/commands/member.js +34 -0
  31. package/dist/src/platforms/webex/commands/member.js.map +1 -0
  32. package/dist/src/platforms/webex/commands/message.d.ts +26 -0
  33. package/dist/src/platforms/webex/commands/message.d.ts.map +1 -0
  34. package/dist/src/platforms/webex/commands/message.js +153 -0
  35. package/dist/src/platforms/webex/commands/message.js.map +1 -0
  36. package/dist/src/platforms/webex/commands/snapshot.d.ts +9 -0
  37. package/dist/src/platforms/webex/commands/snapshot.d.ts.map +1 -0
  38. package/dist/src/platforms/webex/commands/snapshot.js +72 -0
  39. package/dist/src/platforms/webex/commands/snapshot.js.map +1 -0
  40. package/dist/src/platforms/webex/commands/space.d.ts +11 -0
  41. package/dist/src/platforms/webex/commands/space.d.ts.map +1 -0
  42. package/dist/src/platforms/webex/commands/space.js +59 -0
  43. package/dist/src/platforms/webex/commands/space.js.map +1 -0
  44. package/dist/src/platforms/webex/credential-manager.d.ts +23 -0
  45. package/dist/src/platforms/webex/credential-manager.d.ts.map +1 -0
  46. package/dist/src/platforms/webex/credential-manager.js +148 -0
  47. package/dist/src/platforms/webex/credential-manager.js.map +1 -0
  48. package/dist/src/platforms/webex/ensure-auth.d.ts +2 -0
  49. package/dist/src/platforms/webex/ensure-auth.d.ts.map +1 -0
  50. package/dist/src/platforms/webex/ensure-auth.js +20 -0
  51. package/dist/src/platforms/webex/ensure-auth.js.map +1 -0
  52. package/dist/src/platforms/webex/index.d.ts +6 -0
  53. package/dist/src/platforms/webex/index.d.ts.map +1 -0
  54. package/dist/src/platforms/webex/index.js +5 -0
  55. package/dist/src/platforms/webex/index.js.map +1 -0
  56. package/dist/src/platforms/webex/types.d.ts +124 -0
  57. package/dist/src/platforms/webex/types.d.ts.map +1 -0
  58. package/dist/src/platforms/webex/types.js +63 -0
  59. package/dist/src/platforms/webex/types.js.map +1 -0
  60. package/dist/src/tui/adapters/webex-adapter.d.ts +14 -0
  61. package/dist/src/tui/adapters/webex-adapter.d.ts.map +1 -0
  62. package/dist/src/tui/adapters/webex-adapter.js +79 -0
  63. package/dist/src/tui/adapters/webex-adapter.js.map +1 -0
  64. package/dist/src/tui/app.d.ts.map +1 -1
  65. package/dist/src/tui/app.js +2 -0
  66. package/dist/src/tui/app.js.map +1 -1
  67. package/docs/content/docs/cli/meta.json +1 -0
  68. package/docs/content/docs/cli/webex.mdx +291 -0
  69. package/docs/content/docs/sdk/meta.json +1 -1
  70. package/docs/content/docs/sdk/webex.mdx +260 -0
  71. package/docs/content/docs/tui.mdx +4 -3
  72. package/docs/src/app/page.tsx +2 -2
  73. package/package.json +10 -2
  74. package/skills/agent-channeltalk/SKILL.md +1 -1
  75. package/skills/agent-channeltalkbot/SKILL.md +1 -1
  76. package/skills/agent-discord/SKILL.md +1 -1
  77. package/skills/agent-discordbot/SKILL.md +1 -1
  78. package/skills/agent-instagram/SKILL.md +1 -1
  79. package/skills/agent-kakaotalk/SKILL.md +1 -1
  80. package/skills/agent-line/SKILL.md +1 -1
  81. package/skills/agent-slack/SKILL.md +1 -1
  82. package/skills/agent-slackbot/SKILL.md +1 -1
  83. package/skills/agent-teams/SKILL.md +1 -1
  84. package/skills/agent-telegram/SKILL.md +1 -1
  85. package/skills/agent-webex/SKILL.md +386 -0
  86. package/skills/agent-webex/references/authentication.md +318 -0
  87. package/skills/agent-webex/references/common-patterns.md +723 -0
  88. package/skills/agent-webex/templates/monitor-space.sh +165 -0
  89. package/skills/agent-webex/templates/post-message.sh +170 -0
  90. package/skills/agent-whatsapp/SKILL.md +1 -1
  91. package/skills/agent-whatsappbot/SKILL.md +1 -1
  92. package/src/cli.ts +4 -0
  93. package/src/platforms/webex/app-config.test.ts +98 -0
  94. package/src/platforms/webex/app-config.ts +31 -0
  95. package/src/platforms/webex/cli.test.ts +58 -0
  96. package/src/platforms/webex/cli.ts +39 -0
  97. package/src/platforms/webex/client.test.ts +429 -0
  98. package/src/platforms/webex/client.ts +247 -0
  99. package/src/platforms/webex/commands/auth.test.ts +222 -0
  100. package/src/platforms/webex/commands/auth.ts +180 -0
  101. package/src/platforms/webex/commands/index.ts +5 -0
  102. package/src/platforms/webex/commands/member.test.ts +103 -0
  103. package/src/platforms/webex/commands/member.ts +45 -0
  104. package/src/platforms/webex/commands/message.test.ts +231 -0
  105. package/src/platforms/webex/commands/message.ts +204 -0
  106. package/src/platforms/webex/commands/snapshot.test.ts +96 -0
  107. package/src/platforms/webex/commands/snapshot.ts +91 -0
  108. package/src/platforms/webex/commands/space.test.ts +206 -0
  109. package/src/platforms/webex/commands/space.ts +74 -0
  110. package/src/platforms/webex/credential-manager.test.ts +314 -0
  111. package/src/platforms/webex/credential-manager.ts +197 -0
  112. package/src/platforms/webex/ensure-auth.test.ts +85 -0
  113. package/src/platforms/webex/ensure-auth.ts +19 -0
  114. package/src/platforms/webex/index.test.ts +25 -0
  115. package/src/platforms/webex/index.ts +17 -0
  116. package/src/platforms/webex/types.test.ts +307 -0
  117. package/src/platforms/webex/types.ts +127 -0
  118. package/src/tui/adapters/webex-adapter.ts +103 -0
  119. package/src/tui/app.ts +2 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://anthropic.com/claude-code/marketplace.schema.json",
3
3
  "name": "agent-messenger",
4
- "description": "Messaging platform interaction skills for AI agents - Slack, Discord, Microsoft Teams, Telegram, WhatsApp, LINE, Instagram, KakaoTalk, and Channel Talk",
4
+ "description": "Messaging platform interaction skills for AI agents - Slack, Discord, Microsoft Teams, Webex, Telegram, WhatsApp, LINE, Instagram, KakaoTalk, and Channel Talk",
5
5
  "owner": {
6
6
  "name": "devxoul",
7
7
  "url": "https://github.com/devxoul"
@@ -72,6 +72,19 @@
72
72
  "homepage": "https://github.com/devxoul/agent-messenger",
73
73
  "keywords": ["teams", "microsoft-teams", "messaging", "ai-agent", "cli", "communication"]
74
74
  },
75
+ {
76
+ "name": "agent-webex",
77
+ "description": "Interact with Cisco Webex through a CLI interface. Features zero-config OAuth Device Grant authentication, space management, message operations, direct messaging, membership listing, and workspace snapshots.",
78
+ "version": "2.0.0",
79
+ "author": {
80
+ "name": "devxoul",
81
+ "url": "https://github.com/devxoul"
82
+ },
83
+ "source": "./",
84
+ "category": "productivity",
85
+ "homepage": "https://github.com/devxoul/agent-messenger",
86
+ "keywords": ["webex", "cisco", "messaging", "ai-agent", "cli", "communication"]
87
+ },
75
88
  {
76
89
  "name": "agent-telegram",
77
90
  "description": "Interact with Telegram through TDLib. Features automatic API credential provisioning via my.telegram.org, multi-account support, chat management, and message operations.",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "agent-messenger",
3
- "version": "2.0.0",
4
- "description": "Messaging platform interaction skills for AI agents. Interact with Slack, Discord, Microsoft Teams, Telegram, WhatsApp, LINE, Instagram, KakaoTalk, and Channel Talk - send messages, read channels, manage reactions, upload files, and more through simple CLI interfaces.",
3
+ "version": "2.1.0",
4
+ "description": "Messaging platform interaction skills for AI agents. Interact with Slack, Discord, Microsoft Teams, Webex, Telegram, WhatsApp, LINE, Instagram, KakaoTalk, 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
+ "webex",
14
15
  "telegram",
15
16
  "whatsapp",
16
17
  "kakaotalk",
@@ -33,6 +34,7 @@
33
34
  "./skills/agent-discord",
34
35
  "./skills/agent-discordbot",
35
36
  "./skills/agent-teams",
37
+ "./skills/agent-webex",
36
38
  "./skills/agent-telegram",
37
39
  "./skills/agent-whatsapp",
38
40
  "./skills/agent-whatsappbot",
package/README.md CHANGED
@@ -2,13 +2,13 @@
2
2
 
3
3
  # Agent Messenger
4
4
 
5
- [![npm](https://img.shields.io/npm/v/agent-messenger?color=E67E22)](https://www.npmjs.com/package/agent-messenger) [![platform](https://img.shields.io/badge/platform-slack-4A154B)](https://agent-messenger.dev/docs/cli/slack) [![platform](https://img.shields.io/badge/platform-discord-5865F2)](https://agent-messenger.dev/docs/cli/discord) [![platform](https://img.shields.io/badge/platform-teams-6264A7)](https://agent-messenger.dev/docs/cli/teams) [![platform](https://img.shields.io/badge/platform-telegram-2AABEE)](https://agent-messenger.dev/docs/cli/telegram) [![platform](https://img.shields.io/badge/platform-whatsapp-25D366)](https://agent-messenger.dev/docs/cli/whatsapp) [![platform](https://img.shields.io/badge/platform-line-06C755)](https://agent-messenger.dev/docs/cli/line) [![platform](https://img.shields.io/badge/platform-instagram-E4405F)](https://agent-messenger.dev/docs/cli/instagram) [![platform](https://img.shields.io/badge/platform-kakaotalk-FEE500)](https://agent-messenger.dev/docs/cli/kakaotalk) [![platform](https://img.shields.io/badge/platform-channel_talk-3B3FE4)](https://agent-messenger.dev/docs/cli/channeltalk)
5
+ [![npm](https://img.shields.io/npm/v/agent-messenger?color=E67E22)](https://www.npmjs.com/package/agent-messenger) [![platform](https://img.shields.io/badge/platform-slack-4A154B)](https://agent-messenger.dev/docs/cli/slack) [![platform](https://img.shields.io/badge/platform-discord-5865F2)](https://agent-messenger.dev/docs/cli/discord) [![platform](https://img.shields.io/badge/platform-teams-6264A7)](https://agent-messenger.dev/docs/cli/teams) [![platform](https://img.shields.io/badge/platform-webex-00BCF2)](https://agent-messenger.dev/docs/cli/webex) [![platform](https://img.shields.io/badge/platform-telegram-2AABEE)](https://agent-messenger.dev/docs/cli/telegram) [![platform](https://img.shields.io/badge/platform-whatsapp-25D366)](https://agent-messenger.dev/docs/cli/whatsapp) [![platform](https://img.shields.io/badge/platform-line-06C755)](https://agent-messenger.dev/docs/cli/line) [![platform](https://img.shields.io/badge/platform-instagram-E4405F)](https://agent-messenger.dev/docs/cli/instagram) [![platform](https://img.shields.io/badge/platform-kakaotalk-FEE500)](https://agent-messenger.dev/docs/cli/kakaotalk) [![platform](https://img.shields.io/badge/platform-channel_talk-3B3FE4)](https://agent-messenger.dev/docs/cli/channeltalk)
6
6
 
7
7
  **Your agent messages as you — not as a bot**
8
8
 
9
9
  </div>
10
10
 
11
- One CLI for Slack, Discord, Teams, Telegram, WhatsApp, LINE, Instagram, KakaoTalk, and Channel Talk. Credentials extracted from desktop apps or authenticated in seconds — no API keys, no OAuth, no admin approval. TypeScript SDK included.
11
+ One CLI for Slack, Discord, Teams, Webex, Telegram, WhatsApp, LINE, Instagram, KakaoTalk, and Channel Talk. Credentials extracted from desktop apps or authenticated in seconds — no API keys, no OAuth, no admin approval. TypeScript SDK included.
12
12
 
13
13
  ## Table of Contents
14
14
 
@@ -73,6 +73,7 @@ This installs:
73
73
  - `agent-discord` — Discord CLI
74
74
  - `agent-discordbot` — Discord Bot CLI (bot token, for server-side/CI/CD)
75
75
  - `agent-teams` — Microsoft Teams CLI
76
+ - `agent-webex` — Cisco Webex CLI (OAuth Device Grant, zero-config)
76
77
  - `agent-telegram` — Telegram CLI (user account via TDLib)
77
78
  - `agent-whatsapp` — WhatsApp CLI (user account via Baileys, pairing code auth)
78
79
  - `agent-whatsappbot` — WhatsApp Bot CLI (Cloud API, for server-side/CI/CD)
@@ -90,7 +91,7 @@ Agent Messenger includes [Agent Skills](https://agentskills.io/) that teach your
90
91
 
91
92
  SkillPad is a GUI app for Agent Skills. See [skillpad.dev](https://skillpad.dev/) for more details.
92
93
 
93
- [![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-telegram/dark.svg)](https://skillpad.dev/install/devxoul/agent-messenger/agent-telegram) [![Available on SkillPad](https://badge.skillpad.dev/agent-whatsapp/dark.svg)](https://skillpad.dev/install/devxoul/agent-messenger/agent-whatsapp) [![Available on SkillPad](https://badge.skillpad.dev/agent-whatsappbot/dark.svg)](https://skillpad.dev/install/devxoul/agent-messenger/agent-whatsappbot) [![Available on SkillPad](https://badge.skillpad.dev/agent-line/dark.svg)](https://skillpad.dev/install/devxoul/agent-messenger/agent-line) [![Available on SkillPad](https://badge.skillpad.dev/agent-instagram/dark.svg)](https://skillpad.dev/install/devxoul/agent-messenger/agent-instagram) [![Available on SkillPad](https://badge.skillpad.dev/agent-kakaotalk/dark.svg)](https://skillpad.dev/install/devxoul/agent-messenger/agent-kakaotalk) [![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)
94
+ [![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-webex/dark.svg)](https://skillpad.dev/install/devxoul/agent-messenger/agent-webex) [![Available on SkillPad](https://badge.skillpad.dev/agent-telegram/dark.svg)](https://skillpad.dev/install/devxoul/agent-messenger/agent-telegram) [![Available on SkillPad](https://badge.skillpad.dev/agent-whatsapp/dark.svg)](https://skillpad.dev/install/devxoul/agent-messenger/agent-whatsapp) [![Available on SkillPad](https://badge.skillpad.dev/agent-whatsappbot/dark.svg)](https://skillpad.dev/install/devxoul/agent-messenger/agent-whatsappbot) [![Available on SkillPad](https://badge.skillpad.dev/agent-line/dark.svg)](https://skillpad.dev/install/devxoul/agent-messenger/agent-line) [![Available on SkillPad](https://badge.skillpad.dev/agent-instagram/dark.svg)](https://skillpad.dev/install/devxoul/agent-messenger/agent-instagram) [![Available on SkillPad](https://badge.skillpad.dev/agent-kakaotalk/dark.svg)](https://skillpad.dev/install/devxoul/agent-messenger/agent-kakaotalk) [![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)
94
95
 
95
96
  ### Skills CLI
96
97
 
@@ -180,6 +181,7 @@ const slack = await new SlackClient().login({ token: 'xoxc-...', cookie: 'xoxd-.
180
181
  | `agent-messenger/discord` | `DiscordClient` |
181
182
  | `agent-messenger/discordbot` | `DiscordBotClient` |
182
183
  | `agent-messenger/teams` | `TeamsClient` |
184
+ | `agent-messenger/webex` | `WebexClient` |
183
185
  | `agent-messenger/whatsapp` | `WhatsAppClient` |
184
186
  | `agent-messenger/whatsappbot` | `WhatsAppBotClient` |
185
187
  | `agent-messenger/line` | `LineClient` |
@@ -234,7 +236,7 @@ await listener.start()
234
236
 
235
237
  ## TUI (Experimental)
236
238
 
237
- A unified terminal interface for all your messaging platforms in one screen. Navigate between Slack, Discord, Teams, Telegram, WhatsApp, LINE, Instagram, KakaoTalk, and Channel Talk — all from your terminal.
239
+ A unified terminal interface for all your messaging platforms in one screen. Navigate between Slack, Discord, Teams, Webex, Telegram, WhatsApp, LINE, Instagram, KakaoTalk, and Channel Talk — all from your terminal.
238
240
 
239
241
  > **Note**: The TUI is a showcase of what's possible with Agent Messenger's SDK. It demonstrates the power of having a unified adapter layer across all platforms.
240
242
 
@@ -245,7 +247,7 @@ agent-messenger tui
245
247
  ![Agent Messenger TUI](docs/public/tui.png)
246
248
 
247
249
  Key features:
248
- - **Multi-platform** — All 9 platforms in one sidebar, auto-login on startup
250
+ - **Multi-platform** — All 10 platforms in one sidebar, auto-login on startup
249
251
  - **Real-time messages** — Live message streaming for supported platforms
250
252
  - **Fuzzy pickers** — `Ctrl+K` for channels, `Ctrl+W` for workspaces
251
253
  - **Interactive auth** — Authenticate platforms that aren't set up yet, right in the TUI
@@ -254,30 +256,31 @@ See the [TUI docs](https://agent-messenger.dev/docs/tui) for keybindings, archit
254
256
 
255
257
  ## Supported Platforms
256
258
 
257
- | Feature | Slack | Discord | Teams | Telegram | WhatsApp | LINE | Instagram | KakaoTalk | Channel Talk (beta) |
258
- | -------------------------- | :---: | :-----: | :---: | :------: | :------: | :---: | :-------: | :-------: | :-----------------: |
259
- | Auto credential extraction | ✅ | ✅ | ✅ | — | — | — | — | ✅ | ✅ |
260
- | Send & list messages | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
261
- | Search messages | ✅ | ✅ | | | ✅ | | ✅ | | ✅ |
262
- | Threads | ✅ | ✅ | — | — | | — | | — | |
263
- | Channels & Users | ✅ | ✅ | | partial | — | | — | — | |
264
- | Reactions | ✅ | ✅ | ✅ | — | | | — | — | |
265
- | File uploads | ✅ | ✅ | ✅ | — | | — | — | — | — |
266
- | File downloads | ✅ | | — | — | — | — | — | — | — |
267
- | Workspace snapshots | ✅ | | | — | — | — | — | — | |
268
- | Multi-workspace / account | ✅ | ✅ | ✅ | | | | | | ✅ |
269
- | Activity feed | ✅ | | — | | | | | | |
270
- | Drafts | ✅ | — | — | — | — | — | — | — | — |
271
- | Saved items | ✅ | — | — | — | — | — | — | — | — |
272
- | Unread messages | ✅ | — | — | — | — | — | — | — | — |
273
- | Sidebar sections | ✅ | — | — | — | — | — | — | — | — |
274
- | Pins & bookmarks | ✅ | — | — | — | — | — | — | — | — |
275
- | Scheduled messages | ✅ | — | — | — | — | — | — | — | — |
276
- | Channel management | ✅ | — | — | — | — | — | — | — | — |
277
- | Reminders | ✅ | — | — | — | — | — | — | — | — |
278
- | User groups | ✅ | — | — | — | — | — | — | — | — |
279
- | Real-time events (SDK) | ✅ | | — | — | — | | | | — |
280
- | Bot support | ✅ | ✅ | — | — | | | | | |
259
+ | Feature | Slack | Discord | Teams | Webex | Telegram | WhatsApp | LINE | Instagram | KakaoTalk | Channel Talk (beta) |
260
+ | -------------------------- | :---: | :-----: | :---: | :---: | :------: | :------: | :---: | :-------: | :-------: | :-----------------: |
261
+ | Auto credential extraction | ✅ | ✅ | ✅ | — | — | — | — | — | ✅ | ✅ |
262
+ | Send & list messages | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
263
+ | Direct messages | ✅ | ✅ | | ✅ | | ✅ | | ✅ | | ✅ |
264
+ | Search messages | ✅ | ✅ | — | — | — | | — | | — | |
265
+ | Threads | ✅ | ✅ | || — | — | | — | — | |
266
+ | Channels & Users | ✅ | ✅ | ✅ | ✅ | partial | — | ✅ | — | — | |
267
+ | Reactions | ✅ | ✅ | ✅ | — | — | | — | — | — | — |
268
+ | File uploads | ✅ | | | — | — | — | — | — | — | — |
269
+ | File downloads | ✅ | | | — | — | — | — | — | — | |
270
+ | Workspace snapshots | ✅ | ✅ | ✅ | ✅ | | | | | | ✅ |
271
+ | Multi-workspace / account | ✅ | | | — | | | | | | |
272
+ | Activity feed | ✅ | — | — | — | — | — | — | — | — | — |
273
+ | Drafts | ✅ | — | — | — | — | — | — | — | — | — |
274
+ | Saved items | ✅ | — | — | — | — | — | — | — | — | — |
275
+ | Unread messages | ✅ | — | — | — | — | — | — | — | — | — |
276
+ | Sidebar sections | ✅ | — | — | — | — | — | — | — | — | — |
277
+ | Pins & bookmarks | ✅ | — | — | — | — | — | — | — | — | — |
278
+ | Scheduled messages | ✅ | — | — | — | — | — | — | — | — | — |
279
+ | Channel management | ✅ | — | — | — | — | — | — | — | — | — |
280
+ | Reminders | ✅ | — | — | — | — | — | — | — | — | — |
281
+ | User groups | ✅ | | — | — | — | — | | | | — |
282
+ | Real-time events (SDK) | ✅ | ✅ | — | — | — | | | | | |
283
+ | Bot support | ✅ | ✅ | — | — | — | ✅ | — | — | — | ✅ |
281
284
 
282
285
  > ⚠️ **Teams tokens expire in 60-90 minutes.** Re-run `agent-teams auth extract` to refresh. See [Teams Guide](skills/agent-teams/SKILL.md) for details.
283
286
 
@@ -288,6 +291,7 @@ See the [TUI docs](https://agent-messenger.dev/docs/tui) for keybindings, archit
288
291
  - **[Discord Guide](https://agent-messenger.dev/docs/cli/discord)** — Full command reference for Discord
289
292
  - **[Discord Bot Guide](https://agent-messenger.dev/docs/cli/discordbot)** — Bot token integration for server-side and CI/CD
290
293
  - **[Teams Guide](https://agent-messenger.dev/docs/cli/teams)** — Full command reference for Microsoft Teams
294
+ - **[Webex Guide](skills/agent-webex/SKILL.md)** — OAuth Device Grant auth and Cisco Webex command reference
291
295
  - **[Telegram Guide](https://agent-messenger.dev/docs/cli/telegram)** — TDLib setup and Telegram command reference
292
296
  - **[WhatsApp Guide](https://agent-messenger.dev/docs/cli/whatsapp)** — Baileys-based WhatsApp integration via pairing code
293
297
  - **[WhatsApp Bot Guide](https://agent-messenger.dev/docs/cli/whatsappbot)** — Cloud API integration for WhatsApp Business
package/dist/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "agent-messenger",
3
- "version": "2.0.0",
4
- "description": "Multi-platform messaging CLI for AI agents (Slack, Discord, Teams, Telegram, WhatsApp, LINE, Instagram, KakaoTalk, Channel Talk)",
3
+ "version": "2.1.0",
4
+ "description": "Multi-platform messaging CLI for AI agents (Slack, Discord, Teams, Webex, Telegram, WhatsApp, LINE, Instagram, KakaoTalk, Channel Talk)",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/devxoul/agent-messenger"
@@ -14,6 +14,7 @@
14
14
  "agent-discord": "./src/platforms/discord/cli.ts",
15
15
  "agent-discordbot": "./src/platforms/discordbot/cli.ts",
16
16
  "agent-teams": "./src/platforms/teams/cli.ts",
17
+ "agent-webex": "./src/platforms/webex/cli.ts",
17
18
  "agent-telegram": "./src/platforms/telegram/cli.ts",
18
19
  "agent-whatsapp": "./src/platforms/whatsapp/cli.ts",
19
20
  "agent-whatsappbot": "./src/platforms/whatsappbot/cli.ts",
@@ -41,6 +42,10 @@
41
42
  "types": "./src/platforms/teams/index.ts",
42
43
  "default": "./src/platforms/teams/index.ts"
43
44
  },
45
+ "./webex": {
46
+ "types": "./src/platforms/webex/index.ts",
47
+ "default": "./src/platforms/webex/index.ts"
48
+ },
44
49
  "./whatsapp": {
45
50
  "types": "./src/platforms/whatsapp/index.ts",
46
51
  "default": "./src/platforms/whatsapp/index.ts"
@@ -84,6 +89,9 @@
84
89
  "teams": [
85
90
  "./src/platforms/teams/index.ts"
86
91
  ],
92
+ "webex": [
93
+ "./src/platforms/webex/index.ts"
94
+ ],
87
95
  "whatsapp": [
88
96
  "./src/platforms/whatsapp/index.ts"
89
97
  ],
@@ -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;AA+D7B,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;AAmE7B,eAAe,OAAO,CAAA"}
package/dist/src/cli.js CHANGED
@@ -48,6 +48,9 @@ program.command('channeltalk', 'Interact with Channel Talk', {
48
48
  program.command('channeltalkbot', 'Interact with Channel Talk using API credentials', {
49
49
  executableFile: join(__dirname, 'platforms', 'channeltalkbot', `cli${ext}`),
50
50
  });
51
+ program.command('webex', 'Interact with Cisco Webex', {
52
+ executableFile: join(__dirname, 'platforms', 'webex', `cli${ext}`),
53
+ });
51
54
  program.command('tui', 'Launch unified messenger TUI', {
52
55
  executableFile: join(__dirname, 'tui', `cli${ext}`),
53
56
  });
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export interface WebexAppCredentials {
2
+ clientId: string;
3
+ clientSecret: string;
4
+ source: 'env' | 'builtin';
5
+ }
6
+ export declare function getWebexAppCredentials(): WebexAppCredentials;
7
+ //# sourceMappingURL=app-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-config.d.ts","sourceRoot":"","sources":["../../../../src/platforms/webex/app-config.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,KAAK,GAAG,SAAS,CAAA;CAC1B;AAOD,wBAAgB,sBAAsB,IAAI,mBAAmB,CAgB5D"}
@@ -0,0 +1,20 @@
1
+ const BUILTIN_CLIENT_ID = 'C720341c19d8dfb4cab8a5db78be4bc6d5c3983fbe84df94be34c8aa69a695583';
2
+ const BUILTIN_CLIENT_SECRET = 'e90806657443a7f16093c0846690aeeea96cd2b3ed9b79cf544297c526b4f9af';
3
+ function parseTrimmed(value) {
4
+ const normalized = value?.trim();
5
+ return normalized ? normalized : undefined;
6
+ }
7
+ export function getWebexAppCredentials() {
8
+ const envClientId = parseTrimmed(process.env.AGENT_WEBEX_CLIENT_ID);
9
+ const envClientSecret = parseTrimmed(process.env.AGENT_WEBEX_CLIENT_SECRET);
10
+ if (envClientId && envClientSecret) {
11
+ return { clientId: envClientId, clientSecret: envClientSecret, source: 'env' };
12
+ }
13
+ const legacyClientId = parseTrimmed(process.env.AGENT_MESSENGER_WEBEX_CLIENT_ID);
14
+ const legacyClientSecret = parseTrimmed(process.env.AGENT_MESSENGER_WEBEX_CLIENT_SECRET);
15
+ if (legacyClientId && legacyClientSecret) {
16
+ return { clientId: legacyClientId, clientSecret: legacyClientSecret, source: 'env' };
17
+ }
18
+ return { clientId: BUILTIN_CLIENT_ID, clientSecret: BUILTIN_CLIENT_SECRET, source: 'builtin' };
19
+ }
20
+ //# sourceMappingURL=app-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-config.js","sourceRoot":"","sources":["../../../../src/platforms/webex/app-config.ts"],"names":[],"mappings":"AAAA,MAAM,iBAAiB,GAAG,mEAAmE,CAAA;AAC7F,MAAM,qBAAqB,GAAG,kEAAkE,CAAA;AAQhG,SAAS,YAAY,CAAC,KAAyB;IAC7C,MAAM,UAAU,GAAG,KAAK,EAAE,IAAI,EAAE,CAAA;IAChC,OAAO,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAA;AAC5C,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAA;IACnE,MAAM,eAAe,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAA;IAE3E,IAAI,WAAW,IAAI,eAAe,EAAE,CAAC;QACnC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;IAChF,CAAC;IAED,MAAM,cAAc,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAA;IAChF,MAAM,kBAAkB,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAA;IAExF,IAAI,cAAc,IAAI,kBAAkB,EAAE,CAAC;QACzC,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;IACtF,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;AAChG,CAAC"}
@@ -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/webex/cli.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,WAAW,CAAA;AAgBvD,QAAA,MAAM,OAAO,aAAgB,CAAA;AAoB7B,eAAe,OAAO,CAAA"}
@@ -0,0 +1,32 @@
1
+ #!/usr/bin/env bun
2
+ import { Command } from 'commander';
3
+ import pkg from '../../../package.json' with { type: 'json' };
4
+ import { authCommand, memberCommand, messageCommand, snapshotCommand, spaceCommand } from './commands/index.js';
5
+ import { ensureWebexAuth } 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-webex')
18
+ .description('CLI tool for Cisco Webex communication')
19
+ .version(pkg.version);
20
+ program.hook('preAction', async (_thisCommand, actionCommand) => {
21
+ if (isAuthCommand(actionCommand))
22
+ return;
23
+ await ensureWebexAuth();
24
+ });
25
+ program.addCommand(authCommand);
26
+ program.addCommand(memberCommand);
27
+ program.addCommand(messageCommand);
28
+ program.addCommand(snapshotCommand);
29
+ program.addCommand(spaceCommand);
30
+ program.parse(process.argv);
31
+ export default program;
32
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../../src/platforms/webex/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,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACtG,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAE/C,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,aAAa,CAAC;KACnB,WAAW,CAAC,wCAAwC,CAAC;KACrD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;AAEvB,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,EAAE;IAC9D,IAAI,aAAa,CAAC,aAAa,CAAC;QAAE,OAAM;IACxC,MAAM,eAAe,EAAE,CAAA;AACzB,CAAC,CAAC,CAAA;AAEF,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;AAC/B,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;AACjC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAA;AAClC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAA;AACnC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;AAEhC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AAE3B,eAAe,OAAO,CAAA"}
@@ -0,0 +1,45 @@
1
+ import type { WebexMembership, WebexMessage, WebexPerson, WebexSpace } from './types.js';
2
+ export declare class WebexClient {
3
+ private token;
4
+ private buckets;
5
+ private globalRateLimitUntil;
6
+ login(credentials?: {
7
+ token: string;
8
+ }): Promise<this>;
9
+ private ensureAuth;
10
+ private getBucketKey;
11
+ private waitForRateLimit;
12
+ private updateBucket;
13
+ private handleRateLimitResponse;
14
+ private sleep;
15
+ private request;
16
+ testAuth(): Promise<WebexPerson>;
17
+ listSpaces(options?: {
18
+ type?: string;
19
+ max?: number;
20
+ }): Promise<WebexSpace[]>;
21
+ getSpace(spaceId: string): Promise<WebexSpace>;
22
+ sendMessage(roomId: string, text: string, options?: {
23
+ markdown?: boolean;
24
+ }): Promise<WebexMessage>;
25
+ sendDirectMessage(personEmail: string, text: string, options?: {
26
+ markdown?: boolean;
27
+ }): Promise<WebexMessage>;
28
+ listMessages(roomId: string, options?: {
29
+ max?: number;
30
+ }): Promise<WebexMessage[]>;
31
+ getMessage(messageId: string): Promise<WebexMessage>;
32
+ deleteMessage(messageId: string): Promise<void>;
33
+ editMessage(messageId: string, roomId: string, text: string, options?: {
34
+ markdown?: boolean;
35
+ }): Promise<WebexMessage>;
36
+ listPeople(options?: {
37
+ email?: string;
38
+ displayName?: string;
39
+ max?: number;
40
+ }): Promise<WebexPerson[]>;
41
+ listMemberships(roomId: string, options?: {
42
+ max?: number;
43
+ }): Promise<WebexMembership[]>;
44
+ }
45
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../src/platforms/webex/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAarF,qBAAa,WAAW;IACtB,OAAO,CAAC,KAAK,CAAsB;IACnC,OAAO,CAAC,OAAO,CAA0C;IACzD,OAAO,CAAC,oBAAoB,CAAY;IAElC,KAAK,CAAC,WAAW,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB3D,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,YAAY;YAQN,gBAAgB;IAa9B,OAAO,CAAC,YAAY;YAYN,uBAAuB;IASrC,OAAO,CAAC,KAAK;YAIC,OAAO;IA6Df,QAAQ,IAAI,OAAO,CAAC,WAAW,CAAC;IAIhC,UAAU,CAAC,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAS5E,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAI9C,WAAW,CACf,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,GAC/B,OAAO,CAAC,YAAY,CAAC;IAKlB,iBAAiB,CACrB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,GAC/B,OAAO,CAAC,YAAY,CAAC;IAOlB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAQjF,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAIpD,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,WAAW,CACf,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,GAC/B,OAAO,CAAC,YAAY,CAAC;IAKlB,UAAU,CAAC,OAAO,CAAC,EAAE;QACzB,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,GAAG,CAAC,EAAE,MAAM,CAAA;KACb,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAWpB,eAAe,CACnB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GACzB,OAAO,CAAC,eAAe,EAAE,CAAC;CAU9B"}
@@ -0,0 +1,175 @@
1
+ import { WebexError } from './types.js';
2
+ import { WebexCredentialManager } from './credential-manager.js';
3
+ const BASE_URL = 'https://webexapis.com/v1';
4
+ const MAX_RETRIES = 3;
5
+ const BASE_BACKOFF_MS = 100;
6
+ export class WebexClient {
7
+ token = null;
8
+ buckets = new Map();
9
+ globalRateLimitUntil = 0;
10
+ async login(credentials) {
11
+ if (credentials) {
12
+ if (!credentials.token) {
13
+ throw new WebexError('Token is required', 'missing_token');
14
+ }
15
+ this.token = credentials.token;
16
+ return this;
17
+ }
18
+ const { ensureWebexAuth } = await import('./ensure-auth.js');
19
+ await ensureWebexAuth();
20
+ const credManager = new WebexCredentialManager();
21
+ const config = await credManager.loadConfig();
22
+ const token = await credManager.getToken(config?.clientId, config?.clientSecret);
23
+ if (!token) {
24
+ throw new WebexError('No Webex credentials found. Run "auth login" to authenticate.', 'no_credentials');
25
+ }
26
+ return this.login({ token });
27
+ }
28
+ ensureAuth() {
29
+ if (this.token === null) {
30
+ throw new WebexError('Not authenticated. Call .login() first.', 'not_authenticated');
31
+ }
32
+ return this.token;
33
+ }
34
+ getBucketKey(method, path) {
35
+ const normalized = path.replace(/\/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}(?=\/|$)/gi, '/{id}');
36
+ return `${method}:${normalized}`;
37
+ }
38
+ async waitForRateLimit(bucketKey) {
39
+ const now = Date.now();
40
+ if (this.globalRateLimitUntil > now) {
41
+ await this.sleep(this.globalRateLimitUntil - now);
42
+ }
43
+ const bucket = this.buckets.get(bucketKey);
44
+ if (bucket && bucket.remaining === 0 && bucket.resetAt * 1000 > now) {
45
+ await this.sleep(bucket.resetAt * 1000 - now);
46
+ }
47
+ }
48
+ updateBucket(bucketKey, response) {
49
+ const remaining = response.headers.get('X-RateLimit-Remaining');
50
+ const reset = response.headers.get('X-RateLimit-Reset');
51
+ if (remaining !== null && reset !== null) {
52
+ this.buckets.set(bucketKey, {
53
+ remaining: parseInt(remaining, 10),
54
+ resetAt: parseFloat(reset),
55
+ });
56
+ }
57
+ }
58
+ async handleRateLimitResponse(response) {
59
+ const retryAfter = response.headers.get('Retry-After');
60
+ const waitMs = parseFloat(retryAfter || '1') * 1000;
61
+ this.globalRateLimitUntil = Date.now() + waitMs;
62
+ await this.sleep(waitMs);
63
+ return waitMs;
64
+ }
65
+ sleep(ms) {
66
+ return new Promise((resolve) => setTimeout(resolve, ms));
67
+ }
68
+ async request(method, path, body) {
69
+ const url = `${BASE_URL}${path}`;
70
+ const bucketKey = this.getBucketKey(method, path);
71
+ for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {
72
+ await this.waitForRateLimit(bucketKey);
73
+ const options = {
74
+ method,
75
+ headers: {
76
+ Authorization: `Bearer ${this.ensureAuth()}`,
77
+ 'Content-Type': 'application/json',
78
+ },
79
+ };
80
+ if (body !== undefined) {
81
+ options.body = JSON.stringify(body);
82
+ }
83
+ const response = await fetch(url, options);
84
+ this.updateBucket(bucketKey, response);
85
+ if (response.status === 429) {
86
+ if (attempt < MAX_RETRIES) {
87
+ await this.handleRateLimitResponse(response);
88
+ continue;
89
+ }
90
+ const errorBody = (await response.json().catch(() => null));
91
+ throw new WebexError(errorBody?.message ?? 'Rate limited', 'rate_limited');
92
+ }
93
+ if (response.status >= 500 && attempt < MAX_RETRIES) {
94
+ await this.sleep(BASE_BACKOFF_MS * 2 ** attempt);
95
+ continue;
96
+ }
97
+ if (!response.ok) {
98
+ const errorBody = (await response.json().catch(() => null));
99
+ const message = errorBody?.message ??
100
+ errorBody?.errors?.[0]?.description ??
101
+ `HTTP ${response.status}`;
102
+ throw new WebexError(message, `http_${response.status}`);
103
+ }
104
+ if (response.status === 204) {
105
+ return undefined;
106
+ }
107
+ return response.json();
108
+ }
109
+ throw new WebexError('Request failed after retries', 'max_retries');
110
+ }
111
+ async testAuth() {
112
+ return this.request('GET', '/people/me');
113
+ }
114
+ async listSpaces(options) {
115
+ const params = new URLSearchParams();
116
+ if (options?.type)
117
+ params.set('type', options.type);
118
+ params.set('max', String(options?.max ?? 50));
119
+ const query = params.toString();
120
+ const data = await this.request('GET', `/rooms?${query}`);
121
+ return data.items;
122
+ }
123
+ async getSpace(spaceId) {
124
+ return this.request('GET', `/rooms/${spaceId}`);
125
+ }
126
+ async sendMessage(roomId, text, options) {
127
+ const body = options?.markdown ? { roomId, markdown: text } : { roomId, text };
128
+ return this.request('POST', '/messages', body);
129
+ }
130
+ async sendDirectMessage(personEmail, text, options) {
131
+ const body = options?.markdown
132
+ ? { toPersonEmail: personEmail, markdown: text }
133
+ : { toPersonEmail: personEmail, text };
134
+ return this.request('POST', '/messages', body);
135
+ }
136
+ async listMessages(roomId, options) {
137
+ const params = new URLSearchParams();
138
+ params.set('roomId', roomId);
139
+ params.set('max', String(options?.max ?? 50));
140
+ const data = await this.request('GET', `/messages?${params}`);
141
+ return data.items;
142
+ }
143
+ async getMessage(messageId) {
144
+ return this.request('GET', `/messages/${messageId}`);
145
+ }
146
+ async deleteMessage(messageId) {
147
+ return this.request('DELETE', `/messages/${messageId}`);
148
+ }
149
+ async editMessage(messageId, roomId, text, options) {
150
+ const body = options?.markdown ? { roomId, markdown: text } : { roomId, text };
151
+ return this.request('PUT', `/messages/${messageId}`, body);
152
+ }
153
+ async listPeople(options) {
154
+ const params = new URLSearchParams();
155
+ if (options?.email)
156
+ params.set('email', options.email);
157
+ if (options?.displayName)
158
+ params.set('displayName', options.displayName);
159
+ if (options?.max)
160
+ params.set('max', String(options.max));
161
+ const query = params.toString();
162
+ const path = query ? `/people?${query}` : '/people';
163
+ const data = await this.request('GET', path);
164
+ return data.items;
165
+ }
166
+ async listMemberships(roomId, options) {
167
+ const params = new URLSearchParams();
168
+ params.set('roomId', roomId);
169
+ if (options?.max)
170
+ params.set('max', String(options.max));
171
+ const data = await this.request('GET', `/memberships?${params}`);
172
+ return data.items;
173
+ }
174
+ }
175
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/platforms/webex/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { Command } from 'commander';
2
+ export declare function loginAction(options: {
3
+ token?: string;
4
+ clientId?: string;
5
+ clientSecret?: string;
6
+ pretty?: boolean;
7
+ }): Promise<void>;
8
+ export declare function statusAction(options: {
9
+ pretty?: boolean;
10
+ }): Promise<void>;
11
+ export declare function logoutAction(options: {
12
+ pretty?: boolean;
13
+ }): Promise<void>;
14
+ export declare const authCommand: Command;
15
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../../src/platforms/webex/commands/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAyCnC,wBAAsB,WAAW,CAAC,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA4DxI;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgC/E;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAkB/E;AAED,eAAO,MAAM,WAAW,SAsBrB,CAAA"}