agent-messenger 2.22.0 → 2.23.1

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 (102) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/README.md +21 -0
  3. package/dist/package.json +1 -1
  4. package/dist/src/platforms/webex/client.d.ts +6 -0
  5. package/dist/src/platforms/webex/client.d.ts.map +1 -1
  6. package/dist/src/platforms/webex/client.js +34 -4
  7. package/dist/src/platforms/webex/client.js.map +1 -1
  8. package/dist/src/platforms/webex/commands/auth.d.ts +9 -1
  9. package/dist/src/platforms/webex/commands/auth.d.ts.map +1 -1
  10. package/dist/src/platforms/webex/commands/auth.js +141 -25
  11. package/dist/src/platforms/webex/commands/auth.js.map +1 -1
  12. package/dist/src/platforms/webex/credential-manager.d.ts.map +1 -1
  13. package/dist/src/platforms/webex/credential-manager.js +8 -4
  14. package/dist/src/platforms/webex/credential-manager.js.map +1 -1
  15. package/dist/src/platforms/webex/id-normalizer.d.ts +19 -0
  16. package/dist/src/platforms/webex/id-normalizer.d.ts.map +1 -0
  17. package/dist/src/platforms/webex/id-normalizer.js +60 -0
  18. package/dist/src/platforms/webex/id-normalizer.js.map +1 -0
  19. package/dist/src/platforms/webex/index.d.ts +6 -0
  20. package/dist/src/platforms/webex/index.d.ts.map +1 -1
  21. package/dist/src/platforms/webex/index.js +3 -0
  22. package/dist/src/platforms/webex/index.js.map +1 -1
  23. package/dist/src/platforms/webex/listener.d.ts +61 -0
  24. package/dist/src/platforms/webex/listener.d.ts.map +1 -0
  25. package/dist/src/platforms/webex/listener.js +222 -0
  26. package/dist/src/platforms/webex/listener.js.map +1 -0
  27. package/dist/src/platforms/webex/password-login.d.ts +18 -0
  28. package/dist/src/platforms/webex/password-login.d.ts.map +1 -0
  29. package/dist/src/platforms/webex/password-login.js +259 -0
  30. package/dist/src/platforms/webex/password-login.js.map +1 -0
  31. package/dist/src/platforms/webex/types.d.ts +2 -1
  32. package/dist/src/platforms/webex/types.d.ts.map +1 -1
  33. package/dist/src/platforms/webex/types.js +1 -1
  34. package/dist/src/platforms/webex/types.js.map +1 -1
  35. package/dist/src/platforms/webex/wdm-discovery.d.ts.map +1 -0
  36. package/dist/src/platforms/{webexbot → webex}/wdm-discovery.js +3 -3
  37. package/dist/src/platforms/webex/wdm-discovery.js.map +1 -0
  38. package/dist/src/platforms/webexbot/client.d.ts +4 -0
  39. package/dist/src/platforms/webexbot/client.d.ts.map +1 -1
  40. package/dist/src/platforms/webexbot/client.js +70 -8
  41. package/dist/src/platforms/webexbot/client.js.map +1 -1
  42. package/dist/src/platforms/webexbot/index.d.ts +2 -0
  43. package/dist/src/platforms/webexbot/index.d.ts.map +1 -1
  44. package/dist/src/platforms/webexbot/index.js +1 -0
  45. package/dist/src/platforms/webexbot/index.js.map +1 -1
  46. package/dist/src/platforms/webexbot/listener.d.ts +3 -41
  47. package/dist/src/platforms/webexbot/listener.d.ts.map +1 -1
  48. package/dist/src/platforms/webexbot/listener.js +13 -208
  49. package/dist/src/platforms/webexbot/listener.js.map +1 -1
  50. package/dist/src/platforms/webexbot/types.d.ts +1 -18
  51. package/dist/src/platforms/webexbot/types.d.ts.map +1 -1
  52. package/dist/src/platforms/webexbot/types.js.map +1 -1
  53. package/docs/content/docs/cli/webex.mdx +38 -12
  54. package/docs/content/docs/sdk/webexbot.mdx +16 -0
  55. package/package.json +1 -1
  56. package/skills/agent-channeltalk/SKILL.md +1 -1
  57. package/skills/agent-channeltalkbot/SKILL.md +1 -1
  58. package/skills/agent-discord/SKILL.md +1 -1
  59. package/skills/agent-discordbot/SKILL.md +1 -1
  60. package/skills/agent-instagram/SKILL.md +1 -1
  61. package/skills/agent-kakaotalk/SKILL.md +1 -1
  62. package/skills/agent-line/SKILL.md +1 -1
  63. package/skills/agent-slack/SKILL.md +1 -1
  64. package/skills/agent-slackbot/SKILL.md +1 -1
  65. package/skills/agent-teams/SKILL.md +1 -1
  66. package/skills/agent-telegram/SKILL.md +1 -1
  67. package/skills/agent-telegrambot/SKILL.md +1 -1
  68. package/skills/agent-webex/SKILL.md +76 -22
  69. package/skills/agent-webex/references/authentication.md +55 -14
  70. package/skills/agent-webex/references/common-patterns.md +5 -2
  71. package/skills/agent-webexbot/SKILL.md +3 -1
  72. package/skills/agent-wechatbot/SKILL.md +1 -1
  73. package/skills/agent-whatsapp/SKILL.md +1 -1
  74. package/skills/agent-whatsappbot/SKILL.md +1 -1
  75. package/src/platforms/webex/cli.test.ts +31 -1
  76. package/src/platforms/webex/client.test.ts +57 -0
  77. package/src/platforms/webex/client.ts +39 -4
  78. package/src/platforms/webex/commands/auth.test.ts +189 -28
  79. package/src/platforms/webex/commands/auth.ts +194 -35
  80. package/src/platforms/webex/credential-manager.test.ts +40 -0
  81. package/src/platforms/webex/credential-manager.ts +7 -4
  82. package/src/platforms/webex/id-normalizer.test.ts +207 -0
  83. package/src/platforms/webex/id-normalizer.ts +76 -0
  84. package/src/platforms/webex/index.test.ts +10 -0
  85. package/src/platforms/webex/index.ts +6 -0
  86. package/src/platforms/webex/listener.test.ts +243 -0
  87. package/src/platforms/webex/listener.ts +285 -0
  88. package/src/platforms/webex/password-login.test.ts +193 -0
  89. package/src/platforms/webex/password-login.ts +332 -0
  90. package/src/platforms/webex/types.test.ts +16 -0
  91. package/src/platforms/webex/types.ts +2 -2
  92. package/src/platforms/{webexbot → webex}/wdm-discovery.ts +3 -3
  93. package/src/platforms/webexbot/client.test.ts +125 -1
  94. package/src/platforms/webexbot/client.ts +79 -8
  95. package/src/platforms/webexbot/index.ts +2 -0
  96. package/src/platforms/webexbot/listener.test.ts +37 -224
  97. package/src/platforms/webexbot/listener.ts +18 -250
  98. package/src/platforms/webexbot/types.ts +2 -23
  99. package/dist/src/platforms/webexbot/wdm-discovery.d.ts.map +0 -1
  100. package/dist/src/platforms/webexbot/wdm-discovery.js.map +0 -1
  101. /package/dist/src/platforms/{webexbot → webex}/wdm-discovery.d.ts +0 -0
  102. /package/src/platforms/{webexbot → webex}/wdm-discovery.test.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"listener.d.ts","sourceRoot":"","sources":["../../../../src/platforms/webexbot/listener.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAIV,aAAa,EAIb,yBAAyB,EACzB,yBAAyB,EAC1B,MAAM,uBAAuB,CAAA;AAG9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAGvD,KAAK,QAAQ,GAAG,MAAM,wBAAwB,CAAA;AAC9C,KAAK,kBAAkB,GAAG,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAA;AAE1D,UAAU,uBAAuB;IAC/B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3B,MAAM,IAAI,aAAa,CAAA;IACvB,IAAI,SAAS,IAAI,OAAO,CAAA;IACxB,EAAE,CAAC,CAAC,SAAS,MAAM,yBAAyB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,yBAAyB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;IACrG,GAAG,CAAC,CAAC,SAAS,MAAM,yBAAyB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,yBAAyB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;IACtG,IAAI,CAAC,CAAC,SAAS,MAAM,yBAAyB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,yBAAyB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;CACxG;AAED,MAAM,WAAW,uBAAuB;IACtC,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,yBAAyB,KAAK,uBAAuB,CAAA;CACjF;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,OAAO,CAAuC;IACtD,OAAO,CAAC,UAAU,CAAI;IACtB,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,YAAY,CAA6B;gBAErC,MAAM,EAAE,kBAAkB,EAAE,OAAO,GAAE,uBAA4B;IAKvE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAgDtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB3B,EAAE,CAAC,CAAC,SAAS,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,wBAAwB,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI;IAKhG,GAAG,CAAC,CAAC,SAAS,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,wBAAwB,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI;IAKjG,IAAI,CAAC,CAAC,SAAS,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,wBAAwB,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI;IAKlG,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,SAAS;YAMH,aAAa;IAoB3B,OAAO,CAAC,WAAW;CA+EpB"}
1
+ {"version":3,"file":"listener.d.ts","sourceRoot":"","sources":["../../../../src/platforms/webexbot/listener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAIjD,YAAY,EACV,mBAAmB,IAAI,sBAAsB,EAC7C,oBAAoB,IAAI,uBAAuB,GAChD,MAAM,mBAAmB,CAAA;AAE1B,qBAAa,gBAAiB,SAAQ,aAAa;IAG3C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAU7B"}
@@ -1,214 +1,19 @@
1
- import { EventEmitter } from 'events';
2
- import { WebexMessageHandler } from 'webex-message-handler';
3
- import WebSocket from 'ws';
4
- import { createWdmRewriteFetch, discoverWdmDevicesUrl } from './wdm-discovery.js';
5
- export class WebexBotListener {
6
- client;
7
- options;
8
- running = false;
9
- emitter = new EventEmitter();
10
- handler = null;
11
- generation = 0;
12
- detachHandler = null;
13
- startPromise = null;
14
- constructor(client, options = {}) {
15
- this.client = client;
16
- this.options = options;
17
- }
1
+ import { WebexListener } from '../webex/listener.js';
2
+ import { WebexError } from '../webex/types.js';
3
+ import { WebexBotError } from './types.js';
4
+ export class WebexBotListener extends WebexListener {
5
+ // Preserve the bot error contract: WDM discovery (shared with the user platform)
6
+ // throws WebexError, but existing bot callers catch WebexBotError.
18
7
  async start() {
19
- if (this.startPromise)
20
- return this.startPromise;
21
- if (this.running)
22
- return;
23
- this.running = true;
24
- const generation = ++this.generation;
25
- let startPromise;
26
- startPromise = (async () => {
27
- let handler = null;
28
- try {
29
- handler = await this.createHandler();
30
- if (!this.running || this.generation !== generation) {
31
- await handler.disconnect().catch(() => undefined);
32
- return;
33
- }
34
- this.handler = handler;
35
- this.detachHandler = this.wireHandler(handler, generation);
36
- await handler.connect();
37
- if (!this.running || this.handler !== handler || this.generation !== generation) {
38
- await handler.disconnect().catch(() => undefined);
39
- return;
40
- }
41
- }
42
- catch (error) {
43
- if (this.handler === handler && this.generation === generation) {
44
- this.detachHandler?.();
45
- this.detachHandler = null;
46
- this.handler = null;
47
- }
48
- if (this.generation === generation) {
49
- this.running = false;
50
- }
51
- await handler?.disconnect().catch(() => undefined);
52
- throw error;
53
- }
54
- finally {
55
- if (this.startPromise === startPromise) {
56
- this.startPromise = null;
57
- }
58
- }
59
- })();
60
- this.startPromise = startPromise;
61
- return startPromise;
62
- }
63
- async stop() {
64
- const pendingStart = this.startPromise;
65
- this.startPromise = null;
66
- this.running = false;
67
- this.generation++;
68
- const detach = this.detachHandler;
69
- this.detachHandler = null;
70
- detach?.();
71
- const handler = this.handler;
72
- this.handler = null;
73
- if (handler) {
74
- await handler.disconnect().catch(() => undefined);
75
- }
76
- if (pendingStart) {
77
- await pendingStart.catch(() => undefined);
8
+ try {
9
+ await super.start();
78
10
  }
79
- }
80
- on(event, listener) {
81
- this.emitter.on(event, listener);
82
- return this;
83
- }
84
- off(event, listener) {
85
- this.emitter.off(event, listener);
86
- return this;
87
- }
88
- once(event, listener) {
89
- this.emitter.once(event, listener);
90
- return this;
91
- }
92
- isCurrent(handler, generation) {
93
- return this.running && this.handler === handler && this.generation === generation;
94
- }
95
- // Node's EventEmitter throws synchronously if an 'error' event is emitted with
96
- // no registered listener. Guard it so SDK consumers that only subscribe to
97
- // message events are never crashed by a transient connection error.
98
- emitError(error) {
99
- if (this.emitter.listenerCount('error') > 0) {
100
- this.emitter.emit('error', error);
101
- }
102
- }
103
- async createHandler() {
104
- const token = this.client.getToken();
105
- const config = { token };
106
- if (this.options.ignoreSelfMessages !== undefined)
107
- config.ignoreSelfMessages = this.options.ignoreSelfMessages;
108
- if (this.options.pingInterval !== undefined)
109
- config.pingInterval = this.options.pingInterval;
110
- if (this.options.pongTimeout !== undefined)
111
- config.pongTimeout = this.options.pongTimeout;
112
- if (this.options.reconnectBackoffMax !== undefined)
113
- config.reconnectBackoffMax = this.options.reconnectBackoffMax;
114
- if (this.options.maxReconnectAttempts !== undefined)
115
- config.maxReconnectAttempts = this.options.maxReconnectAttempts;
116
- if (this.options._handlerFactory) {
117
- return this.options._handlerFactory(config);
11
+ catch (error) {
12
+ if (error instanceof WebexError) {
13
+ throw new WebexBotError(error.message, error.code);
14
+ }
15
+ throw error;
118
16
  }
119
- const wdmDevicesUrl = await discoverWdmDevicesUrl(token);
120
- config.mode = 'injected';
121
- config.fetch = createWdmRewriteFetch(wdmDevicesUrl);
122
- config.webSocketFactory = (url) => new WebSocket(url);
123
- return new WebexMessageHandler(config);
124
- }
125
- wireHandler(handler, generation) {
126
- const onMessageCreated = (event) => {
127
- if (!this.isCurrent(handler, generation))
128
- return;
129
- this.emitter.emit('message_created', event);
130
- this.emitter.emit('webex_event', event);
131
- };
132
- const onMessageUpdated = (event) => {
133
- if (!this.isCurrent(handler, generation))
134
- return;
135
- this.emitter.emit('message_updated', event);
136
- this.emitter.emit('webex_event', event);
137
- };
138
- const onMessageDeleted = (event) => {
139
- if (!this.isCurrent(handler, generation))
140
- return;
141
- this.emitter.emit('message_deleted', event);
142
- this.emitter.emit('webex_event', event);
143
- };
144
- const onMembershipCreated = (event) => {
145
- if (!this.isCurrent(handler, generation))
146
- return;
147
- this.emitter.emit('membership_created', event);
148
- this.emitter.emit('webex_event', event);
149
- };
150
- const onAttachmentAction = (event) => {
151
- if (!this.isCurrent(handler, generation))
152
- return;
153
- this.emitter.emit('attachment_action', event);
154
- this.emitter.emit('webex_event', event);
155
- };
156
- const onRoomCreated = (event) => {
157
- if (!this.isCurrent(handler, generation))
158
- return;
159
- this.emitter.emit('room_created', event);
160
- this.emitter.emit('webex_event', event);
161
- };
162
- const onRoomUpdated = (event) => {
163
- if (!this.isCurrent(handler, generation))
164
- return;
165
- this.emitter.emit('room_updated', event);
166
- this.emitter.emit('webex_event', event);
167
- };
168
- const onConnected = () => {
169
- if (!this.isCurrent(handler, generation))
170
- return;
171
- this.emitter.emit('connected', { connected: handler.connected, status: handler.status() });
172
- };
173
- const onReconnecting = (attempt) => {
174
- if (!this.isCurrent(handler, generation))
175
- return;
176
- this.emitter.emit('reconnecting', attempt);
177
- };
178
- const onDisconnected = (reason) => {
179
- if (!this.isCurrent(handler, generation))
180
- return;
181
- this.emitter.emit('disconnected', reason);
182
- };
183
- const onError = (error) => {
184
- if (!this.isCurrent(handler, generation))
185
- return;
186
- this.emitError(error);
187
- };
188
- handler.on('message:created', onMessageCreated);
189
- handler.on('message:updated', onMessageUpdated);
190
- handler.on('message:deleted', onMessageDeleted);
191
- handler.on('membership:created', onMembershipCreated);
192
- handler.on('attachmentAction:created', onAttachmentAction);
193
- handler.on('room:created', onRoomCreated);
194
- handler.on('room:updated', onRoomUpdated);
195
- handler.on('connected', onConnected);
196
- handler.on('reconnecting', onReconnecting);
197
- handler.on('disconnected', onDisconnected);
198
- handler.on('error', onError);
199
- return () => {
200
- handler.off('message:created', onMessageCreated);
201
- handler.off('message:updated', onMessageUpdated);
202
- handler.off('message:deleted', onMessageDeleted);
203
- handler.off('membership:created', onMembershipCreated);
204
- handler.off('attachmentAction:created', onAttachmentAction);
205
- handler.off('room:created', onRoomCreated);
206
- handler.off('room:updated', onRoomUpdated);
207
- handler.off('connected', onConnected);
208
- handler.off('reconnecting', onReconnecting);
209
- handler.off('disconnected', onDisconnected);
210
- handler.off('error', onError);
211
- };
212
17
  }
213
18
  }
214
19
  //# sourceMappingURL=listener.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"listener.js","sourceRoot":"","sources":["../../../../src/platforms/webexbot/listener.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"listener.js","sourceRoot":"","sources":["../../../../src/platforms/webexbot/listener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAOvC,MAAM,OAAO,gBAAiB,SAAQ,aAAa;IACjD,iFAAiF;IACjF,mEAAmE;IACnE,KAAK,CAAC,KAAK;QACT,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;QACrB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;gBAChC,MAAM,IAAI,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;YACpD,CAAC;YACD,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;CACF"}
@@ -1,5 +1,5 @@
1
- import type { AttachmentAction, DecryptedMessage, DeletedMessage, HandlerStatus, MembershipActivity, RoomActivity } from 'webex-message-handler';
2
1
  import { z } from 'zod';
2
+ export type { WebexListenerEventMap as WebexBotListenerEventMap } from '../webex/listener.js';
3
3
  export interface WebexBotEntry {
4
4
  bot_id: string;
5
5
  bot_name: string;
@@ -40,21 +40,4 @@ export declare const WebexBotCredentialsSchema: z.ZodObject<{
40
40
  bot_id: z.ZodString;
41
41
  bot_name: z.ZodString;
42
42
  }, z.core.$strip>;
43
- export interface WebexBotListenerEventMap {
44
- message_created: [event: DecryptedMessage];
45
- message_updated: [event: DecryptedMessage];
46
- message_deleted: [event: DeletedMessage];
47
- membership_created: [event: MembershipActivity];
48
- attachment_action: [event: AttachmentAction];
49
- room_created: [event: RoomActivity];
50
- room_updated: [event: RoomActivity];
51
- webex_event: [event: DecryptedMessage | DeletedMessage | MembershipActivity | AttachmentAction | RoomActivity];
52
- connected: [info: {
53
- connected: boolean;
54
- status: HandlerStatus;
55
- }];
56
- reconnecting: [attempt: number];
57
- disconnected: [reason: string];
58
- error: [error: Error];
59
- }
60
43
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/platforms/webexbot/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,YAAY,EACb,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IAClC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;CACpC;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,qBAAa,aAAc,SAAQ,KAAK;IACtC,IAAI,EAAE,MAAM,CAAA;gBAEA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CAK1C;AAED,eAAO,MAAM,mBAAmB;;;;iBAI9B,CAAA;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;;iBAO/B,CAAA;AAEF,eAAO,MAAM,yBAAyB;;;;iBAIpC,CAAA;AAEF,MAAM,WAAW,wBAAwB;IACvC,eAAe,EAAE,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAA;IAC1C,eAAe,EAAE,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAA;IAC1C,eAAe,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC,CAAA;IACxC,kBAAkB,EAAE,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAA;IAC/C,iBAAiB,EAAE,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAA;IAC5C,YAAY,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;IACnC,YAAY,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;IACnC,WAAW,EAAE,CAAC,KAAK,EAAE,gBAAgB,GAAG,cAAc,GAAG,kBAAkB,GAAG,gBAAgB,GAAG,YAAY,CAAC,CAAA;IAC9G,SAAS,EAAE,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,aAAa,CAAA;KAAE,CAAC,CAAA;IAChE,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAC/B,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9B,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;CACtB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/platforms/webexbot/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,YAAY,EAAE,qBAAqB,IAAI,wBAAwB,EAAE,MAAM,mBAAmB,CAAA;AAE1F,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IAClC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;CACpC;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,qBAAa,aAAc,SAAQ,KAAK;IACtC,IAAI,EAAE,MAAM,CAAA;gBAEA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CAK1C;AAED,eAAO,MAAM,mBAAmB;;;;iBAI9B,CAAA;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;;iBAO/B,CAAA;AAEF,eAAO,MAAM,yBAAyB;;;;iBAIpC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/platforms/webexbot/types.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAmBvB,MAAM,OAAO,aAAc,SAAQ,KAAK;IACtC,IAAI,CAAQ;IAEZ,YAAY,OAAe,EAAE,IAAY;QACvC,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,eAAe,CAAA;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;CACF;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;CAClB,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,OAAO,EAAE,CAAC;SACP,MAAM,CAAC;QACN,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;KACnB,CAAC;SACD,QAAQ,EAAE;IACb,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,mBAAmB,CAAC;CAChD,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;CACrB,CAAC,CAAA"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/platforms/webexbot/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAqBvB,MAAM,OAAO,aAAc,SAAQ,KAAK;IACtC,IAAI,CAAQ;IAEZ,YAAY,OAAe,EAAE,IAAY;QACvC,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,eAAe,CAAA;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;CACF;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;CAClB,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,OAAO,EAAE,CAAC;SACP,MAAM,CAAC;QACN,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;KACnB,CAAC;SACD,QAAQ,EAAE;IACb,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,mBAAmB,CAAC;CAChD,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;CACrB,CAAC,CAAA"}
@@ -42,12 +42,32 @@ This command:
42
42
  - Auto-extraction runs when no valid token is stored, so manual extraction is rarely needed
43
43
  - Messages are encrypted client-side (JWE/AES-256-GCM). Encryption keys are cached at extract time; for end-to-end encrypted conversations whose key is not cached, the key is fetched on demand (Mercury + KMS) and persisted for reuse. Non-encrypted conversations send as plaintext.
44
44
 
45
+ ### Email/Password Login
46
+
47
+ Logs in with a Webex email and password — no browser. Useful for servers and CI/CD that need a real user token (e.g. for the real-time listener, which receives all space messages without an @mention). Run `agent-webex auth login` with no flags in a terminal to be prompted for your email and then your password (read without echoing); for headless use, pipe the password via stdin to keep it out of shell history.
48
+
49
+ ```bash
50
+ # Interactive — prompts for email, then password (hidden)
51
+ agent-webex auth login
52
+
53
+ # Headless — provide the email and pipe the password from stdin
54
+ printf '%s' "$WEBEX_PASSWORD" | agent-webex auth login --email you@example.com --password-stdin
55
+
56
+ # Provide the email only — password is prompted securely
57
+ agent-webex auth login --email you@example.com
58
+ ```
59
+
60
+ - Discovers the user's Webex region, performs OAuth2 Authorization Code + PKCE against Cisco IdBroker, and stores access/refresh tokens in `~/.config/agent-messenger/`
61
+ - Produces a KMS-scoped user token (client-side JWE/AES-256-GCM encryption works)
62
+ - `--idbroker-host <host>` overrides region auto-discovery if needed
63
+ - Accounts protected by SSO/IdP or MFA are not supported and fail with a clear error
64
+
45
65
  ### OAuth Device Grant (Fallback)
46
66
 
47
67
  Uses OAuth Device Grant flow with built-in Integration credentials. No tokens to copy, no developer portal setup needed. Messages show "via agent-messenger".
48
68
 
49
69
  ```bash
50
- agent-webex auth login
70
+ agent-webex auth oauth
51
71
  ```
52
72
 
53
73
  This command:
@@ -61,10 +81,11 @@ This command:
61
81
 
62
82
  ### How Login Works
63
83
 
64
- 1. Run `agent-webex auth extract` (recommended) or `agent-webex auth login` (fallback)
84
+ 1. Run `agent-webex auth extract` (recommended), `agent-webex auth login` (email/password), or `agent-webex auth oauth` (Device Grant)
65
85
  2. For extraction: CLI reads your browser's Webex session — no prompts needed
66
- 3. For Device Grant: Browser opens, enter the displayed code, CLI stores tokens
67
- 4. Access tokens are refreshed automatically
86
+ 3. For email/password: CLI prompts for any missing credentials, then exchanges them for a token
87
+ 4. For Device Grant: Browser opens, enter the displayed code, CLI stores tokens
88
+ 5. Access tokens are refreshed automatically
68
89
 
69
90
  ### Token Types
70
91
 
@@ -72,6 +93,7 @@ This command:
72
93
  | -------------------------------- | -------------------------------------------- | ------------------------------------ |
73
94
  | Browser Extraction (recommended) | Session-based (re-extract when expired) | Interactive use, sending as yourself |
74
95
  | OAuth Device Grant | 14-day access, 90-day refresh (auto-refresh) | Fallback when no browser session |
96
+ | Email/Password (headless) | Access + refresh (auto-refresh) | Server-side/CI without a browser |
75
97
  | Bot Token | Never expires | CI/CD, long-running automation |
76
98
  | Personal Access Token (PAT) | 12 hours | Quick testing |
77
99
 
@@ -81,11 +103,15 @@ This command:
81
103
  # Extract token from browser (recommended)
82
104
  agent-webex auth extract
83
105
 
84
- # Log in (Device Grant flow, opens browser)
106
+ # Log in with email/password (prompts when flags are omitted)
85
107
  agent-webex auth login
108
+ printf '%s' "$WEBEX_PASSWORD" | agent-webex auth login --email you@example.com --password-stdin
86
109
 
87
- # Log in with custom Integration credentials
88
- agent-webex auth login --client-id <id> --client-secret <secret>
110
+ # Log in via OAuth Device Grant (opens browser)
111
+ agent-webex auth oauth
112
+
113
+ # Log in via OAuth with custom Integration credentials
114
+ agent-webex auth oauth --client-id <id> --client-secret <secret>
89
115
 
90
116
  # Log in with a bot token (never expires)
91
117
  agent-webex auth login --token <bot-token>
@@ -109,7 +135,7 @@ Override the built-in Integration credentials with your own:
109
135
  | `AGENT_WEBEX_CLIENT_ID` | Webex Integration client ID |
110
136
  | `AGENT_WEBEX_CLIENT_SECRET` | Webex Integration client secret |
111
137
 
112
- Both must be set together. When set, `auth login` (without `--token`) uses these instead of the built-in credentials.
138
+ Both must be set together. When set, `auth oauth` uses these instead of the built-in credentials.
113
139
 
114
140
  ## Commands
115
141
 
@@ -233,10 +259,10 @@ agent-webex auth login
233
259
 
234
260
  ### Token Expired (401 Unauthorized)
235
261
 
236
- **If using Device Grant (default)**: Tokens auto-refresh. If you still get 401s, the refresh token may have expired (after 90 days). Re-run:
262
+ **If using Device Grant**: Tokens auto-refresh. If you still get 401s, the refresh token may have expired (after 90 days). Re-run:
237
263
 
238
264
  ```bash
239
- agent-webex auth login
265
+ agent-webex auth oauth
240
266
  ```
241
267
 
242
268
  **If using a PAT**: Generate a new one at https://developer.webex.com/docs/getting-started
@@ -245,10 +271,10 @@ agent-webex auth login
245
271
 
246
272
  ### "Device authorization timed out"
247
273
 
248
- You didn't approve the request in the browser before the code expired. Run `auth login` again:
274
+ You didn't approve the request in the browser before the code expired. Run `auth oauth` again:
249
275
 
250
276
  ```bash
251
- agent-webex auth login
277
+ agent-webex auth oauth
252
278
  ```
253
279
 
254
280
  ### "Device authorization failed"
@@ -177,6 +177,22 @@ const listener = new WebexBotListener(client, {
177
177
  | `disconnected` | `string` (reason) | Connection dropped; listener will auto-reconnect |
178
178
  | `error` | `Error` | Fatal error (max reconnects exceeded). Listener stops. |
179
179
 
180
+ ### ID format
181
+
182
+ Every REST-resource ID on emitted events — person IDs (`personId`, `actorId`, `mentionedPeople`), room IDs (`roomId`), message IDs (`id`, `parentId`, `messageId`), and `AttachmentAction.id` — is in **Webex REST ID format** (`ciscospark://...` base64), directly comparable with IDs returned by `WebexBotClient` (e.g. `getMessage`, `listSpaces`, `listPeople`). The two Mercury-only activity IDs that have no REST resource — `MembershipActivity.id` and `RoomActivity.id` — stay as raw Mercury UUIDs. The original Mercury payload (with raw UUIDs) is preserved under `.raw` on every event except `message_deleted`, whose upstream Mercury event does not include the full activity.
183
+
184
+ ```typescript
185
+ import { WebexBotClient, WebexBotListener, fromRestId } from 'agent-messenger/webexbot'
186
+
187
+ listener.on('message_created', async (event) => {
188
+ // event.roomId is a REST ID — compare it directly with REST results
189
+ const space = await client.getSpace(event.roomId)
190
+
191
+ // Recover the raw Mercury UUID when needed
192
+ const personUuid = fromRestId(event.personId)
193
+ })
194
+ ```
195
+
180
196
  ### Reconnection
181
197
 
182
198
  On transient failures (network drops, 5xx), the listener emits `disconnected` and retries with exponential backoff up to `reconnectBackoffMax`. After `maxReconnectAttempts` consecutive failures, it emits `error` and stops.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-messenger",
3
- "version": "2.22.0",
3
+ "version": "2.23.1",
4
4
  "description": "Multi-platform messaging CLI for AI agents (Slack, Discord, Teams, Webex, Telegram, Telegram Bot, 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.22.0
4
+ version: 2.23.1
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.22.0
4
+ version: 2.23.1
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.22.0
4
+ version: 2.23.1
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.22.0
4
+ version: 2.23.1
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.22.0
4
+ version: 2.23.1
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.22.0
4
+ version: 2.23.1
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.22.0
4
+ version: 2.23.1
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.22.0
4
+ version: 2.23.1
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.22.0
4
+ version: 2.23.1
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.22.0
4
+ version: 2.23.1
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.22.0
4
+ version: 2.23.1
5
5
  allowed-tools: Bash(agent-telegram:*)
6
6
  ---
7
7
 
@@ -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.22.0
4
+ version: 2.23.1
5
5
  allowed-tools: Bash(agent-telegrambot:*)
6
6
  metadata:
7
7
  openclaw: