agent-messenger 2.6.3 → 2.7.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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-messenger",
3
- "version": "2.6.3",
3
+ "version": "2.7.0",
4
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": "agent-messenger",
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-messenger",
3
- "version": "2.6.3",
3
+ "version": "2.7.0",
4
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",
@@ -1 +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;AAcrF,qBAAa,WAAW;IACtB,OAAO,CAAC,KAAK,CAAsB;IACnC,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,OAAO,CAA0C;IACzD,OAAO,CAAC,oBAAoB,CAAY;IACxC,OAAO,CAAC,UAAU,CAAsC;IAElD,KAAK,CAAC,WAAW,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAkC3D,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;IAQxB,OAAO,KAAK,cAAc,GAEzB;IAED,OAAO,KAAK,WAAW,GAGtB;IAED,OAAO,KAAK,eAAe,GAM1B;IAED,OAAO,CAAC,cAAc;YAIR,eAAe;YAkBf,iBAAiB;YAwBjB,oBAAoB;YA0BpB,mBAAmB;IA0B3B,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;YAcV,qBAAqB;IAc7B,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAiBjF,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAYpD,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB/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;IA2BlB,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,iBAAiB,CAAC,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAUzE,eAAe,CACnB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GACzB,OAAO,CAAC,eAAe,EAAE,CAAC;CAU9B"}
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;AAerF,qBAAa,WAAW;IACtB,OAAO,CAAC,KAAK,CAAsB;IACnC,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,OAAO,CAA0C;IACzD,OAAO,CAAC,oBAAoB,CAAY;IACxC,OAAO,CAAC,UAAU,CAAsC;IAElD,KAAK,CAAC,WAAW,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAkC3D,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;IAQxB,OAAO,KAAK,cAAc,GAEzB;IAED,OAAO,KAAK,WAAW,GAGtB;IAED,OAAO,KAAK,eAAe,GAM1B;IAED,OAAO,CAAC,cAAc;YAIR,eAAe;YAkBf,iBAAiB;YAwBjB,oBAAoB;YAgCpB,mBAAmB;IA0B3B,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;YAcV,qBAAqB;IAc7B,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAiBjF,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAYpD,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB/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;IA2BlB,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,iBAAiB,CAAC,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAUzE,eAAe,CACnB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GACzB,OAAO,CAAC,eAAe,EAAE,CAAC;CAU9B"}
@@ -1,6 +1,7 @@
1
1
  import { WebexError } from './types.js';
2
2
  import { WebexCredentialManager } from './credential-manager.js';
3
3
  import { WebexEncryptionService } from './encryption.js';
4
+ import { markdownToHtml, stripMarkdown } from './markdown-to-html.js';
4
5
  const BASE_URL = 'https://webexapis.com/v1';
5
6
  const MAX_RETRIES = 3;
6
7
  const BASE_BACKOFF_MS = 100;
@@ -174,7 +175,7 @@ export class WebexClient {
174
175
  return response.json();
175
176
  }
176
177
  async activityToMessage(a, roomId) {
177
- let text = a.object?.content ?? a.object?.displayName;
178
+ let text = a.object?.displayName ?? a.object?.content;
178
179
  if (this.encryption && text?.startsWith('eyJ')) {
179
180
  const keyUrl = a.encryptionKeyUrl ?? a.object?.encryptionKeyUrl;
180
181
  if (keyUrl) {
@@ -195,20 +196,27 @@ export class WebexClient {
195
196
  };
196
197
  }
197
198
  async buildEncryptedObject(convUuid, text, options) {
198
- const buildObject = (content) => options?.markdown
199
- ? { objectType: 'comment', displayName: content, content, markdown: content }
200
- : { objectType: 'comment', displayName: content, content };
199
+ const displayName = options?.markdown ? stripMarkdown(text) : text;
200
+ const content = options?.markdown ? markdownToHtml(text) : text;
201
201
  if (this.encryption) {
202
202
  const conv = await this.internalRequest(`/conversations/${convUuid}?activitiesLimit=0&participantsLimit=0`);
203
203
  const keyUri = conv.defaultActivityEncryptionKeyUrl;
204
204
  if (keyUri) {
205
- const encrypted = await this.encryption.encryptText(keyUri, text);
206
- if (encrypted) {
207
- return { object: buildObject(encrypted), encryptionKeyUrl: keyUri };
205
+ const encryptedDisplayName = await this.encryption.encryptText(keyUri, displayName);
206
+ const encryptedContent = await this.encryption.encryptText(keyUri, content);
207
+ if (encryptedDisplayName && encryptedContent) {
208
+ return {
209
+ object: {
210
+ objectType: 'comment',
211
+ displayName: encryptedDisplayName,
212
+ content: encryptedContent,
213
+ },
214
+ encryptionKeyUrl: keyUri,
215
+ };
208
216
  }
209
217
  }
210
218
  }
211
- return { object: buildObject(text) };
219
+ return { object: { objectType: 'comment', displayName, content } };
212
220
  }
213
221
  async sendMessageInternal(roomId, text, options) {
214
222
  const convUuid = this.decodeConvUuid(roomId);
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/platforms/webex/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/platforms/webex/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function markdownToHtml(markdown: string): string;
2
+ export declare function stripMarkdown(markdown: string): string;
3
+ //# sourceMappingURL=markdown-to-html.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-to-html.d.ts","sourceRoot":"","sources":["../../../../src/platforms/webex/markdown-to-html.ts"],"names":[],"mappings":"AAGA,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAgGvD;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAgBtD"}
@@ -0,0 +1,161 @@
1
+ const BLOCK_PLACEHOLDER_PREFIX = '\u0000BLOCK';
2
+ const INLINE_PLACEHOLDER_PREFIX = '\u0000INLINE';
3
+ export function markdownToHtml(markdown) {
4
+ if (markdown.length === 0) {
5
+ return '';
6
+ }
7
+ const normalized = markdown.replace(/\r\n?/g, '\n');
8
+ if (normalized.trim().length === 0) {
9
+ return normalized;
10
+ }
11
+ const { text, blocks } = extractCodeBlocks(normalized);
12
+ const lines = text.split('\n');
13
+ const output = [];
14
+ let paragraph = [];
15
+ const flushParagraph = () => {
16
+ if (paragraph.length === 0) {
17
+ return;
18
+ }
19
+ output.push(processInline(paragraph.join('\n')).replace(/\n/g, '<br/>'));
20
+ paragraph = [];
21
+ };
22
+ for (let index = 0; index < lines.length;) {
23
+ const line = lines[index];
24
+ const trimmed = line.trim();
25
+ if (trimmed.length === 0) {
26
+ flushParagraph();
27
+ index++;
28
+ continue;
29
+ }
30
+ if (isBlockPlaceholder(trimmed)) {
31
+ flushParagraph();
32
+ output.push(trimmed);
33
+ index++;
34
+ continue;
35
+ }
36
+ const headingMatch = line.match(/^(#{1,6})\s+(.*)$/);
37
+ if (headingMatch) {
38
+ flushParagraph();
39
+ output.push(`<h${headingMatch[1].length}>${processInline(headingMatch[2])}</h${headingMatch[1].length}>`);
40
+ index++;
41
+ continue;
42
+ }
43
+ if (/^---$/.test(trimmed)) {
44
+ flushParagraph();
45
+ output.push('<hr>');
46
+ index++;
47
+ continue;
48
+ }
49
+ if (/^>\s?/.test(line)) {
50
+ flushParagraph();
51
+ const quoteLines = [];
52
+ while (index < lines.length && /^>\s?/.test(lines[index])) {
53
+ quoteLines.push(lines[index].replace(/^>\s?/, ''));
54
+ index++;
55
+ }
56
+ output.push(`<blockquote>${processInline(quoteLines.join('\n')).replace(/\n/g, '<br/>')}</blockquote>`);
57
+ continue;
58
+ }
59
+ if (/^-\s+/.test(line)) {
60
+ flushParagraph();
61
+ const items = [];
62
+ while (index < lines.length && /^-\s+/.test(lines[index])) {
63
+ items.push(`<li>${processInline(lines[index].replace(/^-\s+/, ''))}</li>`);
64
+ index++;
65
+ }
66
+ output.push(`<ul>${items.join('')}</ul>`);
67
+ continue;
68
+ }
69
+ if (/^\d+\.\s+/.test(line)) {
70
+ flushParagraph();
71
+ const items = [];
72
+ while (index < lines.length && /^\d+\.\s+/.test(lines[index])) {
73
+ items.push(`<li>${processInline(lines[index].replace(/^\d+\.\s+/, ''))}</li>`);
74
+ index++;
75
+ }
76
+ output.push(`<ol>${items.join('')}</ol>`);
77
+ continue;
78
+ }
79
+ paragraph.push(line);
80
+ index++;
81
+ }
82
+ flushParagraph();
83
+ return restorePlaceholders(output.join('<br/><br/>'), blocks);
84
+ }
85
+ export function stripMarkdown(markdown) {
86
+ return markdown
87
+ .replace(/\r\n?/g, '\n')
88
+ .replace(/```([a-zA-Z0-9_-]+)?\n?([\s\S]*?)```/g, (_, _language, code) => {
89
+ return code.replace(/\n$/, '');
90
+ })
91
+ .replace(/^---$/gm, '')
92
+ .replace(/^(#{1,6})\s+/gm, '')
93
+ .replace(/^>\s?/gm, '')
94
+ .replace(/^-\s+/gm, '')
95
+ .replace(/^\d+\.\s+/gm, '')
96
+ .replace(/\[([^\]]+)\]\(([^)\n]+)\)/g, '$1')
97
+ .replace(/`([^`\n]+)`/g, '$1')
98
+ .replace(/\*\*\*([^*\n]+)\*\*\*/g, '$1')
99
+ .replace(/\*\*([^*\n]+)\*\*/g, '$1')
100
+ .replace(/(^|[^\w])_([^_\n]+)_(?=[^\w]|$)/g, '$1$2');
101
+ }
102
+ function processInline(markdown) {
103
+ const placeholders = [];
104
+ let text = markdown;
105
+ text = text.replace(/`([^`\n]+)`/g, (_, code) => {
106
+ return createInlinePlaceholder(placeholders, `<code>${escapeHtml(code)}</code>`);
107
+ });
108
+ text = text.replace(/\[([^\]]+)\]\(([^)\n]+)\)/g, (_, label, url) => {
109
+ if (!isSafeUrl(url)) {
110
+ return processInline(label);
111
+ }
112
+ return createInlinePlaceholder(placeholders, `<a href="${escapeHtml(url)}">${processInline(label)}</a>`);
113
+ });
114
+ text = escapeHtml(text);
115
+ text = text.replace(/\*\*\*([^*\n]+)\*\*\*/g, '<strong><em>$1</em></strong>');
116
+ text = text.replace(/\*\*([^*\n]+)\*\*/g, '<strong>$1</strong>');
117
+ text = text.replace(/(^|[^\w])_([^_\n]+)_(?=[^\w]|$)/g, '$1<em>$2</em>');
118
+ return restorePlaceholders(text, placeholders);
119
+ }
120
+ function extractCodeBlocks(markdown) {
121
+ const blocks = [];
122
+ const text = markdown.replace(/```([a-zA-Z0-9_-]+)?\n([\s\S]*?)\n```/g, (_, language, code) => {
123
+ const className = language ? ` class="language-${escapeHtml(language)}"` : '';
124
+ return createBlockPlaceholder(blocks, `<pre><code${className}>${escapeHtml(code)}</code></pre>`);
125
+ });
126
+ return { text, blocks };
127
+ }
128
+ function createBlockPlaceholder(blocks, html) {
129
+ const token = `${BLOCK_PLACEHOLDER_PREFIX}${blocks.length}\u0000`;
130
+ blocks.push(html);
131
+ return token;
132
+ }
133
+ function createInlinePlaceholder(placeholders, html) {
134
+ const token = `${INLINE_PLACEHOLDER_PREFIX}${placeholders.length}\u0000`;
135
+ placeholders.push(html);
136
+ return token;
137
+ }
138
+ function isBlockPlaceholder(value) {
139
+ return new RegExp(`^${BLOCK_PLACEHOLDER_PREFIX}\\d+\\u0000$`).test(value);
140
+ }
141
+ function restorePlaceholders(text, values) {
142
+ let restored = text;
143
+ for (const [index, value] of values.entries()) {
144
+ restored = restored.replaceAll(`${BLOCK_PLACEHOLDER_PREFIX}${index}\u0000`, value);
145
+ restored = restored.replaceAll(`${INLINE_PLACEHOLDER_PREFIX}${index}\u0000`, value);
146
+ }
147
+ return restored;
148
+ }
149
+ const SAFE_URL_PATTERN = /^(https?:|mailto:|\/|#)/i;
150
+ function isSafeUrl(url) {
151
+ return SAFE_URL_PATTERN.test(url.trim());
152
+ }
153
+ function escapeHtml(value) {
154
+ return value
155
+ .replaceAll('&', '&amp;')
156
+ .replaceAll('<', '&lt;')
157
+ .replaceAll('>', '&gt;')
158
+ .replaceAll('"', '&quot;')
159
+ .replaceAll("'", '&#39;');
160
+ }
161
+ //# sourceMappingURL=markdown-to-html.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-to-html.js","sourceRoot":"","sources":["../../../../src/platforms/webex/markdown-to-html.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-messenger",
3
- "version": "2.6.3",
3
+ "version": "2.7.0",
4
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",
@@ -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.6.3
4
+ version: 2.7.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.6.3
4
+ version: 2.7.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.6.3
4
+ version: 2.7.0
5
5
  allowed-tools: Bash(agent-discord:*)
6
6
  metadata:
7
7
  openclaw:
@@ -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.6.3
4
+ version: 2.7.0
5
5
  allowed-tools: Bash(agent-discordbot:*)
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.6.3
4
+ version: 2.7.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.6.3
4
+ version: 2.7.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.6.3
4
+ version: 2.7.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.6.3
4
+ version: 2.7.0
5
5
  allowed-tools: Bash(agent-slack:*)
6
6
  metadata:
7
7
  openclaw:
@@ -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.6.3
4
+ version: 2.7.0
5
5
  allowed-tools: Bash(agent-slackbot:*)
6
6
  metadata:
7
7
  openclaw:
@@ -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.6.3
4
+ version: 2.7.0
5
5
  allowed-tools: Bash(agent-teams:*)
6
6
  metadata:
7
7
  openclaw:
@@ -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.6.3
4
+ version: 2.7.0
5
5
  allowed-tools: Bash(agent-telegram:*)
6
6
  ---
7
7
 
@@ -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.6.3
4
+ version: 2.7.0
5
5
  allowed-tools: Bash(agent-webex:*)
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.6.3
4
+ version: 2.7.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.6.3
4
+ version: 2.7.0
5
5
  allowed-tools: Bash(agent-whatsapp:*)
6
6
  metadata:
7
7
  openclaw:
@@ -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.6.3
4
+ version: 2.7.0
5
5
  allowed-tools: Bash(agent-whatsappbot:*)
6
6
  metadata:
7
7
  openclaw:
@@ -483,6 +483,29 @@ describe('WebexClient', () => {
483
483
  expect(message.personEmail).toBe('test@example.com')
484
484
  expect(message.created).toBe('2026-01-01T00:00:00.000Z')
485
485
  })
486
+
487
+ test('markdown option converts content to HTML and strips displayName', async () => {
488
+ mockResponse(mockActivity('bold text'))
489
+
490
+ const client = await createExtractedClient()
491
+ await client.sendMessage(TEST_ROOM_ID, '**bold text**', { markdown: true })
492
+
493
+ const body = JSON.parse(fetchCalls[0].options?.body as string)
494
+ expect(body.object.displayName).toBe('bold text')
495
+ expect(body.object.content).toBe('<strong>bold text</strong>')
496
+ expect(body.object.markdown).toBeUndefined()
497
+ })
498
+
499
+ test('markdown option does not affect plain text messages', async () => {
500
+ mockResponse(mockActivity('Hello world'))
501
+
502
+ const client = await createExtractedClient()
503
+ await client.sendMessage(TEST_ROOM_ID, 'Hello world')
504
+
505
+ const body = JSON.parse(fetchCalls[0].options?.body as string)
506
+ expect(body.object.displayName).toBe('Hello world')
507
+ expect(body.object.content).toBe('Hello world')
508
+ })
486
509
  })
487
510
 
488
511
  describe('listMessages', () => {
@@ -637,6 +660,18 @@ describe('WebexClient', () => {
637
660
  const body = JSON.parse(fetchCalls[0].options?.body as string)
638
661
  expect(body.target.id).toBe(TEST_CONV_UUID)
639
662
  })
663
+
664
+ test('markdown option converts content to HTML and strips displayName', async () => {
665
+ mockResponse(mockActivity('italic text'))
666
+
667
+ const client = await createExtractedClient()
668
+ await client.editMessage('activity-123', TEST_ROOM_ID, '_italic text_', { markdown: true })
669
+
670
+ const body = JSON.parse(fetchCalls[0].options?.body as string)
671
+ expect(body.object.displayName).toBe('italic text')
672
+ expect(body.object.content).toBe('<em>italic text</em>')
673
+ expect(body.object.markdown).toBeUndefined()
674
+ })
640
675
  })
641
676
 
642
677
  describe('sendDirectMessage', () => {
@@ -2,6 +2,7 @@ import type { WebexMembership, WebexMessage, WebexPerson, WebexSpace } from './t
2
2
  import { WebexError } from './types'
3
3
  import { WebexCredentialManager } from './credential-manager'
4
4
  import { WebexEncryptionService } from './encryption'
5
+ import { markdownToHtml, stripMarkdown } from './markdown-to-html'
5
6
 
6
7
  const BASE_URL = 'https://webexapis.com/v1'
7
8
  const MAX_RETRIES = 3
@@ -237,7 +238,7 @@ export class WebexClient {
237
238
  }
238
239
 
239
240
  private async activityToMessage(a: InternalActivity, roomId: string): Promise<WebexMessage> {
240
- let text = a.object?.content ?? a.object?.displayName
241
+ let text = a.object?.displayName ?? a.object?.content
241
242
 
242
243
  if (this.encryption && text?.startsWith('eyJ')) {
243
244
  const keyUrl = a.encryptionKeyUrl ?? a.object?.encryptionKeyUrl
@@ -265,10 +266,8 @@ export class WebexClient {
265
266
  text: string,
266
267
  options?: { markdown?: boolean },
267
268
  ): Promise<{ object: Record<string, string>; encryptionKeyUrl?: string }> {
268
- const buildObject = (content: string): Record<string, string> =>
269
- options?.markdown
270
- ? { objectType: 'comment', displayName: content, content, markdown: content }
271
- : { objectType: 'comment', displayName: content, content }
269
+ const displayName = options?.markdown ? stripMarkdown(text) : text
270
+ const content = options?.markdown ? markdownToHtml(text) : text
272
271
 
273
272
  if (this.encryption) {
274
273
  const conv = await this.internalRequest<InternalConversation>(
@@ -276,14 +275,22 @@ export class WebexClient {
276
275
  )
277
276
  const keyUri = conv.defaultActivityEncryptionKeyUrl
278
277
  if (keyUri) {
279
- const encrypted = await this.encryption.encryptText(keyUri, text)
280
- if (encrypted) {
281
- return { object: buildObject(encrypted), encryptionKeyUrl: keyUri }
278
+ const encryptedDisplayName = await this.encryption.encryptText(keyUri, displayName)
279
+ const encryptedContent = await this.encryption.encryptText(keyUri, content)
280
+ if (encryptedDisplayName && encryptedContent) {
281
+ return {
282
+ object: {
283
+ objectType: 'comment',
284
+ displayName: encryptedDisplayName,
285
+ content: encryptedContent,
286
+ },
287
+ encryptionKeyUrl: keyUri,
288
+ }
282
289
  }
283
290
  }
284
291
  }
285
292
 
286
- return { object: buildObject(text) }
293
+ return { object: { objectType: 'comment', displayName, content } }
287
294
  }
288
295
 
289
296
  private async sendMessageInternal(
@@ -0,0 +1,153 @@
1
+ import { describe, expect, test } from 'bun:test'
2
+
3
+ import { markdownToHtml, stripMarkdown } from './markdown-to-html'
4
+
5
+ describe('markdownToHtml', () => {
6
+ test('converts bold text', () => {
7
+ expect(markdownToHtml('**bold**')).toBe('<strong>bold</strong>')
8
+ })
9
+
10
+ test('converts italic text', () => {
11
+ expect(markdownToHtml('_italic_')).toBe('<em>italic</em>')
12
+ })
13
+
14
+ test('does not italicize mid-word underscores', () => {
15
+ expect(markdownToHtml('some_variable_name')).toBe('some_variable_name')
16
+ })
17
+
18
+ test('converts bold and italic text', () => {
19
+ expect(markdownToHtml('***both***')).toBe('<strong><em>both</em></strong>')
20
+ })
21
+
22
+ test('converts inline code', () => {
23
+ expect(markdownToHtml('Use `code` here')).toBe('Use <code>code</code> here')
24
+ })
25
+
26
+ test('converts code blocks with language', () => {
27
+ expect(markdownToHtml('```ts\nconst x = 1 < 2\n```')).toBe(
28
+ '<pre><code class="language-ts">const x = 1 &lt; 2</code></pre>',
29
+ )
30
+ })
31
+
32
+ test('converts code blocks without language', () => {
33
+ expect(markdownToHtml('```\nconst x = 1 & 2\n```')).toBe(
34
+ '<pre><code>const x = 1 &amp; 2</code></pre>',
35
+ )
36
+ })
37
+
38
+ test('does not process markdown inside code blocks', () => {
39
+ expect(markdownToHtml('```\n**bold** _italic_\n```')).toBe(
40
+ '<pre><code>**bold** _italic_</code></pre>',
41
+ )
42
+ })
43
+
44
+ test('converts links', () => {
45
+ expect(markdownToHtml('[Webex](https://example.com?a=1&b=2)')).toBe(
46
+ '<a href="https://example.com?a=1&amp;b=2">Webex</a>',
47
+ )
48
+ })
49
+
50
+ test('strips unsafe javascript: URLs to plain text', () => {
51
+ expect(markdownToHtml('[click](javascript:void)')).toBe('click')
52
+ })
53
+
54
+ test('strips unsafe data: URLs to plain text', () => {
55
+ expect(markdownToHtml('[x](data:text/html,payload)')).toBe('x')
56
+ })
57
+
58
+ test('allows mailto: links', () => {
59
+ expect(markdownToHtml('[email](mailto:a@b.com)')).toBe(
60
+ '<a href="mailto:a@b.com">email</a>',
61
+ )
62
+ })
63
+
64
+ test('escapes quotes in URLs to prevent attribute breakout', () => {
65
+ expect(markdownToHtml('[x](https://a.com?q="test")')).toBe(
66
+ '<a href="https://a.com?q=&quot;test&quot;">x</a>',
67
+ )
68
+ })
69
+
70
+ test('converts unordered lists', () => {
71
+ expect(markdownToHtml('- one\n- two')).toBe('<ul><li>one</li><li>two</li></ul>')
72
+ })
73
+
74
+ test('converts ordered lists', () => {
75
+ expect(markdownToHtml('1. one\n2. two')).toBe('<ol><li>one</li><li>two</li></ol>')
76
+ })
77
+
78
+ test('converts blockquotes', () => {
79
+ expect(markdownToHtml('> one\n> two')).toBe('<blockquote>one<br/>two</blockquote>')
80
+ })
81
+
82
+ test('converts headings', () => {
83
+ expect(markdownToHtml('# one\n###### six')).toBe('<h1>one</h1><br/><br/><h6>six</h6>')
84
+ })
85
+
86
+ test('converts horizontal rules', () => {
87
+ expect(markdownToHtml('before\n---\nafter')).toBe('before<br/><br/><hr><br/><br/>after')
88
+ })
89
+
90
+ test('converts paragraph newlines to br', () => {
91
+ expect(markdownToHtml('one\ntwo')).toBe('one<br/>two')
92
+ })
93
+
94
+ test('supports nested formatting', () => {
95
+ expect(markdownToHtml('**bold _and italic_**')).toBe(
96
+ '<strong>bold <em>and italic</em></strong>',
97
+ )
98
+ })
99
+
100
+ test('escapes html special characters in text', () => {
101
+ expect(markdownToHtml('5 < 7 & 8 > 3')).toBe('5 &lt; 7 &amp; 8 &gt; 3')
102
+ })
103
+
104
+ test('separates multiple paragraphs with br', () => {
105
+ expect(markdownToHtml('first\n\nsecond')).toBe('first<br/><br/>second')
106
+ })
107
+
108
+ test('renders mixed content', () => {
109
+ expect(markdownToHtml('Hello **team**\n\n- one\n- two\n\n```js\nconst x = 1\n```')).toBe(
110
+ 'Hello <strong>team</strong><br/><br/><ul><li>one</li><li>two</li></ul><br/><br/><pre><code class="language-js">const x = 1</code></pre>',
111
+ )
112
+ })
113
+
114
+ test('returns empty string for empty input', () => {
115
+ expect(markdownToHtml('')).toBe('')
116
+ })
117
+
118
+ test('returns plain text when there is no markdown', () => {
119
+ expect(markdownToHtml('hello world')).toBe('hello world')
120
+ })
121
+
122
+ test('preserves whitespace-only input', () => {
123
+ expect(markdownToHtml(' ')).toBe(' ')
124
+ })
125
+ })
126
+
127
+ describe('stripMarkdown', () => {
128
+ test('strips inline markdown syntax', () => {
129
+ expect(stripMarkdown('**bold** _italic_ `code`')).toBe('bold italic code')
130
+ })
131
+
132
+ test('strips links to their labels', () => {
133
+ expect(stripMarkdown('[Webex](https://example.com)')).toBe('Webex')
134
+ })
135
+
136
+ test('strips block markdown syntax', () => {
137
+ expect(stripMarkdown('# Title\n> quote\n- item\n1. first\n---')).toBe(
138
+ 'Title\nquote\nitem\nfirst\n',
139
+ )
140
+ })
141
+
142
+ test('keeps code block content', () => {
143
+ expect(stripMarkdown('```ts\nconst x = 1\n```')).toBe('const x = 1')
144
+ })
145
+
146
+ test('handles nested formatting', () => {
147
+ expect(stripMarkdown('**bold _and italic_**')).toBe('bold and italic')
148
+ })
149
+
150
+ test('returns plain text unchanged', () => {
151
+ expect(stripMarkdown('hello world')).toBe('hello world')
152
+ })
153
+ })
@@ -0,0 +1,194 @@
1
+ const BLOCK_PLACEHOLDER_PREFIX = '\u0000BLOCK'
2
+ const INLINE_PLACEHOLDER_PREFIX = '\u0000INLINE'
3
+
4
+ export function markdownToHtml(markdown: string): string {
5
+ if (markdown.length === 0) {
6
+ return ''
7
+ }
8
+
9
+ const normalized = markdown.replace(/\r\n?/g, '\n')
10
+ if (normalized.trim().length === 0) {
11
+ return normalized
12
+ }
13
+
14
+ const { text, blocks } = extractCodeBlocks(normalized)
15
+ const lines = text.split('\n')
16
+ const output: string[] = []
17
+ let paragraph: string[] = []
18
+
19
+ const flushParagraph = () => {
20
+ if (paragraph.length === 0) {
21
+ return
22
+ }
23
+
24
+ output.push(processInline(paragraph.join('\n')).replace(/\n/g, '<br/>'))
25
+ paragraph = []
26
+ }
27
+
28
+ for (let index = 0; index < lines.length; ) {
29
+ const line = lines[index]
30
+ const trimmed = line.trim()
31
+
32
+ if (trimmed.length === 0) {
33
+ flushParagraph()
34
+ index++
35
+ continue
36
+ }
37
+
38
+ if (isBlockPlaceholder(trimmed)) {
39
+ flushParagraph()
40
+ output.push(trimmed)
41
+ index++
42
+ continue
43
+ }
44
+
45
+ const headingMatch = line.match(/^(#{1,6})\s+(.*)$/)
46
+ if (headingMatch) {
47
+ flushParagraph()
48
+ output.push(`<h${headingMatch[1].length}>${processInline(headingMatch[2])}</h${headingMatch[1].length}>`)
49
+ index++
50
+ continue
51
+ }
52
+
53
+ if (/^---$/.test(trimmed)) {
54
+ flushParagraph()
55
+ output.push('<hr>')
56
+ index++
57
+ continue
58
+ }
59
+
60
+ if (/^>\s?/.test(line)) {
61
+ flushParagraph()
62
+ const quoteLines: string[] = []
63
+ while (index < lines.length && /^>\s?/.test(lines[index])) {
64
+ quoteLines.push(lines[index].replace(/^>\s?/, ''))
65
+ index++
66
+ }
67
+ output.push(`<blockquote>${processInline(quoteLines.join('\n')).replace(/\n/g, '<br/>')}</blockquote>`)
68
+ continue
69
+ }
70
+
71
+ if (/^-\s+/.test(line)) {
72
+ flushParagraph()
73
+ const items: string[] = []
74
+ while (index < lines.length && /^-\s+/.test(lines[index])) {
75
+ items.push(`<li>${processInline(lines[index].replace(/^-\s+/, ''))}</li>`)
76
+ index++
77
+ }
78
+ output.push(`<ul>${items.join('')}</ul>`)
79
+ continue
80
+ }
81
+
82
+ if (/^\d+\.\s+/.test(line)) {
83
+ flushParagraph()
84
+ const items: string[] = []
85
+ while (index < lines.length && /^\d+\.\s+/.test(lines[index])) {
86
+ items.push(`<li>${processInline(lines[index].replace(/^\d+\.\s+/, ''))}</li>`)
87
+ index++
88
+ }
89
+ output.push(`<ol>${items.join('')}</ol>`)
90
+ continue
91
+ }
92
+
93
+ paragraph.push(line)
94
+ index++
95
+ }
96
+
97
+ flushParagraph()
98
+
99
+ return restorePlaceholders(output.join('<br/><br/>'), blocks)
100
+ }
101
+
102
+ export function stripMarkdown(markdown: string): string {
103
+ return markdown
104
+ .replace(/\r\n?/g, '\n')
105
+ .replace(/```([a-zA-Z0-9_-]+)?\n?([\s\S]*?)```/g, (_, _language: string | undefined, code: string) => {
106
+ return code.replace(/\n$/, '')
107
+ })
108
+ .replace(/^---$/gm, '')
109
+ .replace(/^(#{1,6})\s+/gm, '')
110
+ .replace(/^>\s?/gm, '')
111
+ .replace(/^-\s+/gm, '')
112
+ .replace(/^\d+\.\s+/gm, '')
113
+ .replace(/\[([^\]]+)\]\(([^)\n]+)\)/g, '$1')
114
+ .replace(/`([^`\n]+)`/g, '$1')
115
+ .replace(/\*\*\*([^*\n]+)\*\*\*/g, '$1')
116
+ .replace(/\*\*([^*\n]+)\*\*/g, '$1')
117
+ .replace(/(^|[^\w])_([^_\n]+)_(?=[^\w]|$)/g, '$1$2')
118
+ }
119
+
120
+ function processInline(markdown: string): string {
121
+ const placeholders: string[] = []
122
+ let text = markdown
123
+
124
+ text = text.replace(/`([^`\n]+)`/g, (_, code: string) => {
125
+ return createInlinePlaceholder(placeholders, `<code>${escapeHtml(code)}</code>`)
126
+ })
127
+
128
+ text = text.replace(/\[([^\]]+)\]\(([^)\n]+)\)/g, (_, label: string, url: string) => {
129
+ if (!isSafeUrl(url)) {
130
+ return processInline(label)
131
+ }
132
+ return createInlinePlaceholder(
133
+ placeholders,
134
+ `<a href="${escapeHtml(url)}">${processInline(label)}</a>`,
135
+ )
136
+ })
137
+
138
+ text = escapeHtml(text)
139
+ text = text.replace(/\*\*\*([^*\n]+)\*\*\*/g, '<strong><em>$1</em></strong>')
140
+ text = text.replace(/\*\*([^*\n]+)\*\*/g, '<strong>$1</strong>')
141
+ text = text.replace(/(^|[^\w])_([^_\n]+)_(?=[^\w]|$)/g, '$1<em>$2</em>')
142
+
143
+ return restorePlaceholders(text, placeholders)
144
+ }
145
+
146
+ function extractCodeBlocks(markdown: string): { text: string; blocks: string[] } {
147
+ const blocks: string[] = []
148
+ const text = markdown.replace(/```([a-zA-Z0-9_-]+)?\n([\s\S]*?)\n```/g, (_, language: string | undefined, code: string) => {
149
+ const className = language ? ` class="language-${escapeHtml(language)}"` : ''
150
+ return createBlockPlaceholder(blocks, `<pre><code${className}>${escapeHtml(code)}</code></pre>`)
151
+ })
152
+
153
+ return { text, blocks }
154
+ }
155
+
156
+ function createBlockPlaceholder(blocks: string[], html: string): string {
157
+ const token = `${BLOCK_PLACEHOLDER_PREFIX}${blocks.length}\u0000`
158
+ blocks.push(html)
159
+ return token
160
+ }
161
+
162
+ function createInlinePlaceholder(placeholders: string[], html: string): string {
163
+ const token = `${INLINE_PLACEHOLDER_PREFIX}${placeholders.length}\u0000`
164
+ placeholders.push(html)
165
+ return token
166
+ }
167
+
168
+ function isBlockPlaceholder(value: string): boolean {
169
+ return new RegExp(`^${BLOCK_PLACEHOLDER_PREFIX}\\d+\\u0000$`).test(value)
170
+ }
171
+
172
+ function restorePlaceholders(text: string, values: string[]): string {
173
+ let restored = text
174
+ for (const [index, value] of values.entries()) {
175
+ restored = restored.replaceAll(`${BLOCK_PLACEHOLDER_PREFIX}${index}\u0000`, value)
176
+ restored = restored.replaceAll(`${INLINE_PLACEHOLDER_PREFIX}${index}\u0000`, value)
177
+ }
178
+ return restored
179
+ }
180
+
181
+ const SAFE_URL_PATTERN = /^(https?:|mailto:|\/|#)/i
182
+
183
+ function isSafeUrl(url: string): boolean {
184
+ return SAFE_URL_PATTERN.test(url.trim())
185
+ }
186
+
187
+ function escapeHtml(value: string): string {
188
+ return value
189
+ .replaceAll('&', '&amp;')
190
+ .replaceAll('<', '&lt;')
191
+ .replaceAll('>', '&gt;')
192
+ .replaceAll('"', '&quot;')
193
+ .replaceAll("'", '&#39;')
194
+ }
File without changes