agent-messenger 2.29.0 → 2.30.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 (120) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/README.md +27 -1
  3. package/dist/package.json +1 -1
  4. package/dist/src/platforms/discord/client.d.ts +1 -0
  5. package/dist/src/platforms/discord/client.d.ts.map +1 -1
  6. package/dist/src/platforms/discord/client.js +3 -0
  7. package/dist/src/platforms/discord/client.js.map +1 -1
  8. package/dist/src/platforms/discord/commands/message.d.ts +3 -0
  9. package/dist/src/platforms/discord/commands/message.d.ts.map +1 -1
  10. package/dist/src/platforms/discord/commands/message.js +30 -0
  11. package/dist/src/platforms/discord/commands/message.js.map +1 -1
  12. package/dist/src/platforms/discordbot/commands/message.d.ts +1 -1
  13. package/dist/src/platforms/discordbot/commands/message.d.ts.map +1 -1
  14. package/dist/src/platforms/discordbot/commands/message.js +4 -4
  15. package/dist/src/platforms/discordbot/commands/message.js.map +1 -1
  16. package/dist/src/platforms/slack/commands/message.js +4 -4
  17. package/dist/src/platforms/slack/commands/message.js.map +1 -1
  18. package/dist/src/platforms/slackbot/commands/message.js +4 -4
  19. package/dist/src/platforms/slackbot/commands/message.js.map +1 -1
  20. package/dist/src/platforms/teams/client.d.ts +2 -0
  21. package/dist/src/platforms/teams/client.d.ts.map +1 -1
  22. package/dist/src/platforms/teams/client.js +35 -0
  23. package/dist/src/platforms/teams/client.js.map +1 -1
  24. package/dist/src/platforms/teams/commands/chat.d.ts +3 -0
  25. package/dist/src/platforms/teams/commands/chat.d.ts.map +1 -1
  26. package/dist/src/platforms/teams/commands/chat.js +34 -1
  27. package/dist/src/platforms/teams/commands/chat.js.map +1 -1
  28. package/dist/src/platforms/teams/index.d.ts +1 -1
  29. package/dist/src/platforms/teams/index.d.ts.map +1 -1
  30. package/dist/src/platforms/teams/index.js.map +1 -1
  31. package/dist/src/platforms/teams/listener.d.ts +5 -0
  32. package/dist/src/platforms/teams/listener.d.ts.map +1 -1
  33. package/dist/src/platforms/teams/listener.js +54 -4
  34. package/dist/src/platforms/teams/listener.js.map +1 -1
  35. package/dist/src/platforms/teams/trouter.d.ts +7 -0
  36. package/dist/src/platforms/teams/trouter.d.ts.map +1 -1
  37. package/dist/src/platforms/teams/trouter.js +85 -0
  38. package/dist/src/platforms/teams/trouter.js.map +1 -1
  39. package/dist/src/platforms/teams/types.d.ts +9 -0
  40. package/dist/src/platforms/teams/types.d.ts.map +1 -1
  41. package/dist/src/platforms/teams/types.js.map +1 -1
  42. package/dist/src/platforms/telegram/client.d.ts +1 -0
  43. package/dist/src/platforms/telegram/client.d.ts.map +1 -1
  44. package/dist/src/platforms/telegram/client.js +21 -0
  45. package/dist/src/platforms/telegram/client.js.map +1 -1
  46. package/dist/src/platforms/telegram/commands/message.d.ts.map +1 -1
  47. package/dist/src/platforms/telegram/commands/message.js +25 -1
  48. package/dist/src/platforms/telegram/commands/message.js.map +1 -1
  49. package/dist/src/platforms/telegrambot/commands/message.d.ts +1 -1
  50. package/dist/src/platforms/telegrambot/commands/message.d.ts.map +1 -1
  51. package/dist/src/platforms/telegrambot/commands/message.js +3 -3
  52. package/dist/src/platforms/telegrambot/commands/message.js.map +1 -1
  53. package/dist/src/platforms/whatsapp/client.d.ts +3 -1
  54. package/dist/src/platforms/whatsapp/client.d.ts.map +1 -1
  55. package/dist/src/platforms/whatsapp/client.js +19 -3
  56. package/dist/src/platforms/whatsapp/client.js.map +1 -1
  57. package/dist/src/platforms/whatsapp/commands/message.d.ts.map +1 -1
  58. package/dist/src/platforms/whatsapp/commands/message.js +18 -0
  59. package/dist/src/platforms/whatsapp/commands/message.js.map +1 -1
  60. package/docs/content/docs/cli/discordbot.mdx +2 -2
  61. package/docs/content/docs/cli/slack.mdx +2 -2
  62. package/docs/content/docs/cli/slackbot.mdx +2 -2
  63. package/docs/content/docs/cli/teams.mdx +15 -1
  64. package/docs/content/docs/cli/telegrambot.mdx +1 -1
  65. package/docs/content/docs/sdk/teams.mdx +30 -0
  66. package/e2e/README.md +3 -3
  67. package/e2e/discordbot.e2e.test.ts +2 -2
  68. package/e2e/slack.e2e.test.ts +2 -2
  69. package/e2e/slackbot.e2e.test.ts +2 -2
  70. package/e2e/telegrambot.e2e.test.ts +2 -2
  71. package/package.json +1 -1
  72. package/skills/agent-channeltalk/SKILL.md +1 -1
  73. package/skills/agent-channeltalkbot/SKILL.md +1 -1
  74. package/skills/agent-discord/SKILL.md +5 -1
  75. package/skills/agent-discordbot/SKILL.md +3 -3
  76. package/skills/agent-discordbot/references/common-patterns.md +2 -2
  77. package/skills/agent-imessage/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 +3 -3
  82. package/skills/agent-slack/references/common-patterns.md +2 -2
  83. package/skills/agent-slackbot/SKILL.md +3 -3
  84. package/skills/agent-slackbot/references/common-patterns.md +4 -4
  85. package/skills/agent-teams/SKILL.md +30 -2
  86. package/skills/agent-telegram/SKILL.md +4 -1
  87. package/skills/agent-telegrambot/SKILL.md +2 -2
  88. package/skills/agent-webex/SKILL.md +1 -1
  89. package/skills/agent-webexbot/SKILL.md +1 -1
  90. package/skills/agent-wechatbot/SKILL.md +1 -1
  91. package/skills/agent-whatsapp/SKILL.md +25 -1
  92. package/skills/agent-whatsappbot/SKILL.md +1 -1
  93. package/src/platforms/discord/client.test.ts +22 -0
  94. package/src/platforms/discord/client.ts +4 -0
  95. package/src/platforms/discord/commands/message.test.ts +26 -1
  96. package/src/platforms/discord/commands/message.ts +41 -0
  97. package/src/platforms/discordbot/commands/message.test.ts +6 -6
  98. package/src/platforms/discordbot/commands/message.ts +4 -4
  99. package/src/platforms/slack/commands/message.test.ts +4 -4
  100. package/src/platforms/slack/commands/message.ts +4 -4
  101. package/src/platforms/slackbot/commands/message.ts +4 -4
  102. package/src/platforms/teams/client.test.ts +24 -0
  103. package/src/platforms/teams/client.ts +56 -0
  104. package/src/platforms/teams/commands/chat.test.ts +23 -1
  105. package/src/platforms/teams/commands/chat.ts +44 -0
  106. package/src/platforms/teams/index.ts +1 -0
  107. package/src/platforms/teams/listener.test.ts +243 -0
  108. package/src/platforms/teams/listener.ts +59 -3
  109. package/src/platforms/teams/trouter.test.ts +60 -0
  110. package/src/platforms/teams/trouter.ts +95 -0
  111. package/src/platforms/teams/types.ts +10 -0
  112. package/src/platforms/telegram/client.test.ts +60 -0
  113. package/src/platforms/telegram/client.ts +24 -0
  114. package/src/platforms/telegram/commands/message.test.ts +38 -0
  115. package/src/platforms/telegram/commands/message.ts +39 -0
  116. package/src/platforms/telegrambot/commands/message.ts +3 -3
  117. package/src/platforms/whatsapp/client.test.ts +58 -0
  118. package/src/platforms/whatsapp/client.ts +23 -3
  119. package/src/platforms/whatsapp/commands/message.test.ts +43 -0
  120. package/src/platforms/whatsapp/commands/message.ts +25 -0
@@ -1 +1 @@
1
- {"version":3,"file":"message.js","sourceRoot":"","sources":["../../../../../src/platforms/whatsapp/commands/message.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"message.js","sourceRoot":"","sources":["../../../../../src/platforms/whatsapp/commands/message.ts"],"names":[],"mappings":"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"}
@@ -173,8 +173,8 @@ agent-discordbot message get <channel> <message-id>
173
173
  agent-discordbot message replies <channel> <thread-id>
174
174
  agent-discordbot message replies general 9876543210987654321 --limit 50
175
175
 
176
- # Update a message (bot's own messages only)
177
- agent-discordbot message update <channel> <message-id> <text>
176
+ # Edit a message (bot's own messages only)
177
+ agent-discordbot message edit <channel> <message-id> <text>
178
178
 
179
179
  # Delete a message (bot's own messages only)
180
180
  agent-discordbot message delete <channel> <message-id> --force
@@ -128,8 +128,8 @@ agent-slack message replies general 1234567890.123456 --limit 50
128
128
  agent-slack message search <query>
129
129
  agent-slack message search "project update" --limit 50
130
130
 
131
- # Update a message
132
- agent-slack message update <channel> <ts> <new-text>
131
+ # Edit a message
132
+ agent-slack message edit <channel> <ts> <new-text>
133
133
 
134
134
  # Delete a message
135
135
  agent-slack message delete <channel> <ts> --force
@@ -165,8 +165,8 @@ agent-slackbot message get <channel> <ts>
165
165
  agent-slackbot message replies <channel> <thread_ts>
166
166
  agent-slackbot message replies C0ACZKTDDC0 1234567890.123456 --limit 50
167
167
 
168
- # Update a message (bot's own messages only)
169
- agent-slackbot message update <channel> <ts> <new-text>
168
+ # Edit a message (bot's own messages only)
169
+ agent-slackbot message edit <channel> <ts> <new-text>
170
170
 
171
171
  # Delete a message (bot's own messages only)
172
172
  agent-slackbot message delete <channel> <ts> --force
@@ -265,13 +265,27 @@ import { TeamsClient, TeamsListener } from 'agent-messenger/teams'
265
265
  const client = await new TeamsClient().login()
266
266
  const listener = new TeamsListener(client)
267
267
 
268
- listener.on('message', (message) => {
268
+ listener.on('message', async (message) => {
269
269
  console.log(`New message in ${message.chatId}: ${message.content}`)
270
+
271
+ // Channel messages carry team/channel context and parsed @mentions.
272
+ if (message.conversationType === 'channel') {
273
+ for (const mention of message.mentions) {
274
+ console.log(`Mentioned: ${mention.displayName} (${mention.mri})`)
275
+ }
276
+ await client.sendMessage(message.teamId!, message.channelId!, 'On it 👍')
277
+ }
270
278
  })
271
279
 
272
280
  await listener.start()
273
281
  ```
274
282
 
283
+ Each `message` is a `TeamsRealtimeMessage`. Alongside the unchanged
284
+ `chatId`/`content`/`author`, it carries `conversationType` (`'chat'` or
285
+ `'channel'`), `teamId`/`channelId` (set for channel messages, for use with
286
+ `sendMessage`), and `mentions` (always present, empty when there are no
287
+ `@mentions`; each is `{ id, mri?, displayName }`).
288
+
275
289
  The listener reuses your extracted credentials, so the Teams desktop app must be
276
290
  logged in. It reconnects automatically and re-authenticates on token expiry.
277
291
 
@@ -80,7 +80,7 @@ agent-telegrambot message send <chat> "..." --silent
80
80
  agent-telegrambot message send <chat> "..." --thread-id 5
81
81
 
82
82
  # Edit a message
83
- agent-telegrambot message update <chat> <message-id> <new-text>
83
+ agent-telegrambot message edit <chat> <message-id> <new-text>
84
84
 
85
85
  # Delete a message
86
86
  agent-telegrambot message delete <chat> <message-id> --force
@@ -206,9 +206,39 @@ import type {
206
206
  TeamsAccount,
207
207
  TeamsConfig,
208
208
  TeamsConfigLegacy,
209
+ TeamsRealtimeMessage,
210
+ TeamsMention,
211
+ TeamsListenerEventMap,
212
+ TeamsTrouterGenericEvent,
209
213
  } from 'agent-messenger/teams'
210
214
  ```
211
215
 
216
+ The real-time listener emits `TeamsRealtimeMessage`:
217
+
218
+ ```typescript
219
+ interface TeamsRealtimeMessage {
220
+ id: string
221
+ chatId: string
222
+ conversationType: 'chat' | 'channel'
223
+ teamId?: string // set for channel messages
224
+ channelId?: string // set for channel messages
225
+ content: string // HTML-stripped text
226
+ mentions: TeamsMention[] // always present; empty when no @mentions
227
+ author: { id: string; displayName: string }
228
+ messageType: string
229
+ timestamp: string
230
+ }
231
+
232
+ interface TeamsMention {
233
+ id: string // positional mention index
234
+ mri?: string // Skype MRI of the mentioned user/tag
235
+ displayName: string
236
+ }
237
+ ```
238
+
239
+ These are type-only exports (no Zod schema — the listener constructs the event
240
+ internally rather than parsing untrusted input).
241
+
212
242
  ### Zod Schemas
213
243
 
214
244
  Runtime-validated schemas are also exported for parsing API responses:
package/e2e/README.md CHANGED
@@ -171,7 +171,7 @@ When triggering manually, you can select which platform to test:
171
171
  | ------------- | -------------------------------------------------------------- |
172
172
  | `auth` | status |
173
173
  | `workspace` | list, current |
174
- | `message` | send, list, get, update, delete, thread reply, replies, search |
174
+ | `message` | send, list, get, edit, delete, thread reply, replies, search |
175
175
  | `channel` | list, list --type, info, history |
176
176
  | `user` | list, me, info |
177
177
  | `reaction` | add, list, remove |
@@ -188,7 +188,7 @@ When triggering manually, you can select which platform to test:
188
188
  | Command Group | Tests |
189
189
  | ------------- | ------------------------------------------------------ |
190
190
  | `auth` | status |
191
- | `message` | send, list, get, update, delete, thread reply, replies |
191
+ | `message` | send, list, get, edit, delete, thread reply, replies |
192
192
  | `channel` | list, info |
193
193
  | `user` | list, info |
194
194
  | `reaction` | add, remove |
@@ -228,7 +228,7 @@ When triggering manually, you can select which platform to test:
228
228
  | Command Group | Tests |
229
229
  | ------------- | ------------------------------------------------ |
230
230
  | `auth` | status |
231
- | `message` | send, list, get, update, delete, thread, replies |
231
+ | `message` | send, list, get, edit, delete, thread, replies |
232
232
  | `channel` | list, info |
233
233
  | `user` | list, info |
234
234
  | `reaction` | add, remove |
@@ -114,7 +114,7 @@ describe('DiscordBot E2E Tests', () => {
114
114
  expect(data?.id).toBe(sent!.id)
115
115
  })
116
116
 
117
- it('message update modifies message', async () => {
117
+ it('message edit modifies message', async () => {
118
118
  const testId = generateTestId()
119
119
  const sendResult = await runCLI('discordbot', [
120
120
  'message',
@@ -130,7 +130,7 @@ describe('DiscordBot E2E Tests', () => {
130
130
 
131
131
  const result = await runCLI('discordbot', [
132
132
  'message',
133
- 'update',
133
+ 'edit',
134
134
  DISCORDBOT_TEST_CHANNEL_ID,
135
135
  sent!.id,
136
136
  `Updated ${testId}`,
@@ -95,14 +95,14 @@ describe('Slack E2E Tests', () => {
95
95
  expect(data?.text).toContain(testId)
96
96
  })
97
97
 
98
- it('message update modifies message', async () => {
98
+ it('message edit modifies message', async () => {
99
99
  const testId = generateTestId()
100
100
  const { id: ts } = await createTestMessage('slack', SLACK_TEST_CHANNEL_ID, `Original ${testId}`)
101
101
  testMessages.push(ts)
102
102
 
103
103
  await waitForRateLimit()
104
104
 
105
- const result = await runCLI('slack', ['message', 'update', SLACK_TEST_CHANNEL_ID, ts, `Updated ${testId}`])
105
+ const result = await runCLI('slack', ['message', 'edit', SLACK_TEST_CHANNEL_ID, ts, `Updated ${testId}`])
106
106
  expect(result.exitCode).toBe(0)
107
107
 
108
108
  await waitForRateLimit()
@@ -104,7 +104,7 @@ describe('SlackBot E2E Tests', () => {
104
104
  expect(data?.ts).toBe(sent!.ts)
105
105
  })
106
106
 
107
- it('message update modifies message', async () => {
107
+ it('message edit modifies message', async () => {
108
108
  const testId = generateTestId()
109
109
  const sendResult = await runCLI('slackbot', ['message', 'send', SLACKBOT_TEST_CHANNEL_ID, `Original ${testId}`])
110
110
  const sent = parseJSON<{ ts: string }>(sendResult.stdout)
@@ -115,7 +115,7 @@ describe('SlackBot E2E Tests', () => {
115
115
 
116
116
  const result = await runCLI('slackbot', [
117
117
  'message',
118
- 'update',
118
+ 'edit',
119
119
  SLACKBOT_TEST_CHANNEL_ID,
120
120
  sent!.ts,
121
121
  `Updated ${testId}`,
@@ -93,7 +93,7 @@ describe('Telegram Bot E2E Tests', () => {
93
93
  if (data?.message?.message_id) trackedMessageIds.push(data.message.message_id)
94
94
  })
95
95
 
96
- it('message update edits previously sent message', async () => {
96
+ it('message edit edits previously sent message', async () => {
97
97
  if (!telegramBotAvailable) return
98
98
 
99
99
  const testId = generateTestId()
@@ -111,7 +111,7 @@ describe('Telegram Bot E2E Tests', () => {
111
111
 
112
112
  const updateResult = await runCLI('telegrambot', [
113
113
  'message',
114
- 'update',
114
+ 'edit',
115
115
  TELEGRAMBOT_TEST_CHAT_ID,
116
116
  String(sent!.message.message_id),
117
117
  `Edited ${testId}`,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-messenger",
3
- "version": "2.29.0",
3
+ "version": "2.30.0",
4
4
  "description": "Multi-platform messaging CLI for AI agents (Slack, Discord, Teams, Webex, Telegram, Telegram Bot, WhatsApp, LINE, iMessage, Instagram, KakaoTalk, Channel Talk)",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-channeltalk
3
3
  description: Interact with Channel Talk using extracted desktop app or browser credentials - read chats, send messages, search messages, manage groups
4
- version: 2.29.0
4
+ version: 2.30.0
5
5
  allowed-tools: Bash(agent-channeltalk:*)
6
6
  metadata:
7
7
  openclaw:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-channeltalkbot
3
3
  description: Interact with Channel Talk workspaces using API credentials - send messages, read chats, manage groups and bots
4
- version: 2.29.0
4
+ version: 2.30.0
5
5
  allowed-tools: Bash(agent-channeltalkbot:*)
6
6
  metadata:
7
7
  openclaw:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-discord
3
3
  description: Interact with Discord servers - send messages, read channels, manage reactions
4
- version: 2.29.0
4
+ version: 2.30.0
5
5
  allowed-tools: Bash(agent-discord:*)
6
6
  metadata:
7
7
  openclaw:
@@ -193,6 +193,10 @@ agent-discord message list 1234567890123456789 --limit 50
193
193
  agent-discord message get <channel-id> <message-id>
194
194
  agent-discord message get 1234567890123456789 9876543210987654321
195
195
 
196
+ # Edit a message
197
+ agent-discord message edit <channel-id> <message-id> <content>
198
+ agent-discord message edit 1234567890123456789 9876543210987654321 "Updated text"
199
+
196
200
  # Delete a message
197
201
  agent-discord message delete <channel-id> <message-id> --force
198
202
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-discordbot
3
3
  description: Interact with Discord servers using bot tokens - send messages, read channels, manage reactions
4
- version: 2.29.0
4
+ version: 2.30.0
5
5
  allowed-tools: Bash(agent-discordbot:*)
6
6
  metadata:
7
7
  openclaw:
@@ -220,8 +220,8 @@ agent-discordbot message get <channel-id> <message-id>
220
220
  agent-discordbot message replies <channel-id> <message-id>
221
221
  agent-discordbot message replies 1234567890123456789 9876543210987654321 --limit 50
222
222
 
223
- # Update a message (bot's own messages only)
224
- agent-discordbot message update <channel-id> <message-id> <new-content>
223
+ # Edit a message (bot's own messages only)
224
+ agent-discordbot message edit <channel-id> <message-id> <new-content>
225
225
 
226
226
  # Delete a message (bot's own messages only)
227
227
  agent-discordbot message delete <channel-id> <message-id> --force
@@ -107,8 +107,8 @@ sleep 5
107
107
  agent-discordbot reaction remove "$CHANNEL" "$MSG_ID" hourglass
108
108
  agent-discordbot reaction add "$CHANNEL" "$MSG_ID" white_check_mark
109
109
 
110
- # Update message with result
111
- agent-discordbot message update "$CHANNEL" "$MSG_ID" "Request processed successfully!"
110
+ # Edit message with result
111
+ agent-discordbot message edit "$CHANNEL" "$MSG_ID" "Request processed successfully!"
112
112
  ```
113
113
 
114
114
  **When to use**: Visual status tracking, acknowledgments, workflow states.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-imessage
3
3
  description: Interact with iMessage on a Mac via the imsg tool - send messages, read chats, watch for new messages
4
- version: 2.29.0
4
+ version: 2.30.0
5
5
  allowed-tools: Bash(agent-imessage:*)
6
6
  metadata:
7
7
  openclaw:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-instagram
3
3
  description: Interact with Instagram DMs - send messages, read conversations, manage accounts
4
- version: 2.29.0
4
+ version: 2.30.0
5
5
  allowed-tools: Bash(agent-instagram:*)
6
6
  metadata:
7
7
  openclaw:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-kakaotalk
3
3
  description: Interact with KakaoTalk - send messages, read chats, manage conversations
4
- version: 2.29.0
4
+ version: 2.30.0
5
5
  allowed-tools: Bash(agent-kakaotalk:*)
6
6
  metadata:
7
7
  openclaw:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-line
3
3
  description: Interact with LINE - send messages, read chats, manage conversations
4
- version: 2.29.0
4
+ version: 2.30.0
5
5
  allowed-tools: Bash(agent-line:*)
6
6
  metadata:
7
7
  openclaw:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-slack
3
3
  description: Interact with Slack workspaces - send messages, read channels, manage reactions
4
- version: 2.29.0
4
+ version: 2.30.0
5
5
  allowed-tools: Bash(agent-slack:*)
6
6
  metadata:
7
7
  openclaw:
@@ -217,8 +217,8 @@ agent-slack message replies general 1234567890.123456 --limit 50
217
217
  agent-slack message replies general 1234567890.123456 --oldest 1234567890.000000
218
218
  agent-slack message replies general 1234567890.123456 --cursor <next_cursor>
219
219
 
220
- # Update a message
221
- agent-slack message update <channel> <ts> <new-text>
220
+ # Edit a message
221
+ agent-slack message edit <channel> <ts> <new-text>
222
222
 
223
223
  # Delete a message
224
224
  agent-slack message delete <channel> <ts> --force
@@ -287,8 +287,8 @@ sleep 5
287
287
  agent-slack reaction remove "$CHANNEL" "$MSG_TS" hourglass_flowing_sand
288
288
  agent-slack reaction add "$CHANNEL" "$MSG_TS" white_check_mark
289
289
 
290
- # Update message
291
- agent-slack message update "$CHANNEL" "$MSG_TS" "✅ Deployed v2.1.0 to production successfully!"
290
+ # Edit message
291
+ agent-slack message edit "$CHANNEL" "$MSG_TS" "✅ Deployed v2.1.0 to production successfully!"
292
292
  ```
293
293
 
294
294
  **When to use**: Visual status tracking, workflow states, quick acknowledgments.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-slackbot
3
3
  description: Interact with Slack workspaces using bot tokens - send messages, read channels, manage reactions
4
- version: 2.29.0
4
+ version: 2.30.0
5
5
  allowed-tools: Bash(agent-slackbot:*)
6
6
  metadata:
7
7
  openclaw:
@@ -206,8 +206,8 @@ agent-slackbot message get <channel> <ts>
206
206
  agent-slackbot message replies <channel> <thread_ts>
207
207
  agent-slackbot message replies C0ACZKTDDC0 1234567890.123456 --limit 50
208
208
 
209
- # Update a message (bot's own messages only)
210
- agent-slackbot message update <channel> <ts> <new-text>
209
+ # Edit a message (bot's own messages only)
210
+ agent-slackbot message edit <channel> <ts> <new-text>
211
211
 
212
212
  # Delete a message (bot's own messages only)
213
213
  agent-slackbot message delete <channel> <ts> --force
@@ -47,8 +47,8 @@ sleep 2
47
47
  agent-slackbot message send "$CHANNEL" "Deploying to production..." --thread "$THREAD_TS"
48
48
  sleep 2
49
49
 
50
- # Update parent with final status
51
- agent-slackbot message update "$CHANNEL" "$THREAD_TS" "Deployment complete!"
50
+ # Edit parent with final status
51
+ agent-slackbot message edit "$CHANNEL" "$THREAD_TS" "Deployment complete!"
52
52
 
53
53
  # Add reaction
54
54
  agent-slackbot reaction add "$CHANNEL" "$THREAD_TS" white_check_mark
@@ -110,8 +110,8 @@ sleep 5
110
110
  agent-slackbot reaction remove "$CHANNEL" "$MSG_TS" hourglass_flowing_sand
111
111
  agent-slackbot reaction add "$CHANNEL" "$MSG_TS" white_check_mark
112
112
 
113
- # Update message with result
114
- agent-slackbot message update "$CHANNEL" "$MSG_TS" "Request processed successfully!"
113
+ # Edit message with result
114
+ agent-slackbot message edit "$CHANNEL" "$MSG_TS" "Request processed successfully!"
115
115
  ```
116
116
 
117
117
  **When to use**: Visual status tracking, acknowledgments, workflow states.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-teams
3
3
  description: Interact with Microsoft Teams - send messages, read channels, manage reactions
4
- version: 2.29.0
4
+ version: 2.30.0
5
5
  allowed-tools: Bash(agent-teams:*)
6
6
  metadata:
7
7
  openclaw:
@@ -249,10 +249,15 @@ agent-teams chat history <chat-id> --limit 100
249
249
 
250
250
  # Send a message to a chat
251
251
  agent-teams chat send <chat-id> "Hello"
252
+
253
+ # Edit one of your own chat messages
254
+ agent-teams chat edit <chat-id> <message-id> "Updated text"
252
255
  ```
253
256
 
254
257
  Chat IDs look like `19:guid1_guid2@unq.gbl.spaces` (1:1) or `19:guid@thread.tacv2` (group). Get them from `chat list`. The `48:notes` chat (`type: self`) is your personal "to me" notes thread.
255
258
 
259
+ `chat edit` only works on your own messages, and only for chats — Teams channel messages are not editable through this API.
260
+
256
261
  ### Team Commands
257
262
 
258
263
  ```bash
@@ -473,13 +478,36 @@ import { TeamsClient, TeamsListener } from 'agent-messenger/teams'
473
478
  const client = await new TeamsClient().login()
474
479
  const listener = new TeamsListener(client)
475
480
 
476
- listener.on('message', (message) => {
481
+ listener.on('message', async (message) => {
477
482
  console.log(`New message in ${message.chatId}: ${message.content}`)
483
+
484
+ // Channel messages carry team/channel context and parsed @mentions.
485
+ if (message.conversationType === 'channel') {
486
+ for (const mention of message.mentions) {
487
+ console.log(`Mentioned: ${mention.displayName} (${mention.mri})`)
488
+ }
489
+ await client.sendMessage(message.teamId!, message.channelId!, 'On it 👍')
490
+ }
478
491
  })
479
492
 
480
493
  await listener.start()
481
494
  ```
482
495
 
496
+ Each `message` is a `TeamsRealtimeMessage`:
497
+
498
+ | Field | Type | Notes |
499
+ | --- | --- | --- |
500
+ | `id` | `string` | Message id |
501
+ | `chatId` | `string` | Conversation id (unchanged) |
502
+ | `conversationType` | `'chat' \| 'channel'` | `'channel'` for team-channel messages |
503
+ | `teamId` | `string?` | Set for channel messages (use with `sendMessage`) |
504
+ | `channelId` | `string?` | Set for channel messages (use with `sendMessage`) |
505
+ | `content` | `string` | HTML-stripped text (unchanged) |
506
+ | `mentions` | `TeamsMention[]` | Always present; empty when no `@mentions`. Each is `{ id, mri?, displayName }` |
507
+ | `author` | `{ id, displayName }` | Sender (unchanged) |
508
+ | `messageType` | `string` | e.g. `Text`, `RichText/Html` |
509
+ | `timestamp` | `string` | ISO timestamp |
510
+
483
511
  ### Full API Reference
484
512
 
485
513
  See the [Teams SDK documentation](https://agent-messenger.dev/docs/sdk/teams) for complete method signatures, types, schemas, and examples.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-telegram
3
3
  description: Interact with Telegram through TDLib - authenticate, inspect chats, and send messages
4
- version: 2.29.0
4
+ version: 2.30.0
5
5
  allowed-tools: Bash(agent-telegram:*)
6
6
  ---
7
7
 
@@ -117,6 +117,9 @@ agent-telegram chat get @durov
117
117
  # List recent messages
118
118
  agent-telegram message list @durov --limit 10
119
119
 
120
+ # Edit one of your own messages (within 48h)
121
+ agent-telegram message edit @durov <message-id> "Updated text"
122
+
120
123
  # Logout
121
124
  agent-telegram auth logout
122
125
  ```
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-telegrambot
3
3
  description: Interact with Telegram using bot tokens - send messages, read chats, manage reactions
4
- version: 2.29.0
4
+ version: 2.30.0
5
5
  allowed-tools: Bash(agent-telegrambot:*)
6
6
  metadata:
7
7
  openclaw:
@@ -172,7 +172,7 @@ agent-telegrambot message send @username "Silent message" --silent
172
172
  agent-telegrambot message send <chat> "Topic message" --thread-id 5
173
173
 
174
174
  # Edit a message (bot's own messages only)
175
- agent-telegrambot message update <chat> <message-id> <new-text>
175
+ agent-telegrambot message edit <chat> <message-id> <new-text>
176
176
 
177
177
  # Delete a message
178
178
  agent-telegrambot message delete <chat> <message-id> --force
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-webex
3
3
  description: Interact with Cisco Webex - send messages, read spaces, manage memberships
4
- version: 2.29.0
4
+ version: 2.30.0
5
5
  allowed-tools: Bash(agent-webex:*)
6
6
  metadata:
7
7
  openclaw:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-webexbot
3
3
  description: Interact with Cisco Webex using bot tokens - send messages, reply in threads, upload and download files, look up people, read spaces, manage memberships, stream real-time events
4
- version: 2.29.0
4
+ version: 2.30.0
5
5
  allowed-tools: Bash(agent-webexbot:*)
6
6
  metadata:
7
7
  openclaw:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-wechatbot
3
3
  description: Interact with WeChat Official Account using API credentials - send messages, manage templates, list followers
4
- version: 2.29.0
4
+ version: 2.30.0
5
5
  allowed-tools: Bash(agent-wechatbot:*)
6
6
  metadata:
7
7
  openclaw:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-whatsapp
3
3
  description: Interact with WhatsApp - send messages, read chats, manage conversations
4
- version: 2.29.0
4
+ version: 2.30.0
5
5
  allowed-tools: Bash(agent-whatsapp:*)
6
6
  metadata:
7
7
  openclaw:
@@ -251,6 +251,10 @@ agent-whatsapp message send +1234567890 "Hello!"
251
251
  agent-whatsapp message send 123456789-123345@g.us "Hello team!"
252
252
  agent-whatsapp message send +1234567890 "Hello!" --account <id>
253
253
 
254
+ # Edit one of your own messages (within ~15 minutes)
255
+ agent-whatsapp message edit <chat> <message-id> <text>
256
+ agent-whatsapp message edit +1234567890 ABC123DEF456 "Updated text"
257
+
254
258
  # React to a message
255
259
  agent-whatsapp message react <chat> <message-id> <emoji>
256
260
  agent-whatsapp message react +1234567890 ABC123DEF456 "👍"
@@ -342,6 +346,26 @@ agent-whatsapp message list +1234567890 --limit 1
342
346
  agent-whatsapp message react +1234567890 <message-id> "👍"
343
347
  ```
344
348
 
349
+ ### Edit one of your own messages
350
+
351
+ ```bash
352
+ # Get the message ID of a message you sent
353
+ agent-whatsapp message list +1234567890 --limit 5
354
+
355
+ # Edit it (only your own messages, within ~15 minutes)
356
+ agent-whatsapp message edit +1234567890 <message-id> "Updated text"
357
+ ```
358
+
359
+ The SDK exposes the same capability via `WhatsAppClient.editMessage`:
360
+
361
+ ```typescript
362
+ import { WhatsAppClient } from 'agent-messenger/whatsapp'
363
+
364
+ const client = await new WhatsAppClient().login()
365
+ const sent = await client.sendMessage('+1234567890', 'Deploying…')
366
+ await client.editMessage('+1234567890', sent.id, 'Deployed ✅')
367
+ ```
368
+
345
369
  ## Error Handling
346
370
 
347
371
  All commands return consistent error format:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agent-whatsappbot
3
3
  description: Interact with WhatsApp using Cloud API credentials - send messages, manage templates
4
- version: 2.29.0
4
+ version: 2.30.0
5
5
  allowed-tools: Bash(agent-whatsappbot:*)
6
6
  metadata:
7
7
  openclaw: