agent-messenger 2.9.0 → 2.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/dist/package.json +1 -1
  3. package/dist/src/platforms/teams/client.d.ts +9 -1
  4. package/dist/src/platforms/teams/client.d.ts.map +1 -1
  5. package/dist/src/platforms/teams/client.js +69 -18
  6. package/dist/src/platforms/teams/client.js.map +1 -1
  7. package/dist/src/platforms/teams/commands/auth.d.ts.map +1 -1
  8. package/dist/src/platforms/teams/commands/auth.js +7 -2
  9. package/dist/src/platforms/teams/commands/auth.js.map +1 -1
  10. package/dist/src/platforms/teams/commands/channel.d.ts.map +1 -1
  11. package/dist/src/platforms/teams/commands/channel.js +18 -3
  12. package/dist/src/platforms/teams/commands/channel.js.map +1 -1
  13. package/dist/src/platforms/teams/commands/file.d.ts.map +1 -1
  14. package/dist/src/platforms/teams/commands/file.js +18 -3
  15. package/dist/src/platforms/teams/commands/file.js.map +1 -1
  16. package/dist/src/platforms/teams/commands/message.d.ts.map +1 -1
  17. package/dist/src/platforms/teams/commands/message.js +24 -4
  18. package/dist/src/platforms/teams/commands/message.js.map +1 -1
  19. package/dist/src/platforms/teams/commands/reaction.d.ts.map +1 -1
  20. package/dist/src/platforms/teams/commands/reaction.js +12 -2
  21. package/dist/src/platforms/teams/commands/reaction.js.map +1 -1
  22. package/dist/src/platforms/teams/commands/snapshot.d.ts.map +1 -1
  23. package/dist/src/platforms/teams/commands/snapshot.js +6 -1
  24. package/dist/src/platforms/teams/commands/snapshot.js.map +1 -1
  25. package/dist/src/platforms/teams/commands/team.d.ts.map +1 -1
  26. package/dist/src/platforms/teams/commands/team.js +6 -1
  27. package/dist/src/platforms/teams/commands/team.js.map +1 -1
  28. package/dist/src/platforms/teams/commands/user.d.ts.map +1 -1
  29. package/dist/src/platforms/teams/commands/user.js +18 -3
  30. package/dist/src/platforms/teams/commands/user.js.map +1 -1
  31. package/dist/src/platforms/teams/commands/whoami.d.ts.map +1 -1
  32. package/dist/src/platforms/teams/commands/whoami.js +6 -1
  33. package/dist/src/platforms/teams/commands/whoami.js.map +1 -1
  34. package/dist/src/platforms/teams/credential-manager.d.ts +3 -1
  35. package/dist/src/platforms/teams/credential-manager.d.ts.map +1 -1
  36. package/dist/src/platforms/teams/credential-manager.js +6 -1
  37. package/dist/src/platforms/teams/credential-manager.js.map +1 -1
  38. package/dist/src/platforms/teams/ensure-auth.d.ts.map +1 -1
  39. package/dist/src/platforms/teams/ensure-auth.js +7 -2
  40. package/dist/src/platforms/teams/ensure-auth.js.map +1 -1
  41. package/dist/src/platforms/teams/token-extractor.d.ts +3 -1
  42. package/dist/src/platforms/teams/token-extractor.d.ts.map +1 -1
  43. package/dist/src/platforms/teams/token-extractor.js +67 -10
  44. package/dist/src/platforms/teams/token-extractor.js.map +1 -1
  45. package/dist/src/platforms/teams/types.d.ts +17 -0
  46. package/dist/src/platforms/teams/types.d.ts.map +1 -1
  47. package/dist/src/platforms/teams/types.js +2 -0
  48. package/dist/src/platforms/teams/types.js.map +1 -1
  49. package/dist/src/platforms/webex/client.d.ts +3 -0
  50. package/dist/src/platforms/webex/client.d.ts.map +1 -1
  51. package/dist/src/platforms/webex/client.js +58 -13
  52. package/dist/src/platforms/webex/client.js.map +1 -1
  53. package/dist/src/platforms/webex/commands/auth.d.ts.map +1 -1
  54. package/dist/src/platforms/webex/commands/auth.js +61 -10
  55. package/dist/src/platforms/webex/commands/auth.js.map +1 -1
  56. package/dist/src/platforms/webex/credential-manager.d.ts.map +1 -1
  57. package/dist/src/platforms/webex/credential-manager.js +18 -6
  58. package/dist/src/platforms/webex/credential-manager.js.map +1 -1
  59. package/dist/src/platforms/webex/encryption.d.ts.map +1 -1
  60. package/dist/src/platforms/webex/encryption.js +3 -1
  61. package/dist/src/platforms/webex/encryption.js.map +1 -1
  62. package/dist/src/platforms/webex/ensure-auth.d.ts.map +1 -1
  63. package/dist/src/platforms/webex/ensure-auth.js +10 -2
  64. package/dist/src/platforms/webex/ensure-auth.js.map +1 -1
  65. package/dist/src/platforms/webex/token-extractor.d.ts +1 -0
  66. package/dist/src/platforms/webex/token-extractor.d.ts.map +1 -1
  67. package/dist/src/platforms/webex/token-extractor.js +21 -4
  68. package/dist/src/platforms/webex/token-extractor.js.map +1 -1
  69. package/e2e/webex.e2e.test.ts +57 -0
  70. package/package.json +1 -1
  71. package/skills/agent-channeltalk/SKILL.md +1 -1
  72. package/skills/agent-channeltalkbot/SKILL.md +1 -1
  73. package/skills/agent-discord/SKILL.md +1 -1
  74. package/skills/agent-discordbot/SKILL.md +1 -1
  75. package/skills/agent-instagram/SKILL.md +1 -1
  76. package/skills/agent-kakaotalk/SKILL.md +1 -1
  77. package/skills/agent-line/SKILL.md +1 -1
  78. package/skills/agent-slack/SKILL.md +1 -1
  79. package/skills/agent-slackbot/SKILL.md +1 -1
  80. package/skills/agent-teams/SKILL.md +1 -1
  81. package/skills/agent-telegram/SKILL.md +1 -1
  82. package/skills/agent-webex/SKILL.md +1 -1
  83. package/skills/agent-wechatbot/SKILL.md +1 -1
  84. package/skills/agent-whatsapp/SKILL.md +1 -1
  85. package/skills/agent-whatsappbot/SKILL.md +1 -1
  86. package/src/platforms/teams/client.test.ts +34 -30
  87. package/src/platforms/teams/client.ts +92 -20
  88. package/src/platforms/teams/commands/auth.test.ts +6 -2
  89. package/src/platforms/teams/commands/auth.ts +7 -2
  90. package/src/platforms/teams/commands/channel.test.ts +6 -6
  91. package/src/platforms/teams/commands/channel.ts +18 -3
  92. package/src/platforms/teams/commands/file.ts +18 -3
  93. package/src/platforms/teams/commands/message.ts +24 -4
  94. package/src/platforms/teams/commands/reaction.ts +12 -2
  95. package/src/platforms/teams/commands/snapshot.ts +6 -1
  96. package/src/platforms/teams/commands/team.test.ts +2 -2
  97. package/src/platforms/teams/commands/team.ts +6 -1
  98. package/src/platforms/teams/commands/user.ts +18 -3
  99. package/src/platforms/teams/commands/whoami.ts +6 -1
  100. package/src/platforms/teams/credential-manager.test.ts +25 -0
  101. package/src/platforms/teams/credential-manager.ts +13 -3
  102. package/src/platforms/teams/ensure-auth.test.ts +6 -1
  103. package/src/platforms/teams/ensure-auth.ts +7 -2
  104. package/src/platforms/teams/token-extractor.ts +77 -12
  105. package/src/platforms/teams/types.test.ts +17 -0
  106. package/src/platforms/teams/types.ts +6 -0
  107. package/src/platforms/webex/client.test.ts +157 -13
  108. package/src/platforms/webex/client.ts +64 -15
  109. package/src/platforms/webex/commands/auth.test.ts +122 -1
  110. package/src/platforms/webex/commands/auth.ts +72 -17
  111. package/src/platforms/webex/credential-manager.test.ts +63 -0
  112. package/src/platforms/webex/credential-manager.ts +22 -8
  113. package/src/platforms/webex/encryption.test.ts +54 -0
  114. package/src/platforms/webex/encryption.ts +3 -1
  115. package/src/platforms/webex/ensure-auth.ts +10 -2
  116. package/src/platforms/webex/token-extractor.test.ts +32 -3
  117. package/src/platforms/webex/token-extractor.ts +26 -5
@@ -9,7 +9,11 @@ export async function ensureWebexAuth() {
9
9
  const token = await credManager.getToken(config.clientId, config.clientSecret);
10
10
  if (token) {
11
11
  const client = new WebexClient();
12
- await client.login({ token });
12
+ await client.login({
13
+ token,
14
+ deviceUrl: config.deviceUrl,
15
+ tokenType: config.tokenType,
16
+ });
13
17
  await client.testAuth();
14
18
  return;
15
19
  }
@@ -19,7 +23,11 @@ export async function ensureWebexAuth() {
19
23
  if (!extracted)
20
24
  return;
21
25
  const client = new WebexClient();
22
- await client.login({ token: extracted.accessToken });
26
+ await client.login({
27
+ token: extracted.accessToken,
28
+ deviceUrl: extracted.deviceUrl,
29
+ tokenType: 'extracted',
30
+ });
23
31
  await client.testAuth();
24
32
  await credManager.saveConfig({
25
33
  accessToken: extracted.accessToken,
@@ -1 +1 @@
1
- {"version":3,"file":"ensure-auth.js","sourceRoot":"","sources":["../../../../src/platforms/webex/ensure-auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACtC,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAEvD,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,IAAI,sBAAsB,EAAE,CAAA;QAChD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,UAAU,EAAE,CAAA;QAE7C,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,YAAY,CAAC,CAAA;YAC9E,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE,CAAA;gBAChC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;gBAC7B,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAA;gBACvB,OAAM;YACR,CAAC;QACH,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,mBAAmB,EAAE,CAAA;QAC3C,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,CAAA;QAC3C,IAAI,CAAC,SAAS;YAAE,OAAM;QAEtB,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE,CAAA;QAChC,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,WAAW,EAAE,CAAC,CAAA;QACpD,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAA;QAEvB,MAAM,WAAW,CAAC,UAAU,CAAC;YAC3B,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,YAAY,EAAE,SAAS,CAAC,YAAY,IAAI,EAAE;YAC1C,SAAS,EAAE,SAAS,CAAC,SAAS,IAAI,CAAC;YACnC,SAAS,EAAE,WAAW;YACtB,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,cAAc,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS;SACpG,CAAC,CAAA;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,8EAA8E;IAChF,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"ensure-auth.js","sourceRoot":"","sources":["../../../../src/platforms/webex/ensure-auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACtC,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAEvD,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,IAAI,sBAAsB,EAAE,CAAA;QAChD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,UAAU,EAAE,CAAA;QAE7C,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,YAAY,CAAC,CAAA;YAC9E,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE,CAAA;gBAChC,MAAM,MAAM,CAAC,KAAK,CAAC;oBACjB,KAAK;oBACL,SAAS,EAAE,MAAM,CAAC,SAAS;oBAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;iBAC5B,CAAC,CAAA;gBACF,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAA;gBACvB,OAAM;YACR,CAAC;QACH,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,mBAAmB,EAAE,CAAA;QAC3C,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,CAAA;QAC3C,IAAI,CAAC,SAAS;YAAE,OAAM;QAEtB,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE,CAAA;QAChC,MAAM,MAAM,CAAC,KAAK,CAAC;YACjB,KAAK,EAAE,SAAS,CAAC,WAAW;YAC5B,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,SAAS,EAAE,WAAW;SACvB,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAA;QAEvB,MAAM,WAAW,CAAC,UAAU,CAAC;YAC3B,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,YAAY,EAAE,SAAS,CAAC,YAAY,IAAI,EAAE;YAC1C,SAAS,EAAE,SAAS,CAAC,SAAS,IAAI,CAAC;YACnC,SAAS,EAAE,WAAW;YACtB,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,cAAc,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS;SACpG,CAAC,CAAA;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,8EAA8E;IAChF,CAAC;AACH,CAAC"}
@@ -16,6 +16,7 @@ export declare class WebexTokenExtractor {
16
16
  private getBrowserBasePath;
17
17
  private discoverProfileDirs;
18
18
  extract(): Promise<ExtractedWebexToken | null>;
19
+ private isTokenFresher;
19
20
  private scanViaClassicLevelCopy;
20
21
  private copyAndScanLevelDB;
21
22
  private scanRawFiles;
@@ -1 +1 @@
1
- {"version":3,"file":"token-extractor.d.ts","sourceRoot":"","sources":["../../../../src/platforms/webex/token-extractor.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACrC;AA2DD,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,QAAQ,CAAoC;gBAExC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE,MAAM;IAM9F,OAAO,CAAC,KAAK;IAIb,qBAAqB,IAAI,MAAM,EAAE;IAkBjC,OAAO,CAAC,kBAAkB;IAqB1B,OAAO,CAAC,mBAAmB;IA4BrB,OAAO,IAAI,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;YA6BtC,uBAAuB;YA2BvB,kBAAkB;IAuChC,OAAO,CAAC,YAAY;IAqDpB,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,sBAAsB;IAe9B,OAAO,CAAC,sBAAsB;IAgC9B,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI;IAuC9D,OAAO,CAAC,+BAA+B;CA4BxC"}
1
+ {"version":3,"file":"token-extractor.d.ts","sourceRoot":"","sources":["../../../../src/platforms/webex/token-extractor.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACrC;AA2DD,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,QAAQ,CAAoC;gBAExC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE,MAAM;IAM9F,OAAO,CAAC,KAAK;IAIb,qBAAqB,IAAI,MAAM,EAAE;IAkBjC,OAAO,CAAC,kBAAkB;IAqB1B,OAAO,CAAC,mBAAmB;IA4BrB,OAAO,IAAI,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAwCpD,OAAO,CAAC,cAAc;YAUR,uBAAuB;YA2BvB,kBAAkB;IAuChC,OAAO,CAAC,YAAY;IAqDpB,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,sBAAsB;IAe9B,OAAO,CAAC,sBAAsB;IAgC9B,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI;IAuC9D,OAAO,CAAC,+BAA+B;CA4BxC"}
@@ -126,20 +126,37 @@ export class WebexTokenExtractor {
126
126
  this.debug('No browser profile directories found');
127
127
  return null;
128
128
  }
129
+ let best = null;
129
130
  for (const leveldbDir of profileDirs) {
130
131
  this.debug(`Scanning: ${leveldbDir}`);
131
132
  const result = (await this.scanViaClassicLevelCopy(leveldbDir)) ?? this.scanRawFiles(leveldbDir);
132
133
  if (result?.token) {
133
- this.debug(`Found token in: ${leveldbDir}`);
134
134
  const token = result.token;
135
135
  if (result.encryptionKeys.size > 0) {
136
136
  token.encryptionKeys = result.encryptionKeys;
137
137
  }
138
- return token;
138
+ this.debug(`Found token in: ${leveldbDir} (expires: ${token.expiresAt ? new Date(token.expiresAt).toISOString() : 'unknown'}, length: ${token.accessToken.length})`);
139
+ if (!best || this.isTokenFresher(token, best.token)) {
140
+ best = { token, source: leveldbDir };
141
+ }
139
142
  }
140
143
  }
141
- this.debug('No Webex tokens found in any browser profile');
142
- return null;
144
+ if (!best) {
145
+ this.debug('No Webex tokens found in any browser profile');
146
+ return null;
147
+ }
148
+ this.debug(`Selected token from: ${best.source}`);
149
+ return best.token;
150
+ }
151
+ isTokenFresher(candidate, current) {
152
+ const candidateExpiry = candidate.expiresAt ?? 0;
153
+ const currentExpiry = current.expiresAt ?? 0;
154
+ if (candidateExpiry > 0 && currentExpiry > 0) {
155
+ return candidateExpiry > currentExpiry;
156
+ }
157
+ if (candidateExpiry > 0 && currentExpiry === 0)
158
+ return true;
159
+ return false;
143
160
  }
144
161
  async scanViaClassicLevelCopy(dbPath) {
145
162
  const tempDir = join(tmpdir(), `webex-leveldb-${Date.now()}-${Math.random().toString(36).slice(2)}`);
@@ -1 +1 @@
1
- {"version":3,"file":"token-extractor.js","sourceRoot":"","sources":["../../../../src/platforms/webex/token-extractor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"token-extractor.js","sourceRoot":"","sources":["../../../../src/platforms/webex/token-extractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAC1G,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAkB5C,MAAM,QAAQ,GAAoB;IAChC;QACE,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAChC,KAAK,EAAE,eAAe;QACtB,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC;KAC7C;IACD;QACE,IAAI,EAAE,eAAe;QACrB,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;QACvC,KAAK,EAAE,wBAAwB;QAC/B,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,YAAY,EAAE,WAAW,CAAC;KACjD;IACD;QACE,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC;QAC9B,KAAK,EAAE,gBAAgB;QACvB,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC;KAC9C;IACD;QACE,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC;QAChC,KAAK,EAAE,EAAE;QACT,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC;KAChC;IACD;QACE,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,eAAe,CAAC;QAC9C,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,eAAe,CAAC;QAC7C,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,eAAe,EAAE,WAAW,CAAC;KAC3D;IACD;QACE,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;QACjB,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC;KACpC;IACD;QACE,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,UAAU;QAClB,KAAK,EAAE,UAAU;QACjB,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC;KACrC;CACF,CAAA;AAOD,MAAM,OAAO,mBAAmB;IACtB,QAAQ,CAAiB;IACzB,OAAO,CAAe;IACtB,QAAQ,CAAoC;IAEpD,YAAY,QAA0B,EAAE,QAAoC,EAAE,OAAgB;QAC5F,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAA;QAC5C,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAA;QAChC,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,IAAI,CAAA;IAChC,CAAC;IAEO,KAAK,CAAC,OAAe;QAC3B,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAA;IAC1B,CAAC;IAED,qBAAqB;QACnB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC/C,CAAC;QAED,MAAM,IAAI,GAAa,EAAE,CAAA;QAEzB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAA;YACpD,IAAI,CAAC,WAAW;gBAAE,SAAQ;YAE1B,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAA;YACzD,IAAI,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAA;QAC3B,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAEO,kBAAkB,CAAC,OAAsB;QAC/C,IAAI,QAAgB,CAAA;QAEpB,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;YACtB,KAAK,QAAQ;gBACX,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAA;gBACzB,IAAI,CAAC,QAAQ;oBAAE,OAAO,IAAI,CAAA;gBAC1B,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,qBAAqB,EAAE,QAAQ,CAAC,CAAA;YACpE,KAAK,OAAO;gBACV,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAA;gBACxB,IAAI,CAAC,QAAQ;oBAAE,OAAO,IAAI,CAAA;gBAC1B,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;YAC7C,KAAK,OAAO;gBACV,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAA;gBACxB,IAAI,CAAC,QAAQ;oBAAE,OAAO,IAAI,CAAA;gBAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAA;YACxF;gBACE,OAAO,IAAI,CAAA;QACf,CAAC;IACH,CAAC;IAEO,mBAAmB,CAAC,WAAmB;QAC7C,MAAM,IAAI,GAAa,EAAE,CAAA;QAEzB,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;YAAE,OAAO,IAAI,CAAA;QAEzC,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,CAAC,CAAA;QAC/E,IAAI,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QAC3B,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,WAAW,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;YACjE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;oBAAE,SAAQ;gBAClC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;oBAAE,SAAQ;gBAEhD,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,EAAE,eAAe,EAAE,SAAS,CAAC,CAAA;gBACzE,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;oBACxB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBACpB,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,qBAAqB;QACvB,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAA;QAEhD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAA;YAClD,OAAO,IAAI,CAAA;QACb,CAAC;QAED,IAAI,IAAI,GAA0D,IAAI,CAAA;QAEtE,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,IAAI,CAAC,KAAK,CAAC,aAAa,UAAU,EAAE,CAAC,CAAA;YAErC,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAA;YAEhG,IAAI,MAAM,EAAE,KAAK,EAAE,CAAC;gBAClB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;gBAC1B,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;oBACnC,KAAK,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAA;gBAC9C,CAAC;gBAED,IAAI,CAAC,KAAK,CACR,mBAAmB,UAAU,cAAc,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,aAAa,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CACzJ,CAAA;gBAED,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBACpD,IAAI,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAA;gBACtC,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAA;YAC1D,OAAO,IAAI,CAAA;QACb,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,wBAAwB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;QACjD,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAEO,cAAc,CAAC,SAA8B,EAAE,OAA4B;QACjF,MAAM,eAAe,GAAG,SAAS,CAAC,SAAS,IAAI,CAAC,CAAA;QAChD,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,CAAA;QAC5C,IAAI,eAAe,GAAG,CAAC,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;YAC7C,OAAO,eAAe,GAAG,aAAa,CAAA;QACxC,CAAC;QACD,IAAI,eAAe,GAAG,CAAC,IAAI,aAAa,KAAK,CAAC;YAAE,OAAO,IAAI,CAAA;QAC3D,OAAO,KAAK,CAAA;IACd,CAAC;IAEO,KAAK,CAAC,uBAAuB,CAAC,MAAc;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,iBAAiB,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QAEpG,IAAI,CAAC;YACH,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YAEvC,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,CAAA;YACjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,IAAI,KAAK,MAAM;oBAAE,SAAQ;gBAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;gBAC9B,IAAI,CAAC;oBACH,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;wBAC3B,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAA;oBACxC,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;YACZ,CAAC;YAED,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAA;QAC/C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAA;QACb,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC;gBACH,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;YACnD,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACZ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,MAAc;QAC7C,IAAI,EAAE,GAAwC,IAAI,CAAA;QAClD,IAAI,KAAK,GAA+B,IAAI,CAAA;QAC5C,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAA;QAEhD,IAAI,CAAC;YACH,EAAE,GAAG,IAAI,YAAY,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAA;YAE/E,IAAI,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;gBAC/C,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC;oBAAE,SAAQ;gBAE5C,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAA;gBAE9C,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC;oBACtF,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAA;gBAC9C,CAAC;gBAED,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACnE,MAAM,KAAK,GAAG,IAAI,CAAC,+BAA+B,CAAC,OAAO,CAAC,CAAA;oBAC3D,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;wBAClC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;oBACjC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;YAChF,OAAO,IAAI,CAAA;QACb,CAAC;gBAAS,CAAC;YACT,IAAI,EAAE,EAAE,CAAC;gBACP,IAAI,CAAC;oBACH,MAAM,EAAE,CAAC,KAAK,EAAE,CAAA;gBAClB,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;YACZ,CAAC;QACH,CAAC;QAED,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAA;QACvB,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,CAAA;IAClC,CAAC;IAEO,YAAY,CAAC,UAAkB;QACrC,IAAI,KAAK,GAA+B,IAAI,CAAA;QAC5C,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAA;QAEhD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,WAAW,CAAC,UAAU,CAAC,CAAA;YAErC,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC;iBACtB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;iBACvD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACb,MAAM,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;gBACzC,MAAM,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;gBACzC,IAAI,MAAM,KAAK,MAAM;oBAAE,OAAO,MAAM,GAAG,MAAM,CAAA;gBAC7C,IAAI,CAAC;oBACH,OAAO,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;gBACtF,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,CAAC,CAAA;gBACV,CAAC;YACH,CAAC,CAAC,CAAA;YAEJ,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;gBAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;gBACvC,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAA;oBAC/B,IAAI,IAAI,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI;wBAAE,SAAQ;oBAE1C,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;oBACrC,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAA;oBAEzE,KAAK,MAAM,OAAO,IAAI,UAAU,EAAE,CAAC;wBACjC,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC;4BACtF,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAA;wBAC9C,CAAC;wBAED,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;4BACnE,MAAM,KAAK,GAAG,IAAI,CAAC,+BAA+B,CAAC,OAAO,CAAC,CAAA;4BAC3D,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;gCAClC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;4BACjC,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,wBAAwB;gBAC1B,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,KAAK,CAAC,6BAA6B,UAAU,EAAE,CAAC,CAAA;QACvD,CAAC;QAED,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAA;QACvB,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,CAAA;IAClC,CAAC;IAEO,kBAAkB,CAAC,GAAW;QACpC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QAC/C,4EAA4E;QAC5E,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAClD,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;QAC5C,CAAC;QACD,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACpB,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QACzC,CAAC;QACD,OAAO,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC7B,CAAC;IAEO,cAAc,CAAC,MAAc;QACnC,MAAM,KAAK,GAAa,EAAE,CAAA;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAA;QAC7C,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC5C,CAAC;IAEO,sBAAsB,CAAC,OAAe;QAC5C,MAAM,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAA;QAC7D,MAAM,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;QAE1D,MAAM,SAAS,GACb,oBAAoB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,kBAAkB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAE1G,IAAI,SAAS,KAAK,CAAC,CAAC;YAAE,OAAO,IAAI,CAAA;QAEjC,MAAM,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;QAC5D,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAA;QAEtB,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAA;IACrC,CAAC;IAEO,sBAAsB,CAAC,OAAe,EAAE,SAAiB;QAC/D,IAAI,KAAK,GAAG,CAAC,CAAA;QACb,IAAI,KAAK,GAAG,CAAC,CAAC,CAAA;QACd,KAAK,IAAI,CAAC,GAAG,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG;gBAAE,KAAK,EAAE,CAAA;YAC/B,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBACvB,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;oBAChB,KAAK,GAAG,CAAC,CAAA;oBACT,MAAK;gBACP,CAAC;gBACD,KAAK,EAAE,CAAA;YACT,CAAC;QACH,CAAC;QACD,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE,OAAO,IAAI,CAAA;QAE7B,KAAK,GAAG,CAAC,CAAA;QACT,IAAI,GAAG,GAAG,CAAC,CAAC,CAAA;QACZ,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG;gBAAE,KAAK,EAAE,CAAA;YAC/B,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBACvB,KAAK,EAAE,CAAA;gBACP,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;oBAChB,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;oBACX,MAAK;gBACP,CAAC;YACH,CAAC;QACH,CAAC;QACD,IAAI,GAAG,KAAK,CAAC,CAAC;YAAE,OAAO,IAAI,CAAA;QAE3B,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IACtC,CAAC;IAED,iBAAiB,CAAC,OAAe;QAC/B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YAEhC,MAAM,UAAU,GAAG,IAAI,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE,UAAU,IAAI,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,UAAU,IAAI,IAAI,EAAE,UAAU,IAAI,IAAI,CAAA;YAE9G,IAAI,CAAC,UAAU,EAAE,YAAY;gBAAE,OAAO,IAAI,CAAA;YAE1C,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;YACnD,IAAI,WAAW,CAAC,MAAM,GAAG,EAAE;gBAAE,OAAO,IAAI,CAAA;YAExC,MAAM,MAAM,GAAwB,EAAE,WAAW,EAAE,CAAA;YAEnD,IAAI,UAAU,CAAC,aAAa,EAAE,CAAC;gBAC7B,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;YACxD,CAAC;YAED,IAAI,OAAO,UAAU,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAC3C,MAAM,CAAC,SAAS,GAAG,UAAU,CAAC,OAAO,CAAA;YACvC,CAAC;iBAAM,IAAI,OAAO,UAAU,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;gBACrD,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,UAAU,GAAG,IAAI,CAAA;YAC9D,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,IAAI,IAAI,CAAA;YAC5E,IAAI,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;gBAC/C,MAAM,CAAC,SAAS,GAAG,SAAS,CAAA;YAC9B,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,IAAI,IAAI,CAAA;YAClD,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACzC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAA;YACxB,CAAC;YAED,OAAO,MAAM,CAAA;QACf,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IAEO,+BAA+B,CAAC,OAAe;QACrD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAA;QAEtC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrE,OAAO,IAAI,CAAA;QACb,CAAC;QAED,8EAA8E;QAC9E,mFAAmF;QACnF,uDAAuD;QACvD,MAAM,UAAU,GAAG,8CAA8C,CAAA;QACjE,IAAI,KAA6B,CAAA;QAEjC,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACnD,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAE,CAAA;YACrB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAE,CAAA;YAC1B,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAY,CAAA;gBAChD,IAAI,OAAO,QAAQ,KAAK,QAAQ;oBAAE,SAAQ;gBAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAA4B,CAAA;gBAC9D,IAAI,MAAM,EAAE,GAAG,EAAE,CAAC;oBAChB,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;gBACzB,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACZ,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;CACF"}
@@ -117,7 +117,64 @@ describe('Webex E2E Tests', () => {
117
117
 
118
118
  const result = await runCLI('webex', ['message', 'edit', sent!.id, WEBEX_TEST_SPACE_ID, `edited ${testId}`])
119
119
  expect(result.exitCode).toBe(0)
120
+
121
+ const edited = parseJSON<{ id: string; text: string }>(result.stdout)
122
+ expect(edited?.id).toBeTruthy()
123
+ expect(edited?.text).toBe(`edited ${testId}`)
120
124
  }, 30000)
125
+
126
+ // Regression for the silent-edit-failure bug: plain-text and markdown edits go
127
+ // through different `buildEncryptedObject` branches, and a second edit catches
128
+ // cases where the first edit corrupted the activity chain.
129
+ //
130
+ // Uses `editWithRetry` because the Webex internal conversation endpoint has
131
+ // a tighter 429 budget than the public REST gateway, and internal requests
132
+ // do not share the same auto-retry logic as public-API requests.
133
+ const editWithRetry = async (args: string[]) => {
134
+ for (let attempt = 0; attempt < 3; attempt++) {
135
+ const r = await runCLI('webex', args)
136
+ if (r.exitCode === 0 || !r.stderr.includes('HTTP 429')) return r
137
+ await waitForRateLimit(5000 * (attempt + 1))
138
+ }
139
+ return runCLI('webex', args)
140
+ }
141
+
142
+ test('message edit survives second edit and markdown edit (regression for silent failure)', async () => {
143
+ if (!webexAvailable) return
144
+
145
+ const testId = generateTestId()
146
+ const sendResult = await runCLI('webex', ['message', 'send', WEBEX_TEST_SPACE_ID, `regression ${testId}`])
147
+ expect(sendResult.exitCode).toBe(0)
148
+
149
+ const sent = parseJSON<{ id: string }>(sendResult.stdout)
150
+ expect(sent?.id).toBeTruthy()
151
+ if (sent?.id) testMessages.push(sent.id)
152
+
153
+ await waitForRateLimit(3000)
154
+
155
+ const first = await editWithRetry(['message', 'edit', sent!.id, WEBEX_TEST_SPACE_ID, `first edit ${testId}`])
156
+ expect(first.exitCode).toBe(0)
157
+ expect(first.stderr).not.toContain('edit_failed')
158
+ expect(first.stderr).not.toContain('Edit rejected')
159
+
160
+ await waitForRateLimit(3000)
161
+
162
+ const second = await editWithRetry([
163
+ 'message',
164
+ 'edit',
165
+ sent!.id,
166
+ WEBEX_TEST_SPACE_ID,
167
+ `**second edit** ${testId}`,
168
+ '--markdown',
169
+ ])
170
+ expect(second.exitCode).toBe(0)
171
+ expect(second.stderr).not.toContain('edit_failed')
172
+ expect(second.stderr).not.toContain('Edit rejected')
173
+
174
+ const secondData = parseJSON<{ id: string; text: string }>(second.stdout)
175
+ expect(secondData?.id).toBeTruthy()
176
+ expect(secondData?.text).toContain(testId)
177
+ }, 60000)
121
178
  })
122
179
 
123
180
  describe('space', () => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-messenger",
3
- "version": "2.9.0",
3
+ "version": "2.10.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.9.0
4
+ version: 2.10.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.9.0
4
+ version: 2.10.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.9.0
4
+ version: 2.10.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.9.0
4
+ version: 2.10.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.9.0
4
+ version: 2.10.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.9.0
4
+ version: 2.10.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.9.0
4
+ version: 2.10.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.9.0
4
+ version: 2.10.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.9.0
4
+ version: 2.10.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.9.0
4
+ version: 2.10.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.9.0
4
+ version: 2.10.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.9.0
4
+ version: 2.10.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.9.0
4
+ version: 2.10.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.9.0
4
+ version: 2.10.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.9.0
4
+ version: 2.10.0
5
5
  allowed-tools: Bash(agent-whatsappbot:*)
6
6
  metadata:
7
7
  openclaw:
@@ -55,18 +55,18 @@ describe('TeamsClient', () => {
55
55
 
56
56
  describe('login', () => {
57
57
  test('requires token', async () => {
58
- await expect(new TeamsClient().login({ token: '' })).rejects.toThrow(TeamsError)
59
- await expect(new TeamsClient().login({ token: '' })).rejects.toThrow('Token is required')
58
+ await expect(new TeamsClient().login({ token: '', region: 'emea' })).rejects.toThrow(TeamsError)
59
+ await expect(new TeamsClient().login({ token: '', region: 'emea' })).rejects.toThrow('Token is required')
60
60
  })
61
61
 
62
62
  test('accepts valid token', async () => {
63
- const client = await new TeamsClient().login({ token: 'test-token' })
63
+ const client = await new TeamsClient().login({ token: 'test-token', region: 'emea' })
64
64
  expect(client).toBeInstanceOf(TeamsClient)
65
65
  })
66
66
 
67
67
  test('accepts token with expiry time', async () => {
68
68
  const expiresAt = new Date(Date.now() + 3600000).toISOString()
69
- const client = await new TeamsClient().login({ token: 'test-token', tokenExpiresAt: expiresAt })
69
+ const client = await new TeamsClient().login({ token: 'test-token', tokenExpiresAt: expiresAt, region: 'emea' })
70
70
  expect(client).toBeInstanceOf(TeamsClient)
71
71
  })
72
72
  })
@@ -74,7 +74,11 @@ describe('TeamsClient', () => {
74
74
  describe('token expiry', () => {
75
75
  test('throws when token is expired', async () => {
76
76
  const expiredAt = new Date(Date.now() - 1000).toISOString()
77
- const client = await new TeamsClient().login({ token: 'expired-token', tokenExpiresAt: expiredAt })
77
+ const client = await new TeamsClient().login({
78
+ token: 'expired-token',
79
+ tokenExpiresAt: expiredAt,
80
+ region: 'emea',
81
+ })
78
82
 
79
83
  await expect(client.testAuth()).rejects.toThrow(TeamsError)
80
84
  await expect(client.testAuth()).rejects.toThrow('Token has expired')
@@ -87,7 +91,7 @@ describe('TeamsClient', () => {
87
91
  locale: 'en-us',
88
92
  })
89
93
 
90
- const client = await new TeamsClient().login({ token: 'valid-token', tokenExpiresAt: expiresAt })
94
+ const client = await new TeamsClient().login({ token: 'valid-token', tokenExpiresAt: expiresAt, region: 'emea' })
91
95
  const user = await client.testAuth()
92
96
 
93
97
  expect(user.id).toBe('ME')
@@ -102,7 +106,7 @@ describe('TeamsClient', () => {
102
106
  locale: 'en-us',
103
107
  })
104
108
 
105
- const client = await new TeamsClient().login({ token: 'test-token' })
109
+ const client = await new TeamsClient().login({ token: 'test-token', region: 'emea' })
106
110
  const user = await client.testAuth()
107
111
 
108
112
  expect(user.id).toBe('ME')
@@ -117,7 +121,7 @@ describe('TeamsClient', () => {
117
121
  test('throws TeamsError on API error', async () => {
118
122
  mockResponse({ message: 'Unauthorized', code: 'unauthorized' }, 401)
119
123
 
120
- const client = await new TeamsClient().login({ token: 'bad-token' })
124
+ const client = await new TeamsClient().login({ token: 'bad-token', region: 'emea' })
121
125
  await expect(client.testAuth()).rejects.toThrow(TeamsError)
122
126
  })
123
127
  })
@@ -153,7 +157,7 @@ describe('TeamsClient', () => {
153
157
  ],
154
158
  })
155
159
 
156
- const client = await new TeamsClient().login({ token: 'test-token' })
160
+ const client = await new TeamsClient().login({ token: 'test-token', region: 'emea' })
157
161
  const teams = await client.listTeams()
158
162
 
159
163
  expect(teams).toHaveLength(2)
@@ -169,7 +173,7 @@ describe('TeamsClient', () => {
169
173
  test('returns team info', async () => {
170
174
  mockResponse({ id: '111', name: 'Test Team', description: 'A test team' })
171
175
 
172
- const client = await new TeamsClient().login({ token: 'test-token' })
176
+ const client = await new TeamsClient().login({ token: 'test-token', region: 'emea' })
173
177
  const team = await client.getTeam('111')
174
178
 
175
179
  expect(team.id).toBe('111')
@@ -185,7 +189,7 @@ describe('TeamsClient', () => {
185
189
  { id: 'ch2', team_id: '111', name: 'Random', type: 'standard' },
186
190
  ])
187
191
 
188
- const client = await new TeamsClient().login({ token: 'test-token' })
192
+ const client = await new TeamsClient().login({ token: 'test-token', region: 'emea' })
189
193
  const channels = await client.listChannels('111')
190
194
 
191
195
  expect(channels).toHaveLength(2)
@@ -198,7 +202,7 @@ describe('TeamsClient', () => {
198
202
  test('returns channel info', async () => {
199
203
  mockResponse({ id: 'ch1', team_id: '111', name: 'General', type: 'standard' })
200
204
 
201
- const client = await new TeamsClient().login({ token: 'test-token' })
205
+ const client = await new TeamsClient().login({ token: 'test-token', region: 'emea' })
202
206
  const channel = await client.getChannel('111', 'ch1')
203
207
 
204
208
  expect(channel.id).toBe('ch1')
@@ -217,7 +221,7 @@ describe('TeamsClient', () => {
217
221
  timestamp: '2024-01-01T00:00:00.000Z',
218
222
  })
219
223
 
220
- const client = await new TeamsClient().login({ token: 'test-token' })
224
+ const client = await new TeamsClient().login({ token: 'test-token', region: 'emea' })
221
225
  const message = await client.sendMessage('111', 'ch1', 'Hello world')
222
226
 
223
227
  expect(message.content).toBe('Hello world')
@@ -239,7 +243,7 @@ describe('TeamsClient', () => {
239
243
  },
240
244
  ])
241
245
 
242
- const client = await new TeamsClient().login({ token: 'test-token' })
246
+ const client = await new TeamsClient().login({ token: 'test-token', region: 'emea' })
243
247
  const messages = await client.getMessages('111', 'ch1', 50)
244
248
 
245
249
  expect(messages).toHaveLength(1)
@@ -252,7 +256,7 @@ describe('TeamsClient', () => {
252
256
  test('uses default limit of 50', async () => {
253
257
  mockResponse([])
254
258
 
255
- const client = await new TeamsClient().login({ token: 'test-token' })
259
+ const client = await new TeamsClient().login({ token: 'test-token', region: 'emea' })
256
260
  await client.getMessages('111', 'ch1')
257
261
 
258
262
  expect(fetchCalls[0].url).toBe(
@@ -271,7 +275,7 @@ describe('TeamsClient', () => {
271
275
  timestamp: '2024-01-01T00:00:00.000Z',
272
276
  })
273
277
 
274
- const client = await new TeamsClient().login({ token: 'test-token' })
278
+ const client = await new TeamsClient().login({ token: 'test-token', region: 'emea' })
275
279
  const message = await client.getMessage('111', 'ch1', 'msg1')
276
280
 
277
281
  expect(message.id).toBe('msg1')
@@ -285,7 +289,7 @@ describe('TeamsClient', () => {
285
289
  test('deletes message', async () => {
286
290
  mockResponse(null, 204)
287
291
 
288
- const client = await new TeamsClient().login({ token: 'test-token' })
292
+ const client = await new TeamsClient().login({ token: 'test-token', region: 'emea' })
289
293
  await client.deleteMessage('111', 'ch1', 'msg1')
290
294
 
291
295
  expect(fetchCalls[0].url).toBe(
@@ -299,7 +303,7 @@ describe('TeamsClient', () => {
299
303
  test('adds reaction to message', async () => {
300
304
  mockResponse(null, 204)
301
305
 
302
- const client = await new TeamsClient().login({ token: 'test-token' })
306
+ const client = await new TeamsClient().login({ token: 'test-token', region: 'emea' })
303
307
  await client.addReaction('111', 'ch1', 'msg1', 'like')
304
308
 
305
309
  expect(fetchCalls[0].url).toBe(
@@ -314,7 +318,7 @@ describe('TeamsClient', () => {
314
318
  test('removes reaction from message', async () => {
315
319
  mockResponse(null, 204)
316
320
 
317
- const client = await new TeamsClient().login({ token: 'test-token' })
321
+ const client = await new TeamsClient().login({ token: 'test-token', region: 'emea' })
318
322
  await client.removeReaction('111', 'ch1', 'msg1', 'like')
319
323
 
320
324
  expect(fetchCalls[0].url).toBe(
@@ -331,7 +335,7 @@ describe('TeamsClient', () => {
331
335
  { id: 'u2', displayName: 'User 2', email: 'user2@example.com' },
332
336
  ])
333
337
 
334
- const client = await new TeamsClient().login({ token: 'test-token' })
338
+ const client = await new TeamsClient().login({ token: 'test-token', region: 'emea' })
335
339
  const users = await client.listUsers('111')
336
340
 
337
341
  expect(users).toHaveLength(2)
@@ -344,7 +348,7 @@ describe('TeamsClient', () => {
344
348
  test('returns user info', async () => {
345
349
  mockResponse({ id: 'u1', displayName: 'Test User', email: 'test@example.com' })
346
350
 
347
- const client = await new TeamsClient().login({ token: 'test-token' })
351
+ const client = await new TeamsClient().login({ token: 'test-token', region: 'emea' })
348
352
  const user = await client.getUser('u1')
349
353
 
350
354
  expect(user.id).toBe('u1')
@@ -365,7 +369,7 @@ describe('TeamsClient', () => {
365
369
  url: 'https://teams.microsoft.com/files/file1',
366
370
  })
367
371
 
368
- const client = await new TeamsClient().login({ token: 'test-token' })
372
+ const client = await new TeamsClient().login({ token: 'test-token', region: 'emea' })
369
373
  const file = await client.uploadFile('111', 'ch1', tempFile)
370
374
 
371
375
  expect(file.name).toBe('test-teams-upload.txt')
@@ -381,7 +385,7 @@ describe('TeamsClient', () => {
381
385
  { id: 'file2', name: 'image.png', size: 2048, url: 'https://example.com/image.png' },
382
386
  ])
383
387
 
384
- const client = await new TeamsClient().login({ token: 'test-token' })
388
+ const client = await new TeamsClient().login({ token: 'test-token', region: 'emea' })
385
389
  const files = await client.listFiles('111', 'ch1')
386
390
 
387
391
  expect(files).toHaveLength(2)
@@ -401,7 +405,7 @@ describe('TeamsClient', () => {
401
405
  'X-RateLimit-Reset': String(Date.now() / 1000 + 60),
402
406
  })
403
407
 
404
- const client = await new TeamsClient().login({ token: 'test-token' })
408
+ const client = await new TeamsClient().login({ token: 'test-token', region: 'emea' })
405
409
  await client.testAuth()
406
410
 
407
411
  const startTime = Date.now()
@@ -416,7 +420,7 @@ describe('TeamsClient', () => {
416
420
  mockResponse({ message: 'Rate limited' }, 429, { 'Retry-After': '0.1' })
417
421
  mockResponse({ userDetails: JSON.stringify({ name: 'User' }), locale: 'en-us' })
418
422
 
419
- const client = await new TeamsClient().login({ token: 'test-token' })
423
+ const client = await new TeamsClient().login({ token: 'test-token', region: 'emea' })
420
424
  const user = await client.testAuth()
421
425
 
422
426
  expect(user.id).toBe('ME')
@@ -428,7 +432,7 @@ describe('TeamsClient', () => {
428
432
  mockResponse({ message: 'Rate limited' }, 429, { 'Retry-After': '0.01' })
429
433
  }
430
434
 
431
- const client = await new TeamsClient().login({ token: 'test-token' })
435
+ const client = await new TeamsClient().login({ token: 'test-token', region: 'emea' })
432
436
  await expect(client.testAuth()).rejects.toThrow(TeamsError)
433
437
  expect(fetchCalls.length).toBeLessThanOrEqual(4)
434
438
  })
@@ -439,7 +443,7 @@ describe('TeamsClient', () => {
439
443
  mockResponse({ message: 'Internal Server Error' }, 500)
440
444
  mockResponse({ userDetails: JSON.stringify({ name: 'User' }), locale: 'en-us' })
441
445
 
442
- const client = await new TeamsClient().login({ token: 'test-token' })
446
+ const client = await new TeamsClient().login({ token: 'test-token', region: 'emea' })
443
447
  const user = await client.testAuth()
444
448
 
445
449
  expect(user.id).toBe('ME')
@@ -449,7 +453,7 @@ describe('TeamsClient', () => {
449
453
  test('does not retry on 4xx client errors (except 429)', async () => {
450
454
  mockResponse({ message: 'Not Found' }, 404)
451
455
 
452
- const client = await new TeamsClient().login({ token: 'test-token' })
456
+ const client = await new TeamsClient().login({ token: 'test-token', region: 'emea' })
453
457
  await expect(client.testAuth()).rejects.toThrow(TeamsError)
454
458
  expect(fetchCalls.length).toBe(1)
455
459
  })
@@ -459,7 +463,7 @@ describe('TeamsClient', () => {
459
463
  mockResponse({ message: 'Error' }, 500)
460
464
  mockResponse({ userDetails: JSON.stringify({ name: 'User' }), locale: 'en-us' })
461
465
 
462
- const client = await new TeamsClient().login({ token: 'test-token' })
466
+ const client = await new TeamsClient().login({ token: 'test-token', region: 'emea' })
463
467
  const startTime = Date.now()
464
468
  await client.testAuth()
465
469
  const elapsed = Date.now() - startTime
@@ -474,7 +478,7 @@ describe('TeamsClient', () => {
474
478
  mockResponse([])
475
479
  mockResponse([])
476
480
 
477
- const client = await new TeamsClient().login({ token: 'test-token' })
481
+ const client = await new TeamsClient().login({ token: 'test-token', region: 'emea' })
478
482
  await client.getMessages('team1', 'ch1')
479
483
  await client.getMessages('team2', 'ch2')
480
484