@lemoncat7/dsh-partner 1.14.1 → 1.15.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 (70) hide show
  1. package/README.md +18 -3
  2. package/docs/architecture.md +2 -0
  3. package/docs/direct-channels.md +24 -0
  4. package/docs/releases/1.14.2.md +10 -0
  5. package/docs/releases/1.15.0.md +20 -0
  6. package/lib/agent-runtime.d.ts.map +1 -1
  7. package/lib/agent-runtime.js +27 -9
  8. package/lib/agent-runtime.js.map +1 -1
  9. package/lib/api.d.ts.map +1 -1
  10. package/lib/api.js +83 -0
  11. package/lib/api.js.map +1 -1
  12. package/lib/channels/direct/discovery.d.ts +5 -0
  13. package/lib/channels/direct/discovery.d.ts.map +1 -0
  14. package/lib/channels/direct/discovery.js +70 -0
  15. package/lib/channels/direct/discovery.js.map +1 -0
  16. package/lib/channels/direct/login-cache.d.ts +21 -0
  17. package/lib/channels/direct/login-cache.d.ts.map +1 -0
  18. package/lib/channels/direct/login-cache.js +42 -0
  19. package/lib/channels/direct/login-cache.js.map +1 -0
  20. package/lib/channels/direct/login.d.ts +15 -0
  21. package/lib/channels/direct/login.d.ts.map +1 -0
  22. package/lib/channels/direct/login.js +78 -0
  23. package/lib/channels/direct/login.js.map +1 -0
  24. package/lib/channels/direct/transport.d.ts +48 -0
  25. package/lib/channels/direct/transport.d.ts.map +1 -0
  26. package/lib/channels/direct/transport.js +152 -0
  27. package/lib/channels/direct/transport.js.map +1 -0
  28. package/lib/channels/manager.d.ts +6 -0
  29. package/lib/channels/manager.d.ts.map +1 -1
  30. package/lib/channels/manager.js +140 -8
  31. package/lib/channels/manager.js.map +1 -1
  32. package/lib/channels/notification-route.d.ts +8 -0
  33. package/lib/channels/notification-route.d.ts.map +1 -0
  34. package/lib/channels/notification-route.js +14 -0
  35. package/lib/channels/notification-route.js.map +1 -0
  36. package/lib/client-api.d.ts +13 -0
  37. package/lib/client-api.d.ts.map +1 -1
  38. package/lib/client-api.js.map +1 -1
  39. package/lib/client-controller.d.ts.map +1 -1
  40. package/lib/client-controller.js +3 -3
  41. package/lib/client-controller.js.map +1 -1
  42. package/lib/client.d.ts.map +1 -1
  43. package/lib/client.js +681 -311
  44. package/lib/client.js.map +4 -4
  45. package/lib/concern-store.d.ts +2 -0
  46. package/lib/concern-store.d.ts.map +1 -1
  47. package/lib/concern-store.js +13 -0
  48. package/lib/concern-store.js.map +1 -1
  49. package/lib/domain.d.ts +16 -0
  50. package/lib/domain.d.ts.map +1 -1
  51. package/lib/domain.js.map +1 -1
  52. package/lib/heartbeat.js +9 -9
  53. package/lib/heartbeat.js.map +1 -1
  54. package/lib/main-panel-compat.d.ts +5 -0
  55. package/lib/main-panel-compat.d.ts.map +1 -0
  56. package/lib/main-panel-compat.js +38 -0
  57. package/lib/main-panel-compat.js.map +1 -0
  58. package/lib/ui/channels-panel.d.ts +9 -0
  59. package/lib/ui/channels-panel.d.ts.map +1 -0
  60. package/lib/ui/channels-panel.js +72 -0
  61. package/lib/ui/channels-panel.js.map +1 -0
  62. package/lib/ui/identity-editor.js +1 -1
  63. package/lib/ui/identity-editor.js.map +1 -1
  64. package/lib/ui/partner-components.js +1 -1
  65. package/lib/ui/partner-components.js.map +1 -1
  66. package/lib/ui/use-channel-status.d.ts +4 -0
  67. package/lib/ui/use-channel-status.d.ts.map +1 -0
  68. package/lib/ui/use-channel-status.js +46 -0
  69. package/lib/ui/use-channel-status.js.map +1 -0
  70. package/package.json +18 -15
package/lib/api.js CHANGED
@@ -1,12 +1,23 @@
1
1
  import { randomBytes } from 'node:crypto';
2
2
  import { normalizeAutomation, normalizeCompanionDraft, text } from './domain.js';
3
3
  import { requiredCompanion } from './channels/manager.js';
4
+ import { DirectTransport, directConfig } from './channels/direct/transport.js';
5
+ import { DirectLoginCache } from './channels/direct/login-cache.js';
4
6
  import { memoryScope } from './agent-runtime.js';
5
7
  import { dispatchPartnerWorkspaceApi } from './api/features/workspace-api.js';
6
8
  import { dispatchPendantApi } from './api/features/pendant-api.js';
7
9
  import { dispatchMemoryLayersApi } from './api/features/memory-layers-api.js';
8
10
  import { dispatchAttachmentsApi } from './api/features/attachments-api.js';
9
11
  import { assertSameOrigin, httpError, mutation, readObject, sendError, sendJson } from './api/http.js';
12
+ const loginCaches = new WeakMap();
13
+ function loginCache(store) {
14
+ let cache = loginCaches.get(store);
15
+ if (!cache) {
16
+ cache = new DirectLoginCache();
17
+ loginCaches.set(store, cache);
18
+ }
19
+ return cache;
20
+ }
10
21
  export function registerPartnerApi(webServer, prefix, runtime) {
11
22
  return webServer.register({
12
23
  kind: 'prefix', path: prefix,
@@ -244,6 +255,50 @@ async function dispatch(req, res, prefix, runtime) {
244
255
  }
245
256
  }
246
257
  if (segments[0] === 'channels') {
258
+ if (method === 'GET' && segments[1] === 'status' && segments.length === 2)
259
+ return sendJson(res, 200, { channels: await runtime.channels.views(), pairings: runtime.store.snapshot().pairings });
260
+ if (method === 'POST' && (segments.length === 1 || (segments.length === 2 && segments[1] === 'test'))) {
261
+ mutation(req);
262
+ const body = await readObject(req);
263
+ const companionId = text(body.companionId, 'companionId', 120);
264
+ requiredCompanion(runtime.store, companionId);
265
+ if (runtime.store.isCompanionRemoving(companionId))
266
+ throw httpError(409, '伙伴正在删除');
267
+ const config = directConfig(body);
268
+ if (body.authMode !== undefined && body.authMode !== 'password' && body.authMode !== 'token')
269
+ throw httpError(400, '登录方式无效');
270
+ const login = body.authMode === 'password' ? await loginCache(runtime.store).acquire(companionId, config, { username: body.username, password: body.password, ...(body.mfaToken ? { mfaToken: body.mfaToken } : {}) }) : undefined;
271
+ const botToken = login?.token ?? text(body.botToken, 'botToken', 8192);
272
+ const adapter = new DirectTransport(config, botToken);
273
+ const identity = await adapter.validate();
274
+ if (segments[1] === 'test') {
275
+ return sendJson(res, 200, { ok: true, ...identity });
276
+ }
277
+ const baseline = await adapter.poll(undefined, AbortSignal.timeout(35_000));
278
+ await new DirectTransport(config, botToken, identity).validate();
279
+ const now = Date.now();
280
+ const channel = { id: createId(config.platform), companionId, platform: config.platform, accountId: identity.accountId,
281
+ name: text(body.name, 'name', 80), enabled: false, createdAt: now, updatedAt: now,
282
+ direct: { baseUrl: config.baseUrl, targetId: config.targetId, peerId: identity.peerId, cursor: baseline.cursor } };
283
+ await runtime.credentials.write(channel.id, { baseUrl: config.baseUrl, botToken });
284
+ try {
285
+ await runtime.store.update(state => {
286
+ if (state.channels.some(c => c.platform === config.platform && c.accountId === identity.accountId && c.direct?.baseUrl === config.baseUrl))
287
+ throw httpError(409, '此机器人已配置,请先管理现有渠道,不能绑定到另一个伙伴');
288
+ if (!state.companions.some(c => c.id === companionId))
289
+ throw httpError(409, '伙伴已不存在');
290
+ state.channels.push(channel);
291
+ if (identity.peerId)
292
+ state.pairings.push({ id: createId('pairing'), channelId: channel.id, userId: identity.peerId, displayName: identity.peerId, directTargetId: config.targetId, status: 'pending', createdAt: now, updatedAt: now });
293
+ });
294
+ }
295
+ catch (error) {
296
+ await runtime.credentials.delete(channel.id);
297
+ throw error;
298
+ }
299
+ login?.retain();
300
+ return sendJson(res, 201, { channel });
301
+ }
247
302
  const id = segments[1];
248
303
  if (id !== undefined && method === 'POST' && segments[2] === 'enabled' && segments.length === 3) {
249
304
  mutation(req);
@@ -261,6 +316,34 @@ async function dispatch(req, res, prefix, runtime) {
261
316
  }
262
317
  if (segments[0] === 'pairings') {
263
318
  const id = segments[1];
319
+ if (id && method === 'POST' && segments[2] === 'delivery' && segments.length === 3) {
320
+ mutation(req);
321
+ const body = await readObject(req);
322
+ if (typeof body.contactKey !== 'string' || body.contactKey.length > 80)
323
+ throw httpError(400, '联系人关联标识无效');
324
+ if (body.targetPairingId !== null && typeof body.targetPairingId !== 'string')
325
+ throw httpError(400, '通知目标无效');
326
+ await runtime.store.update(state => {
327
+ const source = state.pairings.find(p => p.id === id && p.status === 'approved');
328
+ if (!source)
329
+ throw httpError(404, '已授权联系人不存在');
330
+ const companion = state.channels.find(c => c.id === source.channelId)?.companionId;
331
+ if (body.targetPairingId !== null) {
332
+ const target = state.pairings.find(p => p.id === body.targetPairingId && p.status === 'approved');
333
+ if (!target || !state.channels.some(c => c.id === target.channelId && c.companionId === companion))
334
+ throw httpError(400, '只能选择同一伙伴的已授权通知目标');
335
+ source.deliveryTarget = { channelId: target.channelId, userId: target.userId };
336
+ }
337
+ else
338
+ delete source.deliveryTarget;
339
+ if (body.contactKey.trim())
340
+ source.contactKey = body.contactKey.trim();
341
+ else
342
+ delete source.contactKey;
343
+ source.updatedAt = Date.now();
344
+ });
345
+ return sendJson(res, 200, { ok: true });
346
+ }
264
347
  if (id !== undefined && method === 'POST' && segments[2] === 'status' && segments.length === 3) {
265
348
  mutation(req);
266
349
  const status = text((await readObject(req)).status, 'status', 20);
package/lib/api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { DirectBatch, DirectPlatform, DirectTransport } from './transport.js';
2
+ /** Discover conversations without granting access. Every candidate still passes
3
+ * the same two-member / no-encryption validation as explicitly pinned rooms. */
4
+ export declare function pollDiscovered(platform: DirectPlatform, accountId: string, cursor: string | undefined, signal: AbortSignal, request: (path: string, body?: unknown) => Promise<any>, room: (id: string) => DirectTransport): Promise<DirectBatch>;
5
+ //# sourceMappingURL=discovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../../src/channels/direct/discovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAiB,cAAc,EAAE,eAAe,EAAC,MAAM,gBAAgB,CAAA;AAE/F;gFACgF;AAChF,wBAAsB,cAAc,CAAC,QAAQ,EAAC,cAAc,EAAE,SAAS,EAAC,MAAM,EAAE,MAAM,EAAC,MAAM,GAAC,SAAS,EAAE,MAAM,EAAC,WAAW,EACzH,OAAO,EAAC,CAAC,IAAI,EAAC,MAAM,EAAC,IAAI,CAAC,EAAC,OAAO,KAAG,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,EAAC,CAAC,EAAE,EAAC,MAAM,KAAG,eAAe,GAAE,OAAO,CAAC,WAAW,CAAC,CAiD3G"}
@@ -0,0 +1,70 @@
1
+ /** Discover conversations without granting access. Every candidate still passes
2
+ * the same two-member / no-encryption validation as explicitly pinned rooms. */
3
+ export async function pollDiscovered(platform, accountId, cursor, signal, request, room) {
4
+ const messages = [];
5
+ if (platform === 'matrix') {
6
+ const filter = JSON.stringify({ room: { timeline: { limit: 100 } }, presence: { types: [] } });
7
+ const data = await request('/_matrix/client/v3/sync?timeout=20000&filter=' + encodeURIComponent(filter) + (cursor ? '&since=' + encodeURIComponent(cursor) : ''));
8
+ if (typeof data.next_batch !== 'string')
9
+ throw new Error('Matrix 同步游标缺失');
10
+ const invites = Object.entries(data.rooms?.invite ?? {});
11
+ if (invites.length > 50)
12
+ throw new Error('房间邀请过多,请清理后重连');
13
+ for (const [id, value] of invites) {
14
+ const events = value?.invite_state?.events;
15
+ if (!Array.isArray(events) || events.some(e => e.type === 'm.room.encryption'))
16
+ continue;
17
+ const members = events.filter(e => e.type === 'm.room.member' && ['join', 'invite'].includes(e.content?.membership));
18
+ const self = members.find(e => e.state_key === accountId && e.content?.membership === 'invite' && e.content?.is_direct === true);
19
+ if (!self || members.length !== 2 || !members.some(e => e.state_key === self.sender && e.content?.membership === 'join'))
20
+ continue;
21
+ await request('/_matrix/client/v3/join/' + encodeURIComponent(id), {});
22
+ }
23
+ const joined = Object.entries(data.rooms?.join ?? {});
24
+ if (joined.length > 100)
25
+ throw new Error('私聊房间过多,请使用专用伙伴账号');
26
+ for (const [id, value] of joined) {
27
+ const timeline = value?.timeline;
28
+ if (!cursor || !timeline?.events?.length)
29
+ continue;
30
+ let identity;
31
+ try {
32
+ identity = await room(id).validate(signal);
33
+ }
34
+ catch (error) {
35
+ if (error instanceof Error && /加密房间|必须只有机器人/.test(error.message))
36
+ continue;
37
+ throw error;
38
+ }
39
+ if (timeline.limited)
40
+ throw new Error('Matrix 私聊消息出现缺口,请检查后重连');
41
+ for (const event of timeline.events) {
42
+ if (event.sender !== identity.peerId || event.type !== 'm.room.message' || event.content?.['m.relates_to']?.rel_type === 'm.replace' || typeof event.event_id !== 'string')
43
+ continue;
44
+ messages.push({ id: event.event_id, sender: identity.peerId, targetId: id, text: event.content?.msgtype === 'm.text' && typeof event.content.body === 'string' ? event.content.body : '' });
45
+ }
46
+ }
47
+ return { cursor: data.next_batch, messages };
48
+ }
49
+ const startedAt = Date.now();
50
+ const channels = await request(`/api/v4/users/${encodeURIComponent(accountId)}/channels`);
51
+ if (!Array.isArray(channels))
52
+ throw new Error('Mattermost 会话列表无效');
53
+ const dms = channels.filter(c => c.type === 'D' && !c.delete_at);
54
+ if (dms.length > 100)
55
+ throw new Error('私聊会话过多,请使用专用伙伴账号');
56
+ // Establish a watermark without replaying history. Overlap subsequent polls;
57
+ // durable receipts deduplicate boundary timestamps.
58
+ if (!cursor)
59
+ return { cursor: String(startedAt), messages: [] };
60
+ if (!/^\d+$/.test(cursor))
61
+ throw new Error('Mattermost 同步游标无效');
62
+ for (const channel of dms) {
63
+ if (typeof channel.id !== 'string')
64
+ throw new Error('Mattermost 会话 ID 无效');
65
+ const batch = await room(channel.id).poll(String(Math.max(0, Number(cursor) - 1000)), signal);
66
+ messages.push(...batch.messages.map(message => ({ ...message, targetId: channel.id })));
67
+ }
68
+ return { cursor: String(Math.max(Number(cursor), startedAt)), messages };
69
+ }
70
+ //# sourceMappingURL=discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../../src/channels/direct/discovery.ts"],"names":[],"mappings":"AAEA;gFACgF;AAChF,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,QAAuB,EAAE,SAAgB,EAAE,MAAuB,EAAE,MAAkB,EACzH,OAAiD,EAAE,IAAiC;IACpF,MAAM,QAAQ,GAAiB,EAAE,CAAA;IACjC,IAAG,QAAQ,KAAG,QAAQ,EAAE,CAAC;QACvB,MAAM,MAAM,GAAC,IAAI,CAAC,SAAS,CAAC,EAAC,IAAI,EAAC,EAAC,QAAQ,EAAC,EAAC,KAAK,EAAC,GAAG,EAAC,EAAC,EAAC,QAAQ,EAAC,EAAC,KAAK,EAAC,EAAE,EAAC,EAAC,CAAC,CAAA;QAC9E,MAAM,IAAI,GAAC,MAAM,OAAO,CAAC,+CAA+C,GAAC,kBAAkB,CAAC,MAAM,CAAC,GAAC,CAAC,MAAM,CAAA,CAAC,CAAA,SAAS,GAAC,kBAAkB,CAAC,MAAM,CAAC,CAAA,CAAC,CAAA,EAAE,CAAC,CAAC,CAAA;QACrJ,IAAG,OAAO,IAAI,CAAC,UAAU,KAAG,QAAQ;YAAC,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAA;QACrE,MAAM,OAAO,GAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,IAAE,EAAE,CAAC,CAAA;QACpD,IAAG,OAAO,CAAC,MAAM,GAAC,EAAE;YAAC,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAA;QACrD,KAAI,MAAM,CAAC,EAAE,EAAC,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;YAChC,MAAM,MAAM,GAAE,KAAa,EAAE,YAAY,EAAE,MAAM,CAAA;YACjD,IAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,IAAI,KAAG,mBAAmB,CAAC;gBAAC,SAAQ;YAChF,MAAM,OAAO,GAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,IAAI,KAAG,eAAe,IAAE,CAAC,MAAM,EAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAA;YAC3G,MAAM,IAAI,GAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,SAAS,KAAG,SAAS,IAAE,CAAC,CAAC,OAAO,EAAE,UAAU,KAAG,QAAQ,IAAE,CAAC,CAAC,OAAO,EAAE,SAAS,KAAG,IAAI,CAAC,CAAA;YAClH,IAAG,CAAC,IAAI,IAAE,OAAO,CAAC,MAAM,KAAG,CAAC,IAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,SAAS,KAAG,IAAI,CAAC,MAAM,IAAE,CAAC,CAAC,OAAO,EAAE,UAAU,KAAG,MAAM,CAAC;gBAAC,SAAQ;YAClH,MAAM,OAAO,CAAC,0BAA0B,GAAC,kBAAkB,CAAC,EAAE,CAAC,EAAC,EAAE,CAAC,CAAA;QACrE,CAAC;QACD,MAAM,MAAM,GAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,IAAE,EAAE,CAAC,CAAA;QACjD,IAAG,MAAM,CAAC,MAAM,GAAC,GAAG;YAAC,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;QACxD,KAAI,MAAM,CAAC,EAAE,EAAC,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAE,KAAa,EAAE,QAAQ,CAAA;YACvC,IAAG,CAAC,MAAM,IAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM;gBAAC,SAAQ;YAC9C,IAAI,QAAQ,CAAA;YACZ,IAAI,CAAC;gBAAA,QAAQ,GAAC,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;YAAA,CAAC;YAAA,OAAM,KAAK,EAAC,CAAC;gBACzD,IAAG,KAAK,YAAY,KAAK,IAAE,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;oBAAC,SAAQ;gBACtE,MAAM,KAAK,CAAA;YACb,CAAC;YACD,IAAG,QAAQ,CAAC,OAAO;gBAAC,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;YAC7D,KAAI,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACnC,IAAG,KAAK,CAAC,MAAM,KAAG,QAAQ,CAAC,MAAM,IAAE,KAAK,CAAC,IAAI,KAAG,gBAAgB,IAAE,KAAK,CAAC,OAAO,EAAE,CAAC,cAAc,CAAC,EAAE,QAAQ,KAAG,WAAW,IAAE,OAAO,KAAK,CAAC,QAAQ,KAAG,QAAQ;oBAAC,SAAQ;gBACpK,QAAQ,CAAC,IAAI,CAAC,EAAC,EAAE,EAAC,KAAK,CAAC,QAAQ,EAAC,MAAM,EAAC,QAAQ,CAAC,MAAM,EAAC,QAAQ,EAAC,EAAE,EAAC,IAAI,EAAC,KAAK,CAAC,OAAO,EAAE,OAAO,KAAG,QAAQ,IAAE,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,KAAG,QAAQ,CAAA,CAAC,CAAA,KAAK,CAAC,OAAO,CAAC,IAAI,CAAA,CAAC,CAAA,EAAE,EAAC,CAAC,CAAA;YAC1K,CAAC;QACH,CAAC;QACD,OAAO,EAAC,MAAM,EAAC,IAAI,CAAC,UAAU,EAAC,QAAQ,EAAC,CAAA;IAC1C,CAAC;IACD,MAAM,SAAS,GAAC,IAAI,CAAC,GAAG,EAAE,CAAA;IAC1B,MAAM,QAAQ,GAAC,MAAM,OAAO,CAAC,iBAAiB,kBAAkB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;IACvF,IAAG,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAC,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAA;IAChE,MAAM,GAAG,GAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,IAAI,KAAG,GAAG,IAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IACxD,IAAG,GAAG,CAAC,MAAM,GAAC,GAAG;QAAC,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;IACrD,6EAA6E;IAC7E,oDAAoD;IACpD,IAAG,CAAC,MAAM;QAAC,OAAO,EAAC,MAAM,EAAC,MAAM,CAAC,SAAS,CAAC,EAAC,QAAQ,EAAC,EAAE,EAAC,CAAA;IACxD,IAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;QAAC,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAA;IAC7D,KAAI,MAAM,OAAO,IAAI,GAAG,EAAE,CAAC;QACzB,IAAG,OAAO,OAAO,CAAC,EAAE,KAAG,QAAQ;YAAC,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;QACtE,MAAM,KAAK,GAAC,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAC,MAAM,CAAC,MAAM,CAAC,GAAC,IAAI,CAAC,CAAC,EAAC,MAAM,CAAC,CAAA;QACvF,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAA,EAAE,CAAA,CAAC,EAAC,GAAG,OAAO,EAAC,QAAQ,EAAC,OAAO,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC,CAAA;IACnF,CAAC;IACD,OAAO,EAAC,MAAM,EAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAC,SAAS,CAAC,CAAC,EAAC,QAAQ,EAAC,CAAA;AACrE,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { directLogin, discardDirectLogin } from './login.js';
2
+ import type { DirectConfig } from './transport.js';
3
+ /** Short-lived server-only sessions: tests and save share one login, never
4
+ * return credentials to the browser or retain plaintext passwords. */
5
+ export declare class DirectLoginCache {
6
+ private readonly ttl;
7
+ private readonly login;
8
+ private readonly logout;
9
+ private readonly salt;
10
+ private readonly entries;
11
+ constructor(ttl?: number, login?: typeof directLogin, logout?: typeof discardDirectLogin);
12
+ acquire(scope: string, config: DirectConfig, input: {
13
+ username: unknown;
14
+ password: unknown;
15
+ mfaToken?: unknown;
16
+ }): Promise<{
17
+ token: string;
18
+ retain(): void;
19
+ }>;
20
+ }
21
+ //# sourceMappingURL=login-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login-cache.d.ts","sourceRoot":"","sources":["../../../src/channels/direct/login-cache.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,WAAW,EAAE,kBAAkB,EAAC,MAAM,YAAY,CAAA;AAC1D,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAA;AAEhD;sEACsE;AACtE,qBAAa,gBAAgB;IAGf,OAAO,CAAC,QAAQ,CAAC,GAAG;IAAU,OAAO,CAAC,QAAQ,CAAC,KAAK;IAAa,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFpG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgB;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8E;gBACzE,GAAG,SAAS,EAAkB,KAAK,qBAAY,EAAkB,MAAM,4BAAmB;IAEjH,OAAO,CAAC,KAAK,EAAC,MAAM,EAAC,MAAM,EAAC,YAAY,EAAC,KAAK,EAAC;QAAC,QAAQ,EAAC,OAAO,CAAC;QAAA,QAAQ,EAAC,OAAO,CAAC;QAAA,QAAQ,CAAC,EAAC,OAAO,CAAA;KAAC,GAAE,OAAO,CAAC;QAAC,KAAK,EAAC,MAAM,CAAC;QAAA,MAAM,IAAG,IAAI,CAAA;KAAC,CAAC;CAkBlJ"}
@@ -0,0 +1,42 @@
1
+ import { createHmac, randomBytes } from 'node:crypto';
2
+ import { directLogin, discardDirectLogin } from './login.js';
3
+ /** Short-lived server-only sessions: tests and save share one login, never
4
+ * return credentials to the browser or retain plaintext passwords. */
5
+ export class DirectLoginCache {
6
+ ttl;
7
+ login;
8
+ logout;
9
+ salt = randomBytes(32);
10
+ entries = new Map();
11
+ constructor(ttl = 5 * 60_000, login = directLogin, logout = discardDirectLogin) {
12
+ this.ttl = ttl;
13
+ this.login = login;
14
+ this.logout = logout;
15
+ }
16
+ async acquire(scope, config, input) {
17
+ const key = createHmac('sha256', this.salt).update(JSON.stringify([scope, config.platform, config.baseUrl, input.username, input.password, input.mfaToken])).digest('hex');
18
+ let entry = this.entries.get(key);
19
+ if (!entry) {
20
+ if (this.entries.size >= 32)
21
+ throw new Error('待保存的渠道登录过多,请稍后重试');
22
+ const token = this.login(config, input);
23
+ const timer = setTimeout(() => {
24
+ if (this.entries.get(key)?.token !== token)
25
+ return;
26
+ this.entries.delete(key);
27
+ void token.then(value => this.logout(config, value)).catch(() => { });
28
+ }, this.ttl);
29
+ timer.unref();
30
+ entry = { token, timer };
31
+ this.entries.set(key, entry);
32
+ void token.catch(() => { if (this.entries.get(key) === entry) {
33
+ clearTimeout(timer);
34
+ this.entries.delete(key);
35
+ } });
36
+ }
37
+ const current = entry;
38
+ return { token: await current.token, retain: () => { clearTimeout(current.timer); if (this.entries.get(key) === current)
39
+ this.entries.delete(key); } };
40
+ }
41
+ }
42
+ //# sourceMappingURL=login-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login-cache.js","sourceRoot":"","sources":["../../../src/channels/direct/login-cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,WAAW,EAAC,MAAM,aAAa,CAAA;AACnD,OAAO,EAAC,WAAW,EAAE,kBAAkB,EAAC,MAAM,YAAY,CAAA;AAG1D;sEACsE;AACtE,MAAM,OAAO,gBAAgB;IAGE;IAA8B;IAAmC;IAF7E,IAAI,GAAC,WAAW,CAAC,EAAE,CAAC,CAAA;IACpB,OAAO,GAAC,IAAI,GAAG,EAAsE,CAAA;IACtG,YAA6B,MAAI,CAAC,GAAC,MAAM,EAAkB,QAAM,WAAW,EAAkB,SAAO,kBAAkB;QAA1F,QAAG,GAAH,GAAG,CAAS;QAAkB,UAAK,GAAL,KAAK,CAAY;QAAkB,WAAM,GAAN,MAAM,CAAmB;IAAE,CAAC;IAE1H,KAAK,CAAC,OAAO,CAAC,KAAY,EAAC,MAAmB,EAAC,KAA2D;QACxG,MAAM,GAAG,GAAC,UAAU,CAAC,QAAQ,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,EAAC,MAAM,CAAC,QAAQ,EAAC,MAAM,CAAC,OAAO,EAAC,KAAK,CAAC,QAAQ,EAAC,KAAK,CAAC,QAAQ,EAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAClK,IAAI,KAAK,GAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC/B,IAAG,CAAC,KAAK,EAAE,CAAC;YACV,IAAG,IAAI,CAAC,OAAO,CAAC,IAAI,IAAE,EAAE;gBAAC,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;YAC5D,MAAM,KAAK,GAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAC,KAAK,CAAC,CAAA;YACpC,MAAM,KAAK,GAAC,UAAU,CAAC,GAAE,EAAE;gBACzB,IAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,KAAG,KAAK;oBAAC,OAAM;gBAC9C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;gBACxB,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAA,EAAE,CAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAE,EAAE,GAAC,CAAC,CAAC,CAAA;YACjE,CAAC,EAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACX,KAAK,CAAC,KAAK,EAAE,CAAA;YACb,KAAK,GAAC,EAAC,KAAK,EAAC,KAAK,EAAC,CAAC;YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAC,KAAK,CAAC,CAAA;YAC/C,KAAK,KAAK,CAAC,KAAK,CAAC,GAAE,EAAE,GAAC,IAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAG,KAAK,EAAC,CAAC;gBAAA,YAAY,CAAC,KAAK,CAAC,CAAC;gBAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAAA,CAAC,CAAA,CAAC,CAAC,CAAA;QACzG,CAAC;QACD,MAAM,OAAO,GAAC,KAAK,CAAA;QACnB,OAAO,EAAC,KAAK,EAAC,MAAM,OAAO,CAAC,KAAK,EAAC,MAAM,EAAC,GAAE,EAAE,GAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA,IAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAG,OAAO;gBAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA,CAAA,CAAC,EAAC,CAAA;IACzI,CAAC;CACF"}
@@ -0,0 +1,15 @@
1
+ import type { DirectConfig } from './transport.js';
2
+ export declare class LoginRateLimitError extends Error {
3
+ readonly retryAfterMs: number;
4
+ readonly status = 429;
5
+ constructor(retryAfterMs: number);
6
+ }
7
+ /** Revoke only sessions created by password login, never a user-supplied token. */
8
+ export declare function discardDirectLogin(config: DirectConfig, token: string): Promise<void>;
9
+ /** Exchange a password once. Only the access token is returned to the credential vault. */
10
+ export declare function directLogin(config: DirectConfig, input: {
11
+ username: unknown;
12
+ password: unknown;
13
+ mfaToken?: unknown;
14
+ }, signal?: AbortSignal): Promise<string>;
15
+ //# sourceMappingURL=login.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/channels/direct/login.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAGlD,qBAAa,mBAAoB,SAAQ,KAAK;IAEhC,QAAQ,CAAC,YAAY,EAAC,MAAM;IADxC,QAAQ,CAAC,MAAM,OAAI;gBACE,YAAY,EAAC,MAAM;CACzC;AAQD,mFAAmF;AACnF,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ3F;AAED,2FAA2F;AAC3F,wBAAsB,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAC,EAAE,MAAM,cAA8B,GAAG,OAAO,CAAC,MAAM,CAAC,CAkChL"}
@@ -0,0 +1,78 @@
1
+ const cooldowns = new Map();
2
+ export class LoginRateLimitError extends Error {
3
+ retryAfterMs;
4
+ status = 429;
5
+ constructor(retryAfterMs) {
6
+ super(`服务器限制登录频率(HTTP 429),请在 ${Math.ceil(retryAfterMs / 1000)} 秒后重试。这不是账号密码错误。`);
7
+ this.retryAfterMs = retryAfterMs;
8
+ }
9
+ }
10
+ async function readLoginBody(response) {
11
+ if (!response.body)
12
+ throw new Error('登录返回空响应');
13
+ const chunks = [];
14
+ let bytes = 0;
15
+ for await (const chunk of response.body) {
16
+ bytes += chunk.length;
17
+ if (bytes > 65536)
18
+ throw new Error('登录响应异常');
19
+ chunks.push(chunk);
20
+ }
21
+ return JSON.parse(Buffer.concat(chunks).toString('utf8'));
22
+ }
23
+ /** Revoke only sessions created by password login, never a user-supplied token. */
24
+ export async function discardDirectLogin(config, token) {
25
+ const path = config.platform === 'matrix' ? '/_matrix/client/v3/logout' : '/api/v4/users/logout';
26
+ const response = await fetch(config.baseUrl + path, {
27
+ method: 'POST', redirect: 'error', signal: AbortSignal.timeout(10_000),
28
+ headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' }, body: '{}',
29
+ });
30
+ await response.body?.cancel();
31
+ if (!response.ok)
32
+ throw new Error('临时登录会话退出失败,请在渠道服务器的会话管理中撤销');
33
+ }
34
+ /** Exchange a password once. Only the access token is returned to the credential vault. */
35
+ export async function directLogin(config, input, signal = AbortSignal.timeout(30_000)) {
36
+ if (typeof input.username !== 'string' || !input.username.trim() || input.username.length > 255 || typeof input.password !== 'string' || !input.password || input.password.length > 8192)
37
+ throw new Error('请输入账号和密码');
38
+ if (input.mfaToken !== undefined && (typeof input.mfaToken !== 'string' || input.mfaToken.length > 64))
39
+ throw new Error('验证码格式无效');
40
+ const remaining = (cooldowns.get(config.baseUrl) ?? 0) - Date.now();
41
+ if (remaining > 0)
42
+ throw new LoginRateLimitError(remaining);
43
+ const matrix = config.platform === 'matrix';
44
+ const response = await fetch(config.baseUrl + (matrix ? '/_matrix/client/v3/login' : '/api/v4/users/login'), {
45
+ method: 'POST', redirect: 'error', signal, headers: { 'Content-Type': 'application/json' },
46
+ body: JSON.stringify(matrix ? { type: 'm.login.password', identifier: { type: 'm.id.user', user: input.username.trim() }, password: input.password, initial_device_display_name: 'DSH Partner' } : { login_id: input.username.trim(), password: input.password, ...(input.mfaToken ? { token: input.mfaToken } : {}) }),
47
+ });
48
+ if (!response.ok) {
49
+ if (response.status === 429) {
50
+ const header = response.headers.get('retry-after');
51
+ const headerMs = header ? (/^\d+$/.test(header) ? Number(header) * 1000 : Date.parse(header) - Date.now()) : 0;
52
+ const data = await readLoginBody(response).catch(() => ({}));
53
+ const bodyMs = typeof data.retry_after_ms === 'number' ? data.retry_after_ms : 0;
54
+ const retry = Math.max(1000, Number.isFinite(bodyMs) && bodyMs > 0 ? bodyMs : Number.isFinite(headerMs) && headerMs > 0 ? headerMs : 60_000);
55
+ for (const [key, until] of cooldowns)
56
+ if (until <= Date.now())
57
+ cooldowns.delete(key);
58
+ if (cooldowns.size >= 128)
59
+ cooldowns.delete(cooldowns.keys().next().value);
60
+ cooldowns.set(config.baseUrl, Date.now() + retry);
61
+ throw new LoginRateLimitError(retry);
62
+ }
63
+ await response.body?.cancel();
64
+ throw new Error([400, 401, 403].includes(response.status) ? `账号登录失败(HTTP ${response.status})。请检查账号、密码及双重验证;仅支持 SSO 的账号请改用 Access Token。` : `登录服务暂不可用(HTTP ${response.status}),请检查服务器或反向代理,不要反复修改密码。`);
65
+ }
66
+ let token;
67
+ if (matrix) {
68
+ token = (await readLoginBody(response)).access_token;
69
+ }
70
+ else {
71
+ token = response.headers.get('Token');
72
+ await response.body?.cancel();
73
+ }
74
+ if (typeof token !== 'string' || !token || token.length > 8192)
75
+ throw new Error('服务器未返回可用登录令牌,请改用 Access Token');
76
+ return token;
77
+ }
78
+ //# sourceMappingURL=login.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/channels/direct/login.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import type { PartnerOutboundAttachment } from '../../channel-message.js';
2
+ export type DirectPlatform = 'matrix' | 'mattermost';
3
+ export interface DirectConfig {
4
+ platform: DirectPlatform;
5
+ baseUrl: string;
6
+ targetId: string;
7
+ }
8
+ export interface DirectMessage {
9
+ id: string;
10
+ sender: string;
11
+ text: string;
12
+ targetId?: string;
13
+ }
14
+ export interface DirectBatch {
15
+ cursor: string;
16
+ messages: DirectMessage[];
17
+ }
18
+ export interface ChannelSender {
19
+ sendText(userId: string, text: string, context: string | undefined, signal?: AbortSignal): Promise<void>;
20
+ sendAttachment(userId: string, file: PartnerOutboundAttachment, context: string | undefined, signal?: AbortSignal): Promise<void>;
21
+ }
22
+ export declare class ChannelHttpError extends Error {
23
+ readonly status: number;
24
+ readonly retryAfterMs: number;
25
+ constructor(status: number, retryAfterMs?: number);
26
+ }
27
+ export declare function directConfig(value: Record<string, unknown>): DirectConfig;
28
+ /** Explicit, two-member conversations only. No group inference from display names. */
29
+ export declare class DirectTransport implements ChannelSender {
30
+ readonly config: DirectConfig;
31
+ private readonly token;
32
+ private readonly expected?;
33
+ private botId;
34
+ private peerId;
35
+ constructor(config: DirectConfig, token: string, expected?: {
36
+ accountId: string;
37
+ peerId: string;
38
+ } | undefined);
39
+ private request;
40
+ validate(signal?: AbortSignal): Promise<{
41
+ accountId: string;
42
+ peerId: string;
43
+ }>;
44
+ poll(cursor: string | undefined, signal: AbortSignal): Promise<DirectBatch>;
45
+ sendText(userId: string, text: string, _context: string | undefined, signal?: AbortSignal): Promise<void>;
46
+ sendAttachment(_userId: string, _file: PartnerOutboundAttachment, _context: string | undefined, _signal?: AbortSignal): Promise<void>;
47
+ }
48
+ //# sourceMappingURL=transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/channels/direct/transport.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAA;AAGzE,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,YAAY,CAAA;AACpD,MAAM,WAAW,YAAY;IAAG,QAAQ,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE;AAC7F,MAAM,WAAW,aAAa;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE;AAC9F,MAAM,WAAW,WAAW;IAAG,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,aAAa,EAAE,CAAA;CAAE;AAC1E,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACxG,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAyB,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAClI;AACD,qBAAa,gBAAiB,SAAQ,KAAK;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM;IAAE,QAAQ,CAAC,YAAY;gBAArC,MAAM,EAAE,MAAM,EAAW,YAAY,SAAI;CAC/D;AACD,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,YAAY,CAMzE;AAED,sFAAsF;AACtF,qBAAa,eAAgB,YAAW,aAAa;IAGvC,QAAQ,CAAC,MAAM,EAAE,YAAY;IAAE,OAAO,CAAC,QAAQ,CAAC,KAAK;IAAU,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAFrG,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,MAAM,CAAK;gBACE,MAAM,EAAE,YAAY,EAAmB,KAAK,EAAE,MAAM,EAAmB,QAAQ,CAAC,EAAE;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,YAAA;YAE5H,OAAO;IAsBf,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,CAAC;IA+B5E,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IA+B3E,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAUzG,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,yBAAyB,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAG5I"}