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
@@ -0,0 +1,259 @@
1
+ import { createHash, randomBytes } from 'node:crypto';
2
+ import { WebexError } from './types.js';
3
+ export const WEB_CLIENT_ID = 'C64ab04639eefee4798f58e7bc3fe01d47161be0d97ff0d31e040a6ffe66d7f0a';
4
+ export const WEB_CLIENT_SECRET = 'f4261a01a4111b3b3b1710583073cae9cd7104517e7f78800c43d01eea133782';
5
+ const REDIRECT_URI = 'https://web.webex.com';
6
+ const DEFAULT_IDBROKER_HOST = 'https://idbroker.webex.com';
7
+ const SCOPE = 'webexsquare:get_conversation Identity:SCIM identity:things_read spark:kms spark:people_read spark:people_write spark:organizations_read spark:rooms_read spark:rooms_write spark:memberships_read spark:calls_read spark:calls_write webexsquare:admin';
8
+ const U2C_URL = 'https://u2c.svc.webex.com/u2c/api/v1/limited/catalog';
9
+ const MAX_REDIRECTS = 12;
10
+ export async function loginWithPassword(email, password, options) {
11
+ const normalizedEmail = email.toLowerCase();
12
+ const emailHash = sha256Hex(normalizedEmail);
13
+ const discovery = await discoverU2C(emailHash);
14
+ const idbrokerHost = normalizeOrigin(options?.idbrokerHost ?? discovery.idbrokerHost);
15
+ const pkce = createPkcePair();
16
+ const state = base64url(Buffer.from(JSON.stringify({ csrf_token: crypto.randomUUID(), emailhash: emailHash })));
17
+ const cookieJar = new CookieJar();
18
+ const authorizeUrl = `${idbrokerHost}/idb/oauth2/v1/authorize?${new URLSearchParams({
19
+ response_type: 'code',
20
+ cisKeepMeSignedInOption: '1',
21
+ state,
22
+ cisService: 'webex',
23
+ emailHash,
24
+ code_challenge: pkce.challenge,
25
+ code_challenge_method: 'S256',
26
+ client_id: WEB_CLIENT_ID,
27
+ redirect_uri: REDIRECT_URI,
28
+ scope: SCOPE,
29
+ }).toString()}`;
30
+ const authorizeResult = await followRedirects(authorizeUrl, { method: 'GET' }, cookieJar);
31
+ const clusterHost = new URL(authorizeResult.url).origin;
32
+ // Reject before touching credentials: if authorize redirected off Webex (an SSO
33
+ // IdP), posting IDToken1/IDToken2 here would leak the password to that host.
34
+ if (!isWebexHost(new URL(clusterHost).host)) {
35
+ throw new WebexError('SSO/IdP login is not supported for headless password login', 'sso_required');
36
+ }
37
+ const loginPageHtml = await authorizeResult.response.text();
38
+ const fields = parseInputFields(loginPageHtml);
39
+ fields.set('IDToken0', '');
40
+ fields.set('IDToken1', email);
41
+ fields.set('IDToken2', password);
42
+ fields.set('IDButton', 'Sign In');
43
+ fields.set('loginid', email);
44
+ const loginBody = new URLSearchParams();
45
+ for (const [key, value] of fields)
46
+ loginBody.set(key, value);
47
+ const loginResult = await followRedirects(`${clusterHost}/idb/UI/Login`, {
48
+ method: 'POST',
49
+ headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
50
+ body: loginBody.toString(),
51
+ }, cookieJar);
52
+ const code = getAuthorizationCode(loginResult.url);
53
+ if (code === null) {
54
+ await throwLoginFailure(loginResult);
55
+ throw new WebexError('Login failed: invalid credentials or unexpected response', 'login_failed');
56
+ }
57
+ const token = await exchangeCode(clusterHost, code, pkce.verifier);
58
+ const device = await registerDevice(discovery.wdmHost, token.access_token);
59
+ return {
60
+ accessToken: token.access_token,
61
+ refreshToken: token.refresh_token,
62
+ expiresAt: Date.now() + token.expires_in * 1000,
63
+ deviceUrl: device.deviceUrl,
64
+ userId: device.userId,
65
+ };
66
+ }
67
+ export function createPkcePair(verifier) {
68
+ const resolvedVerifier = verifier ?? base64url(randomBytes(64));
69
+ return {
70
+ verifier: resolvedVerifier,
71
+ challenge: base64url(createHash('sha256').update(resolvedVerifier).digest()),
72
+ };
73
+ }
74
+ async function discoverU2C(emailHash) {
75
+ try {
76
+ const url = `${U2C_URL}?${new URLSearchParams({ format: 'hostmap', emailhash: emailHash }).toString()}`;
77
+ const response = await fetch(url);
78
+ if (!response.ok)
79
+ return { idbrokerHost: DEFAULT_IDBROKER_HOST };
80
+ const catalog = (await response.json());
81
+ // Match the exact `idbroker` serviceLink key: a substring scan would wrongly
82
+ // pick `idbroker-guest`, routing login to a cluster the user has no account on.
83
+ const links = catalog.serviceLinks ?? {};
84
+ return {
85
+ idbrokerHost: typeof links.idbroker === 'string' ? normalizeOrigin(links.idbroker) : DEFAULT_IDBROKER_HOST,
86
+ wdmHost: typeof links.wdm === 'string' ? normalizeOrigin(links.wdm) : undefined,
87
+ };
88
+ }
89
+ catch {
90
+ return { idbrokerHost: DEFAULT_IDBROKER_HOST };
91
+ }
92
+ }
93
+ async function exchangeCode(clusterHost, code, verifier) {
94
+ const response = await fetch(`${clusterHost}/idb/oauth2/v1/access_token`, {
95
+ method: 'POST',
96
+ headers: {
97
+ Authorization: `Basic ${Buffer.from(`${WEB_CLIENT_ID}:${WEB_CLIENT_SECRET}`).toString('base64')}`,
98
+ 'Content-Type': 'application/x-www-form-urlencoded',
99
+ },
100
+ body: new URLSearchParams({
101
+ grant_type: 'authorization_code',
102
+ redirect_uri: REDIRECT_URI,
103
+ code,
104
+ code_verifier: verifier,
105
+ self_contained_token: 'true',
106
+ }).toString(),
107
+ });
108
+ if (!response.ok) {
109
+ throw new WebexError(`Token exchange failed: HTTP ${response.status}`, 'token_exchange_failed');
110
+ }
111
+ const token = (await response.json());
112
+ if (!token.access_token || !token.refresh_token || typeof token.expires_in !== 'number') {
113
+ throw new WebexError('Token exchange failed: incomplete response', 'token_exchange_failed');
114
+ }
115
+ return token;
116
+ }
117
+ async function registerDevice(wdmHost, accessToken) {
118
+ // deviceUrl is required: without it WebexClient falls back to the plaintext
119
+ // public API instead of the internal KMS-encrypted path password tokens need.
120
+ if (!wdmHost) {
121
+ throw new WebexError('Webex device registration service was not found in the catalog', 'device_registration_failed');
122
+ }
123
+ const response = await fetch(`${normalizeOrigin(wdmHost)}/wdm/api/v1/devices`, {
124
+ method: 'POST',
125
+ headers: { Authorization: `Bearer ${accessToken}`, 'Content-Type': 'application/json' },
126
+ body: JSON.stringify({
127
+ deviceName: 'agent-messenger',
128
+ name: 'agent-messenger',
129
+ deviceType: 'UNKNOWN',
130
+ model: 'agent-messenger',
131
+ localizedModel: 'agent-messenger',
132
+ systemName: 'agent-messenger',
133
+ systemVersion: '1.0',
134
+ }),
135
+ });
136
+ if (!response.ok) {
137
+ throw new WebexError(`Webex device registration failed: HTTP ${response.status}`, 'device_registration_failed');
138
+ }
139
+ const data = (await response.json());
140
+ if (!data.url || !data.userId) {
141
+ throw new WebexError('Webex device registration returned an incomplete device', 'device_registration_failed');
142
+ }
143
+ return { deviceUrl: data.url, userId: data.userId };
144
+ }
145
+ async function followRedirects(url, init, cookieJar) {
146
+ let currentUrl = url;
147
+ let response = await fetchWithCookies(currentUrl, init, cookieJar);
148
+ let redirects = 0;
149
+ while (isRedirect(response) && redirects++ < MAX_REDIRECTS) {
150
+ const location = response.headers.get('location');
151
+ if (!location)
152
+ break;
153
+ currentUrl = new URL(location, currentUrl).toString();
154
+ if (currentUrl.startsWith(REDIRECT_URI) && /[?&]code=/.test(currentUrl)) {
155
+ return { response, url: currentUrl };
156
+ }
157
+ response = await fetchWithCookies(currentUrl, { method: 'GET' }, cookieJar);
158
+ }
159
+ return { response, url: currentUrl };
160
+ }
161
+ async function fetchWithCookies(url, init, cookieJar) {
162
+ const headers = new Headers(init.headers);
163
+ // Only attach/store session cookies on Webex hosts so a redirect to an external
164
+ // IdP (SSO) never receives the Webex session cookies.
165
+ const isWebex = isWebexHost(new URL(url).host);
166
+ const cookie = cookieJar.header();
167
+ if (cookie && isWebex)
168
+ headers.set('Cookie', cookie);
169
+ const response = await fetch(url, { ...init, redirect: 'manual', headers });
170
+ if (isWebex)
171
+ cookieJar.apply(response);
172
+ return response;
173
+ }
174
+ function parseInputFields(html) {
175
+ const fields = new Map();
176
+ for (const input of html.match(/<input[^>]*>/gi) ?? []) {
177
+ const attrs = parseAttributes(input);
178
+ const name = attrs.get('name');
179
+ if (name && !fields.has(name)) {
180
+ fields.set(name, decodeEntities(attrs.get('value') ?? ''));
181
+ }
182
+ }
183
+ return fields;
184
+ }
185
+ function parseAttributes(tag) {
186
+ const attrs = new Map();
187
+ const attrPattern = /([:\w-]+)\s*=\s*("[^"]*"|'[^']*'|[^\s>]+)/g;
188
+ let match = attrPattern.exec(tag);
189
+ while (match) {
190
+ const rawValue = match[2];
191
+ const value = rawValue.startsWith('"') || rawValue.startsWith("'") ? rawValue.slice(1, -1) : rawValue;
192
+ attrs.set(match[1], decodeEntities(value));
193
+ match = attrPattern.exec(tag);
194
+ }
195
+ return attrs;
196
+ }
197
+ function decodeEntities(value) {
198
+ return value
199
+ .replace(/&#x([0-9a-fA-F]+);/g, (_, hex) => String.fromCodePoint(parseInt(hex, 16)))
200
+ .replace(/&#(\d+);/g, (_, decimal) => String.fromCodePoint(parseInt(decimal, 10)))
201
+ .replace(/&amp;/g, '&')
202
+ .replace(/&quot;/g, '"')
203
+ .replace(/&#39;/g, "'")
204
+ .replace(/&lt;/g, '<')
205
+ .replace(/&gt;/g, '>');
206
+ }
207
+ async function throwLoginFailure(loginResult) {
208
+ const finalHost = new URL(loginResult.url).host;
209
+ if (!isWebexHost(finalHost)) {
210
+ throw new WebexError('SSO/IdP login is not supported for headless password login', 'sso_required');
211
+ }
212
+ const html = await loginResult.response.text();
213
+ if (/verification code|passcode|one-time|security code|\bOTP\b|\bMFA\b/i.test(html)) {
214
+ throw new WebexError('Account requires MFA; headless password login is not supported', 'mfa_required');
215
+ }
216
+ throw new WebexError('Login failed: invalid credentials or unexpected response', 'login_failed');
217
+ }
218
+ function getAuthorizationCode(url) {
219
+ const code = new URL(url).searchParams.get('code');
220
+ return code ? decodeURIComponent(code) : null;
221
+ }
222
+ function isRedirect(response) {
223
+ return response.status >= 300 && response.status < 400;
224
+ }
225
+ function isWebexHost(host) {
226
+ return host === 'webex.com' || host.endsWith('.webex.com') || host === 'wbx2.com' || host.endsWith('.wbx2.com');
227
+ }
228
+ function normalizeOrigin(value) {
229
+ return new URL(value).origin;
230
+ }
231
+ function sha256Hex(value) {
232
+ return createHash('sha256').update(value).digest('hex');
233
+ }
234
+ function base64url(buffer) {
235
+ return buffer.toString('base64').replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
236
+ }
237
+ class CookieJar {
238
+ cookies = new Map();
239
+ apply(response) {
240
+ for (const cookie of getSetCookies(response.headers)) {
241
+ const [pair] = cookie.split(';');
242
+ const index = pair.indexOf('=');
243
+ if (index > 0)
244
+ this.cookies.set(pair.slice(0, index).trim(), pair.slice(index + 1).trim());
245
+ }
246
+ }
247
+ header() {
248
+ return [...this.cookies.entries()].map(([key, value]) => `${key}=${value}`).join('; ');
249
+ }
250
+ }
251
+ function getSetCookies(headers) {
252
+ const headersWithSetCookie = headers;
253
+ const cookies = headersWithSetCookie.getSetCookie?.();
254
+ if (cookies?.length)
255
+ return cookies;
256
+ const single = headers.get('set-cookie');
257
+ return single ? [single] : [];
258
+ }
259
+ //# sourceMappingURL=password-login.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"password-login.js","sourceRoot":"","sources":["../../../../src/platforms/webex/password-login.ts"],"names":[],"mappings":"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"}
@@ -50,7 +50,7 @@ export interface WebexConfig {
50
50
  expiresAt: number;
51
51
  clientId?: string;
52
52
  clientSecret?: string;
53
- tokenType?: 'oauth' | 'manual' | 'extracted';
53
+ tokenType?: 'oauth' | 'manual' | 'extracted' | 'password';
54
54
  deviceUrl?: string;
55
55
  userId?: string;
56
56
  encryptionKeys?: Record<string, string>;
@@ -120,6 +120,7 @@ export declare const WebexConfigSchema: z.ZodObject<{
120
120
  clientId: z.ZodOptional<z.ZodString>;
121
121
  clientSecret: z.ZodOptional<z.ZodString>;
122
122
  tokenType: z.ZodOptional<z.ZodEnum<{
123
+ password: "password";
123
124
  manual: "manual";
124
125
  oauth: "oauth";
125
126
  extracted: "extracted";
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/platforms/webex/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAA;IACxB,QAAQ,EAAE,OAAO,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,OAAO,GAAG,QAAQ,CAAA;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,QAAQ,GAAG,KAAK,CAAA;IACtB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB,EAAE,MAAM,CAAA;IACzB,WAAW,EAAE,OAAO,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,WAAW,CAAA;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACxC;AAED,qBAAa,UAAW,SAAQ,KAAK;IACnC,IAAI,EAAE,MAAM,CAAA;gBAEA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CAK1C;AAED,eAAO,MAAM,gBAAgB;;;;;;;;;;;;iBAS3B,CAAA;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;iBAa7B,CAAA;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;iBAW5B,CAAA;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;iBAQhC,CAAA;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;iBAU5B,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/platforms/webex/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAA;IACxB,QAAQ,EAAE,OAAO,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,OAAO,GAAG,QAAQ,CAAA;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,QAAQ,GAAG,KAAK,CAAA;IACtB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB,EAAE,MAAM,CAAA;IACzB,WAAW,EAAE,OAAO,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,UAAU,CAAA;IACzD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACxC;AAED,qBAAa,UAAW,SAAQ,KAAK;IACnC,IAAI,EAAE,MAAM,CAAA;gBAEA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CAK1C;AAED,eAAO,MAAM,gBAAgB;;;;;;;;;;;;iBAS3B,CAAA;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;iBAa7B,CAAA;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;iBAW5B,CAAA;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;iBAQhC,CAAA;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;iBAU5B,CAAA"}
@@ -58,7 +58,7 @@ export const WebexConfigSchema = z.object({
58
58
  expiresAt: z.number(),
59
59
  clientId: z.string().optional(),
60
60
  clientSecret: z.string().optional(),
61
- tokenType: z.enum(['oauth', 'manual', 'extracted']).optional(),
61
+ tokenType: z.enum(['oauth', 'manual', 'extracted', 'password']).optional(),
62
62
  deviceUrl: z.string().optional(),
63
63
  userId: z.string().optional(),
64
64
  encryptionKeys: z.record(z.string(), z.string()).optional(),
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/platforms/webex/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/platforms/webex/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wdm-discovery.d.ts","sourceRoot":"","sources":["../../../../src/platforms/webex/wdm-discovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAA+B,MAAM,uBAAuB,CAAA;AAavF,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAa1E;AAED,wBAAgB,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,aAAa,CAc1E"}
@@ -1,4 +1,4 @@
1
- import { WebexBotError } from './types.js';
1
+ import { WebexError } from './types.js';
2
2
  const U2C_CATALOG_URL = 'https://u2c.wbx2.com/u2c/api/v1/catalog?format=hostmap';
3
3
  const HARDCODED_WDM_DEVICES_URL = 'https://wdm-a.wbx2.com/wdm/api/v1/devices';
4
4
  // webex-message-handler hardcodes the WDM cluster to wdm-a. A bot whose org lives
@@ -10,12 +10,12 @@ const HARDCODED_WDM_DEVICES_URL = 'https://wdm-a.wbx2.com/wdm/api/v1/devices';
10
10
  export async function discoverWdmDevicesUrl(token) {
11
11
  const response = await fetch(U2C_CATALOG_URL, { headers: { Authorization: `Bearer ${token}` } });
12
12
  if (!response.ok) {
13
- throw new WebexBotError(`Failed to discover Webex WDM cluster: HTTP ${response.status}`, 'wdm_discovery_failed');
13
+ throw new WebexError(`Failed to discover Webex WDM cluster: HTTP ${response.status}`, 'wdm_discovery_failed');
14
14
  }
15
15
  const catalog = (await response.json());
16
16
  const wdm = catalog.serviceLinks?.wdm;
17
17
  if (!wdm) {
18
- throw new WebexBotError('Webex U2C catalog did not include serviceLinks.wdm', 'wdm_discovery_failed');
18
+ throw new WebexError('Webex U2C catalog did not include serviceLinks.wdm', 'wdm_discovery_failed');
19
19
  }
20
20
  return `${wdm.replace(/\/$/, '')}/devices`;
21
21
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wdm-discovery.js","sourceRoot":"","sources":["../../../../src/platforms/webex/wdm-discovery.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEpC,MAAM,eAAe,GAAG,wDAAwD,CAAA;AAChF,MAAM,yBAAyB,GAAG,2CAA2C,CAAA;AAE7E,kFAAkF;AAClF,gFAAgF;AAChF,gFAAgF;AAChF,mFAAmF;AACnF,+EAA+E;AAC/E,4BAA4B;AAC5B,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,KAAa;IACvD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE,EAAE,CAAC,CAAA;IAChG,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,UAAU,CAAC,8CAA8C,QAAQ,CAAC,MAAM,EAAE,EAAE,sBAAsB,CAAC,CAAA;IAC/G,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAwC,CAAA;IAC9E,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,EAAE,GAAG,CAAA;IACrC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,UAAU,CAAC,oDAAoD,EAAE,sBAAsB,CAAC,CAAA;IACpG,CAAC;IAED,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAA;AAC5C,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,aAAqB;IACzD,OAAO,KAAK,EAAE,GAAiB,EAA0B,EAAE;QACzD,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,yBAAyB,CAAC;YACvD,CAAC,CAAC,aAAa,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,yBAAyB,CAAC,MAAM,CAAC;YACjE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAA;QAEX,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;QAC1F,OAAO;YACL,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE;YACtB,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE;SACvB,CAAA;IACH,CAAC,CAAA;AACH,CAAC"}
@@ -2,6 +2,8 @@ import type { WebexMembership, WebexMessage, WebexPerson, WebexSpace } from '../
2
2
  export declare class WebexBotClient {
3
3
  private client;
4
4
  private token;
5
+ private clusteredRoomIds;
6
+ private roomIdLookups;
5
7
  login(credentials?: {
6
8
  token: string;
7
9
  }): Promise<this>;
@@ -57,5 +59,7 @@ export declare class WebexBotClient {
57
59
  filename: string;
58
60
  contentType: string;
59
61
  }>;
62
+ private resolveRoomId;
63
+ private lookupRoomId;
60
64
  }
61
65
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../src/platforms/webexbot/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../src/platforms/webexbot/client.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,25 @@
1
1
  import { WebexClient } from '../webex/client.js';
2
2
  import { WebexBotError } from './types.js';
3
+ // Webex REST ids are base64(url) of `ciscospark://<cluster>/<TYPE>/<uuid>`; the
4
+ // cluster correction needs all three parts, not just the <uuid> `fromRestId` returns.
5
+ function decodeWebexId(restId) {
6
+ if (!restId)
7
+ return null;
8
+ const decoded = Buffer.from(restId, 'base64').toString('utf-8');
9
+ const match = decoded.match(/^ciscospark:\/\/([^/]+)\/([^/]+)\/(.+)$/);
10
+ if (!match)
11
+ return null;
12
+ return { cluster: match[1], type: match[2], uuid: match[3] };
13
+ }
3
14
  export class WebexBotClient {
4
15
  client = new WebexClient();
5
16
  token = null;
17
+ // The listener flattens room ids to `ciscospark://us/ROOM/<uuid>`, but team/group
18
+ // rooms live on `ciscospark://urn:TEAM:<cluster>/ROOM/<uuid>` — a cluster the bare
19
+ // uuid cannot recover. Cache the real clustered id per uuid and dedupe concurrent
20
+ // lookups so a burst of calls triggers a single `listSpaces`.
21
+ clusteredRoomIds = new Map();
22
+ roomIdLookups = new Map();
6
23
  async login(credentials) {
7
24
  if (credentials) {
8
25
  if (!credentials.token) {
@@ -33,30 +50,35 @@ export class WebexBotClient {
33
50
  return this.client.listSpaces(options);
34
51
  }
35
52
  async getSpace(spaceId) {
36
- return this.client.getSpace(spaceId);
53
+ return this.client.getSpace(await this.resolveRoomId(spaceId));
37
54
  }
38
55
  async sendMessage(roomId, text, options) {
39
- return this.client.sendMessage(roomId, text, options);
56
+ return this.client.sendMessage(await this.resolveRoomId(roomId), text, options);
40
57
  }
41
58
  async sendDirectMessage(personEmail, text, options) {
42
59
  return this.client.sendDirectMessage(personEmail, text, options);
43
60
  }
44
61
  async listMessages(roomId, options) {
45
- const space = await this.client.getSpace(roomId);
62
+ const resolvedRoomId = await this.resolveRoomId(roomId);
63
+ const space = await this.client.getSpace(resolvedRoomId);
46
64
  const messageOptions = space.type === 'group' ? { ...options, mentionedPeople: 'me' } : options;
47
- return this.client.listMessages(roomId, messageOptions);
65
+ return this.client.listMessages(resolvedRoomId, messageOptions);
48
66
  }
49
67
  async listReplies(roomId, parentId, options) {
50
- return this.client.listMessages(roomId, { ...options, parentId });
68
+ return this.client.listMessages(await this.resolveRoomId(roomId), { ...options, parentId });
51
69
  }
52
70
  async getMessage(messageId) {
71
+ // MESSAGE ids carry their parent room's cluster, which the bare-UUID normalizer
72
+ // also flattens to `us`. Correcting that needs the room context, which a lone
73
+ // messageId does not provide; room-keyed calls (the reported failures) are
74
+ // corrected via resolveRoomId instead.
53
75
  return this.client.getMessage(messageId);
54
76
  }
55
77
  async deleteMessage(messageId) {
56
78
  return this.client.deleteMessage(messageId);
57
79
  }
58
80
  async editMessage(messageId, roomId, text, options) {
59
- return this.client.editMessage(messageId, roomId, text, options);
81
+ return this.client.editMessage(messageId, await this.resolveRoomId(roomId), text, options);
60
82
  }
61
83
  async listPeople(options) {
62
84
  return this.client.listPeople(options);
@@ -68,13 +90,53 @@ export class WebexBotClient {
68
90
  return this.client.listMyMemberships(options);
69
91
  }
70
92
  async listMemberships(roomId, options) {
71
- return this.client.listMemberships(roomId, options);
93
+ return this.client.listMemberships(await this.resolveRoomId(roomId), options);
72
94
  }
73
95
  async uploadFile(roomId, file, options) {
74
- return this.client.uploadFile(roomId, file, options);
96
+ return this.client.uploadFile(await this.resolveRoomId(roomId), file, options);
75
97
  }
76
98
  async downloadContent(contentRef) {
77
99
  return this.client.downloadContent(contentRef);
78
100
  }
101
+ async resolveRoomId(roomId) {
102
+ const decoded = decodeWebexId(roomId);
103
+ // Already cluster-qualified or undecodable: nothing to correct.
104
+ if (!decoded || decoded.cluster.startsWith('urn:'))
105
+ return roomId;
106
+ const { uuid } = decoded;
107
+ const cached = this.clusteredRoomIds.get(uuid);
108
+ if (cached)
109
+ return cached;
110
+ const inFlight = this.roomIdLookups.get(uuid);
111
+ if (inFlight)
112
+ return inFlight;
113
+ const lookup = this.lookupRoomId(uuid, roomId);
114
+ this.roomIdLookups.set(uuid, lookup);
115
+ try {
116
+ return await lookup;
117
+ }
118
+ finally {
119
+ this.roomIdLookups.delete(uuid);
120
+ }
121
+ }
122
+ async lookupRoomId(uuid, fallback) {
123
+ try {
124
+ // Page through every room the bot belongs to (largest page size, following
125
+ // `Link` pages), stopping as soon as the trailing UUID matches.
126
+ for await (const room of this.client.iterateSpaces({ max: 1000 })) {
127
+ if (decodeWebexId(room.id)?.uuid === uuid) {
128
+ this.clusteredRoomIds.set(uuid, room.id);
129
+ return room.id;
130
+ }
131
+ }
132
+ }
133
+ catch {
134
+ // Network/auth failure: fail open to the un-corrected id rather than block the call.
135
+ return fallback;
136
+ }
137
+ console.warn(`[webexbot] Could not resolve clustered room id for ${uuid}; falling back to the un-clustered id. ` +
138
+ 'Room-scoped calls may fail if this room lives on a non-default Webex cluster.');
139
+ return fallback;
140
+ }
79
141
  }
80
142
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/platforms/webexbot/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/platforms/webexbot/client.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  export { WebexBotClient } from './client.js';
2
2
  export { WebexBotCredentialManager } from './credential-manager.js';
3
+ export { fromRestId, toRestId } from '../webex/id-normalizer.js';
4
+ export type { WebexRestIdType } from '../webex/id-normalizer.js';
3
5
  export { WebexBotListener } from './listener.js';
4
6
  export type { WebexBotListenerOptions } from './listener.js';
5
7
  export type { WebexBotConfig, WebexBotCredentials, WebexBotEntry, WebexBotListenerEventMap } from './types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/platforms/webexbot/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AACzC,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAC7C,YAAY,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AACzD,YAAY,EAAE,cAAc,EAAE,mBAAmB,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAC3G,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC7G,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC5F,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/platforms/webexbot/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AACzC,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAA;AAChE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAC7D,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAC7C,YAAY,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AACzD,YAAY,EAAE,cAAc,EAAE,mBAAmB,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAC3G,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC7G,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC5F,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA"}
@@ -1,5 +1,6 @@
1
1
  export { WebexBotClient } from './client.js';
2
2
  export { WebexBotCredentialManager } from './credential-manager.js';
3
+ export { fromRestId, toRestId } from '../webex/id-normalizer.js';
3
4
  export { WebexBotListener } from './listener.js';
4
5
  export { WebexBotConfigSchema, WebexBotCredentialsSchema, WebexBotEntrySchema, WebexBotError } from './types.js';
5
6
  export { WebexMembershipSchema, WebexMessageSchema, WebexPersonSchema, WebexSpaceSchema } from '../webex/types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platforms/webexbot/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AACzC,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAG7C,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAE7G,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/platforms/webexbot/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AACzC,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAA;AAChE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAE7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAG7C,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAE7G,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA"}
@@ -1,44 +1,6 @@
1
- import type { HandlerStatus, WebexMessageHandlerConfig, WebexMessageHandlerEvents } from 'webex-message-handler';
2
- import type { WebexBotClient } from './client.js';
3
- import type { WebexBotListenerEventMap } from './types.js';
4
- type EventKey = keyof WebexBotListenerEventMap;
5
- type WebexBotClientLike = Pick<WebexBotClient, 'getToken'>;
6
- interface WebexMessageHandlerLike {
7
- connect(): Promise<void>;
8
- disconnect(): Promise<void>;
9
- status(): HandlerStatus;
10
- get connected(): boolean;
11
- on<K extends keyof WebexMessageHandlerEvents>(event: K, listener: WebexMessageHandlerEvents[K]): this;
12
- off<K extends keyof WebexMessageHandlerEvents>(event: K, listener: WebexMessageHandlerEvents[K]): this;
13
- once<K extends keyof WebexMessageHandlerEvents>(event: K, listener: WebexMessageHandlerEvents[K]): this;
14
- }
15
- export interface WebexBotListenerOptions {
16
- ignoreSelfMessages?: boolean;
17
- pingInterval?: number;
18
- pongTimeout?: number;
19
- reconnectBackoffMax?: number;
20
- maxReconnectAttempts?: number;
21
- _handlerFactory?: (config: WebexMessageHandlerConfig) => WebexMessageHandlerLike;
22
- }
23
- export declare class WebexBotListener {
24
- private client;
25
- private options;
26
- private running;
27
- private emitter;
28
- private handler;
29
- private generation;
30
- private detachHandler;
31
- private startPromise;
32
- constructor(client: WebexBotClientLike, options?: WebexBotListenerOptions);
1
+ import { WebexListener } from '../webex/listener.js';
2
+ export type { WebexListenerClient as WebexBotListenerClient, WebexListenerOptions as WebexBotListenerOptions, } from '../webex/listener.js';
3
+ export declare class WebexBotListener extends WebexListener {
33
4
  start(): Promise<void>;
34
- stop(): Promise<void>;
35
- on<K extends EventKey>(event: K, listener: (...args: WebexBotListenerEventMap[K]) => void): this;
36
- off<K extends EventKey>(event: K, listener: (...args: WebexBotListenerEventMap[K]) => void): this;
37
- once<K extends EventKey>(event: K, listener: (...args: WebexBotListenerEventMap[K]) => void): this;
38
- private isCurrent;
39
- private emitError;
40
- private createHandler;
41
- private wireHandler;
42
5
  }
43
- export {};
44
6
  //# sourceMappingURL=listener.d.ts.map